libspring-webflow-2.0-java-2.0.9.RELEASE.orig/0000755000000000000000000000000011360615632015301 5ustar libspring-webflow-2.0-java-2.0.9.RELEASE.orig/docs/0000755000000000000000000000000011360615630016227 5ustar libspring-webflow-2.0-java-2.0.9.RELEASE.orig/docs/spring-webflow-reference/0000755000000000000000000000000011360615630023130 5ustar libspring-webflow-2.0-java-2.0.9.RELEASE.orig/docs/spring-webflow-reference/pdf/0000755000000000000000000000000011360615630023701 5ustar ././@LongLink0000000000000000000000000000015500000000000011566 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/docs/spring-webflow-reference/pdf/spring-webflow-reference.pdflibspring-webflow-2.0-java-2.0.9.RELEASE.orig/docs/spring-webflow-reference/pdf/spring-webflow-refer0000644000000000000000000145543011360615630027706 0ustar %PDF-1.3 %ª«¬­ 4 0 obj << /Type /Info /Producer (FOP 0.20.5) >> endobj 5 0 obj << /Length 637 /Filter [ /ASCII85Decode /FlateDecode ] >> stream Gasak9okbt&A@7.pm=[UCCE,rfT4jR[Sg,mU@qFV5g0cj&N_`p&c]SLd+HW]Ul#OuX>fb-S,$<,52N2nB"06e<&P\I#qG%kT`$3'AGQq':kEbS,$n*9:fJL_n*T_o._U=e50uF4U*,&_m4[,2L&9/cj2r#l?pRGAb7B6*VpZYd5/,*017ZTur[FMN^`7@60I,g+i#=)r?FoV/D8-upFnOJ-1HA2J][:^?")-jJLMHHh#N8#jTZ1(E7Pb1gS@&Sh+-7sXhrmn;hH@6*gmZrseHB/`4,*Of(QR(:VIQbrCR'fGKg,IM2V7-dOrtLV-Rd`lmN^gZ.Lk/?U*!q3Oh=jbCk&[qU]:&jeQ)&m7+tX5pUA^9*Q2XA^(&eE2blpMniXCc#^R_aU@?Q8dRjlS5X^H6f~> endstream endobj 6 0 obj << /Type /Page /Parent 1 0 R /MediaBox [ 0 0 612 792 ] /Resources 3 0 R /Contents 5 0 R >> endobj 7 0 obj << /Length 21 /Filter [ /ASCII85Decode /FlateDecode ] >> stream Garg^iGoCd!WWA\!CQ~> endstream endobj 8 0 obj << /Type /Page /Parent 1 0 R /MediaBox [ 0 0 612 792 ] /Resources 3 0 R /Contents 7 0 R >> endobj 9 0 obj << /Length 1933 /Filter [ /ASCII85Decode /FlateDecode ] >> stream Gb"/l9iKh,&;KZO$6S5W@p/BSBknlfOtF+#'e"+Tm(m1IAlO"kY:WQ.ho?gkg`h?$XUSd-:(@dm`"bSQQLo@$3Oq7spOQKnYhd[;S0'`Aidb-+qj1EI@lp"F8%-lqC1[?lGT"g_IUjJ26"!2(@FejAf.KjW>k2.N8(KoUjWElR4c?i;6eVe2%qV=QYi2:J.mB#Xriof([>4IO#,"7X'GH'UuA3mGgD@YV/#=>AYZ7N$D#,U0E`f*;\5[-OMll9K@VeKpQAD1RWnhnaNElIWVF5a9WN8/>h$$kD5(5)oZrZ_hd)";O.n@F(s_CD^aR)b$d?TkTMeTgb"]]T$7H.n.QMR.28)ZJ2!q#7rbDY\R)'^RjYQi;9R-$Y>SPa0<+(I_7Ki9j1#V]!#D_TSYhZD_ZqHd!d3*56205'+MO+o!_.cc'?BZeP#iX:\UhI0!ifS3fu%G9UEAf@b4n[=a"ajnF-TnlCj`\3]1O?slMNEYNb+T&g5Xq\[r)bRtOK9qaV.g3pMmGh4YL'8*]84$Wbr00E+O8EBds9,7_HPO./tfH69Q[^08Yf=WQQl_1uX-iM3B;C&s3EDOqe"^0@S#q,8f6;EG__&Jhq2djefE&A=+UMeV$4mq5Be&Z)tn[+omgg(F,M>RN4nK$P>5i_aCY'DW'HnT,P^1cL0:^k\FC8_\-mK>J.&L3Dlnfr5:ZN.K;0EprmmgJd,A77pVVjBJ:?LcOYQjc%79HjD!<'j%+k$J)E?#hF2DOZSZlr@IV2[S@*UN!RMu1sRj.:L,oc3sUBmgl*D=:QS^d%+<\Zh:WptkWZU-.pggpRWroBr$Nr*dWm)Nq0XnPFDCE?R!;D[n(Cf+.u/m$\q!]aD`,KBJ==:^G'1H+oYMnq&/:O/djqc[r=G)L-&,]Y7fVT*o*%EIma%%VbkE[o3?`f>PmI_:A#2oU@pVi9`ajtFOHB&l-pS!NuWSKQB:$,,@R^O8LE,43[tbf.qY((2OQe)Ig_B4JD8VYTpeqP:C$/[3&H')>1SC9@\_W=Ks`mAT.V:E$3,;,qP@_"MX19H/.o7_U?%?$Kse\.gn:ctP]VH)di1CM4"M<"peM]59Um[3PF.gE]6.?o>a[Q(N=Z0<1;?ZJ/:SboD$'X#W'b+_J'BPG!eXh\bl/npqqa:J5kBZMg1&)"KI?e)23tg^bkZkl8:drE%ka;%[>f]%=ZO5G1QdKea#'B#6r"u,!s`YZgLUsZ7\>Mof!jV89a8R57d^ADPg$8ML_mkL!a&W6>[slpqAM7)G`2b#.X@p!C@5V#(^!uZ!n6uMRodp(ast\PTo<lk?q+a933Bpc/'lOY endstream endobj 10 0 obj << /Type /Page /Parent 1 0 R /MediaBox [ 0 0 612 792 ] /Resources 3 0 R /Contents 9 0 R /Annots 11 0 R >> endobj 11 0 obj [ 12 0 R 14 0 R 16 0 R 18 0 R 20 0 R 22 0 R 24 0 R 26 0 R 28 0 R 30 0 R 32 0 R 34 0 R 36 0 R 38 0 R 40 0 R 42 0 R 44 0 R 46 0 R 48 0 R 50 0 R 52 0 R 54 0 R 56 0 R 58 0 R 60 0 R 62 0 R 64 0 R 66 0 R 68 0 R 70 0 R 72 0 R 74 0 R 76 0 R 78 0 R 80 0 R 82 0 R 84 0 R 86 0 R 88 0 R 90 0 R 92 0 R 94 0 R 96 0 R 98 0 R ] endobj 12 0 obj << /Type /Annot /Subtype /Link /Rect [ 90.0 653.936 125.976 641.936 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 13 0 R /H /I >> endobj 14 0 obj << /Type /Annot /Subtype /Link /Rect [ 90.0 640.736 161.328 628.736 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 15 0 R /H /I >> endobj 16 0 obj << /Type /Annot /Subtype /Link /Rect [ 114.0 627.536 245.316 615.536 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 17 0 R /H /I >> endobj 18 0 obj << /Type /Annot /Subtype /Link /Rect [ 114.0 614.336 287.304 602.336 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 19 0 R /H /I >> endobj 20 0 obj << /Type /Annot /Subtype /Link /Rect [ 114.0 601.136 235.98 589.136 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 21 0 R /H /I >> endobj 22 0 obj << /Type /Annot /Subtype /Link /Rect [ 114.0 587.936 278.64 575.936 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 23 0 R /H /I >> endobj 24 0 obj << /Type /Annot /Subtype /Link /Rect [ 114.0 574.736 400.272 562.736 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 25 0 R /H /I >> endobj 26 0 obj << /Type /Annot /Subtype /Link /Rect [ 114.0 561.536 504.948 549.536 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 27 0 R /H /I >> endobj 28 0 obj << /Type /Annot /Subtype /Link /Rect [ 114.0 548.336 273.66 536.336 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 29 0 R /H /I >> endobj 30 0 obj << /Type /Annot /Subtype /Link /Rect [ 90.0 535.136 177.0 523.136 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 31 0 R /H /I >> endobj 32 0 obj << /Type /Annot /Subtype /Link /Rect [ 114.0 521.936 194.328 509.936 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 33 0 R /H /I >> endobj 34 0 obj << /Type /Annot /Subtype /Link /Rect [ 114.0 508.736 210.648 496.736 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 35 0 R /H /I >> endobj 36 0 obj << /Type /Annot /Subtype /Link /Rect [ 114.0 495.536 317.964 483.536 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 37 0 R /H /I >> endobj 38 0 obj << /Type /Annot /Subtype /Link /Rect [ 114.0 482.336 255.96 470.336 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 39 0 R /H /I >> endobj 40 0 obj << /Type /Annot /Subtype /Link /Rect [ 114.0 469.136 270.312 457.136 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 41 0 R /H /I >> endobj 42 0 obj << /Type /Annot /Subtype /Link /Rect [ 114.0 455.936 172.332 443.936 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 43 0 R /H /I >> endobj 44 0 obj << /Type /Annot /Subtype /Link /Rect [ 114.0 442.736 243.336 430.736 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 45 0 R /H /I >> endobj 46 0 obj << /Type /Annot /Subtype /Link /Rect [ 114.0 429.536 180.984 417.536 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 47 0 R /H /I >> endobj 48 0 obj << /Type /Annot /Subtype /Link /Rect [ 114.0 416.336 216.672 404.336 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 49 0 R /H /I >> endobj 50 0 obj << /Type /Annot /Subtype /Link /Rect [ 90.0 403.136 231.3 391.136 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 51 0 R /H /I >> endobj 52 0 obj << /Type /Annot /Subtype /Link /Rect [ 114.0 389.936 194.328 377.936 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 53 0 R /H /I >> endobj 54 0 obj << /Type /Annot /Subtype /Link /Rect [ 114.0 376.736 285.0 364.736 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 55 0 R /H /I >> endobj 56 0 obj << /Type /Annot /Subtype /Link /Rect [ 114.0 363.536 202.668 351.536 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 57 0 R /H /I >> endobj 58 0 obj << /Type /Annot /Subtype /Link /Rect [ 114.0 350.336 179.988 338.336 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 59 0 R /H /I >> endobj 60 0 obj << /Type /Annot /Subtype /Link /Rect [ 114.0 337.136 234.312 325.136 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 61 0 R /H /I >> endobj 62 0 obj << /Type /Annot /Subtype /Link /Rect [ 114.0 323.936 262.98 311.936 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 63 0 R /H /I >> endobj 64 0 obj << /Type /Annot /Subtype /Link /Rect [ 90.0 310.736 182.988 298.736 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 65 0 R /H /I >> endobj 66 0 obj << /Type /Annot /Subtype /Link /Rect [ 114.0 297.536 194.328 285.536 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 67 0 R /H /I >> endobj 68 0 obj << /Type /Annot /Subtype /Link /Rect [ 114.0 284.336 233.652 272.336 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 69 0 R /H /I >> endobj 70 0 obj << /Type /Annot /Subtype /Link /Rect [ 114.0 271.136 264.984 259.136 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 71 0 R /H /I >> endobj 72 0 obj << /Type /Annot /Subtype /Link /Rect [ 114.0 257.936 191.316 245.936 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 73 0 R /H /I >> endobj 74 0 obj << /Type /Annot /Subtype /Link /Rect [ 114.0 244.736 254.304 232.736 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 75 0 R /H /I >> endobj 76 0 obj << /Type /Annot /Subtype /Link /Rect [ 114.0 231.536 227.34 219.536 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 77 0 R /H /I >> endobj 78 0 obj << /Type /Annot /Subtype /Link /Rect [ 114.0 218.336 268.98 206.336 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 79 0 R /H /I >> endobj 80 0 obj << /Type /Annot /Subtype /Link /Rect [ 114.0 205.136 233.34 193.136 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 81 0 R /H /I >> endobj 82 0 obj << /Type /Annot /Subtype /Link /Rect [ 114.0 191.936 279.672 179.936 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 83 0 R /H /I >> endobj 84 0 obj << /Type /Annot /Subtype /Link /Rect [ 114.0 178.736 232.992 166.736 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 85 0 R /H /I >> endobj 86 0 obj << /Type /Annot /Subtype /Link /Rect [ 114.0 165.536 250.668 153.536 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 87 0 R /H /I >> endobj 88 0 obj << /Type /Annot /Subtype /Link /Rect [ 114.0 152.336 268.992 140.336 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 89 0 R /H /I >> endobj 90 0 obj << /Type /Annot /Subtype /Link /Rect [ 114.0 139.136 256.32 127.136 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 91 0 R /H /I >> endobj 92 0 obj << /Type /Annot /Subtype /Link /Rect [ 114.0 125.936 231.336 113.936 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 93 0 R /H /I >> endobj 94 0 obj << /Type /Annot /Subtype /Link /Rect [ 114.0 112.736 231.972 100.736 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 95 0 R /H /I >> endobj 96 0 obj << /Type /Annot /Subtype /Link /Rect [ 90.0 99.536 187.656 87.536 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 97 0 R /H /I >> endobj 98 0 obj << /Type /Annot /Subtype /Link /Rect [ 114.0 86.336 194.328 74.336 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 99 0 R /H /I >> endobj 100 0 obj << /Length 2042 /Filter [ /ASCII85Decode /FlateDecode ] >> stream Gb"/l:K-"=&B4*c$6R.dY=AP78s'6+Uc,V`bU/+I4Ugo6f#F#_P"a*/hiWjT4^r66>7"?SK>S4VJuXBNRcuc5Si8SU^Kc'eAe2#[c/ce]9Mas3WN%R$X0B;^'q,#1b:I[oWKirm1?TT;p,6KuB6qDdrf-/#S]Z\;47`19FLFh-FU0'.c>#5j$Lll2]ZY_Pn@Z*ts8P=7YO$Q6Ie^>D',IFaTJK&CheKbk4D,mo-W.)[SNq*knf]h!U*]bht"p-N8?;.Hb!POj<MZTT0uO'AL5d7c3)k;mE'$-n2]"Z3lYgM/4JTgh$#-8D++H(5O*c'4q$S1-u%ZJbYft+leMPQIH/h;_m#=jm($GS=>+JC_*.=$X:4T7T/mCf>iomh:6K>3Af0X#l\Du0-h(VYP5cE@J=/G>9Oj\#^P'si#:VN!m&,_G,J)GIU&ITuR\@F!NA@fr`ctUeSI4e(GAWnJooGHF`!W0r$9(4Et^k_bj>IS0Dn@6mg_K^bH"TPY24j,6?2k\_'Fj[?c/"Q;-1m9k2Me4Dj*>%_-\5b&=%HfdTb2aeAPgOn^M$:;QX(C/#5ofN-?m#^nKPi?NG&=+8JI%P^#kgZSY^8.k]j_Z/_"uLf.Jsj?W2g;RB"_7O^c@_&;.Bpa0m6X2V`;Ar&c"n//Z*,)l.mPS2C?[3oP2X*CL5UrlFS'fobP#TafVLrLX`*2R>I;0TE^GHIhk?C"S\SEd[Tp,u3lF&B`c"!7c>DleJq_amGUWQXrp&Z"di>*R^Qe*aXL_ZR_]aNM*n@L'W5]$ijVUL]ha\UO5cd8oFDN_)O/p=u<=lqE!q1nkqefChdO6Un2VY1$Ui#W@Qu,UZIeq_F#CdQ(k_MG5I5qp5EM?P_B]2g0GN?./4<#!-!j&3Pmc*R`nB8s-]f,>m5ZRWcj!Zr?-?b9C9-?Q'u3Yi*^_StNM`'0[;`e0hq%j8!`.Z[n;hb`gPD+ai9JJJZnQI0%G\904#Qe:W-@oXtoX8@3,eJo/oJYc6#NBgC!Jt&J>3W+l\"ikH]Upd?>c/'a92EOeP@Wk".":<`G8.S]*ofP.jno:Tg0%B:]nWO(Y@M?35L`m(&p;Sr>ht(np^=HkC0@@N-WQOKNn-,1OLc9&to?h:?5%etj-+*Rge![H-R)&a^0ZOo,K3nV72G@mCn>GSggqr-@`s$POS>Z>ILaIe`d/OMGLc@H39ib]:,`OVXWrMgWf[]cNf;?_]dJ*h=VW7aR%#9DOM.%qgcm;<^m%h'!Lf/IS:CgcdXJ[2?KRb8NsEk:]CagV2!ER\!e$V="4l)`,JSR3:"b(OD7f769J.rY3dUdJBW6Mm&%=/rE&1SQYV>\k_8<[NN_M`O\D=1*Z=>0/U0<%#/rdYQ&sk?2]Rlo&GRqD1:<[c,m_]D"r,~> endstream endobj 101 0 obj << /Type /Page /Parent 1 0 R /MediaBox [ 0 0 612 792 ] /Resources 3 0 R /Contents 100 0 R /Annots 102 0 R >> endobj 102 0 obj [ 103 0 R 105 0 R 107 0 R 109 0 R 111 0 R 113 0 R 115 0 R 117 0 R 119 0 R 121 0 R 123 0 R 125 0 R 127 0 R 129 0 R 131 0 R 133 0 R 135 0 R 137 0 R 139 0 R 141 0 R 143 0 R 145 0 R 147 0 R 149 0 R 151 0 R 153 0 R 155 0 R 157 0 R 159 0 R 161 0 R 163 0 R 165 0 R 167 0 R 169 0 R 171 0 R 173 0 R 175 0 R 177 0 R 179 0 R 181 0 R 183 0 R 185 0 R 187 0 R 189 0 R 191 0 R 193 0 R 195 0 R 197 0 R 199 0 R ] endobj 103 0 obj << /Type /Annot /Subtype /Link /Rect [ 78.0 719.935 203.652 707.935 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 104 0 R /H /I >> endobj 105 0 obj << /Type /Annot /Subtype /Link /Rect [ 78.0 706.735 214.32 694.735 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 106 0 R /H /I >> endobj 107 0 obj << /Type /Annot /Subtype /Link /Rect [ 78.0 693.535 254.652 681.535 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 108 0 R /H /I >> endobj 109 0 obj << /Type /Annot /Subtype /Link /Rect [ 78.0 680.335 214.668 668.335 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 110 0 R /H /I >> endobj 111 0 obj << /Type /Annot /Subtype /Link /Rect [ 78.0 667.135 185.988 655.135 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 112 0 R /H /I >> endobj 113 0 obj << /Type /Annot /Subtype /Link /Rect [ 78.0 653.935 259.968 641.935 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 114 0 R /H /I >> endobj 115 0 obj << /Type /Annot /Subtype /Link /Rect [ 54.0 640.735 195.312 628.735 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 116 0 R /H /I >> endobj 117 0 obj << /Type /Annot /Subtype /Link /Rect [ 78.0 627.535 158.328 615.535 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 118 0 R /H /I >> endobj 119 0 obj << /Type /Annot /Subtype /Link /Rect [ 78.0 614.335 253.992 602.335 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 120 0 R /H /I >> endobj 121 0 obj << /Type /Annot /Subtype /Link /Rect [ 54.0 601.135 141.0 589.135 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 122 0 R /H /I >> endobj 123 0 obj << /Type /Annot /Subtype /Link /Rect [ 78.0 587.935 158.328 575.935 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 124 0 R /H /I >> endobj 125 0 obj << /Type /Annot /Subtype /Link /Rect [ 78.0 574.735 216.624 562.735 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 126 0 R /H /I >> endobj 127 0 obj << /Type /Annot /Subtype /Link /Rect [ 78.0 561.535 198.3 549.535 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 128 0 R /H /I >> endobj 129 0 obj << /Type /Annot /Subtype /Link /Rect [ 78.0 548.335 273.312 536.335 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 130 0 R /H /I >> endobj 131 0 obj << /Type /Annot /Subtype /Link /Rect [ 78.0 535.135 235.668 523.135 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 132 0 R /H /I >> endobj 133 0 obj << /Type /Annot /Subtype /Link /Rect [ 54.0 521.935 147.648 509.935 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 134 0 R /H /I >> endobj 135 0 obj << /Type /Annot /Subtype /Link /Rect [ 78.0 508.735 158.328 496.735 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 136 0 R /H /I >> endobj 137 0 obj << /Type /Annot /Subtype /Link /Rect [ 78.0 495.535 295.944 483.535 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 138 0 R /H /I >> endobj 139 0 obj << /Type /Annot /Subtype /Link /Rect [ 78.0 482.335 225.972 470.335 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 140 0 R /H /I >> endobj 141 0 obj << /Type /Annot /Subtype /Link /Rect [ 78.0 469.135 169.32 457.135 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 142 0 R /H /I >> endobj 143 0 obj << /Type /Annot /Subtype /Link /Rect [ 78.0 455.935 205.98 443.935 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 144 0 R /H /I >> endobj 145 0 obj << /Type /Annot /Subtype /Link /Rect [ 54.0 442.735 131.676 430.735 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 146 0 R /H /I >> endobj 147 0 obj << /Type /Annot /Subtype /Link /Rect [ 78.0 429.535 158.328 417.535 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 148 0 R /H /I >> endobj 149 0 obj << /Type /Annot /Subtype /Link /Rect [ 78.0 416.335 195.312 404.335 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 150 0 R /H /I >> endobj 151 0 obj << /Type /Annot /Subtype /Link /Rect [ 78.0 403.135 229.656 391.135 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 152 0 R /H /I >> endobj 153 0 obj << /Type /Annot /Subtype /Link /Rect [ 78.0 389.935 199.992 377.935 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 154 0 R /H /I >> endobj 155 0 obj << /Type /Annot /Subtype /Link /Rect [ 78.0 376.735 204.648 364.735 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 156 0 R /H /I >> endobj 157 0 obj << /Type /Annot /Subtype /Link /Rect [ 54.0 363.535 189.996 351.535 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 158 0 R /H /I >> endobj 159 0 obj << /Type /Annot /Subtype /Link /Rect [ 78.0 350.335 164.328 338.335 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 160 0 R /H /I >> endobj 161 0 obj << /Type /Annot /Subtype /Link /Rect [ 78.0 337.135 208.332 325.135 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 162 0 R /H /I >> endobj 163 0 obj << /Type /Annot /Subtype /Link /Rect [ 78.0 323.935 204.996 311.935 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 164 0 R /H /I >> endobj 165 0 obj << /Type /Annot /Subtype /Link /Rect [ 78.0 310.735 280.992 298.735 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 166 0 R /H /I >> endobj 167 0 obj << /Type /Annot /Subtype /Link /Rect [ 78.0 297.535 186.0 285.535 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 168 0 R /H /I >> endobj 169 0 obj << /Type /Annot /Subtype /Link /Rect [ 78.0 284.335 257.976 272.335 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 170 0 R /H /I >> endobj 171 0 obj << /Type /Annot /Subtype /Link /Rect [ 54.0 271.135 240.96 259.135 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 172 0 R /H /I >> endobj 173 0 obj << /Type /Annot /Subtype /Link /Rect [ 78.0 257.935 164.328 245.935 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 174 0 R /H /I >> endobj 175 0 obj << /Type /Annot /Subtype /Link /Rect [ 78.0 244.735 245.64 232.735 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 176 0 R /H /I >> endobj 177 0 obj << /Type /Annot /Subtype /Link /Rect [ 78.0 231.535 283.98 219.535 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 178 0 R /H /I >> endobj 179 0 obj << /Type /Annot /Subtype /Link /Rect [ 78.0 218.335 248.976 206.335 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 180 0 R /H /I >> endobj 181 0 obj << /Type /Annot /Subtype /Link /Rect [ 78.0 205.135 222.324 193.135 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 182 0 R /H /I >> endobj 183 0 obj << /Type /Annot /Subtype /Link /Rect [ 54.0 191.935 145.668 179.935 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 184 0 R /H /I >> endobj 185 0 obj << /Type /Annot /Subtype /Link /Rect [ 78.0 178.735 164.328 166.735 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 186 0 R /H /I >> endobj 187 0 obj << /Type /Annot /Subtype /Link /Rect [ 78.0 165.535 279.624 153.535 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 188 0 R /H /I >> endobj 189 0 obj << /Type /Annot /Subtype /Link /Rect [ 78.0 152.335 208.332 140.335 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 190 0 R /H /I >> endobj 191 0 obj << /Type /Annot /Subtype /Link /Rect [ 78.0 139.135 314.988 127.135 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 192 0 R /H /I >> endobj 193 0 obj << /Type /Annot /Subtype /Link /Rect [ 78.0 125.935 247.644 113.935 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 194 0 R /H /I >> endobj 195 0 obj << /Type /Annot /Subtype /Link /Rect [ 78.0 112.735 307.32 100.735 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 196 0 R /H /I >> endobj 197 0 obj << /Type /Annot /Subtype /Link /Rect [ 78.0 99.535 321.672 87.535 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 198 0 R /H /I >> endobj 199 0 obj << /Type /Annot /Subtype /Link /Rect [ 78.0 86.335 372.612 74.335 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 200 0 R /H /I >> endobj 201 0 obj << /Length 1056 /Filter [ /ASCII85Decode /FlateDecode ] >> stream Gb"/j>u03/'Sc)R.rkq4GknT8EQPX50oZKV),-KBOZ%)lX`Yi.U%%N;oIIs."U%@*m(gT83,U$DmouFU](m0R5+F@NEJ\POPC[R^"37_5J&cRL=q:gt6NSpHijnaZW1FceA*_'EG(&[)SdLaS>UE)#[=b+BH'(`PFZ]4qN)ZOeS9(ZTV@kJ$faNVY_>9.RDhBE4e7dkjFH3IfD'4%KdEBY'LDq9)25KM*7b@#0WLfGf"f3XnOQck)*m,FqE]ILgXVd]S?WkN[B>SH]TP&t4:WuIKoF$jcNeIuVfc+h2*HgdJ/94$#5VX3I+qNeS+9E,W26u3"Xl_Arp=dtmWDt_)^ZMl/HJ9Isno<2^[Fpd'[:N>;KtUSMnn$PEIF.ae,J!bMn?JA9)<0"A%Sd<&9JYYri)b'Iu"NT=EFdh\?MqO1)=/.=#O5@g3,2:U=>Oj!#oZ+gVf^V#PsLp$J=QY1+7!2tC&0]AfhIoMpg(m(S?3GNWNrlP[Tbn.0DlS9=~> endstream endobj 202 0 obj << /Type /Page /Parent 1 0 R /MediaBox [ 0 0 612 792 ] /Resources 3 0 R /Contents 201 0 R /Annots 203 0 R >> endobj 203 0 obj [ 204 0 R 206 0 R 208 0 R 210 0 R 212 0 R 214 0 R 216 0 R 218 0 R 220 0 R 222 0 R 224 0 R 226 0 R 228 0 R 230 0 R 232 0 R 234 0 R 236 0 R 238 0 R 240 0 R 242 0 R 244 0 R 246 0 R ] endobj 204 0 obj << /Type /Annot /Subtype /Link /Rect [ 114.0 719.935 350.64 707.935 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 205 0 R /H /I >> endobj 206 0 obj << /Type /Annot /Subtype /Link /Rect [ 90.0 706.735 195.66 694.735 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 207 0 R /H /I >> endobj 208 0 obj << /Type /Annot /Subtype /Link /Rect [ 114.0 693.535 200.328 681.535 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 209 0 R /H /I >> endobj 210 0 obj << /Type /Annot /Subtype /Link /Rect [ 114.0 680.335 320.664 668.335 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 211 0 R /H /I >> endobj 212 0 obj << /Type /Annot /Subtype /Link /Rect [ 114.0 667.135 234.672 655.135 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 213 0 R /H /I >> endobj 214 0 obj << /Type /Annot /Subtype /Link /Rect [ 114.0 653.935 206.664 641.935 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 215 0 R /H /I >> endobj 216 0 obj << /Type /Annot /Subtype /Link /Rect [ 114.0 640.735 304.992 628.735 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 217 0 R /H /I >> endobj 218 0 obj << /Type /Annot /Subtype /Link /Rect [ 114.0 627.535 291.66 615.535 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 219 0 R /H /I >> endobj 220 0 obj << /Type /Annot /Subtype /Link /Rect [ 90.0 614.335 173.664 602.335 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 221 0 R /H /I >> endobj 222 0 obj << /Type /Annot /Subtype /Link /Rect [ 114.0 601.135 200.328 589.135 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 223 0 R /H /I >> endobj 224 0 obj << /Type /Annot /Subtype /Link /Rect [ 114.0 587.935 353.988 575.935 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 225 0 R /H /I >> endobj 226 0 obj << /Type /Annot /Subtype /Link /Rect [ 114.0 574.735 321.324 562.735 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 227 0 R /H /I >> endobj 228 0 obj << /Type /Annot /Subtype /Link /Rect [ 114.0 561.535 288.972 549.535 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 229 0 R /H /I >> endobj 230 0 obj << /Type /Annot /Subtype /Link /Rect [ 114.0 548.335 237.66 536.335 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 231 0 R /H /I >> endobj 232 0 obj << /Type /Annot /Subtype /Link /Rect [ 114.0 535.135 275.988 523.135 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 233 0 R /H /I >> endobj 234 0 obj << /Type /Annot /Subtype /Link /Rect [ 114.0 521.935 234.324 509.935 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 235 0 R /H /I >> endobj 236 0 obj << /Type /Annot /Subtype /Link /Rect [ 90.0 508.735 203.652 496.735 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 237 0 R /H /I >> endobj 238 0 obj << /Type /Annot /Subtype /Link /Rect [ 114.0 495.535 200.328 483.535 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 239 0 R /H /I >> endobj 240 0 obj << /Type /Annot /Subtype /Link /Rect [ 114.0 482.335 268.32 470.335 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 241 0 R /H /I >> endobj 242 0 obj << /Type /Annot /Subtype /Link /Rect [ 114.0 469.135 261.66 457.135 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 243 0 R /H /I >> endobj 244 0 obj << /Type /Annot /Subtype /Link /Rect [ 114.0 455.935 264.648 443.935 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 245 0 R /H /I >> endobj 246 0 obj << /Type /Annot /Subtype /Link /Rect [ 90.0 442.735 331.32 430.735 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 247 0 R /H /I >> endobj 248 0 obj << /Length 118 /Filter [ /ASCII85Decode /FlateDecode ] >> stream Garg^iR2p+ endstream endobj 249 0 obj << /Type /Page /Parent 1 0 R /MediaBox [ 0 0 612 792 ] /Resources 3 0 R /Contents 248 0 R >> endobj 250 0 obj << /Length 772 /Filter [ /ASCII85Decode /FlateDecode ] >> stream GasIf9lJc?%)(h*kh#s+QM;]0Y:J2AJ78WGFbaE27AaoF[cHZtXoJ@\G(HVYcJXUP;^1,Z,Q51,I(E*FP0p!p8_%XcUttCYeiu5oDX!JRMh3"-KN&&!^A4q*@2s1,02d5k-ZcRdI#L9+T#jWOaGT^J%noa-jC=A!?Z'3.\/9$%Hbl*b8t*`"iO9I=(5M:=@G$)^*t+5VO)!$C$R<78WoY7-JNJe8$+[_#U1llF[#9hmC#RS\]"#I3(?AgP6MT6*jqmg,GS;MCQ,PH._<:25S9Gg8oVIp77(0c%9XgZ,>\6_],W^P["m/?O6FLmZ(n[knL$9-VO,eEM3>"I'Pbo6\1cWC5rRDtKJiN(CW2"m4?G4^!_JMS_Q\9Qh>b]5_d1pgC]`n$teS%::M1$?4P^0XZQ:"LC`q8*X0Wlr`*Wu/0-B)H1PEP`80apt]8.8hC`R:7?q8.$B#+h"gWk%R[*D_e9JMk-UtfF$\1Gji_g=F0lk_loqnFnE.eSm91s([.TC`b_B/r\M+q-UB&\BYWd%oI3LHL,G!O_p19M9<$8Y-X&A%CYn[J9pR*V*A~> endstream endobj 251 0 obj << /Type /Page /Parent 1 0 R /MediaBox [ 0 0 612 792 ] /Resources 3 0 R /Contents 250 0 R >> endobj 252 0 obj << /Length 160 /Filter [ /ASCII85Decode /FlateDecode ] >> stream Garg^iR2p+J*R@kr9-q[3,9MU;AF:I11!(XLI!r~> endstream endobj 253 0 obj << /Type /Page /Parent 1 0 R /MediaBox [ 0 0 612 792 ] /Resources 3 0 R /Contents 252 0 R >> endobj 254 0 obj << /Length 2141 /Filter [ /ASCII85Decode /FlateDecode ] >> stream Gat%%=c_;q&:XAWcsm,f=c">FoJ&X,TKq3J$&YGfZ:s"FF?#Mlg\pje8sDCdNq'>Ur!2Q=-"?A3KMCN^oF\H&T[]cYBZB\8/qRb5lK_-[C^foi7dsqJUL3T>+WBSNoK/@6&ji'X@:/B[!?>77EI@-d3+,h.,ff5$tSM7OV,@!OSeVb6rmfKNlk`N5L9ZIDGk9e4U\/XdChPJ"'L'c-g,TRt/6AgER,.*5MCmLIQCk>=XWemG:pt97W+MVeDo\[*ikL!O[2!\`JPWU9^#ma>fU!e>&AEV.AS$4:fTa%"_0dW=m)ZWsa`>Bh^M0%Q0Q]P\0"D<8o=h!!u-(B6>@9u3(IH@)4FV8g+cAjRQ,cfo**9Nrt>+&j_*B9"(U'S@Mg*eXpBK[\FSfDcZo@I0Yh=#g\HJtF0hE*g=,8,5%-irIfS\j@8LDsjC7ddc3ih>u)I+eJ/HbCM7jk1NR?ndN_HJuVPI66">V].7CjON)E@P1Y9Ff3]g\0g=DTfIp%L'+fLi70*#(QC\.Qc)`(peZF(&SMFh+WWJL(r9Ss);iTW,TTMjf&&/8Vidq.'f&9(O>_mW9oa1XeT](f3:/l!WjY"s'L6Tu'@,ZG"c+UrHNE7"Y20Wh`O5s"WQM=OF;0c[YHFnRgl!\T`e(ZP/\8J/1?(YnoMoQ\jlUF\)o8b``Q\jHO_E*h3OW`FMJ7I%ko:h;!!E<:6FI4T`n3gq7"&PtAQ`1U>;;%S17JBa2Lr"'pXdq9V&]l%[-oKt(A1#j0VIP^=`PJhIj9C"04EJ$6[N-dO_*W'Dag(s`Perj+B^#2,!ds;f(2tpEc$Cj6pZ,+mtk`&1_kTfTtS&$ma3e,\QXD9_hD[Er\B)#Ug"R^TdMk5*_eXW/aj=sU:[R&Doc:IdLnr\5Gc_!^IW%lQU'CGn&Cm;h9$!6_4,qd0c>,"[4&me(BfD4"@:+ZBC&i93m-VWKD>h,*J]u^Ka#fOJN]?:U7I)RbQ`G\KmgZ/t4h.hXm'N3C')>e0Q/>S9*fRu3:bQ1$LJ5WQ]e9c3GKLjJ96_RZn&fXuY@Q.H7!S@MTdX/d]mpu(hJIos"TdlA>.&q0Ug\/+nUoRsf6LbJ&nsff82?<@-ob.S2!2H>7Tomj=hUs^*7TQUBS#k`P_#tm<5R)C5<^UP2W`_S"Fe6+tL8C)&9Y\iB!@Oto=iWG0f&])RMNea>1lQeo>6rHaJ"mqLc1k'X\jAD7gg(oH%b>If5TBer\BM=.ZVleA\[Y-NU=@nmG%'^\=mZH$n*kZ9+a?SnHO9-58U4_D>Q8d&?/),^EDF.i9q'`D?4@9(7M3[>?D4PHBr,)Z[W9\^P3;2k+r=07p3K[)]BNnUNP/qp!NgRhK,DC3SJHom.IXlZba!9E[c+fni]-C(KVnL(&B@s&DrZ*J!D$:_@OE_?SPBl;NrWi$B.FS~> endstream endobj 255 0 obj << /Type /Page /Parent 1 0 R /MediaBox [ 0 0 612 792 ] /Resources 3 0 R /Contents 254 0 R /Annots 256 0 R >> endobj 256 0 obj [ 257 0 R 258 0 R 259 0 R 260 0 R 261 0 R 262 0 R 263 0 R ] endobj 257 0 obj << /Type /Annot /Subtype /Link /Rect [ 458.616 424.286 523.944 412.286 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A << /URI (http://www.springsource.com) /S /URI >> /H /I >> endobj 258 0 obj << /Type /Annot /Subtype /Link /Rect [ 230.988 411.086 270.972 399.086 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A << /URI (http://www.ervacon.com) /S /URI >> /H /I >> endobj 259 0 obj << /Type /Annot /Subtype /Link /Rect [ 174.312 324.236 306.336 312.236 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A << /URI (http://forum.springframework.org) /S /URI >> /H /I >> endobj 260 0 obj << /Type /Annot /Subtype /Link /Rect [ 418.284 299.036 518.256 287.036 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A << /URI (http://jira.springframework.org) /S /URI >> /H /I >> endobj 261 0 obj << /Type /Annot /Subtype /Link /Rect [ 170.328 273.836 294.348 261.836 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A << /URI (http://www.springframework.org) /S /URI >> /H /I >> endobj 262 0 obj << /Type /Annot /Subtype /Link /Rect [ 134.004 248.636 253.656 236.636 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A << /URI (http://www.springframework.org/webflow) /S /URI >> /H /I >> endobj 263 0 obj << /Type /Annot /Subtype /Link /Rect [ 361.644 154.736 488.964 142.736 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A << /URI (http://repo1.maven.org/maven2/) /S /URI >> /H /I >> endobj 264 0 obj << /Length 2576 /Filter [ /ASCII85Decode /FlateDecode ] >> stream Gau0FD/\0"%fW&,ToWL;1=j*O7^G&WBS!P"M`WJma^ICbp4HhtM=ta7-elc:h_4Y7Oikb.VR[IU4UN9o6]hn7Sp\,a]"PlThc7b!inOZtk>,Hf,/ne7\7Dk'!i6?aK57Um$ag8_1jHP,pXQ/t>\Nm7E!IeE-Qp/EP7N;eE2JVr,qB@tYqUb@SCrUXb,Gm0Ebb:##)7umIX;f]4:adR>="V_9W4><9lRiXIf&X/++iC&qk#Cpb(LA*;)SpGq>[+8%*if$Yn@bc8Y=IZPNM1LSK_U)LCk1%^eH?2adD@+J[Ve#th1#"&@UH:S)Y_^HZ1m,=taRTf<^W8IFOIq-i>?u>98B\L]Gi4TR/=Erp4!kgDP*Um)a=lT^QG.ng@$Z5SrTERg]A$lt!T3!(h.k`V#\2crC4$SO\t6=W/@(C^4VRa.U7e!+@"d8^:bAeF4h!U`r#C_?JT!;Z(C5I2]jQNJ-Z3)2I7h'C$0,[G$O2RN$l9>tM;C7FiR@FNV;IhMYjr\(6@%PU8[r]AM"L#_!8_'>R/$nqa9lHS-W68Q$qamnN(8q)#'L?eho;ig*nF\;:ZLcQI?Shi[cDWiTb?(5k,s:JlH5`r&@m3"u9=!!8d)F=dA#N/lF_1HI8Y@WZ14#/!!G;p5A/MpVj*B64Gugqi2H6;EA<)O`dhGhZ2\+9#-Mp58!0Ds]Gc5P;_TO/,0,/akpUIWgWm_p+q1E3n8/LLZ`8S;qaGS2D>`ccPTOT[c\um?361HGM.IQh;\WY?ul3W=6+&_e*<7LX#0/AeN*fFagWK]S`Cc^BSmV_eILXaa,Ne,W+@QlU+mAFa_s>>8;I_6Gm5/>Yrgnh*^^jb`?HESf^FM*iQ7N`g7.K<=oa@7%n/.MA\UMTucCLLRnE&\I*20f9UZ[RF^p(af)$?B>WApgNh*E5H^Y*9NJp7D([5,)RRVRs.jk6?R`4V\FJ0aIO3F34)[g2j^Y]4d2r5Ss;d'7SAX[GL0mj1]>l>3N+?&U)pLE%7gB*o3mglh8W4TfVa/=CZYN."SVqSDS:44I,bhqI;GWoasCLkXLB\(c6L@C\W8EdP%%^n[=B.hB3"\_h0A`^^0^O.[-o*/D"I6\Y"%CXhCQk:\M>DegiCcTS+=q9%t1HF#=OK[GR`0ZFi,(f52@dd5L_3^M#=Zt1GJ9sm#$7*4(!8k+SWL"TIDp6-2E=i&aXNLR^31Zc=)K+VY1SF(kaJK)J>O^%5FZ'YC4]4GR@58R5(TBsH%E(j#X41(OShXAK`V`=r\]YnQO")Ec!n3T:T3G=fe'#0C.P&L`]28p77[8r7Yh-c7`r@,#lGmi&]t%pbMBUXrEb5Z]"=\3O"m03@F]Ye#2R+UA#>Jdbr3DXn4O0["ICp7=)q>KU2WOqO&DKWOHnq.0gq7%?OTe=gp)DY9'K9l9l)M2`l/LOG=KX9[hh>`RDE2VmYU3XK6lR:O+jRa]DWrCj;ehqrVd`[UhoUN#TIrl]]IL"I*QD"6"B\k]-.T%3b1&YXoHK]_e8p;1m4JI3 endstream endobj 265 0 obj << /Type /Page /Parent 1 0 R /MediaBox [ 0 0 612 792 ] /Resources 3 0 R /Contents 264 0 R /Annots 266 0 R >> endobj 266 0 obj [ 267 0 R 268 0 R 269 0 R ] endobj 267 0 obj << /Type /Annot /Subtype /Link /Rect [ 347.976 391.749 503.292 379.749 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A << /URI (http://www.springsource.com/repository) /S /URI >> /H /I >> endobj 268 0 obj << /Type /Annot /Subtype /Link /Rect [ 54.0 378.549 106.668 366.549 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A << /URI (http://www.springsource.com/repository) /S /URI >> /H /I >> endobj 269 0 obj << /Type /Annot /Subtype /Link /Rect [ 109.656 365.349 227.64 353.349 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A << /URI (http://www.springsource.com/products/dmserver) /S /URI >> /H /I >> endobj 270 0 obj << /Length 2575 /Filter [ /ASCII85Decode /FlateDecode ] >> stream GauHN?'!aK&q/YE+m`,8FD6j]ohi'sRNa1Y[(X!*`OudJ*b:bs7KGHcL"*>'N\c_Z<+a_i24iMd`eN5mJ-5BIB>//5NHWE8k8UA.pj+I>qjaXO2HG/'GT4TeiJ]gAGSZddYGV0OlS,',9mQ#D_60FC$4q3kTQjoddk/!rMT6Df:*9I5l$*OTtpYTanu]>7c`AA?MU#eQ+p"FK=dRFYL[O>.moG4AFY3a#FN)[m&RL:n,h(;TScq:t6B>,eNL9Z%*S@?2ba,`O@m`ke)m6](iu[AA"&r?,<=L3hRGRZS;#'N?#pi)`\'FOG_YUd&4G!!+V#D*(3NC!%a*L=Tg5H+i?r0UKI^&5=O]@@%^1n&2A+No<9ZBK"&lbZ+dTh'BaP,Vd+tN,FF:Qe?+Q;_G?8=@c&,s>ubVqUSAZme?qa+Kj_.7.@G_eq;?Wtld>tCj/je,XC&.$`19oil/6t>Y98VgU6_c1E/^EbncWB$GpPT8H#5nJa@b9&H22tCriar0`ET:\m`MW#!^.^T!B7L\d_3ncq$,Z'I8%+sFT&+db_i4?nn1(B`r:QHZ0<7K6Qu:hIa[GlT)k;!qjqc5mbV72i6.P2aCgX'WF:>[T+hAQqI]RYcB3BlgcQ]WkaP:i3+Q`CZd8(.8TXA4@s;^JVth0rRg5J2os8McPZdIFX8^Yn3SnWY-@!mK]T(+E]9DQqO%G?\HPnJsST/gi(3H6PGDo*[q$D8A1Q8%.tW-%gI?Hm9p2%R[`jp-%huk%&kR@iRO4]P5AsQV0!k1au>;+LQ9pr/<(spfGdHq8LC)hX=UCQ_SF`)c9]sE$t)h?ks^3ojaAG0+7oHQ5mnZZHt-gs/P=oab(IB:81]6Q%DdH8=dr:O*bZFB>XQW@]hhR!"$8*9B@\\B\@'q.Ts"^qXk;Z!6fWks`EXs3BF$d^Q)H:'D3-Fg'W0B*D`7gRDs2D%[6:CkTV)`>T^.B=I/JH$6EqdjL7k_X%]_M'X#@boo?[Z28`0%>=Re(5mJ8t&YAp!F+Hot)@J0V]D3'#Q+*.=E'[8f4FSg%+h.?'JkOLuI$Ddn"P)cgdb$qb'0ZpjMM\pAG:/%LIeO_C`0TsRT1+B004dBHs!_G\E8gOb#$`Wba='ueN/!\WkS"ug,Oig/I'KeRG<+@Fq#eiXZ7c(>u#tKaK7&5?$alQ2MI]gh&X@6a+ku=4mQq9UPH%k?"n,&AN(jFg)I&osP.@1Zg-U]f)%]u\g-359h_9LaC9aW.bX)HZZF,H?Yk(;qaK==cak#4T'u@NVBmU3GF%F_n:B?NW.$U#\"i]-g'YN//K>Q+Ch:6h;[QVSL6qtc'k3OOM<,>DNgai[=s7.;U;V'+G(3T_40mI;fm3X6&/a!sl4`UsZ4cQ_&WeVVb3q/MShV-;M>Sli3b3L>/_MsD:9p!%q%4=X`K3hMNfTE"tAe?o>7#9,;-4CkB-LS4U1o*d%$0.?f'D=.a9\=<)RPF#X`J!'-(XjqdVO0![g4U@]q;-dV6?\OpNA*"8-fi&)]t]$7F!_10i,+76#)!uaLcrLA>*_hNKjM.@i9"M[dCLlX:L,)0%^M1@3+>f?$.E6VnK$C@<+rJQSZZGiZp*Ggc#(,;=#BEWX endstream endobj 271 0 obj << /Type /Page /Parent 1 0 R /MediaBox [ 0 0 612 792 ] /Resources 3 0 R /Contents 270 0 R >> endobj 272 0 obj << /Length 2856 /Filter [ /ASCII85Decode /FlateDecode ] >> stream GatlSgN)>_p"`uka6cP(&HHajF?JT#]c2/RRs(W%+$+hC7*&t-OX`rUl[4*jDo)MYOs6C^9I/'L%\1-pDXZ/K>`1@H>MI&dD*?cRbD(MrEZKDf#siqkXR4F3pP4Mg=Y&XgnG5Lo<8TViJ!IQj:?#P#k3qTS+[^bXQe\Qq:J(8WT&N(b&!J2):Tn2sKY'Vri.Ln*St-I0Nh@SA9!\1NI9*OD9Qsa:s&e$jpZrK:`9ln7e(6S*d\BK/U6)"-V^sJ5^DF!'Q#Ye_dfWbVH[AX:+2cq=,D^&-]X9nYm5%p-19pA#3:VO$C"_ROAASkfE'ja&0X4=ccLmd?]k+1E7KoADjK2W36W#2g"Zn6d0h--QrYV!A]+@5*5I-kZ&)C6;[&P=Y"8_X\#6I._Mh54L5NnH]NV'DkFBVE;07r8;^=UpS\()g.S0)+jG.gi@a:KO^TDG$,qRGV:F9J(Us4J?iq_WlO1G^6jPpbO4#/0J:Q0[FMFda[&FK;mcN31]03$fbi(2YHM=[fIeEUJ?&e:.8prQ1rc3j@(FligMcgr[beDM94eT1B0LGY?RnnRNLN"'%!(K39MiPE2I$NsmEb3iqXt4cGEI,:LAgt8,&Du`/g!:+MUnJ?bKYKXt@/T[cW"HsjFGrsA>d\7Ub7-G)]KPkA1r?Z951,7?WVck;K1mMXmVg<6Y$Ynq"n%W\;'9g)nrJeeSUXnV$@6S!klH?i_-$])Ki*cX,0\.n/gOX_=;&]D>G:"+]+='H%DhDbXqSUk@b92XTC_DsH85[$p6'1;pK@LNHLrA9#kaMF^QLOd42;;pQZKZ(!i?W<&'MgP&A4q9ODQB[7n^M)[1,G5o.iL_qpK:%`e^\5O'-,GQAkF:'JRBES]Q1W.aA0J3_U@5Ca_7DIo0Y)(^d%)n#,+QX[1fr)5:9h>!$4'lfP"3"UhYLS-m8q=aUFnR;#KcO_3\mu^fbF(]Ym`CQ!!.IFZGos(GnCBGQr?Va)"efY5cV*/_D^l\70cQgqW25%mkgGQ`tr:"4F@lFoms4D^#]j()u`m6;Ldn)GNG3:iAMQ)R#E1_*a]h)QGN@'JtBm;+6Z4chdfjV60A5YLQ:%%dEs]i^j/Gl%VL?\^6N9:K:\S445tNT6ICO'LK0*.Z0->O*Bcm^-`q'Dt.O),-2e(8C1sM*65hW:KnKAh+q2f6&Fs^^)6g\9$J%.OoC%s6SSlA1e>bN@c?fVrrZ)"gqqK%kL90"?=1>qgAr)iWOZ5DXV^D]+M2%IopI^=KY/sQQIPG\kH`:#/!dd>!Lf$OhoN+LUZ*cC\R(I2I1h.g-FcB2ZE#BgQFKGt@ctt"\;,%1R)96.[n(m471tZi`sa(0dKfq!bht`(imiP?^?dp?EogCre%-c:-VV'ah8\BSS>j/@.)UP#m@.H@rj;(!2AdY$'m.q2/T7cL@8jcm.L'0SJWE+S,aOakS0GF-Q-UY*aLpbcXN^I1gudW<3d;H:gd[:Z6B'FL*YNOZJ.U;c6(6`4k>;3Xu+T/Y.W(*qD"sRL(Vgnn@53><33'9`Wq-8%n:4S`@qaOkRb(l'p:F<@R'T4\:SjTu(.rc)toXToZA<1rt6U>ZVuSO2gmk>JI-l_:?8;al5i)DeRbBI89,Mm!r4@nc'$Y2>".ZRg.O4g=dLs)`tr+>VE^3'5h0'j+rga>$3bIDk_l=J(&"(_jK5\;$S"=et2A39A.KiCX2=UZeEB4"J>;Z-Iqa@l1Du^BWV&YMpmm*BG5r3rV7eVfTU(r%"/)G]T_6oa'YFPr,&k;qXBQjO$@RGh%HY$>[@?6>uG/D9a"CfLFhO=Wjit.`oo?uOt_Jb+NS->U:f7eK[F^p0GrYo@3Cs.jkFL.4W.Q[n/iZV0^\,_U.I,*N.(IcK<&-B4-3Q)`$V1tg7tdT@G(a^7sGhb)Lqpfm.j>-H%I4sMpD2tGlm'=hZ8t6$Vg~> endstream endobj 273 0 obj << /Type /Page /Parent 1 0 R /MediaBox [ 0 0 612 792 ] /Resources 3 0 R /Contents 272 0 R /Annots 274 0 R >> endobj 274 0 obj [ 275 0 R 276 0 R 277 0 R 278 0 R ] endobj 275 0 obj << /Type /Annot /Subtype /Link /Rect [ 488.28 367.575 521.604 355.575 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A << /URI (http://s3browse.com/explore/maven.springframework.org/snapshot/org/springframework/webflow) /S /URI >> /H /I >> endobj 276 0 obj << /Type /Annot /Subtype /Link /Rect [ 54.0 354.375 243.312 342.375 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A << /URI (http://s3browse.com/explore/maven.springframework.org/snapshot/org/springframework/webflow) /S /URI >> /H /I >> endobj 277 0 obj << /Type /Annot /Subtype /Link /Rect [ 264.948 341.175 470.268 329.175 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A << /URI (http://s3browse.com/explore/repository.springsource.com/maven/bundles/snapshot/org/springframework/webflow) /S /URI >> /H /I >> endobj 278 0 obj << /Type /Annot /Subtype /Link /Rect [ 54.0 327.975 106.668 315.975 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A << /URI (http://s3browse.com/explore/repository.springsource.com/maven/bundles/snapshot/org/springframework/webflow) /S /URI >> /H /I >> endobj 279 0 obj << /Length 2315 /Filter [ /ASCII85Decode /FlateDecode ] >> stream Gau0FgN)%,&:N/3n?IBqLatc'3hD2_3)-:!9C0(tSNc7(fkN*:V'N[uf6;KrYr!VcLmlO5-F7@ZE4L<2+EDTdHZqRKB1>H:):QFXb>7S>#ph.LS.R5M+sSJ;R0=5=?p4:'+.7E4_]=Y\*ujh^i.Dndl%pEHke1ghqa/^A@!Xi6U?TA*I96>)&A89Z>346#d\X%MTKl5;*M9omD&[Y\G2H!EDf-[_LVdMG88:"`%\)+r_/P@-PPsA`!Gf4/CbEuL]DSdl9Y3W,!YLMH`9T"BmlBcGGK,TFYVdN:O2IhGtJn=L\tji&SXjHNh(rK/cr%CoUaj(SL>X2naA&_+!EP`^(hTjP]0>@Nr:sPVf"*1^m5^1'_Q1C2Cf!gWAquqCl3kX\ePI6)!l.:LkK0mh/2/l.?96u3JH'7J>#9Pl1ksb)X3cT82N!nD$D;*_,^:A?Z"BMcc81J>^-!`r]%Ya$V8V:I$sE[1dOm?:Eg,le?)MG7,g1H/5S%?]g,F%hM4cS93?_k3l%^0aqR64W@EEr\Q5=XWE^s]A8NZb'G]-=mdifWoE,p#'j90D?Gac9,P8::9Bac;3"+n98rp1#6,qeX"$hrfcCGACLFg[=?GT6;#0@dt7gVgk1:g8i1%CAJp'N&Pc&d8W\g/MjQ8'"O,8Hqlc\)Ia%Kk!A#fTA--N(hr4q1g`@X)F)R,$F8,A6F0T;3'.s,@NsIsZH\C_jo<[([/%@;c5NS6YhSYl?/IB8iltmUi#IN*/WQC6YGOCcYp"=L]aK'ZsKLlSH!Vs%"o]K4:![c8Md*+s,n5X`s<1WfW$<^,Z=WDL%%jr6.Y37*ou*.4ID$Q40U28l3hp]`/bHNA:M>keB8ooI*Al$Za"'I67W"r%1)E'+4L(6l=5,\Tg":N@&HX`K^rJZ+T+4l0bM^U0;hW_m:Ykeoam32\iP/*nc9J8h"t>W^.#%KHpF6SW$sTS.D&h#1O(_TCL;`:,PMIOBih/XO^<+6DHDL8b!!$o\(i4kDRmem/D5U+$bKjIm$RP[Ef]PloAag7=Gml6m1B0k,;^`W9+Z(3>/IWQ1@S&H8(M[LgmL?gQ)KL40-X*:i$of6^=)5m^uZYD][B@CV&__:tD02]h]0)n#0jJqTe9KY.Jr4*:>E"D8&6%VgZ`F1TnLkd/CU:DB=bqQ6!Gme2RYK%mGsi`^m-O./ endstream endobj 280 0 obj << /Type /Page /Parent 1 0 R /MediaBox [ 0 0 612 792 ] /Resources 3 0 R /Contents 279 0 R >> endobj 281 0 obj << /Length 285 /Filter [ /ASCII85Decode /FlateDecode ] >> stream Gas2D0lOo_'SL]1MAp!>IF#1YA47tJf`4YRLamlr,=4_i@^1%$GMbK/m_l.>^Oe^Y@/U:<_Dg?[/`HT3$8*k^.si'7,8?efCJDNO,M']!d94nFk3JYO%5.pP2\8jPkunQpo4r)D3A+T4VGs@A41$osWK^@Susp5Ff/[V/]9M)0DrjCt6Vu?6:,Ys*Yp^^)hb%"E=KY2#~> endstream endobj 282 0 obj << /Type /Page /Parent 1 0 R /MediaBox [ 0 0 612 792 ] /Resources 3 0 R /Contents 281 0 R /Annots 283 0 R >> endobj 283 0 obj [ 284 0 R ] endobj 284 0 obj << /Type /Annot /Subtype /Link /Rect [ 54.0 719.935 124.308 707.935 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A << /URI (http://static.springframework.org/downloads/nightly/snapshot-download.php?project=SWF) /S /URI >> /H /I >> endobj 285 0 obj << /Length 896 /Filter [ /ASCII85Decode /FlateDecode ] >> stream GasIfa_oie&A@B[G]\IjOXO("01CILJU;1u[YLR^`hjMN&fm-MP.rZXR6t2%@)*naRJ5hQB81ULn)bc],eu.gjIVD>00m8I"XruIO5__+;4O:RK7:!0^-^Es8T5H/N2"icc`=Kh$hs:e(,+q[rBZo+"*TbE*/!Y<7NkM.1?/Q`Ec8Kl[p"Yp\(-aW%kn\$A-jT=E0cJ3S$GpT$LL'Z[O'[D0($Ig0<,d)k`X]F&&fjip72`\fUf1P?)quW3,d%OTF/<6RXNF"h?)+1=G*rn%Fp&qMNSitVO=ZG_h.ARUh42-o(B=!ZV.sGaN4cU'7:-cAi.[d`W1%""ifk!tWl+L]%I5=89a6gF1H#*&QY%F-'7?*ISb0?",c^f&;P;/p0hJ"L;@BMn-nlNQm1k;R@a'Ftn>WU,=Y#Y'pX^EGr7nf`pMl#m(.1^5Mpq6-g^!R%4HUM2+ifKtUeAjC4%15FR6Sje#K,XPFV$VH6hn?5Mh.Chq"gVAhKOoL@;KAncE#s#kV">kq.0)L4a9[gDpaj3#Wcb\RY1m4&L4Le#6Kb*;FS$d5.0+Jk#W2i'"-1Xdg89C]HH@$unA3Mb#.%$[^Q+o!'O.`i7sM-]m6C9Y0T41*80d_u-CC5YD]A.Wh#uqJ\CWFQQd?#-jGj8X(Om^"?Mj&M9F&\6a97\X*\i,4Z1#>-AsVEBaGWr:jH`n.rrK61"dK~> endstream endobj 286 0 obj <> stream Gb"/l6)YaS\];a1.6,q;PVd6gB^D#+-K@?m_2q'COA-WF$3c%h+gn_c9NGmEG!n:#m_[uBpL_gI`C#&.Z4/QOoS>"9A;CD<"1HpV(K\PT'*YQ*:=CqaanuIEreqh"gUB/X2Y`1S;DQh=J8Ab`!PQLB%;Szzzz!!!!Qgt^[IJ,[(]!(U^=dg0<27.7e[cC8ad\ZrCon*^M'GNNXKShRoihFC"c_nN??tYnacl>nMUSJ!+$P)IX097+hcBfN*?*lnc=sZ3,P]ruB+H"D['mD$O5L$).VP@$BW!R,DqK*@r5&gpgpqJRhQR"H>%k:lR&?&g=29_100]F6o=&VnMCTeLM1ET.NI2ZElCgE>nAFF\Hg\n5)sX*s8/sJWC&F.uMK)ZtrUlAppH7n_J,@uZ'7A\E?!Y]eZWF;7&P)&4]'@DP!WYY)i6eN&Vqudh^!ZF9rUeR\e'=LG7ljIeh/o:(.'jiBmrCnO]HfSpBJV_1Qk!GJF#\\(dGh&:iD9J4HX`d4UFPgUD)36bhhgg8,,!E?+M(Bkc_(fnsk_G0jr66nXh$%GDQ[]<3)A,:,hnTQ<"M2_1.#c$E5P3e$_b;;-KleQ9jS`VoomaT=T!H%F7dCE(tSO"OeR9H,ggY?nml+rh%(!GQQt*CuUikKaNsa>IrU>tE#2i*nkoBO+-rLkEJAori'FMZRKXL7u/5%j+j=0*%1eAj2rGJ:&M%KJhg&\Ibn2`0Q?K$Eb*A(9A16f37s'hN6pNM,Z+g94Z5AY@GSURG`*>[A66'1JSI,r0`#ff(%BfZX$eMDqUM4]7QX71&'cp)%CVTMY[Ar_0)I309(Tpbl8(6DM0>2>,.Qj.(f7)t0Y5QcVf;c]_BlNI+?FX#N*_h9&^\#CNWpj[?>l1?6Y#U0Ge)8q5]l:)'4IQK+Id)Q%cS3mVSTZIHJr%-GVfl4rR))*WktNFE:&uu\5j=c9nR5roYS#9n7Wa1p<.Y@Pu8ct09g6(a&`X+BK,;WfKl]ZQ\u$aWj^^Q$eCck[eD&0f@nLCRSn0e"/BFV&TmR&M_G))a$7:WiPNUS`aikTrGl+V_oRp,[7\_$N0H1`e9;\0?l&+V,E?V<[b5+,5@k[DnR"-Els-uHJ*<.r7VS_qpY4fbJ(QPP:a`fKAN%`ud>])(./A;gp8tEt*'8>f[f9nE`Rlg^q1_ag[eBRZK%9O->&!(s,Sg,T$_.&p3?RT,B$P/>E:6csf`E0cgTFa6B#9jM^$E7QaY5O(FKf+eoS.fR9@6tuiJ1/ST<%_!D_E3>hp5AB_j&55sH^qj$kc-8C\=d5%2&p5$5(oB-&Nql'sMp[0>s%NII4]"34VhS!@Ao9#RUK/d5<@;#(0J?Mn)"An.a'<,/>CkbH/35>`hNj@?HmA5PR^c10&>.+p_O`.%^#&SWPH.(`eOs04YeM#ki%4_ZW,=q[P&`oaQZa2_0V*T3r!/<.9SLH[ibToZ@4'H7&bT=Imies'!`JYPqrk*,.-tgek4q`(43#;D59dI1ej'Xfr['T9%t*@5):,%PRb^Dh^`94n>U/,fJbQ-]h\1HYZ7F5_,H7q5.)+X=*7$Y,`gf2s4V!1n^Sf!ULc@,m*Tcao!.r4EsDUB^`C+NELh[@qBPliJU"`dH/@1H-Jrt%nRH)!.GDS*rHKn$9?B.LcCL5W&r@Y]1Oqt.9gBW"?'\l4Cc*kb*$n47a10u0P#M$>$c:*BgdoHM\u,Mafe!0:G3)L/&>Kc&aqMaRZ.FJfZP4F3-'i0!FA@Xps%&e-tOSO*bSkXD4s8%MWT!?SpF2"4%[$8K>k(Pr>;ktWB+Gk<3-^a%Ya_uPj),T:p'4,"O0d>LBpO*%92"$CmlB],$@'OlS_0+n^Vd[`]5nE<<8JOd:ML]JR182Tg,G7$(?UDJak*pHEC#'fbadD.!_.Du4I?6gG6UcX8Ii6dHN"-7Q%&-G%@O_E[8mM',\7kYJa4OTce%.NILU4GhG;ip1Mf3VZc>8qJSK!sp"k+%_PGbdD)H!YsqA]k&8c'qKlob;i&[V;2AP?LlBOmWqE\TI)a^4#nPn)$pSTMO:UE8cE:Um;^>UcSa**^"\OZEdqU6e`P!)nM5:;W*]*'U1S+r:o-^H`7hRH0j0(.G`[5ki4oBLM(COR89YE@S2kYF-DT,Ab6B'EABrdBoc6HhJ:!DQ'Rnr:qrR"!6jB#tVtAWpiQR#tVtAWpiQR#tVtAWpiQR#tVtAWpiQR#tVtAWpiQR#tVtAWpiQR#tVtAWpiQR#tVtAWpiQR#tVtAWpiQR#tVtAWpiQR#tVtAWpiQR#tVtAWpiQR#tVtAWpiQR#tVtAWpiQR#tVtAWpiQR#tVtAWpiQR#tVtAWpiQR#tVtAWpiQR#tVtAWpiQR#tVtAWpiQR#tVtAWpiQR#tVtAWpiQR#tVtAWpiQR#tVtAWpiQRBug"$7\u?q(J-!p/VI?9;=".>#8@?*m")a%6k6co0^6$ZP..'?"67!!9;WGJm:)Tn:p\<3K8b?\a!BcNYg)4dd68b:8]r"f2GA3`HX`C"n)ePtu$/56XEnUp3UiYXh+&"cl9J2qpdjh/@Y3\ZH9rm:*KBZ#"JSkZOb\le9Iq+6mLRp*iQ"S7Z(\P&ZaKmJ6q/Z"DR@hUK4jWFpai##DW'l]4)8IJRVOcak>'6m5'>NKF"2@FBlnbL-Ni$V2As9*[?G"U`=0*STi"C;LXOct@@(n%O=CNT?F?;YK+!i^C%i9,#19/tNj(R:@V*e.s2cP/'TLh1VX$QYehP:JCbA&Ak^oV:Gdi6ZporUaXLe%2Fd]H(3PTT*)X@4)1hEYcm3_#i6b7*rZV^GG`piK_-!\20-(>l]ODq#%^k-dk-Zpm?(R-jMM9VQ;S,)5$DOuO!L0;Li8Wd7RX*f5"=bsc)h(i5;F5P951Ytaonb%bMAbN7P?]AVOlbUB8-XCo!7Nih-*!"En.C*Ko[Rtq1U/i6-G-@8q$$QYSH5][bX5o\e1NOaZW4F,`*Qo1Oqt.9bR5me*m$F=Z1TM)%9cr+5(eTT')+5rqAS-Fa(L0ngL6mNUHN;K4pld3ff.9I=$3bS2WsUKTDE:^a"[_+:Zr&_BXma+:Zr&_BXma+:Zr&_BXma+:Zr&_BXma+:Zr&_BXma+:Zr&_BXma+:Zr&_BXma+:Zr&_BXma+:Zr&_BXma+:Zr&_BXma+:Zr&_BXma+:Zr&_BXma+:Zr&_BXma+:Zr&_BXma+:Zr&_BXma+:Zr&_BXma+:Zr&_BXma+:Zr&_BXma+:Zr&_BXma+:Zr&_BXma+:Zr&_BXma+:Zr&_BXma+:Zr&_BXma+:Zr&_P:g>HhQe\5ho19(]!Z.(^<)p3"3C6!-k;$"]ZC]JH>72G7(?(kQ1kEOmWo_@F,/^^a%YaW5>28%"LjZ;c&06(Dm.5FJkc=K.\hX*pHEc'a@rO!'J]#Jgq2?^]8VT3sAV$FFaJ^89YE@0^&Q?i0!FA<+4,W#/DJ>.B(+V$OhPU\l2FZ5o1@TF20Y8#*[,*^'5X+92,:?iB9^l-n&[ieFn:'6%4HpijLMh*:hr&!-]u,T1h@D1D0%2fHD&etGHdRa%_LP]f[)l;,0o55X\&h-%Z,4GpTIr9$CsObAZ7M)1@sN.2N>i"-:G["LO[DO(a.]E[25G+QaK/HK`Rk^A3LIBi-61'^IfKR)JF[&=UIji@R;/R9Us;.?8)9F&Y95FQq5fIJ`a,hbQQ%PI<,L\0)RpVur+!`fVK97ZWI_"6)lRD:@8`[L)K&<]kOJKO6!.oH&M3,9iW%Nh.[nN0&KZpu&u@Q'IU_%W--#Ce3/D(]XEr5BWk8&+F79'92MSp%?^P:(u"YktXMN]'#e?*&qn&G9W1q^&AW588O6u5=u8qcCCTM8A#=*,'\SO@g%e8Gj_+.mbPKFRFA)%7$\j<1q!F8"Rp)@@lD#,n*-aB2Se@G.T*>1q4l\M)"8qam/>(iVcW4&N'(>a[;enng"rCo\^Sj*^.VZO@YDPeh,:%B,#U_fQ/0t$F?e"keT%^4;&U^hB,$-F_9,7muLq:TFk\ro/]DV([NXYO2a(%f`1.O%.AMZUTof7AU=Nb!6!VNh-%r*GU,0oh]F/U?b;W/WoEtSN"Im%,Pab%CY(=BcS3m`!5'?/I&jPRU62Wi-F.1_=P867F2<&=toGZIM"CC#'7F2=3f.@iB#fem2Xp]Z1#W#Xr$#eWcg)>TT%D4?Jk"\GJq6G`MkCZ,Zs_h>r$#fBqthV9e#Edj[>+X5s'$5QdqfKkdG78Rg@kisH?8"/qT;=6f"T^Ao6,)(!dK2O^Bbb*rk-N/R>-hV'T7ZmNj^_)p(L]l'FhD-7([?a0FFrLICDY52r2TV]Q2.C[3+AN[J+%N2kA(No,uGUAHqX;Ch'bbY1TS8Bm%@;^R?n*'cQ:R\"4bB8?62O*8bYI)#g;nAu=.Q"&:;1DUEb.#$k'kh'ElP'uY$gN)Y]tE]^*OMO>p%SRK!r$R-EjgDpc-j`I_t.b93T[Yo(=IgmGJ!KY5Y-Ca-igS,:Nc56'I>_]ttckm2i/if-!FZd-;TXIJ%d%AXP?T'b.AaA1:6R-MZtI]+@laug+RgdbW!0Y#eH/GeWR>GHP$o'D]$.R?7f)lZB%!u%lMsXBjj%-^($:j^MM&:*.9;$;'W>1D4;uj$_q_iECJd0-BphHOF3HYXjbL?h\U.ADGZ9a)hqMpf5[2E,ua;\`b)=2RJ7US`*J(+trCM<\s]:h_?aAt^T%e#JT'W]UIdt)BJ`H''d,<3s6=L?uo_?]g\U/X!p3\bH9Jm0VWF_gg&YM1DSf"I&;8"Ah[\))]A0UDP6B#%mK/.]KWteUpADftCLN_%8]O;`AqHG\f%!B1Tt[;H4,H#q"OO9sR_#6]iat(#C%O(a22$2]rBuE,O>VZoE+4X*XR)`!pB\,$,6#%mqclZlHTGV'mM#!q9OQijd0?>c=4>W?X/*\qqlO/&J+@:ki/L)rTVFf-Zs&6&+BjB_9r!KY5[ET4of!sePfh>;gHr#e$k5POA;]\p(rYFg=Dq:)$&!eEiAVur(\:^8$BTFO'c5TP(PJ3*0*!-R33!:%?E!7ZQi!2p!\!)NnA!MBob!^IcN"FrQ&#QT#*&HM+3,665E7f]IiNrVu]*W_oD49@bgGQ`OXn-B#:i"5tS^`rj/JO]^="-3FY#9Eo=%QjeX*I%^;3q*CTFl3i3lG+VEe:C*iW2"7Hb0%kt4*P.*#(Rscj.@l!%!(IPQ1'5&q_rEJLa=>IOp-jCkFR%g_[et2%s@-bV'#^+LUV0W;@`prJtOjur:A6A]Qc06JE:hIKbn(2!Y6gm1tlZfe&[S/m+J^X%im^<[^Hri=9*Lf1sTgBe!QatnC+:2+$P)IX097+7rSHO#rKM5SC;/DhcH=-ET5'%,O=[]oD8jp1dY^LPuh9PH1L$$^L_J-o::*^H1T9>2` endstream endobj 287 0 obj << /Type /Page /Parent 1 0 R /MediaBox [ 0 0 612 792 ] /Resources 3 0 R /Contents 285 0 R /Annots 288 0 R >> endobj 288 0 obj [ 289 0 R ] endobj 289 0 obj << /Type /Annot /Subtype /Link /Rect [ 98.328 509.936 255.612 497.936 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A << /URI (http://www.jjg.net/ia/visvocab/) /S /URI >> /H /I >> endobj 290 0 obj << /Length 920 /Filter [ /ASCII85Decode /FlateDecode ] >> stream GasangMWN8&:N^l:nA:K+^C=;?ReK9e5VF-.S-Oe@@*gJpJap6+'"_Nc.fiM0ZTILhZRjneIb)Xt-n[tPHh[,g*H[N>Kr`g&7/LpD)X?[^6H%E]Y2V[G>Jpd84bt5#J%b5tkQ)D_[bOZt!9h*\T>)hpKis%fqYh$h-$@V^\8gZ'$Xe7ufI52N:c:n;:Y]*<-kg3ZD@h".#c\*PV`0mB]mTKpEWP-@tMYFuI1&!hs'37NhpM>tt#0!$8;JnUo4>Gcl*qGo:@U(+ro^J86Zp1Y@gE6e`'"28Hs\ieHeHAJUlk)Ee4mD>*^"\>$3^VP,aY5kDlOsr(V3RF]Zu'_HVKQk'Su0%^on@96*_mbi4[bc>(4g@JoUeR]ZiW%*!ULMXA>Ko9D`:\a4<#n5:*If8RD9[P8*]dRKhHXdFl]`9fO#.I4r(lH"&E$$AO*a[u)<]QfcGJ#kp"Z?u3LU-QDg.n=;M)CVf9c5Z*GU%.MSB)SrOZ;YFD`=?22p0q+Le@gE@bk7+dH@G(rd7JO`89_fWiC4"4888Z?+W2W?X;H`P6PW<1e,WL,RVHZg'[U*adtD1e-!aS&@60>f_QHq:AfYiTTGNMY8'U;qq=s>l9a"40%S$O=g!*7d[!$Fh^g_?)0hEkQ44!VkEqunb+9@sb"dAcO[X"Aja5S=.%KsA[4oTs6h08*lYAKsDA>6^)PLjDk\tn8"-,;Me[/V3!KTf(2?~> endstream endobj 291 0 obj <> stream Gb"/l6#7Ll[>(ZVB^7]J>p+^)L`rHt2PIHk\uKVMl\<$[7^[$UD@*g%^m/[Z76l.i#fNZ<'Hg:=$\OHI)$L/]:h.T61[tmj#n)@t^c^#Ioj"gP>7BIg%P@;N1WLE_PUo`gWH34Ert`hLiQRj>r]Bl#\X,*m[n?uMKFgHU+bUCn#U+j463n`f&4-XGKFgHU+bUCn8E-1gLO[*Pn2h[9TJ9r5Z3::kTL6*e2Cc9'&^$ct+IXH9\<55k-&!s]=KpYL8N%3]7P_*.h@/$In1f5:lY?FtCJjd0>'s8D]")a]>^^]49$p[@"#;4ua,89=Cbc'Ma_l2:AKg'o2nNBd@"%kkZl,0#4X6__c\]mE!An3cSD&>ICfM\j/%[BF;R,.b^%Z)8YlBJ_=HTX0rMQ3OGdeu`-q4uQH@<-n;6g&W],@V5SVl$>1fZB=);lLHeaHiJ2.5IP.SN1a\aql[83-aq#2gFt7hnFMJ;">>.fYgNq:pMO)KB&(dKsfk>,YPf[=:I63kRbo3luY;/NZF<=%Y4$@<]`K/:*UsXJ4??U+QC:mE#:>MnV=/HYKD^+(J/>dSimI6&kg&?9Bq0B+X;T,i2keh%L*m^&G$JM6FqkhnVM2CEnCoc_6m*i2+aK7,9e@b7\n+U7Kddo2'P$"`5DdVRde7lV'UMIN$Y!58bOA%[D%*[%Zce,`4fV1i<8PaK*P;o-d$Bm>Z"P#A3Z'0N!L>a+p1Tb5jp.oIJ+Q67Q+[CaDH5N>UXrjLJtE!#PTf?YFh8?&]&Y%CTBpu*D&S?Ae"+)&WmYk,>r&;,Ed5r_s8C!lom:'V>qf@mL^EifB(Y`Q597WnJIT.UmSAK)6B#hf*7d(fo1+B^TA4I)DX,@TZXJTt-4mnI:8NLga9mLZUdT`A\d*,)0)T*1HaA(>j(EMATCEE+nZL=FA#[.:QCZ_kFW%@IXe^VMJY\%>X(0L;c(kRNdJd2&r(^(`)"JBSmX-eSo3i@p",rTdaGQ!0rujaBRA*^2TKcMMATBZ7^Pn1BU:>W)HKLS(IJM!pD)?oL/g)NRemp;hf*7d(fo1+B^TA4I)DX,@TZXJTt-4mnI:8NLga9mLZUdT`A\d*,)0)T*1HaA(>j(EMATCEE+nZL=FA#[.:QCZ_kFWeXqq$jJ,)aJ>^k,16OKqo/^;TFbg+M!leZ"s2+e8,cD/WG$O`6n!9Z4Tjgd5a.eTpPohK(lEi7_"rj1-r#@pon0UlQ32##\RilC)!["&,TrDQWnGOG)6]ci*lj`-Dn3g\$%dRhqkW!qTQhEj>jD2+PIE]R36%S'>JA.)jZA)dTON8At'<)-`r!r_9rR\oK9d=W$(3gL41@0UlQ32##\Ri]h\Wi28g*MPHeZ7hl+fqrWK:Cbm*'Nebl5X,M/9:o3L)&%\m@*SR21RGbh%4en`Fj@Ik.(]SBPD;3M2,j.r1JhA7Mmgr%^%-;BZ]YD0!)=X;04#hkNf/4b(4',<`_jqPl?LAh'o`3HsQ6'qAUS:'P(&k3IYq@fs!:Dj\eS&_c]&pUaIAOT4RU`GQK!]]bjBr20Cs\?CD\lYrXArTHc-i>L$b_U"#nR7qo>V>,G5gSkudR&r6Zg)PKJVUd5+`+N\qN].3\8BuGjsY0`5E3;>[:W('K9pbf^N*mFlpo9mF<30^H]7T^@\6T8HDVd:gscP78d2V2cdALXESB'$4<0Gc\;@jIT$C&+kGN`cosP]7ZX#*X[<`BVZ"&0ZG;F_W=1^Bj;tQK"+`n6J5Hgr6"+MC9!%((X]scnYc4i8]>1n=-G_rnRj8a.>IYOXE&l89`97P^!Xbl5187sS-5DEKM:Vd]F8,*.*.[VYqtGj_mk_8MmjhPB5&fGql-lP#[obf\:S[3GG.[-!Ai"GN]PdReV;*i?m*nqIR4Mf/]AW.Vq5uI>@;;*qmW:TcV39;m^kd$sN2V\Mi`Ub2\Mfq&1c-\sDrN@^7O/4sqfR7_B"53`lU\Ya^=n^An%D&nB+gTUH*F]:`.I2s!)*Z2P6'Cs"XKY#O99,DG_#-sml)pEnS>Xtpn.gs",EfpPf8)m*n#LdW1H*UWOODE!lJ)pP)TACfiO1GFst_+A#N875gYl\u0s`'$HEOE4u_h`A39"iHHj#Yp*N9tUt6mgJ?KRe7S]HmO\Ds7jW!`lH-/ZplleG[DoZE7O7M0H?N*L/i@A1aFZ$3D]*F45?2D_\)E/J`4ri0s%D6d+l[GpkD.7`3?7/%h4B?eC50Z=Vi_tI)`0e<`YNPQ?r9^)NDpU<%=1#:"e7fp64>YIF?2Mf.@e%PK#;bV4c8tKfb0$>*CWFC^OM*^ar)Ai&NJA'X1r9;=(Ia1^;\@T:2'ie)\%^9ZKtp*/XVR(e:;5R$,s_$L"YS9Cg"G2W^W)e0]rnK9ntm,D+<7jer_[e.&!/P"2*e%,P&r9,L]P'VSgHHo]DrjS]I2!d;F5,Un>)?k3IUbhZYLppM+YKtObL%:0$ciLldHSa[2XL?(mg-:t4i4YRGs+AX2<_r*k[9&@f'NC_pl(F,)u*q:]ILRMXD6^M8'G[HRb@9D(=L3>;E\+8k:YKJVdA-TT(%")mNaO#a]J$9fn:;anE(?6%VOGR1dJ@pUi3>hH_rM[@JXD,lE9]"#)Q`>?fU9Mp\n97=>3W#E6*]:U6aHeN]l>T+SS4$C]<`W89-,Lr,B*9PJIAXZg#Q-:FLM9O@j%,P&r9,L]Pkb6,1?%OWXPiO&]=ksEot;mlDJo5"eb5REl?i14%HtLbP9/Hod#>[CmgQk4aHeN]Wo;=[a0>>n6W:q-WeNl^+2d(W%S[PQWYuAlI12$P3&F&4X(jUNpG"55iQr8nXK(7+grHYoL-nnXYc[EQ0s%D6d+l[GpkD.7`3?8f(ttfZQ\O%Rh8N1lkC#e-KOIlQ0f6ejCsGiY2lrV0ckJ49.ZJ+gd"jU#E+k+GMihEMor=Jg(od"kX28^g9ijik#2;_$/I!MGS[:?n]"iHU/7$mfMhZ(LSmE6Le?3^#/tY"[siR$a:FPJA%T]`HM@VJd\e!'VY:S^g:s\p4=J&hZ_X?0#1diK]9TDHbfm<$]7c.(LSo+!..!DMXLW5"W(Q"-pmH0JA'kBlifg+^'h.]>_'M\#fUugp4<[V(DNS<0#1e4!VV*h']0)H$SK5$:k[i?!.2NcfF*R5Hl$0D\,^kA&W6#Ylie250.90W?%BWH!pg(Z.)$(n(L2L(TErM\!VV*QYSS"Ipb'?gDuoZa+r&oAaE93;hX+3:k[gYo(q[U6iTqGq;f*LT#2qunT\d+c$]7c.F\\PmNHAiKC.c)];28XI&W3d;kF[6a?GNI^6_Y(2Jg(o$&:n=W&]Ug:@9!blk!"O=2]S81L/g)NRemp;hf*7d(fo1+B^TA4I)DX,@TZXJTt-4mnI:8NLga9mLZUdT`A\d*,)0)T*1HaA(>j(EMATCEE+nZL=FA#[.:QCZ_kFW%@IXe^VMJY\%>X(0L;c(kRNdJd2&r(^(`)"JBSmX-eSo3i@p",rTdaGQUg:@9!blk!"O=2]S81L/g)NRemp;s(S0LWhoO%JD&VdEnq\5dS?RE;!gC!]X+h=Bb/ddp2[^*bC\tfBsOmAesZkC8oVun2a@DkY>]_Ep$S?&0cM>O:br(r2582jl@^@SB#8Uj6X109#-H)5%6%nB`ncc6^P>,uZn;f$Ti@X9f#8]CYGnhiXQn`Fj@Ik.(]SBTMe2/M>GTn,(61?l>q]>*q9HG"iJOKm#G[5OMDWHdgqb[elr3re)ecM/]5S]K%iF$V,*fc$km/esO8!6K>VhJ!eT_8^!d??U(\Z9CNU*%mWf/id9gHIL0^&U5=7/q\dh3\[;hF>ZU-MK#*:PpbW"h'BpD.t/r,l/V>i'b@u57+..?e0^:p2L1lf@ob.2&keFY59>W4TGCAb,kHF%\CHHC)^?RQ_PE7I"o*"H(Q7O2+Nb0>*Heo,<2ft*>.EpCfY!8A5qKljlQR*XcT$dYp>0#hjDmUKAs6&[4[Sai&&MUSe_AA2$b-XtblHsP#DP/$r<&W8kYctSgZZ,u:Gb!D1'Rk3.hSZOD\^@kpYDDRnUbQmr='pWD2"@("#rmNL;Jk?LI`a_Kf!UXoWjmBd.8o6O`4Q#S0),WC1:X92]a77i;?P+bZq3b'W,.2^hb5D1mbd?hhq/WgrIX(*Xff,Z)!"2fVS6>>7fri3REfXh'gJi;3@lQ=>0eE;h;mWlsk"[T=5K^t*\VCPA(oO@m+!2AV5PES!2N0&HahWnA^(WXbU?"XK.HPq$T)/e9j^lEqOV,QElJWq2OLP/^8,\_If2E/WTZOXnQDa[EkR4fTu6S*mJ->s7StF>u/$"\+a#DNGI4),[^+/a"2[Q'h2FZ=.X1]Y@,trI_'M\#fUugp4<[V(DNS<0#1e4!VV*h']0)H$SK5$:k[i?!.2NcfF*R5Hl$0D\,^kA&W6#Ylie250.90W?%BWH!pg(Z.)$(n(L2L(TErM\!VV*QYSS"Ipb'?gDuoZa+r&okXYSUPp]q>YMG6.Dh$a:E]U%g7U?>or=Jg,R9meuXm&%,URFZ9NR_'m*$cu)9o\U!f/M_Dehrqq'/L-upuOY40D?[Cr_N!8U'7%00$rcnJBrU7N$^32l<$]R[hh"`VMo;.47BhWh2j$O,?!LP^]$+Yq0K`Wh%9,oJ,fE'?[_Ut\)2X=]-3;h7^Vdbns@,hc?I!THX=<-A-8:Fjr86OO\2HN=')fa&g:pV3sk?BTE"iPhu2teEOT_mKfkJuX**LEO^lFlBf@;(d"lk.+8k%%LCYKHIBMB;ne>,*6R*e.W'_dRKW%6_,(um^,9hf>6R*e.W'_dRKW%6_,(um^,9hf>6R*e.W'_dRKW%6_,(um^,9hf>6R*e.W'_dRKW%6_,(um^,9hf>6R*e.W'_dRKW%6_,(um^,9hf>6R*e.W'_dRKW%6_,(um^,9heSEVT%^4*U+7f8KuHlqqX6+XCO0rqbrbTMIcIjLOHF_^EUsG[.jXKTKkerquRTHhP,A_@*RjI%l#Vgc=ak&ON52(LMQpGOOD@)CXLTG>GhJKTO8pr:ogFT77n7K[7-aH:tk1KTIT[/sdk5_C*L[boqa.P_k5'(t&-R\9:4F+joEDl-i1YVP^5t)aXge/t[Xm3AMe+C,^eW63na14#Su4M]R[X>BiKU,@Zd_i@C?o'B1Rj*0S^.RLj+gk)bO6e:]eS1l#TuUF*o^U,aKo))WS_'$VR;c):qgQ:mPsBfA>/BLY]%+bUCn#U+j463n`f&4-XGKFgHU+bUCn#T4D!F*"`m:$Zmf#Q_-Bp0'YPmfot2SN1b'gS_7ndk\p;CQFR3,o$!Ye%DliPL:sqt;n:bocu\a"oM-pf@CVC89/^cTQC6d'7*$`(q-b(UgVFuk(=L]`H=^^s844Gd;H(4i#c8s7MBf8N7:B>"o!*_C96rqL!FE3KT=16bXcY7\mkXsht)T+MZ%,)bW0@O@I]@3Pn;>$4u7rs9`L2%h:!M4!WA`/'LC_1dmi4,1&j#&h?U%U#+Y<1=_eXA.XjP]>@CgUFS4+GAr&Ma%95,W$'8q*AI'3f/51#u>ciLdEAV\pF$a\-JF%[qB:h)GrIOP6*?^0#q>p$&LFA'I6!I*naa-Ve3Wc4&T;OOTSWT#U*D@N(B*O63ttjq$\F"&4120WDn0[Lb<&K]VX)\?+VG;7\arI+C*1J2G6\9iFA()O=8KQ6^[dt[Gcal:\o:OYlF_$qsljIThpj.i1=rIBIIaf#h_YfK0\Cm(f@WmPSZ&LSihk#nsGNOnKGZXj'-eoCj^UM7O5O+e:@HhN!KT4;CMH8lG:#%_djEfi>>f3Q-1u?%j!jKl*;a6'^VbT/mNbHl6MR/dr>d!?e-,_T8'#mo%ObEjm"2!!bY^]!Ph"Qq@'F)YUu:jNS0S)l[*)K/a5fOL1ptp?%1"1k^s]@f=gCZd1h!e>4*$O\D+[.jT6tZNg,Y;mUEQ,qjTBo:Q&I`uU;mi"L/dEB.jPn\g5o;AQj6S;o`d,$?.b&J5Wfi&P`q.>oSOkW:s:p+D]B`T0AH"YuAg9LP]utd"oWP_BXDe.*TpA+V=j3n>$lIT(FMc8jH`0nje]92E*ahIufBs63n`f&4-XGKFgHU+bUCn#U+j463n`f&@,eN\o^NU#ms'VC-nF:R]hiC1MT7H-(71VRSaaX/C>H#d>XM*B8Pc4N+URm3(l)`A2L&.`*&fp,bl57+jMi$2AV2lLg"#-63n`f&4-XGKFgHU+bUCn#U+j463n`f&4-XG]7^+gD1QJZ~> endstream endobj 292 0 obj << /Type /Page /Parent 1 0 R /MediaBox [ 0 0 612 792 ] /Resources 3 0 R /Contents 290 0 R >> endobj 293 0 obj << /Length 1873 /Filter [ /ASCII85Decode /FlateDecode ] >> stream GatU4D3*C?&H9tYYkZX7$>]+2]r*2SYIU];V3S'D[SkWd"r=FPChik*qX6L]0F(lo]t^\H2nTZ56*m&kSGAU]HePCS7*[6,73Osk59)sk96"@&@Fq35aP(AZh-RPSCgXPH<^dk#nreHNN_8F('Yb=?nr)Qn[DT$]Fu9JL:I#>Y8a$@,,bSDJM*-KHTq^QN_ciY2U<0N\+eo9e)s:Zrch7SjYPj0ETS>A_8s1L7hUO6J\019nQ%7aU"s+8-$\-4_qhZ)j";1C6<^\`O(tm!;enBp!TUQiCs[E4On$5V&0sYSh;mP&9Y,,Z,K*mXrlYSGPa2gV14*3Z:P&TDJ,]BA\,%-ZBEV>*c.0UfK]'AegnROa)Q.u.kA^[9fQA>T+rWJOh@#GGleJfh_d_*;A.j\Z(Ia!Z8=BVcS`_pU'D"27-B)9S`OOs>4CGa!fW)LjM_dc#Yp:Zj0=.4U)h[s:l@Gb*EROGH_3T"@DX-cXs-iF($h6>F[$9;u+7)mDF,@j2L2bf/J8Q9YeL+\a(1mNWDM7LW35`:IA,CB&4QaI-p$+Mr3A7J*rYgEglJ2Vd/K_se^%ZR/WKNjM*UlUjt.(K5oOE_#Qfa_`U>JuqpDF<>`(Pm,Nm?,'^&n7=M.DBlZ1cb&+l/,,l.+OWI9Qqk=/8-93)7lITOLpJkAVT+NO7pll:=`cS+3r#2o*[oB$?DYG[S1RX^1::murGG6NkOTLj,2+hLgo?+`(lemcA;hNGNkmUrHO.oNoFi2f(e)e.CF4Y06h^')!'k%UOWQo.KPBG)m\VoJIj_oiB3_2j8+8uoF"fQ%)j>S"G-L@."CjtGD%fD5Ca'^RSD*25g?N`cZaa0dFK^cL7SMHDrJo?\leH;]^?$@;?FBa)rl/1P_:g1"*/l7fQdG/&tG"8:"n?XhUr3.#n)I/7G-Xj:4>kWX(a2D`9)Mmi5staZDtZ#PeG#1'29H1FMZ%;gZjJALG7/gH,mbYU/c[n_.UPF2_TC3aBpF1qqf=2,RsFILr=q"\6N+l[RnE^VF4C"nndMLsbFB4:6?^Vf$pl46_u%.CepTSGItDI23%$;F4Jhq)OOW%O~> endstream endobj 294 0 obj << /Type /Page /Parent 1 0 R /MediaBox [ 0 0 612 792 ] /Resources 3 0 R /Contents 293 0 R >> endobj 295 0 obj << /Length 2203 /Filter [ /ASCII85Decode /FlateDecode ] >> stream Gat=-gQ(#H&:O:S#lBhd=^!(>>o%:.DCu*M"@\G);P6;q'T`m_+`m'2)C6bN#O,AjbC)!S*bLFOe2*M2?%mmD56.#`k>1qr8s!rr4%WI@l)8+5L.,.9]?J/9R;g^?J]>*TBkW1hVZGiOL/CjP[NV/IJ2?#D'IL"TTi2WSI.GKI-[ON`@hrs!DQ\9AX:l'/I6Ia%,dr?H*;=c7-j7V89lfO+coG2%MkN*U4e)dB7gpS[?L\YP4>eWce)Ks&G*V%qD9QEF#3/%-1>C97%@EC.mh1_\Yj`LSu**cTEl5,J2Q@7m;J,sAUDF,E7ci9.S3Lmprd4cYD6#"Tf8W;Os0oE&Ztr0RkAbslGR#0,hQV7Z-N3=ULZm%+VDK81borETMAR;JFe1HJFn&t-k'8p4d+UK\;CtN+Y?c(RcVWaO.$mlS(I*bL[l-X[5g!l]8QPjjKbNF+IT>0boMK4P,h\s,D,;SDg]AR"F>@&?%urd!i2LRG@qZCnnMCqKTX7VIH8WpZM,t;!"3f*g+cCO"$!=mP]@)H^N-?a!8cN.E'O^osadbUsCS`fCLQGkcI'6l:&PLmPZ8Z=klJ7*aZ.VO,OWDdHT8n#b/B,2)(Al4K0u-PL':.o(hU.`dJ]A?4dG=2BEE"P.MHi/:8j_ni<[b:6uN*-!^kjcH'$Tk[D\Pc=n"@m[0nSKM<+(jWs:AEV"4nI5SZmaC[*YnudbO"VJ_q9#%`tE@g7'6)4XKVW=!E-OpLP*,VkRZ47^&,@'q&%uprm`5om_cBE3fD@sP1`?t;G,gTl<%m'I&.-n42OCf+((tpm?-_RCU8grg.H\2&URjj]`46O"ep9RL/*fK6CI3k7jd>?K"#A)M'&\Q<\Mf"iB9N;S7Yh*'e\:o%,D-@ra>h)WcOiM7:Qg,at/,/c6[C@+\MOG&$#'V4Mh8tM)iU^r!OBPkc!CdL]"GX4YR&gsU:JFk@j'o=RM5-7LK1a_Jm5:oZfLeE"c-B?>L!kJc&(s^L_ObjE,ElUWOM-AuqD>FPkM_0bM[jZ\$^/S&*mU-+=LSVFTWn,H!>&np$-MXRc73X?G(JPn<>Qd*a75jkP<#&h6nNmi%9tr_3Y^.P'=D>p<@RL-K6_BTA8o`s"N1]<@/E3CRn\iiS`Lsi93"AG;qNk$kjPQI!X8GW?X)n$2AMfX`B!G\Ti4qNl3B!@Url""t].=-p-raFgXm$a4Ge4]6FcS+l>suQF(<[T)ken';X=?:4#W/[qF/QOC'&\j-iP+8SP7L@j50\7Q_F<5i[H,mIVsI%oH>5m4NR.\Vr^9?q;Lt3K8:NsGe!@K?Z`Nmmo0a[Zf>_C[Cm8&pdV-ZG3P'75\]gjLO2ln,IXo,IkdDAdE8tlmqHKsEGj)97k$pG7eq[=8@P4X7Ci@;d'If.to>p*c5?3sJY+6>>%E(,,i72eZsVV;kKL/EWkEkp4[BW^g2/[\F4]5$qjQ*spcSO*_d-KW+O7noI-r1ZbrY;Fg+?*_+C"guSl,^"pMKZ(6@r^9Q&Ka'H5*^J)r@[^E%K]V=~> endstream endobj 296 0 obj << /Type /Page /Parent 1 0 R /MediaBox [ 0 0 612 792 ] /Resources 3 0 R /Contents 295 0 R >> endobj 297 0 obj << /Length 2682 /Filter [ /ASCII85Decode /FlateDecode ] >> stream Gau0FD3L_Q')q<+iUW>)<+TScKRg$pWbs`Jgg4Qql=um%<+YY%g[^_9$kD4cbeLn.@+3ANH.gBdLGdFSX'aA;>(XfFD#)qUF2=sRC,`K]:GY2Di/c34$goJ$B,s5F@\0?8p7a7>/RH@SX\SfTYEjOttse@SXfL1iS$JIar[;#u8Oa1"BDr;A:6J62gDBKQrGsR.%q[j>!d?G#<9L@JLE>j1+#pARYKNiMZoU*OB6c/2-!L@f_.f0;R>no[>OK_<^Ep%UpuXih3uZ#E[VnZh;jiOG:S4d`DC]=He1?%`_+)<3H//Rf+tIQnLIDTr]l]I[Yh+I'/]a8`IsjEg[.^4=5J::\B)uqq(1SF[6B=rrCl,0m>m3f-LstZYcQb0-js+<=[@cE#b5?UCa7n'qies;]@>&A;]-cSL^\,n>`kp[>Ga`Q*05!$L)o'IJnYe50[lQa"0OHNOl^t_r5?jnDTke`#4P<"c`Vf3h[d*IP:IOHQVd%A=7A<]8Q*9Ti2M:@S]:)jslBG%e\]*aN%^'l2T%#DPt=H#NRdj]]%rD=M^$a<8PMP0V/Zk.uZqTQLW5k"Dmo;1*(51C!hfnrdG?5u.>I=uH!E*(+Ym6C,I0%J:A5'QL)J^hhmHT3./D3O%"Ok\)cu-\2>"Y4aK^>P>;38Yl$XsO"fg7IOQ'44ei6)64W[$pfeNgkhU?gSY,pYJa%GC^nP->Kh$$3`$tY+7'+Qa@(%UGE,n&J?EBKmU,2VdI&uIZ6+RI>*0'jC?`L">gr:s:Ma*ee;Gn=od=@]H%&s\JfiBnKJT9E!2GH,nD5O(>1KEZYV/BFngfKj:^gQLTgU;+("7$7@,CSH'L4`^E#FdH?8T.4>iGZC^do#n1t\IK:E2a([gT>^J#!GPa__4^u('GZ+-&o=FR9bkf\I*/]3[fph8Jfi\,\XZ6+^s+3%E6/fZn#o+H'lca2ArjDm244;DSXJ;6R5We>AX-Jl;juu2s!?,C1\5F%lZ[K51CFuIgV$r_1IQI1bn(:ur@1[;V3j#:C%lt6

Y^k0Q%#f93QZ6YB(;csNU^\hmku\P[V"r;r:L%Xhsk4"c@HX/5RlW\3MdI5G=EXK2Gp^#n<8=9d7'H3jF9nonc](XACH-\4/2dYt=tDNoRdSD8sUIFU+LXu'(d2M!cJLJ;c,$ara4=m3hh;me*e(dBU_=Mq8r@_&23`L*ALZCr5EMLUJ02[FYmETLFJ[LHJ>D-0IN%kGO1#UOX@"KK-ck8a5aguo;d-j)BU.MBphU[,?_5s`g%sL=j+*_*d%ID]p_EUNN1R;ppnBkUBRcNJfK?31f)O8>oL9RF&44FYb-*\*a81/R+X0f]Cl:+A)&W0'1.3cnPHL7j`S!]#]3OiuR76__(GJW;dgprP[Y?(_`ij<)Bl[kr%e[:laK*&cXBrBA[aABJB#:O)oEW&;@hRntT\7t.6dK&ni4MdBKXKL:-HEmG7o8t,\N/pHN=Hdq&fj3>B)_tgDMkX~> endstream endobj 298 0 obj << /Type /Page /Parent 1 0 R /MediaBox [ 0 0 612 792 ] /Resources 3 0 R /Contents 297 0 R >> endobj 299 0 obj << /Length 1901 /Filter [ /ASCII85Decode /FlateDecode ] >> stream Gatm=hiF9c&:WNO!p-6p.IghV0XPPi6qOD:PbqH`l9h`c?Il_]b5q_5>u"E"pC=qR%grc8H7.MMlYl\UT)!!bH[EB9rnpo.-an00?.meH74fI-WTA/Fjop^rPZkO$l]3Pc"F4muA>1&lFd$?+IJru?iM1br8S2+im%.F2>.5Ti[VJ`@gW"D"LG1rkmCnqG^9lhPV1icV5'2!q=`cU.]6mFpr,SR@;5,u)e#;8jSiG7r__fcO$oR8jI=Olt_kBc8S$hOa1KbE)',ZD0cD1&0/&TrU?7!k^j&[kJDI6Q8eRJh5[*81N_ecUriKc!Bb`2N!X,[j.n*nONfbe&+60"]VS@?R=BQ=Mm**3M2YW-k69037DE'3-hmXQ#Z?\5QUl)%qS(qerc[sWAWqXC.Nh%2X.NG^,1Q1N98)b;g_7U2,=[cI^Fd"#.A@03X(?j+7n$'l`,8hFG,de/C2&qlr0(.;8r*>%+Bf!%gs:kLGbPj\52;^C.7mRgW,o`[ZqL=%-kq#Pl=f,eD6CX.8+qH%e3]+R$S,KQefHcmM:`i2jiV_AKDFYds(_:+p=Ho4.lZ1LC"$[*o3(EbIYMq7biOELu/QibL]Uj#TVhXNopBe1c(IWF8bSPD:\i01PHn)ImCc6/:$/Eh2&+TSN.V)t1B[GK'1nNbT2Z'#>\8&Wp\M0Gj">aH%M@Qk,R:]$MXPfsj(Tb'5B\F7Xb&4k%ZB*V=;#eij"0kOUZR1F.q^He9T!-gB")S\\.=\s8Wrf`Tbi>4"#6=3c*1j#lU,LDi6?Y7rH2)8SC3MHf(?/HII'EojZT44<;]:mB`Ced5#d,=02_;'Rn*cEN`U"/9K7l4%>N#YO9nrffgaFi"$fLEVIh$m+Jo?[YjK8u#\^V2\+pHu27.g%p$*Q6Q+RKPcd.5SIU1Sg[%^a5Ik3hm-K%f]a_bb3SFP\^9(m*4A:!-VZ*JKl5=]cNP45=I5RjDq!#gXJ02pm$mQ_%co]7C;$IClUo?[e8gTK*mo93f'Mo'ZJHDjBKO`$;^R=L3$_'Kkb]0g7Sbn72Dh!20HcbF+abl/d>ZKdGbdJ4q'>RHkE_D0gp4Z>e^n;1e]Z/+,2b+i2[#@r!QXo(dM5hjZ5am-riXhlhQ,B!S\#j7(G,&LEtH,%ia)B;*b;MN02AS0rrFqD&4l~> endstream endobj 300 0 obj << /Type /Page /Parent 1 0 R /MediaBox [ 0 0 612 792 ] /Resources 3 0 R /Contents 299 0 R >> endobj 301 0 obj << /Length 2812 /Filter [ /ASCII85Decode /FlateDecode ] >> stream GatU6gQ(;`%XmfL0`3a.[`b\?/rf3[9Tf\pA@#B3mp^iB*c-&2>8URb,e;b&pWHI"D,Q\$92C(pjl'XQMW>p`nu'O?`Fh?oJd&L$c!<#M^>lO"ro:=1JFC?#@?F5qO1X*F55`#Lhp(SC[f>ijH@^i9B90fZK&j#k"Qgn:;CIDUb[6.40Mc>O^;e+u9:EA%<>Fc`:uTsrb@d#Unm^E3mIZKPqa6&YbKK'"8,nYk[bJu(?6K3YIJ*!D)u\7Gh-Y@,9,-P$*7jB'cZa>5Hks^V$`0Go0OcabLm^lbX>%!2h7rAA4eC"EKKk!)_:WZkIa]SR/d^KT`G8%I+ES!u"14(j1()u6npiW^XLBE$YgX6,U0/<>(<53@httk(]da@GW)-&*aRfFE`UiEtO'*SRhE0!JnCVn@(D;*\iRr6q$;MSg>]D)//,fFZ$4ju&>)qlLRd#S+q+G%^m4V9,JL5u(UP=ZkgV1p#&VO5@d;,K7!L$4k[s@[0cp"-)VIPL5?#C1T#)7a"GcZI)aE5>6br.e8=m(.L`Z:r+_M0nue_h0YY)FU&_NF!'KX7V^a*CZ)be.Kj-,c(h(*Cj:-YH[_MK;??^sAH2nbc3h_S(pDCP[^-d<[P]@sIHo4G'5EJBZU29NJQBn<7!nQN]-ZH22,:NL88"I24r-41fn7cRp)'hIJLYr6sbs@p6RARGT2Oa&k-Cg/I]e?WKgo\9_;PV$jU_9M+q`m`dfKV!As]>j"1IZ9]d(7g_dB4I$5sV?>(?83Or<9o\#!%ak.=/U`aM!%^$E[LKLXm;J9X@&OGQ[4TCj^cTgLD-7sE'WJs.G*$,eJ"T-gW>7US&=N+Z.m!\f"ESqs2nUpsiO/ssb"Q*3gTfg8FMY8,3KFMk`598Q5m:XH!WtSVmO3NBH!iH09HD"^Ei[WN^]*e]8fLtKq@S:nsggn+0"EuS,^8dK5L)Fo.jL[$:.W(lm4%#f,l%EEUBDT5[$*6am(nn"8&_o=eB;jP$"]=ge@CJ#2\7l:#lPZQhg$3/u@]F&dG/IiQ'"R62CZqBlUh(k>C$CBhZi7P^e#[l*:eEmV0:G;8>OM5CIGLb=.D`]qEThUO\I.qsRUZT'QZ\-N"i23IFDqe#3H"^`LQPTfP!3a9WLOW5:#"E\dQH@6`)jKHS9duf?SBs+?U)91j-*V5/gPu[*UJV[[$jLQ)"'iR5`@ZhG6LEHq_m379lF%"eiHr:F:2Rdh)<\/%e#2D>mF#X2kg6"%cGYQeEXU>53Ir\oqn\Milc@o\'Qe_8--qm[XLf#iFCk$gkP^30J(%;JnhZ]@%D6)PVgL0!6CkFJ+inA=X20.a0VE+p)"toP+6G+Pp0n+*mEo$[.OmfTt?;HK',SS2P#&_p"SS&81U]$4uq]?4>F-%]3`X_/CI\uTXqP1$Ul*bF$C>F4MBNOKR`";B/IB9(kQ;K>WUB_hMY7DD?;(sIrW@iQ050]k?63.ZZl1tK\Jn>U`OtTNh'b/+5+r\_^skJ*7==CG94hsTD(#on!(SpQ.q>sKe=ih/Cmg@GmG[hVROVL5H*QS7$gnWZTq6'OpQU(>O6\4-5tV(Xa@HJ":*F\=/7QafW/g?mH#2dG%E4`7YuF%-Y!=T?6sh,@sllKLJ)G7fme6$beah^/MFGcQ!CDdo-K!Km"NA;/,brm<\%>,T!5@d-BQN+"X])VoG3kQDngF=M1F^"C]_H[ofF(&N1ZE==MrC*`I``k'nZ]fn0qWtYl.W;S-u4dP\bKOr<0mNfDTscmNS(?pATRdK'khm[Qibq6hJo)L*)`I[FnV-H$AUV\UL)dmi[fjObN]Red^A%(bjW.21CD;npYqR4lJ>,eY1%g=t,Ys"^I/^LAXk6Kp'Ca>j!d4RZUI>^K+#.*S8@SbpL]V$b4O@"hOpE1L0k^QYfoV;a_6Z-3#]R]:qFPYW(j(eH+taU>r/l]DhtBHWDK~> endstream endobj 302 0 obj << /Type /Page /Parent 1 0 R /MediaBox [ 0 0 612 792 ] /Resources 3 0 R /Contents 301 0 R >> endobj 303 0 obj << /Length 2143 /Filter [ /ASCII85Decode /FlateDecode ] >> stream Gatm=>E>7S&:XAW5l8uhPWd4#^k&MFRV\0YPq'2!gH7<@_"R:NN=?A*454-"iFZ[U(egr#)k3C:cCDFo_nMPbmb^#?(X0>Ml^;TQcF@H'5AiIgSnZK(>?LT1nmo\eC)5^UXfBO-)F\?P[YZ3K,#K#@Z>6?H1AR9X\QP?ZhQ*`-h,pr=`5pkRnD&CoRH5bd9_0BenuR!*1Ea2X,AVHuc!3k!j68bkGDCj/:N+/3\e[DHC`V\0oUb=V=,:BVMRg5;?r;)":eaF04.fc',&MZg)a;)IqloRG[!f-ipfk5[r1?[KpT2]hV)[3Ee/(4!b/M0U/PsdYr6Ib5[$6Up.*_5/(Q*-jm_:*9WddD2?l4/W!(8?RUc(YEJ0II:&QFG!>dYZ^J#T;!9J'VtW!W1L+1rbiY432=j(ea-KJJDeYd%T->-!P1tI"/_J/_:D:aNW=".Q0WpuHj+h][N/2:Kgqo'.GF@JgaWF;KE#5T,`/&GOgU[&4jsDrOZ@$sh_TY8Kgl/S&6fCR)2*q)8BnrD;G9EZ`ZrG\'"C%`Uj"9"L_p;U"4i=1*[pr3RAi;(gDo"VZ?NsX8=`C85rmaj(/'idN'Z.ThT2C`IHX(U;nNJt:Zg[Bo/Y.!P8)%WT=U;?%;XBTO$qY*R+^Np0d=a`K2G)MaR>j9UTnL>M;8^oP&]b_"PF7nP(aUo33Vu.8LbC/h$2nkP%u4gnYj-c28=g>.;f5$1jYE]2E*O7LHsOW[1nmbt#kn0K^O=4NSm/`20,r@'ttf-ArP7mkJpm0^&i6=ltt_g&\W0^L9H=r-daa-HT?5@uM;\qh+rqW2iTa6VX0M0oW3/Z^iA]\?smK^SOq9B9C-U\aJ!]]:Yh+PYO`3I0;!+7e.`Yma.S969=HB$>9p20f%"TVZcEVAWO%\l+_ZUXMt\L#2qK9R,k4c5,@#5oB"_QVsh_mms`*UL`B@s+hkHA3a0)9!2CGZC.(">k+8lFLUmZbF`/MHNk68$,JgdS6i'#DOKN;_%piPs+1dgF4+niB=BQWt`@4_iZNB)ZeJo]$"AagI8P[q&Y"/TjNXJ0+oai+o"GX8p,4f]K3C(i)hU(5U/1sr3)(oeBRIQORl$OHIYVAIO)ZQQpH2!i?p=r;OT*Q(".9A.53;:lk8m`nW.;0I!O>]E>3Loho4lj/eL=;FVk^En'G9QkhZ7>!Gs&f~> endstream endobj 304 0 obj << /Type /Page /Parent 1 0 R /MediaBox [ 0 0 612 792 ] /Resources 3 0 R /Contents 303 0 R >> endobj 305 0 obj << /Length 2658 /Filter [ /ASCII85Decode /FlateDecode ] >> stream Gatm>D3*G]&cV3*+o'LjkgJI[?5DpV81lou\1;O>?;[B[#Ht8c(#kK`8RClaq[Q'KT!9a1AX`[V/^H3mEorc-;Z(c(>C;P6(G$!_+(o$O1ugk-IsI-1n170Hdl\*-?\3dbr3kBuoA]"%E%BoNI_;Y(&!*3#IsOrZRdI9R&H!ocs#VX[8&\GAPV=8OdVns)G4VV/U!7L7lg:,mfB_laX'J_:7J$133.hf-p#U=e$7:FaPclKh2UNn,-QF4!P;:4/a1Z)[ed6\o:icWeb%C4Zgh&o\i1V%:acUDs#ZOS,\+%rq2J;utg'PE$^YK_Zs&;sT;$m=m:f;eEj88HZT0r@.8,\AN*P;Q5,Sh-au>L44L&'X]kEEL7N,m4ZaCN=jP8\S8KrMoC.[BD&]bfQjQKrVNns_92%W;6QRtQfV\K[BVNlHllu61'oi01m>P\3qp'$VJ@=6rKE)24$+A`:M)7aqaD@m`P6m!oijM=gUsJSA[0BI:*c-!KSc0hS_r+#q6aHZ]./OeWrtDdX:i`:pRIL?&OpUs7M4[`P`AYNYTgRElRenip/\AFAQsr41sBX/No!<@aKU%![qotNn9K$-?hLk@Q7s.nb?S+*@`cI6LdCXqZH5"3^$Bf[%@4bBEt1hI[6*NmoHhEMZFC&Bi(Y=8iDKptbQVF/e>CjmS@D$=-N)>5feg1U',@Cm.jM;V4-&l?>5&!;KA>pKS7a)Y(DF"G9;-INU/\B7`$31-W]1gdE;^R0(nTj2^j8LE[LX4]ImZqtFMG$$mC?CiVZ^a3'QB/OKp-C%Qn=G3=1=/=fT>ER]KY9M2<<>LX@oeJN,7d'*diR0WNN\Tr5"kYfd+apXSB&l:ibZ\"emE30tK8^F,6!*$u9IKnJdg]F:LBkXkHaT&:1a,ELHHgPCTbkA)]"A&-GMn-&B5H\!/j-KSafSV9(WFK-^"DT=$(T][&qjUDE9==%A0*p\#di.uu!r$EnrnXBdojYm4n`!H'B(??O"S(G;cb5j:Oqs]UJ'5W$KJFo]#^%\Yd#GHZ(,Dpr\f4^?3=sgJDO'S%NXk\So_GYuXO<.e(d;@pY6i;.&[DX]t#/m/sM>>#`^6lC@RoXKil96&2uZOW#5oNZpMJhp;9,dKVEm~> endstream endobj 306 0 obj << /Type /Page /Parent 1 0 R /MediaBox [ 0 0 612 792 ] /Resources 3 0 R /Contents 305 0 R >> endobj 307 0 obj << /Length 152 /Filter [ /ASCII85Decode /FlateDecode ] >> stream Garg^iR2p+ endstream endobj 308 0 obj << /Type /Page /Parent 1 0 R /MediaBox [ 0 0 612 792 ] /Resources 3 0 R /Contents 307 0 R >> endobj 309 0 obj << /Length 2051 /Filter [ /ASCII85Decode /FlateDecode ] >> stream Gat%$=c_;q&:XAWd,P=$(m,FWX)D9c'-p]PaLVhn$>a0U?9jA5q:71,rjm0l/*dZ9I1gcUi7?`%pGA(ZY&n.05DnN$MN]l8^YCt7IX1V/qV0_PXG,(S#QUQq5h@/CAXu*?Loe>'qiDM[5*TJQ$Z+L8Mm>?$e0RE-E;;'Z'bap0hn=s?AN5scb_OZbj7'\-_f$-AnBBjm$?S7`64Bbo+(U$QP63"%T(P;\Z`RPsPMp+tB=%KECTCZbBX3Nf;&u8?SB&<:M$Im1f*rV8r7tL9j?r65>3??+d5EaaWs8h*&ATSUrWa1_g_o:#'6qMaTV29"]ko*#8cVoB,7moBu@8NH/dBXq)!==/"<*;\/7&ni)kWg.+;^#OI"kElFls:S:FdP%Ya,&2a'kO(K0O6*$k_cJ9k9Bg)IN94%p[MSQ$e=LBaQBV>SEZ'?D/AB46L/H-D3m5jgY]Xhdg%MhePBnVP1(((5$X77Q;pNNf;28GpgY'l"_H=AM]n9F;P`tKKQ+;smtc*4bZu#CA`8YP":Yjr<4Abnl@+nqc;gRElO6DYS.Pe<:Lc#^lYl)2:#J@ekBPJ`j3?$K!lQp=Vl*)kunDuf+)XGG,r._(*QL3%>pXSbp\:?DA!t#.['sV'F5L0C_kX0aj6Q^2[(,.D'/p::,DjM%Qt0Cl/VOKffC?=>V/Wk]\r&rC-Z'ia:("\3Xu=F-Z=Z'Xd,SVCcc>\$)@&6NHXtP7W'JYIMWaUP?TVu_ZSoif($Mfs7pXXCRU;)8o3o]]Mf$B'.R+.1C8;B_ATRlfeL@R2j'*;T/*SbKYB,11qln*A7Z-JK$]@MGF[@>QQ>*^-He2FL)nLV"a8o(B@+%BhbN%&;:NRXjO6D9WFblUYG-M#aQ2g(e\nkA-pY%oKJEoN*nr`@"2P.ZkX\PsYPFEDqeFT>c9h@$nPmQcaLdudebfGr>4rSlF"$>eaK*1HX!Ec%_IF&h,U^U>e;_P!L@[f+HDCAYdMl*liC@i:P2^+OQNJra&RBJA3V('F2QUe'7=h`T+u4CSf[TGF_gS$3_A!"8#:4j%*(EDMHK5*`-D)0>5=/Q_SL!T*JTIT.JB(S'L)P%$K)hjg%$B9N>^gWmtPR[f!8h"'QGkQ/lU<Y`$j++4.^K1jdk%>]p+rs)c?cjE$:SA;!Q0**>NVt%6tfKE1jC(+ZVRWr[?c<@9D+#\0@ZJ\DOD!.^_j7Z3e)Uh6Wh^hooF)/#iS)O3'&2;20_C:q[^thI]i~> endstream endobj 310 0 obj <> stream Gat%`+d7OD%#+_rY!^a5:oG9H!f]WV.M.Dn'0,D!^?NpLg"e.j9F0=<[kA'b?F$3<k#C63M-[gi1uUQ'DQfK7knN,GuW!8>NESqu(uUh5[K$4O&&T8#RS!%TUHiadA"Rt6EVJ19TAGG3J#"&M5.["]]?hM3s#-:Y#0^@UE@'@J-XH'OAMfocUJN2(DY)aZ_,8Zq3OSri_9N=\ds*-._gq3M]k3At@?LijU6Nm5#cS endstream endobj 311 0 obj << /Type /Page /Parent 1 0 R /MediaBox [ 0 0 612 792 ] /Resources 3 0 R /Contents 309 0 R /Annots 312 0 R >> endobj 312 0 obj [ 313 0 R 314 0 R 315 0 R 316 0 R ] endobj 313 0 obj << /Type /Annot /Subtype /Link /Rect [ 235.992 496.961 290.316 484.961 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A << /URI (http://en.wikipedia.org/wiki/Unified_Expression_Language) /S /URI >> /H /I >> endobj 314 0 obj << /Type /Annot /Subtype /Link /Rect [ 338.976 470.561 497.64 458.561 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A << /URI (http://www.springsource.com/repository/app/bundle/detail?name=com.springsource.org.jboss.el) /S /URI >> /H /I >> endobj 315 0 obj << /Type /Annot /Subtype /Link /Rect [ 90.0 340.452 123.324 328.452 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A << /URI (http://www.ognl.org) /S /URI >> /H /I >> endobj 316 0 obj << /Type /Annot /Subtype /Link /Rect [ 179.304 314.052 288.612 302.052 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A << /URI (http://www.ognl.org/2.6.9/Documentation/html/LanguageGuide/index.html) /S /URI >> /H /I >> endobj 317 0 obj << /Length 2170 /Filter [ /ASCII85Decode /FlateDecode ] >> stream Gatm==`<%a&:W67+P](=J@"2en"MCqUe[$r/_XBA$IjKsW3o'ILI/.k+NT'$X@S4)jH?g#`/$"n488EmqXnn!nuZPE_/*n4Z`pRd"h/=Cig/cE4$SU)i'c-O\,JN,m()f+ok\l&r[LKM?)PXn]FrJiZr"%XiiIX9N`Fk!eZ.=LC0/Lq^"Xj&r[ETZr+@U2"eDB?:7XQmi62s9URS?t^IlYNA-YG>7+`=h\BO9[*+[.&ii`2Mm)Z$WP\[(*=nJ>i[M:g8P&X?Cd]#Vn@SS;u72#W`Fd_%t/kK2&hO/L\n&SVQr_Z[g6E3qbAl>H:N&88ar)VNW-sl3XrAlR^rPMnjdD7$Pjb/U[Yc+nuD]hAMIcKl>D"X.fYoNDKO?(&0E*7(o3CkIoY_qb?2q37I]S.phDu.fNTH$"SU5+o;];FZD-S5:R4)E2ij:2mh[&VYUDWYN4E96/+=^4e\*-2QMT&M$63n+C%>:]W6'opUCjG26Hc5f9?1Z!'kT8CpkHl2-/qbAiJ4uWne(F=sc$?;.rP*Im?L/W.FZS^9^$X&Rf+6C^CB`&Ed9QY`.pA)mjX!(&_HG6ImfLMHWd=C/e=TP$SN"8KV/Dk2fI=BKM!A[-]unkPYNAo-b$F1g!LI"+?Z4jR.N!8MH,D$HbY\sTgb_7nk(@!D\YPtWZ3m"C^uJm.4D\>f3=Z=HB*u?NY;W@p.Vg\/)%JXr?r;3l$NTrJHIKl;TuRg*r=(g6UEKa_?K+]%k-kp$sSon3eb4U%UN`pjsd(Q`.M`l?*!*mL[c8%/bC'e<;%K.a!^ep/_WE.\.'DVp3cYd1l^@;tsUu^bBl/l1&EVC1hX9bB]RB?]5*M(PjMPP!>P8JWJj^DIrPMohZAb*)q-=4^1`:79B2o-;5ROGgnFN(na;L#o>g`U"=E2c4e7n;T)#LHLq^2GFW"JH3*PT;AOK'8H]3(E(.#V@qs!Mc8TTiL@`:;Q.?Aid[+eJOk(lY5m`^#XJX8riu+;'+uU"O@)NJmm`uEI9AAo-hkOXK&QeH_P]A+PRuBB[SPQRH'm=TAF:1PCbHZI>3K\^QX)p9KNG))JAUKHe>8Z1Mma7e<;uPG'oM3J^8^JI+)(^Tb0$.FG[@J0I%UQJ^Hk!$L@1U"he0:3.&ERN-dAT@C,0f!-9OhjU:iJ"Y1qRpC*2op=E#,:(uhO2!a?eJ,tq/e"5Pcm>^qlL]`2fk\*Z,=Tg@E96oIO#iih!mBH,PSI"ilTFmNaJ\I2'gYMk?UO.'1Iej!>H&kl&#Q%\a>l~> endstream endobj 318 0 obj << /Type /Page /Parent 1 0 R /MediaBox [ 0 0 612 792 ] /Resources 3 0 R /Contents 317 0 R >> endobj 319 0 obj << /Length 1907 /Filter [ /ASCII85Decode /FlateDecode ] >> stream Gb!#\95iQS&AII3&@t76i\gI)!c8DrS3Gj2BqqP\\d)DB8Sfj(+Xn`*YO=$7]+cQS%LgiN8>PC;fC$jA]5O%BRs3Au*cdh5B')//)0T9[a,]W*45gk6@dGZ?cCYK%34a.5M:Bt3O,n#j##Y9Wp9+@C%+6hSLfAQZr8fJZ!@-C9UblO"&/5`&0+BIV.TKXYf0:hgo-%%&Q'URT(ZG?J$jM^5qi;*81CF/af!NeL]:=;@\]AD#9B]4F[i]6j"?W,>bJ=Z%&p^.i6d01?QjOk1V;UZLWh=*j\5m%"$206!:&45s93?_bKpZ_p@u,9?S7a*A"i."T`-gjoa&SDdUVh--hFSp'',:X\)pD@D!Sp5GMAuO07kbO/n;Z%B3ELi]ch+IHq:2_;qfVppFKcA_0[JGfPrf\Ytc(4iMlqI21qW'L.CS66+36R7(=i6mCX0bM>D==(5&=)d?,//eW2E!X*4.;!>YGiWuQ.^U6EV+>r:^[*GB?\@P6^D&f$%pg^KdbDATc,;\!Z%Siqu:X"n^90u-I#K/AMD9U3l^Dhb$6&-dZ>pLOn?9e1:8jSCeCCW.&DVC)":0#Qe6BeU2[(99OUlb@mhSl2OdnF,ef"]^K,%j(Dbe?M8/:+--!/A*n1lk=NY9dKRkAHNLrc2*2";_/i1-N.IR6@.?_2CBAURsA,,D>;?$,R)Wl?QO(Wc7C'(]BS7R!N#H#UO0J$#:BW/0]qJ;t6Fl&r_Y4PG$YOeZHB2+Gf*1DBiGo+Gc2*phVO9b6h]Yn/kMD-PSRckVG1?UlIBk$fJg.%q,YE)*,1(7)M>ikm_\oB>sHa[1qCV,u.55Y"RBQ%b+udr/N[(HNQqdtO>ZO!%:i[0#`mk&6W>Ctkr3%r%Pn,PLW4pN/^3!$4]Isc8%)n/lJPKMl-hcKgPF#g3R(n4P:?5%*W?VGO;WIM5iGh#X-9Q[mgO24kol*]oTsk5PAEgfQLOB8QFJ",H#o;hA@k_;)1*2T:+,[H$Sfd8p;@8VoW9G'+1Sbd,[U-"no\;d`kk*=%VlfqZt8pn9s.X/3G]a:C7KP86VL))Y@!s55N]Ead9RD`JhYAIhJ%"QshHp\i8dcW,)g8FK#=8Te[%F?'daEat3HY.^Q@GWQYtq8S&ZLhKC?DmlV*5HT7)j>;__l37[A'kr_UOP3Yk-c"Bp\p=W3UHCH2[K^fg9[r@8M]h79YR-rN$1oQ2tPSF?bME<)R\d0i`J\F"%\TKdd"nD9dH#DNp05g7HYOo.H6p%ckId_t!lrUs5QMgq]=_bbh"K6)C`gNY*.cWaYq7V:~> endstream endobj 320 0 obj << /Type /Page /Parent 1 0 R /MediaBox [ 0 0 612 792 ] /Resources 3 0 R /Contents 319 0 R >> endobj 321 0 obj << /Length 2042 /Filter [ /ASCII85Decode /FlateDecode ] >> stream Gat=-gQ(#H&:O:S#_(J2&k9N,7GES,2GJc+8.i=Vkk7<.Bj7\j3P%1A^V6J49kktIF;EN:j>f$6+j],/GuuY)^#9GJaE:P!+d!"I4N)X0ABJ%.IU>4=3]%H<&'tCqR(g^l4(]"uFX84?f9Qt51]^&G"=)e6;5_nFL/P&D'Y`,jO@pi>JUQU)m3MVbWgT8kclY"`Xj;F`u6NLE0dSX[["apjUGufkao,gBD3^+EdQgcB5>]N,(4*#(sJQA\$#bOG/$`Su3u9BH&7e[qVPqVn7BMkM>:bIQ;_i&Q"I@L*Frj.Gf9\D\ji+K_s3iOti05B]1FrDX1"6!8?%H6U/G-ge;5_nFD"N?i%t3=HlmY`:UchEMHZ&t`3NYb)TU]Ok":81'j(-1C#`$a"=D;*PNE=_fV(tfLl"X'18RYgD"q>VBsJ\@.Ola=`h92_MFgo>TYO:Z<+[#pqXIO+qmo6OfLr`io0pe%b`%2YY6KZQ=TGB*uS)#+DHAN)IU(Zr01'1Tc8QAO%#GTn6=$3i*U"UOinI`%eu/#7^S_?'OS]\r/?1kB9],BXpmeJ"pP0G*VLV.+i@-$t>mQEc,^#[`Y7+X\#8aSgHXd0(L8FkQj#jVKblSS2M[]c[,aJ0+`jaiUr;aBQ)6Y.,cm0UA!e8RN:oJH4_sUV^tHWkZAjc`X0qa\*F.Z&Y)`#<:N#$_Z>RGU[&%A1"-7Qe\3V(D$^5R'AseFXUnK)*PdEf'SD\aE\kN@r%/%1*D@.%Yb+R-"4Rpq4"#`MJt*pOQfk^'$Wt!WeT[gH*N3_qAfmf%&\:.MKM@u20PkLNK,DVW_kXa,64D5H]$b:R]69i7l9m+)l63(UM85p.OFZ'_!&GAVeE\q?eG%))KYS4D4c@dQ!LOl86Pn!ni44W@cM?Dc9Vt)IeHsAYEf!aK,NJ+Hp#1*0Q=H88Fg'R>D#Qc9jpL-h@sD'XVWVSuBU-8>FtU1l^<]FEV#!^$"oX/@R9>!/4!b<"P4d5kK2]!G_gJ96LGTs_=sGY1deS\3^`4o._lsZ0hSWBRS;EZbGq;)=Hd\XNZU3.j[/_/:`u[^%nsadY^u(mXVLrTR2sf_m]E.;>rm)^I2F3I;kgXuX:Nu2-R`Ls*1Y1")-TNEoZtNpkORLB!rhj24B")kZKXF'"J*S(kZFcZX9`N*AmA-LlM!H2gM%$\I;dlmgQ9ebShP.?(Nm7Dm?3LBHG-*ncFdN4+jbiEq7^Q0g:aH@0';"G20VR%cd?MTkkCLLb8 endstream endobj 322 0 obj << /Type /Page /Parent 1 0 R /MediaBox [ 0 0 612 792 ] /Resources 3 0 R /Contents 321 0 R >> endobj 323 0 obj << /Length 1818 /Filter [ /ASCII85Decode /FlateDecode ] >> stream Gb!#\>Ar7S'Roe[&H%am#qOjXC=i`l>I()=JZNk"LLh!T9\VmFajn@%rdBhYaWb:WQ;S,n![K,;n(`05a$[S5:#9/S#BSreZc0k*Q4rVpn;EjQKfMs(89ipXXdsse(303C=a_l%?Mp6=KmGAsSU[3`#8"]l9PP.dgiF)#=:N$keUDpcYT@;54O6ES;FhWlUaMg+c^d_G.oX`((of^e`l74#F/\E"^_N`V_6u%:`p][P\\5Q;e3C(0E7GCBbqdt#bg[t<\Om336tt(_1dfK7KNf2UU?>lF#g4b$.G[B,>$]Cu1"=J'.Ved#D;YlGb^:#8A)l*=$7f/JG(L3Ne&j&MDdGT\@fiZjeMi<06;>T84qm\>R+8fS^'[7o&o*4X@3d5IK46$<&:b-EGW>S:fum9\m#IJr*"Xl^c@'h'Ok]Q$a?$um@')l;%=<9%M^&U><`(lM&+0D^<8eF$\V1Is.*ujFDue9@cGp=`[0.'?;(I1$c(8m]JKaRp-ggn's[)&G194bL=$E8ZG)$,oLP4cI(RWg`9&;ff(a\ZV=dOGesgLpSm5cZ6^UeIR;rN;*Na^ZC#>+s8Vn#s'jsVs0-oMRXbpUs$8e#F'?Q_#i"*JYK!BldG+MYq'MOHKm*K0-@^Y9IkR]nBHgs,m!fi%ZeL#2dQ3+p/OKUM-UBeAG:qB?2T02E#n2&<.eWmA3Wn\0lbEVod@VRoPM9Hd6?4H&U)U7a.Vc6H^UPm$E0.pg4Zh:eL%@m#76JW^]Y$!uT8tOEgC,N.qEojENA9d7hbu7`1f_guBUrD%*-sW<%rd1b:=)R(f!9%/afA@cQcR+3J,3]SgSLnTlim]bhd(MHIM=n@/))V/OWUUKL[`%s&NC2_N!Z1,h=@24Zkj&_!n`RM`ilX63;r[.bL)]->`ClUa'0KJ"l[qNP+>)gopBJUXPC0BfpB`I=&nZ31s,Aff7#5!GM*mM(=RDaS.?>G![$9EVJar)^i[\leG,"YbVa%.K<1").QN57H%8~> endstream endobj 324 0 obj << /Type /Page /Parent 1 0 R /MediaBox [ 0 0 612 792 ] /Resources 3 0 R /Contents 323 0 R >> endobj 325 0 obj << /Length 178 /Filter [ /ASCII85Decode /FlateDecode ] >> stream Garg^iR2p+~> endstream endobj 326 0 obj << /Type /Page /Parent 1 0 R /MediaBox [ 0 0 612 792 ] /Resources 3 0 R /Contents 325 0 R >> endobj 327 0 obj << /Length 1351 /Filter [ /ASCII85Decode /FlateDecode ] >> stream Gat=+998*k%)1n+#W^-2)o[-W.b[#gZVsO.7GH(qLS>#$l&,^7"7F?quJCJmpdZC''S9bSO>LpakhIEC@ihPJGqk#?Rg"-!"a[m^mni*ck`"ud&#g@F&HO_FP[c[9fa,B#T\O@*%P$aX:HX2;+.tbYW[Z;6>-7Tr/b6drO;FS04:hf'P[SpcF('"d%*Ddarfn!bhtmt9-k=2]Eem.E=aJlQ(j<3;('>m;d%(d^MXZiL\@g\n-5C47gLJeQ@QNW8\M";;+F;spU!MdYi?/&b)3U[jduPek#ZVgap!#0tskgKS)@$su1*hpU1o,`rhmckMeo0$PAhlLZ^R1r,nI0''8`Y$WPs.mG-K%h7CYp$CS(LD;2TLXOO5rB(/a":='tO%BHX!XEDT.@(S?>#?fc4(5E8"=^k+WZ->HP_i_?)COMI"UWO"i8\6=a"fHS,J;40e?k\QN]06$(rFV1'%T9!*L>[cn=m*d(%$%_.D&-i9%U>Nd-+TaH$^W=8;2ccEX8"PBeTIr^;CU<2j?-a7u:S0;E5<.Ua5AuRZR(ps3$4T61ba*JERW$?'>hjI_;BO)uiTHU]'1iTMqumtDdRq@Yb+TC+QW/gr'J(1+[WF$c=[eI[o-j3[*Wg,gse?r*2ud0gS$UH'D]EeIf]l2]W[A`UigL1?G^\[_4Ya=SVZ_$Gm>7V'[hQE6,V2o8L:59PV/*fR/8H(0l(]b^.P-)Tr?+ma[FC3$mthWSZLpCNaV06bS?!qRA?3bW9$?I2G&E#\lHHcU0Y.n8h*]nc`U"(C6lj-#8`0_/.Z\>7@`o endstream endobj 328 0 obj <> stream Gb"/lmB>U%H.`-(J&mBHrEu9HqOpKL3Xo99JV+(pOP!.>"UH"L%[sVIC$3R@0>6XY;ug;e0&*pl*'PM5*%*E=.WHWrejc0mgcp?RdRnZ))l(OmMAf!g(7,BZ#,F42p*Frj@hJOdc4ggk]h4S9Cn7c^@FidRM25-.cVC!bX5)U3j"P'OD;K\N$_T3)RHYBL<`j2a_kN.:,qmROQ)Cq0:K\RJc]]Pq)'@OpgIQl(@<.F19kcad41%imT-Ap>i-K6bQ2N)&%f$MSH.`@m?O5`-el0(:cLSh.fbec9;c3VN]@Hn`LLm9X-"R&]pLWO@1BflG)hVJ!5\]S7q\SX.idI5Jag<,?\(.&UL.F]/eY>nno%2O]%2eo@UNG>uOUK&`7:XX7bi6A8"O!0)c-U5=V@2,j=!5'KSN"cHq\DA%1_f'+ac9S36M2r::!*mG#+R>e*bO,C5>AQILE\GH"LSj3+GDuT0[qMl,4[Xs:$Jj+27f&Os'7DY^u&hd$j%ujk+(>,^R/:ZMJA:,(!V2nbDsGqDKTE,F8m2"l4''lQte_eBh$APC"LQN$BjYET*,jVm@YjE]S/>-9*-2)8=hl3;6*OL'E>D\eRXq-?EcVG%$q(ca-1&3Rru5bPjgJc6Ld'O`(?DCQ*bbN@-=#"5M/EB9jlYeuD)!-;q5kUZQ:%W5^CD]N&[)\ilD]!:5q3GODE0MZ2E/&:4])%EMeGj4c?sR"YNZTCL7*o5B*e73^R7lgo!j!U;PS@rZ*(zzz!!'et%G1sei/HmCY?\q)gBi$T%@H<-Sgjt0XoO6nnaZ.kaiT^IXqp26-eQ*h!%0`BF87djZpU5'".VSUY,,PDbB$6'>M'7jAbXW'H)-btcY',.o?5FXkl#?mLHH7.S6>SmEcX;C)3i9RSF;h5@?RDc"C?V*,qOQ+oOQ5qBs;Ym!"o"I'-EhYk?Y.XGR$3PepZPhKq2Tm:A$)$*t&9l-e1cTn!;JV]ef^RYdMUq5m6rp"?6P8rEXHXV4E,R#&;t5?5F+DP\e9WB`P.N_c-Zp:tT1L%\(AC'*,h%j\Y=Izzz!!!!(%Til7i/G2?X9.-1e4@A+`!Iu7OprfBJBcc><<+Zo^cCR7Xa@R?J6A6CG+%U:M7SoF(BVC^8NOj%q$p#JM2TM<rtuXVURXmjeNkD:tCYTG`mo>pb`52J>Vs;*^*\RcOaF`KP$K\Znec@q]FEUA0qLT'sodcgrC8/T,DN?l,\u#?,nYoCOr)=U5"3ZTkM+Y`SKN1oaR&0JIOo>65kf#%JW`VEK"?38E`_jCFX87^M0s8Wr0s1(peu1[G*=D1&KKRdtQjbU`mIXkB=H+@EW"77`=/O=\o%Zsu`!dWNc,ZG[O[(cj!mj:O@.OATKY6d^Uno*IePQQeVN%$e"i64X"ACR%+)!ku@MT$\(>K!mJNOc$\h.=l&ifq/_HC%G:hLV8;%uLH*_iZ2ljkO&c:e.(QRLI7e-fMoMiCX-sLe^L%S`%cof6Rdn4Xgu2T/S3?9D0;V1)9Wrggd07ohkNt(jZc:i1>l^IJ>Go1JAa86bI)]X[+1k5#&n1#H?sWJ='d-q:R"Rok1"/R3c-PTXWZ>VaJk34HqVO-"$63u>$2J@VD+D$4T7,F;/ef#GU8TM.Dc4dc?\Dt]N/dgqV$kA>_"W4Ei03iK-<7.D`@8qPNRVtt]pX`+arn)0=Go=G"cABUFI2ngOO7jX#Y>%M\(Wi\/SCk)6+rP^C*HEglL3DA+^+G]]Gf2RbE-8,Og%e$OADZuYF6B.M:t?2MWCki1:$*pV@O[nYQk!3$Ab3cRPJ0,3H[3$A_Vs\CIKnuM6a-2Z=5AJS2qfb06f.B].1Q4b''bmiX7ZH5&mGuHg35J=e1X*qQD^bVAb>Y1$O4o^lh*b5STK?h[E(bQHpc`>6q;a1.>mhP);Fm0kn'_ZcLj,Y(DqN?'[/]]<)q=/HS*?Pe6>aBE>G5>_Oq$b?Jh(j,DTT=+s,+s%dml3aa"qmHjiFF95r/DI,Idhf]n3XrC%GhUTuV7`OTYuDgHP34r:>LB_.Yn`G#=!J;OGKK^YY$:_7U`S"tmcTIh'RSZ!CgB;`NHqX=9bgceTJ(`sZ-$9J!Ib.Pf&[IF!f+RW\ptdh%T(^l3AC_=d-GO,o?ia]YRTDcY3H*elA9lAP"Ed`g:1WK$Mlp?D]#quh>0[/]`\\.M"OBXeF70.&ioK0R)3Ur2DjS_N!b?1,a31pC]8/FLa;(oH)HsL(Ob7,2="WZ_!#?lKc5!V>Aim[+4bUXRVR]Pp^-DhN]q^^*F'#Z2$8[44idOF0*,`Ku?3%YoC'"CP[d>OidHfnZ2n'-e@!!b/IBI:jAH;>=2cXNp@n3Tt!t=cd2Gg/66Sg8B_'rOV;@JfWdIr4+QK!).ifq+KHlK-%4>A,/R''=8`X[kjg:NfMJY6RlFKX2"r#BoKVdQiR3RJie2EW2eQaV&KPj,QJeu?kiYAzzz!'"&q:&k9,`!4fbS_4>?kZ.6)E6kumTrJ-*@2;@1S7D^/!FS:G?!Cj+G(S6*33HlpS_Z),28Cce!aDb5!kOTi(BVB1XLePc(3Y9>N:kZGOMRptG+k\hBtJFK/_7l3CpVtb!8*$Kf;[QB:,%aaES76\AMsc"aZS(k@eTQ;TRBOLCW/^1Ec-03A0*c9h/-]64aXS=XW$CR//FDg9DYXOc:jF;*NhRjI-Gda[m%RHJjE7(^G+?4Br9#2"X/MiR&KD\&T"_9pCV"G#lApKhl]3rp4!b%!7Zc''PLC'.NJ$a^U)mY`&*04LNG)M&^_b8]d*3'EZc9'?;`.>`(%;U'5OSN9,<"0=g5^f5/uXur0DFI^Q+"G#lApPJ2OG(P!!eZ6(TdL:Xn1(S5qE"'f#[egpAL`^"_P5V^^adbKM=VT.ZAt=f:YYXB+93AmRp-&>jU`8PSDh&0H0Qj/;E_[Q&"NOf@R?W!"\$;*+Y3uf&E4>T1"WU95<_8C->0%C^0*Ug>6X6MX[=`%g_Z40N],V!_or@nM8ToP,,/"EG,]$17$'_q;s\`Qa@(&Be(%)n11_i:/4QO+c4A=G1kY#5XK0?/]7^Z7u\LeZ2bUnVBf'bX14B.SqZH.8@_4_qE(61VkP^FHInLdR5J5p@1QCXu`3_a^$k/kh>5[r(5P%%&_K3P:T8D/s8i4^m7J8qussTqNAWs@2MHa,Z2[HqAWWBkdnn.lHVM_j7$>YLjMNAWDsc?`A5\!8KVQD"3Q_\KgUBFV!_]-:?mnfiLI3"ih6jHPK1'3C6f":k?,4UQLEJo/E6d#PnM[!85,X^msVq_bnE0)GD/55u6G`,SP7;MjfiB^*4QW"H^io"ki0c&&KdG)XsIL#Xid]D%l+@J:h=WFoiX=U,Ip=hq$/t8WY[o"RJGpP+n:Sed-tc*m\UfRZ\mS]a$RF)PD`DH"(PUQ,(fNoEE%HZ!TQnn!;e&63`3=42DP@JL'b*Y==GZW2>+(4U$D#z!!!"L"64>!qGHBuhX(Ap$d.P6*]s;F`]aW>-eL]eekmE3`aUD>YIWaL45L'9)uprJSGo@7HN3Ct^&NYZ4GP-Nf)%Ebd;)X)pP%f0N3U][fa2iLJDlB<\Yfh*4Gi&G%)]%-!*S.\:`KHSnanVeIe38=Z@+uj&cIPmdun@9<>bTQP+<_=FIYB4i?kAWR-/!E099Vl;tHmP>:OnIC,i8Q'pA3AX]-8_B"GcnZ[.U2h?-Ro!,M((m4[I'+4-"e,Pj41F\5<@p6T,pluQ9PK%sDr(Pj3%/YF*:2]?bg(M?@5g^AQJZdEPV$dNUX^uKrd*;I=*Z4%U:puae=TEH'XUVo+71R:L%&Z"&Ks;)t>:'?Ork>D*L:8^4TbI\MrjXU^b2IZO#G[NdT:.#*sjN4N`#2P?%ceYnN:Q'aL^8rR`9.<=UFpHN8p*?m?`kdduAri>oMC6+6[G:9Zla9"Y=uQioXJVcleiCcTLpk>NstS.,MLVq41mmbr7i^.l;O>DU2Sbpn$3%/XG3),]sm+F"-QG;iilfrBY:f"rkfYW(oLs]oZtKVn/?k80>!#?l0Dp?XA+\d4.=/BFkZ*Y9:?T*oj%3"71%Te@$u[\Ql>!&n!IZ`NA_]jPK7.MBQm%<40NQB9>(rJ2_c.]/#,n1\2ulEtq"&FHor48AHP3To>2[sft/eQ[HPDk>`V(_q,(MVZ_jBYE",YYTSR-c]_8m,_D3#?]7FVbm7==,^c\3KM>9EFRb_L+Hs1YplA!Ua^""$S53"roiS=$EHQZSo)ME1mNun4Q+%4f*mZV"+9tp2@_nZ'@9<48_(8FCt]p`Jkpf`=r8ZF8gr0Qh<$B)qd=V>3B!2i84eeD'maO2@)F?G#^Sbe#2p-'HM!-Qs'b')^"A)#98:_9h&c;,ln&.k+V-2&B9Ot("]PF1JsXLPEo"4%T`-0l-l^]T+RPKH51cp`(5aH^&l55`CS*ZZc,K+)E1g#O<2,#Z3aHkq`F',VbBT+,5&C%k"<)rGi,b5Lq=eg`WGb.&R#*>$V3sQkC-Po5gSK7_o@F[u>/'c:papNnI*$$E]-!Pb@^3N>%C''6*4V0[TqAC#r>jo!],G>ocC`EhqPDO;!STa1i2'5s(C+RffJs21.7j+%`tS1F*1h2dDna?rE'J>e`U$rUY0rhkf#^00]?*c_!m[pYcqfbQ#rSS2'@E"!-mc:s8HVfHcaZ6hg5(@J+M%Ws1.dB0E&@54TFXNT=K7E/pd9))gLhuYRR\;2'@E"!;MHH&Ln?:Y?W-^^3rHJ8]EqNEBGP`-lGc"j5^8(ZK_c"\gd7,P"pOTbLV,_.C6p'l]:\ik_5oahm8l[aHWj'Af]"+C2'J?@7a="9RDDGt+NV.m9Mmq`j<&c$$N/o:%Xj5#"=ea+7]Q+pkghan6QW!3Uh[c!s9Dn]c7s^#Y8TR$T?cc:GjFZdS-.-/J3@B(#]GK@ei1:<[XR:A8H0\i[&1,LgN3[?+Xk_<$6`'l]:\jRRfs!Eg/Ng9qF3DAms_A\MBs:![J8rXV!`,%mO9R,81gjX_r(eE!64PrVcmu-Lh&X5Bi=.gePcUVU]l_3pHIR\c8]@:)KRihpN2ifl<8oTj^f#\&%A3Y(6D3#Cl2P&,pd[4n([cmfE:E:oj`QkPfCiQk()5^d2roh)NZOOGD\/fhqiD)D]eT5hfCg$Pb2=p!njYR*RaBED[df;9j%=\[g\kN!"8(Yq4@gX*QkIG0PRmDSfZ>i4/p7oI@.*"'i3u6DLTIMc>fA^%9EP:$&>)_iZ4%`normnu(8S>-S2:[bZKOOgEr;AKO!YM8_II6kk+`-Q7HnW]6`p^fAf1'4&VKj>:6_!;a&&G[HZPW%EC$)E+\=K"FXN!_R=Z(qh.i>4Z32_X$/?V]rp]+.I.t"^Xd-acB4q'RVT=TT<_JCQYeCL?EpBC")YJfs4H4@SV6#Pb0+p?Gpu^UQ?hJQ-!ME3rJ3"<3_=sU'clC3V`2dML2:Gr0UD?$F+TPGGct9[3^n3$,Lkj1[3dr-6_0jiIcrUmjDtp(4J)LW0p9OSV='q/p]^kQqIf7^++j!9aa#A_kc*o:9PQ!+[FPVquOB$?71h7o-b%b@)r-0S^6CdJiBbAMgd&.%4Vt9K77AE\>\&5inOt@s]gL*k2$-J??#Q^=lJN?.M!K2G4*3/Xb%*>%K/^^,3LZ%r[2aHu)WT1P)$"uj!;(B$N?*>.qbC;2<[+aV#*kaP'INGi%(cFhMW'kOC(GD=ST]ob9)u:FE$+V\bFbS2JSNpnKm?\0rT9AJqfY[2XMT,D1Dl3K/63S%+Z>#S_o2cZ0T==aqPDO;!STa1i2'5s(PcH7fI+?:K1%A@cTN%Sn.,M3cbW]ep.:mm+A_#O>W,:VquZp!z!!(eAJ.2M2-iY9%b[N4~> endstream endobj 329 0 obj << /Type /Page /Parent 1 0 R /MediaBox [ 0 0 612 792 ] /Resources 3 0 R /Contents 327 0 R >> endobj 330 0 obj << /Length 1935 /Filter [ /ASCII85Decode /FlateDecode ] >> stream Gatm=gQ(#H&:O:S#lE$a8@[YJ\"X>CRjLR^Zp:s8nket0[ct14flTf207VlA-!;3jZ7IB8^oesS$tk;NLPPHfFE7=4n0fNq2dK1+ms[Sd++C1*#^@+3$&Nod:"S5d0E/EFHg_[WI/)Vg^4Mi(^$4un+?::;_$MKZ#n2;Se`-ZC*'kt\#]4'^Sssi1bMA"tF)AC$Sh?X>?I_"!U:JjuSjB2S?,hlX/T<4cuPg3epC_U9m,O&&sTY/Y+H;*/J\=DHn]aCh:?G:(El;.'%Q(mcJuIPOBf.j#c#N5AKd9h:sq"(9(1&>asmuW][qb:B$aX,S?81:nRF2Y7jG2og/j3#sAki,R,2B&W-"9nn+*#-F_GBbX2(*n1hk:#;CPY2r+.Z,Tm/+MihC3/FE03(a[9`7,^uPk]3Y9YD=l3"VHU(d#SL0<>GF6jU1@3a:H(>87J25rd3ea42@OLI>7:2Ek\iibgjO+AY@c\ob.rDCniDf''lb-V(a+5"+NAU!EC,)j03[G8:WErC6L/hX*%8j^SkD7RCtZ-=%8r0?QCb>]k(H1R#Ua(nV#8TrMph,PWZ)=F`u:i,DR/kq0>+k00r-cLr+3)c-5IS@`So`-/b:=;=Mg:767R\&W6Jjh"%CUEk?Ie>3?\89)qBt7s#HO@*C=4J47>LBEY`%652'&J2,Odp`W42E&"aCr.WXPCn.482"41R6("jRQD8^%WF_U/'t%FnYEj9XGqdg;MSB6I?ZauJ@pK>>#TMY'!-F+u'odiq0kq[C(BL.I-K6$+HodSfd9]o9EJ6b]2OcH+tN#AKT*[N(lit7M7$;n<4"3+.Y:Oj7+GVS;'r.UAjCn.4^2"42]6^Y'T]VB`K.;t`c($/kJBAK/j3XX#kKc'N0LkU)YoFWTDhl6>6p&pAb@O,%L#0ors;'d!2#(!N':'7]-6#$Tf>dk-Of.5Zu5cpr-'bI*;'ZJqph?/+m%j=J?kMmd=tiJBuC?!hK>f+l=4UP5jC(nRpujDMb+ppa5IMPlJLh05kFc%G71Fo8@^18r?T=t6:*F*H@eMP\\Ja.!\l)Pd#nBG53[&]o95dsEI,#AI'rbM3fp/*Xub=*g2n:1`Vm"R6reaC&MdUY'?)g;MLck#"iiHeIV)6mSo`W-?ZZV7V1)!4(V\R9;C*e;9QD.HKeVXh1E97/>"u@k*5?rm!0aZe=L.;_hC>U\Mk@1TqP%MFS@oCs`;gG71VNE!+?q\kpeon%m,_2=%kpc4^'l:EAf5%[@L;-sVA@RfW/LfR(OLsp/>cF:h7kS-Z^-F*lA3omjcHTZ@+C:A$U(>u[k34%XNo2Pu.f*cZ$ueFa"%A!$s.j8O:&,Mua5J#\3=/u4PQeEZI+Wp/KIdmfgP-+8# endstream endobj 331 0 obj << /Type /Page /Parent 1 0 R /MediaBox [ 0 0 612 792 ] /Resources 3 0 R /Contents 330 0 R >> endobj 332 0 obj << /Length 2515 /Filter [ /ASCII85Decode /FlateDecode ] >> stream Gau0F=c_<,%"@rS&H&m9P$-%C7Rti1kdF%nTP0g2qpP+&[`>gS=`Pd5O+1Ms%\&\/9@b9rd.P596ZRF.o\KK4p:[cA@((3mT%V\,`[r//E@\9P1H,T,k60B7cMH_dY?\iJh?[],\1+lUk$RHR='uRZ))P_R!p0b[nS.P@e&b3p8"_mJ"s2fA?kI;'_fdr5THXPUjePA!*0"5*CB$h21S;lR_DE;iu&mOpjN=#H'[cIVLEs(hq"Y+^='@4_(tLskP3ZO2V&3&1L!\'gT.OhF2p-f@Iglbfo^s*V>-AB.]*825pX_jF!t?ZK^g3:oT;iWmpVk7j"1T0diP#50>6p].u4e8"o.M1(3`(,P)c%VCi1eb1%Ri&rYHlMO#hWDQC=qNAG("IkW&TaPNso,DL]a%6:2`@H8QeBM\ElT/^^##3n$H:Y:\1q)H)C>",J!F"@"Nf]k6"sr-?=kb*L%O1%)L;$^Gc_+#J&94"&&*?M%"7R:lWX*cn(YN^7_r(!rI,?`AqZ[kN[4LH$jC(/5;0I$932`Flk8o$[h@EdHQ;X6Nu.XEGa-QU`N41.TIOaPTe;X,Ii@ICZRoIa#)WKr40&,N,_%7'@0HK/$S#DU6-HFcMmK"T7ASF"AHYq]pCKiNAHfg$.o&Z,0@RGb"Itt01Tapr7[I!*=CFW\H),.GObb.(C1Xsd??3m7gSd%?h;11#2`hS>NTq"j;j&Js8#JLhf$SAP.S,-RW>S2]hrF0?+f=BPG6c#`iZLQ,'HC9aCtS(l*4:-tZe2cA0PL\uM).%Q#%+eC2JepuC)rj@4m^0358GGsm-/POQC)T_:E?g&;\R*5Rk8)-kj#6+W@6&MA6.JkP77!5mV-pIjOVcrXnaC1Ur61-*iieQjAr*SD]IaJdrfpl=V80^c$OWngVMn6j>VAG7AEbM?/9B8"!#-GeWk?Q^$!(Km-d;1X+1i(@:"a:a_-GLp3Z4XM.D2P)C:#(u&pIO[C^Z+>?WgCqpHfQ'/)a]&:8(eb9Mb$d\''>W7N-D3AY>%[-r#P8n+DGU>.K,l=iMGAGea$jiB([;cc6&HorBMaY/5`BV"Q+Z!I0_pO;igQl@5d]agY>=MlUE-^;lqK,cr-:SO61EY#8B0'0=R?7T'1k2Lq#Zs(4^9K5)F@*fl;nKEKR^GEdW;2#%!!?kb2M+L:L%LC9d>)FIC`hXF[(nG+iW1@B9@pVhbd$KA>$(p'2""D>,01jrd_3?d/nKZHj-6Jdj0^.dYK>G68`Y_':b19QdA,Ni)K+XYq.k)0re&PK+IXD(47)i9hit2KWWKl?q6?52mRo>4uR:<'+e@R*A4O=+0j&aM&C-J73&*]K\3RW"%mc7p__-aOM+@$t5*>qQ/KnV.E`H/6d^WH!7"-:Wc(?esoFDW2:VJ$8,!Gb'i#5[)6ph(t:Z!AqG*mu>tduYsYQO`&a:j@8,HMsf&\GMaL5nfphYfP)U#+IR#CIlZRS\N0W0B9s-9PmBc*P+U#qMjq?0PcSo)?BHS)p`[nj+]XU/XaYu26.f+)'82OQU>[8`ijio!0dOBo[aLpK^U_CSPk!<1e$oOWuj[bPK\a,Tm0@/jodn_og:`u=T&fHaJX?9q0K(`Em2>ak;kKceIU2?r9B'q\lV,5K@8gTpItc4ZhVB/K,%>kpqM$STJ!7;GAqi'IT@2]Y+;JW]6'n0Td%Y<)BC]KL_BX4M&`,Oc9Pf8AC6!.8R+S`H5Vp8']PiiSp/E-jfW@JhL5J``(QP`Cg$6_V*dBCFn*,*Q=1bWlYnE+W?")cG`?lW5OfJX;dBDP"fggjBrQ]7WC[JiWbPu;`(_+]EG8:)ksk*_0P'&!fcut"Tq&Qa\2KJcK,N:`lXU`:?j9(gf\5(A-Oio2*I>ZYTr@IrKL45^s24Y5\g[mp(Q+[mK^)0*&j.S@chq![3D$>l/di'u@=IcuH%;sp%go3ENr~> endstream endobj 333 0 obj << /Type /Page /Parent 1 0 R /MediaBox [ 0 0 612 792 ] /Resources 3 0 R /Contents 332 0 R >> endobj 334 0 obj << /Length 2348 /Filter [ /ASCII85Decode /FlateDecode ] >> stream Gau0D968iG&AII3n5anU7L8M>>ah!@ktLBNX@P-mPTDO(Y>pRSgtU5AE/9]Q8^UGZJ4r2o_Iko/49@DOG"OLT=.Xj9Z`ZLMj=]o>7k]c5(p$W9D5F`Uf1C0T*B)@Z_d%1N?mSmnWu!1$/>iIm^0-![SHtJe\-g'D#^/M*X/)J6(>G.ckFXoM5>$cAhmY$-i!M6!h2/t6.-&&1%AP:g!"]nnjp\(Off62'D>;g&W>>ROsZKi[Sb(.'e47/>4Gj@lP;HEi[b+\27jWO*U\T4YC3`ao2N'.I8l#F,JN1e8t.Ahb$9B[LlH0_g0.#J^0A48q#_>f(>3OXD&4C%JrQRQF.\IqZ-?ga#bt0D#><0[SBfk%RCN]hOs>4g*5Su&b&iK5b=6\V]4j*7?(XAAC_tO2EH[g=IcZ:!/&iFl6WO\p';JjM0a-/7h%"Bo/Ajeb.73?#>[R[Q3"\J$*m'HT0ACKl5F3S7c?/A^NF=P),KWt1)?eCY]3O3N"=FAn1#6E5pi6p+a(J\`h-mB^-7bN&c"%f;]]tBP4:_h6*-4!S[(=K#NXmbF-a5-e-.809W>#]BS'eGs!Cbm=g!@VU$eOif1!2E/K]BIjX;.MNAWe$0qRhkB?TATb,&]rV8U"-)S4L+L:R=3,,MOeDZj:A\p&0lHEkW3M%jKslh0oEB!bpRc;+P_<>0ESQcEst`C(d/e>(]P^$8>9#]_[?FYc0Pj0_N';YiX[hb0h<7EjZ3C$,'N^L@dA%`mBcV9RJHD2&W0"/9C4U=Urs^5>a'EZJZ[$0smJi(@Z<*ZCu"Y#.)j7D"[`Z7ai>@XBlQUA'eU=7X@LjYBVc/DStG3&]41.Ej^V<*,hLZ4:]O;Bm`i@XjuO5n-jgIM<_MljEr6RBl02MjTG5K7\a;Z(p.f3NO@(sQ^\/GF+`9_)rR8-a"M^ADX]X(jmao6QQ5guQ.9ic9n`(G^g3EA]6-%`MeiKl+prHZqH`C-,n`Wd\edOCfPhuHJHMfk7?+DrMeO?hV\nXH#\oJuUia60Yt-`E;t7@8F<"I^G'&,5lcV*o8>`L2#`b3Qsd9$DoN&n?Imo=)S5S_d./F4F=MU1gZjT7A=]/c?'=%'ZRf)1KcI9c5Q;F?/XBNna]jA=jC#%dUfaK=I=3"IrqTB2\9gMJhl-=*RlI%Pfq&"!02q8@$7&h-Ai@Dm.qek;r@<8NS+$X?5c^ss/a'[$E#G)okS+e+j3&[O.(#UN*9-jc`gHO1,s*#B])_&Xf\8=iEg)`[?r77N&g3J8FsC'31*%s=bhIDZZH;*I+uVS+%QXZo>O4@>ABe_%uR6lgrChIY&R8kIAj5"lad]l%%a"]_0l-9WdD&D[1V_=;X'.ilQ7d'[Eh#mY*:Z,_VD?ECKpn^.#J55RGu8RTG]elWrbI[gE?E8ENR!sM]],u"PQig=,WemD)%jn0kkpgr#Ht?#.IE7inGL.1QKN5K=`"%1D;R%U8qADc:1:h#cLhAF!-GF7;c\MbC]ugK0C^QM^F$PDXU",1kK&Dk\4C;05bb7L)dEogAQa+dO=cI@2(N5bLBI0^^W-\8aI5L"o5:tE)pP^WRH+''g:0G<3:tF^aI>R`";8gYUgJR"uRDa7HDhL&Mejm-hl8ObOOf6USc[f!aGgD/'O>JQAJ@aM9Os=P%=Ukb^2K6>\l=URsC7ktif]p%3\^&?.GqgaDSH\'W&bl-[b(];'AN4@IQPC+(5m;Z+3`P`R:SL*;BX`*Z4poK`qmOn!\e[hg82f4Pf.+!5ENkdYN,?,uTbJ26C'norFZMc@4?/g+q9YJ:ekKB+u.Tno3WV:0#;[)JY'$?k:i*2Es$NHOCQE5+hW!g8("Ib?[P!#]IKW_@i45#&m4II6e^gJou36#C;Q*FDV'C4aS7F:f!A)k^6/-Cf4hIJ%JJ5G]=71r5%krgPY=RnJSib=3O%pVnUe\qVg8!u`0`,F2>rQ/o^m#((Xmf6aY~> endstream endobj 335 0 obj << /Type /Page /Parent 1 0 R /MediaBox [ 0 0 612 792 ] /Resources 3 0 R /Contents 334 0 R >> endobj 336 0 obj << /Length 2740 /Filter [ /ASCII85Decode /FlateDecode ] >> stream GatU6a`?/p&A@B[=?>,8(/0;_QY]Z.ifmB,8n'6k+j,@'@Pj$(,f<(23TT)Hi7\/sEhpb]F#`C'6a*[:]tM&SrpK'D/!C*rAU2;5q"2I(?kUZPW'sCL)34"phmdYSEaKV$#JV;$57eqb:?nK?iV%h$Xh!)Xk/t6/DA#:`#fYA!o$Q&g87('ksJ>=RpD5Rp%0`VZU\?Q]W@uS8Z'Ri[a=IROV80#kN)fF$=SL6)'8T&00bY+P/ZpBoQq1_kMjl/l@@h>h*i0/%Nj&Cl?mo\3;VX%QWuCa$^Cq7)q=C2iNYp63dAB2T&0u"O^5or,L>YZ:@bJ1,C1:Q6=UiJ5`RWY39DB`5TL\.BS8bd!C&`ArRTfL>Xfh940<]eG$@t%Bf`pek7'bMTuN?)K0BceK9oj]legZ28=DS2ansX#b;&"$`)NRuPSbHs@+S87MM$Jt<,4m_:8KRH:3f!2fqFZt?Y8.GY$X5'^g624Q"V'm%;OL'BcRq;["kC,R`jP/1YAnTF?sQQf.uUrLqt_'_AqS3[PY$FA;c2(n,[o>Z@YfY!.+Nu+Z;L8?(4CEqOC:mToXB$i,+)r47%]P_7HY2[(X_hU'58\V3TVI7V=Y_53'*#Ep?Rcg<46?Tn*W]d&:OrY/fC?cd??#=eP3TPFtCpDc)/RartA#m::e;gi@7-m:PrjPO[lB(he>YfG#%rD>G:_8uWXbLDMD`^HV7JPB#=dlb0AV$kGB1W7s-#a5b%6arY"j[^t^.!E0[dR.c+H%3m_K,V`=:gl!4'*nDcM]i)5IK'7-j:tp0R4DMkr&%d1752[,P,."D?dd3dT5!7E9!t=a1oj,aUBb&,P+_>93DGUU/9i^41H)KUZ;LUl)T&l#]Lu+Y0!7KIJi"TZAI?R^;Be!gXXQO.'IJ`/nO..bagt#3u;qLI$:mY#-V!`#s-k1PjWS;uILu2fP2j`D'aXVR98TT79-6U*Ij>4]aPK>j,Op%$8:\ferFhrN#e$D=qujb,>b6L1q:(3MZr(3f0:^7.94&.A2,m?-*7P(KFG1`c.r+SjJ3qE:lVEIPfi(B;[a1B)R(A]87tC63FR%J\OIm`E!ZD2"mZ=7Q;$mUqLSF@a:uhq*4B#KkpQrPks&)pN`&=SG0-]n_Wi+e[h\'^(=C=FVQ#n:VVUP1h_U?;>a#tsict_8eo*LUlXs#oPq%h$b7-f1:fTW\R^'lN'p'b`/e+:TC0k*.=KM0"/33IjWf0R+$CgocF[?XJ#;t%[WLiU8l//EO1B:Ugm:7oYVk!7f..`8dpeoFi+]TbD>!@-\onZ85#Z0;Q"c`YgCk%f@G1jD_E/CJ`/NHnfO>Hq4cGfA#FY;7Mlf.IX5tF8I:`)kp.hhXs'+/$?!*/gJ)>[+B'bFksrg7eN:_dPh[^rd*E`E;9'r!XT9c(9+28(#*a,JU.NfH58V8p1GE;XJRrO11Zr9!^23YFe;Au-$]N%op8Z&/XS$,]>^>1+TIRO)_@Otd=BiB+P?J/D4g;S(*mGN8g=o'hOSoB0R9e,=s#_r1X]G670(bKS^pCW(]7hICLaRp`8I[krT[`Z>V=D%AOO$,.AR`*%K.A[$&_$3dUEr,N#&V/OO.I!s3G>_[LG:p,cj.uQ,%:$=hO[EXeP-4$0fg/5)Hln3NIl"7)a\=Lfr^@p%6!*RJ-Q,\3h9Y^qM'*3aa1&dK-'<+6cCUAc~> endstream endobj 337 0 obj << /Type /Page /Parent 1 0 R /MediaBox [ 0 0 612 792 ] /Resources 3 0 R /Contents 336 0 R /Annots 338 0 R >> endobj 338 0 obj [ 339 0 R ] endobj 339 0 obj << /Type /Annot /Subtype /Link /Rect [ 187.32 377.75 252.996 365.75 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 340 0 R /H /I >> endobj 341 0 obj << /Length 3223 /Filter [ /ASCII85Decode /FlateDecode ] >> stream Gau0GhiHg+&UrWP6J.W2J1OcrIMZiCmW)Ac5RJc>Zm^eqa>WEcj-:TUhRiaT41$8[7Nt9YMdCqWg,IpYj33B4=P*BP76P_JLAmQ^pc/$]i+0T@L^`Pfl0Ksjdp3W@Dmj2DdOuU-W_>mFtJ-H"fo5t=1B`t@_4atMdP]?/+J*2H4i;)jabT^MAk+r)k6'cgm0AaH.r96<35MjkMdWq)R1&-UrbR^oWpR6_Y_riSHn4d'Q6o4[)6NoZ,PuH_X%!JC?c='0`N6;&LGG(-I/C#YMngUWWe]WJDj+B$n5su``Ree:umS,R8,\AL5rpt9*+9B1m1HIqh1S7UmrO*5Xg%e9SGKa(nT8.@PYX=u1hSYh=ZVu/4]K[,LtcZ\+IM\%N4N1]0Fq:&f+Q;;BNHM`)t@*hY93*,2g@C5[0F7^,Smsp9/qiXQVCu2/V6(I(AV(X/Ma]Z/HXaHMeXc&[])tWQ;!$5V`%2GZ*;=9:_(eCGj)K$3fjlaEYhD^TeI,?0pd;7iO:J#Xa6VaP$+_q'c3cgac.I1^<8DB^?+XuL0eE4YL[J=#5)cQ-pfSTUMl=5A(M.sj\Z4%AZmW+1pSHMjJ,?B.*cE,qkKU9eUd2u'J!SosC\1RlWiMn4AF]$i+Y,WjYcXsSGrW_04I]eA$.+(:0g*h!3+9m'rDi3OdP)!gEO%P$>\p#In\""]Gf(tKC\6k5_V>MSNE=1bN`K5F%)*FH>qt-GTkhZ*j&oFn]#?%A>r.g=G;j$7Y!dm+IbdcB?p(t4CYP%'!Sq[d`>6ns"$@F$3_nZVTh.iSCeu**?_h=kdR,Ja=Xm!mu]3Ep5Zb!CQ')hC3R!JN7i)g,aQnEd%.X*r.%cPAWS+0pT/$On.0r!OQo>R*`[P/bB*5*l66O$8e]!S,-CWe-b7lb7OBZ2!1"/dOo,>%Q/"LTnjf]8OZ3=I68:T0JjAHXD[tS&pV>N:h*(-[e@&3\a_P@@q?UaQiDM:uk%`8EYqL=a1)tEg9,W!)D!)F3MePmkYLe9Lj6n(75(<:GsoK0t`&S`5cjHdA]O`Pkd?YDDY1o2VZYN66mT?-'R9';.i@nopa7fm_eG+2tT]t.;+=UtD+Zfk'?-IJ.sX3[5tGl3T.-Gdb<-"MQoMWn7rpsNOfQnkRUHi6BH#:$3NEn<4HfXo1"Jl:4I'h5\EhQGmo5%oJ[l2o[<3?rcoZ>`ilA,nYN%\-dZj(o6G,k>`5uI3p-lBHBUHlQp'FTE-"`LO(E;Zi&c@AY3mCKX)"1F\fR^RGZ*e^#@ZX2D2q27hV\:]kl/f.pUsVf3KDIp&lI*lI=Dj,N0??=BWPZ)[S2@Vp&Tm`Iid3`d"Bq@gD-1@r(BEA!#XV_N=#2O21a\Bq=AWOaK\jT%;o7M7oXr-VlB^EO)BP_OVBFJ(Y-8FS,BM,PE`C,JZ11/(IX:E*MS*2Pi9f9B0W9a!SQNtep3^WE/P/T,V*"pC\XWJ)!bb+12+#i%;FfZ.H9Z(Z;T1!&T'LX&bHOgC5-:^r*7TXT<[YWQ*Ui39%d=1ToQgn/06gpcq#-=NpfdMYhIfNN^"_ZL/tGJDQLGcN>8JhUNq"BigO3.LC^%XHH/q\$[+2>*rgY'HGHY)k6$a'WTJATKCPUs#+Tl.f"/DtA>HEh?+HYZrf;^:-r*O^J'6dc4m=dc1^U#;uJ1".dn14>_Zh^;9HmV/F8:,.glD#g$.JKIlD--u*GIr(B*3;8E(uO(%2LF\;[>EVg>`[G$M]Tf![JF$J']dT(k;QP7!.Hkkl&2Y>TF>$.9;W`-T1O(*M;Rhf!lJI@=]WAjhlgCF8GLY1BGHo]b+2=:3]Wgcb/T-YSaEQ4a,f?KW:8$uuW?)=%rCt=B=G_+4XiCSAp?@esB2i%D,1(;J/*;TtX%flY&e;t7Wo9fE-(67PaFpF9E8Am0JWZrQrSW7dkr,hZt[YHWI~> endstream endobj 342 0 obj << /Type /Page /Parent 1 0 R /MediaBox [ 0 0 612 792 ] /Resources 3 0 R /Contents 341 0 R >> endobj 343 0 obj << /Length 2747 /Filter [ /ASCII85Decode /FlateDecode ] >> stream Gau/[fl#S7nm,V=#^ML4]1mJ?ge@iM21]R;Faa()RNYdq$@m>YW/nEX2=%F=r+@%m$l%t!X"GCN]5c$afef,Z`Yi>'^B5%F.MYrb4+7%l%5j2>\D\5lX^+Q.:,K/l7YtT/*sDH.B/pfl[DZo^&#[abjpca:9)6oj$!]Ofr6eRp9#fUmH+-jN1E/%n])$a?M/Rni.SQ)U4N3qAp<7btfp\KfWWMT!4VM_3e)K6EmCqEF2\W-(=n**n!Fhl(PL6L5\pt_aV?DGNm,>#0$O?j:t5I"D>U7/=7Ws10:+fKleQ).^5LU=iOZK@Z@&2nTkWPN2#;i$i1=]>^OH.f&B\,,>D7l@b.qb`")'1.Q6cFbhh^&?f?0TIdE%Cc*q1rLr[]TKLsOPBS!7.7<1#6GeVAfT$_b&PNL\Ub9$]H]PPEFLr2*AKYmt\VqL5egE"iPTe.d>L]%!eq&8^#YBM>THgj)_AMWA5?s!$4Wg0A,"U7P/M!=l)>`C]2Zf6e"VT99OhaLkc^'NYaAk9LQ>no^@`nEEeT5c41`Q$QqJZJVT4=@P2$t3]f;L*Z=a;MsXU9%DcqD5FFFrrPV]`^ls+Hs0i"QS\N**)])-0-Id*-ck#VM24njHf!Uu4`$)#8JHI/Bbfmai+\PM7/='H6LcCoaf%PirJ:3Bi/3?rpdKbaH="7aNtH)\%eQ-J(E/.Zu.XfNacRTf^7eP=Lao?0B:DhW&E(s+kgUs%BiAcOVtLhq0K#*@H@m]"e)\'BsPX%0U3T.%-a"[b`traNNb4P1Jp\+#ip)4Z)ol#GC66q>i/)/1n=_+WTW5m7P%mD`9@;G[A1[lTcAWH3b0]Dr3X:'nE^V:4e&^D5$(:K`85-[C&Im!,%T*1k\W%Lr"Le]CiN^*bl^4R6=m+Tf?omMPOqRMrJdsgc@Q)"rnEmk;]+s?kLm.J.9!KWV"P>hJ%R(k.)2q?#-W,=$*qsqXh\?^76lr9&Bq^5Ss\^&-aF)VJNiGn/Jt905PL"MQAfK9L.+7/b02Q27S7:aCiQk>oX3Lk)aXU&lo$LFQ%pZRS*ad1ZA_<#uhuT,O/McL[:4I-HoGK\h^NWJfTC'V+ZD-iLGE8q6@LO8cG0&UIMm/[lFo\M+;j^'kP\_Y>H'"'u"-`L_;l5%?8>e6pgL3?]K\G\ut2QEimGe33oq#%iYOn#U$Rs;U$e6Sc*:m`(8J]g/J#r'$?Ec939(0+Q8'qrr?dJ<=a(UsK6V2/TC=c!DJlP"iEPtNenhL/mS$61%P+Ql^$hc?.g`8%T7pQ;geE`O-Cq9qXX`WK#7&/l;HAP*>NdQ"1I]9Qo_O]"l2c&<^iq,!Ci(?E,=3&S=T3HM)HE+:YA2gFC>hCk]g.HX:tZD9!8`JNXP@+c^B4d<\(]c[R(;m<,TJ&qt/5-$]u`:?_YHP"q37@T=GMi>4%KpYB7:YY?[^r`5s+1d:M]$@Woe9Yl6\;SadQ,NB$ek]'K&7@$Ei80UM_.`G=fDI?fiD-mUDWcTU=#)YWWH!C24g:iUpMs=TF3GNS^h$4mf3'cjS&723;#8S-*g_JKDfRit?kBas!IkrWCN6NXBF3tTRiC-+\WR6@Gm&]1'An"$>2kX/4DRLNh1+,`LWnlpIMPXs4^^P&Po9eGcpNp^a)`+TIq7O4kAmL'l,08M[t]uiHPrs@'/Nh^jHGfZJ]Ac)8ocqV'MsfdH<2\t`i@PqFlk"9IkW6J%Lo>f(Pl-Afl?XE)1fh2mNNsd[1L//_To2bZLGMi6.E`(_qQP=XJJTCeLUuH.O7/IS#_eZ\hUdV^olgr"=gBVjaL@C3m@gAW2XfArriS:I3JG"s2FJGk70VH`"7_HcIH/pBJVm:bk&jpc(jlV^QQa0(JHiic&2:H&W]^$I@qo#P_;6A>Ul:!?Q1fFL6MqSKIMoHVFPD,9J]jR8k"aCMN'&h3=qY8!/8T/;>bG("CN7:d`f`/>[o\)0Bt+)3H6CQKg[S(S=D5L@F%-8TWCKhk<8,k\EC`fIQOu%I=UX&_8:YoGP2%2P*>hKD%o6%kJKe2=Ln(A"EI,GoT_`nh$%;6MA6_7HY!!lX$"SHET]U"5OT()2aJHPkeDdb&Ojt7'S[il:.d(11H!+RnJ$;PqTrfJa$9S*jKdgIa_*1Q::%P%qoD3'c46q7KeR3CTAiIm75@(%p.N<\f0QVKB2O?R5T@Dgou6rqGp;JRD\E31<]D(&=a7_,j1,\bDG_3j5=nk<^^*PDOi@D@\HE-OM>m`76+rf~> endstream endobj 344 0 obj << /Type /Page /Parent 1 0 R /MediaBox [ 0 0 612 792 ] /Resources 3 0 R /Contents 343 0 R >> endobj 345 0 obj << /Length 3131 /Filter [ /ASCII85Decode /FlateDecode ] >> stream Gau0FlYkRu&c]#KJe\@:#37Xc8M8,^.;Ck@\.eZ,0'&OV?L6H`SU\ENlH?V@X8M_Dc@;@R++Q&t'95JNqb0nfXFBQL&V1;t?Src[4f$1PCU,53IT,Rsm9Nk3Vl0*'L:EFXH;m\P9%A&b(0Au.\kP-4;c<)GNXt4E,0?Q]:rudMq)Ktn(QRg.+VQ1?S+aMJW+('VX1PGuB1N6P7,p%_=>7&7[AuD_dA^-P.?UnWZXu"gTH`'hK`gpKZ5=i7gHC'Aek)XNqGK9ACWXpE]\k,"df&2qdfntq,+r?]f%Y=pne_gANn*3OF`iK;cPZS]'^U)>Lb!%?8%gL6pBWX$gM():O,h_7F[g4c.>?SD)@:4(BodsdZ*sl[$Q\I:b`)g"rr%8Uh3A.'mG:Dp+3@dMa-#\%@W5*;k;_#*@rR&#)9:NgB%"X.]*H^((F>dCR$+`md.=72QHmJP__:1G)>Yn=B]?Q6r]Rl\&#Ba\Mc'o'*eJDMA*Jb9^u(/BR._@pc.2IKdiJqd947;>+MIG$DI4KWI$?#p@!G0KO+hT#$hP\)a5gPIE81*TlflYQ#@"H[ePQ+s=1>BJ5%!,u>[0$%LI:RF4/,t=?p[\YgJMB_YkK*%_WPi'fifl6;G]`ra/3)hch`Y#R9(,I@i"j"eA("ZmmiqQAA'&0IJ`=-e+,JK\3a=7l>cX4!aK'((D@65>dmkM<`O?9lcs65UhBHUs5Buc<$$_`l!U(8JtcVG+Iuc("6e)/EFWaNVn'U^.G2_GAYf0MR'IWf^kc?TTWu\d[KWQl"_g!!\h%N%bUg["g.o)`KZ;'CF&@GR!=1j0&^dHl;&ec`*?3Kc+)m]j9/>u4?*%b+G[0b'fgs2O$jIdg`pIYPnc>VWL?>EKh`2!-J\+Pclifkk^\o\@jd%S.(;+("9C2^`hjJQ0j*/-Jt@WH8C?@0'Nm8@#>j3M+jVTS>qTmoBDGt'g=pJp-IO=KK,c>,Ig.@G+[R$o1&q&a^m4tHk5C$b"\CH-E;p7-(7%b6f.&`nFhZmFn^1:\`72_@:\q3P9Y2Ba^qED)kc=R?X\B4X'X=\IH>=_sc[_]Z98mr76gKcal0uc4UHe:,$'UV1k(KfsI0aR\p,/\Q.Wcj@:Kk!&'56(EBrISm?oX[m1&aP'E,thA2+@Z,RJJ'7!"%o<2RA`$T+&[DpG=:a^ecUd'd+,;pLQ#SKQ1Q;Rq8$HKIPEJ5W=:eLW+f"?:okM;Z]kbP'\;i#%b>"nFH.$qTa(K;%CAeoQ6D7J'h/,nm/(%Y^@M-:6F''""*TU`trqpi6;GLsZ28Be8KQ5Cp)fCmX3Ui.Ptq0F>(ncMl'E$&@1g"3o[Q[%s;4*g]44;f8r!XDpm(BMB"CC80"sH[N619#s2@jWc4D=)HFEDfIJQZf3d8,IoCCZA56DlR@YoJ,+>#kPr%Xa2]Z`e@X+3:\>4KqG@BcKqgh\+L9TZn^;KPUG<^KE4mhRAb@;]`$64I>R;i`p,r#U?K[qhe5a:Ok;:[krCcK6bJ;U`+NSUelX/q@o6fmj5kZZ&QsuD^?g'R]P:gR<.KeR-G-$Y9+k@nf$u?IuRboD+pfEq4kae;;TLc/:=FJm4+4h_^0jaAF0ajc?a9h^9)qlfn]U@:NOh^f79g#4lX1eOI&:Zr=d6?oSI@51H7$'5&H)SPkIf8Ae/DiTiE"dEbdjtbbWOIb9GpR`1<@9EjI$[3#C)`c0HJ^Su@7Y,0P+@)RBV endstream endobj 346 0 obj << /Type /Page /Parent 1 0 R /MediaBox [ 0 0 612 792 ] /Resources 3 0 R /Contents 345 0 R >> endobj 347 0 obj << /Length 2528 /Filter [ /ASCII85Decode /FlateDecode ] >> stream GatU595iQS&AII3&A#dai\brUDV>)6P6M??!);#;;"q2gY92!*(!ObZSULOG%RooZcc\qMhfNb(@.B*h9NNA_`r$-2LP*@_/.E!`Ran_b[k%`F6c-qp%#Gu%k?F;8Trj<\kCP$s&Kji/!DI)ZguoJa'*k@]fZ[Ike61D^;E>U2>b$`lQfCd+0Y\2/13)>s1HSaFl47!3:kL0^>i/S]hh40&j@C9W`3h8*mSGQ2-8_)XIE[**1LO;Js`ppdYb$up.6&dbf?a!XU.'3)[-I%N3=7W\dfSjQtop/_j.gmiY9=)EA:_Dus!4SFrECi%<$=ZllU'HCa.4/X&.\:n)"'0UBWKRS`&Zfh3Y@G_TF3(H!m2@BmrkO/!UU,Or[F?Uj14IG!.cpJpWLD$f]f5$?'D@AGZ"Qbl[;kI'0F-(M+n4.%B3D`f;n`rY,+"k(OFPE(q+HY$`D;?#3JcN5pV/G]pm8:>nN>qgp(=ZtE6DM$m>O;k+8X_sIdO6ka/j_6tue/QONuDF`oM)6U4RK&ch+W#B.ggrO&%%g:EXQa62DKL@XHmLpSRL,;ZRI(@An.=,>IjXqiN(u&Q0/+Qu.&3&CEZBVi@Cl2*W1If+E7uVZ'A)pB'DHOc=ln8=>E%44mO\-Vj+69!2>#^u=22-"eFuFE_t4KGH:=RAS#W6"E^B4E!%?-t#`n<:I0n&uM/Ifj\W)&!M$mc6j0_\o)++Itgh_&MJAi>QPc3*8f\u0a.@)so9q@FJBo)fb3(BCQZ=bX/IZeoBHMiLj5n-?=1MY[E+?V`8_/LU%T0D%Th*_+W%4YL3j1Y->Ug>sYqlM`&:JlGL#"dWp3k5$Za5IMs@>;rcL@,XSKm2Z,7MHd,/LB9%UrM[1c0JKikY/`Yko&sdb0??Dn7WmLgHiLM9&^#Je-44nW@AnW?/kj'oEG&(L?t/EV[?f1&0'_(K4+/;lFeiLWo8e0X?]jYlV1$g@8c(&#';/,L4KAot]ZD[hROXjAfXba+!C4tBXaR>ApV_c97Qh0O*>Y#92hViQ+i6KG%2'G/'IlEtjFM)QUFUm$*%6S+?(oH&E1*h0lA)7^_9TJ0>4HcZq0qX3Dt:(/"J@TB;K92F+WAj=+VcTPX!;e@,9q8_91bGEWLt=#R\jJRq7_@#eC7#TA`^WCc7D\_f$iX::g9he6SD&j/qlKTR9'-6luiV%'BlkL'taXZ7;-RW?4L8f4>[$GV\c4#KEP0cp(c@4a?ZSOAj$BQnD#PQp2)Cjl1!kLcX9#(pqnaB(q;n2)3%A^:N![.m;p(c$6*"$KcFCkpm_fQL>53*nZV5>? endstream endobj 348 0 obj << /Type /Page /Parent 1 0 R /MediaBox [ 0 0 612 792 ] /Resources 3 0 R /Contents 347 0 R >> endobj 349 0 obj << /Length 2425 /Filter [ /ASCII85Decode /FlateDecode ] >> stream Gat=-D/\/e&H88.U#jH1TOB*De4[7dBT$KgJ-'#GTc]SK:h8;--;,s;3GF!ANd5q^6Ijj-UDf\b8L4RVGhj3&"4kugNVE00ik4_`!6Y\/pn;b\D15$C%NfNPosAtM#)@LMTXp-aX)3V*f@'n1okQN.(gG2Jg,gB!d!;'uP3i*;o>!`;*GmMiR2=5,/!nKgr3?8ketEg,,]#/T_"CAd"%KqbSK(H75;f*9a2*:8_4q*i6-PDD-`iHp65r,hYJq!6u(_l`/5"$=u7Dj]X*i*.>8hTVF<.8VGe)sR*DOd29a'a9BIf#:"@X\p=#?3c6b1$PnkEOj]b\<6SfWSk3_&IfiVM0QZ_b,?"-L6pVK\sJILq#KhQ;N]aj&kU#=L=SnRI!E4=_rm:e-^e)!iQ[]=ITT]8Ood;$VIDECYM(fD6:/:YT8V!9%BT0Vq9'P"\Bo9c\&2oeBIP4Y6ClXMbB9,gd:JF&Fk*95#a`^#Er`U6Xo(MNe]nGU<2[0KneojEcXo=%,i$pmQs%`96R,7[2Ain6U-Pe6F4q5r+@=4k,T;=%#&,P/cpLNf_dgEPO^"aZ,N:O6mQ4=0Cj.=S(/H-W8q"fL,.`]Qr0NiI:'JE(LD3ffA1Jg9/;u).2&@_47ls)J4;6jACi`:gCDgutTX$Po5K;6q;C-E.X$WF:)uNt00$-"=2+/3"c5]o.8Ud.AIhh!WpIAj)%N/^)e`!'cB3/'g'd'2=.^kcJ<(0N#aY_O5oF@_$']1B;+C2TMQ:[Shp^A/15AS?j1!@P&!@(K,I)_9F/;,dX"$ELZZB,_:;,/HG%=_j_eT;c\^RF)Cj]B?iBB%$F..G`fVWjHcH!0&j(7d3([GF;jN@0e24H(AG].#tKr3@iBQ;.Oi^AKO>.P6RJG"JGF\Mm[>4D$@@Oc]F;T4*[CWf,::Mes/\qW)n&DkdeCoVaJ7-E=4]J_u].!)"O/PEl9@B-M&bp]Zi?DGfbgjeC!YSEPA!E1]F2=36Lm'^]caJoCaY";A;i6::d)_."56:F;.`\B*MmlQXD4jWHcF7$M\.WM]NGtNGpgW)Hm2cYm>Xb\.c>&l]UKuCK7Q5&o^.8oOCApj-0UYAPr$Y9gR'4$LFXli<5;aLNO$)7E*BnS@\nmj1-u-AI3E0@ic)<9,VcXp2W6g;n)M(aV5#)OoZF#7P_ka@ig'_A;P#nN"cJe/uPHjKp;D,=e"-j'SJgE+k$p?h+,.4Sd7?7#PXT^!PP/F7Tk/XF4hSrFMr_o&5)@>H]ag>@=lEe:J%ZCn"tJ[K8f`&$'b"G80'.Zk%&T9:*s("*Qu%p]~> endstream endobj 350 0 obj << /Type /Page /Parent 1 0 R /MediaBox [ 0 0 612 792 ] /Resources 3 0 R /Contents 349 0 R >> endobj 351 0 obj << /Length 2517 /Filter [ /ASCII85Decode /FlateDecode ] >> stream Gb!;e>Ap$$'Roe[5b!P];ESP.(ndu]`G+.d;H7S(k+V4\/BiES=P.Z!Z]4h=H\T^aL4t=]RYTU[`F[?=\UWMQ2g8olhOXUfAeO!ue28<@=5TSE-D?00;.;<$YdmChj3lo)o=0oS@sRdkg!*jWip[&u"#B-JXC$sh2\"&L@bQ:=dW(+H+##8(^]ON]M+XUF?q@,p>MjCVA_aE59NY("'7Qq>1ZB<*[0ZG1j)/B)ING:V+[6Z/K],]^cc(OL5@9^R*6O5]/5*>HoD8oYVe$XZRg\6ej6fE6KQ>hL[ktAqA&#e?3eZ5`$&`1CKD/76N@'Jbmia;/h]H%.CEFV)5e<0"IrJFrhscFU6]EGFL?@]"987,J)&u=d5?([hpsSiWmJRO"7CaDr4oLfe^AM)ttLKHo`:V-]o]&7a33MV&uq_2^nms@F,#'n*;bF0b0W:q0dM7#Ch/73]'^>9(0fkj`1E/r=io'*>\*?19SS@]%^h2!4p9kbXIrDAbIO0-q-"5fj,A/OhB;!;+W$H>FGDWm`&#D$aCWXK?[-@&@!t-;7O2K#)+g1I;U-hWr4^JlSQTR1(jkUBdQQY'g\4C=p*NK3o_P+MH`&1\Btqn8E*Cai'frLkb0.WXi-:bOeG>,;X.:pTD)Dnb0hB2"k:o_gF6#HHUr@0SK&];U5C'9:3j)7p0_2QDSp%n+l=nH)H]IpK3dPFi\%]&-BWq^s+-P.>T/R/uNb]4rGlo&5]@6OP/7\K2H^FgSO@=&*O(3XCW(iq5B^=gaOuifHBKeo2FKNLsER_I)+S^Q.[#2.`FZnr$8;"YSM.#@/F)W&F\%)]#%A%YPQ=U]KH[NB8FUTD,LKiIDIFE'&l\?XrE_ILWg*`VhTZmpbLa^+*.uLCNFq=;XmIpt]/>6@T6Z9T[2qtDhHf%/FNH,&0>,.Or^T"7+Lc[#(/$=enmbk^a]+-T!PP.BBn*WDQfDnjA2aKfRR;!S^T`-LGVNl+N?QX6GLRo\eWRM9F_F23L";7_Xg9^<;e:gTS`N1)U48O!rq*,)mWP`,(2H_hPG+@LeU\W5c1$/re#oW'8AmQLob3T)HoJhQ"bQ3Uf2R1!@dS3et:JnC:I2')Xa%4GWm2^'o4\S.4Tb[Jp@%<0sKMj\)*l/sfh\7E32.]E1RKg'h6m-)?ijX*?45Ns#Fpr.04$6gBgXjLu,)[/;r*i]2@PEC\]WL?ibCcL)C-'pWB!`l5Ju6YiQ#H`t-cb7G,\iS_JQ(88",cGLNi_j)9Spf+`6Uo5gT1(,Rp%9"D[5`\nfCY<:$.*E8Q:1`[P4.s.DS#]MRE,e_eG.XWd42J='/6=%lL*49;c&I7k40,0Lq6(Wtl\(lD,Q\qu^g&-RcYe+sKG7(3TZkbGIM\<:Wg6KsHUInlXlXNfCR-._V*7N\g'^Kt>'k%M0l\g'p6?.0=8U9)Y[lEPQRLc]^**UZp/Z^F/AS+;%>0)=?iE\BQJMGr]C>5,tI(l="1JH&cNB?XO7rUWG)T#C`^p!.fWfC,bD'[9_2MM&_jWfTXcEU endstream endobj 352 0 obj << /Type /Page /Parent 1 0 R /MediaBox [ 0 0 612 792 ] /Resources 3 0 R /Contents 351 0 R >> endobj 353 0 obj << /Length 2196 /Filter [ /ASCII85Decode /FlateDecode ] >> stream GauHL9on$e&A@sB#ei,!ZA_?>ZY4AMdM*/;6bD+8;"R"GZqWrS*(nqE;=qVIoOSJCad*].2h5E+ndUAlR5^1SqlkD>_6k[9[e6k1g"(%0/K=[dbB;`e?5Oe@Ya]BN<[MfKQf_>?CLOseY7f.2hE8(W*gS;[0`T`.9%R3+X^8u,`3gBJ;A)4VdkGqba:o4-b(m+^[:tA=jN](nt;de?V,-YN@5/GS$iG]URUchRKRq@sb8mLL:48K*q:l5lJ2f_O64=bP2`BTJMWOotdS<]Jr9K!OfSu!`h@'8S;8j09(&<)^LZBTMXuse4+LsnuGju+Nq/lX_"(Jqsm7.!k[=@*=s:C6XI>aR/DJ*_Y^]s^GeeTK_uY7Gr\`h.?R[u9ZmYYni`gnMVUEP'^FI_Zo[@"V4FH[[jF`VZO-[6:Jah(_!Wa8?]a2uu_HBOg^r>RiNq"c!oP&Gdhs9R+81Pm&ULQQT-j"`MOmd)(-Y8n6Y/;49^!q1L5/ZH!=-@iH5r@B;k[mH/O`a7i-gqMWM5`7usQ`rRg`pk#eRKW&0k!DCSPnL1YVHXK(Hd/pq?DnBDo#m6Zhs0qXG3l=64fZ_98a**dcFdm1V[0FWF:cfr*A(jb!LIJZV$=uR,F5lNW)Unk-lZo@M`e\D>f$Rg"4*`K5NqVqK.\JGOofQl<"%hEVDKs**`^;06L$g^O'5(^&%EpH4kq;eC0+Q)tVn(t%B5gJQQEf$]DB$J,^$.BbD8HN^>o1):l]Do%i&N^JigZDo`k3cAS(XDBSR1H52#eg[rSRe5:9_efp(O"mrhp8V+2t"r,HZt0dPb3=7>ZV+6)k;R[j`?;RsZ]\WdANW!N,P1nPn0_r5$'["QV-?5T@n/B:B+W0h#HC^++7*=Rjm+lZp$JhBH6+L+PX>J7TM1Ih6mSNNusY;c>@LX2':k"l*&E`f>'aE_L,8e+N3(l:Y/`kZqfsEo-"jXu!SCfL+:o@N)Z;N`6;e^#HA!@tU_?KT6L=IG9Co%X6km`#:`3ZC"1?Mh@K1_imrl!@=JsT3gkDCX08Jee85q-tk>38^nB(M+7X`:&Wq0J%@mASW7"/A6)h4T/P#s5lC2hjR.C2UmH.>Irr$9rfGl/%R/XappgoBpn(+s'$'6BX_iFF?\(D-!I5ikg(IgOqc]RN%j#2=I&-8jPIWt8RlaH]h"Gt`7c"qNDWN+PHqqIPiu6ef<(9`.+5H-^F~> endstream endobj 354 0 obj << /Type /Page /Parent 1 0 R /MediaBox [ 0 0 612 792 ] /Resources 3 0 R /Contents 353 0 R >> endobj 355 0 obj << /Length 2780 /Filter [ /ASCII85Decode /FlateDecode ] >> stream Gatm>=`_3ZF'Dbr7>*OUJfE*:^--`C*d#u7B;m/b)PKEhoA'Y+*RKs:NU0/#U1V3,A^6uN;K?.90M3joYW-q(om?,T[V>,eg<1-g365+5Nk-a-@5&\g#M2_\;_ttUrun+bXMkK7XY%'3D6T-Vki)oWE&M/T:OWritm=$,`;>s@B'H$7_F[!&0/ISS=9^OQ+uKhT8F4Po+-L_%gY?.`p98RJbFAVBBg(bHN'c`PI.0nn.Lc)kGh"/>IQBH`7GoC>7"D=(#C9C>Vk$:C-4G,kMOf0=<@*5)2XM:'cbr'?F.('_O\d[HWoGo<5]3VEAL:+28)sJ,lS2ofQ#kYXS[EH%iQ=BNS*Ze42?SD30E,(`/5huCYk5>QrI"\^^hec`9hF5n"d"G`^#u^UoUT5K%u[WL?e-f4q!]Au/K"'ga?TC?K9lX3dAmD`J@W(:]=\@Md1ei_:b?Ul`tVps"K>[/PmL*JR^eX=QM2j]j*EBs-jHNrZs\JQWe"B/HSC&^h1BY(KuU9]1]rP[J>"<+&u;h4782s`U^(rbS?qY6PDS5`iYt>6?3h9$IGg9_&p6`l*IEM+&/BaYd`Fc"Yn`lnlN$Dh([.VA=2*UTlj(jcZ#mIaW<.%)0=Y1g#KUk-Fb'r<\I.crXrq`bfj$$%C3iub$$ZBoQJbJr-CkLn/5(*;Ns4f8-A#`3FTUjal.jpRH.&d27+EI8lFh$E_6@0=[+/D:F<+Wcd9-3=QhJ\4B9j'[koh2^#)p1#Gd/S=U&ZZ=Ve,j>4hmuA@YjfE9m*3R6>4j'=i=FK02XEc(rO_)"P#1sN09Z_%0F&1<*6@ma%g`VntaIdoP=9qP3(r(89E`5`G*m^Ue%UHL=`5GUGtEhVKI[,k/F2Y"2Q1*(,%SrM&!+Hb-U%=/Dk*)n$.th_^:&/I"W)4>7dUHh?Gl`7KI_S7Vfm^6];@$=T4.e[]I/]_f"tNe]cQ4hHWi:RNI@ZBrbiA:*,mf$ChOk=NB$'dM'`gDmT1;4:2Fc>Xe1*L)3cO*rVAQZdMN>9tt@Uhh,@lIEk2!\2>Tgc&\GOBLDEUfX2M\XH@pooXlPn+7_?MZ?hb,n@$%H="&aV-tjQVTB>j`k7iLhdk7?!9L%]rFBYT')1a\Q%j?-RFYC@0l>iHVPZR/h05As%eLr"s#>SfDr/VnN/',NG&c14"n,RB#[XF`C$uJS=YJ1Lo?O#_V\6fX#7=H>#\YWOolV5d\)4CZ5Vc-\R@3`5!5Yl.SH*iD5&DXPQ[?-32cU(CWeOUu3J27Mg4sKC?WBO,X`"7tj&HhKO+-[JUoYCHKD93BgV_k*`mZK"(/^;Ac.E,,d-AneDX'McAUIN(9%D-@^)E%4WofG]+5[R)u:n0GLEfHWa6r-"oUM>6R36* endstream endobj 356 0 obj << /Type /Page /Parent 1 0 R /MediaBox [ 0 0 612 792 ] /Resources 3 0 R /Contents 355 0 R >> endobj 357 0 obj << /Length 2510 /Filter [ /ASCII85Decode /FlateDecode ] >> stream Gat=->Ar7S'Roe[&Fu%c%3nd#Xk3uf6TV;Nf60#J%*K]*RC:YfOse@poC$n%l_.!4Z4e@cluNZYmp,\ah0eqc5-u^_[P_F:Chl2/Q4:UYE]Leq;bDEb[,tTYn(V]FbI;2*P^2eSPY8R"Zi75l+2EK_=_P4B*tk`W(SrPASTW7`)e8>"lUL_j55T81PE8`."(pr$?Y?$,/MHT"G?g&Q4pe<;cA39?\[3-Y0=,loN)(;a\*F^bnpF&Sd(o?R!u9JM^9&15@:21QIk+l1S[o'b_fYk.YP4#<)e4j>ZPgnJ&e+-FD4'>@VN+0+MP\nW[PdKH$[&sqpY0>g8MlL7p?-AL=$&$\6['*+YBTC-Tom@:^\KrVTQND*%fn,T'<_OWL?;,OH4>Z=r+Z3Pn&3/`V4F^/+h)`B"+65k%4GQI=f`Roa4g-^g#E>fW4;`mCOJr6C_57@Y":20LH6Ke30`qg5.SAkT\,V[eqe$U(6U4M05l<7jg4gUVf5[G+(hL-\qqmNN\rH#D#UMMIX2rk"N9`MU;]3Ur0M_gp+>1/+@[J_G9lU;09?qQjH#'@rc71Er]b>#F`njn"lL_r:(&-p_NZGh#*Pm-F0q6n*i73YM*:<5bN3Flf.3<[1j2,5B14=0`Yf:EW>,'\.QHG!S-*,f]agqU"d$)8^t6jAM:M\8$*cLE+`8qlUK<#FE23mnHK31TIRJi^a[Eq9`DCR$2;G(]uabDAZ>,aP`lnp#^k]YTdPAD\/Xq[4g:cT=/LMfT+F5:gncVB<6kh.=32c?:9"4r*5VJR(SS>(+)pb3A[,?"Ic.aAP5_W`&NbekUr^E(EMe(u/(Z1JO$)&nIYL^hCde8qu%@Tft9T153hL@?+mEDLqX<266P9F`tS[p)13=.&EN`*6tAZWUnX1d&Dh6qmH#Z^>KM:DaRJQ9PsafWfmt>e6dOWP6D1WqDe*s4N=F(k/d'WG.B0h/'W#\2.W3i2s_Z.`W9iX7fY@;[L+\u6XJMB^I/#EM+H7Z/(?bJpdT4kKdM>&NL./`[.Xa(@7Ge#`8OW+BEX;#kbi"n@ID7:hdoq7Ku"E:=eBYLD#G6L<4cM^H+L,V15UliSKhDI%+O;hl]$AJ-$M,7I:!lQGXrDPt^c;b`+q:rV3D`*5-na98%J"hT!+;VXeH\B!.01,Set`e*ib)K;j(QUGp.%lb(eNQpY-3j=F'8]goT6K:#r@m`j;2b)<;*l91Sg:1N[?`rgE)/+SN6+`O,=Zk0lE?lhkTpBR*K^DcY/o]E4>\*pqC8b-,0.RVXW%s>C.:kP4C7jB0B/"mXY-7S>T9Sl(>HLb&IAGCt#g@B\$$]`'9(BqrVP,-SZU9[M!j7)W\i*eQgX!i2QH2KbNU#,#\If'fcpA0-[;lmkqd#p2_hBY&;OU5co]WHV_LdM'1f?ZF^V9,X@cs4coFLC(bRVDdr#:C_Z+g3PhlNK\&GU.$58ehr+a/B!#`ga_`?m[8!J'%]e^Wl)D9P-br\?F2`>fBs415BV1[X\0p:0tmbL=Z=W^SF+A@+9Q1W0Is&%0lt?N~> endstream endobj 358 0 obj << /Type /Page /Parent 1 0 R /MediaBox [ 0 0 612 792 ] /Resources 3 0 R /Contents 357 0 R >> endobj 359 0 obj << /Length 1642 /Filter [ /ASCII85Decode /FlateDecode ] >> stream Gatm<>Ap9+'Roe[5^>ttmY&+];Hp-4b-kSi[G09t9=GE7O(2?%?GLQ\WrKbfq[To,1Q.p6C>_-0->n/3KVd.sTG1$VnK0tZUNRs5?FS'Y1R]58`"u$c\Pa6lu6`RJoX.%-6XND[1p#!/=@0%F9bNqA+'WL9WeKO`=q4ZjRg?X-QCqa.mUZD'Jrd*'sr[s%KrKMfB\Jjsg6=i^6hX1(/-q9m[*QPZT8r5!W=dWodECc4l(^#f0Q2PbD>6$&lWn.b;%-*(OB'!aseY>m]4G(D#14tABI1un4\ABhl\.0]IbNblA`3m\%]YY8uaQL"3SY:O;,I;g9)![taH>CYIE;7O\AZmeCYr.=t"4G=0F#Z-kH*Zn1gUbn\iVjDQ]oI/`p4VRm_RS]c7^S/Cd69/s:Z;O6H3p'Q^G`#b3$84[FQfebGFLjN[,M(Qej%o\i(;H>N'Y4`lM:j&i9=<==.i#*QF8&5OKBQJ\PjgmO+_94W]@mgq6sV]q!B9LeGLbo3:;8&l%'D++RsMNS!c<::6uo1B!rkII7rOp#GRIg1_)q4P3f`=_7NN!,OR2E1NjtC@DK[q%%e-9+$o\#sM-S3)P_SF6D0u6)sNd)@q/rk9nUu_m=[72 endstream endobj 360 0 obj << /Type /Page /Parent 1 0 R /MediaBox [ 0 0 612 792 ] /Resources 3 0 R /Contents 359 0 R >> endobj 361 0 obj << /Length 2525 /Filter [ /ASCII85Decode /FlateDecode ] >> stream Gau`UD/\/e&H;*)+W1*2"E9NhB++:]NV/bc)GnV66Ep(\R+C0mO="!m\*fVj/J.%-I3IIf/Ynbrq%gM:L7@&5#-J>"W2;?^&@T@"O>%/'*9m,H3*%s!4P3Z'R5?(k*'.!kEdbZ@ION3*BZNu!W)+LoO&mGPlb2h_?$_uhuEkq-lU-'X/$V<.a;9g*_/W/J+%]D\ApQp9PE%-UV-hO"7Cpe,)CnJp]#TZNONP5&5?X*bM.9LN@VOUUY4H)YjX(m/HL&7#\'4a=Y%?['cb^mRe5M*:VmMsY0$#d!f1D`bNV.85/q`GH1U1`7"=k$kXX@;gWVY"p]qlCdeR[\PA'*Cr[rD^A[bsB.d_7RjPGDl$Y9nSUQ"FI%Nd.;E]1AO.dLq]n2E^8Fd4G\2m'JD09tVe7XRmQe<"LVUho95m0J1YaM)nNUCU"&\brH4plurJjNMm,'/G,?jEMO$CEDU>&KN,qR"Eob_*n`K>-gS-Ek:BU-Rp/ph.6b&VCa5.7mbjbCTR:"GJbce]G"?^4)DMhqc<:.\3^Ao'F`Btq6pYF0,AKB=7M:*VpUkKK!2+)30Ut09dG0aHcBUE.\(G+eNt$o@`tLeRnnHJ)AhoLO[rP$>0-#S];dJ`;]2Y@b_9enQA"M7]^oJ2rpHB+ZMPWN+Y[4?IB?\A`65fV/*AU`0T^si!8';5eglZN;GJB/GT>,/Q'3M)>"?G49Itj*BFu>b,p;iTd&n[A>_Ok6UPQNRlCf06eh!Po?]`dT@C*IJ97$qI7[SAeO)_UA[rr%kMH]ao^+If-Wfc,OO[ac`=1bhC3k=-7g842`egbfE_GVi@$usj3FLdV?KZI6Adk+NBn)F"PA^Jq`e^ABBqETQTT+%$Hg[oY(B9e<-/25L8^ku#QlQ54nK.0e*Y9gO\"09A[nT"bE`dm+M"!)hI7Q/pA"-G27@>&H[*t+0)T#:?U\\tcZ[L>gEOg#XF',1R[%ss-Dc!(TePg)%T;1o5int8:RE'i'En5)`:@o5k+*1m?/;@]11`1Dj6/MTEL4*pF2NbgZj[=FBtri5uX+>m^^\(Ok@tJ19RCqZ)iEZX!f4$uc?5Hb#iTGe8=&"F8]I!J(a(mGipS#pP1aYaNL<&l:eZ$jTS<,d8PAM+[nCJ^8I15^i,s]<@9p(R&e+HZulZ#["S!D;ER]R3pOLkQm]f-DC7I@h7..iQD!,1s4YNoH0Wj!g\W]CCTh\ZQoOJX+Pr\2h'D=?X0!WO_Mk/ZguYb.SEopG4!X/pDb1>R%'g0s%II4l"FVWkCd2U?$Bh/8"jNV[AS\qnsYQPU`??JNcIA1?.#Ca\DgNp/MjT[U84#h4Sk^FN6L1%eqZaG4V``[#kCR'u?pXZl9'4T#*ERu?!Z1Nd+AB8IU@LTf-"?_`2VcPrLhacj4qJBAa1#h`Z,[]$q9[C_\=C^>L3U\"qh9QCUB9#LjcF#X*qNc?rZ5MBIi2Ob(fo:o>!T:pjRK~> endstream endobj 362 0 obj << /Type /Page /Parent 1 0 R /MediaBox [ 0 0 612 792 ] /Resources 3 0 R /Contents 361 0 R >> endobj 363 0 obj << /Length 2667 /Filter [ /ASCII85Decode /FlateDecode ] >> stream GauHND3*Gk&cR6oK$^DOcs(MIaJI;FK*/`!Oe=+M#m/WT^m"IeN$V=EWRLOtGK?VV)2T'LF]'0_n"b5`1V<8LbX`fsmliqlrI,Qg6ua7Q0;kHAG*dl@#I32e`V4&%3E$_@fXG-pb;.8M*I\M$%uL!h:'3VrOVUW5Y;qE4R?Fr=\LQVkB27K]Z>;_[>rPD:=GRkRPAc1'dYJO,7&[\8FO>?q"_&5eI"X/b$WkeaP,N2@UQd&7>YHHT_Ne\?bj"lYbA^L*%IrZoE+fV(0UKe?$<*n\>\<3-=QHN>GV/EpA+3Hfu(_Hq,I1cB?9hD/NQ[M#Jo0)J%DH,Z1BLAoD.PXT4@iPpTJHX>uJmc]@>267:[aPb:*^0;@==TQR'1c,a]""GBOW^^?AE?>A4:389ACcraJ;!#Ko!VL1uO5/QV-0`I>70Yups$A(F%ZNe6M^UW]'1*7Or/PlJe+Qq/3t5YZ_?QFeaRi.hOL]iTdKop9q"4.P5B^7"fp`T[oPcUp;W_k=.Xe%o/CTGGM`T?@n\B=B6LDKU:M33q9PbcD;5Ihkjp4):1`Gm)Mn\s1PqSTp.^:$EksiH@W-HhrkV=^+Pksr;;eiVTGg:9'*r"42M$BjH$u1&>s\jOAPka3qK]OQj1jA.n+LT3VCiLSC+psq\4$H2*k=faQs#tSDNU%T7]^*U"P;7B`Ym",oIYn8MF*YBK8OiJJ6?0^hf6C"B\k7'1g][TU0+N&*'O6;>CFb)i]/Oo0s1-;i]$L8]h=AV^?+T,e!\1:5*PB<_*fEQAT%7!2j#946JInfNYnIX[hM3!%`,_2(:U+RBd'^TAc+b&BGp1Qh)5aN-'1]]rfBOB@'@5S=N9!YPT)#:'N$J8>PdO$KgqU=-.EM#Q80N1c<4DlDk:5JIp5%5B'dSKj\YDA4OlHK5>a_2fN!#\%bKP9E&Cj2Jt-"R2?#DI0T49Q`3cq!MuON)0s)_?)=`-Njc@mOpJQ$58kIK4=G*p'R08Aq?uo=OmfisZ5bgW#otbaUSlMb^r>Mgac9hb-bDFWFl]DVcu8R'>W2]A5)".M;hd?,C)u.SO5]l_R=SQ)5-Vl]\'96R[?0C*1I4Hbq34N)N1$fJCA30@59(07g_CBBcUGFMLV3BhPkels/lm.Zc4BWJp0oT)Dr$Kf/.osapMXWoa`cu!PDBbHiqb))@:p(UZ!Y:#5QCDS+$V]54Ch[;SaBl;JNPt;J4E)rdL0<)mnO$i6/'rXh#Kfm,6o';RIRf'i#k$e(k-t`r=3l_mA`J?]D_?2I-m*rZ&R8(m3b?=@ANZ4#PpJO^R]C._qa*l.CL!9CTjV\00co>`]&?2Cq1Zci5Gl!L(R[P!60%F!r@E789c+/H/)4,m7<'&a:^iokfX`/3td/2%G<.<_WR]?2I[8G`&B9PGb7:UI3S,s&]RUQcaqOiFEF^!gUkLX@i$Bn1pESeo$XAK4BK>*bdZXn<\Sg(A/]KDV5$no9_E7/(7*?t$WF0-]JOQhVA#oR"hs/i\,*&[hP`NO1/nNIGqcPWk8Ctf%m0X5X?mg3d>=h0T+LB-A\%Y=VX[1\Pdb)%u_=26_8Jn+aIJI0&mGSnh@'o_9)nL?9=.Z>`rJ&e?QK_oX>"LX(fL9t$;(&2bfU1"J>_19qg#(uo.4VuN'`tVoZp0Vj3_=JU)hpf?GB]jQ^!0IP8k^f5q0mqo;Qrs!neEY^``B\C\nXG%Nhs=fZOd/bT`ISh9BVJ\J]hH"<5L::d1%'Or77k3m:lf]iXTKW@LlROWGQ.c';.`Z~> endstream endobj 364 0 obj << /Type /Page /Parent 1 0 R /MediaBox [ 0 0 612 792 ] /Resources 3 0 R /Contents 363 0 R >> endobj 365 0 obj << /Length 2723 /Filter [ /ASCII85Decode /FlateDecode ] >> stream Gatm>D3(/W')q<+Jc+UVdS:amTn1bM8XjP%GH8EDbuhOfQhu;QHd%4q=hlhWIt%V2\-b/QTM;6#0E"jOf3:I>k5BJ2q'7N3A%&d.XDI3Bj]FG=FY(jmcXbt?5^M#TankI3T%t24gT0>)ofm6h1E\j(i>P9bdUkhW)RV`.GLeqOD#!#XOJcglRUhKBO47D+oUMX5jY;6:cYoTMbAR(RX11dmm/4RY7b.1>J3,HqSK^kHss[F)*:flh\$p,2=lV7K:,&4BamQ6E"p^YFTcB<`,]>6*1-n#fdFCk>E2>^;H]+EL_P>!F>JeILkq_YLcY9S2648eqL,Hr*'i#CXY`RBAm6n^CK8KGFKn=@(%9r(sWY[T^ZA90HD1;+)2L1#R!fS*XcE@I#UJ7]R]"l99c$F4&S=k%Q%"#c\3jlVP7=eaq'jZ!,am*FUeVXGBs0&$K-Od?BSEq6^$iEHb\@$.OsH10j32^!0+8[C;mQiOjHN^*kJ1l2*Wop'F]:QCq6OO#)Oo>YjjL2Fd&!c:e[K1&cr\!dis#&H'ooAr&QX)tT,c_B-(DXXEA5&pek**%0e[O(i5d4:StdHKYu`^+\O2m<6#"DXUdZ&;'hW683g1r$mM^c!DL(FiAP[:932V^2a$#%f/fe(;!gL1YJtn*_[A8\'bh`ba-U%^3di`1F.'e=U?H.,LnRQQ_=FC067h8#(r!QA='-\AVD+ZA#koTt4aU#ZA]T36EcL0fT#;)RT:tk3pEWjnZ+_L;O#/'BBig'Sl:"HJS3N^,eVhRHY7ai8OmGi.1:JZoWT.rGTHE"3@lUQ)e=5$%\.Wg0n@M0-K-5cm^>qa`<&sc'e\'7N:/_nY'mlO@h!s\K6.Lo%"\,;Vif/=?oU`Vg\urpPG=ecLMD'N6jA&+_2=4R[!o(cp7\bIId/M#]/?(N-T*WWhRR^7m%''Be.h2]DN]tHKr>XePaOqME:<\,\!TPqr1a1R8smt4'#<#:N.AM=Ou;\,,q1>KC&R-G4r)F]<$1H'K_BdGCkO=,qZlY[,N^2;=K".n'@q_*9RMe^bWJYfO3i<*(If4"8_]Q%5:5R@SI"*7P3WC0=5Fi_7IbAfPO2=D[*5oDpJ[;'LBN[,%lnr'#/+40T?&9Z%poTtA!?,BJ32YV3S1*pgN8>]aa>/R)!oO7e1,Tk3HRpHOt@SJlV6nfBpqU)/#0=Z\K)l&=h8m`;*(*#Z3ZJ-;(^q*4%gN6E6o,QpBD,jsNoD*RdN88CP)bHFL+?CtHrhQ&[5:bV5?/.17E!pQ(LVj:ZSMd.H@&B!2l/0n5c2>>+r.L[#b2^qaq*d`-@6XaKZ@,>7-:lR+O^s3Tr]I9tW>S2D4m@5uE(g8C8)Jd5$G84M)slQL7I'5KQp?TlSpDs6.Umpc(na]F?6J(TT.`Ok6^pbb]OOp3d,F4VGmO<;X\qS'V&sG(hYNoO3G@V4hOTi=J@[/r'Ypsc+dZ1Y--u'h):-^0,lYbI;>*SHA,G=h"8W",AQ"T5Qs`!cPXDW^pH];d*O47EpR@$j*#/0-d9#\=3%>,2Z$t892QmYk67pen]/H`,[KKb6Lke%.O_t)mG3:fVc9LV'IU6PIPXJbQ?^%n(l_,KH-;kF?DHHiCGWU29~> endstream endobj 366 0 obj << /Type /Page /Parent 1 0 R /MediaBox [ 0 0 612 792 ] /Resources 3 0 R /Contents 365 0 R >> endobj 367 0 obj << /Length 3178 /Filter [ /ASCII85Decode /FlateDecode ] >> stream Gatm>gN))Z&Ui84Yi[6TeI!K#?Ca&U[b%gu'do$Dh)rWT/^=bM1$4S(,Y,-j[Jug&_$c\6?J"b#6lMtCctN'2G^4B#qW?eH$_)eZV7q*(rq5CtZjF-fb"9BSbOKrm=I60\K#"^5@;R[sH1A1/1Cnp7D8=4O0`H6/]PVplWY8DX?(]ba!].WG!T>4j7B$/Y!BV)+D"0bQ/kUVlB>o-nZA4E+JL^.\C\$9-!f:.qA-Cekq$2Yp*[/-(mA]RUYKjD/kW)0#a05WhHVBth:2RQqM"*ck0mYu,Y&3lL=b-<8*":`5#u;Q>)37JT,Bmlj-.nRh]re[YkK<`GQXNp*fI*lSLq6@Z[=dIC<$/k+r&q[X^pE#SKISeJnS)L$Jk#L^;E4+.O*G5A@["$,J[5s>gVI/X14W8`CIDg(r@[Q\%['O:Y0ZsISfS?3p4XmLAe-LpN'Fm7S"+]!7ffP@V?JQP70O?eak@Qp/R^(iJo+`hq:c+7la[1qkSJe\Xp\T'[u`O5b&hj"Y;ArZgp:9-C-9R9;IX);0DPV@i3Y9-/9G&6m*l`XcA.`LQu+2r.G;3\8i["L;PS"a5:IVN,?h6!A2Ghcr)`9'!b8aVt_EHsiknub$iTJ@*"]&sSg?MB9>jR5Mi#U'<'9H%&t`a%mn/84<8N'ZVaV7/*>.D]4lh8\ip&PXOq-q&0Yg:SX^djQ@n_T?>c8O375`1h,S$57\=7*A@^Z9)O+%J*EQq1Tn@VE.gZ--hb+'Abj'6ri29d04B\lX&Z`mp$a"olQ1+S*,nLq"#pB]INjD^i33'/Te2g!7'9CK>q[98OQ7B:M-j#:f9F!pYScs.`.G-n@6M1m;i+BSpQKT="L;_0ugi$'n2^><@\N;7`sW"bX#bEj"FjFAG+CP:Y-+_17Mq(F1&tO"(L4)=Yo`[=bW]1+L#*GIu)1^JF\us!>,0__p.k*HNm#UVRG`e%=.G0=n3[m3k,PKE/<6b5WSuH89\OqXD7!s*@XCUCJ.`(%R.0l^7gcf-0u`2=;R"\6/!\(H%Z3n!uQlBj0W_;E0c(@>E@>_PuejOrD&6YY,E2+ZT!N,1E<%Y>X[3XiBf#fp1?QXbI*%=>kauFjmcC<#:T>CbP?b[q9DD3I1]I;4jCK(C5c_Y@42AFOZQ;a;/JZ]jHkeRp(3Q:3Wa5ZRuroqJe5[Mlj)R-LJlQ<7XWBSHL0$!L5:^hSrt6=Kd3&&4.2X884(CFl]Mbc(9,4ARL`o*CH`4o`eMM@)cf$a;=lG+<0S<:7&(9(;\%lk[N2G%aUqkI`A=nFo6Pda[=^jeZFre8PU1RFPHh?)2XStbDS)hg'EW-IZ)Rr#8g?aO[(nml3jS]BAMURrXkCG^4XAEl1%`u<3PSfl0&/uf%jGVjKp4PYJ9_P&E`CD"EYHRe*(3##"=Ck/EBj>,_i;_&1rN"XV9MqELQJfG:cKq_A00EX\LS8M$$c68A`L$2I)$2XZ"tMq+5bN6/$)*YmCnof&PRD*Xs!hC/AK\\a#Rs9A;ElO4Q`k?\^Z[P+rfV;WKUsu^Y[Gh"_GUP@aM[+1b%7159P#c5+;Lj[nN@f@S:R-o?7YAFF=5f02ts4b#MHr!r/MIknU$aX-[uHAYXtoFHld@*O>c.6qAV4Lhl%pAdpH\eTrg4lHbRI$tHQEn!r4o50N/FnMr%@YlAO."SpcOQ\^7pTh/l*boQf2OZ$8Zc5>>&LH!=TPdVds&(^_(#3(q4jtAV%fY'C*0^GJK7nGJ7nApA+bk_p@\4FX1j*.'Y-ZfSsrHcY;A_*bCYkB]Zf%L5-lJ0rK,)+0[Y-D9mUCk4V]C-c>##"443RpfDda%+:b&YlE:E`Ji<9E+8/h6?'uAWELF^IfmXH;5b^B&IBqB]TtsgeJ($iF?%:>Dc+X(Q@lB7&q<#calcVt&!/WpI`f2\p@Qijs)lI[qDnML9/4LR@cpFJtef">e/L2TLe\+'r@E,uC"IONh%tW#e3pEKo7^)((.d#rX##>MG#\.Y=,P;Yrn[#C^+iFpBl4_=kK^>.mNaI-RFW$rE=!'F!m-:5QA=YfE/3LRYN?b?F&\[?%,'pro4/Y<&"Dm,JPk*<5l@fAA%X!h>PS=3_lDeQT7[om#ddV(]rYlQgcajmL&(^b%Q/]VKbQPK endstream endobj 368 0 obj << /Type /Page /Parent 1 0 R /MediaBox [ 0 0 612 792 ] /Resources 3 0 R /Contents 367 0 R /Annots 369 0 R >> endobj 369 0 obj [ 370 0 R ] endobj 370 0 obj << /Type /Annot /Subtype /Link /Rect [ 466.188 465.654 548.82 453.654 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A << /URI (http://static.springsource.org/spring/docs/2.5.x/reference/mvc.html#mvc-multipart) /S /URI >> /H /I >> endobj 371 0 obj << /Length 393 /Filter [ /ASCII85Decode /FlateDecode ] >> stream GasakbA)\a']&X$=jAReC,Ce#(.LoiX'3(_>ss\$5UI'bSUQ#4N\q^A:^"=1cKcO!aFj?uK*]:)jE2#c@h=4<4qYSerC.WV1hIjpJbNIL.JD[%jA2)ZIQ93U@Ru;NGTKg;)rC:V@p.9C`@3TS!e7afO/~> endstream endobj 372 0 obj << /Type /Page /Parent 1 0 R /MediaBox [ 0 0 612 792 ] /Resources 3 0 R /Contents 371 0 R >> endobj 373 0 obj << /Length 2740 /Filter [ /ASCII85Decode /FlateDecode ] >> stream Gat=-95iQU'#+6E&3=A&S)XHhoZ9\WVBh[^^jD`MOLp_Abhjj;qI8!/:"&pYE@qI4\,@l/];rZ##mTjssZ8##c47$euKp%6u*Z0p%>^tq)6CQrXF]4U31?ShG?6^)df_$9/p;-#m+)am6jD3"0E7([0OLW'.:GU*Ur6UVKXLfe]hU8jeK/2lJ!!q0aTA(fDSgou)hZ6X==)O<[N0M-_-X1Tca0d#OlR-lut!Lnh!+nPY<7!KS'A'%ih^qGH;*.=c7T9e'Sh(!H;QK)thobn&6I!#k,dG((_9&;9=fH@2NZq!l@Onbhh3QLm1t\B&"4CFQOSl*%A^qRAl-UP>'6+<9FCFlIK<\Dg;mubU9uZLd`hU=FD(cgI,7fc()D-HbTJpf/B;S#04?*MU3eEAVNQ)jiFM.iR,m3c2N4GEEIj:T^OVS"2e-=G)_.1L]2Jj&kO/bANY[V9DM'%kI%no2=*hE];2p*+ZQK3B^@d-.Ilj]\(G[``\bI%/2/.R'3H"4rO!sGP%P**V`*c8HR2i"W6<2Ts<9YEU;?B&81At7H/IP7LU'N@%@O<7Rj]l^:>`WYBM7@3LT@UdOU(#UtuAe4!(a-HW+H3#.1Ag.9;a,*$ATVL0BAVILpGK8e6]hBNo'cU0s_8!*Q%sZr_h,P57)EKe+@kdVh"stZL_ogNSFt5J+?=YF:rk?/GEHUm)NUEjM)dBr5YCG>X7%aq#DX`QnTYH+.fM/H)>O.c.hYarG&VJ-!#`&p8q?bs7cJ8`e,2Z/5W4`N8rFGnV)!\*n$A)dm"E.t8/'#crjSnu2,_?-lOi\pSdr>+78=f^7iaKj]O/1WZPXcO(nh![4ihE_qr_\m\%91#Ch;JXQ,iN&[e;7u;DYQcAC6&K9J:.5.;n(thW4,%6&Zb6WpMr!+:)3K1!sI6<-c5`*fih'0(o"RXk83jL#83HDHXjuIpgGE?Y`"E='>YoF9:%EP5D.\R&gT-4/CJ82CA"]A0M*pF7`]84i_Q/s7uB]pXY?drKW"XT/!N(6oToYl4'`3IHQm!o(75$g`jF/-'[mfP$EWGYjfq4TZ3M2<0uq9Q(?:JK/b=Xf!0mIBrl\@9'su^hH]l0IYg]>k=1e;jR1>1>#,Co;"2Tr)$I-(@.mXfRVJuaB1PE!j`Vdp+9/,>\J@Hn!aV7X5<)aFoQOWbKQY'_04XabPmJ3&Lt8*]seY.IIZZ?g)c"&/cU&2USZ`DUgD'l>OkB\E@lq6AQ>Q*&\s*K;b/95A%(psl]:;]k-akVq+lg3t,'e+@"\$rc'Tog2*#bd>%d#.?J8P[2nYjG"fCV)n&qdki`OUG(bMVC+Wj(Kn$B73Zu7T"\im$)'R4RT%FT.FMM9?q(mgRZ)8#m9+i,j^e!kK-MY"mkY5^%(Dko:Bd,7q-rfQ_nbu_AF-BBDL\/ThXa!^oo2*fd#S:dq"#)*a_=ZNUYC\r:3p#8iTPo-aoaops$7?Sh>~> endstream endobj 374 0 obj << /Type /Page /Parent 1 0 R /MediaBox [ 0 0 612 792 ] /Resources 3 0 R /Contents 373 0 R >> endobj 375 0 obj << /Length 1458 /Filter [ /ASCII85Decode /FlateDecode ] >> stream GatU39on$e&A@sB#X0P"9N.0HM*]l`MVY!m"12>93)JdL.SU1?2Z\@0aWJcKnMoXLdaYY?m6d=dl=QmR#h4bI5mpgJ3Q:0?mpC(p<.ON1_t$$'0M]f[pq\HEp3D6fil^J;Y^O/go\otIRsShcaQZa5K8(rq[d1,P,LOP-ZBhj;I%m=I*D9NK>R\%&T95Z!W;G;9A@Lf&2g:"E+Sq9MNLO[plsZAN#j#dmA=2RS1U=j_.,80UO##l%'R-\R)1K9K>qtB^;C9LX!sCGh<;h;#:?4Re@r,pjp#uXn`%Adfs6DHhBNEG;%Lug8s7gcSmLf%/jPKe314Aogo#FOXrZbE5-K*SY!_N-]=W^&>?AL"e"?$mM4;%(]">@"(Bq*G7:@t5+B*nKVpr=W[.6Ym0l.qp$UEk,n5\T,jW!8hC!FYiVYQ4nSaX2VD<5?*8[Eod21!1p*S\B0B:\.a\=auRY)(%\$LNMnY"o"9(Z]+c&_ZpJYHk^-(E*VW4,R,l(3t>,H`%L6FJ0\S3L+0eWc6luCm/F7>Febc%;NgZ_HX0=c">`S2GIp&\$@a[D`Vt&g1sp+\rbj*fEN6JK212HrLUINqAQ8_84-.H2H&`HX(pH&Me[+;"U\9F41.T9++>-&+A.8!M&*Ie/lDjAKPTCY[@!j%Q5d>X'cHS5^ak%EJ;s"W#"V-N,b&WBMWV7:G;kRW$bu endstream endobj 376 0 obj << /Type /Page /Parent 1 0 R /MediaBox [ 0 0 612 792 ] /Resources 3 0 R /Contents 375 0 R >> endobj 377 0 obj << /Length 1857 /Filter [ /ASCII85Decode /FlateDecode ] >> stream Gat=,D/\/e&H;*)+nWrUTOC7R^">BQ6aCk`:b6V\AK(hWU2=AFUf(+=m+:]>;ta(_ihe]e;9j']f0>5-6j_oM%1^-%8gX[;J,b]&$9+RKacAN35Vs:#&4'>WT23CCs9+;>%Q6!=PXQ^e6VF\J7OR;9kYL*-KWE%!>m^/51dWn>U-1Cm*^1m,_*e+0LN&?Sf16rc-TcmOG"mh+?(p/F*c*P#2C<=(ki^]]#`uMfnFi9*G?^)hip.nOQ1PEZ7n>W92!sOW3FHT_5?96&9Bdc=O&Fpb=P)'j0GaIYu)L9rZJi?l05J@1%S1O7uJAt6J9Hbe$]tbU21Dab:RlS]X"q.aKia0QhQk*'0ItUCFD&8LLWfPEEISl0pA\7f;+3LKZ2!#`)'0SYKn(-MAd51e'G^Qiq1Gj5II%HT;uOs->&'Lg!nOsfa"G#P,d7dJ^^P2c%Ng7>o8;76Y"DKN("j(+/F@bX0p_ba`a9I2T^'@M5m%#$Wk_!+%LZW?]*EKE=e>XC%9pb8hRS'NL7Vl&8PFj0h8MAQLH'aaD=_2S\VoBfC?QF3BO)E5OU+V6LXWU-t^s>6.$/5Ql]o81m@G)F2GF#S1k]#s#KQj-[II#?d'K)cIP8[XV2;b1A)uGaBGfuZ(orb;+H!m3cmU.r[J'Q@4FtL[l@,5)4+^Vi&p[n&GH&i7iAcQX2p^i#hMb?f;I=@9=U'Vemf8>F(m8_2@j6:>A/PEn=UKE*.Cn`UiuDcA#=8&R!p@DC?u-^kq;V+sa6S4=hd,,#YlhTTZR)bdd:4F1%DmclqNb_>h%,_>GLP!'^R>cK,BR=e-1M2cG`cJ?UHqKb5Fm7i1,m*j87mW;$H!kT'/[t%rRk_rh?pf28USuQ1l^Z%ce^<`o%r>o/fLnZhGd*0[Gs:,r2jrq&Pa:1Np"nre>b^7iHk+ endstream endobj 378 0 obj << /Type /Page /Parent 1 0 R /MediaBox [ 0 0 612 792 ] /Resources 3 0 R /Contents 377 0 R >> endobj 379 0 obj << /Length 2761 /Filter [ /ASCII85Decode /FlateDecode ] >> stream Gau0FD/\4L&cSq?60M5KfIQA?QU)S+Y,.d[*4M5c+t/>#GM5+jiK4q>-ft3j4+*[^/W[P3C'1n8ln^^b4"nngp$q;/rorRS)kVe8d_OW25Q,OG"ef6f3RM)X63Tc(n!PLH'OG[ie]g:(*2GhX&'*(KnGT!5RW<9Y0\pF^rJ2$G+F5t/aO:$K:-Nb!+.YRIUoU^6_^V9Nm\)+m5VnZ6;7GpfM,=:ehrdQTYH9GLfi\MN\R.VU]cb5PYmDap=88[C^ZHV@ZTeo1c!i\h<8:hH3ci$mDJ]@@DCD/14j'^*uf.TAFs6&RcqldK3>s\ks@3b3SD\q7n8<:Wm.nfS:X=m[q6CDYUIlr/fIO'>ds37n'7#.Rc2nY!%+7h$<_p^(b.b"(Ven\1u=OK5_i[c,,m%Q>jRXB>lUZD_R=IES`V9*q$MRJO(B^(G[UeJjjOsGD?YM(mh#YEYdUH&MrJ57h#bZgS__c(3`12cUHR'5ib+3p5-kLg+[o7?,:_lDgk.t'e0>*:Zk)Ekh8is.s,Or(4&CSM+u)rG*]"coQ"/.RqX5;Z@%]N%PRc@QZ=MB6h$#6$VP5m$Sh$\?;$*Z/U,XBe>0Zbpi!>cnoQ!1s3$*X\cjOI;_Q@FS%UA,u*P1#DW0.d#,0pMVd%[:=I8H%to:LASIjn"h2+)dM1c4jf9Kk8kMeY.2P"dQYiD\dq?>"?8[9^?.;S>s_%L5#4U70'B^>]o_XWoorOh0CC&$gbe@b'%O_IOV4"r[DR/__!eGr=&-(.Z8+cUt^F7GF3tppb:8n\W9K5_&^W"P4Qub%]QF[6%dU'.(U#*H/iDJPG%Gb!,8T9/lD7OLOlY1a4p_Mq/7*7uPqO@KA(pB+&tc=$@=iY+WK6LS]+^o>/2s>dVk"*aQIl0'jLeO203H^?U>)Z<);^`D9W*%>F\@Oc:_fUZ/m+hDW9(^LR%5k9?6P6CMk.j)WZ*8c1`]I,^;)Z,@'Eiu+'_`L'0NCC(r%h']$(gF-Y`d-VT1T6n@DamCnh/D(4+sQSZ?#H9hEo-<&iVr?P6s(SIZf,XBZiWDR4^`ML>uYE0EdRo9SLQP1B_+G9V'n3Os`8pqc_Jo,SYMG/-1+K0-#qH'H:ndn-Ql`l\*/\&X^\e![NudGF'AdlC9$!%n.6e2i)Z[CcHeD>&e*\L\l!-=SOEVTp^T$jjcVLmRC=C3fN=:/7%uTST).-W,`t)GF_od:)p(82$k=O0o(`kL7Nfk,6]"GA%8*ql,%[*k59*LG_&HeD68H"5qY6\kRgHo@!"unZMGG.(/c0XJZqG@XIbi!LtDtO'W:$qdD^/k.X`d^9*@F^H0]d.X'X>r;b+!9>$-TCY4`"nGFjjbg^g2CI7aO7Hce7/e4Mb\\Q=;ZnLM<-NXXs0VE:=q[55cfktJ^5P-CuH2`Jco]FE]VF`H'Z4<.W0M5-Ic@ql_gg!NSp)=Lqo[42dq"fWpFR'XX=FbER:FkH%U48:*g!MSEhRpn+[Fl*+7fk0hqU>52Tli>rBl@:TY-qlnM6h7bS\VAh!"WIQVWUtHJ4NUP`Ct0tp!c-bAQQKtkBB!&&WT7Yh@iMh5iEcA<.<-DLE.'<49r4(,fs9T#_XuUG]f$65-o:f.Q]3'&B1rC=N/FZ+*9:n%Sn7;)2d+7"hu`iV#XXO"Sk>.s6T3t>QAGd,G\Xqa\3,;67R;(LPOiT2L$'cVSC$l(:JE(ncs>^RLu7gU@&LE?/"+Cbl=fWj+LVU\HaO6,[AH,k9h*0Pe':>-sFrkZ%*N`n,.D;.7mYmkO%&PE5e2KB0BT_+pHgZd_S($A&)%I]1gn83!@*!G'@cT[$.FK7qSG9?fueq+2GWb[_i]N+JWsan^,f=rmRs'LPP_iK^/^c@A1QtBRm]h/F]A/%?<&Lrsqf9Djp~> endstream endobj 380 0 obj << /Type /Page /Parent 1 0 R /MediaBox [ 0 0 612 792 ] /Resources 3 0 R /Contents 379 0 R /Annots 381 0 R >> endobj 381 0 obj [ 382 0 R ] endobj 382 0 obj << /Type /Annot /Subtype /Link /Rect [ 54.0 124.807 250.956 112.807 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A << /URI (http://static.springframework.org/spring-security/site/reference.html) /S /URI >> /H /I >> endobj 383 0 obj << /Length 3068 /Filter [ /ASCII85Decode /FlateDecode ] >> stream Gatm>?'CaI(4Df^6-YV,'t*7$?u+f)fWe@MV(1?l3%pc''LIet7KNb?N;`5>2B[)\2%n?=?+*7DT6h*Xci&CVmGm%"a1K+SHkH`X")l`io[@+,'C#a[&t_fmW.9QX$pO2PH):3MGQ57$gS:0g?\!<-bVuai*F%uZ.Z0&C;6pn.Z?>(08/[NQ.RZYg!,tf(Iu(af0^ga0o3jfTI/$FLLm,U^-mLPW]Z7/KmoTO6mJY(Pr7T^&4p3GmK@.`X*7"(Aug?Jjf@F.T6Gq63e8%=\)*2<^q[bt$V;'%f$Da"oPGh.Dq8oNr(n/eI8q@R-QTJ%cAMPpFg3`p&MANiZVA*bBQF%=#PA&m8XIM2]\@;/A7.7>QeeLkQU<&*%[Ws^VlVH?Xj66p/')JtTm0'#X-610oj@TteAb\bh=9fWXZI`/0H2Y$_b],0kFcB$![g8ZE8#VC71a:dJ$T/mKei.h^!Ef]4#@`,d0dIj_a_38%_R>LJ=ZF]@U]>iH32TK0BU2@caS[=^:"r8mY8`@4*f]=W\&58,0$HSFfFtCCibB_NB_mKhl-oG0HmtL&JGg+pJ=8'=X8?hc7W$jlB!hpC9/XV<]SXMB+9E(8Ybd-g_UlAr,*/qkWeCmq"$tqANiYKP6,]$,`%A<$j+9VCu,s#g6I)`bRZ3DKm9S@>eb?Hq@(co[9d;X1"+>+F;'"6"6WCs%j.D9JpcBlYf`R0VH6L@9r4W.8JVk%MM@JL[`Unj3o;TER5CYB[Ie^(pdd>Kl86\Hn6@H;:dLB6C0fH'F(,SeS/Ge9SPHII9@0R6ri4["..k"em`M9T8WEK2bJQ!`aB!,7+I8uuN['<=-Qc1jUk*$TBinS%t*XV;S+HlI0QaCc+/l(VaY&`q-F=qW!I=5mk+HG,lBaH`SQ@($C)cs[M@Hd@b,FjUIR+ISbW/tpI,f.591=Roa)Emke8\DqVL=b.gW2hpru(''F]R_"cnHmD[7D<,0VW`+1nm.\$MrT9T(%bWS'dPWWCFhnOgEr:;@!D/\`8g&J<#6bl,1hMYXpTFakE1.,L+i<6G=iNQTHFqf:^@*JPp$0_.!bL_7I>OA5UNlh3C59YeFm\p72OnU=E_lF:*`HAm1^&YX%!Ab)^&Kf5kW^Q#E+3=SM%Q*W!:0PEeL*$NX:c8O@1%9t1)iI9Tn)[=uXs(Crt+1a"]npBXo66W!'%W'A0ZB1O7GY8M3dLbI94L?%$V(*7<7VgXQM]WT9N*C#s\1@t3ARU41>f#5a=`>Ic4*:%Il,P'gQl\MZ<*[P7LI%+)B6YNR3i*D0'DRCug1KKb9qT#1QQc.Zfurk@X1!!kLm&G^,Jo_UR?N?n3Luf/*6l\_1Qk3iA7h@A3K5S;:N[ITeT4S?B0&fq`:61MC@f=u\W3``BLB+,:@2^1k^L..c>atg7e5-aYtDsZ>'50'Q1[Ke.:%smX8XEk0[YqkR6%:XM:+1e&H/PAS^\n)>A\G&mBj:&HYVG.04*mW#>c,s'e0!GbX+lD.kdDWfpKtG:XfoJPR#H*E$/K9lq'pn@<_(n/:CUKXmTS3.p83r4'K!^M]]Aj9DV[q')ba?UJrMD6h7#[b(M&>c4c9uJp=sdE`7RG$-Mr48#3.R'Kc%-R^*U_6X?/bOO5&?*h1SA\*ZsSX)2:`(IUJZ5Zns_6^lbs][9-RjJr!:IM2!k5C.n5ZE~> endstream endobj 384 0 obj << /Type /Page /Parent 1 0 R /MediaBox [ 0 0 612 792 ] /Resources 3 0 R /Contents 383 0 R /Annots 385 0 R >> endobj 385 0 obj [ 386 0 R ] endobj 386 0 obj << /Type /Annot /Subtype /Link /Rect [ 337.968 623.969 534.924 611.969 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A << /URI (http://static.springframework.org/spring-security/site/reference.html) /S /URI >> /H /I >> endobj 387 0 obj << /Length 151 /Filter [ /ASCII85Decode /FlateDecode ] >> stream Garg^iR2p+ endstream endobj 388 0 obj << /Type /Page /Parent 1 0 R /MediaBox [ 0 0 612 792 ] /Resources 3 0 R /Contents 387 0 R >> endobj 389 0 obj << /Length 1771 /Filter [ /ASCII85Decode /FlateDecode ] >> stream GatU4hijNf&:X@\_5&`NR6),i&2;QTF.)98/oR:?IHgA))e#e`E'a9%rpRH9Y]m@*SL4(B"5;;n\%CP#oO5<*nL7"KeVU"r%g\O5QqRAt7laeS7//sYP/b3d?4.61@OH;WKa&i1+mibN2j6_cQn[*<$6)8[Y,a[GhE@Uc=O?mD_)'k[6`a$R+uml\QXI`-n%;4PE9B?n7^q"prqD=oPPF8MkrfkY17q"5P0L9Y8dGV`R`Z8Hs+bH.t(EjTLT=+ql[M+X%J#Pj2Ll3f_`$dU(R4Q:+)JVqTeJIT6((gqU=fd%k80r'EZeo/?Y%Aa-=,ME'S3Zs3";8?'0`*Uf!!$-#4k]((J%%TX^6,aAC2**+!I/u*$f$q=$f`=@`<*'En(!!6KVaUt&]Qe$Viu1`'J%n.;:c0F>B\%G:75D![81)nA?5ie"-R`,PF*b[o'#45cf=\o9NU-MM*_E,;]l^0%-TZ1#:aj3OZ%oH40L]+D2V0XYVEa%#IiS.\Bg^mm,GH+R@b<(YeG(YLN*#C$Xq5RCr0_tJR'CU@[;J,6uUKr?o+cl1,uQND@]k9#m&&f+\R8&ciUmhlpm]m9G9WMrU2T_mjnrc6r80IJgXF-0]smK'5>>Fpo]C-;0OW8MgmqX_^3r]>XruD;jKs(oWGqCGX.&O/rcZV@S6E?]ONYa/9V.[#@1@/"9^+kVKQPFNJVe&1em=kd(QP"B<1d).Em,i<[bOm0t/#n1gAL#_a%R)h+sREP6=^>jks[bRBmUD$r:em^A2s+i--]j@L?L\g\@g[4)S_'LoEB7,AEZ;j8Toi[2NuVEg&S'PG-Ag5HE)[rO:LFP#mc^k7:71&Fuj$/OQ_5go,hHRU&G~> endstream endobj 390 0 obj << /Type /Page /Parent 1 0 R /MediaBox [ 0 0 612 792 ] /Resources 3 0 R /Contents 389 0 R >> endobj 391 0 obj << /Length 2185 /Filter [ /ASCII85Decode /FlateDecode ] >> stream Gat=-h2e$p&:aF]JZ]MXV7R2[f0\"gC=HL2Q(%@*Uc^J^=Q?g&$3h<43;;`8"=fjJfb4J4(nFB!($]J%Fd60B@C:XNl:I/L(rl0bV_;HDq*@5*>I.Q+m6f6R:2jGl3/@IK4n=WF[E_e56Q=s:ArZ93KNV[G2^Zmj!U_/CDss/fOl"Ioi*9E48.'kkIT8;&P`6RRZmMh+OFJg>;-jfDO5Y22;7e6W:XJD*?M_AbJLSN@A5"qcaqIQe&>U/o&s8+O*&ANt\6te1n26i,6EKJF_'VSedS%k:u!O4o"&+#*2%(o/XtLo2nOtDU,Z>Wd+,%*Fk-V,LLqM:A"26\-^qjC3nZJhT1g)*:5BZ-qhtpeN$VIc-h1-f.BMV"DT2@j1-XZhbY"U9C1V@FDW@f.qQm3S<&M[(7/][TiU[i\llPNs.\3r#;0P$q.]uq/-5Z?;I:OQ)SD=GZ,/lcYl-NnB!8>i3;@,ShJO(Da!C']JnC0(9K^nrLr7Qtm?O-FdYl[3nLQp),SZl=1MjX4l1*$UM=,2p'E9;6roQC!-I7aR%p(67X`j0j,aQ7,f=hk9Ft;2:pGm!]/2+FhH9]39[g$&a/lmQo-f)G41uDni+5BQT@i)VmJ(S6B7cW6:Y,!r0c#",E]6nP27GkN"NlkI('thmK_fOOG0+g\?jmf9i`'e*c+@j\aZgnfb"#"+Lmh4&`%]\=3hQg(%SA]*+QAWnuaIg"(;/[ZBKP;OO,RTcYL?J@aT"ifg(<%O]W:l;p,mp73`O'EI?0dT;Wq"qj:Cd"dtdM6>:P#%?#&0bNP`MU)gg[""'qGNI?\Rfo`*=6_^%iUT<=nn#'C7^Kpj5Ln`RX2?.*q98@(ST@H9\[XN(:fQr9Y.P6?E1$N$k/?k#]?:Q;@Il?du)B(AFM-.HE5)]-SB/7F..:)4(n7*@[%N[E2V&AaMd0tgmT=gSc'J`Y$cf2SFj%3rG_7s?]':t&^Z8H0lXU9S3BV6,3\mi]>?+a:Iih1(>WHlLG\mrfiB@,C*`*5@Jn/*+Ml*T^F":DFb0@F1\Z1[JfGaG=/T"rbU)o7rg_cO:!/+,N4Opn9Gl:[c!'1"im9"hCL#Y5SHe',M)b\h(cBJ?$dQa+P/39B'hd)COa]?HUdKn0hgUDtlkZOss;CWn2G.:FpZ1dQ4"U*K1-GjDr]D12*qI(WTdkfdQ1+_F'C[^$W>ocE/'"0t:.VK57$Z\L/6/e0"gl6\59[ONL0q[hI/qgZ$(l70/G:%&C0i7m3L+UP!T&e9'kU_IAF-Rb>H"M]F&>a3-WqbfF2c3;UnfLG_Z0H@np`krq"*rZeM#199Z38&3%'>*EKY>6W[.0(@B4Z'LZ*hd.//#=B:eqekIB%I_&m,se8l/ae49Y_s]KS0u]LdF4:pUjf?C+0 endstream endobj 392 0 obj << /Type /Page /Parent 1 0 R /MediaBox [ 0 0 612 792 ] /Resources 3 0 R /Contents 391 0 R >> endobj 393 0 obj << /Length 637 /Filter [ /ASCII85Decode /FlateDecode ] >> stream Gat=h:N)aW&B4,8.==f!37qWOmP.U?8u;67H>._6g"F:VR$DOZkM(2/TaR,k;7&9gn)p,5`cGMTmLFh&:/b&^G:@gk0p:OW&XD?YTbNc[,%XE]hg>J%"P'c.>EWq[I(k.9=tnf=:FZaEDTP[PIf>6N1R_%6+.N_''H`Lllcpd$=+8Lk,^g#?ni^OrNqZQrqZXo;/Hdeu;\d7@ZhgYd[>,jf4+Ss-r<@q_kTfYo!]5S+bU@GnCDgYngUF]+)te/=geQm'_L%oJ_r%2OE:(GT3&EUCm0J,pO523#pG]KuN[X%l`8U:Lb!Hr]!$$Q&gkS&[U9IauDPcTc'[_ZP(MsrW*8(LWB9/!/QauUbeemM*s=GFVd/RYd/dnRlKk9k#-30+\)Li9(qsB?(+d,\-s+BDq)4I!+&Ye%We#^[jU9'q\bcOC&`$a~> endstream endobj 394 0 obj << /Type /Page /Parent 1 0 R /MediaBox [ 0 0 612 792 ] /Resources 3 0 R /Contents 393 0 R >> endobj 395 0 obj << /Length 198 /Filter [ /ASCII85Decode /FlateDecode ] >> stream GarW0_$\%5%#45!MB'*X[8!"=?3LR[[GX>69^1\)X3@9@De7'Z8g'5qchG[)S!F0i\H#\e!=b58i^f^dB%gF+PQc8^D72g-*%%+BCpL\AF4c+Lr=PpbPU7GOQQf,Y8@*jiN;lL`A`(H&f!V3.#nD]L5E&*X^-5K0_JlmY=!sip,Osl^iT.VZYJS\:1^h?1VT1d&~> endstream endobj 396 0 obj << /Type /Page /Parent 1 0 R /MediaBox [ 0 0 612 792 ] /Resources 3 0 R /Contents 395 0 R >> endobj 397 0 obj << /Length 1831 /Filter [ /ASCII85Decode /FlateDecode ] >> stream GatmBb.E+I/kWH5H"P4tmZ$tE2u?E-ZNsZ`)7)q$6H351f'l]rYMZ6hSh9[-1,S8PuaklA+^$3o6,KmiE2/m,7g@SF*ohr6u1ubQ0T0*.M.]DXbV-G(][O92Q\bdYsN\Z]KUoODOqAiVXr$H\jk9B=@3#$]h:IEfStmmW3V0Z3`i`8#dK+5D_f9]adho@9bs6NB(m+1%//sC2=XQu3#])Va#d_N0MgjsrDSFdWgdmb0;9`!O;RSuZjXt)3a$lC`hLePO:&O?)n"Y_NV>F.F)j3TiB2X?!:Kqg:LO0BBKl)7UI56jSlr`MCu3O":^Th6AWV48/Y[/\rk8"l_GU;!JajFcK\H:lZh5-]b)e)\O?0,qq!$ljY=$3^i:)V#]mC+bMA0H*tANReGB]\Bkn2]rfq$ib&>_[YALe\a9W*$e=&I"gcQf7rq,`S2Ii2O72`"EF.jmW5U%dc95Ho\ZR2\Nc@q2r'1jB.#+ZVK>a[7P/(>ioJ[MOLDApf]ffXF]W,!B.bR$"Ae2Rqb'QsT\?(Fqh#2Ol4F#XJJeBGHG0aH>47=pH.r+E"13HDPH^p[&jZ0.G-s;>HW;3.Q%>V_Jd.O>ocmALlE*F/nothUOUU'>=Q4S.712unIoOX;ab#rT;GQN;ZU`=^QhTuICVhWdq?c!SPXiu/]"$h*qV5RMKNTa-O*Re^HJ@%D\1uZN_]=:Doh67QVc+"KPnMpYRLha[oX[73,88=_9`DRPR[g1tLP#g<_9t'TS7kGKdNnf$:-b3@gC26>$r=:A>8c)JWi1Pela`'X+Yg#]GXu9jQ_!*3QR?&$)B)VFq\Wm2jM6\(r:Ue^@$g^A\5;,mn,dg.t_aUJSY@LJ>rXGiZceM.9>D1XYd?1@5`12VBl9Q#=WU3St=RR(5f3ghg\XahK3EB*Pr^0f9u_d\m7n?I`Qf%Xb!6`D1[]EKDDV'4]&*Ap']rc-[I)K80E&Z?ZI9[g.))fh%\gkat`ElD-gmP`lME2!isZ\[NH8gleuU5qZ.o![`9cR(<,TWQLG]& endstream endobj 398 0 obj << /Type /Page /Parent 1 0 R /MediaBox [ 0 0 612 792 ] /Resources 3 0 R /Contents 397 0 R >> endobj 399 0 obj << /Length 1708 /Filter [ /ASCII85Decode /FlateDecode ] >> stream GatU5?'!u''Rf.G7.W5s.OP-g]P:O5<'+quC8H)epS$k>?joF4$(HU9jkogpMti#l#WkS-NR.:fotADtRE,,6p*:[$M!N8d'A$A_W8kaQ3`858d[GDc47fTGc[BuXEjL2W9UU"]\,3WghmBM5A(nq@J,e"VK(u0ZI!U6V)^^"Cdj3e=3<-/K9hi&Pb<1/0d=JrOrcR@qJ0fE0#6#PQ:*Zk@F"\H^VgQE4o$LN3=\(`QB5sdauF6ZJtKb:'t'X0OEcc\#h&]#$7p,.S:s$Q/021e(N7iXA?X#'@$`82j7R8P=eSl(M=pj`.9dg@X5UiCYQ*%nkI\"[dcZ6H82HS%Vm`i%Bh\3UnmC(4_lg1Z8g^`K%`#1PY>4Xq<9P2+nhXtq]BX@]e2(\l6/p=1)B32WRk+tY(O7UJ[M+b4Ke,su2^AU0F3FQA$1K-dlO8*,!-UJ1g29o\%a5h6sJ=2!R!1uS_k^_WmF2M9RBLr>,j[cVZ.f3iYN"S8`;(u_bI?]Vro*@]4lOhI*/u6"WSc+!(/$LNd=+UaPI?u$?STO6=i$\dd4l5j9j6^_,N;ia"he"i\'t.Snu_%0ZrG!)D$+VMHJX#1Xm1qIM&N3"XWF'gc;Y[,ri@<2P#*NN#\B(+Im0j)\,SJB,=b'.i3t>6?(L(Q\6CReUV[Kbcl,m,5su1-PT]e9lN\77Ni+2%:G-81!PODe]l6jnDCBRaP:@g6:7qV/d/brZ2eP7f[P[OKE=RO6[VJ8n)*&.:P89^pgCf[(MQJU_Zm[dJNd$oKb,te"%02HoF_#BkfOq/RX!IOEJs'c9cY2(aPm)P8rdEIGKZYlH!bh80irHup_lQt5(\`m1*X^LADDmV%e4n!\187i\]5nqrjk+67PV$gNOI'TcGZGI$.\D)=L@%nOhiG3DR"mJa%D7(#c596Q@n\5Mdk0L>rHrsQtOnn6Is9YB79QF*;!Cggh5j&i:OQSgB5"leh0*a.6143'.r=JeGt1G-V\@X(FoNZi,u/,X9=t:qW-=%b;ul#gE9j@H>b(Zj.UFKSfoHXFD:To"R7Gq2$@c'+.l4@9>.K'TLohCa5(\gB"1U/*5YR5\`&K6Pa#puQo]d*:i#h!)\0aZVWJSJrQse+ST)[:=a?kaDKL-iYWbF/97]CbK&PZsp+S)4Sh1\W9*[4-I#"A6nShKVLNr*4aP6D>Jh$AQd]j\<%1h<`XK)CO!6e^PLG?T:GE%DYg%!`Hg.''B1rJ60`jE%r1!.)V>j$SBcR.Q endstream endobj 400 0 obj << /Type /Page /Parent 1 0 R /MediaBox [ 0 0 612 792 ] /Resources 3 0 R /Contents 399 0 R >> endobj 401 0 obj << /Length 2828 /Filter [ /ASCII85Decode /FlateDecode ] >> stream GauHM>E@OK'n2c^U!ChlK:!EG?%[0f:r59KliX.QJ]E6B=e'O,hWYP%fP+:t+MZsYLQ-A=hWM^VZ5I8k#Y5kc68qMb0";,LkME@C>MC%m%PeiH+37GZR9bO-fSQVjI*UjKFC1PCZroLk\qoBoI'4jd&urBAdi=k::bF.ZDV10&5M0t3FQjULSpAQ7QCKhTIiqK5%HKL)Vi;Z2EtkOFhndkX8%0?hSa<1Y/:jWKQ\YXD8aDUaLrR;@$:0`Uk4QeBhP*ZmE[1"_k-dijW$j!`5&BXnImi/i9)rObk$7[PKc.HG3YH,0CtrBP_Pdmd;C&,r.-^.Iso'.IV6"6iS4\4C;9`?%X-crkCh'FY2sml$`oa@QkrqoZ5.Za]_h9TJqXI0!,R1MDd`NiBKZW0HV?D:[1_[.iUD0FoiZMKTOt-*DdoXR%R(QY`C%apbEJ+B6)3*t2Q?hiNc17'4(2O?e#/IJX:?:*>>T^BqTn8q=f+)<0=&&#c%_OP)@(.rO-7tm(5p&'Y^)l.5Fo7@*q3Ge,K'a6VU+RValM'.a89RE$K#G]O%qp,@U>lO?HoP3c8i)1s4s/&J[6PHJ=h0``&Sh3_"*0%_NahbSscO'QR$X2gX_UG;6'[<<]7J8`Tb>mTKRUHXA+CE3V3Ii_2F<=!UI#I8Ys8A8dXH3]WkNR2g.?[Wj8_XSttJF3pI*YgZhjEcHBCRp\cl$]Ck6Edf>d$!KK8i@$iaCDp:(@`>9TT?HR39i9hT-k6f4?.-lOPl[$0!1L?/"BLA6]?&c^)nOuE"(;!jIqp1eRf&N0k81".@NYI2U,E&Z8-.q6AFB4@BF$m:EYX+[Gj$HIT.a2fj:kA#Dh*@3\m->"WAhlMB,gPj`rR7m5W<)rJG.$X(N^dV/&c`TYIOHaK/*;D%rUZG.U5sM@T.t#5(:Q.CU')hcZaKA]XO\S4:$hd$jT$.%4!ID6$dT:8W?+N)8&]EfjjM.@`oN3-cNn_6><[7[Qm6khm`^64F#5Qr7,T4MA1J-R5k-gFpl9e0g_AOZFZ"Yud$J],tO"&luHWQN-9XTjdM(T(Ccq^5]A+W!Kf'ncn'/KqFTgNaP?)C38I4af2"EA7oGepBR2*F"'9^mAc.+:'N*fe-V].s$Khh;n5114q8#]LS,jd@Ap%BWmJtajq)jCL"e1#N$hfGU6DYXrG6WWFtZfQ3/cH[)$K1ZXPk2oktu$X!t,(X0d.JgF>=i3a<[Thp5MgeSs$`_&b_p+;/#3jb8Ta5VgsRdjHeM!%N`Wp")lDACUgp2n+bLs8L+J+ZD0%+mZ"#?3oa8P8?RKo&Smn?CT%Ej`SH$K`D<(0@H/_AT+0Q&A3#R12C@\7"%Dh&Q5X4;1)1eZ[3a7l-daeDp3o$p[aFfk9!KZR8KZnQ1-3G4ED+.a1-3ffTP0rS[f=$`L2YRT^<-@U2BDr@ZeC)ZNuFTH@FN8;k/3kdK;+-=#>hop"-e@VTs+=b.3id.+`O=?a=sIDY.$QjuAXR$1cQd::588J8r.r@tMbhiN9hje2!f@jh.b#@<2^bA:^"J6f@:.Bb2-]>bPV&m+_tZ%]b(n4]3SWA2kq__!i5Dk75]('XRGj+?M7g"a8p]SVbZ4@b@*V7IJ$7+ge^]_eI4bI@?6mLk8$[pF6(tNEZbs_\!hP`>les5RN61=$HU!LlH)P_"#ch)a[]EO^HQr\4oOG6E4Ibag,r;FgK@jTnFYJ&r?&sNNU4U(-]7of9b*Lf-;[+I(0Cq3=q2QK5Tei[:bn9,YRG.gL\6b5=nhMuO39sa)S_.`mLlp(9?taghIGpUC\#gRk>G0X$fRHuONCGV>oGk.0rLe\meNa4q7sE-)+]Ad4J;6V*R0'ZS8UJ.l;W%h6)l/aVeKu3?K#Y-ngb@eV6Zo@5\3LG]mYRh:jK1")I@;b:593"_RLE\angpmB3t9jlM#]:cB/\*1D`bC85!k:4dtFa%".0FDPLDe;fN=hU/S?3[?0f7\QRMSLZ^c+C/=`p\>Tu=?W,J`Jm@F1T(HukhN["R.!$oGA[Q`r]>0fDZ%eM/=h*":-b`FG@%ZkPHW9L1>c#.ju*]!Y;3WCl;/=HD%h]07c"3lq@3=]@1,pV;6)m][tUp+ZOpW@#Z./r;`C`n_quQ=0X[$VKpPLCb(riO=%>q,94.]T?MMI(6dGi?6R.i^6TRq2N#ZCHlc@8drm1]iHZJ6`":8-lr?~> endstream endobj 402 0 obj <> stream Gatn$+VKD]&4Lq-:;TFZ#nDYUi=T`S!eW`^l4ERsJ!rruA1;@sF:.BKrRpNaqek*ceP+jG@@lXj)#CrgSu2P2Z>A:h#m@_ORTpP#hRHqfrF((7'dLf2Y(dl8\J]^45gh%V8IB2P7t["_MUjm.JnFpJ4hPL`2UD!+Y!\Y`psh(hJng`$bHeE)UCP`15=S^+,H7p[Wf5,1G]mBE*bOKmPBoTs9C3Wt\fF8B;Eeih;\VDa;-ZGak)8`/WrAaX$e-i0fJ9.DD[X9HC%*-$24LMB[mf99P:rW,_qrr`XdBC endstream endobj 403 0 obj << /Type /Page /Parent 1 0 R /MediaBox [ 0 0 612 792 ] /Resources 3 0 R /Contents 401 0 R >> endobj 404 0 obj << /Length 2497 /Filter [ /ASCII85Decode /FlateDecode ] >> stream Gatm>99\*g'#)\qi6EdNMD-;@n<)Gt_(Ld!WGFJL-h^ta&!R4AE2+QkP+&ZLf5Cb=F]0D3.^lB?iWrocLOPp9o\5.jpCB34hRG-14YLmu]2'MdUsD.Nj;rArFSm7lOgF$Zo4-Z,PdA+"p#^+HjoPA\Zj#L,Dd`N]Cq]-;0k\5hR?aEfW"k6k5^'dKTddAL)l:1DfEiF>*d0IpX9Y`o(O"cD3-%?H1G9*+LM,f-hu*FWkSm,6c%g_]:A4YXDP+\0rF>Yf'PcAeY>=@DoqDeP9b)r,\k/nYc]AF7XeBXg/)I#`m@R!5UK:r(m-nJ&ntp$(4HrIFip#e4p`.gKYdH7a8IUAF)%u(u[?o._E8E.Tn!+qIl%S/j)FH1s(8:;)!&J;9\sc,e8G4R"`*UeafV5VBl40W*V]0/s.&'"!;:N[1sOP-d-EYaY'Wna@KFE[2&*p;SrIt`-VM=2N+NlclK@'eb"<+f\Kk'NshRK7*8J+`Jate$r67;PQd+N'V&$<:6LZtY$6f>T=[cd(ca^#lR##O[5h?#\^+"16/]]Gqn2>2/p'.Y&O$qR8?+&,j!!@`:7'9'*h&18+TM0'oD?"t++Cr=1M=Y^3m[hVUSn(4^-(k$Q5(#6Dd^(:CI]VCp3<`iI6M*;dZ0'4mIUP6`/UptL[g&R=>J+=5iYrtescHjeWl.IS;dNO&'Kc\/kmZ6a(NWahTWBEde0!j2]d4ZLYJ\?)3a`B\hbfgDYCRV0HLEt.HlmZ)&S+mI<4UW1/-L84$nNVt8Y]PaAqWHqk;P"h2XVq%Y@$%/+:n&<[N!pYc\@HHUrBg%@.Sb;6[h._THglrq39!\8I7p@Q]$.muMU4&XMrIas0kdL!XMg?F/&1m>*Q3S`N0:M-M#\(O,&J5G'FoMNk75WWb/6K+/1s;5m4$JT^HGI;(!YYF_X+3V)K3-;CqeiT%p;!R<*)E0)-lW0N*kpN%%_Jh??`AI1$73Vp#$Ah#5ZAgl7V8R"p,r0l;T1-FK+)o68qJc@7VO9V*63`$(mB'(]'A(VQ/BUVM6c/'4KoreN(*t/,'2,"%/%E1kmoWY.Z'(fsVAo86F0@)&R+unG7$Eq;jGa0@J-+$tDX2=5HYIN&]r8L$3b?XQbo^Nmr3Ai9>[`qD?DW@oY0kZ3?>:dEcQeRXJl+d"l]l/+nj5JXU9VA1+O47k@Y-d=ldq-^?g3-9N;W+.T&@,(6?YcSAB3jj:dJTsWAggs%aLVj!)^&41;KSR%/CW*I#So)q:A[K!ah[l6_8ru!FNMGpd2I97*#0j%kpuc^p7t\5Hb+N<2b@.*-=DQjq!f/b#+sC/hk\e:XR=s^8j+Q@+#pa(8DK&6.[+_:A&GR$Z+gq?X$;p3&FL[&3=r4CLu'\4LY85B"5PNAQ=M"1W\iNB_kSQQCqX>,Y5upkr&Kd#$9&X;a[:KFu[:BXGZ%m;M<\UaL&Q8KR^OKL&`(k8@S]]PpLr4M.F5?B"Yg$X2T)#6R0l%)p/[k*=r+&oD\j2(XiT~> endstream endobj 405 0 obj << /Type /Page /Parent 1 0 R /MediaBox [ 0 0 612 792 ] /Resources 3 0 R /Contents 404 0 R >> endobj 406 0 obj << /Length 1723 /Filter [ /ASCII85Decode /FlateDecode ] >> stream Gau`T?&ta='Re<25kD@J-6E'g\8#+1Wk4Or^/U:sW`K!^Lm+JE828?6r;4/1#W!R%ZK'B]OTcj'4q@JuYal6#JPA$!&'Wma6ku]]C5VBqg.At#2Fk>`-fnl2NlK$S[.(9PEZB,EK:BJn6a3rbqPqK"1_Mj$c+iD>8,&Y=QdI>mc*l3+ntpLZr]?"O41UpocuuH0Khu"f\MD5-n.m5As$6[NqFsPSIqB+2O>mDo16p&;D24PXKb+,"Dt4fWDn,h1:Ad`>p:#pecjbkYd?#!*YK=A/->?7?2UAgE\1X0<#/Wnh9O;GL=G"Mi)"812"#4>D4kEM-<\'SP:Y*9ECj&:l6<-=0=LGdG-'$0lPaq`HWrjsJR31m`uT=%fu6VfP&Oi7V/Qr5BSDOUMGD=mJHgmq),,-1[?BGn!sUfFWPfXSuG782-!NORMntD_&&C*Tf`ci5>.`i2f4gr#fs!l"jFNY!-Z*0_+'+^dCY8".&DrQ:!3"+@aF`-1Hh]h[\T"7q*()p8A#E>cN+i8&XUMML8N!&bVS,s4$*:Ga\#@TO8s_l1NNI%o*@b`[3$]VVh#UPIS,@rI(jQ0SUbT%c^k1jrGM[N^_I9[k:s#)YaR=B-9Vi6SA,!E%n(-)V%sco@4-?^tHmlPMX?9Gp__U1p5'_ipDfHdg'+JTH1$nlbKF'oMp[F(YkWH*IhGmFGB&Pkpp[IT+60,6b?WoN9"LR4YgtnOMQ6q0Mk=?rr&P,T,-f)Y7H+IGBP[l8(;DPiLd4$L8+03RgKdn%8TGfH\/3?>X(BP*[;+QQ!XP8YuNMn9Y;ADE.g6E5tk[MGbf=fs%]#!mb+3^L:n@0L4ZE2si&fQ1gVN&b*k(%W0tBG>UU@qFc3BWKP5-\bcN3N$#G8@ZqZZi0b3_d_s%%W2.OL_!R]te=d5nU*VI!J_djSj+G.D(94M&FU4d<_V>)IS)5eGo^D^i'r:BJ`1*gg$m:4KDsmf_fU)A!t*^)2NY-;V.d?%/^"'RaP`q%ROQK5USFnd6Ss?(tqSERE*b&tG>Kq>UbHR'i6O^Sb;X%7T.L!9.>h(Rln0h_gr1JV]b7CM+s'=a<$'mY=?&D%Bk'u`M,90ONhO1@[*oa;[>&4i]Ed`;47hYeOducg2ksFe!l:-7:)67_W^NaI`W_Ui0]q7dO@)%@d3Kds_B@W.VW#]^g,#cr,4o@'0i_s[#s&9H1\c(q5eem'[pL3&-]U@iPhd@]iFdQfEPZ8Ms_MMXUi4ek1(`^PiR2u=1"rk83TZN=p3 endstream endobj 407 0 obj << /Type /Page /Parent 1 0 R /MediaBox [ 0 0 612 792 ] /Resources 3 0 R /Contents 406 0 R >> endobj 408 0 obj << /Length 157 /Filter [ /ASCII85Decode /FlateDecode ] >> stream Garg^iR2p+Lpsjs!J):+[nHJ/[Ab_?Br#`$Ib~> endstream endobj 409 0 obj << /Type /Page /Parent 1 0 R /MediaBox [ 0 0 612 792 ] /Resources 3 0 R /Contents 408 0 R >> endobj 410 0 obj << /Length 2217 /Filter [ /ASCII85Decode /FlateDecode ] >> stream GauHM=c_;q&:XAW;"Knc2'lQiMUk%Um^=Rm!_qGQ7F;@nVJW$4V+C/hpYU1n_rAb#Hn9$,X2JPjUbkBrR[WJ],Xn8-,CE?5ua[fR#aV4(Zd.N.W,.$'#qF-bI_@lYO\,F@SFQT7K5+!f/rFG?ql\`25#-GT_eM[bY=)A-M4-!Mqr3ET'J`0*9@DX2S(^0G"WNL;_f@L2b.SdDCVHd,TK6V?B:tf=p=o'%*:B6e)8TtFm7Wt_ngbC)(cFAQ@.:pIV]X]]IPbqtVB8g%<./(S':nYR#]k.]oo5PeY`#6?l@O[#f?>9Qm+gj`ET;H#/*#;\h`NGgH#gulC1+oa%JQo*A\$L7)WL8u'TEf+f4djgKHAIi`YVFMd>'%6'5@3U_n5]IX3S+W8g#,gS_6a^F_o=I>%i;1b7Aj"'Lm72XLcI!M)7c.uH.$nee8l`meV*-8dWagb4>5(JApgUDb?9A2,-O$O(,38cF^L"[StmXD>QT;41AcY%cUhrmJdG3-!^Ie7hsm8Xt-$MW=/s,`ZD`1S(rhr2t.e]R=4YD#",tp>Yj3]Wt9`R_IMP@TL5P?+DqEIfEhqcY9IZIO%2(W"]NTe=92B83#DdE1!i,Mlp,_)b@;K>)JUr%3aYD@#r>I6E(?WR+O]k!^*=eKRO+rUMPgiMQD4!S;o2pp>)jTLddok.>qH,kd#?gEWo]pF>3a,pAAZ`b"HntJFl,>Uo($It16Y!>n_Hj^4Dg;paR0Q`==Lo;kC!VSRrMu1:E;:Sg=a"tmD8TS=l1`!^IgiM:/@:]YEeT\#5qnB&Cue@5/AfVh427j!iROQ`<+/39`6&\O=4l~> endstream endobj 411 0 obj << /Type /Page /Parent 1 0 R /MediaBox [ 0 0 612 792 ] /Resources 3 0 R /Contents 410 0 R >> endobj 412 0 obj << /Length 2497 /Filter [ /ASCII85Decode /FlateDecode ] >> stream GatU5=d,=E&:WMD61bf%.Qbgm%,`D6o!S"bb)'UYEM\g\+;cBH#\8s$Dgm+\3(,\D,jiUSZ=0-7^-63%Ed;YID&_8AVQifI9OiLe%28_]_f]?]p`B$\CFls7?Vb"O,gFecrRA?a4nI+sCf*IP#])ZLYtT7O7_E3!JBR0o/2_WdHeRR^8\E)"Q\HeX4!SFlrqQ*_I%AKJ!0)1OTJe/Q=UQXB(KXfCJXc_`>7B-Bf)uCI9@JBF^!kd@O\@P.3gjjnfC!gJ5?dsO7<5RATl$^U*V^n9"2E+G3-pDiDU]6Fl!n&bO8hK5?p@N9I.@-1;j7@lF=c?]%T_n'n]RrhVA(jjCT205ilZ1Hc!V`S:7lNM\Dqb*gF`,4k.iIJr(-SXgfXI99&4]l*%J:]F_I8Wcg&'f9$Db,^m3DP>))-k>6F8/`261mH!1B)1N@@^P7oWj1s]SVFn`1@(=_f,^Mq:6c5DIXD[n&f)ebPM3#O?*'/:_3gkfWE'DG*sSrcI3?Z!V7`6"\u_LGtM8;_d(?]P_hk"MgNUC&(8jWg?FMOFMr3IMqM(TeXTu,o;quN=@E-ZcQWjs>`6%^mor0_knD829WrJ%W!*bf\.,c6X'kuGj?-7+b>eFXU7nRZ-e(E66$=;/[&o%bmm'ln*aK-[r=pr>8=cpSOfcrjN%s.uhukNggWcpZ4A".!8S1s`J8L)#BKp3BIH/fdYHQC^)I9_4jV`^9dBRdu)1&fI>s_O_&YF%-Ph(#FXFqF'="LdQ@Pl;8(WZmX2,r$U)VW(7B'3o\S31B(OYPBeZ^ED$OpA>0r.o)l#LmrdPJoqb-EA3iQY!4>n*=Wlcq"55(4Jt3>Qb@jF?cE,3lK&CG8U3ndjKI3%>]V":Pb-WD\?Nl?<W=`j2H96*%rE'>sYro7S+:@Z\;Xq]]8a1*1o,Ef3/N@16(J6i6ZnMiaP)Q?0F_;6a]7umu'0\eZq<'Y]*:FVB"=`K^U=H#%&cpA3J[_W]D\HD.N0e=bD59a#\fAI[*bt>>pYl0FkEm(NZV=DXfkYN^Z3%-1G]'Y/6(71]!?u:ij+0rj`,f19Yh.PjTDTf.ZQmB3I2[N.Li7A\%(oh2uCP`KPg51P297#1RK,A$'Xd1fK`qB@PTkhr+te!uLZ$Ll9t1g2h3g/J&C6'8ciG>F/q)TVXb?kbrYt;BLKQVX]4^Vg4Yl?ti:1>`\2e_CaG04*P$VLrUk]B'8k$jQ]/Hu,O:C-?J>1uA^(kO,>l*Rl50<9nQ>_jLn_8Z"P$O[rZp?AAl0%60tkga*T?Y];AG6i2A+"D_Z>").S`elV))@At^U$\&-+/re(A#LE#IO6:7S#FLBa><*I8]c>b[7NH$_P,Vf[@R4_HPeoYO.%qtgC=p<j1u0q.HJ@:;K!S9'\ endstream endobj 413 0 obj << /Type /Page /Parent 1 0 R /MediaBox [ 0 0 612 792 ] /Resources 3 0 R /Contents 412 0 R >> endobj 414 0 obj << /Length 2237 /Filter [ /ASCII85Decode /FlateDecode ] >> stream GauHM>Ar7S'Roe[d+]0UV+'4j@G';.=Ym/Cf!l`TAIl.Aa$O?/V5SXTYlDG4Rrp,VMN_q#JA@u&_fPY!NI89?/2(:]>/W6ugP'@s/uW3q+#Q@uk.EAn^)\,m^%'.rNFfZ``\YrCIQ;a$30S?.$Stg>,BpdB`+`OMoNTmrcWO-;UQcks!WS'JV2V_p/]bBq#_n.QP76hiKu1tqqF)OH$H[t^RrdUcA+e;9>2LL+?J7=hh'@lb=Xg+^cdAGP,Nl#(*]s*osH;nXGO8F08$@B%+U`:F#!E[S.[qDH77U8Sc0_(:LtSRAK=00%O4OTQ]q3_j-%A'68#Lm+VcUgOg>.S^^ZqS@o)j#!nAS!WLAD2gSskCiImGKSmAP$:@O_doK-=0-fO*oe4b!HFA+8>.5cK^e\R5)@:7fS#/N7V@i44VkY5V%hf&\ECX?fQ0@rc8PE^Y:"2jd5=D+[NcLU$m@Ti!1CFP]+d'@`9A]:9?&"2Rl/3"#8[aXT5,@YV5fXu?)\$pl5I!q6Z:[;BBAXdMs]b!eOiXKKGia30s?02`u'874U^*dHS,'&1pdBs/QNlR!?9.Ik[P.k")N2Pri(g&g<,R;h$d;_KDIdqW9ElD]$#-[a6=P\4/!'nr4eE%'jlSd+GR&We(Q7BsX%oGjAMCZ`SHW4om_'=e2]\t'K_cGWOCd5btS(6d?>fbKB5W3q65=4>J,6_*`WUaNn2>')/=(k"MBYt%U*1_%2/h>uqI!W?H,Ys[EOF-4cULSQ(2W5/T1*,NbU6ZYF:N!EA4;&G#U)/_%TL!j,W],i2Wk^inYRK#Ql:oHLN^7,QHNX),lOLQ2Y7WD99D9M;e*SNgYlrL>ml1C`%Pp/T+TF0]rN-3]Ng?sN_ebbN"^c.@P2C+$-)3mdV',2S)VQBF,r!rkme)THiMC$;kZf21&MD?JS4MP1H[QpYu>"i3:M:K",.g0h[>J5'@l2`nA+XKZK:&s$-sp+h`N_Te_T=S:D9Y0YISA5l^1OKm8s&=DK(31Y9:R72KrW\A5GEG^pHV>QT!cnU"<->#`bb>'quZS@0hiei$^EIOFI:rAm$/~> endstream endobj 415 0 obj << /Type /Page /Parent 1 0 R /MediaBox [ 0 0 612 792 ] /Resources 3 0 R /Contents 414 0 R >> endobj 416 0 obj << /Length 2430 /Filter [ /ASCII85Decode /FlateDecode ] >> stream Gau`U>BAT.'n4c!HQp5`o/#`tZ@?Ua8g7s1JZ\gAr)NY3\i^#CFS3\UEY$IsR.JmQ4oJO`<&4:7q5875A1o7hkB`,fg?5SbWMlT6_hn^X8laF!*%WYZ.f_MCTTj9?ld,Nnd:qg=UpfLMiDbBQpF'@ZOQP5FdQ(pnV^=2oKVj:E[$&(M!-)"*.rE[mp1i"t&7N;C!I,-!cgL1D]+"'*iX&->JK@l;p!d"@kD;G)7jai^Ch(B-6s!>(,6FK@F%pD[Zcs[PU26dT+IqG)O&@h@+2"+MoWRA%r_(.XJU]1"J3osS"kd<=@4pr?$j@+Skaq*Z^=.8I@$-Q2I-C,%O$EQ[b$!`U4%hBQ2nQbirAaGd!&J2G%n,Rm<\T=C+ST(@i`05pSEBMDk`"&.NQQXH,l'utPR"H5o*VS4nNn5tq:qultm/)-8<8Y-`]B*['9tLj69F^j6of\UtCY;?%\M/Ui!PIn5PNS6d#(prXPl_h#a]b6hC@4$Pe>;=6@TF>/R3P@m$hG3'flfbIhi2;0r?QdH_1#:31`t$(simX?R!m=>+'!_0Hg86)B.J^>M[Z;!TPr'G="CT6r^0+WbaId$Zr`nA!O06(%!&oR63;/EWgH+]bA16/9N7;31)l$gm#!Ve2c6d+*q)LLr`7ZHMk3UlbEQYf7!QGPX.hr:*H\LCljS\`Td.%QFePMO98ut*G23L)Ap66.4"BJ:p:OSe1T@o=ZW29\0#YHFe0iA:[`21Z+0`3O=pbuMB3"lkW=d*LQ/`ujRs[%acl]'6`(F6O[1P/R)Jt.pDP\b.@+U/@T0YJip#//K^sUI&T`?X-WZ^+h@kJntB+A(^00$`J8RoMG@Lb>0;c7W>/!:L%Q9NB\?laXf5\rX0OspU[D[AHN9C+cV#3LLD))-n`+*;b3XFl2U>rl8RZ@*&o*^J],/9_2@'plgl#\&r2JU%I`0-be[2VQ4JU>9#L=hHAQ?g.+C8Dk-qo%:'j&L+(SH(!l8%m\47@2Vp)Ccsd[@r6cp\`pT@'>L*[Yl3_#J5r8M#d(B&6C'+a7b%]?Yc>J#F)?#>$X9Ft&A`-_,?ih&Lr965W@-[bV0X/opaRI#4"1fP1!+i9)F=Y'>`V`m6@KPXN0$f,.MG3"o*St+,6n3jIjq9^6`H*094^R%=]N;%c#!uh3`)?~> endstream endobj 417 0 obj << /Type /Page /Parent 1 0 R /MediaBox [ 0 0 612 792 ] /Resources 3 0 R /Contents 416 0 R >> endobj 418 0 obj << /Length 3111 /Filter [ /ASCII85Decode /FlateDecode ] >> stream Gat=.l]^)5%KF.lKkJ.WSRuS!W)q^=9K15Q-'MT_lu"SL:?R@tBj4kGdco`HrU19H_ZF@@IO$_+-kd^'rW!"mDBH%DGL"F>Qn`qi>oC!APrUYYY;lt!Gio83oB]lYYataec,3!do$=W]b>CL;.E!!]Ek.-L)4(5j/=3F$72Gh@OWso>(F`foAQbIgEnS3RNlk(\+G0T4'rTCVBF3uM;&Q3Do(,>F;,p$+\f[4WOQ1hsLJORjYZIDGm^p^-'ULJLbS(S#f&#N`@nmiqRT;j="EgsWibQH?H.q6.kEAAX8WB!H`1e,l5dlqR_ll;-":G1`$jp23&IZ5i5CaoN("C&Z'!I!r\@DpM*aa56A)2pI)jBeY;k&Nr#Ec$*9l++9>A)HVoD7a592F9&GGhhq>!/paA_#[jb5E@WdIcpGaF('`a#'rB`pV+f$F(!.F-PmGC1.)pdudni_I\jdl5oq)f'Z6d>(A+_[.D%/dr#KZF1q'lD*&??K\b+Bp<^6oCp.SGN?7"Gsc-!C8^hWK@cjnnq(n^$;A`RL`HEV%:N"+_[,%R.c[sBSk>QF@sBZo*`VV-;4rp:CL2ZcG,HuG8+ek>sn@[BPWXQtm]MIclWXH@$4]Z6]-,`HF/P>koUtLI_RX?!3sXue$+2qq$P\0B9)@5cZa!Vop@tUnJqg"C6m&rip,E&[gsLejh`+4f$L?S0RkrDDq)uNYsOc3tM>A=pt+GcZ"C<%t):Os$+]YZ^r/R\4,YSj[,[!SbhLrQYV,m5-"!ql+*3)NT!cY$FUBq8mj3f*/a^DIL4I,\a*s_\Ri8UZbgia_#],JM(Rg&98or^.[EX.aBT@3^ei,L(`d=I`r0oqe?JA?iNaJSSM#jP?o5MhIg^[D74asduR>LFXeh+]a!3!;KFHbfZ-ro:o`c,X2[k*r`BEA:grWB-K[s4PRRelgSt3--LKq9ZF,Eu>I/\UD#0@J]eqG9QK;=2MmZnT\FscFo.T,P4C80n21B?C&Xe!F's\Y[*'4FQ.9CE'sF'+e&&"Bjkk7s$L5\/:Jo1AF:dt,bn%SSS)-WJbb=`cRi3!R#8Z7KdoO&CR0A*XJgcQ@l_F9f0bjNE(W*VKRssQR!p3tWU:9oarO;o\))c>6Z"uXGgpo6D:MjOM2p6V#Z=k,@YS;B$=2T!i%XoOQ.U+/Ae$,A!fRSHZI\C[BZ"#W@p_u#L!=C,iDi@-#`t4;c6]0c3?e`WQD^.pb>V=ALGuY,*0Rm+EJP)8!:J:7a3ikF9TB`kmni+cC.PQg=(rW9"/WdI,gI!C%gafLp@UeBLuVCt+akme<.-5Zf&m6S"N%f@idhJmM;qh^%l!r%#6_\VXnUkdSM[*Y!NmV4@.'LdW.J.\RccHlb0kEJm1EEimG4Z_i:6%[Gf!&-rX[!0=!"!;LP/iA^Q?nD"8[,J?9qG#2BEJM-.^;-;.2CSZXjr_/?1:,"e0>DH/D#)r+sr"RSn>K&cgN7@%@,/RG]ub4:L/WX\N>f;B76J;m[?S`lgilkhuHUgM)Md$W1I#_Fr&#g0fCV"K>5O.UD:9#PisMV8;fGgKLjf?_3\ei./s+$V)pgT>tq!E"u.;4T#!l-0u?'b.CVVg2RN618j\@.65@!<0Mma;ra/6[8I;2jkE*_#fK3Td_hF,0EUc!OqDi]N\-GV'LOR"Mu`m,]oNY.Rd[YRDeaKVC_$]j1/PL_8P:CBK_G#TE:/ELHUGAH"/lSdd"_H[l,(-CR^20Z,0\<_uqiCq3VW5\j]+rm>1\nr$98hI'KUci@@d1[R2>mH-QUR4Mtj\hZCOkP3(%$9OY]%qsd$`*#?"><\g04bENJn]#>)dgC%(+oe6+)f,)m*R:E[$t8?nq7d]fs4D#%`f*hHq>@X)Tc%.R8VT`n>g/8ik0;&H3Do>cH;_Z!Dt4j/;QXON:L?g,Oiq4$QeZR3TUFPKi\Q0#TGCqIB+7(XR5oGf!LHq(&Jh%uJtlkYRe9<2P-:W-snVs7s`_P,\f%8KoTOu/DD3FN-[=j.hJeR@SanI@07p'q3l#E)B?+&XE;+Q_&[[Q5_uS$C9`c@':Tl:cP[fU4487cY%5fkY\iAu!Iq/$rc.ap-%$.BB"q/"NWI&Y(GQD=U%k^CDO-CB/U7)l@PVe0m$LbL)+000gU+5Cu']ojm]'UPLF9NbT@&lIOb$1SY`=06?qI=APijp0+`%@\u-qY]>,8'Tu5+j&HV2>mkS>CAAobMOgQORbt#\kAPP-6s1*84_PL;A(hD=A=9U!p*/'l+>jHW=M[%_j4-HcRi+SENGnX+U endstream endobj 419 0 obj << /Type /Page /Parent 1 0 R /MediaBox [ 0 0 612 792 ] /Resources 3 0 R /Contents 418 0 R >> endobj 420 0 obj << /Length 1758 /Filter [ /ASCII85Decode /FlateDecode ] >> stream Gau0D>Ar7S'Roe[&;">(JV9.6Od(U.%kZK]`JSf-]0-Qi+\T1:<0gc\c3;,bqi7`sO%dZ=g*K!ng,t/J\aY!=r+\F-IN)B!-+5[78RF"A8Z*K,44So>Yngq]@sXM:?TP'8Z5DrXXJ4H$"oT3HeLo69,CFUhSb7o2OWog2.$7M_OlE*u'S5oee&B#i5l>S&eM,LrA(GiH^lL@4R`YmJJF9b4A:'r==olt,q]#'p3A:_@m]S3-qqm1$aiUE6q=l5ZOK7%D%8MYC740&dcK,h*/8N>a2&eUEE:-MYu'\bEZk:.kl&]4MW6`hp%i;"ro\`1S^ajO@1G7hRJ1Wb=oZ'n8397]]2-jC>L\a?QNZ*E+j]iVj[6Q2lCG/@8Tp.5j'F6%LiYFSRi66#aSC)$#9Ik>aQ*6eH@cE=eE"L%Ur@5V;.V3:*u_%qk-H]sRfo>C#e9BkX.O!c1<8C=&t`ALga_3mEZ&9d[;ot5B"uVtc!+]#iT(@7Up_U@<&Hh<[i&lo);/9Qk<#%a8FOGMIT2D)A^hGS#A!8G4lNs&3$SV!d\,1+*/#tJh:a(_`P+b46d$gn]h8/4W!m0!-10KG!7:$YeOtc;$pco5+BrGq[G7XANuX`P`("\(A!RgH@"(O!jH37%[j0J]p4_[Qu\^3TV8nh0q>Zr;f"g,6AK`?[Msfl2;PMfUkVk5YaYuCAn)G;oT&Ob*9+Fm<;]^hQ_f"O^In4aVe51%$stUHZ?.?`-cn:/GXMi;Qu'Yq/Q(cqs%/E"0H@&'hc,fIE5.)Ro)lim&&X'075C:B-6PtZU",qi$_pVUKdY&!:N5;!\(,%(`]#TqZnB6Sa+]odb*%Th^Cq+8o`8".ln"&XUrM=4@HMQK6H,-[*8-+FOUpptkLagGbGBb)C8sccO"sK2:WES+(Z51tKP#`*+JW5AZLhXur;1n(T3p+HB-\cmX0h/p?G>:b4tBP@[imufU$94?&U/3Nd2Pk!&?T1*I]N$O"LZ0&3\YVXlk5jO<,0)E2tQhMhMPJ3s*/s\qa823LtDrMBHp9X9TL#-g^*,:M%,WKdd-E;PIWBA4Wg;GK&isLO:CTa4Ph\J%+ta`(H;I1r42"&5-;ac1,FTe:`=Ol4M5RAIYPE>OMkEP._R^>.NL1*!RsA\P[U`P[-AQ)(!I%V+=IHFIHrqZ0mHY16URZjEHn/&7rjm<9rLrP06`>K*6`6jc"97+k,2f);XLEPUoLf0/s=VGKR?TbH&9/:.h\;B_\71gQ`JZ:P4um/KRgh%2/8P+@-5>5$;SD1E8X1T<)XZZLl^#Nd'~> endstream endobj 421 0 obj << /Type /Page /Parent 1 0 R /MediaBox [ 0 0 612 792 ] /Resources 3 0 R /Contents 420 0 R >> endobj 422 0 obj << /Length 2651 /Filter [ /ASCII85Decode /FlateDecode ] >> stream Gatm>>EdgM%Y!;BU$bk-`jA96[naOk]ps2-REi1mD>S9m*b^tM[?2b:P.gD#5G50P9Z`VHRFr<(!rN$"+Fr"g:NuE>NlD6<9*A]'"4Kf61f0;O8J^@ek@rqhRNo%KNeh^>,<6J$PV\BEoSXj=Zs#OrYmnZLC)s4kZB-[k94>fg6JOaM$Ec['nE+e\r'$:o7Qg`\jm*Jt&V>5IMi>3=LY+-gi3G'mPQ1(tbP8Jp#pHL.e\%b6bRQDs7o?_NijZK'la\doP#$(S2D4^N#&R9qZKq)8Pk^6N^Lke0km?3TN:F?l>P6=S4?LJSBbYas4%`tMQErn^%h.%"fPWQHDmQ96qV`pI#6_=\ie'pbrNo6W,)nE3_BcB*"N5.&IZY#V=0*"8QafH+b@@WrQ[$',8373i&Vh35'^;nFr:DO(,?AiSPlR!b_0HN1)K:0@#YqfplJJ6N-V!rg2ZDa-fd)o7+]VQE8q\uq8+r>*nFs\Ikm-,=O8iVD^.ko"IK[)bkghq^cCc&"91Kun.2N5*/pSNr\c^XQOuO)safpUH$t?c+ea#.=Ekd*OX',-K9>R!X;B&Cs$5N?Eb4ok,j7F`B\4;/f.rWLVVPS;a^32rM*jFC],%.S-rE/kMU^VWKGk*4!]]-5J^$FJ2)-/B9u6eX/@b8'ApZ,Pr:5Y#[>GX1fdb=VrTIDFK9^B!87#hiR,;SK!MY0m+_e7kRJJ\aAQ3:;&c(83#"PG_ec"Ph)cWLnUesRFV$EEglNQ5[a<`0nWcO"orF+\1S>:UJ'Nd,tE[c3(L*;q[IY66BM9(Hlf-!#)>c3^2PpHuF233UC#p5fm9\29(%p[_I#e,"c/#kk#=Y=Xpl.":L.u6G>q[nDWG=Rk*hT0T:)7%[ckc$lT@##2:)i),ZP-U5%Ol9#C3P/;TEW@FC=Bl;4&6+j8K5[`oQ:)"Jur5H3/1FUKt7ria3&"AX(jGf0>;PT8sfLa+rQUWIjjMkItW9chd0-Z%XJ`!uA#Aj@sre7N&8Smbr/5l4jR:kYgrO(L)d8Q6M_rnYbl6o3@fh*,b=GDuA+MKTjE>u43IPPSV!1mls$?&k@iAkd<\\q=ob>"mflg_Nel$EbP"0G4em`Z3P98SEU)_d`HMUDbKT\kroX^,2j(BZ?8>qQt22bZ7;kI\/!oSL@.!V\;RU.3Rubt>rCq]%DjOH0=?*Aodr]"gU^`i5E#O2O/e6t?1B\QDGT_KafBW&MKk]O#(p5MQ5bBZG,XVc\%>%G+mfs)B\u6o*GV.?#d[^-qF%_/d#KWi"*QNiUQpkOCq!2>`ct\K0G_Nbe>UIOUm>$Zu0a(\eu,.UGVL0CfrVP%oeeg=>odh?uG2BRRP_JWr^X3aWAP--V/e=dY6hSE0X,LkQR-:;ro&7D+_AY'n7"go302F*_m>EK=UAu!=X,s-gQJSt=L\jmcq\uOo@a;1Ms%N<499&Olb.U6pk"#iiL0sUe^aWN:RS:*er[cVnaDBHgOP8`CA3An?qr6+ka#bB:$\^dn2n5U\B03$PQhUTPe.'5'Q*)qh(E[!I_AM>cU/Wg/&CI,V6aZK+4%)JDC55p@Bfis3BkrJ@kk0+TW0&+OrLJ4X5C=b]o^!a\#u_83.S-qsAlF?qN4HE%+sOe@&/"^U4%(SP2FBn(KiX#KS2A)u?oBp!;-n*kLj7,FB>8oGO;K\2lMHTFTaNl=YFf*-(690(5sT\A"ODQU17_1C]"bMk:7Ms/jYZmCWB2'e%6*rbiue$n^?YZDpmhPX+:2K?!#)L^3ZaBhr?!WMZR,~> endstream endobj 423 0 obj << /Type /Page /Parent 1 0 R /MediaBox [ 0 0 612 792 ] /Resources 3 0 R /Contents 422 0 R >> endobj 424 0 obj << /Length 3215 /Filter [ /ASCII85Decode /FlateDecode ] >> stream GatU6D3*.:')k)0+r["i5[lctqjdgaYeZ+GU#!C"m=%#i/'$m"#0.3sHY.;Ss1[$4M6!.i@LjT4m;u?0='&Hd:NsRa]pQQYAgV01lumM[bgmTmb^dIjbd$,r)[+BkK%]O7p>75^h:t,`?$"&:+.hPfaN?UX7JBAch/g#d@@X(L2PPP$MB^?bZMT_ofpD+Y9[QWd+VNA>^cI-?$BE+IWrnJHumkUd]o%WMPG#^BDk3mqTVcj\i@m9XdO=\jl*jVa."J$c'e)eW51%JqH7S1-)bNFkJGIJAq0+8WKVWkoR[86h6!3=A4lT*1tS=/br6(l,.G$rX:0j@o\G4F_'Q0'^s!GROP!FMMuC8a:?`cdbgRoN,F^o][8&E"lCVFa`62$,h&Pl!V`YnJ.=Gr+%YR-cgRI*m0Ho\,nqJ-nC-%IKI2KJ4@e#-A-Y\H$bEnb'344-ZV!p91J?bV>fQT=j"g,5n,Fr)L%G^6:Qdt2/soYfpJe2LaST49m:1pht'HJ-WVeUQ9F0RlMt%XGmZR6Jk'oh%#V('It"T4p'mb(-'uqW)7T6^m>tIh(qa,0Jr:m(U.J;3k94mSjOn\oKp"ER1VrHJPEi8>J!O'D*H#1g5+O-E-@C1TGo%7Q'RkJ]sZsb#22#<]"%LMLU`F6jR"TBFd_*+/S;@W:G\qAW6j=;LqP"dV"*&7k_E(P\=-i9G'UNNGU_W6OmJ3ikpE3+WI)8o$R?gs;6-FM2VA]8mU^Ol.5W\e&'&fE(SJhlOsW;@^b+J7frA&$$fJ,mnkT,/H]/cgD1''0hBgjcqnCj1\74$(&gf^e_nXV1e]^>9PrYEp>J^@Arj_jYF;Nk`Se?Y1KD@WF6r.iE_u8j$8_9kfi[&1i_oNbjbEG:dem?K-K&l=9,0`[=f$7h8(O:1eFDsW=bL!MJT,W4-'S77)"S1Ohej?Qt'&8nPY-(T_^tI-OnB(%h:Ibb$5]+bbNFB<8g"V*Pk-J<6[%[)]eEuC@"X%OrM-(lgn0:Nnf.f]oES1JPNBVJ\f%?:G8#P$hY@?"WV!8M@ZH<3XB]Ro5e\NbjXf"@IN@]UbeC(lF&ZS;Tobq`uD/+d-I]Nf-^W=4C]OQ$Vmc:Kihe?Jce*RQ:KKjfK2<;ndt48bB^8W>'+OQEarn_`h7:-1WocpO&90Mg:(=n-]klDi0-#4HT^*ug@%Gc)-pEWSsn1Q1!ehk[?W$=I5WM<&!`5M;49]*XSROV;CSkZi.5%A&\^E9o7G#@1YO=8j@9$SfH@l'@4:,O7p!-Co(1,%)S8N"kA_)bW1j%>ie*jECY/H^W#93UMu8=;4*:&\tGA2f3,a6K1ubs!]AtE\fbb<#rApg1u"(#7[KnLsq3\6?H4?)S-Rk*_\NDZKu(2J*kpF47Ts.s6DU!3)EoP#PP-Qr:GsW,(=h_K/=U\O[4Z?De'D6rC-tr2K,sL*TK(6Zt]OR-N;hu`DmS*=,<2E!W)^D9*$S4?`jqj+!fqf+BlQ&Im-Ndc]N7rpadjQJKpYeUT;9A*Yh%t<[dkVe[gtX!ruN"&Lf,O,)Yo!9&i["SghP0!2iHm\bUclg'Us:OI\8-7=A8$p)&s[*n8!V'b-\TEm4G8XZXS*'d"D!c7mnNMoQsS!\F\i.V+6%UIZ*QG.GGATV3W\KGW43LLi+GSNDu,ZT6&qOdUcfOK$r^Ok(p/^HrAh!j\bK>0;&YFO&X3/Y!Wd4fKVcnqF0Sb5aTl&OTsG$p12%1>oqp5_208tk(^[q0!Tt-V^oD*7.WQ&47]lp:p=r(T.Pp'.NQ[t][=A/sbliU_)GT%:$;r`U^cU]=$SdbSa44SD:`Grn;MtQ!2-I<>g%nq1c64s0ME(SS@V./Z"ib'+<6)f)PQoB-1U4K^6Z&o##QBPj$"!Vu)q6uP20$_,p[A*SII-mN0XA3ilaWE-jc+i75$hUc9l_8Km"/Y/2GPdlc-%$,7P+M\[+tL<"-%nN6P7IQB),ihpc>Bf["G&u"j*OGN.@Tt5&PR?J/k1f\GWL^PmM0V/q*>_dI!5DSf\pp?iiL6G0:5sb[JO9gg5YVm$$",BsY4BsDKnB[GZCq7U,86Y`g!XMt/9d&gGL@itB2)*!A`-%aUbAaSVo5.QcrkLI>hH)C&\*M4r_!TX6(,iBpf5kR_V!tgTmdAV"n*\_EAHa`d0$e!-[I`-qpn)Ha\#kpF!D'7S`W~> endstream endobj 425 0 obj << /Type /Page /Parent 1 0 R /MediaBox [ 0 0 612 792 ] /Resources 3 0 R /Contents 424 0 R >> endobj 426 0 obj << /Length 3398 /Filter [ /ASCII85Decode /FlateDecode ] >> stream Gau/[flGh:nm,URi]]o5Z67qXG2k(*;.:jA&Y#hLLf,i:(lDh^1(G>do"T)F`6f#(8:o^+*XmST4l&8Lcb,\g?-SGE*\"C1W2_H*F\fan\VdI\[\h3)DG#XpbDpZKDn9^U)3Yh+Iic;gYVcgf!O`!+q?$000mH-m>ZWh+[tY#bF1m)@_)-#^SV0kHe09]N3rd0aCfutab9I2KBQb5$ED8TCJ+ChpAU3HW1fq$Wf40kSXr:A^iGZqIRcs!I3!5B6EAHR/UM[@.NRXi/5Gc`mYQ46Pq6dJgr5DB%jX'\U'jsQQu0_D>HZ2Q&+rK-pNrcls,JZ=?=i4k--t41uC0a@PJ!HHVUKb#-$Ag$.2e4V-mRmgbkQShS/>'$%#4[K)"\Ij!;3ld\.kFf+'1jG!NQ@9&IA4-4,)c6;q]'fsYAV(m`?j0Y<:2QbS?6tYBhNY,Y7Abrk>ZEkG4ZXIej.'Zk/VW[e60p9RHL[L\;42!o:``H[T=S$%$Wu3nr2O2Jk(*GID()_R3HP\6p47aFLd+_3@SPt1Kco[ipe.s3B.V]!6-W5:F$Lq(;FqRJ_1%oR/8A3cf+(p\>h>Lt_<5OFl@r0$b(LNiF"(R!\'4*\lF+"?m"YV&BG!V^2tVV!EZ"Ia%fpi1gH=7Y0L"kMG.C0"?4d$3(Kjs(#2R0cgfi#@Bi_I9iquGN*fh,TVBL4hX#Wk87Q&AD?NO^8f+nuP`S9st">23YM!<>7a2b>V*Dff6nVDK$0OWh[OhGlboV43E_0]g!lOP2feH6Q*$Q/$2:6B[)VqQQN@@.Fbeb&$QU]A5_?hR")kAT!g'P[t^/arS-WJ>9KuAa\FAP,7j2Zf^rJRR:3/%XgXM=RAq^AD)j[-15`HN,1AgZa"V;MC'Agp_R>VD&k^DJM_V%T1JAJ#4a_WGn,rZoB=^r7#jVUp>je[D2ZgKNf;t_P6(1*A'(^^]>a/f!)aGF$+jA8eiBY`U*j.)R?\RYNTA&oi]g7f;.@&D`qO(3C0^*E!3ON^6*.d*m<*P*6N)a5RWE5q71a\^gP&gBtp!r09cSsHWs4OkP+Cd7VlFs:&FG8:[ikLp(m&^>S$%pk&@k[5jBe"/eT4kmX+k`u8o2@K9r?;rD2j>q@p8tKXiFB."69MG2d.'d)Kpfmc#CVN%`fE>uDfmrlN&:kc>fJXi"D-OFg[f[>i?)e0=\qemD"FoUiKg6#uK5TqXf\r6[i1HdQ&MmA[L]k#U!U5]J">_16.XRG8Eu"7k4l`as:imQ/IVB=Beo-2Y`6gT/k#C23*(tD+I>l/_lSIk5S-N_\6B@_l"9-,6+sDsO=c8GuGUAZ8*]1mYi!=^e=7mG\kYJ.VTU+D0/na"9&7+p#ctE>g98?K%"[21QT2,&),!?C8$&LX6,#7Gp8W!=ItmiZq4cYl,/Xor@!Bf_)6WF%uq_8X(P^Vid!AJe)<,=m6Il&RD[\Q5-gSWoNg#OB`JBb7K7;M\a3)h^<@KV&@$=[U`cO5'@4KTBM^]Ug+t*T^-5)NnS"j&0C\i/gQ<,FJW+A"E=F_P6f2T:e@CnJeMJGK'+f2$r1[-""Akic%0k.X\t=;#i1'#auU>=d`e(Hm^jB^StTf=Z>CO7KAcW>=l7^E:boh:>=p!l4>D@C%;WJPAIFQ$D-:q^28fsIEoM&b.EO3Tl9N:d5'/Wak"#FT)o=";~> endstream endobj 427 0 obj << /Type /Page /Parent 1 0 R /MediaBox [ 0 0 612 792 ] /Resources 3 0 R /Contents 426 0 R /Annots 428 0 R >> endobj 428 0 obj [ 429 0 R ] endobj 429 0 obj << /Type /Annot /Subtype /Link /Rect [ 90.0 646.019 207.324 634.019 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 182 0 R /H /I >> endobj 430 0 obj << /Length 3121 /Filter [ /ASCII85Decode /FlateDecode ] >> stream GauHND3*G]&cTMZ_T8W+HHXk99@4f"$#\K#f>CnF^&-1D#MPnhAS&tR8TsgbGGs+2R?D,'cicljRkoG(3#k+Go@tqhCnl?=FPubh1]RnF40kHK@uhpcaV[9V8P6UP#q2)5K%7ZjG'kcn!d#!hm\ab%G(C!,F#qP'u790%"knZ/`kAj2a.WkMO7YZ(>.cprmP+IS-nE0CeTs0@pI08'o\ckT?UV@O]mX>iH=OIlq[Q`&tkCClo=k+l\3#\OXrh]2]5/"(BoP;N;6"pf<4G35E\_2P.g@U&2(V#9*B0T:aI;B6smriiL.YQi$6Yi7DOHAG`@%@0b"44UQF?P&Ogl#=D?$dU]'"Y7Pc"kUW6DTCQKX(,AO[?"TQk#6r&H)rIt5l44j3*7f`m_[-9UG>%o,V9X=2s%Rilf2$fiX.TFbgW0;e2^,rS;I%+OFpmS%Icr[f[3ui3odKPOB&a)@].lA-GTS2E_iC?GW=TYub8a.]?&1P8_9CL.p<_iB1=.`tP,Ag*M8V2Fg*XNK,0`DrNjhd`q(4,Y\10I+P'B-?VVD>i#>@^!VXLdo2%u-0/1j^obo3mfqEVr2dYf;d@Veb()]l)e]/cBN&MO)6X.-6IaR7Tt-M+:!M<*!#haO:lr=[L^6u0lMjL5@cYe=8Z+?ibbQFiUAZ/!)bLS@ub98:^YUD(]A.'+nGs8h]9OQ+4VjdNIoNY_\FU\ntad/[%PRIX=I-tro#m?Pe&P.M:DfT$/6QR9Nf1G92RFKC]do]#]=nL\]8,(eEHs\loXq.klAmkid?:71n,QtrVdEgE=>CjIb8g?n8[=8VqNA%8,#^0&YU%i0=@D,6`Q;,H_t6?*Y,`RMJoT2!Lm0a&m35B85:u[jed#Uht*phL_I%5XF'm>R=OpJ.@&"H6.te3q=o?%GZ\%&TL[=((Ycs19:^YU"^O/KqjQAh5Q&$e82+?BLPa!`TGsl_%Fi_;#(>]R\5CAb6Xk!k-HQ&M":?iD7DaSCBG?"RV[=.1ne/`C#tTApU[.N^V.E8jci%*Z]QPV,aZ=k^U(aU:9GJ.?VB\8Zr6KE)I%IMEs^>id#oUD,;dWVjY!P5tQ)Ybp;k@kF3;A::"H8KGKaT[AIm>2e+'&2s(jL@lgfTTl]f4&^i8nV/"Yb%VVXh.@>O^G)2>)Xc7iemg^HQ'lEfPSE4Og+[Frl2GRL1EnA2+oPDs3??$@SqbB(u<4BqL[p9=U:XAEIiU?a?>2%]g6`P&tR6,`dk"CO)'+oi.E*KKA]X62=(a\D1V3LeV23r-3%``lN]"U4>^_3NFR;e$nK+DrIfrogadbTCkofQ'NZ]NcZ/MBkCp3/!b^USGcH6:?<-`V'j_^e_Wpu14Z2`#t\1Yi#JMmpH[O)$6:qOt(9Vh;g=3[lo,m>kCmIbf2cp;OTX4fEn-Dg*Q*17ABGD]R'5b-3&9c?9URfQ!>:)P$;=>E[`'`D1%,(A0^Xh\'4."GR,eNIXc*45iO'b8j336n$ZG[6Rb:"bV^fOQ;R`C3XaH6R40AGeJk*3a`f<]O9G/J8S_K:G43bY,[cm]r_nRa>37%KXI`t$([1Gb02o)E9i0`TV,nn.#h1DN*bjKmI6irU"p"\I;Uc632]u]a-+o&k;ft^idTZc\g>+_3)-dDBjF>R+U3:5?XcG@ciek:>rdl\T_L7$r]4,)VdUE_o,D$kMBJkjYn'`Q+Tsm?h-'T\B`.(.6Za/_kEZ26n+,PtrOb,?;3GgHIjYb$SK5kj]UiF0'iWl6K.>R^06QoK^u]_\%!-s0W.CVs#qraYXq=KDRdiF$Al1l047*h-IDmrars&V$@pK~> endstream endobj 431 0 obj << /Type /Page /Parent 1 0 R /MediaBox [ 0 0 612 792 ] /Resources 3 0 R /Contents 430 0 R >> endobj 432 0 obj << /Length 930 /Filter [ /ASCII85Decode /FlateDecode ] >> stream GatU2bAu;j']&?q)R#;-6LVrggI4.t4'=EMdnS;F9*BJX%$aPUrdCtelrZ^k6Gk"+\EE'\h<3=1oO0fW2'UZ[8i9doh`d&O_%^V+Z/H<%V6Nlbd>.T`-7hDSk6=MB1NpNIYp7tS80K#Q_g[5QO5](?SZ:fg]Le24%1gdaSQhoD+^!B=6ZSX[:/;(_T[I8'&0%1G3nOg>c>:^!VM9A1o-l5*$bLPX0U'6,.6'O:nc#sat/K!6#kY]l^.Ei%"-DfV2,^+fNOL:eP]:E4D2$sM%OL"B0`h&^,@PMEug;q(=ae>AZXg7m&T_@o>Impd0(P2N.9j1t>jnYAApsQ'cOd4T\IpHIZ*&#sY6SJY93E,E.GAHCi/[lBt!9Ofr!54Pf@WLp3'/)of*WbL)**%G"nrR@Dpg"LK6'=at4EI7OigP%.cGi![H'Nm9,m6gUK`ugD33eR=&?$s7m!EZl'F1Q>b(\a9$#NaaX655S&XC"M"DZ?I\p[OIG@d,97D5i,LfW!c>!h5bXp7U#GbWs:eSc6_ku2meo@^!g3P4*ZZ_'T\CF0(oC!6.fboMb)R2]7#Tn\m`)e0Pc&R*^eI!*0Fb>n^)JcRak5U*4\NWXIN^Jou/(B~> endstream endobj 433 0 obj << /Type /Page /Parent 1 0 R /MediaBox [ 0 0 612 792 ] /Resources 3 0 R /Contents 432 0 R >> endobj 434 0 obj << /Length 198 /Filter [ /ASCII85Decode /FlateDecode ] >> stream Gar'!3t&nj&;9rX'jE#=kMA:7"]M5G**A"c%$tq30a&SJh\DB;YV7c;_`&O\eqF,J3J)/e6H93OSH,E6F/75pi,*s3bqaXC$,#N,a)9g$T`IbECs$='!WOpRr%+kaV)-DE[jse;$'o~> endstream endobj 435 0 obj << /Type /Page /Parent 1 0 R /MediaBox [ 0 0 612 792 ] /Resources 3 0 R /Contents 434 0 R >> endobj 436 0 obj << /Length 1656 /Filter [ /ASCII85Decode /FlateDecode ] >> stream Gat=,cZc-B&AJ%Fi7@7ACC6H$]k)DW^>u\WDOg*fY6PpJ<[%Ys^g?c=mf58)N3p_#j^LLOB',T12ktcQY("+>=Is;`ei$kqAI1P?3^:*#d`tVt.r3FNL+RS.if@R.aP-U#5PG$7*^Ol$,1'9=SOl\8E*PIc'@A[pS(-B5e,B4A@o_*FTE:P[UWP"b^;FXSQ]L_?&Xdq+?Z_'$`2hqrPZE4p3N'0fFYO(tBErHK2W7Aao9o/%;nf$NQ%X2n87anhEl6R*&pZ5I6S5>@;s`=(PA^YW;U,8hh7s53d,E"$S:a!:cEaLV9M%s%N3a9l%i*H7c[IR$?,q2Ep0],sCd4!`Bi<(SgD\4gV#/c>cL7gkIoH#-\p$hE'*Z02'h,aTaj(W`5Zq[n-t&c+2-'@5JbH+4nJ344`T$XbYCpb5DO(g^8ZP8)MG>D_PT,\/XuCX.^U)/Rs37f@;q5TCMVfM@F7_kjoO*R8,:,")qM+8meG#VE^9*9Y.Y^]C>ofog3u!.meMX8$;@m]Ah(6-XLU1M"VJ.3)6tQY_Eg!#Zn%CV[(OG($f!,BD\A.6.DW5%RZ=+I;c_Wo1.4?sdUI6["T$oj4V`/FRcHNNO=Bi%M6',$Goh^_gj&Cr+T+b`g<3;j(OO*VUoA4f^T>Y$lN";fP9kMPq4^uZjc&^GBGr7;o:7E(3IXTlq)VmOC"0;t0%TX9Yc;5F>7R2YD-NAjck'4b2c05;\87Q>ioi!rk%C?JR/JMW:/i[W?c'?!gP\.89i#tH.)K%PVm,1B_McBqKu;R4#@Ra^3kF%2eO=W:I7u"ot=>LbOma1%O,S+]Y^e!CED.8XATHniNj_GMKd#CRBUV$KU@iPI>'+4JW,=Fl1mi4O(6b=tVP,#?,LD#bMu@[D\][&h9UPTK5W-@PdP1(TX;$_9S[rQ9qBFCAl-'3$,f].R;"!Y4co4DGSq-O'gs(Vdh3*Z6STHuh3>5(\/gmCW'YVB?]m?/IL-tSPb?`S=-"^Dq>:9U1SmW#F]mmO^%.f=\QOS$f$%T;\U09QJaJa%"g]\RGRt=B^Ibh0@Y!su.o5E4&"5-CXhh&H@#Y#,+Easn(jdB>5*=%^LZlW:uY!-YT4(Vhp/klVX=.b5S9]O(.VIH=0)1KooEdOa&LY6GQ@Bk7Oo endstream endobj 437 0 obj << /Type /Page /Parent 1 0 R /MediaBox [ 0 0 612 792 ] /Resources 3 0 R /Contents 436 0 R /Annots 438 0 R >> endobj 438 0 obj [ 439 0 R ] endobj 439 0 obj << /Type /Annot /Subtype /Link /Rect [ 210.984 86.336 285.984 74.336 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 31 0 R /H /I >> endobj 440 0 obj << /Length 2993 /Filter [ /ASCII85Decode /FlateDecode ] >> stream Gau`VD/\Gm')nJ0iVR_6:t$%KOV1J-kjC<`%CV%8j5,5Eg]tfa'CEo)/'48TJ,PA`X;RG3?FFOZ5SH2+L;VthAtG^RCi39t@UZmm>&:c6`KKOrqDW>VGTT,?dP-,b5C(umGbm=brs-k(4[lG;n5LSmWt/Rc#Z\eE3)CA5"r;q*G0S9Ce&d!rdN#TKra1M0dYjAIiDqc0[.a=dc?Xfe^NHc;ip*(POh,gH=PgN`WSsJ[\A-G8!k=qI/=nZ%mg%P$M#^5OkO6T.j0ekY$W'TR+Yl&&&Yh4P8(A7UO]af^*DrR1Bq4a__DM4CHm)1Q9=s+h#&R8#JY_4O6ui2UZ6e3T(%JA_Yj4u`O--Zj&H%Yct=/r%M%0&F$9hDH_Hh]Ls)7IDEr1Qm!ATp&ZrLDDcO#/$iU]EYla)H;r"4mLN/\7O+-@9Y1S;Pb(._**=I&S%Wu'^@j1I+Ndd9gF($\gC:""_jM@1qMDajdXe1A?Hu2NBb;^5&%PI++$$\\^H(F)]AD]2N)g7\1leqM/g(%GQ;ekqHgL@J9g-6XRYYp,(PCMBCr,uR):YN735i)A3cPo-%#g["tFV[khjt;rX\!U4a+q5,k??mCF-/XWq.`$mkpTc,:I8;CHtam75LC<8RSPYt1GH\O^&:5$K"FdB:^#RicI_Ig6POS.9[Pu[\9:]Gmu%bd`.ITEAE8ZHgm0MBfY:MHlX!K!C2f&P['c@"q$pdHq]VW41,FFI;dqUWH:/ZEAr"DQ"u.DFnZ+/H\ak23gT1o"MUMfQF-k.0Z=D$5ma2+\qa0?U2e9koKn<&D+LA\T9!a^.gTg5tBRLg6f&3B^V&bmf7+<'8eCq5GroGC"eHg)s*/hTN`Hk`RdSW\AotfW?6^$kh["g]u5MYp.kTn9V4N1$MD3Cd42NM1Z)bWE+j"Vi>*$jk%2WaWb,:`/eT?'pQ"Vo!>LFPfFpNj3?8ZjD:`3j06!,s(%mc^E/Y2b0XcEZT'cHjFpj:[(XZsH%Dn^(DFYg-@q+.X['^+EU.8]Bh*!mO)?lE]mVE3HiAcgpO:q=kCNKmoYI]+hb-C[rAE*Xk3B_2WkRIaLslM33ugSsbipNe2AQ./Al\JgWA&]Nj!(.AN/NK/ca`2]`iBTS=3`!&oi9'-6,l?*S+UcoT]d/b1ZLQZp".4XnNg=m:D&KLDRPd_,?Aktu9.R!KVE_4U>mK>_2GS7sk[YiP_liBdb;`R4He(2a*SY_<`bU%?'=4A-*5G!!1fHBM@*`T%10L[BOW?he?mTru[&?/:sAe$&F,aSGl4iVhXiCr.$>Ghk)TJA4.3<\WjR5K-k'Q@1[i30md]RRkVi`c@^^=7:VYB[[Pl&YDnA.6]@=)2V.rao"M!s9]4rG,Q_+u\2`2F<"3SBO%LIpP,b*;eY^ATHtGIO2A(P%,ddbbI)u>PZ0#)k:,\X9dOB<].,<0)msW3ZqDVAHU[e76*qV//bhCM8s?%7GJA@Z6Z=W\(f7CVKO);g9%'&S0gh_gjQ>;j^k_$UuUk@f?_LH"S/NsYPM%i"pT'ZQc=W/J`DiF$%p0%6!Oc"otJR*tRJXU'A4$RVgD/*M4SZ-9t7(d9Rh'?D76iJHWX&YhD\S:DmbcHR]oAL;0&oB6iG(bgZ#&IRY;=lhf+Rrd#!^IUlXEOq;o-ai4ZN?f:>/1@>U"op7pu)3tKPACkaOZ>ePAIPh:*kYoedksGqR_uDaXk45l9#Fc#m'tq1OVu7Gp+pWpe(ZSFI,V;f#EOMq7[S:#EhZ7)19(CNZ@2&YG.o;G7~> endstream endobj 441 0 obj << /Type /Page /Parent 1 0 R /MediaBox [ 0 0 612 792 ] /Resources 3 0 R /Contents 440 0 R >> endobj 442 0 obj << /Length 3270 /Filter [ /ASCII85Decode /FlateDecode ] >> stream Gatm>D0+Gi')q<+_Y(MY.@5Fd!Fp[n(]+\Kc`Z-LY5Z(S8AlqdXG?am5@6hhTiOEa'"X[RrIBRPPXcu)6`UdLrRF-9Y4pGiLOVR+TTM%7IbD3eZ$bG_6\B\2*"](ObQOLROQ\6Q)H'49Jn3b,<^<$0>@'=oSluX%VcMlA^^;%k]*Ho'D>jA/n#"PUXJtYZbhq`#bU.cX%(k_:hgdpL2FW`l;bFu.=SkQY7=kUri8h<62WMc_1".sh#GI\o-H@&bXCSej(/LpY;ZR>p>!tV\%U3:@CJg5(aoqjWXk1-o.DlR=gVqo9E&OIORc(WiO8FWblp:uqdodd]G(M,K^/d*:s@1c5URb`fM?$IFGM7FrclU?D)'0o+L9[G-(MHeT"P>)XsT0T91-mGJ(+5/fXqo-DknU$=XePF"k+jI,^S"=5\iiY44jJ[NcO$AT5EMW-YR,+DFq[M^nf[QV&*ZKO@+,?42\SehcK7JJM#k\4M,&9)o1OY(%a*"kZRm%O2!?KHGkr7%.:M+94XLstqio/9/VBp+gQK!L-nk_if'(Ot7ICKhDp`W?\k.6.P&]P^:($P]Q4KNXdp67_'Dr%$Ob(5>!0cs;PJ;@VitZ;k9OGPFucC\CqAPn:1q[0d;YDq*D0F!l]q#D:RuGS9g4K2#1ZT[jN1RFp36j3_'Or-MSgA2GAmNOB(j9CGPc4qnt,KjL#bh_5c,r8%fGSZqW%H3h0:]_mGH_Y[f(CC[[[6nbO!iAh2i8I)pF1!;dM(OD>W/H-YThda4.#$IK0B+VY*1+\%qpE_Os<=b7g&ZX%,f('D94tTI%TE=,+L185URiHu;XG"%'Q4H5LomAS%VKocUHd$_UFbYdXO.cqC.`)]3hq#j`Tl#b;7eHW^T9,p`J!QPX"Ejd0DaN1@B\ckaRBEShIZOW`3cjoEmUbdTQF;]&fgetF^[g7W;e(0*Ipm?L2jW243&`LkoGdDV2_$"sIZg&u[mT[QTk.-mpYJ&0BBKm&Ro&KNfSWV1rT$0DeN1-nQI_X8G+0Qq'1YaDn!^<0qLk`n`mrnYR?j2obqPid!OXW9)LX%]rQ/CRGu[dDPcW>J.EUQO0q4*A=N23nX-W7%%tOq5DkWZ4O:GQg8sV">/5BKCm5olBP0KHCZ+IlGla/Q+F.tN,FkA[>o"/L0&rd7tAKPo3nEI+Kd#.TkX.;o.T=9GKJi1kb;>jZ]HR_D@?=[S\>ZYGaha4Bpt"Djt,_[C7?f4G]F5%*P]V-k-PaiG$mIBNJ?a9Z%;e[-(*r0&dtHS+KsQ^NVd?^<)oB,*&nDXG/E$*1l*$o/C\#k`RP=!W2_&PhcU_dJ"rq6V1J;bgCUf.q!l#WN@6p*PmC'#DYuhoe:!=XrEc[I?&lI5_cGc4O4-JL@Q6?N6=>uNsfI,KWubfm(p>e0qV;!Un-d"Ec8eHYN)jg^HJ;BUZ[oi*'*cQ<\-*maLj'dQe@]'DX?kT)b9@,?cdisW+GV1`mrt(iXrI=ZBp_idEj!^lGIG-%DtZJp+o!:1S&1%jC-eP;3SbQqegA:k.>N,,cQ5G7(*Xq2f;qXeNg!uK5Qd^;:iOPl,!1p_RC[H-kc5!>k<[dZq\G0j&6mlN[[%bHJW6'UY6+g0(:A.4D[S$:i.nEZ46sOc@*o)o`_m`+Ad*9D,<0iYr'aLdi/RjX/!hXqlT;,l;>BMe3RtdDp3k:gc3:K*@rBn)\>k.&Kg35:-Kj3JXQ,D)!Z?;VA)YpTL8e?$[)%LoEG[QqmqPk,_enqZgm9dpEND->5R[XOj'X:d^:sr:4Js9`EKSI`-UJ71$!kEWT5oH@BZlp+MoDqG5+kK.G\cG].***6;38bM*Jnr*I=pf_EeR=.'tLs#[,+)8St$HSk#A%atj"qNQ&WlEOXd0_X>#@0.o8Y.]*EQ,ZE*ajNu"*l"0E<~> endstream endobj 443 0 obj << /Type /Page /Parent 1 0 R /MediaBox [ 0 0 612 792 ] /Resources 3 0 R /Contents 442 0 R >> endobj 444 0 obj << /Length 2948 /Filter [ /ASCII85Decode /FlateDecode ] >> stream Gatm>969.'&\e-D0L"l!XWW5Re!3U,-=ph&CQ_<@:A0dlJW_.4)2cf1+kc\aC%*9h;kPQg1C%-7d>dS6f8Zu-q=J_%pi?,rc=W3^H!kJaTDj6$\VsaD_jN)=bOkrQ=u.5Pbk53kQe(0amrtC!if4QL5hmJm_[NVRO0,lCcNC9mY?1!0r+:]r#uD[K.ADge,YU\PT->dnNqK[^.5qTN@G+]UaiZQn*S1r?\&&.)@g1Xr4:JR?g_a_[1hM:*>:!pLMe!i^)JoPa>Vf_RHm\Cqe]L(+6N1Tn]6T9Sn+=5*q//ej^4Fu2tLLhQ+M:t)DYNsCn5D1:HMkAQL-CgN3HOPGUX#a;o3%I:F2mO&ePL<.Wh@c[2i=/j%&ShiiP"*o$D(HU6]eeW6F=dn$.Dc9tLP\ZQ1OFR<_sO/LY=jU^O=X0f%N1.lTo1Q]`F!7oP7RfI6J-WM&[p_QLAkVf^0j\^0NLDic\\U*'gY3W?MBKWatjn^c:nQ(K+PRS'?DhB"e`L[XNIKQ-62WiTOlqjGSeB>]++;=N[_hj0YH*j0sKI=%QHd6Pua6:![stqXJKEd1;i6K%l9B\"],!I]VpTUX<.e'Ot2M#&tb\O2P-c"h,]pj$'V_0f##g2Qg/r7I=2!YGi!QN3(KYk?`ONcO26MCFNP+aan">F.eBT\H,[JN>K)dO`6I,:E\M`%,Bb7gV)X]WRfdYb'Is_)Mqu#%n;\FFBM;<`u&@($\=U**"rE-%IC'9+!>&-Hu&bj3B5:!B_H[1Qa&%'XjoR'Zo'i-X:mmnc1->N0@iG>D3_GiO?hYAE/?h)F3ZEs8N[Qa2ra/#4Z_5;nAN%V0`REg?$b(L[4.o3O&5Fg?tTo^/Q*\k2jDn;duYaAkIppne"\'F)n2g:/!Ig:D+mf]FaM4FV\66R[kiI^HCfibVQ4)p(e%0(dCS-iGUXaSs.u4^0?-p!aQHJ'-kVjt^/8eI_I3l(0M&^1Uril*?p4._:#oR$MKr:F/2$h7_Cif&.REMq<5%?Xk\1:>cj&%h2\%_Q5EEHVj=o)?E-[.t:LRgW?<[DU)2?c6HurY>+U89V/PN&)$D^YEeQfCAFJTe_gN:(%c-^`K8"i')TlP,(Mup?_c7od>nu#BFoV7Dm"$rE:o\qMS'FrG[!#K_W8KH6Z[24lS(ICPr)R8F:Em6KHc8hjpcnNX5'WCP#.S?dVB%=,Am^8M)4(OX+'%A1b/G0TTc0Cq)63?FOM'$m6OP'7R4<1Yo(#J91?$kbm?+Mb%p1[padTc]ABr-@aVd<1=;;$-cVS<#;@qo>pL;B'm3it/p>NM!`V*]B4`,mBO0>*Ysf^NPX5^Y'";F6Kh3*=[`h`dnlrldLm-^$grkgY8X$Pe^+IeGRb0]?NLq(U/b=;4h?,m(5.H3L,3B)9)_4HXGlEASWS&10&]"7PWJ:*0V'?ls#`+^L@U:0&YSr)jBmg&1;2hrEUe[+2!\oFCGWg_-#MpANAsR@>JIKYGf&m%c;p(KDZ%."ID]CG4N&bd:KP\ns(2oBY'6f9=XS\KRR8iT[:_hO$[KW=RC)ner&$;[Afe3`Y(J\##C'O4OId)0C()l%M8oa1cB\TCdt5KR.C@VFF^mQc3Gs-$JQAZkpgVc0^*1Is*qE\Dg0E^I&r?`5!Q(]TCJ6T>sJ~> endstream endobj 445 0 obj << /Type /Page /Parent 1 0 R /MediaBox [ 0 0 612 792 ] /Resources 3 0 R /Contents 444 0 R >> endobj 446 0 obj << /Length 2688 /Filter [ /ASCII85Decode /FlateDecode ] >> stream Gatm>D3*F0')oV[6HFRg"!h-.'(o/0"d1'6ZmaYbXfmMS]aqJDY?Ar0U6g!]7K<5o/]jHDW3s=K"@sf-1E=^+1IJoah;$ina5bBd:P-E#'SCQKlmIUAEAFnN#bD#cSF'XjQQ',;D1qr-FD:HS>Gn4XQ^21.80YWfPnYeARbMK,.nP/u8W158O.oW#'7]Uisk4[)E4OKRQ8er['#Xp,o^MBB)(cG6-f\H./FDnq89$;?hjQKa,,]j%ClnB5@`T`Mu=qSugTrfO1g&FIr4J4'KM4egTkmU+qr:Seo52L8SsLl9O/s`59k-_MH/r*jZsqS4Yg-:1$.=&)e$1cUl=cY^F'igiZ#P0Ge'?9&Le7r9XVR6nGm+U6DN'Y_dIKQT,T;,]%lE3?n0!jRpOjE\KQ760&A\&L=XITDg2ZRQu>[PTK19im:WXBg'O05,HNc?u<4YrbCp,ITPC"qR"3LpT\[Fp3pEkK$P:kIXNi*MZ=ICQN`OJ+fn4ggd2=l;\IJ;N=GuKOt7e1Eckg[IYN)rIt*53cjJ=G7d\A-9'^PTr50$]Acc>D34L^Y&=NuI!T[fEpbfV?$AqTST&?VRi$Bq"GpXB-G@0RHCmu/IPRI'`i/p";/G-rJ$q/;B??JFFKUg"L[QY;Y2\ji(9@Elr<):"db,i"I.h2gCr$i;hn@hI=j4U?=;uo0Gqc*Xb;(qs',j$H)`jf#0!]^0Ee74s'X)D"<2#"iO160'.N(:4bt5?%pBh`b=M:fd*]f&Zj_;C%VkX;[gU^/.U3Y^MP4!TW`3nZqYP%2`ST-1;CJ5gW])b3Vpmh)M2Uqo$ZE$:O';UW"*6T.SX&.nK,d(2&d:f/145+qV@&o1\qDJ`=&)s`_`4k^Mf]W!"VO%uomAdO<2DO]\oOr7e)\#UmFT<#d5:iXXR`OW]"^[N!/[]_'-1(ZUU97h-SYNps@u>J&'QPJQ8)-kmSu^q9FN2cu0%-c3O>gEiq.,JfsgAa0%EZLe4SFUH/W0-%":u3+hF*I[-j[O$uM9^Pl=4AB+Cfl31H)\K5g!hHaX^gNa2>>BU%"#f]naiBDdE.0IDgpAt"9.+Q)!(&@jBBc54X?-^]&aW#+&BF!)L@9d:O:cdftZipR]?\AsQ="(US8L(WW1EcQ?.HDhKY>TBcfB-Q(l&DfsEt>?6S?,7[3<@ZWI";sr+E<7Vd&:eHRSQT$b63*dZL"C==:^ki6]NlQ+[RPO/+(jite@)092DaW+BYnOdVPS!09:eA]VfJ6Bb$E)Hp%-o?bD`+@ut@MP9,h'V.cX_):/h$_dB<]b`%s6JjfLAN(H_.9V>X%SO;tc#hnJ(Dt3@9o*+X>2=.@b/Mf_Q/V$smB8[OW%Td*cQB%!e0',2_jYj^NdLqCXuf;gR6!MlN/:/2m2'YJHkrnK5BQS.l!#@T2>LSXJL=eD]q*DTBRX68.+n72go\uf[EhOu)\-YsraFG(fmC"U7?l[oLBrVeiD2.lle--jm#k$3i)Oh.KQA@OC,ne4$YJK/W&$5SF7GjB"^0"'R%9Hmu1aTnsL`t?O#2+bZt5r5hh_lPpb7]%u>NLn;WoEj@]W-`8h*Df.S%(YSa/K"hB#=\3W)RSIMETigO,@R4E1S455dP%Vp^S$-;@>WqD)[1m"'T)hjGDpJ!~> endstream endobj 447 0 obj << /Type /Page /Parent 1 0 R /MediaBox [ 0 0 612 792 ] /Resources 3 0 R /Contents 446 0 R /Annots 448 0 R >> endobj 448 0 obj [ 449 0 R 450 0 R ] endobj 449 0 obj << /Type /Annot /Subtype /Link /Rect [ 514.92 630.16 536.916 618.16 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 47 0 R /H /I >> endobj 450 0 obj << /Type /Annot /Subtype /Link /Rect [ 90.0 616.96 133.32 604.96 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 47 0 R /H /I >> endobj 451 0 obj << /Length 3165 /Filter [ /ASCII85Decode /FlateDecode ] >> stream Gatm>lYkP!&c_:6JoErE".\!(/tYFF+A(V*"F#Xpm,C4YrBQJqM[2a$Hrs7(r9lSfLH%XQ77h/$`1fB#SCc&)G%TVr?/7XL_fD,Y4>!a1j5nE=9_bk$a+j%fhdaCd(f+r-h`&<)=gG$UYY)3f2o[HDI%[up>05a^f0#A`)rj0&dq;e80eD069G_hG-="/gZt";R`L]X=%o61hHqpuC9#U'lahLcs1"06]Kgsq:#pJB.V'=!PZn2\b2QnWDg;'oj#ZYK7F*^Et5G*\fTgE*\Im?^8U7dh<\`aKT7_GWS45rLtPIBA\?W>F[^Fe8Pf7';Y3T-#0Ias9t9dj9]W)3J:d+D[u&a^!@k]nr+$-+>L2rF6)"V/fV5]6S8bQQTBMV#Ki97dq<)h(En[4AJc_-;XHrb$t4r4;ltqiIT[7%GC"ad])$a'Wc%b6PB#.crRXMH0d6>kMpsGKms)k'GeEn9ebc89ZZn2o(??h6H4.HFPj\JhnU:u7G'Qc@D#1Z8qr&]WY^I!5I=D6;9S(7>TV8P+j-R,s+/kX,+D5?fL:u#*\:/[VM*8,8pbXL(an,(:M8#\WKap9Hq%MOg\7e7h?ILRHssT,JSru9e,$5?aIPV/.\8tJ,2_s*J=l,B"Nfb6?Y5(m=9JrD\UW%[%?]Q\I8Ffq2iRK07\F17;d];>ip:DTnN)kG5V^ODR&+^N^fb'5pt+:6XY.tPLT%UcZ"8q3EG=9^\1OI\F#[o/7Adt.JCMJW4RR*SFYjrD4AU(d;GALdKu,pO!;TM5tMV\0\^V$ON7fsT^;5,9^>O:j_g?D>L.4j5-m][aD[P7Q=U`=LH;u-+[uligV4+M`RCUgbB9'*1!fLo1,J:/7p3JOO^sP.j7hqBjmu2G(LYeY?_o;U(9R[hY0YS;Fd[d;c)X*t3j!M8fM)W[g3H\7T@o_i>q9<4N:Ms=SQ=j/ic5Vb#Rud'\(,@@2)971AJ"k($-`RY#reFKKhJYW;;FC>Or&\(sbR^c9)V1ElJ(j.".fKUDafY/k[oc"tGfM`_E1gE]5O>(p=\C:ZTTF9'Z!Fs7%o,&jsg+bL@UNeI?CD+*="XrAt#QIRIG.3.a*/&DaMIuHVqIh)"lYq3olG=6RViTcM(EI[F%#Qlij:0:4-22,KSTeMd[J]R*hQf973#?2,<3%X&669^*]PSU9g4G3QP,#Ek5/Z6XV>DoQBLcYj,KP;JXKuY?V\IGCSi>g=\i>>[ga.e7P3R0o`gUA%Z0>XN/K+n77gN[\XC&)!f,qrXNM08'6F66<1q-;3NQ/i5"opH]Q!X';t?)+KEWVhj4V60s`(6jUJR?DT0pt-#,A\DE*`U6^(!=UkV9;kbI#frMb@gb%k`kVGT\**K!jV3a*es\"+;@;#gSuqb_aYcO,P9-6fbro_jfTOt0Cb#]V4s-4'DoBRfaI''M[ib1P3U++ePLT#UO61X,V"Xn?Qdh@s+;$E39<1q6]m:XZBt`(5P._S8lEN/HL\(blMR1+0Ur%Z2MW7Y7j]a]8bN_Jc$VOK4A-#\i*cWq^4k[rEl$=XCLa8Mn/`0Lh`ROXsJN.;qKS.tR8C4u2-H/%4)D#1^bNeae(?]N@f5.l=>5[$5#b7#W-h[Y,M0=AH)>6E1O7tq9DDK$]BhEJM%eCdu#bBp/rC#EuWT*KNM:k\W#ag"VUo)>.d(S4(R/\?U^^J@/!@BrI#r'gj&n(#%[cr*Ei-/0I?KYGO477Z3H:Nf7@.:HprIij(i'<^"`P3\OQP5nnk8'6gTg(:h>q&H*n#&&S@@h6o]gerW1/imr^,ieJrlH'`QuJ]Y90*PSaWF+Ki@O4U0sX@-^Xf3sJ@YS?q1L3TA?E2pqb[BSX*g"CjNW%`^u?;L28Be+G0&cPI'f6[/rV!mMb5a&+\ATZq5:1[Yg%`:?QggHu[8Qk0pO:'eaYO*[:k'o):IQWCZ&ZDHhVtnD^Th:><'.@IJCm:1k7^JL4_@0D9%POLtLp^oHktYnSWb*PhRE*.Pk/0<-']bhnL&Jt=8D#Sa-.3N'QmEB"'5*/TB08g4[X>gB2pM1^qKoqF"%?I1"LdTBP/[)m0CGhpeE,%Pq!S]&P751Z5f=WEZ3ppH%C1&uAmSi7!;:aKG-q"=IKi>9an;WN@+%5d<(X\AT)X=g4$3sR1qLHE`UNBD>_>%CF'-/gDto=\HZY0g&4c0eEG%OG^B%+52VM6jK'=(3'/2'=Hmmb;]9DE=a@,,)SY8>[6./uj#\A9j7s4);cTUUnNLPfO/n5\UAuT>O`^Pk\]%lZMYKLj!RFg=(pXZ(NLG53Ds.64RC5l=GX@HXhEl6RF!SiC22%Yec`q endstream endobj 452 0 obj << /Type /Page /Parent 1 0 R /MediaBox [ 0 0 612 792 ] /Resources 3 0 R /Contents 451 0 R /Annots 453 0 R >> endobj 453 0 obj [ 454 0 R ] endobj 454 0 obj << /Type /Annot /Subtype /Link /Rect [ 54.0 628.96 91.332 616.96 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 43 0 R /H /I >> endobj 455 0 obj << /Length 3045 /Filter [ /ASCII85Decode /FlateDecode ] >> stream Gau0F=c_UQ&Us1U@J!J/0[1AUCQL)$]:$cOO9)XK7Y2bR#I[=\_T8HQ7j%ap73-Q:7,"p_f`cQR2F"KLa2]YFIpUtoHk$qIA^4bq^2XpX)np:L?bT&Npb#5Q(4"#2\Qf!pmc1pu]c61=n#C35cfO]g;c=c&Uh[A;"o9c"1c.S7I/X$^rD4O7Y."[68@_&O.4iK9&Gbk&5]b+]=k%[cJOL8I-..$#;.TPN(NkH9=6ku:s'71jNYE1_//T).;_+9*G?UsdgWg)gSVR:!$F=W4Xeo=]J>+X*Y6#Cqcbc$lLA)EI^0PC@")`PLgO2Ie-jG*(T[kC9W&Ka?tFOKHO524=XD6ajS1a6"uq:P!Nf1R%V,-q3t4dg/G(=NlL1T`#dR1J1Bcr-&+i`>b"1jcq\<3oU^;T]e*6jfii!U)J!QU-^PqN]+$S;3*)[70\gYW$Ic(sh_Tl7kBR\8Of%&#A*3qIN"&DQ:YkV22>IUVfS*0#>8L/05Lq2/7M8u>Z!8J@0]p8THCCB:t,:A!jr$6Hu_uCP7AoWLEb],(\iZEp^bYrIF@"D,:aG(8H)$gcFroq3_+4f?n8DB0"ZNi2m.-@t&>/i4qQ?dUg=NKSYfUd\D)MJh0bNgm&`.EYLTfLC#k#&c@mRp]a1a?*]O2k%,Eb"SB(o%o>Y*$hI=V0$gjKlpsq8S@Qo1("Gf0'[EFZ^qKY!L/S^fdEB#/[%f-`)9&`TFc`TAHq.d)CUH0(Xp4`2r\csIMd.,IIhfcp6'9lLRo:4N?OHpPHafSgKkdDp,oK@n03EH04:J8P'A9fnP,p1VI8u1A&h2hYXMJ-6DbH&+&*UPE&sLm>/91=13LeX,`F+#J/L*@@7lM]Un.fGihmG[Cj2P^54cHoXoHC4=/q.X/fU>AUND5i>(6SM/P#%A.?DbR*GJHY^dqc)G=7,We6F=PV2[1Wb89&ncH^T#YK*!EZ[?E4!-guNl7M.C+^kIMR58`s'FVuGIpCT&%:`6#1]0'+)bW$LU4AQq[)k"5$V1IqO+i2]m);6fn3t(Ml:ctG,S.LCO!K.j(%c5E\X'db4+3.kB,_52OKLF@VK=&4MEKISoD$m\"/\f=)]A/NHHY,qnp3E5h%@MQ4oo$%>@/8&ec54FJ<>7+[s#I?d;L\>m]H1X)fg#[hP87mR*8.^/G;?)PVtTKWhFlS!8aIaSukkCSeJ`@d_!(e95UiIS>k%tgtZ;Kj?O`nC\(MWZ,]"4p4WK'N\ubV4g&0OQd>@F-T;))e;_O*?D!a)Ac6Hqc=M#]anTM_peua:"+A-7MmdDFFjugIuf,3IAELV!.H(ted&$@!p<#r&:Em_[XA#52?s'/t`gS(^pTVqqah+%G]]"P.YodXle`feV=lI@t6A=DG+Y7Qj:W9EoM^(AWB=o0njK:JcB7L\orr_oG.>G+V!5\iY$JgTBCIg5c\=34dHt#/DQYnU$37kVU>rntlbgNdD[fZ5:Q[cgd(gU:QT(2]3ZCM!&S!ln)jI-lj-]aPNC[_BH7.L@%prU5sS3^)aL>:Tgc(bDUU49^sjnAl.L8d?kZIOS]7JL"u]h)Wh8N)O(5I@6>rHHj:olX1`=cmlT)EQ.:;_MKQ@9Y<2<*M`a?%+n7&mWcm<'=mk?#'."RgQ7ut8g#UeTt7YKY`MZCpp@^0+6nPPir~> endstream endobj 456 0 obj << /Type /Page /Parent 1 0 R /MediaBox [ 0 0 612 792 ] /Resources 3 0 R /Contents 455 0 R >> endobj 457 0 obj << /Length 3093 /Filter [ /ASCII85Decode /FlateDecode ] >> stream Gat=.>EbPt'n2c^U!f-1jlrHXBY]n/C@1]4hTFD1nW^L\E?8<1)A+4@!g73elh>@^c@JG=X<2Viqs-Fo0&O53]R.0an8S!>NPtsSF)U_rrorl1Y/C%Wj#6LGGNDAVq5[`Y1FI-B\R',jrd",'N#!'*"1/)=_;E')mFZ`#-%2*dLY"'8!8/>G!YCk*01/\_FT@UrGPAqr@q,,8]s1s.ljA7;b4V.2Oo_ZYK@Rkgoq,<8H+j(ClJ\(EDo]1hfZ"5Fb,UH9QpROLJOd2n*)T8.&Om@f>=sj,0>nm$0_a^jks.P0U2299QS0t>u6]Jc+AQP+QOS`m:_RuVI`^^bR8cuVJ4\j"`R"/YH1LgRM2jonB2r>:`X"sLa`W4$2U7*S:iVG@&bX[[K>SPF:U/2F2'%[]PsaX`,qgo!bK0$I)ep's'KY(V)Dh6o\JCtX.V74!1UN=eNY)_-.,mjc7_Fe!nXh?%V1lsR(A%\sbb^;ddfoGFgFNAT%R$jRnI[qf>@+q9UEA2(>ag1BN.UR:HMF5XsE>g^srV!8<.M$alo=3:qXM2B>RDM"gZoD`Q2oi^.N_*q9%bdDI`A5YHCos\"YC2cRC2H1`>O0OLkB]G"SUW30>Op83M^*M5?D/tLR^/""rCJ%\Q3S7C`ZfXaEs4,nFAE%6@2Ur&CLl`HWpJ2LZ3UOQi>N0FBUmON:9;P4WqKB4Nk_rjl(7eC8lHOn_JQkq$Yg6Odl!(Ue@3[[$ReG)M8b28.+L7%.$V`IlcVP$=qZ%h:Z7ujEfL=E5tBN0i/U;S;lJm-BfJ>B_I)`I=7dMN_T0`$1&/pCHO<#)<@`_e0apR$ZA9%i=tX236;(2ns!5`t.Q)5>2%R'0EcgFK@lIE,A/O$auBNWi]N,'jrA[rGN2<-;M(Vuhk91Lk<%pjL0OqU@W`+=GLV("4qaU1;gp`$=D=JV`?V-IG@+W_#Vt@M=]G+*$;45(>=LC_I>-ZPdlCg)%n*e?dGgE>bRo1TC:I6MnqL-b$cjTe=>EKKO)k95qNCNtkU$6cU?N,76FZ1cfq&c0\M./@hRns4THSq^a=m9tuijSa+%iNuk=RTI]G8-tdTPiY7Cmj"PL&inQn>#,3BBBh'Z#+*!I*Img$j1.n*:S5B5AVcI<G1;]SoIcB7WA?%S=KZ\b.!U8/D?e0.\&pUYp!=T2pN&SDkI3\?Ae$@'>7Qr-)E,A6]#rJ'RD=1kK1VsqoDUrW7`S\Mu9UWRBWMVeWZp(_f.K;l)'k[g:P_:40&aHmS/V%b`a?HR]A4P?fX4_?PV>^J)O&Y]o;"2*^&<)i=7h9?A7,?;&DWRBNFiZ``QY?,IOE2q2@X2KG:DhW;sK-rIZe/fl0GoYLnihW!5h)6]Mk5K9'JPb902khPuRo=R=@BH/*QUYqJ1(V&#%"-KaSP-gN4RT*J@oFur%00c1WN9+O=b7DEBHMO6rb]rq,J@RHH6kcFU8L5l5=(7;tI*.#os2G417U\a35Y^1\?4RA979T[.CLE=Uj4`D@'=!tccRJ.+b\FLSbpq/"-%TQ;a>J)6!Whr]Mdf6_i]Ou'XLD&!o-CQp7L<<<=)t2Wi2Ot+#!G?MYWY`cT#a%&EPOFAm]s]?a=@E];HiN_&olU$+:^,[N+AbR7qE<.0\8=f._1nZ%ms9U5'_Nu1@<)^??6Jc]gmuj~> endstream endobj 458 0 obj << /Type /Page /Parent 1 0 R /MediaBox [ 0 0 612 792 ] /Resources 3 0 R /Contents 457 0 R >> endobj 459 0 obj << /Length 3290 /Filter [ /ASCII85Decode /FlateDecode ] >> stream GatU6=d.mU%=[bQiUTokeXEW;R*'6q?Bb"\-HC9W0BkUG&oD\kQFo8)VZ2'0*B#%(P3kq-N%G\c!!46-5X3!<4aur<[_o2cbN@)RD"$_E"b64i[bt:"a"2>m`QN`#TDRe=.J)rE@cdCM\,/r`&_6.3Te,&2MP!ke?D)3AO[u',/H38+q$c#ta)-S`S\Sa7M=65?D"rKMppjsGV@PfVj1BV)YW>?qYBaSVd:EZY:*fXPQ:%Ddq>8L`1CL4^6Y1gdHVVVS"e4nr5QLRf";Vd\cXVOf$qTi2^uJ4^,:\1f:l`P-SIPYU!9k')C7b;\V$'EfTnWg[.#pbRjQ>8Yp5WrJEXYf$7+_7R:Z.!aO`9rURQ+h4K2nSA,W[c2a#9>h:Fdb?#OAp)-_56[.XbVAe4S``MO@"%YoVjTOUEg:l,g#>OSrB1/T3$#s[p%L6Q&3`E0oI*HbpIYgS'p.fAjXpW&ib0rnu$gg^h^D4/DLt&!tp4t97UNkH,c$!`]3%7JlXc9oe7l5ug;'KA1q<@JZ`$HA%eg2LX9'eS[ufoJj5(\pItGZMn[&adNYb]s&T-nBSuNuH;bR5O@#HCqYYHi[Kum$J2qHck,>e`OG[cJDa&@j^h=NT#LU>T/W?!66iE2)VNN'K#0f/IjA[!%K^F1%PA@GF`$8=I_;cf2$1DJDN8e7^i!O9hpY\NWS8T)c]6uSq[(d@63d?INpWN(_UXNgKCIG.16>qn$tIk,%8La[f0:SbabtO(.T:RL>oK)o?g+`0%B)1-a`CIR9W('-4Jrm]fRrUh*0B3m6X,>9UV5i;/0+H4qZU6E[$X%,CUHMXnU-*I01DJ4)U#(Rj$<6tWTH"2[ILF]&&H"miQDhddq`7cnE/`33"lnhSns<(\RW-%C?Q0TYtN\.Blm]E)&4-(m>m3+Qnp(XFU@6#NPV9BDYh8T>;X7m1sk8r?l=ju(#YlM#q6CK!!R1UMMdH!atZb?.rBHm)0e)@*1JZLfP'ZSAfDo'G"-;8niHj])I+"1]X0pO7)h!fG?)<,J3P[-')OUr@Y[1$_+j\l3F%)!K]#c++[es112OJa]\XmG+jh)nrBY_!a$jpo^k58Hs$1\CJ-Nu(%Z'@.-/\,fB3sUEGkhLc(oSX1&1p!1qp64g^OCUr2kDcPAn$E2W2r\7d(r?CG7;<=)\b/g&%EMRRcnQ?TrVsZ>I2_.84aRR?&/TXM,S:S?^%W:Y]uSGu^3UjAk@.feDUe6K+prO*ft"fRP5)^6E#c6X1Z+PC))PY*rm6&uNb?ph9)]1spn$c2&]L5kgN.<-+cNSE[n(1Y[lR:+V%pY$eZ7bY>Q,Wc'CE)%>M'*ZSlFPX\$M'K^r%YXP^]S2YSqkI!uC)<#_/G:^#(@F:.C:@_/',TKIbj,%_b5h4/H,7*lQ*O"d,XrH.H-]R:Hm1F,-'Y)@*\@(/1'i]0n08Ya&')-A7F^CrqG:'d5*4rg.cCj__k\Hc*PXRn7.X8O/k\$;`Z_lQ2fDE8>q=u'M1O/Er;PplL50\'u&?FaR6F)eX$ISD?@.%QaK*XKdPGrg_e7f^UjYjD$q(\9WN8&6jacseSDK#Zsf6bUB6]Q\pc(FeNIniU]0F4#fWZ5ObJB;o-2[Q^4@DYScS8hX\'\"@5GKcF%G%R?+iGFK/X%Hjbs7u+j7UV.Us,?Q0+j$[C_\#XUk12C[^L_Fkne+`mMZff%;.B:87SH7qAQJ&jhF4C6K-om*]1\.-l4l5?7W>L4!k"r=?1":f&\:G!n[L)n[(=2Kn@Rb2OkES%iQ5Y1#B1pG2`YBa"'$A)r\7g,g5TbX_6'Q];PpQYeb$3FEp%V+l7)'UaE3\LFR? endstream endobj 460 0 obj << /Type /Page /Parent 1 0 R /MediaBox [ 0 0 612 792 ] /Resources 3 0 R /Contents 459 0 R >> endobj 461 0 obj << /Length 2625 /Filter [ /ASCII85Decode /FlateDecode ] >> stream GauHM>E@OI&q8_F+o&\q5aEp`&k)t@J[WY.%FCd8mQ'I(m/nrh[Mi:hFkPTDk^W'b51EI\gBa5JM.La_hqUFohqVSP]>+46asE`OC#J?4:Z#IR*hc?E-ulfdGTn9Y\b62h;E241elP(CI5=DM!ImAg,3-O!Y^S[ChK=L%J%`'hkm,.D2jb0Wh;NVl25FQo#3k8.F99=LqsBXVl`&p]?g<:Q<&aniKZ_*@5<-ElqVnpS]6""djC_$2r-d7:f+lsjR-3gW1-CUtKnHG)3agPbm_^C)90:(RNP_b1dX'@m-qXOGDmgHB#jM%'4!`G3K[#F/8ge0fRE%i3acFNel)`:iEgDFO]NmZX_H?R4,ipY.e_FWN%7>O(c,[F;n(qX(]8S_W>Rj%UgUPq++-60MZ\-Wp`4IWo'P<jPA&j<+]>9>Q:n:IVoi+n(8#6Tj-DZ+#@g::fZFBRd,\_#lZ.b^qFVsfSkXTmV?1YjmP,k*oprA4((<%QtR-0&IQP%tg"ok++g'f2d3[Ap#BT/1#L9#o7bs.Q$eF8]aJMt5+\QPn2j@gl&sJPEUuN0@e"=rUl7@>]'FC#,Zk5\OjOmDl,7G-$^7I)\HuY9)2!PfH8s!W/lh@6pE^FeYdgNOTn=?S]IW"6pQ7pVAT1,3Tuu[)]]3>>lOT*AZAE'f07ELG"oM5fm`)Hu>Pm-0s)t!u<^.V@5+P/V`W&"Q[njb\=k!>Hf/=k$*Y@U\J8W2Z@];ZgXs@=lpA;JVRF!efoaeN'L0Pg3LNT+2O5mU&jEZP?)J^?Xl_dWJ%t6c.K2Wh5IU*dG0`'dgC0Pi\h'(Nd'_-$pdd0n5Tr1DmX1Ze,X>aB)O%CG1%^=!\&T=+LB1c`2(c6?s>ij,JG(/[I+[:HGLJm(tn)]ihE",7[dud*JtUeu8EQ*3C3!OX*p-`2giDGcd[1i#VI>Eu%D32Kl3V$nBd[M,F$$A.e[gaAdiq?5mA'UdBFD,_Mcl;);g;DeZF0*shVQoABSZT\ufBd"$Y,3'Q0<3nZ(WD]T$L_I9/2`$?>RA1tPh?:aeC2Ggm)Gp4pHbJkD[G6t1k7,/ufmI"48oWT]@XbL]7S\g.hnZP)oRE9[)[*.\;j[sm<,a>g&9i!$u_(EZQaq-s5E5&R;\q;SZD\[BIOTiIL^g3T3CP9-7pZCa>Hr:M_WUqtLV[rH_qb-p#"43gbk4[V_UF]WqGK%DRrik6\qi;Co.lR_o=c'4TOs#q$8h+9_@k^4Ni3LkB41S*jBHkQ>07.aSPQjMp.2+Urp$p4Q=o\s&oni&3K5,S;"d:`oa,V2+t`[I>l1FD*IIoX+>P"W&@:3QP+3d3".-UScHK9&=",R_ZIU#fB=sB+sn]ES;cuT_koW5?oA\E?2&/>@UZlG8G![[K6/LJY%FHN).>+7JGRog[9-T$cL0mW+Z6jJ_5f.D8L>84,AWZ)WI)];a\Z"gsfGN+uqMk&3E$4`Occ!>%XaJQSW9JluU0sBd9N''3!h@;\Ul>e!A%G#FZ%Re>31lNh#[eX'ZAUMs]kq6kF#(AX]>Wh>B.j`(X&p/Yb=m$Fhm3S/Rc endstream endobj 462 0 obj << /Type /Page /Parent 1 0 R /MediaBox [ 0 0 612 792 ] /Resources 3 0 R /Contents 461 0 R >> endobj 463 0 obj << /Length 2782 /Filter [ /ASCII85Decode /FlateDecode ] >> stream GatU6=c_=Y&Up?Z6"khb%]g]mc-&Ze`4J)=0=$D?,O?V2o0?/)WFK8hUrF1%r:^oo.Z1>Y1Ck_=\uP)!YF>'3p$hb;(m`?=A$p_=NST4uR.+l/Ta>L@i3U4?NE'`ko@5Kk+u`@FZe]D,C&7pYs!epOIMZ!nI!Ur"ft96BAZU?6,@&-lgES+ncX`'V>P?Au/Wtj@>CZAs:8Gt2ALTQOERPrV5.u%Njk70;799ibOWKCrML_Yi,Hm/*06MZ_*.:hZ#i,E"J2[bLcg$J_a3I`$Qi!Wf/9i#!cLBF^4(BOkLpea\\UCN&gq[`tSJD"F#q/"aIQL(HqM`7IBKHuSODb*IE"[hThsM_%f\eO>UI:#4*Q2FT"OCR1h>=A02TT]#(kKns_bA7c_hJrV(l-Q.ho`#[<%ILH]$bQUD%Md_O`MkUI$aXBBePq!$CY);1lHT3im0B\S\2I-7[omkSK&)Ml6'^+DDUTZ0fs"[0u*P13mU+;*CBo.pI^8_T2->rM+2B;FY1*tAe)GDM5&^;jA%[oP`odfK-n0(Q\Ah_4/1--)_YV(OO8@I,#jcS/")8F*=eLrE6>2:W_04+cK/>Vi8'`*c8cS16F/Ygcgn!+QCH.,DDnW:EL9B&>5eVMa,H[Oj"erp;,@L&(J\eOq#5Ork@Vc@Qoj!uW$se\<8bR+]BWepa-ir[.nrNe=fr!tp.cUWbVODB1ScD)Fh#><"b36U"&Z[R*M@M6bIf,@QUgZFlV0\W(qa>\8U/8"`Y#1r0PcfD%Q[nH(&5+?pf0J&m?h3hW+GFF8BuXA`8f9mE1h8e)EX$Cj:0c[f]OZ62gh72La=cUm]Zm+XqJT?j3C.%p9e_%82"5^j!'c$[%E$jqD6MFuq'7@qK+E/S_8YqP\;G1Md8Ff=+Y.%"Y3Lb^5jGpj"Gb#0J?6kgWS&M=J..KO"naYbeV6tP%AiqWV/]:9%RfMu-GB`qSH'eEmp$'PKpm)kMJkNicon?j`LW5YYd/uh0H]6m[(XO;N%%53HE"':TgT`XmYZooH%+LMXo$&A`+fr"uEu3%fZ<;,Y$u(V*S/6@1lrOP?b5\cTFrFir@-V4J&`UAHBk8rA56;W+2<)YMP\:1*$#nB"[RG/P0!odkDPgVk8,T.%S`1e_)L;9ZaEeGDAO>?t!V_lf2t=.)<@D,ca"<8Xlh0IiaQ=#.K:VMH^5+_&!a"7kNM?g:PWq:DP+7a^!69G=rOnIa42c)ed)2Y7@&)S7l('Vm(KZkSp)&Md=rcOY7'>l=Iq,2[die`R,,bR,ka7TK!PX@IqjJka'4b;!8(eAB66^XN$K!D!15iE@cKA#P)_&p%=$"HjU%/S3f$a&iXciAA8ULu#Bk;gkXm06'T4iLU@!o)C)VVTqRM*C+F;=S+R&4k8E_7*.aji?PIZ0K>P:4B]B0(:%BsI)5n?Cd[[0@EQ04!!m_/(9eK.PoFCXudd"t,j$SELOhNuA>UH:8Pb^>"R^]-t$!U$VU:P$fJ:h^1JAEjEhH;P$fKno_94c1Y?oeblYCZL8jQ0mOj=VfR(9]JIoe"1+$cFN``&YW9k(K=>9hnC$Z^?-*0D5-lAk=RB(p4J85CPNCC(ZIB@Y1V21%b%OUu]>NdhY@,Uj#^ZEWHl#B@T_,49qZVj0s~> endstream endobj 464 0 obj << /Type /Page /Parent 1 0 R /MediaBox [ 0 0 612 792 ] /Resources 3 0 R /Contents 463 0 R >> endobj 465 0 obj << /Length 3543 /Filter [ /ASCII85Decode /FlateDecode ] >> stream GatU7=``=e&q8H9?n!aPUSjlMJe)OeQcJIHKrH2_Wd,j&Th&V"AkF$9,TD:BXQ6U"EkHeRi.^YW(Ha?DkDU3brqrNXB4no+m"3,pO5elTY[q;3P0Hn;b&f)&?!Z_:!*KEK8OXblQV"n"Mo9hbR=e/\\cY"$k#@HGq0UV[kAj#Qq2r!#8?i8sGm!l@2h\:.`[fl2?_n^;Qs.#M,8dRp>&9r3hP:d>1[\/^AX_G[kZd]CIbV'Y:@=&V%'E,UAeX`_O+He!9o-Ri3>FhBc`%2N@896m2f$>>R0Y0%'nPgbG/'/bVb0RZ,*9u$]<'Z6=.Wth7"4[(]WE8>rTA%rn1NSdU3s4HG$2NU;Q`")%0O4=-Pg4K,J)nZ^CXcfZq.[8E?^bBS&6:e8QQpq;urA(PZ!)=*S?WL#qBfBW&INXOgTCI,*O!D6jXLf)A6EU1m$>@QTsN^aXY"dA?t5Oe-Z@d`U-`/Huh,BqG@9T=!*.jlmY)jD8"Z!%r]oBcdE7V]$QsBG:^T5#B6\@s-;btj1@Gp$cVa^/AcF1+@JN[!J>ED;]X%06m7]toQ2Y&VhM@K+Ij)09:mR+>8\_W()gol6c%qC_""_:C*du*O"5/[Ub'Rmn'GPgTU>P//9HbWt"i*f^L:I6hINj%.P_VUgDKI^.YWTZ!u*.dRa']Q3OOFqZ!"'+e&%\6TJ,\rI(p8cgPRGZq0=Mt#+\N&[7:g:0?[mYjE-,JBVaQK9j%W%lkQH]5HYZh%qHr.-g-"fAR*ojaTt9JhP)==;94Ll6I6/\^=sh]"[OC=Gk[@,+#HA@toVhDM9U<^Sch,%+GRsUoXc\T&cPJ*/ZRT"rcO>"SCMOA,l:h9968oA\$pC'U8`s8HS^a[RcVbdd_g$$ff6u5l3!_=Aa4Cs;=a]fHMfdMs+De;Q?VGA5p:UF2KfONBY%p:^Wf^8-R!Mo-mYb.S$OL@r'Z-(%b0jg_F=K>+T1"nagb[dQT;08FB!%[cANcK3&3PY`*(9Uk>N+nI$TTZWd"nEZ!4RVdg[Eb-+[i5S6Q>HhJ!Y.odFh6@p)SZfjj2g]&b>8E*Lgg$"&OEAI;O]52@&Um:b.LSnOe0W%>5Q_E!KQU_##7A?VnYkXB:1d^3Y^7AbQ%E]rNl17GUaEs(<9HkV@=@fFs\4;B`lBMou/]/UDm2`N!f]SaiPZU#mU\9$u-!m^*=f%V5/P=[#o:=Xoq!!k)P]?P[-[o,3Ss0h+$)H:dIILM!C?rQ]jF+rAAf%hajG'$6(0i2Ypp^1MQsCAdblsT-FMLr1)J1ZfASep\_Xq+Di4qNORe'TI@0QfR!0_UUeeTg(1iTW$WWbQb%k`cU2U+'[*:3"?]<_-L=.OFHP!m[4SV_hPA_-mO8]E$E)'RXZ<`LkP_@/SeVnJV6)6d4pGj9au>ajWf_T6Kq&D8?M%3%.UGQ,BNWLEZFQ4]Q1?^^5#LW5+/a6O9gEHn?#lO](@6AERs,$4BZS;Z;RgWmPAQ0i#HTOA"[Wd=gMcY#X8&7qBOuQgMB.FcU`,CtQq8mk+ja$omD/icm6](@]2t],[RWKh*+9k)dbe2qFTU\0?1Z-gco\b8OsG+cOVs>BpuQ#R:hk$0F@4O5S*';TUo.Dc>9D#b0*aLZ3DbS?mZ&@0[@8C3TsQ[=\9G9J)q,Xu(hUZ171=em'bCt,qV*^G0R#jLf7M=qUF6YDqUe#Ib`ib3Gs7d4./E?I`)W>GFHd]7Lpf3@(!p/`3V"^np+b9MA$?,))bFosWnI@B_l]sDhYU\(jjRMdK;t!b&XTWGjp+;2D"KA&9hl]P#J'#em^II?Crh+peci5g\+(#[r4Y/aaer%#kMZEet?slSpN6kDU,]>cNlk$jR#O9.PR4Ghf:`g`/fVko^!84;'"Y4]Zfs`OX4PLfN^)l\hr":L*-.4?DoTW2b=#F?s[U_9$hYJX2)]X2Z"0A072Q?^53G69tBhp1!fmVG\aMdSa]Ab-%+Vd&gRkj6(8d-A0$1I2Gg/,.0(Y6j1WX(V9 endstream endobj 466 0 obj << /Type /Page /Parent 1 0 R /MediaBox [ 0 0 612 792 ] /Resources 3 0 R /Contents 465 0 R >> endobj 467 0 obj << /Length 2255 /Filter [ /ASCII85Decode /FlateDecode ] >> stream Gatm=?#uK)'ReT:i2oRT/aP+58#N+"-^GdN[?F^-qTs=H=C0*[&?(!/f"^YWJTVc[KM^Z`88-?+F75]AQ\BY4JUSb!b(u`ck6"(U%&ddR+4XTuY$%o#D!l&eV=r6)l(`X,%@P:eG]U=aB))8rqSJ`DA:%`'qk=&J4`%;)rdF.Plg9Br%un>j1>I=OAWfZ=IJ2,[oIGqa=[Ak&p3VdS+/X&jH`8*\l+IYjr`>SLQ`^>Xb=pe"i;bJa,)QDKE[qgmb1[,ZfPPf'ulI!?S_3^cH@9k:f6!>KaBJ!FD5;jU+EF.iOPHqhgN>R/_[Qhnq\$1gN%PDAe+.RAZ*C*+]L'[Nl28Fh.!S+."C%7__&MicMI/b8Erb(5:YPE2JBb_0UmuOtgZESt![#P/$fL*H+52jS#grl5/l(\#AG_VFrJVe>^a-HS6I+M*WbI&h8'tN)S`cU&K'Iaq:o:dcV7e7cS_!jO6Bj74L,sb8`$B$9\^tqo!8etfteOmumYZ2-]6CE?&I#BB-kfO;2FH(\/2d/hLk%4@WJ((?&Tf(7D*^6EP$kKg9Ia?&_pa(T5!&RYlL_EWug:Kkf,nKS1ka*Glj/\1L$sP/!9TnT=9X@"ZpG0=:g'4M;si>rk/ph@A[o&O\OF^q!7s;Wa1As9Z9Bh;u)Rd_6`"(6.f.eBcIjDW_%_==IaaI,IU6ln=gV%VW%tI_pDW17T.V"eFB=&hNR\#k!ea19[BTr]?/aXX..;ElgaVbVt6\YE.\e@;?Q-0)0$<,eOn1h-:l^.H2fX.r.`^b(M&MJZ5@SKMARWpIZj5@JR+c7)KU=VBEkp\X<+t03XRb-)j`)OWu9sj_f@AoK/&@e9\:l*gYZKJ^8&^_9T+-h#?J_*mkG"'_.1X_*DXh0D?aU$J5NIh'JG8DS1_p(]l@OcDLCODLU3Jnn_NBumGr";*T+LO[j298)/Af+7%#=?n+U\`&-^H^HHRLe@J=DgnXY'.+MbHX!ZU2tOVou2>Fjr=DZqN*XG(P6#jB/`:2gKYGP&"hBkCqF`27sOCWQqD]D<:Qg;LmG\3Du>dMUl\[s3:iDn/.:[1E.XHuo#LcgfhX^TMJSR+tts3cFUAj2@aA,Z,nFn_JSN&T+AB(?+V5QAP.fI#AT3\JHO^aR,;V[i`aL#IdnsK%C&_qSUC`jV.QCnQfFY0o`7oS?`RSVmUDE.JUFqUp#h2'K.'Lf2N!aBSOF5kHb(ZD:uHc25+F_3^s0JX7XA-*dh7t@':79NUci/16?3sM)JDSOO*o//$K+V=X?q61E-oMKJnDgWEU+DnXe+CU!.!R>YKDOSFECZ`7Cp"_0],"'32lVD4BH>`Y'MQ])S$s7Y3ZK?d%C[h\6kN?\=U3rErjQ5A?9as^aB)+;27eXt-K/!T2^s!"O.A8R+!rJTRgJ3F5-=h1c4kY+VLr_U6++g7j@>U:%ndUa2k)=Z;-`B;3R5Rm,aP9%Fi_MF2N"L_iEN;`pFEChK!$glMZYq`V6EmOHe&NK7_8=Jf735[kZ=0Bh]KFWoW*^aPV:g^3;*Z-_K`bPIQ'U0Y_lQ3qsEAhO=a/C^l?=sO-9tL?5UGXkL?bMIbE[SDobV^PAmYK/72tY-u[`\/ogJC+HWSH0qJmS#86q]*W~> endstream endobj 468 0 obj << /Type /Page /Parent 1 0 R /MediaBox [ 0 0 612 792 ] /Resources 3 0 R /Contents 467 0 R /Annots 469 0 R >> endobj 469 0 obj [ 470 0 R ] endobj 470 0 obj << /Type /Annot /Subtype /Link /Rect [ 147.984 603.535 200.652 591.535 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A << /URI (http://jira.springsource.org/browse/SWF-1160) /S /URI >> /H /I >> endobj 471 0 obj << /Length 162 /Filter [ /ASCII85Decode /FlateDecode ] >> stream Garg^iR2p+ endstream endobj 472 0 obj << /Type /Page /Parent 1 0 R /MediaBox [ 0 0 612 792 ] /Resources 3 0 R /Contents 471 0 R >> endobj 473 0 obj << /Length 2550 /Filter [ /ASCII85Decode /FlateDecode ] >> stream Gatm>>E@OI&q9SYcsmF$PXt'H'F(#7.8gjKS)(L`73Alp]bVeb/g]uKr;/;"`L;oXY:V\YLonl[1E=\Grp[F:5>"Fb(-7N2L$(QO\DtD4mN`kFS1rpG%jU7Wn,3-E9D4@O'N)f3:aCV`m^H*G\Z4o3:IVCWF]rEhnW!.$oD!AOJ]GP8,Z*pCA.]V*m_%Y"8.?MDDN8ML-ZHS_ikp21,V>M+>uhgqJbb@NlWnh8Po^uG]CH^85C=EaeE-2q=K19&?g;A#nhJ1PX;F.!_ae7*p44]"10kZBN&u@UJm*n=\7/rR,%@6ZG,!"NCcH5%c!ZXuin`l_7uN]DLR'7NGI55pjWWC+STX$DQiC.r`4Sle@@co]-5MfW!_'?*eGh^H6L;XRkHVH^SmC$^'p"$.90-!J^9u,ORY=X,U^U4tch?[)tD$IrZ;;MLe;b:blM.GP7&U&siDtUgoo2Q$smmZ3PS$`7[,qXJO,W!>Am8NcRfDf!OC'NX84SD2&-(48L;)%V]bml%Bpc#^>0H0Lel=4jE'1FMWcW")H1,E1d-Y:CE9kJ+ukT`c4fngYRLF1p]SZ#!W&pXhK,It>sd1A)@8tc@2]^\co'YaBp@lp;bEJTNgLsb*kG%$TnLBjM>O`B0dch>$\3l%`1B*i96*W+Psl8ZaVE,'Pm[lIO:\Tb%_t)p&6/BldgP!7&*FM0']1@H/CM5#dL+2$%SIqFl?0`*gG`g#DGidq*XbGME8OInd^#j]DasWLm>Ie.$RT3LR!BX]X3)5I;DK;G9\j0;oTZ/_),6N/og%=KLb#_tb(cpoMR%jWW1=I`bmr:f@-GS_>3J0fK0skTkk%0>aC0a6MSZ`M*rPe^#KFF.7A@Frouf]XfS"BolhS&9eTjY-u#ch"!Jp0]h_YCc;2p8L/fABYZM?QTF>e*s?1[!E2`fc3M&(@sWC)<7nNlNHccP]ak4b-Fd-Yh2G?/E1jV'uh><%Y7s<8f&9r$mSej1L>JZ?HOon]6>-m4#CR>+BZ$ROI1,23#^lnH`is,]10#3\<7hhHZYG#)64J6N)Ej%Q[=TMR7GJ$\erqHXri"VOF(VTCBQbOZd'.LL7X*_>C2g6gLOgHYLA*AH51MWnUZJS_WQug-.m`eae?mCGMtu*meI"hWU$qWNV)Y]r0s1X`UH4#pnsaS_VtX*(u1X(#SnO)7P'^@'5J7]#orqEO%,g.7Uf=)PFGOJfa%lLha]Jagpa.)'PH5XB=l%liW?s/,2"/Vp4!C&ka0%YRB?5H@@mF#(S(;NPaB5c?9B@.D[kdG"oGJj)j;g#t%gdOWBDs7S5fN=R*BsF988\plR_RB0Upaa@!6>m_aKu]T?Vt'.XCQ,_[Q@@6r?:;=Z]12J$DVrS6;RUK]DX8th-3W;mg7$1*1[Q,Y@+lNr7nDe8gTJd"m3_V/->\:g_3]os&N)BdNPR#_8S9tRBrp1>cgjK^aXYW=IZpS'DZ,:>Yjk@"VF4+[GhTAaucssGY endstream endobj 474 0 obj << /Type /Page /Parent 1 0 R /MediaBox [ 0 0 612 792 ] /Resources 3 0 R /Contents 473 0 R /Annots 475 0 R >> endobj 475 0 obj [ 476 0 R ] endobj 476 0 obj << /Type /Annot /Subtype /Link /Rect [ 343.296 496.736 408.288 484.736 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A << /URI (http://portals.apache.org/pluto/) /S /URI >> /H /I >> endobj 477 0 obj << /Length 2305 /Filter [ /ASCII85Decode /FlateDecode ] >> stream GatU5=`<%a&:W67+T.H(c'j"LkQN5Ge#$g*1i_!"V@SouP)2^T6W-*OoY5TN,fLX9.E[YQ`7B7tfPbA7^0/4\RU*Xj*nSX1Y#[@9>L0hB_a!R'"`$C_?bV^jQ@dmDG41rp&=ZfIK;=[j.]C<<oTh1qc6(UD=79seZL=kZ8TmTBknL98X+r25tW+1d(_T@/V\Dbh;oSQ8>(@NEet>?*7QVh!cinY%@H"XofhA=T;Ql;+?]&5[qe%49Z*Q[)Vuq<#%k6GsFaWaf,h&>e&_(incN!R4FL2L2_hV'@5?8-mLMB3q]rl0AQPYE7U_Rr4D;SHq+(<13<3jNs.VU7UL$WC0HPtR6sAKT'9/h@TZ5-O6,=k)W"&HR#Z%5]Uo1krN-i@&N#NS0c%:'M93:,jeI`0;%ei-DITjg/>C8hW\aQQ2qn-telYQ0^F%fO<-`8b[a?WQa:p3\-3<.0!TuE)(NpPMN$GSlm^9d^)]k[3>L/->\QgZbWigEhm_nn5WY[Z6U@3Hokg:O*A@u<5d_ZfK#,+?Q'H<>9nRLcC.F^=%64l_Z4EC?(\]@pf=$#]qWR9!;6=Tc8LrqgZt6FHR4#OH_$EB=JkYF,r$mX8A!oX"4&h/KFHbE#F_55cZQ@f\"\`dAQmW%h>AH<4\g-Z*i1)_i67+df,f/oDf=(Te0f3X)?bd*:GV/q*nmKSge+B#fD=dU4k/7KLtIYQIZ=Ul\+R'JjJkh1rH[1>X9F!=2I2)%ot],ho73,oI'H%Vt[*%kg^U2H88NFE*<)+AuZ1@m?pAfD0H?#AoZ6H7H1jVd"J8g]$:]CEecVmgcqQ(HY.5-9_>T!NnNAQkP/jQ/*dDhYlN[/=3RM>/VRP?$]^N^_@?qOOC7I+EJbJHFMc.VK=grYh+K^mc*9840Sd0[=?ouOc"_*G&L^*@U-mghh*?JpRQlDC9kf,;iIK];C\D)!5IjG/;+B9!=B5Q?egYOKYq('ih-2'*eKJ"g`(h>bQUh:2%&pS%+%W&KUi_@-DD$=\?c;`I/0X$8&Q7oi@A:Qi/bg+h(l6KRM/5V3bD>V/+;p%Wc23cbq:2&d\j.W^M@t\mc:iAs=QGK]TSc0kHXMM.ZVQ4V@bMO3g,LV6;A+lEDQ^GZ'8mLFk2Y(lf%jEqnJ0q1GUO^M,18$m+"@klm$\pKSE#]E^e[J'hPU*k*M@_tfH,Nqna[?tibT-Bce)GK^]8?KU0F@Oo;_h[LC%4C[](1g@(h#"qXWtjl[sN'Pp/L*Q$3qLCmrV1*5!BL.[VWh]48,:raD$>XW-UMQnXVnM#Fn)6(a<`%`3J\2N#%kqi'D4$+"IMnE<$Cp9j0D00c^G1M?)`=>tVf[K%+HQ>pH'0X:8`P:Ubtb?Td_8<#<8P)9?=/PK=)T8,>f&Ti2r+\N<+>m,#TDnBQG1tob"_h!9,+on5C3oNU&>%4HSE_X8gQm-nq56AABGDZ73*BUQCT.jg=d$\b^N$D0e*oTgT?P"#JG8`.pHk9,JYp-MmSdh$e=NcBNi,-GeZVln$eAUHN?3Ub^X1oc1Z%>W3R&!&*=bo"t>['`I5jn0o(<^'FgtUD&]QL%J!fPIk0h%le^KCDS=FZ/t9sM\7LE>i^!`tO6rKoXo:^&%mM=1W=VJ3DJCZiq*1CTouEI$R4]`#_=AQ%$Us.!d\L@Dt)m8HmsJ@tLVa[98i@p'%Jj5JCh endstream endobj 478 0 obj << /Type /Page /Parent 1 0 R /MediaBox [ 0 0 612 792 ] /Resources 3 0 R /Contents 477 0 R /Annots 479 0 R >> endobj 479 0 obj [ 480 0 R ] endobj 480 0 obj << /Type /Annot /Subtype /Link /Rect [ 215.652 307.379 376.284 295.379 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A << /URI (http://static.springframework.org/spring/docs/2.5.x/reference/portlet.html#portlet-handlermapping) /S /URI >> /H /I >> endobj 481 0 obj << /Length 2107 /Filter [ /ASCII85Decode /FlateDecode ] >> stream Gau`TgMZ%0&:O:S#^K$mRMKhQoFbQ@8D4d1@_6FB4u@\LD;#S&Q<[")ZMjV0FX:VAZCF@Q!/W#n$kJ+LF,#'(T?Q`6KaG&eq0HLSRgHN>pr/P;_`Pp5O\:+<^:!sQIWK#tA^,],K\mp;dFcI[EL76GO-8[5K6S,foZ\l]%o9%lp;JrBmD=+CN_au*CERh3.7=lU9cu<0/ZBg]%M!jS>1t\h0eef`'ur.fS*V35Q*><>1dk#NYpjnF'Rd/;[+lI4=_/t@e.S#mCYn%#CZYi^rSGgIbcq(Q;0F!bUl<$"F`@^)8Ne@r)&95;?\aOP#:EeU5"b*O_Zu48'J#WjN#DI@$eD^#8>>UCtefrdZ)eo4_,3H^CW]dR&HZi0ZH:s3p:N_A!O^D`.LMD"+P(J^^fib`p)&'6/9pT=6lXR\f/\U+R7u:e"Ru.9QV.AUbd1]/sH10KMRCR^^5HZ[ntsSi':R!M?:^Zi+H-P0h&/lhQ@iErOr];p;Nq+4D-&&VmOM_"ABP)%rkg%PBd-&4VWF74a0j;X!lTI7s7C=4ddS!HBabnpU'7.*9S_CAWlHM+"Er+4FJH/C+quit9q=h9Iln9*HATR>r_`2CXknfP`J?N8k-h0H6'X1s=pHh;Q48@&l"l/)F)77#)Gu\b1ClHApYp_Tn?Wc??T+V3E&/[$/SoTU#&#&um1":kT!]p[1VQc_!_S#?G7;q$I..*U.LU#FO5,CS35C"J@#>NZW=9J/X9SmF@OX`K'k$3Gp)4]?72)X2jPH)u9=t3Ug=YX5?$G%pdLHpEhOPZjEprj3)\j"gu_F5Taon3,`:U"$IU4Y:AUlD7(Aq^JXkh!`:_Q!%(>7G(LQW?qs@OH9]kjf?fAemSPh-&eJ$?Ztr^g+[s:H^hZO@L5L.r9sBn'Xsfb*SeO=$/+q%PPHlPJm06Rl\]j9YeT$/W'McX?MZ7#u.ss*M[#A"3X?%63!\m;_Y8B4eI*n*Yb*3`;%YSA4o@lQ[1TbCtq'o7Y2O&$<7hmZt1L.U9Ii[s;-se+u"ef]/(fBiYU,N&?1eF8,8dQT'(/\GqfkQULML''1b8KZ(G>p`KTQl!@Csoo\V7,F-$@M6OVY" endstream endobj 482 0 obj << /Type /Page /Parent 1 0 R /MediaBox [ 0 0 612 792 ] /Resources 3 0 R /Contents 481 0 R >> endobj 483 0 obj << /Length 1596 /Filter [ /ASCII85Decode /FlateDecode ] >> stream Gat%#>Ar7S'Roe[csm/7SF2`W,t"u8=OB%s0F[7gBUQ<^aJ;F*[e&s3BNs&]7G2GX,U1'Gs3>i0qs!0M3r(N#8J)1njt0A9^JC#["C;j3,``Qk:,A&[[p`%k,5)`BAs9E^qic,h_@K1!A:3$\o8BmF^6dsg$0,EC&e(Q@"![kU5`21t0J7JL/sh$4/A-pphK1LBiB1e-hnVl?P'LaBkOZQ[Y.]>AZ(5K!d-,A<(L+G]/Gm7HD'g,L9ROW@CfVG_F:H-OR\G>Cp8)Z)B.rAX+.^Ds?J)\6DqPn\!\1cCu9bkiR*rSV)_RE`9OV/B%+M&1gTW?b,-FHDonQnb-+B:^)$m_1gV$Rr*bIRU;0DOZ*WHK3hIQMpQ:iM69DZ['0#^)CoK2fKUhtbVD`GY+;:S[o:-ok^A)\19F/H0+fV2\T^71l"GM\Bb(\:QcMEs6h^h&nqfGPo`gM!V?Kec,+EA!#_Q;e-Hb,?%^0!X#M=?#6`;3[4F!G+(t!#2df3o5!\LWNmV";CV4nL\I=KAORNYm'%XCYh#q.AbZN_3l]K]bV67rPI((_Y9!I(((MH&[LiCKocfO$6sS-rhlc*93T#rb!#)`^=?LeFY4pUL>a&q0Ll7cKa-)AV>r2\XY/`3;E,g&P%/>74OY%SJuYgg/RL64jbD*Lp\Bf>m?e&md'"t*n?+&ONq_gOm)Nf'2l>nY_M2MAJn%3$GubN&9p6K=et26CZL=9>nuBR2D;)C=p.%,FEgdg\oje9gqet0IgqB8Fq1%KJ#[jXqRVH`]!AbUNkY8Jkb#TQZoi^KW>4!`sH[j.dmb?icT2Fp%OB\+2lFlfapL\D,T_+Z3o;/dQ__`^Z1$ifibO]T3#N'Dq-//VSZCB06h`8Fqm,(MAoNgcic\u!l3J=U^6B(E+?_7rRp\(J7Mr4ms(Vth=X3s4)NpmjK)DGlj`A_eA0k.)>H2to7J4qi4du=onnp<)Bb^3\D\:KQr6!JNo8dH9gEN#Q=[+eS.ri04?A@%@'MVc+K2%?p_J endstream endobj 484 0 obj << /Type /Page /Parent 1 0 R /MediaBox [ 0 0 612 792 ] /Resources 3 0 R /Contents 483 0 R >> endobj 485 0 obj << /Length 1690 /Filter [ /ASCII85Decode /FlateDecode ] >> stream Gatn'gMZ%0&;KZP'L])D+JHc,.'^I"h8Vm@VF/#3A=9l[PpKLpF$S,sn*";E[U`OQE<+%B3'V&sR?(iRkG-.X+\Jt(o@:oKlOcDur"12+C`sr.k/'FU/c%:N*+,IFl8VlQ.W%#6X#(3Y[?\1*RH]e3Pu?##@14Wk>]iakP;;RhG@m'ppDVG*J.9JIa,kAhhA+Nk):EGC:uku)*>%]Vn\)TB^(XXG]dnqTGi1M[i_(j$[L4rMeM*+bnZ9:>iBO%.PND4G^jMqZI&1o&e5V?O(]2cbaaAjNAa+=gIE;8Jf$aoo0V"s3#8V27FiH9jB5;%%$0I,TeB'e`b\6mB!pJ2][AB4qIpM=l?(-#"$*bo9Skh:jJGX9aGK9c'*`E'J3i-j21>hM#loK:oR/Dg>T6ErIY.).R*Td!#Bbj<2Kc_X8XgS6-ct,n5ZVDB3@(+%7A_rFo674IkQ8+H!\%^g?<,3s/9A-,Rk4#^KkY]dHp0_O>(rBB=#J^ec,Bm*gWU97j9c6HK'fHE,6TgRa7:$7)/>P-qmP*M."b<2_];Z.Sq#8e0C<9&blfVR44r-`8FfJn(eGYbF\[ccGDcULhr-rC5XefF7!ClYK#Tgnp9;p-r+A2O>F$#[8Y/Q4Y\JZJqO9-pS-HQ11dAZ=X/6Nd&YIib^C+o~> endstream endobj 486 0 obj << /Type /Page /Parent 1 0 R /MediaBox [ 0 0 612 792 ] /Resources 3 0 R /Contents 485 0 R >> endobj 487 0 obj << /Length 2245 /Filter [ /ASCII85Decode /FlateDecode ] >> stream GauHM=`<%a&:W67+S=^pp3I7@/c$#+G2j\Og/pd?`'H[d.u=^(.cf"_MZ3@qndp!o?B0XVn3LgOgR4Vug\&NpG.EugRpkBGKK.!6nCOj"b='9f-pa5'L1r`j29nmQCsPY_Z(1bV]/V3;)nnSJ6Nt@HOC.b(A&EIp6qs_D"FSf?O9]If8IEn=>/&1Qo.'kX,AJd\TOrL&Ad/GW-GKs6h&%pl?Pjo>&R[YQ,2tZ'@V:'P8\)pkpk<^"@gns!`;KUgn\nVC"^LKr$[1#:KXd\WK3UjerG0+Wj%tD#r/kV`Sd,,aQNm/U$FE9B*=*;1@j)9+=-f(c=+29ToFV6UpBA;=,@1K/Sl@,B!Oh6W8=G0qH&/hHk?/^nn,+k'^ZS7>^H_a?H#\$+iT`NrG.T$&I\DO&1p>jQG>2g=]JRFY(G0:BD7)OraWmY+^H]2$";c586+t:j&Ks-:mngE;Rq>DN0X("1o*^N_DCMh81r)>1o+,*p\?QOK;SY9P&N9Vf@WHVWM@NohoP:m,fs+Y2d,=Q7K3&3[0+t=)O:i#bGm\.F;pc^qo(55T4QEnm&nk!Ep[&1(9o9^XQi(>F5\bsr_eP/>ipXQp\,,1)"2O>/QZf-j:*H--2Wt9jCkHeO9(U29(.qYO&RV7r%fom=;?\0"U*`C4g8\JRehE$#Td9T\iLg^m(p+_Ilb/sD98$kef^OId#dT0HEY?tR[7/7]_>"ep$tE<2"m\G8M'Xh'#L=?i]CUA0soH]U>mt^3d9sg9*_36A1+EMUN-HJ>eJ5.PfMdEN2I=U$s:a'Z0#D=.(3D)3&mp/pR4UGCB;g2KSn&\epNU0VagdOKn3iFRoQus%%O=BI4Z9M3GT*_,H\b*bH-3$]5mlWnPotW'%"q)FK[+mC?F'l>1e,qf!j0geBUV)TVXZ`=k2p[La/c-M+5TQnll"F"[,Bbt$iXm@Y])hTq3nTP+rMSCqR.G=/0>fElShJNp$]aC7EqkteQprUW[6=VaeP-$4_C"OG(ofifl$1@j@c8UpVg2+F.4NPAil)aF==87a;AHIBBrSW%DV+^[jO,]=_+(_L0bWmNO%SRS#j1[nF(b6n,?jjL0E,H^ZB0:ESQ?&[Ms_<2eruAKJT:*JbRq"OrP.]6UMQ\Oi;g^&*h_ltk407A).h$FqVl<4^C5j<$o&21Eo&l0`%7Q$4np%&2oimjfS?JgZI7@Ule`YY]g`E$WAe@'=A+G^o-??)ggGe43SDf<+nSjl^Eh_Foadu-9-W98n.VhRBA%ao]B_!X0l8n;(R85tt0`I]dZ*rjqE]drJ5<5Sn6QSER[8Agkab=!BWO=&k#S7<@Jp%ksDhsljKO)SNB;e4o1`J$1VH-5SBIXa(;/5>=H/Zg'P7kNYKKXBE;&*oo+JkWfZlZ!Wi,@dm]*acIGb*V56)4kofJO=Ka15eOB+R5JWF>i,/_lR,-[!@kPABH#042lDO[)*r0qhX\`7_[q]h02rs/Q_=@o;So1>/jjCW9'R<4\ksWMs:ks6b)!-]`_K;&4aZ>jj(Zk<7g4hDq8Fr&M6au&L9H'-R?j;*KP;R*s*M\Bp_R5o#-c:VY+UbF,HHFi=W8o9XpSdO@.01%IhR^]pbQG?eikli]gn\'*a_03mX>`)N(J*b8Ya*1M)_:Clhknrk2TI?F("L0,-MAqssr6VcK)>?-%XX6#"u_i;=p;fOr[B6u4q&,pH=84p'bK_\j!bS'$051af04WOj7WM\Ec+[rIr"$_]JWBfRIAZ'*Y!bRnfBe'o:6[NI)"$\5rS3l,N!5L:YXX(j051RZq-baC endstream endobj 488 0 obj << /Type /Page /Parent 1 0 R /MediaBox [ 0 0 612 792 ] /Resources 3 0 R /Contents 487 0 R >> endobj 489 0 obj << /Length 1287 /Filter [ /ASCII85Decode /FlateDecode ] >> stream GatU399\'h&AI`d<*TK)M8k]09<(r$R4N1!<`5nkW4a`B(_DWb`[6.F-FL8]I9Y@VP-KcrJ\tT]rqc/-X1PoJN+S!q[ulH2:P_9Jk3;W&nh<@]''q?5r'4YH?4lG^J>5f5e`b?,D1e\dHiVuT0lK=+4!a8FrVncX7-"hb&;O@Tq?M%jX.7t4ECS4jn/3[I6icU\on/ZJLXRN2;$S,W(t5)?()K(Z'_7eJS3W)XLg.Be/E8fKJ\g"?V-:r)jm$(6J2i+7]GibhD(J_LIP,o6POPaK8Z=i0F*7&YZ.]UeoBVQ(UNQk.IK+;8I^<*"hpq.No*5ZlijP`nHrA>T9-Lr7%P8:G"j_C'X+;fSX4[d5N]%jZNUET?;!'X5>>QA6+PnNFe,Ze":B4H.LS0oD>q98/DC):c_aasP>4#]HV0Lqq8K?`0Aq6tAUD+9nT=aK5:GZ#S\Hl)F`o>,fqVl?VLW=$7W4kj,3RVQfHC0'=fg)cSp`-,35:t]ar(E'*3E^lRI^73Ue1s&fo\Jm'WOQo^mCF6F[lDCrf0rMR#d)*-gaa5ib3akABLR?]"#;7d&5Sb/+r?2q,Ca_O?UAT`$=Te>:UPaRl(9jA6U6_S\ZPNMBQt;BH+-A)oCBJXJ5Fki>$:%:%j%Tb8[qW2+P:Y2WTlhRJgZO@=MX+YhS+[gJ[S$E['[-_=.hB1R(m8]Zb#;@emk([bl]\eHO[Z;`)?\>Jm1Kf]L10Q17:JrYmc,-*hku0gml#S1M$]"bFli!:jdO=R`Cqt`j>9Ab1.s6=,p82q`?f(8T3^W[Z8o"95%SV5mp(,j"D7;Uq1!g5Erj^rVp_;&9\fucH#/K/;p]CWl1WIEg"'];`ho=&!?LJ[Nces+'AIh^8<_:SnlNjM0MJGAa\I"OM@G19iH#$i/A'a3jlJ49ge&T(j"=iTAIP%LN%5/.]HXLMhuWbM\Yb12@Kr3PlU9XBUN"j_'P#r>K`eTA9JFmcS)aqE@gW>ZV&)0G5W*)Dnn)_qD$ha7Z2uZnl'aGL5.IeJ9#k:"bG4)i=mH'g=B.E?T%Q0_=4[D0h,B(~> endstream endobj 490 0 obj << /Type /Page /Parent 1 0 R /MediaBox [ 0 0 612 792 ] /Resources 3 0 R /Contents 489 0 R >> endobj 491 0 obj << /Length 155 /Filter [ /ASCII85Decode /FlateDecode ] >> stream Garg^iR2p+ endstream endobj 492 0 obj << /Type /Page /Parent 1 0 R /MediaBox [ 0 0 612 792 ] /Resources 3 0 R /Contents 491 0 R >> endobj 493 0 obj << /Length 2071 /Filter [ /ASCII85Decode /FlateDecode ] >> stream Gau0EgQ(#H&:O:Sk]$]8=]8Df0gV"FM]b9k::EL9#MQ%lAL13I,^]:S1Gj6BYpo,W71gXs.<7%r1M;HdqrR12O+HJ8(446lD!p\&gmc2'm\Ot_pYqFD0M]8liVe2B,PK-hook'*Z(FMBc*qGc`?m*ZFF'uf6"`0H^[_msoV)NU0UXc5I2jl-#3K_@1QQ.'P1ppeYqlD\R,4jc*]baZnof,h;eId4Ze!udH)+m32"j9@,QN`)1H4g5S&e89]OGiuNNDHN.jn))Vl*i+7Ci_:0/7^\e+?fnYU-$"O7&5Aq+hhM8&[pG)!u+)mqR]%O0*8.`\HCis]KA+=,-)p-a-WE\L6*LFeHqX5IP5qc7Q%a8'mfWDrj0X-k3nEFa4)_cF4*.R5%%Y*6MIKZf@mH^k?c6W,[E![s+q^`bQY5>3&``J:cIb+uFL5>b?O;I#<:\p;RIF.IF:#>j8%#Ph:lN`hsG4+t]bIjIR`*9/T3O(X,ik#S?,*0WV@ll^?,ef(f6[`-GOL2c7l4sL=-P+)rKpm`Wn9SI`0aae(;e!&Pgl!fU?7MZ`,E.uA;@OPhe*1*HZ+qmp)D]Va]kL!RgWO$ULBu6ScNP6u0Gi)41`A=_QO0n"jQS0,AD\eROr@\u+s\CudjKMj`8"cJHG4]2gZ^4*Wio'$L$EG1t3\d=6:m32T(G?Hp[fm+.*X[rqD&pZ\Fh?BCNSGJZLdd>uc$=?D'_?j@2F&hP3=ab5`-$dkfD#>b!pCDJkjO2M)HRX67.Uh.&Bu/_Qcc\8,]5\PLf1t@THj#/>3JX@)jk#n(oh7(/S!r`eQklbnQaRd-(6u6_GQu,6XF(OWf[5[DSH_D/bnR8jpOD;B_^BpO$'^nEsu(6U1^)n_>=eGKdAU<^X'4<;MaM*8g,]*WG^2ELSntu!#VAIY[E6K,gCARseB(s7-%Q)%iKfp>6"G^cNqh:cia;a,^$][r(U1]OSj_hrWAhU:eg)Gf*9\5]S8E8ICa#c?G$c_'A:%6,8l)B#2),Vl%JrWM8NkiV~> endstream endobj 494 0 obj << /Type /Page /Parent 1 0 R /MediaBox [ 0 0 612 792 ] /Resources 3 0 R /Contents 493 0 R /Annots 495 0 R >> endobj 495 0 obj [ 496 0 R 497 0 R 498 0 R ] endobj 496 0 obj << /Type /Annot /Subtype /Link /Rect [ 437.94 523.136 521.592 511.136 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 247 0 R /H /I >> endobj 497 0 obj << /Type /Annot /Subtype /Link /Rect [ 525.24 367.361 555.24 355.361 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A << /URI (http://saxon.sourceforge.net/) /S /URI >> /H /I >> endobj 498 0 obj << /Type /Annot /Subtype /Link /Rect [ 90.0 354.161 114.0 342.161 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A << /URI (http://saxon.sourceforge.net/) /S /URI >> /H /I >> endobj 499 0 obj << /Length 1825 /Filter [ /ASCII85Decode /FlateDecode ] >> stream GauHLD2[.<&H7-n_U(V%cr7&jlXLUrTHtbC\hqe+_cdu59;Pq!>1mOTrd..uFdg]Lp8*I^?uDgsfpQJbSsduqp!(eniPP8Xj^Pp:=Y=kVmUD$&mNN)/=d11,lmI^6Z2!Y9lLHQ_"6?X%G@%etf=0L>+.ZiNhSZRZ.[LM;hH/73::7C#m-nC9aP./S@XAVn/7_/=2T+OMCGX\H,cDDR\\AsHhp=uFirhZ-h5)"?JJ^mG$sc:S`c)0n7/&#&QYB-gh@/.(./kb"^.#@U^W;K&,=-_R?JpCH29qMuAM2U/S'1Z@6_Ej-bgjo0k*XNM+8V4HNL.2#CZT`mgWkqpa2mn?R0J7WC!G!cSrI\HtP(?VIcLEr#3u8DHEk?lpk6IGP#>#n_s6^&.$)>l;UM.Y!M1a`0L[O'-:p4&X5N6OIZFYmabHR:=pM&pO[(7,RcNHBLpL7_pFQ7;[\Y0"t#Jd)EiCUJHc>+AL3GX8t3&KFh"_DA\qu"0?#W3"`h=#Z9I/t6thBJ5CWDh$&XcHd"=[NnIK!@IXXFiSC5>l"Xup"0XPdIU+/r6]sXpl&/\3l<=BpI.!]>omeG7iH;^SbSIMR:%+=re/P#GW=kk[mCkbb$Al01j599Hp;Y5VRej<-,)?Gcn-;@;S1.FMTM!_m#e*3DLG5^k9+<\\XGC7l.HJG4.g6['=gC`)Iqrb%!s$M^?7S,&&D5M*`eoiPCR+F^tc&;C6!CM\":9r4S+Gc3^j'Nl3Nl6!$q`PksIqqWs%CT1`',W'#et?n<1jaH40I&b:%]l%th`,ANI3Yd:6)[aH>1koFjQAL#'3GGXA%r-4Ji^k]9]bE_c`V@G.T^:`_S3W4RX@8`U#E7F2-m`:;hjnF>-MG!=k[WMBDXnjNZ3s@4*R@:+s4?n9nj'OeaFZT0(eeab82e*>E6^1+QAL\f?ih/pJGb>SW4.[`A=`#k,YPYi?ES65P88(NBr@"5T;=Na[tA/^4\Ds!FCI50aB`_(`f3iUN*lM%rPkhdXP7L%*.*F6a*Us79W9$9CY[:.CM6qlCaCW66Lm`^K]GaK#tnGW4G?V[_t/c~> endstream endobj 500 0 obj << /Type /Page /Parent 1 0 R /MediaBox [ 0 0 612 792 ] /Resources 3 0 R /Contents 499 0 R >> endobj 501 0 obj << /Length 2255 /Filter [ /ASCII85Decode /FlateDecode ] >> stream GauHND/\/e&H;*)+llT!_3@KJH3q"]99JQEmBE^!>@?(gfqrV[ZK+VMSG`8ThCP6l=crlg!Kp"9F1``YcTT>@DD%H'Hb(]2XTu/:::ZgP'\)0=o2e_2dn8hm>L(!%lRYZj?=])NIQr,DmT>[m/,!N^.kR7mPVcX49GhfiE@":\1ha>-(Zi84[M:VQ,[k!3C_cDd`L?DnKX@N"I[13>1\"YCF1r0(Gh>8r&l*3etoahf&lP2WqG%S@F=6fu3FGNVT8S.^3^#<\^lHHPSjE1t&MR_ED?_N*j^Mc;$94X<((RLCM&gkC(jsPmjCq+JL[ca3ulp!FO#iGQQVISqBp%,@Yp?65=&)bJJ[=XB#0L2f"$%bE#DVb.rA='B=*miP)8Nb/2oUk(dI^jC&[:Jn#QJ%Z#u]%$"IcGq)cij(FjLPVS,*4D>DPAeS]cAMt&5ZTrR0Tg%&(Goa)6WXa$KBaG*!m9om)8*3oCbAueE\JCjQ@fe5AtpWCNY31n,Hh2)#d"C,W)Fc`VL^@-:s'?A8j@(kuD#?&*pW<jXGV_8s<3HL#F9lubD9";mu^Zp)d1rarI-lW;8f@=0V.\37knQbgG9rCg536#_l?,qM0%g=Vt3b7Bs1!IggUGm"Fjh:Kr-C>MG$n&6SCmlN8YEF,k#0<;a$:_a@[#J`f+./Q^M9#Rqbkd]7GA5U5l?Ut_Pf)P+9nJkU[_;`9GFm"g"\o!/OPDP229lR2!d+AGhre(!Dig\`Ug@Ell%Bt8A[E:aK+?;ck]qT.O=Mc*/4'-P6G\X6ACN/EYJ`OfCb8$HI4mb5C89Y+G#IUV20$E`L$NlI.l[;;f^Mr#\WnF,OO18+h!H4XdmNA7+a*a'h'5m)te!buCaXD$E`(JGR9I@J((H(3+UGVSU"0&#o"(JBFR3r"ShK"Q]5+e2P7>o%$g:UXV4XG endstream endobj 502 0 obj << /Type /Page /Parent 1 0 R /MediaBox [ 0 0 612 792 ] /Resources 3 0 R /Contents 501 0 R >> endobj 503 0 obj << /Length 3181 /Filter [ /ASCII85Decode /FlateDecode ] >> stream Gatm>lYkgn&c\H;_T8W:i51;G6qN0B^a@^IhP#:0Ze<#&76ejKSHtK4T-WUihfl#S2'Ys/Hb0YFQHe=2E*f'nq!R\;p62uFJiTmPm?P#(]&G4FrpuE<_Il'qba7;REOYf=&$JQnrj]NOScdmJYh+3M4dB1EI]^6Va295Rn\Sgt5gL@D,4sDTDj,TI-J?+@5Hb!lHMe3TPq2:QJeB5lmkU`P>0'KRp1h\DJKaXXi?-mnhkU,sebP&,[r4maobghK:$rUO#XUu#[-TtiaO^sK/c"geU3h^Tl_cI+r1V`u6bA!I8[.VG&S=\%,oaNNPAPpI-]%^B0AbnTH,6e&o5*$WKrRI3(:L4cefm3%,PWl=G"%l^6q)Zpl*j$K`(?B2UTOKP!*R#Ze<"J5U1@V#=ESVl4%+A$:=>qcmll1pb%JpR.EZ3$e:$nNkZ=Q$0V*@d_I7o*J$S11b`?ahbV^_fnuQfg=^2.^$sZC:b\iBac-+^$SbGqE3)'%F?o(;+;3FE7<4>0bnaYnj.u/g2k<9#mqsKe$fH4HL-\TQD\]SR$l:/lf`*BLs=9#kCHYgMb_*7o1+V&l"bI;!)*DiNO4C;)=(#Wm(,65P_GTO^me,jG1),p<(O;R_[^[a_5I,6:@09*,bY3S.jODr+QOf,spr+U;*.klgQpc@huo^SC3s(/B[D,MA.]u7#!q+I_\Ach'XgR!2O6D.RfA9&hK]RZ1F>;*?Llk#HcMCG\\Dui16P/7`TG0meA5DsX-")r$J@E]1Va';'"cDt'%bjWro2S/h]VW20SjU6K&3,YQc9IJFrMjT+nb]D)E;a@htC5J=FP?H]Dh2W@E-*-l!aa):o1_j&@(NG#u"+1W4qC\!P&r2#j.!P'Gmdl@1[g3DEKAM"-4e#G5pCHH(DLr=b.]Z=XSqTUYj3mk-6#YedUVsr]\=A<-_/p9CuIN.#-XQ4VXrtd4AV]Q`*(_]`8P(ml2%:rYCtE8^j2\G\J\PBSGn@)Zh0iYPna&>?B<=kTWZ\VGW_]leMPI"7K38NE4i5-[Ea$F0GA:mEdo3"_XN-*LFJ9nl.7-4Xk?N=qoN(m04Lf3_+>e+kJA=FtD)94u6GQA%AY2%SL$1.1:`6do7ReLtoA=YBM_@(&)_[7loNt.GZ_U"=AND3O?j7eX^I:SELTo):kb3Mom7q>;G/s.V@IAQjdq_K/V0(%fF;[C"1lW$a^g2d2B%/P7=mDFqmS>26Da"OOe*#Q#J8cbrER9abWD9#\kXM]__+*7",DbE\k2VRaih4)*@7MZK6D=Ve%(7[@3SX_7F_S^,D9egi_UKIQ2*16HT&_]UST\8NVHQI%#-(JHge:(pYV.!dFkJKlmdF5l?3KnjmoNj!rXNGT`GCo%fBQm!=7.'C#gSfBRWi8-RS/K"4REh&Gh7X4kRDIYOSpQ>$.*ndfHO?3[n:cOE:<71HiS`9,VE4YH+@`:FEDDEFTh'4"GB#?)n4d'\Z['+'oi"bQq9ijTUi@(pQY^JL)YeGNlil4P1Q]$0"LT)VSn\2L'3pFA1k.m/mqRSa)L`>_5/Gql)]lQCAXo3*2.t*cMmJg#pFGI9`,Da!"tJ.FQpFG^_%LYk[--cX;t^)Eg*mUc&#EX&adh-OL+Tfd_*0hndr_6gW:;M>&"*GK<=O"F=1Z>&[b;7$2N7k>f@[P2qo`5Zi'bKc?3)u\P7J#RJ!6EiWl1b'+DH1$pW;?mV?u(YEgXlGEr@mnES^P"Jc4i3uf$rcb9#u@&r+QUkRFFlE*WW(c/"s)5@F#PEa_P*DCmLFIoRc963BnKq5jQD.8KQIYkfkEX+##RI$n`,fancEDKne!CPc]h%12+dl2qjl-^M;!ik%M/WZ6qJ]>p$cH$`>F0qG`V@[L8L?h,SDiK#jlFe6Z,j&M?NqXQl!6.fAC6>>n@72N;Ym`9$L>^BP5Qj33JB5gCcha/"3(]Y8`S)qfT?;Y])"9m_nP9t>u^%4S6rj"R_U-fm)d:A1445d=]?[h!l$/Z&.6n.LFc`"HjHZC553']kLCZ-a@ha=D,N:Tb'?lC1Fjs:,%%:]RoPdn^D1

f,b5o`Te!Ybro.S!j+!k>7?W0Rc&OOem50PVMt[4]5om,Oq#@ip?+d>tgRQQ9'27*(i-YHA':cWIopiq#SlgLH`/!Jk@f^*IA>"pU)!IQ0$4jJ_1H-8MC1U2q+P*oK])2E2k\:),S*QfdsF[NRonV"$4IFJf"kB.=HYs+BUk%1%>R9Mir1g0"ZZ-7AgRD^,:ce1dch;_eHhc,rtdfV`c!i?#R44*$_!qjlL6AANJWpoJK5C^:8\%!%Gjk@Z:BG^&s;2V8lEHJdC\)1X^-;Xa!`2>0DI>DNjR4a0F!4gS?F1*NHZ<^[UA)2=e4tECNqYp)>B]'`S92erdbN$Ep2^'#>SFJf4V[5gtq*Vq9N;m>$q%ff`q<@)G5N=``O%u@bYW"@rp756U('69&T3%Cp\=g^`BAN>HoC=oSq&$:>\fd6,Oq2f6&#Dh->t&QBMCa!JQ=D!>VQl5,ql0q%+7*AY,ua,oK;9;dSnDUD?1m\je0lC#ce-*$VYqrg@LV_CTeYOCat)lGg?0aqb8MHXVj3)cX$/Vf!#U$G$jUa4_G0:TE&!57KlDZ3EgjeJ:N@mY_^(U[1*dG'#XCO*h,tms3$`&l-6saK=K!Ya6b&k0f*;K(l`nDP#sY3#U"@^f9bOQ[FA0`\AGWpcAX'!EFf+WFWu9JgA3pGBkpT+#Q4qH)[VS2&W(,1%S0KM(?OoqX7'fPbF7@ZKadgX)rr[7ggS+~> endstream endobj 504 0 obj << /Type /Page /Parent 1 0 R /MediaBox [ 0 0 612 792 ] /Resources 3 0 R /Contents 503 0 R /Annots 505 0 R >> endobj 505 0 obj [ 506 0 R 507 0 R ] endobj 506 0 obj << /Type /Annot /Subtype /Link /Rect [ 195.648 440.681 259.296 428.681 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A << /URI (http://tiles.apache.org/) /S /URI >> /H /I >> endobj 507 0 obj << /Type /Annot /Subtype /Link /Rect [ 54.0 97.278 147.672 85.278 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 77 0 R /H /I >> endobj 508 0 obj << /Length 1276 /Filter [ /ASCII85Decode /FlateDecode ] >> stream Gatm;ac>C>&A@rkF@uj0F0mUP!SW0?1pXKZj:KOdQ:a%i>!/Ts:]Gi8[NlW"a_kVj?URM6XS5iiMZ1+lHrt]\'/80Ek6p%u/f`'ST490*c@p8Vi\7UfV=i0PDkDK,q:U(9UDVlN*0ku%_YGk9qAI*NbAf1C-;\A30D$n_J&A-h)mh7>Q:65M,=as>'P)O>DgiS?pTun.EJ3=G:Zf'\?gK'e-0e+eacgC]U=/(6#@t@W8-ZW'7+8;OHM0hhDC:!,gQ.`Ne)je&@SqpZ^6[#;pjZ%Y5R9mdl>SMQa^b9cgT0uQ?;-I%\W")5:VUj'4R$>S]=OPB5.nG+f&ON/G(JmHKnFjetM,e[S_31bnHN@@`*XXFH@-!=AMK_FoXu&[`W8;[+#M[$GKlbOBc/]BPF!HROZe%G?NA[Jp![%^,b\7HEIl,ee'nu)UU.Gr/#6>'QBL@]\Ad_dH8g"YZ=S@FJG'u"%d&Y4M^`nos>#3gk8,0"Qu?V)3OI\qpN;,dHA"1Mo:jS+%[]$Ehc[n#kDh-7EhM8jQq_ir%"^C:pa7s&Y+pd]a,8i^U#?X,aD2cOl1(HetX-Z;pn#V=LmK=S8.lm^*!,I_?-XI[B0("<*S_q9:gaHk6QNeZd/O8MG%F)F-*cDMf%4R;A>$)%!F+')ifGK$sP`,>c'."fWJ6tn\!2qs*2is4I`lILcj)=S[7SX0lt6WR!DKRdO7MckLFTbdu1M#CU0CkOs-.b,)m1),U^$h?.a,:U\;kmMaK:n(RhW..CUHjg"n7.2#nu7R)o`uRMpNlJuajojF>kL"Z(#qCSjFpI=Sjqb-\aW?cTs3/VBHDL(kWtkoEUmh7?Rbb@KUX*Brs@\V/5dF,WG-Q$FKj,ucH$8UngQ_>eQgqXk>(_3^aR"b%,rnT4VjKsEA$R?U`?^\i7U#38fT2*'I6S"POO2!(YY\DF]]e endstream endobj 509 0 obj << /Type /Page /Parent 1 0 R /MediaBox [ 0 0 612 792 ] /Resources 3 0 R /Contents 508 0 R /Annots 510 0 R >> endobj 510 0 obj [ 511 0 R 512 0 R 513 0 R ] endobj 511 0 obj << /Type /Annot /Subtype /Link /Rect [ 436.284 642.16 539.928 630.16 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 51 0 R /H /I >> endobj 512 0 obj << /Type /Annot /Subtype /Link /Rect [ 530.256 460.21 548.268 448.21 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 184 0 R /H /I >> endobj 513 0 obj << /Type /Annot /Subtype /Link /Rect [ 90.0 447.01 142.656 435.01 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 184 0 R /H /I >> endobj 514 0 obj << /Length 161 /Filter [ /ASCII85Decode /FlateDecode ] >> stream Garg^iR2p+STU;*IPb3ll) endstream endobj 515 0 obj << /Type /Page /Parent 1 0 R /MediaBox [ 0 0 612 792 ] /Resources 3 0 R /Contents 514 0 R >> endobj 516 0 obj << /Length 2056 /Filter [ /ASCII85Decode /FlateDecode ] >> stream Gat=-?*E!@%"5n*_WXo[1qK"6:LG-gDS$Fs#&ICl5-0*MEh1-6iai$jf7-$^Odr7fWnj`eja[sSIsASX2"]>!Q%H_o]S:@m*/\pNfH/Q"bLbuJ>LcqgggP,_TtY3_@p-/bS*m?g'gfq?/l4Z1gSp^@)sD6dq)VfPM@9:0H2@7;Ta3lNT+9B`=eEuVkM^6.TeL*,0Vh^gJi!bF/PegkE<(BX"k1k/>d7uVYAbW#POb04Jc#iJb24mlP7D13FZn2j5:[1Q?Z[rJUq?tIm#)A0HN&B]R]@.5C5\T<+UIER6TP.iha\C-_8!K`k&O:+R7Jsid5#?>5eLc=TJf?>;1a&`AY_c"13/V66!Ggu)_'=5b:/E]$qX>05XA#H,Y4p.c-0.)?(=NRPQ]kd,pac\,m@:A8]V15`#6+]">l:+Od[:h\N)$dl8>-;*[`Knj`W,c_thj%42JNPo=fEV#^aX#n?QONK`f8/\\b=j4nTYur2JY'*ssL<[Fs/VIT=,D;eLcPqd*#HRnF7tuSACb`;Ymk':U^R(g6>;_,KHaE&(mH9$/NaG%.HguRY*".5FP?;Z!0ZH;kHfJ?eV3i=V]VERc;FV<'<0&A9H%.c810'kO8PS9U>(dFfP"&36iGI1.EnmNJ@^ug_FhV&V]!>I]?SASTNtR.TN#o4E&iG4GQ"URJRk$i(5J,4+Y%t%3mp%OpZ0:cK#%J/ZH3D>)Q;SD@M-3/Z@:MiB@1&rN@:T,cFs0ap:3b9]_uWJ,Z8;>T:rc'!AS7X.G;B;3!Ka*n'WI@^U+@.EPU1j3Z=%s-3/^lmBhI,93@MU-9hIlE9a[n$PE6BTGqUC='*(U=$Ak*QmjrRMcA7h)Man%ofHHd/':^"&mlLc7mQ9%bnDU-H8lusjiIdmgbbp6olX4"hMT_i4*#"nVP-.2k9X>%d"*(EAbHd6b#$$iUiKI6]ddSb:%XY>!]F`a:<`5;HLc;q>9uSrkm*9Kh%)V:&+Q6XOVH]M;XXG5q-(LtqQ!SM,7c[2p&d.RDX6qpkHl.4oUmiW]*GGT>Wi@3O7f0"r4h.TF3[c5;^;?1b*c!*eRuIu]RQf"SuY.GBI/7K:m$p'W=94"Gc"CpJd013\OltN-jP&^]m]B"$$I"+$'8=\0YB&KNnsqap2#=j/KuJYd#`i>8k;KB.u9C/#ai6]bfo`QEr9(f[u\'OD6d+4Nl(Z?TAUVY]^K$&K3]^:rWE'JjQ6~> endstream endobj 517 0 obj << /Type /Page /Parent 1 0 R /MediaBox [ 0 0 612 792 ] /Resources 3 0 R /Contents 516 0 R >> endobj 518 0 obj << /Length 1972 /Filter [ /ASCII85Decode /FlateDecode ] >> stream Gat%%9lJfF&A@sB#WX179T'TV8O/J,MWW8i;$/tg4fiK\=hnD#PuHl'GI3mfa0%tI]m-+Cl-6kd_]d"tI!tPNou4Z^Ab#H1=]H6FdAj9Q@=:NC.[;W0?#bAaqo._YZ;PO:Q`B`/!TG-uXN`6ER"6!ig'O4,YNn[.Y4-9idLKt==9Y^a*M-O,?@Ag;%tqO.&+g#o/p-'@6U%oX9iYF_(4X$tj3KA#MG$;Lb2PQQr)!;i>lQ_$Wldpo1pK>8PKliWd>];_4;G2oMBCN2DNp-B=%)A@jM*fA5'Ba#rg6Xl5CDZl?PP4U"!_COA(_YEpPi6\f--EkmWQ5"5!N?@qb>te$4\?"j\BBo/GGQHplTp*fH[bC8lNU0"La*F*P:<+>\VpN+n&Cl\K'A9it@`B3Xs8`SNrEr^At=^jfDd(dR9,CLWZLeYbb$K=B]uM9g'>!noYSV/@i/\9*bG1X#LYlb*\75[@%8Kg$EAf`(#;)n`uG0ohBd"/*u*@h"Ie<-gQ[7>iX0EEN@71`I6>5U0RWHj39&$#h*JE=ZdplQ?UCKDJ:OAR;hA5j_JLJ]A5ZUU3q8m8X5;2+)H-6UIL>(AJhWg'mPEm3`U9:69peEQcK86F#"aAROF=N\FDmU2fbT@2*D\(uNg,D!pP,bdef"Ba>J5S+m&;oD]l+_#"O)*k6dJWQ,sBsD.ph^;6?6Kf&;B*t^`)?:9&al>K"BTDVF<&54Ck-c)\rGuXb`&[>#Bh'h+eg=UiBe#KQ.Lf4_+5u*Ti1[j]i[ikQW:5;raH%f/#CJ1jnd1'L\b9L5@.(hOQ`sW.ZlNA!7/8jXm"I3BV-C739/"=/15>T<)UmQa!-_gr"?TKQ=r.q>NH9T*u+d(G[7$"\_^rfR[&B(V_XshjQb_?OndaHEn%@B+s=`\=I.p]X!I6Lrq;KO%i<&,Pbb;0ZX;BAkJRL6Y/'&\&1`O's&l0-uA]9gEGq6kR[Hg#X8d=UEn3\ZuOEjV@/M'(u5jtY`:O69uB]7M7n6YBh4NLct+;1@uDsDcG/e#hVjHj8#J;-D4c*-:W,5uHVQ]9_S8P.*fOuNN$(cDJb_6L@qt*NqYe>'l33ft6?B%LYus+#glICZF6g9NmPk?*lu36p@>>NS=g.1ho[DVbltD0M&BYLi@oEujYgoS7*Nd/gS:/0*or5-;KGUo%Y-H^u!CG?=Uqp4=Ae-P`i+;?T#RS[t,%AJcJI>H&/jB:ZL]_HTl!;(1L2b`I<`KZ4BtdCVu8N]q'7.9-h*Pr,",?DBZ`(a^CP&<)39=&qj8uY0WuE@1=mWjg5gVHHacH^A54ih),gOs@7i9BXSkYU"I'YXGPdTljjaIo&5&#I@Qsn=0X)2,Nn.]89sBiW!&n\Q?"bo%E>,!-\B28IQ;]`kKgGa@Mk.A/Ye`Rm$6'7i"p4lX_8)S.i#gE:r;.Q]d*QP~> endstream endobj 519 0 obj << /Type /Page /Parent 1 0 R /MediaBox [ 0 0 612 792 ] /Resources 3 0 R /Contents 518 0 R >> endobj 520 0 obj << /Length 2201 /Filter [ /ASCII85Decode /FlateDecode ] >> stream GatU69on$e&A@P9&GD>&0dB:7,lp^N.@NVB72G*\l+u\N2[4*?Z/ofmmn8L)Mj-WpH$bIUj#8(KEB#6Bn_rnsLV%JKEV+W[`[m/@KX3WQ;'l\D.:t\'6[f&.0Uc_.0.^Q9#ER+,#N?/SW5AracrTS1+8jip[7X9A#r>Rot3VZ4qOpNtL/rLnnR>E3JKei=VP0A\*YNQuljoJ8a<*;9?^Ggp8#\>4gWC2j6=K;>1)TRtNJsBFXL(_8c[E(]#Dojpa-?:F;^sk##1A"+5:28/!:.i>X'?9HZCeh*.Cd9*g[88-Oe/\4De[f)_@usdM3L*=GP=h-59KR^PJ9J5WECl:bWcN5AD7o]G@PLmVRu[+Cq54A+@'N*V7#!X8-qVqJ2]A^j]=M0_pW\Ul83f!WUej#q+k\UJifObfc,jUYB\fm4j@rR&Y<$rtNn?8-^[(1(rki``YJ+*8iP4Mi6>@6Hb"Aba"\_DnNB,1c9Dci+9uJh"#C%S4g7B[&Qoss#\lf8,BaennV'og'/$>U/?J_\AhUM-3@AqVZ.T80#PLP+CPI6-Z3*ZaoF-R4i/?bRu&:/=4s7Q=`hcR3b4V=TF\R--K-Q`+H%3Ag?X5VE&te"Ip-r84nV3"BEnWUdT=Y.=&?5K=3o*3bZQ4[GCecG)BTWk0qMVrAo>#@[`@mg-&s,6?SoP>Pe59heb*?3rl^+Rem-IrGS9e-S#@a81QELLu8h@/N@5H#VK.)_n>U.Z9)(#4Upqb2$[\]RY+F`bop5Pk)c[OoF*.r7^>-T@l;+Q)+(D+TYr<_0!gu]#tt5\!mq<6-9@92%%R[(V@uKje*3[WrgYl8U65L".Rg?q)/(c6R#\1!\Jg-fWX_!HV-J1;os#Ne?gfY^'2-p$:@d,r1M#Lg<%s#J-GICoGcXZ3EA-7f*T7uG;_J*$@2d13BZ-B_4a_L]qY[L>%gpm3f(G674^9&mcSIXLQ:TONaRtb^-(B)Xdo585'/p(2dCU=XTCPS%Wg$V57PHX'k0Au0XCK:75p[G09=5=VT]1HO^TUCM+k1glqFc0@mgN?^p4F%.I1b#TV9j#/@#jE-*-2j"go#Qo)--OQMDV(fLC6Fb-/E!'UMr\D*MkFh0!]cBTm@7L\=n2`0f(QMM2,pqUih+\9.Yl^OFde;2Cs4bkOCeMidO\N&RcVDT$[^.$2U-]Sp?,^[qrA+f6LmRn1\*t2[=!Pt8A97nSs-KH!sEA6e^j]a^8[a*P,)u$;m?n\.5*V7J-^?_l3H,L^'IN2/6q5eb]&,4gO^%q4g7EqsN6[_Ybc-@,?0HXUl).R%1hG:=@WMI0TYSU2IGhZYoQXY2,V!>"f/pgsmOa-Np%L2"bj@%s@ap.:B2c9m+M,Ko>LO2GrE^S*J[!tpbTSc>>,!4#bKliRKaR^kMP1DNTm:@M%&'G9[u>;Oi\nJfutHEV%Db5n>j@JEa#t+s$)s64ZqLF&U7nk>WSY\aQ6(>FEiRXYIJn\"q.8$E7sM(14Y8O@XtsQq$IS)Mgm=KF(3s*c?eN`Ja8%2$B.EJ,GaN29r>YQr#.1iZK/$ljUE1WpU"@lpa4X+2V.nRhKBgVkbk0+r=Jt@r?%-tB7K~> endstream endobj 521 0 obj << /Type /Page /Parent 1 0 R /MediaBox [ 0 0 612 792 ] /Resources 3 0 R /Contents 520 0 R >> endobj 522 0 obj << /Length 2072 /Filter [ /ASCII85Decode /FlateDecode ] >> stream Gat%&_/e9g&A@rk3&r:U)C>Fs,\NPcdV03)FlJf1g)adoC,BEnMG,nLh\RP]"[F8fVb:K%X1/!"/U!JB5Mk;qG(9,VVC__[W@Lg]NKU$cF]"RX^++gf%XkUrq;^UIBW4F%1g77a:F;rRKN;j=<2gHEZ`Un)U4:k'U8\OLFeUZ%FptuSUU$juebI6'p[1sihlp/UCBn3Kc\3q80ncE?7&+jDs&/dfp@FoKhA*N"0'sTrXiGY)5K3TihNok&W6rCM(@?-Q*/SKs2,/k#k!LjNFoKg;;PKlAY_h2'2rnrb.A0*(:u-,V&&:/Y!uD2A*c.4kS0Ua8?^[00;t97RIc):BCOm/)Hr"Gl9?NR5E!P!,aH1lZQ_?Xf-ZKg-51bgXY>gfkiBs$mg289:Y&KHFLS1kc*5#:/o=$@`-0qm&1f6dBNZ&IRru04M+Vs\L-`pDfYs_RRXD`+d(p5L.Lo+5ckA89:.Qe/!^`!V"]4#?=CN,V]SP-^oo^-t%#AS45LB26WMrrOBHZKrcTYR^>HgZ'GA>BaHI;/ON,HF-D8&[/?pFU$WBhHLos:GulHmlJ#qG&ki:l9RceqD]!*sV"B#q#l+DD3&s0`*uF8!mZ#8sq_8&/:tbOF/Wjk*e/ABLeJ]B=CTZko^NIfh'i\t)CKG9_+f[C&e^YSTaOOIcP,gN2"<'d1ff=gE%Q9!Y"@/NFA=+1^FFHfOl^4b"i0gr?pop%a.VT2#+tZ/OM8$f>q7[H7*FCH\!P]76HjJR:7V^RdhZ']W2?#LYn9L&8?aP5O[i)#AR2]1JE\NW[5gmN>$F0C"+V..FC(%21\MM$'r(E!&WAprb#eLkeaF;F"kBj/ONO#oZo/`[Z]982`k:%g6uX4kT8(k>WL)P2%gPlm"C&eOH9aJ'+uJLKT$bq0qDC00bH9;'n4cBTI(OCC'(&'9esqng"8cZ>PA]<,UGd3V$'Ud8q7@B):I3A%fJ;*ouE/MP*Q'52D^sA9]N5+_*p[Gl[W>;A_o*%-ZmQGl1?*^\D:e<8r4JO:Ln_+aB#kd'o+[ePpd1GWIQ[4D#mUN$k(S1$@eHS8P3rPUp>ugiO#CsLe*DR:6Mnk[_9km$,/FShY,hKqu'boPFtGL:/H`_$&YB:5nRR$:mdZ7Q@TW^D*)Koe&mE,ZiI%gQ43B5)ACnmlr&E:IS!@h%1 endstream endobj 523 0 obj << /Type /Page /Parent 1 0 R /MediaBox [ 0 0 612 792 ] /Resources 3 0 R /Contents 522 0 R >> endobj 524 0 obj << /Length 1366 /Filter [ /ASCII85Decode /FlateDecode ] >> stream Gat%e9lJcG&;KZQ'frc,_A0h^CDZB3k[dTn4Y6<"g.Ytk?^6jfqsR176VF^Zl-1eP7dnP_c]BuSO6b>op$1]ic^n0KcLT0dc>om?AIAI%1S3,LHX-NUqDa?`8lfP%(9HT&O-,-(6ATun>'E;@E*kqjSLm-H`N7?Ykt<`s\#\;]ARd,)rL6aA^HPm%#9U@&m,-`hc^aO,<*`:?bH-fYqN1[Qmb@K^n$<7m43;\1j882XD#Iqd-"Y1T>$0s^R'/&A,'`'6e"qltV3m0e-_M+3;Fqrj&c_`M34NJQ>`3XkL3nEY@$Y0ta`Q8d;"h(EcicbKr8J>lb-'FL/G4^.1rtC=hC8pig]iD#IF[,_'2#SD.tlOup>SagWlg9hG0f#V+F5;cW,#aCZf"GR^QsLR)`e?`R'd9X(H[*]qGRMd7(Jpm8oTB[]C=%CfuR-fWnuI)ipba1Dr&!6K-Nu20qh#%7$NLB5RH'dP[cfU+E_?:Jb9Z0\ZM5UWGJ/s5%[Ssg*Y'-9K:(i8"jop!Y;BUW+&1*h\$/jlV3+J+2J]*3TYnM+$WW=JTLN&:@S58=7F+P\e+tQ`&YuR^bSA3ZW*bBcBo;=,]R2ufccZCCHleC:5>]bV17;q[3C@Ne1G`7RFClkf)n1*l?/d1J7?O:+-6FnqRu"(!)CI^JmH/[brWf2ZWb)~> endstream endobj 525 0 obj << /Type /Page /Parent 1 0 R /MediaBox [ 0 0 612 792 ] /Resources 3 0 R /Contents 524 0 R >> endobj 526 0 obj << /Length 21 /Filter [ /ASCII85Decode /FlateDecode ] >> stream Garg^iGoCd!WWA\!CQ~> endstream endobj 527 0 obj << /Type /Page /Parent 1 0 R /MediaBox [ 0 0 612 792 ] /Resources 3 0 R /Contents 526 0 R >> endobj 530 0 obj << /Title (\376\377\0\123\0\160\0\162\0\151\0\156\0\147\0\40\0\127\0\145\0\142\0\40\0\106\0\154\0\157\0\167\0\40\0\122\0\145\0\146\0\145\0\162\0\145\0\156\0\143\0\145\0\40\0\107\0\165\0\151\0\144\0\145) /Parent 528 0 R /Next 532 0 R /A 529 0 R >> endobj 532 0 obj << /Title (\376\377\0\124\0\141\0\142\0\154\0\145\0\40\0\157\0\146\0\40\0\103\0\157\0\156\0\164\0\145\0\156\0\164\0\163) /Parent 528 0 R /Prev 530 0 R /Next 533 0 R /A 531 0 R >> endobj 533 0 obj << /Title (\376\377\0\120\0\162\0\145\0\146\0\141\0\143\0\145) /Parent 528 0 R /Prev 532 0 R /Next 534 0 R /A 13 0 R >> endobj 534 0 obj << /Title (\376\377\0\61\0\56\0\240\0\111\0\156\0\164\0\162\0\157\0\144\0\165\0\143\0\164\0\151\0\157\0\156) /Parent 528 0 R /First 535 0 R /Last 547 0 R /Prev 533 0 R /Next 554 0 R /Count -13 /A 15 0 R >> endobj 535 0 obj << /Title (\376\377\0\61\0\56\0\61\0\56\0\240\0\127\0\150\0\141\0\164\0\40\0\164\0\150\0\151\0\163\0\40\0\147\0\165\0\151\0\144\0\145\0\40\0\143\0\157\0\166\0\145\0\162\0\163) /Parent 534 0 R /Next 536 0 R /A 17 0 R >> endobj 536 0 obj << /Title (\376\377\0\61\0\56\0\62\0\56\0\240\0\127\0\150\0\141\0\164\0\40\0\127\0\145\0\142\0\40\0\106\0\154\0\157\0\167\0\40\0\162\0\145\0\161\0\165\0\151\0\162\0\145\0\163\0\40\0\164\0\157\0\40\0\162\0\165\0\156) /Parent 534 0 R /Prev 535 0 R /Next 537 0 R /A 19 0 R >> endobj 537 0 obj << /Title (\376\377\0\61\0\56\0\63\0\56\0\240\0\127\0\150\0\145\0\162\0\145\0\40\0\164\0\157\0\40\0\147\0\145\0\164\0\40\0\163\0\165\0\160\0\160\0\157\0\162\0\164) /Parent 534 0 R /Prev 536 0 R /Next 538 0 R /A 21 0 R >> endobj 538 0 obj << /Title (\376\377\0\61\0\56\0\64\0\56\0\240\0\127\0\150\0\145\0\162\0\145\0\40\0\164\0\157\0\40\0\146\0\157\0\154\0\154\0\157\0\167\0\40\0\144\0\145\0\166\0\145\0\154\0\157\0\160\0\155\0\145\0\156\0\164) /Parent 534 0 R /Prev 537 0 R /Next 539 0 R /A 23 0 R >> endobj 539 0 obj << /Title (\376\377\0\61\0\56\0\65\0\56\0\240\0\110\0\157\0\167\0\40\0\164\0\157\0\40\0\141\0\143\0\143\0\145\0\163\0\163\0\40\0\127\0\145\0\142\0\40\0\106\0\154\0\157\0\167\0\40\0\141\0\162\0\164\0\151\0\146\0\141\0\143\0\164\0\163\0\40\0\146\0\162\0\157\0\155\0\40\0\115\0\141\0\166\0\145\0\156\0\40\0\103\0\145\0\156\0\164\0\162\0\141\0\154) /Parent 534 0 R /Prev 538 0 R /Next 540 0 R /A 25 0 R >> endobj 540 0 obj << /Title (\376\377\0\61\0\56\0\66\0\56\0\240\0\110\0\157\0\167\0\40\0\164\0\157\0\40\0\141\0\143\0\143\0\145\0\163\0\163\0\40\0\127\0\145\0\142\0\40\0\106\0\154\0\157\0\167\0\40\0\141\0\162\0\164\0\151\0\146\0\141\0\143\0\164\0\163\0\40\0\146\0\162\0\157\0\155\0\40\0\164\0\150\0\145\0\40\0\123\0\160\0\162\0\151\0\156\0\147\0\123\0\157\0\165\0\162\0\143\0\145\0\40\0\102\0\165\0\156\0\144\0\154\0\145\0\40\0\122\0\145\0\160\0\157\0\163\0\151\0\164\0\157\0\162\0\171) /Parent 534 0 R /First 542 0 R /Last 546 0 R /Prev 539 0 R /Next 547 0 R /Count -3 /A 27 0 R >> endobj 542 0 obj << /Title (\376\377\0\101\0\143\0\143\0\145\0\163\0\163\0\151\0\156\0\147\0\40\0\127\0\145\0\142\0\40\0\106\0\154\0\157\0\167\0\40\0\142\0\165\0\156\0\144\0\154\0\145\0\163\0\40\0\167\0\151\0\164\0\150\0\40\0\115\0\141\0\166\0\145\0\156) /Parent 540 0 R /Next 544 0 R /A 541 0 R >> endobj 544 0 obj << /Title (\376\377\0\101\0\143\0\143\0\145\0\163\0\163\0\151\0\156\0\147\0\40\0\127\0\145\0\142\0\40\0\106\0\154\0\157\0\167\0\40\0\142\0\165\0\156\0\144\0\154\0\145\0\163\0\40\0\167\0\151\0\164\0\150\0\40\0\111\0\166\0\171) /Parent 540 0 R /Prev 542 0 R /Next 546 0 R /A 543 0 R >> endobj 546 0 obj << /Title (\376\377\0\101\0\143\0\143\0\145\0\163\0\163\0\151\0\156\0\147\0\40\0\164\0\150\0\145\0\40\0\144\0\155\0\40\0\123\0\145\0\162\0\166\0\145\0\162\0\40\0\127\0\145\0\142\0\40\0\106\0\154\0\157\0\167\0\40\0\154\0\151\0\142\0\162\0\141\0\162\0\171) /Parent 540 0 R /Prev 544 0 R /A 545 0 R >> endobj 547 0 obj << /Title (\376\377\0\61\0\56\0\67\0\56\0\240\0\110\0\157\0\167\0\40\0\164\0\157\0\40\0\141\0\143\0\143\0\145\0\163\0\163\0\40\0\156\0\151\0\147\0\150\0\164\0\154\0\171\0\40\0\142\0\165\0\151\0\154\0\144\0\163) /Parent 534 0 R /First 549 0 R /Last 553 0 R /Prev 540 0 R /Count -3 /A 29 0 R >> endobj 549 0 obj << /Title (\376\377\0\101\0\143\0\143\0\145\0\163\0\163\0\151\0\156\0\147\0\40\0\163\0\156\0\141\0\160\0\163\0\150\0\157\0\164\0\163\0\40\0\146\0\162\0\157\0\155\0\40\0\164\0\150\0\145\0\40\0\115\0\141\0\166\0\145\0\156\0\55\0\143\0\145\0\156\0\164\0\162\0\141\0\154\0\40\0\143\0\157\0\155\0\160\0\141\0\164\0\151\0\142\0\154\0\145\0\40\0\162\0\145\0\160\0\157\0\163\0\151\0\164\0\157\0\162\0\171) /Parent 547 0 R /Next 551 0 R /A 548 0 R >> endobj 551 0 obj << /Title (\376\377\0\101\0\143\0\143\0\145\0\163\0\163\0\151\0\156\0\147\0\40\0\163\0\156\0\141\0\160\0\163\0\150\0\157\0\164\0\163\0\40\0\146\0\162\0\157\0\155\0\40\0\164\0\150\0\145\0\40\0\123\0\160\0\162\0\151\0\156\0\147\0\123\0\157\0\165\0\162\0\143\0\145\0\40\0\105\0\156\0\164\0\145\0\162\0\160\0\162\0\151\0\163\0\145\0\40\0\102\0\165\0\156\0\144\0\154\0\145\0\40\0\122\0\145\0\160\0\157\0\163\0\151\0\164\0\157\0\162\0\171) /Parent 547 0 R /Prev 549 0 R /Next 553 0 R /A 550 0 R >> endobj 553 0 obj << /Title (\376\377\0\101\0\143\0\143\0\145\0\163\0\163\0\151\0\156\0\147\0\40\0\163\0\156\0\141\0\160\0\163\0\150\0\157\0\164\0\40\0\144\0\151\0\163\0\164\0\162\0\151\0\142\0\165\0\164\0\151\0\157\0\156\0\40\0\141\0\162\0\143\0\150\0\151\0\166\0\145\0\163) /Parent 547 0 R /Prev 551 0 R /A 552 0 R >> endobj 554 0 obj << /Title (\376\377\0\62\0\56\0\240\0\104\0\145\0\146\0\151\0\156\0\151\0\156\0\147\0\40\0\106\0\154\0\157\0\167\0\163) /Parent 528 0 R /First 555 0 R /Last 597 0 R /Prev 534 0 R /Next 606 0 R /Count -30 /A 31 0 R >> endobj 555 0 obj << /Title (\376\377\0\62\0\56\0\61\0\56\0\240\0\111\0\156\0\164\0\162\0\157\0\144\0\165\0\143\0\164\0\151\0\157\0\156) /Parent 554 0 R /Next 556 0 R /A 33 0 R >> endobj 556 0 obj << /Title (\376\377\0\62\0\56\0\62\0\56\0\240\0\127\0\150\0\141\0\164\0\40\0\151\0\163\0\40\0\141\0\40\0\146\0\154\0\157\0\167\0\77) /Parent 554 0 R /Prev 555 0 R /Next 557 0 R /A 35 0 R >> endobj 557 0 obj << /Title (\376\377\0\62\0\56\0\63\0\56\0\240\0\127\0\150\0\141\0\164\0\40\0\151\0\163\0\40\0\164\0\150\0\145\0\40\0\155\0\141\0\153\0\145\0\165\0\160\0\40\0\157\0\146\0\40\0\141\0\40\0\164\0\171\0\160\0\151\0\143\0\141\0\154\0\40\0\146\0\154\0\157\0\167\0\77) /Parent 554 0 R /Prev 556 0 R /Next 558 0 R /A 37 0 R >> endobj 558 0 obj << /Title (\376\377\0\62\0\56\0\64\0\56\0\240\0\110\0\157\0\167\0\40\0\141\0\162\0\145\0\40\0\146\0\154\0\157\0\167\0\163\0\40\0\141\0\165\0\164\0\150\0\157\0\162\0\145\0\144\0\77) /Parent 554 0 R /Prev 557 0 R /Next 559 0 R /A 39 0 R >> endobj 559 0 obj << /Title (\376\377\0\62\0\56\0\65\0\56\0\240\0\105\0\163\0\163\0\145\0\156\0\164\0\151\0\141\0\154\0\40\0\154\0\141\0\156\0\147\0\165\0\141\0\147\0\145\0\40\0\145\0\154\0\145\0\155\0\145\0\156\0\164\0\163) /Parent 554 0 R /First 561 0 R /Last 569 0 R /Prev 558 0 R /Next 570 0 R /Count -5 /A 41 0 R >> endobj 561 0 obj << /Title (\376\377\0\146\0\154\0\157\0\167) /Parent 559 0 R /Next 563 0 R /A 560 0 R >> endobj 563 0 obj << /Title (\376\377\0\166\0\151\0\145\0\167\0\55\0\163\0\164\0\141\0\164\0\145) /Parent 559 0 R /Prev 561 0 R /Next 565 0 R /A 562 0 R >> endobj 565 0 obj << /Title (\376\377\0\164\0\162\0\141\0\156\0\163\0\151\0\164\0\151\0\157\0\156) /Parent 559 0 R /Prev 563 0 R /Next 567 0 R /A 564 0 R >> endobj 567 0 obj << /Title (\376\377\0\145\0\156\0\144\0\55\0\163\0\164\0\141\0\164\0\145) /Parent 559 0 R /Prev 565 0 R /Next 569 0 R /A 566 0 R >> endobj 569 0 obj << /Title (\376\377\0\103\0\150\0\145\0\143\0\153\0\160\0\157\0\151\0\156\0\164\0\72\0\40\0\105\0\163\0\163\0\145\0\156\0\164\0\151\0\141\0\154\0\40\0\154\0\141\0\156\0\147\0\165\0\141\0\147\0\145\0\40\0\145\0\154\0\145\0\155\0\145\0\156\0\164\0\163) /Parent 559 0 R /Prev 567 0 R /A 568 0 R >> endobj 570 0 obj << /Title (\376\377\0\62\0\56\0\66\0\56\0\240\0\101\0\143\0\164\0\151\0\157\0\156\0\163) /Parent 554 0 R /First 572 0 R /Last 578 0 R /Prev 559 0 R /Next 579 0 R /Count -4 /A 43 0 R >> endobj 572 0 obj << /Title (\376\377\0\145\0\166\0\141\0\154\0\165\0\141\0\164\0\145) /Parent 570 0 R /First 574 0 R /Last 576 0 R /Next 578 0 R /Count -2 /A 571 0 R >> endobj 574 0 obj << /Title (\376\377\0\101\0\163\0\163\0\151\0\147\0\156\0\151\0\156\0\147\0\40\0\141\0\156\0\40\0\145\0\166\0\141\0\154\0\165\0\141\0\164\0\145\0\40\0\162\0\145\0\163\0\165\0\154\0\164) /Parent 572 0 R /Next 576 0 R /A 573 0 R >> endobj 576 0 obj << /Title (\376\377\0\103\0\157\0\156\0\166\0\145\0\162\0\164\0\151\0\156\0\147\0\40\0\141\0\156\0\40\0\145\0\166\0\141\0\154\0\165\0\141\0\164\0\145\0\40\0\162\0\145\0\163\0\165\0\154\0\164) /Parent 572 0 R /Prev 574 0 R /A 575 0 R >> endobj 578 0 obj << /Title (\376\377\0\103\0\150\0\145\0\143\0\153\0\160\0\157\0\151\0\156\0\164\0\72\0\40\0\146\0\154\0\157\0\167\0\40\0\141\0\143\0\164\0\151\0\157\0\156\0\163) /Parent 570 0 R /Prev 572 0 R /A 577 0 R >> endobj 579 0 obj << /Title (\376\377\0\62\0\56\0\67\0\56\0\240\0\111\0\156\0\160\0\165\0\164\0\57\0\117\0\165\0\164\0\160\0\165\0\164\0\40\0\115\0\141\0\160\0\160\0\151\0\156\0\147) /Parent 554 0 R /First 581 0 R /Last 593 0 R /Prev 570 0 R /Next 594 0 R /Count -7 /A 45 0 R >> endobj 581 0 obj << /Title (\376\377\0\151\0\156\0\160\0\165\0\164) /Parent 579 0 R /First 583 0 R /Last 587 0 R /Next 589 0 R /Count -3 /A 580 0 R >> endobj 583 0 obj << /Title (\376\377\0\104\0\145\0\143\0\154\0\141\0\162\0\151\0\156\0\147\0\40\0\141\0\156\0\40\0\151\0\156\0\160\0\165\0\164\0\40\0\164\0\171\0\160\0\145) /Parent 581 0 R /Next 585 0 R /A 582 0 R >> endobj 585 0 obj << /Title (\376\377\0\101\0\163\0\163\0\151\0\147\0\156\0\151\0\156\0\147\0\40\0\141\0\156\0\40\0\151\0\156\0\160\0\165\0\164\0\40\0\166\0\141\0\154\0\165\0\145) /Parent 581 0 R /Prev 583 0 R /Next 587 0 R /A 584 0 R >> endobj 587 0 obj << /Title (\376\377\0\115\0\141\0\162\0\153\0\151\0\156\0\147\0\40\0\141\0\156\0\40\0\151\0\156\0\160\0\165\0\164\0\40\0\141\0\163\0\40\0\162\0\145\0\161\0\165\0\151\0\162\0\145\0\144) /Parent 581 0 R /Prev 585 0 R /A 586 0 R >> endobj 589 0 obj << /Title (\376\377\0\157\0\165\0\164\0\160\0\165\0\164) /Parent 579 0 R /First 591 0 R /Last 591 0 R /Prev 581 0 R /Next 593 0 R /Count -1 /A 588 0 R >> endobj 591 0 obj << /Title (\376\377\0\123\0\160\0\145\0\143\0\151\0\146\0\171\0\151\0\156\0\147\0\40\0\164\0\150\0\145\0\40\0\163\0\157\0\165\0\162\0\143\0\145\0\40\0\157\0\146\0\40\0\141\0\156\0\40\0\157\0\165\0\164\0\160\0\165\0\164\0\40\0\166\0\141\0\154\0\165\0\145) /Parent 589 0 R /A 590 0 R >> endobj 593 0 obj << /Title (\376\377\0\103\0\150\0\145\0\143\0\153\0\160\0\157\0\151\0\156\0\164\0\72\0\40\0\151\0\156\0\160\0\165\0\164\0\57\0\157\0\165\0\164\0\160\0\165\0\164\0\40\0\155\0\141\0\160\0\160\0\151\0\156\0\147) /Parent 579 0 R /Prev 589 0 R /A 592 0 R >> endobj 594 0 obj << /Title (\376\377\0\62\0\56\0\70\0\56\0\240\0\126\0\141\0\162\0\151\0\141\0\142\0\154\0\145\0\163) /Parent 554 0 R /First 596 0 R /Last 596 0 R /Prev 579 0 R /Next 597 0 R /Count -1 /A 47 0 R >> endobj 596 0 obj << /Title (\376\377\0\166\0\141\0\162) /Parent 594 0 R /A 595 0 R >> endobj 597 0 obj << /Title (\376\377\0\62\0\56\0\71\0\56\0\240\0\103\0\141\0\154\0\154\0\151\0\156\0\147\0\40\0\163\0\165\0\142\0\146\0\154\0\157\0\167\0\163) /Parent 554 0 R /First 599 0 R /Last 605 0 R /Prev 594 0 R /Count -4 /A 49 0 R >> endobj 599 0 obj << /Title (\376\377\0\163\0\165\0\142\0\146\0\154\0\157\0\167\0\55\0\163\0\164\0\141\0\164\0\145) /Parent 597 0 R /First 601 0 R /Last 603 0 R /Next 605 0 R /Count -2 /A 598 0 R >> endobj 601 0 obj << /Title (\376\377\0\120\0\141\0\163\0\163\0\151\0\156\0\147\0\40\0\141\0\40\0\163\0\165\0\142\0\146\0\154\0\157\0\167\0\40\0\151\0\156\0\160\0\165\0\164) /Parent 599 0 R /Next 603 0 R /A 600 0 R >> endobj 603 0 obj << /Title (\376\377\0\115\0\141\0\160\0\160\0\151\0\156\0\147\0\40\0\163\0\165\0\142\0\146\0\154\0\157\0\167\0\40\0\157\0\165\0\164\0\160\0\165\0\164) /Parent 599 0 R /Prev 601 0 R /A 602 0 R >> endobj 605 0 obj << /Title (\376\377\0\103\0\150\0\145\0\143\0\153\0\160\0\157\0\151\0\156\0\164\0\72\0\40\0\143\0\141\0\154\0\154\0\151\0\156\0\147\0\40\0\163\0\165\0\142\0\146\0\154\0\157\0\167\0\163) /Parent 597 0 R /Prev 599 0 R /A 604 0 R >> endobj 606 0 obj << /Title (\376\377\0\63\0\56\0\240\0\105\0\170\0\160\0\162\0\145\0\163\0\163\0\151\0\157\0\156\0\40\0\114\0\141\0\156\0\147\0\165\0\141\0\147\0\145\0\40\0\50\0\105\0\114\0\51) /Parent 528 0 R /First 607 0 R /Last 650 0 R /Prev 554 0 R /Next 651 0 R /Count -25 /A 51 0 R >> endobj 607 0 obj << /Title (\376\377\0\63\0\56\0\61\0\56\0\240\0\111\0\156\0\164\0\162\0\157\0\144\0\165\0\143\0\164\0\151\0\157\0\156) /Parent 606 0 R /Next 608 0 R /A 53 0 R >> endobj 608 0 obj << /Title (\376\377\0\63\0\56\0\62\0\56\0\240\0\123\0\165\0\160\0\160\0\157\0\162\0\164\0\145\0\144\0\40\0\105\0\114\0\40\0\151\0\155\0\160\0\154\0\145\0\155\0\145\0\156\0\164\0\141\0\164\0\151\0\157\0\156\0\163) /Parent 606 0 R /First 610 0 R /Last 612 0 R /Prev 607 0 R /Next 613 0 R /Count -2 /A 55 0 R >> endobj 610 0 obj << /Title (\376\377\0\125\0\156\0\151\0\146\0\151\0\145\0\144\0\40\0\105\0\114) /Parent 608 0 R /Next 612 0 R /A 609 0 R >> endobj 612 0 obj << /Title (\376\377\0\117\0\107\0\116\0\114) /Parent 608 0 R /Prev 610 0 R /A 611 0 R >> endobj 613 0 obj << /Title (\376\377\0\63\0\56\0\63\0\56\0\240\0\105\0\114\0\40\0\160\0\157\0\162\0\164\0\141\0\142\0\151\0\154\0\151\0\164\0\171) /Parent 606 0 R /Prev 608 0 R /Next 614 0 R /A 57 0 R >> endobj 614 0 obj << /Title (\376\377\0\63\0\56\0\64\0\56\0\240\0\105\0\114\0\40\0\165\0\163\0\141\0\147\0\145) /Parent 606 0 R /First 616 0 R /Last 616 0 R /Prev 613 0 R /Next 621 0 R /Count -3 /A 59 0 R >> endobj 616 0 obj << /Title (\376\377\0\105\0\170\0\160\0\162\0\145\0\163\0\163\0\151\0\157\0\156\0\40\0\164\0\171\0\160\0\145\0\163) /Parent 614 0 R /First 618 0 R /Last 620 0 R /Count -2 /A 615 0 R >> endobj 618 0 obj << /Title (\376\377\0\123\0\164\0\141\0\156\0\144\0\141\0\162\0\144\0\40\0\145\0\166\0\141\0\154\0\40\0\145\0\170\0\160\0\162\0\145\0\163\0\163\0\151\0\157\0\156\0\163) /Parent 616 0 R /Next 620 0 R /A 617 0 R >> endobj 620 0 obj << /Title (\376\377\0\124\0\145\0\155\0\160\0\154\0\141\0\164\0\145\0\40\0\145\0\170\0\160\0\162\0\145\0\163\0\163\0\151\0\157\0\156\0\163) /Parent 616 0 R /Prev 618 0 R /A 619 0 R >> endobj 621 0 obj << /Title (\376\377\0\63\0\56\0\65\0\56\0\240\0\123\0\160\0\145\0\143\0\151\0\141\0\154\0\40\0\105\0\114\0\40\0\166\0\141\0\162\0\151\0\141\0\142\0\154\0\145\0\163) /Parent 606 0 R /First 623 0 R /Last 649 0 R /Prev 614 0 R /Next 650 0 R /Count -14 /A 61 0 R >> endobj 623 0 obj << /Title (\376\377\0\146\0\154\0\157\0\167\0\123\0\143\0\157\0\160\0\145) /Parent 621 0 R /Next 625 0 R /A 622 0 R >> endobj 625 0 obj << /Title (\376\377\0\166\0\151\0\145\0\167\0\123\0\143\0\157\0\160\0\145) /Parent 621 0 R /Prev 623 0 R /Next 627 0 R /A 624 0 R >> endobj 627 0 obj << /Title (\376\377\0\162\0\145\0\161\0\165\0\145\0\163\0\164\0\123\0\143\0\157\0\160\0\145) /Parent 621 0 R /Prev 625 0 R /Next 629 0 R /A 626 0 R >> endobj 629 0 obj << /Title (\376\377\0\146\0\154\0\141\0\163\0\150\0\123\0\143\0\157\0\160\0\145) /Parent 621 0 R /Prev 627 0 R /Next 631 0 R /A 628 0 R >> endobj 631 0 obj << /Title (\376\377\0\143\0\157\0\156\0\166\0\145\0\162\0\163\0\141\0\164\0\151\0\157\0\156\0\123\0\143\0\157\0\160\0\145) /Parent 621 0 R /Prev 629 0 R /Next 633 0 R /A 630 0 R >> endobj 633 0 obj << /Title (\376\377\0\162\0\145\0\161\0\165\0\145\0\163\0\164\0\120\0\141\0\162\0\141\0\155\0\145\0\164\0\145\0\162\0\163) /Parent 621 0 R /Prev 631 0 R /Next 635 0 R /A 632 0 R >> endobj 635 0 obj << /Title (\376\377\0\143\0\165\0\162\0\162\0\145\0\156\0\164\0\105\0\166\0\145\0\156\0\164) /Parent 621 0 R /Prev 633 0 R /Next 637 0 R /A 634 0 R >> endobj 637 0 obj << /Title (\376\377\0\143\0\165\0\162\0\162\0\145\0\156\0\164\0\125\0\163\0\145\0\162) /Parent 621 0 R /Prev 635 0 R /Next 639 0 R /A 636 0 R >> endobj 639 0 obj << /Title (\376\377\0\155\0\145\0\163\0\163\0\141\0\147\0\145\0\103\0\157\0\156\0\164\0\145\0\170\0\164) /Parent 621 0 R /Prev 637 0 R /Next 641 0 R /A 638 0 R >> endobj 641 0 obj << /Title (\376\377\0\162\0\145\0\163\0\157\0\165\0\162\0\143\0\145\0\102\0\165\0\156\0\144\0\154\0\145) /Parent 621 0 R /Prev 639 0 R /Next 643 0 R /A 640 0 R >> endobj 643 0 obj << /Title (\376\377\0\146\0\154\0\157\0\167\0\122\0\145\0\161\0\165\0\145\0\163\0\164\0\103\0\157\0\156\0\164\0\145\0\170\0\164) /Parent 621 0 R /Prev 641 0 R /Next 645 0 R /A 642 0 R >> endobj 645 0 obj << /Title (\376\377\0\146\0\154\0\157\0\167\0\105\0\170\0\145\0\143\0\165\0\164\0\151\0\157\0\156\0\103\0\157\0\156\0\164\0\145\0\170\0\164) /Parent 621 0 R /Prev 643 0 R /Next 647 0 R /A 644 0 R >> endobj 647 0 obj << /Title (\376\377\0\146\0\154\0\157\0\167\0\105\0\170\0\145\0\143\0\165\0\164\0\151\0\157\0\156\0\125\0\162\0\154) /Parent 621 0 R /Prev 645 0 R /Next 649 0 R /A 646 0 R >> endobj 649 0 obj << /Title (\376\377\0\145\0\170\0\164\0\145\0\162\0\156\0\141\0\154\0\103\0\157\0\156\0\164\0\145\0\170\0\164) /Parent 621 0 R /Prev 647 0 R /A 648 0 R >> endobj 650 0 obj << /Title (\376\377\0\63\0\56\0\66\0\56\0\240\0\123\0\143\0\157\0\160\0\145\0\40\0\163\0\145\0\141\0\162\0\143\0\150\0\151\0\156\0\147\0\40\0\141\0\154\0\147\0\157\0\162\0\151\0\164\0\150\0\155) /Parent 606 0 R /Prev 621 0 R /A 63 0 R >> endobj 651 0 obj << /Title (\376\377\0\64\0\56\0\240\0\122\0\145\0\156\0\144\0\145\0\162\0\151\0\156\0\147\0\40\0\166\0\151\0\145\0\167\0\163) /Parent 528 0 R /First 652 0 R /Last 706 0 R /Prev 606 0 R /Next 711 0 R /Count -37 /A 65 0 R >> endobj 652 0 obj << /Title (\376\377\0\64\0\56\0\61\0\56\0\240\0\111\0\156\0\164\0\162\0\157\0\144\0\165\0\143\0\164\0\151\0\157\0\156) /Parent 651 0 R /Next 653 0 R /A 67 0 R >> endobj 653 0 obj << /Title (\376\377\0\64\0\56\0\62\0\56\0\240\0\104\0\145\0\146\0\151\0\156\0\151\0\156\0\147\0\40\0\166\0\151\0\145\0\167\0\40\0\163\0\164\0\141\0\164\0\145\0\163) /Parent 651 0 R /Prev 652 0 R /Next 654 0 R /A 69 0 R >> endobj 654 0 obj << /Title (\376\377\0\64\0\56\0\63\0\56\0\240\0\123\0\160\0\145\0\143\0\151\0\146\0\171\0\151\0\156\0\147\0\40\0\166\0\151\0\145\0\167\0\40\0\151\0\144\0\145\0\156\0\164\0\151\0\146\0\151\0\145\0\162\0\163) /Parent 651 0 R /First 656 0 R /Last 660 0 R /Prev 653 0 R /Next 661 0 R /Count -3 /A 71 0 R >> endobj 656 0 obj << /Title (\376\377\0\106\0\154\0\157\0\167\0\40\0\162\0\145\0\154\0\141\0\164\0\151\0\166\0\145\0\40\0\166\0\151\0\145\0\167\0\40\0\151\0\144\0\163) /Parent 654 0 R /Next 658 0 R /A 655 0 R >> endobj 658 0 obj << /Title (\376\377\0\101\0\142\0\163\0\157\0\154\0\165\0\164\0\145\0\40\0\166\0\151\0\145\0\167\0\40\0\151\0\144\0\163) /Parent 654 0 R /Prev 656 0 R /Next 660 0 R /A 657 0 R >> endobj 660 0 obj << /Title (\376\377\0\114\0\157\0\147\0\151\0\143\0\141\0\154\0\40\0\166\0\151\0\145\0\167\0\40\0\151\0\144\0\163) /Parent 654 0 R /Prev 658 0 R /A 659 0 R >> endobj 661 0 obj << /Title (\376\377\0\64\0\56\0\64\0\56\0\240\0\126\0\151\0\145\0\167\0\40\0\163\0\143\0\157\0\160\0\145) /Parent 651 0 R /First 663 0 R /Last 667 0 R /Prev 654 0 R /Next 668 0 R /Count -3 /A 73 0 R >> endobj 663 0 obj << /Title (\376\377\0\101\0\154\0\154\0\157\0\143\0\141\0\164\0\151\0\156\0\147\0\40\0\166\0\151\0\145\0\167\0\40\0\166\0\141\0\162\0\151\0\141\0\142\0\154\0\145\0\163) /Parent 661 0 R /Next 665 0 R /A 662 0 R >> endobj 665 0 obj << /Title (\376\377\0\101\0\163\0\163\0\151\0\147\0\156\0\151\0\156\0\147\0\40\0\141\0\40\0\166\0\151\0\145\0\167\0\123\0\143\0\157\0\160\0\145\0\40\0\166\0\141\0\162\0\151\0\141\0\142\0\154\0\145) /Parent 661 0 R /Prev 663 0 R /Next 667 0 R /A 664 0 R >> endobj 667 0 obj << /Title (\376\377\0\115\0\141\0\156\0\151\0\160\0\165\0\154\0\141\0\164\0\151\0\156\0\147\0\40\0\157\0\142\0\152\0\145\0\143\0\164\0\163\0\40\0\151\0\156\0\40\0\166\0\151\0\145\0\167\0\40\0\163\0\143\0\157\0\160\0\145) /Parent 661 0 R /Prev 665 0 R /A 666 0 R >> endobj 668 0 obj << /Title (\376\377\0\64\0\56\0\65\0\56\0\240\0\105\0\170\0\145\0\143\0\165\0\164\0\151\0\156\0\147\0\40\0\162\0\145\0\156\0\144\0\145\0\162\0\40\0\141\0\143\0\164\0\151\0\157\0\156\0\163) /Parent 651 0 R /Prev 661 0 R /Next 669 0 R /A 75 0 R >> endobj 669 0 obj << /Title (\376\377\0\64\0\56\0\66\0\56\0\240\0\102\0\151\0\156\0\144\0\151\0\156\0\147\0\40\0\164\0\157\0\40\0\141\0\40\0\155\0\157\0\144\0\145\0\154) /Parent 651 0 R /Prev 668 0 R /Next 670 0 R /A 77 0 R >> endobj 670 0 obj << /Title (\376\377\0\64\0\56\0\67\0\56\0\240\0\120\0\145\0\162\0\146\0\157\0\162\0\155\0\151\0\156\0\147\0\40\0\164\0\171\0\160\0\145\0\40\0\143\0\157\0\156\0\166\0\145\0\162\0\163\0\151\0\157\0\156) /Parent 651 0 R /First 672 0 R /Last 674 0 R /Prev 669 0 R /Next 675 0 R /Count -2 /A 79 0 R >> endobj 672 0 obj << /Title (\376\377\0\111\0\155\0\160\0\154\0\145\0\155\0\145\0\156\0\164\0\151\0\156\0\147\0\40\0\141\0\40\0\103\0\157\0\156\0\166\0\145\0\162\0\164\0\145\0\162) /Parent 670 0 R /Next 674 0 R /A 671 0 R >> endobj 674 0 obj << /Title (\376\377\0\122\0\145\0\147\0\151\0\163\0\164\0\145\0\162\0\151\0\156\0\147\0\40\0\141\0\40\0\103\0\157\0\156\0\166\0\145\0\162\0\164\0\145\0\162) /Parent 670 0 R /Prev 672 0 R /A 673 0 R >> endobj 675 0 obj << /Title (\376\377\0\64\0\56\0\70\0\56\0\240\0\123\0\165\0\160\0\160\0\162\0\145\0\163\0\163\0\151\0\156\0\147\0\40\0\142\0\151\0\156\0\144\0\151\0\156\0\147) /Parent 651 0 R /Prev 670 0 R /Next 676 0 R /A 81 0 R >> endobj 676 0 obj << /Title (\376\377\0\64\0\56\0\71\0\56\0\240\0\123\0\160\0\145\0\143\0\151\0\146\0\171\0\151\0\156\0\147\0\40\0\142\0\151\0\156\0\144\0\151\0\156\0\147\0\163\0\40\0\145\0\170\0\160\0\154\0\151\0\143\0\151\0\164\0\154\0\171) /Parent 651 0 R /Prev 675 0 R /Next 677 0 R /A 83 0 R >> endobj 677 0 obj << /Title (\376\377\0\64\0\56\0\61\0\60\0\56\0\240\0\126\0\141\0\154\0\151\0\144\0\141\0\164\0\151\0\156\0\147\0\40\0\141\0\40\0\155\0\157\0\144\0\145\0\154) /Parent 651 0 R /First 679 0 R /Last 685 0 R /Prev 676 0 R /Next 686 0 R /Count -4 /A 85 0 R >> endobj 679 0 obj << /Title (\376\377\0\120\0\162\0\157\0\147\0\162\0\141\0\155\0\155\0\141\0\164\0\151\0\143\0\40\0\166\0\141\0\154\0\151\0\144\0\141\0\164\0\151\0\157\0\156) /Parent 677 0 R /First 681 0 R /Last 683 0 R /Next 685 0 R /Count -2 /A 678 0 R >> endobj 681 0 obj << /Title (\376\377\0\111\0\155\0\160\0\154\0\145\0\155\0\145\0\156\0\164\0\151\0\156\0\147\0\40\0\141\0\40\0\155\0\157\0\144\0\145\0\154\0\40\0\166\0\141\0\154\0\151\0\144\0\141\0\164\0\145\0\40\0\155\0\145\0\164\0\150\0\157\0\144) /Parent 679 0 R /Next 683 0 R /A 680 0 R >> endobj 683 0 obj << /Title (\376\377\0\111\0\155\0\160\0\154\0\145\0\155\0\145\0\156\0\164\0\151\0\156\0\147\0\40\0\141\0\40\0\126\0\141\0\154\0\151\0\144\0\141\0\164\0\157\0\162) /Parent 679 0 R /Prev 681 0 R /A 682 0 R >> endobj 685 0 obj << /Title (\376\377\0\126\0\141\0\154\0\151\0\144\0\141\0\164\0\151\0\157\0\156\0\103\0\157\0\156\0\164\0\145\0\170\0\164) /Parent 677 0 R /Prev 679 0 R /A 684 0 R >> endobj 686 0 obj << /Title (\376\377\0\64\0\56\0\61\0\61\0\56\0\240\0\123\0\165\0\160\0\160\0\162\0\145\0\163\0\163\0\151\0\156\0\147\0\40\0\166\0\141\0\154\0\151\0\144\0\141\0\164\0\151\0\157\0\156) /Parent 651 0 R /Prev 677 0 R /Next 687 0 R /A 87 0 R >> endobj 687 0 obj << /Title (\376\377\0\64\0\56\0\61\0\62\0\56\0\240\0\105\0\170\0\145\0\143\0\165\0\164\0\151\0\156\0\147\0\40\0\166\0\151\0\145\0\167\0\40\0\164\0\162\0\141\0\156\0\163\0\151\0\164\0\151\0\157\0\156\0\163) /Parent 651 0 R /First 689 0 R /Last 695 0 R /Prev 686 0 R /Next 696 0 R /Count -4 /A 89 0 R >> endobj 689 0 obj << /Title (\376\377\0\124\0\162\0\141\0\156\0\163\0\151\0\164\0\151\0\157\0\156\0\40\0\141\0\143\0\164\0\151\0\157\0\156\0\163) /Parent 687 0 R /Next 691 0 R /A 688 0 R >> endobj 691 0 obj << /Title (\376\377\0\107\0\154\0\157\0\142\0\141\0\154\0\40\0\164\0\162\0\141\0\156\0\163\0\151\0\164\0\151\0\157\0\156\0\163) /Parent 687 0 R /Prev 689 0 R /Next 693 0 R /A 690 0 R >> endobj 693 0 obj << /Title (\376\377\0\105\0\166\0\145\0\156\0\164\0\40\0\150\0\141\0\156\0\144\0\154\0\145\0\162\0\163) /Parent 687 0 R /Prev 691 0 R /Next 695 0 R /A 692 0 R >> endobj 695 0 obj << /Title (\376\377\0\122\0\145\0\156\0\144\0\145\0\162\0\151\0\156\0\147\0\40\0\146\0\162\0\141\0\147\0\155\0\145\0\156\0\164\0\163) /Parent 687 0 R /Prev 693 0 R /A 694 0 R >> endobj 696 0 obj << /Title (\376\377\0\64\0\56\0\61\0\63\0\56\0\240\0\127\0\157\0\162\0\153\0\151\0\156\0\147\0\40\0\167\0\151\0\164\0\150\0\40\0\155\0\145\0\163\0\163\0\141\0\147\0\145\0\163) /Parent 651 0 R /First 698 0 R /Last 704 0 R /Prev 687 0 R /Next 705 0 R /Count -4 /A 91 0 R >> endobj 698 0 obj << /Title (\376\377\0\101\0\144\0\144\0\151\0\156\0\147\0\40\0\160\0\154\0\141\0\151\0\156\0\40\0\164\0\145\0\170\0\164\0\40\0\155\0\145\0\163\0\163\0\141\0\147\0\145\0\163) /Parent 696 0 R /Next 700 0 R /A 697 0 R >> endobj 700 0 obj << /Title (\376\377\0\101\0\144\0\144\0\151\0\156\0\147\0\40\0\151\0\156\0\164\0\145\0\162\0\156\0\141\0\164\0\151\0\157\0\156\0\141\0\154\0\151\0\172\0\145\0\144\0\40\0\155\0\145\0\163\0\163\0\141\0\147\0\145\0\163) /Parent 696 0 R /Prev 698 0 R /Next 702 0 R /A 699 0 R >> endobj 702 0 obj << /Title (\376\377\0\125\0\163\0\151\0\156\0\147\0\40\0\155\0\145\0\163\0\163\0\141\0\147\0\145\0\40\0\142\0\165\0\156\0\144\0\154\0\145\0\163) /Parent 696 0 R /Prev 700 0 R /Next 704 0 R /A 701 0 R >> endobj 704 0 obj << /Title (\376\377\0\125\0\156\0\144\0\145\0\162\0\163\0\164\0\141\0\156\0\144\0\151\0\156\0\147\0\40\0\163\0\171\0\163\0\164\0\145\0\155\0\40\0\147\0\145\0\156\0\145\0\162\0\141\0\164\0\145\0\144\0\40\0\155\0\145\0\163\0\163\0\141\0\147\0\145\0\163) /Parent 696 0 R /Prev 702 0 R /A 703 0 R >> endobj 705 0 obj << /Title (\376\377\0\64\0\56\0\61\0\64\0\56\0\240\0\104\0\151\0\163\0\160\0\154\0\141\0\171\0\151\0\156\0\147\0\40\0\160\0\157\0\160\0\165\0\160\0\163) /Parent 651 0 R /Prev 696 0 R /Next 706 0 R /A 93 0 R >> endobj 706 0 obj << /Title (\376\377\0\64\0\56\0\61\0\65\0\56\0\240\0\126\0\151\0\145\0\167\0\40\0\142\0\141\0\143\0\153\0\164\0\162\0\141\0\143\0\153\0\151\0\156\0\147) /Parent 651 0 R /First 708 0 R /Last 710 0 R /Prev 705 0 R /Count -2 /A 95 0 R >> endobj 708 0 obj << /Title (\376\377\0\104\0\151\0\163\0\143\0\141\0\162\0\144\0\151\0\156\0\147\0\40\0\150\0\151\0\163\0\164\0\157\0\162\0\171) /Parent 706 0 R /Next 710 0 R /A 707 0 R >> endobj 710 0 obj << /Title (\376\377\0\111\0\156\0\166\0\141\0\154\0\151\0\144\0\141\0\164\0\151\0\156\0\147\0\40\0\150\0\151\0\163\0\164\0\157\0\162\0\171) /Parent 706 0 R /Prev 708 0 R /A 709 0 R >> endobj 711 0 obj << /Title (\376\377\0\65\0\56\0\240\0\105\0\170\0\145\0\143\0\165\0\164\0\151\0\156\0\147\0\40\0\141\0\143\0\164\0\151\0\157\0\156\0\163) /Parent 528 0 R /First 712 0 R /Last 728 0 R /Prev 651 0 R /Next 747 0 R /Count -21 /A 97 0 R >> endobj 712 0 obj << /Title (\376\377\0\65\0\56\0\61\0\56\0\240\0\111\0\156\0\164\0\162\0\157\0\144\0\165\0\143\0\164\0\151\0\157\0\156) /Parent 711 0 R /Next 713 0 R /A 99 0 R >> endobj 713 0 obj << /Title (\376\377\0\65\0\56\0\62\0\56\0\240\0\104\0\145\0\146\0\151\0\156\0\151\0\156\0\147\0\40\0\141\0\143\0\164\0\151\0\157\0\156\0\40\0\163\0\164\0\141\0\164\0\145\0\163) /Parent 711 0 R /Prev 712 0 R /Next 714 0 R /A 104 0 R >> endobj 714 0 obj << /Title (\376\377\0\65\0\56\0\63\0\56\0\240\0\104\0\145\0\146\0\151\0\156\0\151\0\156\0\147\0\40\0\144\0\145\0\143\0\151\0\163\0\151\0\157\0\156\0\40\0\163\0\164\0\141\0\164\0\145\0\163) /Parent 711 0 R /Prev 713 0 R /Next 715 0 R /A 106 0 R >> endobj 715 0 obj << /Title (\376\377\0\65\0\56\0\64\0\56\0\240\0\101\0\143\0\164\0\151\0\157\0\156\0\40\0\157\0\165\0\164\0\143\0\157\0\155\0\145\0\40\0\145\0\166\0\145\0\156\0\164\0\40\0\155\0\141\0\160\0\160\0\151\0\156\0\147\0\163) /Parent 711 0 R /Prev 714 0 R /Next 716 0 R /A 108 0 R >> endobj 716 0 obj << /Title (\376\377\0\65\0\56\0\65\0\56\0\240\0\101\0\143\0\164\0\151\0\157\0\156\0\40\0\151\0\155\0\160\0\154\0\145\0\155\0\145\0\156\0\164\0\141\0\164\0\151\0\157\0\156\0\163) /Parent 711 0 R /First 718 0 R /Last 722 0 R /Prev 715 0 R /Next 723 0 R /Count -3 /A 110 0 R >> endobj 718 0 obj << /Title (\376\377\0\111\0\156\0\166\0\157\0\153\0\151\0\156\0\147\0\40\0\141\0\40\0\120\0\117\0\112\0\117\0\40\0\141\0\143\0\164\0\151\0\157\0\156) /Parent 716 0 R /Next 720 0 R /A 717 0 R >> endobj 720 0 obj << /Title (\376\377\0\111\0\156\0\166\0\157\0\153\0\151\0\156\0\147\0\40\0\141\0\40\0\143\0\165\0\163\0\164\0\157\0\155\0\40\0\101\0\143\0\164\0\151\0\157\0\156\0\40\0\151\0\155\0\160\0\154\0\145\0\155\0\145\0\156\0\164\0\141\0\164\0\151\0\157\0\156) /Parent 716 0 R /Prev 718 0 R /Next 722 0 R /A 719 0 R >> endobj 722 0 obj << /Title (\376\377\0\111\0\156\0\166\0\157\0\153\0\151\0\156\0\147\0\40\0\141\0\40\0\115\0\165\0\154\0\164\0\151\0\101\0\143\0\164\0\151\0\157\0\156\0\40\0\151\0\155\0\160\0\154\0\145\0\155\0\145\0\156\0\164\0\141\0\164\0\151\0\157\0\156) /Parent 716 0 R /Prev 720 0 R /A 721 0 R >> endobj 723 0 obj << /Title (\376\377\0\65\0\56\0\66\0\56\0\240\0\101\0\143\0\164\0\151\0\157\0\156\0\40\0\145\0\170\0\143\0\145\0\160\0\164\0\151\0\157\0\156\0\163) /Parent 711 0 R /First 725 0 R /Last 727 0 R /Prev 716 0 R /Next 728 0 R /Count -2 /A 112 0 R >> endobj 725 0 obj << /Title (\376\377\0\110\0\141\0\156\0\144\0\154\0\151\0\156\0\147\0\40\0\141\0\40\0\142\0\165\0\163\0\151\0\156\0\145\0\163\0\163\0\40\0\145\0\170\0\143\0\145\0\160\0\164\0\151\0\157\0\156\0\40\0\167\0\151\0\164\0\150\0\40\0\141\0\40\0\120\0\117\0\112\0\117\0\40\0\141\0\143\0\164\0\151\0\157\0\156) /Parent 723 0 R /Next 727 0 R /A 724 0 R >> endobj 727 0 obj << /Title (\376\377\0\110\0\141\0\156\0\144\0\154\0\151\0\156\0\147\0\40\0\141\0\40\0\142\0\165\0\163\0\151\0\156\0\145\0\163\0\163\0\40\0\145\0\170\0\143\0\145\0\160\0\164\0\151\0\157\0\156\0\40\0\167\0\151\0\164\0\150\0\40\0\141\0\40\0\115\0\165\0\154\0\164\0\151\0\101\0\143\0\164\0\151\0\157\0\156) /Parent 723 0 R /Prev 725 0 R /A 726 0 R >> endobj 728 0 obj << /Title (\376\377\0\65\0\56\0\67\0\56\0\240\0\117\0\164\0\150\0\145\0\162\0\40\0\101\0\143\0\164\0\151\0\157\0\156\0\40\0\145\0\170\0\145\0\143\0\165\0\164\0\151\0\157\0\156\0\40\0\145\0\170\0\141\0\155\0\160\0\154\0\145\0\163) /Parent 711 0 R /First 730 0 R /Last 746 0 R /Prev 723 0 R /Count -9 /A 114 0 R >> endobj 730 0 obj << /Title (\376\377\0\157\0\156\0\55\0\163\0\164\0\141\0\162\0\164) /Parent 728 0 R /Next 732 0 R /A 729 0 R >> endobj 732 0 obj << /Title (\376\377\0\157\0\156\0\55\0\145\0\156\0\164\0\162\0\171) /Parent 728 0 R /Prev 730 0 R /Next 734 0 R /A 731 0 R >> endobj 734 0 obj << /Title (\376\377\0\157\0\156\0\55\0\145\0\170\0\151\0\164) /Parent 728 0 R /Prev 732 0 R /Next 736 0 R /A 733 0 R >> endobj 736 0 obj << /Title (\376\377\0\157\0\156\0\55\0\145\0\156\0\144) /Parent 728 0 R /Prev 734 0 R /Next 738 0 R /A 735 0 R >> endobj 738 0 obj << /Title (\376\377\0\157\0\156\0\55\0\162\0\145\0\156\0\144\0\145\0\162) /Parent 728 0 R /Prev 736 0 R /Next 740 0 R /A 737 0 R >> endobj 740 0 obj << /Title (\376\377\0\157\0\156\0\55\0\164\0\162\0\141\0\156\0\163\0\151\0\164\0\151\0\157\0\156) /Parent 728 0 R /Prev 738 0 R /Next 742 0 R /A 739 0 R >> endobj 742 0 obj << /Title (\376\377\0\116\0\141\0\155\0\145\0\144\0\40\0\141\0\143\0\164\0\151\0\157\0\156\0\163) /Parent 728 0 R /Prev 740 0 R /Next 744 0 R /A 741 0 R >> endobj 744 0 obj << /Title (\376\377\0\123\0\164\0\162\0\145\0\141\0\155\0\151\0\156\0\147\0\40\0\141\0\143\0\164\0\151\0\157\0\156\0\163) /Parent 728 0 R /Prev 742 0 R /Next 746 0 R /A 743 0 R >> endobj 746 0 obj << /Title (\376\377\0\110\0\141\0\156\0\144\0\154\0\151\0\156\0\147\0\40\0\106\0\151\0\154\0\145\0\40\0\125\0\160\0\154\0\157\0\141\0\144\0\163) /Parent 728 0 R /Prev 744 0 R /A 745 0 R >> endobj 747 0 obj << /Title (\376\377\0\66\0\56\0\240\0\106\0\154\0\157\0\167\0\40\0\115\0\141\0\156\0\141\0\147\0\145\0\144\0\40\0\120\0\145\0\162\0\163\0\151\0\163\0\164\0\145\0\156\0\143\0\145) /Parent 528 0 R /First 748 0 R /Last 749 0 R /Prev 711 0 R /Next 750 0 R /Count -2 /A 116 0 R >> endobj 748 0 obj << /Title (\376\377\0\66\0\56\0\61\0\56\0\240\0\111\0\156\0\164\0\162\0\157\0\144\0\165\0\143\0\164\0\151\0\157\0\156) /Parent 747 0 R /Next 749 0 R /A 118 0 R >> endobj 749 0 obj << /Title (\376\377\0\66\0\56\0\62\0\56\0\240\0\106\0\154\0\157\0\167\0\123\0\143\0\157\0\160\0\145\0\144\0\40\0\120\0\145\0\162\0\163\0\151\0\163\0\164\0\145\0\156\0\143\0\145\0\103\0\157\0\156\0\164\0\145\0\170\0\164) /Parent 747 0 R /Prev 748 0 R /A 120 0 R >> endobj 750 0 obj << /Title (\376\377\0\67\0\56\0\240\0\123\0\145\0\143\0\165\0\162\0\151\0\156\0\147\0\40\0\106\0\154\0\157\0\167\0\163) /Parent 528 0 R /First 751 0 R /Last 761 0 R /Prev 747 0 R /Next 766 0 R /Count -10 /A 122 0 R >> endobj 751 0 obj << /Title (\376\377\0\67\0\56\0\61\0\56\0\240\0\111\0\156\0\164\0\162\0\157\0\144\0\165\0\143\0\164\0\151\0\157\0\156) /Parent 750 0 R /Next 752 0 R /A 124 0 R >> endobj 752 0 obj << /Title (\376\377\0\67\0\56\0\62\0\56\0\240\0\110\0\157\0\167\0\40\0\144\0\157\0\40\0\111\0\40\0\163\0\145\0\143\0\165\0\162\0\145\0\40\0\141\0\40\0\146\0\154\0\157\0\167\0\77) /Parent 750 0 R /Prev 751 0 R /Next 753 0 R /A 126 0 R >> endobj 753 0 obj << /Title (\376\377\0\67\0\56\0\63\0\56\0\240\0\124\0\150\0\145\0\40\0\163\0\145\0\143\0\165\0\162\0\145\0\144\0\40\0\145\0\154\0\145\0\155\0\145\0\156\0\164) /Parent 750 0 R /First 755 0 R /Last 757 0 R /Prev 752 0 R /Next 758 0 R /Count -2 /A 128 0 R >> endobj 755 0 obj << /Title (\376\377\0\123\0\145\0\143\0\165\0\162\0\151\0\164\0\171\0\40\0\141\0\164\0\164\0\162\0\151\0\142\0\165\0\164\0\145\0\163) /Parent 753 0 R /Next 757 0 R /A 754 0 R >> endobj 757 0 obj << /Title (\376\377\0\115\0\141\0\164\0\143\0\150\0\151\0\156\0\147\0\40\0\164\0\171\0\160\0\145) /Parent 753 0 R /Prev 755 0 R /A 756 0 R >> endobj 758 0 obj << /Title (\376\377\0\67\0\56\0\64\0\56\0\240\0\124\0\150\0\145\0\40\0\123\0\145\0\143\0\165\0\162\0\151\0\164\0\171\0\106\0\154\0\157\0\167\0\105\0\170\0\145\0\143\0\165\0\164\0\151\0\157\0\156\0\114\0\151\0\163\0\164\0\145\0\156\0\145\0\162) /Parent 750 0 R /First 760 0 R /Last 760 0 R /Prev 753 0 R /Next 761 0 R /Count -1 /A 130 0 R >> endobj 760 0 obj << /Title (\376\377\0\103\0\165\0\163\0\164\0\157\0\155\0\40\0\101\0\143\0\143\0\145\0\163\0\163\0\40\0\104\0\145\0\143\0\151\0\163\0\151\0\157\0\156\0\40\0\115\0\141\0\156\0\141\0\147\0\145\0\162\0\163) /Parent 758 0 R /A 759 0 R >> endobj 761 0 obj << /Title (\376\377\0\67\0\56\0\65\0\56\0\240\0\103\0\157\0\156\0\146\0\151\0\147\0\165\0\162\0\151\0\156\0\147\0\40\0\123\0\160\0\162\0\151\0\156\0\147\0\40\0\123\0\145\0\143\0\165\0\162\0\151\0\164\0\171) /Parent 750 0 R /First 763 0 R /Last 765 0 R /Prev 758 0 R /Count -2 /A 132 0 R >> endobj 763 0 obj << /Title (\376\377\0\123\0\160\0\162\0\151\0\156\0\147\0\40\0\143\0\157\0\156\0\146\0\151\0\147\0\165\0\162\0\141\0\164\0\151\0\157\0\156) /Parent 761 0 R /Next 765 0 R /A 762 0 R >> endobj 765 0 obj << /Title (\376\377\0\167\0\145\0\142\0\56\0\170\0\155\0\154\0\40\0\103\0\157\0\156\0\146\0\151\0\147\0\165\0\162\0\141\0\164\0\151\0\157\0\156) /Parent 761 0 R /Prev 763 0 R /A 764 0 R >> endobj 766 0 obj << /Title (\376\377\0\70\0\56\0\240\0\106\0\154\0\157\0\167\0\40\0\111\0\156\0\150\0\145\0\162\0\151\0\164\0\141\0\156\0\143\0\145) /Parent 528 0 R /First 767 0 R /Last 775 0 R /Prev 750 0 R /Next 780 0 R /Count -9 /A 134 0 R >> endobj 767 0 obj << /Title (\376\377\0\70\0\56\0\61\0\56\0\240\0\111\0\156\0\164\0\162\0\157\0\144\0\165\0\143\0\164\0\151\0\157\0\156) /Parent 766 0 R /Next 768 0 R /A 136 0 R >> endobj 768 0 obj << /Title (\376\377\0\70\0\56\0\62\0\56\0\240\0\111\0\163\0\40\0\146\0\154\0\157\0\167\0\40\0\151\0\156\0\150\0\145\0\162\0\151\0\164\0\141\0\156\0\143\0\145\0\40\0\154\0\151\0\153\0\145\0\40\0\112\0\141\0\166\0\141\0\40\0\151\0\156\0\150\0\145\0\162\0\151\0\164\0\141\0\156\0\143\0\145\0\77) /Parent 766 0 R /Prev 767 0 R /Next 769 0 R /A 138 0 R >> endobj 769 0 obj << /Title (\376\377\0\70\0\56\0\63\0\56\0\240\0\124\0\171\0\160\0\145\0\163\0\40\0\157\0\146\0\40\0\106\0\154\0\157\0\167\0\40\0\111\0\156\0\150\0\145\0\162\0\151\0\164\0\141\0\156\0\143\0\145) /Parent 766 0 R /First 771 0 R /Last 773 0 R /Prev 768 0 R /Next 774 0 R /Count -2 /A 140 0 R >> endobj 771 0 obj << /Title (\376\377\0\106\0\154\0\157\0\167\0\40\0\154\0\145\0\166\0\145\0\154\0\40\0\151\0\156\0\150\0\145\0\162\0\151\0\164\0\141\0\156\0\143\0\145) /Parent 769 0 R /Next 773 0 R /A 770 0 R >> endobj 773 0 obj << /Title (\376\377\0\123\0\164\0\141\0\164\0\145\0\40\0\154\0\145\0\166\0\145\0\154\0\40\0\151\0\156\0\150\0\145\0\162\0\151\0\164\0\141\0\156\0\143\0\145) /Parent 769 0 R /Prev 771 0 R /A 772 0 R >> endobj 774 0 obj << /Title (\376\377\0\70\0\56\0\64\0\56\0\240\0\101\0\142\0\163\0\164\0\162\0\141\0\143\0\164\0\40\0\146\0\154\0\157\0\167\0\163) /Parent 766 0 R /Prev 769 0 R /Next 775 0 R /A 142 0 R >> endobj 775 0 obj << /Title (\376\377\0\70\0\56\0\65\0\56\0\240\0\111\0\156\0\150\0\145\0\162\0\151\0\164\0\141\0\156\0\143\0\145\0\40\0\101\0\154\0\147\0\157\0\162\0\151\0\164\0\150\0\155) /Parent 766 0 R /First 777 0 R /Last 779 0 R /Prev 774 0 R /Count -2 /A 144 0 R >> endobj 777 0 obj << /Title (\376\377\0\115\0\145\0\162\0\147\0\145\0\141\0\142\0\154\0\145\0\40\0\105\0\154\0\145\0\155\0\145\0\156\0\164\0\163) /Parent 775 0 R /Next 779 0 R /A 776 0 R >> endobj 779 0 obj << /Title (\376\377\0\116\0\157\0\156\0\55\0\155\0\145\0\162\0\147\0\145\0\141\0\142\0\154\0\145\0\40\0\105\0\154\0\145\0\155\0\145\0\156\0\164\0\163) /Parent 775 0 R /Prev 777 0 R /A 778 0 R >> endobj 780 0 obj << /Title (\376\377\0\71\0\56\0\240\0\123\0\171\0\163\0\164\0\145\0\155\0\40\0\123\0\145\0\164\0\165\0\160) /Parent 528 0 R /First 781 0 R /Last 810 0 R /Prev 766 0 R /Next 819 0 R /Count -22 /A 146 0 R >> endobj 781 0 obj << /Title (\376\377\0\71\0\56\0\61\0\56\0\240\0\111\0\156\0\164\0\162\0\157\0\144\0\165\0\143\0\164\0\151\0\157\0\156) /Parent 780 0 R /Next 782 0 R /A 148 0 R >> endobj 782 0 obj << /Title (\376\377\0\71\0\56\0\62\0\56\0\240\0\167\0\145\0\142\0\146\0\154\0\157\0\167\0\55\0\143\0\157\0\156\0\146\0\151\0\147\0\56\0\170\0\163\0\144) /Parent 780 0 R /Prev 781 0 R /Next 783 0 R /A 150 0 R >> endobj 783 0 obj << /Title (\376\377\0\71\0\56\0\63\0\56\0\240\0\102\0\141\0\163\0\151\0\143\0\40\0\163\0\171\0\163\0\164\0\145\0\155\0\40\0\143\0\157\0\156\0\146\0\151\0\147\0\165\0\162\0\141\0\164\0\151\0\157\0\156) /Parent 780 0 R /First 785 0 R /Last 787 0 R /Prev 782 0 R /Next 788 0 R /Count -2 /A 152 0 R >> endobj 785 0 obj << /Title (\376\377\0\106\0\154\0\157\0\167\0\122\0\145\0\147\0\151\0\163\0\164\0\162\0\171) /Parent 783 0 R /Next 787 0 R /A 784 0 R >> endobj 787 0 obj << /Title (\376\377\0\106\0\154\0\157\0\167\0\105\0\170\0\145\0\143\0\165\0\164\0\157\0\162) /Parent 783 0 R /Prev 785 0 R /A 786 0 R >> endobj 788 0 obj << /Title (\376\377\0\71\0\56\0\64\0\56\0\240\0\146\0\154\0\157\0\167\0\55\0\162\0\145\0\147\0\151\0\163\0\164\0\162\0\171\0\40\0\157\0\160\0\164\0\151\0\157\0\156\0\163) /Parent 780 0 R /First 790 0 R /Last 802 0 R /Prev 783 0 R /Next 810 0 R /Count -11 /A 154 0 R >> endobj 790 0 obj << /Title (\376\377\0\123\0\160\0\145\0\143\0\151\0\146\0\171\0\151\0\156\0\147\0\40\0\146\0\154\0\157\0\167\0\40\0\154\0\157\0\143\0\141\0\164\0\151\0\157\0\156\0\163) /Parent 788 0 R /Next 792 0 R /A 789 0 R >> endobj 792 0 obj << /Title (\376\377\0\101\0\163\0\163\0\151\0\147\0\156\0\151\0\156\0\147\0\40\0\143\0\165\0\163\0\164\0\157\0\155\0\40\0\146\0\154\0\157\0\167\0\40\0\151\0\144\0\145\0\156\0\164\0\151\0\146\0\151\0\145\0\162\0\163) /Parent 788 0 R /Prev 790 0 R /Next 794 0 R /A 791 0 R >> endobj 794 0 obj << /Title (\376\377\0\101\0\163\0\163\0\151\0\147\0\156\0\151\0\156\0\147\0\40\0\146\0\154\0\157\0\167\0\40\0\155\0\145\0\164\0\141\0\55\0\141\0\164\0\164\0\162\0\151\0\142\0\165\0\164\0\145\0\163) /Parent 788 0 R /Prev 792 0 R /Next 796 0 R /A 793 0 R >> endobj 796 0 obj << /Title (\376\377\0\122\0\145\0\147\0\151\0\163\0\164\0\145\0\162\0\151\0\156\0\147\0\40\0\146\0\154\0\157\0\167\0\163\0\40\0\165\0\163\0\151\0\156\0\147\0\40\0\141\0\40\0\154\0\157\0\143\0\141\0\164\0\151\0\157\0\156\0\40\0\160\0\141\0\164\0\164\0\145\0\162\0\156) /Parent 788 0 R /Prev 794 0 R /Next 798 0 R /A 795 0 R >> endobj 798 0 obj << /Title (\376\377\0\106\0\154\0\157\0\167\0\40\0\154\0\157\0\143\0\141\0\164\0\151\0\157\0\156\0\40\0\142\0\141\0\163\0\145\0\40\0\160\0\141\0\164\0\150) /Parent 788 0 R /Prev 796 0 R /Next 800 0 R /A 797 0 R >> endobj 800 0 obj << /Title (\376\377\0\103\0\157\0\156\0\146\0\151\0\147\0\165\0\162\0\151\0\156\0\147\0\40\0\106\0\154\0\157\0\167\0\122\0\145\0\147\0\151\0\163\0\164\0\162\0\171\0\40\0\150\0\151\0\145\0\162\0\141\0\162\0\143\0\150\0\151\0\145\0\163) /Parent 788 0 R /Prev 798 0 R /Next 802 0 R /A 799 0 R >> endobj 802 0 obj << /Title (\376\377\0\103\0\157\0\156\0\146\0\151\0\147\0\165\0\162\0\151\0\156\0\147\0\40\0\143\0\165\0\163\0\164\0\157\0\155\0\40\0\106\0\154\0\157\0\167\0\102\0\165\0\151\0\154\0\144\0\145\0\162\0\40\0\163\0\145\0\162\0\166\0\151\0\143\0\145\0\163) /Parent 788 0 R /First 803 0 R /Last 809 0 R /Prev 800 0 R /Count -4 /A 801 0 R >> endobj 803 0 obj << /Title (\376\377\0\143\0\157\0\156\0\166\0\145\0\162\0\163\0\151\0\157\0\156\0\55\0\163\0\145\0\162\0\166\0\151\0\143\0\145) /Parent 802 0 R /Next 805 0 R /A 340 0 R >> endobj 805 0 obj << /Title (\376\377\0\145\0\170\0\160\0\162\0\145\0\163\0\163\0\151\0\157\0\156\0\55\0\160\0\141\0\162\0\163\0\145\0\162) /Parent 802 0 R /Prev 803 0 R /Next 807 0 R /A 804 0 R >> endobj 807 0 obj << /Title (\376\377\0\166\0\151\0\145\0\167\0\55\0\146\0\141\0\143\0\164\0\157\0\162\0\171\0\55\0\143\0\162\0\145\0\141\0\164\0\157\0\162) /Parent 802 0 R /Prev 805 0 R /Next 809 0 R /A 806 0 R >> endobj 809 0 obj << /Title (\376\377\0\144\0\145\0\166\0\145\0\154\0\157\0\160\0\155\0\145\0\156\0\164) /Parent 802 0 R /Prev 807 0 R /A 808 0 R >> endobj 810 0 obj << /Title (\376\377\0\71\0\56\0\65\0\56\0\240\0\146\0\154\0\157\0\167\0\55\0\145\0\170\0\145\0\143\0\165\0\164\0\157\0\162\0\40\0\157\0\160\0\164\0\151\0\157\0\156\0\163) /Parent 780 0 R /First 812 0 R /Last 814 0 R /Prev 788 0 R /Count -4 /A 156 0 R >> endobj 812 0 obj << /Title (\376\377\0\101\0\164\0\164\0\141\0\143\0\150\0\151\0\156\0\147\0\40\0\146\0\154\0\157\0\167\0\40\0\145\0\170\0\145\0\143\0\165\0\164\0\151\0\157\0\156\0\40\0\154\0\151\0\163\0\164\0\145\0\156\0\145\0\162\0\163) /Parent 810 0 R /Next 814 0 R /A 811 0 R >> endobj 814 0 obj << /Title (\376\377\0\124\0\165\0\156\0\151\0\156\0\147\0\40\0\106\0\154\0\157\0\167\0\105\0\170\0\145\0\143\0\165\0\164\0\151\0\157\0\156\0\40\0\160\0\145\0\162\0\163\0\151\0\163\0\164\0\145\0\156\0\143\0\145) /Parent 810 0 R /First 816 0 R /Last 818 0 R /Prev 812 0 R /Count -2 /A 813 0 R >> endobj 816 0 obj << /Title (\376\377\0\155\0\141\0\170\0\55\0\145\0\170\0\145\0\143\0\165\0\164\0\151\0\157\0\156\0\163) /Parent 814 0 R /Next 818 0 R /A 815 0 R >> endobj 818 0 obj << /Title (\376\377\0\155\0\141\0\170\0\55\0\145\0\170\0\145\0\143\0\165\0\164\0\151\0\157\0\156\0\55\0\163\0\156\0\141\0\160\0\163\0\150\0\157\0\164\0\163) /Parent 814 0 R /Prev 816 0 R /A 817 0 R >> endobj 819 0 obj << /Title (\376\377\0\61\0\60\0\56\0\240\0\123\0\160\0\162\0\151\0\156\0\147\0\40\0\115\0\126\0\103\0\40\0\111\0\156\0\164\0\145\0\147\0\162\0\141\0\164\0\151\0\157\0\156) /Parent 528 0 R /First 820 0 R /Last 837 0 R /Prev 780 0 R /Next 844 0 R /Count -15 /A 158 0 R >> endobj 820 0 obj << /Title (\376\377\0\61\0\60\0\56\0\61\0\56\0\240\0\111\0\156\0\164\0\162\0\157\0\144\0\165\0\143\0\164\0\151\0\157\0\156) /Parent 819 0 R /Next 821 0 R /A 160 0 R >> endobj 821 0 obj << /Title (\376\377\0\61\0\60\0\56\0\62\0\56\0\240\0\103\0\157\0\156\0\146\0\151\0\147\0\165\0\162\0\151\0\156\0\147\0\40\0\167\0\145\0\142\0\56\0\170\0\155\0\154) /Parent 819 0 R /Prev 820 0 R /Next 822 0 R /A 162 0 R >> endobj 822 0 obj << /Title (\376\377\0\61\0\60\0\56\0\63\0\56\0\240\0\104\0\151\0\163\0\160\0\141\0\164\0\143\0\150\0\151\0\156\0\147\0\40\0\164\0\157\0\40\0\146\0\154\0\157\0\167\0\163) /Parent 819 0 R /First 824 0 R /Last 828 0 R /Prev 821 0 R /Next 829 0 R /Count -3 /A 164 0 R >> endobj 824 0 obj << /Title (\376\377\0\122\0\145\0\147\0\151\0\163\0\164\0\145\0\162\0\151\0\156\0\147\0\40\0\164\0\150\0\145\0\40\0\106\0\154\0\157\0\167\0\110\0\141\0\156\0\144\0\154\0\145\0\162\0\101\0\144\0\141\0\160\0\164\0\145\0\162) /Parent 822 0 R /Next 826 0 R /A 823 0 R >> endobj 826 0 obj << /Title (\376\377\0\104\0\145\0\146\0\151\0\156\0\151\0\156\0\147\0\40\0\146\0\154\0\157\0\167\0\40\0\155\0\141\0\160\0\160\0\151\0\156\0\147\0\163) /Parent 822 0 R /Prev 824 0 R /Next 828 0 R /A 825 0 R >> endobj 828 0 obj << /Title (\376\377\0\106\0\154\0\157\0\167\0\40\0\150\0\141\0\156\0\144\0\154\0\151\0\156\0\147\0\40\0\167\0\157\0\162\0\153\0\146\0\154\0\157\0\167) /Parent 822 0 R /Prev 826 0 R /A 827 0 R >> endobj 829 0 obj << /Title (\376\377\0\61\0\60\0\56\0\64\0\56\0\240\0\111\0\155\0\160\0\154\0\145\0\155\0\145\0\156\0\164\0\151\0\156\0\147\0\40\0\143\0\165\0\163\0\164\0\157\0\155\0\40\0\106\0\154\0\157\0\167\0\110\0\141\0\156\0\144\0\154\0\145\0\162\0\163) /Parent 819 0 R /First 831 0 R /Last 835 0 R /Prev 822 0 R /Next 836 0 R /Count -3 /A 166 0 R >> endobj 831 0 obj << /Title (\376\377\0\105\0\170\0\141\0\155\0\160\0\154\0\145\0\40\0\106\0\154\0\157\0\167\0\110\0\141\0\156\0\144\0\154\0\145\0\162) /Parent 829 0 R /Next 833 0 R /A 830 0 R >> endobj 833 0 obj << /Title (\376\377\0\104\0\145\0\160\0\154\0\157\0\171\0\151\0\156\0\147\0\40\0\141\0\40\0\143\0\165\0\163\0\164\0\157\0\155\0\40\0\106\0\154\0\157\0\167\0\110\0\141\0\156\0\144\0\154\0\145\0\162) /Parent 829 0 R /Prev 831 0 R /Next 835 0 R /A 832 0 R >> endobj 835 0 obj << /Title (\376\377\0\106\0\154\0\157\0\167\0\110\0\141\0\156\0\144\0\154\0\145\0\162\0\40\0\122\0\145\0\144\0\151\0\162\0\145\0\143\0\164\0\163) /Parent 829 0 R /Prev 833 0 R /A 834 0 R >> endobj 836 0 obj << /Title (\376\377\0\61\0\60\0\56\0\65\0\56\0\240\0\126\0\151\0\145\0\167\0\40\0\122\0\145\0\163\0\157\0\154\0\165\0\164\0\151\0\157\0\156) /Parent 819 0 R /Prev 829 0 R /Next 837 0 R /A 168 0 R >> endobj 837 0 obj << /Title (\376\377\0\61\0\60\0\56\0\66\0\56\0\240\0\123\0\151\0\147\0\156\0\141\0\154\0\151\0\156\0\147\0\40\0\141\0\156\0\40\0\145\0\166\0\145\0\156\0\164\0\40\0\146\0\162\0\157\0\155\0\40\0\141\0\40\0\126\0\151\0\145\0\167) /Parent 819 0 R /First 839 0 R /Last 843 0 R /Prev 836 0 R /Count -3 /A 170 0 R >> endobj 839 0 obj << /Title (\376\377\0\125\0\163\0\151\0\156\0\147\0\40\0\141\0\40\0\156\0\141\0\155\0\145\0\144\0\40\0\110\0\124\0\115\0\114\0\40\0\142\0\165\0\164\0\164\0\157\0\156\0\40\0\164\0\157\0\40\0\163\0\151\0\147\0\156\0\141\0\154\0\40\0\141\0\156\0\40\0\145\0\166\0\145\0\156\0\164) /Parent 837 0 R /Next 841 0 R /A 838 0 R >> endobj 841 0 obj << /Title (\376\377\0\125\0\163\0\151\0\156\0\147\0\40\0\141\0\40\0\150\0\151\0\144\0\144\0\145\0\156\0\40\0\110\0\124\0\115\0\114\0\40\0\146\0\157\0\162\0\155\0\40\0\160\0\141\0\162\0\141\0\155\0\145\0\164\0\145\0\162\0\40\0\164\0\157\0\40\0\163\0\151\0\147\0\156\0\141\0\154\0\40\0\141\0\156\0\40\0\145\0\166\0\145\0\156\0\164) /Parent 837 0 R /Prev 839 0 R /Next 843 0 R /A 840 0 R >> endobj 843 0 obj << /Title (\376\377\0\125\0\163\0\151\0\156\0\147\0\40\0\141\0\40\0\110\0\124\0\115\0\114\0\40\0\154\0\151\0\156\0\153\0\40\0\164\0\157\0\40\0\163\0\151\0\147\0\156\0\141\0\154\0\40\0\141\0\156\0\40\0\145\0\166\0\145\0\156\0\164) /Parent 837 0 R /Prev 841 0 R /A 842 0 R >> endobj 844 0 obj << /Title (\376\377\0\61\0\61\0\56\0\240\0\123\0\160\0\162\0\151\0\156\0\147\0\40\0\112\0\141\0\166\0\141\0\123\0\143\0\162\0\151\0\160\0\164\0\40\0\121\0\165\0\151\0\143\0\153\0\40\0\122\0\145\0\146\0\145\0\162\0\145\0\156\0\143\0\145) /Parent 528 0 R /First 845 0 R /Last 849 0 R /Prev 819 0 R /Next 856 0 R /Count -8 /A 172 0 R >> endobj 845 0 obj << /Title (\376\377\0\61\0\61\0\56\0\61\0\56\0\240\0\111\0\156\0\164\0\162\0\157\0\144\0\165\0\143\0\164\0\151\0\157\0\156) /Parent 844 0 R /Next 846 0 R /A 174 0 R >> endobj 846 0 obj << /Title (\376\377\0\61\0\61\0\56\0\62\0\56\0\240\0\123\0\145\0\162\0\166\0\151\0\156\0\147\0\40\0\112\0\141\0\166\0\141\0\163\0\143\0\162\0\151\0\160\0\164\0\40\0\122\0\145\0\163\0\157\0\165\0\162\0\143\0\145\0\163) /Parent 844 0 R /Prev 845 0 R /Next 847 0 R /A 176 0 R >> endobj 847 0 obj << /Title (\376\377\0\61\0\61\0\56\0\63\0\56\0\240\0\111\0\156\0\143\0\154\0\165\0\144\0\151\0\156\0\147\0\40\0\123\0\160\0\162\0\151\0\156\0\147\0\40\0\112\0\141\0\166\0\141\0\163\0\143\0\162\0\151\0\160\0\164\0\40\0\151\0\156\0\40\0\141\0\40\0\120\0\141\0\147\0\145) /Parent 844 0 R /Prev 846 0 R /Next 848 0 R /A 178 0 R >> endobj 848 0 obj << /Title (\376\377\0\61\0\61\0\56\0\64\0\56\0\240\0\123\0\160\0\162\0\151\0\156\0\147\0\40\0\112\0\141\0\166\0\141\0\163\0\143\0\162\0\151\0\160\0\164\0\40\0\104\0\145\0\143\0\157\0\162\0\141\0\164\0\151\0\157\0\156\0\163) /Parent 844 0 R /Prev 847 0 R /Next 849 0 R /A 180 0 R >> endobj 849 0 obj << /Title (\376\377\0\61\0\61\0\56\0\65\0\56\0\240\0\110\0\141\0\156\0\144\0\154\0\151\0\156\0\147\0\40\0\101\0\152\0\141\0\170\0\40\0\122\0\145\0\161\0\165\0\145\0\163\0\164\0\163) /Parent 844 0 R /First 851 0 R /Last 855 0 R /Prev 848 0 R /Count -3 /A 182 0 R >> endobj 851 0 obj << /Title (\376\377\0\120\0\162\0\157\0\166\0\151\0\144\0\151\0\156\0\147\0\40\0\141\0\40\0\114\0\151\0\142\0\162\0\141\0\162\0\171\0\55\0\123\0\160\0\145\0\143\0\151\0\146\0\151\0\143\0\40\0\101\0\152\0\141\0\170\0\110\0\141\0\156\0\144\0\154\0\145\0\162) /Parent 849 0 R /Next 853 0 R /A 850 0 R >> endobj 853 0 obj << /Title (\376\377\0\110\0\141\0\156\0\144\0\154\0\151\0\156\0\147\0\40\0\101\0\152\0\141\0\170\0\40\0\122\0\145\0\161\0\165\0\145\0\163\0\164\0\163\0\40\0\167\0\151\0\164\0\150\0\40\0\123\0\160\0\162\0\151\0\156\0\147\0\40\0\115\0\126\0\103\0\40\0\103\0\157\0\156\0\164\0\162\0\157\0\154\0\154\0\145\0\162\0\163) /Parent 849 0 R /Prev 851 0 R /Next 855 0 R /A 852 0 R >> endobj 855 0 obj << /Title (\376\377\0\110\0\141\0\156\0\144\0\154\0\151\0\156\0\147\0\40\0\101\0\152\0\141\0\170\0\40\0\122\0\145\0\161\0\165\0\145\0\163\0\164\0\163\0\40\0\167\0\151\0\164\0\150\0\40\0\123\0\160\0\162\0\151\0\156\0\147\0\40\0\115\0\126\0\103\0\40\0\53\0\40\0\123\0\160\0\162\0\151\0\156\0\147\0\40\0\127\0\145\0\142\0\40\0\106\0\154\0\157\0\167) /Parent 849 0 R /Prev 853 0 R /A 854 0 R >> endobj 856 0 obj << /Title (\376\377\0\61\0\62\0\56\0\240\0\112\0\123\0\106\0\40\0\111\0\156\0\164\0\145\0\147\0\162\0\141\0\164\0\151\0\157\0\156) /Parent 528 0 R /First 857 0 R /Last 887 0 R /Prev 844 0 R /Next 892 0 R /Count -22 /A 184 0 R >> endobj 857 0 obj << /Title (\376\377\0\61\0\62\0\56\0\61\0\56\0\240\0\111\0\156\0\164\0\162\0\157\0\144\0\165\0\143\0\164\0\151\0\157\0\156) /Parent 856 0 R /Next 858 0 R /A 186 0 R >> endobj 858 0 obj << /Title (\376\377\0\61\0\62\0\56\0\62\0\56\0\240\0\123\0\160\0\162\0\151\0\156\0\147\0\55\0\143\0\145\0\156\0\164\0\162\0\151\0\143\0\40\0\111\0\156\0\164\0\145\0\147\0\162\0\141\0\164\0\151\0\157\0\156\0\40\0\101\0\160\0\160\0\162\0\157\0\141\0\143\0\150) /Parent 856 0 R /Prev 857 0 R /Next 859 0 R /A 188 0 R >> endobj 859 0 obj << /Title (\376\377\0\61\0\62\0\56\0\63\0\56\0\240\0\103\0\157\0\156\0\146\0\151\0\147\0\165\0\162\0\151\0\156\0\147\0\40\0\167\0\145\0\142\0\56\0\170\0\155\0\154) /Parent 856 0 R /Prev 858 0 R /Next 860 0 R /A 190 0 R >> endobj 860 0 obj << /Title (\376\377\0\61\0\62\0\56\0\64\0\56\0\240\0\103\0\157\0\156\0\146\0\151\0\147\0\165\0\162\0\151\0\156\0\147\0\40\0\127\0\145\0\142\0\40\0\106\0\154\0\157\0\167\0\40\0\164\0\157\0\40\0\162\0\145\0\156\0\144\0\145\0\162\0\40\0\112\0\123\0\106\0\40\0\166\0\151\0\145\0\167\0\163) /Parent 856 0 R /Prev 859 0 R /Next 861 0 R /A 192 0 R >> endobj 861 0 obj << /Title (\376\377\0\61\0\62\0\56\0\65\0\56\0\240\0\103\0\157\0\156\0\146\0\151\0\147\0\165\0\162\0\151\0\156\0\147\0\40\0\146\0\141\0\143\0\145\0\163\0\55\0\143\0\157\0\156\0\146\0\151\0\147\0\56\0\170\0\155\0\154) /Parent 856 0 R /Prev 860 0 R /Next 862 0 R /A 194 0 R >> endobj 862 0 obj << /Title (\376\377\0\61\0\62\0\56\0\66\0\56\0\240\0\122\0\145\0\160\0\154\0\141\0\143\0\151\0\156\0\147\0\40\0\164\0\150\0\145\0\40\0\112\0\123\0\106\0\40\0\115\0\141\0\156\0\141\0\147\0\145\0\144\0\40\0\102\0\145\0\141\0\156\0\40\0\106\0\141\0\143\0\151\0\154\0\151\0\164\0\171) /Parent 856 0 R /First 864 0 R /Last 868 0 R /Prev 861 0 R /Next 869 0 R /Count -3 /A 196 0 R >> endobj 864 0 obj << /Title (\376\377\0\125\0\163\0\151\0\156\0\147\0\40\0\106\0\154\0\157\0\167\0\40\0\126\0\141\0\162\0\151\0\141\0\142\0\154\0\145\0\163) /Parent 862 0 R /Next 866 0 R /A 863 0 R >> endobj 866 0 obj << /Title (\376\377\0\125\0\163\0\151\0\156\0\147\0\40\0\123\0\143\0\157\0\160\0\145\0\144\0\40\0\123\0\160\0\162\0\151\0\156\0\147\0\40\0\102\0\145\0\141\0\156\0\163) /Parent 862 0 R /Prev 864 0 R /Next 868 0 R /A 865 0 R >> endobj 868 0 obj << /Title (\376\377\0\115\0\141\0\156\0\151\0\160\0\165\0\154\0\141\0\164\0\151\0\156\0\147\0\40\0\124\0\150\0\145\0\40\0\115\0\157\0\144\0\145\0\154) /Parent 862 0 R /Prev 866 0 R /A 867 0 R >> endobj 869 0 obj << /Title (\376\377\0\61\0\62\0\56\0\67\0\56\0\240\0\110\0\141\0\156\0\144\0\154\0\151\0\156\0\147\0\40\0\112\0\123\0\106\0\40\0\105\0\166\0\145\0\156\0\164\0\163\0\40\0\127\0\151\0\164\0\150\0\40\0\123\0\160\0\162\0\151\0\156\0\147\0\40\0\127\0\145\0\142\0\40\0\106\0\154\0\157\0\167) /Parent 856 0 R /First 871 0 R /Last 877 0 R /Prev 862 0 R /Next 878 0 R /Count -4 /A 198 0 R >> endobj 871 0 obj << /Title (\376\377\0\110\0\141\0\156\0\144\0\154\0\151\0\156\0\147\0\40\0\112\0\123\0\106\0\40\0\111\0\156\0\55\0\160\0\141\0\147\0\145\0\40\0\101\0\143\0\164\0\151\0\157\0\156\0\40\0\105\0\166\0\145\0\156\0\164\0\163) /Parent 869 0 R /Next 873 0 R /A 870 0 R >> endobj 873 0 obj << /Title (\376\377\0\110\0\141\0\156\0\144\0\154\0\151\0\156\0\147\0\40\0\112\0\123\0\106\0\40\0\101\0\143\0\164\0\151\0\157\0\156\0\40\0\105\0\166\0\145\0\156\0\164\0\163) /Parent 869 0 R /Prev 871 0 R /Next 875 0 R /A 872 0 R >> endobj 875 0 obj << /Title (\376\377\0\120\0\145\0\162\0\146\0\157\0\162\0\155\0\151\0\156\0\147\0\40\0\115\0\157\0\144\0\145\0\154\0\40\0\126\0\141\0\154\0\151\0\144\0\141\0\164\0\151\0\157\0\156) /Parent 869 0 R /Prev 873 0 R /Next 877 0 R /A 874 0 R >> endobj 877 0 obj << /Title (\376\377\0\110\0\141\0\156\0\144\0\154\0\151\0\156\0\147\0\40\0\101\0\152\0\141\0\170\0\40\0\105\0\166\0\145\0\156\0\164\0\163) /Parent 869 0 R /Prev 875 0 R /A 876 0 R >> endobj 878 0 obj << /Title (\376\377\0\61\0\62\0\56\0\70\0\56\0\240\0\105\0\156\0\150\0\141\0\156\0\143\0\151\0\156\0\147\0\40\0\124\0\150\0\145\0\40\0\125\0\163\0\145\0\162\0\40\0\105\0\170\0\160\0\145\0\162\0\151\0\145\0\156\0\143\0\145\0\40\0\127\0\151\0\164\0\150\0\40\0\122\0\151\0\143\0\150\0\40\0\127\0\145\0\142\0\40\0\106\0\157\0\162\0\155\0\163) /Parent 856 0 R /First 880 0 R /Last 886 0 R /Prev 869 0 R /Next 887 0 R /Count -4 /A 200 0 R >> endobj 880 0 obj << /Title (\376\377\0\126\0\141\0\154\0\151\0\144\0\141\0\164\0\151\0\156\0\147\0\40\0\141\0\40\0\124\0\145\0\170\0\164\0\40\0\106\0\151\0\145\0\154\0\144) /Parent 878 0 R /Next 882 0 R /A 879 0 R >> endobj 882 0 obj << /Title (\376\377\0\126\0\141\0\154\0\151\0\144\0\141\0\164\0\151\0\156\0\147\0\40\0\141\0\40\0\116\0\165\0\155\0\145\0\162\0\151\0\143\0\40\0\106\0\151\0\145\0\154\0\144) /Parent 878 0 R /Prev 880 0 R /Next 884 0 R /A 881 0 R >> endobj 884 0 obj << /Title (\376\377\0\126\0\141\0\154\0\151\0\144\0\141\0\164\0\151\0\156\0\147\0\40\0\141\0\40\0\104\0\141\0\164\0\145\0\40\0\106\0\151\0\145\0\154\0\144) /Parent 878 0 R /Prev 882 0 R /Next 886 0 R /A 883 0 R >> endobj 886 0 obj << /Title (\376\377\0\120\0\162\0\145\0\166\0\145\0\156\0\164\0\151\0\156\0\147\0\40\0\141\0\156\0\40\0\111\0\156\0\166\0\141\0\154\0\151\0\144\0\40\0\106\0\157\0\162\0\155\0\40\0\123\0\165\0\142\0\155\0\151\0\163\0\163\0\151\0\157\0\156) /Parent 878 0 R /Prev 884 0 R /A 885 0 R >> endobj 887 0 obj << /Title (\376\377\0\61\0\62\0\56\0\71\0\56\0\240\0\124\0\150\0\151\0\162\0\144\0\55\0\120\0\141\0\162\0\164\0\171\0\40\0\103\0\157\0\155\0\160\0\157\0\156\0\145\0\156\0\164\0\40\0\114\0\151\0\142\0\162\0\141\0\162\0\171\0\40\0\111\0\156\0\164\0\145\0\147\0\162\0\141\0\164\0\151\0\157\0\156) /Parent 856 0 R /First 889 0 R /Last 891 0 R /Prev 878 0 R /Count -2 /A 205 0 R >> endobj 889 0 obj << /Title (\376\377\0\122\0\151\0\143\0\150\0\40\0\106\0\141\0\143\0\145\0\163\0\40\0\111\0\156\0\164\0\145\0\147\0\162\0\141\0\164\0\151\0\157\0\156) /Parent 887 0 R /Next 891 0 R /A 888 0 R >> endobj 891 0 obj << /Title (\376\377\0\101\0\160\0\141\0\143\0\150\0\145\0\40\0\115\0\171\0\106\0\141\0\143\0\145\0\163\0\40\0\124\0\162\0\151\0\156\0\151\0\144\0\141\0\144\0\40\0\111\0\156\0\164\0\145\0\147\0\162\0\141\0\164\0\151\0\157\0\156) /Parent 887 0 R /Prev 889 0 R /A 890 0 R >> endobj 892 0 obj << /Title (\376\377\0\61\0\63\0\56\0\240\0\120\0\157\0\162\0\164\0\154\0\145\0\164\0\40\0\111\0\156\0\164\0\145\0\147\0\162\0\141\0\164\0\151\0\157\0\156) /Parent 528 0 R /First 893 0 R /Last 908 0 R /Prev 856 0 R /Next 915 0 R /Count -14 /A 207 0 R >> endobj 893 0 obj << /Title (\376\377\0\61\0\63\0\56\0\61\0\56\0\240\0\111\0\156\0\164\0\162\0\157\0\144\0\165\0\143\0\164\0\151\0\157\0\156) /Parent 892 0 R /Next 894 0 R /A 209 0 R >> endobj 894 0 obj << /Title (\376\377\0\61\0\63\0\56\0\62\0\56\0\240\0\103\0\157\0\156\0\146\0\151\0\147\0\165\0\162\0\151\0\156\0\147\0\40\0\167\0\145\0\142\0\56\0\170\0\155\0\154\0\40\0\141\0\156\0\144\0\40\0\160\0\157\0\162\0\164\0\154\0\145\0\164\0\56\0\170\0\155\0\154) /Parent 892 0 R /Prev 893 0 R /Next 895 0 R /A 211 0 R >> endobj 895 0 obj << /Title (\376\377\0\61\0\63\0\56\0\63\0\56\0\240\0\103\0\157\0\156\0\146\0\151\0\147\0\165\0\162\0\151\0\156\0\147\0\40\0\123\0\160\0\162\0\151\0\156\0\147) /Parent 892 0 R /First 897 0 R /Last 901 0 R /Prev 894 0 R /Next 902 0 R /Count -3 /A 213 0 R >> endobj 897 0 obj << /Title (\376\377\0\106\0\154\0\157\0\167\0\40\0\110\0\141\0\156\0\144\0\154\0\145\0\162\0\163) /Parent 895 0 R /Next 899 0 R /A 896 0 R >> endobj 899 0 obj << /Title (\376\377\0\110\0\141\0\156\0\144\0\154\0\145\0\162\0\40\0\115\0\141\0\160\0\160\0\151\0\156\0\147\0\163) /Parent 895 0 R /Prev 897 0 R /Next 901 0 R /A 898 0 R >> endobj 901 0 obj << /Title (\376\377\0\106\0\154\0\157\0\167\0\40\0\110\0\141\0\156\0\144\0\154\0\145\0\162\0\40\0\101\0\144\0\141\0\160\0\164\0\145\0\162) /Parent 895 0 R /Prev 899 0 R /A 900 0 R >> endobj 902 0 obj << /Title (\376\377\0\61\0\63\0\56\0\64\0\56\0\240\0\120\0\157\0\162\0\164\0\154\0\145\0\164\0\40\0\126\0\151\0\145\0\167\0\163) /Parent 892 0 R /Prev 895 0 R /Next 903 0 R /A 215 0 R >> endobj 903 0 obj << /Title (\376\377\0\61\0\63\0\56\0\65\0\56\0\240\0\120\0\157\0\162\0\164\0\154\0\145\0\164\0\40\0\115\0\157\0\144\0\145\0\163\0\40\0\141\0\156\0\144\0\40\0\127\0\151\0\156\0\144\0\157\0\167\0\40\0\123\0\164\0\141\0\164\0\145\0\163) /Parent 892 0 R /First 905 0 R /Last 907 0 R /Prev 902 0 R /Next 908 0 R /Count -2 /A 217 0 R >> endobj 905 0 obj << /Title (\376\377\0\127\0\151\0\156\0\144\0\157\0\167\0\40\0\123\0\164\0\141\0\164\0\145) /Parent 903 0 R /Next 907 0 R /A 904 0 R >> endobj 907 0 obj << /Title (\376\377\0\120\0\157\0\162\0\164\0\154\0\145\0\164\0\40\0\115\0\157\0\144\0\145) /Parent 903 0 R /Prev 905 0 R /A 906 0 R >> endobj 908 0 obj << /Title (\376\377\0\61\0\63\0\56\0\66\0\56\0\240\0\111\0\163\0\163\0\165\0\145\0\163\0\40\0\151\0\156\0\40\0\141\0\40\0\120\0\157\0\162\0\164\0\154\0\145\0\164\0\40\0\105\0\156\0\166\0\151\0\162\0\157\0\156\0\155\0\145\0\156\0\164) /Parent 892 0 R /First 910 0 R /Last 914 0 R /Prev 903 0 R /Count -3 /A 219 0 R >> endobj 910 0 obj << /Title (\376\377\0\122\0\145\0\144\0\151\0\162\0\145\0\143\0\164\0\163) /Parent 908 0 R /Next 912 0 R /A 909 0 R >> endobj 912 0 obj << /Title (\376\377\0\123\0\167\0\151\0\164\0\143\0\150\0\151\0\156\0\147\0\40\0\120\0\157\0\162\0\164\0\154\0\145\0\164\0\40\0\115\0\157\0\144\0\145\0\163) /Parent 908 0 R /Prev 910 0 R /Next 914 0 R /A 911 0 R >> endobj 914 0 obj << /Title (\376\377\0\120\0\157\0\162\0\164\0\154\0\145\0\164\0\163\0\40\0\141\0\156\0\144\0\40\0\112\0\123\0\106) /Parent 908 0 R /Prev 912 0 R /A 913 0 R >> endobj 915 0 obj << /Title (\376\377\0\61\0\64\0\56\0\240\0\124\0\145\0\163\0\164\0\151\0\156\0\147\0\40\0\146\0\154\0\157\0\167\0\163) /Parent 528 0 R /First 916 0 R /Last 922 0 R /Prev 892 0 R /Next 923 0 R /Count -7 /A 221 0 R >> endobj 916 0 obj << /Title (\376\377\0\61\0\64\0\56\0\61\0\56\0\240\0\111\0\156\0\164\0\162\0\157\0\144\0\165\0\143\0\164\0\151\0\157\0\156) /Parent 915 0 R /Next 917 0 R /A 223 0 R >> endobj 917 0 obj << /Title (\376\377\0\61\0\64\0\56\0\62\0\56\0\240\0\105\0\170\0\164\0\145\0\156\0\144\0\151\0\156\0\147\0\40\0\101\0\142\0\163\0\164\0\162\0\141\0\143\0\164\0\130\0\155\0\154\0\106\0\154\0\157\0\167\0\105\0\170\0\145\0\143\0\165\0\164\0\151\0\157\0\156\0\124\0\145\0\163\0\164\0\163) /Parent 915 0 R /Prev 916 0 R /Next 918 0 R /A 225 0 R >> endobj 918 0 obj << /Title (\376\377\0\61\0\64\0\56\0\63\0\56\0\240\0\123\0\160\0\145\0\143\0\151\0\146\0\171\0\151\0\156\0\147\0\40\0\164\0\150\0\145\0\40\0\160\0\141\0\164\0\150\0\40\0\164\0\157\0\40\0\164\0\150\0\145\0\40\0\146\0\154\0\157\0\167\0\40\0\164\0\157\0\40\0\164\0\145\0\163\0\164) /Parent 915 0 R /Prev 917 0 R /Next 919 0 R /A 227 0 R >> endobj 919 0 obj << /Title (\376\377\0\61\0\64\0\56\0\64\0\56\0\240\0\122\0\145\0\147\0\151\0\163\0\164\0\145\0\162\0\151\0\156\0\147\0\40\0\146\0\154\0\157\0\167\0\40\0\144\0\145\0\160\0\145\0\156\0\144\0\145\0\156\0\143\0\151\0\145\0\163) /Parent 915 0 R /Prev 918 0 R /Next 920 0 R /A 229 0 R >> endobj 920 0 obj << /Title (\376\377\0\61\0\64\0\56\0\65\0\56\0\240\0\124\0\145\0\163\0\164\0\151\0\156\0\147\0\40\0\146\0\154\0\157\0\167\0\40\0\163\0\164\0\141\0\162\0\164\0\165\0\160) /Parent 915 0 R /Prev 919 0 R /Next 921 0 R /A 231 0 R >> endobj 921 0 obj << /Title (\376\377\0\61\0\64\0\56\0\66\0\56\0\240\0\124\0\145\0\163\0\164\0\151\0\156\0\147\0\40\0\146\0\154\0\157\0\167\0\40\0\145\0\166\0\145\0\156\0\164\0\40\0\150\0\141\0\156\0\144\0\154\0\151\0\156\0\147) /Parent 915 0 R /Prev 920 0 R /Next 922 0 R /A 233 0 R >> endobj 922 0 obj << /Title (\376\377\0\61\0\64\0\56\0\67\0\56\0\240\0\115\0\157\0\143\0\153\0\151\0\156\0\147\0\40\0\141\0\40\0\163\0\165\0\142\0\146\0\154\0\157\0\167) /Parent 915 0 R /Prev 921 0 R /A 235 0 R >> endobj 923 0 obj << /Title (\376\377\0\61\0\65\0\56\0\240\0\125\0\160\0\147\0\162\0\141\0\144\0\151\0\156\0\147\0\40\0\146\0\162\0\157\0\155\0\40\0\61\0\56\0\60) /Parent 528 0 R /First 924 0 R /Last 959 0 R /Prev 915 0 R /Next 970 0 R /Count -25 /A 237 0 R >> endobj 924 0 obj << /Title (\376\377\0\61\0\65\0\56\0\61\0\56\0\240\0\111\0\156\0\164\0\162\0\157\0\144\0\165\0\143\0\164\0\151\0\157\0\156) /Parent 923 0 R /Next 925 0 R /A 239 0 R >> endobj 925 0 obj << /Title (\376\377\0\61\0\65\0\56\0\62\0\56\0\240\0\106\0\154\0\157\0\167\0\40\0\104\0\145\0\146\0\151\0\156\0\151\0\164\0\151\0\157\0\156\0\40\0\114\0\141\0\156\0\147\0\165\0\141\0\147\0\145) /Parent 923 0 R /First 927 0 R /Last 941 0 R /Prev 924 0 R /Next 942 0 R /Count -8 /A 241 0 R >> endobj 927 0 obj << /Title (\376\377\0\106\0\154\0\157\0\167\0\40\0\104\0\145\0\146\0\151\0\156\0\151\0\164\0\151\0\157\0\156\0\40\0\125\0\160\0\144\0\141\0\164\0\145\0\162\0\40\0\124\0\157\0\157\0\154) /Parent 925 0 R /First 929 0 R /Last 929 0 R /Next 941 0 R /Count -6 /A 926 0 R >> endobj 929 0 obj << /Title (\376\377\0\106\0\154\0\157\0\167\0\40\0\104\0\145\0\146\0\151\0\156\0\151\0\164\0\151\0\157\0\156\0\40\0\125\0\160\0\144\0\141\0\164\0\145\0\162\0\40\0\124\0\157\0\157\0\154\0\40\0\127\0\141\0\162\0\156\0\151\0\156\0\147\0\163) /Parent 927 0 R /First 931 0 R /Last 939 0 R /Count -5 /A 928 0 R >> endobj 931 0 obj << /Title (\376\377\0\141\0\162\0\147\0\165\0\155\0\145\0\156\0\164\0\40\0\160\0\141\0\162\0\141\0\155\0\145\0\164\0\145\0\162\0\55\0\164\0\171\0\160\0\145\0\40\0\156\0\157\0\40\0\154\0\157\0\156\0\147\0\145\0\162\0\40\0\163\0\165\0\160\0\160\0\157\0\162\0\164\0\145\0\144) /Parent 929 0 R /Next 933 0 R /A 930 0 R >> endobj 933 0 obj << /Title (\376\377\0\151\0\156\0\154\0\151\0\156\0\145\0\55\0\146\0\154\0\157\0\167\0\40\0\151\0\163\0\40\0\156\0\157\0\40\0\154\0\157\0\156\0\147\0\145\0\162\0\40\0\163\0\165\0\160\0\160\0\157\0\162\0\164\0\145\0\144) /Parent 929 0 R /Prev 931 0 R /Next 935 0 R /A 932 0 R >> endobj 935 0 obj << /Title (\376\377\0\155\0\141\0\160\0\160\0\151\0\156\0\147\0\40\0\164\0\141\0\162\0\147\0\145\0\164\0\55\0\143\0\157\0\154\0\154\0\145\0\143\0\164\0\151\0\157\0\156\0\40\0\151\0\163\0\40\0\156\0\157\0\40\0\154\0\157\0\156\0\147\0\145\0\162\0\40\0\163\0\165\0\160\0\160\0\157\0\162\0\164\0\145\0\144) /Parent 929 0 R /Prev 933 0 R /Next 937 0 R /A 934 0 R >> endobj 937 0 obj << /Title (\376\377\0\166\0\141\0\162\0\40\0\142\0\145\0\141\0\156\0\40\0\151\0\163\0\40\0\156\0\157\0\40\0\154\0\157\0\156\0\147\0\145\0\162\0\40\0\163\0\165\0\160\0\160\0\157\0\162\0\164\0\145\0\144) /Parent 929 0 R /Prev 935 0 R /Next 939 0 R /A 936 0 R >> endobj 939 0 obj << /Title (\376\377\0\166\0\141\0\162\0\40\0\163\0\143\0\157\0\160\0\145\0\40\0\151\0\163\0\40\0\156\0\157\0\40\0\154\0\157\0\156\0\147\0\145\0\162\0\40\0\163\0\165\0\160\0\160\0\157\0\162\0\164\0\145\0\144) /Parent 929 0 R /Prev 937 0 R /A 938 0 R >> endobj 941 0 obj << /Title (\376\377\0\105\0\114\0\40\0\105\0\170\0\160\0\162\0\145\0\163\0\163\0\151\0\157\0\156\0\163) /Parent 925 0 R /Prev 927 0 R /A 940 0 R >> endobj 942 0 obj << /Title (\376\377\0\61\0\65\0\56\0\63\0\56\0\240\0\127\0\145\0\142\0\40\0\106\0\154\0\157\0\167\0\40\0\103\0\157\0\156\0\146\0\151\0\147\0\165\0\162\0\141\0\164\0\151\0\157\0\156) /Parent 923 0 R /First 944 0 R /Last 958 0 R /Prev 925 0 R /Next 959 0 R /Count -8 /A 243 0 R >> endobj 944 0 obj << /Title (\376\377\0\127\0\145\0\142\0\40\0\106\0\154\0\157\0\167\0\40\0\102\0\145\0\141\0\156\0\40\0\103\0\157\0\156\0\146\0\151\0\147\0\165\0\162\0\141\0\164\0\151\0\157\0\156) /Parent 942 0 R /Next 946 0 R /A 943 0 R >> endobj 946 0 obj << /Title (\376\377\0\127\0\145\0\142\0\40\0\106\0\154\0\157\0\167\0\40\0\123\0\143\0\150\0\145\0\155\0\141\0\40\0\103\0\157\0\156\0\146\0\151\0\147\0\165\0\162\0\141\0\164\0\151\0\157\0\156) /Parent 942 0 R /First 948 0 R /Last 952 0 R /Prev 944 0 R /Next 954 0 R /Count -3 /A 945 0 R >> endobj 948 0 obj << /Title (\376\377\0\146\0\154\0\157\0\167\0\55\0\145\0\170\0\145\0\143\0\165\0\164\0\157\0\162) /Parent 946 0 R /Next 950 0 R /A 947 0 R >> endobj 950 0 obj << /Title (\376\377\0\146\0\154\0\157\0\167\0\55\0\145\0\170\0\145\0\143\0\165\0\164\0\151\0\157\0\156\0\55\0\154\0\151\0\163\0\164\0\145\0\156\0\145\0\162\0\163) /Parent 946 0 R /Prev 948 0 R /Next 952 0 R /A 949 0 R >> endobj 952 0 obj << /Title (\376\377\0\146\0\154\0\157\0\167\0\55\0\162\0\145\0\147\0\151\0\163\0\164\0\162\0\171) /Parent 946 0 R /Prev 950 0 R /A 951 0 R >> endobj 954 0 obj << /Title (\376\377\0\106\0\154\0\157\0\167\0\40\0\103\0\157\0\156\0\164\0\162\0\157\0\154\0\154\0\145\0\162) /Parent 942 0 R /Prev 946 0 R /Next 956 0 R /A 953 0 R >> endobj 956 0 obj << /Title (\376\377\0\106\0\154\0\157\0\167\0\40\0\125\0\122\0\114\0\40\0\110\0\141\0\156\0\144\0\154\0\145\0\162) /Parent 942 0 R /Prev 954 0 R /Next 958 0 R /A 955 0 R >> endobj 958 0 obj << /Title (\376\377\0\126\0\151\0\145\0\167\0\40\0\122\0\145\0\163\0\157\0\154\0\165\0\164\0\151\0\157\0\156) /Parent 942 0 R /Prev 956 0 R /A 957 0 R >> endobj 959 0 obj << /Title (\376\377\0\61\0\65\0\56\0\64\0\56\0\240\0\116\0\145\0\167\0\40\0\127\0\145\0\142\0\40\0\106\0\154\0\157\0\167\0\40\0\103\0\157\0\156\0\143\0\145\0\160\0\164\0\163) /Parent 923 0 R /First 961 0 R /Last 969 0 R /Prev 942 0 R /Count -5 /A 245 0 R >> endobj 961 0 obj << /Title (\376\377\0\101\0\165\0\164\0\157\0\155\0\141\0\164\0\151\0\143\0\40\0\115\0\157\0\144\0\145\0\154\0\40\0\102\0\151\0\156\0\144\0\151\0\156\0\147) /Parent 959 0 R /Next 963 0 R /A 960 0 R >> endobj 963 0 obj << /Title (\376\377\0\117\0\107\0\116\0\114\0\40\0\166\0\163\0\40\0\105\0\114) /Parent 959 0 R /Prev 961 0 R /Next 965 0 R /A 962 0 R >> endobj 965 0 obj << /Title (\376\377\0\106\0\154\0\141\0\163\0\150\0\40\0\123\0\143\0\157\0\160\0\145) /Parent 959 0 R /Prev 963 0 R /Next 967 0 R /A 964 0 R >> endobj 967 0 obj << /Title (\376\377\0\123\0\160\0\162\0\151\0\156\0\147\0\40\0\106\0\141\0\143\0\145\0\163) /Parent 959 0 R /Prev 965 0 R /Next 969 0 R /A 966 0 R >> endobj 969 0 obj << /Title (\376\377\0\105\0\170\0\164\0\145\0\162\0\156\0\141\0\154\0\40\0\122\0\145\0\144\0\151\0\162\0\145\0\143\0\164\0\163) /Parent 959 0 R /Prev 967 0 R /A 968 0 R >> endobj 970 0 obj << /Title (\376\377\0\101\0\160\0\160\0\145\0\156\0\144\0\151\0\170\0\240\0\101\0\56\0\240\0\106\0\154\0\157\0\167\0\40\0\104\0\145\0\146\0\151\0\156\0\151\0\164\0\151\0\157\0\156\0\40\0\114\0\141\0\156\0\147\0\165\0\141\0\147\0\145\0\40\0\61\0\56\0\60\0\40\0\164\0\157\0\40\0\62\0\56\0\60\0\40\0\115\0\141\0\160\0\160\0\151\0\156\0\147\0\163) /Parent 528 0 R /Prev 923 0 R /A 247 0 R >> endobj 971 0 obj << /Type /Font /Subtype /Type1 /Name /F11 /BaseFont /Courier-Bold /Encoding /WinAnsiEncoding >> endobj 972 0 obj << /Type /Font /Subtype /Type1 /Name /F1 /BaseFont /Helvetica /Encoding /WinAnsiEncoding >> endobj 973 0 obj << /Type /Font /Subtype /Type1 /Name /F10 /BaseFont /Courier-Oblique /Encoding /WinAnsiEncoding >> endobj 974 0 obj << /Type /Font /Subtype /Type1 /Name /F5 /BaseFont /Times-Roman /Encoding /WinAnsiEncoding >> endobj 975 0 obj << /Type /Font /Subtype /Type1 /Name /F3 /BaseFont /Helvetica-Bold /Encoding /WinAnsiEncoding >> endobj 976 0 obj << /Type /Font /Subtype /Type1 /Name /F9 /BaseFont /Courier /Encoding /WinAnsiEncoding >> endobj 977 0 obj << /Type /Font /Subtype /Type1 /Name /F6 /BaseFont /Times-Italic /Encoding /WinAnsiEncoding >> endobj 978 0 obj << /Type /Font /Subtype /Type1 /Name /F7 /BaseFont /Times-Bold /Encoding /WinAnsiEncoding >> endobj 1 0 obj << /Type /Pages /Count 112 /Kids [6 0 R 8 0 R 10 0 R 101 0 R 202 0 R 249 0 R 251 0 R 253 0 R 255 0 R 265 0 R 271 0 R 273 0 R 280 0 R 282 0 R 287 0 R 292 0 R 294 0 R 296 0 R 298 0 R 300 0 R 302 0 R 304 0 R 306 0 R 308 0 R 311 0 R 318 0 R 320 0 R 322 0 R 324 0 R 326 0 R 329 0 R 331 0 R 333 0 R 335 0 R 337 0 R 342 0 R 344 0 R 346 0 R 348 0 R 350 0 R 352 0 R 354 0 R 356 0 R 358 0 R 360 0 R 362 0 R 364 0 R 366 0 R 368 0 R 372 0 R 374 0 R 376 0 R 378 0 R 380 0 R 384 0 R 388 0 R 390 0 R 392 0 R 394 0 R 396 0 R 398 0 R 400 0 R 403 0 R 405 0 R 407 0 R 409 0 R 411 0 R 413 0 R 415 0 R 417 0 R 419 0 R 421 0 R 423 0 R 425 0 R 427 0 R 431 0 R 433 0 R 435 0 R 437 0 R 441 0 R 443 0 R 445 0 R 447 0 R 452 0 R 456 0 R 458 0 R 460 0 R 462 0 R 464 0 R 466 0 R 468 0 R 472 0 R 474 0 R 478 0 R 482 0 R 484 0 R 486 0 R 488 0 R 490 0 R 492 0 R 494 0 R 500 0 R 502 0 R 504 0 R 509 0 R 515 0 R 517 0 R 519 0 R 521 0 R 523 0 R 525 0 R 527 0 R ] >> endobj 2 0 obj << /Type /Catalog /Pages 1 0 R /Outlines 528 0 R /PageMode /UseOutlines /Names << /Dests << /Names [ (preface) [ 251 0 R /XYZ 85.0 726.135 null ] (introduction) [ 255 0 R /XYZ 85.0 726.135 null ] (defining-flows) [ 287 0 R /XYZ 85.0 726.135 null ] (el) [ 311 0 R /XYZ 85.0 726.135 null ] (views) [ 329 0 R /XYZ 85.0 726.135 null ] (actions) [ 356 0 R /XYZ 85.0 726.135 null ] (flow-managed-persistence) [ 374 0 R /XYZ 85.0 726.135 null ] (flow-security) [ 378 0 R /XYZ 85.0 726.135 null ] (flow-inheritance) [ 390 0 R /XYZ 85.0 726.135 null ] (system-setup) [ 398 0 R /XYZ 85.0 726.135 null ] (spring-mvc) [ 411 0 R /XYZ 85.0 726.135 null ] (spring-js) [ 423 0 R /XYZ 85.0 726.135 null ] (spring-faces) [ 437 0 R /XYZ 85.0 726.135 null ] (portlet) [ 474 0 R /XYZ 85.0 726.135 null ] (testing) [ 486 0 R /XYZ 85.0 726.135 null ] (upgrade-guide) [ 494 0 R /XYZ 85.0 726.135 null ] (field-mappings) [ 517 0 R /XYZ 85.0 726.135 null ] (d0e1) [ 6 0 R /XYZ 85.0 726.135 null ] ] >> >> >> endobj 3 0 obj << /Font << /F1 972 0 R /F11 971 0 R /F10 973 0 R /F5 974 0 R /F3 975 0 R /F9 976 0 R /F6 977 0 R /F7 978 0 R >> /ProcSet [ /PDF /ImageC /Text ] /XObject <> >> endobj 13 0 obj << /S /GoTo /D [251 0 R /XYZ 85.0 726.135 null] >> endobj 15 0 obj << /S /GoTo /D [255 0 R /XYZ 85.0 726.135 null] >> endobj 17 0 obj << /S /GoTo /D [255 0 R /XYZ 85.0 689.836 null] >> endobj 19 0 obj << /S /GoTo /D [255 0 R /XYZ 85.0 589.786 null] >> endobj 21 0 obj << /S /GoTo /D [255 0 R /XYZ 85.0 490.936 null] >> endobj 23 0 obj << /S /GoTo /D [255 0 R /XYZ 85.0 404.086 null] >> endobj 25 0 obj << /S /GoTo /D [255 0 R /XYZ 85.0 241.636 null] >> endobj 27 0 obj << /S /GoTo /D [265 0 R /XYZ 49.0 478.649 null] >> endobj 29 0 obj << /S /GoTo /D [273 0 R /XYZ 49.0 512.225 null] >> endobj 31 0 obj << /S /GoTo /D [287 0 R /XYZ 85.0 726.135 null] >> endobj 33 0 obj << /S /GoTo /D [287 0 R /XYZ 85.0 689.836 null] >> endobj 35 0 obj << /S /GoTo /D [287 0 R /XYZ 85.0 589.786 null] >> endobj 37 0 obj << /S /GoTo /D [292 0 R /XYZ 49.0 700.935 null] >> endobj 39 0 obj << /S /GoTo /D [292 0 R /XYZ 49.0 171.885 null] >> endobj 41 0 obj << /S /GoTo /D [294 0 R /XYZ 85.0 726.135 null] >> endobj 43 0 obj << /S /GoTo /D [296 0 R /XYZ 49.0 425.284 null] >> endobj 45 0 obj << /S /GoTo /D [300 0 R /XYZ 49.0 726.135 null] >> endobj 47 0 obj << /S /GoTo /D [304 0 R /XYZ 49.0 712.935 null] >> endobj 49 0 obj << /S /GoTo /D [304 0 R /XYZ 49.0 473.296 null] >> endobj 51 0 obj << /S /GoTo /D [311 0 R /XYZ 85.0 726.135 null] >> endobj 53 0 obj << /S /GoTo /D [311 0 R /XYZ 85.0 689.836 null] >> endobj 55 0 obj << /S /GoTo /D [311 0 R /XYZ 85.0 602.986 null] >> endobj 57 0 obj << /S /GoTo /D [311 0 R /XYZ 85.0 307.052 null] >> endobj 59 0 obj << /S /GoTo /D [311 0 R /XYZ 85.0 193.802 null] >> endobj 61 0 obj << /S /GoTo /D [320 0 R /XYZ 85.0 726.135 null] >> endobj 63 0 obj << /S /GoTo /D [324 0 R /XYZ 85.0 371.323 null] >> endobj 65 0 obj << /S /GoTo /D [329 0 R /XYZ 85.0 726.135 null] >> endobj 67 0 obj << /S /GoTo /D [329 0 R /XYZ 85.0 689.836 null] >> endobj 69 0 obj << /S /GoTo /D [329 0 R /XYZ 85.0 616.186 null] >> endobj 71 0 obj << /S /GoTo /D [329 0 R /XYZ 85.0 131.726 null] >> endobj 73 0 obj << /S /GoTo /D [331 0 R /XYZ 49.0 345.768 null] >> endobj 75 0 obj << /S /GoTo /D [333 0 R /XYZ 85.0 417.062 null] >> endobj 77 0 obj << /S /GoTo /D [333 0 R /XYZ 85.0 266.202 null] >> endobj 79 0 obj << /S /GoTo /D [335 0 R /XYZ 49.0 556.935 null] >> endobj 81 0 obj << /S /GoTo /D [337 0 R /XYZ 85.0 344.35 null] >> endobj 83 0 obj << /S /GoTo /D [337 0 R /XYZ 85.0 199.592 null] >> endobj 85 0 obj << /S /GoTo /D [342 0 R /XYZ 49.0 171.855 null] >> endobj 87 0 obj << /S /GoTo /D [346 0 R /XYZ 49.0 252.97 null] >> endobj 89 0 obj << /S /GoTo /D [348 0 R /XYZ 85.0 726.135 null] >> endobj 91 0 obj << /S /GoTo /D [350 0 R /XYZ 49.0 288.759 null] >> endobj 93 0 obj << /S /GoTo /D [354 0 R /XYZ 49.0 562.907 null] >> endobj 95 0 obj << /S /GoTo /D [354 0 R /XYZ 49.0 401.043 null] >> endobj 97 0 obj << /S /GoTo /D [356 0 R /XYZ 85.0 726.135 null] >> endobj 99 0 obj << /S /GoTo /D [356 0 R /XYZ 85.0 689.836 null] >> endobj 104 0 obj << /S /GoTo /D [356 0 R /XYZ 85.0 576.586 null] >> endobj 106 0 obj << /S /GoTo /D [356 0 R /XYZ 85.0 165.168 null] >> endobj 108 0 obj << /S /GoTo /D [358 0 R /XYZ 49.0 648.925 null] >> endobj 110 0 obj << /S /GoTo /D [358 0 R /XYZ 49.0 267.441 null] >> endobj 112 0 obj << /S /GoTo /D [360 0 R /XYZ 85.0 253.464 null] >> endobj 114 0 obj << /S /GoTo /D [362 0 R /XYZ 49.0 272.854 null] >> endobj 116 0 obj << /S /GoTo /D [374 0 R /XYZ 85.0 726.135 null] >> endobj 118 0 obj << /S /GoTo /D [374 0 R /XYZ 85.0 689.836 null] >> endobj 120 0 obj << /S /GoTo /D [374 0 R /XYZ 85.0 485.386 null] >> endobj 122 0 obj << /S /GoTo /D [378 0 R /XYZ 85.0 726.135 null] >> endobj 124 0 obj << /S /GoTo /D [378 0 R /XYZ 85.0 689.836 null] >> endobj 126 0 obj << /S /GoTo /D [378 0 R /XYZ 85.0 563.386 null] >> endobj 128 0 obj << /S /GoTo /D [378 0 R /XYZ 85.0 386.536 null] >> endobj 130 0 obj << /S /GoTo /D [380 0 R /XYZ 49.0 473.132 null] >> endobj 132 0 obj << /S /GoTo /D [384 0 R /XYZ 85.0 703.819 null] >> endobj 134 0 obj << /S /GoTo /D [390 0 R /XYZ 85.0 726.135 null] >> endobj 136 0 obj << /S /GoTo /D [390 0 R /XYZ 85.0 689.836 null] >> endobj 138 0 obj << /S /GoTo /D [390 0 R /XYZ 85.0 551.386 null] >> endobj 140 0 obj << /S /GoTo /D [390 0 R /XYZ 85.0 400.936 null] >> endobj 142 0 obj << /S /GoTo /D [392 0 R /XYZ 49.0 651.121 null] >> endobj 144 0 obj << /S /GoTo /D [392 0 R /XYZ 49.0 514.457 null] >> endobj 146 0 obj << /S /GoTo /D [398 0 R /XYZ 85.0 726.135 null] >> endobj 148 0 obj << /S /GoTo /D [398 0 R /XYZ 85.0 689.836 null] >> endobj 150 0 obj << /S /GoTo /D [398 0 R /XYZ 85.0 616.186 null] >> endobj 152 0 obj << /S /GoTo /D [398 0 R /XYZ 85.0 414.644 null] >> endobj 154 0 obj << /S /GoTo /D [400 0 R /XYZ 49.0 700.935 null] >> endobj 156 0 obj << /S /GoTo /D [407 0 R /XYZ 85.0 643.035 null] >> endobj 158 0 obj << /S /GoTo /D [411 0 R /XYZ 85.0 726.135 null] >> endobj 160 0 obj << /S /GoTo /D [411 0 R /XYZ 85.0 689.836 null] >> endobj 162 0 obj << /S /GoTo /D [411 0 R /XYZ 85.0 589.786 null] >> endobj 164 0 obj << /S /GoTo /D [411 0 R /XYZ 85.0 336.644 null] >> endobj 166 0 obj << /S /GoTo /D [413 0 R /XYZ 49.0 224.881 null] >> endobj 168 0 obj << /S /GoTo /D [419 0 R /XYZ 85.0 674.535 null] >> endobj 170 0 obj << /S /GoTo /D [419 0 R /XYZ 85.0 363.487 null] >> endobj 172 0 obj << /S /GoTo /D [423 0 R /XYZ 85.0 726.135 null] >> endobj 174 0 obj << /S /GoTo /D [423 0 R /XYZ 85.0 689.836 null] >> endobj 176 0 obj << /S /GoTo /D [423 0 R /XYZ 85.0 538.186 null] >> endobj 178 0 obj << /S /GoTo /D [423 0 R /XYZ 85.0 317.342 null] >> endobj 180 0 obj << /S /GoTo /D [425 0 R /XYZ 49.0 651.121 null] >> endobj 182 0 obj << /S /GoTo /D [427 0 R /XYZ 85.0 355.125 null] >> endobj 184 0 obj << /S /GoTo /D [437 0 R /XYZ 85.0 726.135 null] >> endobj 186 0 obj << /S /GoTo /D [437 0 R /XYZ 85.0 689.836 null] >> endobj 188 0 obj << /S /GoTo /D [437 0 R /XYZ 85.0 551.386 null] >> endobj 190 0 obj << /S /GoTo /D [441 0 R /XYZ 49.0 726.135 null] >> endobj 192 0 obj << /S /GoTo /D [443 0 R /XYZ 85.0 214.137 null] >> endobj 194 0 obj << /S /GoTo /D [445 0 R /XYZ 49.0 464.761 null] >> endobj 196 0 obj << /S /GoTo /D [445 0 R /XYZ 49.0 292.607 null] >> endobj 198 0 obj << /S /GoTo /D [452 0 R /XYZ 49.0 260.856 null] >> endobj 200 0 obj << /S /GoTo /D [462 0 R /XYZ 49.0 603.529 null] >> endobj 205 0 obj << /S /GoTo /D [464 0 R /XYZ 85.0 364.769 null] >> endobj 207 0 obj << /S /GoTo /D [474 0 R /XYZ 85.0 726.135 null] >> endobj 209 0 obj << /S /GoTo /D [474 0 R /XYZ 85.0 689.836 null] >> endobj 211 0 obj << /S /GoTo /D [474 0 R /XYZ 85.0 576.586 null] >> endobj 213 0 obj << /S /GoTo /D [474 0 R /XYZ 85.0 128.76 null] >> endobj 215 0 obj << /S /GoTo /D [482 0 R /XYZ 85.0 629.827 null] >> endobj 217 0 obj << /S /GoTo /D [482 0 R /XYZ 85.0 436.379 null] >> endobj 219 0 obj << /S /GoTo /D [484 0 R /XYZ 49.0 689.521 null] >> endobj 221 0 obj << /S /GoTo /D [486 0 R /XYZ 85.0 726.135 null] >> endobj 223 0 obj << /S /GoTo /D [486 0 R /XYZ 85.0 689.836 null] >> endobj 225 0 obj << /S /GoTo /D [486 0 R /XYZ 85.0 616.186 null] >> endobj 227 0 obj << /S /GoTo /D [486 0 R /XYZ 85.0 478.526 null] >> endobj 229 0 obj << /S /GoTo /D [486 0 R /XYZ 85.0 320.568 null] >> endobj 231 0 obj << /S /GoTo /D [488 0 R /XYZ 49.0 682.525 null] >> endobj 233 0 obj << /S /GoTo /D [488 0 R /XYZ 49.0 461.885 null] >> endobj 235 0 obj << /S /GoTo /D [488 0 R /XYZ 49.0 247.143 null] >> endobj 237 0 obj << /S /GoTo /D [494 0 R /XYZ 85.0 726.135 null] >> endobj 239 0 obj << /S /GoTo /D [494 0 R /XYZ 85.0 689.836 null] >> endobj 241 0 obj << /S /GoTo /D [494 0 R /XYZ 85.0 616.186 null] >> endobj 243 0 obj << /S /GoTo /D [500 0 R /XYZ 49.0 411.372 null] >> endobj 245 0 obj << /S /GoTo /D [504 0 R /XYZ 49.0 242.903 null] >> endobj 247 0 obj << /S /GoTo /D [517 0 R /XYZ 85.0 726.135 null] >> endobj 340 0 obj << /S /GoTo /D [405 0 R /XYZ 49.0 389.64 null] >> endobj 528 0 obj << /First 530 0 R /Last 970 0 R >> endobj 529 0 obj << /S /GoTo /D [6 0 R /XYZ 85.0 726.135 null] >> endobj 531 0 obj << /S /GoTo /D [10 0 R /XYZ 85.0 714.135 null] >> endobj 541 0 obj << /S /GoTo /D [265 0 R /XYZ 49.0 345.149 null] >> endobj 543 0 obj << /S /GoTo /D [271 0 R /XYZ 85.0 484.931 null] >> endobj 545 0 obj << /S /GoTo /D [271 0 R /XYZ 85.0 132.35 null] >> endobj 548 0 obj << /S /GoTo /D [273 0 R /XYZ 49.0 320.975 null] >> endobj 550 0 obj << /S /GoTo /D [280 0 R /XYZ 85.0 556.829 null] >> endobj 552 0 obj << /S /GoTo /D [280 0 R /XYZ 85.0 144.785 null] >> endobj 560 0 obj << /S /GoTo /D [294 0 R /XYZ 85.0 689.685 null] >> endobj 562 0 obj << /S /GoTo /D [294 0 R /XYZ 85.0 507.508 null] >> endobj 564 0 obj << /S /GoTo /D [294 0 R /XYZ 85.0 341.519 null] >> endobj 566 0 obj << /S /GoTo /D [294 0 R /XYZ 85.0 200.934 null] >> endobj 568 0 obj << /S /GoTo /D [296 0 R /XYZ 49.0 700.935 null] >> endobj 571 0 obj << /S /GoTo /D [296 0 R /XYZ 49.0 121.234 null] >> endobj 573 0 obj << /S /GoTo /D [298 0 R /XYZ 85.0 637.921 null] >> endobj 575 0 obj << /S /GoTo /D [298 0 R /XYZ 85.0 531.407 null] >> endobj 577 0 obj << /S /GoTo /D [298 0 R /XYZ 85.0 417.795 null] >> endobj 580 0 obj << /S /GoTo /D [300 0 R /XYZ 49.0 518.363 null] >> endobj 582 0 obj << /S /GoTo /D [300 0 R /XYZ 49.0 378.774 null] >> endobj 584 0 obj << /S /GoTo /D [300 0 R /XYZ 49.0 260.26 null] >> endobj 586 0 obj << /S /GoTo /D [300 0 R /XYZ 49.0 128.546 null] >> endobj 588 0 obj << /S /GoTo /D [302 0 R /XYZ 85.0 664.321 null] >> endobj 590 0 obj << /S /GoTo /D [302 0 R /XYZ 85.0 497.336 null] >> endobj 592 0 obj << /S /GoTo /D [302 0 R /XYZ 85.0 404.022 null] >> endobj 595 0 obj << /S /GoTo /D [304 0 R /XYZ 49.0 612.885 null] >> endobj 598 0 obj << /S /GoTo /D [304 0 R /XYZ 49.0 386.446 null] >> endobj 600 0 obj << /S /GoTo /D [304 0 R /XYZ 49.0 211.367 null] >> endobj 602 0 obj << /S /GoTo /D [306 0 R /XYZ 85.0 726.135 null] >> endobj 604 0 obj << /S /GoTo /D [306 0 R /XYZ 85.0 580.225 null] >> endobj 609 0 obj << /S /GoTo /D [311 0 R /XYZ 85.0 554.536 null] >> endobj 611 0 obj << /S /GoTo /D [311 0 R /XYZ 85.0 398.027 null] >> endobj 615 0 obj << /S /GoTo /D [318 0 R /XYZ 49.0 624.135 null] >> endobj 617 0 obj << /S /GoTo /D [318 0 R /XYZ 49.0 559.56 null] >> endobj 619 0 obj << /S /GoTo /D [318 0 R /XYZ 49.0 322.712 null] >> endobj 622 0 obj << /S /GoTo /D [320 0 R /XYZ 85.0 651.285 null] >> endobj 624 0 obj << /S /GoTo /D [320 0 R /XYZ 85.0 523.696 null] >> endobj 626 0 obj << /S /GoTo /D [320 0 R /XYZ 85.0 361.613 null] >> endobj 628 0 obj << /S /GoTo /D [320 0 R /XYZ 85.0 247.224 null] >> endobj 630 0 obj << /S /GoTo /D [320 0 R /XYZ 85.0 119.635 null] >> endobj 632 0 obj << /S /GoTo /D [322 0 R /XYZ 49.0 611.521 null] >> endobj 634 0 obj << /S /GoTo /D [322 0 R /XYZ 49.0 510.332 null] >> endobj 636 0 obj << /S /GoTo /D [322 0 R /XYZ 49.0 409.143 null] >> endobj 638 0 obj << /S /GoTo /D [322 0 R /XYZ 49.0 300.856 null] >> endobj 640 0 obj << /S /GoTo /D [322 0 R /XYZ 49.0 173.267 null] >> endobj 642 0 obj << /S /GoTo /D [324 0 R /XYZ 85.0 726.135 null] >> endobj 644 0 obj << /S /GoTo /D [324 0 R /XYZ 85.0 648.36 null] >> endobj 646 0 obj << /S /GoTo /D [324 0 R /XYZ 85.0 570.585 null] >> endobj 648 0 obj << /S /GoTo /D [324 0 R /XYZ 85.0 492.81 null] >> endobj 655 0 obj << /S /GoTo /D [331 0 R /XYZ 49.0 700.935 null] >> endobj 657 0 obj << /S /GoTo /D [331 0 R /XYZ 49.0 599.746 null] >> endobj 659 0 obj << /S /GoTo /D [331 0 R /XYZ 49.0 498.557 null] >> endobj 662 0 obj << /S /GoTo /D [331 0 R /XYZ 49.0 232.518 null] >> endobj 664 0 obj << /S /GoTo /D [331 0 R /XYZ 49.0 118.129 null] >> endobj 666 0 obj << /S /GoTo /D [333 0 R /XYZ 85.0 650.125 null] >> endobj 671 0 obj << /S /GoTo /D [335 0 R /XYZ 49.0 430.485 null] >> endobj 673 0 obj << /S /GoTo /D [337 0 R /XYZ 85.0 630.925 null] >> endobj 678 0 obj << /S /GoTo /D [344 0 R /XYZ 85.0 726.135 null] >> endobj 680 0 obj << /S /GoTo /D [344 0 R /XYZ 85.0 621.96 null] >> endobj 682 0 obj << /S /GoTo /D [344 0 R /XYZ 85.0 155.468 null] >> endobj 684 0 obj << /S /GoTo /D [346 0 R /XYZ 49.0 370.345 null] >> endobj 688 0 obj << /S /GoTo /D [348 0 R /XYZ 85.0 586.485 null] >> endobj 690 0 obj << /S /GoTo /D [348 0 R /XYZ 85.0 161.274 null] >> endobj 692 0 obj << /S /GoTo /D [350 0 R /XYZ 49.0 668.227 null] >> endobj 694 0 obj << /S /GoTo /D [350 0 R /XYZ 49.0 501.242 null] >> endobj 697 0 obj << /S /GoTo /D [350 0 R /XYZ 49.0 149.109 null] >> endobj 699 0 obj << /S /GoTo /D [352 0 R /XYZ 85.0 668.329 null] >> endobj 701 0 obj << /S /GoTo /D [352 0 R /XYZ 85.0 556.85 null] >> endobj 703 0 obj << /S /GoTo /D [352 0 R /XYZ 85.0 306.553 null] >> endobj 707 0 obj << /S /GoTo /D [354 0 R /XYZ 49.0 300.993 null] >> endobj 709 0 obj << /S /GoTo /D [354 0 R /XYZ 49.0 199.804 null] >> endobj 717 0 obj << /S /GoTo /D [360 0 R /XYZ 85.0 726.135 null] >> endobj 719 0 obj << /S /GoTo /D [360 0 R /XYZ 85.0 585.14 null] >> endobj 721 0 obj << /S /GoTo /D [360 0 R /XYZ 85.0 444.145 null] >> endobj 724 0 obj << /S /GoTo /D [360 0 R /XYZ 85.0 166.614 null] >> endobj 726 0 obj << /S /GoTo /D [362 0 R /XYZ 49.0 542.531 null] >> endobj 729 0 obj << /S /GoTo /D [362 0 R /XYZ 49.0 224.404 null] >> endobj 731 0 obj << /S /GoTo /D [364 0 R /XYZ 85.0 668.329 null] >> endobj 733 0 obj << /S /GoTo /D [364 0 R /XYZ 85.0 525.548 null] >> endobj 735 0 obj << /S /GoTo /D [364 0 R /XYZ 85.0 346.281 null] >> endobj 737 0 obj << /S /GoTo /D [366 0 R /XYZ 49.0 726.135 null] >> endobj 739 0 obj << /S /GoTo /D [366 0 R /XYZ 49.0 554.962 null] >> endobj 741 0 obj << /S /GoTo /D [366 0 R /XYZ 49.0 412.181 null] >> endobj 743 0 obj << /S /GoTo /D [366 0 R /XYZ 49.0 202.608 null] >> endobj 745 0 obj << /S /GoTo /D [368 0 R /XYZ 85.0 536.429 null] >> endobj 754 0 obj << /S /GoTo /D [378 0 R /XYZ 85.0 176.978 null] >> endobj 756 0 obj << /S /GoTo /D [380 0 R /XYZ 49.0 651.121 null] >> endobj 759 0 obj << /S /GoTo /D [380 0 R /XYZ 49.0 221.982 null] >> endobj 762 0 obj << /S /GoTo /D [384 0 R /XYZ 85.0 565.369 null] >> endobj 764 0 obj << /S /GoTo /D [384 0 R /XYZ 85.0 295.82 null] >> endobj 770 0 obj << /S /GoTo /D [390 0 R /XYZ 85.0 352.486 null] >> endobj 772 0 obj << /S /GoTo /D [390 0 R /XYZ 85.0 211.697 null] >> endobj 776 0 obj << /S /GoTo /D [392 0 R /XYZ 49.0 257.673 null] >> endobj 778 0 obj << /S /GoTo /D [394 0 R /XYZ 85.0 270.135 null] >> endobj 784 0 obj << /S /GoTo /D [398 0 R /XYZ 85.0 327.794 null] >> endobj 786 0 obj << /S /GoTo /D [398 0 R /XYZ 85.0 212.409 null] >> endobj 789 0 obj << /S /GoTo /D [400 0 R /XYZ 49.0 627.285 null] >> endobj 791 0 obj << /S /GoTo /D [400 0 R /XYZ 49.0 499.696 null] >> endobj 793 0 obj << /S /GoTo /D [400 0 R /XYZ 49.0 398.507 null] >> endobj 795 0 obj << /S /GoTo /D [400 0 R /XYZ 49.0 255.726 null] >> endobj 797 0 obj << /S /GoTo /D [400 0 R /XYZ 49.0 141.337 null] >> endobj 799 0 obj << /S /GoTo /D [403 0 R /XYZ 85.0 222.981 null] >> endobj 801 0 obj << /S /GoTo /D [405 0 R /XYZ 49.0 696.721 null] >> endobj 804 0 obj << /S /GoTo /D [405 0 R /XYZ 49.0 293.34 null] >> endobj 806 0 obj << /S /GoTo /D [405 0 R /XYZ 49.0 210.24 null] >> endobj 808 0 obj << /S /GoTo /D [407 0 R /XYZ 85.0 726.135 null] >> endobj 811 0 obj << /S /GoTo /D [407 0 R /XYZ 85.0 569.385 null] >> endobj 813 0 obj << /S /GoTo /D [407 0 R /XYZ 85.0 371.888 null] >> endobj 815 0 obj << /S /GoTo /D [407 0 R /XYZ 85.0 257.499 null] >> endobj 817 0 obj << /S /GoTo /D [407 0 R /XYZ 85.0 187.599 null] >> endobj 823 0 obj << /S /GoTo /D [411 0 R /XYZ 85.0 249.794 null] >> endobj 825 0 obj << /S /GoTo /D [413 0 R /XYZ 49.0 726.135 null] >> endobj 827 0 obj << /S /GoTo /D [413 0 R /XYZ 49.0 498.256 null] >> endobj 830 0 obj << /S /GoTo /D [415 0 R /XYZ 85.0 196.243 null] >> endobj 832 0 obj << /S /GoTo /D [417 0 R /XYZ 49.0 581.137 null] >> endobj 834 0 obj << /S /GoTo /D [417 0 R /XYZ 49.0 401.948 null] >> endobj 838 0 obj << /S /GoTo /D [419 0 R /XYZ 85.0 237.037 null] >> endobj 840 0 obj << /S /GoTo /D [421 0 R /XYZ 49.0 699.735 null] >> endobj 842 0 obj << /S /GoTo /D [421 0 R /XYZ 49.0 553.048 null] >> endobj 850 0 obj << /S /GoTo /D [431 0 R /XYZ 49.0 726.135 null] >> endobj 852 0 obj << /S /GoTo /D [431 0 R /XYZ 49.0 569.16 null] >> endobj 854 0 obj << /S /GoTo /D [431 0 R /XYZ 49.0 224.675 null] >> endobj 863 0 obj << /S /GoTo /D [447 0 R /XYZ 85.0 687.735 null] >> endobj 865 0 obj << /S /GoTo /D [447 0 R /XYZ 85.0 292.722 null] >> endobj 867 0 obj << /S /GoTo /D [452 0 R /XYZ 49.0 726.135 null] >> endobj 870 0 obj << /S /GoTo /D [452 0 R /XYZ 49.0 121.206 null] >> endobj 872 0 obj << /S /GoTo /D [456 0 R /XYZ 85.0 266.019 null] >> endobj 874 0 obj << /S /GoTo /D [458 0 R /XYZ 49.0 498.029 null] >> endobj 876 0 obj << /S /GoTo /D [458 0 R /XYZ 49.0 121.248 null] >> endobj 879 0 obj << /S /GoTo /D [462 0 R /XYZ 49.0 443.629 null] >> endobj 881 0 obj << /S /GoTo /D [462 0 R /XYZ 49.0 276.644 null] >> endobj 883 0 obj << /S /GoTo /D [464 0 R /XYZ 85.0 726.135 null] >> endobj 885 0 obj << /S /GoTo /D [464 0 R /XYZ 85.0 544.954 null] >> endobj 888 0 obj << /S /GoTo /D [464 0 R /XYZ 85.0 185.519 null] >> endobj 890 0 obj << /S /GoTo /D [466 0 R /XYZ 49.0 137.027 null] >> endobj 896 0 obj << /S /GoTo /D [478 0 R /XYZ 49.0 726.135 null] >> endobj 898 0 obj << /S /GoTo /D [478 0 R /XYZ 49.0 378.154 null] >> endobj 900 0 obj << /S /GoTo /D [478 0 R /XYZ 49.0 135.083 null] >> endobj 904 0 obj << /S /GoTo /D [482 0 R /XYZ 85.0 387.929 null] >> endobj 906 0 obj << /S /GoTo /D [482 0 R /XYZ 85.0 210.526 null] >> endobj 909 0 obj << /S /GoTo /D [484 0 R /XYZ 49.0 641.071 null] >> endobj 911 0 obj << /S /GoTo /D [484 0 R /XYZ 49.0 473.296 null] >> endobj 913 0 obj << /S /GoTo /D [484 0 R /XYZ 49.0 343.921 null] >> endobj 926 0 obj << /S /GoTo /D [494 0 R /XYZ 85.0 502.936 null] >> endobj 928 0 obj << /S /GoTo /D [494 0 R /XYZ 85.0 258.947 null] >> endobj 930 0 obj << /S /GoTo /D [494 0 R /XYZ 85.0 227.447 null] >> endobj 932 0 obj << /S /GoTo /D [494 0 R /XYZ 85.0 134.451 null] >> endobj 934 0 obj << /S /GoTo /D [500 0 R /XYZ 49.0 700.935 null] >> endobj 936 0 obj << /S /GoTo /D [500 0 R /XYZ 49.0 647.539 null] >> endobj 938 0 obj << /S /GoTo /D [500 0 R /XYZ 49.0 594.143 null] >> endobj 940 0 obj << /S /GoTo /D [500 0 R /XYZ 49.0 527.547 null] >> endobj 943 0 obj << /S /GoTo /D [500 0 R /XYZ 49.0 284.922 null] >> endobj 945 0 obj << /S /GoTo /D [500 0 R /XYZ 49.0 180.747 null] >> endobj 947 0 obj << /S /GoTo /D [502 0 R /XYZ 85.0 626.635 null] >> endobj 949 0 obj << /S /GoTo /D [502 0 R /XYZ 85.0 520.121 null] >> endobj 951 0 obj << /S /GoTo /D [502 0 R /XYZ 85.0 363.921 null] >> endobj 953 0 obj << /S /GoTo /D [502 0 R /XYZ 85.0 230.011 null] >> endobj 955 0 obj << /S /GoTo /D [504 0 R /XYZ 49.0 712.935 null] >> endobj 957 0 obj << /S /GoTo /D [504 0 R /XYZ 49.0 549.856 null] >> endobj 960 0 obj << /S /GoTo /D [504 0 R /XYZ 49.0 194.453 null] >> endobj 962 0 obj << /S /GoTo /D [509 0 R /XYZ 85.0 726.135 null] >> endobj 964 0 obj << /S /GoTo /D [509 0 R /XYZ 85.0 621.96 null] >> endobj 966 0 obj << /S /GoTo /D [509 0 R /XYZ 85.0 517.785 null] >> endobj 968 0 obj << /S /GoTo /D [509 0 R /XYZ 85.0 440.01 null] >> endobj xref 0 979 0000000000 65535 f 0000375715 00000 n 0000376660 00000 n 0000377662 00000 n 0000000015 00000 n 0000000071 00000 n 0000000799 00000 n 0000000905 00000 n 0000001016 00000 n 0000001122 00000 n 0000003147 00000 n 0000003269 00000 n 0000003597 00000 n 0000377913 00000 n 0000003733 00000 n 0000377980 00000 n 0000003869 00000 n 0000378047 00000 n 0000004006 00000 n 0000378114 00000 n 0000004143 00000 n 0000378181 00000 n 0000004279 00000 n 0000378248 00000 n 0000004415 00000 n 0000378315 00000 n 0000004552 00000 n 0000378382 00000 n 0000004689 00000 n 0000378449 00000 n 0000004825 00000 n 0000378516 00000 n 0000004959 00000 n 0000378583 00000 n 0000005096 00000 n 0000378650 00000 n 0000005233 00000 n 0000378717 00000 n 0000005370 00000 n 0000378784 00000 n 0000005506 00000 n 0000378851 00000 n 0000005643 00000 n 0000378918 00000 n 0000005780 00000 n 0000378985 00000 n 0000005917 00000 n 0000379052 00000 n 0000006054 00000 n 0000379119 00000 n 0000006191 00000 n 0000379186 00000 n 0000006325 00000 n 0000379253 00000 n 0000006462 00000 n 0000379320 00000 n 0000006597 00000 n 0000379387 00000 n 0000006734 00000 n 0000379454 00000 n 0000006871 00000 n 0000379521 00000 n 0000007008 00000 n 0000379588 00000 n 0000007144 00000 n 0000379655 00000 n 0000007280 00000 n 0000379722 00000 n 0000007417 00000 n 0000379789 00000 n 0000007554 00000 n 0000379856 00000 n 0000007691 00000 n 0000379923 00000 n 0000007828 00000 n 0000379990 00000 n 0000007965 00000 n 0000380057 00000 n 0000008101 00000 n 0000380124 00000 n 0000008237 00000 n 0000380191 00000 n 0000008373 00000 n 0000380257 00000 n 0000008510 00000 n 0000380324 00000 n 0000008647 00000 n 0000380391 00000 n 0000008784 00000 n 0000380457 00000 n 0000008921 00000 n 0000380524 00000 n 0000009057 00000 n 0000380591 00000 n 0000009194 00000 n 0000380658 00000 n 0000009331 00000 n 0000380725 00000 n 0000009465 00000 n 0000380792 00000 n 0000009600 00000 n 0000011736 00000 n 0000011862 00000 n 0000012275 00000 n 0000380859 00000 n 0000012413 00000 n 0000380927 00000 n 0000012550 00000 n 0000380995 00000 n 0000012688 00000 n 0000381063 00000 n 0000012826 00000 n 0000381131 00000 n 0000012964 00000 n 0000381199 00000 n 0000013102 00000 n 0000381267 00000 n 0000013240 00000 n 0000381335 00000 n 0000013378 00000 n 0000381403 00000 n 0000013516 00000 n 0000381471 00000 n 0000013652 00000 n 0000381539 00000 n 0000013790 00000 n 0000381607 00000 n 0000013928 00000 n 0000381675 00000 n 0000014064 00000 n 0000381743 00000 n 0000014202 00000 n 0000381811 00000 n 0000014340 00000 n 0000381879 00000 n 0000014478 00000 n 0000381947 00000 n 0000014616 00000 n 0000382015 00000 n 0000014754 00000 n 0000382083 00000 n 0000014892 00000 n 0000382151 00000 n 0000015029 00000 n 0000382219 00000 n 0000015166 00000 n 0000382287 00000 n 0000015304 00000 n 0000382355 00000 n 0000015442 00000 n 0000382423 00000 n 0000015580 00000 n 0000382491 00000 n 0000015718 00000 n 0000382559 00000 n 0000015856 00000 n 0000382627 00000 n 0000015994 00000 n 0000382695 00000 n 0000016132 00000 n 0000382763 00000 n 0000016270 00000 n 0000382831 00000 n 0000016408 00000 n 0000382899 00000 n 0000016546 00000 n 0000382967 00000 n 0000016684 00000 n 0000383035 00000 n 0000016820 00000 n 0000383103 00000 n 0000016958 00000 n 0000383171 00000 n 0000017095 00000 n 0000383239 00000 n 0000017233 00000 n 0000383307 00000 n 0000017370 00000 n 0000383375 00000 n 0000017507 00000 n 0000383443 00000 n 0000017645 00000 n 0000383511 00000 n 0000017783 00000 n 0000383579 00000 n 0000017921 00000 n 0000383647 00000 n 0000018059 00000 n 0000383715 00000 n 0000018197 00000 n 0000383783 00000 n 0000018335 00000 n 0000383851 00000 n 0000018473 00000 n 0000383919 00000 n 0000018611 00000 n 0000383987 00000 n 0000018748 00000 n 0000384055 00000 n 0000018884 00000 n 0000384123 00000 n 0000019020 00000 n 0000020170 00000 n 0000020296 00000 n 0000020493 00000 n 0000384191 00000 n 0000020631 00000 n 0000384259 00000 n 0000020768 00000 n 0000384327 00000 n 0000020907 00000 n 0000384395 00000 n 0000021046 00000 n 0000384463 00000 n 0000021185 00000 n 0000384530 00000 n 0000021324 00000 n 0000384598 00000 n 0000021463 00000 n 0000384666 00000 n 0000021601 00000 n 0000384734 00000 n 0000021739 00000 n 0000384802 00000 n 0000021878 00000 n 0000384870 00000 n 0000022017 00000 n 0000384938 00000 n 0000022156 00000 n 0000385006 00000 n 0000022295 00000 n 0000385074 00000 n 0000022433 00000 n 0000385142 00000 n 0000022572 00000 n 0000385210 00000 n 0000022711 00000 n 0000385278 00000 n 0000022849 00000 n 0000385346 00000 n 0000022988 00000 n 0000385414 00000 n 0000023126 00000 n 0000385482 00000 n 0000023264 00000 n 0000385550 00000 n 0000023403 00000 n 0000385618 00000 n 0000023540 00000 n 0000023751 00000 n 0000023861 00000 n 0000024726 00000 n 0000024836 00000 n 0000025089 00000 n 0000025199 00000 n 0000027434 00000 n 0000027560 00000 n 0000027637 00000 n 0000027819 00000 n 0000027996 00000 n 0000028183 00000 n 0000028369 00000 n 0000028554 00000 n 0000028747 00000 n 0000028932 00000 n 0000031602 00000 n 0000031728 00000 n 0000031773 00000 n 0000031966 00000 n 0000032156 00000 n 0000032355 00000 n 0000035024 00000 n 0000035134 00000 n 0000038084 00000 n 0000038210 00000 n 0000038263 00000 n 0000038507 00000 n 0000038749 00000 n 0000039010 00000 n 0000039268 00000 n 0000041677 00000 n 0000041787 00000 n 0000042165 00000 n 0000042291 00000 n 0000042320 00000 n 0000042557 00000 n 0000043546 00000 n 0000052871 00000 n 0000052997 00000 n 0000053026 00000 n 0000053211 00000 n 0000054224 00000 n 0000065223 00000 n 0000065333 00000 n 0000067300 00000 n 0000067410 00000 n 0000069707 00000 n 0000069817 00000 n 0000072593 00000 n 0000072703 00000 n 0000074698 00000 n 0000074808 00000 n 0000077714 00000 n 0000077824 00000 n 0000080061 00000 n 0000080171 00000 n 0000082923 00000 n 0000083033 00000 n 0000083278 00000 n 0000083388 00000 n 0000085533 00000 n 0000086202 00000 n 0000086328 00000 n 0000086381 00000 n 0000086592 00000 n 0000086837 00000 n 0000087008 00000 n 0000087232 00000 n 0000089496 00000 n 0000089606 00000 n 0000091607 00000 n 0000091717 00000 n 0000093853 00000 n 0000093963 00000 n 0000095875 00000 n 0000095985 00000 n 0000096256 00000 n 0000096366 00000 n 0000097811 00000 n 0000109525 00000 n 0000109635 00000 n 0000111664 00000 n 0000111774 00000 n 0000114383 00000 n 0000114493 00000 n 0000116935 00000 n 0000117045 00000 n 0000119879 00000 n 0000120005 00000 n 0000120034 00000 n 0000385686 00000 n 0000120172 00000 n 0000123489 00000 n 0000123599 00000 n 0000126440 00000 n 0000126550 00000 n 0000129775 00000 n 0000129885 00000 n 0000132507 00000 n 0000132617 00000 n 0000135136 00000 n 0000135246 00000 n 0000137857 00000 n 0000137967 00000 n 0000140257 00000 n 0000140367 00000 n 0000143241 00000 n 0000143351 00000 n 0000145955 00000 n 0000146065 00000 n 0000147801 00000 n 0000147911 00000 n 0000150530 00000 n 0000150640 00000 n 0000153401 00000 n 0000153511 00000 n 0000156328 00000 n 0000156438 00000 n 0000159710 00000 n 0000159836 00000 n 0000159865 00000 n 0000160100 00000 n 0000160586 00000 n 0000160696 00000 n 0000163530 00000 n 0000163640 00000 n 0000165192 00000 n 0000165302 00000 n 0000167253 00000 n 0000167363 00000 n 0000170218 00000 n 0000170344 00000 n 0000170373 00000 n 0000170594 00000 n 0000173756 00000 n 0000173882 00000 n 0000173911 00000 n 0000174135 00000 n 0000174379 00000 n 0000174489 00000 n 0000176354 00000 n 0000176464 00000 n 0000178743 00000 n 0000178853 00000 n 0000179583 00000 n 0000179693 00000 n 0000179984 00000 n 0000180094 00000 n 0000182019 00000 n 0000182129 00000 n 0000183931 00000 n 0000184041 00000 n 0000186963 00000 n 0000187543 00000 n 0000187653 00000 n 0000190244 00000 n 0000190354 00000 n 0000192171 00000 n 0000192281 00000 n 0000192531 00000 n 0000192641 00000 n 0000194952 00000 n 0000195062 00000 n 0000197653 00000 n 0000197763 00000 n 0000200094 00000 n 0000200204 00000 n 0000202728 00000 n 0000202838 00000 n 0000206043 00000 n 0000206153 00000 n 0000208005 00000 n 0000208115 00000 n 0000210860 00000 n 0000210970 00000 n 0000214279 00000 n 0000214389 00000 n 0000217881 00000 n 0000218007 00000 n 0000218036 00000 n 0000218174 00000 n 0000221389 00000 n 0000221499 00000 n 0000222522 00000 n 0000222632 00000 n 0000222923 00000 n 0000223033 00000 n 0000224783 00000 n 0000224909 00000 n 0000224938 00000 n 0000225076 00000 n 0000228163 00000 n 0000228273 00000 n 0000231637 00000 n 0000231747 00000 n 0000234789 00000 n 0000234899 00000 n 0000237681 00000 n 0000237807 00000 n 0000237844 00000 n 0000237981 00000 n 0000238115 00000 n 0000241374 00000 n 0000241500 00000 n 0000241529 00000 n 0000241663 00000 n 0000244802 00000 n 0000244912 00000 n 0000248099 00000 n 0000248209 00000 n 0000251593 00000 n 0000251703 00000 n 0000254422 00000 n 0000254532 00000 n 0000257408 00000 n 0000257518 00000 n 0000261155 00000 n 0000261265 00000 n 0000263614 00000 n 0000263740 00000 n 0000263769 00000 n 0000263968 00000 n 0000264223 00000 n 0000264333 00000 n 0000266977 00000 n 0000267103 00000 n 0000267132 00000 n 0000267319 00000 n 0000269718 00000 n 0000269844 00000 n 0000269873 00000 n 0000270125 00000 n 0000272326 00000 n 0000272436 00000 n 0000274126 00000 n 0000274236 00000 n 0000276020 00000 n 0000276130 00000 n 0000278469 00000 n 0000278579 00000 n 0000279960 00000 n 0000280070 00000 n 0000280318 00000 n 0000280428 00000 n 0000282593 00000 n 0000282719 00000 n 0000282764 00000 n 0000282904 00000 n 0000283086 00000 n 0000283265 00000 n 0000285184 00000 n 0000285294 00000 n 0000287643 00000 n 0000287753 00000 n 0000291028 00000 n 0000291154 00000 n 0000291191 00000 n 0000291370 00000 n 0000291505 00000 n 0000292875 00000 n 0000293001 00000 n 0000293046 00000 n 0000293184 00000 n 0000293323 00000 n 0000293459 00000 n 0000293713 00000 n 0000293823 00000 n 0000295973 00000 n 0000296083 00000 n 0000298149 00000 n 0000298259 00000 n 0000300554 00000 n 0000300664 00000 n 0000302830 00000 n 0000302940 00000 n 0000304400 00000 n 0000304510 00000 n 0000304623 00000 n 0000385753 00000 n 0000385807 00000 n 0000304733 00000 n 0000385873 00000 n 0000305001 00000 n 0000305202 00000 n 0000305344 00000 n 0000305575 00000 n 0000305815 00000 n 0000306110 00000 n 0000306353 00000 n 0000306638 00000 n 0000307062 00000 n 0000385940 00000 n 0000307652 00000 n 0000386008 00000 n 0000307955 00000 n 0000386076 00000 n 0000308261 00000 n 0000308581 00000 n 0000386143 00000 n 0000308898 00000 n 0000386211 00000 n 0000309361 00000 n 0000386279 00000 n 0000309875 00000 n 0000310198 00000 n 0000310440 00000 n 0000310623 00000 n 0000310835 00000 n 0000311175 00000 n 0000311435 00000 n 0000386347 00000 n 0000311763 00000 n 0000386415 00000 n 0000311873 00000 n 0000386483 00000 n 0000312033 00000 n 0000386551 00000 n 0000312194 00000 n 0000386619 00000 n 0000312348 00000 n 0000312664 00000 n 0000386687 00000 n 0000312874 00000 n 0000386755 00000 n 0000313050 00000 n 0000386823 00000 n 0000313301 00000 n 0000386891 00000 n 0000313558 00000 n 0000313785 00000 n 0000386959 00000 n 0000314071 00000 n 0000387027 00000 n 0000314229 00000 n 0000387095 00000 n 0000314450 00000 n 0000387162 00000 n 0000314692 00000 n 0000387230 00000 n 0000314942 00000 n 0000387298 00000 n 0000315121 00000 n 0000387366 00000 n 0000315426 00000 n 0000315700 00000 n 0000387434 00000 n 0000315922 00000 n 0000316011 00000 n 0000387502 00000 n 0000316259 00000 n 0000387570 00000 n 0000316464 00000 n 0000387638 00000 n 0000316685 00000 n 0000387706 00000 n 0000316901 00000 n 0000317152 00000 n 0000317451 00000 n 0000317634 00000 n 0000387774 00000 n 0000317968 00000 n 0000387842 00000 n 0000318113 00000 n 0000318223 00000 n 0000318432 00000 n 0000387910 00000 n 0000318647 00000 n 0000387978 00000 n 0000318855 00000 n 0000388045 00000 n 0000319089 00000 n 0000319294 00000 n 0000388113 00000 n 0000319581 00000 n 0000388181 00000 n 0000319721 00000 n 0000388249 00000 n 0000319876 00000 n 0000388317 00000 n 0000320049 00000 n 0000388385 00000 n 0000320210 00000 n 0000388453 00000 n 0000320413 00000 n 0000388521 00000 n 0000320616 00000 n 0000388589 00000 n 0000320789 00000 n 0000388657 00000 n 0000320956 00000 n 0000388725 00000 n 0000321141 00000 n 0000388793 00000 n 0000321326 00000 n 0000388861 00000 n 0000321535 00000 n 0000388928 00000 n 0000321756 00000 n 0000388996 00000 n 0000321953 00000 n 0000322129 00000 n 0000322388 00000 n 0000322636 00000 n 0000322819 00000 n 0000323063 00000 n 0000389063 00000 n 0000323391 00000 n 0000389131 00000 n 0000323606 00000 n 0000389199 00000 n 0000323807 00000 n 0000323987 00000 n 0000389267 00000 n 0000324214 00000 n 0000389335 00000 n 0000324448 00000 n 0000389403 00000 n 0000324726 00000 n 0000325012 00000 n 0000325280 00000 n 0000325511 00000 n 0000389471 00000 n 0000325833 00000 n 0000389539 00000 n 0000326061 00000 n 0000326283 00000 n 0000326522 00000 n 0000326826 00000 n 0000389607 00000 n 0000327105 00000 n 0000389675 00000 n 0000327370 00000 n 0000389742 00000 n 0000327668 00000 n 0000389810 00000 n 0000327896 00000 n 0000328084 00000 n 0000328346 00000 n 0000389878 00000 n 0000328673 00000 n 0000389946 00000 n 0000328866 00000 n 0000390014 00000 n 0000329074 00000 n 0000390082 00000 n 0000329258 00000 n 0000329457 00000 n 0000390150 00000 n 0000329754 00000 n 0000390218 00000 n 0000329993 00000 n 0000390286 00000 n 0000330290 00000 n 0000390353 00000 n 0000330515 00000 n 0000330832 00000 n 0000331064 00000 n 0000390421 00000 n 0000331323 00000 n 0000390489 00000 n 0000331516 00000 n 0000331721 00000 n 0000331981 00000 n 0000332164 00000 n 0000332421 00000 n 0000332690 00000 n 0000332988 00000 n 0000390557 00000 n 0000333288 00000 n 0000390625 00000 n 0000333503 00000 n 0000390692 00000 n 0000333834 00000 n 0000334139 00000 n 0000390760 00000 n 0000334409 00000 n 0000390828 00000 n 0000334776 00000 n 0000335144 00000 n 0000390896 00000 n 0000335481 00000 n 0000390964 00000 n 0000335614 00000 n 0000391032 00000 n 0000335762 00000 n 0000391100 00000 n 0000335904 00000 n 0000391168 00000 n 0000336040 00000 n 0000391236 00000 n 0000336194 00000 n 0000391304 00000 n 0000336372 00000 n 0000391372 00000 n 0000336550 00000 n 0000391440 00000 n 0000336752 00000 n 0000336962 00000 n 0000337263 00000 n 0000337447 00000 n 0000337732 00000 n 0000337975 00000 n 0000338159 00000 n 0000338418 00000 n 0000391508 00000 n 0000338699 00000 n 0000391576 00000 n 0000338898 00000 n 0000339061 00000 n 0000391644 00000 n 0000339427 00000 n 0000339681 00000 n 0000391712 00000 n 0000339995 00000 n 0000391780 00000 n 0000340200 00000 n 0000340410 00000 n 0000340664 00000 n 0000340848 00000 n 0000341221 00000 n 0000391847 00000 n 0000341537 00000 n 0000391915 00000 n 0000341753 00000 n 0000341975 00000 n 0000342185 00000 n 0000391983 00000 n 0000342464 00000 n 0000392051 00000 n 0000342657 00000 n 0000342873 00000 n 0000343104 00000 n 0000343288 00000 n 0000343521 00000 n 0000392119 00000 n 0000343844 00000 n 0000392187 00000 n 0000344002 00000 n 0000344160 00000 n 0000392255 00000 n 0000344454 00000 n 0000392323 00000 n 0000344688 00000 n 0000392391 00000 n 0000344984 00000 n 0000392459 00000 n 0000345262 00000 n 0000392527 00000 n 0000345610 00000 n 0000392595 00000 n 0000345846 00000 n 0000392663 00000 n 0000346161 00000 n 0000346520 00000 n 0000392731 00000 n 0000346713 00000 n 0000392798 00000 n 0000346915 00000 n 0000392865 00000 n 0000347134 00000 n 0000347286 00000 n 0000392933 00000 n 0000347564 00000 n 0000393001 00000 n 0000347851 00000 n 0000393069 00000 n 0000348169 00000 n 0000393137 00000 n 0000348338 00000 n 0000348560 00000 n 0000348855 00000 n 0000349044 00000 n 0000349288 00000 n 0000393205 00000 n 0000349580 00000 n 0000393273 00000 n 0000349868 00000 n 0000393341 00000 n 0000350099 00000 n 0000350315 00000 n 0000393409 00000 n 0000350679 00000 n 0000393477 00000 n 0000350878 00000 n 0000393545 00000 n 0000351156 00000 n 0000351367 00000 n 0000351588 00000 n 0000393613 00000 n 0000351922 00000 n 0000393681 00000 n 0000352264 00000 n 0000393749 00000 n 0000352674 00000 n 0000352969 00000 n 0000353328 00000 n 0000353517 00000 n 0000353815 00000 n 0000354164 00000 n 0000354468 00000 n 0000393817 00000 n 0000354757 00000 n 0000393885 00000 n 0000355079 00000 n 0000393952 00000 n 0000355474 00000 n 0000355886 00000 n 0000356140 00000 n 0000356329 00000 n 0000356668 00000 n 0000356912 00000 n 0000357278 00000 n 0000357575 00000 n 0000394020 00000 n 0000357978 00000 n 0000394088 00000 n 0000358182 00000 n 0000394156 00000 n 0000358430 00000 n 0000358646 00000 n 0000394224 00000 n 0000359054 00000 n 0000394292 00000 n 0000359339 00000 n 0000394360 00000 n 0000359593 00000 n 0000394428 00000 n 0000359854 00000 n 0000360058 00000 n 0000394496 00000 n 0000360519 00000 n 0000394564 00000 n 0000360740 00000 n 0000394632 00000 n 0000360994 00000 n 0000394700 00000 n 0000361230 00000 n 0000361534 00000 n 0000394768 00000 n 0000361935 00000 n 0000394836 00000 n 0000362151 00000 n 0000362444 00000 n 0000362722 00000 n 0000362911 00000 n 0000363248 00000 n 0000394904 00000 n 0000363529 00000 n 0000394972 00000 n 0000363692 00000 n 0000395040 00000 n 0000363888 00000 n 0000364092 00000 n 0000364301 00000 n 0000395108 00000 n 0000364657 00000 n 0000395176 00000 n 0000364814 00000 n 0000364971 00000 n 0000395244 00000 n 0000365312 00000 n 0000395312 00000 n 0000365452 00000 n 0000395380 00000 n 0000365689 00000 n 0000365869 00000 n 0000366110 00000 n 0000366299 00000 n 0000366664 00000 n 0000367023 00000 n 0000367327 00000 n 0000367577 00000 n 0000367868 00000 n 0000368085 00000 n 0000368353 00000 n 0000368542 00000 n 0000395448 00000 n 0000368858 00000 n 0000395516 00000 n 0000369151 00000 n 0000395584 00000 n 0000369482 00000 n 0000395652 00000 n 0000369821 00000 n 0000395720 00000 n 0000370121 00000 n 0000395788 00000 n 0000370504 00000 n 0000395856 00000 n 0000370786 00000 n 0000395924 00000 n 0000371059 00000 n 0000371228 00000 n 0000395992 00000 n 0000371532 00000 n 0000396060 00000 n 0000371777 00000 n 0000396128 00000 n 0000372091 00000 n 0000396196 00000 n 0000372254 00000 n 0000396264 00000 n 0000372497 00000 n 0000396332 00000 n 0000372660 00000 n 0000396400 00000 n 0000372850 00000 n 0000396468 00000 n 0000373045 00000 n 0000373220 00000 n 0000396536 00000 n 0000373502 00000 n 0000396604 00000 n 0000373724 00000 n 0000396672 00000 n 0000373883 00000 n 0000396739 00000 n 0000374049 00000 n 0000396807 00000 n 0000374221 00000 n 0000374414 00000 n 0000374823 00000 n 0000374936 00000 n 0000375045 00000 n 0000375161 00000 n 0000375272 00000 n 0000375386 00000 n 0000375493 00000 n 0000375605 00000 n trailer << /Size 979 /Root 2 0 R /Info 4 0 R >> startxref 396874 %%EOF libspring-webflow-2.0-java-2.0.9.RELEASE.orig/docs/spring-webflow-reference/htmlsingle/0000755000000000000000000000000011360615630025276 5ustar ././@LongLink0000000000000000000000000000016500000000000011567 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/docs/spring-webflow-reference/htmlsingle/spring-webflow-reference.htmllibspring-webflow-2.0-java-2.0.9.RELEASE.orig/docs/spring-webflow-reference/htmlsingle/spring-webflo0000644000000000000000000142606511360615630030015 0ustar Spring Web Flow Reference Guide

Spring Web Flow Reference Guide

Keith Donald

Erwin Vervaet

Jeremy Grelle

Scott Andrews

Rossen Stoyanchev

Spring Web Flow

Version 2.0.9

Copies of this document may be made for your own use and for distribution to others, provided that you do not charge any fee for such copies and further provided that each copy contains this Copyright Notice, whether distributed in print or electronically.


Table of Contents

Preface
1. Introduction
1.1. What this guide covers
1.2. What Web Flow requires to run
1.3. Where to get support
1.4. Where to follow development
1.5. How to access Web Flow artifacts from Maven Central
1.6. How to access Web Flow artifacts from the SpringSource Bundle Repository
1.7. How to access nightly builds
2. Defining Flows
2.1. Introduction
2.2. What is a flow?
2.3. What is the makeup of a typical flow?
2.4. How are flows authored?
2.5. Essential language elements
2.6. Actions
2.7. Input/Output Mapping
2.8. Variables
2.9. Calling subflows
3. Expression Language (EL)
3.1. Introduction
3.2. Supported EL implementations
3.3. EL portability
3.4. EL usage
3.5. Special EL variables
3.6. Scope searching algorithm
4. Rendering views
4.1. Introduction
4.2. Defining view states
4.3. Specifying view identifiers
4.4. View scope
4.5. Executing render actions
4.6. Binding to a model
4.7. Performing type conversion
4.8. Suppressing binding
4.9. Specifying bindings explicitly
4.10. Validating a model
4.11. Suppressing validation
4.12. Executing view transitions
4.13. Working with messages
4.14. Displaying popups
4.15. View backtracking
5. Executing actions
5.1. Introduction
5.2. Defining action states
5.3. Defining decision states
5.4. Action outcome event mappings
5.5. Action implementations
5.6. Action exceptions
5.7. Other Action execution examples
6. Flow Managed Persistence
6.1. Introduction
6.2. FlowScoped PersistenceContext
7. Securing Flows
7.1. Introduction
7.2. How do I secure a flow?
7.3. The secured element
7.4. The SecurityFlowExecutionListener
7.5. Configuring Spring Security
8. Flow Inheritance
8.1. Introduction
8.2. Is flow inheritance like Java inheritance?
8.3. Types of Flow Inheritance
8.4. Abstract flows
8.5. Inheritance Algorithm
9. System Setup
9.1. Introduction
9.2. webflow-config.xsd
9.3. Basic system configuration
9.4. flow-registry options
9.5. flow-executor options
10. Spring MVC Integration
10.1. Introduction
10.2. Configuring web.xml
10.3. Dispatching to flows
10.4. Implementing custom FlowHandlers
10.5. View Resolution
10.6. Signaling an event from a View
11. Spring JavaScript Quick Reference
11.1. Introduction
11.2. Serving Javascript Resources
11.3. Including Spring Javascript in a Page
11.4. Spring Javascript Decorations
11.5. Handling Ajax Requests
12. JSF Integration
12.1. Introduction
12.2. Spring-centric Integration Approach
12.3. Configuring web.xml
12.4. Configuring Web Flow to render JSF views
12.5. Configuring faces-config.xml
12.6. Replacing the JSF Managed Bean Facility
12.7. Handling JSF Events With Spring Web Flow
12.8. Enhancing The User Experience With Rich Web Forms
12.9. Third-Party Component Library Integration
13. Portlet Integration
13.1. Introduction
13.2. Configuring web.xml and portlet.xml
13.3. Configuring Spring
13.4. Portlet Views
13.5. Portlet Modes and Window States
13.6. Issues in a Portlet Environment
14. Testing flows
14.1. Introduction
14.2. Extending AbstractXmlFlowExecutionTests
14.3. Specifying the path to the flow to test
14.4. Registering flow dependencies
14.5. Testing flow startup
14.6. Testing flow event handling
14.7. Mocking a subflow
15. Upgrading from 1.0
15.1. Introduction
15.2. Flow Definition Language
15.3. Web Flow Configuration
15.4. New Web Flow Concepts
A. Flow Definition Language 1.0 to 2.0 Mappings

Preface

Many web applications require the same sequence of steps to execute in different contexts. Often these sequences are merely components of a larger task the user is trying to accomplish. Such a reusable sequence is called a flow.

Consider a typical shopping cart application. User registration, login, and cart checkout are all examples of flows that can be invoked from several places in this type of application.

Spring Web Flow is the module of Spring for implementing flows. The Web Flow engine plugs into the Spring Web MVC platform and provides declarative flow definition language. This reference guide shows you how to use and extend Spring Web Flow.

1. Introduction

1.1. What this guide covers

This guide covers all aspects of Spring Web Flow. It covers implementing flows in end-user applications and working with the feature set. It also covers extending the framework and the overall architectural model.

1.2. What Web Flow requires to run

Java 1.4 or higher

Spring 2.5.6 or higher

1.3. Where to get support

Professional from-the-source support on Spring Web Flow is available from SpringSource, the company behind Spring, and Ervacon, operated by Web Flow project co-founder Erwin Vervaet

1.4. Where to follow development

You can help make Web Flow best serve the needs of the Spring community by interacting with developers at the Spring Community Forums.

Report bugs and influence the Web Flow project roadmap using the Spring Issue Tracker.

Subscribe to the Spring Community Portal for the latest Spring news and announcements.

Visit the Web Flow Project Home for more resources on the project.

1.5. How to access Web Flow artifacts from Maven Central

Each jar in the Web Flow distribution is available in the Maven Central Repository. This allows you to easily integrate Web Flow into your application if you are already using Maven as the build system for your web development project.

To access Web Flow jars from Maven Central, declare the following dependencies in your pom:

<dependency>
    <groupId>org.springframework.webflow</groupId>
    <artifactId>spring-binding</artifactId>
    <version>2.0.9.RELEASE</version>
</dependency> 

<dependency>
    <groupId>org.springframework.webflow</groupId>
    <artifactId>spring-js</artifactId>
    <version>2.0.9.RELEASE</version>
</dependency> 

<dependency>
    <groupId>org.springframework.webflow</groupId>
    <artifactId>spring-webflow</artifactId>
    <version>2.0.9.RELEASE</version>
</dependency>

		

And if using JavaServerFaces:

<dependency>
    <groupId>org.springframework.webflow</groupId>
    <artifactId>spring-faces</artifactId>
    <version>2.0.9.RELEASE</version>
</dependency> 

		

1.6. How to access Web Flow artifacts from the SpringSource Bundle Repository

Each jar in the Web Flow distribution is also available in the SpringSource Enterprise Bundle Repository. Use this repository when you wish to run Spring Web Flow in an OSGi environment such as the SpringSource dm Server. All jars obtained from the SpringSource Bundle Repository are OSGi-ready.

Accessing Web Flow bundles with Maven

To access bundles using Maven, add the following repositories to your Maven pom:

<repository>
    <id>com.springsource.repository.bundles.release</id>
    <name>SpringSource Enterprise Bundle Repository - SpringSource Releases</name>
    <url>http://repository.springsource.com/maven/bundles/release</url>
</repository>

<repository>
    <id>com.springsource.repository.bundles.external</id>
    <name>SpringSource Enterprise Bundle Repository - External Releases</name>
    <url>http://repository.springsource.com/maven/bundles/external</url>
</repository>
			

Then declare the following dependencies:

<dependency>
    <groupId>org.springframework.webflow</groupId>
    <artifactId>org.springframework.binding</artifactId>
    <version>2.0.9.RELEASE</version>
</dependency> 

<dependency>
    <groupId>org.springframework.webflow</groupId>
    <artifactId>org.springframework.js</artifactId>
    <version>2.0.9.RELEASE</version>
</dependency> 

<dependency>
    <groupId>org.springframework.webflow</groupId>
    <artifactId>org.springframework.webflow</artifactId>
    <version>2.0.9.RELEASE</version>
</dependency>
			

And if using JavaServerFaces:

<dependency>
    <groupId>org.springframework.webflow</groupId>
    <artifactId>org.springframework.faces</artifactId>
    <version>2.0.9.RELEASE</version>
</dependency>
			

Note the Web Flow artifacts in the SpringSource Bundle Repository are indexed under different ids because their transitive dependencies are different than the Maven Central artifacts. The difference is the transitive jars such as commons-logging have been patched by SpringSource to add the metadata required to make them OSGi-compatible.

Accessing Web Flow bundles with Ivy

To access bundles using Ivy, add the following repositories to your Ivy config:

<url name="com.springsource.repository.bundles.release">
    <ivy pattern="http://repository.springsource.com/ivy/bundles/release/
                  [organisation]/[module]/[revision]/[artifact]-[revision].[ext]" />
    <artifact pattern="http://repository.springsource.com/ivy/bundles/release/
                       [organisation]/[module]/[revision]/[artifact]-[revision].[ext]" />
</url>

<url name="com.springsource.repository.bundles.external">
    <ivy pattern="http://repository.springsource.com/ivy/bundles/external/
                  [organisation]/[module]/[revision]/[artifact]-[revision].[ext]" />
    <artifact pattern="http://repository.springsource.com/ivy/bundles/external/
                       [organisation]/[module]/[revision]/[artifact]-[revision].[ext]" />
</url>
			

Then declare the following dependencies:

<dependency org="org.springframework.webflow" name="org.springframework.binding"
            rev="2.0.9.RELEASE" conf="compile->runtime" />
<dependency org="org.springframework.webflow" name="org.springframework.js"
            rev="2.0.9.RELEASE" conf="compile->runtime" />
<dependency org="org.springframework.webflow" name="org.springframework.webflow"
            rev="2.0.9.RELEASE" conf="compile->runtime" />
			

And if using JavaServerFaces:

<dependency org="org.springframework.webflow" name="org.springframework.faces"
            rev="2.0.9.RELEASE" conf="compile->runtime" />
			

Accessing the dm Server Web Flow library

A dm Server library for Web Flow is also available if you are deploying to a dm Server environment. Import this library in your MANIFEST.mf to automatically import all Web Flow bundles. To access the library, add the following repository:

<repository>
    <id>com.springsource.repository.libraries.release</id>
    <name>SpringSource Enterprise Bundle Repository - SpringSource Library Releases</name>
    <url>http://repository.springsource.com/maven/libraries/release</url>
</repository>	
			

And declare the following dependency:

<dependency>
    <groupId>org.springframework.webflow</groupId>
    <artifactId>org.springframework.webflow-library</artifactId>
    <type>libd</type>
    <version>2.0.9.RELEASE</version>
</dependency>	
			

1.7. How to access nightly builds

Nightly snapshots of Web Flow development branches are available using Maven, and distribution zips are also available for download. These snapshot builds are useful for testing out fixes you depend on in advance of the next release, and provide a convenient way for you to provide feedback about whether a fix meets your needs.

If using Maven, you may obtain snapshots from either the SpringSource-managed Maven Central-compatible repository or the SpringSource Enterprise Bundle Repository. Use the Maven Central-compatible snapshot repository when your project obtains its other open source dependencies from Maven Central. Use the Spring Source Enterprise Bundle Snapshot Repository when you wish to run Web Flow in an OSGi environment.

Accessing snapshots from the Maven-central compatible repository

Add the following repository your pom:

<repository>
    <id>org.springsource.maven.snapshot</id>
    <name>SpringSource Maven Central-compatible Snapshot Repository</name>
    <url>http://maven.springframework.org/snapshot</url>
</repository>
			

Then declare the following dependencies:

<dependency>
    <groupId>org.springframework.webflow</groupId>
    <artifactId>spring-binding</artifactId>
    <version>x.y.z.BUILD-SNAPSHOT</version>
</dependency> 

<dependency>
    <groupId>org.springframework.webflow</groupId>
    <artifactId>spring-js</artifactId>
    <version>x.y.z.BUILD-SNAPSHOT</version>
</dependency> 

<dependency>
    <groupId>org.springframework.webflow</groupId>
    <artifactId>spring-webflow</artifactId>
    <version>x.y.z.BUILD-SNAPSHOT</version>
</dependency>
			

And if using JavaServerFaces:

<dependency>
    <groupId>org.springframework.webflow</groupId>
    <artifactId>spring-faces</artifactId>
    <version>x.y.z.BUILD-SNAPSHOT</version>
</dependency>
			

Accessing snapshots from the SpringSource Enterprise Bundle Repository

Add the following repository your pom:

<repository>
    <id>com.springsource.repository.bundles.snapshot</id>
    <name>SpringSource Enterprise Bundle Snapshot Repository</name>
    <url>http://repository.springsource.com/maven/bundles/snapshot</url>
</repository>
			

Then declare the following dependencies:

<dependency>
    <groupId>org.springframework.webflow</groupId>
    <artifactId>org.springframework.binding</artifactId>
    <version>x.y.z.BUILD-SNAPSHOT</version>
</dependency> 

<dependency>
    <groupId>org.springframework.webflow</groupId>
    <artifactId>org.springframework.js</artifactId>
    <version>x.y.z.BUILD-SNAPSHOT</version>
</dependency> 

<dependency>
    <groupId>org.springframework.webflow</groupId>
    <artifactId>org.springframework.webflow</artifactId>
    <version>x.y.z.BUILD-SNAPSHOT</version>
</dependency>
			

And if using JavaServerFaces:

<dependency>
    <groupId>org.springframework.webflow</groupId>
    <artifactId>org.springframework.faces</artifactId>
    <version>x.y.z.BUILD-SNAPSHOT</version>
</dependency>
			

Accessing snapshot distribution archives

Get the snapshot zip with the most recent CI build number from the Web Flow snapshot download area.

2. Defining Flows

2.1. Introduction

This chapter begins the Users Section. It shows how to implement flows using the flow definition language. By the end of this chapter you should have a good understanding of language constructs, and be capable of authoring a flow definition.

2.2. What is a flow?

A flow encapsulates a reusable sequence of steps that can execute in different contexts. Below is a Garrett Information Architecture diagram illustrating a reference to a flow that encapsulates the steps of a hotel booking process:

Site Map illustrating a reference to a flow

2.3. What is the makeup of a typical flow?

In Spring Web Flow, a flow consists of a series of steps called "states". Entering a state typically results in a view being displayed to the user. On that view, user events occur that are handled by the state. These events can trigger transitions to other states which result in view navigations.

The example below shows the structure of the book hotel flow referenced in the previous diagram:

Flow diagram

2.4. How are flows authored?

Flows are authored by web application developers using a simple XML-based flow definition language. The next steps of this guide will walk you through the elements of this language.

2.5. Essential language elements

flow

Every flow begins with the following root element:

<?xml version="1.0" encoding="UTF-8"?>
<flow xmlns="http://www.springframework.org/schema/webflow"
      xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
      xsi:schemaLocation="http://www.springframework.org/schema/webflow
                          http://www.springframework.org/schema/webflow/spring-webflow-2.0.xsd">

</flow>
			

All states of the flow are defined within this element. The first state defined becomes the flow's starting point.

view-state

Use the view-state element to define a step of the flow that renders a view:

<view-state id="enterBookingDetails" />
			

By convention, a view-state maps its id to a view template in the directory where the flow is located. For example, the state above might render /WEB-INF/hotels/booking/enterBookingDetails.xhtml if the flow itself was located in the /WEB-INF/hotels/booking directory.

transition

Use the transition element to handle events that occur within a state:

<view-state id="enterBookingDetails">
    <transition on="submit" to="reviewBooking" />
</view-state>
			

These transitions drive view navigations.

end-state

Use the end-state element to define a flow outcome:

<end-state id="bookingCancelled" />
			

When a flow transitions to a end-state it terminates and the outcome is returned.

Checkpoint: Essential language elements

With the three elements view-state, transition, and end-state, you can quickly express your view navigation logic. Teams often do this before adding flow behaviors so they can focus on developing the user interface of the application with end users first. Below is a sample flow that implements its view navigation logic using these elements:

<flow xmlns="http://www.springframework.org/schema/webflow"
      xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
      xsi:schemaLocation="http://www.springframework.org/schema/webflow
                          http://www.springframework.org/schema/webflow/spring-webflow-2.0.xsd">

    <view-state id="enterBookingDetails">
        <transition on="submit" to="reviewBooking" />
    </view-state>
	
    <view-state id="reviewBooking">
        <transition on="confirm" to="bookingConfirmed" />
        <transition on="revise" to="enterBookingDetails" />
        <transition on="cancel" to="bookingCancelled" />
    </view-state>
	
    <end-state id="bookingConfirmed" />

    <end-state id="bookingCancelled" />
		
</flow>	
			

2.6. Actions

Most flows need to express more than just view navigation logic. Typically they also need to invoke business services of the application or other actions.

Within a flow, there are several points where you can execute actions. These points are:

  • On flow start

  • On state entry

  • On view render

  • On transition execution

  • On state exit

  • On flow end

Actions are defined using a concise expression language. Spring Web Flow uses the Unified EL by default. The next few sections will cover the essential language elements for defining actions.

evaluate

The action element you will use most often is the evaluate element. Use the evaluate element to evaluate an expression at a point within your flow. With this single tag you can invoke methods on Spring beans or any other flow variable. For example:

<evaluate expression="entityManager.persist(booking)" />		
			

Assigning an evaluate result

If the expression returns a value, that value can be saved in the flow's data model called flowScope:

<evaluate expression="bookingService.findHotels(searchCriteria)" result="flowScope.hotels" />
				

Converting an evaluate result

If the expression returns a value that may need to be converted, specify the desired type using the result-type attribute:

<evaluate expression="bookingService.findHotels(searchCriteria)" result="flowScope.hotels"
          result-type="dataModel"/>
				

Checkpoint: flow actions

Now review the sample booking flow with actions added:

<flow xmlns="http://www.springframework.org/schema/webflow"
      xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
      xsi:schemaLocation="http://www.springframework.org/schema/webflow
                          http://www.springframework.org/schema/webflow/spring-webflow-2.0.xsd">

    <input name="hotelId" />

    <on-start>
        <evaluate expression="bookingService.createBooking(hotelId, currentUser.name)" 
                  result="flowScope.booking" />
    </on-start>

    <view-state id="enterBookingDetails">
        <transition on="submit" to="reviewBooking" />
    </view-state>
	
    <view-state id="reviewBooking">
        <transition on="confirm" to="bookingConfirmed" />
        <transition on="revise" to="enterBookingDetails" />
        <transition on="cancel" to="bookingCancelled" />
    </view-state>
	
    <end-state id="bookingConfirmed" />

    <end-state id="bookingCancelled" />
		
</flow>	
			

This flow now creates a Booking object in flow scope when it starts. The id of the hotel to book is obtained from a flow input attribute.

2.7. Input/Output Mapping

Each flow has a well-defined input/output contract. Flows can be passed input attributes when they start, and can return output attributes when they end. In this respect, calling a flow is conceptually similar to calling a method with the following signature:

FlowOutcome flowId(Map<String, Object> inputAttributes);
		

... where a FlowOutcome has the following signature:

public interface FlowOutcome {
   public String getName();		        
   public Map<String, Object> getOutputAttributes();
}
		

input

Use the input element to declare a flow input attribute:

<input name="hotelId" />
			

Input values are saved in flow scope under the name of the attribute. For example, the input above would be saved under the name hotelId.

Declaring an input type

Use the type attribute to declare the input attribute's type:

<input name="hotelId" type="long" />
				

If an input value does not match the declared type, a type conversion will be attempted.

Assigning an input value

Use the value attribute to specify an expression to assign the input value to:

<input name="hotelId" value="flowScope.myParameterObject.hotelId" />
				

If the expression's value type can be determined, that metadata will be used for type coersion if no type attribute is specified.

Marking an input as required

Use the required attribute to enforce the input is not null or empty:

<input name="hotelId" type="long" value="flowScope.hotelId" required="true" />
				

output

Use the output element to declare a flow output attribute. Output attributes are declared within end-states that represent specific flow outcomes.

<end-state id="bookingConfirmed">
    <output name="bookingId" />  
</end-state>
			

Output values are obtained from flow scope under the name of the attribute. For example, the output above would be assigned the value of the bookingId variable.

Specifying the source of an output value

Use the value attribute to denote a specific output value expression:

<output name="confirmationNumber" value="booking.confirmationNumber" />  
				

Checkpoint: input/output mapping

Now review the sample booking flow with input/output mapping:

<flow xmlns="http://www.springframework.org/schema/webflow"
      xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
      xsi:schemaLocation="http://www.springframework.org/schema/webflow
                          http://www.springframework.org/schema/webflow/spring-webflow-2.0.xsd">

    <input name="hotelId" />

    <on-start>
        <evaluate expression="bookingService.createBooking(hotelId, currentUser.name)" 
                  result="flowScope.booking" />
    </on-start>

    <view-state id="enterBookingDetails">
        <transition on="submit" to="reviewBooking" />
    </view-state>
	
    <view-state id="reviewBooking">
        <transition on="confirm" to="bookingConfirmed" />
        <transition on="revise" to="enterBookingDetails" />
        <transition on="cancel" to="bookingCancelled" />
    </view-state>
	
    <end-state id="bookingConfirmed" >
        <output name="bookingId" value="booking.id"/>
    </end-state>

    <end-state id="bookingCancelled" />
		
</flow>	
			

The flow now accepts a hotelId input attribute and returns a bookingId output attribute when a new booking is confirmed.

2.8. Variables

A flow may declare one or more instance variables. These variables are allocated when the flow starts. Any @Autowired transient references the variable holds are also rewired when the flow resumes.

var

Use the var element to declare a flow variable:

<var name="searchCriteria" class="com.mycompany.myapp.hotels.search.SearchCriteria"/>
			

Make sure your variable's class implements java.io.Serializable, as the instance state is saved between flow requests.

2.9. Calling subflows

A flow may call another flow as a subflow. The flow will wait until the subflow returns, then respond to the subflow outcome.

subflow-state

Use the subflow-state element to call another flow as a subflow:

<subflow-state id="addGuest" subflow="createGuest">
    <transition on="guestCreated" to="reviewBooking">
        <evaluate expression="booking.guests.add(currentEvent.attributes.guest)" />  
    </transition>
    <transition on="creationCancelled" to="reviewBooking" />
</subflow-state>
			

The above example calls the createGuest flow, then waits for it to return. When the flow returns with a guestCreated outcome, the new guest is added to the booking's guest list.

Passing a subflow input

Use the input element to pass input to the subflow:

<subflow-state id="addGuest" subflow="createGuest">
    <input name="booking" />
    <transition to="reviewBooking" />
</subflow-state>
				

Mapping subflow output

Simply refer to a subflow output attribute by its name within a outcome transition:

<transition on="guestCreated" to="reviewBooking">
    <evaluate expression="booking.guests.add(currentEvent.attributes.guest)" />  
</transition>
				

In the above example, guest is the name of an output attribute returned by the guestCreated outcome.

Checkpoint: calling subflows

Now review the sample booking flow calling a subflow:

<flow xmlns="http://www.springframework.org/schema/webflow"
      xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
      xsi:schemaLocation="http://www.springframework.org/schema/webflow
                          http://www.springframework.org/schema/webflow/spring-webflow-2.0.xsd">

    <input name="hotelId" />

    <on-start>
        <evaluate expression="bookingService.createBooking(hotelId, currentUser.name)" 
                  result="flowScope.booking" />
    </on-start>

    <view-state id="enterBookingDetails">
        <transition on="submit" to="reviewBooking" />
    </view-state>

    <view-state id="reviewBooking">
        <transition on="addGuest" to="addGuest" />
        <transition on="confirm" to="bookingConfirmed" />
        <transition on="revise" to="enterBookingDetails" />
        <transition on="cancel" to="bookingCancelled" />
    </view-state>

    <subflow-state id="addGuest" subflow="createGuest">
        <transition on="guestCreated" to="reviewBooking">
            <evaluate expression="booking.guests.add(currentEvent.attributes.guest)" />  
        </transition>
        <transition on="creationCancelled" to="reviewBooking" />
    </subflow-state>
		
    <end-state id="bookingConfirmed" >
        <output name="bookingId" value="booking.id" />
    </end-state>

    <end-state id="bookingCancelled" />
		
</flow>		
			

The flow now calls a createGuest subflow to add a new guest to the guest list.

3. Expression Language (EL)

3.1. Introduction

Web Flow uses EL to access its data model and invoke actions. This chapter will familiarize you with the EL syntax, and special EL variables you can reference from your flow definition.

3.2. Supported EL implementations

Unified EL

Web Flow attempts to use the Unified EL by default. jboss-el is currently the default EL implementation. When found in your classpath along with the el-api, it will be used automatically. You can find the JBoss EL jar in the SpringSource Bundle Repository.

[Note]Note
The el-api dependency is typically provided by your web container. Tomcat 6 includes it, for example.

OGNL

OGNL is the other EL supported by Web Flow 2. OGNL is the EL most familiar to Web Flow version 1.0 users. To use ognl, simply include ognl in your classpath instead of jboss-el. Please refer to the OGNL language guide for specifics on its EL syntax.

3.3. EL portability

In general, you will find the Unified EL and OGNL have a very similar syntax. For basic variable resolution, property access, and method invocation the syntax is identical. We recommend adhering to Unified EL syntax whenever possible, and only relying on proprietary EL features when needed.

3.4. EL usage

EL is used for many things within a flow, including:

  1. Accessing data provided by the client, such as flow input attributes and request parameters.

  2. Accessing internal data structures such as flowScope.

  3. Invoking methods on Spring beans.

  4. Resolving constructs such as state transition criteria, subflow ids, and view names.

Views rendered by flows typically access flow data structures using EL as well.

Expression types

There are basically two types of expressions in Web Flow.

Standard eval expressions

The first, and most common, type of expression, is the standard eval expression. Such expressions are dynamically evaluated by the EL and should not be enclosed in delimiters like ${} or #{}. For example:

<evaluate expression="searchCriteria.nextPage()" />
				

The expression above is a standard expression that invokes the nextPage method on the searchCriteria variable when evaluated. Attempting to enclose this expression in special eval delimiters like ${} or #{} will result in an IllegalArgumentException.

[Note]Note
We view use of special eval delimiters as redundant in this context, as the only acceptable value for the expression attribute is a single eval expression string.

Template expressions

The second type of expression is a "template" expression. Such expressions allow a mixing of literal text with one or more eval blocks. Each eval block is explictly delimited with the ${} delimiters. For example:

<view-state id="error" view="error-${externalContext.locale}.xhtml" />
				

The expression above is a template expression. The result of evaluation will be a string that concatenates the literal text error- with the result of evaluating externalContext.locale. As you can see, explicit delimiters are necessary here to demarcate eval blocks within the template.

See the Web Flow XML schema for a complete listing of the XML attributes that accept standard expressions and template expressions.

3.5. Special EL variables

There are several implicit variables you may reference from within a flow. These variables are discussed in this section.

flowScope

Use flowScope to assign a flow variable. Flow scope gets allocated when a flow starts and destroyed when the flow ends. With the default implementation, any objects stored in flow scope need to be Serializable.

<evaluate expression="searchService.findHotel(hotelId)" result="flowScope.hotel" />
			

viewScope

Use viewScope to assign a view variable. View scope gets allocated when a view-state enters and destroyed when the state exits. View scope is only referenceable from within a view-state. With the default implementation, any objects stored in view scope need to be Serializable.

<on-render>
    <evaluate expression="searchService.findHotels(searchCriteria)" result="viewScope.hotels"
              result-type="dataModel" />
</on-render>
			

requestScope

Use requestScope to assign a request variable. Request scope gets allocated when a flow is called and destroyed when the flow returns.

<set name="requestScope.hotelId" value="requestParameters.id" type="long" />
			

flashScope

Use flashScope to assign a flash variable. Flash scope gets allocated when a flow starts, cleared after every view render, and destroyed when the flow ends. With the default implementation, any objects stored in flash scope need to be Serializable.

<set name="flashScope.statusMessage" value="'Booking confirmed'" />				
			

conversationScope

Use conversationScope to assign a conversation variable. Conversation scope gets allocated when a top-level flow starts and destroyed when the top-level flow ends. Conversation scope is shared by a top-level flow and all of its subflows. With the default implementation, conversation scoped objects are stored in the HTTP session and should generally be Serializable to account for typical session replication.

<evaluate expression="searchService.findHotel(hotelId)" result="conversationScope.hotel" />
			

requestParameters

Use requestParameters to access a client request parameter:

<set name="requestScope.hotelId" value="requestParameters.id" type="long" />
			

currentEvent

Use currentEvent to access attributes of the current Event:

<evaluate expression="booking.guests.add(currentEvent.attributes.guest)" />
			

currentUser

Use currentUser to access the authenticated Principal:

<evaluate expression="bookingService.createBooking(hotelId, currentUser.name)" 
          result="flowScope.booking" />
			

messageContext

Use messageContext to access a context for retrieving and creating flow execution messages, including error and success messages. See the MessageContext Javadocs for more information.

<evaluate expression="bookingValidator.validate(booking, messageContext)" />
			

resourceBundle

Use resourceBundle to access a message resource.

<set name="flashScope.successMessage" value="resourceBundle.successMessage" />
			

flowRequestContext

Use flowRequestContext to access the RequestContext API, which is a representation of the current flow request. See the API Javadocs for more information.

flowExecutionContext

Use flowExecutionContext to access the FlowExecutionContext API, which is a representation of the current flow state. See the API Javadocs for more information.

flowExecutionUrl

Use flowExecutionUrl to access the context-relative URI for the current flow execution view-state.

externalContext

Use externalContext to access the client environment, including user session attributes. See the ExternalContext API JavaDocs for more information.

<evaluate expression="searchService.suggestHotels(externalContext.sessionMap.userProfile)" 
          result="viewScope.hotels" />
			

3.6. Scope searching algorithm

When assigning a variable in one of the flow scopes, referencing that scope is required. For example:

<set name="requestScope.hotelId" value="requestParameters.id" type="long" />
		

When simply accessing a variable in one of the scopes, referencing the scope is optional. For example:

<evaluate expression="entityManager.persist(booking)" />
		

If no scope is specified, like in the use of booking above, a scope searching algorithm will be employed. The algorithm will look in request, flash, view, flow, and conversation scope for the variable. If no such variable is found, an EvaluationException will be thrown.

4. Rendering views

4.1. Introduction

This chapter shows you how to use the view-state element to render views within a flow.

4.2. Defining view states

Use the view-state element to define a step of the flow that renders a view and waits for a user event to resume:

<view-state id="enterBookingDetails">
    <transition on="submit" to="reviewBooking" />
</view-state>
		

By convention, a view-state maps its id to a view template in the directory where the flow is located. For example, the state above might render /WEB-INF/hotels/booking/enterBookingDetails.xhtml if the flow itself was located in the /WEB-INF/hotels/booking directory.

Below is a sample directory structure showing views and other resources like message bundles co-located with their flow definition:

Flow Packaging

4.3. Specifying view identifiers

Use the view attribute to specify the id of the view to render explicitly.

Flow relative view ids

The view id may be a relative path to view resource in the flow's working directory:

<view-state id="enterBookingDetails" view="bookingDetails.xhtml">
			

Absolute view ids

The view id may be a absolute path to a view resource in the webapp root directory:

<view-state id="enterBookingDetails" view="/WEB-INF/hotels/booking/bookingDetails.xhtml">
			

Logical view ids

With some view frameworks, such as Spring MVC's view framework, the view id may also be a logical identifier resolved by the framework:

<view-state id="enterBookingDetails" view="bookingDetails">
			

See the Spring MVC integration section for more information on how to integrate with the MVC ViewResolver infrastructure.

4.4. View scope

A view-state allocates a new viewScope when it enters. This scope may be referenced within the view-state to assign variables that should live for the duration of the state. This scope is useful for manipulating objects over a series of requests from the same view, often Ajax requests. A view-state destroys its viewScope when it exits.

Allocating view variables

Use the var tag to declare a view variable. Like a flow variable, any @Autowired references are automatically restored when the view state resumes.

<var name="searchCriteria" class="com.mycompany.myapp.hotels.SearchCriteria" />
			

Assigning a viewScope variable

Use the on-render tag to assign a variable from an action result before the view renders:

<on-render>
    <evaluate expression="bookingService.findHotels(searchCriteria)" result="viewScope.hotels" />
</on-render>
			

Manipulating objects in view scope

Objects in view scope are often manipulated over a series of requests from the same view. The following example pages through a search results list. The list is updated in view scope before each render. Asynchronous event handlers modify the current data page, then request re-rendering of the search results fragment.

<view-state id="searchResults">
    <on-render>
        <evaluate expression="bookingService.findHotels(searchCriteria)"
                  result="viewScope.hotels" />
    </on-render>
    <transition on="next">
        <evaluate expression="searchCriteria.nextPage()" />
        <render fragments="searchResultsFragment" />            
    </transition>
    <transition on="previous">
        <evaluate expression="searchCriteria.previousPage()" />
        <render fragments="searchResultsFragment" />          
    </transition>
</view-state>
			

4.5. Executing render actions

Use the on-render element to execute one or more actions before view rendering. Render actions are executed on the initial render as well as any subsequent refreshes, including any partial re-renderings of the view.

<on-render>
    <evaluate expression="bookingService.findHotels(searchCriteria)" result="viewScope.hotels" />
</on-render>
	    

4.6. Binding to a model

Use the model attribute to declare a model object the view binds to. This attribute is typically used in conjunction with views that render data controls, such as forms. It enables form data binding and validation behaviors to be driven from metadata on your model object.

The following example declares an enterBookingDetails state manipulates the booking model:

<view-state id="enterBookingDetails" model="booking">
	    

The model may be an object in any accessible scope, such as flowScope or viewScope. Specifying a model triggers the following behavior when a view event occurs:

  1. View-to-model binding. On view postback, user input values are bound to model object properties for you.

  2. Model validation. After binding, if the model object requires validation that validation logic will be invoked.

For a flow event to be generated that can drive a view state transition, model binding must complete successfully. If model binding fails, the view is re-rendered to allow the user to revise their edits.

4.7. Performing type conversion

When a model binding occurs during view postback, the binding system will attempt to convert the input value to the type of the target model property if necessary. Default Converters are registered for common types such as Numbers, primitives, enums, and Dates and are applied automatically. Users also have the ability to register their own converters for user-defined types, and to override the default Converters.

Implementing a Converter

To implement your own Converter, implement the org.springframework.binding.convert.converters.TwoWayConverter interface. A convenient StringToObject base class has been provided to simplify the implementation of this interface for converters that convert from a user input String to a user-defined Object and back. Simply extend from this class and override these two methods:

protected abstract Object toObject(String string, Class targetClass) throws Exception;

protected abstract String toString(Object object) throws Exception;			
			

toObject(String, Class) should convert from the input string to your object's type, and toString(Object) should do the reverse.

The following example shows a Converter that converts from String to a MonetaryAmount for working with currency values:

public class StringToMonetaryAmount extends StringToObject {

   public StringToMonetaryAmount() {
       super(MonetaryAmount.class);
   }

   @Override
   protected Object toObject(String string, Class targetClass) {
       return MonetaryAmount.valueOf(string);
   }

   @Override
   protected String toString(Object object) {
       MonetaryAmount amount = (MonetaryAmount) object;
       return amount.toString();
   }
}			
			

Review the pre-built converters in the org.springframework.binding.convert.converters package to see more examples of Converter implementations.

Registering a Converter

To install your own Converter or override any of the default Converters, extend from org.springframework.binding.convert.service.DefaultConversionService and override the addDefaultConverters() method. Use the addConverter(Converter) method to register the primary Converter to use to convert between two types, such as a String and a MonetaryAmount. Optionally use the addConverter(String, Converter) method to register alternate converters for the same type pair; for example, to support formatting a java.util.Date as a String in several different ways.

Each alternate Converter is indexed by a unique converterId that can be referenced when configuring a model binding. When no converter id is referenced explicitly by a binding, the primary Converter between the two types is always used.

The ConversionService is the object Web Flow consults at runtime to lookup conversion executors to convert from one type to another. There is generally one ConversionService per application. See the System Setup section for documentation on how to configure an extended ConversionService implementation that registers custom Converters to apply application-wide. Also consult the Convert API documentation for more information.

4.8. Suppressing binding

Use the bind attribute to suppress model binding and validation for particular view events. The following example suppresses binding when the cancel event occurs:

<view-state id="enterBookingDetails" model="booking">
    <transition on="proceed" to="reviewBooking">
    <transition on="cancel" to="bookingCancelled" bind="false" />
</view-state>
		

4.9. Specifying bindings explicitly

Use the binder element to configure the exact set of model bindings usable by the view. This is particularly useful in a Spring MVC environment for restricting the set of "allowed fields" per view.

<view-state id="enterBookingDetails" model="booking">
    <binder>
        <binding property="creditCard" />
        <binding property="creditCardName" />
        <binding property="creditCardExpiryMonth" />
        <binding property="creditCardExpiryYear" />
    </binder>
    <transition on="proceed" to="reviewBooking" />
    <transition on="cancel" to="cancel" bind="false" />
</view-state>

		

If the binder element is not specified, all public properties of the model are eligible for binding by the view. With the binder element specified, only the explicitly configured bindings are allowed.

Each binding may also apply a converter to format the model property value for display in a custom manner. If no converter is specified, the default converter for the model property's type will be used.

<view-state id="enterBookingDetails" model="booking">
    <binder>
        <binding property="checkinDate" converter="shortDate" />
        <binding property="checkoutDate" converter="shortDate" />    
        <binding property="creditCard" />
        <binding property="creditCardName" />
        <binding property="creditCardExpiryMonth" />
        <binding property="creditCardExpiryYear" />
    </binder>
    <transition on="proceed" to="reviewBooking" />
    <transition on="cancel" to="cancel" bind="false" />
</view-state>

		

In the example above, the shortDate converter is bound to the checkinDate and checkoutDate properties. Custom converters may be registered with the application's ConversionService.

Each binding may also apply a required check that will generate a validation error if the user provided value is null on form postback:

<view-state id="enterBookingDetails" model="booking">
    <binder>
        <binding property="checkinDate" converter="shortDate" required="true" />
        <binding property="checkoutDate" converter="shortDate" required="true" />
        <binding property="creditCard" required="true" />
        <binding property="creditCardName" required="true" />
        <binding property="creditCardExpiryMonth" required="true" />
        <binding property="creditCardExpiryYear" required="true" />
    </binder>
    <transition on="proceed" to="reviewBooking">
    <transition on="cancel" to="bookingCancelled" bind="false" />
</view-state>
		

In the example above, all of the bindings are required. If one or more blank input values are bound, validation errors will be generated and the view will re-render with those errors.

4.10. Validating a model

Model validation is driven by constraints specified against a model object. Web Flow supports enforcing such constraints programatically.

Programmatic validation

There are two ways to perform model validation programatically. The first is to implement validation logic in your model object. The second is to implement an external Validator. Both ways provide you with a ValidationContext to record error messages and access information about the current user.

Implementing a model validate method

Defining validation logic in your model object is the simplest way to validate its state. Once such logic is structured according to Web Flow conventions, Web Flow will automatically invoke that logic during the view-state postback lifecycle. Web Flow conventions have you structure model validation logic by view-state, allowing you to easily validate the subset of model properties that are editable on that view. To do this, simply create a public method with the name validate${state}, where ${state} is the id of your view-state where you want validation to run. For example:

public class Booking {
    private Date checkinDate;
    private Date checkoutDate;
    ...
        
    public void validateEnterBookingDetails(ValidationContext context) {
        MessageContext messages = context.getMessageContext();
        if (checkinDate.before(today())) {
            messages.addMessage(new MessageBuilder().error().source("checkinDate").
                defaultText("Check in date must be a future date").build());
        } else if (!checkinDate.before(checkoutDate)) {
            messages.addMessage(new MessageBuilder().error().source("checkoutDate").
                defaultText("Check out date must be later than check in date").build());
        }
    }
}

				

In the example above, when a transition is triggered in a enterBookingDetails view-state that is editing a Booking model, Web Flow will invoke the validateEnterBookingDetails(ValidationContext) method automatically unless validation has been suppressed for that transition. An example of such a view-state is shown below:

<view-state id="enterBookingDetails" model="booking">
    <transition on="proceed" to="reviewBooking">
</view-state>
				

Any number of validation methods are defined. Generally, a flow edits a model over a series of views. In that case, a validate method would be defined for each view-state where validation needs to run.

Implementing a Validator

The second way is to define a separate object, called a Validator, which validates your model object. To do this, first create a class whose name has the pattern ${model}Validator, where ${model} is the capitialized form of the model expression, such as booking. Then define a public method with the name validate${state}, where ${state} is the id of your view-state, such as enterBookingDetails. The class should then be deployed as a Spring bean. Any number of validation methods can be defined. For example:

@Component
public class BookingValidator {
    public void validateEnterBookingDetails(Booking booking, ValidationContext context) {
        MessageContext messages = context.getMessageContext();
        if (booking.getCheckinDate().before(today())) {
            messages.addMessage(new MessageBuilder().error().source("checkinDate").
                defaultText("Check in date must be a future date").build());
        } else if (!booking.getCheckinDate().before(booking.getCheckoutDate())) {
            messages.addMessage(new MessageBuilder().error().source("checkoutDate").
                defaultText("Check out date must be later than check in date").build());
        }
    }
}
				

In the example above, when a transition is triggered in a enterBookingDetails view-state that is editing a Booking model, Web Flow will invoke the validateEnterBookingDetails(Booking, ValidationContext) method automatically unless validation has been suppressed for that transition.

A Validator can also accept a Spring MVC Errors object, which is required for invoking existing Spring Validators.

Validators must be registered as Spring beans employing the naming convention ${model}Validator to be detected and invoked automatically. In the example above, Spring 2.5 classpath-scanning would detect the @Component and automatically register it as a bean with the name bookingValidator. Then, anytime the booking model needs to be validated, this bookingValidator instance would be invoked for you.

ValidationContext

A ValidationContext allows you to obtain a MessageContext to record messages during validation. It also exposes information about the current user, such as the signaled userEvent and the current user's Principal identity. This information can be used to customize validation logic based on what button or link was activated in the UI, or who is authenticated. See the API Javadocs for ValidationContext for more information.

4.11. Suppressing validation

Use the validate attribute to suppress model validation for particular view events:

<view-state id="chooseAmenities" model="booking">
    <transition on="proceed" to="reviewBooking">
    <transition on="back" to="enterBookingDetails" validate="false" />
</view-state>
		

In this example, data binding will still occur on back but validation will be suppressed.

4.12. Executing view transitions

Define one or more transition elements to handle user events that may occur on the view. A transition may take the user to another view, or it may simply execute an action and re-render the current view. A transition may also request the rendering of parts of a view called "fragments" when handling an Ajax event. Finally, "global" transitions that are shared across all views may also be defined.

Implementing view transitions is illustrated in the following sections.

Transition actions

A view-state transition can execute one or more actions before executing. These actions may return an error result to prevent the transition from exiting the current view-state. If an error result occurs, the view will re-render and should display an appropriate message to the user.

If the transition action invokes a plain Java method, the invoked method may return false to prevent the transition from executing. This technique can be used to handle exceptions thrown by service-layer methods. The example below invokes an action that calls a service and handles an exceptional situation:

<transition on="submit" to="bookingConfirmed">
    <evaluate expression="bookingAction.makeBooking(booking, messageContext)" />
</transition>
			
public class BookingAction {
   public boolean makeBooking(Booking booking, MessageContext context) {
       try {
           bookingService.make(booking);
           return true;
       } catch (RoomNotAvailableException e) {
           context.addMessage(new MessageBuilder().error().
               .defaultText("No room is available at this hotel").build());
           return false;
       }
   }
}
			
[Note]Note

When there is more than one action defined on a transition, if one returns an error result the remaining actions in the set will not be executed. If you need to ensure one transition action's result cannot impact the execution of another, define a single transition action that invokes a method that encapsulates all the action logic.

Global transitions

Use the flow's global-transitions element to create transitions that apply across all views. Global-transitions are often used to handle global menu links that are part of the layout.

<global-transitions>
    <transition on="login" to="login" />
    <transition on="logout" to="logout" />
</global-transitions>
			

Event handlers

From a view-state, transitions without targets can also be defined. Such transitions are called "event handlers":

<transition on="event">
    <!-- Handle event -->
</transition>
			

These event handlers do not change the state of the flow. They simply execute their actions and re-render the current view or one or more fragments of the current view.

Rendering fragments

Use the render element within a transition to request partial re-rendering of the current view after handling the event:

<transition on="next">
    <evaluate expression="searchCriteria.nextPage()" />
    <render fragments="searchResultsFragment" />            
</transition>
			

The fragments attribute should reference the id(s) of the view element(s) you wish to re-render. Specify multiple elements to re-render by separating them with a comma delimiter.

Such partial rendering is often used with events signaled by Ajax to update a specific zone of the view.

4.13. Working with messages

Spring Web Flow's MessageContext is an API for recording messages during the course of flow executions. Plain text messages can be added to the context, as well as internationalized messages resolved by a Spring MessageSource. Messages are renderable by views and automatically survive flow execution redirects. Three distinct message severities are provided: info, warning, and error. In addition, a convenient MessageBuilder exists for fluently constructing messages.

Adding plain text messages

MessageContext context = ...
MessageBuilder builder = new MessageBuilder();
context.addMessage(builder.error().source("checkinDate")
    .defaultText("Check in date must be a future date").build());
context.addMessage(builder.warn().source("smoking")
    .defaultText("Smoking is bad for your health").build());
context.addMessage(builder.info()
    .defaultText("We have processed your reservation - thank you and enjoy your stay").build());
			

Adding internationalized messages

MessageContext context = ...
MessageBuilder builder = new MessageBuilder();
context.addMessage(builder.error().source("checkinDate").code("checkinDate.notFuture").build());
context.addMessage(builder.warn().source("smoking").code("notHealthy")
    .resolvableArg("smoking").build());			
context.addMessage(builder.info().code("reservationConfirmation").build());
			

Using message bundles

Internationalized messages are defined in message bundles accessed by a Spring MessageSource. To create a flow-specific message bundle, simply define messages.properties file(s) in your flow's directory. Create a default messages.properties file and a .properties file for each additional Locale you need to support.

#messages.properties
checkinDate=Check in date must be a future date
notHealthy={0} is bad for your health
reservationConfirmation=We have processed your reservation - thank you and enjoy your stay
			

From within a view or a flow, you may also access message resources using the resourceBundle EL variable:

<h:outputText value="#{resourceBundle.reservationConfirmation}" />
			

Understanding system generated messages

There are several places where Web Flow itself will generate messages to display to the user. One important place this occurs is during view-to-model data binding. When a binding error occurs, such as a type conversion error, Web Flow will map that error to a message retrieved from your resource bundle automatically. To lookup the message to display, Web Flow tries resource keys that contain the binding error code and target property name.

As an example, consider a binding to a checkinDate property of a Booking object. Suppose the user typed in a alphabetic string. In this case, a type conversion error will be raised. Web Flow will map the 'typeMismatch' error code to a message by first querying your resource bundle for a message with the following key:

booking.checkinDate.typeMismatch
			

The first part of the key is the model class's short name. The second part of the key is the property name. The third part is the error code. This allows for the lookup of a unique message to display to the user when a binding fails on a model property. Such a message might say:

booking.checkinDate.typeMismatch=The check in date must be in the format yyyy-mm-dd.
			

If no such resource key can be found of that form, a more generic key will be tried. This key is simply the error code. The field name of the property is provided as a message argument.

typeMismatch=The {0} field is of the wrong type.
			

4.14. Displaying popups

Use the popup attribute to render a view in a modal popup dialog:

<view-state id="changeSearchCriteria" view="enterSearchCriteria.xhtml" popup="true">
		

When using Web Flow with the Spring Javascript, no client side code is necessary for the popup to display. Web Flow will send a response to the client requesting a redirect to the view from a popup, and the client will honor the request.

4.15. View backtracking

By default, when you exit a view state and transition to a new view state, you can go back to the previous state using the browser back button. These view state history policies are configurable on a per-transition basis by using the history attribute.

Discarding history

Set the history attribute to discard to prevent backtracking to a view:

<transition on="cancel" to="bookingCancelled" history="discard">
			

Invalidating history

Set the history attribute to invalidate to prevent backtracking to a view as well all previously displayed views:

<transition on="confirm" to="bookingConfirmed" history="invalidate">
			

5. Executing actions

5.1. Introduction

This chapter shows you how to use the action-state element to control the execution of an action at a point within a flow. It will also show how to use the decision-state element to make a flow routing decision. Finally, several examples of invoking actions from the various points possible within a flow will be discussed.

5.2. Defining action states

Use the action-state element when you wish to invoke an action, then transition to another state based on the action's outcome:

<action-state id="moreAnswersNeeded">
    <evaluate expression="interview.moreAnswersNeeded()" />
    <transition on="yes" to="answerQuestions" />
    <transition on="no" to="finish" />
</action-state>
        

The full example below illustrates a interview flow that uses the action-state above to determine if more answers are needed to complete the interview:

<flow xmlns="http://www.springframework.org/schema/webflow"
      xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
      xsi:schemaLocation="http://www.springframework.org/schema/webflow
                          http://www.springframework.org/schema/webflow/spring-webflow-2.0.xsd">

    <on-start>
        <evaluate expression="interviewFactory.createInterview()" result="flowScope.interview" />
    </on-start>

    <view-state id="answerQuestions" model="questionSet">
        <on-entry>
            <evaluate expression="interview.getNextQuestionSet()" result="viewScope.questionSet" />
        </on-entry>
        <transition on="submitAnswers" to="moreAnswersNeeded">
            <evaluate expression="interview.recordAnswers(questionSet)" />
        </transition>
    </view-state>
    
    <action-state id="moreAnswersNeeded">
        <evaluate expression="interview.moreAnswersNeeded()" />
        <transition on="yes" to="answerQuestions" />
        <transition on="no" to="finish" />
    </action-state>

    <end-state id="finish" />
    
</flow>
			

5.3. Defining decision states

Use the decision-state element as an alternative to the action-state to make a routing decision using a convenient if/else syntax. The example below shows the moreAnswersNeeded state above now implemented as a decision state instead of an action-state:

<decision-state id="moreAnswersNeeded">
    <if test="interview.moreAnswersNeeded()" then="answerQuestions" else="finish" />
</decision-state>
			

5.4. Action outcome event mappings

Actions often invoke methods on plain Java objects. When called from action-states and decision-states, these method return values can be used to drive state transitions. Since transitions are triggered by events, a method return value must first be mapped to an Event object. The following table describes how common return value types are mapped to Event objects:

Table 5.1. Action method return value to event id mappings

Method return typeMapped Event identifier expression
java.lang.Stringthe String value
java.lang.Booleanyes (for true), no (for false)
java.lang.Enumthe Enum name
any other typesuccess

This is illustrated in the example action state below, which invokes a method that returns a boolean value:

<action-state id="moreAnswersNeeded">
    <evaluate expression="interview.moreAnswersNeeded()" />
    <transition on="yes" to="answerQuestions" />
    <transition on="no" to="finish" />
</action-state>
        

5.5. Action implementations

While writing action code as POJO logic is the most common, there are several other action implementation options. Sometimes you need to write action code that needs access to the flow context. You can always invoke a POJO and pass it the flowRequestContext as an EL variable. Alternatively, you may implement the Action interface or extend from the MultiAction base class. These options provide stronger type safety when you have a natural coupling between your action code and Spring Web Flow APIs. Examples of each of these approaches are shown below.

Invoking a POJO action

<evaluate expression="pojoAction.method(flowRequestContext)" />	
        	
public class PojoAction {
    public String method(RequestContext context) {
        ... 
    }
}
			

Invoking a custom Action implementation

<evaluate expression="customAction" />	
        	
public class CustomAction implements Action {
    public Event execute(RequestContext context) {
        ... 
    }
}
			

Invoking a MultiAction implementation

<evaluate expression="multiAction.actionMethod1" />
	
        	
public class CustomMultiAction extends MultiAction {
    public Event actionMethod1(RequestContext context) {
        ... 
    }

    public Event actionMethod2(RequestContext context) {
        ... 
    }

    ...
}
			

5.6. Action exceptions

Actions often invoke services that encapsulate complex business logic. These services may throw business exceptions that the action code should handle.

Handling a business exception with a POJO action

The following example invokes an action that catches a business exception, adds a error message to the context, and returns a result event identifier. The result is treated as a flow event which the calling flow can then respond to.

<evaluate expression="bookingAction.makeBooking(booking, flowRequestContext)" />	
        	
public class BookingAction {
   public String makeBooking(Booking booking, RequestContext context) {
       try {
           BookingConfirmation confirmation = bookingService.make(booking);
           context.getFlowScope().put("confirmation", confirmation);
           return "success";
       } catch (RoomNotAvailableException e) {
           context.addMessage(new MessageBuilder().error().
               .defaultText("No room is available at this hotel").build());
           return "error";
       }
   }
}
			

Handling a business exception with a MultiAction

The following example is functionally equivlant to the last, but implemented as a MultiAction instead of a POJO action. The MultiAction requires its action methods to be of the signature Event ${methodName}(RequestContext), providing stronger type safety, while a POJO action allows for more freedom.

<evaluate expression="bookingAction.makeBooking" />	
        	
public class BookingAction extends MultiAction {
   public Event makeBooking(RequestContext context) {
       try {
           Booking booking = (Booking) context.getFlowScope().get("booking");
           BookingConfirmation confirmation = bookingService.make(booking);
           context.getFlowScope().put("confirmation", confirmation);
           return success();
       } catch (RoomNotAvailableException e) {
           context.getMessageContext().addMessage(new MessageBuilder().error().
               .defaultText("No room is available at this hotel").build());
           return error();
       }
   }
}
			

5.7. Other Action execution examples

on-start

The following example shows an action that creates a new Booking object by invoking a method on a service:

<flow xmlns="http://www.springframework.org/schema/webflow"
      xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
      xsi:schemaLocation="http://www.springframework.org/schema/webflow
                          http://www.springframework.org/schema/webflow/spring-webflow-2.0.xsd">

    <input name="hotelId" />

    <on-start>
        <evaluate expression="bookingService.createBooking(hotelId, currentUser.name)" 
                  result="flowScope.booking" />
    </on-start>

</flow>
			

on-entry

The following example shows a state entry action that sets the special fragments variable that causes the view-state to render a partial fragment of its view:

<view-state id="changeSearchCriteria" view="enterSearchCriteria.xhtml" popup="true">
    <on-entry>
        <render fragments="hotelSearchForm" />
    </on-entry>
</view-state>
			

on-exit

The following example shows a state exit action that releases a lock on a record being edited:

<view-state id="editOrder">
    <on-entry>
        <evaluate expression="orderService.selectForUpdate(orderId, currentUser)"
                  result="viewScope.order" />
    </on-entry>
    <transition on="save" to="finish">
        <evaluate expression="orderService.update(order, currentUser)" />
    </transition>
    <on-exit>
        <evaluate expression="orderService.releaseLock(order, currentUser)" />
    </on-exit>
</view-state>
			

on-end

The following example shows the equivalent object locking behavior using flow start and end actions:

<flow xmlns="http://www.springframework.org/schema/webflow"
      xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
      xsi:schemaLocation="http://www.springframework.org/schema/webflow
                          http://www.springframework.org/schema/webflow/spring-webflow-2.0.xsd">

    <input name="orderId" />

    <on-start>
        <evaluate expression="orderService.selectForUpdate(orderId, currentUser)"
                  result="flowScope.order" />
    </on-start>

    <view-state id="editOrder">
        <transition on="save" to="finish">
            <evaluate expression="orderService.update(order, currentUser)" />
        </transition>
    </view-state>

    <on-end>
        <evaluate expression="orderService.releaseLock(order, currentUser)" />
    </on-end>
    
</flow>
			

on-render

The following example shows a render action that loads a list of hotels to display before the view is rendered:

<view-state id="reviewHotels">
    <on-render>
        <evaluate expression="bookingService.findHotels(searchCriteria)"
	              result="viewScope.hotels" result-type="dataModel" />
    </on-render>
    <transition on="select" to="reviewHotel">
        <set name="flowScope.hotel" value="hotels.selectedRow" />
    </transition>
</view-state>
			

on-transition

The following example shows a transition action adds a subflow outcome event attribute to a collection:

<subflow-state id="addGuest" subflow="createGuest">
    <transition on="guestCreated" to="reviewBooking">
        <evaluate expression="booking.guestList.add(currentEvent.attributes.newGuest)" />  
    </transition>
</subfow-state>
			

Named actions

The following example shows how to execute a chain of actions in an action-state. The name of each action becomes a qualifier for the action's result event.

<action-state id="doTwoThings">
    <evaluate expression="service.thingOne()">
        <attribute name="name" value="thingOne" />
    </evaluate>
    <evaluate expression="service.thingTwo()">
        <attribute name="name" value="thingTwo" />
    </evaluate>
    <transition on="thingTwo.success" to="showResults" />
</action-state>
			

In this example, the flow will transition to showResults when thingTwo completes successfully.

Streaming actions

Sometimes an Action needs to stream a custom response back to the client. An example might be a flow that renders a PDF document when handling a print event. This can be achieved by having the action stream the content then record "Response Complete" status on the ExternalContext. The responseComplete flag tells the pausing view-state not to render the response because another object has taken care of it.

<view-state id="reviewItinerary">
    <transition on="print">
        <evaluate expression="printBoardingPassAction" />
    </transition>
</view-state>
			
public class PrintBoardingPassAction extends AbstractAction {
    public Event doExecute(RequestContext context) {
        // stream PDF content here...
        // - Access HttpServletResponse by calling context.getExternalContext().getNativeResponse();
        // - Mark response complete by calling context.getExternalContext().recordResponseComplete();
        return success();
    }
}
			

In this example, when the print event is raised the flow will call the printBoardingPassAction. The action will render the PDF then mark the response as complete.

Handling File Uploads

Another common task is to use Web Flow to handle multipart file uploads in combination with Spring MVC's MultipartResolver. Once the resolver is set up correctly as described here and the submitting HTML form is configured with enctype="multipart/form-data", you can easily handle the file upload in a transition action. Given a form such as:

<form:form modelAttribute="fileUploadHandler" enctype="multipart/form-data">
	Select file: <input type="file" name="file"/>		
	<input type="submit" name="_eventId_upload" value="Upload" />			
</form:form>
			

and a backing object for handling the upload such as:

package org.springframework.webflow.samples.booking;

import org.springframework.web.multipart.MultipartFile;

public class FileUploadHandler {
    
    private transient MultipartFile file;
    
    public void processFile() {
		//Do something with the MultipartFile here
    }

    public void setFile(MultipartFile file) {
        this.file = file;
    } 
}
			

you can process the upload using a transition action as in the following example:

<view-state id="uploadFile" model="uploadFileHandler">
    <var name="fileUploadHandler" class="org.springframework.webflow.samples.booking.FileUploadHandler" />
    <transition on="upload" to="finish" >
        <evaluate expression="fileUploadHandler.processFile()"/>
    </transition>
    <transition on="cancel" to="finish" bind="false"/>
</view-state>
			

The MultipartFile will be bound to the FileUploadHandler bean as part of the normal form binding process so that it will be available to process during the execution of the transition action.

6. Flow Managed Persistence

6.1. Introduction

Most applications access data in some way. Many modify data shared by multiple users and therefore require transactional data access properties. They often transform relational data sets into domain objects to support application processing. Web Flow offers "flow managed persistence" where a flow can create, commit, and close a object persistence context for you. Web Flow integrates both Hibernate and JPA object persistence technologies.

Apart from flow-managed persistence, there is the pattern of fully encapsulating PersistenceContext management within the service layer of your application. In that case, the web layer does not get involved with persistence, instead it works entirely with detached objects that are passed to and returned by your service layer. This chapter will focus on the flow-managed persistence, exploring how and when to use this feature.

6.2. FlowScoped PersistenceContext

This pattern creates a PersistenceContext in flowScope on flow startup, uses that context for data access during the course of flow execution, and commits changes made to persistent entities at the end. This pattern provides isolation of intermediate edits by only committing changes to the database at the end of flow execution. This pattern is often used in conjunction with an optimistic locking strategy to protect the integrity of data modified in parallel by multiple users. To support saving and restarting the progress of a flow over an extended period of time, a durable store for flow state must be used. If a save and restart capability is not required, standard HTTP session-based storage of flow state is sufficient. In that case, session expiration or termination before commit could potentially result in changes being lost.

To use the FlowScoped PersistenceContext pattern, first mark your flow as a persistence-context:

<?xml version="1.0" encoding="UTF-8"?>
<flow xmlns="http://www.springframework.org/schema/webflow"
      xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
      xsi:schemaLocation="http://www.springframework.org/schema/webflow
                          http://www.springframework.org/schema/webflow/spring-webflow-2.0.xsd">

    <persistence-context />
    
</flow>

Then configure the correct FlowExecutionListener to apply this pattern to your flow. If using Hibernate, register the HibernateFlowExecutionListener. If using JPA, register the JpaFlowExecutionListener.

<webflow:flow-executor id="flowExecutor" flow-registry="flowRegistry">
    <webflow:flow-execution-listeners>
        <webflow:listener ref="jpaFlowExecutionListener" />
    </webflow:flow-execution-listeners>
</webflow:flow-executor>
	
<bean id="jpaFlowExecutionListener" 
      class="org.springframework.webflow.persistence.JpaFlowExecutionListener">
    <constructor-arg ref="entityManagerFactory" />
    <constructor-arg ref="transactionManager" />
</bean>

To trigger a commit at the end, annotate your end-state with the commit attribute:

<end-state id="bookingConfirmed" commit="true" />

That is it. When your flow starts, the listener will handle allocating a new EntityManager in flowScope. Reference this EntityManager at anytime from within your flow by using the special persistenceContext variable. In addition, any data access that occurs using a Spring managed data access object will use this EntityManager automatically. Such data access operations should always execute non transactionally or in read-only transactions to maintain isolation of intermediate edits.

7. Securing Flows

7.1. Introduction

Security is an important concept for any application. End users should not be able to access any portion of a site simply by guessing the URL. Areas of a site that are sensitive must ensure that only authorized requests are processed. Spring Security is a proven security platform that can integrate with your application at multiple levels. This section will focus on securing flow execution.

7.2. How do I secure a flow?

Securing flow execution is a three step process:

  • Configure Spring Security with authentication and authorization rules

  • Annotate the flow definition with the secured element to define the security rules

  • Add the SecurityFlowExecutionListener to process the security rules.

Each of these steps must be completed or else flow security rules will not be applied.

7.3. The secured element

The secured element designates that its containing element should apply the authorization check before fully entering. This may not occur more then once per stage of the flow execution that is secured.

Three phases of flow execution can be secured: flows, states and transitions. In each case the syntax for the secured element is identical. The secured element is located inside the element it is securing. For example, to secure a state the secured element occurs directly inside that state:

<view-state id="secured-view">
    <secured attributes="ROLE_USER" />
    ...
</view-state>
		

Security attributes

The attributes attribute is a comma separated list of Spring Security authorization attributes. Often, these are specific security roles. The attributes are compared against the user's granted attributes by a Spring Security access decision manager.

<secured attributes="ROLE_USER" />
			

By default, a role based access decision manager is used to determine if the user is allowed access. This will need to be overridden if your application is not using authorization roles.

Matching type

There are two types of matching available: any and all. Any, allows access if at least one of the required security attributes is granted to the user. All, allows access only if each of the required security attributes are granted to the user.

<secured attributes="ROLE_USER, ROLE_ANONYMOUS" match="any" />
			

This attribute is optional. If not defined, the default value is any.

The match attribute will only be respected if the default access decision manager is used.

7.4. The SecurityFlowExecutionListener

Defining security rules in the flow by themselves will not protect the flow execution. A SecurityFlowExecutionListener must also be defined in the webflow configuration and applied to the flow executor.

<webflow:flow-executor id="flowExecutor" flow-registry="flowRegistry">
    <webflow:flow-execution-listeners>
        <webflow:listener ref="securityFlowExecutionListener" />
    </webflow:flow-execution-listeners>
</webflow:flow-executor>

<bean id="securityFlowExecutionListener" 
      class="org.springframework.webflow.security.SecurityFlowExecutionListener" />
		

If access is denied to a portion of the application an AccessDeniedException will be thrown. This exception will later be caught by Spring Security and used to prompt the user to authenticate. It is important that this exception be allowed to travel up the execution stack uninhibited, otherwise the end user may not be prompted to authenticate.

Custom Access Decision Managers

If your application is using authorities that are not role based, you will need to configure a custom AccessDecisionManager. You can override the default decision manager by setting the accessDecisionManager property on the security listener. Please consult the Spring Security reference documentation to learn more about decision managers.

<bean id="securityFlowExecutionListener"
      class="org.springframework.webflow.security.SecurityFlowExecutionListener">
    <property name="accessDecisionManager" ref="myCustomAccessDecisionManager" />
</bean>
			

7.5. Configuring Spring Security

Spring Security has robust configuration options available. As every application and environment has its own security requirements, the Spring Security reference documentation is the best place to learn the available options.

Both the booking-faces and booking-mvc sample applications are configured to use Spring Security. Configuration is needed at both the Spring and web.xml levels.

Spring configuration

The Spring configuration defines http specifics (such as protected URLs and login/logout mechanics) and the authentication-provider. For the sample applications, a local authentication provider is configured.

<security:http auto-config="true">
    <security:form-login login-page="/spring/login" 
                         login-processing-url="/spring/loginProcess"
                         default-target-url="/spring/main" 
                         authentication-failure-url="/spring/login?login_error=1" />  
    <security:logout logout-url="/spring/logout" logout-success-url="/spring/logout-success" />
</security:http>

<security:authentication-provider>
    <security:password-encoder hash="md5" />
    <security:user-service>
        <security:user name="keith" password="417c7382b16c395bc25b5da1398cf076" 
                       authorities="ROLE_USER,ROLE_SUPERVISOR" />
        <security:user name="erwin" password="12430911a8af075c6f41c6976af22b09" 
                       authorities="ROLE_USER,ROLE_SUPERVISOR" />
        <security:user name="jeremy" password="57c6cbff0d421449be820763f03139eb" 
                       authorities="ROLE_USER" />
        <security:user name="scott" password="942f2339bf50796de535a384f0d1af3e" 
                       authorities="ROLE_USER" />
    </security:user-service>
</security:authentication-provider>
			

web.xml Configuration

In the web.xml file, a filter is defined to intercept all requests. This filter will listen for login/logout requests and process them accordingly. It will also catch AccesDeniedExceptions and redirect the user to the login page.

<filter>
    <filter-name>springSecurityFilterChain</filter-name>
    <filter-class>org.springframework.web.filter.DelegatingFilterProxy</filter-class>
</filter>

<filter-mapping>
    <filter-name>springSecurityFilterChain</filter-name>
    <url-pattern>/*</url-pattern>
</filter-mapping>
			

8. Flow Inheritance

8.1. Introduction

Flow inheritance allows one flow to inherit the configuration of another flow. Inheritance can occur at both the flow and state levels. A common use case is for a parent flow to define global transitions and exception handlers, then each child flow can inherit those settings.

In order for a parent flow to be found, it must be added to the flow-registry just like any other flow.

8.2. Is flow inheritance like Java inheritance?

Flow inheritance is similar to Java inheritance in that elements defined in a parent are exposed via the child, however, there are key differences.

A child flow cannot override an element from a parent flow. Similar elements between the parent and child flows will be merged. Unique elements in the parent flow will be added to the child.

A child flow can inherit from multiple parent flows. Java inheritance is limited to a single class.

8.3. Types of Flow Inheritance

Flow level inheritance

Flow level inheritance is defined by the parent attribute on the flow element. The attribute contains a comma separated list of flow identifiers to inherit from. The child flow will inherit from each parent in the order it is listed adding elements and content to the resulting flow. The resulting flow from the first merge will be considered the child in the second merge, and so on.

<flow parent="common-transitions, common-states">
			

State level inheritance

State level inheritance is similar to flow level inheritance, except only one state inherits from the parent, instead of the entire flow.

Unlike flow inheritance, only a single parent is allowed. Additionally, the identifier of the flow state to inherit from must also be defined. The identifiers for the flow and the state within that flow are separated by a #.

The parent and child states must be of the same type. For instance a view-state cannot inherit from an end-state, only another view-state.

<view-state id="child-state" parent="parent-flow#parent-view-state">
			

8.4. Abstract flows

Often parent flows are not designed to be executed directly. In order to protect these flows from running, they can be marked as abstract. If an abstract flow attempts to run, a FlowBuilderException will be thrown.

<flow abstract="true">
		

8.5. Inheritance Algorithm

When a child flow inherits from it's parent, essentially what happens is that the parent and child are merged together to create a new flow. There are rules for every element in the Web Flow definition language that govern how that particular element is merged.

There are two types of elements: mergeable and non-mergeable. Mergeable elements will always attempt to merge together if the elements are similar. Non-mergeable elements in a parent or child flow will always be contained in the resulting flow intact. They will not be modified as part of the merge process.

[Note]Note
Paths to external resources in the parent flow should be absolute. Relative paths will break when the two flows are merged unless the parent and child flow are in the same directory. Once merged, all relative paths in the parent flow will become relative to the child flow.

Mergeable Elements

If the elements are of the same type and their keyed attribute are identical, the content of the parent element will be merged with the child element. The merge algorithm will continue to merge each sub-element of the merging parent and child. Otherwise the parent element is added as a new element to the child.

In most cases, elements from a parent flow that are added will be added after elements in the child flow. Exceptions to this rule include action elements (evaluate, render and set) which will be added at the beginning. This allows for the results of parent actions to be used by child actions.

Mergeable elements are:

  • action-state: id

  • attribute: name

  • decision-state: id

  • end-state: id

  • flow: always merges

  • if: test

  • on-end: always merges

  • on-entry: always merges

  • on-exit: always merges

  • on-render: always merges

  • on-start: always merges

  • input: name

  • output: name

  • secured: attributes

  • subflow-state: id

  • transition: on and on-exception

  • view-state: id

Non-mergeable Elements

Non-mergeable elements are:

  • bean-import

  • evaluate

  • exception-handler

  • persistence-context

  • render

  • set

  • var

9. System Setup

9.1. Introduction

This chapter shows you how to setup the Web Flow system for use in any web environment.

9.2. webflow-config.xsd

Web Flow provides a Spring schema that allows you to configure the system. To use this schema, include it in one of your infrastructure-layer beans files:

<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xmlns:webflow="http://www.springframework.org/schema/webflow-config"
       xsi:schemaLocation="
           http://www.springframework.org/schema/beans
           http://www.springframework.org/schema/beans/spring-beans-2.5.xsd
           http://www.springframework.org/schema/webflow-config
           http://www.springframework.org/schema/webflow-config/spring-webflow-config-2.0.xsd">		

    <!-- Setup Web Flow here -->
	
</beans>
		

9.3. Basic system configuration

The next section shows the minimal configuration required to set up the Web Flow system in your application.

FlowRegistry

Register your flows in a FlowRegistry:

<webflow:flow-registry id="flowRegistry">
    <webflow:flow-location path="/WEB-INF/flows/booking/booking.xml" />
</webflow:flow-registry>
			

FlowExecutor

Deploy a FlowExecutor, the central service for executing flows:

<webflow:flow-executor id="flowExecutor" />
			

See the Spring MVC and Spring Faces sections of this guide on how to integrate the Web Flow system with the MVC and JSF environment, respectively.

9.4. flow-registry options

This section explores flow-registry configuration options.

Specifying flow locations

Use the location element to specify paths to flow definitions to register. By default, flows will be assigned registry identifiers equal to their filenames minus the file extension, unless a registry bath path is defined.

<webflow:flow-location path="/WEB-INF/flows/booking/booking.xml" />
			

Assigning custom flow identifiers

Specify an id to assign a custom registry identifier to a flow:

<webflow:flow-location path="/WEB-INF/flows/booking/booking.xml" id="bookHotel" />
			

Assigning flow meta-attributes

Use the flow-definition-attributes element to assign custom meta-attributes to a registered flow:

<webflow:flow-location path="/WEB-INF/flows/booking/booking.xml">
    <flow-definition-attributes>
        <attribute name="caption" value="Books a hotel" />
    </flow-definition-attributes>
</webflow:flow-location>
			

Registering flows using a location pattern

Use the flow-location-patterns element to register flows that match a specific resource location pattern:

<webflow:flow-location-pattern value="/WEB-INF/flows/**/*-flow.xml" />
			

Flow location base path

Use the base-path attribute to define a base location for all flows in the application. All flow locations are then relative to the base path. The base path can be a resource path such as '/WEB-INF' or a location on the classpath like 'classpath:org/springframework/webflow/samples'.

<webflow:flow-registry id="flowRegistry" base-path="/WEB-INF">
    <webflow:flow-location path="/hotels/booking/booking.xml" />
</webflow:flow-registry>
			

With a base path defined, the algorithm that assigns flow identifiers changes slightly. Flows will now be assigned registry identifiers equal to the the path segment between their base path and file name. For example, if a flow definition is located at '/WEB-INF/hotels/booking/booking-flow.xml' and the base path is '/WEB-INF' the remaining path to this flow is 'hotels/booking' which becomes the flow id.

[Tip]Directory per flow definition

Recall it is a best practice to package each flow definition in a unique directory. This improves modularity, allowing dependent resources to be packaged with the flow definition. It also prevents two flows from having the same identifiers when using the convention.

If no base path is not specified or if the flow definition is directly on the base path, flow id assignment from the filename (minus the extension) is used. For example, if a flow definition file is 'booking.xml', the flow identifier is simply 'booking'.

Location patterns are particularly powerful when combined with a registry base path. Instead of the flow identifiers becoming '*-flow', they will be based on the directory path. For example:

<webflow:flow-registry id="flowRegistry" base-path="/WEB-INF">
    <webflow:flow-location-pattern value="/**/*-flow.xml" />
</webflow:flow-registry>
			

In the above example, suppose you had flows located in /user/login, /user/registration, /hotels/booking, and /flights/booking directories within WEB-INF, you'd end up with flow ids of user/login, user/registration, hotels/booking, and flights/booking, respectively.

Configuring FlowRegistry hierarchies

Use the parent attribute to link two flow registries together in a hierarchy. When the child registry is queried, if it cannot find the requested flow it will delegate to its parent.

<!-- my-system-config.xml -->
<webflow:flow-registry id="flowRegistry" parent="sharedFlowRegistry">
    <webflow:flow-location path="/WEB-INF/flows/booking/booking.xml" />
</webflow:flow-registry>

<!-- shared-config.xml -->
<webflow:flow-registry id="sharedFlowRegistry">
    <!-- Global flows shared by several applications -->
</webflow:flow-registry>
			

Configuring custom FlowBuilder services

Use the flow-builder-services attribute to customize the services and settings used to build flows in a flow-registry. If no flow-builder-services tag is specified, the default service implementations are used. When the tag is defined, you only need to reference the services you want to customize.

<webflow:flow-registry id="flowRegistry" flow-builder-services="flowBuilderServices">
    <webflow:flow-location path="/WEB-INF/flows/booking/booking.xml" />
</webflow:flow-registry>

<webflow:flow-builder-services id="flowBuilderServices" />
			

The configurable services are the conversion-service, expression-parser, and view-factory-creator. These services are configured by referencing custom beans you define. For example:

<webflow:flow-builder-services id="flowBuilderServices"
    conversion-service="conversionService"
    expression-parser="expressionParser"
    view-factory-creator="viewFactoryCreator" />

<bean id="conversionService" class="..." />
<bean id="expressionParser" class="..." />
<bean id="viewFactoryCreator" class="..." />
			

conversion-service

Use the conversion-service attribute to customize the ConversionService used by the Web Flow system. Converters are used to convert from one type to another when required during flow execution. The default ConversionService registers converters for your basic object types such as numbers, classes, and enums.

expression-parser

Use the expression-parser attribute to customize the ExpressionParser used by the Web Flow system. The default ExpressionParser uses the Unified EL if available on the classpath, otherwise OGNL is used.

view-factory-creator

Use the view-factory-creator attribute to customize the ViewFactoryCreator used by the Web Flow system. The default ViewFactoryCreator produces Spring MVC ViewFactories capable of rendering JSP, Velocity, and Freemarker views.

The configurable settings are development. These settings are global configuration attributes that can be applied during the flow construction process.

development

Set this to true to switch on flow development mode. Development mode switches on hot-reloading of flow definition changes, including changes to dependent flow resources such as message bundles.

9.5. flow-executor options

This section explores flow-executor configuration options.

Attaching flow execution listeners

Use the flow-execution-listeners element to register listeners that observe the lifecycle of flow executions:

<flow-execution-listeners>
    <listener ref="securityListener"/>
    <listener ref="persistenceListener"/>
</flow-execution-listeners>
			

You may also configure a listener to observe only certain flows:

<listener ref="securityListener" criteria="securedFlow1,securedFlow2"/>
			

Tuning FlowExecution persistence

Use the flow-execution-repository element to tune flow execution persistence settings:

<flow-execution-repository max-executions="5" max-execution-snapshots="30" />
			

max-executions

Tune the max-executions attribute to place a cap on the number of flow executions that can be created per user session.

max-execution-snapshots

Tune the max-execution-snapshots attribute to place a cap on the number of history snapshots that can be taken per flow execution. To disable snapshotting, set this value to 0. To enable an unlimited number of snapshots, set this value to -1.

10. Spring MVC Integration

10.1. Introduction

This chapter shows how to integrate Web Flow into a Spring MVC web application. The booking-mvc sample application is a good reference for Spring MVC with Web Flow. This application is a simplified travel site that allows users to search for and book hotel rooms.

10.2. Configuring web.xml

The first step to using Spring MVC is to configure the DispatcherServlet in web.xml. You typically do this once per web application.

The example below maps all requests that begin with /spring/ to the DispatcherServlet. An init-param is used to provide the contextConfigLocation. This is the configuration file for the web application.

<servlet>
    <servlet-name>Spring MVC Dispatcher Servlet</servlet-name>
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
    <init-param>
        <param-name>contextConfigLocation</param-name>
        <param-value>/WEB-INF/web-application-config.xml</param-value>
    </init-param>
</servlet>
	
<servlet-mapping>
    <servlet-name>Spring MVC Dispatcher Servlet</servlet-name>
    <url-pattern>/spring/*</url-pattern>
</servlet-mapping>

10.3. Dispatching to flows

The DispatcherServlet maps requests for application resources to handlers. A flow is one type of handler.

Registering the FlowHandlerAdapter

The first step to dispatching requests to flows is to enable flow handling within Spring MVC. To this, install the FlowHandlerAdapter:

<!-- Enables FlowHandler URL mapping -->
<bean class="org.springframework.webflow.mvc.servlet.FlowHandlerAdapter">
    <property name="flowExecutor" ref="flowExecutor" />
</bean>
			

Defining flow mappings

Once flow handling is enabled, the next step is to map specific application resources to your flows. The simplest way to do this is to define a FlowHandlerMapping:

<!-- Maps request paths to flows in the flowRegistry;
     e.g. a path of /hotels/booking looks for a flow with id "hotels/booking" -->		
<bean class="org.springframework.webflow.mvc.servlet.FlowHandlerMapping">
    <property name="flowRegistry" ref="flowRegistry"/>
    <property name="order" value="0"/>
</bean>
			

Configuring this mapping allows the Dispatcher to map application resource paths to flows in a flow registry. For example, accessing the resource path /hotels/booking would result in a registry query for the flow with id hotels/booking. If a flow is found with that id, that flow will handle the request. If no flow is found, the next handler mapping in the Dispatcher's ordered chain will be queried or a "noHandlerFound" response will be returned.

Flow handling workflow

When a valid flow mapping is found, the FlowHandlerAdapter figures out whether to start a new execution of that flow or resume an existing execution based on information present the HTTP request. There are a number of defaults related to starting and resuming flow executions the adapter employs:

  • HTTP request parameters are made available in the input map of all starting flow executions.

  • When a flow execution ends without sending a final response, the default handler will attempt to start a new execution in the same request.

  • Unhandled exceptions are propagated to the Dispatcher unless the exception is a NoSuchFlowExecutionException. The default handler will attempt to recover from a NoSuchFlowExecutionException by starting over a new execution.

Consult the API documentation for FlowHandlerAdapter for more information. You may override these defaults by subclassing or by implementing your own FlowHandler, discussed in the next section.

10.4. Implementing custom FlowHandlers

FlowHandler is the extension point that can be used to customize how flows are executed in a HTTP servlet environment. A FlowHandler is used by the FlowHandlerAdapter and is responsible for:

  • Returning the id of a flow definition to execute

  • Creating the input to pass new executions of that flow as they are started

  • Handling outcomes returned by executions of that flow as they end

  • Handling any exceptions thrown by executions of that flow as they occur

These responsibilities are illustrated in the definition of the org.springframework.mvc.servlet.FlowHandler interface:

public interface FlowHandler {

    public String getFlowId();

    public MutableAttributeMap createExecutionInputMap(HttpServletRequest request);

    public String handleExecutionOutcome(FlowExecutionOutcome outcome,
        HttpServletRequest request, HttpServletResponse response);

    public String handleException(FlowException e,
        HttpServletRequest request, HttpServletResponse response);
}				
		

To implement a FlowHandler, subclass AbstractFlowHandler. All these operations are optional, and if not implemented the defaults will apply. You only need to override the methods that you need. Specifically:

  • Override getFlowId(HttpServletRequest) when the id of your flow cannot be directly derived from the HTTP request. By default, the id of the flow to execute is derived from the pathInfo portion of the request URI. For example, http://localhost/app/hotels/booking?hotelId=1 results in a flow id of hotels/booking by default.

  • Override createExecutionInputMap(HttpServletRequest) when you need fine-grained control over extracting flow input parameters from the HttpServletRequest. By default, all request parameters are treated as flow input parameters.

  • Override handleExecutionOutcome when you need to handle specific flow execution outcomes in a custom manner. The default behavior sends a redirect to the ended flow's URL to restart a new execution of the flow.

  • Override handleException when you need fine-grained control over unhandled flow exceptions. The default behavior attempts to restart the flow when a client attempts to access an ended or expired flow execution. Any other exception is rethrown to the Spring MVC ExceptionResolver infrastructure by default.

Example FlowHandler

A common interaction pattern between Spring MVC And Web Flow is for a Flow to redirect to a @Controller when it ends. FlowHandlers allow this to be done without coupling the flow definition itself with a specific controller URL. An example FlowHandler that redirects to a Spring MVC Controller is shown below:

public class BookingFlowHandler extends AbstractFlowHandler {
    public String handleExecutionOutcome(FlowExecutionOutcome outcome,
                                         HttpServletRequest request, HttpServletResponse response) {
        if (outcome.getId().equals("bookingConfirmed")) {
            return "/booking/show?bookingId=" + outcome.getOutput().get("bookingId");
        } else {
            return "/hotels/index";
        }
    }
}
			

Since this handler only needs to handle flow execution outcomes in a custom manner, nothing else is overridden. The bookingConfirmed outcome will result in a redirect to show the new booking. Any other outcome will redirect back to the hotels index page.

Deploying a custom FlowHandler

To install a custom FlowHandler, simply deploy it as a bean. The bean name must match the id of the flow the handler should apply to.

<bean name="hotels/booking" class="org.springframework.webflow.samples.booking.BookingFlowHandler" />
			

With this configuration, accessing the resource /hotels/booking will launch the hotels/booking flow using the custom BookingFlowHandler. When the booking flow ends, the FlowHandler will process the flow execution outcome and redirect to the appropriate controller.

FlowHandler Redirects

A FlowHandler handling a FlowExecutionOutcome or FlowException returns a String to indicate the resource to redirect to after handling. In the previous example, the BookingFlowHandler redirects to the booking/show resource URI for bookingConfirmed outcomes, and the hotels/index resource URI for all other outcomes.

By default, returned resource locations are relative to the current servlet mapping. This allows for a flow handler to redirect to other Controllers in the application using relative paths. In addition, explicit redirect prefixes are supported for cases where more control is needed.

The explicit redirect prefixes supported are:

  • servletRelative: - redirect to a resource relative to the current servlet

  • contextRelative: - redirect to a resource relative to the current web application context path

  • serverRelative: - redirect to a resource relative to the server root

  • http:// or https:// - redirect to a fully-qualified resource URI

These same redirect prefixes are also supported within a flow definition when using the externalRedirect: directive in conjunction with a view-state or end-state; for example, view="externalRedirect:http://springframework.org"

10.5. View Resolution

Web Flow 2 maps selected view identifiers to files located within the flow's working directory unless otherwise specified. For existing Spring MVC + Web Flow applications, an external ViewResolver is likely already handling this mapping for you. Therefore, to continue using that resolver and to avoid having to change how your existing flow views are packaged, configure Web Flow as follows:

<webflow:flow-registry id="flowRegistry" flow-builder-services="flowBuilderServices">
    <webflow:location path="/WEB-INF/hotels/booking/booking.xml" />
</webflow:flow-registry>

<webflow:flow-builder-services id="flowBuilderServices" view-factory-creator="mvcViewFactoryCreator"/>

<bean id="mvcViewFactoryCreator" class="org.springframework.webflow.mvc.builder.MvcViewFactoryCreator">
    <property name="viewResolvers" ref="myExistingViewResolverToUseForFlows"/>
</bean>
		

The MvcViewFactoryCreator is the factory that allows you to configure how the Spring MVC view system is used inside Spring Web Flow. Use it to configure existing ViewResolvers, as well as other services such as a custom MessageCodesResolver. You may also enable data binding use Spring MVC's native BeanWrapper by setting the useSpringBinding flag to true. This is an alternative to using OGNL or the Unified EL for view-to-model data binding. See the JavaDoc API of this class for more information.

10.6. Signaling an event from a View

When a flow enters a view-state it pauses, redirects the user to its execution URL, and waits for a user event to resume. Events are generally signaled by activating buttons, links, or other user interface commands. How events are decoded server-side is specific to the view technology in use. This section shows how to trigger events from HTML-based views generated by templating engines such as JSP, Velocity, or Freemarker.

Using a named HTML button to signal an event

The example below shows two buttons on the same form that signal proceed and cancel events when clicked, respectively.

<input type="submit" name="_eventId_proceed" value="Proceed" />
<input type="submit" name="_eventId_cancel" value="Cancel" />		
			

When a button is pressed Web Flow finds a request parameter name beginning with _eventId_ and treats the remaining substring as the event id. So in this example, submitting _eventId_proceed becomes proceed. This style should be considered when there are several different events that can be signaled from the same form.

Using a hidden HTML form parameter to signal an event

The example below shows a form that signals the proceed event when submitted:

<input type="submit" value="Proceed" />
<input type="hidden" name="_eventId" value="proceed" />	
			

Here, Web Flow simply detects the special _eventId parameter and uses its value as the event id. This style should only be considered when there is one event that can be signaled on the form.

Using a HTML link to signal an event

The example below shows a link that signals the cancel event when activated:

<a href="${flowExecutionUrl}&_eventId=cancel">Cancel</a>		
			

Firing an event results in a HTTP request being sent back to the server. On the server-side, the flow handles decoding the event from within its current view-state. How this decoding process works is specific to the view implementation. Recall a Spring MVC view implementation simply looks for a request parameter named _eventId. If no _eventId parameter is found, the view will look for a parameter that starts with _eventId_ and will use the remaining substring as the event id. If neither cases exist, no flow event is triggered.

11. Spring JavaScript Quick Reference

11.1. Introduction

Spring Javascript (spring-js) is a lightweight abstraction over common JavaScript toolkits such as Dojo. It aims to provide a common client-side programming model for progressively enhancing a web page with rich widget behavior and Ajax remoting.

Use of the Spring JS API is demonstrated in the the Spring MVC + Web Flow version of the Spring Travel reference application. In addition, the JSF components provided as part of the Spring Faces library build on Spring.js.

11.2. Serving Javascript Resources

Spring JS provides a generic ResourceServlet to serve web resources such as JavaScript and CSS files from jar files, as well as the webapp root directory. This servlet provides a convenient way to serve Spring.js files to your pages. To deploy this servlet, declare the following in web.xml:

<!-- Serves static resource content from .jar files such as spring-js.jar -->
<servlet>
    <servlet-name>Resource Servlet</servlet-name>
    <servlet-class>org.springframework.js.resource.ResourceServlet</servlet-class>
</servlet>
        
<!-- Map all /resources requests to the Resource Servlet for handling -->
<servlet-mapping>
    <servlet-name>Resource Servlet</servlet-name>
    <url-pattern>/resources/*</url-pattern>
</servlet-mapping>
        

11.3. Including Spring Javascript in a Page

Spring JS is designed such that an implementation of its API can be built for any of the popular Javascript toolkits. The initial implementation of Spring.js builds on the Dojo toolkit.

Using Spring Javascript in a page requires including the underlying toolkit as normal, the Spring.js base interface file, and the Spring-(library implementation).js file for the underlying toolkit. As an example, the following includes obtain the Dojo implementation of Spring.js using the ResourceServlet:

<script type="text/javascript" src="<c:url value="/resources/dojo/dojo.js" />"> </script>
<script type="text/javascript" src="<c:url value="/resources/spring/Spring.js" />"> </script>
<script type="text/javascript" src="<c:url value="/resources/spring/Spring-Dojo.js" />"> </script>
        

When using the widget system of an underlying library, typically you must also include some CSS resources to obtain the desired look and feel. For the booking-mvc reference application, Dojo's tundra.css is included:

<link type="text/css" rel="stylesheet" href="<c:url value="/resources/dijit/themes/tundra/tundra.css" />" />
        

11.4. Spring Javascript Decorations

A central concept in Spring Javascript is the notion of applying decorations to existing DOM nodes. This technique is used to progressively enhance a web page such that the page will still be functional in a less capable browser. The addDecoration method is used to apply decorations.

The following example illustrates enhancing a Spring MVC <form:input> tag with rich suggestion behavior:

<form:input id="searchString" path="searchString"/>
<script type="text/javascript">
    Spring.addDecoration(new Spring.ElementDecoration({
        elementId: "searchString",
        widgetType: "dijit.form.ValidationTextBox",
        widgetAttrs: { promptMessage : "Search hotels by name, address, city, or zip." }}));
</script>
        

The ElementDecoration is used to apply rich widget behavior to an existing DOM node. This decoration type does not aim to completely hide the underlying toolkit, so the toolkit's native widget type and attributes are used directly. This approach allows you to use a common decoration model to integrate any widget from the underlying toolkit in a consistent manner. See the booking-mvc reference application for more examples of applying decorations to do things from suggestions to client-side validation.

When using the ElementDecoration to apply widgets that have rich validation behavior, a common need is to prevent the form from being submitted to the server until validation passes. This can be done with the ValidateAllDecoration:

<input type="submit" id="proceed" name="_eventId_proceed" value="Proceed" />
<script type="text/javascript">
    Spring.addDecoration(new Spring.ValidateAllDecoration({ elementId:'proceed', event:'onclick' }));
</script>
        

This decorates the "Proceed" button with a special onclick event handler that fires the client side validators and does not allow the form to submit until they pass successfully.

An AjaxEventDecoration applies a client-side event listener that fires a remote Ajax request to the server. It also auto-registers a callback function to link in the response:

<a id="prevLink" href="search?searchString=${criteria.searchString}&page=${criteria.page - 1}">Previous</a>
<script type="text/javascript">
    Spring.addDecoration(new Spring.AjaxEventDecoration({
        elementId: "prevLink",
        event: "onclick",
        params: { fragments: "body" }
    }));
</script>
        

This decorates the onclick event of the "Previous Results" link with an Ajax call, passing along a special parameter that specifies the fragment to be re-rendered in the response. Note that this link would still be fully functional if Javascript was unavailable in the client. (See the section on Handling Ajax Requests for details on how this request is handled on the server.)

It is also possible to apply more than one decoration to an element. The following example shows a button being decorated with Ajax and validate-all submit suppression:

<input type="submit" id="proceed" name="_eventId_proceed" value="Proceed" />  
<script type="text/javascript">
    Spring.addDecoration(new Spring.ValidateAllDecoration({elementId:'proceed', event:'onclick'}));
    Spring.addDecoration(new Spring.AjaxEventDecoration({elementId:'proceed', event:'onclick',formId:'booking', params:{fragments:'messages'}}));
</script>
        

It is also possible to apply a decoration to multiple elements in a single statement using Dojo's query API. The following example decorates a set of checkbox elements as Dojo Checkbox widgets:

<div id="amenities">
<form:checkbox path="amenities" value="OCEAN_VIEW" label="Ocean View" /></li>
<form:checkbox path="amenities" value="LATE_CHECKOUT" label="Late Checkout" /></li>
<form:checkbox path="amenities" value="MINIBAR" label="Minibar" /></li>
<script type="text/javascript">
    dojo.query("#amenities input[type='checkbox']").forEach(function(element) {
        Spring.addDecoration(new Spring.ElementDecoration({
            elementId: element.id,
            widgetType : "dijit.form.CheckBox",
            widgetAttrs : { checked : element.checked }
        }));
    });
</script>
</div>
        

11.5. Handling Ajax Requests

Spring Javascript's client-side Ajax response handling is built upon the notion of receiving "fragments" back from the server. These fragments are just standard HTML that is meant to replace portions of the existing page. The key piece needed on the server is a way to determine which pieces of a full response need to be pulled out for partial rendering.

In order to be able to render partial fragments of a full response, the full response must be built using a templating technology that allows the use of composition for constructing the response, and for the member parts of the composition to be referenced and rendered individually. Spring Javascript provides some simple Spring MVC extensions that make use of Tiles to achieve this. The same technique could theoretically be used with any templating system supporting composition.

Spring Javascript's Ajax remoting functionality is built upon the notion that the core handling code for an Ajax request should not differ from a standard browser request, thus no special knowledge of an Ajax request is needed directly in the code and the same hanlder can be used for both styles of request.

Providing a Library-Specific AjaxHandler

The key interface for integrating various Ajax libraries with the Ajax-aware behavior of Web Flow (such as not redirecting for a partial page update) is org.springframework.js.AjaxHandler. A SpringJavascriptAjaxHandler is configured by default that is able to detect an Ajax request submitted via the Spring JS client-side API and can respond appropriately in the case where a redirect is required. In order to integrate a different Ajax library (be it a pure JavaScript library, or a higher-level abstraction such as an Ajax-capable JSF component library), a custom AjaxHandler can be injected into the FlowHandlerAdapter or FlowController.

Handling Ajax Requests with Spring MVC Controllers

In order to handle Ajax requests with Spring MVC controllers, all that is needed is the configuration of the provided Spring MVC extensions in your Spring application context for rendering the partial response (note that these extensions require the use of Tiles for templating):

<bean id="tilesViewResolver" class="org.springframework.js.ajax.AjaxUrlBasedViewResolver">
    <property name="viewClass" value="org.springframework.webflow.mvc.view.FlowAjaxTilesView"/>
</bean>
            

This configures the AjaxUrlBasedViewResolver which in turn interprets Ajax requests and creates FlowAjaxTilesView objects to handle rendering of the appropriate fragments. Note that FlowAjaxTilesView is capable of handling the rendering for both Web Flow and pure Spring MVC requests. The fragments correspond to individual attributes of a Tiles view definition. For example, take the following Tiles view definition:

<definition name="hotels/index" extends="standardLayout">
    <put-attribute name="body" value="index.body" />
</definition>

<definition name="index.body" template="/WEB-INF/hotels/index.jsp">
    <put-attribute name="hotelSearchForm" value="/WEB-INF/hotels/hotelSearchForm.jsp" />
    <put-attribute name="bookingsTable" value="/WEB-INF/hotels/bookingsTable.jsp" />
</definition>
            

An Ajax request could specify the "body", "hotelSearchForm" or "bookingsTable" to be rendered as fragments in the request.

Handling Ajax Requests with Spring MVC + Spring Web Flow

Spring Web Flow handles the optional rendering of fragments directly in the flow definition language through use of the render element. The benefit of this approach is that the selection of fragments is completely decoupled from client-side code, such that no special parameters need to be passed with the request the way they currently must be with the pure Spring MVC controller approach. For example, if you wanted to render the "hotelSearchForm" fragment from the previous example Tiles view into a rich Javascript popup:

<view-state id="changeSearchCriteria" view="enterSearchCriteria.xhtml" popup="true">
    <on-entry>
        <render fragments="hotelSearchForm" />
    </on-entry>
    <transition on="search" to="reviewHotels">
        <evaluate expression="searchCriteria.resetPage()"/>
    </transition>
</view-state>                
            

12. JSF Integration

12.1. Introduction

Spring Faces is Spring's JSF integration module that simplifies using JSF with Spring. It lets you use the JSF UI Component Model with Spring MVC and Spring Web Flow controllers.

Spring Faces also includes a small Facelets component library that provides Ajax and client-side validation capabilities. This component library builds on Spring Javascript, a Javascript abstraction framework that integrates Dojo as the underlying UI toolkit.

12.2. Spring-centric Integration Approach

Spring Faces combines the strengths of JSF, its UI component model, with the strengths of Spring, its controller and configuration model. This brings you all the strengths of JSF without any of the weaknesses.

Spring Faces provides a powerful supplement to a number of the standard JSF facilities, including:

  1. managed bean facility
  2. scope management
  3. event handling
  4. navigation rules
  5. easy modularization and packaging of views
  6. cleaner URLs
  7. model-level validation
  8. client-side validation and UI enhancement
  9. Ajax partial page updates and full navigation
  10. progressive enhancement and graceful degradation

Using these features will significantly reduce the amount of configuration required in faces-config.xml while providing a cleaner separation between the view and controller layer and better modularization of your application's functional responsibilities. These use of these features are outlined in the sections to follow. As the majority of these features build on the flow definition language of Spring Web Flow, it is assumed that you have an understanding of the foundations presented in Defining Flows .

12.3. Configuring web.xml

The first step to using Spring Faces is to route requests to the DispatcherServlet in the web.xml file. In this example, we map all URLs that begin with /spring/ to the servlet. The servlet needs to be configured. An init-param is used in the servlet to pass the contextConfigLocation . This is the location of the Spring configuration for your application.

<servlet>
    <servlet-name>Spring MVC Dispatcher Servlet</servlet-name>
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
    <init-param>
        <param-name>contextConfigLocation</param-name>
        <param-value>/WEB-INF/web-application-config.xml</param-value>
    </init-param>
    <load-on-startup>1</load-on-startup>
</servlet>
    
<servlet-mapping>
    <servlet-name>Spring MVC Dispatcher Servlet</servlet-name>
    <url-pattern>/spring/*</url-pattern>
</servlet-mapping>
        

In order for JSF to bootstrap correctly, the FacesServlet must be configured in web.xml as it normally would even though you generally will not need to route requests through it at all when using Spring Faces.

<!-- Just here so the JSF implementation can initialize, *not* used at runtime -->
<servlet>
    <servlet-name>Faces Servlet</servlet-name>
    <servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
    <load-on-startup>1</load-on-startup>
</servlet>
    
<!-- Just here so the JSF implementation can initialize -->
<servlet-mapping>
    <servlet-name>Faces Servlet</servlet-name>
    <url-pattern>*.faces</url-pattern>
</servlet-mapping>
        

When using the Spring Faces components, you also need to configure the Spring JavaScript ResourceServlet so that CSS and JavaScript resources may be output correctly by the components. This servlet must be mapped to /resources/* in order for the URL's rendered by the components to function correctly.

<!-- Serves static resource content from .jar files such as spring-faces.jar -->
<servlet>
    <servlet-name>Resource Servlet</servlet-name>
    <servlet-class>org.springframework.js.resource.ResourceServlet</servlet-class>
    <load-on-startup>0</load-on-startup>
</servlet>
        
<!-- Map all /resources requests to the Resource Servlet for handling -->
<servlet-mapping>
    <servlet-name>Resource Servlet</servlet-name>
    <url-pattern>/resources/*</url-pattern>
</servlet-mapping>
        

The Spring Faces components require the use of Facelets instead of JSP, so the typical Facelets configuration must be added as well when using these components.

!-- Use JSF view templates saved as *.xhtml, for use with Facelets -->
<context-param>
    <param-name>javax.faces.DEFAULT_SUFFIX</param-name>
    <param-value>.xhtml</param-value>
</context-param>
        

For optimal page-loading performance, the Spring Faces component library includes a few special components: includeStyles and includeScripts. These components will eagerly load the neccessary CSS stylesheets and JavaScript files at the position they are placed in your JSF view template. In accordance with the recommendations of the Yahoo Performance Guildlines, these two tags should be placed in the head section of any page that uses the Spring Faces components. For example:

 
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<f:view xmlns="http://www.w3.org/1999/xhtml"
      xmlns:ui="http://java.sun.com/jsf/facelets"
      xmlns:f="http://java.sun.com/jsf/core"
	  xmlns:c="http://java.sun.com/jstl/core"
	  xmlns:sf="http://www.springframework.org/tags/faces"
	  contentType="text/html" encoding="UTF-8">
<html>
<head>
	<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
	<title>Spring Faces: Hotel Booking Sample Application</title>
	
	<sf:includeStyles />
	<sf:includeScripts />
	
	<ui:insert name="headIncludes"/>
</head>
...
</html>
</f:view>
	

This shows the opening of a typical Facelets XHTML layout template that uses these components to force the loading of the needed CSS and JavaScript resources at the ideal position.

The includeStyles component includes the necessary resources for the Dojo widget theme. By default, it includes the resources for the "tundra" theme. An alternate theme may be selected by setting the optional "theme" and "themePath" attributes on the includeStyles component. For example:

 
<sf:includeStyles themePath="/styles/" theme="foobar"/>

will try to load a CSS stylesheet at "/styles/foobar/foobar.css" using the Spring JavaScript ResourceServlet.

12.4. Configuring Web Flow to render JSF views

The next step is to configure Web Flow to render JSF views. To do this, in your Spring Web Flow configuration include the faces namespace and link in the faces flow-builder-services :

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xmlns:webflow="http://www.springframework.org/schema/webflow-config"
       xmlns:faces="http://www.springframework.org/schema/faces"
       xsi:schemaLocation="
           http://www.springframework.org/schema/beans
           http://www.springframework.org/schema/beans/spring-beans-2.5.xsd
           http://www.springframework.org/schema/webflow-config
           http://www.springframework.org/schema/webflow-config/spring-webflow-config-2.0.xsd
           http://www.springframework.org/schema/faces
           http://www.springframework.org/schema/faces/spring-faces-2.0.xsd">

	<!-- Executes flows: the central entry point into the Spring Web Flow system -->
	<webflow:flow-executor id="flowExecutor" />

	<!-- The registry of executable flow definitions -->
	<webflow:flow-registry id="flowRegistry" flow-builder-services="facesFlowBuilderServices" base-path="/WEB-INF">
		<webflow:flow-location-pattern value="**/*-flow.xml" />
	</webflow:flow-registry>

	<!-- Configures the Spring Web Flow JSF integration -->
	<faces:flow-builder-services id="facesFlowBuilderServices" />

</beans>
        

The faces:flow-builder-services tag also configures several other defaults appropriate for a JSF environment. Specifically, the Unified EL is configured as the default Expression Language.

See the swf-booking-faces reference application in the distribution for a complete working example.

12.5. Configuring faces-config.xml

The only configuration needed in faces-config.xml is specific to the use of Facelets. If you are using JSP and not using the Spring Faces components, you do not need to add anything specific to Spring Faces to your faces-config.xml

<faces-config>
    <application>
        <!-- Enables Facelets -->
        <view-handler>com.sun.facelets.FaceletViewHandler</view-handler>  
    </application>
</faces-config>
        

12.6. Replacing the JSF Managed Bean Facility

Spring Faces allows you to completely replace the JSF managed bean facility with a combination of flow-managed variables and Spring managed beans. It gives you a good deal more control over the lifecycle of your managed objects with well-defined hooks for initialization and execution of your domain model. Additionally, since you are presumably already using Spring for your business layer, it reduces the conceptual overhead of having to maintain two different managed bean models.

In doing pure JSF development, you will quickly find that request scope is not long-lived enough for storing conversational model objects that drive complex event-driven views. The only available option is to begin putting things into session scope, with the extra burden of needing to clean the objects up before progressing to another view or functional area of the application. What is really needed is a managed scope that is somewhere between request and session scope. Fortunately web flow provides such extended facilities.

Using Flow Variables

The easiest and most natural way to declare and manage the model is through the use of flow variables . You can declare these variables at the beginning of the flow:

<var name="searchCriteria" class="com.mycompany.myapp.hotels.search.SearchCriteria"/>
            

and then reference this variable in one of the flow's JSF view templates through EL:

<h:inputText id="searchString" value="#{searchCriteria.searchString}"/>
            

Note that you do not need to prefix the variable with its scope when referencing it from the template (though you can do so if you need to be more specific). As with standard JSF beans, all available scopes will be searched for a matching variable, so you could change the scope of the variable in your flow definition without having to modify the EL expressions that reference it.

You can also define view instance variables that are scoped to the current view and get cleaned up automatically upon transitioning to another view. This is quite useful with JSF as views are often constructed to handle multiple in-page events across many requests before transitioning to another view.

To define a view instance variable, you can use the var element inside a view-state definition:

<view-state id="enterSearchCriteria"> 
    <var name="searchCriteria" class="com.mycompany.myapp.hotels.search.SearchCriteria"/> 
</view-state>
            

Using Scoped Spring Beans

Though defining autowired flow instance variables provides nice modularization and readability, occasions may arise where you want to utilize the other capabilities of the Spring container such as AOP. In these cases, you can define a bean in your Spring ApplicationContext and give it a specific web flow scope:

<bean id="searchCriteria" class="com.mycompany.myapp.hotels.search.SearchCriteria" scope="flow"/>
            

The major difference with this approach is that the bean will not be fully initialized until it is first accessed via an EL expression. This sort of lazy instantiation via EL is quite similar to how JSF managed beans are typically allocated.

Manipulating The Model

The need to initialize the model before view rendering (such as by loading persistent entities from a database) is quite common, but JSF by itself does not provide any convenient hooks for such initialization. The flow definition language provides a natural facility for this through its Actions . Spring Faces provides some extra conveniences for converting the outcome of an action into a JSF-specific data structure. For example:

 
<on-render>
    <evaluate expression="bookingService.findBookings(currentUser.name)" 
              result="viewScope.bookings" result-type="dataModel" />
</on-render>
            

This will take the result of the bookingService.findBookings method an wrap it in a custom JSF DataModel so that the list can be used in a standard JSF DataTable component:

 
<h:dataTable id="bookings" styleClass="summary" value="#{bookings}" var="booking" 
             rendered="#{bookings.rowCount > 0}">
    <h:column>
        <f:facet name="header">Name</f:facet>
        #{booking.hotel.name}
    </h:column>                   
    <h:column>
    <f:facet name="header">Confirmation number</f:facet>
        #{booking.id}
        </h:column>
    <h:column>
        <f:facet name="header">Action</f:facet>
        <h:commandLink id="cancel" value="Cancel" action="cancelBooking" />
    </h:column>
</h:dataTable>
            

The custom DataModel provides some extra conveniences such as being serializable for storage beyond request scope and access to the currently selected row in EL expressions. For example, on postback from a view where the action event was fired by a component within a DataTable, you can take action on the selected row's model instance:

<transition on="cancelBooking">
    <evaluate expression="bookingService.cancelBooking(bookings.selectedRow)" />            
</transition>
            

12.7. Handling JSF Events With Spring Web Flow

Spring Web Flow allows you to handle JSF action events in a decoupled way, requiring no direct dependencies in your Java code on JSF API's. In fact, these events can often be handled completely in the flow definiton language without requiring any custom Java action code at all. This allows for a more agile development process since the artifacts being manipulated in wiring up events (JSF view templates and SWF flow definitions) are instantly refreshable without requiring a build and re-deploy of the whole application.

Handling JSF In-page Action Events

A simple but common case in JSF is the need to signal an event that causes manipulation of the model in some way and then redisplays the same view to reflect the changed state of the model. The flow definition language has special support for this in the transition element.

A good example of this is a table of paged list results. Suppose you want to be able to load and display only a portion of a large result list, and allow the user to page through the results. The initial view-state definition to load and display the list would be:

 
<view-state id="reviewHotels">
    <on-render>
        <evaluate expression="bookingService.findHotels(searchCriteria)" 
                  result="viewScope.hotels" result-type="dataModel" />
    </on-render>
</view-state>
            

You construct a JSF DataTable that displays the current hotels list, and then place a "More Results" link below the table:

 
<h:commandLink id="nextPageLink" value="More Results" action="next"/>
            

This commandLink signals a "next" event from its action attribute. You can then handle the event by adding to the view-state definition:

 
<view-state id="reviewHotels">
    <on-render>
        <evaluate expression="bookingService.findHotels(searchCriteria)" 
            result="viewScope.hotels" result-type="dataModel" />
    </on-render>
    <transition on="next">
        <evaluate expression="searchCriteria.nextPage()" />
    </transition>
</view-state>
            

Here you handle the "next" event by incrementing the page count on the searchCriteria instance. The on-render action is then called again with the updated criteria, which causes the next page of results to be loaded into the DataModel. The same view is re-rendered since there was no to attribute on the transition element, and the changes in the model are reflected in the view.

Handling JSF Action Events

The next logical level beyond in-page events are events that require navigation to another view, with some manipulation of the model along the way. Achieving this with pure JSF would require adding a navigation rule to faces-config.xml and likely some intermediary Java code in a JSF managed bean (both tasks requiring a re-deploy). With the flow defintion language, you can handle such a case concisely in one place in a quite similar way to how in-page events are handled.

Continuing on with our use case of manipulating a paged list of results, suppose we want each row in the displayed DataTable to contain a link to a detail page for that row instance. You can add a column to the table containing the following commandLink component:

<h:commandLink id="viewHotelLink" value="View Hotel" action="select"/>
            

This raises the "select" event which you can then handle by adding another transition element to the existing view-state :

 
<view-state id="reviewHotels">
    <on-render>
        <evaluate expression="bookingService.findHotels(searchCriteria)" 
            result="viewScope.hotels" result-type="dataModel" />
    </on-render>
    <transition on="next">
        <evaluate expression="searchCriteria.nextPage()" />
    </transition>
    <transition on="select" to="reviewHotel">
            <set name="flowScope.hotel" value="hotels.selectedRow" />
    </transition>
</view-state>
            

Here the "select" event is handled by pushing the currently selected hotel instance from the DataTable into flow scope, so that it may be referenced by the "reviewHotel" view-state .

Performing Model Validation

JSF provides useful facilities for validating input at field-level before changes are applied to the model, but when you need to then perform more complex validation at the model-level after the updates have been applied, you are generally left with having to add more custom code to your JSF action methods in the managed bean. Validation of this sort is something that is generally a responsibility of the domain model itself, but it is difficult to get any error messages propagated back to the view without introducing an undesirable dependency on the JSF API in your domain layer.

With Spring Faces, you can utilize the generic and low-level MessageContext in your business code and any messages added there will then be available to the FacesContext at render time.

For example, suppose you have a view where the user enters the necessary details to complete a hotel booking, and you need to ensure the Check In and Check Out dates adhere to a given set of business rules. You can invoke such model-level validation from a transition element:

 
<view-state id="enterBookingDetails">
    <transition on="proceed" to="reviewBooking">
        <evaluate expression="booking.validateEnterBookingDetails(messageContext)" />
    </transition>
</view-state>
            

Here the "proceed" event is handled by invoking a model-level validation method on the booking instance, passing the generic MessageContext instance so that messages may be recorded. The messages can then be displayed along with any other JSF messages with the h:messages component,

Handling Ajax Events

Spring Faces provides some special UICommand components that go beyond the standard JSF components by adding the ability to do Ajax-based partial view updates. These components degrade gracefully so that the flow will still be fully functional by falling back to full page refreshes if a user with a less capable browser views the page.

[Note]Note
Though the core JSF support in Spring Faces is JSF 1.1-compatible, the Spring Faces Ajax components require JSF 1.2.

Revisiting the earlier example with the paged table, you can change the "More Results" link to use an Ajax request by replacing the standard commandButton with the Spring Faces version (note that the Spring Faces command components use Ajax by default, but they can alternately be forced to use a normal form submit by setting ajaxEnabled="false" on the component):

            
<sf:commandLink id="nextPageLink" value="More Results" action="next" />
            

This event is handled just as in the non-Ajax case with the transition element, but now you will add a special render action that specifies which portions of the component tree need to be re-rendered:

<view-state id="reviewHotels">
    <on-render>
        <evaluate expression="bookingService.findHotels(searchCriteria)" 
                  result="viewScope.hotels" result-type="dataModel" />
    </on-render>
    <transition on="next">
        <evaluate expression="searchCriteria.nextPage()" />
        <render fragments="hotels:searchResultsFragment" />
    </transition>
</view-state>
            

The fragments="hotels:searchResultsFragment" is an instruction that will be interpreted at render time, such that only the component with the JSF clientId "hotels:searchResultsFragment" will be rendered and returned to the client. This fragment will then be automatically replaced in the page. The fragments attribute can be a comma-delimited list of ids, with each id representing the root node of a subtree (meaning the root node and all of its children) to be rendered. If the "next" event is fired in a non-Ajax request (i.e., if JavaScript is disabled on the client), the render action will be ignored and the full page will be rendered as normal.

In addition to the Spring Faces commandLink component, there is a corresponding commandButton component with the same functionality. There is also a special ajaxEvent component that will raise a JSF action even in response to any client-side DOM event. See the Spring Faces tag library docs for full details.

An additional built-in feature when using the Spring Faces Ajax components is the ability to have the response rendered inside a rich modal popup widget by setting popup="true" on a view-state .

<view-state id="changeSearchCriteria" view="enterSearchCriteria.xhtml" popup="true">
    <on-entry>
        <render fragments="hotelSearchFragment" />
    </on-entry>
    <transition on="search" to="reviewHotels">
        <evaluate expression="searchCriteria.resetPage()"/>
    </transition>
</view-state>
            

If the "changeSearchCriteria" view-state is reached as the result of an Ajax-request, the result will be rendered into a rich popup. If JavaScript is unavailable, the request will be processed with a full browser refresh, and the "changeSearchCriteria" view will be rendered as normal.

12.8. Enhancing The User Experience With Rich Web Forms

JSF and Web Flow combine to provide an extensive server-side validation model for your web application, but excessive roundtrips to the server to execute this validation and return error messages can be a tedious experience for your users. Spring Faces provides a number of client-side rich validation controls that can enhance the user experience by applying simple validations that give immediate feedback. Some simple examples are illustrated below. See the Spring Faces taglib docs for a complete tag reference.

Validating a Text Field

Simple client-side text validation can be applied with the clientTextValidator component:

 
<sf:clientTextValidator required="true">
    <h:inputText id="creditCardName" value="#{booking.creditCardName}" required="true"/>
</sf:clientTextValidator>
            

This will apply client-side required validation to the child inputText component, giving the user a clear indicator if the field is left blank.

Validating a Numeric Field

Simple client-side numeric validation can be applied with the clientNumberValidator component:

 
<sf:clientTextValidator required="true" regExp="[0-9]{16}" 
                        invalidMessage="A 16-digit credit card number is required.">
    <h:inputText id="creditCard" value="#{booking.creditCard}" required="true"/>
</sf:clientTextValidator>
            

This will apply client-side validation to the child inputText component, giving the user a clear indicator if the field is left blank, is not numeric, or does not match the given regular expression.

Validating a Date Field

Simple client-side date validation with a rich calendar popup can be applied with the clientDateValidator component:

 
<sf:clientDateValidator required="true" >
    <h:inputText id="checkinDate" value="#{booking.checkinDate}" required="true">
        <f:convertDateTime pattern="yyyy-MM-dd" timeZone="EST"/>
    </h:inputText>
</sf:clientDateValidator>
            

This will apply client-side validation to the child inputText component, giving the user a clear indicator if the field is left blank or is not a valid date.

Preventing an Invalid Form Submission

The validateAllOnClick component can be used to intercept the "onclick" event of a child component and suppress the event if all client-side validations do not pass.

 
<sf:validateAllOnClick>
    <sf:commandButton id="proceed" action="proceed" processIds="*" value="Proceed"/>&#160;
</sf:validateAllOnClick>
            

This will prevent the form from being submitted when the user clicks the "proceed" button if the form is invalid. When the validations are executed, the user is given clear and immediate indicators of the problems that need to be corrected.

12.9. Third-Party Component Library Integration

Spring Faces strives to be compatible with any third-party JSF component library. By honoring all of the standard semantics of the JSF specification within the SWF-driven JSF lifecycle, third-party libraries in general should "just work". The main thing to remember is that configuration in web.xml will change slightly since Spring Faces requests are not routed through the standard FacesServlet. Typically, anything that is traditionally mapped to the FacesServlet should be mapped to the Spring DispatcherServlet instead. (You can also map to both if for example you are migrating a legacy JSF application page-by-page.) In some cases, a deeper level of integration can be achieved by configuring special flow services that are "aware" of a particular component library, and these will be noted in the examples to follow.

Rich Faces Integration

To use the Rich Faces component library with Spring Faces, the following filter configuration is needed in web.xml (in addition to the typical Spring Faces configuration):

 
<filter> 
    <display-name>RichFaces Filter</display-name> 
    <filter-name>richfaces</filter-name> 
    <filter-class>org.ajax4jsf.Filter</filter-class> 
</filter> 

<filter-mapping> 
    <filter-name>richfaces</filter-name> 
    <servlet-name>Spring Web MVC Dispatcher Servlet</servlet-name>
    <dispatcher>REQUEST</dispatcher>
    <dispatcher>FORWARD</dispatcher>
    <dispatcher>INCLUDE</dispatcher>
</filter-mapping>
            

For deeper integration (including the ability to have a view with combined use of the Spring Faces Ajax components and Rich Faces Ajax components), configure the RichFacesAjaxHandler on your FlowController:

 
<bean id="flowController" class="org.springframework.webflow.mvc.servlet.FlowController">
    <property name="flowExecutor" ref="flowExecutor" />
    <property name="ajaxHandler">
        <bean class="org.springframework.faces.richfaces.RichFacesAjaxHandler"/>
    </property>
</bean>
            

RichFaces Ajax components can be used in conjunction with the render tag to render partial fragments on an Ajax request. Instead of embedding the ids of the components to be re-rendered directly in the view template (as you traditionally do with Rich Faces), you can bind the reRender attribute of a RichFaces Ajax component to a special flowRenderFragments EL variable. For example, in your view template you can have a fragment that you would potentially like to re-render in response to a particular event:

<h:form id="hotels">
    <a4j:outputPanel id="searchResultsFragment">
        <h:outputText id="noHotelsText" value="No Hotels Found" rendered="#{hotels.rowCount == 0}"/>
        <h:dataTable id="hotels" styleClass="summary" value="#{hotels}" var="hotel" rendered="#{hotels.rowCount > 0}">
            <h:column>
                <f:facet name="header">Name</f:facet>
                #{hotel.name}
            </h:column>
            <h:column>
                <f:facet name="header">Address</f:facet>
                #{hotel.address}
            </h:column>
        </h:dataTable>
    </a4j:outputPanel>
</h:form>
            

then a RichFaces Ajax commandLink to fire the event:

<a4j:commandLink id="nextPageLink" value="More Results" action="next" reRender="#{flowRenderFragments}" />
            

and then in your flow definition a transition to handle the event:

<transition on="next">
    <evaluate expression="searchCriteria.nextPage()" />
    <render fragments="hotels:searchResultsFragment" />
</transition>
            

Apache MyFaces Trinidad Integration

The Apache MyFaces Trinidad library has been tested with the Spring Faces integration and proven to fit in nicely. Deeper integration to allow the Trinidad components and Spring Faces components to play well together has not yet been attempted, but Trinidad provides a pretty thorough solution on its own when used in conjunction with the Spring Faces integration layer.

NOTE - An AjaxHandler implementation for Trinidad is not currently provided out-of-the-box with Spring Faces. In order to fully integrate with Trinidad's PPR functionality, a custom implementation should be provided. An community-provided partial example can be found here: SWF-1160

Typical Trinidad + Spring Faces configuration is as follows in web.xml (in addition to the typical Spring Faces configuration):

<context-param>
    <param-name>javax.faces.STATE_SAVING_METHOD</param-name>
    <param-value>server</param-value>
</context-param>

<context-param>
    <param-name>
        org.apache.myfaces.trinidad.CHANGE_PERSISTENCE
    </param-name>
    <param-value>session</param-value>
</context-param>

<context-param>
    <param-name>
        org.apache.myfaces.trinidad.ENABLE_QUIRKS_MODE
    </param-name>
    <param-value>false</param-value>
</context-param>

<filter>
    <filter-name>Trinidad Filter</filter-name>
    <filter-class>
        org.apache.myfaces.trinidad.webapp.TrinidadFilter
    </filter-class>
</filter>

<filter-mapping>
    <filter-name>Trinidad Filter</filter-name>
    <servlet-name>Spring MVC Dispatcher Servlet</servlet-name>
</filter-mapping>

<servlet>
    <servlet-name>Trinidad Resource Servlet</servlet-name>
    <servlet-class>
        org.apache.myfaces.trinidad.webapp.ResourceServlet
    </servlet-class>
</servlet>

<servlet-mapping>
    <servlet-name>resources</servlet-name>
    <url-pattern>/adf/*</url-pattern>
</servlet-mapping>

            

13. Portlet Integration

13.1. Introduction

This chapter shows how to use Web Flow in a Portlet environment. Web Flow has full support for JSR-168 portlets. The booking-portlet-mvc sample application is a good reference for using Web Flow within a portlet. This application is a simplified travel site that allows users to search for and book hotel rooms.

13.2. Configuring web.xml and portlet.xml

The configuration for a portlet depends on the portlet container used. The sample applications, included with Web Flow, are both configured to use Apache Pluto, the JSR-168 reference implementation.

In general, the configuration requires adding a servlet mapping in the web.xml file to dispatch request to the portlet container.

<servlet>
    <servlet-name>swf-booking-mvc</servlet-name>
    <servlet-class>org.apache.pluto.core.PortletServlet</servlet-class>
    <init-param>
        <param-name>portlet-name</param-name>
        <param-value>swf-booking-mvc</param-value>
    </init-param>
    <load-on-startup>1</load-on-startup>
</servlet>

<servlet-mapping>
    <servlet-name>swf-booking-mvc</servlet-name>
    <url-pattern>/PlutoInvoker/swf-booking-mvc</url-pattern>
</servlet-mapping>
		

The portlet.xml configuration is a standard portlet configuration. The portlet-class needs to be set along with a pair of init-params. Setting the expiration-cache to 0 is recommended to force Web Flow to always render a fresh view.

<portlet>
    ...
    <portlet-class>org.springframework.web.portlet.DispatcherPortlet</portlet-class>
    <init-param>
        <name>contextConfigLocation</name>
        <value>/WEB-INF/web-application-config.xml</value>
    </init-param>
    <init-param>
        <name>viewRendererUrl</name>
        <value>/WEB-INF/servlet/view</value>
    </init-param>
    <expiration-cache>0</expiration-cache>
    ...
</portlet>
		

13.3. Configuring Spring

Flow Handlers

The only supported mechanism for bridging a portlet request to Web Flow is a FlowHandler. The PortletFlowController used in Web Flow 1.0 is no longer supported.

The flow handler, similar to the servlet flow handler, provides hooks that can:

  • select the flow to execute

  • pass input parameters to the flow on initialization

  • handle the flow execution outcome

  • handle exceptions

The AbstractFlowHandler class is an implementation of FlowHandler that provides default implementations for these hooks.

In a portlet environment the targeted flow id can not be inferred from the URL and must be defined explicitly in the handler.

public class ViewFlowHandler extends AbstractFlowHandler {
    public String getFlowId() {
        return "view";
    }
}
			

Handler Mappings

Spring Portlet MVC provides a rich set of methods to map portlet requests. Complete documentation is available in the Spring Reference Documentation.

The booking-portlet-mvc sample application uses a PortletModeHandlerMapping to map portlet requests. The sample application only supports view mode, but support for other portlet modes is available. Other modes can be added and point to the same flow as view mode, or any other flow.

<bean id="portletModeHandlerMapping" 
      class="org.springframework.web.portlet.handler.PortletModeHandlerMapping">
    <property name="portletModeMap">
        <map>
            <entry key="view">
                <bean class="org.springframework.webflow.samples.booking.ViewFlowHandler" />
            </entry>
        </map>
    </property>
</bean>
			

Flow Handler Adapter

A FlowHandlerAdapter converts the handler mappings to the flow handlers. The flow executor is required as a constructor argument.

<bean id="flowHandlerAdapter" 
      class="org.springframework.webflow.mvc.portlet.FlowHandlerAdapter">
    <constructor-arg ref="flowExecutor" />
</bean>
			

13.4. Portlet Views

In order to facilitate view rendering, a ViewRendererServlet must be added to the web.xml file. This servlet is not invoked directly, but it used by Web Flow to render views in a portlet environment.

<servlet>
    <servlet-name>ViewRendererServlet</servlet-name>
    <servlet-class>org.springframework.web.servlet.ViewRendererServlet</servlet-class>
</servlet>

<servlet-mapping>
    <servlet-name>ViewRendererServlet</servlet-name>
    <url-pattern>/WEB-INF/servlet/view</url-pattern>
</servlet-mapping>
		

13.5. Portlet Modes and Window States

Window State

The Portlet API defined three window states: normal, minimized and maximized. The portlet implementation must decide what to render for each of these window states. Web Flow exposes the string value of the window state under portletWindowState via the request map on the external context.

requestContext.getExternalContext().getRequestMap().get("portletWindowState");
			
externalContext.requestMap.portletWindowState
			

Portlet Mode

The Portlet API defined three portlet modes: view, edit and help. The portlet implementation must decide what to render for each of these modes. Web Flow exposes the string value of the portlet mode under portletMode via the request map on the external context.

requestContext.getExternalContext().getRequestMap().get("portletMode");
			
externalContext.requestMap.portletMode
			

13.6. Issues in a Portlet Environment

Redirects

The Portlet API only allows redirects to be requested from an action request. Because views are rendered on the render request, views and view-states cannot trigger a redirect.

The externalRedirect: view prefix is a convenience for Servlet based flows. An IllegalStateException is thrown if a redirect is requested from a render request.

end-state redirects can be achieved by implementing FlowHandler.handleExecutionOutcome. This callback provides the ActionResponse object which supports redirects.

Switching Portlet Modes

The portlet container passes the execution key from the previous flow when switching to a new mode. Even if the mode is mapped to a different FlowHandler the flow execution will resume the previous execution. You may switch the mode programatically in your FlowHandler after ending a flow in an ActionRequest.

One way to start a new flow is to create a URL targeting the mode without the execution key.

Portlets and JSF

Web Flow supports JSF as the view technology for a portlet. However, a jsf-portlet bridge (JSR-301) must be provided. At the time of this writing, no feature complete jsf-portlet bridge exists. Some of the existing bridge implementations may appear to work, however, side effect may occur.

JSF portlets are considered experimental at this time.

14. Testing flows

14.1. Introduction

This chapter shows you how to test flows.

14.2. Extending AbstractXmlFlowExecutionTests

To test the execution of a XML-based flow definition, extend AbstractXmlFlowExecutionTests:

public class BookingFlowExecutionTests extends AbstractXmlFlowExecutionTests {

}
		

14.3. Specifying the path to the flow to test

At a minimum, you must override getResource(FlowDefinitionResourceFactory) to return the path to the flow you wish to test:

@Override
protected FlowDefinitionResource getResource(FlowDefinitionResourceFactory resourceFactory) {
    return resourceFactory.createFileResource("src/main/webapp/WEB-INF/hotels/booking/booking.xml");
}
		

14.4. Registering flow dependencies

If your flow has dependencies on externally managed services, also override configureFlowBuilderContext(MockFlowBuilderContext) to register stubs or mocks of those services:

@Override
protected void configureFlowBuilderContext(MockFlowBuilderContext builderContext) {
    builderContext.registerBean("bookingService", new StubBookingService());
}
        

If your flow extends from another flow, or has states that extend other states, also override getModelResources(FlowDefinitionResourceFactory) to return the path to the parent flows.

@Override
protected FlowDefinitionResource[] getModelResources(FlowDefinitionResourceFactory resourceFactory) {
   return new FlowDefinitionResource[] {
       resourceFactory.createFileResource("src/main/webapp/WEB-INF/common/common.xml")
   };
}
		

14.5. Testing flow startup

Have your first test exercise the startup of your flow:

public void testStartBookingFlow() {

    Booking booking = createTestBooking();

    MutableAttributeMap input = new LocalAttributeMap();
    input.put("hotelId", "1");
    MockExternalContext context = new MockExternalContext();
    context.setCurrentUser("keith");
    startFlow(input, context);

    assertCurrentStateEquals("enterBookingDetails");
    assertTrue(getRequiredFlowAttribute("booking") instanceof Booking);
}
        

Assertions generally verify the flow is in the correct state you expect.

14.6. Testing flow event handling

Define additional tests to exercise flow event handling behavior. You goal should be to exercise all paths through the flow. You can use the convenient setCurrentState(String) method to jump to the flow state where you wish to begin your test.

public void testEnterBookingDetails_Proceed() {

    setCurrentState("enterBookingDetails");
    
    getFlowScope().put("booking", createTestBooking());

    MockExternalContext context = new MockExternalContext();
    context.setEventId("proceed");
    resumeFlow(context);

    assertCurrentStateEquals("reviewBooking");
}
		

14.7. Mocking a subflow

To test calling a subflow, register a mock implementation of the subflow that asserts input was passed in correctly and returns the correct outcome for your test scenario.

public void testBookHotel() {
    
    setCurrentState("reviewHotel");

    Hotel hotel = new Hotel();
    hotel.setId(1L);
    hotel.setName("Jameson Inn");
    getFlowScope().put("hotel", hotel);

    getFlowDefinitionRegistry().registerFlowDefinition(createMockBookingSubflow());

    MockExternalContext context = new MockExternalContext();
    context.setEventId("book");
    resumeFlow(context);

    // verify flow ends on 'bookingConfirmed'
    assertFlowExecutionEnded();
    assertFlowExecutionOutcomeEquals("finish");
}

public Flow createMockBookingSubflow() {
    Flow mockBookingFlow = new Flow("booking");
    mockBookingFlow.setInputMapper(new Mapper() {
        public MappingResults map(Object source, Object target) {
            // assert that 1L was passed in as input
            assertEquals(1L, ((AttributeMap) source).get("hotelId"));
            return null;
        }
    });
    // immediately return the bookingConfirmed outcome so the caller can respond
    new EndState(mockBookingFlow, "bookingConfirmed");
    return mockBookingFlow;
}
		

15. Upgrading from 1.0

15.1. Introduction

This chapter shows you how to upgrade existing Web Flow 1 application to Web Flow 2.

15.2. Flow Definition Language

The core concepts behind the flow definition language have not changed between Web Flow 1 and 2. However, some of the element and attribute names have changed. These changes allow for the language to be both more concise and expressive. A complete list of mapping changes is available as an appendix.

Flow Definition Updater Tool

An automated tool is available to aid in the conversion of existing 1.x flows to the new 2.x style. The tool will convert all the old tag names to their new equivalents, if needed. While the tool will make a best effort attempt at conversion, there is not a one-to-one mapping for all version 1 concepts. If the tool was unable to convert a portion of the flow, it will be marked with a WARNING comment in the resulting flow.

The conversion tool requires spring-webflow.jar, spring-core.jar and an XSLT 1.0 engine. Saxon 6.5.5 is recommended.

The tool can be run from the command line with the following command. Required libraries must be available on the classpath. The source must be a single flow to convert. The resulting converted flow will be sent to standard output.

java org.springframework.webflow.upgrade.WebFlowUpgrader flow-to-upgrade.xml
			

Flow Definition Updater Tool Warnings

argument parameter-type no longer supported

Bean actions have been deprecated in favor of EL based evaluate expressions. The EL expression is able to accept method parameters directly, so there is no longer a need for the argument tag. A side effect of this change is that method arguments must be of the correct type before invoking the action.

inline-flow is no longer supported

Inline flows are no longer supported. The contents of the inline flow must be moved into a new top-level flow. The inline flow's content has been converted for your convenience.

mapping target-collection is no longer supported

Output mappings can no longer add an item to a collection. Only assignment is supported.

var bean is no longer supported

The var bean attribute is no longer needed. All spring beans can be resolved via EL.

var scope is no longer supported

The var element will place all variable into flow scope. Conversation scope was previously allowed.

EL Expressions

EL expressions are used heavily throughout the flow definition language. Many of the attributes that appear to be plain text are actually interpreted as EL. The standard EL delimiters (either ${} or #{}) are not necessary and will often cause an exception if they are included.

EL delimiters should be removed where necessary by the updater tool.

15.3. Web Flow Configuration

In Web Flow 1 there were two options available for configuring Web Flow, one using standard spring bean XML and the other using the webflow-config-1.0 schema. The schema configuration option simplifies the configuration process by keeping long internal class names hidden and enabling contextual auto-complete. The schema configuration option is the only way to configure Web Flow 2.

Web Flow Bean Configuration

The FactoryBean bean XML configuration method used in Web Flow 1 is no longer supported. The schema configuration method should be used instead. In particular beans defining FlowExecutorFactoryBean and XmlFlowRegistryFactoryBean should be updated. Continue reading Web Flow Schema Configuration for details.

Web Flow Schema Configuration

The webflow-config configuration schema has also changed slightly from version 1 to 2. The simplest way to update your application is modify the version of the schema to 2.0 then fix any errors in a schema aware XML editor. The most common change is add 'flow-' to the beginning of the elements defined by the schema.

<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xmlns:webflow="http://www.springframework.org/schema/webflow-config"
       xsi:schemaLocation="
           http://www.springframework.org/schema/beans
           http://www.springframework.org/schema/beans/spring-beans-2.5.xsd
           http://www.springframework.org/schema/webflow-config
           http://www.springframework.org/schema/webflow-config/spring-webflow-config-2.0.xsd">
			

flow-executor

The flow executor is the core Web Flow configuration element. This element replaces previous FlowExecutorFactoryBean bean definitions.

<webflow:flow-executor id="flowExecutor" />
				

flow-execution-listeners

Flow execution listeners are also defined in the flow executor. Listeners are defined using standard bean definitions and added by reference.

<webflow:flow-executor id="flowExecutor" flow-registry="flowRegistry">
    <webflow:flow-execution-listeners>
        <webflow:listener ref="securityFlowExecutionListener"/>
    </webflow:flow-execution-listeners>
</webflow:flow-executor>

<bean id="securityFlowExecutionListener"
      class="org.springframework.webflow.security.SecurityFlowExecutionListener" />
				

flow-registry

The flow-registry contains a set of flow-locations. Every flow definition used by Web Flow must be added to the registry. This element replaces previous XmlFlowRegistryFactoryBean bean definitions.

<webflow:flow-registry id="flowRegistry">
    <webflow:flow-location path="/WEB-INF/hotels/booking/booking.xml" />
</webflow:flow-registry>
				

Flow Controller

The package name for flow controllers has changed from org.springframework.webflow.executor.mvc.FlowController and is now org.springframework.webflow.mvc.servlet.FlowController for Servlet MVC requests. The portlet flow controller org.springframework.webflow.executor.mvc.PortletFlowController has been replaced by a flow handler adapter available at org.springframework.webflow.mvc.portlet.FlowHandlerAdapter. They will need to be updated in the bean definitions.

Flow URL Handler

The default URL handler has changed in Web Flow 2. The flow identifier is now derived from the URL rather then passed explicitly. In order to maintain comparability with existing views and URL structures a WebFlow1FlowUrlHandler is available.

<bean name="/pos.htm" class="org.springframework.webflow.mvc.servlet.FlowController">
    <property name="flowExecutor" ref="flowExecutor" />
    <property name="flowUrlHandler">
        <bean class="org.springframework.webflow.context.servlet.WebFlow1FlowUrlHandler" />
    </property>
</bean>
			

View Resolution

Web Flow 2 by default will both select and render views. View were previously selected by Web Flow 1 and then rendered by an external view resolver.

In order for version 1 flows to work in Web Flow 2 the default view resolver must be overridden. A common use case is to use Apache Tiles for view resolution. The following configuration will replace the default view resolver with a Tiles view resolver. The tilesViewResolver in this example can be replaced with any other view resolver.

<webflow:flow-registry id="flowRegistry" flow-builder-services="flowBuilderServices">
	<web:flow-location path="..." />
    ...
</webflow:flow-registry>

<webflow:flow-builder-services id="flowBuilderServices" 
                               view-factory-creator="viewFactoryCreator"/>

<bean id="viewFactoryCreator" class="org.springframework.webflow.mvc.builder.MvcViewFactoryCreator">
    <property name="viewResolvers" ref="tilesViewResolver" />
</bean>

<bean id="tilesViewResolver" class="org.springframework.web.servlet.view.UrlBasedViewResolver">
    <property name="viewClass" value="org.springframework.web.servlet.view.tiles.TilesJstlView" />
</bean>

<bean class="org.springframework.web.servlet.view.tiles.TilesConfigurer">
    <property name="definitions" value="/WEB-INF/tiles-def.xml" />
</bean>
			

15.4. New Web Flow Concepts

Automatic Model Binding

Web Flow 1 required Spring MVC based flows to manually call FormAction methods, notably: setupForm, bindAndValidate to process form views. Web Flow 2 now provides automatic model setup and binding using the model attribute for view-states. Please see the Binding to a Model section for details.

OGNL vs EL

Web Flow 1 used OGNL exclusively for expressions within the flow definitions. Web Flow 2 adds support for Unified EL. United EL is used when it is available, OGNL will continue to be used when a Unified EL implementation is not available. Please see the Expression Language chapter for details.

Flash Scope

Flash scope in Web Flow 1 lived across the current request and into the next request. This was conceptually similar to Web Flow 2's view scope concept, but the semantics were not as well defined. In Web Flow 2, flash scope is cleared after every view render. This makes flashScope semantics in Web Flow consistent with other web frameworks.

Spring Faces

Web Flow 2 offers significantly improved integration with JavaServerFaces. Please see the JSF Integration chapter for details.

External Redirects

External redirects in Web Flow 1 were always considered context relative. In Web Flow 2, if the redirect URL begins with a slash, it is considered servlet-relative instead of context-relative. URLs without a leading slash are still context relative.

Appendix A. Flow Definition Language 1.0 to 2.0 Mappings

The flow definition language has changed since the 1.0 release. This is a listing of the language elements in the 1.0 release, and how they map to elements in the 2.0 release. While most of the changes are semantic, there are a few structural changes. Please see the upgrade guide for more details about changes between Web Flow 1.0 and 2.0.

Table A.1. Mappings

SWF 1.0 SWF 2.0 Comments
action * use <evaluate />
  bean   *  
  name   *  
  method   *  
action-state action-state  
  id   id  
  *   parent  
argument * use <evaluate expression="func(arg1, arg2, ...)"/>
  expression    
  parameter-type    
attribute attribute  
  name   name  
  type   type  
  value   value  
attribute-mapper * input and output elements can be in flows or subflows directly
  bean   * now subflow-attribute-mapper attribute on subflow-state
bean-action * use <evaluate />
  bean   *  
  name   *  
  method   *  
decision-state decision-state  
  id   id  
  *   parent  
end-actions on-end  
end-state end-state  
  id   id  
  view   view  
  *   parent  
  *   commit  
entry-actions on-entry  
evaluate-action evaluate  
  expression   expression  
  name   * use <evaluate ...> <attribute name=”name” value="..." /> </evaluate>
  *   result  
  *   result-type  
evaluation-result * use <evaluate result="..." />
  name   *  
  scope   *  
exception-handler exception-handler  
  bean   bean  
exit-actions on-exit  
flow flow  
  *   start-state  
  *   parent  
  *   abstract  
global-transitions global-transitions  
if if  
  test   test  
  then   then  
  else   else  
import bean-import  
  resource   resource  
inline-flow * convert to new top-level flow
  id   *  
input-attribute input  
  name   name  
  scope   * prefix name with scope <input name="flowScope.foo" />
  required   required  
  *   type  
  *   value  
input-mapper * inputs can be in flows and subflows directly
mapping input or output  
  source   name or value name when in flow element, value when in subflow-state element
  target   name or value value when in flow element, name when in subflow-state element
  target-collection   * no longer supported
  from   * detected automatically
  to   type  
  required   required  
method-argument * use <evaluate expression="func(arg1, arg2, ...)"/>
method-result * use <evaluate result="..." />
  name   *  
  scope   *  
output-attribute output  
  name   name  
  scope   * prefix name with scope <output name="flowScope.foo" />
  required   required  
  *   type  
  *   value  
output-mapper * output can be in flows and subflows directly
render-actions on-render  
set set  
  attribute   name  
  scope   * prefix name with scope <set name="flowScope.foo" />
  value   value  
  name   * use <set ...> <attribute name=”name” value="..." /> </set>
  *   type  
start-actions on-start  
start-state * now <flow start-state="...">, or defaults to the first state in the flow
  idref   *  
subflow-state subflow-state  
  id   id  
  flow   subflow  
  *   parent  
  *   subflow-attribute-mapper  
transition transition  
  on   on  
  on-exception   on-exception  
  to   to  
  *   bind  
value value  
var var  
  name   name  
  class   class  
  scope   * always flow scope
  bean   * all Spring beans can be resolved with EL
view-state view-state  
  id   id  
  view   view  
  *   parent  
  *   redirect  
  *   popup  
  *   model  
  *   history  
* persistence-context  
* render  
  *   fragments  
* secured  
  *   attributes  
  *   match  

libspring-webflow-2.0-java-2.0.9.RELEASE.orig/docs/spring-webflow-reference/htmlsingle/css/0000755000000000000000000000000011360615630026066 5ustar ././@LongLink0000000000000000000000000000015200000000000011563 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/docs/spring-webflow-reference/htmlsingle/css/stylesheet.csslibspring-webflow-2.0-java-2.0.9.RELEASE.orig/docs/spring-webflow-reference/htmlsingle/css/styleshee0000644000000000000000000000145011360615630030016 0ustar @IMPORT url("highlight.css"); html { padding: 0pt; margin: 0pt; } body { margin-left: 10%; margin-right: 10%; font-family: Arial, Sans-serif; } div { margin: 0pt; } p { text-align: justify; } hr { border: 1px solid gray; background: gray; } h1,h2,h3,h4 { color: #234623; font-family: Arial, Sans-serif; } pre { line-height: 1.0; color: black; } pre.programlisting { font-size: 10pt; padding: 7pt 3pt; border: 1pt solid black; background: #eeeeee; clear: both; } div.table { margin: 1em; padding: 0.5em; text-align: center; } div.table table { display: table; width: 100%; } div.table td { padding-left: 7px; padding-right: 7px; } ././@LongLink0000000000000000000000000000015100000000000011562 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/docs/spring-webflow-reference/htmlsingle/css/highlight.csslibspring-webflow-2.0-java-2.0.9.RELEASE.orig/docs/spring-webflow-reference/htmlsingle/css/highlight0000644000000000000000000000063711360615630027766 0ustar /* code highlight CSS resemblign the Eclipse IDE default color schema @author Costin Leau */ .hl-keyword { color: #7F0055; font-weight: bold; } .hl-comment { color: #3F5F5F; font-style: italic; } .hl-multiline-comment { color: #3F5FBF; font-style: italic; } .hl-tag { color: #3F7F7F; } .hl-attribute { color: #7F007F; } .hl-value { color: #2A00FF; } .hl-string { color: #2A00FF; }libspring-webflow-2.0-java-2.0.9.RELEASE.orig/docs/spring-webflow-reference/htmlsingle/images/0000755000000000000000000000000011360615630026543 5ustar ././@LongLink0000000000000000000000000000016300000000000011565 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/docs/spring-webflow-reference/htmlsingle/images/xdev-spring_logo.jpglibspring-webflow-2.0-java-2.0.9.RELEASE.orig/docs/spring-webflow-reference/htmlsingle/images/xdev-s0000644000000000000000000011100011360615630027665 0ustar ÿØÿàJFIFHHÿáñExifMM*bj(1r2‡i¤ÐHHAdobe Photoshop CS Windows2006:08:05 08:34:10 ÿÿ   I&(.»HHÿØÿàJFIFHHÿí Adobe_CMÿîAdobed€ÿÛ„            ÿÀ "ÿÝ ÿÄ?   3!1AQa"q2‘¡±B#$RÁb34r‚ÑC%’Sðáñcs5¢²ƒ&D“TdE£t6ÒUâeò³„ÃÓuãóF'”¤…´•ÄÔäô¥µÅÕåõVfv†–¦¶ÆÖæö7GWgw‡—§·Ç×ç÷5!1AQaq"2‘¡±B#ÁRÑð3$bár‚’CScs4ñ%¢²ƒ&5ÂÒD“T£dEU6teâò³„ÃÓuãóF”¤…´•ÄÔäô¥µÅÕåõVfv†–¦¶ÆÖæö'7GWgw‡—§·ÇÿÚ ?•6²»ç¸5§ÚâLh}²¯ØÓt#Ss–}wZÏHTç‚Û½]ØÙ,ÇÈfÖÕúKqr¿Uê8ïc2=)»íUÝëøùUŒz,}´œ?ÖÎFvç0–Ug§“‰ŠçŸçw±õÐÿ´}¡žž5?§ý2ÍŽb;ô+i°Çµ­qy4'MYïoùÌõkȪ×Ù]62ïM­.²§o`q×Òõa¬uµþ§¿bͲ÷ÛS«}UÔß°¶ë@¾Ág¬ìWØüm­{jô~Ù³Ìk?Ifû)³}vìVmÏ5 œÑ@ªšqìam’Kí47({Ýé6†2Ì—ú{=jŸêzž—è8%[‹¢©…­Û}¬ì㹿{ÿïÈ6–¹ƒÜ$翇(™¹¹¢j–Ýs>ÐÐòÃUgn7ªç¾›3œß^ì¿Gô^uzáP:…ù;j§Û̓ ¶¿uüÆäcß‹?ÎÙS±Ùê[½õ~‹Òôl®«öjR—¾ÿ÷ª¥«qe€ù­;›êã9úCâ^U­eùæªéôqæÐ=gØû굌È,õ1ÛsYüãêÌÄ£«Y‘•e¿á/Ñß]˜íôIÊʨ\붸ãÔÖ?êË]èz™žædYú½Œ¯ù›SgÊä$c¡®»ÿŠªi¿Vwº¹ðQo¡§e_k»—Õ‹[‰c­7ÙVElõ¯ªÿÐaz9gûUv?Ôõªý ~Š…9XÖRX t[aÉǧԷééº^]¶ÔñöFÖÜŒ<Ë©ý[׫×ÿ¤† ÷ŽºUI,ë¸Ñ —챤éªzòñ­£í ,£ÕäÛesƒêØû2¦Qe›ŸfnÚ/Ûo­ö¯¶}—Ñû"bé³&¢%_³žì‡Õc­°ºÜZ쾆Ðûj¢ïK;{1èõ=_´Uÿm8`•Ñ"Ž–Š{ª™²,ÃyÐþ–¯ú›[ÿRõÑ/;é½BÊ3>ÒÏOeO¦º\_4=GÛaß¿&¯§éÑè3è3Ó^„ǶÆ5ì;šðÒ;ƒ¨SòÒ4qñŸù©nÌ’I%ar’I$”¤’I%?ÿПdôÛö¯KËÕÛòÛê+˜¬¤_Còli$Yöìô jßµz>Ñvýþ—Ó±y*K&¥ól~_û¯ê¬®ŸÙa¤³–zžâvmõ'óçü/õ½è•~ʆ†ú¦+5ìßêOèO§úOµ} žŸé÷¯I/µ/ªdQÓë|Ñ‘ëZn÷6±Xhº-ßö¿±×[>׳í>—Û?Mý/Ñÿ•_dÜÿKÒ˜ý>ͼ÷õ¶ÿßו¤›ÒÿæA}6ßÙþ‹#Ðôw~Ž6lÝüÌÞ‹€zW¿pÅÏ'ÒñüéþRòÔ”SùNê}g'öVÇëᇲ#ó=_í} ꛽oæí<ÄlüîÁ¯2I,_U>Ÿú¿Ú™»ÓõÁnÛ¿þµ»Ýþb¯zvÝ7öÙ·þ•^p’—ªŸWèæFÏ@W½Æ½¿Kù~ŸýùwÿWz]m¹¤5³è¼Çº³«ï{~Šù¥%')üô·ê¨üßGꤗʩ-ïÕI/•RIOÕI/•RIOÿÙÿí ¼Photoshop 3.08BIM8BIM%F ò‰&¸VÚ°œ¡°§w8BIMíHH8BIM&?€8BIM x8BIM8BIMó 8BIM 8BIM' 8BIMõH/fflff/ff¡™š2Z5-8BIMøpÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿèÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿèÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿèÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿè8BIM@@8BIM8BIMUI xdev-spring_logo InullboundsObjcRct1Top longLeftlongBtomlongIRghtlong slicesVlLsObjcslicesliceIDlonggroupIDlongoriginenum ESliceOrigin autoGeneratedTypeenum ESliceTypeImg boundsObjcRct1Top longLeftlongBtomlongIRghtlong urlTEXTnullTEXTMsgeTEXTaltTagTEXTcellTextIsHTMLboolcellTextTEXT horzAlignenumESliceHorzAligndefault vertAlignenumESliceVertAligndefault bgColorTypeenumESliceBGColorTypeNone topOutsetlong leftOutsetlong bottomOutsetlong rightOutsetlong8BIM( ?ð8BIM8BIM8BIM × à)@»ÿØÿàJFIFHHÿí Adobe_CMÿîAdobed€ÿÛ„            ÿÀ "ÿÝ ÿÄ?   3!1AQa"q2‘¡±B#$RÁb34r‚ÑC%’Sðáñcs5¢²ƒ&D“TdE£t6ÒUâeò³„ÃÓuãóF'”¤…´•ÄÔäô¥µÅÕåõVfv†–¦¶ÆÖæö7GWgw‡—§·Ç×ç÷5!1AQaq"2‘¡±B#ÁRÑð3$bár‚’CScs4ñ%¢²ƒ&5ÂÒD“T£dEU6teâò³„ÃÓuãóF”¤…´•ÄÔäô¥µÅÕåõVfv†–¦¶ÆÖæö'7GWgw‡—§·ÇÿÚ ?•6²»ç¸5§ÚâLh}²¯ØÓt#Ss–}wZÏHTç‚Û½]ØÙ,ÇÈfÖÕúKqr¿Uê8ïc2=)»íUÝëøùUŒz,}´œ?ÖÎFvç0–Ug§“‰ŠçŸçw±õÐÿ´}¡žž5?§ý2ÍŽb;ô+i°Çµ­qy4'MYïoùÌõkȪ×Ù]62ïM­.²§o`q×Òõa¬uµþ§¿bͲ÷ÛS«}UÔß°¶ë@¾Ág¬ìWØüm­{jô~Ù³Ìk?Ifû)³}vìVmÏ5 œÑ@ªšqìam’Kí47({Ýé6†2Ì—ú{=jŸêzž—è8%[‹¢©…­Û}¬ì㹿{ÿïÈ6–¹ƒÜ$翇(™¹¹¢j–Ýs>ÐÐòÃUgn7ªç¾›3œß^ì¿Gô^uzáP:…ù;j§Û̓ ¶¿uüÆäcß‹?ÎÙS±Ùê[½õ~‹Òôl®«öjR—¾ÿ÷ª¥«qe€ù­;›êã9úCâ^U­eùæªéôqæÐ=gØû굌È,õ1ÛsYüãêÌÄ£«Y‘•e¿á/Ñß]˜íôIÊʨ\붸ãÔÖ?êË]èz™žædYú½Œ¯ù›SgÊä$c¡®»ÿŠªi¿Vwº¹ðQo¡§e_k»—Õ‹[‰c­7ÙVElõ¯ªÿÐaz9gûUv?Ôõªý ~Š…9XÖRX t[aÉǧԷééº^]¶ÔñöFÖÜŒ<Ë©ý[׫×ÿ¤† ÷ŽºUI,ë¸Ñ —챤éªzòñ­£í ,£ÕäÛesƒêØû2¦Qe›ŸfnÚ/Ûo­ö¯¶}—Ñû"bé³&¢%_³žì‡Õc­°ºÜZ쾆Ðûj¢ïK;{1èõ=_´Uÿm8`•Ñ"Ž–Š{ª™²,ÃyÐþ–¯ú›[ÿRõÑ/;é½BÊ3>ÒÏOeO¦º\_4=GÛaß¿&¯§éÑè3è3Ó^„ǶÆ5ì;šðÒ;ƒ¨SòÒ4qñŸù©nÌ’I%ar’I$”¤’I%?ÿПdôÛö¯KËÕÛòÛê+˜¬¤_Còli$Yöìô jßµz>Ñvýþ—Ó±y*K&¥ól~_û¯ê¬®ŸÙa¤³–zžâvmõ'óçü/õ½è•~ʆ†ú¦+5ìßêOèO§úOµ} žŸé÷¯I/µ/ªdQÓë|Ñ‘ëZn÷6±Xhº-ßö¿±×[>׳í>—Û?Mý/Ñÿ•_dÜÿKÒ˜ý>ͼ÷õ¶ÿßו¤›ÒÿæA}6ßÙþ‹#Ðôw~Ž6lÝüÌÞ‹€zW¿pÅÏ'ÒñüéþRòÔ”SùNê}g'öVÇëᇲ#ó=_í} ꛽oæí<ÄlüîÁ¯2I,_U>Ÿú¿Ú™»ÓõÁnÛ¿þµ»Ýþb¯zvÝ7öÙ·þ•^p’—ªŸWèæFÏ@W½Æ½¿Kù~ŸýùwÿWz]m¹¤5³è¼Çº³«ï{~Šù¥%')üô·ê¨üßGꤗʩ-ïÕI/•RIOÕI/•RIOÿÙ8BIM!SAdobe PhotoshopAdobe Photoshop CS8BIMÿá-http://ns.adobe.com/xap/1.0/ 4294967295 524 73 1 72/1 72/1 2 2006-08-05T08:34:10Z 2006-08-05T08:34:10Z 2006-08-05T08:34:10Z Adobe Photoshop CS Windows uuid:3f50d993-23b7-11db-9576-fa409a7502c7 adobe:docid:photoshop:3f50d992-23b7-11db-9576-fa409a7502c7 adobe:docid:photoshop:86772fa8-2454-11db-8c34-c59e0b1bd60f image/jpeg ÿîAdobed@ÿÛ„ÿÀI ÿÝBÿÄÌ     !1 AQ"aq2#3‘±B²s$4r³t´5u6 ðÁRÂ%v‚¡bĵÅ&¶7 !1A"Qaq2ð‘¡±ÁÑB#3árRb‚4’Cs³$Dñ²ÒSc5u6ÿÚ ?Ö1(@%+¶Ÿ¼ Zw =ß.¾WK¨TוjLæ%®Á{*QN†LGxm:cÓ¡È;ˆ5èÊ%ðÓp¼Õ¤€²šµ˜õS]DÄJ'¹ÉI3)¶ ‘U²žtT â'Ò+%Ò¢@7NšÛ#~¸cx8·íOg9`Ü1¥p;w̾íxªfù¦§žd)q³”Œ©€@=º3AÖ@Ì%ë-T¯l€9va8ºdf©ÍªáB<ª‹"e†¡E#¨  ”¨Ô½zi—Ó‚EH**õxY(Ç*Wë£ÆÊ¦dªIïE`1j)€ˆî …6ô ޤÅ)©#›%‚¢­Ñ¸ÌmÈŠ’‘§‘lC©ûì†R5}Çð2ñëí TB´ë¨Ïâ72m]Ù8j:ŽCF ´ä«¿#Ù¤•ÚÊænËq.øN—r%HÆAôi’h âŠèF€= mH„rÛê:šíTíÕ\¾!1;p$¥lK JYˆ–4SMTU!’%µo §éðˆ&`ñÓwlÕ 5Ȧ u8­´ÂDÍä~.ê‚ mKö`ñ1 ;F€+@÷ë\1è“*’FœÖ²1P#–ˆ8I@0ì&QqDjÒPÝ}š\ÏÓ¦¹!´¡Ç-ÚâFH£âC”D‹q*b4éÔwß>Ò4‚ 5¯žžlB«#";Èa"?µˆ¦=MðuîR¿¦Û<ƒI®£A€Q€¾jOt6òŠhQ XA¡öípßOv­u`Ò×%j*åôC˜ÇnÝG ê¸&í &P;=J'ªÕ ôk8¬º€ -ÌB¥FY_ú@–Ó«^Ú°wT)JQ% ZTGyëÜ’â1<}‰Lè…û˜w¢E”+q+Ú pî–¥8´¨j)88Ë™MHh[CŠR=¢œƒ‚Ä…EÒû—Ð7’§@*P1;eд¥zjâÝÅá¬2b{Öcy'‚ùP©‘är$†.ÅPQNئÜ|ð‰LWClúU?´zuÓ€—±Ît”¡¥qÁ,¸—SN 9#¤Pvóîƒe[9/mØ üÃîÔyjøÌ^¥J´ãRx €îSÅ;1“¢µL!A‡l yHõDˆþގŠ„)€¢aï 5K£v—ú••¶á®²8H;0?N#¸­nKsïO(8w– Ý[oÛ'e#ad =A7"Š¥\© ;þ>Ÿ8ëF¸alÀ¸ù¹OØŒ*âÖÕÁwkÓW0’jÝžÅrK˜]Å”·,ªqûE{ %ÐDNn›ë…­EE@ë¯PÿÛwT9öÛÇH]Ëù‘8Ï'!²´w¡àí<ö­·§nõÇ%³Ž\ÃãŸ×ã™]NשÖÌF„#B¡ЄhB4!F„#B¡ЄhB4!±fÑÊ­VpÝ•b°¹h¢©”çl¹‘Q¸¬ˆ˜STPXäܦÖRKâÒæƒCQÜrYzÂR4!F„#B¡ ÿÐÔµÚš¢P¡ÐåøŒNŸœ0í§¾•×Ê÷ó4Õiìå~­¢„Þ a¨t5B´üÚGéj$g025… ŒÓk Ω2-ˆ±JtVOµÜKqEL. €›h,‡@üñökeÛä×¢n¢À™J¡L1vÔJ P¨SSÂ…ÔûWµÍ2†£†šä‹ÍñÎâX‡Ç ¹´®løÆ Ê4| 4Ú*T‰n)PüšœMün¥ Œ"¾¡&a©¤—*܉dJížç‰™nÚ‚’€P¤ È`í€PÁáÓ¦²C\ÒQ™ê6€ŒátݺŒv©&ÐAÀ c*rCJAÚ™ú~ k7-Ó+Fš|¾Õ*¸EE)߯Ür((„¢{Q)…3PŸR=:×®™x[âŒ0R¢¦ðÉÈmpQí¾`vŠ )†Ú¦ ‡@ ?¹`”êjÉ/î(ùúyüÊ`S¨O*L>¤Â@ÙZ&n… Óâ¨uԨݦ  ¦ÍáSP—+²”+ù-¯S*„E4~ÑN “¶c&@($jQ*€Ð®­¡{KF++$dAœuUê%hC7$ ™PLÂqGã)F¢5Ó„´“†4BÙ6FX²‹&Wɦ° ™Ž°¤P¢& ¤ ¦m§uð bŒ 8#ëN#øu´Zº¥Ä·} XTÖdJªrù ‚6(S&³iz ~%0{½ºŸ£Ð?/”žÕ•nðÑ~ò^\V§g·ñ‹ƒð6Á7ÚTÞ4öiÇh2¹®¦ª}‹£522Å”F¯óiµ÷…4þÈš@GÜ:3chu!)óWæîÕ‰Dî Ú#ƒœÄÙEtÔ)OAúÂ`÷ê.¶ Ù¤pÍ+ÓP¼æÙIyÖCæ’ï,ŠÛOÛ&Ð!B‡/j†0FB”Ò%lnl‡NJ;ÚçD–—+yÒ’v’täîH)õ\C`¨tÌè ‡@¥4í¬Íl‘`j@L‚| ­ ÚÍR<âbá8+C Ý U>°ІÀ Ö½ujÓ2 ®ÏÅHh-šÍ´©Æ}°a®¾X–ÓÁj>R½=™N^”0©zÔ(a÷j :œÔNÓ —nH©qG9HÀPQO,c€J©Šbw‰®@>jêÖÆAÙZé B•É\· hÏ4 ™8ˆ!(­VO½pS‰‘w½"DhˆÓÙ«Ðã¤ùNIzBÌ|Ì{è‘TÂ+À¾B¦ïªÚGrÑ«ŠÅ1Á‹äIR”(5ŸQ\Þz Ö]SCصÒÍÛ»NÙºˆPMÉ—<ÀE*$]'…ò(»N%:‡jä…˜âÜ!¤,e B’‘PÖ+¥×gNLê<âó´B”Š‹¡4MÀÙtTÜ‘Û8Xª‡Cxt®¤W‰8,O6!G`—qdÖÚeÆ9Q¡Ê—ÐMý¶ªj¢ª` a2r& uW¨iñirH¥qÉ4\?F'Ûw˜ Æuˆ4I4ÐIÃE¶?D†17ª‘ŒºcáÓ­4ÌLoï$`rQ ¸dT†õqf¯“,NnîolÅΞ`·T³GŒÑ›R·‹,ŠpF~ª,P–š+t¹7d¼‘1Œb‘5"o÷7Û6͹_íö^µð l- –ë{šÝO æsbf©\ÖâàÍ8HÙºc§§ê=Þ;&ÈÈ­]4¯pdQF3|’ £8—9­hsˆiµ—_3øWìt£³Ìãh»ŒH#pεr^^¹dö¦ƒ³kÛ²OÕ %йL¼”ÛÆíR ˜Çp ]yêÃÛÿp½ÊÝ„±½Ï$›»ÆË ´Lâö‰Ah9G ­04èóì;’A¶ÞÅ%¼x¡Œ*N ;!©๑Ç\‘³ázå<˜Í(ùL¹-;s£ ØP)5‘U[nÝEeª=þ€#Xðvb$w‚ØW2i™A!}/ºtÞÕÑû^ÏÓ;4ºíìíÚÍG7¸ É!5¼¹újCk¤W*ÝnŸ{w5ËÇæ<ðáÀsçÛ°q“Á-Hr¶Ê*w ¹DÍÝ*ŒGpªíKƒÆ8ªÒ ™ŽmrÚYÙ:j ³6û™ÃríPï Rî8®ÜCéPugp÷ÆØfhò<§§ ƒBš¯c²ÚšàA@AÁ@ÜE©²…øÄáU: çÔó¬”籧ÂpÅÄSÄ@l³‚6®ðØ•Þ5èRƒQé×Zîílš»S°;Pv-Tš1è¹h`I`1ÁÇÛŽnÐL—^¥V´«Ù¤°ƒJ§)@¾jv'IÑŠ ˆlÀt(˜€˜Æ¡„(nÑœ9KP8-<ãF*"Ìæ"¦1D€ê½ã „TÄ ˆˆœ< MIa à›pâ–-bËÓ KöÀ¨ƒq0"S‚fß»ãÜPè¿&¦Û½àÓY&”Áh Hß.ÈŠà±—D®L®Ó¦qT 0L% ^ƒ©à¸ز¾Š1&Tšþ[´M„¸Þ ÇqŒ÷‰´ñé](j§b§V“¦-ÊÔDóFXCUÙ´ªž€CnnSÀ+ª=ê$.¦I@àB·V»ÖŠ˜†K»ÚìÓj„Wx©»iD@j¦Ñ/zë”_BÖI pÃâ©€ŸdÉèïÞ"Qø€¥.êà”ÛZüº¬n–´€ k÷,â!F/ÆRÑ®™‹¢©‡¡Š`T©˜@Hs J(4\XÜ6 ¸ekˆM–*TD™5y"‰ÒXŠ ¡‘@´T½±M3·„($Pj;«Ó¯†»”À²" AÅa¹© `dXÔ«@Q0t?Z;‰OŒ@@B£¸½(Õ>âÍ7&Í&\ÁQiT¢{®Œt–2e!\n ìS¸`=j#ׯ³OYºLMSE@ÑÉ¡A5Aqp¸=VØtŒuk°DåLL5 Pk­ºÒWâÂyhœΆs.¦"ænt R’‹ …Aˆî(Š^i©ñÉ!`þeVn_nÑbf;U¾!PLa©|LO²ü==ú—Î]^ëYP·iÅMDźàÕDŠm…+‚˜]‘A8˜TŠBZÓðê4Áæ<)ª¨ <âß|ÅN &¯|Žh‰è¶ÎÀ¬@ÚsÂ@J½­uÒÒâkÈR@¦%M¥‹$¢kƒs *†àTDLp!‰Sר˜@iMt±Ö£W‚@©à”ÓM#E³åÁ%ûäYTÛÐUØDɰü[7j'¨ÓÇQ´>'†áB7ߨ¨Ã þ=¸¤¸6tš©¿(ƒ€}ANÜèŽ&‘a¯Â Q÷jâÞYe„¼š9§ ¾*S|£Áb¤% !œ­¾?¢â%9HqèÃJ,PúUøGO’þV’(áB²pÓ ¥q¡Š1‘T”H€ø£Þ›¾*u8”E%ÀÔÛJ€êŽý“ŒÌ?ŸÚ| Bi툴‚ʵãl¬Y& ³PÜ‹Ù}À®åPU#(ÕÁŠc ¶¨j«½¬îeÌ z37XîpóA …Í™Ä|ªŸ±ë$hø§ãÜ2íΛ†(œDHS θ ¼:ôÕ4Ì4|y57íJn çö¯Ñ·²¹26g éqV^ÃX°Š ƒõªÃªZQ”)Ul§ÂFä¯Ò {oØN©;ïG ¢ê][†Úá9˜]Sÿ ðÆÞÕ¼ì×[Q5tx|8ê+¯®ä­Ñ¡ЄhB4!F„#B¡ЄhB4!F„#B¡ЄhB4!F„/ÿÒÑ¢JOZ…DCâê_ B†—䮾Y:¤­Iâ˜ðO‹ZO°ÆJå{Ê(à¾,âI†µÁ}µ·Ü]÷ï~IyǘÒÐh»SJÜ‚M°,åeÑ‘ÊÑEÑêísúžÚã{ݯM¶Ç ôê’GàtFÚZWr4u'ZÀeg¨M#={’gçïIìís0Ç–Ö{æ/né×e´òÇ'ml17ƒ˜T8ƒÝêc™ù{ Œ„JE»x¼s,pô©&u©Áío@ÞRÖÒöúÞìà/¢öW† ÀÒÚŸï;pR…­³Žç4÷Ñ^îTc‰>d¬uÇÛ§ø¶RùÂ6ÎFkw"Ý!Ö½K=3uÇÀ“°ÝÙb£æb £0P °2~ÜTPÊo)u¾¾öá½(Û7ÛLéaôš\â›ð2¨V¦‡Qq‰€Wëïfh,G )ÔŠ†Ãœ[ƒÆä#¶â‰À¥/›I D@vœ( q‹XY#FËíðPõi5QÓ³Øé†J¤"( ¢s äˆ9W¶ô¥L¢tÙ½HèÝí cÔÔFŽ ²à2Z —i5º­{”Šm¤‰÷À±ÊMÁ·,xI¨™êaÔ¦ú%§´tP }3™XmE pZUÚ¨ÂfI°¬&zÅЬW”þ§§”US@éHC¸Ø˜4‡02V‚qX¡¯½&!›ã¸;žâ^D ñõß…Ø¥¾}ýü(Þ]OW‰EA¡ä€E@ðàP6­¶(n·]½×•ý™•¡ô<Új5S¾•§zz&ê8Š®œÃ½8—È>O@CðrNø¹ð‡ð%¼k©õΖDB1¾ERJh’Ão%“Á½â-Á.Ô§ó ù6ÎŽëîý¨.¨©Þº»gé–fîÝ9‘膊—87·Fº¹º¨ ÿ´@­CE6Îví‘mP=¬°Öæ´úÇKå>i -Q"0] ÷—Lí®ØvôòOUŽ]tÑœErT‘]M®I²•(•R Cå×½êýÂ@ø‹Ü#Ékây+B®È@ÇY %ÑFÂÍG½Eb„SîÙ`Lª C( ”z @=úÑw)ß4Úåyq4úQ15qL‡i€ ×iAMë¹h¨” ÛѤ= ð ×ߨq;œ])Ÿ7ó($ …J±*ç(3IÊñÎwTí* ™"ˆÂpÜ4üzØcdsFæã«I§Á80 ÝLÂd †öÌ&eHÍ2 ¿"±…ÂBjRX´ÚZk1Ým„T¡ñ(oŒ6J…›l8tSK$o,)¨²âàH'ÜQ¨ xiJJõñÔmÁìiä• h¦KêÈÓJFËçdpǨÆÈ˜½´æôMà µ: ï%ÚB¨Ü *T!„@(!Ôu7¢ö£rÝE¾ôéÅèè׫ yùixö)‘5²>®žïâ¬÷8c½>}>‘À®2ÖUç ÜÛ“–,žAǧÅÖf —-ضÖÊÊ}þápX®#Ÿ.Þìjd“HŽƒá8Ä€Ò·þËtFÝKu¸º7¶ ·ÑÀ`q«[ÛÞ§›(]‚Lqÿ;úJr"ÙØµÏ#9„&névV”Æs±pí½hÊNÉ(“h¸§7-™-~G@šAÊ¥I5ä…‹@P@§X»‹X»µ^ß_L ŽÿpcÉ Õè_µÔøÑ YÛ¹ÔÔêü_"³œÅü‘ä¦ÎUåñ5ÿ5j‘Óú¦âbÜ@ÂöÏŸÓ#Ü6›ÖoÄ RyŠMqnºè÷ôžéuhÒ]C\s-­ZOy%Aš œAFÔ„e"VEKï*¯tê –:{á¢a ¦µÈsNy&òA .’g’XÉ•—˜‰”Õ:∓p‰D´¢¢mÞ5é§E8Ö•Y¯í éâQ¬Î"ÌIÉ{fÞ¯xOæ”)„ÄÛôwΦ.â2PAÉ[K:MꎒÝå{¦hN¥î eLU k¼T2ƒ×À)×\¯u·|3jhÅ:Ê´Å8Z¨s6Wì¶Š‚" >ðèZÔD7ÓÇÙ­]õæìªQÉz>Ed··p ju0Ñ>âœ7GÛá§ÛêÂÔ2C <¦ª¤dX‡‘$ˆB7‘H®¸ËƒÙ8Ÿ²¿:î tþž¼ýų«©¦‰°Nª¡MW«µ‰­vèƒsnPO°2«@ o/Qެ·P55íËŠÄ™-l‰$»²f!YÅ$ûå1–ÊPHûE›ª%¢>ÝF²{A婊ÒFiRðÏÈÖ4Jf}:€"eJ¦ñYPTMRv÷k·¯…5¶Ú—:µ­ë—zÁ¼‘ 3ň8¤2 &[´$*€wt0OÅ«6ˆ„b€Ò§çJÕCÞ¤gYÉâR9…¯•:€%8˜ýãÌz€À )P¯QÔÀ1®5X ¨*5,I•*¤謄B‡\È¿@ÿ‹¸&§ÉM4š+§WÒ²I%j™¬ð¬](&j ÎèÀ©JuEBª ¦*`")DÔññ ûµ´G µ¢ÅGÁ4EWë¤ÄÆ3rܪ S`¤¡JPûCh)¦€¬~šå‚*;Ô&Mgg2+NŠ9:ýV‡¸€t¯B¼zé©ÊÆìp L9ƒC€K9Ä¥¼Ä)ÄŠè•r6À6ùBˆ™z]‰…•ë©VŽk ­ â£0¼8Ÿ ¸%å##î 4ÓcC¢¡žÔË V¦*Än"b¯Ä=5kk%š(Nx|êS œjF íd˜¾IzRfNdqÆ?>Î^Ø‘ïÿgõ m‰ù÷’x¹ýĵ³dã+¾zÓRØ”¶2kTJ¤¢ïŸÊJ‰ )~ú}½é;Ž”¼¾Ûà¸}É k”€áBÒhÆ;E4æÔGhVæÎÜÛ0]§î%® ºÝ\pñóê¡~úŽhÆSã8‹ùq351ºŠ w…z¼™{ìï·  Ö±<É…hñóPñ-^þ7khÄà~Ï—‚¸’˨ܱʸ‘ïì¨ÔÆ“c(«P9@L˜›zuê¶à#AÔÃ_𜠄ÒhÑLB8—OŽótl«’! w–Ô©AQȸxªI±t`PÀT¼¼‚H˜êSáD õthz©Ý+×{w­%6Ëïøy;½B48ð%ÑSÁ…ØUu³\: ‘ Œà~8ˆqùª¿Bºú·DhB4!F„#B¡ЄhB4!F„#B¡ЄhB4!F„#B¡ ÿÓЧC´T¥ú}£‚ #³¦ïwˆP}ºùk(trãÚµR ÈàŸ¸6pƒ7ñW)zazƒ_ï¸ýpå‚e¬Ÿ”rœU­ v«plÚḶun[n`¤¹O6fÑRqRk6ó,Ý$‚Çö'´ÛÆÑÒc§o&È\Ç`<ß@ ×<4À«›9#1«G,œ‡þž<ºðòœmȸ?–vÆ‹Œí¯=g\3mÊB™4#Ù9ËÆà»“¹D jÐéÏÛ>§‚øî.íÄ5¨i%ŽøV¬?é‰-f\NP,ƒ—yC5Å~3òkOÙÿ¡/»>߸¯–ó¹ñÆ7„äoÍúI°—·lVÙXÀH3Qt°W¢ŠuPÍõ>á{qµ[lûÕ¡Žò&‘WR )Ü@¦TJçÈÀǶ„.ÞDÁðž[Y«”×%/ëÕÄùÆû2Ög´„³ÔJźeáñþ'±\2W”åÁZÇD ³ã(îMpL²d:¦{nö³¤7-ŽK«yç2ú€z²4Bí1´j 9œqì¢SlíÝ)5®ÁWŒÍÏI¬ù˜-œ ò—xôù=òv Éëöäµc#^)Ñ€Bâµ`“·ìø©é•»l\¹fý$U |d2«"ýŸ·ÞÜÎãµþÎàLì®jÕÔr rå=ë"ÖØ öÕh³Ëx¾$òçã/(¯ø»VÓMµñ’lKMœíÇvc¹¸¹S[S¶í¯/5 ЯŸÎEsÔŽøSfé`C¸*$îó}×Û6ž¤†Ïp¹md×Ô ¸¶‡M\uQ®©åÄŠÓ_jÖ¸5Ç—ìNþk/éïÅK ‡\˜¼óacŒ³æ a“íÜ_ Õ„ÿ&óûÉûz͸­…IíxÜqŠíK~׸€· ŠÊ ]­áÀŠÄé>ÑtlPíwm7ÓÓÔáPe”šÔžHÀÕ¤q ©Å<ë8(ÃCO¤ª›œyèÞ¼¶#y²§(-¬o‘q¥Õ/™¬HlzµÛxÚdl͘ÞÓ·e|ÉCAÆNKÅ»¸NõÌt…ÃA™ÑL\W~Ýt;ç³’ÂKˆ"Òu5¤9ÚªÚbó<Õ¡pÀPgU›hyCjó#àŽ ó=N;áh vÐŒð–>¿œŒÔºóÓR²ró{9Ž–MΆ!Å&é Ý3öÓ 5EîGLA¶> Kñié7Ìââ]R $öá€vÅÔT!­<ÃuÃ{ςٔ–W!.Û/ fxŒY{æn@Æ)jÀÙÍÒ6>™ºYZxÞÃsqË^²Vö@fÒ<\¸w%2±!š—rác·{QÒŸOÉue<Æà¼VP¤ %Úca Õ¦ƒSœkÄf–ËXLEÍ&½§îU«sÇÒã0å qǵ­>b¨Ë*O[ø–‘×½¯n4ºze¬%» îÃ…,ÆÕ—™x‘rí9 Y3;D¥*Ê&å§·>ÜÈöm³Y\¾áܾ³¤ÚŽ  W*‡SžByh|Tþü¸_`.@g^6Ü— gä± øö¨Ìˆ"ÙYhy‹bý³¤5IE‘BEͧr3;”Šc Ê5Âúó ÝÓ;ܶ6Î×pÒêP–+´ ü•tÖú@8‘Î<€==1Ö”ÎVuýž¹Ș‡W½·†m›å|WeØ{°2²wUÉ7rÉ΋ÙT‘"Hp»uÉõ$n :ì»7¶Á´X]o¶ïºÝ'Œ9ÌÖcŽ EhKAsœ+Cˆƒ€¥]5–ñ66Šš(´ !ˬçð͉ ÅnÄOތͲ«HG Oìö»¸÷,þ¹$²]ƒM- hsXÁMOÜ4à9±D~Ö2U!Ëþx+”—Ïy9™³NN–m’oËZj÷Å-eÒãŸcpÊ4·,i«¢5áò–Eº &›9¹–1΢I´Y$Ü»+¶¾Øt&Ûw<[“e—SJ8¶8ÛS¥µ[ˆ+ÀâRE­³ZâM~…áv>ÅÁä'ØZ¹‚æ·¸{Ç<‘–¥²ÌÃͲ¶ ´f– V‘Ò­4gpÌ[ÍÅÊ®Þ4E»DQU[A#Cj^×m›¯PÞEÓ™±@òêP°VŽˆüDPPšVM2ÍŽ•ÚOå¡ÂüîôêÊ9†ÍÅ3œGÏÖV1ÈÔ%›ÚrmÌÞMµÿ‰¦ÙÀE_7ˆ6\|ðˆ¸x^³h™üª&0"/N˜}šÛ¤:IÛ¶Í²ÈÆ¼†‡úäÈ+€qC+Ú)AßÅÆÃlN’Ã~?r´¹ú.+…ļxÇ~ßòó6…ªµ™p!}°‹lîê.5»Ðc+çT·¼ìs×D k‡‹b®Ù®ZÊdXœ'ÜOiìöŽ¥·´}ÓÆÎùYW†‚ñˆÔCjÖ¹í «Cˆ€pjKqµåW—+K/ƒØšOy”1Ö#¿ò=Û#;w[Å’ÍMÅ«#~ÙËãLUŠmå\[³’]åtä$,Ú:5pícÛ ÒböÛ‹ŽœÛ7k›¶Äç—I+ô™dhÔÝ Œ~S*áP㨙9)bÚ-p%Bøq•ø-êQvß|yãý«É¬ ±µÅñÅó”î8+’×¼š@ÈÂÅ(K­Œ3‰ñ<ìûUhŲE}ó¤èTH‰)&ÓÙl:ŽÖçlÚ,nmwFKe3zšˆ çn-ÌŠ††áZR¿m šX*/½yáé+Ž0´nÿó-͉5 ³~Çb¨×ÀäZ˯Šc¤å .kåœ(   æAd£äÊ%Y…%J ¯aöÇÛž˜•¶WL¹½¾p£ä/ôãÿ€‡v¸šç‘ hAoœå%æÎ;±ø‹Èkǰ·f¬Cjç|\úæ:Äö­ÔþaˆBʪF̈ôÌ•ˆÛ¸PZ¹M%@Ë$¢Šj^ë{wi°9³m:e+C›«Ú’ IãLÁ¦F‡I‹ynBܨ¦ÙFÑÜRâ…Ë~QÁæ ­!ž]¹CPâŸ6yn?eìi™í¿üÑ={ÌàWvŽKZe+&߆Ÿ¼R°o¥Ð´cœÎ‹+Noÿ$*-H£–áÝf‚k ˆÁغ3¦n·K›Ëó9Æ:Hy@©Ðp¨?b1HŽÚ¼µÍ4áŽJ½çžCâLeÎlƒˆq›0'peïza»¯¾Î½ìƒ“îÈ‚ì·ànø+ñ–7t•¢Îâ#ÈWíb‘™"©7éÊðFëÑÛ¦÷ QíŽý˜%¦?PêyæÁÚNœÛËCå¥qÀ}¼QÉMOeU†ä9°5ÓΛKÓ‡‚øß(†rBþ´²Eñ2ª7U© sÿ +5‘læÐVò†R?¤g NÍؘŠÂ¼I‡!J±äïÞÝì—ÛvËdæ]º@÷?PCM2neÕ®QbKH‰ÆÞzñ+Ó”¼•àÏ óŒï#ñ&[æž@Åï mg|­ÿšá;f&òn‚&ž´±Í¯kZ—Jª+n®°·r¬£Ç>^EPúò€¨R^‡èýM•Í“îæhç‘ÒÅx†5 Ðïc†)_µ‚1¤°¸ö“O™L9¬ _Œxüi»¯+§‹¢A[^NÜÈn"–É8S( ê]“«.îq DËE}ío=f“°H†!ÒGq×#ÆË)­õo·QXÁ½ì/s¶é0-u £8ñŒ­*(15E»²`g«-?Brñs p[•qºH•6"²àR\t§¶Ý1¹lÓÊù'~䨅KÀc#{®Ò\ðÒ."¢œ ”«k icsêuÓæ'ëT‚'’‡7w¹eGäþX“9Ø6ä¦#Ëí´â :_hƬŒ*‡i8º"-ÛrFåZ:é2‡[½çJ¹¶ÃÿCôe½œíÓ(¾c9d&•w 0r^ÆŸŠ¸§¿in#‘¢ºÇŽešÉ¦§™ÆlG¢¸ñg0iO»8Œ¡†›v…)«½ªÜÅÑûŒ©8™‰è…-^;þäÝôýãÕ·Æ+ï7sžÕ½ñ·퓨µ¥È`Êo-yå${6ñاbDìé)ŒÃp«,ÍÑÖ‘Ž~›F=S^•LNo°{w±n—W;ßQmr±ÇD¢RÊáOLE¤ë¯5]¨ZxCŠÊ)Ù'®Óé“ió}ê ÌÜ'šï«p¼]Ãù‡X¬¥&äÞ\Ȭo û¹üwðûã[qvû(ûÌj-\t““—ð¡½>ÅUÑúÿ¦ºVÎ&³c³tA­v¢é5—‡SNiZð¦4û½´:L--¡Æ¦¾p¢èŒL·“˜™E×lk(Š€`ÚJ!ÝGq(%T¦›®¼û+\Öixô*f Š!kákšô’³ÿ?ÓãÌ‘rùˆs_]ó­X·UÙ¢ãX¡ÅtådÜ$˜»âM´ë©A* ˆeT¤C˜ªéY&¸:2KÛ;¾m1¢Ñu3ª¨ð^¶²6(Æž1‹IæD½åà-{](¤Šyqºž½@`Ü NNÂõ9–܉R1Œb”¢!Áìw-òã¬mì /|Á  ñ?PÌö T:¸ÊÐ+šµ¿¹ÍȾ§ÖÖ=ˆQ›õ1w,ë7">lªk*Êä¸oþ÷ol½*DÞE¡íkš6@ uk$  €˜ýÓÜ»–5öºõ˜ŽdÓåÚ¦\p¦j1êçíë›zÛrˆ å£ G4leQ*§+fö@çD‚4îv¨€‡Mc¬/®m:?gž#ù†Î2|t1!g‚¨™‹Žx­¶‚»š0d.P"ñrPTÎg {­J²¢@Tô –A y×dêÍÖ}á°ºGh.ïíU™î8®‘úÀ¹CÖ–¼™“+Y.âv®wˆr&ºriNN´®äŒ`ññ×s÷îg¢Zúʲºü Ušì¸$} 9¹n D óÔ*§Ñì™b¥ÅÔÊ¡„ÁB¶ ˆZ¦t=̧Û˹K¨ÙÜú1ýë8ö¹W¾<áûü´È´† s>–JA/.eJám¢¹”ôˆ"à5ר÷­Âã®ìa|Ž1¨Å1þØL1ÿ˜Á™Ô˜¾¢œ+ëÏtTPÊ«þ^»d·(²Ê;âæ@‚$)Œ¢†= "au­5¾û±¼Ç¥šžK+S·>qà¥Þ¦¹;ŽØpûzœß?ùÉ…qûóEdÛ'Ýù—Ýø¢pEŠ·rc”Ôt¾JP#rìÖª÷4DÞ×*E“.›y·M¹ì–V[´ŽƒrdMsF¡ÁØŠžÝ$€k%Í/`k°u.äo¨'ã¸3szxð+ï$Fæ»öáä¿%okU¾8gs±k!°[8âÃ;黊>]+R=ªÊI®ŠÙÊ`EÎôê·¨’öÃ¥ö6Ûi^÷¿S#†N Éµ4OÏTÌl0éªÇÀÖë+2ÃgXäHåDS1V€(Ñ–…¢&Ý´B 5g޼Ô7Ü/¤”º¬$üV»#«­:2ô›gÉòàÝ8õŠp1“Ø®ÖâB™MÉL%Ý_oQÖ£¶DcÞ­….éR¡®¦Ó%»ÿQÅ‚\ˆóÒ'º(ïâíæ1NNìVÚ "_£òkÝ}_ºÿIéýº}ü†ÿåj»™úZr¢..L¹uàÎ+ñ~ñapÜÑ\gÉ™fö´² ýÞâyE-<¨ÎÊ1ó8P¥Z&Ö•¶]»EQ’tU>ó2DE"]üow÷×xé¿éï™…ØêàiAJaJ&µÈ(’Ì 8®­úo[°í=Pøg"›PLs);‰WŒù%vl¦¢¤0×ÃUÈ^M'WCq1WýÛÊfÅÄÌpÇê\`SÙwg-yˆ´´k7 ›A8YE ™„àL³wä8 fÝãׯ¿Vþéo»†ß¹ÌÈæ·QúÊÅôl´jè—½?p®J±9yÈìÑeLkÅ®2âi‰\Ãh`y arì#x)KÖjÃ:ÅLìÿ…Uµgˆ;G´íe¢­Ê’®P¼öžÚï{·Üw‹û§¶Ò!¤†žg’5ü ZæH¥(J~Èç¸ä¨Î$çgÿñ}›Ã¯Hì"¡_å N>Òq˜n¼åÉŒ»:&¸˜¥ú6= ªÝ€kz8)|ÂH5Š|Å«Š[®©úwc¶ÚâõËÅ ‹ÞüøsP¥j`xkX*ºë,»3zËevrC¶Wa`”9J#lª"47AgáÖ‡ï”o ·–!W€>ÕôÑÍ#5µæÕ«'è¥ék²(š,¼ÇÍÇHƒ´SVÿäáÎù£ÕSj@¿º·öof¹i"rÙkÛ„“}ÁHÿ—oËŠ¹¾6›ió®×un±jÕÒ¼uÈÈ,fåH7¦ykælɇɮyÿo[½þãÕÛÃ.œK³È¯n¶&m^]+±Â‹óÅÄ|Eä¸ëp;d»¥âÞ”T¤~Ê»7”Dhaùõ§õ×Rnu•¬,{„zÂL¤‡®’zé¼V#=ú}$ÐÀS#éÛ‹HB©¸ˆ\79 Q ¿F¯Hû‚Èîv­§ÔmA·aùÂ~àb³ž²€åìWý(ùÁþBåÜK‚îÜZçå5ñ%Ñ1iC²½ÂÑǧ²ânÃÁ9M©äY;¶n˜°IB¬ÝF*‘LqT ]¯sÞ ‡Lm»•‘?µô9p¥(0Ê”#¸Š%É'§\ܨ¹/eæÏXL§?lcîpòÒæŸ^>Jqhè¬Ér7"1ëËÎÌK½{*Ö6&1²‹ºxíd› ™Ç85̶¿qwmÒâK;Ë,ôq¥r .$Щ$€8¨M»{ΖT¹O½2«óÜ2.‘k‰sŠǼºÝÑÈx5`²Æmm™©r.ÝfEBÜ¿›Æ8]„J7ͦ*%•¬Þ‰êç?}ô.Hå:M{òù>Xµ¹üБN>BcëßÑüêÊyí<)žàøãéý0í’ç8㋽s‘>ý‰TŠ·ZE‹×‚±—x‚€%4õ2K¤»Sv[ûýË] ÜÎàN§˜üJŸ£Ó/sùweX?&8éëkh0Æ‹û†ió -Ƽh›¸¶Ü†ÁP–5«ŠñeÈí>ËÏß™Fø²m(¢‚³…!%ñLœÓm‚æöÏ{ÎÙ¬ŽÍ ø»H>aíÍ–¸UÏŸBKÚ>Õ'å¬Àý#Ý9Ýþ^b{Â\ˆGùC(ÀÎÊ ¢ëŠe$nÙÅUb§AUÔ¨:ÕzsumÇSGÓTñþ">ܼJ •Ÿ‰IKËÉçç;íì±#w¡Ê\ù.õY…{ŽfY]yvê·®P]ár»{ši´’ )õŠ ì†5 a hžæM¸C¹\EÜ®¿M~‘Š|çàx®žæGØ'ý:WÕ»v"X¹nOòÒÝ[D?*)¼U6sÜRRL×9£µµ‡®tÓ@Ià*“’n…±²f{xÑ~¹*[\é¨PãÛ¤Ÿz’ÀfufRcÓê-‘=3½vH-“LÏx™‹JôCo×€Züšˆpo7|u ¥ôÞ¦ÇÊOšD‹B[ý£ø®Bà¬;a>°Ⱥƒdº«1D{¦ìýM[ì8’¨ˆ˜Å®êT¾‡\s~ê Å›¤öâwpøª©n\ד^+·˜6øÁx Ð'šÆcÁ‰òÁ±ùï!†Õ¹žZVÝç|’ÕâÊVñ¼¬AI(­‘t(Ñì«>9&ŒÐÃÛXúîý8Ÿ¥_5àÔ Á¨?ËsdC­Év#WØ:h˜ûýCœ_°rÎ2·Yb/PŽÙ ­Û³†¶üé£ðîRÄ)?MEf°%•/.³{Yqû’/}³JQW)H–í³·Ý¢ñ»SÀÜ£Œ†´ŽÝø; °ú~pSŽð64]°”;(DÜPnNqÚŒÄtÄ*§i3%åº/¿Gaˆª*ER1LPxNöÿxnå·n‚FÉÈ£¤ÓÿeØÊ…¤î±ÊÙã]ãâ>_BºñòEs±Sh@4fÙ&¤)€¸9Jì %LÅú¥6š€+×U[†¹®~OO©½QÌ)RZ}03)˜ÜÓØªQÈÊØ$àC“ɪ©‘L Bãð(!ÔÇEë¸5Þíï©NÙ¿î/s--¯[ª0rF 4þxõTœIcel}7ùï¶s†—Œ;‡ˆ®«·šö2ÝQ¡ЄhB4!F„#B¡ЄhB4!F„#B¡ЄhB4!_ÿÕ„A(.ãÁ3ê¤tÌã@ÜBˆ6~ |Å܆‰uLŠÕê´–Ï9?Ï>5XïñòZ˜®K:Cgçwy^].x‹AÕ”ê×|”ªÒœÎ?¸ãÑi8DZN¼Û¨¶†î2(š½×Ûïs±mÓe”6?S]x×NŸ A‚²·º10ƒ•VÉÏ©†n¸.ÿNoOË»+ɬ¶@[ Þ‘s’ÄK†íÇP"2ÇŸžzàÊ,º¢Õ\Å0£Bí6àzϤof7Ól»kîÁ®·E‰=®hpi=ä'ýHGú-Õà«õñ;ÉÎkæyÓ•·’·¼ Rpv]¼Ê=¥¿dãËe©»­­›ЋI¼=»‘ˆ~Ùw(ª¨õ§uŸ¹&ý¾Œ3j4 ¦À(Ó\¹ôn®UØK=å®8zòÏ+`‘­»-¾sYðŒ”y sBIÅÏCqžê´î;fãa+q[·D$“–O™:nªK·p` †Çí¥ãÛÐó]¼ÐþåÕãø#p!XZšA^ÿ°*™…ýO¹sf$¯¸}Ãl“®8×QçÌ8ûÝ Ì[ÿx¤å7.,{vé¿®KFÐvã¹±DSf¬iĠЩlM:ùz·cÙ·Ûí!½¡F³žœhI W0=‹V éŒ$ž)ÅYÁ¸îNBå+vÙä6O¸æî;ÖéŽÍÉ\·6AŸ»ZÊ6~òí%¹qÚW ç¨ÊI‹´A¼ƒb‘Úˆ’(¤nsu×V÷ÛÔSÏsDÇ[%K]PEHkšp­EÄ Æ )œ±)Ç›=B¹{Êö=Ë|5àãkNÁ„“²q-çhbl· ~a¸IFQ°ÆòOs´¤<M™Â2!­በɉ·|Þz÷iܶ“c$äº=-§”N^l)Ã0(0Re¦3Z)# » à’M¤¾ÃÙÍuâS™Œ±³½½qÞ:/Êö)ˇDž¶®û=Ë÷í–ˆWt³5;XŠ"¦â‰8¿In[vÕ¿É4övó1 €%isAÔsy…4ãQBp5¾¦BKAI~Ló«˜|ÕP·¶iâ—mÛýš16«Ù‹qÎS·óM½nÜ O´·¸.<ÓxE¯³•œé¹\é år¢dES]©ºÓdß,E¼ñÂe sPê5À’~pªžûˆän“Dü¹}K9”¶!›À1\ôþ‘ãÕñ"…ÅzX³—7ÈFOM4”…‘JvEpäcgfãÞ[ÑË5vs™Ãa`ß¶r‚)fíý}²Úí¯±e­¤p kƒIzðŸ.Äz~Úc9R|g@æl‡Ìf¥ìL¿v_VÍ¿w¥· %bJµÆv”<Ñ¢ãÜÉ;”›“ݪáú‰yR#Ó¯:‡þŸ‰–w’d 9ïb@>4Æ€’IâT§Ê"hÕË牷ã÷?¹eq?”Þ•¸2Å»3j’ñÑÙˈ±K㻊וcúq9ÛŽ)ƒ̼„ŽòYÃ÷SnÑe°L£7 œä]ì=\[iu¶±ú²sy\Ü3¨Çé§qH9ù\ÕF­»‚3*fŒSró€Å9s$cxÅ:\-yÌ[Qw"*5/•2sÌctQL‚ Ô¿ 5æ¶Ø#Ø·[«x_ªHí'´T€~!P\D!‘à*›ŽòÎ?l{Ž-ÆY³zØl\»qNÙ¼Òe*nÆÚ÷U*áfg =¯ˆj)Ê"]PôÍõ–Ù½EygìÇ–P\ÜxÑ®a¨á;ANÚJÚêp@╜Žõ7æO1›AXùï‡Y—=ncîØÄùz'!bvHèùñäÃì÷1 ¯—ˆfb"¬{– £D fæ‰Nû¿{³nû4¶²Ånçȧ–¢•o6pÌ`¬å¹c˜ê´ÕÆÑ‚{j5YFÅš¤U b€íÚ@ íÜ"=}¿.¼‹¸ÏKéÿ(¸ª§º‡”à²c9¿Ÿx_q¥yàN;q—$äx÷óŽàr^g²²%ÓxZ¬§áÛò0vÛËK*ؑёkGµ\»ŠÔ^Qû¤ÅqEaH;§µ]U¶ôÜdIglnK‰õ\×@p´@áQËZ¹ØÐÐJµ±fÁ«·ŠªÎóvYä†Rs”/Ž9ñË]SWEÇ|¸ã¥—{ÙŒ²ÓxH7•—¹ïFW†FÈes8£ä”Tjfe:®×QR¨¢‚p›î_Qm;üm–(bl¢µ-LMI­;©™ÍbêfJ&ÅÊ>Uð¢ì¼.ÜK"ñ´òl[yc å‹eKËd¸TÛÈ6E¥ÅÞFD«6i.ñ$Õjñ:.TEpY#Dö˯À&µ.)©§{Ž'íE¥ÈŠ£ðªÝ;ÍþN« sÛ‹hþ“-¥—íšÚ6= ä5÷ž8Ô×4¿]ºi¤hRÞ?óëš|0µÙà®5ñbç¾Æì–QÊM¸2$œ ù`™<©›k1YÌÒ‰EÚHlÑé¡ÞL‰ WBûÓ](fŽÒÎͯ}C¥ÒïUÀ»V—;]4ƒJÑ€­*‘Íh4%-¼á™ÓÈëeÕø]Ä t·ß1ÁöÎ;ÉqxvjBnfqÅß%d/—ßÌ'>uåÁE¬³X¢´j‚@È U;·Ž·é+ޟ¶ØÈæ¶šÇÉ©:Ëu‚^+AB@“GÍ KBÙòߟÁæ©¡-ŽAñ…Œ†‡RذòÍŒ2ÄTÇÐ*ÊEIº‹µ. Låp ÁÈÅ‚^]Ük¶È¤²ÂŠi(¨©®‹¸û¡²uÔèÛs6š¿ËW|k‚Ëîð[…V¿ ò/˜\7°®lqcÅãlÝÇ|„àò—¿ye—#b©)Å<–‹bGÑvÔªâÜŠ±|“U&›…Û¬ªD1un›÷Ns²]zrXF‰¦ãÝòƉ†Ý“ob_dNaòk0Z38s`Ü!Ä [wväh¾>Z“з.HHÀ¨[·¾Bº®[¢ð’³ˆä¢ C6rÊ1Jy„7 ¶ãÖ›½•žÙmmm£œBÍ%ýÏq%ſݨorÃî#cHcCAìâ ’Ø TÇë[î v @ÄSÁMÀNCwÄ8€€‡³\ÆÇ}Ѻ ¨Í©UÜ&mù=›9Uê3”0´Ï'Öµ2Ààq­œ•«pÇ·˜.›8¸ò ÚÓtC"^fd®Ú k•ƒ~ÛDD¦ö}ëÜOßmð´9¢PÚaÇ´š“‰ãõ+I/5Æó-¦LÈÜ¢œâ=«éÖÕ{pœc·3yyÆÍ…øºžjV\¶#™sÜ Û§Çhݳ Ρ"S{÷©H »ƒ².Yõñþ„ld"¢¸ã\q¦t¥qÉd]·ÒÒâ¶U™ÞÛØK‚ FRPÓNœFËÅÊÆ(‹ÈÙ8Ék 프{ÔHª+¤r*Š…)Š`×4´ßæ‡t}ËA­Aú”ÎCõµ6.ïQnD] å9Ä.'r·&Ú‘¶¼.rÈÖnD·2\ì\A„R5Ö1ÉU¿›±2…Äz·»¼Ç2¢rõsÖ{FìØíem5ãž ~4p⺊@=F‚GjLæ+ï–\þÈ6…ñÈé(VVÆ3…<.!ÃöºÚÉÄxªSh‡°ìÆj¬‹8oݸYÓål‚'\È ‰©ên½†X?oš#€4Q­o`!ö&./†Ø¬Œ7©)8ÃŒn|†ø[Á ¼yìè» 0¯}âL»pÍæhhÛmŪº¹-Ëù :´´k÷§rŠm[°Üè‚ç(ÚôÏ]m¶[q€ÛÛ09 :u_AJ¾®5'&€U9 ËY4´ cüqU:Zí¹”º®U1¥ƒˆœ;W qÖ*ޏ!ñõ¬Dc°+Kb6è¹.ùöÌÜ‹Q]@s$íC.ª†Þ Ròþ¥ÜvÛýû÷vñ±­qÄ4Q¢‚™|sÍUÎöK#Î{•м}^¹BßÜ|TŠà§½.¬i+…ó“ÈIÙ²JÆK·¸$ÌNI åÔûy(Fk øçMÌÍMB‚){F×ÖÛl;pµÖÑÇJèc\Žx“^úÕZEvÁn†Ø?ñU¯ˆü±ÎœÉwFyÁœ`â¤æX¸efæmI<‰då9T1,uÀÒuŒÅ£‹[Ú¹’ÌV&Õ>vb„’’Žº.)Ì¥^ßÖö;måÌÚ#!Î̇rƒÁ¼Ùx×Å";Æ1î:*åžJó"ûa{eŽ6ñwÞîfîÌ€ì+þʺ/c%æ8[^NnŒ¥}1šHíÜÆX[‘éÌŠ@eÅ4ÀšäÞêõNnRG8´µeèu]+D®m Hsµ@T«V·(˜¿tW9  gxWþÝ"N‚N†½¿ÙÎ#SFÈZnê!³´¨|¡ø¹ ä\Gª--{ð©͊îù,máæãòÒ­6_oBg¬ÝCJUQÜRÔ´øˆaè!¦,7¯rÛ7») .a‘¯±í ŠöŒ1QÅ=i# š7°ó‡*Q«Tê4!F„#B¡ЄhB4!F„#B¡ЄhB4!F„#BÿÖZÛ ¨ª Óhí( €í÷ôðöëæ~æÃ¥Îjl…¼ä[¤qò8š†.ââî &ÛÖš×És[V¸… H«áÜ,Råî¨Å¹À¡@¢]z€{vˆÁ¤Cs;M=Có¥‰â£w5 íÔȊ⚤Oi@¦¥¡Pñê#óêm¤£÷QºsV׊K8¬Wþ¢Þ .b&pM»Šølß\3HÌÏâe8‹ŠVÇsò?xG=$¼Å–1Ãr’HÈE³\,ÔëÍ‘R»“ ‡®ºÜý½»_í_«O#"c#©þã@oЮã»m(@øeøÏjÍD8•ytÛÖÜSˉãû±¼lCH;n,ÓNÖ|æ2Šm øA6m’¤Ý*e €â_¹E{}pëWQ®qq À šàC°dgí` ‘¼c"”j¬O`HgfQ©]ûÙ0|À[œÝ[¼D@k×pP)á­(=í$‚ió&\Ð)CPUm艈—ŒÆ«' 3l—! VÒLŠ®™”¨í/šDà$(€Tß.3ÊçklŽ?Ø«Áß?Ñã[ná)>+3¦I* ªë“Èͤ$¨ì,{² °¢"PS¥u‰ö¸ÈÒjåŒ|½Ë*Û‡p•ñm/Ø…MDæâÉÙ¡ŒŠû¢fÊ(=ÓT;…8›ßM4é'ôõ]@PA S,k +h¬ã™8Z-:91[”’ ˜Y.B¢C3ñøiæÜLcoæ È-“K~)¼«&­RM7mVˆ~€ óQjÌVP” w ƒÖ¾ñÓ÷ä‰ ÀÔGa=OjÅií^ÎcؽLÆY£u„¡S§0ˆü"iìðÕ“%‘”-y68à´?uÇ¢S‘Ñ›ã! M´ˆšƒJ¿NÏ$Ž¡sÉ .¨È(Üzg(‚ÈåÞ8…j""%á§-¥,s(üÐO5J$Hxä½6Ój%!@@GáÚ"Ô~Nš·7¿Í)ªVªŠ°c¡·™“c‰L;ˆÐ=¢!Ö£^¾ý"I%1¸z¤ %a‚²6 hs¤Ú‘ìÇhêŠ"Q(í À;„jb޹‡P~äI%%v}«-qÈœg ªAº5¡‹°)TˆZ˜@wÃ§Ž´×ÏpÂO¬ê©~Z\¾AE& )G3¤]…©€:õ¯þÍd\Ü~kª™ ‘ޡן'm:Q(¶~n<Àñ•¹@â@îO¥Ó¨të­bÝ'·Ü!kæw¦ì3í¢(iž)%÷{G,ö*Õ3—hЧ‰Jb…xW¡zuñé­‹q•ñ^ëÖAÜj–‚&·+)5²µ4-I.-…ƒ Úº* @ÛL P*”5€AüzºŽWŒjœm(ÕDU ()ÆÚ(ˆPKù¢oÇ«å™ÌÁÔF4«”~e ˜ ZÑ(WqiñT(PÖ¾ß &<ñ8¢¸’FkIÒ5»¶EPR©‰Ž‘N5T !N€SxŽ¢_ºF~do"‹#2>5è R"’I™#‡ÂR‚Q ÛNQ¨âõ÷é³1–-EÄ’³õ¯9Hˆ‡&9ŽÁ¹ûÄ“9“¢`¥ Pj:a˜1Á¯8`›$‘– {7Ì­HÑ N!vö«R›óL$ñ ûôΧÆóÎHwýJðu\qJu¡£éT<«pó %(ì7r€tºu¶ÓßQÕôZjjÓôqO1Ü¡¡ØÑz°lÍ DÀÑ‹5À^Ñ:pí І ³X¸sÜÍD>”š¼ U¨*Øa¿º‘tí·)U 9`pLCíï¢@0†¢A{<5źÞ\k:Á£±áÇïJæ'U±X â=ƒòD¥¬[è %0Ô: a ø@Ô®’Üu`ëid­Ä4·OáøS—ü5T›©ŽoU™?¿â³•YS·•  ÉÝ’FVÀPn¨˜Ô:­„µ÷‰+«Ù4ú“ALÌߟҢz`ŸR«½š¹€.‹_I9HÛ žb‡SqíT’”A2ˆü)³‘Y%GƧxou5êÏûvê‘u¶n]'s'çÛ8Í9úOu$¹²ïJÝ:zçTRZ=ÕsqGÀýk§:ô¢Ù¡ЄhB4!F„#B¡ЄhB4!F„#B¡ЄhB4!¿ÿ×Q@²õ*ˆ‰N;kÐ¥÷P@iZt×ÍKòÛL‚Òâ󦨀…Ø&©ªJSáëAm<5¬¼8)g"­VH•ALÁN‚Q ÔKJP:tñ~¡1Á®ªÀâKT%ª»wP‡¡h""&-MZÐK_hêu5P°‰ÒÕ±ƒòL¥™ºQ>ïie2÷'V'-CÁ% SuñÛ©×2Dö´8Ò½©`ÐÐW@#ݑŭpŠ'å•MšªdÜ)*ÂA2‰¢Tœ§Ü¥>q¾$™ ¤ù›E ã VòV%£\³*ˆïr$jää •@ý¾)`7bøô7Ošˆø\ãÊòHÄU E&Ìœ«äÎDdÁßmC¨$2N]§¸; Qº¨˜S ý„¾ÀÓå¦Iq€íEFb,¤Dôr‹‹5ö]¤SMÄ#Õ…‹ä€¤Ý´ÍÖ1T0ÃOÁ¤H CP›Õ‰9¬è¥g¶…Èèä]6ë)p#ÝSQ#nDZV§© õ8ÓAi «³I uY¶¹ nd9Ûp‰™É5Ü(ÅÁO±?DÉ$Üâ&7j!Ô¡Ô4Û_¤¹œ jÕ3‡ÞRlÖn4v %š‘j¥Û^=c³”25«ý! nöu®a$Tæ–§¦Þâ* á7vI l‚â`0‘ $EÂ@1A>áËÔ}½zë^Þ-ÃecÂÃÉ}0Åx³nõL\·n³Ÿ.dŽª¨Aw1ç0P>  ÐDGKµ¸1´ÝŠFªÀ¥ä¤38ùwglÅ&é¹lš¬D S Ò0}Gü@­MPÖÇe;Þ^òQ‹•6äŒacò[9´How[Qr ½ ÷›3¤0@O±4Ì4ÿŠº"il3DN,}iÜïãTÄàpK˜w=•Ú©_ˆ í Ó·à5ê& ‡Ï§dÓ,n`ÄtnÌSBH½ÄEN¦- `­áˆ{€j4ù5ª;–GaU ’Þò´ŒNR¬¢b!C€˜ÕTz€Ò£òÐk]E•¾WQ$­Ê¢JeÕ„£A5F•©Ä|GÇR¢ysj‚I¥V°ô*¦)JS »­F½z D~MH!Îmk‚%Cç€÷?÷»”ê"j€Ô@½4¨ÜjÜ2I¦“TÁhJˆWhÐ@Ü%Ý´ÀÆöû+«x‰v5Á, * þ´PäPJ1U¨ü^ß j&¿.Ÿ.n%Ç ”'šÅ~P˜§Ú4§^»«P¥ÃÝ­'¨mËØ^°ÜB®ƒsÝE!ÞjÃøºü%ú?¹”íÓ#ÇõI·ˆ;7Rƒ¼Æ5FàSÖ€=šc…Z±^ €¦&:*ä•(¦¡ ùà`íÚ?íÓOµæ9/~e–€IÔpHi˜sÄËÈGˆQ4Ü(ªuüäÜÕí m5[½Ü¿¸²µ¸n&˜Ÿ™šÐ *ÔÛT(h˜HÐÕ÷ @­tå”ߘÒrPèNÉ%.6¢RœLP üh€ÒzW¨ëyÛ¥Ô[*Á¥¢€$¯ib˜w¤p!ê0 *Q¡‡åêÙã 4w ,3NM(—e]„GpãP:íèP£Ô¡©18Ó2–i¨^’©÷Rtå(€ÃQ=h>ÿ“Ji«ôÕ`‚Or† c¢ëÄÄø†•èp¥j.f‰"8bV(á’gÆ«¸„9„ UˆP¥ *S˜z€ôëO—U–bñÌ Q5§Î½:ÚÍ@0u²‚#Q¨, 'ê t¥|5†‡E)k›ƒ¾Ä—4Œj–ÒR`'U‰@HÅ ¦1VÝBAÜQê!AÖÇɦ‚ºJe팆 fõSÊS¦m¢oˆ6‰LP:‡Ñù}š¸·h¨cŽ5Ÿ½{˜{n© “´Ê¨”<*¦¶µÔ ‡QðÒi©Ž©çiùþA=&†–Ð'&;”ì®ÔåÜU™(DÇã1jÙcî)€âMq§MÁ­ ªmL°ÎÁÃêHõO¯½¬Dß°pÄÆ]±@Â;¶º ­P  "z’>]r-ŸpvÛºDçFXÿp?L{*“s®-ÿ¼ÜGܾ¢ŠáÁžE¨z“éÖUˆ˜ä'P\‚bRhë— fˆ§©.m\Ïë90®ñÛOÕ\Í%§˜ñNËÇÁnØÿƒg?¼-ÏëhjŸyÏàýŸ³ØÿjŸûå×å&¡Z~5æTBìûT?Z·ä lÖ>W|R¿Š¦Ü¤ú8Ãõó¬u?þf÷ý“~´ÅÆE!ã|þOû¬Gåw‚Œ|ðø„äÝG?èZ¬ÿ¨TöæTm?Þ¿ÛþÔWþ‘ðX…¼oâÖä?o—˽eÙ­cÞCç/èV ý/‚ÀÌ-×Ñüò†™XvnKEoä›ôÃWpyWÝö¯†_I/Öééä‚fÚÚ¦ü“ZÎóú¥µ[Ëgì‰óÿ‰®Isú’øýŠDy0{öƒþPÔ4ÓüŒø­c¶_Ò.ž“ôJOâwÁ-r/øˆŸÐüšÜì¿úV|ŸæwÅ)å Q[Õ?vWù&ü¤Óãõ‚S³*§ï?^O÷i×þ›>?bBcBþì‡òÔÿ“U¶ÿæ$BþI}›ÿèãüèis~´^)·fRŽOí“þYœ6ž‡7$IæÌ£K}¢ÿ®Sôõ)ž`£,“~ãÿÏ~˜k?þ D¾Aã÷¦‘ý¬¿ôQþ¶ÛZ—R–wØSLóÐë÷x?Õ¡ýg^x¾ýk¿ç*k2zÜ4ÿ6ÿ¸ÿ9®Þßò±ÿ²+P¨>]«{jˆ‘þüÓ[L;ý_ò7ìO³ÎWêÿü«ÿØwÿ¯Gké?Gÿü—KÿùÖßîXºU·ùkäoÔ [}F„#B¡ЄhB4!F„#B¡ЄhB4!F„#BÿÙ././@LongLink0000000000000000000000000000015600000000000011567 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/docs/spring-webflow-reference/htmlsingle/images/annot-close.pnglibspring-webflow-2.0-java-2.0.9.RELEASE.orig/docs/spring-webflow-reference/htmlsingle/images/annot-0000644000000000000000000000031711360615630027663 0ustar ‰PNG  IHDR oó‘G pHYs  šœtIMEÔ 0ÜT€›tEXtCommentCreated with The GIMPïd%nEIDATxÚuÁ ‘8t7 cûÀÔc_„ƒ#ŒªŠOfDxÉTåÝ.6Ð-’Ҥƻ?]¥í‹iÃñ¹çòóƒ{< !C-ðvùIEND®B`‚././@LongLink0000000000000000000000000000014600000000000011566 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/docs/spring-webflow-reference/htmlsingle/images/tip.svglibspring-webflow-2.0-java-2.0.9.RELEASE.orig/docs/spring-webflow-reference/htmlsingle/images/tip.sv0000644000000000000000000000464211360615630027717 0ustar ]> ././@LongLink0000000000000000000000000000014600000000000011566 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/docs/spring-webflow-reference/htmlsingle/images/tip.tiflibspring-webflow-2.0-java-2.0.9.RELEASE.orig/docs/spring-webflow-reference/htmlsingle/images/tip.ti0000644000000000000000000000064411360615630027701 0ustar II*€?àP8#ž ‚BaP';J”RÄb ç¼.÷^ÄÜïxÜ5(”gE¡‘ô‰‹=ҋج‰þçR­aR¥ì*`ç…Já,å,¶÷=ˆMsˆ*–K RÑ s˜@µJÏ*3([z •Q*ð¤aì÷T…-d3 ôBì°7:R_=…¥6›\ŽßPŸ˜î»m¾êÿ{Þ­WËtÞ±‚¿·­Ïû÷ RÈ_õlv†ÀdfxˆRök«^)‚Ý®yxˆÂ›Ìl”­‚-R—ˆS;_"‡±¯î}“]“J#(Ðyö±3–,ÙÆ¾ed'; cÆ2ÖiìK¨ÐO”´Q)ÒB) %[…JQ‰²ü²¦B"K‹æùCõ»®ç}Ÿ÷¹Þó×ç>×çœÏ¹ïs_×}^a‰€¨è8ºëv ¼·/žeØ< ‚$r,ÍÜÅÅþ£­¾à…*‰F‹üϼÿÕ°to_DB7±mbwHŒ£Å a @#Q4P¡»»jÀ†nâFÀmânÀ&Cã! _4… À2€1¡Ç’°*@¡Ä’£°GPjQQ1ž6P$Óèq<³ êíã‹ß,™²`ˆÀ¼ùÇ. Ps @\úŸÂ=aÀõ­ÿø–]÷,6DKN æ1cY€å(ÀF!ƒñ½‚ÁØ8À4ÐIާ'ü:/éøoëÍ=ÿ2&€RgrB‡1ïÁœb¹ÎÚÁ6Äþ‘c‰‹+Ä-Í£ÊkÈgÎï à.è…ó" SEh¢±bqâñI’©R™ø,é,™²åo9!F¡\±ZéÚÖFå.•ÕqµU»†Œ¦––‡vªN¹î#½u%C’Ñ™m£&R¦T³ÛœÄ]–7­ù¶ÓmúíÔí9|vrp®ÝÁíéöÈCÌ3ÒëžÖ7`gµßbÀÁÀÞ n²3åhð³Pö0sj|xmÄx´eL"íêî7±è8B|@B~âݤÙÞT“4Úž²ô®Œ‘̉½Óûæö/f-e¯ælü…Îå<È›'˜/qHñ°VÑóB›£;Žy÷=á’\D-Ž8qšz†Z^v–Tæ[îvξÂì¼Æ¥J…ª-eªñ—$.‹\¼Ê[ÃSËyùÚÏëëuË7æoN×ßêoxr»³±©©®ùêKwϵœ¼w¸õ`[VûÞŽ”NúýèÑ#»HÝÄ\ÏÄ£3žØõ õÎ<­–ÕçÚ/Õ?ÿ¼íEáË€Õo¯ ‘^«¾þúæápÁˆç¨ÄèÔXÍßô·ºo¿Ž7O¤NN®N5L§Í˜¿cz×3›ÿÞéχ‹æ¼ç…燊?y/ /|.\rZæZîù’µb¾ÂX½·–²®³¾øµæ[Äw¥ï3?*6Jý|ÃØÍ` ÐL|h³F…›•ƒ•mƒý+Ç'Î)®×Ø^îvž:Þ ¾ãüÙ‰‚¸]BÎÂDQ]1qu 5I])¼•´©Œ¾¬ªœÊù­ E%ÂV]e¢Šª·U=™«QªÙ õL{A—WO[ßÍ Åð¢Ñ 1«‰Žén³óY¢²e„Õ5ëu+Û<»! Ç4§~±¡® £çQ¯%_ÚÎ~kþú{[Id#JBðíå05jxøåˆQòÑ~1Å´WtþX÷¸ÂøG‰¬IɇS¤N¦}Üó)}%ãkæ·½?÷3gqfóçˆøK.—pÐ0Ï"ßöóaï¿#…”£áÇbŽÓNÐOÆEÓNE9Xâ]êrÖªL·\õœj…Êy¥ J•ŠUòåªe/É]–½"uU¼F´VäšðuÁ:¾Ü7¹ë±·¸¸nó6âš„›…ïˆÝÅ·(ÜSkÕi3h·èpêô½¿óÁö‡ø‡K]=Ý%=QÌ =žò ÷ÔÓ¨gÄ>‰¾ÕþÞç/_: È ¬¼ê,Šymþ†÷ÍèðÕ‘´Q›1Þ±á¿+Þ†«/N4N™ ›6š™wöÔûèVE>~˜»;ha×'µOß»>]ò_VZ^úrg%gÕeMxmd½â+õáÛú÷»?27¬~b>cDmöµÆ´ˆþÂü 3Ï2Ï:Ï6Æ>Ìñ’ó1W ¶–»Œ'7‘Âï @ä\Æõ ]Îñ%ˆ1‹ ŠWJÄKZIqKâ+¥£d e1²¯ä.mI—÷PPQdU|§ÔµµZùJœêN5 u5‚¸›Æšæ´V¿v›ÎuÝR½\ý’¡ƒÑ¶mxcŒñ¢É€é-³cæ T¢—¥µ•¾µüvaf›UÛ÷v¯í»«œŠs]’v„ºzº9¸y¨xJyá¼¹|P>_|ßïœð{³ë¥o@gà=RKP3ùå|pn=4 ̆ª.Á±9Õ}/¦–V±û$ý¯Ø¤¸°xÿ§D“$õdéTtêrÚÛ=OÓïe\É<¾7c_È~ç,íl\’³v`þ¯ÉÜ7ûòºò›];\]Pr$¯0ã(íå¸Ç ë“ÚErÅ‚§˜O}9=}f¨¤·ôÞÙ«e¥åÇÎeW¤¹@ªôªÚqѶÚè’Ìe¸ð~|5_ûéäçÂåÒ•ºµ™oø?Ó €Í·£ Pà=àZ P° È €«páp7¤£+Ù€Xü~?¬À ’  ¦à‘çá>L#ìˆ&â‡ü…4"ïQ(ÔaÔ#&V&¦<¦~´(š‚®C3˜™Ï3Ÿ`.³ YH,m¬Ò¬ûYgÙÙêØEÙ³Øç8¼8:859K¹X¸â¹&°ÎØneîbžXžq^Þ>e¾b~fþxþi7vA‚`9Ž—û*)ôVØGø™Èv‘6Ñm¢ bºbÍâ&â6}’Þ’ÓRt)>_ZRú¦Œ­Ì¸lªœ€\Ý—-KòE & “ŠùJJ3[O([*/«T©ú« «õ©ç¬4@£E3CËB›I»C'[×AOR¥¿`0hØats[¥ñq“lÓD³ps²Å.¢›¥•…µév33[3»íö.¾ŽÁN4çý.E;ê\{ÜÆ=O/GïDŸ ßA?î]†þä€ã¤e²Å?¸(¤7 CÝžÑÅíSNûD7Í‹û;A;17i$E5õ@ÚlºeFiæ÷}žû›²¥rÒ¼É5=x+ßï°xÁ@á©cA'dO~(®=^âx–¿lü\ÃùÂJÊE›KjW®~¯]¸þîÆTýXÃlãÊÎÙV§ö˜ÎŒå]Í=cOXžú¼ŸyÙ=ˆyMÎy+?‘65ðnëû='ì/-s¬Ä®M}³þq—ÁØüI;‚è‚Ã^8ðáCL(¤ @q¡lP9¨‡LlLÎLELãhet º‹Y˜9Œ¹ƒÅP1],J,¹,Y]XëÙ$Ù°}f÷eïæÐá¨àäãÜϹÊÊõëŒmçÖá¾Ì#Ësš—‡÷ïO¾¾%~*ÿ¸ÀNW‚N‚pÖ¸v!c¡Fa=áÛ"Z"µ¢¢×Ä4ÄÅMÄ;%ì%$$¤Òðløbé­Òm22s²9r’rM[<·¬Ê)) +f*)(=Ûš¤ŒWîV‰U•V}©–¥®¥>E(Ò°ÑØÐlЊ֖ÓÒ9¢ë¨‡Ó[ÕŸ0xlØ`tqÛiã\“ÓH³s/‹DKc+=kííÚ6º¶:vÆöÖ.޾N!ÎÉ.ù;ª\[ÝÝ×<%¼,¼£|Š}Ÿø1ï"ø{¬'M(6Áé!u¡3TÙpRDYäX´xL­r÷B¬f\rüýDl’grIÊtšîžœôç™R{#÷5eqe“rj|ËuíýeÙØœ„ùÛ¶ç{Z+(,Ô::z<ã¤LуSgÄJÚÏ’Ë9Î5¯¨ê®Î¼¬{e®¦ò¥NéÆB}MCr£}³ä¥–§­·Û“;fï;=¸ÛEè¾üHòñ±^ÌÓägËý>ÏŸ¾Ô(„!Ÿ×ׇÑ#£gÇÆÞÊûMš¼354½òN`Vù½Ù§®sÎóŽ vŸL5?ã—Ø—>-÷©]É_¥®Y¬ó¬}½ú-å»í¡£¥?; €Íy ؉1‘1t¼Ñòÿ9ìý7‹ŠŒÿ­ÁœÔ8[w€¾ºµ+XÀTt“3ð òÁ±Vn¿°~ÕÚv3±£Å¹¸€0â›æîX„N²sù…3£#€¦[Zýн@wõ9¤>"ÆÞ8¡àhßZS± n¿ù«’¥=ˆ 0)aD§M>J€–€2Ä@$ĨÐd  ¢od b!HI€‡H Ânˆ*P bÅÇC$C<ÐÁH@‡PÕ_ ÿSǦ€ÔÿƒA ÄP÷Ñ£n„$Ç$z†®Þ~þÛþb0DÿÉ´©ô{–Gk¢uÐhc´ ÚðhZTÑÚh}´9Úm„ÖA<»=÷'+ñOø?§€¡ÿV«*„ èÁ 0tˆ  îû'6gu @I @ëzjæ¿ß«¸à¤8b -™N ‹Ã›Óh‘ÁxbL->.˜®‚·&«©à5 €Ž$LT~T”E pHYs  šœ IDATxœíÝ}TT×Ý/ðßQ@gT Æ†Æ†$­3$¶½ézƒOâ ‚m¢‰ˆ16Œt5º@-ÉmQžµ’ šZ²2)qÕB^Ô±UP¯IÀñR2©ÉEò  W°:è3"3Ì˾lD"l˜ù~þ:3œ³ÏÞ‡3ßÙgŸ—‘c ”LtD0 ‰@<$ˆ‡$ñD ’ÄC€xH"I£ƒg³Ù.\(ú?0,ž{î9›Í6Ø…Ÿèjûœk×®%%%…‡‡3ÜñÞhéÒ¥ ,(++ øR8:Qmmm 3gÎܹs§èº ‹;wΜ9óñÇokkøRH¢‘séÒ¥¸¸¸9sælß¾]&Öï$“ɶoßwéÒ¥.5¬u¦¦¦ØØØçž{nË–-¢ë0ìòòòž{î¹ØØØ¦¦¦Ìq¢‘P__?þü7fddˆ® ÀyõÕWårylllEEEtttÿ3#‰†ÝéÓ§,X ÕjŸþyÑuQ“&MŠÿè£bbbú™SœauáÂ…Ù³g¿ûüå/E×@Œýû÷¯ZµêË/¿Œˆˆ¸Ý:::V¬X‘`³Ùººº*++c•••G%¢‚‚™L6yòd"š6mšV«‹‹«®®æËöy0Dâuvv.[¶Œ+'$$H’d·Ûår¹g†ˆˆˆ¦¦&Ï1vvv&&&~ÆXww÷­×ñbphêÿÏ’hx}Ÿ$ð&¸²F;$ˆ‡$ñD ’ÄC€xH"Iâ!‰@<$ˆ‡$ñD ’ÄC€xH"Iâ!‰@<$ˆ‡$ñD ’ÄC€xH"Iâù‰®ŒU2™ ?*y×I’ÄCÜ× ‰`ˆûðŸ}>ÀÈ»sùìÃ|öù #Gg ’ÄC€xH"IâÝ9‰>ûì³á¯Æhä³ y’ož¡1’äµ[Ø‹›&oÕþ›†£3Iâ!‰@<$ˆ‡$ñî|,ø¬S§N>úè£Ã¹çÙÏ+mÝDÔÝM÷ªÿãÑÈ,ÔúyÕÕÙs¼±û:MÇ«.ÿlάÀ;-×vîËÏÿÇħƒf<4gVä êjª=~9ügÑÿT]Ÿ3+lPËBÿÐ'‚Ûz饗fÏžýƒü`Ë–-&“ixVÒõIÚã >6jªÌVN*ªµ`¡³iq%ßÎçlþLJzçVÖø÷• ÔÔÔTVîû­J©^WÖ×ÊlEó¤·jm·þá²þ'›¶óûâv×`m0 †Ó˜ÞÂn·{Ù²e&Lˆß»w¯Ýnç½KM³ä«(¿îÆ‹ÒTJ.¬cŒ5ÎW©´¥uŒ1f©ËOU‘*Uk03f©NVå[k9’¯Òä6X ›³K¬ÌR²6umvšŠH•šßÐų֦©R×®MMÕ6t1}¾F•o¸¹jS.Qö‘ÆÕ…ÙDDªÔÒ:sCÉZ""JÓ[Õ…Ù¼k *»«Û¹y§ÁjÕkçn®bÌT’›JD¤J;b캛‚±1¾Ãô¯ÿ¦™fÿõ¯µZ­¢k1hc}Çâa¤P(ø÷VHHH@@À’%KØÝK¢ QòÚìì쵩"ÕsKˆT¥ fKÃaÑÎkI*Qv©Åa9œM”¼Óa©NN.¨ÓQIC³VÍ¥53KŠhmI‹¹A«¢ì#&cI*Q¶Ád:¬Õiª-LŸ¯QiõžuWæªTÚjÓ‘l¢ì:s—ñˆ–(µÎÚM´¶¤Îa©V‘¦Òäp´QñŵI›«Ì<‰ºê ˆÒ¬¡$T–»±-ØØßaúÑÓ†eœ(&&¦£££±±ñnèv»ó›ßÌŸ??88øÖ¿J’¤ÓéÖ¬Y3„’Gà‰”^ðÄ5?¿o÷“áhNòìŸÅý,¸ûZä•W¿µûóPz‡r·'ݯ z²P«ÉýôˇªjKRˆ=ùÇjÍ„·\ë¨tõC¥”Zb|æþ@ºF“h<‘Ó>UsäÏÜ£ ¤5š‡N~¹÷ÃÜjó¬PŬßmUm̺u½òÉSÉFgO¢ÔŸF¦"C+ ‹TQÇgø…Ì,3¼~N¿‡¡Ü@“zoÿ¢í›^tåþÖtâ¡ nA†2N´iÓ&I’¢¢¢¾ùæ"JOOOII‰‰‰Q(¨¨¨8sæŒÑhܳgOkkkTTTVVV\\\TTÔž={ˆèĉQQQž³VTTÄÄĤ§§K’”žžÎ߬­­U(’$-\¸ÏÀ ä3ÇÇÇ;N¾HFFFkkëµk×ÞxãA=ò5''Gà÷À(ç9:ó÷÷˜;wnQQ‘Åb)..Âns;ö«4oѯž|2)é™ôºüÒ—]µ]U÷÷Ì®O4ÕŸ¿á ¢i‰H“üáâ÷›¾SØ$?"¢ëvR—ìš<±ŸïZëÑ—>õ‹{.cPM³55}ÓÔd_Sð‡ûn¬Ùi;·_©z¬°òâtÕü´[ö»?¥¥®2–ή{L¶üà nA¿»wêt:"Òét‰‰‰Där¹Ôj5åååÉår"jnnæ%×××{¦ÓÒÒär¹R©dŒÅÅÅõ\//P.—/]º”ˆrrr, )•ÊÂÂB"R«Õ.—‹ˆxJ¥233“ˆŠ‹‹ù§B©Tvvv644‘Óé¼›Çïg[xôP©TD±eË–Ë—/÷úë]jš¥@EÙGŒŽ®®.‹©4[EÉ;ÿß‘l"m cÌÑF”o¨Ï&Ê­laŒ5”¤’ªÀb©NÖ8˜EK”\``Öª¤YZ33çk’+-Œ±GaG²I•[Ék(Íþöè,÷H—£Ëb1U¦¥ê-¬®@Ck0Ƙ¹:™R ]æ|"­ÞlÑkI³“1ÆŒ%DýwÎZJ×ò™é0QZÃÝØlŒï0ýë¿iƒn6ÏââbžDõõõ<c<8x6ñÐáÁa6›c<2:;;‰¨°°ÐS O"‡ÃÁãiUSSÃçdŒåååñpé™D|f|B§Ó1Æ\.×hKÓ;ÖÉ“'õzýíþz·’¨0¹Çcr®Áì`ÌTx³¢Ê.13fÖÞœCSRgf–êdM¾…±®ºDª#'’æþ¹gò5š|=³ÔåjˆˆT*"J«s0Caj•¥ÞiîªããÒD´¶¤Ž1VŸL”üÏó•7ª¦IN&ÒäëõÚ$m•Ùª×&m®bæj>^MD©ÕwcS06Æw˜þ KeffæäädffZ,¥RÉgÊ­Iäv»c<ƒxÇÇbùv€/ÅçQ*•J¥²¬¬Œ—Ãn¦›Ãáè™D.—‹‚åååñ žD£ÏîXߟÅd2™{ wYL&“Å1ˆŒG 40ƺJˆ´ý*;Ì&“¥ëÛÒ»ø´Ãb2™ü®[×Ýeji1™ïÚ‰3æÃ;̠lj"""ˆ(''göìÙ;vì7nÜ­ótttFÞ‘á«'¢‰'*•ÊÝ»w+•ÊÞ|ï½÷Þ_|a4ñ‹_<öØcD´aÆ–––uëÖÉår™ì¶õä…Ÿ9s†ˆ®\¹¢T*ñÓ@Þ!$44TÑc? Ì)–)¡´òñ™êEó&Ì\œ_™Úï ²Ÿ"44$ðÛÒù´_Hh¨Â¿xëºCï¹'TqÇ *al‡C©TòeyWÈÓ'òñ‰ÌÌLO†/[^^Nß=4c7ûD6›Ý<(ãš››{yúD¼+ä9Nljj"Œ”±Ñ4‡¥Åh\WJ¨±±U‡¤ÿ¦ ñ±LN§S&“õßUéuº—1öÞ{ï­\¹²³³sâĉž÷ßy猌 .=Ï»Ýn‡Ã1~üøÔçÖÕ>ûà+/ÞªÃò¤4??¿~bˆúºêdóæÍ+W®LKKëC½ÊüNÍd²ÆPŸ«€1dä˜1ær¹zÅçOÞ%>ûCãÅ[u´<=V’¤>cˆÐ£ðyC¹ÛÃétnÛ¶­¡¡añâÅ ßgõv»ýßÿþ·gœˆZ[[ëëoÜè5~}Éd2 |μ¼ðÀŸþù6oÞÌÇ€L&ÓñãÇ•JåóÏ?___/“ÉÖ¯_ÿÕW_9Ž¥K—†††Îš5‹ˆÜnwPPЫ¯¾ºhÑ¢%K–lÞ¼966–ˆöìÙ3sæÌ'N(•Ê3gÎð‘שּׁ¬èèè«W¯ö¬¿ ·çô´iÓ"""*++ßyç¿ýíoëׯl“`¸ :‰******bccwíÚÅkooçϹpáBUU•Z­^±bÅ¢££Ïž=ûòË/{ #"¹\Àß '¢{nÞ´AD&“é_ÿú×éÓ§OŸ>m±X<èv»ÛÛÛ;;;«ªª®_¿^VV¦P(x·(::š?eÙ@ííí½*Ì[¸p¡Á`8qâDXXXQQÑ`› ÃmÐIÔÜÜ<þ|v»ˆ¦OŸND/¾øâúõëM&“^¯×ëõ………¼÷Ñ+V¬Xñúë¯QEEEhhhŸ«èîîæü¹h’$ÉåòÄÄÄõë×'$$üᨨ¨Ðjµ[·nµÙlüŽ3£ÑHD­­­=WçI7>Š´k×®šš~' Œ*ƒ>‹ÿ /üýï÷œYÏËËS(ååå7ît¹\_ýµJ¥Z¹r¥Z­nooç1Áeggnß¾ˆš››ùMöýkoo?þü”)SøK“ɤP(æÏŸÿæ›o‘N§“ÉdjµúÖÓd2™L©TÞÿýüqtt´\.ooo÷\"£ÇÐï;ëîîž0a‚çóïv»{Þ8æyÉúº~Úívá*!»ÝÞóþëׯxÖèt:owå$1ƺººzVxdøì%³04^¼Uûoš×6{”ðÙ †Æ‹·êh¹ÛàvD ’ÄC€xH"Iâ!‰@<$ˆwç$:vìØÔcòÙ†Œ¼;_ÐéÅ}öï®4Ü‹·ž7M /Þª¸ÆF;$ˆ7”ßö "I’ðƒwÏnR$ ÿiƒ1Á‹_¼ŽÎ@¼;÷‰|¶î›­âÎI4†:á0Fáè ÄC€xH"Iâ!‰@<$ˆ‡$ñD ’ÄC€xH"Iâ!‰@<$ˆ‡$ñD ’ÄC€xH"Iâ!‰@<$ˆ‡$ñD ’¼ÖܹsM&“ç¥Édš;w®¸ê@Dàµ:::ÂÃà ƒL&3 ááámmm¢+}“c¢ëàÍ$ [X˜}ûö-[¶lܸq×®] v¹\|ðÁÓO?-º^>ªÿÏ>'à I$ÃáP(üePPÙl[+ŸÕÿgGgàµüýýSRRÆGDãÆ[ºt)bhÔB7[½zu`` ¾ôÒK¢«·…c‡á…£3ᢢ¢ŒFcdd¤Ñh]Ÿ†£3ðiAAA¢+ýÁ7öðBŸH¸«W¯N›6íÊ•+S§N]Ÿ†sg"!‰¸þ? ~#Yð&2™ !{×I’äv»E×B$ c It×I’$º b`ÄÄC€xH"Iâ!‰@<$ˆ‡$ñD ’ÄC€xH"Iâ!‰@<$ˆ‡$ñD ’ÄC€xH"Iâ!‰@<$ˆ‡$ñð{g0Lœg?¯4¶uQw7Ý«þG#C°PëçUWgÏyðÆ~é4¯ºü³9³°>ÛÅ/ÿûÃCìöЦ<ó¿°2"rÖ~ôamf~è¥KSÕ³B²žÛdª­º>gVØKðqèÁ0éú$íñ 5ÕG f+'ÕZ°ÐÙ´¸’oçs6ÿãC½s+kûòÝ 3fWQ„Z}ÿÙw›¤Î»8:¶Uª¬$ùÄ«_–žºàȽ9kI‹jd»¬ÿÇÉæ¡”D„$‚a•ÿƶ þðÚ¶ý¥©´_ßBDç>zK-I’¤Î+;KDd=ûÖrµ$IêåyµmD¥šìGtñÓ·ÔóþëœÓ_15˜ÈºwÝòu¯¤«%I½ü­s6"²~”—.IêåëÖ-_žwîÚ¹ßÏ^­­6¿»á…¤¤”mŸšw>õoC“í–Â{•c-Zù8}ÕxÕ?XâO¶³»–§¿’®–Þª:ùÊòôWÒIÒ¼¼]{ó–«%Iú¯²sDtñó¢EjI’¤E늚œ¶½ëSK©Tµ²¨Ë?@1ÉÿÖžÝõÊòu¯,RK’zù§M6Qÿˆ1€Ápòâ-|§¦Y 4DÉk³³³×¦jˆTGLÌa,!R•6˜- ‡UD;¬%©DÙ¥‡åp6QòN‡¥:9¹ N_@D% ]ÌZ5w–ÖÌ,*¢µ%-æ­Š²˜Œ%©DÙ“é°VC¤©¾X­"¾«W½ ¿µœÃk‰²º˜^›œ[m¶ò‰H[ZmjÓkˆr׫ ˆOè ‰Òf-‘¶²…9Œ¹DZ½¹«¡”ˆJêÌÖ*íÜÍU·4°ËP !Z«7™Žäª(»ò{oÕ1¬ÿ¦ym³G ŸÝ±x%çî<|¸´´¤ •(9¿Ú¯¡Üjþg½V“¼ýïRU[cŒuUk(µ®MŸLDD©%FƳV%Íú³™™ó5š#fÆ«+ÐPî§*Ê­63ÆX—^Ešj“^óÝ$r8Ž.}ï»z•SÝeÈ'U~»™Dz­jíaƳTk(×Äsè5”ÖÀsxi£áÈ‘Ã; ´¢|½™uÝXµU¯»¹ªw ëôÚäìJ3c¬«.ŸHkþ¾[u ë¿i8:ƒáb¿JóýêÉ'“’žI/¬Ë/}ùØUÛUÕxÏ áŠñDSýù"š6!ˆ4ÙÙÉ.~¿é;…Mò÷#"ºn'ÕxÉn É{l9zö²g@©íOþþú—¥¯Â{–ãï "ÃwJ™:]qc}šÉ~DÔ嘤ùq9DSÉyîJÕºÂÊîéªE©*ÛÍ‘%‡g¢W§L ¢ žyq†èvD0\Æ]j½ì´ÙlÖÖÿóþJ¾÷þŸ>eØXq‘ˆœçÞÝxôÇÑ?zŒŽª¹HDç>~û¨êÁ)ižÍ}í-ýñåwk‰ˆÈ~KÁ“~’M;öŸ&¢sŸì5Qà£ÿ;›–­üÓ9+ÑÙ½¹)yÁ#ô.üÖ*Þ:HíYÛU›gâÛ!sÛ•O)¹øƒ×^HúQ㇆@?r8®öX:¢W£úX'ô IÃe|½þ¸Ò„ “Â’ÿï3†Â%óÖ¦mœ!I’ÿÌêì’å³X¯/ücÜ I’f.n))^BDdï¢ßÕí,]úéMß³L¢©4/»î™£q’$ýê¯ýhòš—kÌŸ±qæ$I’¤‡Ÿ)1Î ¼§¯Â¿SŽ¿ÿxRݬ-MòÌ15°÷MòŽx1¹ô!I’¤UW’éå¬]Ö¾¨9úXò»V¢ID¡½â)™ˆHõ¶@O?~ƒa"I^»…‡Ü4kk«Í/0Tq3lÖV«-P2àC—¦O‹ŽÒœæÝo;·wÂÌó¶!äFImV…„*¾½.hð…߉³­Õ:A¡ô#›ÍèGä´9)ÐïÛônà`øìãµÍ%|vÇVÖÚ¢Iª•ªd¡ôh~eËïæÜ#¤ÃÁgw¯mö(á³;Ö°sZ/¶˜ý§Ì¸‹½ÑÀgw¯mö(á³; oÕþ›†kIâ!‰@<$ˆ‡$ñD ’ÄC€xH"Iâ!‰@<$ˆ‡$ñD ’ÄC€xH"Iâ!‰@<$ˆ‡$ñ¼êZ`$I’$I’èZxŸÝ¤H""·Û-º åÅ?Ýã5ptâ!‰@<$ˆ‡$ñD ’ÄC€xH"Iâ!‰@<$ˆ‡$ñD ’ÄC€xH"Iâ!‰@<$ˆ‡$ñD ’ÄC€xH"Iâ!‰@<$ˆ‡$ñD ’ÄC€xH"Iâ!‰@<$Ñð *//] ÁÊË˃‚‚ú™I4¼êêêRRRöíÛ'º"ÂìÛ·oÙ²euuuýÌã7bµñMO<ñ„Õj}þùçEW`¤½ÿþû7nüä“O"""ú™ I4ìÔjueeåã?nµZ322DW`äèt:­VûÙgŸEGG÷?'’h$<ðÀ'OžÔh4ííí¯¾úªèꌄ×^{mÇŽÇŒŒ¼ãÌH¢rß}÷:u*!!¡££#//Otu†×Æ:têÔ©ðððÌ/1Ɔ»NàÑÖÖöä“OÆÄÄüå/‘Épº`„Höó‘ãv»×¬Yóå—_~üñÇ …b€Ká?4Ò®]»¶páÂéÓ§ïÚµKt]|’h$%&&^»víàÁƒÁÁÁƒXŒÁˆ³Ùl‰‰‰Ã¶'ˆôÔSOÙl¶Á~(ð]Þ}¢ÑC ’ÄC€xH"Iâ!‰@<$ˆ‡$ñD ’ÄC€xH"Iâ!‰@<$ˆ‡$ñD ’ÄC€xH"Iâ!‰@<$ˆ‡$ñD ’¼ÖܹsM&“ç¥Édš;w®¸ê@Dàµ:::ÂÃà ƒL&3 ááámmm¢+}Ãï…ƒ×Ú·oß²eËÆwíÚµàà`—ËõÁ<ýôÓ¢ë}@×r8 …¢³³“¿ 2›Íbk}ÂÑx-ÿ”””qãÆѸqã–.]еDàÍV¯^HD/½ô’èêÀmáè ¼\TT”ÑhŒŒŒ4¢ë·…>x¹ŒŒŒ   ŒŒ Ñþ O^îêÕ«Ó¦M»råÊÔ©SE &.IDAT×n Iâù‰®ø ™Læƒ_{’$¹ÝnѵD0Bc¾™D¢«06`ÄÄC€xH"Iâ!‰@<$ŒÏ>ûLtðÍV®lñÐ'ñD ’ÄC€xH"Iâ!‰@<$ˆ‡$‚Qê£>:wÅa„!‰`”Ú°aáC‡ˆH’¤wÞygÈ‹ß*&&&**êûÖî*$ˆÑÒÒ%IRzz:eeeÅÄĸÝî(ж¶¶‡~xÚ´iü¯­­­žeãããSRRx |óÍ7Dtýúõ˜˜I’¢¢¢øœ|q"JOOç3+ŠTTTœ9sÆh4îÙ³‡ˆÞx㎎![¾ƒŒ8—ËEDqqq:ŽˆòòòÌf3©Õjþ>clòäɯ¿þzqq1)•ÊÎÎΞËQff&Ÿp8|¢°°O¸Ýn¾8cŒ—™——'—ˉ¨¹¹™ÏS__ït:‰è믿¹-€1Æ’hll$¢ÄÄIJ²2"’ËåŒ1OŽ8ÆXdd$"Òétžeùê333cõõõDT[[KDåååž’›››=‹+•J>3/ßår©Õj¥RÉK³Z­.—k¤Û·ÀõA˜ .èõú¼¼¼ÐÐP"òüÿ%{ŽÝæY?üá‰(((ˆˆx/é¾ûîó¼ãé%qáááDtýúõ[Ë ¾ -ï ãD ´´´ 6ÏôÃ@*•ª©©‰O»Ýî9sæðK{¹ÝQØ#<âr¹ŒFcXXØO~ò“ŸÿüçÑÑÑ[¶lù>Uzûí·=W`ÃCr¹œ_…H=žÛÚÚ …$I›6m"¢””"Š'¢¢¢"I’ ?ÁIDo¿ývffæ /¼°dÉ›ÍÆ ±Ûíü޶¬¬,þNJJ _–_’’’••åv»ããã%IZ¸p!c,<<|ÕªU’$I’dµZGpcî;AÔjµZ­NLLLLLŒ‹‹£›—J———ó‰ââb~3šÉdª©©!"‡ÃÁ'c‘‘‘N§ÓÓ…ÉËËknnæ%óBÜn·\./..®¯¯çw“x–•ËåjµÚl6ÇÅÅ-]º”Ï©Óét:\.·Ùlyyyiii7ŽBJ¥2''çøñãåååüî³ .x¾Õj5?^s»Ý™™™qqqÇ?~ü8Ï,žDŒ1›ÍV\\̳,33“ßçQVVvüøñ´´4Ïíieee‰‰‰üv37¼p~Ó™Ãá°X,¼>Œ1pÂ6OÂшÑÞÞ¾jÕªØØØ„„„… Qww7¿]ž‹ˆˆàŒ±ššš3f ƒÁ Óé<ƒGYYYÝÝÝK–,9vì˜ÅbyóÍ7- ]¸p¡ªªJ­V¯X±âÀÑÑÑgÏž}ùå—ùRr¹ÜßߟOó¢üüüø¡bXXص¾ IÂxîSeŒÑôéÓÛÛÛù µ+Vðgƒðž}öY"Z³fMZZZFF†§„ŠŠ Ï`ÐÕ«W‰hÊ”)Dôâ‹/®_¿Þd2éõz½^_XXÈïPkoo÷,Ë3H¯×ÑÂ… †»½ÐÁ}2ðUr¹¼±±‘O{”<‘Ëåü¸I©T*•J>”ÃÿTVVÆnŽyF©9ƒÁÀ+//÷¼ãr¹ Ÿæ*jllT*•¼pþÏœ999õõõŒ±ææf>´#W6Âèâv»GŸ÷mØíö>o+ãݨž‹¸Ýn·Ûí¹Öó’õuqvÏ›×@$ˆ‡¯Iâ!‰@<$ˆ‡$ñD ’ÄC€xH"!ÇŽ]|³ÕC€k¬a„H’/îl¾Ùê!@ŸÄC€xH"Iâ!‰@ö±3–,ÙÆ¾ed'; cÆ2ÖiìK¨ÐO”´Q)ÒB) %[…JQ‰²ü²¦B"K‹æùCõ»®ç}Ÿ÷¹Þó×ç>×çœÏ¹ïs_×}^a‰€¨è8ºëv ¼·/žeØ< ‚$r,ÍÜÅÅþ£­¾à…*‰F‹üϼÿÕ°to_DB7±mbwHŒ£Å a @#Q4P¡»»jÀ†nâFÀmânÀ&Cã! _4… À2€1¡Ç’°*@¡Ä’£°GPjQQ1ž6P$Óèq<³ êíã‹ß,™²`ˆÀ¼ùÇ. Ps @\úŸÂ=aÀõ­ÿø–]÷,6DKN æ1cY€å(ÀF!ƒñ½‚ÁØ8À4ÐIާ'ü:/éøoëÍ=ÿ2&€RgrB‡1ïÁœb¹ÎÚÁ6Äþ‘c‰‹+Ä-Í£ÊkÈgÎï à.è…ó" SEh¢±bqâñI’©R™ø,é,™²åo9!F¡\±ZéÚÖFå.•ÕqµU»†Œ¦––‡vªN¹î#½u%C’Ñ™m£&R¦T³ÛœÄ]–7­ù¶ÓmúíÔí9|vrp®ÝÁíéöÈCÌ3ÒëžÖ7`gµßbÀÁÀÞ n²3åhð³Pö0sj|xmÄx´eL"íêî7±è8B|@B~âݤÙÞT“4Úž²ô®Œ‘̉½Óûæö/f-e¯ælü…Îå<È›'˜/qHñ°VÑóB›£;Žy÷=á’\D-Ž8qšz†Z^v–Tæ[îvξÂì¼Æ¥J…ª-eªñ—$.‹\¼Ê[ÃSËyùÚÏëëuË7æoN×ßêoxr»³±©©®ùêKwϵœ¼w¸õ`[VûÞŽ”NúýèÑ#»HÝÄ\ÏÄ£3žØõ õÎ<­–ÕçÚ/Õ?ÿ¼íEáË€Õo¯ ‘^«¾þúæápÁˆç¨ÄèÔXÍßô·ºo¿Ž7O¤NN®N5L§Í˜¿cz×3›ÿÞéχ‹æ¼ç…燊?y/ /|.\rZæZîù’µb¾ÂX½·–²®³¾øµæ[Äw¥ï3?*6Jý|ÃØÍ` ÐL|h³F…›•ƒ•mƒý+Ç'Î)®×Ø^îvž:Þ ¾ãüÙ‰‚¸]BÎÂDQ]1qu 5I])¼•´©Œ¾¬ªœÊù­ E%ÂV]e¢Šª·U=™«QªÙ õL{A—WO[ßÍ Åð¢Ñ 1«‰Žén³óY¢²e„Õ5ëu+Û<»! Ç4§~±¡® £çQ¯%_ÚÎ~kþú{[Id#JBðíå05jxøåˆQòÑ~1Å´WtþX÷¸ÂøG‰¬IɇS¤N¦}Üó)}%ãkæ·½?÷3gqfóçˆøK.—pÐ0Ï"ßöóaï¿#…”£áÇbŽÓNÐOÆEÓNE9Xâ]êrÖªL·\õœj…Êy¥ J•ŠUòåªe/É]–½"uU¼F´VäšðuÁ:¾Ü7¹ë±·¸¸nó6âš„›…ïˆÝÅ·(ÜSkÕi3h·èpêô½¿óÁö‡ø‡K]=Ý%=QÌ =žò ÷ÔÓ¨gÄ>‰¾ÕþÞç/_: È ¬¼ê,Šymþ†÷ÍèðÕ‘´Q›1Þ±á¿+Þ†«/N4N™ ›6š™wöÔûèVE>~˜»;ha×'µOß»>]ò_VZ^úrg%gÕeMxmd½â+õáÛú÷»?27¬~b>cDmöµÆ´ˆþÂü 3Ï2Ï:Ï6Æ>Ìñ’ó1W ¶–»Œ'7‘Âï @ä\Æõ ]Îñ%ˆ1‹ ŠWJÄKZIqKâ+¥£d e1²¯ä.mI—÷PPQdU|§ÔµµZùJœêN5 u5‚¸›Æšæ´V¿v›ÎuÝR½\ý’¡ƒÑ¶mxcŒñ¢É€é-³cæ T¢—¥µ•¾µüvaf›UÛ÷v¯í»«œŠs]’v„ºzº9¸y¨xJyá¼¹|P>_|ßïœð{³ë¥o@gà=RKP3ùå|pn=4 ̆ª.Á±9Õ}/¦–V±û$ý¯Ø¤¸°xÿ§D“$õdéTtêrÚÛ=OÓïe\É<¾7c_È~ç,íl\’³v`þ¯ÉÜ7ûòºò›];\]Pr$¯0ã(íå¸Ç ë“ÚErÅ‚§˜O}9=}f¨¤·ôÞÙ«e¥åÇÎeW¤¹@ªôªÚqѶÚè’Ìe¸ð~|5_ûéäçÂåÒ•ºµ™oø?Ó €Í·£ Pà=àZ P° È €«páp7¤£+Ù€Xü~?¬À ’  ¦à‘çá>L#ìˆ&â‡ü…4"ïQ(ÔaÔ#&V&¦<¦~´(š‚®C3˜™Ï3Ÿ`.³ YH,m¬Ò¬ûYgÙÙêØEÙ³Øç8¼8:859K¹X¸â¹&°ÎØneîbžXžq^Þ>e¾b~fþxþi7vA‚`9Ž—û*)ôVØGø™Èv‘6Ñm¢ bºbÍâ&â6}’Þ’ÓRt)>_ZRú¦Œ­Ì¸lªœ€\Ý—-KòE & “ŠùJJ3[O([*/«T©ú« «õ©ç¬4@£E3CËB›I»C'[×AOR¥¿`0hØats[¥ñq“lÓD³ps²Å.¢›¥•…µév33[3»íö.¾ŽÁN4çý.E;ê\{ÜÆ=O/GïDŸ ßA?î]†þä€ã¤e²Å?¸(¤7 CÝžÑÅíSNûD7Í‹û;A;17i$E5õ@ÚlºeFiæ÷}žû›²¥rÒ¼É5=x+ßï°xÁ@á©cA'dO~(®=^âx–¿lü\ÃùÂJÊE›KjW®~¯]¸þîÆTýXÃlãÊÎÙV§ö˜ÎŒå]Í=cOXžú¼ŸyÙ=ˆyMÎy+?‘65ðnëû='ì/-s¬Ä®M}³þq—ÁØüI;‚è‚Ã^8ðáCL(¤ @q¡lP9¨‡LlLÎLELãhet º‹Y˜9Œ¹ƒÅP1],J,¹,Y]XëÙ$Ù°}f÷eïæÐá¨àäãÜϹÊÊõëŒmçÖá¾Ì#Ësš—‡÷ïO¾¾%~*ÿ¸ÀNW‚N‚pÖ¸v!c¡Fa=áÛ"Z"µ¢¢×Ä4ÄÅMÄ;%ì%$$¤Òðløbé­Òm22s²9r’rM[<·¬Ê)) +f*)(=Ûš¤ŒWîV‰U•V}©–¥®¥>E(Ò°ÑØÐlЊ֖ÓÒ9¢ë¨‡Ó[ÕŸ0xlØ`tqÛiã\“ÓH³s/‹DKc+=kííÚ6º¶:vÆöÖ.޾N!ÎÉ.ù;ª\[ÝÝ×<%¼,¼£|Š}Ÿø1ï"ø{¬'M(6Áé!u¡3TÙpRDYäX´xL­r÷B¬f\rüýDl’grIÊtšîžœôç™R{#÷5eqe“rj|ËuíýeÙØœ„ùÛ¶ç{Z+(,Ô::z<ã¤LуSgÄJÚÏ’Ë9Î5¯¨ê®Î¼¬{e®¦ò¥NéÆB}MCr£}³ä¥–§­·Û“;fï;=¸ÛEè¾üHòñ±^ÌÓägËý>ÏŸ¾Ô(„!Ÿ×ׇÑ#£gÇÆÞÊûMš¼354½òN`Vù½Ù§®sÎóŽ vŸL5?ã—Ø—>-÷©]É_¥®Y¬ó¬}½ú-å»í¡£¥?; €Íy ؉1‘1t¼Ñòÿ9ìý7‹ŠŒÿ­ÁœÔ8[w€¾ºµ+XÀTt“3ð òÁ±Vn¿°~ÕÚv3±£Å¹¸€0â›æîX„N²sù…3£#€¦[Zýн@wõ9¤>"ÆÞ8¡àhßZS± n¿ù«’¥=ˆ 0)aD§M>J€–€2Ä@$ĨÐd  ¢od b!HI€‡H Ânˆ*P bÅÇC$C<ÐÁH@‡PÕ_ ÿSǦ€ÔÿƒA ÄP÷Ñ£n„$Ç$z†®Þ~þÛþb0DÿÉ´©ô{–Gk¢uÐhc´ ÚðhZTÑÚh}´9Úm„ÖA<»=÷'+ñOø?§€¡ÿV«*„ èÁ 0tˆ  îû'6gu @I @ëzjæ¿ß«¸à¤8b -™N ‹Ã›Óh‘ÁxbL->.˜®‚·&«©à5 €Ž$LT~T”E pHYs  šœ IDATxœíÝtSUÚ/ðçФMÓ6[•Áˆ z=8íëXG(D w qP¹ ¬³Ð™Û:â’2¢Ü^µõU߬ë-«Ã8SÖ è‹U¤eIU@K‹­áÊA ÅBSKQ’’Є’¤I³ï¡1‚4m³IšäûùGÎÉ>;ÏÞ=_ÏINN"0Æ3&ÔD € € € € € € € € €6|n·{Û¶m¡.àªØ¶m›Ûín(b‡û4Œ±Ç{ìûï¿w8ñññWc$¡Ò××—ŸŸÿÑG½ù曂 }ÃaŸÚ­\¹òÛo¿Ý¾};R‘'>>~ÇŽ:îé§Ÿֆà Riiiccã|˜˜8¬ ÂEbbbCCÃ'Ÿ|RZZ:ô­†qjWYYùÖ[o577§¤¤ ¿<€°‘’’òñÇÏœ9355uÅŠCÙd¨AÚ´iÓºuëöïߟžž@…á!==}Ïž=3fÌHIIY¶l™ßöC ÒöíÛKJJššš&Nœhabâĉ{öìÉÍÍMNN^´hÑàýi÷îÝ?þøîÝ»oºé&N„‡›nºéÃ?œ3gŽB¡˜3gÎ -¿·š'%%ét:‹ juvvN›6íüùóƒ´ñ$Aðß ²ùM>"À‚À‡ Æ®®.ïâ‘#GÇÐ7·Ûíß}÷Ý \.×Úµk‹ŠŠöìÙãYóÝwßÙíö‘U p5pRUUÕúõ뽋¢(vtt\ÞlÆ k×®½|ýÉ“'ËÊʮԹÛ펋‹;sæÌC=ôÐCMž<™ˆvïÞÝÕÕu¥‚CäryFF†w155Õó1¼_|Q¥Ri4ÍfóòåËŸ}öÙ®®.‡Ã1yòdAV­ZEDcÇŽU(D´jÕ*O{«Õêí­­­ˆ^{íµ¼¼<³ÙüÀ0Æ.\¸à툖.]*¬Y³Ünwà#®aúûrr¹|ùòåMMMžÅsçÎÑÎ;KKKûûû8žžÎ[²d M˜0A„Ý»wßwß}ãÆûõ¯MDF£ñoûclçÎ7ÜpƒÙlöô6eÊ"¡°°ðÉ'Ÿ|íµ×ˆèèÑ£wÜq‡·Ã¢¢"…BÁ{ñų²²¾úê«À0,ŽH½½½¹¹¹«W¯^±bÅêÕ«=+ÿð‡?´¶¶Ž3fÆŒ©©©F£ñW¿úÕÍ7ßìr¹ˆÈf³}öÙg‹/þâ‹/<íccc‰hÕªU·ÜrËÙ³g¬oÌÆXss³ÕjEQ©TzòtHDï¼óΔ)Söïß?iҤÇ>"€áâpD"¢üüü3fxþššêù‡\.÷6ÉdžxNÛ:;;;6}úô™3gzÖ+•JƒÁP^^~Ë-·LŸ>Ý{Tñ¼Á——7cÆŒ·ÞzKß76<Î;×ÛÛ{ðàA¹\^__ÏeDÃÂçíïÞÞÞKÖ,^¼Øó„Ùl>wî\RR’§çòÇ?þñ™gž1 Z­ÖÓ~Ïž=åå寽öšÝn÷=ªœ:ujΜ9žkaž7½wpxŸ4555??ÿ™gžÉËË[³f — ß{hý¶©¨¨xá…¼‹©©©íííN§ÓûõõõŒ±ÖÖV"jooß½{·÷¡þþþ¶¶¶ââbßöUUU¾ýççç{ª¨¨`Œ=÷Üsß|ó·C“Éäm`0†zs0ÀùMÁÕýˆÃላ‹3fŒ7´žÛwÝn·Ûíö¼.òuáÂ…øøøË×»\®¾¾¾„„„Kîþõvèy®±cÇŽ¬N€ÁùM>kà>k |~C6y~æ9ÔUDAÜnw¨«è ’÷' £K~R1zàÔ€ € € € € € € € € € € € € € € € € € € € € € € € € € €ƒèýîo¾\æcïl®ýúº9g®úÞ¥ `^]Æ#Mi÷f]ï»Ò~úÐoù ÓAéÓæ.}ð.ÅO604ýÆcr’§Wœö}Øujû­‹ì›îÞ8b¤gûíöÏNP\óg(mF§¯¾úŠˆärùŸþô'­Vëû(ÇqY4eD妋K]5eÕm6æ4hJT"”Õ™cÌ©©)‰ˆÄâê&cº­%…e%"©µKCy‘XØÐf±h+I,(T‘X¹WÏœm…Dåšî™ikIqƒÞöãæ©´¤öpm1j-Ì ©Q©ÊëtÌç‰|¹µt«ty%…ïÞ28¿ãŠä 1Æ>œ””DD111r¹<33³¢¢¢»»›ñ—E[àÙ‹K*ëš$cŒu••Ôél6}¹H[uÌ¢IÕdp:»öФÒX˜T­"R×iÛ¾©- *ÑY,šJ‰5F©šHU§ëjk*'*3X4"©´—íïÞÍmÖƒ³o/7ÙÚJˆŠkuNC‘X§3Yô{UD[Ûlޖƃå³K^^ Ga½· Âï¸"ùÔŽˆî¸ãŽóçÏ3¦¿¿¿···£££´´tüøñœŸF‘µÙiÐ4l½Ñ֢ΦWœ6Ÿx—èÚ>}c£.ýw¢t¢‡ÙõÒ«NíŽnÙ&Q29{¨¸aìôæ—¶”iž™ªPÜõÄ{ÒU¬³G,þë©×ßx÷|½{Ò—öÓgs¹\®7¿QF”LcI–ž)Òu¿œ`>ÖB”Ó§ÿü3Ýù‘NtÛ~lï©öÒJ p$ÆXRR’Ûíö‘&Mšôâ‹/vwwó}–õ/½´ëÂ]ó–>»~3s¶K«ß>ø­D*ûÙŽãÇ;™O¬™}­ýÄŽIbNMÓéëÄ9…·K¾N™@DcÓhl\,Q¬â¿C”6NNDäryBôé±3®g3¯‹‹[wÈìÝü§\–ÎS$&žíè8Þñ}æÕ³¯M¸¤åÏUŠä :tˆˆúûûårùc=ÖÔÔÔÞÞ¾jÕª´´4¿Û‹Ó¤}^ý_'ìDD.sw7Ñu7Š*úT\TôÔSEwô4Ô°8{N’jëæWžZ86’%ŽˆˆDD qž¸úÝ"ê¨_>nö[ŽKz—eýµ„~tÝ +ѱwËV“zþ­ÊÍi '—C""š•ER¢¢¢§Š;¶m8jqþ´%ýl%¨ÀÏG­©S§Ñ{ï½çp8.”ë¸ 5…¢wJ *›œŒµÕ• ¬(ÖY˜ÓФö,©Ôj"U¥V[®ö¼…à4hŽ âVÉbÑ–«Ë4Œ1fÓªH­µ0æÔWx»WÕJ&Ƙwsf=¸pöë&Æ4•j"µÖb©+Q]쮸ÖâÓÒª-_XzðòJøÍCï-ƒó;.ùûUAðßfÔ¤xîã²›&)Æ]£¸ ã²šÍ®X¥R;°l4»”×(cÉn·ÇÊd¾›\V«-.A!»ò(»Õlµ“âå ׋ìv—§[»Ùh#…òJm«$ a½· Âï¸$à)RgÕï¸"ù5@Ð H H H H H H H H H H H H H H H H H H H H H H H H H HDï1 ‚ B¨«ˆ4Q;¥Ñ$·Ûê†*R¿™>’àÔ€ € € € € € € € € € € € € € € € € € € € € € € € € € €iôš={¶Á`ð. †Ù³g‡® ‚4zõôôdddH’4fÌI’222Ìfs¨‹‚ŸçÿgÂú§ºø÷ßÿá‡މ‰9þ|RRRÿæÍ›xàP×üîHÒèåt:•Jeoo¯gQ.—›L¦øøøÐVüîH8µ½âââ–.]CD111K–,AŠF-iT{üñÇe2Éd²?ÿùÏ¡.®§v£ÝäÉ“õz}ff¦^¯u-Ñ §vaoùòår¹|ùòå¡.ƒ#ÒhwöìÙñãÇwww§¥¥…º–è…wí¸x=üîHÑû«æcÆŒAƸ!Œ~.ž£è c AâN„P—x³€ € € € € € € € € € € € € € € € € € € € € € €ƒèý^;ž\ÆOÞy{Ï×=×Þ|çïÔy7*™Uû‘OZÒrg^ïíÃeü|và—úâÓoº=ëÆkFPâ±æ/“ïιð«G¤À™ÿ>7ý¾†ž¬œétxõ”q²Ò›­á¾:]¾+N–ÌŸÿQKKKSKÓG5ÙSÒ_j6¿[k}ná1»}Ó½ÂGìÔ?ù3”6£Ö Ås—ECD{M—šªËÚlŒ955%DDbAÎÄëÒÔ¨E""uqÞɘM*)(.)Õ•Z‹®®@$"*¬Üka–jµXP\@DbA¥ÞƘE£VU;žMW­¢2 cÌ ©Q©ÊëtŒ1“T;ÐI“1©¦¤ZkaŒY¤šâj‰1Óë³¾½¹˜ˆˆ µ§T[&‰•{õ|æ1æ{Ë üŽ A œ©¦€ˆH]XRS×ÔecŒ1ÃÞ¢ɦß[NT sšÊ‰Ê›º˜S_FT®51›VE¤.¯k;ýM!QqÎbШˆªuÆj‰e ]†¶J•ì50‹FM… Z­F£iÚ»µ€¨¤AÏ DbÎdÑïUmm3V‹TP«g6]!Q¥dÑ–«Ë4&ƘES®*Óx‚Ôdl+!*®Õ9m’ЍVo³µÕ©$§™ó½e~Ç…SæÀ)—mvæ<¹gß¾Ö«s%q¯A÷ÙTðGýçDé"IF›òÏz©å„ôÖ?¥O‰î'"§“¨dó GÞØHå–…SDïµé,ãbëΪÊŸwý5¤ú_*ñË“¯ü&ŽhcEÙ™d"²´×ÕN›`<ö_D9}úÏ?£¾‘Nt;§‰´å¥¿Î GWê S2RÃ@uq>•ÊÒ3Eêùå„ØØ®›ˆúëÚÚGçê u™²`OYäÁk¤@ÙOÔ¯|iÏÔ»æ=»þ0³ÕKÿ¾ý«3Ç%q¼½£ãxG‡ã‰ê57'žŸ$®¬iê»N¼¿@´;‰ˆ’U×&xºS<ÿU¤gŒK`”–¬”9$R9¤ªÜµcÇŽ;v|¢­+¤ u’¥ó‰‰g;:Žw|ŸùDõìk•þ£«é¥Ƕ¬œ6)ýŸG¬D4öŠ%»(vje—®nmY™3)ý ¼h ‚8Óëϯ®?a%"rYMí4A¡ü3Tý[QÑSE‹ïhx¼Îbïþ„ÔÛ6¿²láMí[$Y\,ÑY;)&Ý%JZŒDÔ±¾ãrÙÍ“-A1N©ð¾àp™æX…R!‹X´&(•²X²Û]2YìO7·Úœq Åð^¬ØÍF)”J™wÑd£q×_#èÓêŒS^Ö§÷ÙÍÆÓ6R\b˜cLXï-ƒÀO_)HੳŠ_5 € € € € € € € € € € € € € € € € € € € € € €ƒèý}AAu‘&j§4zƒäv»C]ÂDêW.FœÚp€ p€ p€ p€ p€ p€ p€ p€ p€ p€ p€ p€ p€ p€ p€ p€ p€ p€ p€ p]Ar:{÷î}î¹çJKK…¥¥¥Þ£p= |áÑ(©gðõcÇŽ}ûí·ýü"‘ÿo¨ ëo±ñ-¾¿¿ÿþûï?~üø›o¾9sæÌÐ6tá5ÿN§óÔ©S“'Ou!œùý+DÑ×qét:¥R©ÓéÆŒ‰®ãp0ÅÅÅE^І"Šv©o¾ùfÓ¦MÁLÑþýûƒö\£Ðƒ>¸sçÎPW$QtjÇ ò÷€ ‚Ðßß`tÃwþW­Zõå—_†ºüþ¢èˆä›"—Ë5kÖ,A,Xà™ M›6 ‚ T*F#F¥R)ÂÚµk‰héÒ¥žofÝ´i“^¯7 ,P*•z½þøñãž×Ù{öìñt¾jÕ*AfÍš‚AŽ&·ÝvÛÉ“'C]E°0†ÒfÔòàÀßõUUU¹¹¹Œ±üüüŠŠŠ––"r:žx6ܽ{·Ýn'"ƒÁššÚßßÏ{á…Z[[O:åi`³Ù< , ™L¦mÛ¶QoooEEy¶â2„p”ššêøðûWˆ– ]2Šúúz"ªªª2 Œ±§Ÿ~:77·¹¹¹¹¹™ˆ:;;½íM&“Óéœ4i’oÚÛÛ—,Y“$‰ˆ<¦¦¦¶¶¶æææ¶¶¶zŸtÄAš5kÖ™3g¼•Ÿ9sfÖ¬Y#ë ç7QtjçkÁ‚’$íß¿?==}Ó¦M---&L$I’¤ªª*ARSS=-SRRbbb.ïáæ›o&"N—ššêÙðå—_¾îºë$IЧÃÚˆõôôdddx‚*IRFF†Ùl¤C¸ºÏâhFW8"åççK’ÄkiiÉÍÍ­ªªòaœN'¹\."²Ûíž =§v&“ɳØÞÞÞÞÞþôÓO3Æ ƒ·çI“&:ujÉ’%ž‡ÚÛÛ)€#ÒöíÛ’’’ˆ()))!!áÝwßYW8¿)ˆ– ÝsÏ=¾ë[[[‰ÈsØimmu»ÝÞCP}}=c¬¦¦Æ³è XUU•÷=¾AbŒú¶ôDÑËív¬ò¾¾>¹\îíG.—;ŽÏC¨ôôô„º>ü¦ ŠÞþ¾cÌf³%$$xßÍs8ñññÞEÏyß¼v¹\111?ûºçûãÕm‡Ã1vìØ‹/,,ü׿þÕßßóè£þãÿ°Ãà ëÇ—ßDoF¿C‡åææöööÊåò¦¦¦¬¬¬PW4la=ÿ¾¤0.žˆ&Ož¬×ë333õz}¨k‰pŸ/\½èàÁƒ¡.a$–/_.—Ë—/_êBFÈûÊ3âEË)LGqöìÙñãÇwww§¥¥…º–¨†S»ðŒ¸bx:::n½õÖ .„ºÑ.11ñèÑ£™™™¡.d´ˆ–×H÷Üsß6ûöíËÎÎÞµk¯‹l×®]ÙÙÙûöí|J=AŒ ~§l(mF­¡ßØØ˜––ÖØØxUë‰$C™±°Þy|ù‚ÄR4R~ç-¬w_’ÿâ‘¢@ >{a½óøB~þ~$/¤(pƒÌ!îGF£]áÓßH/?“Òƒñû ‹ìùô›‚è½ +—Ëq%„/ÏU¸ÞÞÞPÂ>kwÑåב.\¸€ñ•™™yɵì蹎-G¤a=#vɬFÌ$㈠Ѥ0½)Üá~$Ÿá|š;È»va=®Q+Rg¯‘‚Aà Z‚4”û‘€;\GòiÎg½¸Žd¸Ž#‡ p-AÂu¤Àu$Ÿá|š‹ëHA©³Š×HÁ€ p-AÂu¤Àu$Ÿá|Ö‹ëHA†ëH0rѤP]G2ûüCúúOu m#×±æÏ.ßÅOŽx—]Ææ›}õÏpDsÄ`ÆüDÏu¤h Òo~ó›|dº Â#õf""ë‡E‚ Ó©?f&"™j²<èô'÷×w8d"¥$&\ì/!QEªx"²{ã‘é‚ L¤âˆ™N¼[òè§´B\qÈJÆÏ7Ý/‚poEý1"Š—M–Å…jøÑ¿tuÅM–ÿ?ÿ×p+™:_}}KÙÞu2׉SæO¬ÓÙTqk“§<ú‹¶ÊøŠù«Ót[ÜgeS¦=¥s¾AɽúæG¦Ý7¾®maæØ¿O¦Ç×üïo2‰ˆ.œù”’‰\ï>1mÅÄ:‹SõÙóÉ⣿pþ÷“%ôº­v¥hÿ0.g}δ9áÿ©'MûE›mj¨'!DxAÁûïСÎιóNê;_Ö-=ÿïoTÒF*·,œ*#*Ö–'—íËkßX¦±LUÈh^I¥˜¬i[?Ö²ñ¾i© –-¼‘ÈJ*˜7ÿ÷bR__||Ÿ´q˲K¶ˆËBE,Í{^£JøÏ6Z)RÏ/'˜Õåôé?ÿŒúrD:ÑÊ Y,–äääÐ=ðDxÜn÷• N®œ‹xïý çÝND Þò©PpüÜÃ$¦üxª•!i§”DÏ‚‹HLJˆu$SAIñ–W_ú°üþyדã,Ý9ѼÛeDD® *úˆˆÒâ<½8‰h|‚ìb–ÎS$&žíè8M”ùDõ­×&P褤¤DÆu$¿ðéêŠ#’~0Ú]v»Ýz¤þíOIÌœòo$m8`$"×GëW‹·ÝzËïèŸ;¾""׉½+¤´_f0‡Eýì+ëµå4¿`‹çM»sàÝ—“ˆHvm}úAËi":ñÑ~*NG.‡DD4!+‹¤„EEEO-vlÛpÔâ Á°£Pà_¦‚3.©ºÀg²Õµ’‰1¦­)¼¸B,‘,Œ™´ËTR+1fªT©›,Œ9uDe{W‹T®5]ìѦU‘Jca&mÍÀFªZ‰1¦©T©µK]‰êb÷ŵÆ´å Ëš)’£Kf5bv¿‰ðyŠ(Ù¸‹žyC.ò;ŠèÙ'x‰ªC.ºçž{ü¶‰ª=#@Cœ«žžžàÔsµùMA´|Önˆ:::n½õÖ .„ºÑ.11ñèÑ£™™™ƒ7‹˜_¢¡1;>´  Ñ$ܸɧED#c*8µ†h Rll,ŽHpõDK-ZôÃ?„ºŠèÂ3™L¡®"H¢å5ßÂ… §L™²nݺPÂß ç7´†lçÎ;wî´Z­¡.$H¢åÔÎëå—_Öëõn·;Ô…D²îî"­V›””êZ‚$ê‚d4gÏžŸ‘‘á]ÙÝÝ- ÀúÀן;wî‹/¾ÈÊʺâŸ!âà5€¸Ž þƒ$—Ë;;;ƒP ÀèÔÙÙ)—Ëoã?H;vìÈÊÊ:|ø0§ªÂÉádz³³ßÿýÁ›ùR^^ÞÆûÛß~ûí·œjß~ûí¼y󪫫çÌ™3xËØ¡t÷ûßÿ¾§§'//oÿþý'NäQ!Àh×ÙÙ™——÷ꫯ.Z´Èoã!‰ˆ–-[æÉRssszzz`Œvƒ!//ï/ù˲!БÇIDATeˆÒ~¨A"¢+Vœ;wnîܹûöíKIIa£^OOÏܹs—.]ºbÅŠ!nâçGÏ/W\\üå—_~üñlj‰‰Ã¯`´»páB^^^NNκu놾հƒÄ{ì±Ç¾ÿþûúúúøøøa 0ªõõõåççOœ8ñÍ7ßa[²ás»ÝÛ¶m»jc¥¯¿þÚív7Ã>"Àåð!$$$$$$$$þ?) ëk3zIEND®B`‚././@LongLink0000000000000000000000000000014700000000000011567 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/docs/spring-webflow-reference/htmlsingle/images/next.giflibspring-webflow-2.0-java-2.0.9.RELEASE.orig/docs/spring-webflow-reference/htmlsingle/images/next.g0000644000000000000000000000207311360615630027673 0ustar GIF87a&%÷€€€€€€€€€ÀÀÀÀÜÀ¦Êððûÿ@€€€ÿ@@ðʦÿ€¤  €@€ÿ€@@€ÿûð  ¤€€€ÿÿÿÿÿÿÿÿÿÿÿÿ,&%þH° Áƒ*\ÈP €‡#JœHñáAÿ2jÜȱ£Çøð±¤I!GflØ_Ê‚2²dˆï%Ag.Ägs €Œ:âëé0#LAâ#z@F˜ƒâc #TŸ3ñQÍxõfC|[ÿu{_X²hâ;ëu!€ƒøØbm  >¹uˆoÓ™âó  aÆ‚ø/ÌxŸb„â{\0ãB|”flˆrÆ™øg Šð¿¤ðùE-ßjÖø^£Æ';)¾­øðáÇ>|øðáÇ>|øðáÇ>|øðáÃG>|øðáÇ>|øð!áÇ>|øðáÇ>|øð1mZ±¾}‹¬Y³fÍ:h@;././@LongLink0000000000000000000000000000016600000000000011570 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/docs/spring-webflow-reference/htmlsingle/images/flow-view-packaging.pnglibspring-webflow-2.0-java-2.0.9.RELEASE.orig/docs/spring-webflow-reference/htmlsingle/images/flow-v0000644000000000000000000004541311360615630027707 0ustar ‰PNG  IHDR1Ø ;CÁ^iCCPICC Profilexœ•Wy4Ôï÷¿ï1Æ>ö±3–,ÙÆ¾ed'; cÆ2ÖiìK¨ÐG”´Q)ÒB) %[…JQ‰²”5YZ4¿?ôésÎ÷w¾ßïùÞ¿^Ï=÷u_÷yîsÎó\^a‰€¨è8ºëv ¼·/žeØ< ‚$r,ÍÜÅÅþ­­¾à…*‰F‹,}[–y« Ãg¿Æg´üBôßóK÷öñ@T@ t›€@Ð&vÄ8Zä0Iº»+©lè&nlÐ&îl94ÀðES¨Ñ,sJp,«J,9 {¥CàiE2À3 ªÞ>¾øÍ’)k†hÌ›|áÒ5·Ä¥ÿñ)Ü&\ßúoÙ@pÏbC´4á´`c0–åXŽl2?*ŒóL#m‘äxzÂïóB^€ÿ¶ÞÜóocBP(u&'tóÌ)–ë¬lCìŸ8–¸Ø±BÜÒ<ª¼†|æüî‚^8!²0U„&+'/‘$™*•‰Ï’Î’9 {Pîð–ògÊ«•®mmTîRPW[%°kÈhjiyh§ê”ë>Ò[7P2$Ù6j"eJ5»mÁIÜeyÓšo;ݦßNÝþÃ'çÚÜ®‘n<Ä<#½îù`}vVû}õ' ì â&;SŽ? e3§Æ‡×FŒGñG[Æ$Ò®î~‹Ž#Ä$ä'ÞMšMáM5I£í)KïÊÉœØ;½onÿbÖRöjÎÆ_è\΃¼y‚ù‡k1/´9ºã˜çqßþ'ÉEÔâˆS§©g¨%á¥agIe¾ånçì+ÌÎk\PªT¨ÚrQ¦Iâ²ÈÁ«¼5<µœ×˜¯ýº¾^·|cþætýð­þ†'·;›šêš¯Þ¹t÷\ËÉ{‡[¶eµïíHé¤ß~ý0²‹ÔMìÁõL<ºñ8ã‰]¯PïÌÓúgY}®ýRýóÏÛ^¾ Pøþêñ`ÑéµêëooŒxŽJŒNÕ¼¥¿Ó}÷m¼y"uÒpruªa:mÆü=ÓûžÙüNy>¾øT4ç=/sNq½Æör·óÔñVðçÏHŒÀír&ŠˆêŠ©ˆ«K¨IêJ™à­¤MeôeUåT¶¨ÈoU (ª(¶ê*UìT½Õ¨êÉ„\RÍ­gÚ º¼zÚún)†YMtLw›Õ˜Ï•-#¬®Y¯ÛXÙæÙ 9h8¦9õ»ˆíumpG<=zø(ùÒvÞð[óרØJÚ Q‚o‡,‡©QÃÃ/G|Œ’ö‹)¦½¢óǺÇÆ?JdMrH>œò u2íÓžÏé+ß2¿ïýµŸ9‹3›?Gä€Ä_r¹„ƒ†yù¶‡œ{ø ,¤ ?sœv‚~2¦(º˜v*êtÈ™ÀïR—³VeºåªçT+TÎ+]PªT¬’¿(W-{Iî²ì©«â5¢µ"ׄ¯ ÖñÝà¾É]½ÅÕÀu›·×$Ü,|Gì.¾EážZ«N›A»E‡S§ïý¶?Ä?\êêé.é‰zdþXèñü“½§žF=#öIô­ö÷>¯x‘øÒi@f`åUÏ`ÉPÌkó7¼oF‡¯Ž¤ÚŒñŽ ¿­x>®6¾8Ñ8yd*lÚtFhfþýýÙS¢?Z}ùôqîîü¡…]ŸÕ>ÿXìúrtÉYiyé땜U—5ᵑõŠoÔï„ïë?îþÌܰú…ýõŒµÙÔÓ"ú+ógÌ<Ë<ë<Ûû0ÇKÎÇ\-ØZî2ž<ÞD> ¿ƒA[p×/tE8KÄO” Æ,6(^)/i%Å-5Н”Ž’1”ÅȾ’»´%]ÞCAE‘Uñ½R×ÖjåC*qª;Õ,ÔÕâlkšÓZýÚm:×uKõrõ H†FÛ¶á1Æ‹&¦·ÌŽ™'XP‰^–ÖVúÖòÛ…m˜mVm?ؽ¶ïvhp¬r*vÎuIÚêêéæànä¡â)å…óæòAù|õý°sÂïÍ®—þ½÷H-AÍä”óÁ¹!ôЀ0ªz¸hKÄJäTTô½˜ZZÅî“ô¿b“âÂâýœM’Ô“¥SRÑ©ËiïötípuAÉ‘¼ÂŒ£´c”ã'¬OjÉ žb>õõôô™¡’ÞÒ{g¯–•–;—]‘v>æ©Ò«jÇEÛj£K2—áòÈ•»W‹kèµÎ×Ô®c¯/ÔõÞ¸t3¯>æ–[ƒÎmÜíµÆ‘¦–æÒ;éwI-Ä{[Z™['Û:Û«:²:I÷ˆ>X}Ø×UÙ×Sò¨ýñÄÆSÑg}¾ýiÏK^t¿œ%>è<”÷úÉ0ÿHàhÓ[þwã_'÷Ncg.κ|äýôj¾öóÉ/…Ë¥+uk3ßñ?¥3›oF 8À{Àµ `@‘W àÂànHG W²±(øûý°/H‚*˜‚;DBœ‡û0°#šˆòÒˆ|@I Ïü ス̂f!±´±J³îgesd«ceÏbŸãðâèàÔä,åbáŠçšÀ:c[¸•¹‹yXxbyÆy]x[ø”ùŠù™ùãù§ÜÚ ‚å8>\6î›P¤Ð;aág"ÛEÚD·‰6ˆéŠ5‹›ˆwHØHôIzKNKÑ¥ø|iIé›2¶2㲩rru[\¶,É)˜(L*æ+(Íl=¡l©¼¬R¥ê¯&¬Ö§žK°ÒÍ - m&íl]=I}”þ‚Á a‡ÑÍm•ÆÇM²MÍÂÍÉ»ˆn–6VÖ¦ÛÍlÌlÍì¶Û»8ø:;Ñœ÷»í¨síq÷@<¼½}*|ý¸wú“Žv–É ÿà¢Þ0 u{xnDoO´gL9í3Ý<6/îm‚vbnÒHŠjê´ÙtËŒÒÌû<÷7eKå¤x“kzðV¾ßañ‚ÂSÇ‚NÈžüX\{:½Äñ,Ùø¹†ó…•”‹6—Ô®\ýQ»pýý©ú±†ÙÆ•;œ-²­Ní1Ê»š{Æž°<%ôy??ò²{óš8œ7:òN~"mjàýÖ{>M.Ø-^ZæX‰]›únýó.ƒ±ù“v9І½p:ᇘ QH2€âBÙ rP™Ø˜œ™Š˜ÆÑÊèt³0ss3‹¡bºX”XrY>±º°Ö³I²`ûÂîËÞÍ¡ÃQÁÉǹŸs•+”ë ÖÛέÃ}™G–ç4/ïÞ_| |KüTþq¯á¬qíBÆBÂz·E´DjE5D¯‰iˆ5Š›ˆwJØK HH.H¥áÙðÅÒ[¥ÛdñcÞEð÷ 8XOš Pl‚ÓCêBg¨²á¤ˆ²È±hñ˜Zåî…X͸äøû‰Ø$Ïä’”é4Ý=9éÏ3¥öFîkÊâÊ&åÔøžëxðF¾í¡‚êBÿc"ÇŸœÜ_¬wjåLCit™bùlÅõ ‰UfÕü—Þ_¹[sâZB]ÐMû[º·5šÔîh··z·S:Íht‰öp>Úx²þt¡ïÃó¯/r¼Öõz›:^1ùb=«ý1b®~aí‹ñòÞ•çëJßé?_þé?<€3„ATBÌ#8„ˆÄ"UÈJå*B1É3Å1=D‹£ÑÌúÌåvL*fž%Œe‚5uŒmÛ{û4•c‘3‘“Á•‹Åa+¸Õ¹[yvðLóîáà«åwäŸ(ÔÁå mš¾ $*': vXÜF‘h“L—²À£ñ]ÒGdvÊ*Ê®Èun9)¡@TÄ)~Qz²õ¢ò^?U5u&õiBFf‘Ö^í'ÝmzúzƆfF¶Û¼ŒI&¦ fûÍOX\$Þ´ì°°þdƒ¶¶Ó±wwˆu<êTï<¼ãªíà^àÑã…x›ûdøvù îrðOh \R"S(UÁ³¡òa‘Ôæt¤{Ô¹è¯4ûÝUtFœO|S¢HRbòóTí´²tLFXfß>íýeÙØœ„ùÛ¶ç{Z+(,Ô::z<ã¤LуSgÄJÚÏ’Ë9Î5¯¨ê®Î¼¬{e®¦ò¥NéÆB}MCr£}³ä¥–§­·Û“;fï;=¸ÛEè¾üHòñ±^ÌÓägËý>ÏŸ¾Ô(„!Ÿ×ׇÑ#£gÇÆÞÉûMš¼354½ò^`VùƒÙG§O®sÎóŽ vŸM5¿à—Ø—>/÷­]É_¥®Y¬ó¬}»ú=å‡íO¡Ÿ£¥¿: €Íy ؉1‘1t¼Ñò¿ wÿ«EEÆÿ­ÁœÔ8[w€¾ºµ+XÀTt“3ð òÁ±Vn¿±~ÕÚv“‹ØÑâ\Ü@ñM s÷,B'Ù¹üƙёN€@S‚-­~s/Ðã]=@©ˆ±wNd(8Úão­©Ø·¿ãW)$K{@aRˆN›ñ(p"XÈ‘t B$ˆ<¼<Tˆ…8 A<$" »!¨@`ˆý͇H†x ƒ5€¡ ª¿þ¿Ž'L¨ÿ!‚ ˆ  î£GÝI(ŽI6ô #\!| üüïhû?ŠÁý'Ó¦zÐßk´)[aÿù‰üϦqÍÂÜaÚròHnØU·»·^‚ѵï {&>ˆsû6AÓ (θAƨ×[@ „ü±Çb2êÍ…Ô´•03™7-Ç®Ÿü~EÜßÀÜg6›Íæ¾>sŸY÷•ƱÍ¿½ý3§éBN~yvÙÞhÞô¯›Ñµ–ï9Ôa0˲ߔGóÇÂÔ½o‡²Í à&”íI·ÇÔ},_Ù”W¶>Œæò;¹¥¶%⌂7â%·aÜ„™†ó<ÙÞÞ~êÔ©o¾ùƵé’%Kžz꩘˜×E4,à>€»ÜáàO2ì >ùcŽ›0úƒ0H8ñ‘³Áñ@àw{&I‹…óìóP«?3¶ ©¶XÙžQ¶9žZ¯ë™Mo+ X,€»Vfåm’†ñ`lTl¯:úeüÙm:aFᜓ111†µ©¿¿?kBÀ-À|uŒÍ|Û¥w³„>Uº£ ‘òìda"¶=•¥¢_—¬ áéÏWïxï¿ ›%Óº¯øëG_MĩҊ&3º&ûµuÑÖd¼øIuEM³ˆMÍýUJ‡éQ—jzÍB“²^[/åЗß):ñŒ¤¾Ê¡kÐaTPt|}ýuÿ˜A¦çl“AûR4— X)À ‰’ ®ûŠ1ð»^XÜQ½÷<@æºÊ–𒔞©ûØveCj^YJ™# 6æ³F’’’ìo“’’ÆX‹už¬÷ÐÚ—×Ãlyy€îÂIENÎN埜œU¶W‘ž-tºÔÀ }JbnmÕ>´2\¸T*6w´ö ’ ’Ä<h¿îã†E„…/²v¢`hù¤›Œ_tKï ¸v± ˆ]ͽyÕ ÀÂÞÌ]p†aèþ~`ÀÜÏ0Œ» /ì±HôÖ5u0v~®…Dº”’¸YQTT¤P(EOr!ËS¤„ðÀh(™ñè}N§Ó›<ù¸³·×'W¬X¡Ñh®^½ºxñâ+V¸kfÅpÃRðøÚ—Ÿ±Î–ÁøÉ±ÓË3·m q˜È‹z4²N{cE$ê1 êülàÉ ³®Wk* !·,})ôœ.Ï­1ˆË( 9ÌÃÉ‚õΜ®$RÂ5”+jËŠ–»6ÍÒ×q¦®º|UTìl…$WYA±ƒ6mÛ¸£T™S Y»ÂFí` oÞÐQµ#¿ IeŠõdº$Œu}²««ëÀ›6mZ¶lÙ¸+ªÜ¼Ü5˜ùÚ¿Úý“‘c×3Hvsì:yÚD3Šg'†áp8´ÉÈpø<ʱ x< ŒÉd¡xè*È;ø²R±Œ1Ñž­ÝÉœü¨Lz½™ËNu=„¹ÇX÷ñ‡‡‡{²¢Ì}ÿ%:tkrÚŠç0¹p8ÏÞ†ÃãqÚBƒ¶0àð»²'=*žPDæ<Âd˜žûxÜ2t Ÿ&Ÿ8d»Y%ùÅH<Þ|7ç1´ÉäÇãq<^æ6ç$@˜ ìç] ‚ä$à[œ$| ’“‚o1žé‚ø s™Û›“ííínË»Üp‡}Ó­cÒéÍB!¹ÆBðÛ{-D¥Rùûû§¥¥QSâÈôL¿F {4EÅjˆå…² rSa|nïM>ÂlÆß'ûúúΜ9ÓÞÞž””´bÅ ëíoìLÞWÝ…Æ?–×õ€$·¬ ‚gÒ¨ßVk´†'.×ÈÓ® /Ö AîÓa"žy^РÔ\þùº1î´'xóÏ7Ž9¢ÑhRSSƒƒƒ¹\®k›Éû t-;ËëB×d¿‘´Ìl4r)@÷¥Z£•ïRÉøýF†Ø"ÎL§F€± ws­0m`2O¾Hš0wðöy׫W¯8p <<<33Óué¤}ÚöV 4}]4à‰DÀ ÔŠ·®=ÿüY{d²x¢Ф OñöõÉÅ‹oÚ´éÅ_d]:ì+0׿[ióX_þ‚¨•‚( Nê-õ±2:¨×U%™É’ÓjeÞ;- kÄÀõï”KÐQ#`î¾b¼>¬(ýÃÁ¯‹u•-ßš8~<àÊM‹mhàÏ%Jïý–,\¸pÜï“6_ÁÁã6_ÇHbGº¦±3+e­ë…0( _{É ˆK‘þð•²éj?`tŽŒ*èbÆb7P¶AºyaE¢©®©ûõ”0«Fàù¥üˆÍŠDÛÔnÍëÏV¤„PÀŠX4œüärDbHwÓ½ˆ{*„ToÆÇ9èáy×Éû D²ÂÌWªòêrËK¯·)K¬ ²žæ´KÄ‘é×@ô/…EÅ¥95ò­ä¤+Á|ëú$¦è+`hÍP#5ŒÉDÛn"“ÂscÒÌ\¹g€à)·wžtçMƒ)ù F;Àâ ˜‹À4žPHY `†Ô4ûª¯€@˜vfHNsR«E ø$' ß‚ä$à[œ$| _¼Û‹xsâ˜> ³ïÍ“ .ܰaC^^Þ²eËX\a÷ ¼{Èæ°¿¦‰kÛ€ØÕñÑÜ›WÍ,Jî4Ži:Ï7¨4øÃj-€öë>nXDXXð"ŠƨíþÎ/.Ež$@ÇÕ~§õ2 CÛuÌÄ‚.øòËVÍHà]{07˜-ž!ܨ_ÞáÜ÷nKN4¨wæäp%‘®¡\Q[¦X_˜eÙ÷žZEÅnL­91` ’f]+®(ÖT@BnYwZ¬Á°_¦Æ*ÕÅ­jËä«$À$Ì |ëú$¦èð†6Ñàñ(0&“…âQ“‰æñ(ª Êϯ,S¬ã´d¤Óä(`…6éûÍ~\ßñË*k0Û™]žO°»8<`´åùŠ‹¶e‚ÛVñ\[¿ŸG+OH¹¬œ5H˜íÌšæÛé`h“ÁØÏX ‘ ‰pÇ™!9I ÌH­à[œ$| ’“‚oAr’@ð-ˆg€@ð-ˆgàŽ05cÒéÍBò¼ƒÙ‰oÝÇ3Ï@§"O¥$¼©H·ÞøÆè4ÛvªùI¹Ek ÈSi‡ ž\O®u¾ ˆ›ðæžt>úòî¼Ò+qY{2¥nGIwå©bòÊ6£ÈSaM^Á:ëÓ,Õ{ ‹¤œÎQ[LÈU¤GŒôf˜ª·æ7;ÜM˜ûfúðç¦îcùÊ{Ñ&Ý£)*V@,/,‘{îf³Å3Ð Í­=ƒ8ºþz ðl‹âä¿xP@[àGq±v…~~ý_z¶°èÁX@Y3@÷ʼn‹Z;1V]? X¬O–„¶Ay2V™8ú~ÔÑ[µ×lêé¼mR üà‡ïÏ–V6/ ^›©ómeF6§{¿X}wjž"%¬ó˜BUüË÷ÊIiå,Ãçx¬ž²²2F3R!ÁŠÕ3àþåÖ30ÌG§­÷úhO6÷ †Óšƒî¥x|>ŸÏ£XÿÏÞP |ŸÏ·CÿúA›8N&†öäg=žì ¨Q¾¯s‰;lqÔ!æ°@–G$ ¹÷ÒGÍ‚„ÜDÛìgª-VeeXï-¤/Ö Áš§ÃD<ó¼ÍeÚ“qf³Æ3@¼fÍÝ §zÒ£Nuäv|ÐÐôïå}Küûo‰Óþe½» úrK³Y÷²ÜŒsåž6Ƨ[°HC’½ígï—Vþ±ú±¢ô¥ö8ü­¾æG?åý0À"5^ä•cô­k´‘…¶ÝÎÚ·šè$¥<¡ikMü0–àn[u(m`2ÓN•0„™Ž·Ï»Z=ááá™™™®Kmž@ý»•k_ͶþLg⟯|uø¨õmÔÊÈ#ô9÷BW$JTŸvëî9¡‰Ü°+èÚyûRIdă!üÀ¸ßãö 'Ò&ó¡µYs9-%„¢µ-{öŸ±ýÚÓ´ðÉÿ¶ù ÇNF¿à¸­Ÿí¬Rµ<¹‹G9¤‡?àg}îº#Ã'ña¦êÕ…é¶Œ¥»ÿPÙ*Ë~ÓúÍÛØY«jêMÈz¤¿§ëŠ7¿¹hZ 8?"ž0ë˜MžÚOñ³Xn¥Rˆó^¡zx+}B6æ|bºPßpO+vœEq'ÚS6ÇQâ2~??°Xüï¾qìg¡!Šß´æL~UéŸÄÀ’á->º*-Åu‹¬V>€Ö÷•½‚5o &¯×+‹;ª÷žhÀ\WÙ^ò´¸rÓpÊü¹$CgÞû]¸pá¸Þ:›gààq›g`‚˜-ˆYõ$Úšù|`¿„B}}½´im±Àâ³=]YÛr¬×~öÐiöíT×wšâ"x°ѧQX¾ÁñÖ½’ýùöò^ˆí者í¨rX •èÏjE\–Ì^š’¸Y‘hÛ^íÖ¼þlEJ¬ˆEÃÉO.G$†t7}Ћ¸§BH1×lcöx€–˜•±è®¶¨@­•ŠVkHT¦Xïò‹¬?U§”ÿÊþRôpr¨º´á¬6"Q⺠ð÷ýÑñ£_ÉŒÛYùÛ¶ìÓµn3„³žCe,€õܘè_ 3ŠŠKsjä…[ÉI×Ù‡o]Ÿ„<¾ÀŒIo0säžÙÉÜó øSpxB!9dµÌšæÛé |Š’“œÔj¾ÉIÁ· 9I ø$' ßÂïÌ"žÂ\Æçrrnx`h”óóX‚ŒQ¯·€ùcß)`2êÍ…¤Zd†â[×B&ïº[‘§ Í-KàѾ“«¸‘º­ % O*òþþÔÓ«ÿ}” mÄN Ľ¼ùå¡K.LM8ÀèZË÷ê0˜eÙoʇo=g ÂÔ½o‡²Íz»!7¡lOºýŽQæò;¹¥¶k¸g¼/!·̹bÅ FsõêÕÅ‹¯X±bìÆSð ?9vzyæ¶­q!c\—†>(@kÔƒK—D  Y¶ÒVBíì"(Z>áJR³W³žÒ¼p0uÕ嫚 bg+$¹Ê‚Š5´iÛÆ¥Êœ:HÈÚ5zÒu°Ð7oè¨Ú‘_eÛ £Á×ñÆõÉ®®®lÚ´iÙ²eã6žžIÀ˜ôz3—/ds fÞ¸'888<<ܫΉ9ᘞPDæ¼9oÝÇãâ ÌfHNsR«E ø$' ß‚ä$à[œ$| Ÿ«ižFˆ¯€0™9ÙÞÞ>QŸú´ù Ý©ãËžy*È›ðT>À¤õ:#(¾O$ø"3ãZÈDŸ;2¾Ó…œüòì²½Ñ^¹bï¹|€5Hk5 …Úz‹“8!«0]Êq$ø,3cž´ú öïßïáó¹¦à+pã'€`üfÓ„Çòö`Gƒº7.ko¦ÔtùX~éÑ®4iÅ$ø,3#'­ôõõ9s¦½½}ÜçXÚ|îqï+€îBãËëz@’[VaßÓ£..Õôš„&e½¶^ÊI£~[­Ñ°qX"è9_[ZÑdB×d¿¶.š­×TPt|}ýuÿ¤‚ßüC)Õ§–ÜC¹ |–™”“VnܸqäÈFc}Þ3—Ëum3y_®egy]èšì7’–™F.e+nøE¥åþ\BwVoWíZ#0~©Öhå»T2~¿‘¡@çi)®hÊ(TÅ .)ò•Çc•ë¸.mœ_>à.÷Rö‘üò9M2víº|–™z-äêÕ«8tèëR›¯ÀÜs_ý”k_Ͷ¾6”ýmÃkqáAßY_žtê¨moBÓ×Eó(J(zÀ#G³Ÿ«®û´€…øA¡€ZñVí×(kS—ˆ¶½@kMù¾uZ@×G³ôš6˜ÖÃïIJŒ2.PõÇjã.Hð]fjN.^¼xÓ¦M/¾ø"ëÒa_¹þÝJ›¯ÀúöD­DIpâPÇh©ŠõàÁØY›»£ô[~ÄSOÄp­åÌTÈ몒ÌdÉiµ2ï†5į^»*15/oۺж6Îø®‡0ãM‡Z YoÈã奻äÜÞæ¿tÙƒfæåäÂ… 7lØ——·lÙ2ÖWØ}ï²ù ì¯ñÄ<tÔ4vÒ`Œº£CÆ\»ØÄ®ŽæÞ¼j`cÔvç—"ÏN ãj?X"’˜Çí×}ܰˆ°°àE‡¥Í(†¡ížfbA—|ùek¶ÞE± >ÌLú>èáy×Éû D²ÂÌWªòêrËV €¥' Ô;sr¸’H ×P®¨ýý¯ý•¥ Ö~ YOóúz›S"YaÖµâŠbM%$ä–¥q]Ú8à±|€5öËÔX¥º¸U b™|•„Xƒßev^ŸÄ} m¢Šçòm¡M4x< ŒÉd¡x`L&šC9ª[]#¶:ÙÚL´Ißoöã øŽÃg |’™1Oºó¦Á”|ŠÇz‡€=αç+‡çÜÔ5âºB¶6ÓÅR.+g |’™1ONÄW@ðyæXN>ÏÌ;ïJ ÌnHN¾ÉIÁ· 9I ø3ãZÈä žÂLdÖæä$=Œ®åxgØ3ñSµ LÈNà©@€1êõP!ß6õf „B‡{s“Ñ`¶ø§ÀÌdv^ ™¼g`º¬ž­ÇsLÝûv(Û¬w rÊö¤ó˜Ëïä–Ú®´BœQðF¼„˜j ò› ¶ ¼°@Ds†áëód{{û©S§¬ž'–,YâîþžÉ{8~ü<šÜ.å–Ææ)׳>[Ò3;ÇSm±²-<£ls<´^×OÀ]+³ò6IÃx06*¶Wý2~‹  žÚZ²F$¤ ¯ÞºãÏŸ~+[æÁÎ|_Ïɘ˜FúÈßßßí wSð ø®½ñpe]/ Ë(ÇKè.ÛSÞ` ˆÌÚš%áä¿•öMʼӡ©%¯§œev¦Á*Àôœm2r_ЧŒz£Ÿ@(G$•ZŸÄÌ].Àß®™8¶¥ðÀÿ{Ý Á—ñõœ––¶ÿþ¾¾QK LKKs×eòž€CMåùÌÂ’ÀŽ÷•U§Rãå|fgyƒ,³P'<_­¨ØYQ¸wKÂË™õ;+£åÛ^xð^ž®%ßI& ^«yÀ™ñôM#`Påçp¹0›š”µe½td]:My“!Vþ„5Ýi­¦¢úì•‹ ܤ²‰»ˆà³Ì€œ ŠŠŠ:sæŒc0**jŒ›gPÿnåÚW³­?SÁ™øç+_>j[ÉÊÈ#ô9õ5ò]q"Ð7Åü€žö³€,5.€4íA³ªMK§ˆïâ?¾‡Ç£´gm2NÐZ`q {N[®=ÿüÙ”#²KÒ£…¦Ëù¥ïu$J¥|0vŸÜ®¬‰LÍÛ,ÙöQü@ÚÑ÷ÚóÕUM從2•¼Ï ÈIÉÉÉííí7nܰ¾]¸parròí‡=¨÷Í30ŒÕ3`«Õ:Ô±¥VKðãÀúd€eà°`Ô'eÇG§Ûd˪Õ~÷9”wR!¯«JZ›©•Mç2T[â]¿«ú·Ø£ƒbi¤/$J‚ºî+F)Ÿoê>¶]ÙšW–âxHLñ% ƒÿ\IDAT!|IHX ±£´®Õ˜âT¢IðqfÆ=IIIö·IIIc—5OÚ3`Å2úí½±ÍwtÿµÁ€Ð¨` Ô]wý7ûÁ&°3-V^Øc‘è­kê`ìü\ ‰t)Œö€²‘ÞgÑét:½Éºëº=ú¯.ôBÀ›t ̘²+Vh4š«W¯.^¼xÅŠc7ž¼gõ œ Ämß–ª¶7€`c^„àÞU2qEåÎÖú5eEëœdéKm뱸šðX ´iÛÆ¥Êœ:ëzv…Q€éæ U;ò«@T¦XÏ£¿ýc±rxêÍÚ•DŠ&g3éúdWW×6mÚ´lÙ²qOÉ3À ›|€¦iø _Ùw– Œôœ«cÒëÍ\¾7öG†6ú-ðs¼µ€0ƒ˜1ó$€àààðððàà`OOÉ3À ›|€¢¨±XLU€ÃŠÏÌ8ïJ ÌHN¾ÉIÁ· 9I ø3éZÈ‚ø Þ„ää8Ü_ÁtéœWK„3r-d,Àµ;}ak^ùKe{¥“Z!Ì æÊ<黾÷ÝGE¨ÐÜÜm‹&ûkO„3ˆ¹’“wÄWpñ“ꊚf3›šû«”‹¯€‚›à0Æc»‹>¿ç¥ÂŸž8xlUQ.ßrù¢ú˜ ÷<Ú„ÐÓZ[ZÙdW,¦è…O¾žâ8¡¡Á b®ä$¼î+ `h8}+wW ·»¡T­jŽR&r¿põ±I ‚€ârè–ÝÛ¾O(y]Ê¡;ÿaøÎÌ0o訪¼áhBеW6É2 _|(à³C õ9Ö'1¡ÁÌ`夗}4¸Ùò ­ŽUkznÒ=],¾°ƒÄ ÐûÁž­.nמt¡ãz9 ]LßµŸ±®„<¼òQµ†-û<† î,sëúdrròÂ… ío=ö˜ëß­´ù ¬¯a_AÔJA”'u8M’jøžeÀö?_»Ä¸B¡æ®N- gœMÜ-„ýï«Ù¹pÚŽ?àúWØ%è(40w_10uÛ®¬IÍ+Û’âð¥‘âKB¤ñé¿^#¾X×Ê:5&ÁÜÊIoú (Z>éfcçÀÒ{X}쀵êWodËP¥(Ðô0N+w2!%÷šÇ4ç TüGC„3‡9÷IzÍW çtyn@\FLÈØ|¬ (ÀLs¢åEò"uñ[ ÷œý{‹ A’R˜eÙ÷žZEÅnL­91à”´Dh0ƒ˜‹×'½ã+`†ÃáÐ&#Ãá2°ù ؃Ád¢y< À…ê‚òó+Ëë&Ÿ$DhpG™só$¼å+àp8(ž‹5ŽUGàÖQàŒ¶<_qÑöF°qÛª)ÍZDhpG™‹óä4à{¾†6ŒýŒbÑäg[‚@r’@ð-æÖyWÁ÷!9I øsñÏ¢ùø¿²Æžù^ Á—!9é=˜¡ùO&mu v7æ6ÿW’–;äØÕ{0 ˧½ `‘Øò»)”0!9é=,ƒœ¡!X_ƒCCCC‚€Eþ‹D–?ê\tŒ®åX‹Ë­u3ÅîS‡Ñ:vŠ} M»ÆYƒlz^oth˘Œz½ÞèzsðŒƒ»z†Ã xä¹×V=óÖÿý·ö|öïŸøö<àRÃ^–>ôÕª†ªìUñA“» ÀµûÔ|“Àá†ÃÙ«žr¿çÒƒîZ…²Iký™+ËÞ#ØL³Kz@rÒ{ Xü ½ô\Â{63CCŸm鹄ÁÁ! Û•~óLÃ& =ŒˆÜ¸ë1Úâ`-Yc5!Ì*éÉIïqkà ˜—#O{ïÃæw~ GžÆ bÏI>ã+П¯ÞQq1s×q"Ž©»q‡ò﹪-!Öõ<ûÓãê¸k²sùŸ¿[Õj€XVP g­töPzÀpï Eö» avIÈ÷IïqËÂa‡˜Á!fÖ©ò¥çì‘[öœ´ú ²v•l“ËÚêTÍZ:ÍÎò†¨Ì½{•YÒï+vVôìAÀÁWðØ«r)f›¯€±ú ί-,ÉÛ©©:e]KqeÓC™…*UQòý0\U)”n”Çj+wþé²¾»\YžùBgx=üãå’’Ì8ª¡¼ôL`zII®¤WsªkŒšÊñ¥üü)³F•“³uß±ó¶ ±a¶¢Ûóswמ·~¤µšwvï.ÈÙÞŒ¤ßÌpéÉIï1Àø gà5! ~*ì{¥gß}=ûî{¨ç·8›àÚËæ+ Cd«cž›tO»]M@IÓ^ £MËl¾‚ª+q»n|AÂà`±µ®zÄWÀá?¼òQ—5ŽlsI‚ ­t‡òû¸ÌÍq¢áõp3‹¶D…QE ¿Y/ —.çNÃAXXj¡J¥Ü•÷\OCÅÛ—íñ„ì’={ö–mK½Øô^‡°IRÓ3æ¦r‡–3’“Þc€ñcÁ âOUu2ÓŸ…‹¯€­ŸOù ˜[4Pw9Žkíã·ÀÞl\ûˆG҇áDañ¿LhO}i²EYL³Iz@rÒ{ 0fphpï}ؼêñfpž'½î¼¯€Ñ<¬>yA0šwvjD ·mìmVU¶ê&ùAx&=@›LÀô|ö©u?Ï avIfôàg ñžwm<¸{Þ< zø7ñû ,ߟ>¥¡ñpÌ#êŽÐmÊÄ WT*ÂZ*㳬€?pËu+& =05ìÈo²?‹eÛ6DØL³Kz@jµ¼Ç¿–×¼°q­õgë¹D46û ¦mÒ÷›áÇòGÂÕ„0‹¤džôƒƒóUæÍÃ0(ÈY;n¯ì+˜:OH± ÁÕ„0‹¤dž¼£_Á’“‚oAλ¾ÉIÁ· çx¼GýÛñ¬ñµ¿iñòH¾ ÉI¯’”óW§HwcnýÛñ$- vȱ«÷° ͳ×4Û_ …,}ÀÝJ˜ƒœôfþàÐÓËêøéÒ¨šÝOßézÀ°2†Í`:·â¡ÁÕ“Q¯×ëGßpìVŒ@Ž]½ÇÀà| ƒ…o•˜ošnêý׋ª.ŠÙb]záëÕ^Ý©ÈSY«÷’¸—7¿!ôøBä´ˆ `Ãù q’‰ßž`ß4Xl.˜Ô9ùÙofF»Ü}1ž‹XÌåwrK‡k ÄoÄKxSŒ@rÒ{ Î ÛvðfÐa)ãÑ-éì0—‹rKcó”ëÃ<º—…â2 Ò_ݧ¨<øÑcŠôO74M∓üâAþú7'÷—W*.`WiœÈåOÃØûeß´…ÅfàÚ:1/÷õhCwx,F`u ܵ2+o“4Œc£b{ÕÑ/ã·ÈÆ#œôÌ|†j:Ûñ_Æ®|£ç{ã[¿IýUñá?¾`]ÊÚ«ç|miE“]“ýÚºhíêŸü·Ò^ I™w:4µäõK—#÷ÿLRWÓ,Ë}S¾4x÷½B‰8ø€×Å4ðãEÄ‹–ôå(Žüµ+.=bôÎ.kvܯ×b—jzÍB“²^[/åÐ×l›•I£~[­ÑHÊ+[æ8oÒu‡H}c]œÛЗß):ñŒ¤¾j”ÌÁއbvG$•Z= üÐåüíš à)F 9é=n1ó˜Á¡U+F&%fphßÿLg‡¬KYúèZŠ+š2 Uñ‚KŠ|åñXåºEV?ÀÌÂ’ÀŽ÷•U§Rãå /gÖ﬌–o{áÁ{yº–|–.;êïÊ-,Y"äW(àoõûn´¶"®`c„ÕQ Ë,”Ç ÏW+*vVîÝÄÄ %¯K9t§M\–èZŠ+›d™…/>ðÙ!…úœca£½PL’˜ P}zÁø´ÎigŸqÜ/£Òr. ¡;«·«Žv­‘FØ öÒ}©Öhå»T2~¿‘qžZ¯_é½e±@÷ŸÎmó÷†‹5ß“»«„ÛÝPªV5G)%NÝÇ#Ø\.Ìf„&emY/Y‹NSÞdˆ•?aý;Ak5Õg¯\¼hà&•#s<Þã3ß2‘ò÷ ·ƒľƒ">DÆWz+~Ò[ñ“'tÞÕ3 moÐZS¾ï@ÐõѬ~ÿ.>ðã{x<Ê]—Ì¢ÍA#…|qpph$páì9í8Àç]s¹ã~#ŠY‚ÏŽU×}Ú ÀÂzF‡ ¨oÕ~qrw·®k‹Ìa¼L·¸:»OæìT/MÍÛ,³¹…Æ#yÒ{ ÎÄ•ÜßÀ 2‘‚aÏ€­VëPGòãNh@¿zm Å²jµ_ íë³ èñºpýFµˆ•>‘–¸Ô¿ ´ò£ðÔ ‹ ´Ú®N--ržLÆ,phl_wOK³A¼&œ‹¯Gî°_ÆÎÚíª&YFöSá‹Ïµ+TÈ몒֦†CjeÓ¹ Õ–x–¼doã,spŸÅ&Ftt Ôu_1Jù|S÷±íʆԼ²ÇciŠ/ áKBÂ¥u­Æ”û8™'½Ç3Ÿúò;uÓßßýÓ¹ÒíÿvÜ.’˜Çí×}ܰˆ°°àEÔ𯘓Ô]wý7ûÇè2ª9Ð××K{¾¾dü½-.( ÿæuš6uÝÕŠâ6H^XÆ2r‡ýºv± ˆ]ͽyÕÌòcÔvç—"ÏN ãj?% îÛ°ÉF¯×#1»ÑP6 2ãÑû,:N§·¹¾Æ#yÒ{X˜yƒCˆÿr}D²Â¬kÅÅšJHÈ-K_ÊV×Ϲw•L\Q¹³µ~MYѺqºÐZ©hÀ•¤f¯‰¼*.p ŽL*([/á<—ٯݜ,hPïÌÉáJ"%\C¹¢¶¬h¹Ó¦-×Û”¥ ÖHBÖÓ|ŒH£¬ê–6Xd#x,F`s ˜nÞÐQµ#¿ IeŠõ¼±ÅCoñ¿¶¥þ½çÇ×Ð ýŸ¥¢[ß5¤¹¨Jô—\{O‹¹¿¿ßlgýf³y¤g]\·â܃58úûÍÖÚoÏÞþç~φá8ò‘ý²˜mk³Œ±o×·X†††®ÈÎ~¯ÝÀ񮆱={{‡Ùõt¿Ü¿ÿzïõñ×c1®_¿~ÝàºdžôÌàüÊÝ/CCC˜7o0TòVµG==³P”ÃD5 ဈ \¶8²_öEœ1ì&žóˆ5Û¶7›„æ…òÙÚXhІ¥çdpu °7s+F 5Íwßó L;¾ .`Lú^-¹m2ùMAb4½œ$| rÞ•@ð-HN¾9Çã=þ\*e?»í¼—GBðeHNz•Õ¯}îénÌýs©”¤%Á9võ–ÁyÖG¦ ÿ€‹B—?în %ÌAÈ<é=,ƒó‡ð§šÖ>cÿ÷× £éÿü.cAÀ"K—?öŠG~^à<‹n; Mƒr¾‘%Èõz (Çg˜Œz³BÇ댌Éh0[ü„üI[ÙINzÁy ƒMë±>˜C`a÷ ´]p¾ýœà“ðº=ÀsHNz«gàßk?°˜oYÌfú‡ný@ߢÍ»ûü”<s GÿÀ¤Dðº=ÀsHNzfà ɟ}xàt£38Äî°ZžýéquƒÜ5Ù¹üÏß­j5@,+(K( K¡½K„éQ;ì»±x°rÇqº”ê;ù "ø,â75þlvûª~ÔààØn³ p&2`¯Û<‡ä¤÷°Öjª?ç:O*ÞØÀ>O2æï U ·¤äæÑÒÊòRIRVI wßÕ©®Tùâ/-\—B{–Ò{?§‚ýeF6€«âÀu壯éRªïä7`°vä~ÆfW°¯JHò\²Ù&4àáq{Íà9$'½Ç­Áy–A¤?ó=²8øç+_>Ú[ñj¼8›à|¿+4¸™E["ø0=…Ö¿Y/å^ÎE¿ßˆ… ´XÜGc™­ˆþÚóϯ‘…#eõ#Ž(fÉÍ3Ǫ¿ÕÙ öGlÀÃ+UkÏV>zœÙò ­ŽUkznÒû øà .€4íA³ªMK‰Y:j»\6=zUpô W=OlÀ$!»$=ZhºÜ˜_ú^G¢TÊc÷ÉíÊšHg{€è{íùꪦòÆ_O ™Ä¶HNz[ÌüÁAÔüedž,Þòôxž”Màg/Ò·ÿ!wQ P|ç"z—²ú~—‚}76V>zœl¥ú#~÷â׎ã©FyìLtÀ€ížC®OzÁyÌàÐsIÒŸ¯‰{é¹Ç³2¦¸B×Â|×"z׈kÁ>« À“•;VñSª¸¸v_•àà˜Ð§1 ïÚ<‡Ì“ÞÃb™78„ºÎ›é[ýýôþö¼‘2n/«€í9‹… ë\DO»”Õ<ìR°¯XÏbð`å#UüË×R}zÔà9nÄ,1ž]ÁÑ«Pj[äÉ€ð¶=Às¦\VMð”¯Å[õ‡ÿë©g`lœ ó] í]".ûnmã¯|hhh"¥úNâ‚1:ާJåU˜è€'Ê”ížCæIï188ïÀ›)Žžÿ­lš†õ:æ»–Ë»Dœ öǰŒ¿r+—ê;¯Ð}Çñ£¼ ð™²=ÀsHMóÅg<S·LºTß§jü}’“‚oAλ¾ÉIÁ· çx¼‡»‡1“§!9éU’rþêénÌ­;ž¤%Á9võ–¡yV·€ãkAÀ¢¥¸›B s’“ÞÃÂÌrz-Xä°è§K£jv?}§8)]˱—gùÜ9šv kГQ¯×ë'ÿ˜»i‚»zÁù ß*1ß4ÝÔû¯U´{.|½zz63‰º{ºS‘§Ò’¸—7¿!ôøz!}µª¡*{U|}s“-ü˜Ô9ùÙofFOøæí x¬[ê>–¯l®)eõ°µ¼ýœôVÏ€aÛþ@ À :,.ÏÀ¤êîi .³ mñÕ}ŠÊƒ=¦H¿ŽŸ‚©ÀÞ91/÷9ß¿î {¦Î·• ,ÖâVokËÛ9võÌ|†j<óա㟗½÷×וG™Á¡Ì]UÌàÐXž‚Ý'«srrÔF=çk·æääääì>v¾¶hkõ½µmg­¢¨¶ôµ]³ÞÛ=ªqOeÁÖc—Môç«s¶îÓÒ˜Ö}Eê6# Þ}¯P [”œœœœœœ‚wÎëlt¬ÁaŒÇvo-RŸgì /¿SðNKkcQNNNNŽºÅ:£§Õ:ª­EE»M£w¸£îðWhÀ¤Q+¬›ªí6Ù?Š“-ÕÖ=Úרét4JEÇ˾;~0Õ«Œ²2nY‘Tjù¡Ë¸rÍä®åí‡ä¤÷¸ÅÌc‡V­ˆØ˜ôЫ/>¥È}–Ú÷?Ó­9yË­gàb]ýå–lXÊ·–Ò?W¨Ú[–w«¡ü¸6`y$Õü¾†À\þ°IûÀÀìXwïÐXz·ùã3æ|c3Ìmmß1`.ië æSÀßêV*òš—·1ÂêˆÊ,Ü»W™%ý¾bgEÀŠË¡[vooøþ±WåRŽ}VIBåùµ…%y#5U§Œ£k)®lz(³P¥*J¾†+F§=¾~¥·Ïb±ëö*ßL¼²5ßÊÚU²M.k«S5k]¿úï ÐYûVT$O¤á|¨hõÑØòÏóm¡…£OŒ87â*Ö#7¼ºúòŽòúš¶ŽÐg )ôÑ@¬ô‰Ä°Ä¥þ¥•…§²8Ü‹¸B¡H«íêÔÒ"‰Ó÷HÁÀþËìÆià‚‹¸QŒb\oÀõïzbqGõÞó ˜ë*[ÂKRBx®Þw-ÝlyÚ 9é=¬Ž¬ Wÿ¯ÎdúÆhø{ß½÷üï'´IÌã¨QÝÇ•Ç6€’¥É*ªz!É[4Nc*ô)‰¹®U+Ë . ›•­fAö#A@ôõõÒF¿¯/ÿ{cE]ÍÇ)ë"øv'À½\– , A­úÕ²C;Ê~…¥²Qs%œNŒ%÷uŽ-M¼ÏXQ¡ ÝÉþ‚ÈՉѶ³;ŒQ{É ˆK‘þð•²éj?À6,K ëïü¢;© †±Ø‡Ãa †$nV$Z;е[óú³)!”“7œ‘ÇÞòöCrÒ{X˜yƒCˆÿrB½Fý¸”Ò§Gð„1+#¡¹"[FîÂÖ8êÑÈ:í‘|p¨Ç$¨[ð³eI ø$' ß‚œãâ x“ÿx€qƒ¯µs P¿ÕvB¡É¨é@Ãd6"èo;g•`PsÎ+ÁÝÞÖs%˜Çǯ%@ÈS{4ñܾ•Už-µs"þ1чßÄ?øjª<`g ­ñeZÔ* Ô+½ƒÃ¦Ú2Ã_Yvì*ÿÁ¤è•lv¬~Œg Z¶[s“ôY[Ãa; =ùí/öoJĘ!¤f€þcl¯RmÌRCtEXtSoftware@(#)ImageMagick 4.2.8 99/08/01 cristy@mystic.es.dupont.com‘º!¸*tEXtSignaturec3ecc1fc5135d1e959695e569d213122riðIEND®B`‚././@LongLink0000000000000000000000000000014700000000000011567 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/docs/spring-webflow-reference/htmlsingle/images/prev.pnglibspring-webflow-2.0-java-2.0.9.RELEASE.orig/docs/spring-webflow-reference/htmlsingle/images/prev.p0000644000000000000000000000215411360615630027702 0ustar ‰PNG  IHDR#Yi†&PLTE„Œ!Œ!)”)1œ1BœBJ¥JR­Rkµks½s„½„ŒÆŒ”Δ¥Î¥­Ö­ÆÞÆÎçÎÖïÖçïçï÷ïÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ¼ìĪbKGDˆH{IDATxÚµ‘ÁÂ0 C»ÊV%2þÿo%eâÀĶ 8—Xz²§ð\å· #KSŸ›!Q±aĪ (9±Wv|ÉY­‹YÒŒ» d=âæ[¦é«‚’ù—NÇýìg£$Ü Üÿõ‹C=µô%Š ¹‹CtEXtSoftware@(#)ImageMagick 4.2.8 99/08/01 cristy@mystic.es.dupont.com‘º!¸*tEXtSignature0f87aaf0b04e24ba165f2a4bfa6bca57kИ•tEXtPage35x15+0+0~FòIEND®B`‚././@LongLink0000000000000000000000000000015500000000000011566 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/docs/spring-webflow-reference/htmlsingle/images/annot-open.pnglibspring-webflow-2.0-java-2.0.9.RELEASE.orig/docs/spring-webflow-reference/htmlsingle/images/annot-0000644000000000000000000000150511360615630027663 0ustar ‰PNG  IHDR U.T±‹PLTEfff™™™$Ž€€€ª§™øøøÌÌÌf™1333ÝÝÌ3€Ìÿÿf“³nþþþ|ÍÍÍ÷ïï···TTTÌcˆWÑÄ®ÿÿ™‚ˆt÷õïûüôÆÇÆ<< ]> ././@LongLink0000000000000000000000000000015200000000000011563 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/docs/spring-webflow-reference/htmlsingle/images/caution.svglibspring-webflow-2.0-java-2.0.9.RELEASE.orig/docs/spring-webflow-reference/htmlsingle/images/cautio0000644000000000000000000000233411360615630027754 0ustar ]> ././@LongLink0000000000000000000000000000015000000000000011561 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/docs/spring-webflow-reference/htmlsingle/images/draft.pnglibspring-webflow-2.0-java-2.0.9.RELEASE.orig/docs/spring-webflow-reference/htmlsingle/images/draft.0000644000000000000000000003742611360615630027660 0ustar ‰PNG  IHDRŒ¶K°ZJ pHYsÊ&ó? IDATxÚíÝÛv㸕€axíJVÞÿ³¦K²xæb·µËå²E€Éÿ»˜Õɤ]eùðkƒ ¨¼÷陦)Ïó#¿šo@‚º®kš¦ïû#¿†ï@‚…nÛvš&ç\–eEQ0IP¡³,DZmÛÃÎÓLÒ€D -†a8à<­Ø8H¶Ðÿ›))˲,K&i*t–eã8fY¦”:ÔŸé4‘|OŒëÐtšHzµpÒi" H±Ðt: å½çU€‹}ú³Æ(õòòb g1I>š¡Uhæi&i@Š34ó4“4 ÑšyšH~[褢H§‰4 ÅBÓé»qMv%‘ëп­×§™¤€B§‰yšHÀ¥³Sì+†/‘€£ÌÐO½÷2" ˆUèï®rø꺶ÖÞýèô—^g–»àh…þÊ^î/F”}dD(tKV¹éôúXî ½h._ç|ïcî÷f’€äüõ×_ÁÓ…fžf’ t¡oçé¨ûÈ8OiHÈÏŸ?7WèÛN—eɺ7‘€}zסÿ8OÓi" :¡BÓi" :ÝBÓi" :ÝBÓi" :ÝB¯ÜéŸ?î¸ÓÜ' :îŸf’ ý¿ù5Bg<šI(t‚3ô¯ót×uÎ9æi&iHÚù|>N¡³Ï9Ùßõi" «rÎ?>3åBßv:ö>2¥ÔÎÖ½‰4¬ûkWkcL]×J©ƒzÍNgûº>Í5ix€išÆqlšfáeÚ­zÆ~o&iH]žçƘªª–Äus…fžf’€CÌÓ[,4ó4“4ìžNí~hæi&i`žþß ]UUìÂ1O3Iót.û½¿2Ï«Ü[/tÆùÞD¶ÕéÏïËÚôuèÏ;õ3ÚîýÓ,w@*¦i†¡mÛ×½÷Wè[MÓÄ^÷öÞÿøñc[ëÞDÒêô‡×§wsú±Î¶v}šåniáá$î÷>B¡³,«ëšýÞLÒËår‘‹¬ Ks;O¤ÐÌÓD"’§O†jªtºëº<ÏSh:M¤ V¡åŸCuÚ97MSžç»Ü)F§‰4¬]è°öÞ‡zXÞb§‰4.tØNfw7„/t–eÎ9¹é9vcvŒýÞDšN‡ítì«òÉvšH@”BÓé€.Ëò˜ç{sMbúó×§[çúôóósQLÒ°Uçóù[…fž5O¯p}úr¹ô}O¤`«…¾oQ”N‡êtìëÓIušH@ôBÓé€.Ër…}d‰tškÒ°F¡ÿ÷kW©¢(¸>½Äq®O3IÀŸÜúë½gž^>Oäú4‘€?ÏÐßÝ)ö9çÜ8Žã8²–I§‰4,*tðÛg•RÆcÌaÏåØé}ï#ãš4¬Zhiš®ëœsQÿ”G]Ÿf’ ½íyz…óȵߛH…Þ|§c_ŸVJ=¤Ó,w…Þƒ]Þ—Å$ šyú«VÞGÆ$ ÿóÝ'gPhæi&iXi†¦Ðû˜§ws_“4ü]hV¹™§S›§™¤ Ö‰%šyšI˜¡±ÏyšI…_hc …NdžÞô~o&iššy:ÑyšI…¦ÐûŸ§7z}šIÀq?4óô&æi&iGœ¡)ô1çéÍ]Ÿ&ÒWhV¹éôV:M¤Ph M§í4‘@¡)4N´ÓD…¾¿ÐܽÑN—e¹‰NiúJ)cL]×z‹ªªÚD§‰4 }Ï m­¥Ð[ïtúëÞD…þv¡™¡÷!ýëÓD…þV¹÷×é”×½‰4 ýB³Ê½?)_ŸæXP;éÔOfèkÛ¶ëºÔÎ e’°ÃšBcó4‘°·B³S »é4‘@¡?ÃN1:ýÀNiú³šbìt:÷e±q …þm¡™¡+‘}dLÒ(4…Æót ëÞD…¦ÐH´ÓD…¦Ðøm§{}šH Ð¿õØó½Ù8`“8S kzÔ>2&i›œ¡ƒšû¡ñ‰G]Ÿ&Ò¶WhžœƒtšH Ð‰všH8t¡9S ivZ¾Õ‰4€CÏÐ\‡F‚6Æxï½÷†—Àagh »;eY¤ýÞÖÚ²,­µJ)&iHež¾-tÆr7 ÜÝé°çœ¼+tÆa&(4°D¨sN~-4“4 ,§—¯{Xh" €Bîôï M¤Pè½™¦)ø«‡xþ¤ÐY–q  ½ã8Ã0 Ã8Žu]óí´r§³oÞ—õy¡‰4 ½·B7M“e™s.Ë2:r§ÿXèŒånz…–Hw]7ÿG¬Ù鯬{¥ÐLÒ(ô }ÛiæéGÍÓ}ßÿîª_,4‘@¡÷Yè¹Óò<%:ýNËWçîBiz·…Ó4Ñét:ý­Bi»-tUUzî4ëÞ)tú»…&Ò˜¡w^hÁº÷Ã;­”ún¡3Îî@¡w_èYžçEQÐéõõ}//ÿV¡‰4€½ºª*cv¾Fx_¡éôcyï¿[èŒû¤Pè-úz½Þ÷¯Ë>2îŸ^ß…f’°‡B+¥¬µÌÐßzOS–%ótú˜¤Pèͺïû»gè[²ŒyšH…6C·m{ߪé¯X÷&Ò@¡ƒ:xP§iš¦éwGW‚H Ð÷š½Ü c¬µ»‰4<`†®ëš½ÜK ]–eY–|‹¦ŒÝÝ6Yhfh Í$ Éšû¡)4‘€E.—KðBK`µÊj/·ðÞSh" €B_äqÁ9ç´Þù/®y•›BƒkÒ6Sh‘çùËËË^Sé:´÷^ž“H¡™¤—sN)µ Ó4Ïgç…þ: M¤ ÓZWUe­¥ÓéšUn" ËóœNShitz¦Ð ÒÓé°[”÷×iy¶…‘ð€NEA§?Ÿ¡Û¶ ûaån«¢((ôÖq €¸¦ijÛv†¨Ýâ}Y¬rƒI@ó4×§×)4'–i ÓKÿªœX‚¯`¹ÀzebÝ[^vŠIó4…‘:M¡A¤ÐévZ ün+ ½o\“ð˜bêú434˜¤0O§8O3CƒIótŠót¼Kä…f’€¸óô^Ï •û¡cÌКI˜§}^²Êü×,«ÜLÒ°ö<½§ëÓDN±ÓDN±ÓqM@BœsMÓl÷ú4…‘@§Sì´ÜmE¡ËÝû­¤u]×›[÷žŸ>I¡A¤Ðé„:éÔOï=…&Òn§Ó?ç$Þ©ŸÖZ }p\“®ô¯O³S DŽÛi­õ?¾Ûi ØXîö/©U®O;ç¾»îM¡A¤ Å}dóN±à…ÎóœBƒHØX§Óy^VÔçCól+Üâš4€ÍXmÙóósžçŸ:Æ*wQUUñ…“4€MÎÓë¬{_.—ßD*´÷^V¹)4˜¤ìažîû>꯯_çéH'–dì“4€ÍÓEQ¬0OOÓ»Ðì“4€}ÎÓë\ŸÎ²ŒD’ë´Rª,Ë®ëØ)" ßîtìëÓ1Ph|פlùWØÛõé¨÷OSh<ì[…—À:eYìuo &i¸³Ó±ïŸ¦Ð Ò°ÛNShit:ÅßlDN±ÓDRì4…‘€;M¡A¤àãN?öþi ¥ßB¼vÜéìq÷OSh0I@Šó4…‘€/uzåsC)4ˆ4¤Øi ßN¼Òél•ëÓÆ &iøv§W¸/«ïûišxÁA¤ ¹N;çÎç3‘€;;õú4F(Ê{Ï«àPœsMÓľ>­µ~yyÉóœLÒðíyšuoi ÓÀ=Xîp\ι¶mû¾gÝLÒÜ<]UUQÌÓ Òn§Ùï±Ü ¬{ƒI’Ÿ§Y÷‘: i`kÆqŒýÐilפ„\.—¾ï‹¢ÇJ6xYV¶Îõi¥Ô?¸> " l©Ðó4Æäy^–¥ÖšTï²Óì#‘6Yè[eYcä™Qo‘ðBgYæ½WJYk1eY’êušuoi`«…¾í´+Ö±¶æii€Bÿ¹Ðbs‘b¡ÿþéUJk]…µ6Ïsë­wšuoi`'…¾å½¯ë:Ïs¬©5‘D¡gZk¹kKžÁøF;ͺ7ˆ4°·BߎbY–UU•ç¹µ–ÁšNƒHøª×××®ëÖù³äkÖÀé4ˆ4€´ -wmi­•R2X³¹ŒNƒHx|¡?$©f°¦Ó ÒÒ*ôŸÏ[ÿ“SPd›Ëè4ˆ4°Ó45MÓuÝÂ&ëÞu]Ëb8©¦Ó ÒÀæu]÷úúzç§RÖÚtï½—BËY(ì§Ó ÒÀæ‡éëõ: Ã}Q¬ªÊÓ¶­÷>ê¯ûï’=eUUi­Ù\F§A¤­jšF*{G¤1§ÓIk= Cß÷Ó4¥óë½—uoIµ<tDØïýÏŸ?ï»KX–¥RÊ{ßuÝ0 ã8ÊyaI ÖÆÙ Îæ²_;= CÔ›ñ”R///tšH¸'Ò2Lßý^^^æ9U"}ßhûÓ”«Ôu]+¥ó4ˆ4° ã8þüùóîÝóôôt{n³¤ºëºiš[çm±¹lÍyšNi÷ÓMÓÜW,O‹¢ÐZßþÞϲ¬išišR[—¿ŒÜ`-kà<‚NƒHéêûþõõõî·_‡é9‡Ó4 ÃÐu]RÛ¿oßacäHðƒÇƒëÓ Ò@ºÃôëëkß÷w„²,Ÿžž~÷ÿ•_ý]×¥v³Ö%TœN§ªª¾ò¿Çqš¦O+»MµµvNõ¡kæii 9Ë2­”z~~þâñ^’g¹*;ÀS;eþ¤ä~-kíqež‘’#÷b-ù+g}w‰Xnª^r¦Ê ƒµÜfV×u–eGX§Ó Ò@Z†a¸^¯K†é<ÏŸŸŸï˜8½÷²§LªìÀªµžïÚÚýø:βìÇtšHøó/åëõÚuÝ’PÅóóó}•Àsã8¦ðx÷eåy.»£‰4€ß’ì]¯×…!©ëz¼¢6Ã{?MSß÷rÑ:ñþi­«ª’-f‰¿«ø¼Óa×½)ô¶°Ü <²"yž/Ç0 òtЏïèßXk%òˆ­dßèËýßóÓ;ä®­m¥z^÷õ(3 Í$ à{^__—œ*¿ÁŸŸŸ%Bky²ô-›ÀÿM"§•ÉVpc̶Rjž¦ÐDÀ·ÿÊ#7ÎIòÔõOÍ”»«Û¶•»«Ó|æmª³›#ÁÿÛ†í´Öút:QèÍa¹xp6䯡…‘–››×ß'%œl·ÖÊ&ðdßúË_¬m[¥Tß÷ò¬-¥TúÝZ¸ß›šIÀ¢aúr¹,}ÇmÌ?û¹8ç¼÷òˆ-©u⃵ֺ( ¹¢Ÿþ`}ßÙï-G­Qh&i!É Y²Ój‰Ô®Lø™ÎØJg™["]–¥LÕ‰ü…§µÖu]Sh&iÉĶ<ÒòH¨”GÏØ’õùad !ÙT+¥ä#rźª*¹Á=µyšUn&iMÓÔ4M×u sUUÕétÚÐg-wWËÛ‹Müe¸1F6Ç=öí…ÌÓÓ4EA¡‰4€ˆ‚Ü‹¥µ~zzJaÔû:Ù\Ý÷}×u)OÕså÷qåñ—›{J•<`[â)Ç¡0Ñ‚HûŒtQòD©…sžLx[ Þ0 rau‹×àäE–TÏ›Ë´ÖÆ˜Í½ç@ZßZ\“œÌš¦iÛváDZÖ>??o¢›.ôネö¬gj0I;¦åúâÂ!lǮ몪J¿ÐrÏôξˆ2X÷}/¯–³Áùö“4À0ý·¢(žžžRžáö7Cÿ®Ùr×– Ö¬ƒIØüïô…ÛDz,ëû¾( 93Ùz÷…ÎÞ†A"-wm±¹ LÒÀ†­ŸÏçå‹ÀeYÖu`2CH–¾åHpk0I›T–åò† Ãàeéà3´œã±• ÛÎ9yʈܯU–%ƒ5˜¤™¦ér¹,<)Sž¯•Ô•éy§XÀBEQUÕ4M²WKÎrÙÊ:“Ë@¤|£¯}ß_.—…}Íóüùù9‘ßþRèaB}À¹Ð2‰Ê³>»®“[–7ôµÖZ[k1EQ¤ó -iŸ%íz½Žã¸ðWv]×óã’v\èÛæÉC«$Õé~KžÛ!O c°&ÒDHÚëëk×uËïŸN§Çï£ÐÖÚÏ·ÅÉ1æMÓÈeà }ÝåÀ²ªª8”ûÈøÚ©“íc ·DÉã0Cÿú?“g‚É#¶ä€‘M|Ýå]…<%š¥o" ݉jùïh9Åó-ÄóÝV+úÝkx:Æq”‡v{ï_G”­dÆ M¤$麮—ï…–‡5YkWþ¥ü~èïZÈgmÞÈP2ª¦ùE¯ªÊZË}YGÿñç%Ò'§y/Œœ¬÷®_èà÷CßQè_‡TyúHUUeYf‰=ý"Ïóº®)426Ž[ÑuÝò{±”ROOO«šÈ ý•†išº®Kaª–… " l‰sîõõuùÆ«ªªêº^apŒwbIŒzÉ%júxwµ\‡¦Ð ÒÀÆHBš¦Yú3¯Ôóó³µ–Bÿ.Õr­ZŽ-[sœBƒHÛ¦þü¹ðN*¥”\ˆW‚ú–,ÑË`½Î8…ÆÇßü¼À†È‘ ‡Å¨ÛÇ‚Z)µr¡%™rüËÓÓÓ Ç‰Ph0I{0Žãù|^~/Öét’Ç90CÿñµRJÉ(² | œBãÜ' l‰Öº,˶mΦã8:çž ½ú׿C–eƹkË9'kࡎo£Ð ÒÀ®"¤¬}ß[kFz3ô¯µÎó\kýüü<ï,[xl…‘ö¦,˾ï—ß&4 C¨N?ê\îG Ör£¹µv>aôîB?ê ViQxïå‘KV\•RòÇåƒÏ3ôî ý.Õòìgkí0 òL̯×z.4O¢Ä~x €m‘u× {—Ú¶]¸:½ûUî¯|-ʲ|zz:NEQ|åu˜Ïå¦Ðøó÷»»-Ó}ß¿¾¾.ü8yžËC¦ïKþÁ ý+¹©Z¦êq?|U9õßÂr7°ÉaZ“îºNŽÔ¸o,–yZB%3eö¶êP/æù|^xz¶÷¾ªªªªnßîPh€I‡‡aCæTKV\«vÎ Ã ‡pÉ©‡º!Õ{oŒ‘Õˆûß°+Õ÷ýí$M¡&iˆ\õìºN"uÞ-Šb^¼=Â`=Žãù|^øãì½/ŠâééIkM¡" вXJ\m·—}³û©Ú{ß¶íõz]øÂæyþôô$BDû'anšæ!·QÉE뺮ç'ìUß÷—Ëeù ¹®O¡"ý뺮뺅{š‚¤Zn)®ªjÇÃôõzýʱ$k¢ÐÀlC¬`ȃue€~øUaï½<åWîÝÊó|—ªå^,Ù‹—Ä …˜¤‘\¡û¾ïû~ùÍ»1ÈUê²,÷×içÜåryøº34À$t Ý4Mß÷éÌsïÈÞòišö×­uY–)DšBa~”x 0ÏÞûËå"O¹O|â”mVròèž¾ )Ü N¡PXîF°ì ñï&ít:i­÷tVÓ4MÓPh€IȲ,“=brgíæþærwš¦Ý|9äÀ5 i Çñz½6M³ÑÎÉEô=uÚZkŒY‘ŒBDÉZèÄ/BÎ9·³N—e¹òÉ- ÒHË0 ×ëu†ìlØY§åœ5 iTß÷òxÄÝì=ÜS§ó<¯ªj/ '–DÉúr¹ìïórÎ]¯×}Ü—•çyY–±?­uQ Ò ÐkðÞ¿¾¾î#Ò±÷x³Ê i¤¥išzž§Ïçó¦·Â‰²,å‘V ÒØ?¹Õ꟩\ŸÞú<­”Š´Ç›ëБFr…nÛö Ÿ¬<5«ëºMwZ)ã9"J)®CDÇ-´~û¦û¾ßúöuétÈ_ìVÄS°J¡¥…Zkùí¯”ÒZ{ïsZkçÜ4MJ)çÜjwã8 C¼Ëºk¼ ×ÚŠz:¹¼IDAT£T˜Sú¹ i¨ÐÞ{‰qžçù·gqÈÿFn‹’UhyФô;v°›¦ÑZWUµárcŠ¢èº.È\N¡"CZJ\U•1FΚþð·¿dx¾›ÈZ+SµŒ¹Rë¨/Â0 yžowž–aºïûå/”÷¾ïûM¿e¶…GUâ…VJÉQyžß½ýX¾uåá˜}ßÇ{¼÷OOO›.“<ç»ïûå eYžN§5ψ4°^¡åM²ëxùïzYïû¾ïûaâÅã_ÿú×vŸ9-/Ñõz òóþòò²éëôÀ†°Ü Ý4MØàyïóÙ`Ï @¤±j¡ÃæÙZ+›ŒV¾~iŒyyy û‡zï»®Ût™¼÷²£>ȺÂÖ×ÿ"-:ì*·ï|:Ö ?ìôóósÀNËh¾éHÏçÆ„zËB§"•fè€ëÃrm¸ªªÇÞ³”çy]×a'ÑH»Ç×û×:Èk"gÀÉ1püD›™¡1u]?¼ÐÙÛƒî÷–2mýZ¬\†ò¡Ú¶ÝÁS·"£ÌÐEcL"7ÑÊÙOÞñqÓ_ô€Gœî`i ÒHºÐagè¤ =ÿ­äÖ¯PYšÿïvYkƒtÚ97 ‘ˆ4R/´œ•‘Z¡EQŸ©õœð•~ìm˲l𦼠‘FZ…Žq:ÍBϳc¨¿›<:sÓßòÄÉPÛ¼åÉ¡üXDÁ ½ãëÐ6ÉZ›çy…YyJæÖ¿ ¼÷EQù6hÛ–HDa ½ïb+ÌŽû¸ïHŽf õѶ~Ì @¤‘J¡~À­zîtw'òqvÐi¹=È "¦²ƒ Ò Ð÷ÏŽAš$·Joý²tzûXðg› Òú(…ÎÞÅ\þÞSŠÊ² r/– Ólóˆ4(ô¢¿y¨HïciW¹äm‡snGV¼" ½(± Câ½ßÁîîùÕÈó<ÔÚ@ß÷»ye" ý€&ÙÒjZ äš °¼}á4o€Hã…NùL±¯ÇuùeéfòëW6È{ï}Û¶¬xD˜¡?Sìë^ú3£u¨sQa­ x¼y×ut ÒXµÐ[Ÿ¡o»°Ór˜Éž†i|ÈäCÉ=ÓüDúÎ,ùw÷tAz^]Èó<ÔòÀ0 ]×ñ“iPè;›”HÏ’zMªª u¶É0 lóˆ4(ôÚ“tö¶µ{§k…Úúže{¼" }çÜ’~Èr÷.¯¹æyäô1y•š¦á‘‘F”Bïàn«O"½ä“’åîý½,ó;³P§„r@¤k†ÞÇÝVNxÓ4-Ÿ¤÷ú$‰€—Û½÷]×ñÈ €HShV¹¿QŽ…wOåyð–âÉW?ȇÇ‘mÞ‘>®¦i(ô·ÈS&f~÷ßWß…°ƒ ÒÇ-tÓ4ú»cô’HË3£öúúüýAkkm¨÷"]×q/@¤)4…þj3–7l÷×YeÛ`¨Ö÷=Û¼"} ×ë•Bß7/\z {Æu²ä†éPß Ã0°} Òš¡¹}÷H·déÕ{¿û—hVE¨ícrÏ4÷bDú…f†¾Ïò-cJ©²,3ZkC}²Ó4qÏ4@¤)4…þ¬K.H{ïó<ßñÒ¿¾#±Öj­C=rƒEo€HSh ýÛB/_q ¸¼•NÜÊ.æ ÒšB¿‚å”±%“œµ6Ô¹ÖŠt¨ï¥Ô8Žý…{ì"„f者Þñó¡?1 Ãò$TUu´-c·ä®³€Ï¯ ò¶ Òxp¡~À?ú]×]¯×å/]À3=6*Ï󀧸 ÃÀ#7"½áB/OË»Ìs†²á.àöæmÿšÐ:àëÀ#7"½ášëÐË änYàÛR^Š€¹Èm뼪‘f†>\¡çÍb ¯¡j­uR÷•eªÓι¶m¹ ÒÌЇ+ô8Ž}ß/€ÌŽDz&ÛÇB}(k-‘ˆôAgh¥”4}¨B;çÆq¼^¯Ë—RåØêÃÞvõ»×¤ªªåïZ”Ru]Ëí×¼ª‘NœúvbóÞ;ç5©È§ê¹Å§ÓéPÏÒøÖ{— …æ ðEü&zð öÔÏY×u2©ä·¡÷þõõuù í½—ú÷MÞ{ùïåq·oä?ÎÿåüPËù_™ÿaÃïèµ–K÷½¢Ð‘Þ’®ëÂÞý.'óßýïDçÜårY~W÷Þóë#)ç• çœlI›ÿ,ï½÷^Δ¿Ožçò_*¥´Ö·tåäÿµ¹lËãwœîI¡"½±ÉOæ’x;¤ÓRèP/cQEQÌaβ¬ï{i³tz"ßÍÍó/ÿüë;éñm³å‹"oä¿LÚ–çW~÷8t ÜÿCÇËvzǶm‡aˆú[uǿú,˺®åë2Ÿ2½ðAÔŸ|õç6KªµÖózrÊÍöÞÿüùó[ë§Ó‰BDšNë·dØBgYVUÕ8ŽÎÁ+|'ÜÎÙ’j™éç'ly˜ÕõzýʯÙ~ä'” ±ÜýзHJÉ ÍY–EíôþÖ½ƒZ^¥G…pþse]Þ%È(/‡‡ËÁœ·Ïºxà_õëßE¬rLÒ;™§›¦‰úà=­{Ç(tÊß2OÏûä44ù²Û¶ýüæ~®CDzoæú4…þã÷‰\«–¯ ì!7ÆÈ=c2d¯ìa®×ë'׸ Árwï•VY÷ÞÁ~oçÜù|>ì3”æ¹YVÅçýçò›-ÁŽºõÌZkŒùð Á 0I3Oqž>ò ý•ožìfÝ»( Ùz&wcË Üƒ-Ûë.—Ë»d(4À$Í<}ÄyšBeÈž¿Ä2^Ëÿ½½¿Kkd뙄_k=MÓüq(4À$Í<ìwú†î9ø*wÀ![ž@%_ýù@´»ƒ= Ãù|¦Ð‘¦ÓQ:½‰ßªÞûóùÌ êÅœk=_º–­gw ÙÓ45MÓ÷=…ˆ4Ž"ñ]¸z¥_JI¤å†ììmëø·žÉCb(4@¤éôáæi ½þ=WYù,kãó&¿[ã=E€HÓéCtšB?<Øs•o‡lY÷d‘­?… Ò Óßû¬¿ûDýrÜ–X†lÙu(ûÎDÂ-XÉ¿:Þ}Y2CS褾 o¿:Ã0Ü>m‘¦ÓGé4«Üé7Îë.ŒÑ‘Æ:M¡7ñ­È^n`5¼Þ^§å™x™¼^¯Ã0<ä™Ê:ýoBù¤Ð“43OgxþôC -7;çdÙöv{Ô|$µü»—™¡"T:½òº÷:{¹å¶"yH”\OõÞËÝD·÷ÏÿÑ9çßÈßmGùÇüÞc†ˆ4×éØ{¹¥Ä²N›e™üóׇã9É’my¤Ä4MRn ù8ŽQŸ ™Â·Ü†NzvõÓÇ}Òµû§c¯rË©ÔUU©7¡&òy¤–ZËIY–É?ïlà®ëšBD‰v:Ò¯ÐroQÆcÌj_Žìí¶snùÉÎ €HÓéÍü¦ŽWè<Ï˲”úQëÏ·¶•RÃ08ç¤Ü2mg[ØŒF¡"#v:^¡1ÏÏÏ¡V¶ƒ¥$Û2^˨-ÁNðl i±Ó‘ ç¹1æt:mb÷–[k-·¤ã(µNä0T i±Ó‘î¶’+вAl‹_¾ùJ¶ì7d¯üIQh€H㈎4C[k­µeYîã¨ygø¼õL®gOÓ´Â'H¡"¸îº®ïû¨Ð÷äD*tQ²Ml—÷(K°•R²>o=›Z ûYSh€Hãˆó4…ØìùÎì¾ïeÈž‡ï%¯…ˆ4ö3Oýw:…ŽlÙz&‹áó=ÙwüPSh M ºÇw^JÍ'xÄë´÷¾m[‰å'¿Ù)t¼¯²|îòT´yȾ½¿kž³?²)4À$#ÎÓúCö|%[H°³_¶‹Sh€H㈦Ðé|dY6§Z¶‹Ï§¡Qh€HãÁ^…NyȾ½ [ÎO啈4Ž2OSè Mؼ˜@ÊØ8v€7bëî#³Ö^¯W ½‰o ^€IÇš§•RÁŸÌH¡0Iƒy:À[àoû(4" :" €HƒNSh Ò Óˆ4¶Ûi DšN§Øi DšN§Øi D)všB‘Æ–çRhH‡æ%€tºª*y21…€T~?s,(Ä:ç†Rhø:–»ñyZþyÍNSh ÒøF§W»>M¡à\“þØü ˆÛ˜îôëÿwg–'CGÿæÓÚC¡€Iú³Ïÿ7˲iš¼÷J©išæÿfî±ÖZ)•ç¹üïµÖZki›ÖZþÅ­'gµuïišœsÓ4Í€HÿÍ9'»¥œsR )ñ»Ç!Kzoÿá]Òf2JÅç~ÓéOþ”¶må%¥Ó@¤3çœÖºëºiš†aXfåßMÀóÿáÿàvÅÛ{ßuÝœgkmžçƘyÚ¦Ó¿jšFþ¸<Ïù€ü*>Â-X2ãè½ïû~š¦yhŽNya空( ­µüsÔ?7øg±Â}YJ)¹ N§à@‘–ËÐ<Ž£tú!”?ÔZ«µ.Ër^!§Ó³º®é4%Ò2.7MãœÇ1KfÁ9Ïs™å6¦Óp HËè,Ós²Ÿ ÷Þc­•K׉Ötˆt]× ÃÐu]¶‘½Z2OWU•øæ©5;m­e¿7ì'ÒrßÔõz•[ª¶÷•PÊZ[…µ6Ù÷tÖ´“_‚Ã0ô}?Žã|ÉæÈÎóaŠ¢0Æ”e™à&ð•ïËʸ‘Þú=Žãëëë>–äNëq‡a¨ëZH¡Óü 8¦m/wãØ÷ý|ÆÎ¾6yžËx‚•ZgÝÛ{:X÷@¤·G ±ÎÚ;¹žN'cLj{Êè4ͽ_|r¥öz½ðÝ+Ð_çœ{}}•ç9–e™Ô»‡uÎ÷fÝ‘ÞL¡§ijÛ6öîâ¤Z8/LÓt:ÒÙP¶æõiYò¡Óˆtº…†¡m[9>ìhœsmÛNÓ$·i%²¡lµNó¼,D:éDÉ)%Ç,ô|×7÷eÀ#ݶí|¼Ô:-QJE!QÉóÜ{/…»÷<7˪²RÊ9'ÙÇQÎAsÎÍÿÖc_@çœ#zœNs"½“BËÇ—qS¯°ñÛ9'ç«Ði Òq ]Åóósj¤º#WJ©———¶m‡aˆjùøÆ˜ãœJ§éÇ:{ÄA%1h­çB¯Ðé¾ï¥‘éôõz=Nt‘Ž^h¥”µV ½'rB™µ6öJÙñž—Å>2Dú}¡cìå–GGÌCçþ:=?VK.Óé€è4€Íä êa&‘fh9´«ªª}mäK#ïrbÿYUUÉ:p Ÿõ:眜N'k-pÐI:Þ }„BgoWÙeµ v§åaÌ)tzµuo®O8n¤#Ý=? ùP_¤Õ:-—ÃÕiù|é4€EšUîž&‹ôGxïÛ¶•CÐŽÓiYB ÓŽi IY–•HVJ9纮SJEqNgoKýtÀþ#M¡£’vFíô0 rüY Åb¿7"M¡éô?ºØuÖZ)•ÂsJX÷@¤)4~ÿÕ4Æ$ò019µf…yšNHM˜ÇQPèõ;-üŠôñ½÷—Ëe§\‘µ¶,ËØË›¦éû>©O“4…Þð<= CŒ“Âd³·<Ÿ;NÇž§Y÷°«HSèÇvZîD4ùÉ&²²,Óy(ëÞˆ4…ÞŒ¨÷eyïû¾—·éÏó¹ñ»NË_u+o,œŽqêçíoð{űäSØÛ¦Ó|Èô'ò<§Ð6éÿûßñ>º mt:J)­µµ6ÔòFعðHgYöŸÿü‡NèK®uY–¿[¹ 6i:}4yžŸN§P_Ž íñ€MFzNG½þ¯SJåyp{sðb²w'ŽÅîô0 t:rßp%7Ló’@ÜH3OJÀÛ¦™¤`HÇî´sŽyz‘†=Þ°F¤3Ö½AŽ„ u/_MX)Òtú(_~­1A¾ }ßs#¬éŒëÓLjtƒM”RÞ{¾”°^¤3®OïRÊä^,öxÀÚ‘fžÞ=cŒÖzùëïßð’Àz‘fžÞ½¢(‚ÔŽn¥T]×\"M§Ã|j]×…ú€u]³©ˆ4 l¡‹¢ Ð@¤étmÛ^¯×PM)e­å¤n Òt:­BgYV–%'u‘¦ÓKõ}¶ÐEQPh Òtz©a^‡Î²Lkm­eG7i:½´ÐmÛ†ºáJ ]EQÜ DšN(tÀãÀ´Öu]Sh ÒÉuºëº­t:R¡ŸŸŸ)4é;í½ßÄ<©Ð§Ó‰B‘NzžN¼ÓRèaZ)%OŒ&Ò@¤éôÒ:ì‡5ÆXk9_ ˆ4^Zè°Ž”ÇESh ÒtúþB7M¶ÐÞ{Yè¶ÖòDšNß?COÓv†VJN' DšN/*tðUî,Ëžžž8þR ‚ÿŠOÊÿû߈¯ReYVUµþa™˜¤™§?ó¨û§ãº®ë¢(ø©"½‡N˺wÓ4«u:^¡Ë²ätn Ò{ë´l±^¡Ó± Í W@¤étZ…–'\±R³ócïDÝG&O\®ë:Æ>²Ø34…&iæi Ò{é4…"M§Sì4…€#;Ö5é[é_ŸžŸ>ü¯G¡€Išyúþy:ÒÓ')4i:½¨Ó¬r²#/wÏR[÷f•À$âM…0I'4OË M¡D:­N³Ê ø–»?¶Îº÷4M@¤“ëtžçÞ{örˆtr–W^)E¡D:¹N3C>ÁƱ?ˆºŒBˆôþ;M¡€HÓi ÒtšB‘Æv;M¡€H#ÅNSh ÒH±Óˆ4Rì4…";M¡€H#ÅNSh ÒH±Óˆ4RìtQˆ4’ëtQeYRh8ž‚L¼çe±Ê LÒHqž¦Ð@¤‘b§)4i¤ØivŠ‘FŠf§€H§Øi Ò)všBˆtЦÐ"b§)4€H§Øi Ò)všBˆtŠ–Bcx•D:¡NÏ…VJñˆt*¦Ð"b§)4às<ªò1.— …|îÿ`uüÝÀ¡œIEND®B`‚././@LongLink0000000000000000000000000000015200000000000011563 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/docs/spring-webflow-reference/htmlsingle/images/warning.svglibspring-webflow-2.0-java-2.0.9.RELEASE.orig/docs/spring-webflow-reference/htmlsingle/images/warnin0000644000000000000000000000217511360615630027771 0ustar ]> ././@LongLink0000000000000000000000000000014600000000000011566 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/docs/spring-webflow-reference/htmlsingle/images/tip.pnglibspring-webflow-2.0-java-2.0.9.RELEASE.orig/docs/spring-webflow-reference/htmlsingle/images/tip.pn0000644000000000000000000000070111360615630027674 0ustar ‰PNG  IHDR*Þ bKGDª#2ÛIDATxÚu’»à @!+xŒ¬’6¥K—¬àR+hJ·”–TaK >ßžþRh~j?ïg0qF@”Ÿøƒð!¢ÊòeH,î…0܆x˜”0‘&p „^—µªJéÄ5y»=ôJØ % P<†*ÄŸ{Œ®”¨…Š–×Âj÷ #û7±^ñóŸÍL~Ù!=™ ä&Ṳ; ‘&rgߊFâm‰¬Í©×Pý•¬Ö;Ùä óot6BöJäqC ìXduÀê³Ýi]}OLð4+|) -íCtEXtSoftware@(#)ImageMagick 4.2.8 99/08/01 cristy@mystic.es.dupont.com‘º!¸*tEXtSignatureee9d877396ce267aeb0179d35f81b2ac3ú'tEXtPage25x24+0+0¾ñ ¯IEND®B`‚././@LongLink0000000000000000000000000000014700000000000011567 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/docs/spring-webflow-reference/htmlsingle/images/note.giflibspring-webflow-2.0-java-2.0.9.RELEASE.orig/docs/spring-webflow-reference/htmlsingle/images/note.g0000644000000000000000000000110411360615630027654 0ustar GIF89aô JJJRRRZZZccckkksss{{{„„„ŒŒŒ”””¥¥¥µµµ½½½ÆÆÆÎÎÎÖÖÖÞÞÞçççïïïÿÿÿ½½½!ù,þ`UUUUUUUI’$IUUUUUUUUUUUUÕ,ʲ,ÊòTUUUUUUUUMN²@ÒN“ä(ÊSUUUUUUIÊQEQEQ¨0UUUUUM CQEQEQ5-MUU`UMJCQEQEQEQ”ÒTUU= EEQEQEQ5-UUUKDQEQREQEQÏRUÏBQE9 Ó0M$I(IµHÔM´$ÌAO‚,˲(ŠÄ< ´HŠÂ<%=ŠóMEòDŠ´@ŠD5)ćÒ0LãL’-"QÕOF‹BMÔDQT¤HK”H5)†Â4ÉBÂQHQ%)Ò)Ç2MÅ=ÎQEQ%-`Å@Å(OÑ$ÑPEQE-O-5Î! âPEQEMËTUËCQT$ERREQEQMSU´HEQEQEQHQÏ2UUU1 EQEQEQEQÉSU`UUU£LEQEQE=ÉSUUUUUÅ€Š3QEQ%1ŠSUUUUUUUÐ’,QJѳ$ŒTUUUUUUUUUE¢(ÊòLXUUUU!;././@LongLink0000000000000000000000000000014700000000000011567 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/docs/spring-webflow-reference/htmlsingle/images/home.pnglibspring-webflow-2.0-java-2.0.9.RELEASE.orig/docs/spring-webflow-reference/htmlsingle/images/home.p0000644000000000000000000000220411360615630027652 0ustar ‰PNG  IHDR#Yi†&PLTEŒ!Œ!)”)1œ1BœBJ¥Jc­cs½s„½„ŒÆŒ”Δ¥Î¥µÞµÆÞÆÎçÎÖïÖçïçï÷ïÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿòî¤GbKGDˆH“IDATxÚ­QÑà l)œ xÿÿ±£Y¶,]Ò¾”„âå8uÁu,÷q¼£»Å™N!`’œîRN`Mè}‡™%,»ióímˆõ¡‹ )ûΪš +¹· šC²©<ÙóÍqU;pZÚ–ÔüzJky¯à ƒŒà4ãy|Ÿ¨50ܦyì³k»ù/.ã Ì×j*1ÝCtEXtSoftware@(#)ImageMagick 4.2.8 99/08/01 cristy@mystic.es.dupont.com‘º!¸*tEXtSignature154332ef94ba5222343b4126d6035f91ìïé€tEXtPage35x15+0+0~FòIEND®B`‚././@LongLink0000000000000000000000000000014700000000000011567 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/docs/spring-webflow-reference/htmlsingle/images/note.pnglibspring-webflow-2.0-java-2.0.9.RELEASE.orig/docs/spring-webflow-reference/htmlsingle/images/note.p0000644000000000000000000000075211360615630027675 0ustar ‰PNG  IHDRÅb$bKGDª#2IDATxÚe’!’Ã0 E}¾……K C ÿtAQCACQAÁ+g“4m¥ÉŒãçoKß.ã Ÿqþ•c ¢üô D«Ô="¼ú²s ˆÇ%‚äd¼ÇœH ô1Ÿ›à²ÿy%ØM8ÓöfÈK ¢wª¬Öµ>i6g-NpÖ‹˜Y‡tL#÷ßŸÛ a–Žb;UÍ#2ÇØV} °Ô£rßVŠx¬]ÛzTîT÷1úºÜO HËè4Ý]o žíÕzÌÎ§Ïæ™gç"Ó’NþåHl¶ó§‹U÷‹Äuýœß¯–Ñä9¾<†t‘,×tÓß_‰)2Håž•÷d úkBCtEXtSoftware@(#)ImageMagick 4.2.8 99/08/01 cristy@mystic.es.dupont.com‘º!¸*tEXtSignature3bd747c5e45807006b090dd3e7a26c44Ó“útEXtPage24x24+0+0r[ 1IEND®B`‚././@LongLink0000000000000000000000000000014700000000000011567 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/docs/spring-webflow-reference/htmlsingle/images/next.pnglibspring-webflow-2.0-java-2.0.9.RELEASE.orig/docs/spring-webflow-reference/htmlsingle/images/next.p0000644000000000000000000000217611360615630027710 0ustar ‰PNG  IHDR#Yi†&PLTE„Œ!Œ!)”)1œ1BœBJ¥JR­Rc­ckµk„½„ŒÆŒ”Δ¥Î¥­Ö­µÞµÆÞÆÎçÎÖïÖçïçï÷ïÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ1£`ábKGDˆHIDATxÚ½‘á à „Uâ\³¶&†{ÿW]«ÝØŸ2!BrwA~Ÿp)#Õ€6î¯L£è2ó»²è”ÅD@•nöR²ÌŒ¥ÅQK%+÷uKe›hÜ݇ YA=õììqfn ŸWRÓ™±[Pßz¯ 2ëÑñ4æµ±˜¨y¯,Ǭ¿ü×:l&ÕXDzìCtEXtSoftware@(#)ImageMagick 4.2.8 99/08/01 cristy@mystic.es.dupont.com‘º!¸*tEXtSignaturebcb022e8ade53bb4f94fb0f70d7c0a8cuœktEXtPage35x15+0+0~FòIEND®B`‚././@LongLink0000000000000000000000000000015200000000000011563 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/docs/spring-webflow-reference/htmlsingle/images/caution.giflibspring-webflow-2.0-java-2.0.9.RELEASE.orig/docs/spring-webflow-reference/htmlsingle/images/cautio0000644000000000000000000000134711360615630027757 0ustar GIF89aõ-!!11BBZZcckkss{{„„ŒŒ””œœ¥¥µµ½½„„s””s””{œœ{µµZ¥¥cµµcÎÎÖÖÞÞ9ççïï÷÷÷÷ÿÿçç1çç9÷÷1ÞÞBŒŒŒœœ”œœœ¥¥œ¥¥¥µµµÎÎÎçççïïï½½½!ù.,þ@—Ëår¹\.—Ëår¹\.—Ëår¹\.—Ëår¹\.—Ëåbµ\.—Ëår¹\.—Ëår¹\.—˵’ €-—Ëår¹\.—Ëår¹\.—˵š,¦–Ëår¹\.—Ëår¹\.—‹%!y>˜TËår¹\.—Ëår].—k%y<Õr¹\.—Ëår¹\.×j²ñx8ÏÇ’j¹\.—Ëår¹\®eãñ@Žd¦Z.—Ëår¹\®ÕDäñxÄãYN-—Ëår¹\, ÉãñxÄãñ|0©–Ëår¹V’‘Çôx<ŽAãñx< ªår¹V“Çãñx<@ãñx<žþ%Õr±$$Çãñx<ãñx<ÏxQ¹Z)ËÇãñx<ŽÑñx<gCY¹\-Æãñx<Îáñx<Oh²r¹\®V óñx< PÑàx<O¨´r¹\.—«…²€<Ï0ˆx<žÍdår¹\.—ËÕJY@ÏcPÐx<¢ÊÊår¹\. ËårµR–Ç£áx<›ÊÊår¹\.—Ëår¹Z(ŒÇãñxB“•Ëår¹\.—Ëår¹\­æãñ„JÀ•Ëår¹\.—Ëår¹\.W em&+—Ëår¹\.—Ëår¹\.—«•ºPV.—Ëår¹\.—Ëår¹€.—Ëåj©V.—Ëår¹\.W;././@LongLink0000000000000000000000000000014700000000000011567 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/docs/spring-webflow-reference/htmlsingle/images/home.giflibspring-webflow-2.0-java-2.0.9.RELEASE.orig/docs/spring-webflow-reference/htmlsingle/images/home.g0000644000000000000000000000050111360615630027637 0ustar GIF87a((Âààà```°°°Ððððð,((þºÜþp…H+ ˆÍ»ÿ`ˆ)fžhª¦Ú؆pìµY)ß0Mø6 =î…@ÜÐv3‘ÊRçùý|Ïg2¶¤vœ@gö¸ u?`ñ˜Ì•îÐäõº¤¥¦§§tˆ¨®®ª¡U¯´¥±¢¬¶›µ·S³¤Ä­ÅÉÂŒÀ_¶ÉǧҾÌoÎÂФԥԿ×ǾÄÂÛÓË«âÃÅÑçÕ鲨ãíÛÉäð—¸ÁôÄâ¯ßîŒÊV¯V@Gûëu0—§‡›¬ eÅ K,hŒ€é¢Ç+BŠI²¤I ;././@LongLink0000000000000000000000000000014700000000000011567 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/docs/spring-webflow-reference/htmlsingle/images/prev.svglibspring-webflow-2.0-java-2.0.9.RELEASE.orig/docs/spring-webflow-reference/htmlsingle/images/prev.s0000644000000000000000000000202011360615630027675 0ustar ]> ././@LongLink0000000000000000000000000000014700000000000011567 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/docs/spring-webflow-reference/htmlsingle/images/note.svglibspring-webflow-2.0-java-2.0.9.RELEASE.orig/docs/spring-webflow-reference/htmlsingle/images/note.s0000644000000000000000000000333311360615630027676 0ustar ]> ././@LongLink0000000000000000000000000000014700000000000011567 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/docs/spring-webflow-reference/htmlsingle/images/home.svglibspring-webflow-2.0-java-2.0.9.RELEASE.orig/docs/spring-webflow-reference/htmlsingle/images/home.s0000644000000000000000000000400311360615630027654 0ustar ]> ././@LongLink0000000000000000000000000000014500000000000011565 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/docs/spring-webflow-reference/htmlsingle/images/up.svglibspring-webflow-2.0-java-2.0.9.RELEASE.orig/docs/spring-webflow-reference/htmlsingle/images/up.svg0000644000000000000000000000202011360615630027702 0ustar ]> ././@LongLink0000000000000000000000000000015400000000000011565 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/docs/spring-webflow-reference/htmlsingle/images/toc-blank.pnglibspring-webflow-2.0-java-2.0.9.RELEASE.orig/docs/spring-webflow-reference/htmlsingle/images/toc-bl0000644000000000000000000000047611360615630027655 0ustar ‰PNG  IHDR ¡kd0PLTE€€€€€€€€€ÀÀÀ€€€ÿÿÿÿÿÿÿÿÿÿÿÿO&IbKGDˆHIDATxÚcøÿ¿ÿ?|`ø h  Ì”ÐBÒh±àCtEXtSoftware@(#)ImageMagick 4.2.8 99/08/01 cristy@mystic.es.dupont.com‘º!¸*tEXtSignaturef7e388dabd4ef0097714b5643fdd3cfbb†œÒ tEXtPage15x9+0+07vð¸IEND®B`‚././@LongLink0000000000000000000000000000014700000000000011567 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/docs/spring-webflow-reference/htmlsingle/images/note.tiflibspring-webflow-2.0-java-2.0.9.RELEASE.orig/docs/spring-webflow-reference/htmlsingle/images/note.t0000644000000000000000000000071411360615630027677 0ustar II**€?àP8#ž ‚BaP%ê•(¥ˆCÙиK½ŒŒRµœîøãŒ”JDâŽx{z(ÿg%°·z–W'KW±T¤ÎašÁÊY¼UK&Oç°™Ü ‹c/V´¥ëz©\õó½¬ÖR£¬æóYœŒBD")G=mÏRVàNyKœs¦·«²õ’3d»Ò†2Ñ(¤{š­ilg|‘½w©ÃuÌ:QþïÇÀî¶vò3z9Ê—±ˆ\“(”=©c†³ÝyŒ{ Blïõ«Zµšóg3Ú¥‰Ö&:r–eÆŠKrþÇ“¯vÕŒMwÃ×Ï(oôg½Jt"•þ´a„Î÷æˆÅÉÎÞÖ¹³D‚A¸í@à KK þ"=././@LongLink0000000000000000000000000000015200000000000011563 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/docs/spring-webflow-reference/htmlsingle/images/warning.pnglibspring-webflow-2.0-java-2.0.9.RELEASE.orig/docs/spring-webflow-reference/htmlsingle/images/warnin0000644000000000000000000000233111360615630027763 0ustar ‰PNG  IHDRשÍÊPLTE!)1BJRZks{„Œ””{{œRRœZZœ{{¥¥99¥JJ¥„„¥””¥¥¥­­11­””µµ))µŒŒµœœµ¥¥µµµ½½­­½µµÆÆÆÆÆÆÎÎÎÎ))ÖÖ))ÖÖÖÞÞÞÞçç!!çççïïïïï÷÷÷÷ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿp;ã”bKGDˆHèIDATxÚm’}o‚0Æï”MÜæÄé¦5…%¼•%m ßÿs­ìzP“^ÿ ²¥UDÂýKnßk[;Ò»?0n!¿œqCtEXtSoftware@(#)ImageMagick 4.2.8 99/08/01 cristy@mystic.es.dupont.com‘º!¸*tEXtSignaturec42b7d2d564aab588891979703f02b45Oß“tEXtPage24x24+0+0r[ 1IEND®B`‚././@LongLink0000000000000000000000000000014500000000000011565 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/docs/spring-webflow-reference/htmlsingle/images/up.giflibspring-webflow-2.0-java-2.0.9.RELEASE.orig/docs/spring-webflow-reference/htmlsingle/images/up.gif0000644000000000000000000000210111360615630027650 0ustar GIF87a''÷€€€€€€€€€ÀÀÀÀÜÀ¦Êððûÿ@€€€ÿ@@ðʦÿ€¤  €@€ÿ€@@€ÿûð  ¤€€€ÿÿÿÿÿÿÿÿÿÿÿÿ,''þH° Áƒ*\Ȱ¡Ã‡#@±¢Å‹3RDàŸÇ CŠù€‰$Sª,iå?‰ñµ4À#̃øfàñ¦A|: ðÈÀ?†ø‚à±hC|Jð¸€À ñE=ÀcU‡ø¶ð¨Á ñ‰õXö!¾µÿ0ø/!>¸r!âÃ;á?„øøÒŒˆO°P…ÿâ3¼T">Æ\þ3ˆ2˜øpø¯ >Í7ññA|£WŠ$ˆòM|®aâ‹-íˆønCÄ·>|øðáÇ>|øðáÇ>|øðáÇ>|øÄâÇ>|øð'áÇ>|øðáÇ>|øðáǾ­\5ê߿ѧÿÿhP@;././@LongLink0000000000000000000000000000015200000000000011563 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/docs/spring-webflow-reference/htmlsingle/images/caution.pnglibspring-webflow-2.0-java-2.0.9.RELEASE.orig/docs/spring-webflow-reference/htmlsingle/images/cautio0000644000000000000000000000234211360615630027753 0ustar ‰PNG  IHDRשÍÊPLTE!!11BBZZcckkss{{„„„„sŒŒŒŒsŒŒŒ””””s””{œœœœsœœ{œœ”œœœ¥¥¥¥c¥¥œ¥¥¥µµµµZµµcµµµ½½½½cÎÎÎÎÎÖÖÖÖÎÖÖÖÞÞÞÞ1ÞÞ9ÞÞBçççç1çç9çççïïïïï÷÷÷÷÷÷÷÷1÷÷÷ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ_§ä\bKGDˆHñIDATxÚu’ÛŽ‚@ †ñÀ®bÌ®ÊIc¹APÛ`bxÿ³sBEíU§_çïOh¿<Îô`Ó'€á1û§wpŽÜä õW–Èt:%suá&³w,ÀHêéȯøf Øþ“Èü‚—²59 ævÀ:€Ç\^ F;`çªHãJ'Ê8‰ƒ71€›íZJ²Æ+ïçb²2B‘¢8·ÀŸ›¤Q§$×wŠéRKÕ ´v)ÎnR˜Áp¯t¤ß} Ì²ŽÅîéŸVb¢Tšz·Dç ±·vã@Ïí=”rPºþ—§¥duõ—Ÿvz{Nël;—a*CtEXtSoftware@(#)ImageMagick 4.2.8 99/08/01 cristy@mystic.es.dupont.com‘º!¸*tEXtSignaturec70387830aa4ecd5a4a32a852283b3d6øP¶tEXtPage24x24+0+0r[ 1IEND®B`‚././@LongLink0000000000000000000000000000015400000000000011565 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/docs/spring-webflow-reference/htmlsingle/images/important.tiflibspring-webflow-2.0-java-2.0.9.RELEASE.orig/docs/spring-webflow-reference/htmlsingle/images/import0000644000000000000000000000374411360615630030010 0ustar II*6€àP8!. ‚BaE²XØDDb‚´.V…ƒälv:2‡h`d€@“éø„`™ŽC@ c3„êȘS£Ö½db‚ë6Ë$Ìfƒ®v*Åd ^ìu‘È(Á_fb0mRUt¬ŒÁ€ŒE€ 2ÅJCUôÌZ0è Ê…á1óC£ƒEZ ¾¶8 𒑦^:n·c‘xBoÜl+"ý¬go¢Œú=1˜·}΄>çw¸ÛA !)1BJRZks{„Œ””œœœ¥¥¥¥¥¥­­­µµµµµµ½½½ÆÆÆÆÎÎÎÎÖÖÖÞÞçççïïï÷÷ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ{RZ{9J„”¥1”)Œœ¥µ­µÆ))ÖÞ!çï÷ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ{RZ{9J„”¥1”)Œœ¥µ­µÆ))ÖÞ!çï÷ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿKKþ=@././@LongLink0000000000000000000000000000014500000000000011565 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/docs/spring-webflow-reference/htmlsingle/images/up.pnglibspring-webflow-2.0-java-2.0.9.RELEASE.orig/docs/spring-webflow-reference/htmlsingle/images/up.png0000644000000000000000000000212711360615630027677 0ustar ‰PNG  IHDR#Yi†&PLTE„Œ!Œ!)”)1œ1BœBc­ckµk„½„ŒÆŒ”ΔµÞµÆÞÆÎçÎÖïÖçïçï÷ïÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ²»™~bKGDˆHfIDATxÚ•KÀ mëAîÙÖI+¤oÁ†É@^P?á'#H];á°<ùR‘Í[æPeéâ0œ2&t<*§Ï¬‹7Sm¤Ô&Ji»Gš¾ ËËß=φKa1{Þäg´ ¦ưCtEXtSoftware@(#)ImageMagick 4.2.8 99/08/01 cristy@mystic.es.dupont.com‘º!¸*tEXtSignature2772383288e9cce11a512e2a8adf37b0k ´tEXtPage35x15+0+0~FòIEND®B`‚././@LongLink0000000000000000000000000000015000000000000011561 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/docs/spring-webflow-reference/htmlsingle/images/callouts/libspring-webflow-2.0-java-2.0.9.RELEASE.orig/docs/spring-webflow-reference/htmlsingle/images/callou0000755000000000000000000000000011360615630027743 5ustar ././@LongLink0000000000000000000000000000015500000000000011566 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/docs/spring-webflow-reference/htmlsingle/images/callouts/9.svglibspring-webflow-2.0-java-2.0.9.RELEASE.orig/docs/spring-webflow-reference/htmlsingle/images/callou0000644000000000000000000000206211360615630027745 0ustar ]> ././@LongLink0000000000000000000000000000015600000000000011567 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/docs/spring-webflow-reference/htmlsingle/images/callouts/25.svglibspring-webflow-2.0-java-2.0.9.RELEASE.orig/docs/spring-webflow-reference/htmlsingle/images/callou0000644000000000000000000000243211360615630027746 0ustar ]> ././@LongLink0000000000000000000000000000015600000000000011567 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/docs/spring-webflow-reference/htmlsingle/images/callouts/27.svglibspring-webflow-2.0-java-2.0.9.RELEASE.orig/docs/spring-webflow-reference/htmlsingle/images/callou0000644000000000000000000000207311360615630027747 0ustar ]> ././@LongLink0000000000000000000000000000015600000000000011567 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/docs/spring-webflow-reference/htmlsingle/images/callouts/13.svglibspring-webflow-2.0-java-2.0.9.RELEASE.orig/docs/spring-webflow-reference/htmlsingle/images/callou0000644000000000000000000000224611360615630027751 0ustar ]> ././@LongLink0000000000000000000000000000015600000000000011567 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/docs/spring-webflow-reference/htmlsingle/images/callouts/19.svglibspring-webflow-2.0-java-2.0.9.RELEASE.orig/docs/spring-webflow-reference/htmlsingle/images/callou0000644000000000000000000000225511360615630027751 0ustar ]> ././@LongLink0000000000000000000000000000015600000000000011567 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/docs/spring-webflow-reference/htmlsingle/images/callouts/16.svglibspring-webflow-2.0-java-2.0.9.RELEASE.orig/docs/spring-webflow-reference/htmlsingle/images/callou0000644000000000000000000000232411360615630027746 0ustar ]> ././@LongLink0000000000000000000000000000015500000000000011566 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/docs/spring-webflow-reference/htmlsingle/images/callouts/5.svglibspring-webflow-2.0-java-2.0.9.RELEASE.orig/docs/spring-webflow-reference/htmlsingle/images/callou0000644000000000000000000000170711360615630027752 0ustar ]> ././@LongLink0000000000000000000000000000015600000000000011567 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/docs/spring-webflow-reference/htmlsingle/images/callouts/23.svglibspring-webflow-2.0-java-2.0.9.RELEASE.orig/docs/spring-webflow-reference/htmlsingle/images/callou0000644000000000000000000000260311360615630027746 0ustar ]> ././@LongLink0000000000000000000000000000015600000000000011567 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/docs/spring-webflow-reference/htmlsingle/images/callouts/30.svglibspring-webflow-2.0-java-2.0.9.RELEASE.orig/docs/spring-webflow-reference/htmlsingle/images/callou0000644000000000000000000000255311360615630027752 0ustar ]> ././@LongLink0000000000000000000000000000015600000000000011567 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/docs/spring-webflow-reference/htmlsingle/images/callouts/10.pnglibspring-webflow-2.0-java-2.0.9.RELEASE.orig/docs/spring-webflow-reference/htmlsingle/images/callou0000644000000000000000000000055111360615630027746 0ustar ‰PNG  IHDR s;bKGDª#2ƒIDATxÚ%Ž¡!C#‘H,‰œN^ [¶p‰\»%Œ¤${‰Ì;‹û/yI@ò’à¥l\â\òyˆSM³}ßi㎋ªŠs¢à×uœÈŒèºËÿaˆXÌ  ÷eøÚ­ÀÜvù¶G¶j…É!=£dçRµ;?Ý¢CbË kCtEXtSoftware@(#)ImageMagick 4.2.8 99/08/01 cristy@mystic.es.dupont.com‘º!¸*tEXtSignature386e83bb9bdfba3227f58bb897e2c8a5Ÿ+ tEXtPage12x12+0+0„m»}IEND®B`‚././@LongLink0000000000000000000000000000015500000000000011566 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/docs/spring-webflow-reference/htmlsingle/images/callouts/5.giflibspring-webflow-2.0-java-2.0.9.RELEASE.orig/docs/spring-webflow-reference/htmlsingle/images/callou0000644000000000000000000000162411360615630027750 0ustar GIF89a çÿ  !!!"""###$$$%%%&&&'''((()))***+++,,,---...///000111222333444555666777888999:::;;;<<<===>>>???@@@AAABBBCCCDDDEEEFFFGGGHHHIIIJJJKKKLLLMMMNNNOOOPPPQQQRRRSSSTTTUUUVVVWWWXXXYYYZZZ[[[\\\]]]^^^___```aaabbbcccdddeeefffggghhhiiijjjkkklllmmmnnnooopppqqqrrrssstttuuuvvvwwwxxxyyyzzz{{{|||}}}~~~€€€‚‚‚ƒƒƒ„„„………†††‡‡‡ˆˆˆ‰‰‰ŠŠŠ‹‹‹ŒŒŒŽŽŽ‘‘‘’’’“““”””•••–––———˜˜˜™™™ššš›››œœœžžžŸŸŸ   ¡¡¡¢¢¢£££¤¤¤¥¥¥¦¦¦§§§¨¨¨©©©ªªª«««¬¬¬­­­®®®¯¯¯°°°±±±²²²³³³´´´µµµ¶¶¶···¸¸¸¹¹¹ººº»»»¼¼¼½½½¾¾¾¿¿¿ÀÀÀÁÁÁÂÂÂÃÃÃÄÄÄÅÅÅÆÆÆÇÇÇÈÈÈÉÉÉÊÊÊËËËÌÌÌÍÍÍÎÎÎÏÏÏÐÐÐÑÑÑÒÒÒÓÓÓÔÔÔÕÕÕÖÖÖ×××ØØØÙÙÙÚÚÚÛÛÛÜÜÜÝÝÝÞÞÞßßßàààáááâââãããäääåååæææçççèèèéééêêêëëëìììíííîîîïïïðððñññòòòóóóôôôõõõööö÷÷÷øøøùùùúúúûûûüüüýýýþþþÿÿÿ!ùþ, qý 䔄Œ*Ì EŠ)ÄX Ç¿w•HᯀŠÿ|ÉH#ÈVΉÃG‹„”œãôK!}dô®¦IZ>R:÷1†G–ÿ”„ðFi§¿ ½»W ÂFЬä¨Ð%† ;././@LongLink0000000000000000000000000000015600000000000011567 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/docs/spring-webflow-reference/htmlsingle/images/callouts/14.giflibspring-webflow-2.0-java-2.0.9.RELEASE.orig/docs/spring-webflow-reference/htmlsingle/images/callou0000644000000000000000000000031511360615630027744 0ustar GIF89a „ 555999FFFLLL[[[```{{{ƒƒƒ‹‹‹•••œœœ¥¥¥²²²½½½ÆÆÆÊÊÊÕÕÕÚÚÚãããíííñññþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ!ù, Jà'~$hUìð¤B°ˆáŒÇ’%)àQI(ÅÄŠ$ $À5‹‡…"x}€°0Ž*–:Œ¢ÌZ^Ô‡b’Ûí!;././@LongLink0000000000000000000000000000015500000000000011566 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/docs/spring-webflow-reference/htmlsingle/images/callouts/9.giflibspring-webflow-2.0-java-2.0.9.RELEASE.orig/docs/spring-webflow-reference/htmlsingle/images/callou0000644000000000000000000000163311360615630027750 0ustar GIF89a çÿ  !!!"""###$$$%%%&&&'''((()))***+++,,,---...///000111222333444555666777888999:::;;;<<<===>>>???@@@AAABBBCCCDDDEEEFFFGGGHHHIIIJJJKKKLLLMMMNNNOOOPPPQQQRRRSSSTTTUUUVVVWWWXXXYYYZZZ[[[\\\]]]^^^___```aaabbbcccdddeeefffggghhhiiijjjkkklllmmmnnnooopppqqqrrrssstttuuuvvvwwwxxxyyyzzz{{{|||}}}~~~€€€‚‚‚ƒƒƒ„„„………†††‡‡‡ˆˆˆ‰‰‰ŠŠŠ‹‹‹ŒŒŒŽŽŽ‘‘‘’’’“““”””•••–––———˜˜˜™™™ššš›››œœœžžžŸŸŸ   ¡¡¡¢¢¢£££¤¤¤¥¥¥¦¦¦§§§¨¨¨©©©ªªª«««¬¬¬­­­®®®¯¯¯°°°±±±²²²³³³´´´µµµ¶¶¶···¸¸¸¹¹¹ººº»»»¼¼¼½½½¾¾¾¿¿¿ÀÀÀÁÁÁÂÂÂÃÃÃÄÄÄÅÅÅÆÆÆÇÇÇÈÈÈÉÉÉÊÊÊËËËÌÌÌÍÍÍÎÎÎÏÏÏÐÐÐÑÑÑÒÒÒÓÓÓÔÔÔÕÕÕÖÖÖ×××ØØØÙÙÙÚÚÚÛÛÛÜÜÜÝÝÝÞÞÞßßßàààáááâââãããäääåååæææçççèèèéééêêêëëëìììíííîîîïïïðððñññòòòóóóôôôõõõööö÷÷÷øøøùùùúúúûûûüüüýýýþþþÿÿÿ!ùþ, xý l%%E)­* s(TA+kçJEôתáo0ÜÓÒE¥:°¦@ ÷€Ù«aȆz½;w®–M†6 °F©aŒ–Bî…Pò/GCFþœhõïÝš†)ưÙ@ o ýQŠA ¨;././@LongLink0000000000000000000000000000015600000000000011567 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/docs/spring-webflow-reference/htmlsingle/images/callouts/14.svglibspring-webflow-2.0-java-2.0.9.RELEASE.orig/docs/spring-webflow-reference/htmlsingle/images/callou0000644000000000000000000000161211360615630027745 0ustar ]> ././@LongLink0000000000000000000000000000015600000000000011567 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/docs/spring-webflow-reference/htmlsingle/images/callouts/11.pnglibspring-webflow-2.0-java-2.0.9.RELEASE.orig/docs/spring-webflow-reference/htmlsingle/images/callou0000644000000000000000000000106511360615630027747 0ustar ‰PNG  IHDR Ù˰ pHYsttÞfxtIMEÒ-'<Ùj€tEXtAuthor©®ÌH tEXtDescription !# tEXtCopyright¬Ì:tEXtCreation time5÷ tEXtSoftware]pÿ: tEXtDisclaimer·À´tEXtWarningÀæ‡tEXtSourceõÿƒëtEXtCommentöÌ–¿tEXtTitle¨îÒ'IDATxœu­ª„pÅÏ_ š?‚}‹I6 ‚XEabƒ¯ad@ƒÙlÛ´ÍlŒ êÜ ë•ûñ‹3ç̜ÈÖuíºNMÓp†ˆˆhš¦$ITU݆†aTUE@DëºÞn7]×mÛÀó|EÇ=ŸÏoQ–e×ëõý~E¡ëzY–}ß¡m["â¤iz¿ß§i¢(ÛÓqó<ß3I’Ä{<EQ0Æ,ËÚ.ˆãx¿$IÒÑñ\v[àxž‡ð}·v]'Ëòo…ëºË²ì툨išËårV„a8 öeGˆyžëº~½^¢(:Žcšæa`?’þÉ,¬”红IEND®B`‚././@LongLink0000000000000000000000000000015500000000000011566 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/docs/spring-webflow-reference/htmlsingle/images/callouts/2.svglibspring-webflow-2.0-java-2.0.9.RELEASE.orig/docs/spring-webflow-reference/htmlsingle/images/callou0000644000000000000000000000163611360615630027753 0ustar ]> ././@LongLink0000000000000000000000000000015600000000000011567 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/docs/spring-webflow-reference/htmlsingle/images/callouts/11.giflibspring-webflow-2.0-java-2.0.9.RELEASE.orig/docs/spring-webflow-reference/htmlsingle/images/callou0000644000000000000000000000031211360615630027741 0ustar GIF89a „ $$$)))222;;;CCCSSSeeeiii{{{†††———¢¢¢®®®³³³¸¸¸ÄÄÄÍÍÍÒÒÒÛÛÛãããìììðððþþþÿÿÿÿÿÿÿÿÿ!ù, Gà'ŠÙhŠŒÄt&ñ&@4BÆ% “‘áa‘,*>CPJ‡dB4pB“ ÑÂ]¹>ÕjŒ0UcÀôô¡4¶|;././@LongLink0000000000000000000000000000015600000000000011567 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/docs/spring-webflow-reference/htmlsingle/images/callouts/11.svglibspring-webflow-2.0-java-2.0.9.RELEASE.orig/docs/spring-webflow-reference/htmlsingle/images/callou0000644000000000000000000000147311360615630027752 0ustar ]> ././@LongLink0000000000000000000000000000015500000000000011566 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/docs/spring-webflow-reference/htmlsingle/images/callouts/2.giflibspring-webflow-2.0-java-2.0.9.RELEASE.orig/docs/spring-webflow-reference/htmlsingle/images/callou0000644000000000000000000000161311360615630027746 0ustar GIF89a çÿ  !!!"""###$$$%%%&&&'''((()))***+++,,,---...///000111222333444555666777888999:::;;;<<<===>>>???@@@AAABBBCCCDDDEEEFFFGGGHHHIIIJJJKKKLLLMMMNNNOOOPPPQQQRRRSSSTTTUUUVVVWWWXXXYYYZZZ[[[\\\]]]^^^___```aaabbbcccdddeeefffggghhhiiijjjkkklllmmmnnnooopppqqqrrrssstttuuuvvvwwwxxxyyyzzz{{{|||}}}~~~€€€‚‚‚ƒƒƒ„„„………†††‡‡‡ˆˆˆ‰‰‰ŠŠŠ‹‹‹ŒŒŒŽŽŽ‘‘‘’’’“““”””•••–––———˜˜˜™™™ššš›››œœœžžžŸŸŸ   ¡¡¡¢¢¢£££¤¤¤¥¥¥¦¦¦§§§¨¨¨©©©ªªª«««¬¬¬­­­®®®¯¯¯°°°±±±²²²³³³´´´µµµ¶¶¶···¸¸¸¹¹¹ººº»»»¼¼¼½½½¾¾¾¿¿¿ÀÀÀÁÁÁÂÂÂÃÃÃÄÄÄÅÅÅÆÆÆÇÇÇÈÈÈÉÉÉÊÊÊËËËÌÌÌÍÍÍÎÎÎÏÏÏÐÐÐÑÑÑÒÒÒÓÓÓÔÔÔÕÕÕÖÖÖ×××ØØØÙÙÙÚÚÚÛÛÛÜÜÜÝÝÝÞÞÞßßßàààáááâââãããäääåååæææçççèèèéééêêêëëëìììíííîîîïïïðððñññòòòóóóôôôõõõööö÷÷÷øøøùùùúúúûûûüüüýýýþþþÿÿÿ!ùÿ, hÿ ¤”„œ*Œ@Š c,ÂÚ¹wÆ È¨a)kïuÀˆ!É= ½ÕŠˆ ¡Ë÷æ4DÐÒ¥’sµj"0IòÊ—#×Ü#††Œþ1ät®é9”ò|©P`Iš9() ;././@LongLink0000000000000000000000000000015500000000000011566 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/docs/spring-webflow-reference/htmlsingle/images/callouts/7.pnglibspring-webflow-2.0-java-2.0.9.RELEASE.orig/docs/spring-webflow-reference/htmlsingle/images/callou0000644000000000000000000000053011360615630027743 0ustar ‰PNG  IHDR s;bKGDª#2rIDATxÚ%Ž­…0 „OV"Y!²²‰¬ìL•O¾•¬Á Hdä‘+‰H¾äò’£ší‡“ ×e _ÊÐpD—²ã„l½ðC›0T+ÈÊ«+¤® ’VA†jÝ“ ƒ{ŒO•9ølsLGÉIÉz¼ó>61¿GVSCtEXtSoftware@(#)ImageMagick 4.2.8 99/08/01 cristy@mystic.es.dupont.com‘º!¸*tEXtSignature298368142ac43cebd2586d8d1137c8df&9é™tEXtPage12x12+0+0„m»}IEND®B`‚././@LongLink0000000000000000000000000000015600000000000011567 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/docs/spring-webflow-reference/htmlsingle/images/callouts/28.svglibspring-webflow-2.0-java-2.0.9.RELEASE.orig/docs/spring-webflow-reference/htmlsingle/images/callou0000644000000000000000000000303211360615630027743 0ustar ]> ././@LongLink0000000000000000000000000000015600000000000011567 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/docs/spring-webflow-reference/htmlsingle/images/callouts/15.pnglibspring-webflow-2.0-java-2.0.9.RELEASE.orig/docs/spring-webflow-reference/htmlsingle/images/callou0000644000000000000000000000120011360615630027736 0ustar ‰PNG  IHDR Ù˰ pHYsttÞfxtIMEÒ0 ÏJtEXtAuthor©®ÌH tEXtDescription !# tEXtCopyright¬Ì:tEXtCreation time5÷ tEXtSoftware]pÿ: tEXtDisclaimer·À´tEXtWarningÀæ‡tEXtSourceõÿƒëtEXtCommentöÌ–¿tEXtTitle¨îÒ'IDATxœu1Ë‚`…¯E`59¶‰-A´ôZ[… ¦ÖœªÅ¡Æhr ¢ŸÑ/h1A¤-§—‚"Éè6B||g¼çœËáˆ":Çã1›Í6›ÍB¡€TDDDžç5ô˜ÉdæóùûýN\ˆ8纮ëº.Ëòv»µ,KÅË墪ªeYßOƒÁ`8FQ´\.kµZÇ‹Åb2™H’äº.1"Úl6Š¢ì÷{†a0ÆF£Q¹\~½^»Ý{<×ëu6›Aà|>O§ÓV«ešf©T Óe¹X,¦“Ûív§ÓÉårq?ŸÏjµ € ‚Ðï÷xžçû¾ã8·ÛmÈ”‘L?IDATµZÇãûýÞëõ¾Ã9皦álÛN|9N§n·+ŠbbW*•õzýÃ)­rÎ]×Íçóõz=-ø ý§Ç!®¬’H¨IEND®B`‚././@LongLink0000000000000000000000000000015600000000000011567 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/docs/spring-webflow-reference/htmlsingle/images/callouts/18.svglibspring-webflow-2.0-java-2.0.9.RELEASE.orig/docs/spring-webflow-reference/htmlsingle/images/callou0000644000000000000000000000247311360615630027753 0ustar ]> ././@LongLink0000000000000000000000000000015600000000000011567 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/docs/spring-webflow-reference/htmlsingle/images/callouts/10.svglibspring-webflow-2.0-java-2.0.9.RELEASE.orig/docs/spring-webflow-reference/htmlsingle/images/callou0000644000000000000000000000202611360615630027745 0ustar ]> ././@LongLink0000000000000000000000000000015500000000000011566 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/docs/spring-webflow-reference/htmlsingle/images/callouts/9.pnglibspring-webflow-2.0-java-2.0.9.RELEASE.orig/docs/spring-webflow-reference/htmlsingle/images/callou0000644000000000000000000000054511360615630027751 0ustar ‰PNG  IHDR s;bKGDª#2IDATxÚŽ!„0 GFVb‘ÈJ,²¹WX‰ä È^Y¹’kTb++#³©É{“?/ù˜YÙ—y/j†é!ÀÚRj»”Ç+“~ “àöEœ#y@„§·öà·‘š!âî¦s².Ôg±þ…E±‡íÒëOÍr /¯óŒP8bÙÒûCtEXtSoftware@(#)ImageMagick 4.2.8 99/08/01 cristy@mystic.es.dupont.com‘º!¸*tEXtSignature34623e5e4d48310e409b280afe247602Ô14$tEXtPage12x12+0+0„m»}IEND®B`‚././@LongLink0000000000000000000000000000015500000000000011566 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/docs/spring-webflow-reference/htmlsingle/images/callouts/1.pnglibspring-webflow-2.0-java-2.0.9.RELEASE.orig/docs/spring-webflow-reference/htmlsingle/images/callou0000644000000000000000000000051111360615630027742 0ustar ‰PNG  IHDR s;bKGDª#2cIDATxÚUޱ À0¿¤ô.)½Bf£té6#d¬Á”H¢(ð'¤ÿ‡»ÍÑÚXæW¨¬ 9c±A€M-!d>°0(Ï* ?ðœ/Èc}ÜÖ®5u„‰ÆŒ:Àx,ìÁT´CtEXtSoftware@(#)ImageMagick 4.2.8 99/08/01 cristy@mystic.es.dupont.com‘º!¸*tEXtSignature58a072e070da22f6135cbd3e414546f9hj!ítEXtPage12x12+0+0„m»}IEND®B`‚././@LongLink0000000000000000000000000000015500000000000011566 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/docs/spring-webflow-reference/htmlsingle/images/callouts/1.svglibspring-webflow-2.0-java-2.0.9.RELEASE.orig/docs/spring-webflow-reference/htmlsingle/images/callou0000644000000000000000000000127711360615630027754 0ustar ]> ././@LongLink0000000000000000000000000000015600000000000011567 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/docs/spring-webflow-reference/htmlsingle/images/callouts/29.svglibspring-webflow-2.0-java-2.0.9.RELEASE.orig/docs/spring-webflow-reference/htmlsingle/images/callou0000644000000000000000000000260711360615630027752 0ustar ]> ././@LongLink0000000000000000000000000000015500000000000011566 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/docs/spring-webflow-reference/htmlsingle/images/callouts/4.pnglibspring-webflow-2.0-java-2.0.9.RELEASE.orig/docs/spring-webflow-reference/htmlsingle/images/callou0000644000000000000000000000053111360615630027744 0ustar ‰PNG  IHDR s;bKGDª#2sIDATxÚ!…0C#‘•Xdee¯P‰Ä"‘\£òËo+{%leåʰ!bç½ÙÌ$ûci 1 qá dCwC‚ôèmJVàÁ$‹Ë6ïhu•œTšj~<_­Â²ä¹|ËÀù™ó㣴 KªF¾ê6Ž[ê¼ÃCtEXtSoftware@(#)ImageMagick 4.2.8 99/08/01 cristy@mystic.es.dupont.com‘º!¸*tEXtSignature9f82fcac9e039cbdb72380a4591324f5€»øvtEXtPage12x12+0+0„m»}IEND®B`‚././@LongLink0000000000000000000000000000015600000000000011567 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/docs/spring-webflow-reference/htmlsingle/images/callouts/17.svglibspring-webflow-2.0-java-2.0.9.RELEASE.orig/docs/spring-webflow-reference/htmlsingle/images/callou0000644000000000000000000000154211360615630027747 0ustar ]> ././@LongLink0000000000000000000000000000015500000000000011566 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/docs/spring-webflow-reference/htmlsingle/images/callouts/5.pnglibspring-webflow-2.0-java-2.0.9.RELEASE.orig/docs/spring-webflow-reference/htmlsingle/images/callou0000644000000000000000000000053411360615630027747 0ustar ‰PNG  IHDR s;bKGDª#2vIDATxÚŽ¡Ä0  †ª—ðõ†~+_Bh  áýIlgvö’—ÅÏM‚áÖZmÖÃmã†Àwb$|SÜq$Ìñ^€%Ô)%¤•°ÞÔèõYP3ö]2­QÙjµ%—›õ|ç#[7/B_ûCtEXtSoftware@(#)ImageMagick 4.2.8 99/08/01 cristy@mystic.es.dupont.com‘º!¸*tEXtSignaturefe690463379eb25e562fcc8cc9b3c7e0ß²9žtEXtPage12x12+0+0„m»}IEND®B`‚././@LongLink0000000000000000000000000000015500000000000011566 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/docs/spring-webflow-reference/htmlsingle/images/callouts/8.pnglibspring-webflow-2.0-java-2.0.9.RELEASE.orig/docs/spring-webflow-reference/htmlsingle/images/callou0000644000000000000000000000054511360615630027751 0ustar ‰PNG  IHDR s;bKGDª#2IDATxÚŽ¡Ã0  –†v…¬Ð¼‚a` × 544T¥ é?Ý»/TõÜ—¸W[Б!Dغ…õ¹[`TÈ3Ð(”fñ•põçï¹g¿ˆcµÁÙ3Á1–Ø¿.0µ”>Џú_ê³ +U­9Æäïü£Ÿ9ºFbíCtEXtSoftware@(#)ImageMagick 4.2.8 99/08/01 cristy@mystic.es.dupont.com‘º!¸*tEXtSignature57be19505c03f92f3847f535e9b114e9Ù4kCtEXtPage12x12+0+0„m»}IEND®B`‚././@LongLink0000000000000000000000000000015500000000000011566 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/docs/spring-webflow-reference/htmlsingle/images/callouts/3.svglibspring-webflow-2.0-java-2.0.9.RELEASE.orig/docs/spring-webflow-reference/htmlsingle/images/callou0000644000000000000000000000205311360615630027745 0ustar ]> ././@LongLink0000000000000000000000000000015500000000000011566 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/docs/spring-webflow-reference/htmlsingle/images/callouts/3.giflibspring-webflow-2.0-java-2.0.9.RELEASE.orig/docs/spring-webflow-reference/htmlsingle/images/callou0000644000000000000000000000162211360615630027746 0ustar GIF89a çÿ  !!!"""###$$$%%%&&&'''((()))***+++,,,---...///000111222333444555666777888999:::;;;<<<===>>>???@@@AAABBBCCCDDDEEEFFFGGGHHHIIIJJJKKKLLLMMMNNNOOOPPPQQQRRRSSSTTTUUUVVVWWWXXXYYYZZZ[[[\\\]]]^^^___```aaabbbcccdddeeefffggghhhiiijjjkkklllmmmnnnooopppqqqrrrssstttuuuvvvwwwxxxyyyzzz{{{|||}}}~~~€€€‚‚‚ƒƒƒ„„„………†††‡‡‡ˆˆˆ‰‰‰ŠŠŠ‹‹‹ŒŒŒŽŽŽ‘‘‘’’’“““”””•••–––———˜˜˜™™™ššš›››œœœžžžŸŸŸ   ¡¡¡¢¢¢£££¤¤¤¥¥¥¦¦¦§§§¨¨¨©©©ªªª«««¬¬¬­­­®®®¯¯¯°°°±±±²²²³³³´´´µµµ¶¶¶···¸¸¸¹¹¹ººº»»»¼¼¼½½½¾¾¾¿¿¿ÀÀÀÁÁÁÂÂÂÃÃÃÄÄÄÅÅÅÆÆÆÇÇÇÈÈÈÉÉÉÊÊÊËËËÌÌÌÍÍÍÎÎÎÏÏÏÐÐÐÑÑÑÒÒÒÓÓÓÔÔÔÕÕÕÖÖÖ×××ØØØÙÙÙÚÚÚÛÛÛÜÜÜÝÝÝÞÞÞßßßàààáááâââãããäääåååæææçççèèèéééêêêëëëìììíííîîîïïïðððñññòòòóóóôôôõõõööö÷÷÷øøøùùùúúúûûûüüüýýýþþþÿÿÿ!ùþ, oý ¤”„œ*ŒAŽÄX‚7kÞœAèsÎ!€ðoÍGF +¦¨XòcŒˆ´:g &˜sŒ¹g²aJ-8«å2(£w1r¼#tÒC­îÝkq¢À• cZUˆrd J ;././@LongLink0000000000000000000000000000015500000000000011566 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/docs/spring-webflow-reference/htmlsingle/images/callouts/1.giflibspring-webflow-2.0-java-2.0.9.RELEASE.orig/docs/spring-webflow-reference/htmlsingle/images/callou0000644000000000000000000000157111360615630027751 0ustar GIF89a çÿ  !!!"""###$$$%%%&&&'''((()))***+++,,,---...///000111222333444555666777888999:::;;;<<<===>>>???@@@AAABBBCCCDDDEEEFFFGGGHHHIIIJJJKKKLLLMMMNNNOOOPPPQQQRRRSSSTTTUUUVVVWWWXXXYYYZZZ[[[\\\]]]^^^___```aaabbbcccdddeeefffggghhhiiijjjkkklllmmmnnnooopppqqqrrrssstttuuuvvvwwwxxxyyyzzz{{{|||}}}~~~€€€‚‚‚ƒƒƒ„„„………†††‡‡‡ˆˆˆ‰‰‰ŠŠŠ‹‹‹ŒŒŒŽŽŽ‘‘‘’’’“““”””•••–––———˜˜˜™™™ššš›››œœœžžžŸŸŸ   ¡¡¡¢¢¢£££¤¤¤¥¥¥¦¦¦§§§¨¨¨©©©ªªª«««¬¬¬­­­®®®¯¯¯°°°±±±²²²³³³´´´µµµ¶¶¶···¸¸¸¹¹¹ººº»»»¼¼¼½½½¾¾¾¿¿¿ÀÀÀÁÁÁÂÂÂÃÃÃÄÄÄÅÅÅÆÆÆÇÇÇÈÈÈÉÉÉÊÊÊËËËÌÌÌÍÍÍÎÎÎÏÏÏÐÐÐÑÑÑÒÒÒÓÓÓÔÔÔÕÕÕÖÖÖ×××ØØØÙÙÙÚÚÚÛÛÛÜÜÜÝÝÝÞÞÞßßßàààáááâââãããäääåååæææçççèèèéééêêêëëëìììíííîîîïïïðððñññòòòóóóôôôõõõööö÷÷÷øøøùùùúúúûûûüüüýýýþþþÿÿÿ!ùÿ, Vÿ ¤”„œ*Œ‚ c,l€‘3Š5TrîÞEŠŒR,õ1"Š8•tx’¢J”D6|‰Q£Ë•ŒþÉdT £Bˆ(HTø/$9() ;././@LongLink0000000000000000000000000000015500000000000011566 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/docs/spring-webflow-reference/htmlsingle/images/callouts/7.giflibspring-webflow-2.0-java-2.0.9.RELEASE.orig/docs/spring-webflow-reference/htmlsingle/images/callou0000644000000000000000000000161311360615630027746 0ustar GIF89a çÿ  !!!"""###$$$%%%&&&'''((()))***+++,,,---...///000111222333444555666777888999:::;;;<<<===>>>???@@@AAABBBCCCDDDEEEFFFGGGHHHIIIJJJKKKLLLMMMNNNOOOPPPQQQRRRSSSTTTUUUVVVWWWXXXYYYZZZ[[[\\\]]]^^^___```aaabbbcccdddeeefffggghhhiiijjjkkklllmmmnnnooopppqqqrrrssstttuuuvvvwwwxxxyyyzzz{{{|||}}}~~~€€€‚‚‚ƒƒƒ„„„………†††‡‡‡ˆˆˆ‰‰‰ŠŠŠ‹‹‹ŒŒŒŽŽŽ‘‘‘’’’“““”””•••–––———˜˜˜™™™ššš›››œœœžžžŸŸŸ   ¡¡¡¢¢¢£££¤¤¤¥¥¥¦¦¦§§§¨¨¨©©©ªªª«««¬¬¬­­­®®®¯¯¯°°°±±±²²²³³³´´´µµµ¶¶¶···¸¸¸¹¹¹ººº»»»¼¼¼½½½¾¾¾¿¿¿ÀÀÀÁÁÁÂÂÂÃÃÃÄÄÄÅÅÅÆÆÆÇÇÇÈÈÈÉÉÉÊÊÊËËËÌÌÌÍÍÍÎÎÎÏÏÏÐÐÐÑÑÑÒÒÒÓÓÓÔÔÔÕÕÕÖÖÖ×××ØØØÙÙÙÚÚÚÛÛÛÜÜÜÝÝÝÞÞÞßßßàààáááâââãããäääåååæææçççèèèéééêêêëëëìììíííîîîïïïðððñññòòòóóóôôôõõõööö÷÷÷øøøùùùúúúûûûüüüýýýþþþÿÿÿ!ùþ, hý ¬%%E %­*”CCr(Ô Õ¿‹ÿ¬ˆá¯€1œ£€Iµ<~Ì$)÷Z~D ó£µZ.œÌñOŠË8?2º‡À%#J>Ö ú1…B!.›*È))Ž ;././@LongLink0000000000000000000000000000015500000000000011566 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/docs/spring-webflow-reference/htmlsingle/images/callouts/4.svglibspring-webflow-2.0-java-2.0.9.RELEASE.orig/docs/spring-webflow-reference/htmlsingle/images/callou0000644000000000000000000000141711360615630027750 0ustar ]> ././@LongLink0000000000000000000000000000015500000000000011566 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/docs/spring-webflow-reference/htmlsingle/images/callouts/3.pnglibspring-webflow-2.0-java-2.0.9.RELEASE.orig/docs/spring-webflow-reference/htmlsingle/images/callou0000644000000000000000000000053611360615630027751 0ustar ‰PNG  IHDR s;bKGDª#2xIDATxÚ%N«Ã@ 4ô†^¥´0°+ ì »F``¨a ¡+§&–ÞÓU¹¹ª² qXÒ çqî K ࢵ‚Ð]pêÁ›qðËŸø3×&”=èÛ¿-#—ùõž™S:ºbÁmìRÎ&jçüQ¸5cüëLCtEXtSoftware@(#)ImageMagick 4.2.8 99/08/01 cristy@mystic.es.dupont.com‘º!¸*tEXtSignature80bbda2726ddace8ab8a01f59de2ebdbýutEXtPage12x12+0+0„m»}IEND®B`‚././@LongLink0000000000000000000000000000015500000000000011566 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/docs/spring-webflow-reference/htmlsingle/images/callouts/2.pnglibspring-webflow-2.0-java-2.0.9.RELEASE.orig/docs/spring-webflow-reference/htmlsingle/images/callou0000644000000000000000000000054111360615630027745 0ustar ‰PNG  IHDR s;bKGDª#2{IDATxÚŽ¡Ã0 D?44,5,ô ]£°°Ð+†f„¬ÐK UÉG¤{º÷u¸ÛÖkí»¹ãSàÞ@¦cB»æïSCá¸hS‰øž¤{ë2y–4Cm¬s^ö¹% Ðû D¯§+O£ŽJ)}‹:TÙ5`Ÿ/£CtEXtSoftware@(#)ImageMagick 4.2.8 99/08/01 cristy@mystic.es.dupont.com‘º!¸*tEXtSignature80eae529c94a7f47deccfada28acb9dfåo± tEXtPage12x12+0+0„m»}IEND®B`‚././@LongLink0000000000000000000000000000015500000000000011566 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/docs/spring-webflow-reference/htmlsingle/images/callouts/8.svglibspring-webflow-2.0-java-2.0.9.RELEASE.orig/docs/spring-webflow-reference/htmlsingle/images/callou0000644000000000000000000000230011360615630027740 0ustar ]> ././@LongLink0000000000000000000000000000015600000000000011567 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/docs/spring-webflow-reference/htmlsingle/images/callouts/12.giflibspring-webflow-2.0-java-2.0.9.RELEASE.orig/docs/spring-webflow-reference/htmlsingle/images/callou0000644000000000000000000000032211360615630027742 0ustar GIF89a „ +++222:::DDDOOOSSS^^^cccmmmttt‚‚‚ŒŒŒ“““ššš¥¥¥³³³»»»ÄÄÄÌÌÌÛÛÛãããòòòþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ!ù, Oà'ZM²Hbú9@ÛêP eL’þD‰ ÀòÁ 4@ "<Š-šÀb¢€ÑLšÑp è‚ áj .ªOä0(40ñ¼~ÿ ;././@LongLink0000000000000000000000000000015600000000000011567 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/docs/spring-webflow-reference/htmlsingle/images/callouts/20.svglibspring-webflow-2.0-java-2.0.9.RELEASE.orig/docs/spring-webflow-reference/htmlsingle/images/callou0000644000000000000000000000234111360615630027745 0ustar ]> ././@LongLink0000000000000000000000000000015600000000000011567 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/docs/spring-webflow-reference/htmlsingle/images/callouts/12.pnglibspring-webflow-2.0-java-2.0.9.RELEASE.orig/docs/spring-webflow-reference/htmlsingle/images/callou0000644000000000000000000000115111360615630027743 0ustar ‰PNG  IHDR Ù˰ pHYsttÞfxtIMEÒ.UF¡/tEXtAuthor©®ÌH tEXtDescription !# tEXtCopyright¬Ì:tEXtCreation time5÷ tEXtSoftware]pÿ: tEXtDisclaimer·À´tEXtWarningÀæ‡tEXtSourceõÿƒëtEXtCommentöÌ–¿tEXtTitle¨îÒ'IDATxœ…!«Â`…ÏÆa`R†,/É+V5¶¡¬ì¬ 3,ü+KV-¶™-³òeƒÅmç†ÝëåÞpïSÏyyB€óùœeYQÝnw<{ž×jµš$IFQ„ŸŒF£ÇãѤ ¹ÝnÛíöápX,Ãáðv»=ŸÏù|îûþg©®k˲N§“”2‚8Ž×ëµïû×ë@žç$!„àºîn· ‚@§Ó9išX.—$5)esÑLÑu}¿ßkšæy€×ë@ ½^ï½7Š"Çq„I’4($W«U†Óéô~¿†a€ªª.—Kžçªª‚dY–³Ùì—'ð^E(IDAT‚~¿_Å·’RÊÍf3™LLÓ´m; C!¿PÞÆÿ@ý·àk«uˆO4ºIEND®B`‚././@LongLink0000000000000000000000000000015500000000000011566 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/docs/spring-webflow-reference/htmlsingle/images/callouts/8.giflibspring-webflow-2.0-java-2.0.9.RELEASE.orig/docs/spring-webflow-reference/htmlsingle/images/callou0000644000000000000000000000162611360615630027752 0ustar GIF89a çÿ  !!!"""###$$$%%%&&&'''((()))***+++,,,---...///000111222333444555666777888999:::;;;<<<===>>>???@@@AAABBBCCCDDDEEEFFFGGGHHHIIIJJJKKKLLLMMMNNNOOOPPPQQQRRRSSSTTTUUUVVVWWWXXXYYYZZZ[[[\\\]]]^^^___```aaabbbcccdddeeefffggghhhiiijjjkkklllmmmnnnooopppqqqrrrssstttuuuvvvwwwxxxyyyzzz{{{|||}}}~~~€€€‚‚‚ƒƒƒ„„„………†††‡‡‡ˆˆˆ‰‰‰ŠŠŠ‹‹‹ŒŒŒŽŽŽ‘‘‘’’’“““”””•••–––———˜˜˜™™™ššš›››œœœžžžŸŸŸ   ¡¡¡¢¢¢£££¤¤¤¥¥¥¦¦¦§§§¨¨¨©©©ªªª«««¬¬¬­­­®®®¯¯¯°°°±±±²²²³³³´´´µµµ¶¶¶···¸¸¸¹¹¹ººº»»»¼¼¼½½½¾¾¾¿¿¿ÀÀÀÁÁÁÂÂÂÃÃÃÄÄÄÅÅÅÆÆÆÇÇÇÈÈÈÉÉÉÊÊÊËËËÌÌÌÍÍÍÎÎÎÏÏÏÐÐÐÑÑÑÒÒÒÓÓÓÔÔÔÕÕÕÖÖÖ×××ØØØÙÙÙÚÚÚÛÛÛÜÜÜÝÝÝÞÞÞßßßàààáááâââãããäääåååæææçççèèèéééêêêëëëìììíííîîîïïïðððñññòòòóóóôôôõõõööö÷÷÷øøøùùùúúúûûûüüüýýýþþþÿÿÿ!ùþ, sý l%%E)¥*T„ s(Ò°”7k½ ˆá¯TC%÷4ž›ÓCBB"x·¦a Ô:wAC0h¹'E Ë›'KõjØjèFæ¼3xŽPIP:÷Ž’MŽOÆ QaG%!BI(0 ;././@LongLink0000000000000000000000000000015600000000000011567 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/docs/spring-webflow-reference/htmlsingle/images/callouts/15.giflibspring-webflow-2.0-java-2.0.9.RELEASE.orig/docs/spring-webflow-reference/htmlsingle/images/callou0000644000000000000000000000032211360615630027742 0ustar GIF89a „ 333999AAANNNTTTeeekkksss}}}ƒƒƒŒŒŒ“““™™™¨¨¨´´´¼¼¼ÂÂÂÔÔÔÙÙÙàààíííôôôþþþÿÿÿÿÿÿÿÿÿÿÿÿ!ù, Oà'~–4èU,à ß€$@Ó,¯¸,4là" 4(ÄFq‰X‘‡ÁQÐ" ʨ¬ÀX&—ÅpDhµr" ¢5ˆÀFË} ;././@LongLink0000000000000000000000000000015600000000000011567 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/docs/spring-webflow-reference/htmlsingle/images/callouts/24.svglibspring-webflow-2.0-java-2.0.9.RELEASE.orig/docs/spring-webflow-reference/htmlsingle/images/callou0000644000000000000000000000215111360615630027744 0ustar ]> ././@LongLink0000000000000000000000000000015600000000000011567 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/docs/spring-webflow-reference/htmlsingle/images/callouts/10.giflibspring-webflow-2.0-java-2.0.9.RELEASE.orig/docs/spring-webflow-reference/htmlsingle/images/callou0000644000000000000000000000164111360615630027747 0ustar GIF89a çÿ  !!!"""###$$$%%%&&&'''((()))***+++,,,---...///000111222333444555666777888999:::;;;<<<===>>>???@@@AAABBBCCCDDDEEEFFFGGGHHHIIIJJJKKKLLLMMMNNNOOOPPPQQQRRRSSSTTTUUUVVVWWWXXXYYYZZZ[[[\\\]]]^^^___```aaabbbcccdddeeefffggghhhiiijjjkkklllmmmnnnooopppqqqrrrssstttuuuvvvwwwxxxyyyzzz{{{|||}}}~~~€€€‚‚‚ƒƒƒ„„„………†††‡‡‡ˆˆˆ‰‰‰ŠŠŠ‹‹‹ŒŒŒŽŽŽ‘‘‘’’’“““”””•••–––———˜˜˜™™™ššš›››œœœžžžŸŸŸ   ¡¡¡¢¢¢£££¤¤¤¥¥¥¦¦¦§§§¨¨¨©©©ªªª«««¬¬¬­­­®®®¯¯¯°°°±±±²²²³³³´´´µµµ¶¶¶···¸¸¸¹¹¹ººº»»»¼¼¼½½½¾¾¾¿¿¿ÀÀÀÁÁÁÂÂÂÃÃÃÄÄÄÅÅÅÆÆÆÇÇÇÈÈÈÉÉÉÊÊÊËËËÌÌÌÍÍÍÎÎÎÏÏÏÐÐÐÑÑÑÒÒÒÓÓÓÔÔÔÕÕÕÖÖÖ×××ØØØÙÙÙÚÚÚÛÛÛÜÜÜÝÝÝÞÞÞßßßàààáááâââãããäääåååæææçççèèèéééêêêëëëìììíííîîîïïïðððñññòòòóóóôôôõõõööö÷÷÷øøøùùùúúúûûûüüüýýýþþþÿÿÿ!ùþ, ~ý 䔄Œ*Ì) ÄXˆ V­Þz“’Â_©ïþY¬`Ž7Œ”Kp"!;././@LongLink0000000000000000000000000000015600000000000011567 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/docs/spring-webflow-reference/htmlsingle/images/callouts/26.svglibspring-webflow-2.0-java-2.0.9.RELEASE.orig/docs/spring-webflow-reference/htmlsingle/images/callou0000644000000000000000000000266311360615630027754 0ustar ]> ././@LongLink0000000000000000000000000000015500000000000011566 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/docs/spring-webflow-reference/htmlsingle/images/callouts/4.giflibspring-webflow-2.0-java-2.0.9.RELEASE.orig/docs/spring-webflow-reference/htmlsingle/images/callou0000644000000000000000000000161311360615630027746 0ustar GIF89a çÿ  !!!"""###$$$%%%&&&'''((()))***+++,,,---...///000111222333444555666777888999:::;;;<<<===>>>???@@@AAABBBCCCDDDEEEFFFGGGHHHIIIJJJKKKLLLMMMNNNOOOPPPQQQRRRSSSTTTUUUVVVWWWXXXYYYZZZ[[[\\\]]]^^^___```aaabbbcccdddeeefffggghhhiiijjjkkklllmmmnnnooopppqqqrrrssstttuuuvvvwwwxxxyyyzzz{{{|||}}}~~~€€€‚‚‚ƒƒƒ„„„………†††‡‡‡ˆˆˆ‰‰‰ŠŠŠ‹‹‹ŒŒŒŽŽŽ‘‘‘’’’“““”””•••–––———˜˜˜™™™ššš›››œœœžžžŸŸŸ   ¡¡¡¢¢¢£££¤¤¤¥¥¥¦¦¦§§§¨¨¨©©©ªªª«««¬¬¬­­­®®®¯¯¯°°°±±±²²²³³³´´´µµµ¶¶¶···¸¸¸¹¹¹ººº»»»¼¼¼½½½¾¾¾¿¿¿ÀÀÀÁÁÁÂÂÂÃÃÃÄÄÄÅÅÅÆÆÆÇÇÇÈÈÈÉÉÉÊÊÊËËËÌÌÌÍÍÍÎÎÎÏÏÏÐÐÐÑÑÑÒÒÒÓÓÓÔÔÔÕÕÕÖÖÖ×××ØØØÙÙÙÚÚÚÛÛÛÜÜÜÝÝÝÞÞÞßßßàààáááâââãããäääåååæææçççèèèéééêêêëëëìììíííîîîïïïðððñññòòòóóóôôôõõõööö÷÷÷øøøùùùúúúûûûüüüýýýþþþÿÿÿ!ùþ, hý l%%E %¥*T a r,l@É¿9 %¶¢áÜEŠ”6lUêƆ104Ôr½“¨ a2Å=F*c2ó¯gÏR(Rð’"#9†z[ãPaÒ¡R(È)1Ž ;././@LongLink0000000000000000000000000000015500000000000011566 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/docs/spring-webflow-reference/htmlsingle/images/callouts/7.svglibspring-webflow-2.0-java-2.0.9.RELEASE.orig/docs/spring-webflow-reference/htmlsingle/images/callou0000644000000000000000000000134211360615630027745 0ustar ]> ././@LongLink0000000000000000000000000000015600000000000011567 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/docs/spring-webflow-reference/htmlsingle/images/callouts/21.svglibspring-webflow-2.0-java-2.0.9.RELEASE.orig/docs/spring-webflow-reference/htmlsingle/images/callou0000644000000000000000000000203511360615630027745 0ustar ]> ././@LongLink0000000000000000000000000000015600000000000011567 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/docs/spring-webflow-reference/htmlsingle/images/callouts/14.pnglibspring-webflow-2.0-java-2.0.9.RELEASE.orig/docs/spring-webflow-reference/htmlsingle/images/callou0000644000000000000000000000063311360615630027747 0ustar ‰PNG  IHDR Ù˰bKGDÿÿÿ ½§“ pHYsssŒ"¹tIMEÒ ¨xœ8(IDATxœ}=ªÂ@…O2…ˆ¤Ð¬\ÁÂìÀÙ‚ˆÛ°ÄX¤Ð"¸†Y€;@Æ)l”T!H!„ûŠø¢ðà}ååÜË=ŸCD‘µÖZ;9ç­V DDDqÏf3Çqê¡ïû§Ó‰~qXk¥”ÓéTQ‡¤”Çãñp8|.)¥¶ÛmUUËåçüõz­×ë~¿Ÿç9¹EQh­ƒ 0Æh·ÛQEàù|j­¸Ç£,ËÅb‘¦)€Ýn×étn·›¢ÛíÞïwîx<þ.’çùù|ö¡øƒŠ§’q~IEND®B`‚././@LongLink0000000000000000000000000000015600000000000011567 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/docs/spring-webflow-reference/htmlsingle/images/callouts/15.svglibspring-webflow-2.0-java-2.0.9.RELEASE.orig/docs/spring-webflow-reference/htmlsingle/images/callou0000644000000000000000000000207611360615630027752 0ustar ]> ././@LongLink0000000000000000000000000000015500000000000011566 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/docs/spring-webflow-reference/htmlsingle/images/callouts/6.svglibspring-webflow-2.0-java-2.0.9.RELEASE.orig/docs/spring-webflow-reference/htmlsingle/images/callou0000644000000000000000000000213611360615630027747 0ustar ]> ././@LongLink0000000000000000000000000000015500000000000011566 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/docs/spring-webflow-reference/htmlsingle/images/callouts/6.pnglibspring-webflow-2.0-java-2.0.9.RELEASE.orig/docs/spring-webflow-reference/htmlsingle/images/callou0000644000000000000000000000054311360615630027747 0ustar ‰PNG  IHDR s;bKGDª#2}IDATxÚ!Ã0  š ú ýFa¾PXXj˜'”ú ¡†‚‚ªÌnçnöˆˆó©ºµ „oPêHÈÜl\BuNØ­«ð!‹«i`¥À°ÞûdÂÝÛ'äì× ¿ç,ÃË–eøÔ¸g¡NL©¤Lï< ÿV‘õðˆ?³s8ê ¸YCtEXtSoftware@(#)ImageMagick 4.2.8 99/08/01 cristy@mystic.es.dupont.com‘º!¸*tEXtSignatured25d7176d67a038afc1c56558e3dfb1aýõµtEXtPage12x12+0+0„m»}IEND®B`‚././@LongLink0000000000000000000000000000015600000000000011567 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/docs/spring-webflow-reference/htmlsingle/images/callouts/13.giflibspring-webflow-2.0-java-2.0.9.RELEASE.orig/docs/spring-webflow-reference/htmlsingle/images/callou0000644000000000000000000000032111360615630027741 0ustar GIF89a „ ///555<< ]> ././@LongLink0000000000000000000000000000015600000000000011567 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/docs/spring-webflow-reference/htmlsingle/images/callouts/13.pnglibspring-webflow-2.0-java-2.0.9.RELEASE.orig/docs/spring-webflow-reference/htmlsingle/images/callou0000644000000000000000000000115711360615630027751 0ustar ‰PNG  IHDR Ù˰ pHYsttÞfxtIMEÒ.1ã ŒtEXtAuthor©®ÌH tEXtDescription !# tEXtCopyright¬Ì:tEXtCreation time5÷ tEXtSoftware]pÿ: tEXtDisclaimer·À´tEXtWarningÀæ‡tEXtSourceõÿƒëtEXtCommentöÌ–¿tEXtTitle¨îÒ'IDATxœ…!‚p†_ð‚Å9”¯ÌÍH┢3±‰lŒïÃFâ#Ht&EÆþéït÷»ÀÝÜ]¸{òÞçˆeY–¦iUUŠ¢Ìf3Û¶A@ 5M³^¯ñ“ÕjÕ4 ˆ(Š"Y–‡ƒã8“É„1Æ›N§a¶’À9‡ÇãQQ”Åbaš&ç\UÕ^¯çyÞét’$IÌóüv»¹®[–%€ ƒÁn·«ëú~¿ï÷{âãñçy;Ŷí$I–˥뺞Ï'€Ã0:Îëõj%ÇqÆã1c¬( Qu]ÿªÛn·æóùh4êv»žçù¾ßï÷7›Í»îhª§.IDAT|>kšöëMÓ8ço‰ˆ®×kÇ–e©ªjYVÇ—Ë…¾ÚÇÿFü×ð ‘÷¬ÊäC3IEND®B`‚././@LongLink0000000000000000000000000000015600000000000011567 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/docs/spring-webflow-reference/htmlsingle/images/callouts/22.svglibspring-webflow-2.0-java-2.0.9.RELEASE.orig/docs/spring-webflow-reference/htmlsingle/images/callou0000644000000000000000000000237211360615630027751 0ustar ]> ././@LongLink0000000000000000000000000000014700000000000011567 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/docs/spring-webflow-reference/htmlsingle/images/prev.giflibspring-webflow-2.0-java-2.0.9.RELEASE.orig/docs/spring-webflow-reference/htmlsingle/images/prev.g0000644000000000000000000000213611360615630027671 0ustar GIF87a&'÷€€€€€€€€€ÀÀÀÀÜÀ¦Êððûÿ@€€€ÿ@@ðʦÿ€¤  €@€ÿ€@@€ÿûð  ¤€€€ÿÿÿÿÿÿÿÿÿÿÿÿ,&'þH° Áƒ*\Ȱ¡Ã‡#@±¢Å‹3R<àŸÇ CŠùƒHª\YÒ$JâsY€Ç˜ñÑ$À#NƒøvNôø³ >¡xŒ¹‘ >¤xŒ¸ñ_A|Px|ØôÀ¿‚ø²zlØUà¿‚øÄþ[Xvà¿‚øÔ&lKð_A|rQXø¯ ¾¼4üW`º ÿÄøÄñøÏá¿‚øüÇð_A|€ þSø¯ >Àÿ!üW`…ÿ þ+ˆ0ÃÿÄØá?ÿ â ÑcA|€‹ÀX9>ÀÎGð>|øðáÇ>|øðDáÇ>|øðáÇ>|ø²âÇ>|øðáÇ>|øàƒ>øàƒ>øàƒ>øàƒTQi$ᄈ)§œrÊÅ;././@LongLink0000000000000000000000000000015200000000000011563 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/docs/spring-webflow-reference/htmlsingle/images/s2-logo.pnglibspring-webflow-2.0-java-2.0.9.RELEASE.orig/docs/spring-webflow-reference/htmlsingle/images/s2-log0000644000000000000000000002263411360615630027600 0ustar ‰PNG  IHDRÕBOA/ pHYs  šœ cHRMz%€ƒùÿ€éu0ê`:˜o’_ÅF%!IDATxÚì]g|TÅ×>·íÞmémIB„4B $z“^ R¤Y(J³"éJÁ‚ŠÒ;Ò¤7$$ôƦn¶ß2ï‡]R7aw ï?ç—/\îÎÎÎçxÍÜÙy%{]d}ZÉ—Ié&5\Rrž,þ~Yj^ZX󠨉ú{øüïâïaÆ£“·Î¼zìVÊ]^:Mp«ˆ„m×*¡É•&å.|ª<&¢š¸/t·Ú FŽçœx{Þñ¯5\ˆ¿ºéÈöËñ× 2)„`^ÌŒªoR„CˆçZ’°Ë+Ù—”»ÐÀ>õršŒaD€(/(øªÿxÄÿváÀŽ?œ‰»­ y€Ï‚^»`âG˧|ŒaXO阜[ObX®ëé4¡¥ûâ&þÏŠíúïèÍS+v¯¹XÅ ’>C% ŒaÁ¤VLùÄìÊ?X¾ÇTNñ. ðîbØ?ÇD"€Ü¢¼Beqqy ÃÀÀp©½XæéÒL,Õcéx„°ç,K$ )k{¥g BJPÿ;,ÇbNà¸%ŸåxžG|ý]EH‚¨­#lEY‘Z§.Q•ÕßšHH·òlÑ ü%e§,ùiÅoçöË€€ZR}0´sǽ_øÒ2 ·>C†ctvÉOÐÒãã¿v–ùëÑýWŽÜIŽË(Ê{ZªP—£ „');GG©½«—ŸÜoXäK1݆‰kq¹+_üê1¬^Ž—GÈ^,ñóðܱo·ÖÑ²Š•Y‡\M¸¹ò÷õŠR…½Ô~nÌŒþ½k¬–'yi‡¯¸œpãi‰ãØ®m»-¿@@ àØÍSöo*×i]ìgx«_»ž•]ݳþø•£õw!D„‡£{ÿÐ!QýÃ|‚­Â¢e®&\ßåØƒ'óË ËµªBe†ÕGª´ñ»¶æ¤íöwÇ©_m-(ÈZµ"hÕƒ»Øûñ4%4¾uiН \„Uã}xž×û¹½çã2íïß«ÇÖìÝp5ñ¯U ( À ¨:Ü<<,<Õ®U»­ó6v lWµ±+ÞØ}ð; …õ:5<ÚÇÃwòKãfyÝÍÁÅì»Eå%]ߘh!èõ^-Z_[sÒË¥™ñÏܽðõ-'âÎÔJ`ÀpŒá›…Ûg}=­ 3úÝþùO’€‚NïÜþêš“î®ÆÏŽ[ù毶?¿«ÏE‘´t`û^ï¾2»gxK†ôðõ“«~[såá dÐB@’€á€õ!ª]‹ð;›.Ù¢ÿʵªy›?üîø÷b™9êÅ —û|ýö—fÁ—SòKFáf§±š¤#Ža‚tÅ‘ÀÛÍnP£#O¥UÏÿöã͇·ÇP"I¯âàM'Bq 7Ç­xóâWÇäNî¯)!ˆh Å–Yz”‘—¶tÛâ=¬|céÈþfÖd~ú“¼ ÙA-ÉNO¸ûø—K³ìÂÜ¿[²ûü^V«¡(!Tj2õ…Wg}=1óQ~ΰw ¡èIVrRVJþ¬ë* –cŽ\þõÏ}ó_™]ñæýô‡ëöo¡¨r=´N®ŸÿæÀ‰u…ùG®ŸÌÍO¯ õù¥ê²WW¼‘ô\ðÃtlçnÎTå•üÆòå2ÌF²¼&µà 7»β^YÅ;“ó—!ÄØ6æsÓcÀhÝaØ‚Ñskƒ¯†8Iú¶ë9ºûˆç€ïaö9ERÑÁ‘»?ÜþÓÂ펮ÀèŸÑ_’»®ýtö·z³$< ór¿±WÖ^õÆÒ¯Jš«%8†ÛKì¦ôÿ뢩= ¾ÂÅ4¨cßY£Þ©T¤ 1+årÂúfÍ ûdÒ¢%bÿlW»†D)0©@‚,,Ê+ÇË 7‹‹ò+Ù­zlßWc¢7ðÍã/ãiÖûß~ ¼^ñxN(µŸØwLÿÑ<¼6Ú–™ž–ï$Àñ¢òb3#Éäð6t ÈüÒ}NÒ.ÒŒåÕ Vq¼ÆªFB}ƒ#C¢@Sþ¬QœáØ-û¿é0»w̧¯­?¸õìÝ‹éYÿÀ¼ºÚ;ï<*Š“ÿ$?£.Ë+–96i1Žÿ ¥éÎ2'Z@W⬊é‹ÏHª¤H9ÎõYtHdÿÑLTŸž°ùèëHm‚ŒOK`X†ªžwgy ² ‚2mœ-tD*ÊN8­ÔÄå•üîå<ÙòFÄBѲ‰ ‡?¾¯V•šÖN€HRV^rèü¾Cg£ìœ\훹4 ó îвMtpds7/g;§¿cj#Ûï@<À€ ó‹ Ž­kèÑ3Üïß)έË]Óô¥ªRST<çïá+Šÿüm>ºC[ªx~Ì[ ™É¹Åù>nÞÕ=°fV:ëçxUaù9Wiß§eÇ0 #²K~p³" ­ˆ!ú´íñóÂío~5C¡ÈZbAœ0f¥ƒ>· 377íÖý+ß)ñ ‰ÖiÀШ;µÞ®ž ‘ÏNŽ)‹Ëµ*'©C-ü1ƒ#_‚ÿ˜ðˆg9®ª»ßÌɽQZ®©ä³9¯Ÿ¨ÈÏ[d0\­,:tíDÇA‹ú«!êëF«®(7!厇a”Ö]X~ÚÚv†wxú«cÃûŒ&I4JSyÑÄPB Å¦?’Hx¿}ß71±c»½7ðtÜ…ÆœBž7iÕVA¼ÜÑþ{R=€k¯œFÁßé¸óyY©F’ ˆ0ÿPà8Kz·÷ÊCuZA&j‹c”­&˜Ô³œRF‡ñȾ8†w úvîúï~M„ÉÖ`ðü_ÉqÄW§d^I¸ù <)±‹z±ð×Ú/*BIœ()}z¥¾ŽMøKÌzd0Ö3òÈNbïî読]ÜV¿Ðâs×Oì»RMaxØ üŸÅÖ!E*ž× I¼‘z&—· ÍÊè1á-Ú+íH*»0—a ¢Â:eë‰4e SÇù¸{ן6ýJÏðn$-1…k8Îëu»Îíy¾ãHRAXŠ?^û,ÌAA )¡m}]³³¾JÔ" ]<&ðÖ†sœŠáË…”[E…Gz€¿1{¦ÑiJÕÊʵˆ")ó$AææÄ§'Ößà­”»ÛmR`Òé:Ík½GÓ/Ô)UàãæÝ¶ExÕBžÃ—ýX!@jî“üÂüzL(^ƒÆ«sÛ(BÑ­×_?YõY3‡1R:Äz/Cˆ¹JÙ:¯7»0÷ÀåÃ\-U—=÷e†c—ýòÕãŒD ž%rXÆÇÍ‹4Ë•TQ‰bôg“î<¾_Wƒ²S'¯š^V^b£·wõÝ}¼hB „cºŽ«D†M[7oýÁ­J²öû–ÙwùHÿFeæ§AYÿVØfà­AkKù1†ó<÷åÞƒ#_ªØH‹ã´§ãkI¹ ØÆ?M+#îñý˜¥2Ò€¶ îЧm÷®¡:‡DVlÒ©T{zí·Ïm9ºãÔ“•\RÐ-,ºn#Hzßoþ°ÅãçO~i¼c•ªtŽçö]>²h{ìã¬G@KÁ¸Ïà{}Ф`ï@xeRßW×Úš“ûÄ”Ì$)^=wýœŸÎþ:8r@¨O‡“»‹sæÓ¬¤ì”c×Ož¹uª¿Š þH’ÂC€Ãʵª’òÒæn^9©Ö«@úVüÕïOÿ:sÈÔÊ@XÖ/Gô“J—ˆcÖš–åÊŸm’@$a‡Y–ÓC-û嫌ÇÀÎ ÝMºu7þêZ©ƒ£ÄNî"ó vØ#ž Ë+.¸•—Wœ´êjÛ™ Ú¿°ûÖ«$ÅÊâw¿™¿zÿ7ƒ"Ã|ƒE´(13ùæ£Û é À²&ð€VÓ2°Ýü—gÁ‹)®.ŸŒ{Ú—Ó+ £òöÛ·ã¯H*¤„BJ ÑkY­xÌÖxWg׫ᯅÜ÷Þ“xcGêò"e‰¿‡Ï%Þ:_þöÕ1N2GÓ7vžŽã’r?¶Æ~" £# lÑ7@À )¹…ù¶£*ˆcB/Ç×0ŒD–"फÎÍrJ“'Šx{‘¥ÌŽaK^[ÑhÊc¡zÝGN }dx—?¾<úÎÐ7êG^wà¼ÑsÀ ¶JˆcA­léú{ìÏãzŽ4‹¡j¥ 8nùaVJ&}Àó –Êjl–¨Àâ±úwgVUåÍk£VB‹ü`óŠwV¹;»ƒZ  Œ+¡âe@U&IgzGJ‹7‘*އùÕ‰¿ÐæAmý[ƒ±†€¢.?¼áîè&qrÛ’}u;åÞ¥ת>s‘õ±·E¼…¢Çr}Ë•àÌ7øÆÝKuퟫWÿ|yéá'{µéVÅ&’r‡‘¥ê¿,ó" †+aØÀH£ñ ý%BëöãH„âq=Gë9ªHYœ˜õèZâ­GÙ©ù%…Ê£n¦ÒYæØ¢™DË6ƒ#}ܽ)‹¬±…郧 ë<èØ?Žß:]PT çX‰@èéêÕ5$jhçÍ]½êiÁÓYþõÌ•kölPtRàí3ü,>Ã4@î»qÆ—›nQ1©~ï•9ÍÝ*¿ë­“²Ùçnÿ â²`ôœç6(wòØ0cŦCߪõ©HúÞ˳<ê®óó—ûÆŽŸ?ÿåY%ê²ôüL£Ç#pÜ_î+I$ö0yõ;œFiª%e˜ˆ–mküºšçe)r:Íí—›Ÿtš/¦/×êµËv.Ú¦b ½¶S›îgW¨z¢™-ŠK«e²ñ燆<¯7:|¯ ”Çz:NhWšåXcM%I$a©É›¼úíŽî0ª¢×†¶ßr¹zÐÃë ‘ÐjzY£×Ösî›ÍŸ5Ââ¹'»5bg*$!óQÔì>*M¹Iy©ËÖ¾ûõÜÓª2¸5‰ioWÏÑCL&ñ§ãÎ÷ ï‘t4I¥d”¨J«y-¤³½8²tBˆ1‚+xºÊú7V(G$-Ò¡åà³ÌéÄm4d¾ëù,M ­_;S!î\¦*U˜ÀÇì]½ûGô®‘>0“™3ÃÁÅ8„¢ 7qœèÞM³A(ÊŠj_ …á˜À2&{æ 䣤+4É‹ Ë_wøâÊÓ·ÃK½ƒ¼kVý˜Á_‹f~‹Ç¿Œ0\Sª¸rwBïÑÕ/VðwȬ‚ ü œ¶¼¨„G‘ ¹ÜaLÓ¼þ÷…áØ…;–.úö )SFñ„HòÁËï`µ¸_ó‰áYÃÞì5´*Ò?œÙýRûž^Þ-+KB,žs³w©½QJ@:c`y]>Bˆmîü†€tnšÝÿ²¨´êÃ×Oô[0|åO+Lt Q´ê±½G×8ɳ>ü HÁÆ™+år_`ÙøÔ{÷Ó掘^o´p-胛·ª½£Üò2Ž×¸ÈúÉ^nšàÿ¬”ªÊíø´Û»†<æÂís U‚Ï kîôÅdóç+×YÒ¼Õö÷6I¥ .ßrüûI}Çøú‡YA„ SP‡Ú„*Ë—#°ˆS䑞¦¼[z|dó)X+565Ý^ %ªÒaK',ß±änÒ- ˆj‡R² Ž«ßúÜÛÕÓ:üÀ Ž}øp»ØE~òâÁ”Ü'Ÿ¾¶x,qž“9{¼Òm¸E­Kåyö¼ÓWyÄâ8(_BSžÿ‘±–ФUGà?¸Wퟗ?ï]¾tã$HíW+ác'ÖÏ^ór×:/zFFþyÑw¤@8kÓ }F÷Œêz‹ÁÐkc¢×y@¥{È!]ý&!!&Àm³´Çg¬‡Fõ‚µÔe`ÐŽìׄ?–c+·V™&u¹„–l·±þ¦Eçß¹ùÇÔU3>›Û§]÷ði]´šrx.¥dÐ9:¹ßÜp¶…ܯV|T—>NcHÃë®DˆEÀ¸Í÷vžò_î½—üva¿A§éÚiÞÈ/\%s£K–"§÷Âá©I·A$À1@R]Ûöø|òâîaëÿ¬¥÷/ÜOKøä§åkÞZvôÆ©9kgƒH\ŸöB ºu³×ÎaæJ…¼Ò=I¹‹ê9!¸Ï÷všÜ¤]^y˜‘´b÷êøŒGB°­ذNûµïeÉ%Ç©¤¢–±âŽþS“s'g¥«•4%ðoæìÕRBÛx‚Ó£ìÔø'´ŒÁÝÁ¹M@w[ŽUÕô ™‚¼[V$»4zmRVŠŸGskOWy’—®Ök[û@bV2Ã2ÁÞ”õw€1“”™’ù4›¦>>-šùÙÊ ÄÌG XŽ õ õ ª³¨ Ù$wRï7½hàTí¯ÙjjDFA¶ÙO”¿z>!ìBbx¿s -Ï'„$æ~¨còPcKaYÑÔ5³ðN Р#@'xùó)ÇYÛ”ž1,ܹL:Lnl¢ ÅÄð_.쳡W[}‘°jïÆŠ'?žÙ ‘°vÿfk›j3³;1ØõjÂÍáKÆC/t#/Ü¿bm#·Rîõù`(ô  @ÐCÜ'}õ¶¢¬ÐÚvr sG.›½D  ÐCóéÄüâ³/Ûxë_»€Öß}°iÌg“•ÊâÊ &:MDx—çomîf†.),ÿ39 B| &!–CZ©0ÄÏõmW»‡’ݵrÇî!í}ÃN,MÍK¿Ÿøánõîªå¿­]±õc°sˆúš·›ç¤;7n™ðùT±ýÀ}¬j*»0pÈRäT<)./tÖç™Xžãtš‘K'äg&·ŠnèÕÂZã0jɸŒ”‡Ám;z¶à)þê¿~óÖÀ×\B¬H;1,óúÚ9'Oïñ Þy0øã7O8ò£Ö ;»ËŒJnˆ^9zó”}Œ7ôÃ'è-îøN¯"e‰y ¤.Ó(Âñïsrƒ¼[Ÿý²jý¡­§ãÎ+ÊŠ\ìœlàM.?¼^ž: Û°É}ÇŸˆ„ôÊ©±.^-î>‰¯ªÉþqAÀñŸLXðÞÈ·íDR«Ý>–9vó”ÔÃ+vüüŠýbAÞ-tècí§ã΃VÓu¨“ÌQQV¤(+r”9 é<xîüý+µßoè­»ƒ#û_~`òªé)îüzvOLçÁ‚:TãYErÞ–+#pB,‡t.’ÑanöCÜí†Zu˜©Í²rj¬Z«:~ýäÜO§ƒƒXîêÙ¾eÛÅtjaU;%ªRP±íZW}è,s õ ¾M¥Óü[èã‘xJ¿±¶}üiYa©ZéfïR©¶%’_üH|Ç©ŸwÛc<2Çp¥V<¤å§7>þ :¸ã‰Ï÷½¹nöŸ—Ž Z4òçvŒ¨ô„ÊSJí·@´ÀÓIÚÃIÒÙIÒ³i#ºmâé"?»ëFÒí¿Râî¦Þ?yûܱs{®&þuiõ‰Pkîu¡HP¬ªyŽB¡²!·r¯¾qÛQãœ3Ž0Ljë‚R€cËs ËRdƒ A ¾¹«——K³g‡‘"’ ±®]@øß‚?ûýô·v.[·kù ùÃ/m<ÛõÙ6Gi—PÏu€áaK‘À—Äeÿ–’ˆ Šˆ Š0š›±+ÞØ·÷Ç;©÷¬Â_°w áêtö¯3y%òg÷(¸u6ññOwïr_«ú#I€‡ª ÙÀ˜Ô´ â,s û%§%^N¸Þ+¼kCúî €züºðÛª‡–p¼ùõÙh·Þ‹…¢µÓ¿èÚº³¢0ÏûÙõÉ øŠ¾ð¯Ê·Ïíüãçûv í$¡Å—^¿zh°–ÿëØ®O‡^§Ní‹ùôµÅcßoí|ìæ©¥?­à•Ê÷f¼-Xç*u Z¸çâˆmä~8Ž?ÌH ðz|pcÀkﮜùÖº9ŸOù¸KH”F¯Ýyê焌Gß¼³Êx׫…òJ·á+~[¿÷]8ŽÏ1ÝßÃ’‰eu5úéß…ö}$Ø@g|  ô‘B4ô[4RQj5¹•’ó$lZè‚A?;l 3ôA7bâW3µzõT¢~êºÙЀÞbèïý ¿#t§VíÙhmS¡oEC_ÙÓR…ÍC¤ÑkǯœúJñ.0Ðz  ~;õžµM¹þ‡Ã°fЃ—ð.xoñø/§Õõ2±dÉ’ÿ÷IžÎÁ‘-‚Y©€öppiߪýÇ“/™°Ð¡ê%¶–‰“ÌqLg¹Ú uI;†E/{cÙ‚WfٰLJÀ‰}|Zñ!ŠäNr'w¹½sŸ}Ûø[wÀð½'eÙľc”^5EC¢^ò÷ Rêµ´DnïÒ¥m÷¯çmˆj[yƒA WÀð®ÃDR;=˸;8{عtëÔ³³nKþ­Iš¤ÑLÓ4É¿(ÿ7€•.cK\òIEND®B`‚ ././@LongLink0000000000000000000000000000014600000000000011566 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/docs/spring-webflow-reference/htmlsingle/images/tip.giflibspring-webflow-2.0-java-2.0.9.RELEASE.orig/docs/spring-webflow-reference/htmlsingle/images/tip.gi0000644000000000000000000000112611360615630027660 0ustar GIF89aô !!!999ZZZccckkksss{{{ŒŒŒ”””¥¥¥µµµ½½½ÆÆÆÎÎÎÞÞÞççç÷÷÷ÿÿÿ½½½!ù,þ EQEQEEQEEQEQEQE9‹²,‹²<EQEQEQ”Ô(ËFR$EŽ¢<EQEQ) 4MÓ4M8M²PEQEIJ#MÓ4MÓ4MÓ- CQEQ’ÒLÓ4MS´DÓ4MÓ¤4Eõ,Ò4MÓ$!‚MÓ4MÑQ-ÑNÓ4MÒÑ4MÓ4= EQ3MÓ4M8A 4MÓ4M“¤Dµ@Ó4MÓ4%ÂLà4MÓ4MÌCE‹4MÓ4M“@Q†4MÓ4Ó)T´HÓ4MÓ4)eHÓ4MÓ4E FK4MÓ4M“TP†4MÓ4MS¤PÑ"ÔM8MÓ4IeHÓ4MÓ4E -Ñ4MÓ4M TP†4MÓ4M¤PóLÓ4MÓ$”!Ó4MÓ4-EAË4MÓ4MRAÒ4MÓNÑQ”´<Ó4MÓ$”!MÓ4MSÓPHQÐMÓ4MÒ! Ò4MÓô,EQµ,à4MÓ4AÎ3MÓ4MÉCQEQ£DÓ4Ó4MÓ4MOòPEQEQ‹âHÓ4MÓN£8EQEQEAJ²@Q=вDHQEQEQEE¢(ÊòDEQEQ!;././@LongLink0000000000000000000000000000015300000000000011564 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/docs/spring-webflow-reference/htmlsingle/images/toc-plus.pnglibspring-webflow-2.0-java-2.0.9.RELEASE.orig/docs/spring-webflow-reference/htmlsingle/images/toc-pl0000644000000000000000000000041011360615630027657 0ustar ‰PNG  IHDR Èä)‹bKGDª#2#IDATxÚchÿ`À¥ÿ#óðò@ÈC"Ô£™j?RJl²d™:4CtEXtSoftware@(#)ImageMagick 4.2.8 99/08/01 cristy@mystic.es.dupont.com‘º!¸*tEXtSignatureab17802e1ddae3211b1ce6bc3b08aec7{ú¦( tEXtPage15x9+0+07vð¸IEND®B`‚././@LongLink0000000000000000000000000000015400000000000011565 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/docs/spring-webflow-reference/htmlsingle/images/important.svglibspring-webflow-2.0-java-2.0.9.RELEASE.orig/docs/spring-webflow-reference/htmlsingle/images/import0000644000000000000000000000233411360615630030002 0ustar ]> ././@LongLink0000000000000000000000000000015400000000000011565 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/docs/spring-webflow-reference/htmlsingle/images/important.giflibspring-webflow-2.0-java-2.0.9.RELEASE.orig/docs/spring-webflow-reference/htmlsingle/images/import0000644000000000000000000000175311360615630030006 0ustar GIF89aöC)))999BB1ZZ)ccBBBRRRkkBccRssRccckkk{{{ŒŒŒŒ9½½­­!­­9œœZŒŒ{œœcœœ{µµJµµR½½Z¥¥c­­k­­{ÞÞÖÖÞÞ!ÞÞ1ÞÞ9ççïïïïÿÿÿÿÿÿçç)çç1ïï1ÿÿ!ÆÆZÖÖRÎÎsÖÖcÖÖkïïBççcçç{„„„ŒŒŒ”””¥¥„­­Œ¥¥”¥¥œ½½„½½œ¥¥¥­­¥­­­µµµ½½½ÆÆÆÎÎÎÖÖÖÞÞÞçççïïï÷÷÷½½½!ùK,þ€KKKKKKKKKKHHHHHKKKKKKKKKKKKKKKKHD?8???8?EJKKKKKKKKKKKJC79"&&&&&>7EKKKKKKKKKH84'''''''''/?JKKKKKKJ8=&'''''''''''&BKKKKKJ8='€''''% ''''''BKKKKE&'''''&'''''&GKKH<4'''''' "''''''/@KKE:'''''''6 ,'''''''HK?#''''''')''''''':EH?&'''''''þ€''''''''$8H?&''''''' ''''''''$8H?&'''''''!''''''''$8H?&'''''''*1''''''''$8H?&'''''''375''''''''$?KB"'''''''+ )'''€'''':EKF9''''''' +''''''3;HKJâhQ¿ x÷¢B‚Ìh£Ìõ¢@&ƒ v»þíðž9*áÁü`þcÛªz6•_Åjl;HagV6÷쥽Q‘¡™\ì’÷™¹km2®ãÌ66å â\DšHâSŠç^ ŸvÚ­K‹ÊÞ2¼uH‹O¶¤S®x¯øRïÆ\Í*ÕQ|þg,ÍkÑËÐ]7twú )Ÿäˆe'›sͯìŸýr=»Ð$þ¾ì¾óúëj~ß'‹˜¹~pZöÍÔ ÑŸð7YhÿáM`«ðï‰_ÌϬ(U´ÉÞ¿Z£Ó«[VìŽÃÞm"Xóhç§»[ûííÜž¯=ìÒËè—¶Ì`”žžMëgév¶fô¡ÿt0møR‡ògÜõ´øŒ§Ë—ë|ôí¥ð½±ÒùײÒ6­%k2ùþ±§Ûè?¨ýù õ6ÅV×v—ˆ%´ºŽXš2°ýªHézI£Tr+/¨ ÿƒ«3诛?¾NÅ¿>Jô¯p=Jy £Ø‡¶³¹GM!‰8zZó•M*y #óíGWèÐû÷^ëÞý׺÷¿uî½ïÝ{¯{÷^ëÞý׺÷¿uî½ïÝ{¯{÷^ëÞý׺÷¿uî½ïÝ{¯{÷^ëÞý׺÷¿uî½ïÝ{¯{÷^ëÿÑßãߺ÷^÷î½×½û¯uï~ëÝ{ߺ÷^÷î½×½û¯uï~ëÝ{ߺ÷^÷î½×½û¯uï~ëÝÏ”ß5¾+ü)Ù3oÿ”ß°ú‡<ÔQnlÌçó…DÚiöæÙ¦5ƒ?S+ÀÈ‹KM-äx>ý×º× ¾¿áIÝ—ÙY·—Ä<þäÆJÕt”ß!¾R½_Yõí•^ò[o®hŒÛûp@$e–j–B²2©ãîq÷Oy '~fæ[x'èA¼I xIVA‚ƒëÐo|æî]åÔfÝwHÒAøÔçå¡jG:uT¡Û?Ìså2Ô7ÊoŸ}µ#P%¬êOOOÑgö.$òáëj6üso|å>¦]3Ë”†UP@UÆ(óWßknˆÍ&r„“0=²Ý¾…#?è1ÙÁÅâ*qîþüÛ&¸ö=•œƒ‡™¨?Þ§þ7ùz;[áÏÆý­_ühu~tnF‘j'Ý]÷=¹êêÃûÚŒîñŸ5’z½@~ç0`¼sæ?¼÷¼|ÂΙ¾‚Üþ DXiöH—öÉÔc¹û±Îû™jn¿Oü0¨J¶Ëÿƺ1”˜¬]²Pã¨hÑÙ–š–;±ff¢Ý™Éú“îÞ9·šy…ÚM÷˜¯oµO4’g×¹ˆ¯@›Ýçwܘ¶á¹Ï3^ù³ù“Óµ%$Õ•TÔTqyj«*!¤¥… !š¢¦U†•‘¤•‚H<Ÿd/$ŽK<„“æI=!Q$Ò* ´Œ@âN~ÀÙt[/ "EÊÕGÙªÅo+TVˆýQG1Ž&4TŽì°®•Ib5³’™˜ŸåM§ïï&Í*Ëmîü¤yNÿR§í‰ùz?·çe¶`ɼLßéαû½sØÝ3óã(§—á‡ó ùÖxÌxf¥ëÙÏ'{ue^™%– Y°ý‡j³LºÖ"ÔrDⲕv2{žùWï±ÍVFÞoå›[ØÒ@Z ˜æ„ƒ®,`QQAÈç¡nßî…üZq±ŽT,„£ŸšþÀ:B,LûðÜÅöÓ,8ª²ÊG¨" ˜è\¬®¡ÑCÀŒƒùõcÝêÝ{ߺ÷^÷î½×½û¯uï~ëÝ{ߺ÷^÷î½×½û¯uï~ëÝ{ߺ÷^÷î½×½û¯uï~ëÝ{ߺ÷_ÿÒßãߺ÷^÷î½×½û¯uï~ëÝ{ߺ÷^÷î½×½û¯uï~ëÝ{ߺ÷^÷î½ÐwÛ=¹Ö×[«·;›~í^±ë-‘AOuï뙢ÀíÌ$õ”ØÚ3[’¯–(ENK)[%$ ZzºÊˆ …$šTF÷^ëQÿ–¿ð îûù?>_¬¿•†Ç›¯zÞWY/›Ù¶ç¦Jú _5gJuV^ž*¬±u”µ6K*"ÀVDVãÜYîG¼\í}›KÌ[mÈ­cµŠ;šc¶ "Ÿâr25tæŽwØ9JûÕnˆí‰(Ò7¦+Ú>mLp¯©ÿñË”ÞÏÜ=ë»w—É~ù¯fªÌvçugrÇ6kåšz‰o㲓Ôaö¥$/RÑÃ> pª©ÔAcÏqþõœÿÎF{^ÜÛ#Ti…«;®~9¨44"0 úuœÑï1ï…àÛ[èl EÖB?¥&?éh:1*ªŠ4XÑxTUGÖÁTñ†i¦¸‘渕¤™K1$’|É9ê&wy]¤‘ËHNI5'ó=wí®«×E•EØ…K’ÿy÷î½P8ž§Óâ²µq$ô˜¬\jñÏKެ©ô±FÑ4‡£Ý«™7™±¼ašå?‘¨ý™é{Òÿ5š?òíJ 3¹²Ì—ã †«cö5e&3äþÏÛñ±‰åÚ}’±¬{Ëø>:R~Jž©§:ôM¥z{i÷Àåc[m³žm¿uo'Jø¢­jìkS_Šðᵊ’u:–v?qöëѪ}=ή1“œú¯—ý£­Ž¾4ÿ‡ßÌGVz7>'´6ô wÿ@v=*lÞíëúÔZ²›9²kç5UÔtnÚZ»õt@• *³i÷—Ö—v·öÐÞXܤ֒(dt`ÊÀð*ÀGØz‘ã’9‘e‰ÃF ƒPGÈŽ¬gÚŽ¯×½û¯uï~ëÝ{ߺ÷^÷î½×½û¯uï~ëÝ{ߺ÷^÷î½×½û¯uï~ëÝ{ߺ÷_ÿÓßãߺ÷^÷î½×½û¯uï~ëÝ{ߺ÷^÷î½×½û¯uï~ëÝ{ߺ÷^÷î½Õÿ¢ùþE?9òÙÿÞ>aü~ý׺՗â˜Uø»ñ½QUýu•E¥ß¯¶ó; îìK©&çß½Þžku}ÈyægeßoÔ$«u*ªŠðUP€¬ çI$“›ù ÈåˆÜ.©­™À¾@ ä:âŽIåH ŠYç’þ8 æžM*Y´C¼¥T“`l?qÙ I¢úôUg`ˆ¤¹ò§ö ô'aº‡wåZ¶0tþGI$¯‘e©P±yXèé¼±I! "nmaÊ w+hþ.ß.´ÿ›£û^ZÜîñPD•¡Õ“Ȉ®8>… _HmÚm•¯ÈåÀ©,)"ÐS “ã/4 L¨ *ÁQݽ-ÍÈÚ 7YŽ#EQ_´ÓóÇB ~S²J‰žC§#áõÏØ 8ãž„\VÎÚø] ÁãéæJu¥5&%ª–ã'Ï<¡žg‘¢VfnY…Ï´2]\K]r±­+ÙÑå¾Ù·ÚÓÀ´@ÁiZT‘ó''†zRÅ]@Š€°TŽ0±®§nªéPYûs휱Ï—¨¥Gìè÷ìœ!Û›_Š`ëQ(š°I¤H+jÙªª‘Ê\ Ó^M‘@¹·µ'‚­p?Ëþõ.mVŸCamnA­þ˜äþÂiöÒ«Sª?íϽtaSë×µ7ú£þÜû÷^©õëÚ›ýQÿn}û¯Túõ‰â†BLÃ!6»CqôÏ}ìꈲ; ¿º%6Ðì³”¥*ôrM“Ž7ñÜtn¾ªZ¿$eY­f7÷1{cïw<ûYv‡fÜ û)`d´˜–…ÇžœÖ6þ’PúÔc£‹šw]‚AôÓkµ®cj•?gðŸ˜èê|Kþw=Óñ7pmÿÍ¦Š—)²25”[s®¿˜ÇÄIÉÌ–ÑGŒ ï­«Ž†¢}¸'*¢\´ öÒ»–>Z_}>öŸß>M÷^Ím¸únaD¬¶’$_SÀ•>k‘æS·/s^ÙÌ輺6â>Ïâ1û:Ú³oîìÁâ7>ÖÍb·ÛÏãé2Ø<ö¾—+‡Ìbë¡JŠ,Ž3%C,ôuÔUpH¯±»#©=Í úx÷î½×½û¯uï~ëÝ{ߺ÷^÷î½×½û¯uï~ëÝ{ߺ÷^÷î½×½û¯uÿÔßãߺ÷^÷î½×½û¯uï~ëÝ{ߺ÷^÷î½×½û¯uï~ëÝ{ߺ÷^÷î½Õÿ¢ÿíÅ_9òÙ¿ø0¾>û÷^ë]O„=>[â¿Æ,¶z¹i±ÕºZ²šŠ¼•UTÓõÎÔ©„ÏP@JTš TyQ€ ûáo¼;’Çî§¹±Âµsâ <úɇçþ°Ï~凹æ¾e¹¼—L ¸Ü0UâA™ˆ©ò¨$2ŸGó ·0›zž:lF:š‘c³yDjõRIáHyj\žicŒk\ÿSî&–yfbÒ9?àýZØÚY ŽÚP<üëJTž5 g×§Ïmt¯¯{÷^ëÞý׺ú§¹ÍçF’Òâ’\ÅJ9 7ÚJK årÂÅO Š×ãÛ‘ –ôèë—­Þé` qÕÏû^ñ¢1é^Ž·z”º÷¿uî½ïÝ{¯{÷^ëÞý׺÷¿uî½ïÝ{¯{÷^ë E<IMW U4ò£¤Î‹$l’+#‚¬‘ȸæÇß Ô©$qÍE2ŒŠEFqÐc¸zŸ”6'ýÂU“}1)’É0‚Zšú¢´hÄh"î÷>ÕÅy"aû—ùôÜyJÂê¯f| ¾YCÃËËðâMOEÓ²zukðY}³¾6Æ/xlÌÕ,ÔZJÚòØLË*¼5ôSÇ!‡\Q–:‡í‹@û<Ú÷{­¾òÛqÚïd·Ü"`ÈèÅ]Xp Ž·›>ï²J· Jš¬‘×iZeMH<ÑIøóÞÿ&ÿ“žmòÝ-G»~J/*ì³ä»âí^B£9Ù¿¨ªä’\¦õøó“¯yjrw¬ÍW·¥“Äñ)ñp޽ ö'ïUm¿½Ÿ){•:A½$7†‹ç€Y¼£”ð „cƇ&Oå>KÃß½¸Kž /“z7ÏëqŒß'º7æNm>ùøïØ8^ÇëMáJeÇæ1¹ÇWÂr;{qbä+_·÷6vñVPÕ$sÀÿPU•›7Á )ªž¥>9:=ï¯uï~ëÝ{ߺ÷^÷î½×½û¯uï~ëÝ{ߺ÷^÷î½×½û¯uÿÕßãߺ÷^÷î½×½û¯uï~ëÝ{ߺ÷^÷î½×½û¯uï~ëÝ{ߺ÷^÷î½Õÿ¢ÿíÅ_9òÙ¿ø0¾>û÷^ê”>ÿÙüGÿÅcèOýõ{Sß}áÿ§·î—þ,{—ý¦ÍÖ2oÿò]Þ¿ç®oú¸ÝÏqÏE={ߺ÷^÷î½×½û¯th:XlÖ\êóVäc •t¬útœ4múÇ–Zö >‡Æ¾ßJã’zòŒ ¶×W?œ/䢸ûKýƒ¡ãݺõï~ëÝq©xè©$ÈWM>/óÙ…D48øåµu[ÃKãûN=Þ¦º-mayn›‚"—sç…PXã8{åçÑFퟟŸ º7î“´~PtþÛ­£mbbÝty¼¬’ M 56×C4ÈÇÔ¾Q` þžå.[ö;ݾlKYönC¿6s²'ƒ¥k¨ÈU”UH\šzôúÚܸ&;wjz^Š•Oó£øw”¨Z§Û&;ç"ìDpõOǽý¸1ó(!VH348úúY#‘È…µÉ·Ö_Ú>åÞòßNs]¶ÊØ­u™üS\v”@4$Ö¾TóéXÚ/ÈR">¬)ñŸÌ7¿7hÖÿÊ7ùïÚy,`©¦ëÚm»ÈÂâMü]3Ƥª±Æ«÷çr ·?íA½< ÏóÖ:T»Á´Èæzyo˜_=Doò?þ`G ™šZ†™%¤·ŠŸÇ ¥ô^üþ¯ðöúýÃy·éä/îÝõuí¥¼Ú)Ž=ګdž8|ú¡Øo|UÓ<^3†Õ\ðò§?>›r?>þLmu2ïßäíüÇvu"s%\›/Ÿ‰cþÔŠ¸<}KȪúrmǶà çjÓÀÚ«ÿ<óÿÐ}\ì7bt'ì=#Çó˜øÃ·êMqõOËž†ªìoŽ=ƒMÔ*Í—l]i î\j_ø–ó÷(÷zÁã]¢ãl¿CZŸÁ¦”¦$ MsÃ…3ǤÇg¿¿Mh?¤3ùtbú¯ù”ü ›`|¨êм¤’ø 9]µ›ŽM(m=&] ‚wÓv˜Àƒk{‰ù‹î÷ï'+ýCî<‰w%¬I­¥‚“F­r§Q hšSפit€—¶p§?gG_WA›¢jü5~7=ŒeÒõøZúÞ1ÕÖå³=]+/Ôä{ˆnínöù–ßp´–ÞàŠ„•7§¨W ÔùÓ¤äqV"øè)Ý]QÈ¡ªÛ¢,Mrëg¥bÆ‚¨G joö®ÒF.MÐëbßoCxˉ{—×Ï ~ëÊv×*eÛ©ÿÃø[øMG$õXKŠùü³{×=ò×á.£1‚ܲ*þ-CQì^ùÁR*¶G}u„<ãö¿qc1ïå‚jxÂd8ŽE!Š{Ï»—Þqö3cÉàß™6!-¯’Öäábœœ´^Jç1ð5\ƒ.XæË½–áv.c¨€6””þþ$È£y+޶æøcó7¢~xô>Õùñÿt.wjnÚ5…­AE»6í¢TLþÄßXÞmýÕ·« Š¢žU¬$Œ¼nŽzM‘ËK†‰€!¨ Š‚ÁdÄu1+”‚¤TçѬ÷~·×½û¯uï~ëÝ{ߺ÷^÷î½×½û¯uï~ëÝ{ߺ÷_ÿÖßãߺ÷^÷î½×½û¯uï~ëÝ{ߺ÷^÷î½×½û¯uï~ëÝ{ߺ÷^÷î½Õÿ¢ÿíÅ_9òÙ¿ø0¾>û÷^ê”>ÿÙüGÿÅcèOýõ{Sß}áÿ§·î—þ,{—ý¦ÍÖ2oÿò]Þ¿ç®oú¸ÝÏqÏE={ߺ÷^÷î½×½û¯twz¿%ÇÛðÁ–¦šJóãUf‘rVÂÌc¹wÓ æìý,žÕZÐPóÿ—©S`„Á´Ù©e-þôKäGEoä×óø•ñ>X°Ý™Ù´ynÀ®0½U×ÐK½»7TËAII€Á-dé%GÜ [†`Oéàûš=½öÝr^Þm——dƒgs›«b„á®®éMN… t"·²¹º¯ƒTyœ^=û+üè~u¬SüSø…¶þtöa¥\y|ɬ–vÖb'ª0Ræ°}[Ž«rHÏL4l) ŽMÔœÚä/¹(mQÁwÏÛÔÛžà ±Ša¶X’¦£Ä•t† §Î˜=C±F(n%$ú ÛÇ£o²á7ÓöU6åþaßÌäçÉÌÌÒ ¼ŽÀëœù騆eˆÂ”Sa·q屈ŒE¦š™M¬9-–³íÏ"rt0AË<§cf±T¤K­KTšHÀÉšŸÅçNEgk|8Wå_ðõhý ü™ÿ•ïÆÁG7W|*èèsvî}ã´é»sUÕ†.ryúÛŠ¦Jã!Ô$][• aìkÒž¬kom]¯´hF3ií¼ØÆ®8ý½‡ÇahW@!-I§¦§ zx¿¿uû¯uï~ëÝ{ߺ÷M¹l6?C.3;ŠÆæ±³ÿžÇå¨ir43pGîÒVE4pÄr§ƒïÝ{¢ÞßÊ‹ùnü•‚ª>åø[ñ÷uTÖDñÍ—¤ëÜ6ÕÜ ‘¸6„8ÇÝÄ¢S1u°±°ߺ÷UA¿ÿá4}?´k*wGÁ˜_*þî¨ôÔã°T{⣶:¬VÓI$Ô>ÎÞ2­m<—ÐâÒʼ¨<† ó%ò—5Ã=¿1òåìrFQŒ±#1C^ÐôÖOòé‰mmç–9¯Š6úë?ç±ðv:ºÎÉé.°þd]?‡Ž¦i÷¿Çš¹v§vÃŽ‚1RjòwûL†j¾:t}b•ªãÖP×Kâ×=ýÊý¹ßÒêë”.§Ù·6©TSâÛT! žw"–£3+ãAžŠ§Øàz˜$*}8ö:÷J2o‡?)s-ÕyMÙéÎ㢪0VtÏx⪺ã±198§ŽšJZ%ÍÓÒCS1–_ Ž/blaO?ýÚ=ÙöàÏy&ÏûËeDfk›0d@Š ³IýHÀ©P:ŠštÝùê ðoà×8eâ3JƒJŠð?o­(î ',y_ž¶ÖW~u¦å“?Ìß{|…Âwg_E SÚ{ÿÄ÷vÌ£w™%ŒÊ²ɩ§ßºÏÞ&âÆóoö»n]ì¤ Êg®¸$à-¥-ŸœFNb=‡´ ¹kq¿Ùf]›q×.ÙP"š•ÑSEGô Â¢Avüiù%Ó¿.ºC¯¾Ct.ð¡Þý_ÙX83{{3FtO kÅ_†Ìнªpû‡]”µÔsªÍMQ#.zIÔ™ÐëïÝ{¯{÷^ëÞý׺÷¿uî½ïÝ{¯{÷^ëÞý׺ÿ×ßãߺ÷^÷î½×½û¯uï~ëÝ{ߺ÷^÷î½×½û¯uï~ëÝ{ߺ÷^÷î½Õÿ¢ÿíÅ_9òÙ¿ø0¾>û÷^ê”>ÿÙüGÿÅcèOýõ{Sß}áÿ§·î—þ,{—ý¦ÍÖ2oÿò]Þ¿ç®oú¸ÝÏqÏE={ߺ÷^÷î½Ñrùò³¤þ/mès]©ºâ¤ÉäœSm‘†Œæ7ÖïÈH²x(6æÙ¤/‘®–gN½$b50¸÷!ûyíg;{¡º.ÙÊ[;Ì þ¤Ì Á¨Ì’¤qøEXùѮղî;ÌÂrÃÍŽ~ÓþN= ÝñCù¶ÿ4<ÝŸ9-wò¼øaUÄÁFN2ß-;WoÅI„sQA·å•)6Z+C=cÇ"4{õÚº!rÁºs)½s8¡×2§„é£,Pš«Š–å Xi:‡SæÓ°CakiíâMj¿Ñª€*åçù޶ø9ü¾|†<×OtýçíÊ”Š]ÅßÝ·9ìŽåÜY ”Ÿq‘“wn©“ÓÏH²ñ±ÑƤ‘cÉ9Rª¨ªŠ (ppä:?( Õ¢{ß[ëÞý׺÷¿uî½ïÝ{¯{÷^ëÞý׺÷¿uî½ïÝ{¯{÷^ëÞý׺÷¿uîˆwÌÿå›ð“çîÞl7ÉΈÚ{Ë1ƒ„ìl]9ÚÝ©µê£jw§­ÛÝ…û-ÇG53ÒFR9&šŸÓcƒî½Ö¼}£üµ?š?òÍJ½Ëðß°+¿˜ßÄÜeæÉümíê˜)>Hìý¼­‚¦—`îÏN;°Ì 2¤xªäQa ßýÓû¶{yîbK|¶ƒj暆[ËU Úƒ¬±©%K3í½ÈtÓ¢«½¢Öè5+‘L S#…)þ£Ñ<ø7ü˺Cà¯sOÝ]A¹ò{{âgtoˆþb w¾/)µ»Kà‡xnýV/n|ŒÙÛ/;IŽÈUõ>n¤Ço3C ´”uñýÇ‘µÄZYä}£}Ø9OdÙy—yŽõkŽKši3f»øü-ý\1©­J¾›{H¡º”<Ë«"´Ó¨èÉ!4‚NIõ½î5ˆÜ˜|VáÛù:Ö ;Ž¢Ëᳺ¨kq¹L^Fž:º …e;ÉUe,Ë$r#t`A±ö+égN~ý׺÷¿uî½ïÝ{¯{÷^ëÞý׺÷¿uî¿ÿÐßãߺ÷^÷î½×½û¯uï~ëÝ{ߺ÷^÷î½×½û¯uï~ëÝ{ߺ÷^÷î½Õÿ¢ÿíÅ_9òÙ¿ø0¾>û÷^ê”>ÿÙüGÿÅcèOýõ{Sß}áÿ§·î—þ,{—ý¦ÍÖ2oÿò]Þ¿ç®oú¸ÝÏqÏE=uôää“À}I'€¿uîˆ^säyüœîZ߇ßËW¯iûþ`“°»J¿ÉG|} ¨›ìïÔ¨Øê¼¥,¬Z:8žFgM!e}Q{Íaþé›Ç= NhçÕ–Ã”É ? ÅÒñóÌQˆÔÙÒ?R,ò5Æä#½ÝEcÄ/qÿ>¯Ï‰òõëb/åÅü‡úáæ~›äÈ\ÜŸ1~käüUÙŽóìúÉàöMsQŠwÅôöÎÉ­F?iãh¼’,5m®ÐÞƒô{ê.rÎÁÊ;M¶ÇË{T6{\B‹j|Ë,Ç͘–>g©šÒÎÖ¶³c…x)ÿ~g«âö{Òž½ïÝ{¯{÷^ëÞý׺÷¿uî½ïÝ{¯{÷^ëÞý׺÷¿uîƒ×î~±èì.ØÜ©»h¶Ž+zvUôÆÔžª—'_>³»¯`:Ǭö–6ƒE‘ÈO[¸÷žç£§iD_mCNÒÖVIOEMSQº÷B¿uî½ïÝ{¯{÷^ëÞý׺÷¿uî©óù˜%/ˆ̧ _ŸÝ˜ôEò.—QŽÚ¿#úÖ†‡¾ †hçŽL&ù¥HâÇöNÎÈCU,xì —ÉO+"H€}׺­oå¿þoÿ,>íØÉ×çÖÏËïî³ÝÕ[æŸàoÌ ¥÷ùŽºÍàövÜÎïªÞݹ ùVÚ¨¥Û8:‰ð”Õn*i¤#XþÞ_~ëÝmYïÝ{¯{÷^ëÞý׺÷¿uî½ïÝ{¯{÷^ëÿÑßãߺ÷^÷î½×@†”‚n<‚à‚=û¯uß¿uî½ïÝ{¯{÷^ëÞý׺÷¿uî½ïÝ{¯{÷^ê€ÿáQö⯜¿ùlßü_}û¯uJ ÿìŒþ#ÿâ±ô'þú½©ï‚¾ðÿÓÛ÷Kÿ=ËþÓfë7ÿù.ï_ó×7ý\nŒ­MM55EeeD””KSUUS,pSSSAK=EDò²E Ä…Ø…U“oqäqÉ4‘Åe¥b¨’I  ’N'¢  ª*Ç¢CÔ½sòKùËv¦{¡þ%n ÏM|/ÙÙ†Ûÿ#þgÓÑÍfå†|y®µèW—Å[9^ kQ„P«vXî¯ÒﻇÝR ©vþ{÷2ÁdÝ;d¶²qT‹Íd¸S†`¬fª§-Rê`åIX[žñg⑞ è\yŸAÀyõº'Ã_„¿þôÆ¢¾3uî;clìbC6RºÉYº÷¦m"ñÔn}ñ¹$¯Ü›†µ‹4“Ìt©r±¤ié÷ŸÀ€u(tl=ï¯uï~ëÝ{ߺ÷Pry*,67!—ÉÔ%&7CW’ÈUI5 UUÔI¤3h†™6Ù¹¸‚ÎÞ{»©–;X‘ÝUAff>A@$Ÿ :Ñ OÑ'Û0ê7×aíM´6Ž'%çÊ¥ßÉ\—ííÌûCÊÞ-ܳˆÌP-OÔ´B' ¤|(ÒjbU;Y¨-qÕ¤ßOwnÑO@t0*À0 *UHlŽ£Íï/z×^÷î½×½û¯uï~ëÝD¯¯¡ÅÐÖdòu”˜ìn:’¢¿!¯¨†Ž†‚†Ž¨«¬¬«¨xééi)iãg’GeDE,ÄO¿uî¾sÌù«f˜¿óÁþT;_©kògá?F2΂Ù]O—‚\ź»Km|†é*ÅíƒC?ÛãóXìLš|^ÞªhšZZ)«Z?¯ŸËî‹`Þ6»­×qÙ-ï£}ÚÒ(dš jÑ%Á”B_Èxž šEkE©'èßïÝuï~ëÝ{ߺ÷^÷î½×½û¯uï~ëÝ5åñt[‡ •ÂdE`Çf±Ù EwØdrXjóE§š†¤ÐåñT|]SA+ªig†¢"H¤G ÃÝ{©TpÍMK4õsWÍ)ÖÔG ueQP´±AI÷2…¼ž(⌹%Q…ëÝJ÷î½×½û¯uï~ëÝ{ߺ÷^÷î½×ÿÒßãߺ÷^÷î½Ö"¤ëND¥¥I§„5 ¤o È’ÕYàŽS%@(ŒÈΗФFå}׺ÏïÝ{¬5ÒÂóHE”¢"kŠ6ši]b§§‰¦’(Œõ3ºÇ,5;~}û¯uŸßº÷^÷î½×½û¯uï~ëÝ{ߺ÷Tÿ ‹ÿ·|åÿËfÿàÂøûïÝ{ªNøRéÉO#*"|aègwvˆ‹Õ;U™Ý˜…UU$ð¾ {À ÷sÝIæ=ËþÓfë7ïù.ï_ó×7ý\n½GÒ½«üé;û9ñ˦ó™Íƒð3¨s°Pü®ù ‚i)jûK-I2Ë7Hu~Ut,¢°FS!Y 2Å,×ýµ9é÷Zû¶G°Ácî?>X¾H¡ìíœbÝHªÍ"ŸôfP³¿êMä¾QËï¹Åþ2EcCøGñüGËÓíëx®ˆèŽ¥øÏÔû+¤:;da:ó¬zÿ KƒÛ_J”´t”´Ñª4ó²-nB±ÔÉQQ+<ÓÊʼn>óש;¤ŸË¼Ç|íÿ‹"³Ÿðô;ƒä†#¥{+#ÑxLŒUt™>Õ¤ÚYY¶=$”y)`ÆÖ¼»… ñÁRëO<šRS¡›ÞǪÕÒiǪ1ømò£>ll®¬ØÝóÇå‡Çæ3ÔyNºÌ|蔫ØkÚû›/µ²˜ —{uÿeüiîYò[»lnÌ\Y"Éõþ6ûTÓILôPÇ%X×Ó2šqG:¾dÐýŸê¨ôêçwÏß„!»pûÇå¯Çœo`å—¾05ݵ²†heÚ:Éš‡rà¢ÌK–ÂM >>ieûˆcÃHåPj÷­ éÕüxMPq§BUwÉ¿¸Ì>ÈÜ9}!AìÜuFc­³u¯°é±=…‰¤¤š¾«'±²3g’vãé¨iäšI±ïQDŒä…ûÐRxÕŒ‘Ž.?oD϶{wâˇø§_µ¿˜ßÛ;rwŽo·¶GYv·^G´~af°49}­º~;nš|œùßOC•¤¬Ãc&§ÈÅ4AC¤Œ»wÙì·ÍºãkÝ!gÛå uèA£”e-ü2FN™”pTVm»­ÆÕõ„È·‘ƒ¤”GÒH u¬¯Äޤj:À-g>Y.ŽY½ÿ„ÌwïÄž Ý}?g`¡ß[µ÷>Ò‚ WTPSï,6>¾Ÿ5ˆŠ8¨*& W"†I*+0olØ6M”8Ù¶[KEaŸâ­=|5Zþ}$yÖI¦–YK\;ÌÄ–fcRYKMI$’MNOF?s÷—Mlε îMÓÚ{Õz=¿_…ìZý×…fçi7i¤]§.p ÆÆçNê’¾Æ-$“>AçiÄŒê ¨šž´Ò"(f`¤g[|¶ø»Ü[—³:§ä/Mö&ðÎíÌÖîÄíMØ›[pnZݹ¶²´x-É•ÉÔe ¹šÈAI½D«ÊŒ@÷âÉydÁ4èÃ{×WëÞý׺ÓWùáÿ3½ÑòŸîå]ð‹w¾?jÑO/ί‘ûv¡ç§Û[l5êº`d©%Jy÷>|^¥\ø“ü ¯™Ïº†=í÷“döw•'ÝnŠÍ¿Î¬–vÕ¡–J|mæ°ÇÅÚ™øW'ºöÔêïæ3ü„vÉÅA…Û_çgNbñT4AÈ‹º¦™Â©ž®¦BÒK!y“õ÷î±§îKÌ[¿6ožõóýxÓî×rí’HçÌŸÞ8ÉTQTy_R~ë?z÷¿uî½ïÝ{¯{÷^ëÞý׺Å4Ë+²Ê᥂±E$Ϫy£X¤jÌ"ŒÉ©ÚÚQf!A#Ý{¬¾ý׺Á2ªÞ¤A樂–- ¨ds’ÓÂò¼J¿pÐ'Õ *–ý׺ê'2EÂÎŠÍ †&’& jŠC ’Âd½-¥Ùn8$sïÝ{®LªÖVPÂêàqª6WVþ€«€Gø~ëÝr÷î½×½û¯uï~ëÝ{ߺ÷^÷î½Õÿ¢ÿíÅ_9òÙ¿ø0¾>û÷^ëVÔ]ÉóÛdü,þYs•[;¸>(üzÜ?-ûË«ƒ ºN£¬6hÉcᮈŠj]ñ»¨çôÐþú  ªM8íO° ̾ó{•î8XêØmùŸsú(\vÜJ—Ó”üQDð×W!z‹öNWœÃ¼o7ñÖÕ/&ðÔðf7qj"~ξŸ>)tŸÂŽƒëïÿ¶6Ñë~»ÃÁÇÀ¡%Êæò²»£sä‚$٭ϸ+CTVÕÉê’W° Šª¹ùÔ¡ÑŽ÷î½Ñ{ù]Wߘώ}½šø¹C‹Ìü„Û»B³tu6ØÍÿ \>÷ÝÛ^z}ÃG×™Jœ»ÃAŽÇö$XÙ0rÖ4½d ñË‘¤‹±Jç‡U}ZN“ž¨ïùŒu57ó/øÝ²[iüù ÑÿÌךël‡CövëëL¦ÄÜ_{»ð¹ îîÍü¶ÚñKÖùþ¬ÙXÚjê¹èñYÌ´ÙÈ„"2oÓXc‰zaκR6ñ+éŠ|Ï zyŒW¦þìZ.£þz_οtugköˆÉ|{þ_xŠíÛÕG‘ì© ÉPôÎvZ³›ÄíH2;‡'`µ¥¤½)ÃŽqWSOã‡^éP)þ®=WXŽGÔ y|‡—Ïþ/¢‡Ò>ItFÉþYø=ûñ—~e0xOæëòç.{¦¶žÖÃváÇÇÚÚ½•·úã®÷ ^##[³¢ËíѺñ¹šÌnßš¼PO5L°‰$¥×'ª3Cþ¬ÿŸ­Û´°®§ªÐ$õmßÌï¨7vïþYØþŒè ݸð}QüÍúßåGnÉÔ]yO& hì¼~Þî;°7âb¢Ž¯qg7dÅ[U4uY\œÓÔÔ²HÂG5z}…(¼ mGíÿWÚ˜êηßxæÍüÏûówt/fÍÔ}©ñKã6Àë}ñ?[Ue±½ƒ—êŒd/gm » ÅQ‘«z¦Ü¸èbŠxa¦ËQwFÜù ñ[xüRÜÛN‡¿è0[[Ý;°7äÛƒ(:‹-éz:œ…>w->[=ˆ©¨ÈÉïTÿ.žŽ•5ÿe?Îxüúºïuéîµ1þp¿Îƒuî­×º¿—_ò×ÜÔÙ>ß«Š|É”yV»güwÛuA©sj婌”™ŽÓ­§g…L,ËcÅå¶Ÿuû³î×,{GËso{ìá¯on¤x³ÉL*%ãs…1ƒÛcÉTq„û÷^럿uî½ïÝ{¬kér–²­,,ÖW@P ˆ¹$–?ïÝ{¬žý׺÷¿uî½ïÝ{¯{÷^ëÿÔßãߺ÷^÷î½×½û¯tw_l`z`î®ë쥦ú·hïûܻަ‡qäëvO_l½«™ÝYíŒÃí<åÍî1‡¢³(‘¨æz¸å Hik=׺›Ó]ÕÔß!ºßlvÿGöÖí³Þxè2›kyìì­>_ ”¤¨‰&]BÞJj¨–@%§™c¨ý2"0#ߺ÷B‡¿uî½ïÝ{¯{÷^ëÞý׺÷¿uþ­³7Wc%Ï—{±pY ѽ·ææø‘³6vÙÄC÷9]ź·GÍŽxM½‚ÆS‚¾|†_-] <)qªIüû÷^èHþH¿Êãn+¯†»?¯sÔY/‘‡Û[¿äŽòŠ¢,œ•{â<%=-.ÅÃåÄ0½VÌë:&þŒ°T•bz‹6‘ ÀçÉþ}{«Ž÷¾½×½û¯uï~ëÝ{ߺ÷Do©>ÒuÌ/”1pý±º3[§åµ?Pbû#dg6öØ;K „è½½™ÚÝ}G±ê1t˜ÝÅŒ­‹›•rõy%¬”ëX¡6 ºà.›€ìõî?웣Éï]9×½û¯uï~ëÝO• ±ÿ"÷¿Uw>ÊïãøÉò¥q›×mì.æéŠÍŸW]6ÇìvÛÓß{²¶žúë®ÀØùü–ÑÅWýµ~0ÔÑä1´õ•ò+—Ø?.¨É¨‚ N½AÑ{_â­e÷Os|ˆìáß9ì;/¿þBg6ÄØí™­Áíœcín»êþ¶Ø¸:ÍÃ_VðÐã š¶²­ç®¨ª”FÉâk.´±…%ªK3þ¬uªÇóþw}¹óû+»~&ÿ+ýÁ”뿎)][µ»ËçQ¢« ÊnüDII›Ù¿á©Jj¨éó!Z3d$ÒÓ“â0Æìí® ¯z½ýåOgvÉ#¸u¼æÉ°Y£ U? ÌGöQ$žæAš‚7Ó=)°:eÒlŽ¿Å}• HÕ™\T†¯9¹3Ý«3›ƒ)-êryJÙYärlX€÷î¸ûϼÿÌþäs ×2sNàÓ^Èh«Â8’¸Ž$à¨>YëÝ\¿¿uî½ïÝ{¯{÷^ëÞý׺‹YCC‘…)òtµÐGUC]”ðÕB•غê|ž2±#«’¤Š¢ × ñ$ˆC(#Ý{©^ý׺÷¿uî½ïÝ{¯{÷^ëÞý׺÷¿uî½ïÝ{¯{÷^ëÞý׺ªÿæ'üâ>ÿ-|Òw÷›{wfVŽgØ¿:­)÷oso<‹Ò<ØÚîõ,úvÆ.ºsü›ÓÄ©(xÖb4ŸtžêîÖÆÚkËÛ˜á´u;»E‰fb2@ëOŸ”]ÿó—ù·î(²ß0rÕßþ$Pf-²¾õ¶v¾’]É,^S¾÷,-NæÉšI^ˆ…‚b±Ã ïÝ`G½|« ¹.ùsÚv[›ò ½û ïÓ)þÕ©ÂF­T5+Ð…¶¶ÎÞÙ¸^×Ú˜\nÞÛØZH¨1XlM$TXúHWJE<*¨¿Õ,ìK1$“ïÝs{tÝw-óp»Ý·‹énw)ܼ’ÈÅØñ$œýž@`PŸ=û¤{ߺ÷D»?íéŸÈÏÿû¨ÿø"~.û÷]ûàÙÿ©_ýäzú{{÷]ëÞý׺÷¿uî½ïÝ{¯{÷^ëÞý׺÷¿uî½ïÝ{¯{÷^ëÞý׺÷¿uî½ïÝ{¯{÷^ëÿÖßãߺ÷^÷î½×½û¯uï~ëÝýýнUò¦û û»ic÷¿Wv†ÚÈmmÝ·r( Ucëâ*µ4sé2Pe±µ*hꣴ´Õ1$¨C(>ý׺ÑæwÅ|‡T÷Áþ_ßÌNZîÉÚ»?nÅ‹þ]ÿ1rO··¦ôê½³¸*sX=…“ìJ7‚·ß\™±•J%òe1”“ª¸BþÑ_ýx…À‚èI*@%Æ0Š TÐÔqŸï}î‡%­—¹|ƒ¾µYB±ÞØÈ¢H1#2Ï šƒWðåhŒrèôSAûãïÎOæÍüº!Å`°{–—ùžüVÃ}…>Áí­ÁO¶>Tl­·HøLq¥Ùݵ⟿?†c)* på¢þ‰jy ­÷‹iÃr¦ Å_ÌüFžT=Áx€+Ñg·?{Ooù¸AeÍ÷&òج­ªÑÏwÃs@#‚|u‰A`ŠîsÕô|8ÿ…ÿ.–ù{÷FHáݯþ›—üG1ÙÁU‰F4ø‡ãÀâÒ¡ªcHÁÓÐìç¬~ëÞý׺÷¿uî½ïÝ{¢ÝŸöôÏägÿ‹ýÔü?}û®‹ýÀ¿ðlÿÔ¯þò=}=½û®Œuï~ëÝ{ߺ÷^÷î½×½û¯uï~ëÝ{ߺ÷^÷î½×½û¯uï~ëÝ{ߺ÷^÷î½×½û¯uÿ×ßãߺ÷^÷î½×½û¯uï~ëÝ{ߺ÷DÛçwÁžŽþa?·?ǾòÅÔ ÉIsdïŒ!Š—{õWabC˶;beÙL˜ÍÀ­!€EU’ CE#~é©¡†æmî"Y-äR¬¬++ 2²š‚¤ ‚ Z^ÇSßßûê«áÍ(©£ìúX'­é~Þ‚žj-ò›®h$Qo-_5©è·í5"¬y¼+;URÔ†:t’šûl¶ÝTx‡EÒŒ0óùQ\Ó©ë—xÏ»ÍÏ·wwåÉ–Ï/$N奈ÍbìxÄÛ±4ÍLÙÉZ#¸µÙýп#ðCÚ½m³û †òBsøzyrت™hå¥PåbÊãªRž¡•d‚e±TX*î»,¢&v@I#5Fò$P1P)Ã@Ü›î_;ò4¢nPæ‹«4ÔXÄ­ªf%íä µš2E ‚.µèo•¿¦Ž§ùüýùñ÷ ISAQIÓ…‹¿ºÅBš¶7bI\øØ*b¼m$S<ˆ„iärgoÌ™¥Õ¾*ržB˜Xç>z†<±œµå¾¾íŠßž9Jˆë™¬ÜÄáiДº;W‰D´8\dùõ÷ó°þpý´ þ|sù·ékj)*÷—ÇÍÈô–ÿªÇ/©òÕûG°©sûrzæŽ5ÕÓÆÄ…Iömó·Ï xú× ŠSÔü?gwËŽ:ȾZûÑ{9ÌbÞ99…öëÉ+úw‘#ç—Y`ä¨Df£ßûs³zÖ®•ÛõAV›÷cmØ¢–&á½eAR9÷n:2ç ü¨³‘¬´_Ì‹á*à3':{oH/ϪþîÆÌ‡üA÷î½ÔœŸózþTø˜šZ¯æKð^UQr1Ÿ*zK5)ýL8më_3Ÿð O¿uî€ëÿ þL›)æÍÿ0•ÈÙ“eE½»WÐ +]{´·<“³[ßߺ÷Ev¢¾MDò|{éoœ?+«ª(0ÍÔ?·>3odfždŠ)jwdVl¦ÇPYõ4Æ–Bª.SÞ‰ ¬ìh€TŸ O è¯sÞöm– .·ÞÖÒÙ,óJ‘($–vP©=¾Ãþ{¿Í?·ÆOñùuõGÇLd”J˜Ýÿòï¹dÞY_5O™Ed=qՔ؊Š:šDUaU]DzÈJŸeónÛ|5 r¬Ô­º¿*Š€~Dž:‡yï'ìß-ø‰'7Çyt°K4{\{D±§ H 2ù@5èˆö~Òþa/¤|Ýþc}¿¸¶}}M,Õ]!ñ–Šã¯TKI Z$ÃååÚÂ=˺hd,×z¹f½Ù‰ú”Üs"R–¶äµ8¾(kžÐME<õ ùc8ïÍ¿}’VH9“¨ÅF™¯Ÿ®koãú‘“• w)zGâWÇOŽ”ÍPõFÖÚÕóCO nã4–ݹ1K$òÃ&Oufd¯ÏWL%©v,ó’Ìn~‚Ä7[•åÙocáŸÂ0´­@§<‰©ùõŠí︾à¼Ë̼Ïpöÿ£> °µaJ>“M-/‰%«štc=¡ê4è욥Ÿp$ Où È[yei*IR $¦O­ïÇäù~"–ÏãrGØ(?ÂAÍÙÃ\*¹ûNÁNƒïgõï~ëÝ{ߺ÷^÷î½ÑîÏûzgò3ÿÅþê?þŸ‹¾ý×Eþà_ø6êWÿy¾žÞý×F:÷¿uî½ïÝ{¯{÷^ëÞý׺÷¿uî½ïÝ{¯{÷^ëÞý׺÷¿uî½ïÝ{¯{÷^ëÞý׺ÿÐßãߺ÷^÷î½×½û¯uï~ëÝ{ߺ÷^÷î½Ñ$ùñð ã÷óè¼—H÷Π55O÷ƒ­»+nºc»§·õ*_¾ºûpªýÎ/+E2'žFšºaH+ài‘Ǧn-­ï-æµ»%µ‘ º0 ¬¬(U”ÔF"„u¥×cmÿ‘¿Ë¯¹±Ÿ>s²¹Úé±ÿþ]â)&ÆuOÈl4cM+3^ìivGqÑR¸!‰ª‘>æOÜ€ºMXe­£œ}ªתª«y(P(¶ €áЦÞyÛjŠ86¾qÝm P¬WsÆ  Hp §%ñ+â®eòÿ¾?e${ë“!Ó]uY)-õ>J¹#êÿßÝ—p¿FW’Tå‰õGÈ‚ŸFÉîǺHU—Üú ÿÑÂìØe¡")Ö Ãÿ‰˜¦WÆ|_øñA"›¬´-ÖðL ï,{md¸?Nx÷i7+ù\È×nú#ò @?!óãÕ¤÷kÝ9X»û“¿Tú_Ý(ý‚Pä:ðeÖÛh"íξØû}c°EÂm<( @‚‚‚¶ÿt…øá{7ûÛŸ¢ë¯pùþùJ^óÎñ2!ïn\ɤ=-•UQUBª¨ ªª,ªª,€8Òt$’I5'®ýû¯uï~ëÝ{ߺ÷^÷î½Ñ[ÎäN[1È\”¨©s¥TaM¢¦VUà2ÓÆ ýnGÔû’­ ú[X-üÕE~Þ-üÉè!u/q,žDãì˦jzO×½û¯uï~ëÝ{ߺ÷D»?íéŸÈÏÿû¨ÿø"¾.û÷]ûàÙÿ©_ýäzú{{÷]ëÞý׺÷¿uî½ïÝ{¯{÷^ëÞý׺÷¿uî½ïÝ{¯{÷^ëÞý׺÷¿uî½ïÝ{¯{÷^ëÿÑßãߺ÷^÷î½×½û¯uï~ëÝ{ߺ÷^÷î½×½û¯tüšø¿Ñ1:kvôÈî¹ÀvWo:_S¦Õ-lAÎ;pmìœF<–ÜÜøYßËE‘£–ºi9G}׈®´¦ù‰ðkåWòˆÈÖg+?¿-¿—‘«¶ ·ñøé³½éñ§#¹ðøèš]ã±q16ˆw*1ÿ”Ç•TW{_#¬,÷ÃókÝó?·i—1±-%®ÞáŽIC…‚R~ÈØäé90ºó²¶ÞúÛ˜½ë׳¹6ÆjªñùŒ|u¸êÄ ²x“Ë%^)t7VÜ{½Å¥¥òRâqB#"¼hxË®lï;.÷ËÖϾmóZnpµ9«>GˆÎâ§ùSçÕÅÄG‹S¬ãt`[é^?¬KÿC@/í£ËÛÀãgÿCÿ?u¿/ãë³¹ð@_ø‚qý"¨'ý°†çÞ¿«ûÇü¡÷¤ÿ º÷ñõÀî¬ü¯ÿ¶¦¬ÿêvþ®o?ò‡ÿOú ¯xðÿøÍÐ Ù}‡·§Í¦7ø›ñ&¸Íe¾æ­VwpËNK)§1m¤ƒaÍÈ×aå]Ö?Û ršük€ ñ­N*(Fk€GºÎ²Iq½QV§öJ|¿ŸA]FýÁBáb•`¨o$êˆ $h"ªJy5/‘cõúØI,î2).cC^Ôý½¡‡ó¯Ë¢ž“U=‹\ú>ÓKµy>âIj‹~:<hÜÞú¯qô·&ðò­²êñî½4€¿mkª¿Ë¯t•¬ÜYºôñÕdj=2#GŠhäI@WYR™!Y•”ZÌŸê}[í[u«j†ÑCTš±p ±4ü©ü‡^é—Ù‡^ë‹2¢³³TVwf *ª‚ÌÌM‚ª¨¹'€=é™UK3£‰<:~ÖÒêþæ ;i&¼•‚¤h¥ÝØà*ª‚ÌÄà =Öó[ù¦-zŸ‹rwNâ_Ë~°íûßiPjë¾±Ù;cº:?un ì×ad¤Çìꌦ3´ë§þK[Q’¨h|4ðM9ñûóám{%¼ví¨Gª§ÈêÓÃÖ”ÿ7]`ûŸ{GÎ^ÚlÜÛ»s…šZͼ}!ŠÜµfmÅÍZ`”/õ ¥5[XS@~¡~ÃfO^÷î½×½û¯uï~ëÝ{ߺ÷^÷î½×½û¯uï~ëÝ{ߺ÷^÷î½×½û¯uï~ëÝ{ߺ÷_ÿÓßãߺ÷^÷î½×½û¯uï~ëÝ{ߺ÷^÷î½×½û¯uï~ëÝ{ߺ÷^÷î½Ñtù3ñ'ãÌ~¸Éu?ÉžžÙ=Á±²Q°þ»°ôõµÊ›O–QW–¥{Uü{Ÿ!¼?–—Èú~ËØÐ4õñCåÞJ¿,ÑÀÕVOC×ÝñEÛ† É^yžÔMô$•Eiu&tàj:‚=ÌûºûoîcK}}¶ýþÕ?Uj7v$±i’š&$’K8ñ€R¥·OÈ×СºóçAöŸÃë Mþä»?WSf^™d.vßoa¤«Ù9G©HõCÕ[Z ÔåC*[”?X7Ïs¿rùvK›ŽXhw­­0ðÊÃpjha‘»žƒ ÈÌhiшۛ§lïU>sin,èÂÕ(jl¾ÞËPf±• T00×c§©¦“ÒAᵃqÖ+î[^ç³ÝIc»íÓÚÞ§å£qö«€GìéûÞúC×½û¯uï~ëÝ{ߺ÷L{‹9O·qU)Ç‘“LtôâDêjd:c‰ Ÿ åœ€ÅcV`¦ÖöªÎÕï.À9'Ð'üƒæGMË ‰ žŠ…eeNBªzÚÉž¢ª¦C$Ó=µ;è ˆ ª *¨DZƑ"Ç€€`tJÌX–cRzîýk¯{÷^ê-mu2’¢¿%YI ¤¦ª®®©†’Žš$RÏ-EMCÇ1ª©%™€{nY¡ Í"ªz“N޶[æi¿kåÍšæûpb(ÆÒ6M:AÒ+æÔ>‚™Ù»›¾wY럇=Ù?.û 掓íºSY×øz™£w‰÷glÕÀ»F¡nîµ2p° o9šÒ*­ªׂÿœþÏϬ¾ö÷îKÏ{óÁyÏ[„;>ÖhLjD÷lšTøQ`仳©Á‹«Íø»ÿ ÀïN÷— ½?™¿rÑlý†Æ:·øñ¯)_CÊSýÌÓ&;·û‚iNOr )ÌI=&:zFÓpÊÅ Þî——äøòŸøF~^i©ë?½·öGÛŸk Oê¾ÂŸ½4Ñîæý[—õýFþÌ4‰cCAU&¤íÑ?:Kã\á:— :¿fu/]mønÖÙ*82F±µ]`¤‰&ÉdfTJš†–y,59°ö_ÔµÐÇïÝ{¯{÷^ëÞý׺÷¿uî½ïÝ{¯{÷^ëÞý׺÷¿uî½ïÝ{¯{÷^ëÞý׺÷¿uî½ïÝ{¯ÿÔßãߺ÷^÷î½×½û¯uï~ëÝ{ߺ÷^÷î½×½û¯uï~ëÝ{ߺ÷^÷î½×½û¯uï~ëÝ#÷Ï^lÐÛµÛC²ö>Ðì=§“¡Émñ¶°Û³oWÄêQã­Â稫ñµQ²xØ}û¯uE}õÿ ´þ]½™¬Þ½CÙß»±f3n_Œ[ã'·öåDÒ¼²ù*z»rɸºæ%™‰Xú"opÁ‚²ì3/ÂHè‹}å~[æ{f´æ=†ÒúÜ©ZOI@j’ÊJœà©‚U·Ø?ȧù¯õ#K'Çß–ß~Omºˆ§Áü‘Ù{㨷þFšg »—­ Ý»r«0`‘QZh¨é›@-ê%™å¸qÏXïÍ?thwÿÔÚí.ö‹ŠÄiK!5&­À›Ö”FA@(©%'tt—óEéÚ,‚÷òÎï}á¡XÌ9‹Y=Ýûw"L)PðÀ»Ó¼¡µ#<‘ ÅLîê‚.®‹¬å1Ô/½}Åf[k‰9wÜ5{ÁMÜÚ”C‘]sE4Œ´ZDRÑAÔ ¶äÎàØBWíÿ†ß̤"€3ÏQÚßûsoÒÃj×3TÐârð´ jÌ„r Ü1üú‰÷¹·¼¶uúx¶»¿ù¥uOú¿=")?˜¯ÄJÉ$€vue d'LÔ݇Ø[f¶'¸ ɵ±']Øp ¿âþíõò=GÝGßrÚO& ¿[cOås_åÐ=½þv|rÜ‚ yìÚbŽoá8êM½»ëꥅ´ff¢ÛµZª€ˆLJN€€MÙ„»vç´XÛÿ¹ÎÔ-ÚÜ})A_\ñùò}Ñýû¹¹XÛ”àHŒÞÙéhY‹×ìR:Áˆï½½ºËSõï^|‡ìü·ž`ÁuïÆ®öÜYJÕ›Ì ôA6= ðÄÑ(?¾üŠP8ÔUSs>Ú¼Fû”Ž„V?rx®”µÍæÍlCI.%bA­Hð­ä¥(H©"• Äì~…þbÄ"¦¿–ÊܳÖÏ8ü¿kãögDm2šYª&Éf7Îä9Q€´rÐ ì,¤(tóXá ŸæÍþ@?ËÔ£±ýÂ%4~d÷W"©mlZ£Ïõ%•hxPøGìèõuWò!þmÈèý­ØŸ¾mš¨ã.ÞL÷ÈϤ…äS+R=D[oaÓå!PT,±TS‘ê IJ®9‹rž¡d¯ôGùMOìê{å?º²üµáËy´\n×kø¯%,µ­káB!ˆúQ•ºµ.Žÿ„È|ÚùŠÝò§|w7ÎÛK:Öš.åÜ£ou\ÚN³Œê-‡ükÑÑ ´pÈj4}5qìšI¥˜êšVfõ$Ÿðõ‘{FÁ±rý·Ñì-¥§ð[Ã)þóªÿ.¯ÿ¬ú—«ºckc¶GQõÞÊë=Ÿ‰§JlvÚØ»kµð´§Ñc ÃÒRSê'–b¥˜òI<ûo£n„/~ëÝ{ߺ÷^÷î½×½û¯uï~ëÝ{ߺ÷^÷î½×½û¯uï~ëÝ{ߺ÷^÷î½×½û¯uï~ëÝ{ߺ÷^÷î½×ÿÕßãߺ÷^÷î½×½û¯uï~ëÝ{ߺ÷^÷î½×½û¯uï~ëÝ{ߺ÷^÷î½×½û¯uï~ëÝ{ߺ÷^÷î½×½û¯uï~ëÝ{ߺ÷MY\=¦Îa±Yšq{A•ÇRdaúÚ*ÈfAÏý׺ƒG³¶Ž:žZL~ÕÛt4“¨Y©hðxÊjy”\…–iR9x ý}û¯t÷KIKEt´TÔô”±±SRÃ<‚I"8bT&üïÝ{©ý׺÷¿uî½ïÝ{¯{÷^ëÞý׺÷¿uî½ïÝ{¯{÷^ëÞý׺÷¿uî½ïÝ{¯{÷^ëÞý׺÷¿uî½ïÝ{¯{÷^ëÞý׺÷¿uî½ïÝ{¯ÿÖßãߺ÷IÝÙ»vÎÄÛ¹MÛ¼sxí·¶p¥N_9–¨JLn6žIâ¦Yë*d´pCç»YF«’>ýÑfñ¼í\¿¶]ï;ÝüV»T Id`¨ŠHZ³RNsП5~$Èë"z‘ävTDMçˆgwbUUj fbläŸ~ê;_}}›f ¾ælʼn æ:“ûz3‘È“G±0xåE’7GGPÈÃüMýû©UY]UÐÕH¨?#Ñg©ùŸñ>Ž¢z:ÏSKWK4´ÕTµ;¿E5DÑOðK2Ë ÐÊ¥]V~ê,—ß/g –Hf÷'gI‘вµÌa•¡PAÁ ô*õÏou‡nÑdr]a¾öÎüÇâja£ÉV팥>Z–ŠªxÚXiê'¥g&x¶›ÞÜû÷BþYç>Sç8.n¹O˜m7 hX+´,ЬEB’µ+N=2ö/È‘ê<­³ûKdì<¾K¹\~?tgh±U˜æ©žVSGW$fh>æ–D,·³)ߺAÌÞãò&]ÁaÍ|Ýa·^ˈ‰<Ë2j+©CQ©H¨órë®þéNÝÉWáúô6^ýÉâèFK%Eµ³”yyèhx©Vª­iAOQ2¢–¶¢x½½ÖùgÜ^Dç;«‹.SæËÆîõºÛʲJ…ÔÚI $€+Äðëa|…èî¦ËS`{3µvFÅÌÖQ.F“¹óÔXŠªš’HVªž:¹#3C剖ë{Ï¿uNd÷'y:ò-¿š¹¾Ão¾tÖ©<Ë2F ŠŠ‚*:A³±ñþò3¨¿ô4ÃÿõG¿tÿ_f¿ð¦ì¿öUý×¿ÙØøÿyÔ_úaÿú£ßº÷úûû5ÿ…7eÿ²¨¿è.Ÿ¶OÊŽƒì½ó‹ë¾·ì·¿÷&O žÜ-ÑÈÒæ©1˜Í¿6"ž®\½],Ì”2UMšˆS¡¦Ñ!O¿ta±{¹íß4ó§-r¿4Zî;¤¶òÍKgYV8á1†22žÂÆU8µøOFIä–V HÒHç舊YØÿ‚¨¿¿u#3*+;š('ä:,³|Òø™O4´õ!úš à‘áž ·Ž&)¡š&)$RÆó«Ç$n¤2"ÇߺŠßß?gcwŽOr¶e‘I˜Á`‚ ¨ ñcÿgcâ?ýägQèi‡ÿê~ê¿ëïì×þÝ—þÊ¢ÿ º|Ûÿ-~/XœÈ ÈdêRšwþÚ‚®®F¾˜h ªÈA%dÄ):"à ÚÞýÒý»ÞOi÷k”³ÛýÇÙdºcEO¬€3E à±ù-OË£`He` ° ‚¸ Ž#ߺ’:bÜÛ£nìÌ5^âÝyœ~ßÁPÍn[)P”´‹,‹ mQQ!Ä­+…¹ \û)Þ÷ÝŸ–öÛç~Ü¡´Ú¡¦¹e`¨• Ìp$ ž™¹¹·´…î.¦Xà^,MûOAû4ßçöu¿þ…8Ïúÿî<ÿ_fð¦ì¿öUýÑWõ›—ÿèñoþö:÷û4ßçöu¿þ…8ÏúÿïßëïìÏþÝ—þÊ£ÿ º÷õ›—ÿèñoþö:ƒ”ùkñ¿ŒÈdÛ¸¶5rã誫M/=A_“¬°¼ßk¢†o-]mFF¼»?>Òß}མ°²¼¾oq¶¹D13èŠt’GÒ¥´Æ€ÕÝ©EQňR^iå裒C»BÚA4VšyæOèÀÑÕE]GK[a e4Q\EQÍu€m...y÷.ÛN—Vö÷QWÑ…xÑ€"¿:Qƒ¢¸à@?· Ãu÷·MìLÔûsyv^ÎÛÚh©çŸ›ÍÑã룆®%žšcDˆæ)âpU…Áÿ\`mÿÝ_mùWs—fæNvÛ¬wTUfŠi’7 à2,A£Pxt[u½íS5½Þã s€ V`r0zUlÝû²û.gcnl6ëÄÁTôRäpu±WÑ¥\h’INj -•E$Åùö}Ë|ÙË\áe&åÊÛݵþÞ®Pɉ8•Ô¸¨TytªÒúÎþ35•ÊK4ªšŠúW¥w±Jº÷¿uî½ïÝ{ ;ü•莯¬›½û?lb2´ÞAU‡§©Ÿ7™¤h-fO”ÉÒJméI"Vs‚}ÅÜÛïWµ\s-—3óͽúWT*Í4ÉN!áe• e𞉯¹‹dÛ\Çy¹F’Ž*¦j¨b?1Ò'ógâÎãªZ<p`éæfDžÆnm­Ky*–¯Üø`‘Б$E’7 ‡ ý„tü7¾Ðëü@ÏïmÇ‰ÚØCW ñ\ÕdT4"®¥ejzv©˜¬I$ÂÒ "Û{)æ.håÞQÛÆíÌûͽ†Ùâ*x³8DÖÕ*¥Ž44¯SL]ÞÚXEãÞ\,PÖš˜ÐTðè;Åü’è,ÞJƒ‡í탓Êå*éè1Øú-Ç©¬­­«•a¦¥¦‚)ZI§žW ª$Ÿ`ûz}¦Üïm6í»Ü=¦{ùäXã.#gwrUT–b@yô_0ìsH‘EºÀÒ±à’NÔô1W×Rc(k2Y ˆé(1ô•ÕµS1SRRBõ5µŽ˜á†6f?€=È×wVö6·7·sí!ØðT@Y˜ü€ŸèÝÝ#G’F¢($Ÿ@2O@wû4ßçöu¿þ…8Ïúÿî.ÿ_fð¦ì¿öUýÑ/õ›—ÿèñoþö:¶–óÚ›ó›ƒfn ^æÂI<Ô±åpÕqÖÐÉQO§Ïu0–Ú"à5‰±ãØû—ù—`æ½¹w~ZÝà¾ÚË•ÂáвÓP 0H¨­:3µ¼µ¾ˆOg:É i©MEGô‹Ý]ñÓ;7S¶÷fìͳž¢Jy*±¬å|ÕÓÇUK$”õ$'§•]M¬Aöß½ÖöÛ•·9ö^cç}¶ËvŒ)h¦#‘C¨e%XƒFR>`ô’ë{Ú,¦k{½Æçª³EEF¨éC²;3¯»&…NÁÞ ßOŠ–2U Œ(h¦ªI$§†¢ZvtŽYR`¤ÞÂÿ‘ìß–9ß”yÖ+¹¹K˜­7mÙVF‚E‘Q˜¡ŠÔ@&œiÓö{†â$k´•T€Ji^§KŸbž–õï~ëÝÿ×ßãߺ÷X憈e§¨Š9àž7†x&E–¡•JI±¸d’9ˆe ‚ ¿uWD‘94l Š‚ à‚8Ž´ðù1°²Ÿ þkd&ÚôÓãöw`mþÛë:wŒ%»rlÄ;ŸŒ4n¯EŠ«§—!(AjGàû÷\O÷S—nýŒ÷Úåö›p¶Ö;Œ;ˆ"ˆa2 âAƒU•­Î2clu·Õß›kwì ¿Ùx¬„Cin-©ŽÞty*‡Ž8áÁd±QfR¢­ÕÞ8M=·˜j>2¬Óߺì¾ÑÌ;^õË»w4Ú\Ü×6ir®HDñ‰1©JžìàƒéÖ˜]Ù¸7'È®ÜïþîÁ`g›oÅ›¯Þù‰© ñC·ö~Ctâ6v×›!ä`Z²WËã¡”(òI+É.…E§ºá·=î[§¹œåî7>íûs6Ú'{© Šmžâ;h ×ñ$*ÔË1gÒ6›äþLݳC¹ºvõ4ïMs¬7…FJž+õ[c{‰2T•r!:ê%§ÏÒd"‘ÀÒ‘˜Ø‘uп¸÷8Áºûw¼òt…þÓz\‚Ð]UÕˆâH™fRF˜Áâ*V¿goSe÷ÏVt–9à—û‡¯ß;’EEybÊî—\vÒ‘®¥Ä⥨t^+¢&åE½ÔI÷ìçH¯7þQä;fSôP=Üæ•"Iû"JñcœÄJ„ð¶/€½ Mñûã/_mʬTXýå¹±±o}ý1…cÈM¸·$k_Eô+´»s%>8'*†™ˆ¹f'ÝfÝ×ÛȽ¸ö«–öÉm{ÝÜBêìÒŽfœkçaŒ¤4à4Ä’kÇù᢫ñÞBŠd]ÁØÈ®TkT“´ÑZÚ‚»F¤¡*? ÷ïò£÷G¶A¨\ÞŠý©m_ÛAûDËáÇòÐÿfÓ¨çíOôÕýÀðnìÎÕþþŽ?½Z¿„Qâjþÿø§÷óméûâš|_ntxï­µX{¨;ÙºÇúòrdœÝý{ýݦö[ è¾£û5µøŸWštbŸ® oü1ŸþþÁ?ÿKžýÔ¿ÿþuŸû¥ÿßG£)ñ ùmg>#wÍdRödíü†ÄÝûk0’mÙ•øŠúêí³W‡zZïNêLµ=bPÔ‰[]9§1§ Ou){-÷^Ü=™÷ ßš!æäÝ6Ù6û˜$Ûéž7w£*>¢àH¬õ¡B «¶Ú=û¬ÆëL”ûu7?Î>åÚ©P¸ÕÜ¿ s¸3Z” Q¾svš)+M(š˜T´RU™Y<‘™ Á`Mýû®û·¶ÛßÞxÚQºæIbÕ¦º|[%´ÕuP¶¢*+ê+^¬ïþÏÿ‹ÿ`Ÿÿ¥Ï~ë+¿àÿγÿt¿ûèôW~[+lÿƦËvýqá7ö oV`ésXÊÝ¥6ÊËžÌS`éŸÜÛªŸ*ðÖ×ÀÒFdÄI"#«ÝDÞò}Ò·j9:ó-ùÞ Ço¶x–Tksk'êʱ)Œx÷ ! êJÕNMÁr“mo½ïÕý¥×»«!“Ìmþ®ËìÿîU~NYjM?uÒî6¯ÛUR¡cA‡ŸoGš^³Wwí; <>žOøãu­GÇ~›ÿO}©…ë?ï÷SøÅj³øßðã¿oü#U“ñÿ þ)‡ó}ÇÛh¿Ü.W³ZÇŠ^Ï{oþ»ù¶òOúˆ¦Áñôø14”ðüXk«Nšø‚•­±ã`Ú?~npíßQák uiÕM*O KÆž½XÏü4çýÿßý…Ÿþ‘ýæOü?ùÖî—ÿ}‡ÿë_ÿIÏú£ÿ]zƒ”þTY|nB|GwÓäò°ÑUKÇUõÓbékë£…Þ’Ž£$›ï"ÔTÎaÆ Ú´5¬R_}Áo!²¼—o÷='¿X˜ÇíþÈáIDiô†5f /á¾k¥©N©/¶,r4[Èi@4- Ÿ OˆiSçCOCÕÂa©¥¢Äb¨ç '¤ÆÐÓLµ(– X¢+C¡±üûè¶Û–»u…´ x±ÂŠi‘UPóK©H¢Fø‚ûTµüÕ•Fþê‡ ¡ÛhgžÃS*f¢(¥¾¥T¹ ~.¯¾i}ý[9¨5ºq_²aOÙSûOQ¹¿îvÖ|ü&ÿuaSâ¿PUPpù–!@³î¼û»X[ÔîÄ“ù&þóîÀª¾Ãûv>šcù›©Éý§'çÐó“@³µSøþ>ÝÏs×B~½ïÝ{ª²þ`ÿ+7]šn˜ëœŒ¸ÅšÄ&OxnZ¤ƒ'…ÄW;ÇA†ÃÔDUè²YH¢ygH–vŒFCK­0GïyïÞïÉÆmy2õ­÷››q-åʲÒ#†)$ y ‘”ÐC>¥9ó™ç°Ó´mò¸t¬Ž0UOSäOxJq¨*ßÿ—þçî½¹IØ»ûrϲvžq¯MMD2;£pÓ»2î+$Š“Œ«bZ dóÍR£X‰chåxÙ_ºFùîfÍoÎ<Ù½¾ÙË÷@¼ ©â]\)?Úd$Q1©Fmo ‚dv r÷"Üïé¸_\m_*«¸þ,áAò&¤ñ¥$Ào¯å]‡z™úÛ³2ßÇ`‚I)qÛ΂†lnF¡C§“)††Ž|RÈl<ŸmU¤ýVljoš~áÛpÛ§—’ùÞã÷ª¡+ähc‘³E2¢޴ôô=½öΛoÜ_Ç@(O¥V…~Ú‰÷Ç‘ñ3´æØûͲÔÛ2Ÿp¾°v>AÌñaçóý­VàÂÇj…§¯¡ 'ÕJDY(C½ž÷sœþïüù'+ó)¸NZKÃáe!Ô!mZZâÜD¯‰XŽ‹”ÀÆêØ7ÝÕ÷3ey¨Y‰4Ëü&´,¼hGÜ8õÁ f°øí¶rX<¬¹·º0Õ°·Žz\†+-HÑ>†³£¤ÔójGµÃǾ¿î{vÕÌû%î×w;-õ³Fë†Y"•(iÄTÔò#©æh ¼¶’T=¼¨AóX›­n6vGâËbgKxúó~U`3uƒU´òÉ>·/ Nÿ+ÚùcYã–NWê8½Ê—WžÀûÿd»©:6}Õ ˆøíe Êþ;Y|høq\Ž#ì^NWæˆÄü-ç*ÇÕª[óFÔ?.¶5ß›×°v&éßÙIñ;_nä÷ Å$[UÅAE%T4ôò. ò×È«V¾§‘@½ýöSšù›oå>Ußy²ùÁÛìlä¸4? Sš— *Òµ,)Ǭ€¾¼ŠÆÊæúCúQF_í ­ÛÀ}½jŸ” ÜÛš“söUF1›&ë‚—5”¦„CަÜ;±s™ºJQ™Dðâ*ÜÔ"TPÄM\¾µÞ÷»}ïf²'okõY¥QHÖâëÇ™#µîJ@  ²êÆ9RâånwôŒ 1¾¦þ2ßgŸÖÂ;—|nÙôjÐ.Sa5VÆËSÃ¥J eŸPb¾°*°5”Åœðó,–ú:÷÷Nç~lö_—mà ¿ÚKXÊ£ðލZœ{ xÉ<ÃÓxä}Áo¹zÑ1âÁXإʟÍHûMz¬¿æ½*;Gä_íÈ#&Ì¢ÃìjiQZlŽéÎU%}u:IÃÈñÕä £ÐxI {~¢N}ï9–nz÷¦×”¶X¼gÛb†Æ0¢­%ÔìÔ$‡’8tðN'¨ëŸ/ræ±·]F±Šy»‘ûH_´®×¦ú×Ô=e³º÷T¹‰Q¡íN4=tÖ&³ç¯ó›sfé%­ÚyõìmÃGXï"Ru–Èš™0 ã"ÊíV>†p¡5>Ÿå}Ö¹"Îo¼?ÞY÷[øL›<ûƒÞÌ­S¦ÆÔ¨†­M c@>¾ÿòGöÓþzoã–ýŸ‰ûGùfúºzߊ•{ž°§- ɈÞÝe·é?½ÒbÎXš ÝŸÆåL¦‘éuH#ñ0°RHk{¬wö{fûÏ_ò”“ûA5ÚòŸÕÈŽêÆñÂÇâv\L’WIާN“äjF·klæ©KÙ/Wß²oêþ¤¤ï®‹ªÞ4ÿߎ¶Ü4‚Ž›¶6„ô•9øÊïžÎØÛoÅS_˜ªízþÊ£ÛŠÌb޶£•ÍÕfh©#j§T”†žÌd‘Þê&÷_Ú¼vͲI¾{…y¸n¼¿kFyp{å‡È3G$­*¨Ôk BTêe6ãü¤»_¥wGJdúÛ¯6Œ»}lšš\¯bÑÖWœ½Fð¬Ì£ÒSox3OHõ0U oÛ½7ÇCR:K'ºÌ¿¹·8r.íÈ—|¯Ë[1°æ Y/UŸÄ7--Un„¥T°m zGEAUev±þäÿ™CÚ¿ø÷ÏþóO`ÏqÿéÞsçý)oí^²Ûwÿ’Vçÿ<òÇZÌô=oäû+IÑRVÇÙI—lCãòXlMP¤Rùm¹úªÏ÷'ù¨ÿÊîîÿÐÿ©û$÷–?Õ¿ü¤îö_µÛOC£÷3øåÿœ°Ð}YÄJ çŒè£Eرe!ßPç{0îµÌ¿›'&rnÔÞ³×ÔUT’:¶«šC*ÌŽñLŽ6de'3þï6¼Ëeí//ÛsŒs¯4­Þåõ^1¬†sº^´ŒÍRY:ƒ©*à†BT‚dUKÈö+T¿ /CͯW^4„’|ëÆ£ˆÇFWÜÕЋªJþjßñþu7þ9ïýÜÁï˜ß_ùZùþ•óÿÕåê÷;ýÍÚÿæ“LJVð‹þÉc¨?íK—ÿÞ§=ï0>ì_ôâ=»ÿžií*~‡¼›ÿ*ÎÓþ‘¿ãíѪ÷<ô&ëÞý׺ֻç”(~Uö‘Éù žm¯= ¿è|klͼ”~Shš ¾’+v¹÷ŽlW±ûõÏfúµfµd'èíÂiò I§â \׬yçus>çây”#ìðÖŸæûzØs­ªðÕÝw°ë6é€à*vnÙ› )t}ºâŸ DÔ qÒéP ZÞûÉSí·\Ê—6Ý/¶ÛtÓO„aO (€Pã‡SÖÞн…‹ÛÓÀ0¦špÓ¤Sùtµö&égZäÿ0ª¬WÊ=çüÀÓÓâv¥.~Zr¬²g!ÀQ DŽŒÊóÓã42ZÅ2Œ5)÷Æ¿½ôû\þús/îÒ†T·µYÊð3¬ Z‘‚ˆèT©È=cÿ>4-Ì·ž 5@Ôþ £ù@~Êu}%JŸ¦zŽ Ás—‡¬v YS/2”{W•ÆCe»š ×às﫞ØÇ{¶ÞÞŸ“ûÁv;-xø‚Ö õùê­z›¶a"íRÍý¨¶‹WÛ¡küú©¯æ‰ÕÂ÷nÌî,u1Z=ÓGýÐÜ’Æ F¹ì,RUa*gm µNOe„rG8œûôrÐs-ûg-¯ãúK’)`Ôƒ? °Àó‹½ÉÚü+«MÚ5ì”xoþ™r§í+Qö'H®ØùJwÁþ²ëá_åÝùLÏ÷+x)ž¥°]f˜Êê*š@‘ß1nF‘ÏîIëw!ˆ óÿ¾Ç˜þëü‘Ê"ïW1OsôWÕom:3b¤ÌÍ‹ÜË(î!ˆGºs/ÕòfÝa®·lþžºa¡ÿ¦¬f¾d7ôhú{âúf~eöŒØådz±u}›EäŽAP¹ÈÄû°–8êqºE`UûɆ–ÔÅçOn}Œ]Ëòô–cúǾ@û’TBq¦Kµ¢Š @ 4ƒIÔÚ„»O-‰¹[SøÝÊ™‡®¬Çæ¡ÞŽ8Ôü ùCÒ¹þÓÅnyÄX ¦ÄÌnªz9æX}Ѱhkr”øÊU”]*³™jâ²ÝÞX¢]-a§þéþíÚûg»så†ù.¦}ªk¥F`¥®¬åX–¼hŒ«Œ–XÅ |¾¦Ï>çË~ƒ@Îiß,ù²êhIø±r]×òc'Ú©NJS‘ìLÝTÅš:­çž®ª8 þO4¦eÉÍQ_ÜÔ<±ý,ÿÝK•¯}Ì÷²÷žwáãG¶¼›„ìkF¼ÛÀ­jkâ™'\ñƒ$ð6ä‹)7Žb“r¹–ecë#§ùÕ‡ú^¶÷Öî§N½ïÝ{¯{÷^ëÿÑßãߺ÷^÷î½ÐsÛÝs…íÞ®ßÝe¸4®'|m\ÎÞ©¨`  ’¾ŽXèò‘_Q‰­ñÔÄOH”Ÿ~è3Μ³cÎ|§Ì\«¹PYßÙË à.¤,ƒúQ¶—_é(ëG 6¾F=Ý&ËòãÛ-ã}¯çZèWÙÉœO”d¥1Ó®<Ô‹ùÛJýFÃߺàKm7+¼¶Å®3x.¼ ë½~u𠳬ÐiÏ·‘êN¼Ãõ/Wì³À•|VÇÚx=·MPªªkÛA =NNP¾“S•«Y*e#õI+Ï¿uß~Må«.Nå>\å]¸ƒgag ßÇ¡iô¤j»z³Ö³ÿÍïª(6Ê$ÞX©)V›·v–3u×PDê³Ñî C>ØÊÊÔÊ %.N ]5H’äËU%EÀÓsî¹a÷Ñäûn]÷iwËFAõd—€åfްHtù,‚4}_‰ÚOLžoä©Ô¸¼g\vouÏ-V{unH¶9"™&ªÃ`vÍ-&_ “¬nM,™ì¦bx¤ÌtȶWõ{©ûî)ɶ–œ±Í|÷#Fû…åд@-P*ÈàÐö™d‘IVÓ0Ãfï½û¬öꈞбñޜ˳Ý2À]|Í xý *Ç}f4yµ`?#ߺç¿ßåÓ÷W¶‘ë!¸½4®hØN4ŒüÇDwâ/ó)ÎüNê™ú·ÔØëO6ëÌn“˜­Ýµ˜I–L½&*‘¨Å,Š€bÃò]µ‘an}Ô ìÇÞpöw”$å+^N†þ6¼’ãÅk†ˆÖEt鸠ðë]Y¯ th¿áð÷oýãÆÝÿщ’ÿìOߺ–àøÞ?ðš[ÙkÿÛ?CÆ?æ¾¾Lüê.žN³Àl,&ãÉo*­É§ÏÔîJÜ–?Ö;ß=C‹¦Z¬>11 çqÔ“¼È^FXe_~9cS[kÀ+æ~–\ŸP‡!9šÎ§ðIÿn¶4÷Ù>²¯{÷^ëÞý׺¤oæ«,g°:¦"£ÙÙ©^ êdHåÍ¢Å#¥õ*JиRE˜£[è}óïèèy»£t>‡¨oÜÒ>»kÏ„ßñîý1üÄ3];Ö;K­iz·ƒjÑÕÒG–ŸuUÐMZ*²uÙ##ÒGƒªHJ5iK áoù·°¿¶ß|=ÏÛžGåþJƒ‘`ºŠÂ6A+]#½#Ú9úm§mµÛ—mWX‹‘Z’xi>¾½ ð뛋þ|¾ÿCZïþÇ=Ž?àùÞðšÛÙcÿÛ?F?ëŸqÿFtÿœ‡þ€èÒüHùs¹~LoáC_¶1ÛG µö¦:®,m{åå¬ÊWeå†Jé«ç¡¡–8â¤cHUtܳ1bT,í÷|ûÂo~öóO1ZÝìíûeŽßˆÑÌ¥åyˆ.ddB@ ­X’HÒ&ånj¸æ+Û´’Ùb†( :ªÅ¸Ô动1üìø‘îª NÊëÈ#—±6Î,ãëð@G o ËSO4ÌÑÆ¹ìSÍ/€HmSøµH,ûÔ}Þï=Ì´ƒy> Üãc‡$Y’ʪØ‘ågf¥¨¦ΨÄwpøíÞSÜŸdb—’÷—ë6{g`-.üH.-ZµdŽB¥£BjLRDê¬j*Ú€[77îü¸­·Ü[ø!þÍ꬇ÌJò Ðð¦j2o¿æ™¿sxzš …ÖøM‘©àþ7”Üo*ª&’ãî±Ô‡·h¦%>¸Ž¦0ܲ0ãÜ‘Í_~ÞlÜöé­9S’ív»ÇB¾<·ñŸÅxñ†‡ˆ²-rTŒto{î]ôÑ4v;zC!Ô[Ä#æ”ûA.ƒ¿Š¿7÷|ïz~ÎíJ<½_¿÷“-”ÜqT Ÿdä%­5µt+XR¦¯’©ÔkkØÙK$eä,c{ ÷zæÏuùžwçËkˆùCê>¦Ynx»Œ…õ²&º3Ç#WÆœöYP³’P¿–9Vû{¼]ËsGõ³=k1­HÉüMÈ<6UTUDUDE ˆ *ª¨²ª¨°UP,ú{낪ª…P@:x`pè¼|¯ëš.ÐèÇÛ•OOU& £rák*dXb£Ím•9šyØ‚*¿µji\ƒhgp÷¿¼›mÏ^ÒóžÍ;"Ï«\Âìhkaã!-øCé1±òGnˆ9ŸoMËbÜ-Ø€Á ©>LÃ>U¥Èžµ¼ê]’½‘ÙÛ bIR”Pn½Õ…ÂÖUÉ4P}µetI_4rJBˆè¼†$úÉ U–ß}¿å‘Î|ñÊ|¨óâ¿¿†rBéÜ A5Y¨¢¤Ž±ók³ýá¹XÙ¢Ë*©<( ÉûiZzœu¶.:Ž“Ct´T4ÐQÑÓBºb§¥¦‰a§‚%þÌpÄT~÷ß«kx,íà´µˆ%´H¨Š0TUÈ.²cEˆ =à:Öwæw^Qõ¯ÈÞÅÃc^‹ËäbÝøø az·\+™©ÇɨÂ!S2D‚ÿäÂ6þÕ‡¾ò|ŸmÉ^òóŽÛdÉô7 ¸ÕºQ3FGáÑ#8Eÿ}è>tëÍö ·sá dxnÞ Ë_q*iò§Vëü¹úæƒfü{ Ýôµ9ŽÊËä7F¦žU˜ÁCŽ©Ÿ‡ÄÉ$lɪ‰(f’Áãš®DnVás~M´å¿h-7Åd}Çz¸’âFR”šb$vw#м®­‘A*rߦÃÈ Ëpå‰@ª¿• ù#£íï,:uï~ëÝ{ߺ÷_ÿÒßãߺ÷^÷î½Ô ®+Ædp™¼uc ˜ ¬ÅeñZ:|†3+ŒÈSÉI_ŽÈÐUÇ5-uu,ÏÐʱ±V=û¤÷v–›…¥Õ…ý¬sØÏG$r(xäÁWGF]IVV0$Aèÿe?âÏýãW@è›ë¯þÇ=û úÏ{Iÿ„·—?î[eÿZz1X¬f ŽÂa1Ô|6‚ˆÄb¨éñøÌV3O%;AI4´44°¤PÃ,qF¡T÷î‡Ö––›}¥­……¬pXÁÇq¨HãTDEQ@UU(è1Ý_º}ç*÷>÷é.¢Þ[— ´É_¸wW[lÝÜ­J:hh¨Ö¯-—ÂÖWÔ­%Žé^ÇÊÇì>Ÿêíùœ†Ž,|Yç×ûOteb ‚Ie††<Žs]V”pËQ#,AÂ+;.O¿tß9‘9žñweä­§p¿T%¹³·ž@€’<±»’´“Lž’?ì§üYÿ¼jèý}uÿØç¿tMþ³ÞÒá-åÏû–ÙÖž½þÊÅŸûÆ®€ÿÑ7×_ýŽ{÷^ÿYïi?ð–òçýËl¿ëOYq?¾=í½ß³÷æÏé޺؛³cd²¹<kblí»³kó[c9´²4yI6ö7ÙllØ­Á9O­uŽU{÷W³öŸÛm¯zÙ9‡dä³oÞ6ùdx¥´¶†Ù«,ÛºÈaDñÇ3v=@p®2½òGÑÉ Ñ¤±J±HªñÉ©WŽD`UÑÔA}û©•]YAB(AÈ ñyƒÐ~(|ZbY¾5ô 3YNuÙ$“rI;rä“ïÝG‡Ùÿi $û[Ë•ÿ¥m—ýië¯öSþ,ÿÞ5tþ‰¾ºÿìsߺ×úÏ{Iÿ„·—?î[eÿZz~Ûß:iW&SjtoOmœœlGoužÊÂ×#ÄI’¯„¦¨VŒ±*C\Ç¿ta¶ûkíÎÍp.öŽ@Ù-.<66±8#‡rD§Yèa÷î†Ý2î ··wn*£º°]Í„«hZ«¸1T9œUKSÊ“ÀÕüŒ4“43Æ®…éuXe›¾Ë³ó„ÛVý´Û_mrZˆ’h›I º£‘Y–ŠƒB3=½½ÔMÔ $'в†SLŠ‚éAÐÝ‹­¤Éc:cª1Ù}L5” ºÚ•´U”Ò,ÔõT•Tøx禩§•$ˆÊÈÀA–¾Ô{[auo{cí¶Á ä.¯‰·Ú#£©ªº2ÂYHXA½!M“e‰ÒHö‹U‘MAF#-A½ þÇÝuï~ëÝ{ߺ÷A¾á龡ݹjœöëê¾·ÜÙÊÅjó[‡cíŒÖZ©i`Ž–™jr9,]MdëOM Fœè‹°fïíÇ·œÁ¸M»oü‡²ßn’5Å•´Ò°U º¤’&vÒ *Ôš(`‹çÚ6«©Z{­²ÞI*Í3 ’ 4.™Ùwøÿÿ>3§ôYl¯þ²{,ÿYïi?ð–òçýËl¿ëOLþàØ¿èËiÿ8cÿ z÷û.ÿÿçÆtïþ‹-•ÿÖO~ÿYïi?ð–òçýËl¿ëO^ýÁ±Ñ–ÓþpÇÿ@ôñ´ú{¬¶à­Ü»emÍ™ÉaâÂdbÚ¸|v߯×QÁXk©ä©Æâ©©h䬆f`&Ñä(ÚXÆ;·\‘Ê›½Î÷Êܳe¶ÞMl!ZünŠúÔ´q*¡pI£ÓU ;k´íÖ3½Å•œpÈɤèP €j*_Ÿ„¯c^ŒzEnÞ¶ëÍüŠ›ßbí Ü#¢…·&ÜÄf¥§F ÚϤ¨š•†²U£ee&àƒì3Ì—ÉüتœÑÊÛvâ 76ñLTü-"1S“B¤r=#ºÛ¬/…/l¢—ý:+Sì$~]%°ú7kÕŒ†¨zç^Œ­u>ÏÁØ ƒOW-•ÜØŸ-Èý²§Ú?kv+w´ûy³Av C­¤ÖŸÂå /ûR+Šð&ƒbÙm›\Uº¿¨kùT~] ÞäNz÷¿uî™óÛ{º±5x уÃîL@B+ð¹ìecZ)ª!«§xì„u" ºxåMhÚdEabÛ¶Ñ´ïÛ}ÆÓ¾mv÷»TÔñ!ž4š'ÒÁ×\r+#iuVŒ¡†@=5<]Dð\Â’@ÜU€e45 Ð€~Þƒañã †^éàAÖ{(G ‚0—`±ìÿ´€‚=­åÊÿÒ¶Ëþ´ô]û‡bÿ£-§üáþèa÷"ômÐW“讑Ídk²ùžœê¼¶['W=~K)“ëÝ¥_‘ÈWUHÓUVWVÕb%©««©™ËÉ$ŒÎìI$“ì}íg¶;åÖã¹{q°ÜnÈÏ$²íö’I#±«;»BY݉%™‰$š“^‹$Ùvi¤yfÚmZV$’bBI7WÛp‹):ë~(û 4ÁÓÕÏeSBPK ðDŒ<ãI^JE htmlsingle/images/annot-open.pngEºü‰PNG  IHDR U.T±‹PLTEfff™™™$Ž€€€ª§™øøøÌÌÌf™1333ÝÝÌ3€Ìÿÿf“³nþþþ|ÍÍÍ÷ïï···TTTÌcˆWÑÄ®ÿÿ™‚ˆt÷õïûüôÆÇÆ<<4`@2xºú¹¬sJhPK ðDŒ>>???@@@AAABBBCCCDDDEEEFFFGGGHHHIIIJJJKKKLLLMMMNNNOOOPPPQQQRRRSSSTTTUUUVVVWWWXXXYYYZZZ[[[\\\]]]^^^___```aaabbbcccdddeeefffggghhhiiijjjkkklllmmmnnnooopppqqqrrrssstttuuuvvvwwwxxxyyyzzz{{{|||}}}~~~€€€‚‚‚ƒƒƒ„„„………†††‡‡‡ˆˆˆ‰‰‰ŠŠŠ‹‹‹ŒŒŒŽŽŽ‘‘‘’’’“““”””•••–––———˜˜˜™™™ššš›››œœœžžžŸŸŸ   ¡¡¡¢¢¢£££¤¤¤¥¥¥¦¦¦§§§¨¨¨©©©ªªª«««¬¬¬­­­®®®¯¯¯°°°±±±²²²³³³´´´µµµ¶¶¶···¸¸¸¹¹¹ººº»»»¼¼¼½½½¾¾¾¿¿¿ÀÀÀÁÁÁÂÂÂÃÃÃÄÄÄÅÅÅÆÆÆÇÇÇÈÈÈÉÉÉÊÊÊËËËÌÌÌÍÍÍÎÎÎÏÏÏÐÐÐÑÑÑÒÒÒÓÓÓÔÔÔÕÕÕÖÖÖ×××ØØØÙÙÙÚÚÚÛÛÛÜÜÜÝÝÝÞÞÞßßßàààáááâââãããäääåååæææçççèèèéééêêêëëëìììíííîîîïïïðððñññòòòóóóôôôõõõööö÷÷÷øøøùùùúúúûûûüüüýýýþþþÿÿÿ!ùÿ, Vÿ ¤”„œ*Œ‚ c,l€‘3Š5TrîÞEŠŒR,õ1"Š8•tx’¢J”D6|‰Q£Ë•ŒþÉdT £Bˆ(HTø/$9() ;PK ðDŒ<ˆÇÈá=I htmlsingle/images/callouts/1.pngë ðsçå’âb``àõôp Ò< Ì$Šå˜­S’·» ê^e# /ÙÓÅ1¤âVhßFÞ,û—|‘ÒÓÜë”¶¸ä¥™rJSX<iˆ|P_ò¿}÷Ù‹·"žñ…³­`^ÃÇÍk™¼Ñ±ÁWW1Ånƒ¸Æy­öØç°éŸH®½sm¬©¤TiKç±+ñ:bo†lZç\âQœŸVRžX”Êà ¡¬é™›˜žê›˜ž™œ­`¢g¤g¡`i©o`¡o`¨\”Y\Ré[Y\’™¬—Z¬—RZŸW¢—œŸ;q—â qZ`ã2ÓóKJæ™Z$˜¥˜¤$¥™›&'¥§šš˜š˜¥Yfd)¾êâé ZË`hTah¤m mÐ’»»Fž®~.뜚PK ðDŒ<×b8v¿ htmlsingle/images/callouts/1.svgmQkÛ0ý;ùWƒX–l'µ;e]³RØÂB ŒQ[±E4)ÈŽìÓïì4ƒÂw~wïÞé”Ü)h…­¥Ñ)á”:7…ÔeJÍÖ Éíbœ\9<-lÖÇÂl<*u¨›îQFù¾¯`yÜÛÀ“:”Σ:€ë³F 3Êܤ*`ʃ |à8½Äý·«ç§%Ôm ?Æ£äjùuõ¸z]¿ô©šf»n×u´ó©±¥ë1Æ\̑ſåG%õî-¢È²Hù‰¢}ãÿ®/‹”|ÎN¾p¸]§äÝy†ù+-Îðb¢“ES¥Ä÷ TB–UsŽ[)º;sL ¾‡ŒGP7'%RbPy«L·²–%æBgèœM–ïJkºˆµèà/õ¬×û,GöÞŠZØVàU’\Ú\‰K_|³ñ5 Y9ÀgtŠÑéÙ> .’Ë~}å…üö hó~Í£dŸ5Õ¥v+•Н? †2¸¹/œÑÀ '½ã¼bt:Ë}zNØ$@:œF3 ÃÏñi•O=¯å à ‘È[sŸòiP9XïãßÐèw?è(qqÔ×>ÇbüPK ðDŒ<îÈap¦¡!htmlsingle/images/callouts/10.gif¡^üGIF89a çÿ  !!!"""###$$$%%%&&&'''((()))***+++,,,---...///000111222333444555666777888999:::;;;<<<===>>>???@@@AAABBBCCCDDDEEEFFFGGGHHHIIIJJJKKKLLLMMMNNNOOOPPPQQQRRRSSSTTTUUUVVVWWWXXXYYYZZZ[[[\\\]]]^^^___```aaabbbcccdddeeefffggghhhiiijjjkkklllmmmnnnooopppqqqrrrssstttuuuvvvwwwxxxyyyzzz{{{|||}}}~~~€€€‚‚‚ƒƒƒ„„„………†††‡‡‡ˆˆˆ‰‰‰ŠŠŠ‹‹‹ŒŒŒŽŽŽ‘‘‘’’’“““”””•••–––———˜˜˜™™™ššš›››œœœžžžŸŸŸ   ¡¡¡¢¢¢£££¤¤¤¥¥¥¦¦¦§§§¨¨¨©©©ªªª«««¬¬¬­­­®®®¯¯¯°°°±±±²²²³³³´´´µµµ¶¶¶···¸¸¸¹¹¹ººº»»»¼¼¼½½½¾¾¾¿¿¿ÀÀÀÁÁÁÂÂÂÃÃÃÄÄÄÅÅÅÆÆÆÇÇÇÈÈÈÉÉÉÊÊÊËËËÌÌÌÍÍÍÎÎÎÏÏÏÐÐÐÑÑÑÒÒÒÓÓÓÔÔÔÕÕÕÖÖÖ×××ØØØÙÙÙÚÚÚÛÛÛÜÜÜÝÝÝÞÞÞßßßàààáááâââãããäääåååæææçççèèèéééêêêëëëìììíííîîîïïïðððñññòòòóóóôôôõõõööö÷÷÷øøøùùùúúúûûûüüüýýýþþþÿÿÿ!ùþ, ~ý 䔄Œ*Ì) ÄXˆ V­Þz“’Â_©ïþY¬`Ž7Œ”Mz°4G(æşJ©Ž`ß͵÷3÷u¯ê*^ô€õzéœ=’Œ/vñ³œþŸ(Û!qfA½äwæÔ·Ö¸Sös›û¶,é֓ж‹SDŸmµ¶¿»È9é4g¶ Ð9Î%®%Áùi%å‰E© Êšž¹‰é©¾‰é™ÉÙ &zFz ––úú† ÉE™Å%•¹•Å%™Éz©Åz)¥ùy%zÉù¹w)î§6.3=/±¤hž±…Yª…qR’eRJZR¢±‘‘yš©ER’…¥yªQ²E¢©À|m^ .>® µ †F†FÚÚ-¹»kAaèéêç²Î)¡ PK ðDŒ<=¸& Z!htmlsingle/images/callouts/10.svg…SkkÛ0ýœü U…ÁÀ’õ°%Ë[Ö.ë {VeŒ’:ªmêÙÁvâ´¿~WvRÖQ˜Ñá\ÝsŽn”ÙÙîw‰¶¶i‹ºJ0§ #[¥õª¨²oºá³Óéìˆti+Û,»º‰Ñ‡U}oÑUYnÚn ”Qî¡‹K4ß­ë¦C×å&#W¢¹=b¤(cè|S”+ò ˆÞ#Dˆ³øøýâæözŽÚm†~N'³£ù·›«›[TµwŽÂy×­cßïûžö’ÖMæ Æ˜5|úúø®,ªÇ·¸1ƪÐò Lð?×/V þ²|²ÍǦSµ ~7f8Ùñ 1Ò„B_¬º<ÁRb”Û"Ë»o ۟׻3Ä”ðÁÓ j»§Ò&¸燲îãmÑ÷¥=±Õ6r¿L³¦ÞT«¸²=ziýãv½L¡{ÝØÖ6[ W™¥E“–ö  ?Jýhãc6,èJ!W4ôt@؇æÌ/;4¿Ö‰ód¶^vùáìCQ–ññ§a L=Ψ£œÑ J%Ǽ€rNUÄÖŠjB‘ ªÕ–kÊ‚œH*Õ‚KÊùçAg1ê<»˜ÿ·dCOÓˆ©4€gfÀ6¤†ž3ÙÈj©Ò¡ CÈå8E^Ê ¼&)q ‘ÇFÂê(Ücwæ¦(4w7 •òxD¹Ò£·÷wgtÈ›â2åÔÁ…Ç?Ìcá¡ù`ÍÀ[I@Zhdž¼œ LJœ$8$BµÇCý‚ª…ö£FnáÁÞ{fì̇°ÿ‚W~:ýPK ðDŒ<·[–ÈÊ!htmlsingle/images/callouts/11.gifs÷t³°Läaàah‘ennnaaa)))MMM###kkkggçàààÔÔÔÌÌÌêêê¶¶¶þþþéÓ§Ï;wÑ¢EëÖ­Û¼yóŽ;Ž9röìÙK—.ݾ}ûñãÇoÞ¼ùðáÿÿþÀâOFFyM ;XݨwÝÌèêa`8R¢vx£šƒ‰Ó1UÞÉl,&NÔѲcp ðbhOq2)pšÌuñTìN;É«Y=¡É¾|Yh"#¾­F„‰ÁPK ðDŒžg‹}Sm·§wS„«ˆ¸|¢|RóúD¡y‡æ›9··œÍéázugÁë©¿?v??3çp‡üµÒ·»üX|/´utdÌZ¦âz·­-1$ÔUÞÁåõ®{yæ±×so³ø\#â*sÜvþùüÀi©×_ý['îºðuUä´ÚûÌ, s£•1,ɬÚy&“Kã"Û— e>ÛÜ7öœtD¢ÚFÎ5Ðà˜Îé[zŒ+ö«x^ºø1¦,šñCżöúµõÛËbÕOÊo}½ëô¦7o;VdÎ:ý´(¬%Ñ‚çð¶T÷ŽÊy¯wÕí[¤aÕ—<ëYb‚ý¤'ÅuÖLy¾‹u‘0t<]ý\Ö9%4PK ðDŒ<íp©ÒÖ;!htmlsingle/images/callouts/11.svgRýkÛ0ý9ù+®* ‘,ù«±c§¬kÖöQX”1Šc+¶ˆ&Û‰“ýõ“ídÐQìòãÞ½ÓÉÑíñ§„¯j¡UŒ¡¸Ju&T£}³ÅSt;GWÃW¼J]…ð.ÓK)÷uÓSÀlB ›À·õ,Ž¥®x”û/ž\!ø„R¸Û ™Ç\wúãÎâþëûÕÓãêCßÇ£èjñeµ\=ªŸ; MS†–Õ¶-i¢«Ü²)¥–É¡ùËãG)Ôî5 ‚Àê³FòØv…ÿº¾Èbô)9ñê™!0ÓQuŒÞ =ÌÎDØ—èšD+²¦ˆ‘ã (¸È‹fÀÁÛ;}Œ Žc nN’ÇHç­ÔmxµØH>ã*1¼IÒ]^é½ÊBÅ[ø#üúLR£.+^óêÀÍU¢TT©ä—ºæQôއ״£JMÌ'žA§ ª:€,#λñåñë=˜˜ucEeÒ—³[!exý¡cc&÷Ù#6 &Œ—Ù…Ù§©ClwB'.aÔÅŒøSÖáÛ$ðìÂ&7þÚv‰W`‡8þšu„û±¯³êüêÚü·5›ÏsþßÛ Îæv õüî‘eÆtÞ̯0ÿPK ðDŒ<êKÉÒ!htmlsingle/images/callouts/12.gifs÷t³°Läaàah‘f!!!)))mmm###+++ÿààุ¸äääÜÜÜ’’’¦¦¦žžžÉ“'Ïš5kéÒ¥›7oÞ½{÷‘#GΜ9sûöíÇúôéß¿ÿQâOFFy°M@ÈÀêÿ@=Êw“GÒ/K‡ÛR¯DxS}& ‰þséä>ðé —‰Ã%F›.ÝY’d16°]ô™%r‘¹@AFäE×Ã,^½UþO 4L >î©ûÏÉÈ` PK ðDŒ” Ñzþ˜KbBP›ŽþI í0Sémõ ×¼_Ãe¬#ñ‡QÛ;LPwÛLÝÍŸR›öç>o»ûú齂÷Áç++ùû„>ÿœ“(r7¯ÜF®zÞõ¬­³8T<Ý[æ÷¸->þøâ…wón¿ýö° BGìðÃe»mçŸÿYóî÷¿ô•ë²Ooò[>yŠG“Eßõ×[ßÿ¾þZÔaÞsņ»ÞåmçnbpX~ÙR®?sS„ÞtSÍÔâ‹>Kk÷ßÏžõ¬R®áúkVY¶½qï÷šw)/lðœd"Ï ¡¾:T¢íòË/uû¥Û%ØV­Ò›î=ïùªUM)‘Ó6ß|3]ýCœ+0t4@aÑT·?^äèv¦IA§Î¦Ïôñ¹¼%ךÇY‘eÀ½cÿþng|ÀœÍ±º´ÃßdPƒ§«ŸË:§„&PK ðDŒÌN_înîîQÝ=¸.ú~“†á0 t´ióP0ÆBØÃçßWeýü'Iú] üS'üOûåzŽ?­^lûÀ1‚éÔÝ¿3œ ©—ËÂÆP®ûbޥč°e^ô#Þ•v¸lösÌCRÂO'¨ë_*;Ç 8?UÍîÊ®|¬ì™­WðGWÙsÞ6ÛzÖv@¨£ÚmV°7­íl»³ÐÊ,+Û¬²G]ø(ͳMO™_ÀÊ 7Tz9¢Ö9wãËä×3À:scžÌ6«¾8ž}*«*=ýèØÀä>+spF<ãLR¡(Ê™"œš˜;"h¢E!hd–BQ]I¥YrWP×^g9êür1ÿoÍ#*¹ ¸W•1¢©V¼˜6n¤€Š‰Gìb ¹45h"PS°›d,€ˆ"†Ðqb@Hqµ–NH© :ž«cJ H-Ç\’r¥ •ˆCƒÚ‡d” ÐLÀ‘AE b §32±÷–”E€¨¢"qÎ,‰XSÆ#h‘ƒTLõG•Pdô÷8ó/àá_¥kQ¹JE.Z"®ÇÓ…p ¸êçÓßPK ðDŒ<þñŸÈÑ!htmlsingle/images/callouts/13.gifs÷t³°Läaàah‘fnnn!!!YYY}}}SSSwww__ßÀÀÀèèèÄÄÄœœœ²²²–––®®®É“'/\¸póæÍ;vì8qâÄåË—oݺõèÑ£7oÞ|üøñß¿ÿQâOFFyM ;Xý¨ûùòIú¥ép[k•rHGclÛd¶im6¼*L":œ?3,PÓ}rpÂyo††–• ÝŒÿ)Û½s]ô4Õ¶æƒyÛW¿þU·ÿý÷j†G?2Lx^i}tÛ[Ïi§—¾ÞÅ0ï¼zÿa«¹ç^ÍR=^xì±aò ®@‘ÒØÿ«nçmgxöùg†É«²ÝóžÿÜwÿýwóÙgw¿Ë`^µ:z °¨±Ëžõí5“ïe‹çùë®gËŸ–ºrUVd˜Ìñé§[÷ Þ:þßíÏu†œ¿¯9õDÚÙ¨“ÁÓÕÏeSBPK ðDŒ,arÚÐñ°çø$U†FÍFÁž,âG'éR‘ãT9 `*ØÝÞªTQË×À&±Á O‹išUÏ¢3QqWÚ“&Ý~«È` PK ðDŒ< Üš ›!htmlsingle/images/callouts/14.png›dþ‰PNG  IHDR Ù˰bKGDÿÿÿ ½§“ pHYsssŒ"¹tIMEÒ ¨xœ8(IDATxœ}=ªÂ@…O2…ˆ¤Ð¬\ÁÂìÀÙ‚ˆÛ°ÄX¤Ð"¸†Y€;@Æ)l”T!H!„ûŠø¢ðà}ååÜË=ŸCD‘µÖZ;9ç­V DDDqÏf3Çqê¡ïû§Ó‰~qXk¥”ÓéTQ‡¤”Çãñp8|.)¥¶ÛmUUËåçüõz­×ë~¿Ÿç9¹EQh­ƒ 0Æh·ÛQEàù|j­¸Ç£,ËÅb‘¦)€Ýn×étn·›¢ÛíÞïwîx<þ.’çùù|ö¡øƒŠ§’q~IEND®B`‚PK ðDŒ<Ç0Œ!Š!htmlsingle/images/callouts/14.svg…Rakœ@ý|÷+&(tÝ]×Õ3gBÓ^“@ÒB)áâmT²ÕC=½ä×wVïJ[]d}ÌÌ{oft~¶ûi ÓuSTeB8et™Vë¢Ì²mŸÜˆœNçG® ºÔõª­ê>¬«G WÆl›v”QîÀ·å,v›ªnáÖl3÷ª:—£G Š2çÛ¬!àRFï\×Z|úúñîþvM—Á÷éd~´ørwuweó`C$oÛMìy}ßÓÞ§Uy‚1æaŽœþ]¾3EùüÏf3oÈ"åšZáÆ/Ö ¹^½èúÀí”MBÞ=œìñ 1†ˆ‰¾X·yB|Ÿ@®‹,oGܺ?¯v aÀÀ÷ñ!Ó 4í‹Ñ ©ÐùÉT}ÜMñhô‰.WørWésVWÛr—º‡ßÔÑ?n6«Ù›Z7ºî4Ž2O‹:5ú ‹¥zÖñ1²Rl€+ z9 Úâ!9³ëËä·{Àsb×<™oVm~¨}*Œ‰?mps7’r©Ψä"Ç;J}*¤ÃL0érª"nq¨\AgÈ ÕRHä®O}µä6 /å¨ójÛü¿µˆ¨ BG0ú"G«hö§r‡w¨¢ÜU4ugòZ öR©rŸF<èÐR*ß³­W4ŸÀÀIwxD9W)s±E9Œ²PXÍ™ØãZ{Ä22X$BáØÐåȇ™{¸õý…ÖéôPK ðDŒ½Iéä 3 §ššô=Ïçœ~(ØÁÁÀ d%Ãwü±áì³f³Ï:-lqqq™÷ÜTª÷ËŒ“)Ï>ÿüý×/¦±Ãâù®u¯wéþT¶{«Ž·ÈÑÓO­Z•yß¿ù`‚…Œ[à–½ì­Q2Ç»&Íô˜ôd—ž ¡Ò­³®Eo¾W3´%s[¸3¦noÜî»| Õ6r×_—šÍfudxPcç¿ürØêÔYi+C¸ 0LNÝ¡³lòí·eË/Ÿ|ZT(c?ÿ|ÖV®Φ ï¿3VÌ{þ{ßc‹í·sOL™è {PXlê=þø÷ß{¯¿î;lù|Ö²‡ý9·ýj,çú-Ïۮݕ”®5õkÕßÚk‹ÎÅ^?ûüó×*[]†œ—óW\·f’€Ç  Q ž®~.뜚PK ðDŒ<*uv}>!htmlsingle/images/callouts/15.svg…SkkÛ@ülÿŠË Ýê^:=b'ô‘¦´ 4B)Á‘/’ˆ*I–œþúîIq!%Ð쇽ݙ•´8Ûÿ*Io›¶¨«%À)±UZoŠ*[Ò]÷À"zv:_1F.le›uW7 y·©ï-¹,Ë]Û)"$pù¾º çûmÝtäºÜeì²"0&WGB pNÞïŠrC¡uô–ÆÅÇonn¯ÏIÛgäÇ|¶8:ÿzsysKªöÎ¥hÞuÛÄ÷‡a€AAÝd¾äœûxGO_–ïË¢z|­AÄqì·ØòIÝàì›%½Z?ÙæNP‚Û©Ú%}3i8yN$ãˆ)=B¼ŠM—/©R”ä¶ÈònÂ}a‡÷õ~I9áD)üÑùŒ´ÝSi—´F懲’¾h‹ûÒžØjì~>fM½«6Ieò·uâOÚí:Åîmc[Ûô­,Ò¢IK{˜‹¥~´É1v¥(@=Pãõ±9sëËͯkÀsâÖ<[l×]~¨}(Ê29þ4¤ÁÍ}Q ÃظÊ0Î9è(U µÇ= ‚k&ÀDÂáÐ0 q s ¡éE\çL2+#ÔçqÎjšóÛÉü?µˆAié ±V)#† ”ò¨X"ŽUè)dŠ&œJ(–{ƒEA¤'€Ž 2ÎRîIP2BݨØ3 ¤`c9áMƒöX -3ÚE.Lî,¡|ÓGÂãEÑ8Õ¸š l¸zŽÓ Àz>c…œ"åŽ@8'¡dÎHˆü(u©sÏU!— dàÌI©J¦˜“¢ÊÑÃ}‘»èØ{ ‘’9ÚÃÕ\½Xæô>¾)Ï¿†ÓùPK ðDŒ<ƒ¤Tô½Ô!htmlsingle/images/callouts/16.svg…SkkÛ0ýœþ Í…ÁÀRô°eÉM:öèºÂ^°c”ÔQS϶óhýެdÐQ˜ W‡«{ï9çÚ™¼Þÿ®ÈÖµ]ÙÔÓH0WÍ¢¬—ÓhÓßQ½>?™¼ ”\ºÚµó¾isòfÑÜ:rUU›®RDHÆ™ˆÉ÷Ù%¹Ø¯›¶'ߪ͒^Õ„ ÉYàȉfœ“·›²ZT$‰yE¥žâý×w×?¾]n»$?OF“_®¯®º»ñ©hÕ÷ë|<Þívl§XÓ.Ç’s>Æ]tþ´|_•õýs ÂZ;nÑò ¤~ð?öËÅ4ú4p툶SwÓèeÐpvHäÈ .vå¢_M#¥"²rårÕ¼-Ýîm³ŸFœp¢~ÑɈtýCå¦Q滪ÙåÛ²+o+wæê9z;/î—m³©yíväokàÏ»õ¼@÷ºuk·V&EÙ•;ÎÅKiî]~ʇ]ÍR ‡#j=ˆÆh^úõ-ÍÏkÀsæ×<š¬çýêX{WVU~úax@ƒÍ}VÌ Î!Wˆ¦PL&1&xBÓFxœi*™MåJ²LÏdÂÒULé™ð‰äã0gæà ÌäTã0žä_XpÊ\f‡9J逡QÛü°”TI€1 ¿ÿƒ «@À,¤ÁF&â`CÀ¬/–"ûvùH>Kì(CöGAC½ß˜ÅZyÀ2ÐcŠIðO‡Å 7z<ðc† UªhP0¸•}n=0ߌøã'jÂg1ãû=üGÏOþPK ðDŒCM{Ö*Â8ïuÕ]Ñ;­ªŒáCvqòœÕÕ±LƒRõèuòšCœûP«FÕ‚£„IQ'Z]tá§TÏ*¸fãV¸¤ óÕÀ&³a|Ù…üzX‹a̳ð·ùeï¾Ð:¸þ0.°É}Ôv}ƒÃ(]?gÔöA-Û`†M9³ §Òãv%±¨ïX¹E]Ùq—2;'‚ ¹å !>Ž:ÛIç×óÿÖ–K=áÞL&ƒ•à§.X9Ôc®!©Ç%‘ÔâŽÁ!ƒmÇMø’± Ѥ°\g WÕ, ðŸåăT–fcâ»2çÖv2œB†&Lóå7f9ÿ PK ðDŒ<ÊJÌä;!htmlsingle/images/callouts/18.svg…TkkÛ@üìüŠ‹…‚´¾·ï;¡IÓ4ÐG ÁJ Ž|±ETÉHò#ùõÝ;É¡) sövwfgeOw¿ ²qu“Wå$b@#âʬšçåb­Û‡ÄD§'ãÃ$!—®tõ¬­ê”|˜W÷Ž\źiCˆ0XL~L/ÉÅnUÕ-¹.Ö‹äª$‚ÓŽ#%(%g뼘Ť4ï IOññûùÍíõi6 òó`0>¼øvsusKÊæÎ‡¢eÛ®Òáp»ÝÂV@U/†œR:Ä»èäuú®ÈËÇ· ˜µvn±ä’úÆÿŒŸÏ'Ñ—Ù“«ïXDв™Dï: Ç} -ºp€x±Íçír ‘¥Ë˶ÛÜmϪÝ$¢„!ð HÓ>nUÈüPTÛt“7ù}áŽ]9ïä~–=.êj]ÎÓÒmÉKiÇŸ6«Y†Õ«Ú5®Þ8eœåuV¸}_\JõèÒ#¬ÊPÓ =íQíA4Äâ…·o±/~[>ÇÞæÁx5k—û܇¼(Ò£OáAtî«ÃDÌ(HÆ—xšL—1%0*Ú0G:á`_ré)— –‰¡§ÌäçÐgÚõyö2ÿOͶå1ö²Jg‰ayL‰9¥{¬€•Ñ„‚Ñ3°ŽÙ˜ƒ²ÜW1‹dƒ µ )1I8–SíÕÔ£X¡± ÷-±XpƒÅZéX@’€qxÅ N¯ÀçPc’ eà 1© ^G «M,@ ž¡Y'@'”W'%f«{ =çèC Õã×ý•½ñ+CžI0wû·Lïgä~;8ž0²< Zm¿½:<¥oèqÌÀÑ0ƽ5ª»çÞkmŒïÎh3Â(±c_iñÚpTŽÛçÞUÔeµ_1ØŽíépÖ³yÙ‚*ï–= /ÞRjüXRvqš>çÜ¿s(„áÆýL=?:ï üKM÷ö‡ø3éü+89øPK ðDŒ<^­}«­!htmlsingle/images/callouts/19.svg…SkÛ0ý;ýª ƒ¥è·-7iY»®-¬[a%PÆ(©£Ú¦žl'Nûéw’AGa"H/:½{wOòìt÷»D[Û´E]ÍFh€l•Ö«¢ÊæÁ¦{Âqpzr0;Ä]ÚÊ6Ë®nôiU?Zt]–›¶ó[ˆqB ÑÅ%ºØ­ë¦C·å&Ã×"~s1h$HJÑÙ¦(WH1)ãaì$>?¿»¿½@í6C?&³Ã‹ow×w÷¨jÜVwÝ:™Nû¾'½ u“M9¥t ±àäíñ]YTÏï˜1fê£@ù¢.ñ?í«yðuùb› p§jçÁ‡¡†ãq#ñ)†m!Ы.ŸB(·E–wÞ¶?«wó€"Š„€_p0Am÷RÚyPƒòSY÷ɶh‹ÇÒÛj ~\¦ÏYSoªURÙý¥úI»^¦À^7¶µÍÖB+³´hÒÒîóÂ¥ÔÏ69¢~+…˜& ÐË5S gξlO~¿ÇÎæÉl½ìòýÙ§¢,“£/~€ 8w# “:d”DRç”È8„ˆ 3¢cæp¤1'Fñœ“HoYD¨d9D脚èÊgZ ™^]¡ÿç”p®BXbo)¡\¤ð, ™S )1Šƒ`2~Öqʈ€4„Jb‡“œÄ4Æ’DŠƒî¤ÄLÆ~6),‘'3Å¡ ;,%þUS‡5ôa®U‰*"¸I)–£ŽŒ8Ö„ñPyIbªˆ¡Î7j0–DSøO4uJÀ€¡ÃŒ8už:d7†{·A»N„aWƒ?¯è†ƒ®€Rá%(áåFƒÆ‚À@9BpB)¨ “Ò¼ºTQÞcgIìÛ’»nH/F b'qÎ 1L8QJYÈAQ³±„ðMAÃmϦð0Ç >¾“ƒ?PK ðDŒ<±I‹ htmlsingle/images/callouts/2.gif‹tüGIF89a çÿ  !!!"""###$$$%%%&&&'''((()))***+++,,,---...///000111222333444555666777888999:::;;;<<<===>>>???@@@AAABBBCCCDDDEEEFFFGGGHHHIIIJJJKKKLLLMMMNNNOOOPPPQQQRRRSSSTTTUUUVVVWWWXXXYYYZZZ[[[\\\]]]^^^___```aaabbbcccdddeeefffggghhhiiijjjkkklllmmmnnnooopppqqqrrrssstttuuuvvvwwwxxxyyyzzz{{{|||}}}~~~€€€‚‚‚ƒƒƒ„„„………†††‡‡‡ˆˆˆ‰‰‰ŠŠŠ‹‹‹ŒŒŒŽŽŽ‘‘‘’’’“““”””•••–––———˜˜˜™™™ššš›››œœœžžžŸŸŸ   ¡¡¡¢¢¢£££¤¤¤¥¥¥¦¦¦§§§¨¨¨©©©ªªª«««¬¬¬­­­®®®¯¯¯°°°±±±²²²³³³´´´µµµ¶¶¶···¸¸¸¹¹¹ººº»»»¼¼¼½½½¾¾¾¿¿¿ÀÀÀÁÁÁÂÂÂÃÃÃÄÄÄÅÅÅÆÆÆÇÇÇÈÈÈÉÉÉÊÊÊËËËÌÌÌÍÍÍÎÎÎÏÏÏÐÐÐÑÑÑÒÒÒÓÓÓÔÔÔÕÕÕÖÖÖ×××ØØØÙÙÙÚÚÚÛÛÛÜÜÜÝÝÝÞÞÞßßßàààáááâââãããäääåååæææçççèèèéééêêêëëëìììíííîîîïïïðððñññòòòóóóôôôõõõööö÷÷÷øøøùùùúúúûûûüüüýýýþþþÿÿÿ!ùÿ, hÿ ¤”„œ*Œ@Š c,ÂÚ¹wÆ È¨a)kïuÀˆ!É= ½ÕŠˆ ¡Ë÷æ4DÐÒ¥’sµj"0IòÊ—#×Ü#††Œþ1ät®é9”ò|©P`Iš9() ;PK ðDŒ<¯ ©ÑWa htmlsingle/images/callouts/2.pngë ðsçå’âb``àõôp Ò< Ì$Šå˜­S’·» ê^e# ¯ÚÓÅ1¤â–lßBÑÃ<.ö&&:¦:"_¸boØpA›ƒ­-­eÍA&o^nÖГîKªw}/ÝqûZöÛÝ;?¸ç°,Ùi÷³÷Á‚ÎwdˆwNàû1OpÉ¡já×Fý•ÓLs×3Å}Ù©ªpá7O¯ËúåÚ"þ‹û¼4k»­êCnš&Ìׯ_ t†s‰kDIp~ZIybQ*ƒƒ†²¦gnbzªobzfr¶‚‰ž‘ž…‚¥¥¾…¾¡BrQfqI¥CneqIf²^j±^JiA~^‰^r~îÄ]Š;€ÆiËLÏK,)šgaš˜jjd™li’hžfbž’šœœ–˜’hd‘˜œd™’ö4#/PHWÐZC£ C#mmƒ–Üݵ °ótõsYç”ÐPK ðDŒ<ý4¼=ž htmlsingle/images/callouts/2.svgmRýkÛ0ý9ù+Të¬/˲·¬k×öQX(”1Jꨎ©gÛ‰Óýõ;ÛÉ`£ÂØÏw÷Þ;4»Øÿ*ÈÎÕM^• À)qeZ­ò2Kè¶}f–^œOg'Œ‘WºzÙVuL>¬ª'GæE±mÚ!D„Â#ßïoÈõ~SÕ-¹+¶›—†àý蜓Ëm^¬H ´¶ï a¬·¸úöqñpwMš]F~L'³“믋ùâ”Íc¢ë¶Ýľßut ª:ó%çÜÇ=ÿ·|_äåË[E‘?d‘òM{áÿ¶Ÿ¯úyùêêGA N§lúnìá숉1<@Ltùª]'T)JÖ.ÏÖíˆw¹ë.«}B9áD)|ètBšöµp ­Ðù¹¨ºx—7ùSáÎ\¹Ä{Z¦/Y]mËU\ºŽü¥Žþq³Y¦ÈÞÔ®qõÎáVfi^§…;êâ¡T/.>åÃBVŠ ¢×#ª{@}$gýø²#ùípõcžÌ6Ëv}¬}΋">ý4,´ÁÉ}‰ÀëáuPÒ¦œÐ&ò4„J²¸´F"3âTåÖã³Jy¤>@2è6I¹§@ Ã0)”€$Ó tà Ò)&Œ’ž«-&8רjXÉØÎÚ‚‘z‡B¡¼@kâeÕ¬oR{ï©¡Á>MߦÌà­ °}•AѸ å„<àl p‹”‡¡ÔJËFÿ§ãÇÇß~‹&êq`°µP·Ã¼~÷ç0™ùx‡Þ¶óéPK ðDŒWi )8$%k‡‚0©V †ßpIÔ… ‰Îà©r¨h€º04¨!Ö¸&“X{fAhÂ]y() 7Ž—šdÄŠP–À€ JiL‰•\bÇ>âl¸„t¸º¥ €Wï3ü«õì¶ðe9¤€´ ‘qýBÃN8C% œÄ#Ô$qæI<Š6×ïèö²¶ÃzI@¶;ß)K@2¶hƒý8Æð/ög´ï…sùŹEÁ`À ù„%'lØ"(,Œ÷viðKŒ4í( äÂ;°wœr§,L‰Ê2Xöž6|ÕÄ â,‚Ç<~ÁöxúPK ðDŒ<”âs!htmlsingle/images/callouts/21.svg…SýkÛ0ý9ù+TKÑ·-7iY·¬-죰(c”ÔQmS϶c§ûëw²“ÁFaÂ8ϧ»÷Þ”ùÅþg:W7yU.0§ #W&Õ&/ÓÞµO$ÂçÓù !èÊ•®^·U£w›êÑ¡›¢Ø5íB\PFy€¾­®Ðr¿­êÝ»”Ü”ˆÁÕ¨#CC—»¼Ø Í•ŠÞ"Dˆ—øðõýÝýí5]оO'ó“å—»›»{T6>„³¶ÝƳYß÷´—´ªÓ™`ŒÍ`Ÿÿ¾/òòùµn­ »PòD=ñ?íç›þ´~qõǦS6 üfôpvÄÅ lôù¦ÍXJŒ2—§Y;â.wýeµ_`†’< ¦})ÜW üTT}ÜåMþX¸3W®á‡<®“ç´®vå&.]þ”Žúq³]'P½­]ãêÎA+ó$¯“ÂyáPªgŸ²aAU¸¡ÐËÕà§~|é±øu°Îü˜'óíºÍ޹OyQħ‡20¹ÏšJf.)×î½·fÅõ0¯_þþ?[n©²g`ËfŒªÈPZ ¢œ)pb"îqh@Ãj‘ è…w<¤Le`^¾‚ª’üzàZ\£ü|áð‚Ë~>ý PK ðDŒ<+fgú!htmlsingle/images/callouts/22.svgµSkkÛ0ýœü U…ÁÀ’õ´e7nY·¬-ìQX)”1Jꨶ©gÛ‰Óýú]ÙÉØ£°Lçøêž{î=Rf'ÛÏ%ÚØ¦-ê*Áœ2Œl•Öˢʼîî‰Á'ÇÓÙ!èÌV¶Ytu£Ëú΢‹²\·ÝB\PF¹‡>\Ÿ¡ùvU7º,×¹¨‚×£FŒÊ:]åi®”yŽ!NâÕû—W7—sÔn2ôq:™Ìß]]\Ý ª½u!œwÝ*öý¾ïi/iÝd¾`Œù°‡Lß–EõðGQä»@ù¢®ðOãË¿Y<Úæ–cîTm‚Ÿ=íñPb 6úbÙå –£ÜYÞxSØþ´Þ&˜!†¤„O'¨íK›à”ï˺7E[Ü•öÈV ø!w‹ô!kêuµŒ+Û£oÔQ?nW‹ثƶ¶ÙXe–MZÚ}]8”úÁƇlXÀJ¡P èq°äÌÙ—íÉO÷ëÈÙ<™­]¾Ï½/Ê2>|=,çÞJ…Âã’*£RF4ÕJ{Š28y¡<ˆfÄ©¤"Pƒ˜ÑÇi$vPS 6I™' l§&  â‘Tk—©•J‰ bàj£`CI©%`ÃOR®tR‰k¡¨>—44)\U#Ðc® È\“a`eIY(\y(©¨ˆœ.‹ÂÖ”ñäPÊF‡T%qê;œŽ?Ý€Ê%À­wEâ|pë‹;…ß;Ëa ˜è/¬Õÿf­ükõ/Öæ„s¨ÿn®|Ê\ù¹áÎÜѰÑÝ™·|÷‚òñô+PK ðDŒ<3©ƒ!htmlsingle/images/callouts/23.svg…TkkÛHýœüŠ© ÒxÞ3Rì”v7Ûºmaƒ¡,KqdÅQ%#Év²¿¾gf䅖Š`ÏÜǹç\gùêékKŽÕ06}·J8e ©º²ß6Ýn•¦‡Ì%¯®/—/²Œ¼­ºjØLýP×Ûþ¾"·m{§pD¸ Œò”üµ~Knžöý0‘Oía—Ýv„†ÃuìQC#oM»%š+å~%$Ë|‹ß?þv÷ùÓ ;ò÷åÅòÅ͇»Û»Ï¤¿ø£¤ž¦}±XœN'z’´v Á[à.¹þ>ü©mºÇŸ%ð<Ïá)ÿ ©/üÃøÍv•¼ß(B‰x .NÍvªW‰” ©«fWO›êô¦Z%Œ0"%þ’Ë 2NÏmµJzt~hûSqlÆæ¾­®ªnƒWv¿)wCè¶EWÈ©±1î7%²÷C5VñÂ(˲ʶ:×…)ýcU¼dáAV ÜP ô|FƒÉÉ;/ßîœüsx®¼ÌËýfªÏ±MÛ/ÿÚ@¹?%Í­H¹¤Ê©’ešj¥SE™6œ*ʼnq—’ £R†3§MÊi.f¨©´Ý.J– »ŒS—RÜd’jí#µRe&¨¹Ú)\() µvܤ’r¥kKe.ÖBQýNRëJ¬ª@Åý˜§ ClîIZãBgI™¾ã2~IYüêT>[ï‰åâ]Pë_ïÂÿ++85Ò*j¤©Õ•ØX÷9­Á‚A£ˆÑ™y5 …)Åwþ†Kq˜3†’þ}ŠØ:Ucn.PÊSæÂaxe½P.À*¹à#^P$¸¨¨Õb¶‘C"o#ø‚!shصæ°ž˜Á¿Æ† ;3cï J ˜{æÒZÔWÁÇòˆã,ЈÙÔï]l‘f† ë\ ε^(Ø>Q–Ñœ‡EðçÖ7UAG`(,• kÁ3Êg¦ˆÃyNÂ…U´ó„õ‹x-‹6/ø¹Íø—r}ù PK ðDŒ<&ÝÞ˜i!htmlsingle/images/callouts/24.svg…SkÛ0ý;ùª ƒ¥è·e7iY×®-´[a¥PÆ(©£Ú¦žlÇNûéw’“ÁFa"8ϧ»÷îžäùÉöW‰zÛ´E]-Fh€l•Ö«¢ÊÁ¦{Æ&89žÎ0F¶²Í²«›}ZÕO]•å¦í|1N(a!ú~ηëºéÐm¹ÉðU…ˆÞ Ò„Rtº)ÊRLJó!ŒÄÙ·Ïw·ç¨í3ôc:™œ½»º{@UûèBAÞuëd6† ‚ÔM6ã”ÒìǧoË¢zy¯€Åq<ó»PòDñ?ã«Ep½|µÍ# ¸Sµ‹àÃØÃÑ.xŠ1ì!l ŪËÊm‘å݈û§õvPD‘ð ¦Ôv¯¥]5(?—õôE[<•öÈVKøÃOËô%kêMµJ*; ?¥£~Ò®—)T¯ÛÚ¦·0Ê<-š´´{^8”úÅ&‡Ô/¨J¡¦‰ôºGÁ Š3g_¶/~¿XGÎæÉ|½ìò}îsQ–Éá¿@œ»‘$ŽxÈ‘F¦+¢¤ %¡Jc8y.Cˆh3âT®eH!f”‰ù*"" j“”†Â3bb D’i,ˆR.SI™bN¸¯UF† „€ Ó¡ Lª<""æ÷\u)IdR¸ªcУ® È]“‘6^YqG”’ðØéÒ8ÚaE(‹`@TSâS%—Ø©ïp:¾„t|uJ—·Þ5óKïÖ›;…ÿ;+\×2ä %x>âgÊ¡1¡{xBë¹›€÷ SyÍa<ŒˆÔ¹7¤g”h¥ó]µçzsã¢È5Ú„ÌÆ4L&Ýdà˜ãô^9 f‚<`•Ä#Ç/øåX?3ŸÁ¥Ú=àÃ9žþPK ðDŒ<‡ ddà!htmlsingle/images/callouts/25.svg…SikÛ@ýœüŠ­ …‚v½÷¡Ø)=Ò4Ð ¥”âÈKD•Œ$ÛI}gVNKK¡‹Y?ÍîÌ{óFš?»ûÞ]쇺k™`<#±-»UÝ®Ùv¼¡>{vz<D)9mì—c×äùª»Žä¢i¶Ã˜BDHÆ™Èɧ«srv·éú‘|l¶kzÑ–‚WGA,㜼ØÖÍŠ¡µJ¥HñêÃËËÏÏȰ[“/ÇGóGgï//.?“vø†¡¬ÇM1›í÷{¶W¬ë×3É9ŸÁYvúçõ»¦noÿ• B³t )_ ÿÕ~½Zdo—÷±ÿ&2î´Ã"{2i89ŠTb 'ûz5V‹L©ŒT±^Wã„wuÜ¿èî'œ(¿ìøˆ ã}YÌ7M·/võP_7ñ$¶Kø£×ËòvÝwÛvU´qO~¥NüŰY–½éãû]„VæeÝ—M|¨ Céncñ˜§Y%–@÷¨GÍ yö­’ÿ­Ö Ú|4ß,ÇêáîMÝ4Åã×i 8÷N±àd.Ó^—œf´É5ãÆR˜¼Ô9D¬Ÿp©˜´:çóÆæ‚y€†)gí¨ä¹„°§‚ù`¡–*f Þ4Z—T2™r×p •„e`/l®˜Ð¦rLy%53os¾„WUBÅ|%Pèán@‘ÎúĬwËCIÍd@^ÜÆ…ƒ”ò”³tUKM‘ý€Ëé!çÓ#6¨ñ¼õ(,È7É­8…ÿ;+9³:~g¡ dVPW8(u¹.A» É^qph‚†éðÛ]•ÜÎåm-¨Q¾ÅùP‡¡“Çh»JíÛJ1…Jà3NÐMïCªép¹ '.Á,˜ŒŒ07(¦¬;`ôB$/P“—؆G«&Ûµ/±Wcr¼e¹&.Õ¯áK©Š© ¥Áf, @Pá†ä;ɼ’4¾¼ýÃÉÉýù ¾‚Ã_úéñOPK ðDŒ<ë£lE+³!htmlsingle/images/callouts/26.svg…TkÛHý;ù[¤õþÖ®c§\Û\hï å8Š#+¶ˆN2²b'ýô÷fW>èQ8a¤Ñì̼7oF^¼yþ»e‡zØ7}·Ì$«»ª_7Ýf™=…ÏÞ\ž/^ûPwõ°ûaÎ~Y÷÷5»iÛ§ý]L*.¸ÌÙwØÕó®Fö¹}Ú7ãÑy—0æÌq!ØÛ§¦]3+ñ?3Vñþ÷w·_>_±ýaÃþ)4GûêèQ)ž#Ò6¨ÉV U¼Áh¡I˜xâ" 9í j¨D‘Ö0±9­¤Òá°]Dô”Œm‚  ?ÿŽMZ‹Å ŸçtÃ_Ðåù?PK ðDŒ<ðMq.;!htmlsingle/images/callouts/27.svg…SýkÛ0ý9ù+Të¢o[nÒ²n]SØGa%PÆ(©£:¦žl'N÷×ïd'ƒÂDˆŸO÷î½;ÉÓ‹ýÏ‚ì\ÝäU9 8°€¸2­Vy™Í‚mûDãàâ|<=¡”\»ÒÕ˶ªònU=:rSÛ¦íC„ `ÀCòmqM®ö›ªnÉm±ÍèMI .„`Œ\nóbE4W*~K¥^âÃ×÷w÷·W¤Ùeäûx4=¹úrwswOÊæÁ‡‚uÛn’ɤë:è$Tu6Œ± îç§ï‹¼|~À­µ“~)?PÔþ§ý|5 >-_\ýÀ‚Ó)›Yðfðpv$}‰!ÜCÜèòU»žRdíòlÝx—»î²ÚÏF‘ÁxDšö¥p³ Bå§¢ê’]Þä…;såôq™>guµ-WIé:ò‡:è'Íf™"{S»ÆÕ;‡­LÓ¼N w¬‹‡R=»ä”õ Y)à4¢—#ª=&HÎüø²#ùu¸Îü˜GÓͲ]sŸò¢HN?ö eprŸ%ØH„\‚ŠUʨ­t¨€iCñä… 1bâ§„Q!ÃX¬MÈÁŠÔ #ƒj£”…Ã1å[ƒ…7T‚Ö>S+•R¢çêXᆒ RKÄ17¡®ô:iÅB(Ðs QœâUXÑ¢ó(Œ1×z“‘‰{e ,¾<–T ¬×e6:` ŒGØ ÇR1eЧ*¡¨W?àtx ÙðêT>o½7fżŸÖ/ ÿŸ¬°ÀýhH¬ÌÁ /Qä½Ähßø†Ñ¿À¶¹næÜ‚Æ^¥úa(Ï¡ø©¢Ów‡ç ƒžóxÁ=ÛȬ¹XôZƒ½é¯Éá?…óñoPK ðDŒ<á.ó‹O!htmlsingle/images/callouts/28.svg…TýkÛHý9ù+¶*HãýÖ®c§\Ó\¸Â…@9ŽâÈŠ-ª“‚ìÄIÿú{³’Ëå(œ0òhvfÞ›7#-Þ<ýÝŠÇzØ5}·ÌÉLÔ]Õ¯›n³ÌöwEÈÞœŸ.^…x_wõ°Ú÷Ã\ü´îokqÕ¶»}r ¥I’ÊÅ7ïÅåÓ}?ìÅÇöaS\u‚’ófĘ ORŠ·M»NY~¢(âÝïן>^ŠÝãFüyz²xuùÛõÕõ'Ñí>³+Ûî÷÷óÙìp8ÐÁP?lfZJ9ÃYvþ2ü©mº/ßKP1ÆY:EÊ_åÂÿi¿Y/³_VÏõðYeêt»eöÃÈálrÌS‰ÑLšõ~»ÌŒÉĶn6Ûýh?6õámÿ´Ì¤Âü²Ó±Û?·õ2ë|×ö‡ùc³knÛú¬îVø+nWÕ—ÍÐ?tëyWÄ·Ô¾»_UȾê]=<ÖheQ5CÕÖǺJÿ¥ž¿–éBVÊ“ƒõ|´6²’7,ßæ˜ü}¸ÎXæ“Åýj¿=ÆÞ5m;ýsºå~5K+C6ØJŽœu¹%é|Ék›ÃãÃhW†´·¹„/8Ÿ+Šz2™Òí¤’¹†;ŠBô(d•/ 9Ç‘ÎڪФS® Öh$g`åsCʺmI&êmÉ}0T† «ªQ1O2…b#“,}HȆd©¹Ô]=¬§~(ÙO›þ¾f7m{§bRqÁeÊ~¿ûÀ®žöý0±Oía›ÝtŒ‡à]ä(™ãB°·‡¦Ý0+ñ?2–eDñþ·w·Ÿ?]±ñ¸eœŸ-_]ýz{sû™uã %»iÚ—‹Åétâ'Íûa»PBˆÖ’Ëoj›îñ{ ²(ŠEXEÊŸ ¥Âÿ¿Ù¬’_ÖÏõðE& êtã*ù!öp1ÊP"†Ä©ÙL»U¢uÂvu³ÝM›úô¶Z%‚ ¦5~Éù§ç¶^%=˜ÚþT›±¹o닺[ã‘ݯ«ÇíкMÙÕ'ö-5ò—ã~]!{?Ôc=kŒ²¬š¡jë—º0¥¬Ë×"\ȪЀtÜ=¿ @²@ò–äÛ¾$¿\$óÙr¿žv/{š¶-_ÿ.Ð@¹š¹J¥æÆ›Jd–[cSÃ…uœW&EÄùˆ+Í•3©@Ì[—J^¨Z®s¶³J¤ aŸIî ‡BFºLski§5¦ÊW!×zƒ£´ÕÀ^ºTsiì.çºPwÊp{­yî+U…Šøµ¡A½5™;˜5¹¢ò(i¸*ˆWùŒ-2Ç€¥|&xØj”Ɉ}ÆU|IE|¥ mÀ©§Æ uÔúJ.ü¿²J@âa9 ¨iB¢®Ì&)4 á<¹<ÀJbt’й·YÜ©¸fέ¢I[´/Œ÷ŠfqÕ cOå i& ÉgÛ ÌÀ8¹Ž®)ˆ‹Ê‘Å@}ÈT‘”µ¼d;} $îh;BêŠâNH° M¦@¬ˆIÓ ø—Ñ ††L¾Ž*}eòSu9gÒØ.6™B kƒ‘d-dáÐ`jÀ$Šwú›‘çLÏùá¼¼#c •å(œWå#úO+Ñêå¹ù†ÏÊåùßPK ðDŒ<Ø,ù —’ htmlsingle/images/callouts/3.gif’müGIF89a çÿ  !!!"""###$$$%%%&&&'''((()))***+++,,,---...///000111222333444555666777888999:::;;;<<<===>>>???@@@AAABBBCCCDDDEEEFFFGGGHHHIIIJJJKKKLLLMMMNNNOOOPPPQQQRRRSSSTTTUUUVVVWWWXXXYYYZZZ[[[\\\]]]^^^___```aaabbbcccdddeeefffggghhhiiijjjkkklllmmmnnnooopppqqqrrrssstttuuuvvvwwwxxxyyyzzz{{{|||}}}~~~€€€‚‚‚ƒƒƒ„„„………†††‡‡‡ˆˆˆ‰‰‰ŠŠŠ‹‹‹ŒŒŒŽŽŽ‘‘‘’’’“““”””•••–––———˜˜˜™™™ššš›››œœœžžžŸŸŸ   ¡¡¡¢¢¢£££¤¤¤¥¥¥¦¦¦§§§¨¨¨©©©ªªª«««¬¬¬­­­®®®¯¯¯°°°±±±²²²³³³´´´µµµ¶¶¶···¸¸¸¹¹¹ººº»»»¼¼¼½½½¾¾¾¿¿¿ÀÀÀÁÁÁÂÂÂÃÃÃÄÄÄÅÅÅÆÆÆÇÇÇÈÈÈÉÉÉÊÊÊËËËÌÌÌÍÍÍÎÎÎÏÏÏÐÐÐÑÑÑÒÒÒÓÓÓÔÔÔÕÕÕÖÖÖ×××ØØØÙÙÙÚÚÚÛÛÛÜÜÜÝÝÝÞÞÞßßßàààáááâââãããäääåååæææçççèèèéééêêêëëëìììíííîîîïïïðððñññòòòóóóôôôõõõööö÷÷÷øøøùùùúúúûûûüüüýýýþþþÿÿÿ!ùþ, oý ¤”„œ*ŒAŽÄX‚7kÞœAèsÎ!€ðoÍGF +¦¨XòcŒˆ´:g &˜sŒ¹g²aJ-8«å2(£w1r¼#tÒC­îÝkq¢À• cZUˆrd J ;PK ðDŒ<næyU^ htmlsingle/images/callouts/3.pngë ðsçå’âb``àõôp Ò< Ì$Šå˜­S’·» ê^e# ¯ÂÓÅ1¤â–ªßjÑÃ<Â&_¤Ûâ–n1Ø -"Çó†‹}·[BŠÄ µ—«M»w™?tçÎUõ›¸DÙ Å#D.-x^øŽË›ç袭Mb „_œ]øáôüÆ×զؾ¸½_WYbúϯïúæÍ ¶Ú•t0÷MÐ9Iµ,éçw˜&ÿyÝëtƒs‰kDIp~ZIybQ*ƒƒ†²¦gnbzªobzfr¶‚‰ž‘ž…‚¥¥¾…¾¡BrQfqI¥CneqIf²^j±^JiA~^‰^r~îÄ]Š;€ÆiËLÏK,)šga””’hdnd–’’˜œj‘˜d‘h`˜fj™’j”š”’Äñ—¯¨‹¤+h-ƒ¡Q…¡‘¶¶AKîîZPÀyºú¹¬sJhPK ðDŒ<2Aíu+ htmlsingle/images/callouts/3.svgmRkkÛ0ýœü U…ÁÀ–õ²,»q˺u¥°¬Ê%uTÛÔ³ƒíÄé~ý®$g°Qä“û:÷\ÝÕÅáWƒö¦ê®Í1##ÓݦnËïÆ§Pã‹óåê$ ѵiM¿»>Cï6Ý£A7M³FgBŒJX€¾ß]£«Ã¶ëGô­Ù•áM‹ˆ3ÞyŽ )B)ºÜÕÍÅLJý¡0´¾¾¿½ÿv…†}‰~,«“«/·7·÷¨¬ Wã¸Í¢hš&2 ÒõeÄ)¥øðù¿á‡¦nŸ_K`išFÎ )?ÔþO~½Éñ§õ‹éF0vÈñßÃÙlÈ\ ovS½« Qeê²=Þ×fºì9¦ˆ"!à‡— 4Œ/ÉqÌOM7eûz¨sfÚ5|ÂÇuñ\öÝ®Ýd­™ÐßTÏŸ ÛuÙÛÞ ¦ß²*ê¾ẖ.cN”Ö[Â5ÜB(°ÅRÃ-Sî1°. Ðù{ ²X.u ¢$”PJ‚Ÿ…Š-«=, ܶ¡S#BJc¨% …<ÊTÈWÌÖMl;ÂR$zO U’Ò4©‚è4µ¥¸à3–DñÂ*MbÛ}’pàŒC ÌÀa¯‡m‡Ž)‘|†Š(¡*A´P Ø)Õp'PTIøÇmG2–ÔÍ0L9Vjm2ô‘:^žíˆYIÊÍ^ÃÌ%‘ñŒïü£ý¶K±XE°ó«¾üPK ðDŒ<-)ík!htmlsingle/images/callouts/30.svg…TëjÛ0ýÝ>…æÂ``+ºY–ݤeëºRØ V eŒ’:jbêÙÁv’vO¿#É)ëÌéø»Ÿ#ÅÓÓÇŸ5ÙÚ®¯ÚfqÊ"b›²]TÍrm†ûÄD§'‡ÓWIB.lc»ùÐvy»hï,¹¬ëM?xá‚2Êcòíú‚œ?®Ûn _ëÍ2¹lõÆëУ š2FÞmªzAR®”yCH’¸ᅵ]Ý|='ývI¾L_¾º¼º!MëLÑjÖÅd²ÛíèNÒ¶[Ncl_tò2ü±®š‡%ð<Ï'Þ‹”hê ÿE¿ZÌ¢ó'ÛÝòˆ@¦ŸE¯Ã Ç£¡ð%‚ÙC8vÕbXÍ")#²²Õr5¼­ìî]û8‹aDJü¢ÃÒOµE-:ß×í®ØV}uWÛcÛ̱%wóòaÙµ›fQ4vGžSCÿ¢_ÏKd¯;ÛÛnkAeZV]YÛ}]Jû`‹#æd•€kš=íQç@4AòÒÉ·Ü'ÿ{<ÇNæƒéz>¬ö±÷U]Güƒ6Pî“¡B›˜+ª¥^1š SBVfb jR0Êr=bA%S%ƒM …U7©[¥MʳqßœµJ$奰å<æÔ$)U™ˆSªU€¥@}Œ‘ºSžŠÍRá›0˜3a lÜ„ÌMƒ’ uÍSš–4Æ=×Î:ž”¥zÄ’æ%Ì=³L£¾Ê5º£RÀ §Ú GŽnŒJ=B kÌJ:j'”c·¢,£9X…#œg®©ò:Ca©”W8‰‹äzš›H8>Âë® ·¤†ø:Ø/wþÆ"CÚŒ*]ªñpA œ…¡¡™tz¤nBP6˜6O5¸½}xOü)ŽØùÎxn(‹˜ç]ùŽñÝ‘ý,B¸h‘ ¯>,Nf3B|t2> ¡¨Ìe⯦³«>>???@@@AAABBBCCCDDDEEEFFFGGGHHHIIIJJJKKKLLLMMMNNNOOOPPPQQQRRRSSSTTTUUUVVVWWWXXXYYYZZZ[[[\\\]]]^^^___```aaabbbcccdddeeefffggghhhiiijjjkkklllmmmnnnooopppqqqrrrssstttuuuvvvwwwxxxyyyzzz{{{|||}}}~~~€€€‚‚‚ƒƒƒ„„„………†††‡‡‡ˆˆˆ‰‰‰ŠŠŠ‹‹‹ŒŒŒŽŽŽ‘‘‘’’’“““”””•••–––———˜˜˜™™™ššš›››œœœžžžŸŸŸ   ¡¡¡¢¢¢£££¤¤¤¥¥¥¦¦¦§§§¨¨¨©©©ªªª«««¬¬¬­­­®®®¯¯¯°°°±±±²²²³³³´´´µµµ¶¶¶···¸¸¸¹¹¹ººº»»»¼¼¼½½½¾¾¾¿¿¿ÀÀÀÁÁÁÂÂÂÃÃÃÄÄÄÅÅÅÆÆÆÇÇÇÈÈÈÉÉÉÊÊÊËËËÌÌÌÍÍÍÎÎÎÏÏÏÐÐÐÑÑÑÒÒÒÓÓÓÔÔÔÕÕÕÖÖÖ×××ØØØÙÙÙÚÚÚÛÛÛÜÜÜÝÝÝÞÞÞßßßàààáááâââãããäääåååæææçççèèèéééêêêëëëìììíííîîîïïïðððñññòòòóóóôôôõõõööö÷÷÷øøøùùùúúúûûûüüüýýýþþþÿÿÿ!ùþ, hý l%%E %¥*T a r,l@É¿9 %¶¢áÜEŠ”6lUêƆ104Ôr½“¨ a2Å=F*c2ó¯gÏR(Rð’"#9†z[ãPaÒ¡R(È)1Ž ;PK ðDŒ%åVÂJ©CÝ pAåüØÜÃò¸/«žÔ!ÕWÐÜŒ>Ì(cp{ÈU6·,÷#€®÷wß?¯ŸŸ–P·)üœN‚«å·õjý EýÒS$kš½o]×ÑΤe•‚1fàYü~Tyñúž€{žg »(ù…¦}âÿÚÏ“>>???@@@AAABBBCCCDDDEEEFFFGGGHHHIIIJJJKKKLLLMMMNNNOOOPPPQQQRRRSSSTTTUUUVVVWWWXXXYYYZZZ[[[\\\]]]^^^___```aaabbbcccdddeeefffggghhhiiijjjkkklllmmmnnnooopppqqqrrrssstttuuuvvvwwwxxxyyyzzz{{{|||}}}~~~€€€‚‚‚ƒƒƒ„„„………†††‡‡‡ˆˆˆ‰‰‰ŠŠŠ‹‹‹ŒŒŒŽŽŽ‘‘‘’’’“““”””•••–––———˜˜˜™™™ššš›››œœœžžžŸŸŸ   ¡¡¡¢¢¢£££¤¤¤¥¥¥¦¦¦§§§¨¨¨©©©ªªª«««¬¬¬­­­®®®¯¯¯°°°±±±²²²³³³´´´µµµ¶¶¶···¸¸¸¹¹¹ººº»»»¼¼¼½½½¾¾¾¿¿¿ÀÀÀÁÁÁÂÂÂÃÃÃÄÄÄÅÅÅÆÆÆÇÇÇÈÈÈÉÉÉÊÊÊËËËÌÌÌÍÍÍÎÎÎÏÏÏÐÐÐÑÑÑÒÒÒÓÓÓÔÔÔÕÕÕÖÖÖ×××ØØØÙÙÙÚÚÚÛÛÛÜÜÜÝÝÝÞÞÞßßßàààáááâââãããäääåååæææçççèèèéééêêêëëëìììíííîîîïïïðððñññòòòóóóôôôõõõööö÷÷÷øøøùùùúúúûûûüüüýýýþþþÿÿÿ!ùþ, qý 䔄Œ*Ì EŠ)ÄX Ç¿w•HᯀŠÿ|ÉH#ÈVΉÃG‹„”œãôK!}dô®¦IZ>R:÷1†G–ÿ”„ðFi§¿ ½»W ÂFЬä¨Ð%† ;PK ðDŒ<ÔþQ\ htmlsingle/images/callouts/5.pngë ðsçå’âb``àõôp Ò< Ì$Šå˜­S’·» ê^e# ¯ÌÓÅ1¤â–hßBÁ#<,ü\RmRRR«X§ø*Á&ÕÆV§ï”±`Áÿž9éeßX&M—?zÞ·éᵨÜkò‡%™s·˜Pž¤RS|§PåÌǸÕ+šªBK¦òo¸wEä…Ì×HÉ)ão±Fkofm•Q>ûkÍs~åhs}§øúß@8—¸F”ç§•”'¥28h(kzæ&¦§ú&¦g&g+˜èéY(XZêXè*$e—T:äV—d&ë¥륔äç•è%ççNÜ¥¸hœظÌô¼Ä’R yi©f–&fÆÆæ–©IF¦©¦fFiÉÉÉÉ–IÆÉæ©÷7YÎêâé ZË`hTah¤m mÐ’»»lž®~.뜚PK ðDŒ<«›MIÇ htmlsingle/images/callouts/5.svgmRkÛ0ý;ùª ƒ%ë—eÙ[Ö5+…n+¬Ê%uTÛT³ƒíÄé>ýNv3è¨0òãtïÞ½“gûßílÛUMaNF¶Î›uUÞöOÄà³ÓùâˆtikÛ®ú¦MѧuóhÑ•sÛ®Cˆ Ê(лK´Üoš¶G7n[«Ñ1x7i¤HSÆÐù¶rkq¥ÌG„ñß?ßÞß,Q·+ÐÏùlq´üv{u{êîÁ‡pÙ÷›4 ‡a ƒ¤M[„‚1Â>}›¾wUýü'Iާ@ù¢¾ðö«u†¯W/¶}àÁtê.æN^éXb †jÝ—–£ÒVEÙOxWÙá¼Ùg˜!†¤„Ïg¨ë_œÍpÊO®Ò]ÕUΞØz?ò¸ÊŸ‹¶ÙÖë´¶úGôÓn³Ê½imgÛ+‹¼jsguáRšg›³q+‡¸¦ —j=À! ?¾â@~¿X'~̳ÅfÕ—‡Ü§Ê¹ôøË¸@&÷•+ÊdÀOD"g4†01pª…"0ãD’F‘žp.¨Ö à]È1ÊLPSÅ9ÎróÒe,‚˜rÅIL…PΉ¤œ™€ME,ˆ¯‘VÚˆšH–’&¾®ÍÔìLꩪߡêˆG5 Ç¾A(Ài”įX‚™(g‹µSF&d2ç\L8÷n¥|ÚX¼HÐÒ»SÂ8ŸGÆnÜèˆpýyíÒ#žì$•L•Äøñ\¿èa³EWöºÁ³<ÿPK ðDŒ<‚†Q)ÌÚ htmlsingle/images/callouts/6.gifs÷t³°Läaàah‘d EEEMMMCCCKKK//¯   ìììâââ–––žžž)S¦Ì™3géÒ¥k׮ݻwï±cÇÎ;wïÞ½çÏŸ¿ÿþû÷ïÿ±ÅŸ,ŒŒ ò : ›@v2°†?Pwó T˜°B‰Á@äíÆmR}Üßñ6Ÿ^ø4QmÂ!ÅëF…í綦¦Ugòžç}ëèø¼r×Vž–ü‘W'îäÄ8•úÝX+²úƒb÷êLÑ„¥6ÜûÍœrè®àmõ'o®/Øÿ\çðéi©r2?®ìH_èç³r‰Ï{Þÿa¿~è°ß\lñŠk‡t$Ð!Î%®%Áùi%å‰E© Êšž¹‰é©¾‰é™ÉÙ &zFz ––úú† ÉE™Å%•¹•Å%™Éz©Åz)¥ùy%zÉù¹w)î§6.3=/±¤h^Š‘iй¡¹YŠ™y¢±EbZ²a²©™©©EªqJZ’aâ_¯[ºø@º€Ö2Uih´äî®…ž§«ŸË:§„&PK ðDŒ<¾5É–^ htmlsingle/images/callouts/6.svgmSkœ@ýûò)6 ÝÛ_®®¹KhÒ4 4m !J oãI¬ê—|ú¾U¯’EÆ·³3óÞŽãìt÷§ [[7yUÎ=N™Gl™VË¼ÌæÞ¦} bïôä`väÒ–¶^´UOËêÑ’«¢Ø4mï"\PF¹O~Þ]’‹Ýºª[rSl²àª$´wÞ  Ñ”1r¶É‹% ¹RñGB‚ÀQ|þq~{sAšmF~Lf‡ßo¯nïIÙ<8—·jÛu2v]G;I«:› ÆØgÞÉÛð]‘—Ïï%pcÌ´?EÊoºÂÿ]?_νo‹[?p ;e3÷> ŽGGÒ—Ü=ÄA—/ÛÕÜ“Ò#+›g«vÀÛÜvgÕnî1ˆ”x¼ƒ iÚ—Âν ÌOEÕ%Û¼É {lË^Áã"}ÎêjS.“Òvä_êÀŸ4ëEŠìum-®2Kó:-ì¾.>Jõl“#Ö/d¥À5 ^ö¨vÀ›"9síËöÉïkÀ:vmžÌÖ‹vµ}Ê‹"9úÒ/Рs×ÜPδÏÕ‘L §0ŒÆ È0*ŒpŠM¨bŸ’r©}A b%‘öCªâ¸`”…Úï-ø')£¡tÕ"ûœ†}yr_£œ*Ð"ÇǰEN¸V#Ö`á)ó•N‡Ö~DE(M•‰ܳÀÁTE”CjH™4#6Ô:½dÓ÷Ámw•¤ã2cŽ g.LÂ*Ê4‡fÇ=æÍì™–°*vV‡Î£#¨НC?_É5¾šæÊç!L”.^AŸpjPß5b9У“}›ðiÓ÷Åùzè"#N±»?·Š ÌÌø<‚,= ðßÈyus4™M1I£ÁßrrðPK ðDŒ<Ã)Ø ‹ htmlsingle/images/callouts/7.gif‹tüGIF89a çÿ  !!!"""###$$$%%%&&&'''((()))***+++,,,---...///000111222333444555666777888999:::;;;<<<===>>>???@@@AAABBBCCCDDDEEEFFFGGGHHHIIIJJJKKKLLLMMMNNNOOOPPPQQQRRRSSSTTTUUUVVVWWWXXXYYYZZZ[[[\\\]]]^^^___```aaabbbcccdddeeefffggghhhiiijjjkkklllmmmnnnooopppqqqrrrssstttuuuvvvwwwxxxyyyzzz{{{|||}}}~~~€€€‚‚‚ƒƒƒ„„„………†††‡‡‡ˆˆˆ‰‰‰ŠŠŠ‹‹‹ŒŒŒŽŽŽ‘‘‘’’’“““”””•••–––———˜˜˜™™™ššš›››œœœžžžŸŸŸ   ¡¡¡¢¢¢£££¤¤¤¥¥¥¦¦¦§§§¨¨¨©©©ªªª«««¬¬¬­­­®®®¯¯¯°°°±±±²²²³³³´´´µµµ¶¶¶···¸¸¸¹¹¹ººº»»»¼¼¼½½½¾¾¾¿¿¿ÀÀÀÁÁÁÂÂÂÃÃÃÄÄÄÅÅÅÆÆÆÇÇÇÈÈÈÉÉÉÊÊÊËËËÌÌÌÍÍÍÎÎÎÏÏÏÐÐÐÑÑÑÒÒÒÓÓÓÔÔÔÕÕÕÖÖÖ×××ØØØÙÙÙÚÚÚÛÛÛÜÜÜÝÝÝÞÞÞßßßàààáááâââãããäääåååæææçççèèèéééêêêëëëìììíííîîîïïïðððñññòòòóóóôôôõõõööö÷÷÷øøøùùùúúúûûûüüüýýýþþþÿÿÿ!ùþ, hý ¬%%E %­*”CCr(Ô Õ¿‹ÿ¬ˆá¯€1œ£€Iµ<~Ì$)÷Z~D ó£µZ.œÌñOŠË8?2º‡À%#J>Ö ú1…B!.›*È))Ž ;PK ðDŒ<}î”NX htmlsingle/images/callouts/7.pngë ðsçå’âb``àõôp Ò< Ì$Šå˜­S’·» ê^e# ¯ÈÓÅ1¤â–jßZÆVžÿ0¥HÅM›Ä:×¼ñ™ê¿OtÂÔ5¹î'ë=OVíùÌdgf¸ß] ,h»s‰kDIp~ZIybQ*ƒƒ†²¦gnbzªobzfr¶‚‰ž‘ž…‚¥¥¾…¾¡BrQfqI¥CneqIf²^j±^JiA~^‰^r~îÄ]Š;€ÆiËLÏK,)šgdialfahb”˜lbœœš”bdja–b‘bhhlžl‘’¦fùr&PHWÐZC£ C#mmƒ–Üݵ  ótõsYç”ÐPK ðDŒŽn(…GUª:i«:„YµQ°4æÐ´B2΄ß×°8í«º…'sÈé²6ë‹GSÆ9Ü´É`"\×@ioñðíãêùiÍ1‡ãQt³øºZ®ž¡l^zŠm»m»ë:Ö9¬ªs[rÎmŒ‘ù¿ÇOF—»·"{ˆ¢ä'šö‰ÿk_g1ùœœUý"àtÊ&&ï.5Ì^‰pHq¡ˆNgmÇ!P(íµêî«SL8ppüÈxM{6*&:oMÕ…GÝèQ3U&¸ÑM’îòº:”YXªþJ/þa³ORTïkÕ¨ú¨°•(ÕujÔ5/^JµSá-ªR,@LÙÑùŠêÅy?¾ü*~»\³~Ì£hŸ´ÅõìVÞ~Úàä¾H—Iß ØtšRÁîZø2>>???@@@AAABBBCCCDDDEEEFFFGGGHHHIIIJJJKKKLLLMMMNNNOOOPPPQQQRRRSSSTTTUUUVVVWWWXXXYYYZZZ[[[\\\]]]^^^___```aaabbbcccdddeeefffggghhhiiijjjkkklllmmmnnnooopppqqqrrrssstttuuuvvvwwwxxxyyyzzz{{{|||}}}~~~€€€‚‚‚ƒƒƒ„„„………†††‡‡‡ˆˆˆ‰‰‰ŠŠŠ‹‹‹ŒŒŒŽŽŽ‘‘‘’’’“““”””•••–––———˜˜˜™™™ššš›››œœœžžžŸŸŸ   ¡¡¡¢¢¢£££¤¤¤¥¥¥¦¦¦§§§¨¨¨©©©ªªª«««¬¬¬­­­®®®¯¯¯°°°±±±²²²³³³´´´µµµ¶¶¶···¸¸¸¹¹¹ººº»»»¼¼¼½½½¾¾¾¿¿¿ÀÀÀÁÁÁÂÂÂÃÃÃÄÄÄÅÅÅÆÆÆÇÇÇÈÈÈÉÉÉÊÊÊËËËÌÌÌÍÍÍÎÎÎÏÏÏÐÐÐÑÑÑÒÒÒÓÓÓÔÔÔÕÕÕÖÖÖ×××ØØØÙÙÙÚÚÚÛÛÛÜÜÜÝÝÝÞÞÞßßßàààáááâââãããäääåååæææçççèèèéééêêêëëëìììíííîîîïïïðððñññòòòóóóôôôõõõööö÷÷÷øøøùùùúúúûûûüüüýýýþþþÿÿÿ!ùþ, sý l%%E)¥*T„ s(Ò°”7k½ ˆá¯TC%÷4ž›ÓCBB"x·¦a Ô:wAC0h¹'E Ë›'KõjØjèFæ¼3xŽPIP:÷Ž’MŽOÆ QaG%!BI(0 ;PK ðDŒ<ÒœxF\e htmlsingle/images/callouts/8.pngë ðsçå’âb``àõôp Ò< Ì$Šå˜­S’·» ê^e# ¯ÞÓÅ1¤â–lßBÑÃ<¬ü\RÓ¤ØØÚ¤¤ØÊZ­¹ ¸§)1aÁuS“¥\/íïîÖùzgúŽðè ]nìjeùº3:anÈ ã üSÒ&|lœ*^ðõ¹˜ÿûéû;’·¼)c|ÐpÚýz[§Øuíøÿj3¯vèZËcOÞÿaX<ßr—[Ò[> SœK\#J‚óÓJÊ‹R4”5=sÓS}Ó3“³LôŒô,,-õ ,ô ’‹2‹K*r+‹K2“õR‹õRJ òóJô’ós'îRÜ4N l\fz^bI)Ðÿ˜ÝÜ]_f»$¿†ƒÉÑÅ÷›«›;R6÷.¬ÚvŽF»ÝŽî$­êåH0ÆFȧoË÷E^>½×À“$ù,Z~ƒÔ þoûùb|?Ûúžî”Í4øpÐpÒR?âö‰]¾hWÓ@Ê€¬l¾\µ¼Ííî¼ÚOF‘¿`8 Mû\ØiPù±¨vé6oò‡ÂžØrŽWô0Ïž–uµ)iiwäµõÀŸ6ëy†îum-¶2Éò:+l?‡R=Ùô˜ù]pMÇ@Ï=ªFh^:û–}óûðœ8›“õ¼]õµyQ¤Ç_ü8÷ Ã… …¦1Y4¦\¨Ešc"I¥Æ5P&c>>???@@@AAABBBCCCDDDEEEFFFGGGHHHIIIJJJKKKLLLMMMNNNOOOPPPQQQRRRSSSTTTUUUVVVWWWXXXYYYZZZ[[[\\\]]]^^^___```aaabbbcccdddeeefffggghhhiiijjjkkklllmmmnnnooopppqqqrrrssstttuuuvvvwwwxxxyyyzzz{{{|||}}}~~~€€€‚‚‚ƒƒƒ„„„………†††‡‡‡ˆˆˆ‰‰‰ŠŠŠ‹‹‹ŒŒŒŽŽŽ‘‘‘’’’“““”””•••–––———˜˜˜™™™ššš›››œœœžžžŸŸŸ   ¡¡¡¢¢¢£££¤¤¤¥¥¥¦¦¦§§§¨¨¨©©©ªªª«««¬¬¬­­­®®®¯¯¯°°°±±±²²²³³³´´´µµµ¶¶¶···¸¸¸¹¹¹ººº»»»¼¼¼½½½¾¾¾¿¿¿ÀÀÀÁÁÁÂÂÂÃÃÃÄÄÄÅÅÅÆÆÆÇÇÇÈÈÈÉÉÉÊÊÊËËËÌÌÌÍÍÍÎÎÎÏÏÏÐÐÐÑÑÑÒÒÒÓÓÓÔÔÔÕÕÕÖÖÖ×××ØØØÙÙÙÚÚÚÛÛÛÜÜÜÝÝÝÞÞÞßßßàààáááâââãããäääåååæææçççèèèéééêêêëëëìììíííîîîïïïðððñññòòòóóóôôôõõõööö÷÷÷øøøùùùúúúûûûüüüýýýþþþÿÿÿ!ùþ, xý l%%E)­* s(TA+kçJEôתáo0ÜÓÒE¥:°¦@ ÷€Ù«aȆz½;w®–M†6 °F©aŒ–Bî…Pò/GCFþœhõïÝš†)ưÙ@ o ýQŠA ¨;PK ðDŒ<Üç[e htmlsingle/images/callouts/9.pngë ðsçå’âb``àõôp Ò< Ì$Šå˜­S’·» ê^e# ¯ÞÓÅ1¤â–hŸ¢X‹«»[XÒÄ^:›„v†Gt>á:ǹsRvH’¶¶òæ•'«'Ûëÿœysz¥~VÛK6Å·d…‚²vÏÂt\{rÂäß\e…ç(W:°µ,ßþMúÁv‰³½[V¼ITïJúÆ­®åÚß^zí¶ˆGHýgöž‹¤›—~‹â\âQœŸVRžX”Êà ¡¬é™›˜žê›˜ž™œ­`¢g¤g¡`i©o`¡o`¨\”Y\Ré[Y\’™¬—Z¬—RZŸW¢—œŸ;q—â qZ`ã2ÓóKJ曘§š¦š¤˜X¤šX&Y$¦¥™˜›]14Qêâé ZË`hTah¤m mÐ’»»~ž®~.뜚PK ðDŒ<0š0y2 htmlsingle/images/callouts/9.svgmSýkÛ0ý9ù+Të¢/ËMZÖ.ë ëVX)”1Jꨎ©gÛ‰Óþõ;ÉÉ £&è^îôîÝ“åéÙîOI¶¶i‹ºšQœ[eõ²¨òÝtO,¦g§ãécäÒV¶Ytu“’OËúÑ’«²Ü´O!ƒÈÏ»K2ß­ë¦#7å&gWŸ¼4Rb€sr¾)Ê% …ÖñGBsŸ\ÜÞßÌI»Íɯñhz4ÿ~{u{OªöÁ¥èªëÖédÒ÷=ô ê&ŸHÎùkôôíö]YTÏïD’$_EÊouÿ³_,gôÛâÅ6‚<ªÑà 'ûDê[ i±ÐËn5£JQ²²E¾ê¼-l^ïf”N”ÂHÛ½”vFkT~*ë>ÝmñXÚ[-0°ÇEöœ7õ¦Z¦•íÉ?ê Ÿ¶ëE†ìuc[Ûl-Z™fE“•öÐ_JýlÓcîde8€0"z9 Æ:ArîŽ/?ߟŸwÌ£ézÑ­{ŸŠ²L¿øeðä®…‚$TH±åÀe”qRT$qå‰[# 21ÎÜÃRÇlØ‹82,„P‡¨<*¶ #¿š CìÙJk&A+‡MÌD±G˜Çgxå$n‰c=@R˜Œ3 1ª …„ D(è ÓË VDAZbÎI† ˆ°¹ÑÂeD"‘âú?NW9NKÍœ?”ΉúëpB¯äÚ½™âPyÁÁ6ßÄ!‰’=Æ– •Ñ…DXqF B ¶÷8C)î #Gb„ë=F¾q¨Æ^Tr !pîGÞ ôêîÆh:ÁÛ±_ð 8ÿPK ðDŒ<Îbäúêçhtmlsingle/images/caution.gifs÷t³°L”``øªË  ŠŠ †† NN QQ ÉÉ ÙÙ ÅÅ ÕÕ -- == S¦0̙ðt)ÃÖ­ {÷‹§L¢ê9sª·nZº4yëÖäsç®]c¸wÏòùs†÷ï¾"‰ÿÿž?7|þÜòûwÃ{÷œzzzæÌ™2gΜ¥KhéÖ­[Ï;÷üùó÷ïßïšK:PüÉÂÈÀ Ç â€üÄÀöÏaúé§E;côpQI[1·NZР‹!8k‚βi¨‚ÝªŠ•v3B‚Œ±zÓ³U%+mäøÙ®"©¼žµéc……ìù㓲à‚ëDStà`ïcOa\¼êòäc…ã‘ÇŒ‘~PGèpž| üXc°숰I3©°écpÊÙÈñ¬ Nî=âMphQóúÿ©^-Ú¨¢Ò•l‹Êg¯Ü¥y,(×ÇpDõ§;GîŒÑ9<×øDùgl¹)Œë3ˆÇpñHpŰÏV·njÆdдél 4 ®zE:ÈO¸Pa³èÔ)°à {·Më?¾øa…Íl¨ ØgQ= G8MžŠ®kEž=þØâuEP/œ;•1WM-ZVO݆ *k%X ¬Q€ÁPK ðDŒ<‚Pœ¢˜âhtmlsingle/images/caution.pngë ðsçå’âb``àõôp Ò ÌÁ $¯¯<{Š™!À'ÄÈåà```PTd04dprbˆŠbHNfÈÎf(.f¨®fhi¢âž†ž Ù3e Ô)ÅS¦TÏ™Ã0gNñœ9@Æ”9sæ,]ʰtiòÒ¥@ÆÒ­[¶nÚº5yëÖ­{÷2ìÝ›|îùsç®]c¸v H^»wáÞ=Ã{÷,ïÝszþœáùsÃçÏ-Ÿ?þþ=Ãû÷ï¿gøþ]àûw‰ïß ¿ÿþÿ?ÃÿÿÿÿKü£€ª ~ù“``Lòvwaè`•õr>zº8†TÜ*t»¯É§MúãuI"gÖòLÞép;!©â?ûæb'×·¡Ë㟿÷gÏØÏb#î‹d‚Àeõ†‡†¿——ðõÝyÂù•‘-|Ú‰¹R%VªÅ¥Õ6—ëðxõòÄúiœ7þM>ñ§iú¦ ¦– ž•°j8ÇëÆjÍžð|•ûc/õSŒ²Íæ† ³ßòEym:&£ýþyÒ&#§‰‹,¶˜?{ _ ÿr•ëå]/ƒ¼¯ro)Ó<—4ã`Áú’%÷kœÜ$ÙwôÝKþùaI2"‹BfUmwy¾€oãö²ÇçßÚN) Øõoúò¥)Ò¥_§Ïo,믪f÷{c==QK èyç׈’àü´’òÄ¢T eMÏÜÄôTßÄôÌäl=#= KK} }C…ä¢Ìâ’J‡ÜÊâ’Ìd½Ôb½”Ò‚ü¼½äü܉»wÓ—™ž—XR 4/ÙÜÀØÂÜÂØ 1Ñ$59Å4Ñ$ÑØ(ÑÂÔÈÈÂ8É8ÅìG€è6 .>® µ F&F&ÚÚEÑœ†@OW?—uN MPK ðDŒÙ®»iÐ^C*Òš&Ô¥^“âÈI_à×ïì$ :FŸåçîž{îtÓãí]‰ÖÚ6…©R,ÇHW™YÕ2ÅEchc*ðñÑþô€Rtª+mç­± z·0?5:+ËUÓzÅŒôíêlkc[tQ®–ô¬BˆR—þñë‡Ëë‹Ô¬—èûþÞôàäËåÙå5jZŽð¯¢,“7Ÿüw„æV'•©ô!>z*^ ¥›bÑæIÈB!‚+‹Jgó:±fU-ž‚¿MQõè{€p_û5þ$ÙKòr_‘®º8jW¥xÐÖfeQ?G܃€»¢Õ¶,àJÔ.ñøQõPöÌÛyÝ)VQÝb”ëb™·Ãk]èÍ{³M1G©~Œ`’¦žg:ŵնkíÁªIqÞ¶u2m6¶‘ÌØå(}#(ãå,Q±Hñl~¯íÍ–ó€ßH ÚîKàz Í{ÑæìÞ´ž·ù/ÌAö¹lBä˜ÉY³&1Så,¤‚‚߀Á:²0OIxpÏBxC~—F„·>†H&3¹88w9aÄÀçé\hŸâªL2_›8ëI(<àÑ‹-ˆ¾…@:z1‹PN<ù¬Çþ—ÊŸ§²x&¸ë#d"&l\R¡h Ø_‚nŠÿ"ˆ%R¹!z°tùNÆ;ÜO4"ê1÷rÒ{2î‡8¢Üót¸éAs²·¢1H•,ðân`rG^owõ¶[—Ìšºß–»¹½m^Ú˜å°*QÑg~Ås­UÔÕòäS·“GûPK ðDŒu>â󱑰ñ—Ùñ^[¶F¤ý°t¢oH?/±ª‰šºT/]K™¬1‹ßÒ½Ñôàcw‘»ÏÒœÿmÅ'Í|iŒõ°DµŸ{ u >h ìä­Æ | gå@ëŸ Aðwm$ ˆy!ÇÇÌNë¬ ,Í–ø\M¶³:p¤½vnZD=Á+-N÷‹Aù']!˜Eu#O5Y•R£fu ƒí>ŒÉñ×½âZ’…ø``]${*‰êj¬ç¯ëráéB°€©ÇÎP >çÐ]YÞŒ-áظWbÙoó¢sze=ÅD¡”vZVõPú¿Qõ^jýTrñ3z¿Ì¥‰jMSÓĄůÑóÇÄ`Ÿ.ƒ˜,/©)Ô Ãì®fªkŽ´÷‹Á¦èyèÐg•­ëÂÓý嵡îGŠïÀa0 ¼… L…wS’â÷8†\j©(ö¸büÍQLÚCîíÆcC©‚‰ÏlyƒyùúmNUÝ‹gSªGÅ`õÔDñáÿ¶ßE’Ë…9A˜–©öÙÿyGq:ù¥øÚ® 0žñ€XVúˆ ôN»@|H4~¬‹—þ-¨9n/µ ;y —C¸´y@ÆŒÄG mËó?ÎÆúÚ°JÉ8n½ˆzöëÌ5H¡L8ØXŒÏ•›¤Ž[ï‚ß&ãe/‰Á:߆úAžÄ =£Åôßk)¾7ÙÖ*œ·Dmž¾Ì®l½$ +þ0|—÷ ìpq'ÞÒC‰Š3*dAEÛ$±©Hž-‘µ× ×YTS1ÅI2Ó/?F~ùy‡ÊÂüü%Ñm¾G ŒðDG¿)4àä=m8’Tñ½4 íë6]ôÈ‚ŽR|kBc5ݰ–…)¥³©­åâC$`øxÒ]hfÛ®âç3GûnjJ§ Å?~G••±!ó 4ïƒmÀ¶¼„ꢰžÓ_<üŒÊóÖM±ãVfEÆÆæ‹»¨ðr…݇jíKGZ8Þ©,MMMÌòxåš0ÛiO‘òZ'KGGG ³¦q:eòu£ÐWxí£ %î9’ä£ ö$Ѹ$+ÒÙoég%UîyŠÄŒ ýÕ Ò²ÀâqNÓ#w*ªR“Öè›g2bÉâksHß~A+¢y+ìú„ô2×7ˆâ÷Õ$…  ¥—eqØ‚+cyg¡õ¦mFÇ€Yï8Ns*‚ã~íúÞX7H_Û5ÍËõðÍiøâ‡[ïñ˜Õ<“s:#eåÔÀâ-»ÌqÉ~žÌhŽ÷,ÿJ†PüÄêÂç«m4)Ü•ð&LÀ@Qõd¥K\×Ä•EW¡±Žóô2×§Ò7>foäž!↮ ò¬‚hòßÅØÿrQ9Ê*4Ž›}IU†öÎn²Öºtœ`âk‡‡ôÁÜÒæUr1C¡}z›°ø¼m„$>ÿ«_o˜±mUÜ÷‡±‘ö¤ # ±hÐ×7H€x¶âïìï}Î}Èòém‰È^¤ïJ£Qïq4,"︀¿òÕçs¹DdGl´«{³ãAiiΛÐßÊÆ›¾£¹©ý†ÛL\òGìo ^,Xgˆº;:μ>jE.£±Bn=¶·¿lÔMÓ±¹­î#«ŸCùÌ î×—_Ðþ<»FS 1Ÿ ¡ªvi¼‰·TÕ«êMž;ˆ6±6…2nGE¬µý–â¹4žpiÛ Á÷.n=œ¸ãHzÌeP¤:¶q1¿…)¡ZüÖ¥„ú+¤Àò/UB¦uá—<¬+t1S×AÔ?òƒÑ1`Ÿ¼|âmIü ñç]óM Õ9ûäß¼ùoÍ]¹º¢žƒ(: Õòñ.<Þ´Ÿz!ñÌ-‰Ž™Ÿ+Ûðä&}‚kÑ}ðsZy­¥*ä  Ÿ‚uL¨¾Âb£c¬*f~óL‡×! qÕé'!ÈXu(O‹©H¹•Qq.~ûÅâMwÌò8Pm´&Žõ«,1‚*®kÎ ‘½v ãºâíZ¢íº)¡îÜ/‚IÏƒè¹ X¨ò “ëMt¬3}†hPŽ!Á¤ —é$ $"ãp9áî:æÏ†Y•Ϣ⊩ÙxâP™b™÷Òb³7K=Õ6-Ïwn Í(!ÖÒgæ¬ ä‚ÈzÜ^ü= ƒX+‡šÔ1 nEÎÂÙtUÌrDÃ=ü^5òÛõ˳–¯µûfÁfážÓ®L3;*ka!Fs‡æ†5žüWcéaï°–3žDÏËiu›NZtVß»I¦ó+)FÇf =ò8mU‰&GŠŸÕ¾£2"mr”¸˜åÐÔ^‰FÎJ“ï´[MjÒf]ljŸ0­Œb”²*]ø›uóö_ˆ[_ 7w¾9•/‰'ŠH{?«mŠF3¸˜PÁCVÂî9>®9Ñ÷K’ÆÆ`'\ý®ø ÷‚˜íþ ÀCÊf¹Vs&VÅk{ä¯jÖÏÑ6ýå9qCü•ó}I³›grd¢~éÌ% …âá ÏB¼à{dZ@„N.7©úWí¿48¡ß—)‡[G@ŽV¤¡œ}Ê‹i, ¼ã5P›â(Ü|¤ƒßN4 ¹ƒPBU€í£±ªÜ²øChlÝ_£š‹GJš"GêÄV¼&¯•=RQá ŒÄ¿,A_ “Jx"?ö-ÆõYðí³2'wsáC¤!U¸rØô_šÕFi¾Ë­Ê‹ ²m‘>—ÆÜ<¶…Ý» ò¾ÉÖÖÄSETVrJX~õÚarÐ…L¡¹—ä¿/õáÀøZ6$]mÓÛÐÌ=.¦yÕD²8䫸—\žG¿Xö ÑûUb3…‘$câdÔ¤>³©M€6ÐÔfN8£ÒÕ_ûb ùúM‹Qym,ÛÍÍ—”™ûŇmµÍ¸éú…¾†ºÀ•ß1Yp7mÔ);‰w4ÅM‡s’·B]Ó³(…$Wþ&†Åv¢/úwÜHZÛú'¬vóŸ ¹-œûÒ:å-OD¸:Õõ- ‹?@¼4ýMÀS*7Þ1õÈ)ÄŸçÔÐf¦ pvóq•ñžx¸Ó.hÏH‰¹d_×)²³¥«òQ׌ï„ÐMy!–òãEÚ‘Áj…º?§Ð;Ññ& T…K!ÒЪ´KÄu–£¥¿»®öDˆ»<ü÷2e\Ë$¹’è‘~öôøæÜÓD_”ƒ¿UÁ_¯d~ÑïmÔ¹Õ‘‘rÉ5ÇÑ1›ÙP›ó ýU:44TÁ\z>!ä?ØÆž‰!¬ˆ.϶?æò¼! šM4>øôJU d³Ã<Yï 5 隥ƒtôbÔÀˆgš©­ëô¡¶ä£¢ƒ›ÆÅ!» \(Ý>R)[I¿8õmÆÛüí ¤ÂÂBŸIÁÓ2m ÇXÕe÷æQN’NÝŒ‘éü¹°Š/é]ë­Ääúˆ»N†¡£#º|øÂHÂò«ø3‡£Ì‹’’hgý EM|¼˜+È&熭5Ø»‚ãÓnÎhS8M’V»]rŠí{¢¡cZ¢ãº=X¯³bƒRÃÂ}S5žú`ý‡¼ŸYöP_JÐKåcçk»<<<¦ô÷Ç0üö­Ð²Ê>@O þâBš‰ë®¯.qgãÆ¤¸<&êÚó"À¾ÑøÝrnÌmÕ ½XëE±êþ?nˆKû€@É8À¿¤¾D8â›~×åZ©GpIðíÚÑ+NC¡9>æ.›¸8‰JðzéQi•À2è°å<Ð%ókHçJÓfÚJk 8Ÿ?¯ÉüBújf:S 'þâjN²>‡Že¤ÚJ¼år¹1ÙÉ6Bȸn °Ò¡ëÃÔ–ñW‘6msò@Ðåá)òå`{K’ôHe¶ a²òï¼¶LëZ­Ž™ØiÈéiÂØ.Þë•Ç÷¥‘\4¶ß¶¿*gÎ]ˆì¥§ÈXóœ³íQÞu”^Ÿ(wÙ¿ç¯-E{¸à+) Ù|±à‹¶Øè}ävû ÏþŽñ4ªyî‚– û1v¤ç¢z^Ûd¶§UîÅ`ýíã„u ¨™ïWk–´:óˆDrÝ ¿L-·Ò’J¸7iJ Ø’+é¥P»SãzL\Êkk7[Á8öÍÌÑÇJ¤Fíþ¥¥$®ãTéëÅÑ3³“ã‰G}š“·ìãû¾Ó©<ÇÑÔ/l_›wt &åÌÚ,fgùqrTzEçÝ®›ØþKÚË ´~"&v1Ch-×É]jžó¥¢Vx<‰¦³4¸sâ^í¹ UejË0Ïh.‚ï3‰Õh’–z T`d̸Wáþ~ÊŽÜ×üèD{”±µƒüñs]^Vš¡~ånkÙ¯fš×Y•WW5*fP³[ ™Ú©%:¹÷’3ÍpñW’¿S~™1MYcpiúåÅ‘|ñmˆá}‰òðôÌÍß}¸õ‡’‰¿8¶†ì¹gÃz?)»Ûéº÷»:{ù«%Tìêã6zèìí;;ÿ!yÁ¦7«©l¤.»©Œ-1Xú<ïÀ«=# ?^ .cvÓ½^ ²×OLtqé9yyC e¥¸ü€-õƒ=‡æ.3–)žÏÝŠÏ3øóÏÔ‹Ï/¡^2ò¤¡î‘è{Õb:ßÚ´o¥A—ÙÌŸ¿£þ4ôÛíÚÁFá†G…ëcÖ“6ë¸Ñ|Aƒ¼”ÇwF}#çf¶­´ôÐ+&É­Ö¡ßt\âêiУ¼?ÿ tÃJ|ÜMQHþkµ71¤·ÍË|œÑ»XÓ ÖU±’ŽBª¥¯¼]Ú5¢RqV½ª"“É\zý£É}ÈÕß™>µ¶¤¬ô4MÿuñpwìöüKãƒfv_ ­¿]©Q}L|Ú­ÑûJí¼å‘æ_’”šs ­“‰õÏM¼“ä3¾tûöÓ >xò £ÁÇU¼½êòàyË⥓~ªùe=R:s”bÃk¦3 ¹ÁCNöy£aŽºy¹ôñïîí®5´«w?Tœ‹ûõ°/õ“eœïínûÝsŠÏ}¼»Š‹#jCÝ ¹7»ßÔ Ì[<ÉŠ3ïOý”±°ä%uyûßÃçOì:ü4 ¯ k±€jƒÙ»¬iàÖC¡"!ŽŽY˜ÏT_õpgÊÈ}ëU‚ÂË£gNt.þÀ½£Ñà™‚ì}hY\iéõa1|aŒ3ªjó1DrÒິÇd¡Â ?}r0Y[-\­zïR‹}“V„,"Ewé’™Ÿÿcãø”lqMý‘!Ü2…Сœ3fg¢…àõ'ä€KMðœGe0g!ÁˆCnògn^”e¶ÁE·}ßT;‰ZïA³’„±“˜?ýRp.Âm;]K4Ø+ôþЗ ³œóýy”ƒzÉÌ“( 0àÝùïð%è‘°¯ÕƒFÆÆAvæið8-w“Ÿù¦]äN_ºdrùÛë¿ä:+Ø¥¥–­Ôà~^_Ëc. ¸S+sž¿ZZ·Mk­þ‘JAA}Á×EÓŠáà¡ÑÁg7íú´ÊááF:kÔØ+-*Âz©ÚÃÒ‘|\]\Z>áÔ~ÀFªDÏ ´%Ä•ö3'ï·ù¸†.î?fg‘Ó2iq]È’w>gr>A¬=í‹ë‹ö‹üñêl‘‘>=lÏÑJÇ¥ÛÇÝL~XÂÁa êPP™ý!›…%¹´™HšÙ9~„[×8[õ÷H"™”“EÑ+c€ãbz¹«KKzéŒuûi/)“˜¶ê±»=Ïš*2Ýrtxµƒ(7@äÌ슸ÿªÖY¨ô#’œ2þrÎ9Ì}ˆ;žvazdªÛ´ìàG–‚P¬UÁÈß6Û½« œ–±ø ÊéP(%ŽSˆ$uîãÈ=¦~î¯Û}tÊšÖåóE,fl²­¦´T7k¥ë×gÁ§™?¼EêOw§¥j™n,gúÞê>P7Ÿn=6éŽ3PÂíS»{u‰ã§'ÿVŠ›¦þ†;ætDryÌ?A踑•ÅÙãižU~mÐ:”g5Värp9‰ÇA”®+¬ÆNsö¢º|é]ò¶ÇJK–Ì*K{P”WóŸL%Ø€2 «™”ÿŒ_á9ý…oʰ›öL<]¶ptôq½r×pm?·±B~ìDŠ€Ûûбù¨ê,{›2Ân|—èZö h|c…•WinôN ànÈ,`{Ke¥¥ß=¼®'…_:›Ù­tUzY!"¼öB"Ôƒ´uX˜àK\—µ+?p¹ÏksL64>—£RÔÝB¤7Û¬‘}%që« sÈÃÅYî$;ßJÞ»œ£öžr‘Ü'£‹ëèd¬6omK躙.’øöÉHç-I”jm0Qéað*…F£ wÞµ…š”(­”qP6c5Y˜ŒN=`⟵ö–Ý»TjD÷E‹å›ŒïU6ªQê%ûJÆuÌ×"äTéå¡VÓ@sü)zÊþ_ˆ)A!±+öË=‹a¸ù ž‰ŒÓæUÖöq/ø¯­®pÔÜ"¤¡†h±DÒÂÉe‚‹š>A¿0k.6ü¸¡6ÌÈ‹7kbüý_'€(»Îdº¬•Ó…lûyXçä¶ÛýÚ¼Y‘5ó3¾þ?@¥:÷®r(RnóèB¬\ÄöøÀôÐ!ŨÜÏuî/äÇÙÊhõžšèÈHif=ú ²„ú‹Ë—jjº©.N‹a´¶´h¬êb (¦%«õW"kGž¢J¾ß3ŽvÔ[ØÃx¬SÕí…Ú—i`MËHG……/KáÖç¬SG/|Ê¡Ögà6öº„5MÍXé¼ÿÇC:LW>(ùšŸIÙu‘—A¼Žå”×kR3RÐèõNͪ<ç8rKzS¥&Ë.ãæeŠ}“b“s æÄa‡i©©ã×9†e£¿wü©)P5†ÔŒ›.Ze{&]KÒ~û¬V_ƒ÷Ã×´ 7Û·ÏS»+Øûì§©|o,ñ€¥wZŠûöV¹?Doíêß ~–Ä›®[Ë •ô(ÇÊ»¢8ù™¾;»ß£¸)²KÛŠ³Vû¿†Þ8BÈ1­ÜÛ2ÏŸøK¸¼¶nÐÞ/ÞâÀÂa«Û$t† âàÀ<ü¤jâªiXˆ£¿zT³×¡~»ñEÐPú{gû¤r”pB¯b"\ |Œf‘)^©å`Q&JÚ>‹uÒßm5§Ô""ëø-¥àÏ5Ƭ­_üY™DYB¢Wšé¾©óVNœ;eÊÂúÄÚ¯wž&6þý1*()ýãFÕ‘üµ­‰‡Ðrw.,Ì4"÷ˇÒÕï]òh6|}ÑpÇ¿ÆgÈš÷¾±XgýÁÄýÉ‚bÔš8qË õ¹1ÏWž~ŽbÔýXˆtÿõz »ÎãTH6íØŠ²×5üÔßõvÝf€¶3•fü\ŠÏ’¬bC… ´Ïg7â¢ð·ŠP×T+J¯v¶ó"×zªú?¢¶í3}v±ëv¨O|ì/G/Ù`Òyv¬‡+Y:é¡6|?÷ÍÎ%pBŠÒ/WZ8+±K½MG»¿×¨ñ‡ÐÌÑÉ`ì¯Æ?´ám“1"cpkŸõ.„ÓEŸGã‡v”‡ºæ¨žÆ›zÅfElß©ÕO_¡Lî·i°‰þ–è½úçÐSîùnu Å Š–è;T*A~&à“+i2s'9ˆœE¼›1u q *K¯4Å”s`Ð>€¢Íp¸Á}€ÆŒæf3±®9ÕÆ»ÊCí$ ýþ¥úÏÑAPΨæG<ñò’‘¤~&·¤þõݵÉt'hî'ã†ßÿ,|z¡¾lPžuïEg› K?Œ»6²¨XøÌàx»Ñ:¥ú׸Þ~KÕ S G§ú 9ÁØ•;¤KVZË‹¡,L—§ôŒ„ Ó‡ª4Kb1å¿ô£2kÅ!„ ü™£pkKUæèÕpX긮¨i3¥Ñ¿Ylèó½HD ¶¯ú@êñùË ââO¨ô¨»7 ˜»aK©õ¾7º6Î\»Ÿá臥ñôêòJÞ£œk¿*{ß{4ݨÑu !ËTeyÁ1ûè™>üú\}ë刖¼.Ô‡Ú¤{öÍ×Z¢Ø‚ ð‚¯FÎʤf€ÇºÕG gîøMçdÙm'‹-`×\ZB'¿>ˆatFÉ7óAñÉÓÈ4`65";|\ ¤ãýr€>Úƒ8)m]ÃŽXâDº r (zI}{;î¹±<V¨§®ù~!Rlž»>?_ÃbóÚªF“S!@~ú‚åp 4ï=R¹gÐo3‡í½ °ÍõÃÚœMº=™VƒÙuuÅ…Á¯IŒ/”P<ûn|óGGÐÞÑXUÔú{ž”xô"Àe„—븯aׄiòxWêö“E?«¤¿ H×½féäÀ­÷?kÔâVíòî’í<Ú%Äê§rš!¡…kƒÅã-ÆÓµ_ØŸœ,V¹gÁthÙHü,Å]]•/oÖï~œ1;eôÇðÅþTÑ“EÕW‰íSè#yIN-±è$,»}%1’ÓT1‚yØÌ¯ylÔÕøzphøAý/ÄÌáz9N4‚0(ý¯ñ ôv­ IñkaYô3;þ‰¤˜À¬ì+ÓñìöàÀ—¥¥ôçYL¬û—ò{‹¦Î¡•›Cˆ.ÿý¾mÝG¯¯n8-“÷˜|4Ôݸ™:ëéˆ ¦ ÝÛk¾ÈÏNGÍì$ ŸÊ-äÏeÇÎ*Pjð%òÍŠ "P¸”òˆ^“þçÞOZó !4lþM·íHód7qÕHúJ˜<Φ*œèFå1±i8W¬åÔ`«X3ßÌnëÒ ¿‘ ;^ÂdáÒ‘w)+/9)WDÞמ9Y”nIŒm+—ˆœÅ¤…+Ïߣ¢†]"û·•ÔÜ…bšßŸr °Þ2h­³7rÅeÎ7o‹â€Ä² Duß^X—¤;Üë© ÖÌ¥pN*¼G­Ø'o´3“ÀÄkræNÍûÅ„É*Õ"¦ßÈŒW³³K»¸>Ÿdð›°>0po-þÐÃrWw „'$ðŠ{ªšc¾Âƒ\pÈ¥sÕ•¡K>,y¹+ólç]Q’œ˜‘ºg@³ˆ{ŒfØeíÇ¡OBìv{•‹E4c‡B1 ϸÔRÝ ‰A{šªhÁº Ðr~×Þ ÓnCÚªÔ–Ó2Ë}ijKá|Ì©HwH¢ù6-Q÷¡Ÿ™îDÛNëçeYôgDZ—– ‡Öuk‰þ§ßçLÌb]mTÉ÷y¹ÀG:jS¹˜Ìьخ`¾FeÃvßï(6_ò5]81Ë„óåZ™Í~òDfÆäìY«ÿÜ–ôO0LúdÑ.ÿz瘓2‚W/,â/¼Ÿ;Bæ)ºÄâ-üœZíRpá6“Ø}s9ß¶v;w%Êt¦ÒaéF%h^}—Ã!É+±|†³W¹­SCƒK,7yó2,(Ú——W×dOùû>áïwº¡¹÷d‘*·~U;G'€?äê3rñIê ßp(£8ÄÎ6aèlÓ¼)ÕZ3‘À²eˆ¶kUÅ€·á‰ â1|‹úˬQ­+¹~NfO~x÷Ãù—N/ïÄ]IhéŸW÷¶|Z£–ª-ò7©¡ÁoôÃøl•†EÈEŒŸò­-ª¯–›ß6 ‚^1Ñô¼!örKs6rÛhaj›4ÀÞ¤UáÖdVµRf~í‰ ƒ²÷0O8;‹?è¦øë¿ñ˜ÄM7^ûÚr­<ôI§î5‹6ók*ÅÀø÷Ä[pÊ©3“ë26¦þîC ­k=˜¶påv-­s‚§#•]&=*@¦õJ³zß9Ê—¸¾ò¤é¨Ø ýäLÏÊ¡x/Ý‹DZ&Ák醳™Üõò( °Ñh 5’À? ©àè?¹D㣢íóÏ;†¾P÷®Ÿ¨xß_):_·]q â:eòÆ Ë{܇@ñœÔtoÓ6yÏ#@èì×ôkÊÜmŒ5Îiˆf¹Æ:§òéR\öUfövf~ÀÙ¼ 5™ï!Þ——ÖjSÀœ÷<\üb°^3©0±QÛ@IÏŸ= *5¹ºÛf*#b›¾\Í~ÚVÓÛNÂÌîW_Í3Nú9&rß~Fo/7Nsc•­/Äúø|òþ~ `빸Ï9LçX¾.FXltôse[X¤\g]`¢×e·ÐÎV…ö½ »j¬˜d+Éît¥.ÍÄDÊ«üúþƈ/ž l†Ù³`ÁsúIy%w—¿Ü4,êTÁô0ö³é_‘š€Ã—RSejFêÖV§b!bD˜ZÁ9ο{¡,§òß™¿u:º ½]®Ü3ã%U1ÄVú㥸ØÖWÁá2œl'W>ýUlst)ÚhF;kªÁÕé-s9ÿ!OýUJãÂ;À<—æD^‰ŠiÕ¶Q¸Q`4šè ‚™+cM*Âч½)b£·ÕGع”&ÁË*€7÷ļÁâMâ|º Zßó lÉ­Vþò—Ùÿñô7´¦­Þø=K~&|9a6Yï×áð¶¿Ý N*y®-|ÑtÛP´})º ¦„f‡ ße”ÒW¸KïDå¿¿Í÷7ôlÌ)÷ Þ|»Â7ÄNHÙÿÓý¥Dd±çV˳E“ 33ì_ õݦ—T@ªbñ¾N¡…Éëi†Î®û–Ôüǹ‡Z…Üö*˜Cc™bð&ÆŸB²ƒ\÷Åñ/§—ãö€rIc¬D¬]lÊ}ñÓóò|#Õ0Y·k‘uÁfN;]ÏßÖ¿ñ^ÉèbÊ™/¥v®Ò½€]ćXŸ¢ŠßÔ ó|®r‡Çõº3±EoàÖö×¶/馨Š<|]?š€ŒÜ¶@댭M]!yWSž~pt|ªC<4-ÊAQ’Ϻæts¾T°ñPr7 1 ñW%5X2ÈNúÞèªgÊÌ™ºkRBK[ºÿìƒìÚ»Z’âšÄòMÓÅh%7‹ªçžu÷ŸK(¡²¢e/»ž ¡êî÷“ˆ›ª½"xÄ)HãÐÛÝúl&³îÀSŽÙ8L‹Yj~p²ç“nX¼Î%öì烕ÎÂä»A¢[AóÙ‰'eÛ¿*|ô×:{‹hs»ù%hE¸‚°_¸ï6ÒÁÅ€„ ì¼n-,ùŽôé^Ȩ†H˜o#ä0eíý`‰SJñ˜ÆÒÃØcGqBñçcCÔTÞ ˜ àÞ/DNÓÏT,jÛû{÷_gHÎMFÖD/{.d®Zý÷ÎHÜ…Y{#Ü—£lj¾1Eû,eJˆ?»ü|_ÿ†¥oæ[>Eã§6®ÌV¢T³™ «œÚA”?:oµþ¶\Ù·6”ƒÆç‡Ðà½qr°x‹^=å¦âü{ÕŸM[Em|u¸rLÆò-3–ƲYϪ œT*¦ÁNi3ó7ßd&x¥Ýt¹2ɰnãÆm|Ýøövz{šïë}/‰ý\Bk½Š?³þÒ éæÖø¸ÕÃF )HŸ&sVbñ%X¿I$Ö‹ù´QE¸¼v5䃱Î/ßê×1®–ª ÂH’À—“é9»)Tƒ”ǘå¿of@•ÕjP‚=þ&Ñž7V°à09¥c:Öãù é²ºòJ¯?ä¡ü¤Ì B vý_ Ê´-¤¦ð_P>½Ë³­†îîÄ7a`îC›oNëÒɨc6ÎŽÙ¿¦ž×,÷iÕÍ(3>,Df»•Öñ³m{PnÐ[üaþ^°rðE¦ç­v-^ŒqÊxô–î©®>®—Ô½GZY>¿šËæPz^ÆÉ€2¾ 3Lg³ÙF9['ìr‰^OØ(q "mõß-º%šá©ãŸøkÑ2}-'°”-·²Q¾c#Qq‚ _èdQ½¹pu_;~Ÿ~CRÙûÜÕ¨ži8ìMÙ3:¸x1’,Þ^5v„êÉÌŠ‰Éfêåø<üДÚÇ¿2x7ýàmWGN,Î~+BéjÊž£a„aÛº©´ë<‘ôoÄíK ºéÍøå‡Ž iëÑJ5Ä€Z$·Y vÁ:Ý­ªÔ©Æ3°ßÑ®(û¹¬Ôrâðñ²ÀjzXßqë1ßüùfè3‘¤ÌA®˜Ó@«ù¼‹³£Ñ£2Ô††™K÷0Ƭ‰qæ€1†"d[}ZÃGêªëGCöIÃöz>|‚÷ž±Y¾àûO95û¤”³:o)úPÜÌ‹Q‚£„‚àñuõØKªòf­ßzLõìÿ¨%JâÄëØW†Ä T߯ÁN/Oã œebÇ ³?juÜȺ¿¥¦ò0Ii׿ˆÁšîñ´D+++ËþBSkÈÞ†z¢Ã%wYª;¨o(nä„hÔnsì&*ø¸Eéð}ÚÄŒÕýˆnþ€P·³üËìo»nîh”&®)™o C)­±ïÑSÞ×i×w*¤¯wcÐÛó$3_î@d>rS/À›)¹7^8/Õ]åë¤~®ÿ#£ÚQUɪ—ïžüЉí¢èJþÔ%\ÉÁ˜¤ðÉEì?¹p «â€ì‘µu* 7#Öl»;^2Çrœ—*;î¬9e~M¡ˆ&½ÒÛɲ–@DéÃÐö©v÷W/k ÑgaŠ8G¦ÐPL6~ý4õ't…änÄ6$wøPØ kÚÕÔ1ƒ)ÃÖ©Õ|ÁOOåî;û•×ì´Z­çj‰Æ0ÂÝë§àAå1$íÅt“=™˜&²Þ¯lï¶ò‚e-a7†žùþ¸—fù´½™*/D©­tA­¼6ÿé~€ƒ¼Ã–9œPHÃÕÔt¤Zº2BÊ;£ñϵ·é¨YÇ­Ÿ#I“ Ìe8PƒKyÿ·ÿÅÌʺ<^_»mTYõsDO™YFEƒ${CÄú äꎢÆΖOsss7ù.áêÒ¯Ž ÃX’v²:9ÞœR:êWÎÜfRIeµpŠÓ·±x ‘†$ò©h-j„ÉÊÁ&kO,Ê[ÿ,È}kt `5†è=3™cnþΔ¹Ž04v²ÒØGcÅOÃã{'¿{J¿â§÷¢¬´4&.pÂê'øÒ†«£c7âºpá‚™ŸTöW']§žEÐEcþ1ñ rö©U #Mz½SÅDÖ†UØê^+:0¶ÃÐXqÉÖ³è#B=·}ÇGôR4 /h†wœ•"ì8tŸgÁ©Ë6¥¦ÐЮ&ÿÒ`)»ÑÂò€»ìζ 8Yê1+úo¤!}ƒ¬Ö02m묉3ÂÎüѼê*üöÈ“û­‰,žqã§PT]^‡XnzINˆÝøï88¯uT¯ö ‹G ZX?è´³^ÐWO]½ÇûI†žRHâÒkëÔ(Ÿ$)y%¬£§6r€Ùáès†¢¦I™¯/?¯7(Ô' ;  Ï¼ªÊ,¦;ÃP³§SáK݇jjÔhX˜ ›J.Žžô„ïƒå¬´äÖoa\NB ꦬ(&ôAŸ0¦x–°"É%‹R¶ÀD3J¨nß_„hÐ…ÓàO ¯'±i°Eª¼+çÿª|Ü®õ&¶faŒ‹™1=7ùçò“÷ã/fÂûë,Y{Ë·âº)íZRÞç¯Ì6jttòéC¡åY–¯`™¼ _?a³Ɗä$»ÂÕU43»Óx»QãÞ­Úk0ÙEʃ)Þ¹*GG=æ¥gHŠvÍn5§",àÂbeÓ§<'•âËÏDé,4¾=€"ÕMË7Ójz@ý80ðSX½~ÇOŸ?eÑg­æÖèÁB®Â6ÕIc€e(îŠÛw÷Ñ^D­lÔâ–”MWÚHIæØw¹‰eÀ´a'´ÏvŽP¬‰Þá(æ…Oš ¸õ¸nŸ7»°~±‹Ú™˜fò¨Dd-r›BÉdس,ãŸMÌÍé)õ¹y&•Ã,_³+±¾„E: %yw1 >ŽŽ¸±Ôùy%ª?M_¶|D‡Ýøt®hצ}NÖûÞ£?£®8%ñ¯ï`Áµáñêf ©_Éd6Ôž˜yTRÁnäÙ¼X÷&æphàB"ýˆàÜÊûÎçâ¬7ÓÞQa'ö +Li¬ ‡à„Þ…á€Iš*¼è:Åçí$úE¸ôíZÖ´½ú‘n¥›t~R=”0óOË'b¿¢lÂ+=ÉÕ½•„–˜V0ã ?l(4]<2+•Efº6³ž°#ñ%ñýôé£~îV…†ŸMHŠgè‘ 5˜\~ÊïÌAsRQo«'ŸFJhÑ]<åy$+nc…ñÓ¨Q4ƒ·T-¯­=ñaþ̧9Ø\ª…¯ëbáÆj"RaÚª"Ô5G UέARvBˆc ‘$[ϱ?…â­ÏDæäõäJËIì¾ëQ!sÛ.mÕ„+§¼Q‡Aì f\OÛ¡¤sŽ›±åä¨h2-ÛFJ \L¶èœ}’‚ŒKß—pÓ«:S¤=HN=•òH¨æ^Ok˜‹êfYÅ3¶<ùè©áFȽ°g,üÎ;˜´ÛÖYöô¨–,X•G‘v… ‡`ß#µgÂCm1B°ísú•º¡wÒ`ä›Ã˜ËØÒ ©Ü2öÆj¹« +)üÇJÞI¶Ú›Å¦\ªÒñÛóåè ~žTèÔëÔƒ¥Þ…è7Џžº[¡¢4Ø\è}Üçénþ’99MUÇÇâ· Sí-ýå¿_C{ØÀ".iÏR>?6èÏmýBƒCŸîHÁtĸ6É–Ü6¸]) ;¸‹•ʉ1Cí%ç¶6}cÿ; Þ=¿§¦XN1£‰x^néu†í¾'\yP Œ.pÚë63¿ºb+*Gpo‰ŸØoM ¿ø•X@œ­‚ý“ „~1ÙÔ4¬+;kŽGåò=®½AÍŸzù‡,Ƚì6 §ŒÁª¸¾ùæuÚ«‚FàÄNôË:VG­àö]8 í;ÚÈ~›Ûó—„JÅ €ÚZ×Õ:'í4Ÿ%¾_ 8ʶ(—ïèß+¹V'Áúˆè}˜e•4þrõÑùf+X[izŸÓ°ù`º÷hÌÄUÞüYD×6Ø3yVRÌe´y¤TNá p/Ö&¸ŸP=K(² òÏQP†Œ8Ä‚³éŒü5¸µˆH`Ò×ì­ñæïÖðÈLÞë¼Ê‰ÛRÞ/©˜ŽÆðKÞ¼×"ô¨ÅPÁ¶Øý„òZFzv¨寮œÜÒ†ã5`|ã§ã÷•X,ð,sy læ0PUU"réþã¬Ã÷n‰ Àªê-*µlh¬Ý_ôSÆçÕ½Õ0‚m×X“LT?†Žé¦PŒ%:ÀÚ ÀÐÐm¾ì½kŽ«ÿðg1˜>0¿Gæ¨,9Ú³>齜÷Ø 4Ò«›bMÛúKh QÍ*6 öegz -Ñ8¢¨pÏ¡öÅzÒýcüÔâ}W§%·ÿÆÒ¡ÿÆá>ô‡^DQéáº$¶]àHo[K÷Ê!ŃGe`â2h„ü(ô®U-ùam]éáØ`_^‚ÅÇ­÷”R±ÎŽo½Æ`×yTŠ ^R w%¿Ÿ×+?¾Ò(õò0ÜìŠÑ‡”kÅç݇.$ *Ij¾ê>„[ŽuþT,‚¸bñþ£©€õ²0°ÀÊ![kUŸòÉ¢k€‡`åЃ²%åPAèA‰ÕBŒBÕÌÎê1‘O½¤¶x$öÕœóýйl'A~A Ihüj)ì.af'1*µÙynSÁ´·½ØüZ ¬ì-[9aO,,,T…(‘„þ2ãüSêæS:X:2²ÙLƒ>Ù²¥ªd“ýÏŠ"o@1“x¼ÃÅ_ÏSRÀ5]µ#%«ÓlscÌòº‰Žõž:*=Êu€cÏèt†±© M",ÁÉ’€TþÝ kÆÌ9ΪQ t×÷Àìÿ½µqϦJ w* öÀW޵ë^Aø<(zH2æ>Y!ÿÕXÁ~¤òë) ÐëD$¥Tì²P„‘R3lÅ~PíA¤U‹ôŠ9oÚ…ËQ¾PM…Ù?ç&{sN™²¹PÁFtÕ|Ò†ã„`‡ÐP½ƒÖ² ŸÀAÐ×ññô³ÜXž……FÒ«•æP3Ç.¯c4eÈ^ÀÎOhÏ‚a54ÃûíÝøW²eam ß @Í\ø-2D^ȶœëÖË ûBcP»¬÷€ƒ´Î*Ãm(¢¿ç–#Ÿ÷ˆÁ~Éç4×õ5òáÖÐÊL6¦€ œqLÈqöP5ۜހÔ6„½ê¨6¾Ó˜š|u‡·•:¹ßÊ`~?]û=xàíïçÕ¿Kl~ÿÛŸ,ñÿ» ý·`è*ƒ ®|\íý`º·þ:×Ìô©‚ž°¸QP6ýiÓEŸ 2K?sp…$‹·øýœCqà÷sŽ;˜{04{›óÿ·Û9€ïGdÀvDd?ÎÉòçn0~øÿ]ö%Ä tþ¨F®>zvCàâîÐÕ±6b> ü9k†<]arñÖÿPK ìDŒ<Œ©õH K)htmlsingle/images/flow-view-packaging.png|ºuTß¶-\;'¸„àî îîîîîNàîAƒ»;'¸h4¸»å‘ß9÷Ý{Þ{ß×Ô¨1zרÝ{­5ל³×9qd„÷ KJ|VóÛýÄÛ‰÷S/ êY~ú¤ ù鉂“½™¥)xd%«{²ÍÝuŸ1 ÜÖ²¦Ð-v™š|ä…7dY°<–.OjP|G=#B ÿA;TJñK];º¦[·àõóÏ;÷®³‡õn½Iþ;Wý;ÏSçŸW:€ž!z öˆ€Ò}®¶#7ÄŽæXÆS´%–.ˆÂ‰nbíÇÐkee¥ù"Eç«âYž‡ÓoÞ=hÞð,r½qõ¶sé»Û h!@ˆÄ# 4Eé piè0Ä:4 `µµÓ¾¾Ã6û”vP€ÍåéÛ=7 €Ñs.ª\: Ð9¸Rtx@9€)EÇxCEØXXŸ@`KH@”%†¶‡([躟H ¶Â,€ñLŸÍ€½(úsA½‰F ÒÙxŒµ_ÆB„&>5°`³0 2fJÙi|…°ÁdÁ¤Á޹dÈÛø¯¾³+‘8½€?MëkWöÆ"€@åJùÑ÷Šhœ:å¨‚ÐæÓq.WJËR­ÈÚ _YG˜ÏÞ3 Äi—?i“jå{ZìDŒñé4É_&~&p“x+œž§`\šcŽb•'WÙÚªœ*á)ªk¨±¶°²ô´(9L:˜ÑæT`¡ÀË^æ°"3•bo·í•\3õœÍ°çýU¼!÷ë5®ç#ìﵪx»X¾>òÎÓ_H7µ'ß›0HÇÈ[”¼Ê_aMQYKÃÅ¢Å/ĵ)fªNý0¢¾’ÀRì|\—ÍÝ”e—,8¡–>ÅÉZâí´·ûc´ tkõsP_çgp‡gÐz8&ª5.!3cwÛvÚoÇ Œ×#¢s[ÊïJ¾›—~Ø,24—4íÚµû}L;þÓZG¡L¥tÅI±ø½¿äVÝ0Voy;_cÖbZõK[—^³ñëžËËyåkØÇf^ǚÌêõV—;±ïpmÔ&ÓÆ³‰ƒÂX?´¦º¨9ÙãÞ¾¶ ®í/ºÕ gã³æš¾U/J/W“«z˜]H¸ „÷¯‡Óh‡GööD(8Ñ_¥¢åbæ;Šºg}ïl;<É\gœ\Ë ylŸùgŸr–ŸQåˆ=ßÒE…í7?#Ÿ`ƒÂó²·¢‡#Xz3a–eÑir±ë kð°³1É5ûæ‡=û¹ÕKÚƒfí»{éÃEüA;H ÔlëÓv4SÝZM… þñ—€³œcçà­SóÕÜ…Ú9áïIl Ìèžt'lÊH܈ÃÈïåÒ¥’‡RéàÊBYÓkSÕ]•¦Òa{Uª2ªwM‡4ªÇ*ó¥‡#!:1J0•æ+ˆm^+v0Ôa8101š².2î™ói“èÉôäUšÕ«Ë{ËÈÜ\ÅÜ7í'p®¶â|ü±^1÷T3nëçÚW‹¨KKR+$øŠèAöátáßûûÅ}¢bo£¨‹;¿] µ a J™È:Id]’¸²œÌæLÐâm°tŸ½4ærG±f Šï è;µ†‡yb?4…g¡zãÜÂÓ b;g¹ù±Sµ¥¹Ñº §÷ Ÿ)¥Ö«™¶í–ýV¡UùI«û– ÝTêôÞ’§uÇXßË·Ø¿5’-†T#.\üwèÆvþ˜ïqÍl~·H±Fç#~ÌÐ%º™£U.—)Ü.®\rö’Ú$8 ¨sxxÀpðÅËäUcÿâ9¶³$GŒŸüVòºòöN Ú#þ~ÆRÈÌ`WuÒ`DaÜúгÃ^,¼úkaÌJôÅWäîJ*Ž.®i.O›1 ³×——eeâo‚Z¾è׎§§Ïù¡º¹ó4Ž\Fü5-=޲“³TSÙ7ão"íçÎBÎŽO_Ç×jC_n¢ß5.ûϽŸ%{¤½2çã;â[Å}b’þ9¤C¿¤uʒ÷þY¡;ŽÓvÀ[dtå’O"¤ã Ò£~Çhùá={duÒ׿¤Ã] í t×? ‹Æ«^t*-.Xí~¢q,ã§››‡ÛzoóÞ:cVëeÅ–gÑUúÆéI" Elµi3†y0в¸yükúG …/z) j —«¡¶i¶j¶‚KMgnN4n?]%WÞ½áØn'‹z7ôjïRøÁçæ¥Æ¹ïl¢*õµ”x'A/<±ƒŸtÕÛJz=À„_æÕb%= µ£¢âÝ™¦¥õã4ñºÛ(q«oë# ]6a.±HJiúû˜åÙ-Ÿlwªã‡«ûõh_Ò§ìú†zGn‰Ÿ+Ý”ÎÇcG£ö.'®Â#ñ}Ñ ÆIÛD+ä­pF°sŒnn®¯ÓóÖg¼Í«S’SˆySuãÝö ¾Ï”[ ‰®ZH³¤n^'·«GYï7þ\œ«2®fœ»Yoqa­ØKÑþi»vÒ8_œ²7Ã{à.I?à­­•®ýq•gµœ§ŽGò.†8B@ÃwiQu9{Qù²ôåbcPyÚÆ·ëÅrRZÏ¥;ËÿƒÀ>_ÒÝãÓ °Å¬ö«;Þ¶þÇ;9cs†Ÿm>;/×V]·W#Œ¡cE´®Ö¬‚þE¬¸@¦=1ˆáäqõxô4¢ç@ ÅcêÈà>h° !"Q¯ÕRÝ?½f £DMZïg”¬ð'¦˜òŒâKœ™!É<>…pÅØ4t›´Ë´Çéom(nf“ÏÈÛA­ãAf¤µ µRõ§æÙ¦Î&åÆ8¦“F¹Ûç[û๺]£ÍÈß=<ÆÚ-É­QžFžƒžºÚ÷I‘éÛ%ÐkP+ÐðA»\:§™ …S¼†Ä›æd«¢+Ÿ›¿pDD²GeF¸K,I\KzIËIOáÞûXJd²4±l×}w‚prÕÖi¢Á¡N£’¡Ù£Å£š°áÏ·ùÞQ¡TtXMY±P’#]3Ä`O Ñ#ÚRž dÛèÂòKú&½õæ†OOØ&ÉÖÉbLôMŒ`·GØ¥p¨a/¯NØŒÛL7­¶sÝóÀðNgݵcž”:Ÿ8âß ñautbøÒøÀ¾´¸ã=&B~…u‹KAÀüþ·Î„äêía÷ÙS¾Á\†û„õã©m›‘ÝŒD¤Õa`òËXôÌ8ñß§©ôn!±G¢µ×¹Z׆áEP`ŸòPÜpγ†Ž7OçÀÿò}kØUhrRGê\œÎ‹b»ÃËKÌ÷ÇÚ°åÁdÞ,úºJ¹æl<ÔÑö ïÁœ¾מ‚‚—uÞhW\Yœ<—r~d¶Và—ToY†%z=­=/º™v/W Áµ‰€÷4,\X§ Ï&d_x‰¢KÀ–Èrž“júRZVzdÚàôè>¦ N=“3®3+LT¾Q›F’†“¦@m[ÍB½d¡ÁSßéØúD~¿bïÈPk®s2mÒòÞêÏÊ~ßtñ”ßlŒ¨g u}xég•WÇÀlˆj¨l(âÍ Ç‘A‘˜>¯¾fцÏV¢ìŸ«¿XF°G¾\jIIF‚A¢hsùüÇŒvѪ ŸÉž‰óÅnF“‡f2£“®Ú¸Š’‚W»$^õZ%z9M壽´®´o¤B¡aAmþrV%} ¡óçEEÔ’æ2AÃó¥šÞý­¦ÙÁVJêâx3О6oGÊ š×ÂÊj£­‹­ëqôI%¡o¶HV¢î¥»JkSr[µ§”‡¦‡øæ“À…ñºèùš†| ¢‚MÐì§CóҺ͈ºáZ‹‹4@k÷4Tc¢eçþéËÅäNBÒÛ/~îƒIÖ¢[±SëÑ­QÊÝ9¢ûœ#s±®“ü˜ C‘?ÆdC¹YkúîV»2Ÿ,]Òl~Ü ~Q5›N]×oÕvÞÒÑ’}ÒnkfϘ;µhÆmöjVæ™ ¶pùrë °âQ÷ê’ÖUÍèâÔM¸@tã•É£Çü`Ã_þÂlTågxuq¹žüûHjã@Pÿõ@.7€5D[Egœœ+$b€LuW n7F$†y„õ3ÿ稌iÈñÇñ]\7³œѦAìq®Ñ¶8«¸ÞhOl°ÉÆñ¬ñ‰½ÉQ? i[æ[µ=ÝÎe®N71Àå»î;¹8T˜s½»ˆ¶]$è4yHÜ4ÖÄ â-eRëz .tgÄMÜFiF«†]í¸©‰ó…T¨ý½ên¾]êa ªb°ã¹RÞXŠÄŠÅ˜Å/è ~üeëõþÑ f0ÌL¬iµ#Z’ò]1¼ÙÓ„¼†ÅzÃqÍûšW“à&¬¦ÙZw÷W¾C•3¾Èí²l°xz;Ô#óÉäÞíþÔé\ÕIN‰L™Jµ·>ÿÒ0~nÎ¥Ð{®u¿šíé—ª‹X–¼ò7 %£Ë+•“†:1 ³ “Ó奬ÈþÖUÔ¦ßÞDZ´Tts<<^|Û…2ÓÁÊï̤V&Ƹ²g£Vc–Výì¨ð6­*¾|_$w0(â+ûÉ©À·~'»(¥¤²y5‘×쌗¿eUt¿ëYâò¢Vo|vÇ|ìE`2·kŽ˜ ?„4wq1|šœ¨À|hp}$æI– £ƒ•­óRÏ@í!xY¼D¾êM(}EtË•Åaï§.¥ 0ÞùWêŽèUiV\UÄú¶?òÈççàuóà!Lx¿ º/ÌñÌ.Ó—ÝHîÊEEÿTöBYs\ÚîÐ…ÖÖH h=*.q‰¬À9ˆä²·VÍ®»Ön~Å-1jizKg $„ \ÈÂ;ßAt€êÇåÖçÁôéx9 RE9ˆ¾ÒÏ™qj[—B¾ÇFÔºCr€ ×ʶ}å÷%¨æîmuj io VÈP©/B.ó‚ Ï Ó€ FƒŒGƒtÉA D¡ˆ€y‹!ßÛJD(‰0ˆˆ,¡”¨T(Ð âe"6\.Ì#/˜=.% ©¬ëµûëGaéÒ Ìø¼Óñ_p’T_%9®‘ÈuH}Hž¡žÏ,ž#{Ñ^>Î{MmX7ðiaT7 áÈNÁˆoO}Ë‹\;*˜˜.¶ o@Y¬´ j~ñ§éù3Âí÷’ª¥J %!¦€—÷IpÝä[ÊšL|À‡@¨<úžþÇ«z+(q "˜LxØÙèPìå Da¶¿0+6Ü·´!¬sdT-R ¹À+ê<·Jø“Ò ’Ÿ…U<²N²ýu0Ì»Îß;ÔåSÚØ(Yr¶H¼ „Õ¶Â×–2.Ã.s£þ%ëºnê+\¤Mw;ª×ºÕ÷ë“­$³JgŒ¦ÚØ™Ö)RE-.yE´¢VW‹Þ¡¹æ°I3*!ãÓ·B¼‘žrÒˆÍpæž+¿Ýù„3¾ÉqÖxÆI³®³tN66(ˆ@0ë½ìv›µ¶áŸ‡/ϓŎP}k†+N—vK0ªÍíÍzAÓgHÞ”ÎO³yT?[„Kµ…àCžk‡ŒX'°¡àBçP“™XÓ9釪rŸýD×ü7 zÖÌ92'öºœs5ï’k'0º;_XKDäü<Ý–×-Ö¯«3§SÎ¸ç ™Æê6’į†àúæ:íÃë&0eÒ‰d3êМ/þr\’z“@4ìÞ%okaÓ‡­è έ͆k!éaW|Ëëë~‡sßí»>Hçx~OKÃ]e£ À´ã®m‚å1XŽ‘Œ¿f‚˜‰‚™$¸.âë{/0„ÀîÞ”’Q¡øWÇW å„‚¬Myß›4–±s›¸s`µªˆÓÙl{Z|IƒhW3ÛµM»0°Q±©æy4}Æ^¶Åã1ÛÌJdff~Öø½»[ÐZ¢‡¾ÇÇ5zÂgµÈ½>D@µ­>þòÇĬ †?ºè›~jâæÁ¤ú™ÇY7fæÌÙ¶êû#q}Ùï3‘”¬hm”O®Ó &÷’®¢²õx²/ªRPáŠ8©V^€Hbž6ãîTê5úEta×h>žõ”!Š‚‹šï ¤ëŸ4áâß6‰ÂqOJ|¦sø/P"ñ/“1o¿Í4É6ÉWÕyì=8¢PéˆáêS*ây³5e€LTÊY¢¥¥åÓÝÙÙÑ‘3 LqQQ«v^€g¡ï q’2T”¸žÿÔãUØ/}ºÍÊ¡Y¡Veä‘AO‘“k¾(«Ï›éQG"d“œýÑMg¸’çEä¶øj/æµuÔ XŒ-…ÃêD±ªUÁAù›×•kºÖNÔ˸¥Ò=ªõU´N'‹H]ÌoÜæ§«ØgàŸ;7&†î¢­š"è©S†jŽ_JI|gápU¸uÆÍB(Mm5‹~®4gìSñå[ZËæÎUÍ&qâíÊÇ…P°  úöíÛÏ,îmÜèÈH§fìGÛÉ‘GwÚÅ® Û—t„Ÿ‚ú‡çŠ«RjbDy“EœX”ÚÕq•‹®4*‘ïávì´q sõ¸P+"ËË,fíÁ9 dÂ&»Ÿ9^÷>Âô¾ßl>´¬Gy…­ø² äõN0ĉ+X¸VhÍ:'ˆcÖïì¥Ïoz4pú¢)=÷>¶SðkY´­¥é?ê‰c»–ª,ûÎIzÿšSEk¶ö¼÷ÍR“-Ý …f¬sûf`ñP˜ ŠÎÖw¤Ïà[Üj‘#t ‰':=ç‘zúÖÇu Â ÷_ý zÖ&™¢ÛIk%®Ø]!™ÜüªB?·%'´h*ª¨*PaŠÊ;‘Ž)†œ÷X Rᣥ_ìûbgË•Ìfò=´ÀÕ5/~T¯ÐÈŸ¶¨Òëló¸ØÂ¢Uk±6ûáЯä~¿’š[û3£÷~¤vvŒµÙ6ÑÑ?m8Ê‹­NÎÛX”‚˜àþûÙ<‚P_…¥ŽiM"!m¦ó¥®³&+™!#ƨâà¹ÇûG‚`n~fTQ(õ±'ÑZE¦´s@NÌ,:¢Wµù¨b*Ç6¡êšhµ0Á¶«-*éʰ¼f{ŸØ .¤ȳ_¦É»(IÓÈ“6ŠhWߺòò£ž@ÈL[­&›åÚ²µŽ5ö´ÿ•î•—ÄxãEV 7çcOܕϬ‘æÙñÂ6¸F†îùFk‘=ø¢GLò=öi†yïë”j£™§ r*ñ~ g=—Êxu¦áȹò‡´iÜ]@Á†‡‡ÃÂÂz×}÷ýûÇÅÚ©? ˆüÍÔêÀE`ÆN®‡õo;+"ÁMLàs‚ö:˜ü49 Ÿ÷øúLÒrž<ÖX\s)s¹LÚ5?<üà[÷ÁçüÍÜ0²3´íȇ§·Çñ›"P(äø·.>=>¾ÁÔìúzNRRƒÑ„£ûc™uuàWè `Êâ DEsIùL醚uö‘aqn¶ê]£ÿ‚ðé¬!@–ã©7•7§óúÐÆ|Úð ð¸"˜ŒÁçüJÀýmÚBIY988¸U§Ê:sä Á…žwìHdѤ;¾a܆͉Zè®H« ùLiäþE, b‰ì§L‰X@-àî\IÌd 2`‘ï’È`r?¿õ\,W¯&âr áããceu=(ô…^¹U#aóÕeCù ô "@ÏE6Wñÿy~¯‰ëmRçñíCY%q{3ò# Ç~¥áà޾‰.Ï1-Ób·¶å–†~WPir¼Á!.ýM- ¨4nQõCúH¬•é:/=’õ´ÏÍY’ô”"¹Ái—Q‡@Å;ª—þÞêÀ(×dú .?>ð¨l”­&xòž.ñÙK N‹ÃÚY"‡~oï6‡~à„‘xL[q-+­)^åQ(Už¾÷I„t<ìëyrÝ• šË×hš}#ÜA#N…&á6(OÃXÑoß«¾?Ý$1•‹Šžã"&"?¯ÍÙMMª†(ôDj°e=ï8}6’pŸ…íŒð¦ Q±78„χ‹»¿é¹øvÞŸëúÆý±ÕË.8§1Léêfjiü DŒºœ=ÈéøƒE8¡kÆP<ÑEÜìÔe_åN!m/†ÏÑ#Eñ>­Æ„9{\ôÈçU,(;²Ä>瘷üÄ×µš€©›Ýs\~ËS? ˆñÂöl!¥Eõ@±Aä(H hÂc„ͱ=•U¥¹™IÈ¡Ã9Ã(•‹’ÜcS|„‡ÚøŸU¡ß±å猷…—&ÀçŠYcÙù.’qGy¾ž`£-Öü2ôØ·Ðq™:z+u6pã9I]!¬U®H5·ð”0¯z ô5“ÄI›RÅÂî´IÔÝ‚çbI±‡èØBánÐôd")ƒxŒ‘%™2&o)8¤µÇæijQŽ€¯©Œ*Õ¾õYNÑw¼^¿ÊŽ) ’7õÏC»j%L„)4´Óýض•Yk´Œ¤›/jØ}ËJúJ–`Zlåë¾}ùMÿokiÚŒq¡ýŒãÅQçâ~E0ƒè|BÐ%NÉ—Ç`„?iõß»cúÓž2x]ŸR¼9IKÙÑWÒ1&S˜&'9Ü(dJ%‹?Ší¾ê¼qW³W'<Ñ"×5³¡®²I0ÅîºWè1ÇsZdŶö°SZÊ]gBÙØS7ÓnâÂ'8‹¥– Z¨Ýöhc,£-BóÄå®oÍÎP|bM…ÃØô3±B:œ²Ôÿ.n‚•)zžÕ |žg®Ö°Â|L©)ȯºÿÝêœÉqů*«SA¬®{#G`˜>äE™érä‹~'Ç”‘fã ãy ðüV¾•²Èás£ÅÎxeôUž¨kFΘÑl®Vì&É#E|Ñšm¶%ŒºÔ—6j È³¤àë1Î&qÖj ?éé­×™Ži êÞ!uxïáÕt±ÆY Xš¿˜^ËTŸèФNaÙ`¿ZòLrb—²¡Ý÷[ÑÜ Øi|ÖÐ8'‹„,=yýÉÈ š“M!44ïWrÂôiÕj| ˆ€øþrŒP›ëbzÇ1q¦Ñç€`I×Jõ×7×î`í@ÒÄrØl¥î{;âÑ«òuµ‹5ôÓL—ïr´DØÉÄTr3€H°Ìti«¨T „Dì4ß»k@WôÖèÒÌÿ¨´ÐÆvÊ)0{ÞSŒÃÿ«žñΡÂ8¦ÁTL”‰¡[Љ_ö.¨œ2ÄÑÉj:åŠí˜‚B¨Ù*ƒPŽƒ§ ?ÐÆÅuÓjºnH¾¦Ž‹Ö a÷!2ªÉ4(fUíBG¥;—HD‹)/ÑZ‘Å.‘v2—±·z€g`‘Ø»4©F‚ÿÅa(”[’dO¢û?[¡°S‚Ð9}„yÀ?WðW&öÀwÀËŽàå/ö¿†X¡'…JÈä‹°(:¾K4¯ßî³­º•=H¶ŠZç +[†ã#äèÈgW¹vÁGdžï帗§3´ŽšÞ,Evâ’îØ»ß.G9 ü †• eõzyŽféb桽û¢ ³~*jË «ŠG_›½ƒK+kÞãä]“M‹{2{<'ü]|jü0 ã=Mù«€šF ¢c¤‹ƒŽ÷>5ïÿÁ LH•üøÁ\@Û«WÒ9¬MÔÖt·‡‚6XܱÖ-ÚÏïE ‡Ø«©f¿ÐÒdºûñ% ÐÂçõgVÓDFÒ¨O iödQKçzô››Ö&h\´tØ*!>ƒÃÏ&SÔ8ô2¿_ÙšBŠq”xwkøº[å}¨¸JQ}&»•´Ü¥ëÇÿíQ‘XWÇ#ƪDÚ9Ï ~Ý]`e/©¼{´ç¸C›Í€>-òðÈ,ÀÖø3‰±­€íC”;ÙLøéýŸGáL.9ʰÛsþœã÷È@©bWµó^Ç9Ò½! å] Nßz7#>²öyõؼŒ^ ÏßB㌾ð/-èÍ(é>ó]uï'LWÑÍÐêY¡³‰_ÈÈ%^3Ðo„ }'ÖÍg Àœº>Ûõ•~~²ÿ2ûjÚÙŽŽøè$]¯wW·í¼KœÃ1X«]#ñ)¡óÄü,Uíµö±öÛuÑ-ôseמ¸àî S?»ÞN\²1Ôu%¬uC|(tä¯ÿ)ЈŸ¦ØNÛ•ê/­˜•Kf IÿÚ<ٮʹ¹™žž^%m›„^Ú“­õ'š^e Í·r«}\ïKolçF‡É‰¯¹ï EÔ)¤Þ«äºrçY«¡Ý_ñ|R’4&}&îÁjÙØ¾Å@Fû=Cy‰šß¨éÌMÿ!ä[#½÷mníËÊlÃùÈŸ¦ø!9±npK%^îI…R#_k”8wa¸ ØÜ÷´¼"ðã…aLñaìü»Ðƒ¦è¢ö? Ë4c~³«KšåV‡²Ã^…Ý%G‘xœÝ­ZØÈH\‚d9LGi²9 yÜ‹z »"%PÄ•N¾—ÖWä=ÇžQ›ÂŒƒ<­[Œ¨c ÆÇeŽ!Å-X?<(AA Fãâ ÔåxlžO¹Ñ°'ã§z;Г°I/ÐFCÿÃ5ªB-N `á.¹3ˆÝ ‘²Ú‘-Š·ì.Ö¢GG}]ï²µÅiÂ…xn¥ødŽ¿þ„£Ûâ°Ù²Î“i;fš¥ÑGhÞP¬d =øàt‡ˆ€|};,ßÙÖöÄnÕóëj®:U,úÝbMYÞž¨,ºgl‘yôÅÕL—(jtõ^,t&¼<Ü^êEœï„ž”:i$CÇ ÃíO[‰ê¤Œëe`½©¥x‹U½“…ŽWQ)8èŠÑþyqŠ0Nß©¨– æEã[ „•’–\»_KÔS *“#Õ¬%âTŠ5Î.£*UKb’þŒ¾B+];8•¶5lVp)nµ"œßá¿L_èD¯j>ĬÂ4AC€fíX¡bCês>™t7kiûú¬‘‘ÒÎVÜN¨öˆäâr¸½nndW&4D´¤=“3ôNNàòÈÚÒ=„2&œƒ‡)·Ivã¿Á“Í'ï û²ç¬ÞÁuAHBô6“¼Aè¿ÉSÎÙ8Y¨Ogð·““ Åû¤«+ hÅêæt¸ã jƒ›e…Z&a[Ú‹"”gx¸8mÚñ%HôÒ±àÀé®Äò–ø¶J’Pyò4—¯¯sþ³å|“ðHläHâ:;váò¥dd¹zöµÆî™Þzýh¸=¿9ò¿­3¯vRÎ|ù¶—¯ŠØÿXfMÖ-hæ˜ïI›±Çùìÿm™Q—›÷|ù ÒÒÞmŽÛ0Fƒií~IDH‘rØêã\|¬Õò¯~xÝ¢{·¤÷4ÍGò22ÑÝÝÒ$@ÏÆÆÆ ²{âÒT‰”ûޝøl¥ól@¤ÛÜÚs(üþÉ)T@Tv'à{P¯7Üç?n“ØÓ~†%e$¢)-œÅjÔ¢¡âÑ»=÷-n× –™\¦ &¹+ò-åÌx!{ò9±!}CÍä° €¸M'€vQf9¼6øß¾ª.nZJÊ^Õ&dÇwªÅ{*÷2Òå4zùˆ.Bëuü«CÆÆu‹NÌ̶⒪ͺœ®‡Üv"Øó¢ÎÐÇíÓ+‘-A1t‰…ä‰h(@ WôÿúZ¢ƒ"ßgÛ• ÓxÀØv¥tÂwf¡¢¢¢¡9OgýÚ[ZZÊlõ¹x (eZö µé¬ªWÌWšª¡t_m‹ˆ/ДS0¡°ZY™¼Ñ/$šHp͵Øž¼ú=.¿ÇÍÐ;"jº¸¸4Ö6Ê:n³Ô:î/`)ÅDÜ$½¦\Z™»¯;¿~¶ÜÇÂF l”Xòuj¯£da·¯—ak´E?Ej¾ë°vrròö~zS‘ö8 :iYY|bOß=a¡ÅJn§û¼ ˜î8z¬h=*?ª”òª (õ[2ýý»¸¼Ž2ô:¸bGÇwHâèýè©8Ij~× ,¶<¡ýÍ¢W, #ËB4€‘B*¨í”vPˆQX nrÎצ½Ž”½šîCôx·½…÷Æÿÿan¹eŽXDuF:÷~(æ>6< àþú¾M8–ãI3œ‰ q®"Ðó¾ð†‡œª+N>‡âžŒu[køs./KvÄlhÖóåq]ç´^«ÑY«O»„5;BèŠWT"i9“î¨#Å=«qNÃ#ÂíÙÆÙæUk1˜Ö!pûc€Á³ÙlÈÐ%èÖ@<¸“ÁÚ¾xÎåAÃï`ºŠÍêÑßÇÈ?V^ßÜds;wvú®ýÖXñ>u<£ 8Ù&;ò %h«¡nÀÍ00Ì_g€ÞÊ®³Io4P²ÀO»r¢ÏQƒlŸ[_[kÚæ¯ÒÄQ¹÷ßnza6°ñü –z¾2eíS+2ºOJzR¢šÝZ‹ãÎð»1cßuÖÔ1W[VOýÀ*SsOÝ7ÕÉ™’#Æ`JkÜÿê1†Éïû‚Ån» ‹_w|> ôû½%u•Å(•ÊDêËä!ãä£Û,<}0îÒmüóe6·,Àâv‚Õ†ú÷å^ô;‡óå°(\.ûhGJ™Õ=k°Îú/ÄI¹RGÒ‹m¿µã¦ð†¦>~ªËa©­=´Èì¢è•zŒW¹8f=T.ayÕSN@(è^8?@ëBíMRY+§F4u YË>tAºj -Š×_gp¤-ôŸáÔEǰ0(Ü Yn3HœëšYÉ1èuxÌË2vÝ“Íê¶¾þ’zÛËãû[¬Ï•˜Ÿ%¶†,¾ÇbEÞ€{—43Û ®µý”å*wÇU†ÊÆMF,Yβ±ÃØ!ÞÇ TëµÓ0³3Ú¯¶MM?ï!«Â™¶ae õ5퇷1v‹ÚwÖÖ÷º]𖃡ˆÍövwúB9m–âRS›m–Y Õ—|¡ÏˆêŽ«/âøP\æØÜf ¢Ûˆ > ê´/Á T}Ý[ï°‚1ϹùÿÆI%›”CÏÛ¶Ô KH,ú®ÕDÔÔ€E1Ë&¨pÃòOr@fFÂ(©¨>¦¨€u̺h-,¼À¸Ì£Àÿ§­£P„úñý¯³SK‚ü¢BUéËKõKrò‚¼¦üèÑ+SŠLÓp¡q+ÒHö@±“R䨻®}« ÜÛ±9¢¶UdÀ(Ý'9B#jÃÔM/wÓÉö^äïKÛØ|Y¶ÿ2Z1a d(3>q—ië’7añ@-¯Èà4HnØßn#Üí7Ëׄtfù¶«âØÞ$h‚È!¯ðþŸµ¿iïͱoµ‰4qÌBÿÀPb ý¯µrøêBçž{o¨ 09Î{&E2n÷"þƒûü-ð’7Þ#c²°·CÁ]µëa¾Äz¡Üˆ 3,þ.À|xƒ­AºAÄwc†"î팛8mÐtVÒ3n⦇˜ÞanÐV‘S9äÈüzr£Z­pGp½-¼J;ÛIY©jÉR<ëM³B¼ÌDjÊë¨ÂþŒî¶yteòÖ˜¾+—Tä€>¦Ðin¾æŒxÃpùAÀ=óe¬1àì¦ îQ/Ö hϰòA€”mkëèù lœùPôåA=º´õ—’ýL4Mê„/,~QHy9+Zub…yÕëmÛ“¹~´ÚÄ{½?Ñ|àô'GÒÒpcÄúÛ†ÿETÞð¸¯ê¼p0Õe$£Š’öV•× ’ˆñ•ŒX›;ÝÉ·²£³ùß?T—àf™B¸÷Òô\gÙ²À9éG–D{ä Q¡Cü%%Z¹㨺 =UéWSÑ9dÏŸwÞ¿zS/n² âRRšüÿ¼vu)¢J£"!ÉHK;/š^æ€P?Éî>Œ÷%ô|½KV-QÚÞõÉ63÷ ¦«W úȧ_Yº¤©Øâ.Ý7–~ÃK[°»ªçq®—SõaC’’„H/»Ü³'ýâZ–Ü@a÷·C+S滌¤FÓN]YÏDRµ×ö_–•Åß“£p× ë0¿´ÇF€ëDz"##yœ÷¢™hh¬¢ß¿Ë4…?v»+êõ•‚ʽé÷¿iõ ¬´Gþ¥ÙnØ!.u¡ɦ8Ï9·õtì pl'ÐÂõe²Ò%g[ Á®ð¡‚s[–@¹)-Gbdo9mè¬äå$rŒ:陂Ðⱘ‡¢3W ©"€É-w­ªâ‹ÌÄ*Æò­â³Ð ÌôÝÊÕ¼ªìn jW:Kr zÇ$Ò°$022rrrÂi·VÓõ¦‡ œ.qOþnW`‘šôù6Ðó˜¦`샹¦ Ü!ñ’Uˆ@ì±²y¿À;î$w%Òêr)­Ì÷(ß“e³¨hoév—?B6/AAÿON#Fk(Ф»—¡ž²å!!sñ%øàëü õ‘”ÐÈ«-h¨šOCßRù&yîh6Èù/¾sÛüv1Ne—_a5øÁòxÒY 1Aìþäò§±7`ªÔaN×ò…ó©—£†•^ ¤·d¿_i}cpü¬ƒøÅ…š8ú6 »n>}àÂÓ9ÒvÔFÄ ??ƒ äßÿ×ÓßJkñ5pdbUú1"ù4P÷G|!XÓÒÙäå XÿÈqý9Âÿä´†³ÿþ;´²³Ãµ†§ßër€’¥.à 8ћЦU÷4òúZë=H›z%j‘¾{?N²7ÊwÐÞq÷K\´tjmÍ6ŠòÉZþ푈քD÷u‡‹ÄÃÈ 3V´ÌŒ§ò$8”¨ê€ L0Ó q{”@÷\Ø.UE† §‡ìoiÈwþ|+!S³ZÚZË&0êtÅû¡òX]9[\ùèù½HFU;§´y\¾´îêðÍíù*•V_•(ºn° j%‘‚€€-§ý”_«ø]òTžº£ù¼ ïŽLþöû¥e›"píkŽD}*pý'„î…Ìù½ã(»…©¾Ðl-ËЗph•_U­½ìføuéº j ƒò¦žzs *ìs\ò·½¸óteà6sk«B ù:.ÃèŸøÂàOéœMÞêí­cŸØóßb¥mT¾QÈŠjC}á9)á$¨(®\² `ušcÚs+ˆ­j€‘|¸½*9zdó,Y¸læ³òåV‡•¯‚àGõ¥ûTlLîúÌL®Ä«U’´« [çEñ[Ò"}…Ýzä]‹£<씽k£’öT¸Zf€ñožo _èctȘÆCu{“1…"ª©k&9ZwR¸wClÙ¿ñUÞÃ=g‹z‹^8÷¤×„:÷ÛÅÓ.OHG,Pf´ä]‰HÕ#ãümWô2ÌõBÑÿ.ëÅ›0 ^8Aé?bpRÃg‹·|ZüعMk€Ö¿9EIÞ¿ËYó€°ŒÑkòÍ“¡'ô0èòŠv óˆ2—â³…ƒxºóEÇ.-Ø  Ê‰bÿª*^PãE7ñé;NߊÕ8®–QOhý³2êj‡ ìÝÆý 2šÞ1×BúÇÜÝ[ðT‡è½#ý'¹/&³¿=Üw× bä<ëÁ÷¦’rð§å?ÈSÚº"¸qîqÿQOHâÝYš÷fB+é$1ˆ_ºŒi§Nb‚ý»”.8+ŸTC?øÓÛ— /(@ôõ9ÅŸ@ðPÇx£Qc•®D¬?N•ç³yÜ"}$ÙöAÍ`›ì¯l={‹±´h¯Îõ}/çóè`‚v¯XPX?2Èc§uQŸèjÿÏKLó­¿ÏíY®ÿý-X©_/Eàz¾,¬ìXõB8±¾§ñiÎ:·g3¬¹<lj û÷Lð©Vh¤õK:íØ:y,Ì’ \½´—ÓŒ7’Æ3 ,©óZ§Ï›˜ƒõÓ'â\[ÿƒÖÞ^Ri5Ùø K¦ $á`¢#ÖZŽp˜±W¶p è5ÙIÇi@#’gŽÖqýHi©äòÞgý{î(~p$â9ƒH¸F“’€À6íTnõº¢#³ó"¾#Ù×ïíŽá—g­eô¤ 7|O³Û‡0-ÖuιÝÚóVj $æ•.· ^@„ä¼è-\;¼¡›$êðÝÛ›Æú aÂÓzIÍо_ýF?Ž×ƾÍzÓIunÉ6‰c+‡*Zïy&~^†•Ž÷uz'kΜѺ©]ÇÂ=½êçKåNÔ°f™Õµ?«ééFVq¿ç1…ÂÕ•v4ý”J£ªxù¤ƒ§ŠId—4dEëþzP×Õ®£‰“ó gîÁOü¼½›0ÎU–ßq-cà%)YU¨î\f1zQ ÙnîY·ÑyŠŸD ïÏÿlxÑ-ƒf!ïkY'ªù–{’ÿÊ=&3 ´3ߥŽÃ \3‡œ§ÕÓÙ|žÂ°Loçeõ±ÙöØVMµéòA؃’Ê”z®}n¿â» Nfÿ“f×`s\¤þÚw[¾ïu>$¯{Î ”'º\¢ü ‡ñòïS¶£$Ðxþê*4}þZ4Ûõ°‚c®´3œ‰ýxؾŽH0Êt•ã3$ðï"±jìêNYì¨q¬¼1?ÂlýÌæÏñ„PŒb;s—¹9„u)Û7ÂUk’sM|…ªJL ±7ÑÆ„J5¬ÉkWwL›Æƒ)/Q‹Üû_ ; ÐôA½Ðÿú“égû÷Øßâ/«Ý–—p]H#’Õ IWê%îÆvoßPÐû ×–ßÕ MÔ/²­ê#B`‡Òùöü”J ŽËº&Â6{OÅÍŽâÝÌ”fü’ß8yõâàÔ°„Mð4oåãöΉŠÕ‹GâÇjÑB_u;‡zÀ>ˆÁ¡öÉiöv‡1/‹1Qe( ‘ËFº^›Gózïa}VÖ,¿ƒNhIåì& ½¾Ùiˆ@$€1 ì‡y@tLø²‘c°Á¦aÃ6Çý¹lo&Ö¾æËL”õNƒn|×ÝI:ÜqÚ~@ÚW9úŸð#ýćBZuÎa!@fS†ÔÛÓôÇL©QNÒÆWIGý|m©¡0[,ˆ3Øú¿JJùî§#¯áä9Ùd· ÞG$âr~¼KU§a0P·ÌÞ•ï_z2Ýhýa^áafĹ‹¹±øäîA'fàJ²ÖÈBkŸÈ k\`ä=?͸Ý<<ˆMþ÷È Ç}Âð¬xV/ô‰«|ü ~{okwK¾¨^l bu莮”ÿö±µMăÓM|Yi³@99„EË}nžÑË“LwçakܹÁ„”N%¿û#£¤>K7æ«Ü…Ɇæq×)ò… ó3`ñ4Úù¶(f,Î@T Öõ.Õ×çFZ~£ëŸ ÖnkÕ‹F±˜ÿ1ʸh“I„—üoCFbô¯àⲟ!t ÷—ð5ÖÅÍZýïaG«¤ñÞ¯áFPn°?üóÔ.ÄóI<8†ZŒä­!Ù1_¥õæ«ÒŠQ~x+¶?2æ0áÒšûZ‘´,ªAÒ‘>»»m¢j‚=1ÿS7Á3š/œUD§Ø{oöz{¶¥ø¤0àðžÒÓi’í@ªSío`ŸìšÈª ŒCæIÆè’†à'ÕiiÜÔ0O¡¼‡"€†ÿP-ÍíR"«¤Bÿ}i¦Iz(£æù2ièc–±aA§‚LB‰‚¯Wï}ÃOKó\Ç5FÜ‚'ä|Þòæò¯n•ñbKÙð·P3¾ÿm9æhUëtšÖ Ýåþ´Å½º ‹b'ÞHl/Yý¥P¦Æ.NñAî×ù!Ü{Ë„šQrÊë&É‚†/¼ÂÖìXóæÕ:`Ê䘷Tpæ[߯fÝ`‹¿¼CôoÆè Ž!ø<¨îEë7£}‘øÑße}ž5ï? *ü”? oööàÕMÿ6ñN˜<ÓÇÑÁÁ‚Âaó˜û$‡«ç·®3^ë¶_ y¤fÐäWÕEßÄž>/±pbL„R,ûy?Ç'÷æ*k|”¨qÙæ4·]~ïX…QöMÉÕ·†¢‘ÇyþS6ÄÉk=$,þñA†“•jG â—ÛrÙBèÝ^¶y?ê¬õóNŽâꉤý‹6‡±ÆˆdxÜ”–¹î¼†Ë‚ó9ø(Ć•7"Iï”#3ˆ…Cç`a£ï./]/ÜA™U-~ZóŽ4ÂÒþcR-‡}²2mEšOñHé0±ß¦svøAÜòƒR —ÐÅ…dÎUŸYêÁGù®öd4l®£sÈØ2’~óBĹV&¡=½ãJÿØ9°æâ<^òºÎnl¼Ì¶Îœÿq[cøOãiî¼:-‘ø·¦Úg)ãžZ\”Æ÷îê2ž;骼?{®x®¿æ#·8$ô4°YœÂ_ÚþÇ@ãøå;ø?.‚ð§«5#bÕ‹äÌíÓD $,ÛÓOt<Ùr%Í­]ÿ>n4ÏàO˜œ |?×õUXÿÀú‘!H ÓKëª-N¶º'Ëè(¶Ö7úÉjN·9¶˜SZß- {’ ͪ±¡¿tÐ08$_eh¨´7A|©Ù1¸ËÕþ¿²è,ÎÆG6¥È>è|jýÖTaÑ:[L¿¸šT„¼ !²0ë-Ž^Yq™Âh˜ ÿ1g’4»ÿœOì¨ý÷ Êþ¢»©èµó7ìÐâÉKnÑ7í öÂVÿR©ëTwÞòQ­ÝÝ6xæ/fõž…1æº:Í[kÁì\ïŸ&ˆWPí'×_ûM†mr]ƿԥÙZ×G×Úc/6k„……Uÿô«þÕ33¸VËïí¾üþÆ¥{-¶û×ÙÍÅ¢13~•~·ß/pþßî7~ýÅñF}Ó8퉘T.ÕÅùùëa’ú?³ÃoÄF ê4qÕéߊf1Sä\Eݯ6qf‚BöB/—W4,¦°ÃŠ~›8¸’Ôp:ÓŠ‘°O¸cn\!Éðv‘0È<êAÒ£Á¶â¶,²ÂFlÿrãÖ“ßxü¿„*÷Ð6ÿ«iŒ`ûIGª¸È¹©„œWò|µï)æÝø‹ó÷¤Â½(Ün7D)½ž âŨÈÈÈ AQ"©‚§vÆ…‡ùþrø+Øðó’Œã?w‹È0žŒ…{ÈéTÁ[âHq?=0_º/’l°Sdü‡aÜ/Dª!sâ7æ^ :ŠŽ±`Ò~†y–Ô^–”óŠ ìõD –="®H>ÀÞ!5è:t½dß%¢çmü=Îo[E-7oX ãÖ¤ÙkŽ›=†Û½m|›€l÷zNâƒtFÿÓSøö¿Öǂ̈ú‘Fr}=ˆÀ.0¬\§x5ZÐ9/Ž®Á 5öåÖçÉJ+v!:Zª8i*Dt~§tÈ"/Öq{-È£Æiȱ-é÷™ìžn ‚“ýÕÆ ú©Ìg &^B·«Gv d1¨^…ä ß)¼«Y°",üÍ#O³¾Ô# ϲw†L¨JLÒ\¸³7=3z©$©¤& ï¾2ÿ½Jåa‹1›J'UÄ;eÆ[°$èÅTŒ? |«Çu·`ð@©ìl‡Ó §ÆmÇoÐL½¦ZJ"æU§n†’ ¼éè=Aæ¦xƒˆÊ^ÏáBÁ«8þ:.´™g+ÚVÀ;ö馅ekIÕ&»gâÇ]€~cµ»z?E»7"Bó0°5ÖÄÓ+#^W®&«ãCAä¦7äï¾R™L°•uÏ/#ÜŠÛ=ý´ÄªÖ0À¤š€WÖHz4Ô'ä{LÂð¿í8Ø/šŸE2¯Åë^räžÄd^µ‹Xå2Ô œ7ýä·ø¦M•0#œ­¼ÅvZ¡–ÅØŒ0£LÇJÉXBJÒÕÆVkT5JìEj C)j+j´Ä®c‹!±/“è9Î;ç¼×÷çÃóœû¹ÎïºÏ}£F¦õîv€U%5 <Ú†Jíyýáóïc%7êeúÊÝÙf#C²¢N?'œp²òÚÇ3 s˃sÍCN|p7˜«ˆöõõ•+Ú·Åjê'¬D`9_c{2˜W\d¤$]]*ù™Rræ¤, 7ž®/¼Ø˜ÕÛx#c»«„k Q‘Ê^†V ¢»þ`+lâà—Ú`}ZÍü"6[’>,Nõ nQþ‡hÐÿ…î„ÆÍt6¿#ÃÞ„/3ý¢,ZpæøHçúØ9„ ùEjé™){(/# ýÑÞ'-!‚R;ï:/]ù•`]èf„&°é*‰xôV eûì}ÑÉ “äB ‚O™[ñ$§ÑËŒõ˜¶=!'EY“¢59"~P!. “|QnF¡t®$6D58¥†Ï¬gÌ’E×–à•£`Ñ©èÐtµC6à ¶ívר#XˆðåkY"åJwèÊÚ¦#&ß:ÄÞþ|86–!s髿«_.¯ûýknáÕÍ‘ÖÁäçö5yJÉÎz”Öuv©(xÕ_ŸÉ @TÇfœƒDïçÓù†Í[£ø¹çÙÍ;Ÿ>eZ–éEö–ùL{yÅ,e¸öÔg ¹OÀ³ÂKñ‡$ÏH…ÑÖxÙý¸ÒRü€|‘¼êNtåEÕïÍ]-F{_é ¤hzªKú­pó,:‘)Ë<ÎÊ›¹|Ùõšíˬ{T¿4º<½tÔâåcÆC–bõâáaAA»ÇU. ŽÉhÀÙÒta¯6îR¤¸¼6Œ€ Jå¨ÿÔØ)[µHÇ«˜ [îÕxU­ðm+S~hJ©Ž`0tϬÚFQê¤ðhÝO¢rƒ?8óçßR°;ÿr&ºØ—1@lAp£›u&Œ÷Åk‘u<¾?C ûþÁxx¥CGB÷®UP§š7çSúç°¡ÒýÁhtjªERÆ0jO#ÑÈŽ‚8ü §7<¾I.Ñ­yeÔ€tSy˜1½¥ÑªíÅKLÜÓ6:ÛÚði业¥7l«Üm, è–«}>Ö”ÊÅQRÞ±æø’Ó¢Añ +p]‚sæZäA$Ž÷ç‡m¢EñѬØfѱòËgM•t=IïU"L›þ]ífŒÝ'Á+åèÐ!-ƒ±oä-¹ Á mÖ™¶œÚìÞƒ¤'p@䯢†#1-\\®V´dØdN¼64¾9°ˆ+´Ãé^šå)§H‰É_mjØßLÞÜÏ­KôáP¢ i‰•EÇà¢Lé8Bµ.èËãs$SüÍÒµå‘a¹Ä;7ÛRXòqïê;¿iìc) ÉAçåD¦SQ`¯{ô©-€;gEÞníhQ>„«MDN0Ó1™ÈérRÑÿËþ;ßÝ(JLóÎ!Uñ IJo®Ø!f²+³ ŒÑÅ>)z/¦\‚’}çÓ²õV¦)%¾-‡©ôr«s <Ë,ûÕd[ÞÄXL£Ó‡Í[+4D“(oi3]ùJ+r»aŠäf÷,ÕßMÊöGÅ«¯C{Á÷㊪B/åÙ☽âߨ’Õlš\ðv@dò=Ï1¶{4q¨®Šsø÷rYZ碪5× õðK*ô5—H|Õ¸ H áÛÜñ wÜ ƒµð­ýA%ÙŒô«@–Ú5µ¹}=äÐÜ´ÙüHˆ”1L°Øø¯¦Š<þ­\ؤ¥¦§§tˆ¨®®ª¡U¯´¥±¢¬¶›µ·S³¤Ä­ÅÉÂŒÀ_¶ÉǧҾÌoÎÂФԥԿ×ǾÄÂÛÓË«âÃÅÑçÕ鲨ãíÛÉäð—¸ÁôÄâ¯ßîŒÊV¯V@Gûëu0—§‡›¬ eÅ K,hŒ€é¢Ç+BŠI²¤I ;PK ðDŒ<£‡O.À„htmlsingle/images/home.pngë ðsçå’âb``àõôp ÒÊ@ÌÏÁ $#3ÛÔ˜|B\z{5§hÎ1tšãäµÔ+ymrñÞâ–½-=Çz¦œ›²ôÜÒ­÷¶»wìÜós×Þ_{þþùûïïÿ‚Q0,À§wKÜY‚1ÉÛÝ…¡ƒUÖÈ™ìéâRqkmàE¾Ã 9šÂsTüÿ¿qqä6ØKû¦´0?zjQz°Tç{á¡=‹w駘0iλ ¿ßµí3Uuvg~î?¼6·ãëÂn.M¶ßbòçVÍâÔÞ¹½‘w³ó¦•ìsmn~>[È&j]ukšüÜ+ªÄ¼²+×?”Qhæèy`ò¸²fþ Sƒ;Ë*ßlÎÞýS_ï1+×ùëYZ†wÎs.q( ÎO+)O,JepÐPÖôÌMLOõMLÏLÎV0Ñ3Ò³P°´Ô7°Ð70TH.Ê,.©tÈ­,.ÉLÖK-ÖK)-ÈÏ+ÑKÎϸKqÐ8-°q™éy‰%¥@ó MMŒRÓ,M’MŒŒŒMŒ“L ÌRÌ ŒMÓ, ß¼ÙÔÅÒ´–ÁØ´ÂÐTÛ@Û@¨ÎíP†ÁÓÕÏeSBPK ðDŒ<ûôD‡htmlsingle/images/home.svgíTmOÛ0þ ¿ÂiŸb×oIÓЂö©ۆ*¡iB]ê5!‰’4-üúÝ9ÉÖvhâ뤜³Ïw?wòøló’Æ”U’gG0î“Eù"É–'©rÞˆ çìôp|D)¹0™)çu^†äõ"ÿfÈUš®ªÚºÈˆq—|ž]óM‘—5¹NWKz•B)¦¿ûôöæöúœTÍ’|9<¼¹º¹%U͉ó=ISZ®RfyödÊü$J“b׃1áñ{û;Có{sûë–ô!©M™&`B}âœîœ"ÚSÎôév¾'»¸zo[=³KŠ®“E‡>SÚõ¾4ÉÌ<ÉÂ2_e‹}P½­€iL–/[ ôž¿°ö^¦áËdû õÂ2{“‰£ƒ¢vHl’e\÷«&1ë7ùfâp‰àß!ÐMaUÌ#3qŠÒT¦lŒufÕĉ뺃õzÍÖŠåår Áޱ7Y’d1q¦óGSÞm8—üN9p­Ç°^A‹ØûbØo_[apó:Þò«‡Ö)ÙÈ21õ˜p¥`AÊ]QΔ ¬6°V0Á&“.~5 ÃÚXÆÈå»ã`û®Äø­FŸ¶éh¢.‚`!³µ±2µ©°¤¬=ÚåT`°ðíˆ3tGuH.^ü¶µ¬­ÕÞŠ;ט ñª˜OÕ°§Ø¢æRˆØo롨ŠÄ¿Bƒˆ dņ¨mïãE8áC„0¯·i+ˆì¹íÙA‹h×âÉ<[5ù¿jÿpÕ4ª¥ R uXÙ`ÚTþ@ºá)0õ`Ï{+QqÖøQ09õÁ‡•G¢­êŠªb`})x,&`.cÉTô«ôœ(‚Þ¥Šä”‡¥ô±•ÕC­ú´í*ƒ2jºn}×5Ð3© áŸðÕ…[ gjhû±'­»¹Žáž][n±E«g˜x‰ðx°Ä÷°ý¶¯bTæE÷(>ÌËûjûaôº‡q¯.¢¯Kàêà’Ïx¬ƒFí|ŒOïéáOPK ìDŒ<⪡£2â60htmlsingle/images/hotels-site-bookhotel-flow.pngÅzeT\M»eÁ-¸‚;4î Á‚»kp‡4¡q Ѻ°ýîîFxÌ-kE|úÂ.q?Òü4õÃ͉ÚA={Ë_IB{æ`ê z.ËíFxiz)óZÃRÉnjÂGˆ±ý u\•ýDqXuý¤‘\żañ„cÿäFýÈ•ý¬7á3H"»+.ôãHÅVU•‹”ÉR¡Øv‰Tƒ¾í¬E,³¦T¡CQ~6ßô’°c«¸bJèßRguˆ‚Lð^”=]' €ž]±òAä @ çJ˜ M.3ªŒ?¥_Ÿ´|jŸÀýɃ8J,UÈp/ÄñlùÚioHô‰›þù£š•ËÛ0®£ötSøð|;_×c¬YxÄ –.¶¡Ü~»_VÃG/ÿ°o‡œ‘Ð`ªKYçTš:¯žàËÆ©¥\³î°¦ U¡nà8 ¾ ”ÎÖ¯ÔÝ™Ÿ–Þ`OD˜r®ÕDl …$%…y+Á_·¸#ÑIÆ¥8äÒ«hT/§w$ñ—ÝÔM8ÜLà úy¸|(_l? ß¹ü%9ßËÄæ7¶ª]& 4ýÙþsé¥cxÃú¸Zå’ÓÕÖÏˡˋ0°ÆBæ`÷¿r[à­ŸÄÛ€Õż9Â%xžù̪órXì`xËÄÝæ%‡%›EŦý}Èð†È¯4†¯Î2'?´‚ÆðÎÞ¦å GyS]‰®ÆéCØ¢ˆœS}Buñ É=’46õ=†[;ö›{óåBŠÙH,ŠO’iÙ#ôñšûõ:Õ¼#oæGööÜø7”fp—w¼\šª+‹ŠÊov3ä=GjÓ›=.Œõ´î–¢”n¶QÇp_7É,vQétåRDƒ3g/0.†EÊ“¦¶æ9¦ÄŸš¤V>"L9UPácÇ–´>Þn®|h‡n}ïÚžÔZ>¯otj‹âWÎS"W*WâU(úÚfæ3N{ZÚA #¡ŽØlÞ Ù #þ"îÍÁãǮ©{xWkÚÚ¡ÝRŸTU^Ýz]»©×å™gæC ”{ðëœ2}U𳦬IÇ„¤%G&:?°ô2 3•ÏÌzd -a´®ÝÏ!†Âk0x;ÜÁCR5à"rvGç•5`"hN¬)‚µ–§÷Ý”a<“"¢ëÐ2°Èù’Q\O®)šS¢Z<÷íBÁ÷Mò{e½å¡—ÝÇ9c߸J£v«ÉÏtrª,>Oñî¹S°,ˆ4½BÅîå) ©|‘]Ž} ËÝR­À£¦3š¦°{¼EðEÔ“¥0-÷öø fƒ“×ÖëzŠ«z:ÀÕ]óÞíQûª¡ãú]x©,N_˜:UžRÿï3&º5»Íúñ+°•³åÙ”2æZž=ùÃ(çÍòeÌ™ÉbÛë „Ü•^Ó¨ ¥QåB)’ %© AíUƒ]—éb…zý‹tÛ~ï|L¹Ä/š§$Å}I-4îšÍÒ5Zë©ÇîíB­¿ùá{•õ ä Žg|«©ŸÓBŽ ‹ÝõŒ¿Õí¦lÀÖõÛvÏ[ÚÎÚ/îÃä DéDU£©1E3O¿]MN|·ê oz\Ú"âÀ7Âþ…UÚ¼KÆJöÅÛá1ôjhûx*¶F5k©r¥e)4º$’C‰G‰*#//5%Ð3ðrònW‹ZJ,àk“p µÉ C­ò2I“µÁ©‘–®á­‹Õ”…¢—ƒyË*ËÅÊÂíU“87i€i ˜Äá’º¶§úØqááë<‰;ãzY—Ôcˆæî8z)ñ|X¿çÓoÿ„€Êýå½\—¼®¬³|ä*K~®9–WUÅ:»ƒlò•ŠŠª¹¦_ádm­îMŒ\ú®/¦;ï§”´žÔÍ­6´a÷Eµý‡gHqÙÁcu^f°“œ¾;lÕf›èÄ9Éùµ‰­µ÷&–iš WM/È)KÒ¿d¸Äy|nôil ðþî%ç½Ò ÷S3ò[>J?ö­ÞËt’°ú#ª&¯¾AÙðûàˆ&Êór0´˜Š¼¿_hŠÚŸ£ I«òŽö¡b6¯á‡×Ó³BH<í…ùa†Û®Ëü‚¨òÄ‘…~ŸH+¿™Ñ¯€-Ö{}œ¸jãÇŠ¾ßü¨w§§i¸Âú*.´œkŒ¤ ½è{ñóR.ÝŸ ¿*û Šú[~Ï«?_š+±Èßè¶xŸ— —(>/žw«›ßŽ´hqÙ8œZ%÷);ã­Ý›ÝÃtoág_,‰†oLs¥ðô-sÎ+ʇŸ+ݨaž,%imN÷Õ _G•*û¯¡æÆ¾t×ôغH± 9ù|¢qžò&Ë)pþ,Žd‘cË(Ww£%€{P_`þœÿivÂï[X &±2;ðã5ºÛYßêØOl¬Mqº¦Ÿ Ãú8T åbªPâþÅù£‹®òáÛ/ô%(V?ðƒòrA1,sµ ïÄA äÒŸ˜qß0 þàÄÆ m­ˆ)¼Þ‡Ò¯†Ý‡ðЩâ3âNšL¾¦×¢§()¨aLýT. þš‘2ìn0f¯þ¦#ÃêP:^z§c5G9·;+5W=»%Ð, $À+(×nX…Óÿž%v´84¥"ÎÔÎt6$Y"³h5 °|ôz´AàòxóÉX0 79òŽ™é\köÝuÊ/X¾1‡lÓFÓ¡UúÕø|øþqKqjnL(bFºj·°²Áûâôú‹ÄÉlò§Rôñ_näPäÀzÊŒzÌ%E·%è%E[ø¥<¹R`É·i²M’ z3o”Õ¨óÛŒ9­gMÜ\õòOœãí' Õ\«ºÙsÒò#Cjw<À`=pÓÁ%;NkT»ÏÖ»”ð®¾ïïÑçÊÈïŽ YËoÄ B×?®½È³¨Bìo`ÌãÇ’\¤Ê¤£è&8 SWºƒðGEÜ ¿æâ·¡•⽘·o´¶Ù¼òϼK«ÊwÇmîãõbY>úáÕ.±Rdö†Á\9€±\4ÃpÕ+©Íþ^¿ó¦C®_*MÞöý³ò€ ƒ†ÇÃíNûµþÃÄsZ…—_‡a¨C¢fÊÚ™ø·ÍYÔÞs¢PoEÊaŠÞ,â±|¼ÇŽ{w¢Ô $ûÄl®¥]åŠþÕÎÉí³÷² a´O”ÛŸžu  fS­H*Ä0æa‘I8gÛ«~S°WVRX³¶pÃhŒÐù*ƒ“w«p°Ê±ÂY©u ´÷æhçp~ø[^YmŽ®|ÿ³¾ö{ÞOÔ²sØš^i|=àššv:Rn}ÖJÀüÔðS)èý'¥OѦ<^™eK›ˆ®,ÐèÒÔæçÌtñt‘w+v ÓíÓ¡Ð"Ñ’äÛ_›î”;pSq»V ºÄ¹(ê‰Ô—ö“0‘2a±X231Š.¤æÁÞj…k&jù%å—ç‹I1Žÿ›µý24A5.˜³÷=lBo*‹ÓË~ÖØÍyÁfM?žpB¦äÊñB!oÆ"jwp0Ï×X'äÑs9ÃÕªôj¸ýF¸X_oeqF„®™µ9×ï‹Ö5×͵/2%Z)ƒb 2#_ûÎ+÷l°ÆÜ5ˆÎºv—¨Ìåêm©¥¾ËýÄ>ÎÊE¶ß-õ03ý|+EÍ÷õ¯…³E¼‹-®ß€»ˆ×ëåËQé7îÙO\±kÊJ‡Óµ.Ù< •~u«·!]ÌÕ¶òGå¿Ëٲٷ ØÈm=kô`z- L›¸<_jÀÆÑ«Ç›ädqAûhŸ‡ !C®SÑ’‡W¦å&Õ'§K‰[{rËÛâ†;â¨hA"¤ÁŸßk¼%|-ðÚE£ù‹Tm#ˆùm$W¸›K‘K0†4x;¸Aê¡Àl™I³øÄãs Y õ}~ǃšh ŽoOŒè6ai˜‚ëy{+œ®ü)Ùð\Ï"a$œ$ lßÀt H%h}‰OËÌ ôÒCû·4b¬u¼BrÕÏ܃ñwæýÌýå¿Ü™¨³%4º˜´|ª.rN ‰Ä5 xÉÜé/lÞFKGZÆN<Á°èàC~ëƒÒj)]·Ð “¥Ç+@·¼RÖÖ§]ªÙÿAþãÑ:¸Ž¨n¢ÒÓê.²«q$ÒŒ´V|@üÇðÏØZˆWÚùµÇ ú¡Ë±2®5–>š:£f{uö©Iìä&š[žï$|›ƒçnQÓM:]ÙO=GFÍôôLã ¦ÊMAZÛrYìàÁbn6ý3R'|·nË—J—…‘uRHÈGd-Oa,XϪKn~$n@p˜7·‚ðûnùps©¯EyÁ)y¾ÒNÏ[EI—\ÿêõŒü¤Â²ú…xaË#aц©íÖ{™Ó“JÃÁ‰u«±‘¬ÖIjFŠÏ¯²ffÂÆ^SåZõö,õGÞ)R¦6ƒyyZN•ŒµnZæP £Ë]‡Ï¢0=²HxÅ×’g“ÅØ®‹ úŒòËuJÏJ£ý[nÙ6šp³©s)òÅ…ÿ"ƒ7:4ÎËåÖŒ4vú$¸ÿÀñöTÖŽJŸÐ”ècëóÆZ6视[L<tŒðò´½R˱íGÚÔ¼˜¸2·Þ€ô‘´š†¿yˆ ôüL¥TåzÎ}A ¡~¤,x¦§ûð¥E"Úóå‰Ñô,b²ÿXG/ëªW¢;¶Ý”Æå‹‚ Hß8™L …Šbr(”Ñ’>¢rwIÐv^|E2ÿ†„žƒ€ë„€ üEdú Gæ9®ìÇ0™oŽPTf•—¤¦Ý½’´Ï$EFÛÉe$ÂTÐP¦Œ0žÔ{ >âL>¿AÆèz¦r5–ëø™–°—–Â'¯üùAè‘dá1Ú”òÔWSDuî™ôÎ.Ç}”ØÚ¬}tlM©K¨16oí_#8Oèðyú …HF“èˉ2òµ8YáGœì'­æÏ ôíPûsL+w WBö%HbÏÇv³m¹¤áOždŠÅ–¢„Ñ™6aÛîeª@È&ÆþµüS}$}IÑ^ôg/@¢h44¤þAFÇÂ$øûA¥¦“‚@/A²7^é‹þ3‹ÇËdªVßzž‡ö„Ò–iëZv|žS+¯b|rÈ ‡rñÁÜx%ØúT3kã°Ru«¸™œ§ÞN¢VjªTÈþ$=AVã.Âé“:ý†õþ‡Ð6Lh ´ÏxyFcÿõ&àQœ^=²^ž³ÊJŽ%5{z™ à† Å@@œ/ÃA"´x h-"è¸ô’* Ô%‰ðÑK†Øë(ŒgU=GÌ®Ïx+ŽËÉšé{(˜6Ä7‹’µm{—n7SNGGþ}‚ºd½3žIÌÊÈ‚‰ƒCu­& D¡êàà€ŽŽ¶þ w-ÜnaEd{§ žôR;ÙÙQ\«Éäĺ]7í—[ è;“Phãû꜖©¨©©IH<ÛAì¼¥îˆÑ³³³[™¾ŽIl9{ˆœû§§§À¤àÀUà^Ð`´sN¬Š‘‘xàã}$¿¥¹9´ó'š÷ÅÔû o{{{)))77·'ðëðÐʼnBVíoS¶YÞcdddñôŠ_¢£Ÿ¶s£MMMoSÔ;ÈÒMÜW:B檭Úî›Úî78¤f%`wWºµ»m0(´aQD&g…ˆ’²Ùi¹õæl+¢í£ Q___FFF}‚,O3íΰ^Cmmmkk&Ôžoa0œ(·!!çhc“Âç0}²æÛb¤§w÷ ×kIÜybo¿ÿ“Åïö|çÑw $9ñd…°5ÜÅÂÌœ ¶RV!++«¡¡¡ª:&‘4_ç°À¿ìçºwÇœØïZ×qà1’î=ðXJ£•õ'¾ûõ:ºA¿ùôé77÷p–xàÉj÷b“çÌääó±&õþ­¡4~Çß aÔ^ŸÑÓø<àú…J˜˜k-úM‹€éŸŽ;qhi½ä"`0¿Ý¢ÂëÑoݦ+N¶<©¨Ô~dz•f;;;â;ÊÑT¢¾W‡-¾W'Ý$,ïËÝ( •³. 19Oc ¹ŸtË k¬c‡,ílltš½N  Ð-y3³µ©ˆÔÔÔݽ= n{ûR}v'lLLõ" È$‹˜V©vlLŒqõ\cc#3 ™Ybbâ»h*ºœOŸSø¼OÍiRùRµJ"#"JÊË7.½)Q9c «îìzu°h`2qæõ .p«P(ZP@?ÂE‚‡Œ‚âááAOOO%âõcæ«›¯ï]±f‰åà×1;6?cho’UcAeŒ %8ê&´x€ ¥è — E¡1…àe‘-kê뚇ŸÜ˜äFèìYy ±°°€U¦§§ßÞúôhëëë[ZòÀõ—fgÞŒ% lØÚÛŸ³:r§šÉå«i4.:*oEP‘í¸ =†‚²f_ž!À®ÒWvv¬_XùpÞlú˱þîî÷@, GÛÓóªl†úÄ ñƒ5JgñÓbœµ—-â1}CHZø?I[«¯þÜöïuº /Á4¹S°Ä™½gdãº%ϼ 7†Šˆ{àxÆŽ<Ò D ÿŸ¿«é¬åZìî5Ë_ éç¯&Wü›ýNj¿Ë,ÐkÜwVÿòI‹‚ábwûÕ+=ÖëÕØ¨¤ÞqN™ÙÔ\qëµz³iô1$NSi¡¹àùâC?TÖëRõB%ÀÿÄn·s;áø[s#,‘‹ÉEū⧵±_1¬“·ÞSSs®TÍ•wBн%ìOöÃ¥?…Ùf<Fžz» ƒ-Ex¬´Ö¿íÚ‹Þ[áŽ=iàdYìUÞ>2|ZðÙÉO¶É|¦¾7R5}¼—Öø…ìü&†©mq4ñ –sq-Žqvµ3Ýòð–ýco˜ÏHkúú*“˜prrRCëð®L®ÈðýôL¿½ÔY^½­CýãJÕ#5CZFÝÙÝªÇ ®±')VèÄ×¥Çzß¹*‹   z444htôr“gÅ¢ãV`‹¼bõz cÛaOĸ†{©Œ—rø=^QM¾;ŒË²h@Y/–YÓŽlY¤¤µ¡Gj'W1¾Î§V-_:¨VÅçîà‘úE&1uy´›´šrº¯Hm¦\QqŠÏË¿U:Ñ©n«Î®zKÜC92OŽ ¹JöéÒÐÈMèý½ÔLn‡ÉÜDZ²÷.l·²Ûr,7ÔˆK“ƒäÉ ›î7R¤}ªäjí<¯x*ˆL±|º¨¬Õ-˱ã²6óï]5ÉSa¼¾Ò’‘‘‘ø Äøì¢|"¶êéüþþ~m9Í+©õ>i+eªœI’Ȭ@iÂIÌ Õ^\«ëAVps€R[`Xöo‰x'‚§ç9i†nÓn«ÙXŽoC¹•jþÁÍœœœÖ›M 9eeeYÙððpUFBTÊïß¿ ¸nÂÆ¬W[)ÛÙÙЭ¥¥dO ÉLQ_èvWø_ôÌD­ÖÒÐèêêÊ+,”KÈÌ^.-+Óü‹Ílú 1#?!{þü'æ:¸··W8C©UFZZÚÎn¯ÖnfÉk-òè)/û?W?·…ή®pÑо {:ªªÆv›2±³Su8º _–ð8Udúq3í¤œw4Þ'GÔhF^] >/'Uæ™Êj[y™cC€.Ÿ‘q¿²z•Öª>K(N“³ç¡™¼’*R™u¤»7–-váËh¦¢XÍËë?1in¤~vçX:g#\oTäSúãtÕmê¾Fø²IBß_foãMÈ‹+þiZ¤4M(ðUJ>Aߨxº8OG Þ²‹caƒUR¼3yW%›¨×GjÇ8ôx¹Íz%“œ;`Ê¥IR€—¿ËVZ.!iÍÙó.”¢†m°éGS¶d?f'[ÏÕ£ƒ?xFëÊÍœv¤ìpªêv.ÎÛÃŽ8öÚl‚ùF2VWM3!"$¤f"^|'£+í&|idf"ÜBÂÂáßüU©LÖÙNºf£©®Þ¹e6õäÃN ÄÏ’*ÐïmáW>ûŒ5…<ù„ðt_<Ã…ÏÃÁ£O}ÜwNx/‰™Kyû¾ñ †W5AN?;Øršd)]R]ÍÊ2i×\±5¤²¼1Rü:’!nón…OvÊ›ê'Z=¹a …j0ÓÈ•¸rJšØF'æ/‘Ú¯­C€|Å¥•‘¥p?r–È_\ «D?¾¾w1Oë8Wr™¯#~åÚtûtGn)/‘ӉݡJ®uë¹×ˆˆjÅ剙AGs޽%á ;nŽ ueÙÙ&€Ô4ç²Õ…GÓÃòÓc½Z:TWOooÏé÷¶ˆ÷é:õÓuï5ÊeŸeuŠB êŽî&±AÒƒßÄ×6º¼ütº1AÂaØìå ¤ç+uõ‰§¶Å³JW ËO€ú;R–“Û=c |ôstdÏ®Gæ”Æ ¿~A¤Wï¨(#cmgç{»SHfæÑ$ÊÌ À\i)ÅYA^žL€è€æ ·ÉÕÑщ£…/:,¤¾Í†`¢¡Ê悌VÖÈïÙèr4[xàb£;K[XRÖ-äžÞÞ³äfž·íņ ²­Zòs}òêÕ+&&&H—“rDtô–g¥÷ÞŸ³|³ˆ×ù¢„¤$KNR‘÷ ÉÉ€]àú†üq$™Ý·b{œåd÷ôH\LÜ‹ñøÇô™s“bù 77‹d(ÍÌÎjeÅÇwÈÊÿmf°õõïS¶“ì=Ú::)úìžp}?¾ÒÀ¹ÑѺÕsƒ˜3;nÎÎΰʮ.HÀΔ¬ƒ˜Š¥¹ÁÑûDëHf‡'½Ö”â¿mk‹5˜ÅTäîî ö8ÎãÍH ØñO$@™ß!¡ò9- ö~T Ÿ8YëTóÙˆ¸0óø¾é £§©÷F‚”QùòÉ¡¡¡Ã©¼Ðߎž**£%­Öc9tòIöKÍ‚||IP jÁ€"`PbLì[ Ç•––noo—¼¯¸,¥jìß:@r@êýõⶇ§½™ jûxãl¡pæš©™™çÁ|7©“ÓÖ üÃÊ[MÍD@bVšv3ÍÉÍŒzw:ÀáKŒ…‰ùšÐÌb/£ãâ2äøÂ×jÞ@èãwŒžngv&™*æP©C%Т……aaá’ââr£6C-­F¯zF!¡Tq‹9 @ѵ0’êön7p^…hkkêß8 Ôé0*;ùû·à‡T”MÐå,%GëõêíÅž"}¼aÅÌÞEHHHóÕ 9 iOn÷*T¥¤¤¬­­³J¶7 îáÖq´}§õ¸Ø›4ëý n @ZFmkß«³¿çŽÉ@ÊÊÊDßoÉò‹}©±›)OM%`ÀÁ˜ƒÅ"ž:09ÒuFÔ Äˆä×7 |¨•Ë×…»äë–9ÛÆÕnae…Š‚â¸Üš2Ïâå°‹6 Lê×òñ}@€lŽd=m¦9áÇ*Æ÷™ÛÖÞNOI\¡Hc)ðé:ðÞÙÍ­PìNNWú4 Pnïè‘ðÞáa&§É§­³#&ß%Mï¾ÛÆ€ùÜæWM‹KgÑ€9QŸ=óšÞvròÜ Åãꔽ–—ùõ>]5'a³æSê ŸoÂñÜ ÌОˆú]køèÇ&ë<·h…<ögÑ&ÍOçB‘`ÍÂF£;Ý$þ—Gå<¿#ê3Iø_y¯¡‡ü¿«Wþ„åKÐKÙ¸ã`dÏŒG5Z<,¼'›`®öT£f”¿¢²Yø*ܯŽà0­ åùê°,O¨Ð ˆSzeë¿NíþËNÍӿᮀmå÷™§ {–7ìJÆ@þÔ utvb£+ЃI±VVVrXýãIÍröþ Ñ¢ëiõ¿»dÓ«³ÿÝàîÆÆ/ÿÖSZÏÇåsJêCÌÂVBrÁ+‡I›™›çYd’øØàÏoÞ¼~ç° >´ó_¿Í’iâ_)ï ?‘ÆD»ºZÑ;Ñð(ŽðZ‡è˜ÿ¯|õЩ™· ¿¦2Ã’u®Ð6b˜w‘ÿ¿²È±¯§Bº•xO;ª'ÿbÉcô»×’(?Tö¶4ß[x÷ìð¼¨h¼¯¬FDý!¶ÐÍñt×)I²Ox9X rÖ†òƒ›Æe:àÜÄ!Æ2`;_^}ªú-jUæ¡yqY#¥˜•ÖlŒü±ó6A;çÎ-íÁ 225ïÔ;LK¢)]Ô£s5 qN[®|Ok’-® »»ÓEt°å{ÕϺþOsžTiyÃM1BušÅÄ¥´7]%FI™Há·Ú‘ÈFØf˜7•>õömf'€ Ÿi?™$>õÔaS<Ï×=äÕ-¿…l‰ùÈ³ÉÆå ³ËCÌEï¦]jiew7¼k „ÏóS÷ß¹LÔOž=î¥Oqñ~ýÕè¹xê^‘WB'Ûr_æÊGSÌ Ø›f3Êô<œ‡/–•ñµ5­„äå%8d¥zŠ]8IÆ$uø&š±éÞàùOyM‰kS­*×U7%¶Å•'- ÝôŸž¿'‘on6ð=K[Qå q;9Ë‘²¦'µ÷%5½®eO]¾H£¶êû€¸WßÓ4JæâE?0V5ù8Ÿ›BE>Õ'(×Çö§«l~…:<>»êêê™[¨Æ;…AÖWj‰|_Ù°Ã4!Â¥tE¹|â°|ª§JaùB‚ðoJF:lƒA]^ϤéAVdæœZ:¶M”²/UÑ_aû£ÄïüÐ’Ì+jÕ.£‰l-yLÙ‚ÙV›Þi^EÑøÕ0-]Ï¡Žô4\FO×ÁvÂê‚;CV‚ UÞÆ ĺ%[l]Uˆ Ñm—d'@åv§™~iÖóüPùöJ·„?%j½˜±éÔ×iŠ«ô©ÀÛ¡úzÖb¥>ÝÖ¡ˆ_CMMÞËDFÁ¶ù˜Šìß¶V-ZñÍGäjšz¤f0wM;ÆÚrÅ,¤ˆNº‡´Z‹nè¶:%åŒ7õµei ˨Êa!2s¸G;ÙP*Õ6Þðl‘ÖE€2ŠÝÿ¨£É'Q}ÑâƒfIS ħÌöÀx††ãL©ë6oÂôORWR/âÜ•_±Â˜5ä9~-)î‹ÚµšMðbO$̽óùõ}9°Yi {–ŒÝc«ž; £„‚WLÛäΈvûâã2e9J8üof54§¼G°V¾œ@Ôn(phRù^Å@yææú¨ÙÚv„CO¯^Ó4:2Lyõ9~ë#ðͰô¹¬²’(:P~| ¼MίèðMZ;zIÓé)—"dàlæŸÚ™ÜøšwãLŠ'ø¢Þç}-7ÕØÑ¸S,Uļ0Kf•ó©Páe:B¦7¢sè66œú=¶-û5söÓÓOg8r­WYb³ÚαÐô­¥E¯óÞ1qXU1\™€»ï»íL8¨6™CþHl'žváÐ_òíñqŠÂ—Yô9®Yû¼ÏUÿä> §%•ÝO²à͵À)˜¼Û_ãž³ßO3/ Éè,h¦Y­.¼r]HTf‚_ÏÊܪ®……JŠ»”_j SͽÕf8G—}ÖiáGØòØ0Øñ=¾#îéÚA‡w6MTàþJ6îipw?n£šJ»‚ãÞì7–lœ%»#“!þ[ˆùQNÌòÔ«AÆí‰â‹åj…Àœ¢ Ž¦Ã”\ç8Ú‡]Ü ‚ëÓg©ÉvƒY•Λ´@¼…g1qc4Vt´©Gµ=y©-–²áá)žrñþ¸z¦xŠåÅ?Þœ§ù>ng£Ô`:†ºõ»à­öi“VŽ,$»…‚t•)*s‘Q'¡Œ/lB#kØö›ÇήdˆƒSÃLf?­U¦‚GÎýG2¹@9"j·°8Úüý:¼³ÝÊ“´Âá’q¥Zxú‡«.GÝׇÂÁ†ˆ–Œ±Ÿÿó1Vä+éâÙýƒKó.‰®1°×À϶®EÖbž )Mý[#ÒF·øâï7”ÿr¶ñÑi샙ƒƒÄÔÞ?0üéÓmÊß³·ÝÝ]55µËƒ†FPÇþB½Ó\•…»»ûÃà¿ií‰"‘²ÈÉç)[ÿÇ›-©÷¨Æy-OwüŽ÷ëñÊ€&¸MÁ–åÙŸ´u·°ØX‹w¬ÕssC€~ë—,Óº›³Ê’z÷îJœ!ΚVP. Ê™“Ö<k¯h½-ÞÞÁ>Ïú:ôF½è¦Ž†Áš×erð\–ý¯2„Ü™_½ÊÎÍ}ÍÁ¡ìæ hî !·ÝÉ¢ããã A®žÐ&¥?cÓÓ—ÀTzººî78cû>4–Á¿<‹]óhš)Õ9ÛH6 ¸?éÅ1ý(¿"Î3^nÐT÷a¥ÐGóµòn~ÈÀÌèèé ›<þ´···kÃÚ¡Õsöáááu èù¤ºòœ}]{ã±Â®Î®$ÑÿëþïÎΣà™ùz§å*‹`óyVûçqòÀE;*µÈÃùDβ¿~Ð ,!9ÕÕñmXÜiC¦vÈþcd^lO Îk=xc ÎkIì_HÉk—iU¾ %•q´œÇmïþt(x³¾†F˜5 ã!ÌÙC¬Ãó‚ÿ~ûö Ã# zü¦üÌðpwªd¢@±Ée£²H]ê=„Êþ÷»3ÈŽ˜ÿã€é#Ea3ØÈ÷ŸJÀX-)€oIÍZS 9%œ|ÿk~ ‹»Sp#zv<¤…‹Pnÿ t2Êðomö'ÕÝÜh1!ÏÃôïÝ&Ÿ_…'Ìÿ0éÌ– ƒÊÄåy.y[ýŠXf¦§§gfÞ½›Æ=d¦ÅƒŽãÑɪùøáYXXtwu5,"¡â0~©««û{;_cs_°k@&fZ¬­­œÝë›ßÙ?ÄíáöâëWÒ ä×é~Î ä[`Â/Àx tA×kžÃ¹ê0èßBvTÎ+=Pk0L y@ âìì,”===´ãMÙ>Š™ÙŸ®÷U´=ú8;sý­gà«ZZÒg}ø{ÌùãGŒrâc«€,9%9™!y ü;ž2¢ndtä&¾½WÑF gûÈÕC‡öÌÚÞž6¾UUÜ4q0.å(JœmssÚhü¿êL‹¤]0LfvqqÑÐÓ“‡ò63.--M4‚%QN ̱¼áL,_­O¾Z·Œ=Ù.o·þ'ÁÅ›¯˜$ìÛ·ÍÍÍ££*4§÷TdOt¾Q‹›:xâ€Ægdd„B½8vZïÏš×v蜯þg³ôÐqpZ1Ù‚Ž°× /A¸555Ø|”"^£Ö<ó—yy´3S%ï}7×eÝ6S éšowKØØØ‰[˜VtÞE \S[ûp;ÓFŸã{ÔRŸUëùO¥²pbÇ£)Qn#_>ùÐrÁX&òRBFFØÆ§ŒíþþþÁÁA«LïP(%Î;KËM eŠ®Mp§°rq9ß]ø™Ïç¶´<,ù-¶øzš˜˜##Ǭӹ-úÛƒQúûïïo·÷•Ób•××ן>ùÒØÚÚîîïSN÷tHü‘µy‰eVÚÔô·`…”2qÖiãJQ(øçÈdÜ:#㈈ˆ(§f¢˜ŸÇ@Àâa´²Há¯v÷®0½ßõH3— ¾a=7ÞÝs÷Ï×X`ÚÁ¤µµµM‹g§]áÁº÷ç;~9µµ¼,[ÉLÌåsÒȱ‘óN4 2'…+7- ºnËûÂUg_G‹¬ºÀͨ­=«pŸõt¿566È×1MŸ»ƒzÑ÷Æh’ÀpxºQˆŒ(JæÂüü´¡ÌÊ…ƒû¨ºÒRÖG%99 £$£ÈŒ¸¸¸ÄD„6<š€À¡“ÕmøðÊŒUDÄoªXó/"›×ê¾û`:Fz3i[«[¦¤ð·Á""rÓ’å’““ÏÂWWMÀ©}æÀÊ^ý­ÿ3šÅÆÆ*NL„ô Øý=Q9{ûÛ±^Ÿƒ½¼¢bË3Þ+)q`övÞž¯·»›Í 1a¤hbÇM(CŸ½~ÎÞÛÛÛÆÆ‘? Ú¤rùÜ [×'k€ãßV^íÕJNAA1eË+nèÚ´˜’’„)nâ÷#¬™WÚ–¾þ`5+¿¼¥ª¥å˜¼¦†gäÀÈèÜ{€©ø›?L¤t®üÐfmƒqQ}èà‹T2tli©ÕvªxvvöóçÏ!˜$øªžžüm™PèXejj*Ø’ %¸ýÛÄŽHð;ÅÅEù$VAý¯Ý¦Þ@Òa#ÆÄ3hø]\,W¦U¡]¹ú3 °§ÕH¦ÿÍFòš ü÷òr–òYÎýýýu¶)`u´ZêV )wxª[ÀðÆZXX¸A¯%bÑ:¶ >&Ëô¿Ô¡Ñ­¶TÔÕÕ•–-üüå Æˆñ(†áÖý LóÕŽr£¶%sî ŸC#mí_G*vNNW¬`™Š‚±ŽLL ŒÐ¦–QêvîcMxsee¬²/N‚.JìÀÆ}ƒl‘3P:Ÿ4´´z£¼¥‹ƒÛ’²pp\5¯¹À±P²6q™mííŽÍÑðFÒÄ«ÜÜ´«yöå=_ÇöªGÓ œwYW³—bN,k‹ß3#€ŒX¿pÇ>‹»pwöI›‘ ü*ÿ-Ð&}d¿ê)Év¥&Ÿeâ8í[çv_Idýk¸#µ¶¼sc“NÅåó¶þðÔÕ9Föoò‚«'·ÌÄ{tög_A@“•R‚”¿5þôPK ìDŒ<}Þž¼,{0!htmlsingle/images/hotels-site.pngÅzeTѶfnÁiÜ!¸hw îîN w Ü!¸7Á݃wwx{ïÌ[kfͼ?Oj­]«ªNUª}öþ¾oŸª0E°äûwïÀ{i)2ƒµHÄ7Ð#Ñ„ôÑØRLLQZLŒLÑÉÞÌÒÆðÈHÒðä™±Ÿ^c뺩fOf\쇘›Ðð#÷œ³<’-žPH¬S ›¥C¢Ò –Q «yª)ÊFìÜ‹]·Vîúfß6¯^Îï ÍïfŒ7Ÿ:Ìû’ô 1£pÃÞïñ´º!·5ưd™¢/È)G÷õÁ¼äU@ÞÀÖƒéÃ$"žÆÛ^gºØ“@op¢ÜÕˆp¶Fît©È¼>2CÙ'T %@,@1§µ&Ö ÐùÍnSÐ o»i褎ÛÄ’P 8‚ Þw~D`ˈ‡ùIø”ÓŸø) P´RRbÃdq)§÷µ€Ç[kŒ©5ðŸCá;Ûîð˜ß+:#Ò} Íîbv^W¼Þ%ëÁÀàn¹@²X:°Ão¬E°MÛ)AtÞصÀƒÖÉñfW:ºˆæ‰nÿíýá¨àëGj8ÀÛes'ѶӮ £æ±¥.®Þ—8ã°b†^¦Ñ¼!ë_æc§dëÌ{Á—x@dq‹Üj#ÇÍsLéøåÔ;Æ}ÆTØ„mT{^r‰Ýjíý¥9‰mæ$˜YÇzµ7­ß" ““CÜJÁÍ'í®°Tbñ“©¶yÔÊ…ªµË¸½zÉÜ÷ Ó¶Ç3Çh¼>nN•+]Çû7¿ÄFا³Ðæ¸?›×¯áùuvu®’ÙÕ°o[œÕ*Þ°:[ùxØöz`û×™ÊN¸«÷xD}>‰úm®ä/b¯ª&p,eÕ\UFÆ„µO?îܰ˜1™VíØ<m üJ§ùÎâ(uþSýË$Æ¥hz´'É­à†¼.ˆ)šÇ1Íë›6¦>[²êŽÎ‰Û¤û¨­ÿmLp)žiéy %s„.FÛNʰgÔýÒøá¡ë0÷Ž=xmíÀÞéµ¶º¤¤òþ SÖ}¼>£Í½éú³Žúãjt"øáya¢Uj¥—Dw¼70†=káúÝõ˜@…òìîˬðkÛ±øÆpÌìû*4Ü÷qúe—‡ ‡®ÐÝâÞ½Íѵ«ÆûŽhn…|0¸Ì)W4ú½ÃØkž=ýuuv<4b§m7x77\Ø“å ª³®“öŽöÉ}|½¤[³½1¹¦²rW¿£Óë^pÊ.LÏõÆ_æÙ§gaô3àÇ„œQ-@"68=)(*É6è™a€fŒ®r~AÿÄ-‹oõdëiñMX F“žèX7VI ÇщSZ«-©®$R^š1„‹s_ñN‡ª[]Ï47<³´‘@M05¶L©tñǵœ·HІ‚ÎÚ(YßYîä¶²°è}»Z‚K­ÜÓ¯³œ‡®„ Ë­äï8Šüðª‰s*ߟ„†äí*UaR,úY¿<Àx¿Ñ‘&4¡=;ŽÝfå´ò¸ÛESº˜ôcë«ÓpyѼm꾓 +—F Q!Éúþ¾¤ó¥Ú²Þil¾e7w4»Ü %н“eNq˜`®ÝÄ^ž¾é øœ˜·1`= žPèÇÇ›‹g¢òbinê8Í•Ê5ê^gXy Ë$…«]àm—š² ê%·]ÕÚ$êÔÿ¤¹vñAs7V764Ù]rm¦}M> ]ék¤ý­b=kÉnѸçppÕÞqÙur"«'¸B%¨3BŠ,˜åñãvfºØ¼W( 2û²º‹Ã‚iÀ÷þJyÛÁÆáž¶/ßnG÷Îfãê”ÒÙV«7:V¿Å”E±€9À$©ïÒ¹21ÒRýÝýof÷ÐÔIÅ…ü¾·òû[ÎÓÔ+¬áµ ‘ê]¨kë?8™S™ÏšÊ{Øš´o2\n,?ܶ ä.÷3ò2ÙÞÖ÷×…¾t?!±ççê9¿dÓ@nHn¤‰áŽ‹é>%û„þW·ÿYc ó‹*”-â}¸†L¯¬¶´£lÔ&CAž Š)[MÕf[é”[EE%5Ÿ¢™úzíûX™Œ0'²+g`|zÚNz‡[ú˜ëŠr»î3l|NÐdƒ­‡qäyî`À>S­ñ®jnJA}¤þÉÍÐ,]mù֭긕˜€¨,#<ÓY/Þík‹W o¡g±‡ŒçF[³¢ÏÚiÆ™wía¿ý'óuAeYEö{øm;DA²‘o¥$Ì]˜Õ˜¼8³¤¾,…ÉêÕ”ÏU ùM?=^áŠ@ ”×&ûØ_T]œ––¦OMu ÜÆ¿üvmtQãkÝ>¿T þæFx¼h¹HGÓã×ÕSt¢¬bÝ¢=Æßn@:LXwê ,ú®àË+èkVœßxµºXfZ°=0fª‘ŸÓü©ôªtÉq²ai/~Ä´IÀiûdv“À«â’³þpáÙµ›ye¤,¦y{î‡3¡»w…c~IAóøAOù|5Y}gn°aì¦4º<å»… ìW5·ÝëD+ó¯çªW©"ÙöþK—ñx+,»ah|hÛí~G„1y–®¸_—#ÏY¼‹ªÙñÌõ„Îü|8 ÷ÿìvoO%µÔ§Úß‘~žþ€0Úˆä!+¡­ ¢®k#)þ„ùñ )  Þaã7 ?˰ ‰ýä' ¼-ïDŽÿñ®p5.vwCHŽâ(”z3ä)˜xª„I‹6c8CA­NMX(PèWG›X)Æþ=3uœÝ¿¯é3sí-)FÛò©òG-óE¢ÅƒñÅÚ…]ž6>N^ÙfͦÍfêŸc ¸v¦'F$¸YšYŽúx«¸B¦#?³Kî/n"Ÿy£ÑR¢é±é®Ô$ïR¹ÅqMÚæ¾7j1ݤÞ$ÆäÂô_ŸVv¡ƒ2ÐV~(Œ¬i²)ÍÐ]ÁMa’½Gý.!ü^^†]GV‡ž¥Lµä¡ ©ìºd³œãSž8»Ø°hºt«μˆ‚2iAÇgV‹Cg‚sÇ›iP­ƒsMsnzATRpý¾;!»{ëñ 3*$º ̱ûÌ,Πëý»_]á-‹ä)(ûÝšˆð‰Þ·—?[_ˆóMkÞô 7Ñæs£ˆ­dNöaP?‚¸cF#ùEøÙ¸-)Å9¯?-Ù´˜JXîÜúf=¦×8M¡µ r z0¬þôèú´Qb,Bc¢àG[)˜©¿é‘Üaó¤Ûsß-3$ž.k¥WéW¥×ôrÒ¯ú¬Ùc³5D<†»¨^tó},a[oTÐXA3 ó¡-›ÔsQ0ÔSžhŒØ“A8Ž‹óÌîðQ”ï—…ɹ¼·RÞ·öÅ1¥káIÀH´ ףσyF²!&K›òá“cŽ"oqˆœÜ˜œ¸Ü–…©Ë»–­ï¼‘Í‚úÙôe›Iµô4)QúšÝšžîLl¯ÿÙú=Þ<„3t i»;·¡vNK ¹œ*@à T~ô¯Mà/àÀ‡¹&7rã CÁe 6°>— w¾—£— O¾—Ÿêˆ ž–/êÌæÎh¿bÊö#ÉGç^§x'yÆò!<:|:3z:ZÁå´üHõ0µ$uß’ä‚Ê!qÚ©Ÿ“ 6ásÉÓ$S¼¹‡Å!Ó:³Ù¬6 Ÿ]—-·t°§¥jÎ,Ä BYcAëãã%®–>·þ›9Tæh˜|lùž¿TWg~e^€ª±-Ï'Ü7ûŽíxçý–±œF>ö--W×>¹k»ê¢ƒ2Hëf‡ ÂéV´ÜL×éédoî$=ä’v’•qµ›ªìMqËiêhšàd…æ3ì*àA±v3!!âšóÊ·¥>a™ã¯w*Ìáh‘«öiØ|µz‘=­ü]ÁëȔüWøÌ´²L oå^§©Ó¾L—¹ƒÆÑòæ!µÐòo™¸}¹OI†çÕ@µŽñzÎäÓg»7‚,{&7ªô3<®=¿XMÚ=”YÛÖÙF@ü"€ÀþUWUo„‚çkh/Pí¾ âözÑ(¶Aö>6APDÖ$ìÈÃÈ6¾›½YU¤i g¬k¤-Þ2¾7ú#B’q{\BWRDŸ!CÓl³Ž§Û™ÜåÉÖzÙ¶ûŸl©öÒù©{Õ\ç^èã«aq~p¥¾¶‘ˆ2‹›Ó?F'¦Y±õ"xð‚ïÿf&ѰÜ)MQˆdö8ª ©K¹Zwô“àç‹EPNÃtµ»{¨«Àê©@ìVé1îºþúäV°Gú£ÉÛ=Ò‰Ó™šŠ.¢2P…V­«6çÂ0nfÑ%ß{¦y…ãqEÍE"CÁG%WJÙèâRõ¸®ÆENBÓlMèøÙtq!ã+lOó2Zî7‰6-ã Ÿ—ÀV¾Üd †y¯ÌÒxü0ïg&ZvñAåX[¹·ieáAx¿_ÔW^Ì)Ï·öOfArQEãr¿Ù)¿`Ó²øäIêâ¼Zdúùð³Ðx6d†”–ð+yöü|È$Ižù@ÿêPÔ£±ß¿ó”¿‡é722ë¡ÉöQÖÖæ»ªøæh¥¡¥u?§cÏÉÍ]”ŸÒ!ð3.>þâ|€t<ƒ—“Óµ/GlѤXd©ÎrºÅõðæt-;+‹äS0`ƒ\PÐwŽŽˆàwÞC¼šC“ÏH u;]]™u-@… Œ‹ýãä)!ñÍ“sö’­ ÏÀG ®@Ù’ƒ`Ôìòb{8Û÷fúh!=lž&"èêÚâ ãh5ZlPÕ,½‚wÙìÁqEEET¨¾÷q}[›@íâS',k?&&&³nÓúqlh2³=bw¹Vío;÷uŠ7ø•†þNNÍ>÷ÛòòòY}λc“c™ü²²²hD<±YYcø:5&HòßYEп®´º¯¹¯ùnõG=^Wùgffʃ$òÎíý mvÇ2¹;-ÚÜ\q™a1ár~þ<„ÆÊqý|èÞÞdžûoÇÆžÜ\`°h¾÷y^mM äá ¬á-+#Q´T{{{sss™F•~µQßÁl™ ÃëYˆp]CCôv³þÈ%%%ÐÞ4:fG¹×ŽœšC™ÕB½bÇò²Á"plllf1[ªÖøÛix±ÖÜ¿Ü~¿_ÓÙ¹vÖ G\©DÕ‹ôÂE tÚv9–H§DaË©üž4!`ÀƦ˜ûôôíÊã%3-íà>D—ù–+vÐ$Ëß¼ÌÇÏCÌÏåûp•Ênî5Ç$Ô¥¨¯ï7ÌÔ(—-´â­zÞÖ›’ÂmÜÙ¸ê%‹·ÆÍ%uåüò²÷ÙºH³®¾Á¸)ÐÓ½{|ººº*;Ǩ߶p‰úuÑFÈýDWY9¾(j7öb@øå<Õ<‹ E»bnÚšÛÛÛUí7i+v·‚¥|®Vc¼YÖ†YܰíîÙœœœÂ¯ÐK‡‡ujÍÞ§`À Ä¬y[<7”{lãµE@Ýv|| .š~ľ¾¾Ž¬ž›SZÙÛ¯µ{7Þæ¼¼¼444ln­Ý¨©©Ažwww½IK‹‹?G Þþv^ó¹ŒjKücû™ÿ›—3kgì½|×ìshlÏFhD!»Y$w]Ö²ûŠ4QnÚ˜/\7ºƒïîî†ç[u+!Èׯ_eO^®Ýö<+«¡ÁZèú›oÖë¤Ð: "&áÂ|üĸˆ<ývxgÔ@"èÐ|(.Cü²÷>þ–æý—ÓòÖLï´uÊïaÂßþþÇ´Èþô³ïsŸ+©€óîȲ©Ÿ7¯µñÎñ> j%Y|ŒÔt¡|ëÆ7ÂUïÓvèH”=ÊÍ“qWä˜Ç¢BæÿD¦?º[2Á'š÷]hë‘—,VòG2ù ¡ç~cB§ø"ŒßW«GÜŠˆ£ôœU#Ò|óÇÇ7ãà·Šº.Íim%Šª á¡PùãtŸýrES¡~øH;à¨Åa Ú.ŒÕã4µåÚá°Qbà$Φâ””Ða„…önP·TP›RKêqeŰvtt466æååÕÕ¹<ÝgdKÄÕ/ZNpØ´OÎåŽá`jdpe{¤ì- ùç1?»çºä†`/^O•£ýí©•>bðz7öt—_í¤4$Zf¥–*þ¾îõžÂU+¯•d|9ì.™_ó¸õÁi÷ž"I¹™6wnÖ­$åîP’H”3–N΢›ríÈø,4'š8]ôúľrOvYö³ùpZr3%Cæ€ABÙ¯ ,hÆÅQ˧]A±×ÍÝýÒ7뚥½î°[ï2Y¨ÕݹG¶lMè®Dÿ¸½5ÀO”ªPžê[ñÜ-m–ŸÞ?ìå Æk”…€S?Œ§-lt1”Ê7ñ:ðñĹÀ`Ð'LOÑ«ýjöÊ/æìU:VžŠt“ÇT(©³Ž÷xVÏ}w°fk«ä›ò·ÇÕÞ|71ŸKhèÃãã¶Ó½qŒàÜÌÌÌê*Äj¶´®Ž£c5b:ßWÿÙ€æbvvçžtå§PÕU½šQw¿â˜ÉüÉã Ž·:ÜÑÈÒæ‰âЧŠ %Þ9f5=¬àŠ „ìnt¢e½RLŸë¿’ø¹¬ 1`LV»«'x½T }µüA“"¦Å&‰+wCã¬(—¿Á–ÇÊñ¥ŽêÙ† ½¸sU²¢D¥sš—»<Ìþ‰‡M(œÁ¹î2Èôé‘õ³I(å´sZß§'òoKf¬€jê:•7mÁëðÑ(›êƒF“ÉeÑlfÓ¥Rõ¬;3¸­³2ÔýßÝÍ›n©û9’¬€õsF% JzG•Ms›ÓS¥Lš^g2w£bø§LA—üÌ_î‰Õ *Èl† ßãd«&=Šš®_/¿éÇVMÚh¥f2ÿOŽÖÄyZãA»Æ!^º®z³yëÅ[ÚÖY›ú„M‚m²ùˆ#·”"ÖE Šà [„2J²E7:å:²ùìß0çÄü4A& úï0Ði r ¢hqY(‡Á$!eã2ñæ7zåŽT¡øÿNp‡…³¼Jônèú|ÆL€ò ªKB*‰ðQ9¼®¯®LLL¤â9ÌFð¥ã?~ü8bæ\˜½ûjŽÚýP„ÞÝrw»æÿºBÆëÿ⣬¬ìïÿº3šNê±þEq'êéD qjoÛ…/IÆÔÞ¾Ê\‰9%]®JÀê8™ÐFžzÂöÍÍM¨ð#ÀÂû‹€²ÉŒ"áLp–ªÞOç¦?` šÔ¿Þç0#T"¹å­üL¸öò53+Ô¯BsešD.r3´‡ ÄÊÄf8ø Š) w¨ >ßpww/*(nIÞ v?înòÀ„v:ùX¶•A"ýMXpä‘~ÌYy{ï1QD6Áè_SÐ gÂq1·<^JZé0á’M$/''d$’9Ö‹85S,º:F­~—§§£e¦ÃžMÒŽ¨¬üD ¤/ÿmm˜lU¯©¨û z~Ájÿwñã–ÑáXéi¶û3gþƒýùpBÕu´…±øbª °¦ncœþYàÆÄëû0.œùË„üEauÛc?$5Þ«|ÄQîùäê(”44Å.~p¿ýua¡2=”äápiIr÷à½kjÍg­?]ÖùŸfª|,ÇgZwp[_Xkgqd_!ÏeìTŽmíy[’![aœÜˆ4YÙ”•å–­à¶ŽOuüa¡ñjóÔ-è*¯jù摲Ÿ“Ë10x‰)•‰x3óK×C•51¿›OnCþ{×ø‚Kì°0s~¾hwŸì{Ðõ‘uÚK^Ù~Á‡†ò .ºçlÉrÇM8U+­›•iJ¥¼­V*;Ý3R›Å;¢@lžéÃñªJaC* “–ü1‡HÎ)»*泎ҤŠxÄ©…GÛ˜ÑéË×™e®Ž› ùcJ-(kOjñcÐQ¯PÉjG‚fª: àé¤Ö1Jjà 8áÿëPÓWNÑ'ŽÚªˆÃ+è[«˜^w,è@ƒY?c Æ!€ì?ÏÐõDœø2½oO|Ošwedeƒa VáóßûlLÒ–˜Ÿ]CcÚ÷ñ¸ñùé0îÕ¾éоúœ ÒÑñúòx*ì÷t—náuÞ™ÀårÙà|]Δ¨$Ð( º’gÜ?3€&ç÷]ø ”K¦÷û#Ã*·XûúúÄõÿÃÝJì!÷fÐê¨Knòåù1èF7o"M¨ÉywLQƒRÉÅjùâ6à]àÄÚég—÷BBB íëíƒo-è¨O/8¹{¡Ò)ÜÖsŒ"踌šë©?äÓ¹¨ÒGIP`|ˆ’(P¦Cì^ª·³ØŸ*Ȳ7[©³LЯâ&ˆBÆeT¤Oòj¹;ßÊš_ô¾9:w*Tzt³Ñ4œ@‘hêÆ·åÁ1=ñŸ¬þߦÌf.pý×;aÖ®¡zsssdõÓÓSxxxr2.êÆ,®ßÐZ~ÅŽÔ›–¶´¶6Žï -ýµut2ù¶-?×. ¼gÄEÆH•+´]nÀP²··‹áÙ°ùñ«CbZÁæÝÙ£Fh2™ÞÇð‡/`iiéG|”Èê¢l?>nîÆæ¿Kj(?û±>>”–ŽŽŽœ|cÅ}XK§ƒê¸çqAÈ¡ŽŽNØ/çK[[×Ö•U1E__AãòÂÂþÚ=$M5µ¤[AˆˆQ$.îCÃhrøØ-¦üjÖ=9–dNá'ŠÆ+¾ººúÚ'ôTH¾ú31«¥¢¤ôXuþÇ„îªø8œçZ›[³.TÎ ?·ì"â>nÍÚ†ô°¹-"XŸæ;^f¡Ñ‹…u¹—ó²EúŠø³gù0s eí È>V¢C,u{gçææfhû:råååŠ6†‚¯ô|Væ¬Pj…¬òùCvvv¨,¶þæíÏ¢Û¾·Þ”ÃlH™ÌbÀœ2œÂb@r *ñëqˆ}S|ƒNNÒñÿÐ…ÅßTZÏP1#1›¢Œ<øøøìÚ¯çñ˜¿¶ÄN2³±ïM楦¦æ0›Ô…&ÏKÝþvŽYãz¼9[­·Æ«Š@ð™¯Ô[\\„$ô‘$‰|çWdCk+Q‘ƒ·¶°ð=9ynaÁCí0ŒR,µú窧Ï=1b`/¾2‡²ß.S¹;‰büëf\î'!oÃöË;ÑX¿?J–|Z‡ òI ¼¼zÓk$R, ˆS8AØçþdG÷Wé{íd )ÃŽT_YÆÕš ñ¡ˆ×M*dí>¹=ǬÛ€}ž”šê9X´×Í$™o(Gá6X.1B¹ ÷Ϲ­IÌ|ÖvRºß~”Ù¸>iü¿ZÝ +•”Íqªâ0"oÖÉ´9ãøu%/,1ÆÌÛ›¢±Mš¢á!¡’I¤Û5?¶ÓõŸ7ˆ8”Á…²Á¼ +àÿjžûÛüíP Àêô¯Þõ$?’>>‰Å<<@±Å–b¾zg<Šy­O!Ú#E¯-Ý—äzÜäÜû™´þ 4îšo4eïw™+`ÿ8|¹«Ñ(¥±3´˜@²èb‚H¨u茣ÙÑððûÑ-ƒH³!s$3Û{Äí^ýFþö=Ñ}jg†OÇÙñ\ö""´ ‘Êâ¾Ë¥’ÊI VH3ÏÖ»zø¶ÈĽVN#äcÒB†ØMsm†àˆCk¶iÒa3j`ªUÀ—½+šÄÛyw`%µî ¹’x©°†Ä{+n?LÎ?34ܦs±WT'ªëøK¦œ{…1ÐÁ^ü™ ž"ŸÜlu7ù¦#ÆÅµ/J>™äUøuÞ!•ÏÀ×WvqÕõã|ŽÊŽBùô¢ª£uB‘ÀCDÃÐ]ø}Ù´ ®ÎosS•BÁgˆÈà‡ö‡ÉÂnH¥­áÎB‡BáÀüÓ©ýG̰PæŒûÄø0ÝS!6Û¾^¾•ëÅËÁͼ‡—Ûª«– ·‹WVfsß̱:Þ×ùGñt[«brG,”r»O'°sÆÆš/ÁüsL‚¯§öxªSôŒôôsÉ4)ÇÃÖkš…Õrj¿,ô¥ ¾—[êÏÕœC, K~$3µÅý’Á¥ÿÎýzk¤l`àã“]ç8 S#KØJ0,*Î8ê­Ÿ's7Î¥K§<ÎBó=fsûj_ø5òÁ Ä7Iy”&‘ÇX%‚Æ#¤ädB])UD¤Ï“5 ~>½xÎ'l1®ðúO¶-›‚@•Hô±¡¡S›íGFhÿ{ÚF>ªK+æ©÷òóóAý®”gûáñ~¬Kzn­+^ù/Ç Ò#ö”¶<Ÿ)ó’‡+^ç{Ùü p>¬!¿ÎÀŒ5Düùˆá°~›£ãsÄ®<|«óúÊ›”„P)7[Tß‘aK ßù¤¿=˜X’9â gˆÈÿ*..®€Ãäf³ì0³‰Òõ3OqÝ€”¤0¹¤¥Ó¼f¶>>Œ­°‚®­I”1Ž12µvXU™Í¬Tµ$1’×õ-ÈÔ;F#ZéMªÅÉRÛŽvJ”jgB¯+QÅú;‘©v`tÛWÛ_·<Œ–OŸ'kÆiäFÒvƒèI,àqvÒzz£‡µä¸X!Q&¨îå´þ{ÉŽCÛØT¦Àˆ‡fÙ­lÒ*…®êÜΤ±Õ¤FX“Å¥L›ôbúè:XNŸ4ôËá÷é*&4ýŸ¥ºþêÃñ%8Ø@¸N‘:8¤[Š`¸“¿hRaÞÎú¦‰ úO¤ùzZ¶×LJ§­O±Á§ì:(ßäÄüÄú9ÙXb:JâÁ"ñº¬ënÄu>L@$Ñ¿î9'úf>ÎGÔkÉ\IñV2Œ^Ÿâß»„6½*)ÄecoN×üÓz{{££ÉýÊQ¤%%%ŒrOÓq°L ¨4|¼TÏÀÏï½ñÍa¦=ZndîA‘ºzó*Qu6û¿°ÿ@´{5Éìã?½—LFÌã°n>O!û…ÐUEE%È`|6€LãmlÁ'Ðà¹Þ{¡pÚE¦ˆ,O±Xæ þð½E°ÒЖÝ,阮°RAŠObeYYYë3Îõ÷ò"u>sv¡ÿ/r âŽøž‰`‹–ƒÍÆ&T÷e“òw 6f)ÔQ ¢L cltzžzXÄoHÊ66ŒÑR×P_â2i_õ  m ßëÆgO•Ë©Jånsb­u#É¥ÖØ­´@åË6Ê.wÌ·¿ÐøÝOê´+ ^€ž93vÕ:s‡×vü3Á š“““Ü\`…zzb"öv åA  ùx1)iv\܆ÞâÊ JçCç|6ô.,_CC-›Ùä›ëœ˜þP>ùŸûÚò×^‚(S†ùùùƒßuîÍ,.Ò¥ #Øo Kñ»A”Ï玵¨Ð=¸ÑR[[»æÿúÜ•~¦¬¯¿ÚEèÿ¸¼æ-2¬`Ñþnµy^––•펤²{ /ä¸Ü>®½BŠŠhXXì__ž±hÀ”È;-æSSRnʪ˜µë~Ùo‘¿ MfÒÙTvvvöòòúŒó&Ò >ˆœ…å”Åÿ~¸†|" üýÀtøÛ”_±0‡A=ƒßÝîäw3TÈJK0üÈÓWPÿÝìœÂ¬×bÔNn·¹+9΢¡«û/¿§ó°°°ž*ôÏu­¢úúú`ðX‹ëá7ÈìÏ ^|ï£ê´ˆyxx¸»»3ÄEb-½¾¾†ÊT… žóQî5l8C|š çÖ•åÛV+cÄ‚ªŽ—¥c74nì! Lçö9òÿo/ÂtÈ™‡QÖì^ÐWH‹ƒA•¢Ÿÿ PK ðDŒ<µ%×ëhtmlsingle/images/important.gifÍR1sÓ0V @€N¡­€ÐÖ¥$5-”´ÐØiAÅMR×Þö}7 Í0´£h˜‡—1@)dLf¬Å˜ÆyE „Ç Ž+q,q®pÞ¢Çòt: ÔžÍ†”bJ!tÎ1çîx<ö†aEÓét6›QJcœs!Ä|>OtðCþ].`ý4Hg\¬)¬`t‘ŠPò÷Ì[ªyÞÖ¶)¾ÁvoQ¬Ö?7 ¬¢|‰©~m4hlè…ܥ»Zu3K­_gzo²ò÷3Ö¨_$ÝOóæO(o盜%å¼ñ1÷s ½Íùóä JÎ;=fVJW# ¶vÔEfënéÅ2].—^.ÓßWî´–éGí§_ntdé¹ëæ^­º•:e–¬¾–'ž%GØËמ–yzUîÉ×l÷uzGýz¶Åæ£Ç+YÅ!ºLïmdá‡â"Šñ õ[3Ø=ZýxT~¥vcÎN‚Opíûß/Ãèª P¯P‚“?PK ðDŒƒ¯µs P¿ÕvB¡É¨é@Ãd6"èo;g•`PsÎ+ÁÝÞÖs%˜Çǯ%@ÈS{4ñܾ•Už-µs"þ1чßÄ?øjª<`g ­ñeZÔ* Ô+½ƒÃ¦Ú2Ã_Yvì*ÿÁ¤è•lv¬~Œg Z¶[s“ôY[Ãa; =ùí/öoJĘ!¤f€þcl¯RmÌRCtEXtSoftware@(#)ImageMagick 4.2.8 99/08/01 cristy@mystic.es.dupont.com‘º!¸*tEXtSignaturec3ecc1fc5135d1e959695e569d213122riðIEND®B`‚PK ðDŒÙ®»iÐ^C*Òš&Ô¥^“âÈI_à×ïì$ :FŸåçîž{îtÓãí]‰ÖÚ6…©R,ÇHW™YÕ2ÅEchc*ðñÑþô€Rtª+mç­± z·0?5:+ËUÓzÅŒôíêlkc[tQ®–ô¬BˆR—þñë‡Ëë‹Ô¬—èûþÞôàäËåÙå5jZŽð¯¢,“7Ÿüw„æV'•©ô!>z*^ ¥›bÑæIÈB!‚+‹Jgó:±fU-ž‚¿MQõè{€p_û5þ$ÙKòr_‘®º8jW¥xÐÖfeQ?G܃€»¢Õ¶,àJÔ.ñøQõPöÌÛyÝ)VQÝb”ëb™·Ãk]èÍ{³M1G©~Œ`’¦žg:ŵնkíÁªIqÞ¶u2m6¶‘ÌØå(}#(ãå,Q±Hñl~¯íÍ–ó€ßH ÚîKàz Í{ÑæìÞ´ž·ù/ÌAö¹lBä˜ÉY³&1Så,¤‚‚߀Á:²0OIxpÏBxC~—F„·>†H&3¹88w9aÄÀçé\hŸâªL2_›8ëI(<àÑ‹-ˆ¾…@:z1‹PN<ù¬Çþ—ÊŸ§²x&¸ë#d"&l\R¡h Ø_‚nŠÿ"ˆ%R¹!z°tùNÆ;ÜO4"ê1÷rÒ{2î‡8¢Üót¸éAs²·¢1H•,ðân`rG^owõ¶[—Ìšºß–»¹½m^Ú˜å°*QÑg~Ås­UÔÕòäS·“GûPK ðDŒ<`8IHähtmlsingle/images/important.tifóôÔb0cg`h{`¡¨ÇËÖä”èº)↋¤ KsÓ=Ž0ÉÖæ'L9eVF|¬í‚ )6žÚ§Rƒ^Èpm™Ú¬,”³.WS­³õ²äœ3D8ø—=Üy‡§@uÖ©C Z“µÔÚ; ”"ÚÍØ.3,áÜñ"˜I†KíiÁT!¿íœ©ÙŽ)/c:mfèð`šÒòSG(0ø WbËû>3à “Pü k‰?\L¢6„wKJð1Ë>Ù8¹¨"BÎë(GwÒ«'wúdî<ûtã‹}2ÇÍŽŸY׬Q”õ=$rÀà_N„D`éÂ7 ?dxÄÏoRjpQ›=m­p¥ˆ†‹ô¡üãš2:.RR“ߤ|LHÉU¹ÖÑ´¨I}K‡9«kØ~×€É?.ÿ&Ìà` MK' ôbbˆbHÃl ,f¨fhaèÂ)`8 —ÂáZ4¸ ÷Âá10<„×àð|ŽßÃáw$øRŽÆÿȆÈñoM ?ÿNÀøÇ¿P¶ÿQà4JÕÀøOÊL§E |64¥€RÈ”`üsÕ¶U쳎SÓ9¨ÙÙÀøgê3ê Æ?­ äAÌ~”»ç=Øu U^Àø‡¸VqÀCmØ@o`21ŒæcøÇÀf#3˜-b"±™ lPýÁ e³1”Í Ä‚Œ,p5¢PqƒŠƒÌ‡²e„#+˜­¬³¥¡l= ÛI¯ 2\ ê@PK ìDŒþÐñ º'"2.Êó'”¨/¨4< Nj|tµ7f4\„ê®^šÇÑJ~©>¡ãvà êã¡_Õà :Ï•Òt—–ᓵ`ÐÒÖyUó}|íÌ2Ø#á£U^m÷Ä:#¿õ¹'“€ œ¼‚®ž¾­½—·¯_HhXxDdbRrJjZz~AaQqIi]}CcSsËžÞ¾þÁÉ©é™Ù¹ùÍ­íݽ‹Ë+èõÍ-î*#"##¡ ##?y‚âø¨2.2åsŽ'Õ 5TN3`>".. ¬¬¯´@¡Gí3íwUžÇûK ÿð_ÿ·Šzè el9ÿȆ\ðè‘ß0Ž‹h¨ÈãÕ g¬Ô4d=©ÿHS§aáÀWQŠÉBÊHKÿ¾èñt-ßðª÷óä×¹O:ªßp±¬‘äc‚ÜE×lÕ:1} ¹o‚†mó†/sÅñé‚s¼Zax‡'YL«]÷¦0‹…R?Þ$2“ûwBrf6Ú¸¼Ðƒè²vµ¸/i†d/‘â¡iÍŽœ•ëü¼›èXk†RérkÄ‘¸ÛƤÙ^óŠŸ2—9Û<å>©4äkTúT]«÷Ž0M©ùÁlXFƆ~ñá{xߢ3fo„[Ñg¸DWd?¸‰´þ¢utßîÛ®dÒJmtÑ'½™cŽeŸðéÙÂU%rlÓ²“cp„Éðh9ƒVÝ@ær'®~곉2íH÷²#•.ù¹ívLQ«Á]ôááb~•ÈÁøÐNJÃ0Ø41+Kiß&v7Æ«Áúâù8€äñÚ‘üZ=ìÌfñ²î:ªh(eßÿâ°à¤½z<óf¦fœ·‚ÖóV]´ðlG¬øáý’—¬G{Æ+%œ¶®¢“Îùõ¡Tn×Ož$OÓ™½˜—qíTeˆ=ëPîAî$U¸¨rQð¥È›Í k¨m–U¢Œà÷Ó?ORbòÅB£>?”ÕÙùu5Þ_~˜ivzµ/ª@ÿ>ö¯ÌDüÑÄžæ{Æ9.g8Hºòõ6 ˆžTsz7Œ»}"5owµ5WÈC,¦Áü­ÿ“¢ëÆ+ÑÇ‹Ï<íè\•_J™‹Ñk§ÿ†mô*Ly$®Pv¨·›è]&¿<3p®´Z¸s§±J&²'H&zSÃYB¶~ä U‰õÅ ´Þ2ð¡'ß‘h“Áô‘×&‘x¼ÿËÙëÈhsÒzÉ[n\âar{ó‹½,¹ §&é—±a÷MÎI¾Açì€zl$jUÚò=•h•1R›+6š³Õ}{Þ{wgÿMÑB#®¡ÄP-Uq$­^†s§ðT:· ¯Ej–:B¨Åv8žÏu¡ö¼\crÅ>‚Ý/Ð5]‰$}K+[~^ã»ñC2Xí}¨0¹·õ Äñp’‰³§_2úùм·×ýän>êè4›'Þ¯]ßW¨¾ˆ@½ñkÜÆ¶j0h{»²û³úެÝ}v‰ëœ|¡(e5ìë†xÚgØÇº`Ÿln”äieœF›Œ¡÷õ!ŒÀ¾–ðmË4Õ¤›ÔJM’'(ëFç¸zD[fÛy3Ã`ïÙ¸¸>zêÖÇàJS55 ¤þí/N+G!÷ú/\«!šH,óȳÓaß…3íîOÁ©a}Í ®b|0|G280ç±÷kšÝ-2pOÎ*«¨L›y–\,DÌH«,Ó\lÆJã3?(—^åìåßt’º¾Óå”¶nm^ðÖV÷gá@—ŸàÍCÿÖ[¤í„à [P> .cyó»ËE¶›/PÉH¬.(@°5;´süüó”€+§uÅYÓ ;MÉYéøëh1uŽñÇUe&#³¸Ö37^±<~ŒÕ(}Ãòöùd±‡äj‚%–¿´&vP¶˜*'&uǰ¼òËØÉoQÁ7—dK{ÿª£5ÿ°öË{A¤yšwÆ ¬Q(#ðиzŸ5N‚LÅó8s?-÷Ûá0)Íeâì<—A|U2ƒ´²"£ - †¾_Ë`xNMº¦Ì#ŽªÁäΓœ£»1Q“òΤоŒ*¿e<=öŒÌ¹†íB…[¢Omã,¦òjÏÄz^E&ªß´¥´×õŽdÛ c2‡ bû+,ê#c„Ò-r¨²×ÜP8yH^‡Ít¿rçõš„I³«võ±nlQ —ØÒ’I ‹ÑWØåg8ðSDf ^\ Ö´ )ª (Fãæ¦zsëýyì•ã8ä÷‚ÁÎ;,égÓoÄ èÐÄvm9˜J#ŸsëŽùhFkáÊNwi¢†Ú6Åm5%å§E+rÐÄûìÑyûåÇ É)ËóП‹xV–ÍH'Iφ+ÆpÀ÷±ûUù³Š&Öjê]i.RË3 ŸÛŸŽ*BÊK>\TËŒq?v.˜,©æ¥ˆ©j!¢V—”ûÒa‰¥è¦)ìuÆIþº\ö1“È)t?*I*i¡¥ +%ÙþUD57^UH¹sC1÷E× ½u=÷%ÿaaÿq€~Hõ{¼½Wºš¯~GÆoÇÊÎã½éÍ9ås® èÅ&"u[HŠË¯ö~D8£Ÿô°ÕAÊrCü}N“]tY… ¬PFmðìƒÝ›Ì =}zfËB_u?>÷L¸klêÜ–L…£Ž&~Ð*1èl Xq×è òüWޱ`NÕ$žò¨¨éÈÏqî"ûÉd¯#ÝpÚ÷Uþ¨9to:;jrS¶v;|è ¼"KÑK¬bTâ™R-‹âx€¡J$RfD6”.Ô¥PKt)ŸÔüâÁõpS r[3d\ òIâh h/'øÛåJ»çQ䌯?çõñfOì ;=Æû×(–qµ—£–öÈ&™B²„,y‹×E‘XSîg‡(¹£-±J?e Á‹ìÎtÚ›•i¬LO%(O)ìýz/Õ‚ÜêDÃò–ÊÒø2Ó>T·™‘§“mŠÅ?¤í‚Æá8]ììPƒ«¹<œ²NF”ZfqÅcEǵ]8­ŽØœˆ¯. ]‹ ¢©“*d• ^(¡`ûì ß6É, k³;=é®s+ì4L"qOVë#ã=Ád/1׫ý1âÒ‘ŸO*9>ßV¥¼zÈ«€t<sð•aYm?>°(}ï†7÷az·|¸;­_“!Pã°Í£5éá4¯ßJvé!ž„ÅTkM™Nñj¼úµ¬»˜?Ï`éa:øí„é[¬ì¬_Üz¼@œUD·Ì÷œ`UÙ~H¹Í<¤êŸF£‰¦àÀ÷ܘ´˜øl,‹šÝ’=†NS)k©Z×­§íjZ„HžHIÒh+U çB±9ˆGŠä%tÛ+¸íËY1žý¾[6V+Γ4±ež†z¢¥Šøá=€T޾-O“q“Ó¿¾È”Tiß;Ä16É× ò›r‘zÛñ0~Šè­,%&½:Éçm1š ¦ïÄb\ç(åso/^iÙ˜†ç7Ÿ!]a^Лµ„yoé7 ½ö€ÉÊÓTÅY•¨Vû>×ÝÙÍl«–§DSÅ:9š ¢{3ÛÂØVØÈëà@FÞ±þâÚ©ªTÒ—©„îp¤ðJþÑL9ÇyGœ¤ªþM’o%,ŒT¿40ÖÙ¹±ÞS0u©-µ³Žô£Î£óéA¨¥ÕLê&ÎûÞ< Ô¨Q ŽÈ’,¢^Å¿ÄEç_Ïúh¨ýsþÚ+ºk}wKÁ³€‡.“¶4w~TøK–M\®¶µ“^Èh§‘¡¢‘[5~sÌÜØfÇ\ãüÄ·:ñ.;}͸szúP?õž—F¸â‘ï¿jB^WW9!–îªêÅܹ~®%K).À—=Ø|¦\È0Á4ÝWÃgHÿ*Ÿ/Çl?WZ7hˆ‹9g¬'ÞÜXOTá‚"6{uÉæ¨-iæè$MPKÝ€}·»B/Ó—Š޶{˜iìÏÔóÝæÁü’ËýùŒ‡GÏâpW¥y{±úæml7%o«°Z+± ›ž{ƒ„²è•ºßbå¾0YL!ÕÊx/3Ln‰™u óß Á|Ú|ÉoÕæÖ)&¨I˜˜® ƒ¿ùÑ·oŸ¢VÜe„ø‹Jº^Œì…×=íl‰¡åýu]›XÀtᦔÐÓÎwºèáÔQªßIc¥WaÍåY{ ßéy…Y/bÞ1šZÖ¥&‡ôe}žæ…Å«ÞNZäe~J÷6 ’¸˜p¨¯´°O³9ÉNÝÙóW„y‹Lœò¹8ÆÄÀ‘ÂÈÆNžD÷ÊÎÔ'}?䱆“Çd£rŽ+Ê ¡¹™MôL¹†uO¯Æ[ ’EõMD¯²WD• Æ#/›n̤ÊâŸÑ˜h}KuˆÛBÕhdw7žÆý€´Ó†Ô»&:ºFÎq'8_ë|D‚}еÆ':=bÞH¶0º¾Ë9+|…Ý‘Â6l¾ÿE!’ÂE+Érá9©å"WERÝJ]‚ü\d„ýÖçŸxD1ùOc8ì1ù´:¯_wˆþ‘¡©|Ì5Xëìeiðk¶«ž“·èפG~hKÒÒœ¸ü9YòqTU\A3”HÓWí=Åݪs›P|ßQQsõ÷úX÷'kè·aÛ0쯣›aÍ[VÍm)o±š_k­I¤…—œÓ<ãÄÉ–=Úø:Ã/KðŒ`zœE­¯”ý¥ºüª™¯½!Q–EªC´!Ð8¢Köµ6ûýùRv^2¢*|¿¯ ™ÅCa3S4êèQõ—L÷¶èIóÈvÌ ™øñµxà ¾y<ŧÏ6Ý^|ïQÁŒœY_ˆÃL¾ØÙO©@YÞL1]§FïŒÉOs9v!1~‰ÿCú%-Œ+¯¤ƒ©Å}–—ûóÍ»xfê r´WqýM[}+(&_‘•иŽKs>‰Š|&-ãúË¢É/)‡—þá»VBcü‡×Aúé·¹u¶?l©Ž ¢S=¾Tfw)7„‹¾ ß÷ª¬ýÑ;ô$»‡†€“5%é‰?O‡½€ÚÞ^vŸwÃS,“Dú óhg³o£ñ†˜Úx.4ú(à ՒÃ?‘Šß ÏCAg ®óÇ–‹T¦ý;=Fº.¢Ç5 Ä éåq3$vúVJ(r¨/Æä¯Ï—áHÈr<[b•m T³3Ôn´’¯¿É˜ë$/.݈7,¼¼>O¨òµw#ö&/Ñi,HøqÊxŠìi§¸¢?ÖrìlÏf% J´¿¢á ý„·ý^¯-/ñë£Eoʦ(X±›l¥½I1ë); 8Áoôþ+NÔ } ß޲£èÍõñ,¿qß¾Òª‚UßÇ‹˜æ>ïønB Wó f“F(ï+¯SmÕ)÷op@U+)ƒ¯ ‰±4«@T€D\äø²’©ÿ{+ÙK}ñ˜°ÝË‹•‡KÆ JÀ*(jz qÚd^tsùlEù…»QÃàl…gÚ½†¡W¢87Ít‡æù®î<{¿:žh9)ãiö0_'Ÿ-Î4仉>ž÷e1-)ÜŸwl%éÿ¾¦DtoÄÕ›.­&ë-ƒbo»å4ŠJ´ £žO j¶âwuý8[~¾Î©&"ÑR΄gb0SY✴týèÐ4\ÚüÆÈ쾜‚ ã{XÕÉÕíC·oãîûöÒ¥çaAÛ<#Dd¾¬/”ßÿöˬ³¿Ö„°1 Wè”áÉY¶˜h†›˜(ì­£'çñÊÆá}Ÿ—'•;­aû‹ì Ødd“p€b)­›c_ø7Ö¶=xâÛ|>‡¿ øsúê¾óÔëîÆ=%B×K•¡¬ÐR‚gˆH°Rtô䦑”wF($vXG†ö&×±ÉçP¨_׺Qîú»NIýì—]…‰…4˜JîÝ!\}ù}6(J¶bù\7æ·U7‰÷Ga Sÿâ½È¶üøë'O2ê3 J Ž"tFAÞ^©À·`PÄͧ#è1=óƒä‘p„7m¹|EAP‚ PáV¤Fh‹—®1“cçñ>¥Ááñ¾mdMHu$2ríïyùD¢¬Æ/¯õoI–9¦¦7_Õ‹3³Ol€Â®n’W\ê’—G~LzÅWT¬ƒ1y3‘¿áªMN…s¶Ã¸d¤Ýÿ¥t!—EÉmߦÀ¼7¨ QÓÞùªr\†Mé×¾ùJŒ³¤ÏP(ef4'pÐk†Éj¡t_¼DºV’%#¢¹ÔUŒ¼!¿¯͈œÍ¬²açq-½¬!g‚½b•T;0¾éRgj ðü(¼~ÕéjÁq¼dïóÝ’"M %oMYv½â² û½’ÆK@ÉZE?½±jþùs±Â6Ç a0›îÖP{òª›Eñ{ÞÄD2Œ¦?ϑҰumqΗès!:uƒr <ؼíÐæcxB*$¤[y±s5ßÂ~¬èá,;>L5–¡Gæfi½*§‰js‚ø)‘Ä ½R|ñžòC1EdZ²%îOæ'‰Aùš¸ÛcåÐÀÆÿ){™þÿã¼ý:Ii±ûN^v%¦+œ¯kYǹá¿Ðþ>lÑì7A±u,xYSú¿TqÍ ¥DÃôcWÝ\ ‘+ìBgCVÚycæÿ:éTT÷ëRÚ\¯Ó·ÊW¯Ûµf~)¶·¾àÓB’—ßÅj¹K+»Hajª²ûû.]¤ý i‰ÜÍxÙ1%Å2ØÆ=£,Öü#°JRY¹K¤¤‚Oñʃª±¦¹¥*˜TÓ÷3ޱÒ1óýN g¹Æ½ÆuHŒÈãʬÀìë?Pžã5mN_úZ}ëk€A4¤ÌMnôm4÷;Æ$ˆÒäçù öfTGµ.ïÑ…É…¬ßÕ‘ÏÍPtã ó~$‘z„býL!“¬–ap¢¥¹ÅÄYèËs®¯òM\ejñnÂÌV†Q7¶†‡Ç1Ú ßö?ßìb‡Z…OÄÕ0#ktݬ’.LÏLS*`M&©=¥róx-1$\da]ý\3_±BQ3]îÛ@zv϶2)±´Š??žÎ¦ÉÉ¥íú}H:îí’åÓñgÚÙqÇóŠ= X¯Ûm%vך esÃ÷ͼ]ˆ,TX§œ¤1B1Hzjvà0žUîàìhTUg+Ãew؆=Û[™ÉÿÐÖgf«#NÉ*]TXô Âϧó1,ÊþëÙ¤ÔüŽ—\L’K(²w«ºdõmÛ¹qs¹ÈkKs?wùáVüHå.¯ ~ºqºO *ݼ68…zjNKޤäï/òN-¢db`Ä5ñ~ä'é[ú“«Ááùµú+Òkap`•;@¬ÎÉ[¶ 'Õ„ FtT|1¹þU´–× X®=!O3+ús™³Â[8å×Ú«ñÁ¶báPÌsTÚ³žn‘N޳ÍÌ7µ¨jjIã_ÓOTžàíF8:nã%ã TaGòÞî‹mWŸx ¶üØeû ³4 ƒÚA;ûÒ›½Š¼º!Aêög¤Þ™woCí;=Ì“J×§ÑTg×fDšWÆ÷öÙŠæyK45Ö4)1²ˆ½©’ó¸˜ Ö%²"‹fû¥Ò0ðÇ\ BÀœÎabŒî¬S¾JÝi»?×sK_k{Œú¬•¶¬WsðAÒôiG&Æ%58’Mˆñ0 ìæï^š©ˆ=Ì‹Ì]ýõ¥½²’²vÈxm)™S+û ÷­IU02ÝãåÒ xâÄù÷ ÀoµÆ¥¬y"æ\Á@z„I³Çúšd‘ã4Lëzn&‹ ¯DƒüC¾{Û˜HSh̃^>ö¨×pžwmòàw"’𒢕–ÑeºµÞsç«ÖL'£ƒ|0Æ MeÍoÖÖl´Ï2Êæ"auÑèÍ®sÖF®3lsªTéIcÒ²ø9äßÁ¹Ä^÷v7´l-’U’l'_–Lætù¹@ .t‡“Ðá_í¥.wa¨F$‰õ“î¥#Jj/¨±Ùüä'Ó~íÿ·‹eð™ÿÀoÌí÷¬6Æî¸ãnTÒ²–?°ñYÃ13.4j‹oú¸_®Æ‡wk.Ÿ=®2Ù&F¹‘Æœçu”òÎ÷ÐFô¥…mnÐ@h8–?ŒÑõ¬x87ßõZZ÷i¬rªæHhø;1±[÷?p¦,‚±Dz*yÓ¸…Ÿ,e °zŸµ]›iEÿè"•QþÀ¹Â*¤ãÜ#ÿÑ]M¢q3‰‘å‰>³¤ˆEÕ“'Ü âKœyp ˜Ò ±«Å„±ÝÿË 'NÑÇÝ<Õô²ÈäW›˜ºv‚¸a[_%Íìð×”Hì;ÇJß3¡nnß@¯î3;žø#… Ϩx<l&Fõ¬,5 @6õ(³]ã¼ðJÐ&FåjÐN«Çzóã,ÔK‹K#sðÀiCP `0¦rA+ÿĪh¸÷0ØÌ8IØ>Z~Ç7ð3|4Äüñà‘ÀüRIý^ž½wQÅÂRȇ;Ö>Y®quºôì "äà£öé¶€¼ûz±t±³…ö¡“•¯Ì©+?­¶î÷REåÚ*¢ƒ SLF•…¾ã¡sæ?÷)ÝP3{út…ìaâ®ä{d®èßl¿•j0¤…1LP^XB«ÈEpÛþ²ßc"·¬=wz‡çsÜ[L êFXÞ˜ð5ßýP‹äï*w•%#‰æ3hÍÆÃùC8ÌŒáÝÁÎXߪø;ÌljäA›ÝÉ?jn]HÒ¯u)ꄚßçÌ%‰Y—èyúÐWÿC_o# /`V@ÅrÎ7Å—ré€ QL·ãB±ÆmEº¾gEx0ä(©PÈì ÎÉ}iI*£ª›(Þ! äR–G¾l?"ä _Lõ×^]¸$™~*ÉZ­}ÙRìàÚüÖX&K°3ÅJhE‹ÔŠeˆÆßÃT¢úŠy×F9ðÿ4(ÿÔf‰ÿç&èy± l$|äéߣþ1IŒÝ7p|ï?鯄­ éTÙÝuw˜~HøÚªÐ9@.ëSœqŽ>Žž,žÝk+`)×äÏ’±Q¢´ Pà˜Áv3úDž*ÛnO%w'`‘ˆaõŒŸž«‘½ Ÿœ#T'd9ãéÝ n_B’¶øÁŽê D«F#Î.÷ÍÙ7{îÃn‘V·36û ³96îµæ ç·x¿¯”ÜÕ"½{.®~TȈ٭۶ųð8UþZ.@{äln?»…”ú†@š¼ Ã7ŸHìñü‡ÈXúFR“EmJÒÇNGn¨ý`â0‚@›²µ+ÐxÖÿl7ÁØ3GÕ;l³‹¤%­¶ f?/°ÖEïdVi ½‰(¸¶µ l*ØW~•ÌŒ#ׯbÐÍÚÎ+²“2q”TŸÖ–W‘VÒP#l¾ÿ½öKÎoRÁ´ìáäÃEè&ÙK©8Ògl)¸jùNêÛéÐ0ŠPÛmÈ[º›¹µ¾+åŸý’Z,ø>9)*ÌTrïcfZ*œ7Q:aÌ"z8K>0³==:t|T»4e°•ýÛy«ziù}åµøó¸t9s©3æF{¾¸`_0â$qʉÉ.Ÿš„@¶lò8Ûõþ¡ â¡a6ò3'4á ´ßA"suå¿¢½÷‰øj­êsçÍ»•û—&äç(£Ãƒ(5X«¾ ‡Ý¶—uœÀ‰¨âã@‰ Á&¬÷‰øàÀ Û±Éù ߃¡ST…’>´••^bb¬¢†––‹‹†††±¢ˆ´ÔY4æ³!™³!ZÈ Î®®Üq=xVæˆÅÈñò9f¼2@DŸ›óôY)S_®äd»û™âÍW!è ŒÖ sTÉŸ}n.tPÃl&ÆFH­7C‰ü}+ëwtRzÈ b?£;¨}T-#ðÒ=ª?n [RÇ*ñ‚ œ]–KB– 5®šŸF,›4BcMË­K‹XÕ=ÓM2y]dƒ¬S|›µ¸¬§;†¾Ùß|/[è»M>vÃ/z_ävpy Y¼;0—äUoÐk:RN:œ6“ÑT-f„ÖâNö(q«Î·Û…fÄ÷ž ïþúQŽª›/ /eÊÀ$-¾¤N|¿–<˜”ó¹–Ö¤|>—m(ZZô^²¹æ¦ ŸË Ö’d!ݸ̥h|- kkQ qšl Á1 D„1úò×{|3f‡J™u¼zÚ'ÛƒšŸšèË5›øéÍ2õ^»Æ¯U{4aМ+Wp÷sj”wØ=#‘Ûèl׸‹9]0L9<¾“\f]¬ VeU™¬{C‘ïÏ0no®%¤WÌêŠ?•¿¢âí4¦"îñšéÛkL&4d-¹wÔ¼‘cv¿™¿A©ªª/=¿¦-Ï<Sœãs;)c«ŠC!¡A¡Ââ²òò²bŸÝ];F»u›xY+)i–€Êãôëpß”YƒS;Ï»`šB&%g6«b2`ΟAsF*)A†=¨-­ŠŽþ¡»Ld=‡Á’b ëçºo‰Òý—KmÓõõËôÅ^Ve}2]æm­˜qc=Î ˜g°L§°£íJ|cÒï“…™.í ]àÓï¬/ý} çÙ<õ0ÃJún)mÚg]=‡)í=ké¦k.[”šÿkó_“ÈßHC‚ùe©Mh.•\¾,F÷¨DÓeDI…ûÒ]g™ñÅô¤,¦'¾Õ“jªuÕòPζ,†µ¨fZ5¼²ý%…¿ëMþjÛÀ4Uþ¾²TA|QôGŒ|gŒþø)½ß Zq†¨þŸ)¿òe6qeôÑvËñypÇ¿ŸËI'æR9Dò¦Û™EÆ3D]rµô½dáBüóÿž×ÒD…Ÿà@#¾ÿ&²†¿¿_ß=¶Zª|­¾KÞM¡BÍDåo¶cãí…þiJH+m)5DK‹æµã)è:Ô}éŠüÖ¿£Àñ€@l»ìx{Ùý®ÐÀéPáyÚHð W±ûWÕûÊ›§AvŒöwЬòœC|ržZ,¹_e4(õžrö±Ì<Ô ìBõïd¿vY‰‰ê"uÈ}98ül¾$W:B•}aM¤ ®}Ò‰»§´Ñ¡F0DpÜÜã”¶¼–=Ž—š8Ü÷© ß\NÞ1ç Yš ž—ûÁ,Åàb$…Ä:ĺ±RîóšV§7Õ“jj̃=™¢ç3%BùÙCm}þ‡pà9Um6ÁÉ…PðF(uˆ™zÌçmž–GšèTþ¼ž^ƒM¢/£iït[kÅi—ú¾ŠpººÆ—Œå>²Ò©q»¾RŽkÇ3¤<Ñwï*Ëg—Îû6Ãúb¶¸&}•[†ý?ì'f–Í:Ìße°×פb¦€<á€Õ½Ý‘Þ™bë;§aC½—T—°/yï4'äß^¨öÑ"éÎLr¦»Ê vXþzÈÞ+¾ØÛö®|$F¥lu¹ëÛ¬êûüÄÙt3¥ã5ÏR}M(ØÖj^p =Ìíwî°bòw%,QQ;«»p‹gÝÄr›ªöÐ ¬Ý©{%°ªkÑ-ïÎè¦aÑþEòØJ‰‹ž2µž™U_w«EB"òóÓ;Êè«k¸lâc¼Öw‹í6Òå«Õ^IEm„ ßýR÷AšŠŠƒ°‰9K6€¼×‡Â®‹Lê;S±W„Èݼ!Î/dõ¼eëͬ¿r T´ 9¥ûÆ¿!]Q‘ŒMÊ/ï¶ +êïá–È”DËjõž;hiYwX¢´YØÌñÄÞ!•@ÎK´b%¾ç”QN{–被íØZÑ;F¹üØßœŸ(;.÷X±©êäI¾½`ì·g¬6¢z`¶ˆ^;ø8ì}ü#+g‰ø I€˜é—•Lƒz¨èxPŽŽ¦ªÆ1 ¯hG6Ox$1ºÎs4ªPù—L̯ßÍò*%òÏ5(J›e?y¹V!âÏ£  ñ–/LÖS4z>ü#ÙÚB]/Zñ¹’£*m´%Täš`yåD¿ä9Òù³<ÙkêK²‚¿ãÖ×¾žù´kz<”–+ìɽã-®û^Ø=!ö·m£l~ªù à–@íùÔR˜ö½$«²ð͸"%¡ïË„KèQuÑ‘â°A'¯sÖå9ÁƒÏÄÑŒÛa¼Üöpö2?Ò€¦š¦/€j¢Üóû/Ñ`÷"sÍàjAгjišÑRß¼ºùöÃTQ%óójÖ”ÔpÙñX³‹³t9_b«8ˆ(™õ)n±¥;IüÄ÷³6…N—_ô(SO™’…]’Á:´ðe)ãfdnV.ÃV¥¼Y:‘ª°zd¿eôÈþ Þ?ކä ™¼cû­Ý]Ñ}ß¾Ðn¡à×´æ¹oÑÌUŒ61KjjO ìÅë|ň,m¾™ü2ùã©èÆHg%uО~Ý,ùiøþãBë›ZOÞÙ‘G°7….-ûtËΤ)|ní–€ô]Ñèνv›æŽmn‰y:„—ÿ©Za;L+@_9!«øø&Ê“‡ïœýz©ÆÀîžè}  Ï¦ï¿ “¼òÚß[øcÑä9ˆ˜¼õ¤óèhä¾aþTqúV>§;o¿×¼sª7\7×ÿ‘*æ%§óó ]‹ˆW~f?[ÔyO™w#ýG1ü|£^éÂ>è³åÁüL~bwzxÚ8\…øƒ`&>‘‡ S™²q%ª?½ô£k3~Êq …áЛÖä·3v¿€¸êh¨¬‡ïª2Â*Ett!²“O_ù"ú‡¥ŒÂØsÃÆÉEå=d`z×"w§)V¯}T¶öÏP·Ù@… YÓÝ^Ø8«}}ØóóíI·ë•P,cjjƒÚÜ¡CÒ±–Óæôa§•ô6Už·_#h fèK¹$aåp »m¡îk%jQ)øÍ¥ãÊðq1©×1LoµƒµÔt v?r»²)ë40iä«B÷Ôö -pùMˆø+âšy.¤ÊÕ†/ƲÇ@‹”ÛSÏðóÄädÜwYl¿€"†6,°£ì£§Õ™OÝûٸ⃳5r?zwîíÁn=2Prª¸Îûm?àTÌ@˪º=8e/ŠÜ’ÝÆ«£G-®Ì¯p±iÇ<ÒǬpHØÊÜYü;ªÕo‡þ†z#XŠõåÃa`Òõ‹ûx¿—¬ìýçY‘›ÓŒºVâÏ [Ç¥l:ï'3‹p€äL¯Mû…ƒ³SÈ¾ÒØ§%¢ŸE+­  M¶Ã^Kí0'‰ñoñkrÁ›R5ÈêLó©'UiTŸÅ¦ w7rZ=«7†®FCá7Z³—-¢jÞ2‹7è§>÷ê‹ Êa;¯ —„¾òm,3~bÞ}å'ø9DÔ›UÔ@$¼¤¸€äW°eA’xHƒ±Ÿ>÷·-Çž»Gõ0—ΟÁžG3-)&g3‹“s¢+e‘þ„8‰/}µ[mî½<%J܉Áö›%Q‰i‰Š"›·,C1=› ÙžwµG3, Ù!wgÐÁj ®³S¾OíÀ[¦ZÔu÷raOåvòq®/¼¬dýs¿&•îÆ7 ëýS 0ï#…i.+oºÕþÁQ5£øþ)!!Bëq¬· GMÍGìMþ}GÞ\ÆçbœFͱãü]¢$Á $š®Âº“YŸp¼À bqÙ0v¨8‘º7‚Õz¡À`X·¿{x¼äañ_2ÒJ,' )¯ˆá8. ’P¾ð6Ë µauÎÅGÜýøœeÿ[Õr‡]·äÜ ‚iq|@+¼™&Yìâ¬ÿ’!ÿíÎ\o“w¦~„¦G•û$Ø8…·¶Ç¤w‹­Â0×}/“wíeiKz™‡QÝ‡ÂØ›#Ga1¸¹µäø qÅ[~M›Xrv"3-FS“+”-+ï¼à€ìÁô!Yí²Ïg†ƒïÁA…¨ÉÓÄüâ:£o–ì‹“Åi‹Ò,Š?ùµN‘ÞPS±]Y\š(3°æÃVWB[ªHÎ+÷,í;LJy4Ÿß1·ÒÁ懮ÄýN£‘A}ëжZnYΠӽÔsyùŒ¹NÒÕ’Çy°{N©OÄeI3>‘°öº÷à°2§Ê¯ýaSÅÆk€ºÉ³mkàùW½<,-±§Ã²WjØ4Y[/%Òƒø&D¿ ’[¿ƒtö$aÈM¥fj†V 4s½X*ãÊfdÝsóU˜ÓËÜp{§û€5ݶ=:3؆;Ö §»òï ã~Û²ïüñMšßÅ¢zÂòô_lVZP.ÄAµ°å´û(8p n‰AôkÇžcà&BVömX–­*j|ä@þ…—~:ÿÓn•”æO˜é?ŒZpÜ´‘9“„¯Ö\hαh›àÇ&ÇPG ¬—Q¥C:ÉMd¹z¸9óúXœ5ã[®Àt¹¼I€è‡71ohïëñiQ¿Å$fìã~Z“Qs$”\_V·ÆÐ›PwÏ4Ï–ït¢Ì*j ¸åÇÑq¶¨|-O³“â”}̶€Å2Á½1©™·8µ® ‘ñˆcÇ6qŒÉÿCoòa6Š–4^=©]z@%sõ ϸ8m~|l…fœB¾øÐ¾èþ’aç¾ëOz’’q!Œgxõ¿dµ$HðO¦Þ$ͶìùgqVSg’”‘ÆçGæ¢3˜§4á’ Ñi‰ñ?Ô¡¥p`‹þ~M”°ú{?f€¼­µ!6³Ä‚ŒPgwgáOã³óà£K–[¯^¶÷ç¯î3&~”0øL›sg{díM÷Î; -¤®ÖE{ µ"K#EX›äœâû*Ù‰Fpà<å¦ñˆ¡fåµÛÔ )ŒFÕúkMNj˯Žx£|’',ÆPV|å­‚tyãð óên¬ã%SÙv°V3Ûû¼—AÆFûF7yÕ#lªä» ÙË Mæ_! ?—çšHŒgæS –fõåŠ9tß)ÑhêÞ¾’ÓQFf*a9Pä I8^ry,y³ž»´.5~Úuòf\l‹ïïÉœ=¥ùü%nªŠ-r—Oú'*¡¶Šîf÷»b8pMÈv5"¼ûþ=JL6ünA ¨ÑËé…µ¿³éááW»Ö¸ð'ç®ÕÎÚ©ã:ßïè¸ÔèÆ€¡e±¿ÆTÏí¾Ë©jU]Àd»—WW7ÅAS,ÉðGð?F¸åÝ㦠Åî‚™¬ +ë Ì·Š9õ|‚=އ¾JccáÅ^{m“»®HHÂ_P#ñJ¦aZu’í™^bBiÓؘɃOÙ· y&qÚÞ×8¯"IŸjþš\³‘ŽÂh+Ršýƒ;^Ô뽩^žíÏ•#ã æÍIÖ9Ù´rÛÁ½Ð¸[?þ©òƒµPö˜~%§ÜdÝkw„à‹vVt©4ˆj¾«h”»~ëZ0·T¿–MÔ)jÁȄ鲙› ‹À³÷E¯€~²#év+|ú¡Çiø^&KS¤Ëç=ó˜M£HÅù¦IÂjJw6[^Q:6êÝí.Ný=Èß3BÂ4òÈ}Ꞔ8ùFØéÛ—•sOÇm $™i9üFM’\Íic`T–Ö0Q—dËËçÊz_eÎ!¿ŠkÀøÎ†Z«* Úçk’ÕÄOïMßÎ?bNݪK’¤ÎC•Ug"Ò“×VçD£Áí.«,*.*/ ªŒ÷±/±ÿ™›^˜¥™••›å¡g–…žk ±µŽffd”x² x°þÇÖ}Tý‡a^&C¿Þ¶šÔ‚α:î<%?í8}Šz \6™·â _ùƒóx _b¤å{"±jˆó75Aꆋˇ¿1àÓœ mOwЬÞOw¦oNf žBíÆá‹Xtõ@i.„ηžœu §*ŒòD¢Ä8^ TÆYÈjÁ¨•Šõ}ekÊ*¶§\)âLQg"~s2ø|-”Û' è¾ûrÀqlX‰Þöv#Ç’r±dŠ>¹1?V,ò©©àÐÁ=¬8Y/ìÓ?ò!s{5ldutú@Mì¶èWDJZ9Cp5L–ôÌh5é r8_þÆ¥ªƒãއíE.éUdâȦ•±Âee£üøgHa†¿¡Ù+¢ ¨ŒÜêR,#å^–c®K+B†û:l=óÛÚøó/¥r]¿2¶ËÿÆÚr‘–²¯.F7làÀ§‡Ið=®aÀ]姇o'ïàÀdìL$@¤ý®2ê_zúÿ°¬.µ°íÝ•™‰‘5ŠõuœõL‚±䟸[GQF¦€.uÌÌ%‡„Í­æÞ¦Žt¿¯ |,­….)M¸[ò%t‹ÈñˆJuC½¼‰™ƒ³&=(ÿ9ÅcСoܧ±²‚v·W¶Š3ÂP’wp«K_±¸”eÏúá,£Ò–晚3k¦ OÉNã!U¹o³–úd¨ ‘G|úÝ»†%MŸ0éñ¨×ç7äj†¨Ñh%û)ä>£­#£ÞÞ$›É£ì4Ê›áˆ#æ>/~,TsG¼Ï èS7ÕÏ=ýê¤>‘|1ßîX{‡JxöÆýÚÏ×m¶4Ív³à…ê&®ùàz©zÖ—$Ë «j’皺„LG­,¹t^âòÔ<2g4Hª`UÆnRñÅŒ#¡3î\'Õ­OeÜ“º?*JŸXãÑn`=­^¥sJ£ Q±Õï8'uâBŠnÀ÷7H§Ð§òjò™!±Ÿ:[È{Þ ¦£5ð™Ë^Ï2™·9Òh‡´Ûp³qN+˜ê`rËz“úJw[Ô/T¸úsý&yGÇ!BäJ–€qø~ZùâU»˜_‰-B:/¤êø -o.¡ç_a.$uxä°—þî71»öŒLД>²‘þ‹d8PÚÇžYr6u'ûµÄýÎÍo Â3…ò|¢÷GŠü•ã“óÆÑŸ[’¬HÉ{1ï!ˆ`‡þÝH`Ø|Y@ äj€ùÖ;NXßÎ$Òê”59GSûÝ$6ÿÎÊÁ£ÑDýQÊ¿UpC{ª¸]Õ³Xü¥ÀéøúA«ãІq-RC+fÙÈ;õ§JB¾‘%áË8 ÔžÈíS¡S›Že![’³Q“ø¥{Úlv˜…8ñ’™Ö´¿?±¥T –L ‘è"“%}õ0˜aŠ™*J¢ÔÛ)z¦ÅRÖy+wîµ~Ó•I —ÚP ÇÙÜdºÕv+ ru¨SŒ çKðöÓûâÚ¸ò:“áO«ÈL¿Ÿq‘Ó ‚œåØGKI`G½Ãa÷DF0ù9ûܦyš®_µ¥xb¬¥æÆ‘Íä§ÈÈôð–ßqß„+û㵚÷¤ûŠ`ÃÞfzÌX8¸Ρªæêì—¢î5àæùÝÇ´•f´ÆH×ë©ÒÿŽÛB‰€™ËøÀÎKÖuL½)†2¢4NtKeñ}‹°ÛÛü—N]-Ñz*ÅÈ$3÷"î|ÇHPãöM½*ßÑ… yºÍô1¦q}ßZ)Îq÷Ðf#9$¥ˆe×~m’R™é»¦©Èç¥ï}Í´¬µ½0ÙXîîÌMgµ9v^[,Ì'¯t"~÷~æÎ '5ûì-¾öÖÿÖ°‡E£·¦›Æ] ÊL£\C­ëÑ_øÃàl†NOh»,ñ㙹­À®.Ed0¤Td°K›6+ô•™î÷œ¢`šåðá°¨’.šUEÞçg¥„3¥¥e¾ ª OrÞ­þ*ìÎò]°äçíp]rÌQE,×qïÍÁåÀ)§ˆö”y­Ò*ó uˆYÑ€ö('Œ<õY/E¢›©÷àñÊRŠK§Œa¼æ«Íˆ——ȱ²ýA8Ù2G}-rZ)‹™·9p`ìûA̬Õr*ÆiLp7ˆH-Ôéõ7¹>• Ê(¯Ëd>y‹u f9Z6‰)û@íø˜o ûgœ^Þ’RŸ=£<_ŸÊ‡:, è¶Þ%tjÞš,1<©¢nâdZM/ØRþ옽 °ø*ýÝQ›‚\<((h€8Ä!׫ ¾»pvî~•Ë ìFÁøüç)'屓!ù@¾k’¾¾þ›ÒbŒÒR–Çâ{~²qšxyúʇÿ®0_.,Á0¤Œ $±YF$µM&†p_À…šPÈõ-+jáã\œ•eG½nÓ›x$>>™y2”‚ÿ\o`©þ_?ÉxÍyÆæò7j(>»dÁ¯k´‰oÌnƒñ©±=¹5#ÈMÚ8JZ:£BŸ¾åÝÛ‘§ÂA¤×›ÄæX›úÂ÷÷p‘ûéÜ­cï ¥ÿZãAq:#Xé@ääÅmuuZqMäP¸þ÷>b/F”â˜ùiX«Îx`ûbÿª§)ŠâG’V8‘ï¸>)ÏG¼ÇZìï¿—ýžß@ûñ ¼™î6 ”}LK `Ï2HgV àῺ‹y¤Ìñz<+Ì·Rò–º— ¦…\ʥ嚛¦Â}¢[Lâvâ®CïfÊJ–ë8“äQÆžR£,ý8Ö“=þòn‰j×6Ï~ÿ2ê³’FΨæg_.Hü/šŠÿ7¡b9¹ƒ“³†µì‰-˜ÞÎ|3I3õ É9EeñIeÅYűxa Ÿhr¦ŒŽâ_=[å\c‚w@/{›ŽÑK®{µ3í¶‹ª&¶÷ãé«`"¨2G¼—ÚéG´3{‚›´²’&91=û8"®dE ;  «ˆ_Ý ùpqóç´ë± h,,G}]à•¶‚—!ÏåøðºÊí ¿ó@_ôi*-äºKG»ˆ¥i%5îÜ­Pqµ–“¡+byk¨?:0¯¿£=G,Hyãöhé‡ ¹¨£ÿ,né'Ñ:V+Ebß¡ Róþ6FÚ œ%¬-þÔõ}Ã/I¯Ø–÷0ÚŒ²TÚðåoœáÍÂÔÆSV:fCä™§Žœ«ªáǕփÀ4¹ Jƒ»À¦”E„OŸ¯ÎòêC•ýuÍùeEíáÅiF»ØÚ²ôYZ9%•/«·^_ÌYñ³RIà‡›mK ©ª+¦~TOJÔAdzghžh:—YOŠ(¥Õ ÛQÔ°?–<†è¤,†èE°æÖÕ¡(«¸šPЗŒŒÈ”·Ðúñ¤‚dØya|<>sS‡ðÝ׼Ŀ4íIùf+ ëÿLíY ó#e Í‘Æ\iÞú2ydE“;¸Ê½ÜÔö©>ñ…­™Ë[uÖ,ò¶ò:Û`Ïëå÷F²½¬?*‚Ëh*Ä›y±ŸËr_ÀWøÖžŸÚ]NŠ%J‹§»ç.m=X–§Ä˜Î’Õ2¤Í1(Mc´ÝûcørƒI”u暴ޫÄ/7¯ 8>iª) ùäøtg˜ÿ—òiþ+‰“N÷l´[¾#>̓΂ƒ™™‹ü]5µ ÕðmÕ×7 Céäø@¤d2U¤äO>{‚» Ò›é à¢À_oУgÖÇvÁä”Ÿá… ö›¨ ‘Ui0ãäŸY ÈüÊ….$cPÇ?“dFöÝ5u’®¹3ÓºOÿ¬f{j(ãíÝøô>+²Àçr¡®1O£¡Ž—ùv……ã§XЈšŸ Îi½ÚC¾ÍêŽ:Â…o· ~ÀSU2ÑI5bvY³ÕÏ/[ä–(‘¼y1K¨©‘=³#B¯™(ˆ¥Æ5Nîv¸w‘IV3s­¨xùõ|¨ÛÏÂL?®-3ðõû3\óÉPHz‘Õ HÀÑ܆‘lÿïìg «ÎÕay“š$ å¯_ç ‹J ¦„7b±ös §š:{u+R†m'ÓK«E;Qyö·e~ǰՑÿ°Ô?<#¸Mö Bºþ¸„N×›¢Q‡F<†a¯³²w~ûõªèÎÝ–ŽÍž1ãàýá¦xKû¸+!;Lö:3<ÈØXî{©ÇÒ`fni¡õ4/ù>#4PšM_ Èúkúâ(û‰üüôœ¤GÔ’ =¢NŸ,ÿÕ÷ËdíŒÏŸ þ¤.“UXZYYF­8Î$&+ÒÌRZò)Õài£žãÿz”²Ô#A.º‘Ls÷­98Ærg4mfgð9¶oŠS‰GxŠaw†\ *u±-½ÓUý(+$ƒQ†¾pÒꋪ¤>瑚ç5µšýÓFŽ"žcsڀNJd÷®šÕ–;mо¢”|>ø /ï¼…žÊŒ{^u¹kþä˜3ûa! µB{•¦|§ ·ÝVWÒQ6z׆ ÿ9“ƒ¦¼éL;LZ=÷ñ4Ýù_TÑéŠÄ )=LÓð6ÁÌå€èt#Rüd4<âÓvC½þè«§))Ûw—YXwâ¸>:¾æ%G‚M·,K àaç߬öÉÓÝ'Í”›'qø9{˜¡ˆ0ˆ&ÿ$fRœGf‹\kƒ'%›lâüEÛú‡Äfn‘€ž„ì«xMƒ¶^~Í ‘‰2™tZp²;#wõ­îLÃDÿÿbfÞ)áߨ ã:VdˆHí­ÀÄ1QBTΠuÔEc5¤ÎVµçPa«âï^qÙEƒB-šÛ»ºEżož—´®Ý“Z¾Ú"²¸†ÖFTcÂf£©¹EÛt»#:Õ^{OïÑæ0ØÜºûîSj®Ú¥­]W@í1Û—¿’ûÞ;>š»ž&õ»üÁSË%@)!‹·ñCÒ¿×KI°@M ‚E÷U7T2´ýkÉk|€Ö­h¡E]q‹ž[ÅMpq”4SŒ¶” Š•6‡²¯zq fÅéBL‡ŸRwšcíÇÕÎFÈÍ\€™¥æÛˆpßs™4¤ÒçÅ……>#•|¢urJ¹;Xb €¢^ŽyoÄæ¨p“G¨óû¯À\)Q~ÐÉŸÿi›FjÏi â‹£èýqzˆðй2¢|‡eæK‡w¯‰¦e·ë2‡g—,öòR¢Hœ¶£{d½F¬(–â‹Iá™×¾Ûcë ßUO€àµÔ|J?¶q…¥µ·0GÛ©n"‹y6å‰M‡óz Ü ‹‘ŸèdËX X-MíÎnmàûgà˜„Ÿ’NðWUô µŸ‹³ñ#Ú3„+! š&´Í(dojhµìÐÁ›ð“l_òK~T‰‰5‡% XӸ㨻3ÁßwñrX&Àt?^DÛn|;”íh;:,ª'41É…4¼Ð(õ ý!-ç÷ÂOvñg›Ë^½hA›aZZö~E'¬«uq|é=ùkiQƒ$®KúF®.›©GÌ+òt…žut´+Ýœéx…?6eèu9ŸõUÞ.«KϦ`^ s¢ðcž÷L~ì$| —ÿ6RrXjLJáú&FÿTt w«LlݵA’bþd \!y^±MPðY²„2 ¢çØ'n@ÚCSNŽZ®›'ùö¶Üº5µfMS/¥4áÛæ&Qðëw˜@';fÌÿì„s¥¶ñ&kw.$8<“Wóô÷»[•²ÄÚJ#oüæS’™›üÄñþ³êåG¸5éÀþSÅBA'©uZñÖ{æÕвñü m%E~QM[ýéòÊŒ5ÊJq‡˜RDÒ•Ü™9FØU×÷²ÀãCÏÁV¬Údža÷z-›yË»ªOŒ –ß?†>($µ60G#?¼È–îÃIW.‹¼\¹ÆH!2?Zá˜~zš½§pR¿¢‘þ‡‡%úaßñb§%ê£y25~øÌBœØŠÕKÌÎ݆,ܵ‚’ ̹qqÜ(žžùÊ *#%#†ìT¯‰5Ô%º»ï›¹•¨”V˜“ #Xs“sÝ:¢:æîM—uD÷xË"˜•v‡IûN nZ!Cµ¸ÒA3KRÙÔ~ =çGXú^Aû§…ÃJzžl .â½#s Ìâ ¤-W3já¥iâ%UJ3yZ¨ØDvÂ’<±ÇÁÎrFPÚXwžK&pZKg·m§Ó\É??G<› <<€žGØ·®æ‚~ÉV ¾fïFn$ÀNd€®¯ ø¼ð| úð„2^\¸‹AÜ gtˆô€‡¼g,>À`@—1P[ ÞgÎjEw\Eu6g4¡4@ôÌe&üɩݖ_£`NÊÌJ­mÆ‘DVlZ¨RJáäG|4 ØI¿Æ³ådý ¥ˆÉÌ®qÊ›ßx9*cª®òmƒ%˜•5óoí[ñPü…Áv² :‰ä”äÞ~h¸úP ;S±Ñ3ð¦}Æ£Ýæa¬óšºK²×ß|HC_ÛÈDoЦ¡ËI£¡£Vì»*ë§¶ÉgE£ì_k _[45t:4ÇI!ÿêBÖ @/¦¸ 5DL 7Ÿ¶M|÷ÍŸ-îaŒÏ!øèìxŽ»’ÊýÇ{=×3&Ÿ/§¿ªýÆ Ë0:$TLów…/TVŠwþ2Ë.þdÔCÇCùvýõÒêÓÔSÛ*Ðj™Xyê_4j5–û±‘‹a®×Ü3‡óÐÐô%õ0ª)К)¢Ñ¨ÖZã‘_¼å1X†äÙpèl®¸ÿöYë’GµÑ¤“O¬Ç`ŒÀ´VPøˆÝSÁÔB¡£[…®d%ßB¢ö|–sê—r [ŒõŠ“(^ŒØ!Qcd¦¶´4Õ2ª­ë0Ê`@a,û‰ïÞ­3ômü8åû|ÿ äO(“ª7é)Àþ…-ü–úŸ§Ÿ­=¯Êø¿­JÞ¿N þ»Ù‰÷–`¼È#Hs#‡ÃÖ~i™,þ~aÝ„rÜêö5˘Ü`[&mkñ(lñö¶XA©5ïõŽ_Õµí¶ö-¢,lûáNñSõ}~³+%b ½¡¤Š:æ;ûyñ"mß—„ÙUÓÜ‘v±û&gÅ´%d4Ñôß³ã) "i‰)àŒ8£øY333»C™!r)*·PÕî8¼ ·I?J0YŒB`nóº`Sv·3´IöøÇ ÌÑÝEg B¸dV²—õ>}trë(/¸òSfš!Šhè.ݦ(¨ Ð"׳FVt­ïUSLvå\ å®Ê “póx.ŒuÖ Fá¼—ònNšÎ'øJ«[˜Ž~è*zo¾z€¬V`µ0,BfSC+Σž.åkÅm;çÕÉ-³x)9 &Â$1ê—½÷·ÞÃ^‹ÃZÆ4;C•øj¥üà˰wßI3ÍÅÈÊîN¥Scp6ޤ!™wì¥i᪮5XÒÿ^4²y}“ö£«ÊÓ‰;`‚V¬õ«Â ¢’,®Ô|3&Rr$`âà”´õ¥ŠãßïÞeÈ™jƒV”#S ÛÕhTǃª2ý(û ÜÇ ã$¬lcäs@fXUK„D«ß½E<>šþm!¹E± ËíË+Óͱ­R >_;½ƒ]Q¬Ì>ë wúäªå;>1ŒbÚ™>¡Rnj,ý¨²3®c¹«oõPüYjjŒq¼ÑÒ=rÒ‘wür¥oióåc˜´8C¡F¨Â>ó òñ`þÏ|ðå¿ÛáxÉWKéWoÓMl0uvÿJñÍÔìØÍÚÏM *‹Æq¿&G-Q®s„Õl-ÀRîSôv;Z\}4VÖ;—†“pþnLÔNËc~•,®àakhoè šò ¾1/‘“ ¹ŽXѾ˜æ%æRj„ƘÖeæJ»Ó×–ïà¡xaÏN÷ƒd¨op¨ýi‹’´eË…o‰Ö:æn!IMÜ·:†{ÞÃ.‘tf…Tq"ÅÆŸÔÅÑô®ã<— -=;úöpKëbbâXÅ"µ¼lUm4$Ar]«oÖ€áÉh¬ ÌHÂÏf…¥RÔEÁ¹.NÑêŠøzù«€¸ãµdîµD÷9†–™_\Ö‹*âbq ¿prÂg^Ñü6Ÿ¾õŒ Þ¤¶$®ORö“Ž5×Á+’É2ÈLþ×EµïÿÙ¤¶Lj\TνžÉìF#–L˜“$-…[ÓlÏjLð&ì¬*GÆýŽÝ "<à-ÅzÀ·èúó{–êÚ¬×pK#š¥kìé­[W=k8äˆÇ5òr›ƒUoJT$»M•XxYQ ÞÇÏÂë0¨ª”bó ]Ú¹M·kœãä ¥ ÕgEßE%UŒ±Z97½]K·t=~^t+ÿ)bnÃT½êäNým£Ë¨FÁD1·bvõ›,?nÓ/ Ör¬éµÖãÎÉ^›á6Wö%­˜åyNs‡JI€èEØK–’—Ò™Çës¿´›¹h*—Ïà§]z¦é¶½éU«÷a%Ù"M·>"N›œ.óé·õ4jU‡·r?_J1 2‰Åµn4ñŸjµüÞ9å89r.Ñz–`„£Ygnòš½ž¿xOM?3Ìb:…Ë™¾ ÿ±R'ÒÒúÞå†ýLß±œ+H\:™äFÓÐ3ŒU9Éá#Ïá§¢ñ)#ʸ?Sq¿pâ|'ÀÍÐo]­0×öK§ ø´‡RÀ„6h6tS2ÕDQüů®Mzp†©­’1t\Å)™{=–RµÆ/&æn0tš¢åòžd*®µ g³ ØI‡”!—fG¬cF z¼'YÅWØæ5Qº–ç_ÞM¢”‚QJ_ Fýöï‘þyŽÛøÅ¯ãµìlë‹®õP¹²ÚÓNKM­÷Ká€lsµ¥.é+±k†ú6Ç÷Ÿ¾ÑÒ§†¶˜Ð®˜|X™‡ t4ß–%ßZ#{®,?<žŠ6ùm‰¶¥™Ï¾Îþ¾'Þ²ÿ~#—´ìbõ{¸‘v×Â@¥²¥ri=á¤ÆR@›x~L½`6ô´¦êì2*Ñ%\¬µþTb­ †¡Šoô_N &ÓÅ{'ÀëÙ§?ç6Çc³px´`‡ø§Â¦¸+‚^YÀb6Ó¼tmœÜÎ*Ô<‹yÉ[û.Œ~¯­Þjú¾Þï̃qD5Üe©¢’ã¤9daW¾±}dÉ‚£|€w "2™O3`ðîœ+@Ö$òè.^ß[› P¹Ž¢)Þf|0:y îYY~·~µ˜tþpxR§â¡á{&wø£ß@~&LS›»ˆ¥èLçÉÕYæO…b¬¥}ÜÝ^á\ä„ý¢~9ÈärõÏ£È]—,Ǿ!ÊùþáMYã?¬¼ïèGL"Ì™KpL`g©D¾yvLáØÌ¦‘ø7[¡ÓÑ%ŽAösÚ/åzEPª:_\ê›.½g¿SIkjŒ‚¬­º-á+¼kÝ•2˜-lõÒŒúT?ë,ߘKÏpÈ S~'G^D zY@Á¸Ïxý0V‡8aûת>š¾ V@Yá°Ë–ý×ík[½Gµ¡•ΡaÿÌ%½ƒ,ìwËÒ,úó¹ù?SâFþ=¯¤”Te+¢«—ÞSMäÜ~æxœº…ì+Aç©SÎ*.H1ÇP8$ËV‚O>•üC}±ä5–Ï%|ë÷Î/”îÊ–éÊ:ÞdͦéÍДÌomÇ@ÞEø“§BΟ ð:ßÙâi¤ôIpiÿ°2f®í@]핊ÊÒ½ÐÐ F¬;Y—ÏviS“×c9’RíÚ ¬i:uª®€Þl>LàÝ–s…D¿O:ô. :<#‡*Ýõâ[ÔÝ­ûnm©ð@ À8]È•w?Ä ¼Ì¥Z§Ñ®3îi o#¹o¼žee?„úw]\ß±°'ž?ªY–É¥Ý$U`½­ÙÒ[ô±±;YSذÄt6Ÿ•¥¾‘éËìPdß{zßSP<îiø¼Ÿó=}.vÞdÏàHxV¹Ú‰peu"/›ï^®ÓÛ—Õ“ ™¨~ÐÍ´ÁåQ^Ðj|tuúåÌ;å1<"}ä>Š¥zŽrE]ï.Ûµí)¶P~Z°Ú¯~â8ÎÀ†”¨9Êu0‡Iö—ÎXË‚¹’/8ŒìšæB쯘(²(€¡æJ{"@‘Ù¿ú%¹=Å{´ù}Ó?ð>'c¨åÆ2¼%É©y„í7B“Ûœƒê³Ýjþ†›Çä±®HeÞ•HæŠßøÃP•g“Äá‡!93S¼Ìn%z“ÜÏÊ->̾UæÞO¸¾šÜ(Ť­öºµúÀE%Pµ|ê2çõHƒÄ8ëû¢á)m‚åQ@òv÷É…u§í°65͙Ӟ„{øÕËÓ?¥Ý0\€@šá}zÉàSíÞÄU‚I]ƒÒ1\`…hÜqþ»Ï?*µ´®‡0p¡j§Ùü:úÙÕ›ÖCt³Ñ ̤ êQåíîžíתK溛fH&¹DŠ‹ÈT|•8s?[=ìòvg½©€¦§Û3í áÔv¿§ ÆÇ¥£ÎÆwGÂŒKœ(ˆâ¾JÝ«ž®·¾Ämv*þ ¢(mqÜü¥í‹é׈€øÞiG‹ÔBÌa¼Ö%Óž¬ EVV”•7Ïnº-–õ”:</²Ì@ÝèjT1O-ÌÐlÇxQ·UüþÔdÔvŒo±£sq*ÔŽQ²©­E'¸”aD­ÀR"nmKA€lä‚é¥\>Ã?hÖÕ"°Ö¥”5Ã7„/iò/ ШÿØVíh‡x¤>@êX×úõ¤èì!cÁV6â9"¸E tÁÁÑ^ŠV|YÖ ü'•þ0Û4Ÿ ˆ¤(%þ~u ZšÃ@ºmfW'Æú;•t•¤þúš¿ãvŒ%ÝvY·ÿå ¡ÏÀ• Ÿ%²0h¿o,iÜ[ýîl´vše×ù¡ÚE@xäBïê©Beýo¿EPQU&í¬´¨úg<‘¯ß“vdBÃÏïi®èšå4dºßnœùh­¡±‰½Œ/Z¦‘ÀùÓwˆ»ÀµÒe3v/Vc&|¤©gl7“ [þvÓEŒiR}GzÒè ÆWŽÛÕÔúu¯º)ÚC+˜IrR ¸./æÊBâCC7V'øÔÓevöétÞו—é¦Nü(X2é³yÏ;åìKª’]³ìöÆxBeþöbá+5ßô NR‰MßaS·‡+›3Q ¨þrP€¨é ¦Ú3Ô–î Õ[Érª‡ß:†RT3ÿÀ£¶NïÙìŒÐ»ã7¯‡à¼ê^fwöZÑTdÇ:rª»¡=L{ôý³D¥šWâ3‚Ìkéóï«]hÖ¥°/xum¶¡˜½Ôš ^a±OÊì×—ÌÙ—óe¸*EqBO·Ji÷é¶; 5÷Úû.ȱÕv3»à»¨×(Ji)ôS Œtýå~íá}C»" âº'Ù¨?ÞY‰ÙË´Ç[8Kú{š£€ŽÄŸ"х˼5Ž©­Òh ©¢ç›ôË(3”Êò=dµÞw6¬BÛ¼Ï2Ljim-oÔ $ç6úS©^4œbK áaྡྷ¨=ìãVÜܱqŹŽÌf!yÙYøκfš…=÷×÷/NН—ÍâµÅ³’>‡Jß°Rw´/ºq–¼Ag5}5Gbïïó+Æä‡wèž | ¢Éí>¶@3WаŠ>}òvæ‘긘ÝÎΛp“ÊöôÉ•Ãñ>ãN¶ñ€Î'6ªµ›B ‚û¾æV|š9&!£‰ÿætþ6J޶ø(ë ±Ã.nM“¶ø»šp÷6¢8˜¤n=Yå|áÃüû~ãºV(6 ŸýÉ2)ç÷ÜLá„ÑvfÛ/,…Rµî\É’͘¸jT9þæí 0dLrgL²)&Ãk¤N(Æ'úÊ\EC]†›vøuÕÊTfS_&„Ãù({› 4‘~l;óogØÿ­Wtö“/Y4oHE#­÷æçám+º§ñ•ºž@%k¦yŨ òr‡ vï™2à;LAǯË䥰ò·°ËK¬3fÕ3»ãбE®i­w‚›üÝ> ,Eh§Ÿ#2¹hQ2nšF ýàêü©3ï·O2º>(XÿôH戩nv$*mx³ÇmÙ«ß¼X¬Ÿ¦Ë×"˜€+%=Ý>­@•w+eâÏà¢vËQ­Íæ%Ý»ø:»t"í¿l¢dhÅ¥UâÝ÷ZjOmÃHûÓVÕnÈ$~/²;³‰P ¾„\'ÝñðEšS™·6vÊN¨ïg{•šA•PWØ–xIç+];טBÑK{ˆ"Ô@›ªZáäÅæéI,âKQ¯ÒžàºqºJ»yV€êÛ—RªVøÙhZsÌ‹í[¤¥ï_Ñ7Š—b÷mÛªÏÃ4E˜8~4R³¨@Õ¶ ö»1fÞ7¼XFç¤ìu,y¨UˆI• ZÂ>(ä È±ó;ÍÑÔíU]a¥;š|ªXrϸ‰=¶î–P;£TtNHKýJ€±E9t‚¢"ó!Ø.‰C ‹`Ç{®…r̶]pUªy÷#¸:R¡TØ7Sü¡B–ÿµ¡Ÿ9 çô´íÃ,À'xwÝÉç»Ñ»«XòyšèDÈ/%n§á¶¾[ÉOï²Â`÷±&­káIž™dÕÄEL˜ƒ¡«+ÆM‚ØScjioV²úv~Æ8KR]|­V”´ô,w½õ4ë^&&À„9–.³fТûð.þöoºhýˆW•Š.’KضÀo²´ÂÚ-‘Y$ý¢ºVk{ÏÏ?«Œ(]eÖ4ÑËìÑéœ?¯“¸ùäF–¹IfÅ9#>‘°IÃñ’‹ƒRV~K0?nìF‹¥/«,mÏì2•Tª–j34kâ™F/™&æ6«æç*iNªäútüsÅ¢aèU•;bÔi •ãµ™‘’jf%½ÉÈíu«~B®o ¯˜\ïSÓ~ÏXï ¢IÉ:”Ïndñêyklô·¿ÓYñ|vUmFA\tÜáÆa¸ TZЬ$Æ’húI›ßœõtÓÎqØ)ôY>ó‚ÎVŒ|úŸ.ÏóNÉ¡üm@EÞYÂ.øþÔâô™ÀÝÐYæØĶWI÷Wé‰|(>bݘ÷>itÖĬ„Ê¢K9180b÷òÅê! Tw «Ýe´VªÓ3Ƚ٦l)îNlç¹2À&A]A_ùòâéXÅ^±ºs£ÃRìØªS9ªH®ÎXB¿ü]9Àˆ $3pË  Æü"2Z¥JªÃþ3Þë¨/5´_\uyv"¢Tn±vwæ‚qŸ=-wýZóս׸ OºBfwI ¼O£KÀn‚oˆÊ‡óø a±à‰Ì³ X-â?û*p¬{½ùä2Í}Oè}BÚŸ ýØ4<¼u2Y 廦ù×íÝ\Û^"ágÐmÜà=z¦uÿkð¾—¥Õh{¢Ï €‰YÚ›Îx†—.-Ð^ß+ÕØÍ¸ÉCƒIƒ­ÌþÉ_óËì—RE›o´æËÝ÷œcö6Ý©ŽÏç²va Ž¥ç³+®ÕGœ~ëô.6‹étNÞ­›Y¯Egб¢2í§ä‘(4Va(ƒJ'MZC)Äœ1+_!NÓÀŸú@L œÏø~ò[!Js«Aé?_ Óì¦ó•îniL5ž¡÷µ´œTuˆï‘àÏôô¦K³†Cy­éÇ? è¢Ñ‘CWÓ[Q쬽d¬‘tÐ>pÇ5L þàøåt*X¹©A}蜭]#.`˜<8j_¹d€ß`giÊ|Ã,4§È»÷òrö&ý„/UèÙå˜Rî‚©®ô…•$ÑS'©Oĸ--{~Ýñ¬,s¡ßóCãêjos¬Ë…‰Éí.`Žâæþ°Â#½QŸò„Xqô©¸1B’cùøPRµ6Kþj3rÊèÌ¢Á?-ñ4±ß—-Þr̨Ò§7µ¦h¾2þé Côü7ví€5áˆÊ‹2EaªÚz‰Åç&lF%@§7(ø¦úÏUDÇàÒ#C™ìÇq¢›-<Õ¡è„Aá–V²rá^Ú5¦ ^{´¡»³rÿcÊàF—‘YP­mòkè>-F(n…Ô†Hý*ÑêøeöÒdE¿²É N’ÙªŸƒŒ–›tq‘\›=xn>˜ø ßF.ì÷×Õ8{§‹mG Ë· ôàÁÞ"ÇV';´'hÓ€`ƒÁÉ3½{@ïHíáÓ¬æËëdÇþN!X¼2éwûB¼W H¹áBÙdìR3K?Û€La-dšJäw+C©!•åý»9¾«Ñßf2Ñï‘D¦ZàÓ½6î=j˜…=#6¥Ü»jdÞ“Õf–‰wC Dmú:‚T‹ÍÚ•Uµ\m&ý"øüd fÚæ¸|ÏœQè]jY ®WPY޽£–ÜNfY™¬Öûå…WLgá¸ÀÞ°O ÐŠùÚ;FÀ}í!¹©Ôiƒöü¥!íq‰œ4i†RÜñåÞ4žŠ½ÌÊÒop {¡ñਂ.Þò»¾š'F`E&©Ê{Z ÍtÝØ’hlOÿyl)ÞžùSaa¹™J«uH}ιAÇmàÐB”ŒclxDõ¾è~6äA§;-’ûŸ½€0áYq :Y­\[1nf¯¤õ²Ö[-)ÖCÏŽïŒVÛ¿ŒÓõW«¸˜é¾LÌòÙgû]g8æU4¢UÖ"¯¾¶8üš|9Ÿ1ðA¡1E÷àó‘:g§8ÿ Íð儉lË»jOc_woð70Ѩ€eº’o&â"ö$Þ½Öº.cÍÅÐÞØ[ÉæÆÜŽqDFÖáCêœö†¨®|Â|ümSÜ¡\{÷ÍÕã·u’¼Tú—Üø›dåKK-!„Âoøåää;”’ÊÔé©n¤ÈÇÁÎk>²;eÌr;Z;Úͦú¦¸ký9s¬ë|‹6º÷suÀèYégN¬!êUµ:•ô&—d6çyyÑúÉSL…¡¡™¡ìOÌr˜Ú’ñÛàOb¦O[ô¡“Û0m¨¹ë°¸0þQÊ[¿“èjI§{Ævoݰ%àLÛí’™ævS-[çq&<OgÉÆ·Ü”©4¥Ýz.£L4º å6²Œ©Ç…ønùD#NïUo4Ï,d9Fl~U¬4ü’JþÑACWÜKBÀŽëgÐz©Ý§oã=ƒ~Ü¿cwëšH½Ã # çlßêµ ‹r:xל}~¤­^…édÞ8‡Ú>mõ­ “añÀ1p­5ÙwýnUðs*½œ,ørŽw_$¢P£\€…%{Ï~&¡}@G\Ï`èÌ׉ÿ¶èÌ|„ìÐ3cðw|{™m“š¶ŒÃtsj‘©d¹Mä¼²ýÏ'å¨aŒø÷r/9lÀk­c«õ=÷À–÷6k§Ö‹R$Ü‚§{¾{WöÓBj»]6seœ%Q&–i±=ÇxáÄç’M`çn_W.áFÏ›qâúÚ§/,£Ÿ56"U‰êñ ¤h‚SûxjÖî¼ø!€ÛE“ïµözZë ÇŠÚBÐ šž’ÁOu×/ƒáVO%«Ú¦­Mæ`"z®…ÜçmŸÈ”èZØ€AÅèÐëo¥”= œÂ¸½ÔU@64Ò¤-8_Zcø‡`[Ž®‚—•gC*¿«Œ›ÔtE R{âtaìßEÍZáø‘NñøQâ¯`÷ß¼ùŸ‚V5çQâ Ú+Mö0 £I:Óì=3pXoêðÞ\@á·Ò=Œ‰ì5Š?ºeÌÕùÑŸf¦¡T·Ã©.4»r¾k.÷ÖŒ¶Öñ«³FŠ1ôwê4°I9¢¢©Ë’þØpµ¬PœÎ»“ŠY_ª¯”Æœö)%›P ãÊÐ{:W¿ˆJ¾Í_÷mžºÉôlyi¾‚þíÁ]p+¤®#v™e„êüý.j7¬$àȱÁ!Ÿr9êÇ÷ýq²{¨€±®·¡’¦å†]Ÿd-¬,ùï¸ÓÆŠÎ¥›Fvè¢@íËo)Ê·Ý-c4­æ)Ħ$Ì[\,Ñ¡84’ÜÍí¥*¸¡—žhVû•§¹ï}õþlß½-6ï-Ÿpãˆd¥ÄL’]ÀI ¤ØvyJ ÍoüçÚÅiìËc›6ï¯L…ùóãÊ´˜œ’HÎrMÈjÐ×:/RQMI–JJs˜Ë mØÞ7Uƒ×¼øÇ!™;péÀ8½Öð¿œÂ Ú|Æ7Ò—ÊÙAÓÚT;¨–¸¬‹¬ )ÖªjþDqñnæäçGép¯Î€ˆÆ¼Ÿ?Zpý~Õ÷< â»høÏf<Êz–ÉâNÏ‚3î·?õ(yïØâóÃ6jCD·‘"Þp[ÈSÉhMê¹³S>¤j¼,}P¶—““üm3?ÊPä´\Çb Ìxõ‚ýµõ¹½²h¬ÇžÀŒ£×ˆC'G vÜC™Œ¾„p)p+Ôâ%§hvl,šw õñ‹ÁŸý³yJ{›güwÂ}‹Yï¢âNK1䆎¨Rj8Ç·ŽÎ…$^Û’`â +QØG&ûZŽ•F¿øIZ+½¿kx%éÏ›ñ^=ã©Ìp XÞ2D ¡& W?Tº@Æ'–.^u‚{çŒbˆ’é¼£ÎõS»¯Ë²Y¼žþ¨<`6ס")½Ú6O£Éèû“ºæÛ[üB·ÓÓ¸?§oªM¾(‰EH™TâvLM Š 3°ÇŠ{\íî|O|W•–³Œ Râ¡)Gœž¦zLÌ’ÌL FÑß ò¾[üP=,·ð§_òÓäâ:}l®hZÖ¼‹ý=,y)íI1q^hÁj ÞM;ºy¤½ š»“Š+ñ_‡s%.¿·¥/¥‰ß:­™ Am2Ã)ü$Ó]øu¹öëÖrܨ®ÏªÕòíA·Rü‰K[ÿ÷N¾¦W±Y½DnøÁ/CBk™”#l=Oµ¯'Ù]x=D>âÎhöPí¾Jă “3‚ÃÁØ\P¯3Ÿ±i¾r]04)qÙ^3ËhûSG®ƒšbay|ÉŒ¥åÁ¢ µñ6£!ªçk¨Çî¸ó}&™ëÞ°eè½È¡@¡ºÍK·¶È ›ZšV¶~*վ߷±êòuñòàdn˜g»ö°£>ÑM¿%K…$Þ ò£lw(ç 2H$*†šM_Z\[Z\ ’gb×ã¯ì€®•Yº1ž¬×7„~ª—,ÿЧŒz93×úcŠEá‡føë#»ÔvçW†o~e—÷_jðx³1D( JéFL€ú9˜œQœÇq'†¢HjjTqøaùP—äô ‚Ù §rÇ…qb j‡ÏnÛQ]ªâ(Ú¤R**È_©ß ïcý“¸9þ´¥*仟~Tǫ̃°l¬‡qÏçúñ³)EðTÓÐð aQ+7yMýWŸe†À‹“, /´Ç øàânD…Húé/©° {=;.{u¾|7£½xŽ2= ™KNN÷.¨ *·Së"ê'±/–ÜŠ(‹Š!)` @€Ï`ŸeE—¼õƒ÷=TzÀœ»ª™BQ?¨Û쪪iµÒý»BšÇ̬x®Š)åïœêLÅ'R>»>2qìžð2c–îÊSóíÕ/.ô&kXì­æÉ”PÎnsmcš FŽªr¼èØ’2ŠF‚izµÿP®äèÃÀà\‡ñ|‡'¶y#ŒÜød´ð^4ƒr[)ª?m¶€‡ §5àƒ5g ¸U·ÚÁö³CžVƒC!¤±¾K4xnéµ#…ÆÁüz®Å´RÈ\IŽ6çõZ+ŽÓ[èþ¡þŒc¬Ã“ûßÁÑŒ^ê{ó0 “±Av€”qp0_´ã{m•D»a*Fá¿ ¼ï˜`'œ5nÔ8îÌ ×·ÆÛEv`e´O-uM™B~ñ¸|5m(ÈñøõÈ ?2ã‹Õ€v‹}¬§÷ÞÎÀÂØI^·:å»Á´3K^ôËì€ùöfÁú*ýž%%×¼îSôsõGÔÏÌÏ“/÷ž†­ÀG@u{Áü'kuÐÝñƒÕÖ…ô:C£Ú>2K«“¶:KÂ+MCîúZvw)Î[.²E+«…Š.îwÀ çhR¬'Tµî6 b]å±Èb´Qg»ÊyoäVPß¼Xƈiнx×ÏæÂ/dWÉÚñöR‚drs2¿Fú’¥ƒÄ%ªÑ¢z É™XaäwÞ°”$muRá(.Ý'Ð|>{i¨wr\¿fÃQ‘s^¤NpâuØN8[‘YDÌÑ©ašÃI@uÊ“ùQÕ­üÙô­r8¡ÂÃ:[Ÿe´ãZëüÿ€bÈÏKsU% '[ õïßV1d¶Î™Cç©z¤¢â«ˆ«DÖЋh½ï;é7Â,OÆFí˜o£…™˜ý‘ù89k¾Q…8ˆ‘©ïëCOƒWXOß45¹ÚÐç¡´Vhþ,3Ó(ÃjfQæþ ’QJø3Kð‰ÇžÀÎÖW{àŒ¬cœÞ9\w…ò¢òTѵvx§Ao–.…Ùš§þ6ø‰”¿£cFeš6¼6XéGxÚŠðÄ qDEþ !a)Ë"‰÷ŽDBŒ·­K¸Iõ Ä)Æ™å$å;·½Â’¢¤—Ô¡CÞ “ýMîœñÔÔw¶õ4†§¯œ¼Y¦ŠÊ j¢Yî1)(ÇÄZÍ/NK ®åÓ¬³¤ >.”þž‚¸l²¹8/~(=2Q²(%|Ïç€ÆOÕ )ÿôÅ*7則A阚ÈGûS59ù—åldðËb=BÈ Rgñ.¢ â@ *nîòB1Óòj-iÑ’ ¥ ƒ¿k=̽NØåHE>Ñ\Öß×_`Š áç¤4‹ÖéZÄ Vpq”å=‘²öëÕm¹¨…f§^A<‘Zk8ÜÞLvŸþÀúÎpÞrlŒoø^ƒ®ôcYžÛñO<\gJŒV·Y³%#1}$HãdýÄ»oºÓÚÚ¦«ú[Ù¸Á:QëÂÈØsžŸßIP|MA&׫9Fêýø+v†€©Æaxýµ6,ÄÈc*z܈û?ïgÊkë Õ„ýʸQ#ËÚûÌ߇횴ªü>2t G+ºqª ÉiŠªÊ¬Á§’²²’ÔáAêȱc)ê„cTïÓFÞŒ¹­Oûêe›÷ãÔµ'·ñRT5e¼mßÕWÂ>¥†Q§%èDP/º˜ç»›,Yk¨PÇ|—â“úd!uE[à2·¨Ée¨ŒZ䕱:~t–•*/é?±zË`;©¬ÂnÿwVijÓœŽ"¹ 7Ly`H­ÔßéX¤Æaœé²¡¼Q«nø–×9½³1z­b2ÓÏÒ8 [F©8|IiªÌ’W†ÚìøÄ0œÕâ;}1íL@uo*}qMú¿…›ÿ—^Öýÿs±øPK ðDŒ<ÂÁü^;htmlsingle/images/next.gifs÷t³0OTcPeøÎ `ܦÀ¬@pçÀ²S>üþïÐÐÐðŸÁÁáéeÿ–,XÐàTd:0840Œ‚Q0¸Áÿß,XNÅ@Ã0õÌP^`àøÇÀÏ!ã±aÁÁfa­˜ íÊ^s<>>tdøo”uçÄÆÅÇë0H°|ظÄs‚¢{ZÎ øSM F›R:Þ«:2H¦ëI/Vhè±}ôú¥²ƒ#ë#å*·|Í’¹”Cæ <[ñ5͹&ú©lµ@|Ħ öGÖ¯KšÜHÊåX `·“¯”I¢ƒ?ÿòLIöGŸ¹$kúÁ¡¦B`~R‹¤ð£êƒÇN5SXÓr:ú‹ŽÍü!’ÎÓÕÿaÿö?]uîg]û·ø˜ºµæ¾µ?><<ÜÎ/oWƒá.Š*¢ˆ©È07jã¾Úî5‘›ÓÎZe80XPK ðDŒ<±`Â~htmlsingle/images/next.pngë ðsçå’âb``àõôp ÒÊ@ÌÏÁ $#3ÛÔ˜|B\Zz{5§hÎ1tšãäµÔ+hmPòÚäì­Ù-{[zŽõL97eé¹¥k¯­Ýzoë±{ÇÎ=?wíýµçÿþþÿ(C.NxÌŒIÞî. ¬²@N¯§‹cHÅ­½rVài }³y›Z[õÿðX¶ÕwoÌ7Rt*’/wd®›_ ©|µÁìÝzŸÅ/Œ>ïÞôbÊQ‡©yß‚6éYzT8Ð[U[ð{©wêl‰Œ;wÛy"m¿¾a~S(Ê’–7Aa¾¤Hx´ì噣åXÅïW­_ÀnôºñâG“g[7ÎXQ¹^çøšý® [å¨]8¾é ÐaÎ%®%Áùi%å‰E© Êšž¹‰é©¾‰é™ÉÙ &zFz ––úú† ÉE™Å%•¹•Å%™Éz©Åz)¥ùy%zÉù¹w)î§6.3=/±¤h^Rr’‘QªEbJª©qR’Iš¥IZ’Aš¹AŠy²A¢Eriýœl .>® µ Ʀ†¦ÚÚBunŸ€2 ž®~.뜚PK ðDŒ< Jv‡ëhtmlsingle/images/next.svgÕRán›0þÝ<…ëIû… $©¶.m#um¥E•ªiª2âW#C íÓï 5Q_`w‡?ß}wçst±ß*T SJǘS†‘Ƚ‘ycYjâûã€p|1Eç„ k‘ ³®´ Ñ—þ-ÐR©]Yu (³ÐÇk´ØÚTèAíR²Ì"¤ ÿv¹zzX ²NÑÏÑYt¾¸[-WO¨¬Â¤Ra®s16ý"ÿx~äÇ{¿OWÝ\·¤‘›* §t0>`Jæâ¯–yhô.ßœò:^bvªKü&Œž%JÇÈŽuk ÞÊJ%Á„Þ)±‹ðI;¿à&Ú @]•1öü¢Â(2ͪaWKÑ|Õû3ÄçÇÌ),‹u"b\Q S‹ÌËgUU„¶Ý4 m\ªMj;PŸ iºrR$71¾]¿ ó¼gÌaÏ.†Ú^p}†æ»¢Á­ÕgQ±®²w§|†DwêY§Þx³¸KÝKœ]T>X.·PœŒUËeqPoØþ°÷ÿì#²Û±ôú0ÈÄ袟ãvm^ÊfyÒ<ë›÷|ËóoØ#Ë<¿öüCŽŽ(ô¼aÉ{ÙÀWÅSHÃSd«Ç!_-*g„ý›tNoÒè:b³`‹G×!UۮϾ"®>¹tmqèri1Õ<"ÀÑ~ÉÀç±Ï$!Ý J"WeüYܺ|¯¸†,ñðžâTÓvÈä¤Ó¡@@UÍKBšÇ|2Úž;EU7ᨃÈQ ÿ‹*lÀÎÒõgÕ1m<§(Áõ"â{:$ô´s`ˆŠk Ôé¾Á¡¢[<Þó¢ Ž"ƒ5PK ðDŒ<Èðéêhtmlsingle/images/note.pngë ðsçå’âb``àõôp Ò Ì$ŽÊ$©)¦$ow†U½ÊF Œ,ž.Ž!·R')N:lÀãZ»¯µÕ›››Ù™›÷¿h ‹c ³£s £ìAíôÉ&¹KOö<~žï}_ï1ÏüÂS“XýùÂë²úŠ­ÒÆ_L|›ŠùYå:Ž«6=‘gIÙs|ŽÇ‚/†ó¥f?Øô¿’Oõ«¯Ååoi'¼¹•¯Zsm«]¦sº®_Áµw]˺gD¶K •ø(3}¿?ÿ6Wâ4±¾$ë ¡g9”Žß «åÛpeqÑ}†°®Š5±·«BÞ…°}7”ø5a×nÓ/LîÆæsÏ{{µê̹åçŸÍL®ty’ß¿§9Û>/ïýÞ-t¤ôïœûë§]ä{b¹Ï¦­d¢Nÿõ’Ë÷ã;5<øŸÊÏ›ú=…çW¶0tœK\#J‚óÓJÊ‹R4”5=sÓS}Ó3“³LôŒô,,-õ ,ô ’‹2‹K*r+‹K2“õR‹õRJ òóJô’ós'îRÜ4N l\fz^bI)Ð<ã¤sódÓTS s³$Kƒ”ãTóD#³d‘Ë“uñt­e02©02Ñ6Ð6(Šæ4E¢§«ŸË:§„&PK ðDŒ<2„ &cÛhtmlsingle/images/note.svgµ“mo›0Ç_·ŸÂõ¤½ÂŽŸ†„V{ÈÚJÙViU¥jšª,ñ›‹’öÓï ‰Ôf¤ÊžƲ}÷»ÿÝ™áÉêÖ¢Úeê²sÊ02ÙÔÍÒlã´tDk?$ŸA§&3ŤrE„^ÍÜWƒÎ­]”U»…BÊ<ôéêV¹+*tasrž!DHãþöã›Ëë‹*ë9ú|x0<}¸<¿¼FeÅþ–Ze.3 ¹&zñ®}ÖK²LgUqA¹’z³iÓÌ|win‘Íøø •ÿJÝ`¨P"ܶkû§‘Ü·Låoú*ÜO°ê°&õ©ÔBíò;äu¥Ñ°#Ŷ÷¦pƒ©Mó§;›Yûl$ܦ•)l S¤¶ÁAw)ÿ¾Dágò wv\Ñ0àþî_à‚6÷Áÿ•1Nª*z½årI—’ºbÞzL0j‰1V:¯0JL:OªÍªNÍòµ[Ř!†”†7ĨÌ'Sã¼0¥)jÓÊž£tãñäÎ7+Æ»ár¸³`øzÓ&w0Ì'Uòh› 0·÷Ò§ÇCªk®ixÆù•¦:á’†–3ª=Îïq¯ 7 ɨ ßã}XЀH íðàÌKzðQÖ§ŠÀØ + ¥! ¡hШÚá§þÐOìç7ìÍ»«¬ö¨rø¯‹¤ÿP0Ú÷¸j@‚úŒ1²9¡r€¯p‡úžTXIm„( )ËÚY?߈®šèán!èý@óùlád;&ÑÑ¢iáò=:ã¯#+í)}Æ®X¢t­÷|Øü¥Ç‡?PK ðDŒüþïÐÐÐðŸÁÁáéeÿ–,XÐàTd:0840Œ‚Q0¸Áÿß,XNÅ@Ã0õÌP^`àøÇÀÏ!ã±aÁÁfa­˜nPæcqظèh·„q ǃùÇûœ»d~òË343x¬Š‰¼¤âÕ/$ø¨8R áø öU8(û5ÿ(óûòc³‚ÝB&ÆŠžì–°3TôìøïXÀXQsãËýM?6UåÜ}dùQb\QËñþTSÈñc½Â¾=ÂŒ&Âävqþ=ÂþCþH=ëGF±ç3ÿ9RÜÀû/¨ØîÇE°âÖÿ<ÿ´;ø ׳€tÝxhßøŸë3ÏÅd ân¹ì–vÎ1º³’·«ùñáááv~0Ã΂16=ByÐÌo‡J„fª§èÔQkPK ðDŒ<ùr§‡­lhtmlsingle/images/prev.pngë ðsçå’âb``àõôp ÒÊ@ÌÏÁ $#3ÛÔ˜|B\Zz{5§hÎ1tšãäµÔ+hmPöÖìâ½Å-{[zŽõL97eé¹¥k¯­=vïØ¹ç箽¿öüýó÷ßßÿ£`ˆƒ=oެf Æ$ow†VY §ÚÓÅ1¤âÖÖ‰ùð8ïf9%¦jôï¾jê£G¶q[L¨Ú$²üCÌÓí<6¥Ó._™ý`ÆFí•nçØ){‹ÏŸ­Ø¸1ñÈ*^n Ëáe5'#×vG^îÙÍ“bûèYô²—«›&ýœîw\úï›táÅ*wxûïüÿÚíl˸õ‹j÷În 3œK\#J‚óÓJÊ‹R4”5=sÓS}Ó3“³LôŒô,,-õ ,ô ’‹2‹K*r+‹K2“õR‹õRJ òóJô’ós'îRÜ4N l\fz^bI)Ð<ƒ4 óÄÄ4ƒ$“T#“¤DC3Ó4£D“¤´D³¤äDSóì 3¦uñt­e06­04Õ6Ð6ªsû”aðtõsYç”ÐPK ðDŒ<òXŸuähtmlsingle/images/prev.svgÕRmo›0þÜüŠ«'í66”Hµ—´Ôm•Uª¦©bįF†@Ú_?ó65QÿÀ,î?¾{îÎçðò°“Ps] •GˆŠ€ç‰ÚŠ<(öýé3t¹œ„çÃ5ϹŽ+¥ø°U¿8¬¥Ü—UÁœP ¾ß_ÃêP(]Áܧx`܆þöióp·‚²NáÇä,<_}ݬ7PVÐo!e«œ/ ›zâý?Zù±ÁïÝU·F×ã-nĶʂ 2S6bRäüy Õ>ßžò:=/Ö{Ù%~áZ-)ŠcdLG»5RïDŵÆÞ)± 褟æ&Ú €®Êy~Q!ȸH³jÜÕ‚7Õ!B(x¾ù˜9e'·íÞmémIB„4B $z“^ R¤Y(J³"éJÁ‚ŠÒ;Ò¤7$$ôƦn¶ß2ï‡]R7aw ï?ç—/\îÎÎÎçxÍÜÙy%{]d}ZÉ—Ié&5\Rrž,þ~Yj^ZX󠨉ú{øüïâïaÆ£“·Î¼zìVÊ]^:Mp«ˆ„m×*¡É•&å.|ª<&¢š¸/t·Ú FŽçœx{Þñ¯5\ˆ¿ºéÈöËñ× 2)„`^ÌŒªoR„CˆçZ’°Ë+Ù—”»ÐÀ>õršŒaD€(/(øªÿxÄÿváÀŽ?œ‰»­ y€Ï‚^»`âG˧|ŒaXO阜[ObX®ëé4¡¥ûâ&þÏŠíúïèÍS+v¯¹XÅ ’>C% ŒaÁ¤VLùÄìÊ?X¾ÇTNñ. ðîbØ?ÇD"€Ü¢¼Beqqy ÃÀÀp©½XæéÒL,Õcéx„°ç,K$ )k{¥g BJPÿ;,ÇbNà¸%ŸåxžG|ý]EH‚¨­#lEY‘Z§.Q•ÕßšHH·òlÑ ü%e§,ùiÅoçöË€€ZR}0´sǽ_øÒ2 ·>C†ctvÉOÐÒãã¿v–ùëÑýWŽÜIŽË(Ê{ZªP—£ „');GG©½«—ŸÜoXäK1݆‰kq¹+_üê1¬^Ž—GÈ^,ñóðܱo·ÖÑ²Š•Y‡\M¸¹ò÷õŠR…½Ô~nÌŒþ½k¬–'yi‡¯¸œpãi‰ãØ®m»-¿@@ àØÍSöo*×i]ìgx«_»ž•]ݳþø•£õw!D„‡£{ÿÐ!QýÃ|‚­Â¢e®&\ßåØƒ'óË ËµªBe†ÕGª´ñ»¶æ¤íöwÇ©_m-(ÈZµ"hÕƒ»Øûñ4%4¾uiН \„Uã}xž×û¹½çã2íïß«ÇÖìÝp5ñ¯U ( À ¨:Ü<<,<Õ®U»­ó6v lWµ±+ÞØ}ð; …õ:5<ÚÇÃwòKãfyÝÍÁÅì»Eå%]ߘh!èõ^-Z_[sÒË¥™ñÏܽðõ-'âÎÔJ`ÀpŒá›…Ûg}=­ 3úÝþùO’€‚NïÜþêš“î®ÆÏŽ[ù毶?¿«ÏE‘´t`û^ï¾2»gxK†ôðõ“«~[såá dÐB@’€á€õ!ª]‹ð;›.Ù¢ÿʵªy›?üîø÷b™9êÅ —û|ýö—fÁ—SòKFáf§±š¤#Ža‚tÅ‘ÀÛÍnP£#O¥UÏÿöã͇·ÇP"I¯âàM'Bq 7Ç­xóâWÇäNî¯)!ˆh Å–Yz”‘—¶tÛâ=¬|céÈþfÖd~ú“¼ ÙA-ÉNO¸ûø—K³ìÂÜ¿[²ûü^V«¡(!Tj2õ…Wg}=1óQ~ΰw ¡èIVrRVJþ¬ë* –cŽ\þõÏ}ó_™]ñæýô‡ëöo¡¨r=´N®ŸÿæÀ‰u…ùG®ŸÌÍO¯ õù¥ê²WW¼‘ô\ðÃtlçnÎTå•üÆòå2ÌF²¼&µà 7»β^YÅ;“ó—!ÄØ6æsÓcÀhÝaØ‚Ñskƒ¯†8Iú¶ë9ºûˆç€ïaö9ERÑÁ‘»?ÜþÓÂ펮ÀèŸÑ_’»®ýtö·z³$< ór¿±WÖ^õÆÒ¯Jš«%8†ÛKì¦ôÿ뢩= ¾ÂÅ4¨cßY£Þ©T¤ 1+årÂúfÍ ûdÒ¢%bÿlW»†D)0©@‚,,Ê+ÇË 7‹‹ò+Ù­zlßWc¢7ðÍã/ãiÖûß~ ¼^ñxN(µŸØwLÿÑ<¼6Ú–™ž–ï$Àñ¢òb3#Éäð6t ÈüÒ}NÒ.ÒŒåÕ Vq¼ÆªFB}ƒ#C¢@Sþ¬QœáØ-û¿é0»w̧¯­?¸õìÝ‹éYÿÀ¼ºÚ;ï<*Š“ÿ$?£.Ë+–96i1Žÿ ¥éÎ2'Z@W⬊é‹ÏHª¤H9ÎõYtHdÿÑLTŸž°ùèëHm‚ŒOK`X†ªžwgy ² ‚2mœ-tD*ÊN8­ÔÄå•üîå<ÙòFÄBѲ‰ ‡?¾¯V•šÖN€HRV^rèü¾Cg£ìœ\훹4 ó îвMtpds7/g;§¿cj#Ûï@<À€ ó‹ Ž­kèÑ3Üïß)έË]Óô¥ªRST<çïá+Šÿüm>ºC[ªx~Ì[ ™É¹Åù>nÞÕ=°fV:ëçxUaù9Wiß§eÇ0 #²K~p³" ­ˆ!ú´íñóÂío~5C¡ÈZbAœ0f¥ƒ>· 377íÖý+ß)ñ ‰ÖiÀШ;µÞ®ž ‘ÏNŽ)‹Ëµ*'©C-ü1ƒ#_‚ÿ˜ðˆg9®ª»ßÌɽQZ®©ä³9¯Ÿ¨ÈÏ[d0\­,:tíDÇA‹ú«!êëF«®(7!厇a”Ö]X~ÚÚv†wxú«cÃûŒ&I4JSyÑÄPB Å¦?’Hx¿}ß71±c»½7ðtÜ…ÆœBž7iÕVA¼ÜÑþ{R=€k¯œFÁßé¸óyY©F’ ˆ0ÿPà8Kz·÷ÊCuZA&j‹c”­&˜Ô³œRF‡ñȾ8†w úvîúï~M„ÉÖ`ðü_ÉqÄW§d^I¸ù <)±‹z±ð×Ú/*BIœ()}z¥¾ŽMøKÌzd0Ö3òÈNbïî読]ÜV¿Ðâs×Oì»RMaxØ üŸÅÖ!E*ž× I¼‘z&—· ÍÊè1á-Ú+íH*»0—a ¢Â:eë‰4e SÇù¸{ן6ýJÏðn$-1…k8Îëu»Îíy¾ãHRAXŠ?^û,ÌAA )¡m}]³³¾JÔ" ]<&ðÖ†sœŠáË…”[E…Gz€¿1{¦ÑiJÕÊʵˆ")ó$AææÄ§'Ößà­”»ÛmR`Òé:Ík½GÓ/Ô)UàãæÝ¶ExÕBžÃ—ýX!@jî“üÂüzL(^ƒÆ«sÛ(BÑ­×_?YõY3‡1R:Äz/Cˆ¹JÙ:¯7»0÷ÀåÃ\-U—=÷e†c—ýòÕãŒD ž%rXÆÇÍ‹4Ë•TQ‰bôg“î<¾_Wƒ²S'¯š^V^b£·wõÝ}¼hB „cºŽ«D†M[7oýÁ­J²öû–ÙwùHÿFeæ§AYÿVØfà­AkKù1†ó<÷åÞƒ#_ªØH‹ã´§ãkI¹ ØÆ?M+#îñý˜¥2Ò€¶ îЧm÷®¡:‡DVlÒ©T{zí·Ïm9ºãÔ“•\RÐ-,ºn#Hzßoþ°ÅãçO~i¼c•ªtŽçö]>²h{ìã¬G@KÁ¸Ïà{}Ф`ï@xeRßW×Úš“ûÄ”Ì$)^=wýœŸÎþ:8r@¨O‡“»‹sæÓ¬¤ì”c×Ož¹uª¿Š þH’ÂC€Ãʵª’òÒæn^9©Ö«@úVüÕïOÿ:sÈÔÊ@XÖ/Gô“J—ˆcÖš–åÊŸm’@$a‡Y–ÓC-û嫌ÇÀÎ ÝMºu7þêZ©ƒ£ÄNî"ó vØ#ž Ë+.¸•—Wœ´êjÛ™ Ú¿°ûÖ«$ÅÊâw¿™¿zÿ7ƒ"Ã|ƒE´(13ùæ£Û é À²&ð€VÓ2°Ýü—gÁ‹)®.ŸŒ{Ú—Ó+ £òöÛ·ã¯H*¤„BJ ÑkY­xÌÖxWg׫ᯅÜ÷Þ“xcGêò"e‰¿‡Ï%Þ:_þöÕ1N2GÓ7vžŽã’r?¶Æ~" £# lÑ7@À )¹…ù¶£*ˆcB/Ç×0ŒD–"फÎÍrJ“'Šx{‘¥ÌŽaK^[ÑhÊc¡zÝGN }dx—?¾<úÎÐ7êG^wà¼ÑsÀ ¶JˆcA­léú{ìÏãzŽ4‹¡j¥ 8nùaVJ&}Àó –Êjl–¨Àâ±úwgVUåÍk£VB‹ü`óŠwV¹;»ƒZ  Œ+¡âe@U&IgzGJ‹7‘*އùÕ‰¿ÐæAmý[ƒ±†€¢.?¼áîè&qrÛ’}u;åÞ¥ת>s‘õ±·E¼…¢Çr}Ë•àÌ7øÆÝKuퟫWÿ|yéá'{µéVÅ&’r‡‘¥ê¿,ó" †+aØÀH£ñ ý%BëöãH„âq=Gë9ªHYœ˜õèZâ­GÙ©ù%…Ê£n¦ÒYæØ¢™DË6ƒ#}ܽ)‹¬±…郧 ë<èØ?Žß:]PT çX‰@èéêÕ5$jhçÍ]½êiÁÓYþõÌ•kölPtRàí3ü,>Ã4@î»qÆ—›nQ1©~ï•9ÍÝ*¿ë­“²Ùçnÿ â²`ôœç6(wòØ0cŦCߪõ©HúÞ˳<ê®óó—ûÆŽŸ?ÿåY%ê²ôüL£Ç#pÜ_î+I$ö0yõ;œFiª%e˜ˆ–mküºšçe)r:Íí—›Ÿtš/¦/×êµËv.Ú¦b ½¶S›îgW¨z¢™-ŠK«e²ñ燆<¯7:|¯ ”Çz:NhWšåXcM%I$a©É›¼úíŽî0ª¢×†¶ßr¹zÐÃë ‘ÐjzY£×Ösî›ÍŸ5Ââ¹'»5bg*$!óQÔì>*M¹Iy©ËÖ¾ûõÜÓª2¸5‰ioWÏÑCL&ñ§ãÎ÷ ï‘t4I¥d”¨J«y-¤³½8²tBˆ1‚+xºÊú7V(G$-Ò¡åà³ÌéÄm4d¾ëù,M ­_;S!î\¦*U˜ÀÇì]½ûGô®‘>0“™3ÃÁÅ8„¢ 7qœèÞM³A(ÊŠj_ …á˜À2&{æ 䣤+4É‹ Ë_wøâÊÓ·ÃK½ƒ¼kVý˜Á_‹f~‹Ç¿Œ0\Sª¸rwBïÑÕ/VðwȬ‚ ü œ¶¼¨„G‘ ¹ÜaLÓ¼þ÷…áØ…;–.úö )SFñ„HòÁËï`µ¸_ó‰áYÃÞì5´*Ò?œÙýRûž^Þ-+KB,žs³w©½QJ@:c`y]>Bˆmîü†€tnšÝÿ²¨´êÃ×Oô[0|åO+Lt Q´ê±½G×8ɳ>ü HÁÆ™+år_`ÙøÔ{÷Ó掘^o´p-胛·ª½£Üò2Ž×¸ÈúÉ^nšàÿ¬”ªÊíø´Û»†<æÂís U‚Ï kîôÅdóç+×YÒ¼Õö÷6I¥ .ßrüûI}Çøú‡YA„ SP‡Ú„*Ë—#°ˆS䑞¦¼[z|dó)X+565Ý^ %ªÒaK',ß±änÒ- ˆj‡R² Ž«ßúÜÛÕÓ:üÀ Ž}øp»ØE~òâÁ”Ü'Ÿ¾¶x,qž“9{¼Òm¸E­Kåyö¼ÓWyÄâ8(_BSžÿ‘±–ФUGà?¸Wퟗ?ï]¾tã$HíW+ác'ÖÏ^ór×:/zFFþyÑw¤@8kÓ }F÷Œêz‹ÁÐkc¢×y@¥{È!]ý&!!&Àm³´Çg¬‡Fõ‚µÔe`ÐŽìׄ?–c+·V™&u¹„–l·±þ¦Eçß¹ùÇÔU3>›Û§]÷ði]´šrx.¥dÐ9:¹ßÜp¶…ܯV|T—>NcHÃë®DˆEÀ¸Í÷vžò_î½—üva¿A§éÚiÞÈ/\%s£K–"§÷Âá©I·A$À1@R]Ûöø|òâîaëÿ¬¥÷/ÜOKøä§åkÞZvôÆ©9kgƒH\ŸöB ºu³×ÎaæJ…¼Ò=I¹‹ê9!¸Ï÷všÜ¤]^y˜‘´b÷êøŒGB°­ذNûµïeÉ%Ç©¤¢–±âŽþS“s'g¥«•4%ðoæìÕRBÛx‚Ó£ìÔø'´ŒÁÝÁ¹M@w[ŽUÕô ™‚¼[V$»4zmRVŠŸGskOWy’—®Ök[û@bV2Ã2ÁÞ”õw€1“”™’ù4›¦>>-šùÙÊ ÄÌG XŽ õ õ ª³¨ Ù$wRï7½hàTí¯ÙjjDFA¶ÙO”¿z>!ìBbx¿s -Ï'„$æ~¨còPcKaYÑÔ5³ðN Р#@'xùó)ÇYÛ”ž1,ܹL:Lnl¢ ÅÄð_.쳡W[}‘°jïÆŠ'?žÙ ‘°vÿfk›j3³;1ØõjÂÍáKÆC/t#/Ü¿bm#·Rîõù`(ô  @ÐCÜ'}õ¶¢¬ÐÚvr sG.›½D  ÐCóéÄüâ³/Ûxë_»€Öß}°iÌg“•ÊâÊ &:MDx—çomîf†.),ÿ39 B| &!–CZ©0ÄÏõmW»‡’ݵrÇî!í}ÃN,MÍK¿Ÿøánõîªå¿­]±õc°sˆúš·›ç¤;7n™ðùT±ýÀ}¬j*»0pÈRäT<)./tÖç™Xžãtš‘K'äg&·ŠnèÕÂZã0jɸŒ”‡Ám;z¶à)þê¿~óÖÀ×\B¬H;1,óúÚ9'Oïñ Þy0øã7O8ò£Ö ;»ËŒJnˆ^9zó”}Œ7ôÃ'è-îøN¯"e‰y ¤.Ó(Âñïsrƒ¼[Ÿý²jý¡­§ãÎ+ÊŠ\ìœlàM.?¼^ž: Û°É}ÇŸˆ„ôÊ©±.^-î>‰¯ªÉþqAÀñŸLXðÞÈ·íDR«Ý>–9vó”ÔÃ+vüüŠýbAÞ-tècí§ã΃VÓu¨“ÌQQV¤(+r”9 é<xîüý+µßoè­»ƒ#û_~`òªé)îüzvOLçÁ‚:TãYErÞ–+#pB,‡t.’ÑanöCÜí†Zu˜©Í²rj¬Z«:~ýäÜO§ƒƒXîêÙ¾eÛÅtjaU;%ªRP±íZW}è,s õ ¾M¥Óü[èã‘xJ¿±¶}üiYa©ZéfïR©¶%’_üH|Ç©ŸwÛc<2Çp¥V<¤å§7>þ :¸ã‰Ï÷½¹nöŸ—Ž Z4òçvŒ¨ô„ÊSJí·@´ÀÓIÚÃIÒÙIÒ³i#ºmâé"?»ëFÒí¿Râî¦Þ?yûܱs{®&þuiõ‰Pkîu¡HP¬ªyŽB¡²!·r¯¾qÛQãœ3Ž0Ljë‚R€cËs ËRdƒ A ¾¹«——K³g‡‘"’ ±®]@øß‚?ûýô·v.[·kù ùÃ/m<ÛõÙ6Gi—PÏu€áaK‘À—Äeÿ–’ˆ Šˆ Š0š›±+ÞØ·÷Ç;©÷¬Â_°w áêtö¯3y%òg÷(¸u6ññOwïr_«ú#I€‡ª ÙÀ˜Ô´ â,s û%§%^N¸Þ+¼kCúî €züºðÛª‡–p¼ùõÙh·Þ‹…¢µÓ¿èÚº³¢0ÏûÙõÉ øŠ¾ð¯Ê·Ïíüãçûv í$¡Å—^¿zh°–ÿëØ®O‡^§Ní‹ùôµÅcßoí|ìæ©¥?­à•Ê÷f¼-Xç*u Z¸çâˆmä~8Ž?ÌH ðz|pcÀkﮜùÖº9ŸOù¸KH”F¯Ýyê焌Gß¼³Êx׫…òJ·á+~[¿÷]8ŽÏ1ÝßÃ’‰eu5úéß…ö}$Ø@g|  ô‘B4ô[4RQj5¹•’ó$lZè‚A?;l 3ôA7bâW3µzõT¢~êºÙЀÞbèïý ¿#t§VíÙhmS¡oEC_ÙÓR…ÍC¤ÑkǯœúJñ.0Ðz  ~;õžµM¹þ‡Ã°fЃ—ð.xoñø/§Õõ2±dÉ’ÿ÷IžÎÁ‘-‚Y©€öppiߪýÇ“/™°Ð¡ê%¶–‰“ÌqLg¹Ú uI;†E/{cÙ‚WfٰLJÀ‰}|Zñ!ŠäNr'w¹½sŸ}Ûø[wÀð½'eÙľc”^5EC¢^ò÷ Rêµ´DnïÒ¥m÷¯çmˆj[yƒA WÀð®ÃDR;=˸;8{عtëÔ³³nKþ­Iš¤ÑLÓ4É¿(ÿ7€•.cK\òIEND®B`‚ PK ðDŒ<ÈÓ| Vhtmlsingle/images/tip.gifs÷t³°L”d`øÂËŠŠŠ–––QQQÉÉÉÙÙÙÅÅÅÕÕÕ===S¦LYºtéÖ­[÷îÝ{ìØ±sçÎÝ»wïùóçß¿ÿÿÿ?PPüÉÂÈÀ  â€ìd`ý§à(B ,eQ£ˆ¨e÷&îM6B0Á)W4N3»©¸ö-²*Õä6ñ½lâ+láÛ¿),èé¥ !]g²I—|€Üà-. Á%& ÿê\²U›A*/2Ò½Èâd_¸ÒnËíÈo 1ÜbËä%."[À†«ròy<ãìÚ ‘ul1/‹h†lñ+ÓdN…0\¹Xݼ!ÊBÀÊ|ƒ—\TºrúeOV¸: ;ÀÒ `ê„—ˆ|yಊèÅF°2]~WÇÓ`Ù GIOXü. NÙbS¶àr€ˆGà!û’¢HÙA`mÕ;ÝñØ{'Áa$²Øät°™þŸ AØýì*?ÁŰˆqôÚä(bÛµÉh8Lе‘Æ©O.®"ƒ5PK ðDŒ˜L´Ej4tß½é\âQœŸVRžX”Êà ¡¬é™›˜žê›˜ž™œ­`¢g¤g¡`i©o`¡o`¨\”Y\Ré[Y\’™¬—Z¬—RZŸW¢—œŸ;q—âPP‚ËLÏK,)š—šj™bannli–œjdfž˜šd`hn™blšfa˜d”˜,düK¨‹¤+h-ƒ‘i…‘‰¶¶Á¾œëAqãéêç²Î)¡ PK ðDŒ<â6ªÓ¢ htmlsingle/images/tip.svgÍUmOÛ0þ ¿ÂiŸl×NœÔé h/CÒš&Ô¥^’( iá×ïl'°ðQ¥Îå¹»çžK|òhu™¢F—U’gc,ÇHgq>K²ù'UN• "*ðþÞöh‡Rt 3]Në¼ ÷³ü·F‡izUÕBãý8=@“U‘—5:N¯æô0CˆR“þéûÇ“³ã ªš9ú¹½5Ú™|;9<9CUÍþ“¤é Ë3=¶üBv¹ýµt™ÌêÅFRñÞZºhÓw?Û_Ç`Ù6B=JË«ÔÜè2ÆiR¬#†5ÂVCÀBáGv™ÔºL¸ îéòhë!Qòe¢Ö_Ìÿo”ý¼d{c©Š£…N拺{j½ü¯Æ˜#ޤ‚ #Ø&ƒª˜ÆzŒ‹RWºl´³jŒu] z½årÉ–>ËËyÏ}=(cåÌQ2ã¯Ók]ž¯8÷ø¹AÛu \ïà‹XÑfÖ­Q1­â"¡Xs¢Hh$“wK¬·í|Ôœ*ƒÐ[ÄÁ­E:§Í¹AGÂcª-‰¯€›Y¬Ûg[È îl9¸¨£²Ë îmôç)&ˆßgQJû,$œ©˜r!¨€–À†;È`Äù"b|ÂHf2…DÊ­?¢&|ÔÅ@ÛŽPPç4d écj$SoH`áÓjªª¨žQ݇4)˜ß@(|gW¹ a÷-f,Úz€*l ÷‚úÌ_'½Ûìbˆm ?0ŠëÛmÒÀ4;6‘ÝB¡ÙBž©…+g¹˜ØúÁ&. ®Çêm½ÈÈ~aŠ^{˜îw ÛÇ{£õ˜6ÉúoVÛ³Æîõµ==”Õ‹Ç‘wäó tï§ ’¸L;šÄ7â¹éÞ‘Œzæ¤jWw¶Åe^´GÛå´¼¨þ=Þd{¼mTöÛÊR©¾ðS¾ª‘Ê µä#s€îmÿPK ðDŒ<ì«L¤htmlsingle/images/tip.tifóôÔb`bd`h°`¡<—­É)1@ÝZÒkJБ$žç{ô„¾Ç¹ó¾âŽ©Æ”t×…Ù¾tÎè¶½Ô}cMç¿çAkƒ–¾ÑJxÞêõPç©Î6¶ï¶¾ÅZÓ¼y‚.*ôÏpØêÕx^ËX#ºª—{j Ö‡%‰o¾‡´ê¦s~pb`z³ÁÜ*(Þ¶u)»Ù옾ûóg¼›°;wß«ÿÕ÷Ö†Ÿ.¹·±iÿöµç‹É}ç :ÿ5§ŒO¸í@JZEGзlæÕqšMÂw×UVtš}&gŠ äÚ&Ý éÁÖñJí׿«,;ÙKYãB¥s¦XñÇäŸrÖÿ˜¼€†Ó¼ ÿXÀ,0`d³%AL([ˆ™ l f†²Y˜ ÊaAF¸Q$q1¨8Èq(û%K1²‚ÙŸ€XÊþĶHzAPK ðDŒ<#â>htmlsingle/images/toc-blank.pngë ðsçå’âb``àõôp Òü@ÌÉ $åf§)ƒŸW ÝÆ `ªÌ:pà@CCàÀ†ÿ`ê?˜þÂjž@Æ$ow†VY GÎÓÅ1¤âVòÿûÿÛ Ô$üàgT`ÈPXÀv†aʧKrU:—¸F”ç§•”'¥28h(kzæ&¦§ú&¦g&g+˜èéY(XZêXè*$e—T:äV—d&ë¥륔äç•è%ççNÜ¥¸hœظÌô¼Ä’R yiæ©Æ)‰I)&©i–ææ†&I¦f&Æi))ÆÉiIIms.¤+h-ƒ¡i…¥¶¶yÙq ž®~.뜚PK ðDŒ<½€ËÄôhtmlsingle/images/toc-minus.pngë ðsçå’âb``àõôp Òü@ÌÉ$N<ÑìRLIÞî. «z•€<9OÇŠ[Éÿ0,ý/|>QAžÇóz–=C­nÁº¨Ï»\*K\#J‚óÓJÊ‹R4”5=sÓS}Ó3“³LôŒô,,-õ ,ô ’‹2‹K*r+‹K2“õR‹õRJ òóJô’ós'îRÜ4N l\fz^bI)мÔä4CãÔ4sS#“4Kƒd“‹dóC£D£Ô»ÿf|Ò´–ÁдÂRÛ@ÛÀ¼ìÈ8OW?—uN MPK ðDŒüþïÐÐÐðŸÁÁáéeÿ–,XÐàTd:0840Œ‚Q0¸Áÿß,XNÅ@Ã0õÌP^`àøÇÀÏ!ã±aÁÁfa­˜nP–cqظèh·„q ǃùÇûœ»d~òË7tª¯ÒÉzjßÉñq« Çå3Í?ÒÄX|\æXcÅÉôá„Àû¶M|,6f8×x±2}Ø!Ðp žû£«-ÃäÐöÛ˜>¬`8XÏõ±ókÄ7Å}[ÿ 1üÐW´ÛQ¤øè°µàCû–?.õtøohýÏ÷ÈxOˆ’ݱÉÆüF 3~H0üX¯`wÖü£$ÃGyÇšÅá]*üŸ|kÖ%>êÖ”Ûñ#ÏùÈv1y»šnçÇÎ8ò&¢ŽCѾµ1¦¯î￸hl ÖPK ðDŒ<Àø~.ŠWhtmlsingle/images/up.pngë ðsçå’âb``àõôp ÒÊ@ÌÏÁ $#3ÛÔ˜|B\Zz{5§hÎ1tšã”¼69{kvËÞ–žc=SÎMÙzoë±{ÇÎ=?wíýµçÿþþÿ(ÃlÚ=³˜%“¼Ý]:Xe=€œ4OÇŠ[S'xóPà`Í}ÍÎêø®þæµ¹žÚKò¶tˆ °¨®ìkýpƒÍÏ Ù‰g£'< H}ùÈ`Ž‘Z‰ ƒÖòókºÍƒsûe–\‘SóÊÜÍçÎ:kÏéÓ÷mÏ×Ë´y'öVß{–¾Ea™Ø±  é\âQœŸVRžX”Êà ¡¬é™›˜žê›˜ž™œ­`¢g¤g¡`i©o`¡o`¨\”Y\Ré[Y\’™¬—Z¬—RZŸW¢—œŸ;q—â qZ`ã2ÓóKJæ™›[YX¤Z&'§&š¥%Z$¦¤›'dóljbàé ZË`lZahªm m Tçö $åéêç²Î)¡ PK ðDŒ<Ž×1†ãhtmlsingle/images/up.svgÕRmo›0þÜüŠ«'íLC¤ÚKÚEJ»J‹"UÓTeįF†@Ú_?C`Z¢þYÜïí¹;Ñõa'¡æº*Åϵy#Q*;ü‰MÑõl]Ú6ÜòœëM¥t¶ê'‡…”û²êL0ÁÄ‚oë[˜ ¥+xûÔ^ä¶Ý¦þúiõø0‡²Náûè"ºœß¯«G(+è—2ÌUΧM=óãÍNâh÷î¦;Cè©j7b[eáûB›9ÿ­DjµÏ·ç¸î×Ö{Ù~åZM)ŠSËPŽtg€Þ‰Šk)ŒÙ9°èlœæ%Ú€®Ë± ¨d\¤Y5hµàÍGuˆ,0³§°,6 Q¡yÉuÍ;c^Æ(«ª"tœ¦ipãa¥SÇ5ý9¦L×N b£åæ…ë§!.yòéíE¬÷fø®iÖò‹¨ØTÙ?^:E`²ïÅÔr}|•ìYÄ2ÜînØ5Ò_º 3+À,iµžÆ†˜M-²¼Âã6™¶^£cÚKfõ2£¤¦^‹nõ¨†ü>—ÆeŒK·àn/ýµ6=ð+rÞœÃû?爜v-=?.2Ѫè÷¸Ûèçò­]ž O†á‹_Èšd,¨Yp¬ÑGíß2ýPK ðDŒ<¥qÜçhtmlsingle/images/warning.gifu‘?haÆŸJ8.ºª%ê’£øç$ÛÐT‡T‚’#ÍjÄÁRCjSÓ-±F¡­¥§´z[ûDnª7ˆØ¡G‚FÚ":d°JÍ—D(^“ßô=¿ïy_ž÷{ÏGÎõ¯ºáÆNŒÃ. À>à, q Œ·È €¨€f܃AÅçSy^ŽÇåDBEY‰ èÀ'@w¹t·» Ô ÉóUžß,Û¶9ŽärD’IRe™¢¢)Šªªº®W«ÕZ­Öh4šÍ¦¦iøÿá~;:€¼-Ñš Ìnèi9¹ò%}j!zt®4ê?hª€ Gæg~Œ¼îéú0݆«ý/+õÌ@>[¨8ß,Qøbí…±B¥î6L8s-ZhÃÌ5e@æ5†L8äY4ßBü“r×Ö¼iYÚïØK ž˜¸ï£u“¬ãÞºQþ,Vè,Y‘M8a&ïþ4[ÏEºßYð6{'W·!u:ÎäÃLÇ QZž½By]µà®A/Y4æüN©3µYì±Ó¯…nÒ!F7‹^ ›îδ¡í$ÌI.HcûÇ’-çT膋ÂC¯RÞuÚÓ9˜=nÂð×é^Ï>ÚlìÛ/3vX(§‡'v¬f4Yh}¶Âü‘mø¾2µ¼hm@ ÙÎN¾ÏÞÕÆ°çBé¢ÿQ”Ì&ÿm5«~¦âáõ$Óº\váô_PK ðDŒ $@1PÐŒÀx/àz?m^o ª*ÐÐðzI€T*ɲ2Òç#ý~’$ƒ@P" úý@ TOP$IQÔ0 NPT±Ù!' …0›æpÂAˆÐ1‰Ñh4Äùüx<žLf"‘HÉdrØÞÅ.þZò¿ÒW=¦òR5ºR¸ZºXÒ©‹ªÛ>:nu¸:ÅìPÂ_±°øfy˜!g¹žóâvŽ#-¶í þ¸¦ï¿°ý¨@5ŸçÍë¾WÞ‡µ™ºi_íXK«ZœíZ+ü–x윩5Üœ|6Îø=shsËhèå-¹ÃªýŠ;%™laؽ/g¤£èA Q05úeÝû§oÊš:H¼úr™÷Û°‘ñóàEêý`ÉBwÝ–¾Ák–«éã,ÉcÚs8_?òöeưÂnk ¦,Ãf}‡pýSÍÆÊçàJL;Wà\æŽfóü«–^§ûÆÝû§ÇÈõë­rgÌÞ˜?ÿ\%Nqò'Œ+ôÎ%„¦ž8ïj"®ÝV?&Ð9ŒÍÖ c³ÍlÏ’‰¤"E–R™+VäŠ%Yf·ÍC´:Ú=„Í,²zD–Ö—“™]޾qþSZîÄŽœ­Ùi$Zi=³LjʳH-òS2£Ñ$W(J‰2O™'>Ù$–šdò³‡bý4‹õ¥§ÇB*k“Ê„b¡ØÝx€þI€NS©~R|©ó/PK ðDŒ<"uIÚ }htmlsingle/images/warning.svgµR]o›0}^~…ëJ{ŠùJ€„TûHÛHÙViQ¤jšª,xàÕÁÈHûëg²%h›ú2 Œ}|ï9÷ú0½:ì8¨©,™ÈchcÍ·"ayCV ~ˆlx5L/74§rS 7‰øFÁ‚ó}Y„˜ Áçõ ˜ !+pÇ÷)Zä ¤Óßz·º¿›ƒ²NÁ—Á«éÅüãj±ºeEüÎ8.‰E(itymF·E Kª,ãÐvÃ#ÆYN–GRìódgg¼vË‹äžÓ(ù3•b²å¬8GZí3±^)hÇ**9SŸÈë«8]õŠŽÓͺçöºì{§ÅÒšæ"INŠ="ÿð_ÖîË:üª,ÓNsí1ô‚¢‚ £,ͪã®f´y+1$€/PꇊÊb³¥1,$-©¬©ó2†YU‘e5Mƒ ™ZŽªÀR2¦“°$†ËÍ•BòàAÕÖW\¯•›¦_ökÍP`±©²\Ý.P\ìö†žƒÝ¥ÇCׯ£µ†–WPfûØá6Q‡zªõv©ÃLÒ­{†Ö%Üÿ%aHm>Æcnz¥&îã©w©àÑPp½Uá_ò]‚}Þ…dxÐ/¢cP—?µRmC;·fl¥(:/vùXžúáw~ôîÅéîÅ †^pKÖ$ó‚Ú Z C>ÕŽÏ?PK ðDŒ<æ—UòÆhtmlsingle/images/warning.tifóôÔb`g`hàW0|p"‘½Å‰]À#…'HŸí‘¡ÁKî¶Gw<³•ïïRú8ñÀmÙ ^îJ {’849½Tƒ&:¤ÅØz>u¼P±+T§‡+yÒB &ΙIzÕìø&¿üÑ’ =³ÏÙAC"ÙXº…ñÕ‰l ,Á‹¯IíMIbehzmvZåL;Cóº2­£)Œ\qoJ'žÐ`‘:Ÿ–dZ²¦ç`Ckƒ‚ÑQ/çP©/g¢$d8X… ^ð0±Kžj}h8á³óâ¹Í®Q ömc±àãü0iâ²8 +Á¼íÉ+œò™ïäh+ý]“ž¿Hºç—­áŒíµçùZíž—ï¸í¨ ÀÀÁ À Á È É`ÈàÄàÅÄÅÍPÌPÍÐÂÐÃ0ç€áR$¸ ·"Á½`x ÏAá50¼„ÏÁð=~Âÿ£p@B œ"ª,K`êh¦‡¥@¶!f¦™pÊØ d¯“ ´t Jk‚U\’÷€Xÿ ÀÔöH~âö÷(„ÀÑøÑÐŒ@ £ùþ1°€Y`ÀÈ fK€˜Hl&(›ˆ™¡lV fƒ²™X‘®F*ÂbPq9âP6ˆbd…¨ÖÊÒP¶m‹¤×ÈÎu PK ìDŒ<¹Õ#^]o’&htmlsingle/images/xdev-spring_logo.jpgìºTT[û0~†fèFrèn†鎡[%†n†%¤ééî”’’FR@@: T þˆ^¯÷_¬õÿÞo}kÝ=뜳ŸŽ=³÷³çì‹k¾ª¢Š"BÊ—àbýTÁ×Þ44v0t!€|Ù]~€zÕK対ˆõ'Òåïû ¼¼<@üW}âË+.Â@ùÉ_tyM\^Ê?á«§Œµ«%³sE¸zÚ¹ºAät!†ö.Ö®>ž?/¯¯ˆ/ryãã¾7ä|лô‡~$ì|ä_¶T€ „üÓG´ßãÑüˆù÷8.sòSˆé—n´ŽŸúþâûÅ¿Êå!€}ÓM9 éâÀ½‚ë +‰%à€‰‰‰M€Æ" ÁÃÆÆ#!'""!""'À¾j?ÿºp°°ppqðqqñ‰qqq‰¿ßp‰ˆüO\ô) ¢@È ‹•ËPÁ} ë—^¢‚®ÚÏ‘/ƒCAECÇÀcþ‘x™3ä?ˆø„Œ„‚„ŠŽ†ŠŒ-pI$@F¡#äC•Ѷ ¢wæG#N*¨“e`$Ñéµô™”CgJÖ=Y?µò„’Ö‡2Ëß׳Vxò!D6¥¿Ópïé´×«·Š,)Ea©}3›ï5õÏn½7°ñO+n˜Û>V2´õ‰H/iœý@BºôåÊ't4Tè• t|„(—¸Ó¡ò'÷ WgòD€ÑrÝ#$YN—ÄÊSð” í»èÌÐ'S—N<$³VÐBÀ7~¹ðï=`ùÓ…‹EùÊ&pHªï Ý -YÜP· ¬¯y1Mˆ`Ð¥õL ô1y®¬÷:d©ËüÅçàÍÜ칚»Çcý=šc+~I ¶ŽCý•»û?éÇús6æ\ŸWô~Í›¦o[’p?*úõƒ×>uï'.€ÆÀ‚¼<èõ’¯ücñH–âï8ìk›ªÜýÁk,ÆÇ®ŸFß8•Ï/˜ ñkTq×—¸ÞrŸŸzoQéÕôínÉc˱úKºú3/k›÷¥»{m+ _|q® pxwg¡bÔñºŠÍg¶†@ïççP¬œIéò,÷ çdµCAaÖ€•]¡pþÑôóI‡ {þyé;‰"L¦1d…eaUK•¯Ú£\ÇCBim¡ËŒä¯G°f&´µ: ¥­xJML¼yªoëB#\þº;[ çåƒÇJïnäzùÓ®ÃÄÂ>‰;”Ð,…‚›É{QR}Ø´zs}|A·naÏ´ëý˜©wNÕ„g:„éxÝÀ‡òGîð OUâÙ{¯EÏå6HoèWÁ?m—ï¾s§Ùž´}ñùÚ^Sìç{¾%Oã„/¯öFûÒT'¥Â¯óL&¾4Ï8|—«2<\j¶ßÜújfî:ÚÞˆùŽ&eÞ¶µñyWlͧl]ÛáMF|«‚êŽ ºÜþ±¡O{Û‰6™kA ü¦cIúlŒi”U•ð‚‚Óûšò `ÂÂ_”Öö³¾÷õ™÷å_qîD‡‰Íéá L-ž –Ì´ÜÝMØm¿aÞ;«‰ðí¼—¼Ù¨8‹ÜJ¤O‹H(Ϭç|ê7ñ-­æ<ÛôÐy?É#¾Û%;, 5õ\ ®…WÜnvS0WRiÉâåcæš»%»“;wv¦oÜl€ˆgPM‰‡–ê¾™tÏ=}ð©,Áe4Y…ÉÂ#Y…1¥è²wýbõõ»¥³µ‘Ù¥7K{•E7åÞ8Ù3ŸQ¼ËwxÙä/5éýõ[út»3í£·Nwn~®Ù«Ä«~°`QDÛæŸ·áíüžåíë/<ï»vRï ‡‡ŸSs@^îiíäj•œk5âä=ØýPC£ÂÓÄSn­=½{2ißÄåƒP‘];×˳Çuó¦Ró ‡RéK×5¾òL^f;õ¦õò 6•ñUj¬óÃûæ àå|jQnöÝ© o[&Pèå·†‰w>wâ…œV¾$Œ®Æù>vëOxÎ2uúe÷›Î›™ÝOš{¶,gƒûq´ëõ o%oâìew¸n“Jô9}9ºÛ[ïÂyS_êÁùãÅÌŽé÷w{]–kêXùfY“èbJ)|¶Ðr÷[ê ·äôò†;Û ŠÏ¥ )»º«}ºóàë'Ÿ À:Ñßܹ­Ú°Ó9ØÞPwp'úÓ#&¶/ïZöJ¿¼TÚ+J.ãB=žUáIÕQÑúù¸X¸8ÄîüsÑàæDdU4PP®&utªï áåç Çt…ÃWÄ~ÅÜj°X›*¨-IôùNC>üAû¹,"ýñ¼’c¾¢á¿ÚõË%ðŠ‚s~·å{_ûÓ\i}{cþ!ú!þ \A,øWøc!º²‰üþç"ÍccsIqº¼£ý”ú)ÈÌú…Ὼ›|/~b Ww®?1W:?^õÝ.—öÙw¾“ÿÿ§]ÅŒñ3¿? é×Oͯ¬ý€)®ký_Þÿh*ß £+¾€5¼/ãó¼ŒÆ°\[à&à¸^>]6ÿØ~Ã]éQù/~5ü?ñ.^NNße¿»eéêåbí©eé`õ']Ç Á÷Gz—_E'WÛ?Ô¨Ãm¿Ã²WçŸð•:¶v?éW®¡y:Ù[Á= œÔ=¿ëÿ‹Ô+Úe‡ðòB¿TäÓnëáêåö𫇽­½ ÜÅËùÂVÐý.¤u…»„q,¼®Jp¸‡n}彟ü'3øówÌÕ8ÛBþñ#{y8é)éý5ùÅhxÚÂÿ‚A³pBèYØþ‡k¿”ƒû"T<•õ4Ô-]]¾0þ@ÿ…ÓÎÕÃ_ÆÉÞöLáý^ùô÷ìZÃm,¼œßÙ½áˆÁnðú¯ìX–¶r®N®¿%—à‡€¬Ò/Âw74]]¾?1®nZ^Oøï‰;]&òŸ°Ø–®ˆË„þërˆíþ‘ýêÆúCî{è×O€?ñW]ÐÏyŠø ú> ÈW0öUšç&,ÿò"½ì®›ôÕÆ‚üïð÷FâïÄ߉¿7o$þ_ÛHüXóè®æpÝ«àåšÈ\›®€åeÁ `€Ýeqyy^õ.KéË2ì¿æ€r?ÔýÐÿ£¢E0¾ÿ! .Ö¯qÙ!nb<<.žÜß×En+Wg_ 7>n^@⺯›…•#±„_Ök’,ÇY öÖ’,†P ^ 79¸½²¿\×_SÏÊßÑJÔšåºXÂWÌ×ÙÍް€ø:;¹xŠùJ²\)»ìGó°@®XŽ’,F0â²2r´G|ß?qñ‹pBl<,œá>®Ž>n!–K…Ö6b:òŠ?Õ]B’,?ýöññáöàvõ°åáåáåçáççºäàòôsAXør¹x2°ü”³7ú%ö—pí®¢½4†\™’‡{ZyØ»!ì]] ßa‹ËŠ!Éâåeo-&"$,Ìoc!ÊÅ/äâã³¶ä±䲂ŠÂy-ù,­…xmXÀŸ&á¾ö6ÿÚèwÊf!‰ï ØU%¦{™q¸” ¿¨ ¨0¿(T‚çi¿øaö¾p'#y{g¸‹ç¥¯RP~ÁŸÜÿHù«ˆñŸaß%Œ—àù‡\üÈ›õ¿IÏ%á2;WÙù8òÇ&þ߸óù·!û…S¶÷D¸zøIIðü3î?ã>ÂÞæß$ò;å7§¿ƒb—»/øåãÊ> žÂýb4Ò{º:y]!…ùyþàýý‹×ø_óÿ+Þ?qú.ö)þŸ¼ÿ€þϤîr²û×™ûcü‘¸KHLÎ~¹K•¿¼¤¾¿Táâáâ…êýñRÅD‚ç˜þÓpµ¶·ñûoä~cú%w9WZ[ ,þ;ÉßÙþâëå¾îrj•ú÷/‡~sù'ï&éžø¿ùÂþ‘vÏï[Ržï_ /+ø%;Ã_ÆLCã¿wvþsà44.]÷°÷†[+z¸:_¹îfááyõÇ‚$Ë&®Ø!W®‰Ù»x",\¾ÿ»!už€ ”×ZTT€‹_ÀRøGx¢Pa!. A^Q a(/¿•°Ï?Éþ¦ÑÚÕÊërrE\b,†—ˆKÅÎ?MðÿOLü¦ì{Œ<ÿäï¡ÿw†È5t¿Lünø?ñM±¶ú5În^NW+½µÜ þÝ Ï˱æû9ÐÖVb6®Î){g [8ƒÜV‚çOì¿ö÷¸,3x~.W÷¼ýmäo#ùÛÈßFþ6ò·‘¿ümäo#ùÛÈßFþ6ò·‘ÿ«FÀ¾ú€»XK²ø°\—úíð€ô¯Ã ÿyCú³!ÿj¡ƒ~§üÛÃ*HØÈ ‚ßÈ^ô£p©ñ·ã€Ž†‚ЉŒ¾ÄPA¿Ÿ;ú~tôýì> "#_ú‚†‰‰¼Œõ;‰  Ä #â#ƔѦ·pçg Nª“­÷d$õh@4B½„ÈÁ'½:O˜¼ÉB ,ŸÞkêgn&¾B@F‘Q0ÐA?Î( Ðñ¢ÊУi_ê!B>I*¨ë”e ^÷ ѱ L–ól`”'Å8­ŸÒµºTü×7ùs|H¬ÒLÍÐ;“8ÀGò%w·¡Z©Þ|ªƒú6Suo»¶f¸º’¯³˜ÕtÁx$t‡r˜ t2íÖ9[TJÕ”ñ^לT¾O•© 홊[3f’~}Bgƒ…zŠƒiªPZX3k‰áN«•¯HË¡€kK"z c™€ï‘š¸Ïh÷¡o¹ Í'ªâ’Ûæ—ª’cëÕ›‡L½8¡Ÿ:ÄŠñó±"<Ø\=©;–¯çë ¡$I¾ƒ6åOk˜Ï(Qõ·MZŒ¯±¯šc='H*ª3:å·¢ççš ÃV€[‹ ÏnŸÜ’¹¥-™"“E?ꦅºA!Xo*Ñ-Á¬Q½šDz¨².VoÜØÈ)Á¥qù´šÌþÍþ‚Á™H«^+ª€ék“bÓ8¨­Å)±”Qe úŒÛ3_[ –HÒJ]ðì$æ]¶C Q¶üäTz]Œ´ùü—ˈÁ§Ù*Ía`bTÝȤgz@Y¼q#/^Ã`uÅ-ë ÚLOÚXcÛ¾´ÍˆqÅÆ©ÞïkgÑ!‰)0 I•Û)Ò’——r6_qÄâå!›ŠR‡·]Fܹ?’j¦{0)ȼ³O¶Ë§Ú@%ŒÞ V ’;+ߣöXÚË:Ô;œ5ë¦ãwc|䤖¯j™&¨«¡§O—ŒÄÔäŠS²{É|ëÚÇi:Tœï…›+RÕøDž4aló÷^ØYíìÖ)X\1(—CúþßÎ}<ödÅœ¹z>CZ$…ˆŠ4ï³¶»<†ÃT0 D½˜eö|º¸®±`‚kqMQù!í†\ŠYrµ¦ºmÖH€ æÁtN©T ÷(p1dÍœöqV¢î5ÐH+nNlñÑ:}3p®6/+±ú’V­bÞ¡¥”’ßþròŸ1i`”úNØç ŸB…wŽ»‹`7à(í ’ˆÖHPêÀˆˆŒdj(Û™ÊEëH"愆ô…)L}NG™N¦ .‘f‡ñ‰Ã)&ù;l¬ô¯Wò[¢!SÌYù±„|‚•%mz0†s÷ô5_/ß>!AŠR§5”s:׿Þèï5”^7ŽH)xäÞËÙš®«‰%ÊPó~{J 7åqÆ{àçA¢¥¸KöôhÆÏáãèGÔª¯t|!AGºýâ|÷ ›Ôéd"œ(±ü”ßËG~[}-¨ÐâŧˆS{è~žšÚ¼^]/Bª,NÅ{]“¡µÊEÍ“ø8A‹UÄ'! ¼bê Zb3X€¬1%eˆ@Âôѳ2€4_ü›Ô‘}ÅV §žÖOmZ/bÙ7æf{}§ y“Vòú=Ô2ÌûSZ8rwšÏ 8Lòš.ÙĤûÄaU Òû5° `ÉGOôliPÙ|äS’Ès –`ºúFä‚5¼C‰³ª–—÷ƒL ñfO_=˜•i®9_67‡¡xA– c➬ þ?!êÈl&‡« ÜVHR-kÛì ËR^;µ%i·VFf èêÁŒ6—‰©‹ñçtÔ(6¦¶Cå´—=ŒýŸèü® ëbb¦i1«F]0±ú«ù  á=,éNþðVpÖþ`ëyUá½UˆE)*Ûú²ˆª´ëÀhË›Ë ËvÄ/£ä犬SEh5-«¹+ ªsc£eÛq&FH9=s„/mÎSJØŸŒ‰M¡èžOGz^'%æÐi쓳Ô3TƒOòa (–@¶{GkSÔ‰´¬ ‚´Ùê'f¡8¾f-£Yµ€0óÛð§}íK‡Ÿè©ç-L•°!¸Ïí’Y)–9ã­õ„,Bª ZébYTe—Œ³ûTuˆÁgÒcfQ-9=ïx1ôz˜>¡k<+ÝåÄdÈØp7a“Ÿåt¾gA¨ß§¦\æ‡@ ËŠ›˜aVD@èC£/PJOLèuŠ£liLŠÓÉ™˜˜G·,&m¨“5Ÿ–_!”£Jåǘå£W ÜèE"—Î/ˆ³€èö€AsYò¡º6(††‰*¢UG,¾Ê->+Å1aY%4_)Óèñ±%Ãpq§púð‘œB"ƒPQgD"* X2˜„G‹"/k©{KÞ©·úR,Þ¤ÄÚ ŒälPªZΞÌAÁ‘À®´;;Œ¯°_SrŸÆ‡éÅ™ò ÊŠ0¼ ÃûM0á2Ëkryä”›IJ@–ô–÷“u륽~–>H–-ïWü;«ãÅ]ÍgÇ|‚(ÓnÇ ;šƒ”9ìs3e8÷}{Í1š³C²cÓ£,ÏFº—Çh¸=ýþQs*“e‘G¥˜òÒ^ZЮþÆG Û­nô[ èHrY2¦m²"Œ1Þ%bH¡ÉR.…=™ªêè|Þ3ªa©®î“°™Ï†McøCâð,šÍ˜±Óqê £ˆÁü¶Æj|§¤aÁÛù‚‹ìzQ.Hl°/Y9È_\aÇÒw#0[”¥³/GY«潎ÊtY IJ„僆nÁz×§‹ëå̦0´3÷„‚b‰×+í±ÞedÌ$2= °»1H_Uf1óüŽ£0×4‡bÖíîYöV™ÊËÐr"®++ŽÂm¶0ØjI±ùêL_ ÓX^bÂâ“gCÎnÚ‡‰Ý·¼è|6ŒðÅbbp„4ÎuÔ¶[){$ÏxŽX?áû}¾¥[ªÅަ.UôDzÁ„Ù% 2½Qê5SºRœ.£X×…¥sÔ§p|âªÑe¿§€'xgR|¿ÙŠYš•ÑA›=h¹ºª @ Y‘ƒ•ÑZ&Ç‹*_ÉN_˜1?¦þÄ]é›b!¾×x?\PvAHѨ>†ÙðYq-$3¾¶†\ÈŒS.v.Aö:Á±ŒÅaØ×”ð?OvÒmcËoè/^œäW/êT/o,VöOYù7¸+ÕëÁ‰Õø¢‰bk°D"˜ñ0uUˆ^œnK|F'“œÆCгP¥ŸäÕc¶Üâ; (Ô¸=ç'o¶ù€FuùF.Ù\ô×ó áÒÛ‚hѺ"U}7¢®ÍzD‹YŽvÕ–£N„SmàùAóÛsmâ3Ü™¥¥1¤4[vÛd¸Æ.‘¾à”XÉaºC­½2õC˜ªÌ¾4ŽÙ‚hh1ÈQ§Ñý†/ù +î0Îè.}~F"ŠŽ®k†tKA¹ÃG¯F“öG}-˜F¸zsÖ„ªåŸž`…±æê2#Q7PÚûƒï0ñtµ? z8q'%o6•2Ñåd¸ó憙A‰mË)Šv"Ô+¼¨·*xf?hÇßV]\ƒôJÅÏߟ¢XCøÖ¾‰ðC˜à·!R|$òÜ,ri¥e±`+;/t:6¼·†qÄÛ(G³Q‰òG˜‹ ¡9} ¸ˆ6-”óÄ'·ð?ìq7c.¹qNÃ:·Tüæä¶“9£—´–˜'èd#@<á¼‰Š¹(²)SLN.Nšªâ‹¯ äÓÒã9ü¦“½“›GÊlïÍän•"FQvÐ!ÒP+Çœ’n9H«‡ÜίÂ\Ó¡’ذ\'á!+È}©ZT¤èp⬹./‡ir~ªêçýÊv\IÖXcÙ@`­„2¸ÜÒç:2ã4xÍ Â¶mé #Ôc3ù,è{”ÿ”9–âNl7(¾L¬N·Caù>ô0Y”.¶÷©u@`-uå+i4ºög¸L%7 hÓµ o»Z°ìŽOm,l½Ë{. îþCØ’9Öó‘v£^Ù~`M¥=ìP|_Û„õ~2!™‚¼P¯½1ó iÞçÅ ^–=ö¯š8” 6xׯ®…» úZ¥w&!>]¡c®ï#êŒÀØŽ„tG)š@kf;þ`MƒAíL2¢FשKƒ©ndÍÅBŒÑ5&C™z»“$ü%_S¦É^"õ@þW¬÷øýûÆÌê›FÜÙÅ<‹-þcÃrm,8æŒ KÕ™E¡I0läCÐü”£ßz{V…òáæ-O3~O3=u¾ìNP°Bjgüßÿ„x|19E_›½W¤M‘œ²LO·~ÓKÊ¢ºÛ(mº×AJµK7S¸‘ÂKYæ?ÃjAKðÁE,gFsL’î¢\Fâ®$ªÜÓÖâ´Â"V-‹¶$ò‰ª¥¥öæd(Lv1eSIž™µ€ñìž B2Ñ1D"éˆY©ª ´ºÈÑÜt¨$Ÿ.zbyd»Èé…Š ŠWEŸ4UüeGoì$ë‘>áèé–->._Tò˜¬ˆîñõÆlªè¤°Bih›­úcÏ™ëʽhš[êÐ\h„išÇµÕTß“ØxÛ(›}-¦@P£g¡·œ´$’`TŽ!ø"ª‹ £D8 ´„è”n¥»ZÏ-©Dµ †Ó'4¾6—;–ß‚Xð{0ä{Q–ÚœÚ{(?r&hv]‘ŒeÉÈÀðŠÄWœPyªÐ|]>œO(OŠm·ZŸ®Uw=f¼Eë¡ !mµÖ ïnSsŸ“RÓåÈÕ©<ïV‹^ƒRìd¶ÎxDÌ]Îh7Å;地´¬\ u¡°ug _¬e”Þõƒð’ÐXÛÍóM'8N\´ý€¬-œmOK›2³¹µ1$å…v«’’=ÉUqæ¡¡*TsÁ7kmEÛÉTä˜A"é¢Uvž‘öMé7>>­Dg’?%Æõ@:„Ct€#@¤zEnæeëöaà…Ý ÚâphªlV …UýbÖšŒ´L¯4Ù²BY}ØÇ¾u}1ô×3o¯U¦F¾®+!~âÖß§Û'‹æÔ"T}ò" Z…î "ë„jïΛ^sÊêЭ‡y“séeñí´ÙÝR¹ðõ.â]&@êé74R U,Õ†ª–°Iã¡v;x³¨LFƒ#hzЬ@FFÆ@Á=bV —I¢Q5H„Kâ•";ýè6}1Ÿ|Ð^×+ð=$½¾Ë‚12GKCŲ–í¶‘FÈe<2 V;ë) uÇã¥× ±yÙñjÚ¡|Ì\¼Ôµ6lÌœÒkV~É=„½V—._­TO#¹ëQyÕ™òIƒo„–­µ½¨ïŽæcNÔÃÍúfÚ¨q©uŒ9èKù! ¥ñtלո„زÄà~1×ðŒ<ñ[E#\°þBcy^œ ¡ ’nG¹ä#w±Šôšl‹AÇ\tF¸ZÇâÁ´Ã=Cß²{yi‡âIž8`?å¦ìœ ÄíéF.ZYÐëg”;Ç«ôÚƒqѤ,™|i¯tIk ÂqüÀ¹F§Èƒ1 3YMžIDSXQ}K¯,CZÙG•šU–ÚÌhY«îI¢‘Fs]O>êG5e )H’nÔëªÓµßce„9ˆWLׄwP§ôÔÓãÈô[´•aß²6š© –ÖæE\7ÒŠ•––}ØÚÅJ2+µ1&Ì7ÆlÖ«m¯WP‹Hã‡ÓAf.në-I†ùš-ãvõ` ®HzòA TÆÝ-±UÒà"Ö˱V~K] †ŽUíS†Oüìr®¡Œ‡{’r£Óo» À:É1˜a2 äÈ#"VÊè¹öe§Ïènßàh.7]&-mq}2Ên:ŒEݢ춺VýIÉóôqóèûưû~B ùþöµYùhç0Ž ó$|Œ =¤hYÉôÉž`ï¶[yi¾éÆËÛýÄšùÌ5·ãí¢všÇ{*¥=ÉŸHª]èU^èSSŽC:ÒÅLcÈ C=!ìákzòêntQºó¥ÒöĈº¹‡†(!Òek)Ó [½LŸ7õ–&ô_È?«%$úb*L8°”Nj7J±„¯Ë /)J‘JŸæ“l-jBd•=f " ”Ñ\Þ Žg&L²¨y´?8l¬Ãïuf‰–`w³ëÞ~ØkYDÀ„I‡’ƒT…×}½pƒITÙw‡ü©*'ì\ÿ£’Vò7ƒdÖuÙz7”iÈ#wÜ‚ÄÄh¾$=Âå W‘²»sIÙ½DR˜zf–Tƒöâ¿ÞLj½þ€èiÖmYûÃÈÆá¦W$N•ÆÌà†·³@ØS½Óg`í¶Âl¦,EuŠŠ®Ê#ø(Ä_@ØèÈí-¾ 8lŒ óZßíòuûŒvK^-óŽg£‡³æÈ+ë‚ãÆ‘[ÁhÄ(bïfGoûB…U]A×g5“-(õmüBä¶Ø»î7žÕFƒCß—?-G7¡ÖQ¤à³é;¡–=Wtô¡_A¡›ëR“ öì¹_»²`ùpÛû!/ »–ÿβlؕͫ»ûl½‹uIxI}×â]–Ùz6þ *)ŠAq¡¶;dˆšK¼lcÇ©„‚ÉF>þ4Ç4t`“¡y#ªçO6º ¦¼´w + Ž{L¢‘1ƒ"îÈá ì½=T{:·áÅn¸j=+˜°Ð“{3RÔ°ùÝ#õB$ÄB—2ñÉÊ!ŽÕÌŒ"9r$¥%-wâ¡ù±í$â„©Ó±ìýxš¼,_·‚Žª]òSW¦û½]\½Ü3%o1? Çï}-å.-[mï°Ý¥N³9Z%MÚ NnQlok/ꥫä„(ãÆ½“œa’•µxsÛhç ƒj[RöX ®mz^ó|¤éê‡Õä/¼ß½ÑÒOˆ7GL&ä(x$ê¡&™kT«Ô§²¦êàÈmÍÓtí}}"ý1f™á™ã†‡lõô 1%Ê$¡â“1¥.Kü{ºG ·ÔË©òå%k~Š?Ž´äù¤ÛKÁÅ-?wÁsm>¨»z„}Pþ¼½ŒÆ~›]i ÎÞ$Q1H—ÿ<ÿ²Ô]<‡Èœíð[VF¬0rÕ:ö׬*çã>zćìù™ô‘xOÜ–¿ø¿°²öTÜ~U¡RÒ+‚Ê NXQ§}bN{F=Ê Wãç>¦¯ {"ë€A®cÔ¸ˆlâÈG¾âŒr/W¯à”œÕ5VH5,ÛI¡«ÆèÊÉVZ¿±¦Ì²¬TŠéKd¯ R}Op:ãÜ|`²™Ši‡[¬†´7D>M«ª8òÉÚm°t`èÚ“Œà®ÆíwkÄ&1œc¦EÙÒe›Xîž4+ÝŒ—páYîC…îw»ý¹x;;ó`¿Oö¹¾glIÐz©„ê¼ãÊ"V]RRI=Õüsú¯q–—î§qæÉ –ôÏÙ`§£p½hžü·îfTÍð€{õÀÁú¾r|èºUaåTË·„â ‘šWk»ps~ËdÏ-÷ Ó¥Õ’lÖkqæ !êî€ø¹ªý‹¦ç ¢¹÷˜]v½ñ R<ëÜ»ì†5Ÿ±Þ·k-æÊ亣$%3üHº# “.1êˆ1ê¸ÛtãåMuHüe}lõ,v'ø&iÓÌÇIˆñRÛÌÌÞ›ô 9ý_’6ÑiŠÇõ·N¡Ô!iú¼xÃrYúÉÙóÄÓH ËBÙs®}ù€Ž_4º†»Kû·wy»^vSæÈ4rfž\U&Z~ÄL2YDX9¸2Š3d÷à¤ô jÇ( TöÄfšXÀӠП7Ÿ¸¸ cÈSÓ™â w²m²Ñ³Ôô Ò¨”Y±ÈûnQò……ΫÐÝ‘¹Tã’Cðî†vå8ý(¾Ê³›Õ_­í¶{}Kï|ÆAÅÜ„ü0™g¨¦jb{ñÉ+[ÅvšŽÀpu} ÇN=þÐù¶y³¯–ÛvÄýbÃÈý"&¥žB†ÍÑ!ô„XêdÇdF^xzp¡ÊüýöA¹ö3)ë–Ü·|/^ôI©ar¥¥õ’¥=Â'À ¿\0ŽDqy‘µQDã“HdYá$åê¸ÖÒБõ¨4AbG´ø8ˆoy_û+ÊŠ£j5ËI 4 +𢍫¼ÉwB=]`(Zµ þ é|WmÂøÊz8Ý—ÉåÅØQoCgÜÏøy‹/ e¦üY&»œ ·PjE±>@¦¯½,špJÑ^çäùМ ªM`‚X=W->5†z:ÞÈ[j ͋¤ébMU„ûéþ¹½I˜ þH´"þ|fÓFFö Jo‚V…Pä=Ë ©’ת³r«E¶ÆÏ6tDÃjRÅ‚˜D2¾¾¢%÷Âí°Áj´™¾j¨Q~);”S?•½ i§òžl„ñÐcé ¦•¹ä™† 2-QG‰áT½ “CfåI¥9+³ÎøNO™ª—‚l9V1:û-z¶`ù™ÓSðç&üF%ZSa¿R¯ ‚á~Q߀¾Çryb>ºî­¢UÑg9»8¶â ¸Ê;Y‰[!ìâ3Ìè¶¶ü(šO¢Ež‘ÜhÅBà×Èwúï–Q ¸å«‹†Ê©‰ö=êìcë#ÞIõ"@íú$™én†”º_fïˆ]ÙxÈÛ)‚ü»•i‹áSpÚJ®° ofÛ ˜½Ï…@²$«é£‘„::"3e±RiúÞÞÓÅÊqPZgt«øëØhZ»\—¿ñ"!‰üí ¶}Ÿï…ñéC²oÛ×¾¦ëWÝþÓ:/RšùõT‹  «F l¸wλvÅãS:»—ÖZŸAS‚Öe§ìÄ0·g”ì ¶Ç——Èx©ÍKŽÈ™ª±ÚWÌÜNßîåÜ9·Ð}%‚óÉ]JÄ×AéæÛ™@{pÜ‚“?W'ñŒ6Ìîô-,á”ëÆ7aG<»¾µ;ÏÓCZI“GJ—ë†s[“ŽJgˆPî[±VÀD¥ÕQ‰2²ý½(öš×(dfžÞ<Éß›²›T'“¡N׊KŒpªH¦Ãñ!N›)“ÑFjõ-W©CÜ‚õèuv†(gìé®ËƒßS#ìüËV8æ|ª˜„FŽ?ú‰wÉ ŠœP0Mêö†½Ö÷j0ÃJº–»vG$!ÒýSùcÙös¤ùÿMy÷ãõÐôD‰\£Þ£óÀ‡ÁH!††âcŸHX`û'GV„Ç«Å&Ì¡µ­DBn¡Â§†lþþ¡7[¿¸m…À+‰¤xäèWazçV¸9-®·Ò6{¹˜ºÜ*¢h#Ѳ™Ôq×qz˹Â2xÆÒ¸40ywʪĕ™`ˆÆlð–ÄKiȼ†`OE¶(F…gNÄ·<‰vò“79ÎC­×Ó¼‰bbQk$)mÍœ‡e3‰DG@kÔ÷Ûä±p'@»¹Ï—¤JB>Qr’ôAKí™â?T^ßM@â²A7ÓD…q†¦ûÉ!Cûï¼q$ÕZ »0 x:¤^¶Ö¤½%hC:¾·‰’›ë:Fp®R›ÞâDj°`Ô£,  ª5,Œö‚½—Zpo2uú<[ÿ†9ÉY‡mYº…HOõõPÏ`ó=îUùÞ“<Ó`ãŠÒy&ž}ŠÙ¾O¤O;øçlIïÅ5Ì$¨ö·Ã×O¿±ÔÑšñ¦lõ¢&š Êç7¼b=ÒpSG­·+p9k(æŠW«ð{Íä_Ëò5&:àˆæ¸ê:®Ð²A«ïöƂƞ«T~ÊàÊÁ~C”îûî“äoœ¸gûg›MV ¹7ÈØ&‚d7šn‘Ýo9øX¶›ÚádÖfó•‘TrÛš€¿‚þ냖ÕåñWM߯×ÔPªfŸ¦x`{lIîÓϽȅPœÍÚ5Œøv3¾!}ýЇµæÚǃi¦ÓkÉNj9‡ƒÞVm­mº¦ºÍ‡5LüuøtYéëV-ÚS”´žyÁ%Ö:ñ `”E8L‹VÙâPÝÇ>›´#u…1æ®’#ý TÏÁ©W¼[ØîƒMUR–¥#ìZ¦ÓГ橺j\)Ûýá•L£§aw9ÐfÓ3}“<EɰÄå±3o•´H-97›u¯/w7ãI°©ò Ù#tódýìnë}ûÒzó·´í ¡åtLÛÍ:¬g¥£‘ô Æv~1–h_Ѝ¡* I² c%â)ÑV *ÌajúäümþÊ´ør³Ðø<†ÛÔ,-‘ŠãI#„æK*bîœFZ5i\"8HR’oŽœu/¾ÓßDG„ [¹RFÞFRçSö£hœ˜KEÉ£/ýšÛ0Xîeñ¤"û£)—4³¢z»ñš–éÃ~ýº—¥Ìr½²ÊóAãc&j§A­gB* Æ*żƒ ,ŽE²Ìí}|Ñ0€'ù¾{ÒÖÂË‹$Þ¼5¨Ì¢íèhâ›Èйá®÷¦©2³·[5e~“[¯*ä‹9ǪÖPM«ü&/ÃgVªaXÁ=V’¹àéyþÞŽò=«³’WwÅÝÌQÞ{¯)1û!¦§‘vzÉ…ÖFæºy_I¤èož‘šL%h¢|ÁeöD[¦îÅ^÷T.Àm‹f%ÐI!¤~¢_ÓqÞá´*ìáš`ÙíªÐT€,ÔÒæÇ`¶­Ý“ESDó€SäAÿù-³×EãÖ·§;Š ø‘8Éʽ@mr>yãAšžÄ‚ØšLI{vt›ñ¸¢–-ßì€2AõÝÙ’?ú{]ÎøäøYÅ7;´õ¨ŠOvW|Šƒâcý‚]Ur£«ö&i¯Å4ït~‚¦‘Ì4Òsî‹õ7d?ébeË0æLºo™b+Uùúd, ÒïÒ§µŠ;V_¡œ«kœu ·~àüÖÆXoªÁ…cçiÔ«¡EµŒ!¬‰ÖÉßÉã'Ò§‹ùçË‘’þœÊO4³AS3Í9ÙuÄÄáC?|êÕZb+·aÁNûŠBèú›4…vs¶h[ßx!… Y#Š1ãrGs÷ ó’„é}xºn®ªH³È’î£&tÓHr2*Žž …ª*“ ;a uo©~ªÞMZ–&m!Û-­ƒIiêGŸ¢Õ£4ã4ÚФá$MU‘ ÚºšŽõW¯ *tÈ'jë›’È0È9Þ˜wή­*POgÖIS½ÙÃÕÒÄSD~‘‡Á² â4øÇâSµ¶P ž|9z·7,>Ö/£ô|΀oˆl†)˜ {ÑÃytU£éˆ*^èQ¸)Œ)„lvû$²Õ÷Fƒ]æ—rf^zÍ ’À¬¥"1•¥æ±ú¡ÎðˆóÍ!Ž w 9ŽE6™—ýO4“Ÿ&ܹîÑØvÎÍFÕ×é;xçå›·BaåM™ntµ1NG{ÜÐŽ +Ž×z-ždóòØŽ1–Õ èÕ&ÁÃÖDF@˲–ýÁYü£–ÆÀéñOƆá!§”‘3rsm‡$ùr‘äAnjîTÁM[†éwÕxB_PfiùѦðÍ1<~#¹„Ì îcÚŸgI˜Ò1»¹ïuº Ç»Lk»™ìØ;ºìë°W¥Á™¢l–‹Ô\nL²ÝS?ríi{¿¼í÷êkųJ¬\H]SâiÿÛ”#ŽäùÎ,é¡'ý¬jU±Qh§ ŸõIíúëHßíè)G±1O/Üu‹Ÿ{í´ÈéâìCª¨ðÏŠÌíÂ5¾n‚¯óØ+ˈ„§Ëo}—#žš·ÑåxË5EŤNl@£¸3HeY:ß³i2RmU´ávÜÊaÍχlËX?Üf2F cRŬ±8\ÊËHm6Toëêv{¸ÉóîúAáÝšõ:)ßNÆ•6‡p‹i{\¼îcÌ#î`íqfG ¾M¥œÃëÛfçÛbwûϪf¾YDÊ—+ŽF¾MD]j%&€™´i0I0F;ÜØð±¯mpË…sÈeW.&c©¼Rï-VŒÀW‰ñs¹&»\Z¼ 8ù4Gg#.läŽvï6v]žy›\‚„C_|Îâqõ ›Ê‰ÄoBÏŒ DÔâÛ‹Ç!BvRCD%­=2ïò–;Wµ“-vKÆ?/õOf+ÉÛtˆ^‰žÌ¸]S èV€c‡V\\$ò¬;ãv~²­½*·Ä¢‘íL¦…i¼¯£Ð©aʲgýóSKµ·9ÃäƒBÆ8‘7›lªm^¶¯[ç rX2Ò7è-‹;žyxòíܬuIèpª ,^ë…­Ø(Jxë?…]§ðGÏ…Çy§¥u²5ô<<¹ž‘ý™çÖo¼}7‰J¨ŸÎß:G+ç~åøE²Î¦1ÁõxÕ®×yrêðq§ÐHJ÷l^–7ø±¿EG Q÷x×Aèý£!ʃ–5—§iˆÔÂñ †!ÃCˤ„Lú2aB‚ÝábEÒýÉ%ÔâØÚ‡ñ_3˜Š¯Ãöü¶A½‹š9K#r[Ü{;µŸi kÁõÃ7Ek¡ÓãÙjÓ!_²†{È~ n¬W8Mä/Ö/Ãñ¼p8 INÛoÂu®ÙbiŽ‘¼Èˆ~Ò©BA§Z·y¼ºrNFºä=b½mÞ.Mõá:ŒœZNƒß>[¢m©¦E0°êÊ1Ò™ºöëmì1)Ã)³évžtÿ1¦³ííª +w]܆ùKs^cÝX£Iºj9‡Kum‹GåÃA© ¨°ó7A¥:7"v¾&h¤ŽÝ?Ú¶{4EÞïÍŸÀ;&³ g»ÙÂWTÛzv_+S]”,®ëf¬ïÝÜ/ö5%1× eLoh.¹Ð§=Ñe…ì™ß¯à>rÇ–¿6¢xè*is¿V9œnJÉ}ža`„­ê½k ©¶Qo×gó./—ÖC‘Ók±Uì¬|PT…Žú[¶¤\×e=N=±ÝLS%,¶äàYoIu_ 4å„úÂû_…ÙÖÜy›¬¹a ½ùuò¶œ‰+'¦¶ÑH´”{»rª}ýšŽ¢¤y…¯ÍizøËÍaj=V ÁÕ‰Sf'S¸Üô…9ù)ŽXöVž{^ÓÛ,ûz!,É4Â>4mp¥ÍoF÷E_Qm3Œ6n€ÉÄnÚ TƲ“’DØ‹´Ós-y(n¡šˆí¢ñ£F˜v½Vm£ºÖüô{ïÊ9œfí¶µfNõózßÀxÝZòØÞ…!©°}$!žõìnqI&áÈI‰¦°õÔ–„Ý^«C$½ <Û;Œ­¢«|¹òs,I‘^fÔN× ño›+ï¾Æ½šmà8öÌ›í:m!?¼_ÚôhèÖ°+ºéc€Ðé‹'Ÿ_™º{fýL=êÀe–‹¸?餠Kª_òü(n7gn°j@ÈTyîBÓ#t5‰)ìˆLNŠ?Çu5Š©sq w“»îĪ·ÜÏHÈT˜wJ pdº…·¨J·¢äÎ 0éƒð(²«;?s˜ÍÙÓøæ¾c·‘P7¯@=zSâ^ß—=~‹êÉhƒÇKŽ}·û!‘‡j°^¢¼®WË[7<›îèûYäŠvaûÆûúoMwµ–öú[óƬԃ¼%¸ƒ-Ü?gÕ@Yo+½|¬ÅåZnù¿ýçb&¦ÅSÑÖ, ß…„ÖÑBŒ-®JÏL€œ}tÜ:ÁLŠóö2iOß<ÂçÞý ¶³½ïlæë!4ŽßE­^ôºsq‡Ÿ!þÜ;X¿ºé|WÆd²æä½&ç2´Áluõ­Iå7‚H ±®ñÈP_s[¨ÝÓˆV1oØ•?¬rUPõùŽö¥z÷ÍÁX¬´-„ÏuõG:Ði·FQ6=l‰ÚPïóÆîã¥ùŶè_à ƒ„iŸº.)iñÁòur;úÌ röCtÓÚÍw>Î훦æÐ5tÖ/݈4óNB\ÇÆœÅ͸¯9’Œ"$C—S4î­á77Žϸ–ç(øçÒFDÂî­nw£ÍÇ;,d‹;ŸKx—B&ÞÄ-‰¸è™v³+|Uÿ dä’®>07 dUî£ Î—‚PEçÒ9®;æf½Kn¸\¿¯O¿M öøéy“Úüm•Q‹þBá+£‚~Ä–õ2cƵ»ûe2ì8‘p=Â"¹Œò]cfj¼V1~µ%ñng¾BÚI/òÒªÍõB¬¤y|1*Ûò][k\æ¬EÑ~îíy]Ò·–!ÁššOÞ‹¦-Q:|±–)…t½>\o^U:äãñÜîÍŸ^‡ža뉵Opd5ѼÙêJù탫S»üªBÁ¡c–t¾Š##”ñuz¹# zÖŽñ>=Þzzk±ØÌ­ØoïuÂá~6µ?Í’GdþÖCL%A'¸6{ ‡Í)²ôkùÁ#o $âÒ  «Jžjg±ë¶y ŸÂÇùo#ø élCJ3câ}«š©C:²x­¹aô§wazã¶ØUªõ…ÒDzïÀiÁ2ø´8~óÖ{csëµíJvÜLJúq™G‰€HuÒyO[œÜ\jgæ}cî ïjŸH2æv{Íÿ¯’³|Š‚á¢ø.-¹´,Ý%Ý Ý½´RÒÍK7(ÝÝÒ]’K H§t.H#©4H½Ï¿ð~½ÏüfΙ{Ï\–ú½8³‹‹eØ]è¹m±a0àßxSç–^Îi;C ¦H”F‹âj’­bö4Û¢lha¼è r¿LMT¢!n¹‡ødÅúD‡jbå*ýÏó ($|KÝaðýýö#˜ô©e´%"þ L5CEš‹ÓZe›"Þ¹¸) ï: ‰¸%°L½rW÷c·þÔ< ‡¼rˆçeEçÕŸ½õ½/ýýç[]ÈxÍ‹ih—œ¥i\lç€X #Œ5®8B€  3{Ö |l$Ìï)ËùªŠ†LÍ®—pÛ*Û,ïKH\q}ùåý"•${ w{¼’·ZgÆÝxÈ$ظ/vM’»[¦¡-x|WЃÜO—ªïˆøåB7Ël‰ò©œ¹¾põŽÓ }£–„ÏîVê¸0…¢¤þ•˜¯ !މ@Æ).3ÇožÄœ{.•Ì”»í|0?Ÿ¿¨ìºn©¶÷z]õ¾ ÛÂiߌ„wÄŽºb$HLصūǕëcâWñÇÍ䧯á•)·e·d‚ëö¦w½:ùôù…c­üD€æOÝÉD'î£ê‘¾¥vÞ[ð‡=¥}9}Ê–Y‚Œðb¦™B¬ªK¢Cj§¯€p½øV Û(1Å–3ë¤âºñ”zH÷í×µ?þp„wìcEÛmiÄWÛü§B áR‹JÐ(ø°}¯ršáЖúx˜;РtJWôiKCbÎ- Ú½?×%ÊÔžUFõOP«z#ÄÑO˜5à‡’@LÀPM Ш¥ê‘7¹‘Ð˶µ›‰!¬ØÍ§{„Pæ`æãø­“øä]Ÿß„µ—;@¶ÍÍÜ %MD‰Þ©šŽ_HšÚv{)òOš <ƒÖ Db|=;E/Ðz°XƒÌü»ìÈ£‰%ç]÷ÈÔˆÒç þ+`o{øP²¨ã ÕÛ ¿u±é°§s_u\ÿ’دô Èt™ˆéø/ˆškU¿ì mtXœëö}g³¯$Tîë:@vàSŽEŽÕû¾\Œz^v×8óTQ›G mLΦ&ì?b¯†ä÷ÚO\Å’â­ºÊv6Óˆu KƒÆ»P„ÒäìÌ77ËÚÐ$ÏôÚwþ_ü~¨•FÖ§øuëÓ‹ÿ d˜éÓ¡?ZU’ ­j2ÁÔÂéUmPz =÷ª«Xp–†›?üÚBãY4m¢Ù?5=³gV¹4Ù(#¨“m½nÞÎs;ªb$ï®ÝÊÜqˆ9f€*†áJõ.ÿé ÝÍJÞ*Ü«`\/g²c4,y¤»scvÔGÀ¬‰pØÙ9»ÊsÃF^Ñ›;,lòã PEhªœ Ÿ1½v3úøP2ðš“Ri_TÝÿò!^‚øCkÇÓ e²†„ŒåɯYЧãqß³÷ñ¬_·îwž¹ÏR…wc{ÈaÉdÏѺ1pCùüøØå°ÆLŸ°dFþ ˆWµ”µKÇËèñy žÞÒ¨ ÎB{R)(™ç &†=x[ •d>:qijãŽ}Œ°¿Ââî¶ËmoCDôC2jb.¬GÏ$&~þÊV¸orNd)k§eL¼ÀGUË‹Ÿw;¸ýé?ývµ6uŠ¢ð¾KIÕü u*£¨÷³@FuMo‘™t¿¶ï™~CdãÅÔÂÿ‡q±âƒ,Kßô8MñIŒ5 tuHÏ"©BZo!”€T)ºèótÑQ¤˜×Mºx¡“@t«$b§F+«N’ŒŠ6‚齋Æ8o>†û'Ø|4ñEó:†×CL¶‰Ü»üsì[R0YobhN#°Íq쾨·ËvË"Èë{Õƒ’cÑ·|ê¿(‚V˜ŸE »¼è>t@5/ç6ŒPä$ÙX»õÉ`ÔmmÚ²H~ Ukkd=j¨Ç¼‘ò[jJ>4¼±ÉÆßg6·ƒÍÈø¨²»^Zè—Òlãi£m9Ì‘,Î×ã¥Ä‘ªöÓ';VåZÖe9Äð)@BwuŠð$/, ¾Þ,'ÓÌ‘‹•1"z.¹¯—Ùª3—øöv´ó³Ug œù鳺ѩpJeTÖPý±îwêHcXÐ1ÎPnéíŽ7€Âõ¾º j¼œjÊϼï÷ÁšaÎ!¶ì¾÷7>üA¦%Xìøj¨¿q²¸3®~Ñ]+­ÌR—LîÁ2{ZC$!Â73°þáßù3ªpAÙ'­œþJÉ ªÿ±’­ó¢7X!µËz|–ÍûôÍ}šþÑ‚ ’ZÅ®[oŽh{:*ù{®=È*©.oó1‹³Ùÿ# ‘Û#~ W`s’ ®–+•RùY3|£ø¢K§QÑFBGK Ü¸§B£!øö/È•H'ᯠ¿É·419ªAà–¸F7è1ÈVaχÏHµßÉõ¶WÑ<ªšW^›G ¢ôѸ}ø@÷ƒáÐ0…1òÑ’PŠÒyð+Àz…j<¼ô¼q|¼k‚²»#ñI¦óâRnÔ±“â·Ye*²†µ‹¨œ2ª ý+Ì ¡d_Ö#0Šè¨Òk&"UõhM²j“ró±f!æWªµF‰ãÇW¶Be1@©øcÕUÉjØ42”»¸YhFäA'í›Ágª4V{Ï)¹` FÕÜî„ oø_|ntó”-Ѭ…‚þ´Á"2ãÄ#ñ¢ê©(kà9·¼Zÿ_UïÓëâiÎÝ~>ÜãRIà®(…* Æ BDD{†ªÇ,‚[2~ŠHþ”øðç"ÿÒ0«¬**k{èBákj‚Ëé+½˜v¼V=G’7-Ù¾‹;k/<Ҩѽ^ÙqNÌË’Ó³¼þFÞèL=o&(©cⳬQ€ F’&K k‚wòpN×ûYEMjç|h¸hNt±Õ¶Iao&ãÃR ÈT#ÎF dt¼#_ý¶Æßu/q—Èœ nùý,u±šwêr<﯇ËG‹×Û¹Ú‹ï1?+å+þãXܪ¹¹›v<@óO‡§À)º±µ]½LºÇÅËz­v'¬«ºêêrIfb•»Å»ˆ’£‚VQ½ÑY(TW’ßTxt0=ãsà/,àö¡Xæ;®¡õz+äªâûõÂ~ ËŸìfäÉu]IßaÿÆ¥ù¾y“Qú)ëöé¸å\Ìfלèf—cHÍÐÌ…V«Â]Í Á¸#ge»ë3W&Ý3/û‹»÷ô®´ s¤M_ߨ²ÃŸ5;`x6 ”íNø©õÂËZ‡“ÂD˜“FÿáZº/ÄùÎß먷^UaÆk·£QNǦÖ~¥p¦ÊI]ôÁn¹z^Ñ _?£í)BShþšg§LcÏ-‹¤y‡Îð•uè#Aû¹†Ì>»×êž fûÁ¹ØÒQÂÔ˜1œHPº Ëp\0èòŒ±ÃmÍë°r\9¶Eºû³EòFTh K)湬·¾ ó“&7B`Ĩj‘WrÌq­“ÇÄÆdÍ#k$fÉ—éðG»EŸØÚuÔèÿ’ÚäÆqhgádÞ®¬ õ —`øRÖRúž@=û/-yÅv4ö!(°éwghKµd ÙëçV¤ák˜:±p³pk[ç—ó²ÒcuÑl¥¨—~'XòÜÑÉŽklîéqÛ$å¿eˆ o«Ÿ¸;ˈBx4 ‹}ˆ¡+߉îU†y-öŽñßz]ñ†0Úä(¨0ßpþ]-Wß‘ËeT¥•ƒÔ®j²!ð6ûLóús` Åj¬Û´ü E½ŠÀÔlã·s¾Ÿ÷‘o hNÏK:êH4>*Üw/¶’×!7I¬êœ·úõN¾ûâ‡5 rL$З”äZýõ1jš*÷Ô¨*’ÖF›ÛÇc º~IÞ]¼  òûÐü6ShTAS?-D %5æˆ÷4Òò¦càJç…MZzh©Â0zqpÛVèWàF5>ŸªI”Θ[tC‚h!Ær´Éÿå‰Ü„KŠiI'ÿÐŽáIo›ýVœŒ»ðÝ4Vñºç¬Ù ÔÃkwzùlÛ6¶4dâ Qùè¬ãt&ë©›ŒÕù`_[”Ó‘ ˆ1Âg¶Þ¼r;^LZcMeíØ,µ“ž—p#t É“+ýááO$ñÇøLbq¨%ùùÊàƒ3­…)¹ÒïÔ‹½Ó;|̆Ì( ºZÿ š9l›¢hÇ^ÿÄfè#[Óôðí(EEFqº‹ Šë¤Yí~‡eÖq Ñâðl˜¿ƒÀG…!2”œR=l‹³5) æA'ØËÙÛþSõˆ ùÀÒ^]Ñ™¶Õd)Ò[àóÉ­ÌwKCÌ-“aÏçî*aËÝÔ¶©‰qÞǰ¶bûíú%·×ú„*ÛJòl²£b«qWÌ‚©Öc雼¹’XE«‰^Û5ÂJÙÖ ª}c¼L&å h¡”BÛÖš0ìX™™QiÍo´é¯ÇTO_y}܋І¥q%ˆ\L ™êÈ´ï–eú¯Æ5Ïû( ¥gvüQ0ˆPµ† —ì¥é;ØX‹Ö/kiW‡¹æžÒr{rÎ`±p*nå@!%TSW®«Êž²8¶Q˜†âÇ%ôþŸvs"PTé.Z.0Œ|-±öc­U'ˆ­Úu×Gåˆ6¨äjí9/.€¢œºò®‘óéån'Ðú˜Z9ÑÈX«*@þx Ìgòe£1%«7Ħ^4jÞÀÖßÜ 9Ö¥þžˆ¸Øiãv²ÎtÓ.aØ.á]\t5É,ËÄ<’²ûÛûð&…³²17 wN:%æ_òÃñVnà)ct˜]YçvÁ8 bÕe=yuS¢›ï€Óþ96TEn±Îõ€Ìj·_©:ýÐrj͉BË¥d$ɵN³L–ª—›Â«Ô¾øñ.jrXZ¼á·k±y–ý8¡êkåÌããViö˜ Øž£Ã߀àUˆF–»êèÑ|ˆÍä /ño úŠ÷Í9žfÍt %6&ƒÒx¨ÅPDÐq¦-AÑûa9ÝÃ[ßW®·ú•ë@¬¯³Ï¯g`C"?Öî%•£,ó,gMP›lOàî«ðÂ2¯I§}©ö¦äÕINwëjðV½À…Åá÷aÊSŠ ­q\õv^†<¬³ì÷„U¹Ž<'ç¢å×”ˆœfqÀE›ÄjÑØ`™ÇÄy›„¹é©†@Ù²¹?z}]ú™b&üŸU³!ÄulÉDSvü@FŽîíìùÑëÅ{“A,bø/ž¤þÛi±17/¨ÛÐ/F+®Ì_“ÌžûýùÚæÅ-aR£˜zbIðøûy)|³ meô -‡bäíX•è„g˜)»´ ¹Zj¼âU¡ªÌê寊þƒª"Žé ôð8ÒˆHí•o—Sñq¼ƒ$º#3lãòʱ­œoÔö]Ðô…™š ÛFK›~ÄØ³TVÕǶ?5y’,ü¦Z‡ æ Q{' ÀŽaçà¿Fáú½8—\YÆBßêÜ,‡v6F¾l]fö‚}Ñ­3é-ªX‰‡ßgÄZ(Îz-Tï b0Rõ(™rÃ×k«åx<¡¹wäȰ&?÷ Ñhå»—ÄÃÑh©dÄ.Ÿ¬4Ì/¹ ù„adfÚAl#o/ðžÝw ÃÔ8§R¼R_¥ü»Lg½Qñߔ樽âBYA÷qt_Ô/B8m»K¹”=éCßW‰Jòd¦Ÿº1õnTº¸œÓ[*YÊJŸî¦¬ꎜc£yáH êô«÷QjÈy £‡„D6ÎvbUN‘Ué‘!˜PÄsEôŽùÒ¸[~2/µæóö½Ýr«ËK¯¡tg‘ræ ·_⬑Ï{PÉÒ™ÚÄ[Ô¯a‘8¦Z—“+'¼ Új_D—çgßœgÜPI¬ÑZGʤ>Ób0¾„—Å—””`'€u²Ìô×Ò­˜óþä=íôd¤ûçþîUŸå!:±ažsQ4¶ýà¯T*WtæþÖ ‚Þ›¸çD6ç“¡!§ì/ã\–ŒÂF¦и²@ž¥3Ñð£ä£É)ë!þ¾œ½Íã›` ¨¶¢pK«õoOö·rõÎXJ°VJ)]Š}8KV¯‡A’H!Žm¢ÁË*F˜FDOïê4½±Þ¨!ô˜¶¹¥# è¾{ÏX±ú½4qåù㲇ÿßUS1ç¶vI/ç@„uT‚Ÿ\dm1j7dQUô´Ú -÷QæÀß´åï„ÈãÜ×…ºX±8Í“ÐÏhbnãxÈðµ†Äíé s„¾]E"½W`¿±·Úpƒ/–@7ñ™ZØe –·¸V¨ãŒ¼gDܱÓ<yM·QÚ†R1ª?޽NÐ+›àíssÇOñ3Ç®~ý7¹nØ:Íã·alZ5ºÇÿÏ™“ôuÉp £²‰yÞ㌅¼0äìãúïíÉAÐÁ@Ù4ÐÁ )¼›hϨÔêE8'‚s‡h‡„v^È´¾”³<3ÒoOÂR¢¬ÙF¼ÓÞ?¯êè+’*6ñ ñ÷Šõ—ÊÂÄÔÅe¯Ê(¢wJ¼ Þ`ža,ŒÆìä”jÚK•—Š ÇôWÇÎ¥%wZ0ýåUáZƒ—âÍBN &Wõ®˜{§_ÈÆ|J“?w¬…ccôG`—’>Šâ ÝC<Ôî)J£òÍÆïN¦’µ»Ri"ë;ƒÏ=]ŸÎ>×kÒÓYÒW½ìJ¹ÌÔïv9³HÝ£Zßÿt˜’N÷õX_BèLDï>6v;QÈ*‰AßÍk,ð¢Ç :ã“ÜK :§ •n€Ø¬qBÀ;”Ÿ:äý]O ´êÝÜpú0s¶Ðd¿YÙ&™a'w[Ò¥9Ôjš)ÙÚhU™P"ðW¹úŒòFÝrRŽË®Öí:ñ3†0û+&ãVÙPˆžóïè¨Ì¸a²f,$>§LÚ7úshj1õÙi•g\9r[ ,!º¿8óùÆ$‰Vjúˆ $Ifw Ûh¬ì|åÊlo±«“NRG§J*Oßù7~#*¦ƒê”yFSܶÎ9ìÇôLಭGº¦_8sVÂÕåvÆV‹âbâ‹mÆYÄçuÅÂ…s©ó1_cܘHA¤ ‰uÞ9’ã°ÛÕ†îf rˆŠð¥á¦`f}ä”AE+–%ã#¿¸·?@¨YºPçãŒr¤ª±v×1Õi« 9ëG…Ð]i9 MêCÒ0½“p>/}¿˜Þ÷¢qÞëöWzqØ@‡â AÒqj~nÓÔB _­š-< “ÍÄ3UŒC²G«´u\!ÞÀØ{OÌyï\Ç’vúBOØÇ@Þxwáô­3qú; ±ËÕº¬•$’øõQžÃ§Nð:rú`€ÅGÊPçõ9õNo”ƒ€‹¹š|lËjçâOç—ß«çK‚ϵúÅÖfØÙÁWW‡wúíxΔ²;ArW‡4ŠSOÁÄ1>Uv¦r17šq>1óƒÄØ5C{Â×*ç!,EXÜÚÕ$ªªP®;¤¹ñ%¥Sî0Þèxë%pâôgw0–b˜‚yÞ[aÆÉÅÒmÎùÑlEbµ>ÆÉ —5?Ÿ'¦$÷Iô$D, À›¸£bP—º”M¹´&תÆÞé–ÈÝŠX®_·¯K—ÃÀ!„N«Ò‡ôâDñaÛ¥®^´:9ŠÈHÄçmiœ|4Õ6Ðë_T{;&-iy@§= ?}Q[Ý>êcr.ƒIH¶˜Í_ P†ö•Rá«Dß‚¢¹¸¦ÃÐþÌtÚr¥Gmøc‰ç@‘¨€ÏõD‡Diúw1•19ÃUUx«EÒs¤X'-~œ»K‹©Þ‚‡ŽÊù¬‚Þ«ñ“!¡6†ÅY9ÊB„ð³e ío¢‚„áttŒ nèvGÙ;ËÓŒ¦š ƒ’Ï^b`ü<1Š#­””âöp¤‘"èb­Ö¯Ž!þfINQÏNµŒVC‹ΈÓ.•˜~¦Sfäi÷+Åd$5kIJƒ•®%ŸŽØ…¢ÇÐi±œáô‰}q°H舄í)32zÖp¸æ'ÚcWKw Å~cÕ2dIy“T$´,ÿtý¡Y{\…dhüJZž‰†U‘@]jáW…ˆÞ4¼LY#ÀAŽÕÙ4É›EËù„Ì΢Z,mAÐ÷}ÈéR;RÀstͲùJ“ºD‹ f8‚ÖñÀ»ü”﬘Åþ++ã¿â»[¶E¾L»™ ¤h‹pt ƒ"?Ï‹£ºX·ô Ó“%é÷ÚÌ`yäFˆ= Ë5¦5È.Œ~‹‰N í—Fzå£øË”ZkOúyI)ƒwZ?C¨ni®œŽ×'&»ÔŠ*Â!#ŒŠš ÎÎ*ÐÔÊÏ¡ÌÉþg­Èö$µ®FaK@ !¢–~òëL0 ‰sÈsfA'Z”‹×£aa ¯¡°DATЊ]Fj0ö³'ûøkÒ‚¬i²0 Ñg,nöº,È‚¥ï¿p˜Þ_·§(8*¿øÑEÑ&Ñ®ŠNHÖ ÔŦÕÑñI(þÔ©dåBKÏK(!€ö›F›.E9›>ò‡6Q’κ†V%ÚÎÍÝQ3O‡ü`JóMƒˆRT$“HBÇã jªH*òÛb³2, ä€$jž˜ÅÓß l–ËœñÆ_´2 eA´îKë]4{Í*ÿ¿Ti5ÊÉ_ÈsÅ~fÚ5=T9!œ±hŸÀÊ"ÈJë˜_-("uÜâ‰ÎtSÒ¤y£žX›“?2*Wø¸x ÿ|ô:Nölƒš0Ø×…§0Dþiz2 w4þ©lˆúêjŠ/Âܨ(ûž+D¯‹WÿχBËZRÔM7lQÑbŽ3ew){C å)ÕKJòuµ°¹«òJôpô¦ªj ŠÎö‰4žó{Ún\aV[:Œ:}¥tiµ~0-|LÀ‚ª "êqATÄÓ__Ý·ƒ«ªËXÝå ‰Ù!Ñè˜8Ô gT?Ù{ !ß(£ç?_ª•ewj¡%þØ[yï€ÌÔú̲ýŒØ:žëU$˼r·-Âs=Uf33RôÉCuÈ®1Ìûéê9ÕHVV6¤Ò¼Ñhźy¨ EÂí;C6véC®<Í.9Žþ¥>c‰q3[|Ôw‡½½Ât©çï¬fÈDB¨÷×BšT9Q÷Æ»ã—HJƒ¡zØòL“yd5{ÓrVý¿œe+x5L*ÚÅ ¨Z•Y:˜ÏÄ_¾÷Íï‡Æ—+»¡…œÉ+Xà¿+•»v »5)Õ!S¤_ Ý )Ýh™ZâÑåÆÐì/UÂ!—…ä.F‹Ôþ.õm ý½g"xŠìJ¿A¤£E•3ÄЯ¨JÂĸÏKÛÖ4+zb|lëÀZ‰¬»FgcŒ X†ú5‰É$åÆ;L@!d"Ú¤¢þõO¥yH8àE>¤ÈMm§%h0¿cN²CÙº©¸es¯ømÍ3-&pëYŸoΠ{QQ¾¹Ãöf[È ¬Œí¶cÆü†Ažä‡>´ÄöÄB`߉é&Ç€µå±@î!ŸæDè ©š1Ú\Ài•P] ’öæ9ä†H€ )13rŠª­í<-1 Õ¡}e{¥|ÂÞ¶NCLGN¸9µr˜:o渟¤êÔ!K#Öb›`ÓK­ØtÁ½8sËK#‘%To#-w¬·=Xw¹@>ôRnT)ÍFþIþW@L'½ŸœÆ»@{ÄŸ]ÝÁ-€«j–·xúZÕ§("š3Ìyø–À13òg…Õü;(À iЊ>©#£Ô3(¯QÎiV‡¾ ƈòqà¨ËP4×£IÙ¼l‰ÓЮ-¶ • ÉBYëú…Ì•\Î8šÈ§7Ðb¨§,NRA¬‹x_J¤Ò«G´‹}a`‡0å2ýo×lå¬*È:o±ºêzüpä‚Ô•h§ÃŒ²‡à;É»®4à1’CÈ‚Z%ÂÁ«\žš¯‹Úo§e`7#…Œ`ÜhAî¾}d¯ñ‰öè‡Í†ùÒÙƒ¨óèU>™þ‚q˜€¸½œœPÆš4 faÎP „Ÿ «¸Æ_aÚU)Cبc®tžX1CPÊ׆mÈÓn:à Üw>1þ“ÄíH;›§!ºQF!€'F‰ iîPÝÒÁX ÆÍ± 7l4ÅÂ)geCÛKg)/ÂyØ2#8#$_HžÍk¶ˆq‚¬3B”\•ì³`ƒ£ŠQZü–jϧ=DââY!†3PÙ¨ÑÛÞÔÚeÊ*@ÍΙAÃ|ö°®ËD·ËRBžY¼{#…^籟ö+kÎò[wŒ‘S°X;O ‚ùD "· ™Ë÷3¨<ñ]/[0Jdë/‡04Ø[dyc”ºÒÜoØZE‘ûÇàÕ]~oÌw| \ u–Lk¤Ð/Š®h»ѳßuÉBQð¼HýváÊЀxÔ”œ6ÑtÂú,Û)¶Ã5í_D¾`êEA@eØl¨@,¿ëÍL½ ‹Ð üIL-Šéjѵ))îDϦ0z-ÜÊw4ÌÇTH˜e‘ò¬Ž¹Ÿ¿fòÇ9dÌi›1ë!GK‘( qÊyô7dxÒ@„Ö1­ôÅÈXyX§ŠõY0âÍpI§Ü¹Ø%J0Z "9û˜Ó·«´L@H,èñÏò‡bTaR[Æ+ÓÞ³—#·µ¢,ÐDjý³¯J¨:´x‘gŠÈ˜afK;­_ØGèe³Èìò8¬Zž³† ïà«»U$ª÷×aU;«}›Æè8VºÑ4ôÔÊýúæ:8LHbÒH"õC¬­“³.‚SHç—’/aâÎQàêµÞ)wV øð @r•DVógK…!×s¼ºŠˆïÅ1Ûý_å+QñýÐPR–ô¢²ö˜! q˜…v¾ø$Ç&ª¢ŠÓù½GA‡ãZâ61æ”WÇàªßr;)ï`ÜÕÖ°5ÿ¨eLòDTS²!©¦("ú墸*)@ª¤.·X4ä:ÒÀÙÞ4mås™ˆ©Ø¨ýÂìs!®k—õ|´87Ä[(ôçþZ¯–]mlš¶ë†î²´GêGÔ”Ñj)Q‡r÷¨´£JY@H¤4pyV_<¥1Eaë7ˆb!†gŽU†BAZŸÑôÿ””g ŠA·ë²O«­W¦‡×e© ÿsPj”eê&Õ®ÇÖ1!Ÿçû©ïX´\¨’%ä× šÏŽÔ~‹ƒ½µš—¸åØ‘aޱ/ìÿ\Š+ƒÌ¯ñø‚$ µ®Âƒ84_ Ï<^vKóÔŽÁi½ý`«ÜÓØB¯­9‹«Ò²©Ç\ê?DÁ -óPeï´JU¼3£ØÇzØ¿q°ŠËE€AGoSiï9Sïh†äcN¦ñ+`7Öñ1;ó ã˜!ÈW˜àç‰w}âźæ¢qðcyÖ…ÆÄH?tåðÙV²›ãç‰CïÏ­Äç‚æÿ†ûËûLE†Aº2§º’†ð=§% ƒíÞ˜rDé?áRô«ZOÉ›»çÔ –¡ayÚÝüÍÇøZÅ}ï°¸€¿÷_öð6ȃ%“Ö¾*uot%7{×_@ /É?…w»ì/%îQJºdNôX¯ÖY&nÊrý&ÕÇyæ ë›ä Zž}¢¾ŒÈþàU% –wÙ˽0põE2ظmˆø¤Ìµ”xt´Gf³F½VþDj8}õ  ¯ÕhÂö4úŠô]¯ û—rÿ#çKÌíüù²À?ÿw_gI݆—ÿiŽók굊æŽw?‡;×}TÁ áSâ´÷Ÿ~AÁ÷ëþ{åW@ÃeB^Û%QÿØæ>Ï{Ö+Òg1ƒí/¦ülçš_ûôO+'n¯=Ò‰û¯¶÷åDÔ«¯€#——3N® L-£EI/ƒ¦§ÒùÝ›0f6”Š?¸’¦šwöË/¹’2–2/§‘— ¯€T½¶WÀƒÌ‹r`î+à÷îÓo{XP‹)+ÜF;Aó,õåcpžà×H!åêÉÕÀâW@½Îõ ëW³’w©A»”¯€ŸAYŽ’ñ/˜rߥwïÊ)“Ÿk{¯µ^ÚÖ 3µƒ3¼WtÔ®PgNÈï|$‹žmM}¾?;ö²9òRQû!þ³d"ÁW@;ù+@¤~ó×eã+ ‰B])aRãï•üòD=o¤&öüéRèT³yÚàø@üTCö X!ñþO%EÇ#IÅWÀS¦ê+àaé×ù‡N=ø@ï¹,bÿŸ}ÙêÿPK ðDŒ<…PŒfð5,(htmlsingle/spring-webflow-reference.htmlì½isÛV–0üÙùõ<ù}DÊkâ8‘{d[N”×ÛXv2]SS] qIÂ6Éì®ü÷çlwÁB\$ÑŽR3n‘ÎÝÎ=ûòÓ$ŸFO~š(?xòGÿý4U¹ïMò|ÖSÿ(Âó£½gIœ«8⦅ÏÔž7äOG{¹úœâû?zÉŸf*?:={Ó{ôèá½»{î§<Ì#õäl–†ñØû] ¼Qrá½S#•ªx¨¼Ÿ‹0P?òc?EaüÉKUt´—åóHe¥ò=o’ªÑÑÞ0Ëí·}ø¸çå0!™~~ÂSý)|;V±JýöÏ@õ"µõ¡Ï†Iž·|©ºÈ¶>ô»$ËÔ’?Ë“¹'ê¼ax÷_úÇD3(†z•eäþi>1ðìë3ý.lµò3Æ£„=*ìÝëßéÿðÓá¬ù•Y1ü¯–}¢|[JÛ©±Å ÐŽÊm¼ÿˆ¯ãO3¢Ž·ž%³Pe^2òòI˜æàM} 0 þ'PÞ(I½yR¤^r{E¦<H|I‚0ËÓpP 'ñòÄKò ,èÀƒý9‡{\?Ç×¶3"N=Fsz¤x€¬N€ÌÑl~‘"¤ åóSü.²U ÊÏ–2OÃñ$÷^Ó¼‹‰"fŽ8+VN`\8Šaž&q8ô£hÞǯk[ÌÿNÒ¼ƹ‡›ùÓàÉ{4vR¤ÀèWNWñG|9–/þb¾zËÐ94Êë0`+g¹J]°2FL8޽'wûÞ©óE`Ð<¹ öä® vêÇ…õ’s PÀ¶2Àþ„ö~Œ4~Ï–N»=›g¹šöR”ö€RáÞá÷dÃ3ä ñ,-–³t b6KÒßGà@Èžü´:Ì@«(™á¬îî(AqÀsžXüGk{Óó¸7„×S?Â1ö½_.Œà‡*Ëìùiê€D9J“©÷Ê?W±÷Œß\sìA µ¥j–d!H³sœÁw]g÷Ïcêx¸ýSì_ƒ[cÇA¨øþNãûê4b¼ÿ®"Œ‚:&"²Ö/¿J…1L¼7‚uB:>—¯h© ˆÞõ:•A÷Ê—ö^éµ]Á:—õž¹JpU}ýëš@§þ'…bØ=¾@ ™@òç£8Žät£˜»ÃáXøœ}¸V´cÿª‚5 +” ò¨ô_Î=¼W'úW€ t=ýĺ ¡3$øpkŽùÓš°ÂxVäI‘ÿï{Äøûð }×}6ƒ[8hJ!²0šê£¾÷›þ¼:<䥈ÞY10—燾÷Œ¿öô×›ÝO´ðä3ðÍŒD¨—úÈöO^Þ^ÿvª¨r#ïo~#¦F¨Þp’€x’!\¸—gÌx@49yé…Óc›¿&šÀ8Í„Q˜ÏqÜ¢—žóåZ@‹Œ”¾ûx}\ ƒe÷ñÂÍÔ¯=_ápb¡êeÊO‡"÷ñ¾á·žùß1P•|2Ý ÷®Â `3Þ©8P$ýÓwëc½^A¼›#‚í |ŽdaºŒ ö2@·uv`«Ï³(†9B¾/ç9šØ ÂÀ£p-Á ƒEè°Û¿Ñtñ‹5%1H2xbéýg5ÝfË_{þºšÀO“ÉÒD½§a `”N<úaM hÝâ#$MÁå«RЛ¦4<àÙÖfóEؘ&Qà^Æ@y³(á†@Í<>Ñt‰F8÷£Uc¸-wmÑgºìm»† íez?äRÞ-o‘}rÝNý¤a–þ=1é9O¬‹š0Y Ú< oIú Á_5ôôkž%3 0ÜÑça6‹|:eú~] ø‰Œ¥DÍöC¹ÿq#›•(ÁBЕ” € 1¸91gÀ=¢×Ð¥äüÛÚ´<€«™•€ßw€ë_×/3Ùu˜LUO³Ìý‰:ËÄžüæÑo O,»þPQ ÇzhÆÚXÎ’AÔ硚øF¾÷ì÷€öq’Èý²dð„«ô?µÙ=Õ.ôfÈE²mó{O`I¤Ö¿â‘ëè׿‹†«\˜ï¶£“8'ûÜç¸ÇËãG¼ú3[ØV˜S‘’,§xF67 ” W¶íû-Ù ø |È|õð ñN=úYmhN0c0´@«ã8П÷%ãZ ßt ˆÏé{¤=8™ü†gr¢oÖKynÓñ@,…ã"õõáz&ß!"ˆë@Ïa Æ@)ÂܧûûHîï©ýrC¬sÀWïÑ–Ïݹ°‡Óè†HxšÖyΓ^~RÞ¯ð¸ûíºxéN!Bóm†##F‚¨Mî’建ò@þ C±&Ç¡-ÊG¯ÙV²|­ûâûîì½ãíèÅbÉÏTŽò Šüô 7|±>â¹`+H÷ÃæH'Ðù¦‚º9QS¢](²TÉoýÏY°)øŸ…C„Èôÿöøw¯D(Ö<íTÑÕ5Gø€A¥ï¼d]„í¤DÑßúâNé»… Wℽé9l*rB_ýö ÏWíLg$2ð+(ƒmŽC¸4 Nÿó4"ð÷Ê4_~ÚÆ(òM‘F=‘˜iÀû¬†ù9[½Ðµ©H'?ñÑ‹“f4`Ú©–§q´a‘åÉ”(ä/òÜ—Jº!hÞIT˜ãÓšá;óõFô +h-"m„Akb8Ž}2a ÖSÈËåÓð[Aÿ¸§w ö#C;ã §ÿ*Âá'7³ñEøXUPïÞÝÚ=ØxDèñªžG*'øhïF¯”¬L·ÞÉ£ë£ ­eâí»ëÀÏŽˆå Æpdo×2aÛA'NR­\Þ%Ïo}¤çö¡MÆò?úŸitýâÂaŽáKØ»*kðN­ƒ|u€‹cúõìÅVÉ.®"Ü\UðzÂýž>öž³u–äÏfiâ'Z£÷äÝ&½çqʲó <ŽqÂc|›³ñ8&ÖX$ ZQ`Üß·°Jm(?fTü,³È'} פíOá1ïü¶žg«44tfmÌGÉÃj®{Bv+ïw´™Vƒ¾6¼qá&D¼jPÜNb˜ ­µÔ@GÑÙ ";…MÒÞ…Ã Ï I§›Ÿñt–ĸQ8HAáZðªÉaôÞúi>‡Ã—Ǽ—ôؼ•N¬D†ÐKɬnÐ[þ°*$«h ž] YÈ{E€›e>Šm“WÖ»-•ñøiÄûM–…õç]òùêÃøm=Z¢a¢?†a>´0_á—´1¿‡qäëlM#³9ä,+d˜ïÐX€Ÿ„çË'ñy˜&q£Ai%Œ…yæ¼ÿhLâ‹dí®¸*0«¸ºg°úœ+ò»[NÕX“q`ˆüOò¨±Cü÷4*YÈÞ7ŠKç€aIi¨ÞXåZð£AËÎc$ô ¿L—áß#ák8Ç ÕZ¶Â¥<Å(1•{ð]ò1¿#…™}ú#Žß›!3R¼RêÓ$¤È‚¢eä.9Ÿ]|ñä·ÍÐ~•»ä.ÁguEs·õ‡™&äx³¡=wÉýŠ¿†;&¿lv¯Š|D ,…1`·>ÐW´Ô¹îöï¬ÅJà«m Žº2|÷#¯Ž¢aÄû n¶Ü aÚtÈš°Hþ<# >ÛÌØ´p,ôze4\¤× ‘»#Ò+ …?Ã{~.Ù¢BÚÔ#/ÞBĤ÷à^-ò&Ê蕨n‰½Z̽ÒïNܽõ†áMp÷äžÙý—âòAº£ÄàÁ´£Ó´2þLä0À^†ºÊ‚ÉȇšQ`4Ss…ü.Gd,È9ísža|û›Pv’YÅVNááhî90ãpÎöS/÷³O4v’(†}¦sß2Äw¢0›àgÊïÃt‹ŒBâÍ4ጠ±½Fð0ÅÇÓšA²"pLüh6IèØà­4w÷G!yXŒ›ôå%ãþ% zc8QÃOI‘Óâ``ã-Åuq )e ç¸cçÉ'˜‘— èe s@Ń¥ t§PÜ•Òdì*ªiN::H 'ȘòºF3š® e}óºŠaEÀ£bŒs^è ‚ÖQ˜bŽ¡@,[r¾D†.{88˜á¹ÒlÌ\M…x¼QKgcq$?ì(÷qBi?™‰ojýPnÝ:ÍõÃulC¤†ÃìÑ}.Q<é 7>ˆ$0åçèñÍ@sÐ~”%¾‘-ùá¶A,ü&¡ûÆHÌæ\àõ¢­þ7·àÏ¥ŸScê ŸÕ=÷¬ç ´¹#ïöxpÛ'áx¢R½Rþ]N m*ßÕŸ¹†ÝÐù1¼÷Í4%Ê´-ümšŒ8^Ó€žöz,ìk¢r [FÄ7ð=ÊÇòõ L[ÕùØNb2+Á ³Š÷€YÏÊöþž'3ŸÇ(¸´ÂHr+ǘç6 M#öÑmTÌÖÆÚ4à ÿÄc%3ÌÆ2˜Û•þÇ “è’‚lu”!êIèõ!A)¡‰áAš2›ÚðáoÀIËNT4£T»Ð+<ô°`+H>¢at°ÁÓX×wm¼¨ŽÚ$“@„CaU^ûñ»,¦‚6†Tõ“tÜŒ9hó’¼À7IŽì—ï2f4RS#Í ãQÄbOîrt}îiâ ÆcÕ$³}ÆÃÔ_aÂdôð$é¼a¶gÅ=¥õë®—lµÝB{ gž‘ăEhÛÉõÑÆê‚·Ëc¸C&Á•Éþfa—S]0ËCQPª³5gòVÎä—dªÌ\§  ºvbeH¬È$Á^#Ǫ'ò}(wt­ÌÀ¶»{‚9·0*ËÀ*—RK”[žl?-Ì(¼ÛŸâDè”è¯{‡ÕS*Í´’7Ø7r‘EZbEÈψIZŽ9“ MÉÌŽÀã…#z“Õ„TùÁ\î%î³OI…:\Ã$E£šæÐÁ†ˆðV?<ȆÃ8ÉéZÁµV(Ü`|–Lt3¼eTØ–>Åp7²O~óQþcI½žD½Ü‡_ `]!à?ÆùTŠeá+T‹á4pž‡¬]=¹v ¡ÖÁ´«q¸ôЏ0$¡`ñ`/·gò)Ìó”¤ßwòòäøìdñXõoÿaãþ{ß|íö1»9«/嬖öeØ7L/S¥©ó1Êk#¡ùrƒòhúM?oˆ+û‡¿–Ó÷œã¿&ñ­¡¦ qß­$Äu)®°Éí<+ŠwMzù¡³âÝ;A¾ÈÔ‹ ¹ïC¦Ø„fbÅ’Œ@3Ì&b¢©b ß{sösè)ëæ 4"ê­±4)”SÒfÓÖSiŒYÎq±H˜ °¨¶C/?c[q5=’\àYÁê{+bõý2VWYk IK;Ìø±~NÒí¢ºJR†ÈŠÇúUGþ>ðü ¨HÃæÌC6Å‘4Ìr4ÊĦŒÏZD;u­#= ]ÒèPÆ °/ëëK ¨Å´+ìNLñ\œ‡;_%¯WF­w<§J_©}ZE9Ï:ZŸlEí RÊ.Ý¡2ü6Ð|ž×{þh.Oc?ºn8‘yìØá/ßž OÿVED¿[ÜAõuûÏ+6|£|ɧw£‰¡÷µ©å5š¼L/¿¡ÂîÈ_•–^G†×I^ñ¥YuX4ÒŠÖ£ù Ê»\m„T€î¡†~AZ¥ SSrå\•mïž—O|»ì§0Sëká¼ÃPøŠ3i~ZE'Ö‰’ñ1 ar¨Û`F{’KkE[èHX<ðs_G*ø#¹\á×)+ŠäùÎCÐå«O/Ui ÏçÝTÆÓóùš #¼ÙY]„g%ëvCZbEQ¯ú»ŸKåÙ’~T}ìÜ xdoÍq¯»nrÞ\û¹<=@¹—Ͱƒ$ãU•¸C)íïþ÷?@Ãü8ÌÈ÷¿‡ÿÃ1rðGªÎ©Ø ü©¯Ñÿöì·ýÿåàõò½Ãîtwaû[ÑYeÚ„ÖºÞ—Ñz¶r”nÛ†kÄéRëÛÎöfÙy´È–{[ºœ-ª¼¢tº-Ã¥¦‚þÂÑJ¢c—% oî@_fa¤zxøiçáTuE¯äÀ>f7gõ¥œUeˆ/ÿÀ®Ucÿ2q€k,|…p¹ ¤N2 ¦=v¯b’zU›Dþn<«V·ätöe*å±óª¼AQ~¥àôŠ#ÜÆ vF‰É‡r@9.f¶œN)P˜\×zÏ÷êøõé‹“³÷ýéˆày2Šz“`¾ˆIUµ¹_QŠ)Жa·ªÃóö”š";é+ÕµvÃmföê²½¦·šIþ{S4û µšžÉ-ݪÙ“‡aˆ`1üÊÃ;k¾Uc5×#g8XëûÆ`­j š¶¬×òlû³l’pŸÂr¢ÊI°M[Ÿ-*GÉàEt#·þÎä…2ÛB®$q”ø„ÐS2°ÌB¦No™'oH5L¨…ŸGÛóYaz†Uç¾ä#s.ÏçÜ‚tàf§ƒä–!®íŸëpzÜGýÌH©K}{þ‡Ôͼ|Ü›RÛLâ™”1T ·?•·AcK3Ž­rö›b¬°' Jk]‹¨lÚwŒçnäYR¿•Ÿ8!lËÂͲûƒ4¹È˜Þc½ü$UL÷³]ôâéCùE©0 Whp"-à™@»Ô$4ñÖf^ˆXLû™fx’óWò Ô“6Ýî%ë쎮ѻèTÏô&½kÞ¤R4â’0ÄKßCöè~Ur®ÜãÐÒYF^#Ö/“¨[O›¿r½¨åÍ‚2r±d?.]æ\xóê2eÌåôä&k×äÊ+M}úÜŸ÷ÿÙúáôåóÞÙëã·g¿¼y˳ÓP7G¶í#»šˆ««>·›À«•á*b­® .×–‹"è:ˆ +$}ñ‚h—H‰+“J;é8»‘)p#žî*©¼¾LÁçËN¸9¿¯ oàFŠý²°âF¤ÝL¤½ww¡Uµì–¡ ˆçXKºYhuEן¾2þÎlIÆi’¡em´Þ³S)PÓJ­½ÄœŽ-0‡†?í"Êŧed­žñÍ&³¿Šàèì÷ KlÙ7Ñ»äSò»-_´À­·å"¢45íIýjœ„®õhžJÆë/$Zžm¯^õ^•¨N)QÙVo Æè·É¥ÇD†½u‘],òɵ`¥¬©"*%Dmùº¶³·žÎéòŽ8ôEþ¢Ì¥<ß'‰äçrrIQxIÃCÏ!\&,µÀ>Å|åÏȱ‰…y‹|’»Æ¯Né‹¶‘«¿\ ö^¹À(éVšmGw,ÕÜcXsVP1½ÆZ˶$´®p¼´0ô­§J‡9u(€ññ㸫ü0ôÏÃì<úƒZí¶Ÿý4U9¶ðÀúÄÒuÇÖåb{Aè#ÓõÂ(*¸–3ž-ILU\ÿ×RZ:ÑFZ'•ª £"Øü„J×aBJü¸Á¥6U0l2@ºµçùQ8ŽáèTÌUèÃ)îtx´N±)ö!AÍz ªþ äýÂ4 ‚H•±æ&wsöä ^ÀÒã–V£ׄ£˜(† CïW0”x=ÁÛ­ uwÀÛÓ¸Z‡å@Ÿ*^hàr„™¢$-ƒ¿R1|;Oy‚÷’¾Ö‰æX±±ˆri÷A­ÓŠ4sîJÎépºŠ9{3^áÃ\ÜœÛ(xÉpX¤ü#ªúÜôŽ’ïí`d'|B^«¼~L%Óm×v–Ýâ¼ïb‚½{xº8[šk쟇c.Â\- ˆä“˗ʈ¥N¸€9ÎÉ!Öf–À ¼rF\´X.Й’3Ì·HŠLß¾mÞ‘OŸ‰i­te¤üÍiWî„a)úZ yïλ‡péÎhhÀ3n­Ý}ì,|Ìó~™ ¥áÊ7aQþü·œÃ²‹³‡Ÿ³ ””Ù¢~;H°À$GXŸp©Q$ô“h4ÄwÝhCpܦÏ …»×/ Ô0™ŠˆÐ¾Í¸ I(¯_Az;5¥¥¹•¯½ý~Éå7±opÍ]Æ¿÷J0ð›'zoP¤à 9HÍJKb wÌDÚ`¸YzÛ#j!–“$ñ”Eõç*÷Ã([–]ôt.q£Üï…WÅS¹tÆÁ‡aÀb5 T¹šb{S³0S8w)¨Ý7¢õDx=GÄÞz‘¤ZÞ:°âÆ¢‚Ž:E{ˆn±Y:²Q)D ¸¿Ÿ<í¾~!’Ñ¡(%‡ ËîžäØ O—†“„E©hüÚLÑT`\ih=€Ùƒ«ºV .ßûýú·Ã…Q»,±kÉœnËôBiD}øbîE‡Ðg;–Îe9'ÊŠÁ4Ì»d“åÉ2X¨q¨ YXçüîÚæ.ôÉfª¤o)ÖUiÒª®屯N?0_¯ðˆÅÜ€èFRäÈ7Äng¼- ·¢g(B¡^¿Œâÿ޾vmý)kÓ¾g¦æa{•NØíaºåo€G5bA?Ž…¸_ÁùSë1AzV}ÑzIE…yfž}ìµ+1 P†ã ný®ÕP蔣Êu‘):ÑV6¸v@Jθ@SÈ?°k}4^ ÇšIÊFåVRã¶¡ˆzÊŸ¢„ˆ=ê‚„eÁa3?àî¬!Màõ‹&‘9gNƒ’aA­:D}Ö¶iîX‡t\ZLrõmRµÐ<] œ„MžcÍØübÅ+c gÉ£qYÖDžÙ3ÙðNÞh\«ÝÁzõ’Ç×(}´®i‘r¥'Ó8ûk9*˜–N·s(Z`˜5iàª×F5ˆÔv–¶\»½ò“#™k»·@Œ»„ u9bèĻީ,”ˆ»Ýv!Eš=&@`,ôº«Å1Ýîy…1-ìQÁÌ^ni̲#µd£‚›‹,o‘"ßw ‰†”þ¬q—_o€bÅj"áÐZ%]©0IÅg' ªøä~×V„¹3s²(ùÔ"Uš£PŸ‰©IKÄÚ¯az+¯ò0¼o¥CçpÂ\MêÅCØØ"¢^ÄG{A˜ ásâ¬ÞÄN3yVsðó#kK˜l8oø•6”­Z ¿Zr$K ´hˆÏaÓø»ØŸ‹ÈQdÊû+øR²ko6ÇðtÁ’ÿË«µü©^"\âp˜“—èu ~åe‡Ù6!S24yʨÃ-»Ç«gœU¯ã‡ªsiv$#u3ƒ|»¬ˆêDc¡1"p¶2¬ëàRx«bâüoRýÌX%sD©£ù=ºïò“G·Åœ/ºáù–hû)“#ÝëX+À0WDÐÔ€Jšk'÷~ªòIdNóÙ¼Æ«Ž½`ùºšžûièë¹®=xSƒŠYøRîaßAÜóù+*XöÑo ÙÞr»ÌSn¹|¢‚˜÷WDÌ]³Ç‘! kó=‰íió€³ZpK;ÐM´xÁ¶rrànH8þ­[»gþ¹µš‹§ˆŠ$SÿicÒ€¥øìÙ0™i4¥³ßµÃ—c>cNÖüB–ÿýLa°é³4ÄxÿváOŸBûf_úìc¨ÛñZãn/ÍzÈź†#v ^²1®ai-_ û¨Ò\vgG0¨ŒëqÃÜܾ¿u¬s¡É£9¡ lÇ@Ç:³tŒžSühá@H'^!™Ð#,@ñ+3(—¤k×xÌu#d·[‹_S\;Iѽ)¡e:I È(êk!,Tpc·¼±[nÁnƳ¢Kéê.56éöŸ®¦Á'qO4¤ iWA8‡©‚Äl´/K;ð†EŠÑÚžßÇ=±d´áL·HYk˜K›ööÆŠ}cž±bßX±·qr7Vì?‘۪ŒEÒóEˆI¢ &˜éq’ê÷lýDæÅÕ÷œm¡N¦0Ц^Î@ ó%Âjë] ;!aÅê_Õ’k2±Ó¬’"‡µ™ý{“_¾¡ß0ýhF±KAÓb'>îëœaO[\i¤CŠòÅRP ú6•AL,3˜¿~ÚîVÆÇ@fx:!ÁwX“öp〣}I’NϨO 4Ø89~˜N˜æÍò‚¬þY8 #?Å£µO²å¯)¨Q>æÏtêõŽ«~#‘E8úi°›Œè}–£\|à½!t¤Â´Çfm·ü¦‚Ûý~_ü~“%ÀL[&Ò£zÝùW/á'5A?Ø{2+Q8\DÌc&ŽF?énÈ¿¾i@ŒÀÛåUþðzÿö·nin²”Å{€ùØý‡A¾ùã›EÆÏ­)ëtêe“¼¨<ëFýÉë C*CÓL«6T×/_M«Qz¢]lZc¿±Ü:”{÷Q…aÙ8îJºÀ-{CÜ”ol À û/Ó—°<à²ìš% r¬™Ïé¼Å˜É+bV»³-€ºÉÈ袖³wúço3uSSäeâW›`ØÁè%5ýêV YѲÝ÷€³fµ8ãØÃ(B\Ä>]Ó™É@X¥zIX&k¯9hœõm€gò~¢iyÙÛ‡¾4 Åäž|¡ˆ'[ÐÕú2¿õÑ ì–¹Z!m@̲ßn¬l!‹lâ itT°C÷Õ(YPž)Ö6gœŒ G€ã݉ :déŒÃkÃmÝ •Ñû•Ÿ~*!·Ÿ™v© ¸Ñ€å k ]r2¥ˆ ØkdVp÷ç_(f¯LR·wKV˜¥=ŸvàyZ4´9ºJo+Ee ’¿[_„Ôï/“!« ߨ755£r„·I@†1*d:ÿ Ž#`XJMqÒqv(7¥jNYn Ò[»•k'Ó¨’yPŠ›PªÑ,\Ë:ÒuÙà±±ˆ­Q§,c3Wœ“Ã\Hà5`©Y½FÔRÎ¥ÊÜåKçŠCg,¡h½ô´HHúKœM½ñ(P1v>÷ír‡txü¦¼c«X,vòb¾¦Šd[£ý‚"ý–!ô¹>'=‹®ÎõÔ—ljSc¢ÛŽÇ¾ øãþÆqã¸_:ïÇýãþÆqßmö7ŽûÇýã~«š¦×íd.YÝÜ–|]Ž¥Q…ýšB”`ÀV¡³Cì5MæZ§²,FkIåa§$t¹;EŒüi…~þSIf)SгyœûŸ¹r %ù~m”tcÛXšò¹LyäÝh‚®œHÃI‚E×õèVègÅl–`åT\Ÿ‰Vñ[ËÆ_–q¦[pµðžFr[=|I„AÉ駆U…öµöVWqÿ"üΰù2™ðÓ¡Œüw{½þ®¯Wµéº;Iÿ‰[æ\ò¡"I–Á*;±&‘.]Kê§â¸SGIAÈÎhGðg>:T1ñ×âsS)p ×³Ð„…y9ÿÜ/ò³¼¨¢?ø7Ax,4KP} +Àé}ôSÓqi{6Øq:_˜LS5K@ JÒù¡?› ìx6ôWB ŒØ*½GÔ§ýë–TŽ‚+ŒŸqºàSæ½3Càñ8sU1áÏ\¦)€ ã^¤FùcïNÿaÿèÉw)ö¡Ô_Šæ<8HÒ@¥G{wD1…GçG{¯"<Âÿ^š\ Ç:Ú»WmìI…ôçÇäxêá7üö#XÚÿ ¬ÿÝ+uÿÆ ÷Çá¯IÀ §½÷__&øsj¦á>RXœï;   æ ;ÄÃ9¹7L燻†;8ñ³éš>™¥Éy ó>h^÷„;qc•+Ì‹M1+™ýÜû°jB@aâvÑGˆë¦ÕÒ1”)ÂU´ŒzÉ8Jõæç×ËhÔòëà¿«hÍÀ}ãOâ€-dT†|ÃnxO2Èá-ýU‚[Nyü·ÀÔ2eݶÝHŒÞÃClƒòÃáódXâyˆm_5ÿ[³ASŸûøCÓ®Û¶ÔÈQQ§S_AŒÔpý1˜€—ˆþN:ŸkŽoäÅ—žók»Øu{ccg•ۨ°§µ J´]ÿcŠ©³º. çì &°€. mä5p×$*¸¿0Љ™Jó¹Èv,€I9ê¤K y (¢7KL¼ªÏ’"@ž1ÅÞ‚~÷„’Èw¶ò.wcߨ`ðôçâxIL±eŸÃh8©4ŽK‚—GŠ*¿IÕ<,BÏÁû×'ムc~`™¾_R‡„):3ÅŽô0ÎlôGxñÅ—Äæ*û$þg:å$ºSÎ]Ó&ç˜Î7”DuÍ´Ï{ap>™b8ÁÔ¦Òj™$bP¤³7Ó…z²~µë‹ çÅ »Ó Yž‚ªAG§Çië?ÑZTŠÊB_ÐØ¤6Ÿwˆàçø;p9ž„Gu;~†x~`ÃĹÒ~ 3œv>IT>Òßà©Lš ñso'˨Eqb=¥²3Ü%otFE)/¿ŸNDÅÖD1q”Yúvy?iED…P]$ü.²k*Ĉ8Ãñ.?P/«‡vM©i‘Ã!úi@-1Ü™- _"söGzˆ|)RL*UZèfù™¯E0«LÅ•Ïú;…ˆên#U¡™Ã*e¿µáÖ\faÙ„Ê‘`Á¥vÀF —+2΀w׋ÂO²Ä¿ÿëè’6=ðó€Ì³Ú.h×v”óYúØøê- Óþíší«zô¾Ü…C¸?®A)çÞPŸ\²€,ŒãÕ£ë=›44¹—D‚Òì«•b˜D9fM\د —•u¦ ø -,„ŒÛE–X8Ú‡‚£ixþ4ŠÔØŽÓ1‰Š'Ÿ1YÐ6a–õÜèŒ:#J\Ä™HW-¦ÉFêþgÒa7à&yÙúö!¢ˆMLèK•TåB1÷ÁÒà'–²tªŒ0M·˜–fi¶àA}H¡‘4íH™z[£}¦@Óc ó‰J1¯…cÔõH¶¤LY ÎCÚ‹ÙZ=Âiê}«ÅâÊ–Ÿ)6C{Ë¿”"‰´aoMDÞ\y‚¢º\>è(@´¹L›X?kH §¸y¡*ª¦–ßï?Ô>ˆK»Úú¾Öø­Stœe fŽV|4%½vaö96y-¤¾¾t¸ä¥W¡é©ôŒ2Ê[æôF\šÚ¡µ¢Sñ·’.Õmu±ʳjF¾ïæãê ™§É¼–7º(vÝý]ßkíܨŌ–]Ü ”*ñ¢¦œ¤µÂäN@7‰zÓ*——§ÔöéØÚËkÔ·°ü¥[Ç #{sðØ|\×ëxL¢hÑ"ÒŠÇ Æ¨¤MÇÌ#šñÜ6aÎjƒñhQÁQä-ùE ½" ¸L³ºÌÔ½iµ¦¯^·›vnq97-õHÚ_—c§vân^b3MƒÃ‹›iv ¡_¯¡æÒ\ÀÆs¹Ê!ö^‡x¸ß¬G?Êê$DÛ˜ËTä|»”!¢ZËíÛx¢¤@ox2µ­à4wSV)ñÝ)NM€¿µFûð’G\9¢Žà‘IIVÓŸ×ÖìûMÒüZ×ð»ŽòÚGr:"éC¢yìˆÞóÅ?X„½5–Ò*âu•èìÔ/‡Ñlï¢Øƒé#×-²W¨/Ž;åtº,ßê&k¦6Ø·eüÆÃ¾—*t”ª×¾^ãÀÔß}¨‚ÿÏÜŸÚ®AžÌz |ÔE©-–¶ ­Ÿê—¼B s|Õ8Ç_ýs?H†\aMªéŸӕº™~!2ðA íŸó_j_~9ðʧ± ô ÃQ1{€“´Œä~·®€T†QÇ;Ù O?¹“/£ò¶UÞòæ,åÚeç1Bð®ôýú^¹*œ&®×ðjókÇoO@ ‡vë›–p¬-VÄ$·~p™0œ®4ç*ÍlÉʼn¦»µó¨þ²þ‰Ô!u<“-/¯q2äØùÒÎåC5œ |»…ó (Mg!lîj»p®¼ïNMäXiO-ß¶¾³ëسJØ oYåËõv¬¤qÃXWñy˜&ñ”ð­ø‚y@Öfde²ËIóÐiŸILÙl”cÞrñ VcŽd«^ù³>nÝÛ4…Ñ%É닜‡ 8äµDûQ²Ç;HgÇ1?ßé˜2˜šŸ=?'i˜O¦KòÀÉ‚k{eÛä0æ Ä‘Ó)Ç™\;ÔM|š±Öêþ´&7É #ÜÉëë²G•é$%©Ð7; ´ù,•=Ê„"¶% lkGy)dmùü•Ã%Kû3L¾Ìr­Õu Ò¶R#pënÐ]¾8Z^ þн¸W –ÆèÏ ß\tMˆ'†¢kD‡ÌU‰2Ž/huÀN½â±’DF:tÝo¢¹tÉŸ#+Åhd‹'½,ä?1‘©Õ~³Œ|’&Õ¢ —]³÷@ìí:?ïyYq«éÇ]¨ÖAi(Øñ`‚¥zÙÐ0sÂ¥UŠ–n5õÀ+[Ùœ]Ó¼cõ@ÎkÊÀ¤VÇîžé Ï©ˆœ3ËóK¢[Ûzù´íÕáXl5+qBi Ž›—é9¼‹¶b¿ÏŸ:7;­Ž6#ž×PNók+¥¹rS½2·x:÷,bÈÉó[ا˜‹ç„×DçÌ:z\8IâÑkg Gz:ib%$õM6¦¶ÜÒm‡=åiéÌþ%bTpRO² yóŽ$V"ü®3«p·óý\¬ÒÏ(ûª‰›”RR— í›¦wˆ®1—1ì S'VàR}£êŒ¬ŒB±~Ò<‘‹¡O ´`{ÆEÃ=ó>~$: ´Ê™©Ü å<ù8›ÇC!NŠLìµÍFi†%°µÕAGð‡Ÿ88‰ ÂÓI0P¸F%R MB¾Œxj%Ù©’s)aÌc*ƒ"sÆÈL¯X¢…3÷6™p>“ Êræ ­\û ¾â¼|5PRš¹;WÔô!B¡÷¾Z7þÀ+m¢7-¸H8—•”„ªQ¡ûùœŽ*Ï𖸾µÌJ\…ËÀJtiÊa Ø U‚STàšÝ¯‰-!‚é*%N(Þ÷ ުÉ3ñ(¬ŒkŸìu^Ù1Æ{t”ƒ¿ÅWÜ&ý`6Ïr%A²Ò wÏEt3˜­èÒ½ô7µ%‘ñM @QS¬”õ¹TáÊ$¦¢iªÆpéñ>påx)‘¯IÎëb:€ç±CDƒ¿U\L¥õÀs_7` Þ;›EacŸ(LTÎØ#K@(]›;0ÆðTg’‹Xo¾†³CÜêq #—/– ÀËh¤KÃ@•*¥Øµ^ºËÇÌ´‡QëŒ[§º. SW3›e‰­èÂŒ·Â¼}àüºHÃHÇÒËx´ûš€ÊDûvkûï/’ßý¹3=ík…#_rMoK´`¸ ~ÂÕø}Ÿ°iU`“zÎuÛ EµYu0T© #8öpÑÕ§iéšÂt]Ø‘à2„³<5Rg }xš„>x+ÈŸq¾æîÀ—bÛÅ@eš=…ç9H†´í"Ñ}>º9%ªrÃ'5‡³ ö°V³QÁ"IÄ<é2 ëC“C"ËÈeÛ÷e½\pùÀ{FsgAß^ š‚ßµÁ31ò?~só6çÂìË:˜™®1É[M­>°´²Q²C·œËÞî>YœdâkI¾%½AÚ5ŽXZbu¨ ‘jÖÈlÜ´î'-®Ž™wHŠç^qL¸¨ÿ*‰©GÑñÔTiÒáu¤Ö°C`8jSt.Q8\Š®WÕÓä£2Ó…/ó5­½.xô/êXÛq‚ÍCïß( êPVÌŒú½_~¿ßiÝ·ÉÈñM÷?ß}iŸ{õέN–¯‹ Pê* #y3Úç¶°‚%ÄÀL·‚>ÿÏ‘WÙùÛòæ+.“áõÍ4ôÊþh$.ïGìÂ…¯{ƒ"ŒrW`i ,_‡=kzÁaØ@¬”tS`z@f8K *Z¯*{ÙŠ@,ÉqŒ‹BïD¶[]ŠA™Ù¸.¡–k2UŽ-þJ<}ÍÉÄ"(rô3£ˆ©ÐØ£*rBÓx~”Àà$÷ c`‘¢K°®Í€ „}óWRU¶&1{8ÜC²®¬â1PùÊj¦a–µ@4Ú øÊ¸›ÐøXù¢–š0¼‘M¶¾uZ±áá]VîG”“«ªVaø¤UÍü0ýÑm(z@7Ž[izј/4—|ôÏý~‘‡Qÿ¹“†E›&D[I[‚ QHUî]øó¬Æú©1еs¿‘¸ê³.%YÄá?Š–ª™ðΩ ã2ƒJT j±TSt\È--^8:—º&v1Ì–¬Í[àÉ£I3æ<›(§9f#Ü2Ä6 Eµ hÚŸ2ó0ý4°¯E, É.œ¢cFj1s´|q™ˆíµ$¢7†e©˜’tL GJÛb™øl}n3DÀY¹ ¦-”`Ú–º]Kÿ‚%j*”Ç5]xD{5ÉůôSpÙ¢p¬mFIÝÀÜÀmxêDåê“'S$SK8ˆ=.khbç†]ª3Ðù]nØŒ²¸íâ{@E§D[€m…¼J!ÊsíRËäš KˆâÚšôÈižJÞº\µýø~s"‘ R1>U| ¸s伨pÕZgu°p£†! á2j°&´³‰Ðøpù¸Ñöûg4þ_m D2Tª[‘†õÒN¯|IŒUÛY‘Ï3uÛ'¾xípG~”U«­˜{Ì>üPω9Ü}#jÖû`yPN]È|à♢_%ú†BwIœ—bØ¡ ÿg‰Ë’˜ƒ@µœÌ§°‘ÔrDmv˜›Ò!<ð96Ð8ª(Èöˆ‘oìð5“5}¾+b¹tÊÚ¿±”r¤èrzæ§Áª!W—9—טS¾Có9ù< Ó9èd@vnZrµRÜi3â}=ì·Ë&ì0îëªØnCù$íšÅ|áLÀP°MµSL íQlAvà 7(€Bð¢pLÈ_´]åY¦»CeTg8j{Ë,ѨֆW–+’ó•ÙU%ˆ, Æù¯³bE1s”y`¬[9+1eÛm7³YPˆ§ŠÎ7õãX´b®Í4tÍÎj\}FÛaÊcŠkÅDL1€¬b7¬wwYïD aÚhÿê”ZgmÁíp³I’æ%¨×Ǫp‰I‘_ÕM,öu#EÝHQ7RÔNKQ±ÖßÉ(E$ ÁÓö€’Ø`B8©µ\s@‡Ãn\ïÓ¢'…j§ª‘ßHtyÆÂŒã 2õL˜œ)[ᘴAP©ÙÊW’Át­Y&Évu’zt¨'¥K“.µpŠ›QÀ“ «bI åÖ;ŠÅv®ão ²7âÓ2¨—ÍÓbXñÕ‰c_ÏžÕE»¯pm%Qñ+\_“èùÕ.³$Ê^Þ*ÿ¼¢ñ-þ½6 Yº¿:É!:CÃiCp:*¥"?þ´ õé &0fÆfˆ(}BçõÐÏ&³GKºI¦äýëÎàÑ-ÂLåñ;ºØš¬ÔÆ-µ»'«)^(,Kªå€Œ«½ƹc¹ôü±Áˆ•ÜR6âêX# Ë<…A*Ô‡€¢æ\ˆ"k»™1—_ŒÌ.µ'ãÓx#ß:ß8›²¼žgÊ%s0n‹‚µ@S›q•쑳à ˖ؓ0åJ7¹›÷RËš $½2ر$jP|fÂV,uó¹R âSÀ<^hTTœž.CcÌßofªõŽ:)Ì+ ¤ÝŸnñÇá‘ÜkÇ-’„ ÈKõyP¯³AN ¹¿"†<èˆ!G.†˜;×ãÊÆÌ¦Òa+ ¾ôyЂ>·léû.G­£û(_KÁQa=(uͶý°n½>À—O€f¶ò6í>œ‹¤G¸¡‚R=;°ßrn^©Ü§n²šÎà%Ó¯RUQëÜ^ŽÔp>Ô¥øn5 ÉIqˆk¶Dxíñh@¤ì(ìõÁáñe¬"ága4·{C‡%œ` ÇsEË È[YarWMI+ŒÅ¦T•#9SŠÛ’Âù‹3L‚n±«¹n!ÏëßÿEóÿCîËT‘ox£ò¤F.žM¸âl:C¡;ë—) ^ÈB‚/«m`®:ßEd/InX ¸’clyNñËÖDðãšo‹¶Ì¯÷û}#ß/×m¡ç‰±ü$<©[zök”S÷isr>¼r¿SKDôÃý±ÊËIæ†×º–p¤§¸ïlhŸ«¬ìçIàÏ÷oßvg‚ÿ™6­~È û ‡ˆM^½Š§Ó»»O,þ—ë\×`pnM³=èv¿4%üO<ªïqñ A=#Û"PW¦Ò˜N•‘GÑš 4EÃØü£% dä¥Xálø¿5츋—;²í›Òfû޼½´ñXGƒ÷b±úÊÉ´žÁ7üïßh’åd$-P,¤*ƒÕ݈|r)®rÒ(Ö´Tqë#›xÈ:fE•€áfï„yÇf—qfŒ»-(mL0]i€@:ò—?¥ÑýË´’¬Qä¬zYã¹SeD!%¥œ$2ÉVï{ÞÏ:ÃäÀTÁ¢V­V)¥JEðâi¬s~2jæVÓ½ JC˜±¸é-Ê€BŸUM²r¦ÃVg%±j±yàJÕ•$mTT…¯]9qtJT4X¯´-´`ºä”cÝäÀC¢¢(åÍÅ 5U ±Ì²šºÊ&|äÐõ¡d‹”Ü’üÍ*³¿i8„†’¹‘–QºVIcïßÿEÿ0ShµùÙŠ¨=ôgT@.ü'ÓÅi9ÞÍXk­TT®Õ7{Û½Ý)]¢u1‹¤]˜œäúS]ºiÜ-Q9*} |*5´Œ,H ë*3ÿù,™Î’q)zAµ¥ ÎvU ­V ¦x»¢cÈ„Ð3+ü‚$z£p\…±lû«¿‹è¿3²ËªÈ&Ò@(Ï¥ª$n~ô­c+é¿àX£!Ë)§A5µÉ%W)%(‹)NWlš í§2cѰÍðYÃììø*Ûá 9b&­…µqäüÓšMÛd˜ª}_ÕT\~„ìðR…¯¡\Ù",–ÙÝë?äQ±uY/ƒm&k6‹Ó<Ä"ô±¼·T0¡ÒQEê„9‹ ¸Ëå¡A…ýÖE-jùÂYðÝKxZI`ŽæÛ½ÚP9´Ì­Cï¿®ÆXÕ"® »„ãvÏÊCƒc§Õ#vÜ li>Ó†ùd4b•+‹u’JtQA[ ’F?Íùšƒ(ž`ÚörÏ’•nÙ³2Ž}Ôbæ†OŸœWðµ îÛFLx “†3ß$‡sÿµÜxÃòTE¼¥¼˜J™ u48AüŒë[_ =>Ç’©‡E¨Å+ÖÃ>w›¼~8=ð¨LiB& ”Çñ¾é>µ¦"–øÕ?÷ƒdÈ5BVqûíp¥Ó5Oqyßm(^Pò¯ÙUèE—êìTëp’À};ž*¬°®n,i;o„®Øí¬gÝ–Œæ&\OЊǺªQ© 9ɼps0 ËvxÍ‚n ©ìY”|«:´Èʪ×-d‘'3î^­©q³¶S¹çl¦rc°šJ>:h[*s@7dâ˜}¦g,ÑcR€ÙüR’豫2ác¹/º‰®¶,U‰t§D’ñÁL×4嶾鱆 ÜFz¹¬|ñ¨$^èQ\´Òé…¤š ÏR„Zl¢{¦5Éë´|.SÃÍi¸O|³…{o%?ÚsƆ)dŸc8Ò ³F‘Tåwû½:æ1G÷(™ƒ«'Ouµ¢¨ ÊuVh°µq¤Òå¶“*wê{oÏÃ6!i—H]Ù¾=ôã.­F”¾%&Ð*³ÏànsýD ³¢'é܇q`©,Ÿ”¦rZØ„Sës.ÖõœøÓQ *×rÊWÂ¥uQUÉPF|Ÿa¤K²ÇƒDhQTŽ®’-“$ð¼ºÕ¢¨ & 7P>Mþ@jIJ&#Ú½³?DΗïJe³Ñ6¢†.îV‹…†(]ÿ–ûÊ]Pø¢® Rm6¶¡rZ›%Ϥ]•Y§8‹¢(cwÕý½å13ª“q}àa^ ذ1ã–y}V ¦a¾ÝØbLºO§V&ºÞ5Çt^ý)ð‘DöÕ{ZR&«}§VméäØ÷®8<Š×ÈØMáÃæ€°`°ËÝ·š× â¨» Ž’§:±¡l7®4ÂÑõq9FÕ6Èåbµ˜½`Þk±”ƒv;œ;ø»$™¾NòãsX1ÒÏÐöTÅέÛ²rWíÕýNöê× pÀ”I]×sö¨>|Cí’ÚLÔÝw“(´ÝÎo¬e[ßáæ jYùsê§ã0îEj”?öîô†ñž|—†ã‰ù8‡V¨ñÉÑÞQL±æ¬’bÚóþIJä'u´òÈ×cøkHúÆÉÛø9Of M…A>§«átŒ¥Böþaý/ÀN‡G{á F‡8áþ8¡‘0ÆDÃÅiï=ÁWà— þœši¸”¶†Üߥ" ×Àœr·^?&‘B¸‰*Hʆê¡‚ñ1du‚ÄË©Ï!ÂZæ‘ Y‰ù·¸ÛaÑ®£™§î‰¦­»äî%Ë&ÍÆ:¥¨Ög•ù›éy¡™7É1ÄÜû®ðmîW rø+óšä öW¡BW¬ÅoU<ôg™4ZBù–Ò‡ÖöåZIñDéÜ Á®ÆnJbLO·–퉸NBêÏôwE¥êÒBƒZšmˆ ¾WY/ÇáuS¬+ÊïàÏ5ÀNàŠ¬Å“€sŠ 21: ª>:¤®¤Ø´+nÓ‚¯Çd‚èoGŠ*ƒºú2 0>œÌÖÖâÂZ&VµŸ§å2—{i9w¢W¾»|iOJ­¢—\ØÜeÅ “qoú¨ÈÝ@-2뀸ñlgèz¨^4kæ>äf-Aê3=nš3Æ ˜Øå†ß/ü4¶A9 ›‘í.ù4Æ-Û_Ò¯l¼1< c»8 baðH§È\/ÛDD^¶_„ ï=D}gøÊ„¨³:Ú-äë-\³ÙöçQždy‹<éÑ?®cûñ›+›€Ü(^÷›î¶5ct[&ލÚaÞÙ´ °ÊœÏøU*ç›Ð1“”ÙJ8§‹7o•ÑWœ©M”IƒuRé9;Ã{dûD<oªŠ?&s~ dðyÓ ¯J ¬ß¡ܨt‘Óà?é}ê#%ìôJT®tu®æÖ,™ÌæºóÊ=c^ŠÜï8¯0œY àëò[µdvΕß·Œ»Æë¡ïÄ  g'_‹™Ãæ<ùi‰ÊxºXŽqûðVàJe ÄÌ3Éa(¸ôŒ\ËTrkuSÿwÍÛm½çF ]®Cì·,%ÒvúÖ3=]ô{õA¤œó+mRµ„Ó\ååe¢œ >tMþR®§›±ö/ ³üƹùG8é7ö>ýëÎ Ø7 îÅÑæœ§®0’1Ϙ+´9‡ñæ€ÀØb¥\²Fã’D=ìÇ¢õ‚F ?ö”PNÃÉKïÜM} kl“ÇI‘Ï âÏ\ïêhï/ÿ*Ð_°yì‰àª)‰ÔÚ2q¶PíÀ(x·ÿ»-ȵ”ÓV«/én‚ÀØñ,8ïÑ$³„y¦¢Q¥–¬¡D˜Ô*¡2Õ˜˜[obj÷÷«¨tv»Joû°ÔÞ¾—'=Žàuã ®6Öý|:šÇv•¤Rÿn?>|®Z‡gêÏÄGFP¨¹±EH`, D ¨ÑwƒC(^SšÇ{Ó òYmŒl3…œ’« LIÄ „œÐïdyt!(\žÌá¶ŸbIÍðq,á5£‰jVH±M*­¸[d3å-φró1<ÉÜ C8IÑò£ÙÄ(¬Ƭ\B¶$ÂT'š7ž§‰MýP·v¼ÕtÄÊû¼ ³)F0|ëngéÔKr>ô? •Î¥ RýàGDÕôK&ÆF÷Áav£D:UЕúÜ©.0ÊÑ]O! ¨“ùæÐ€ßR¶0OKìÊ>9OB‘>ÄaüÙ„ |ññq ²¶ëg{Fì?§‘l*¿N#L’X¦#Ю;—?òÔ’1@ß¿‡ºú*.Ê}¢ýþ=k]P2ÂQÉÀ˜p}»ØMMûRòžÂŒàWû«'H–Ç ¯wì䂎z2ÀØ:43áÜ1¨{àfÊ(5ª°pFØqKtvÝtK—Hô±Ú©Ô‰¨ÑÍÛ"]#3—n>—{€ÙC,üNçøœ?à|ÍÄZ53Åqoz‹Jd²a¹2š“Ъ£à]”áóÅØ-×öu—¨6gÒZéu„i´ ãr}æSýùòpËÙ½¬¯»ø ¡@“{lŸ‚®ÀÃB6d\n6ÃÐÐA6L\ C‚Ä2£0çM˜™ÅËRêÔÃZâŸÍ jäUWÉbe*èˆI“ ZcÑþÎÉ>u~k篤fÈ^RB.?0AûE‚JÛ"ÆÄÓÐ"h=À6Á)DMAÏ&«0'¹&t# LœÙ©7dKÄyu˜R †aÖ6)Ì£ÐñÒ„OV¿TÎ)Ôv21®šcê—è@7ÍHPóS’ h1ø?YF½ó4c¥M¨ž³ÿ­çéÉÇÞ½þþç¬L>Û¯3ceš7]‚k"º/|v}³ûýTíPÞ–ñ8Ål)µ€Í:&3Õ7£®ÔŪi×Ú_Ù²aroÚ©`Î?"(‘5¼ @r1ÚMé¥ëdàc•¿VŸóÿ²ëÚ&áŒG ×µëÛaÛÞ]mª¿ˆ:ÛaÉË¥ºëFŽÏ–9î;GØ$䵟asjAû;Í5‡(‡¡õÅk¿w_ÿJåð¯Fo¿ ‹äñ%Ê_lñ,œv‹áˆÑ]ìÅ—j¼(Ûy´ùâ~Õ|¡ÛÔ€ÑnVò¹N$œçÆÃWR…¬ñ©jw÷O)Û"bÍj/›Ç¹ÿY;*Zë̹FJô´]Í,FÝN¹Ò1å]£¬ÊJ–;^ÓfjYuS¯„¸/œ-þÝF€xm‡˜· 2QKÉ×2±S}[–…ƼvÚ *æ?N_7V}"…‚ä!I…žú³ í:q,¶_N-s¥î¶€+m¹/Žã¤/Š@„uöè;7‰SÉÊûÉ¥Ë2ÓxEŠƒsßÖJ/êFêU ·ñÈg!%pVrçmõÁ\Ò"l]w0Šâ€4w‰…)p!'ð})HŽkØ Ã**# >&sRJœ3F ñ´,t´-áê" ¯¥pË!öô¯pì?ͪ>ŸÁ“÷ø3ã‚ušV4íV|¡ …ƒ'ƒ'“âºÐŒv¼¦vÏŠC\ç:@8ŠüY¦{ú¯å—<™Qñ YîeI ~”ÚA=¸y2]ð£©DTÿÉ$r~ƒÁÈcàa3úKþ9´_Òú”šT¦ß²uš˜·ànb ª_€QêDöË9ŽB,¦é覚ѡžþ æ¦¸Ñæ«øô D¯F1°RZ© zÑ릔ëBÞ…rêø\ŸêÒg+ÍToŸâ¢ÒBݦ*úHŲn_îŒOâbºÆ–âkD=Öš¨§ñÜcO”àei{O²‚r JU—±šª/ Ò2¤Êÿ´WòÓ6×5wˈ¦Ccá(SMË“bwŒ\7.³­ªë_¡ªþU¨é»Ì®M¶5*›_ YyXc*OµKµ¿O0Eî" `IFɼ·o~}cûbsv”#Iî@Jú¹ÉELý¦yxÉÌMAøÆÞ"Y)Ïg¡Js jÅ=E$«LTì‘4Ŧ¼R„ø7 ñô#jÉ®£ x >¥D`õܼýŽ#fMRæt3®mm•{Œ Ñin¶sü%üXâot7€2ÂÄ(j¿–c\°‰ iÊØÄz)eêÀ9¨²£¦ÿ¶L\8&©È­*f@›3-PQåw—r;ç`e´¥Ð~DÃú‡s2§ø¡³aAçëê±Ëæú-´ŒÙÖÁa)í[8Ö¢OKy3Ò­ÐýpԽɃÓVú…ŽçÛ¿ÝŸ-udž %’J3X«õÁÂñÄÖ©‡ºi6±­f '@Ó¯ïw½ÅH¨¾[e” ë°ŒÌñk8aêáyäÇ&o& ô[ÎÕ¢Jr³Úàò1Ëܧ¥•1Z2ͪ´ß—;ÝJ%ª.KEœšú%'ù÷ñ›¯aÿ¨^·MÕN6èPÝŸ“Ùö#Užº[¡Cªk+$Ó/Š!í(ÏY[XI&wÙÔ¥q%Íz€ i^x{—‹‰`¥íh™À}¥,P8Ýþí«àq°ÞrELXôŸƒïÉ,—3¶kÔ7Ùø­µÍïEÛ|Cî£sêÜWýxÇâ­1h%™<[›×±æÈêÆFZS&u74¡á 2²Ù³Ú ME1D7Þ0ƒþ&Éë&É‹â8càƒ>–lÒ²Ó b”üR’Ì*œ•o§,diº}Ȭãˆ{bõý†3Ý8‰È&£ š$½uRѶ°~9ä6Wœðdˆ®¤?­Ot%¼‡à”èo¦rvÎSùÞæâ¶N'v(k7·6º™<^·°SÏLwÙЀ¨,Œ»…R<7ÍœjÍ–QÕÓê¶ß¾†¨ oˋĩ?Óñr×–°zûkºáŸC+Uá‡mÜoªpæ\ïT(š‘|%ÃO,ýXa¡·+ÙV™§ÍÀMÜ ]ûvµ¾±íœ[ÿ\]F(ß® GáàD3Ft:¦5Rk ÅÙ©ýbÊÆ§7¥a…»ÊèšެlÀ (²-Û~d3aˆös¸ÞÄ?“T²ÉIÒ±Ôñt‘ªÅúF±Þ1ÅZXçªXï–T`U굤‚ë­í²X:üê„“/I@Ùº²€-wЂ»ïÛlê Üi‹–ÛÙ|ÜHÛÕ–%GÓŸ¢»P:Aû™JÝgj„¾mS"=Ìή©¿X0X]üB XI.gvÇŠ .àÕì—[([wkË Îª½“Ò6.‡Üã¤ÌvðØèÖ [õê6ŸÐ•ñ,’;¶Ãµ$]gj[¡•bJäV;-çA/¶ eDJSÁ»dµâwͬnWµOK¦í¼ ©v—²¹vêðê€#ÅÍ Ò,*%5JÙ}*Z èµ É´Œ¶Í2ƒAð3ÆÚtA=}©‚\n%¨WN'Æ?ÄñÌÛ¤•H­ëçP}ZéK@ Ù¡ŒBªúnÖÕHER[V‡neJ€(’\#-À ˆ‰Àk÷« ˆ€”a—¼)¼Õ¬xƒA”’6ÏË¥¢lD¥îSÅ8™„ ’ ¤"ÿ(üˆ«sè;¦ž·¿¿a4ãÖKÉû‹äý„*¶t¾é—r$š¦eçÇobe+t»¢fÐ-1v|fkÜ\/j%^Ùæ]8@–¯ï\`Q—{.[æŒzÒýJâÂfÜIä;¢TÕº«—›¨·”–™¦á§)@%Ê=¢?œÉéø* Ðð¨Þyކ×ÅÙ3‹•âç–_.GË0+kŠFìW;Ó_wäl¶äœ„„hre ìðLÀlf·éÙæ¶ ãÎkÌÑŽMT§4§˜ö"â´§ö½£ÿü…$ÃÂv½˜ØT 4λ¬Mš²øTã %·©̱xƒnfŠýДM⣈udÀÞ;½„grz{`PdºaÆÉgªm=sªhè|8zS¿ËòahEÒEÔgד)'¹-”;@Çcp‘iÝ!ÀüOT/UM´!w¿Î)ŒªR?_›$O8²ò6ÍãiÂMàÞ¯M®X¯¾º2Í‹ïœr<ÀÒ]Ã|ýüð 9é\°   ö ØÐCM7,iºe|úý~ÕYÕ¥$”êñü’ç34¡0g07y²N6C…Þp‚Ékª­£ßÜ¿ýãj“xå§Ÿ,©1MDºN€iå» ½ë0‹n "圅E¼œx·£4Ì€ ÛÔùºÂêqYöá:BZ*.l‚Þrè2ž;ñ‰)n]‰REÖ;xU¼}FªWÌÐð_I#|nè—eœýX8‹Íýì%ssÇ0Û”=‘\zÊPPËkßãñI{ƒ0öm΢Ô?zõÛ3ÐDi´Eõš`R£q˜„§¾ç½¡¬¼Ëô5uV9 ƒ¥Øó5š{°°€ÅÚó&©éˆ¤áPœýÜhš=ýôÅ!Ùá½þÃþçCx ®2 y8=ö1.õ/ðGϬwOºËíý=Of \d¦Fk@TÀtšå~ HMiῼõ’úXãtSxö©aW`h‡?Ú3ÃâÛ=4¼ï™TGÝšUùYÍõ ÒÛ³áFÊ4‹š6ùg !Ôk 'G ¹ýì1ÝÛ C`Þcü§¥Ö#Çe­Å_)FnBxÇ}߯ªyC—ÁnÞn‡{ž‘Qœö÷ñæq]¦„CuYa'‹ÓDo}sëJVÁ÷a[ëø;úÓàïBþ¶¥“(ƒ“-ºÕæ]® y³êS3ëôI)uFÁK+÷U_ÂN÷o±ƒ/ÑKšW‹x’¸¦~Æv:½äÇoC §³Ä„¾,Ú7·¨o¨;²¤6ÀëÈ•/ª„@¤¸%òaž·ˆ÷N20K@3ýdi-D~ì2\·…'F©Â v”„p˜}”L  rÏAGíM¶;{y®Ì¬T¶ZÕ£Ns¶Ló­oR›lm7¤:Õ'Þuälð^“,¨™Ÿì–{ƒtoˆ¿[¦ËÿÖ õ»Á+yÑ‘öwêÝeAVøærÝóÜï’òÒ•­Ì¼Ý[ßqÔ™Âõk”ãËõvga+—ì½FƒGíœû%ªVB¶߿à ê+GÔ ”©å=‰°L|y370Y7f›¢†'h,áÒœyTÂkQUÞÚ…3µy±€º/ê!©•R&™ S&Q-Á@J­I}–°¡8ÌÍlQêNÏÏEªe+‚_ê¨ßÖ¢Šî~5]Ô)*cêÇðFЛ©4vƒš(«õº)â¯ø)ï­}jº«/ZAC»õïÖh·þ +gû³H%\—[W´F 9:Š@Þ…Ï~•WØaXb8šóÙÄ—ž-,™FÔ&Í´¶žrd¤Ô*b¬ð¥RCá±`qy¨L%é¹”;¤wYSùî«”a ÛxA2%Ÿ?wg!×I1CyÚ]šF^dSTc\›`’ѧL[íÉV{.² 1,5ž8–怌;¡ÔöF š«´âÐæ>RL@º*u¸ÇÜÌÏÞû%Puo.uýëÛã&ˆ¹Nâ ;òޱxÅÕ"Ù†„•¼]äq_×EÒCí:Éщw—|hN5I¼åÎÐÖ]†ÉÎ#î)O¦ö*Ãm˜£Ke$Å»íÐÂOMIÅL|† LÈ;A»€n›±Ê©BGt®m9¥éëRYH§@É0ÿ ¦NÏ*ÇRßÅ=:Xo]· Òåi®¥ôMŸ ¡JLGÉк«ï0pô(!*‰*8›TÙþGÆÖ‘¢º\æü®‡ºP cP?dMTî9T’ŸmÀˆv*C›¨±Ìfi`gMu¹úÆ zRú18›|VÌpx©"à祋è’‡Ÿ 2rýq©MÍÙä’Ó…'ŒˆÇTA5`ƨç*"!ó¤zªŠƒ~m¤8>¶PI"_sN*É?UAH)ט™Ä€×<0ÝG=¶¸*ÄoǫϾ>ƒPד¥¦]deŽ?J;©ŒÇݦ¨¢ M¦7{ÏEÈ‘2éöèã4Ì‘nóÞ£8Ð$l6ÕYÏÌRìŒ}Ê|=éõÉʈ§Eò8¼m×h§%¿_Á0¡õ£W[ˆÁÑrÏ«œêÏa Á\z‰Iã2&N:£žv@ªfþ Œpq!Ó'áhÁŠ? ¼_Þ¿ „„øH@cb)X}ÒÂ#F£ph÷e’(0‚„©àFêqÇz_"Ôˆ­2N ÆF°ò±/¤ „ºvllp…SòCånñ^Ó#åµ^p7Òz5D3ieþ‚ûìJ,ÃÒ…Þ¬­Ï_?O#ï'ñÑÞÝþ=dZ ³G{Þ¿è=Úûk'gîMBéMB)âA#¢V-+$C•4¿÷ÔmQ;§„Í›­Q¥P'šp¿¤IYµ%¨æ,Ahbßš»¨éÛêŒ4yTaŒÀÒEª¤y´m}Ï3°A6]õ×™ß %9ñÇtìÌî’.&µ]‰Í¬“N¶4šlÑ ü<ÛÝZذXd6‘liVÔ XddéA[¶° Ž{¥€œUÖ¹”¤”!Õâ~PÃÁ-`ÑÒýXNƒ76Ò:´­¿è:vGB c€µÅ6³ç§ãí  Ís¶Á¤/|>_e.eR޹BfÖ9ˆÖÁŸvè~·”„DBœÞQÑ%E¢é¦×ºuB™wd5™nƒªÊ[mê>(UÛí–îÃëZ~,E5æÞl¯ÃM„óú¶æÀ¸~Ÿè†bVE侯ž&-¬âK¼¯² „«ˆ6Ðvw5]•õ;à ½‘Âç¨É°=Gl-v  M1+^Rho¶P­.5–;¥ü¹P«»ó’ŽLJ2‚zlü€ˆ¤ îãb´¢ý4Êò€ các cãzèKP`æb˜”Î#ÒJOçûÄI\6+‚hÚRˆ!Ç~Ð#ÝÙù´f4æh0\¢|W 3Wb¬Î`Y¨E³õE—ð=£o1 Ë©ïŒ]ZO¶ÁýýÆè3Gµœ©T’æXG¨;¦&íѲjR<‰±; ’ ŠŽ¾ q[2á«R}ìì˜aQþ9^%ÌÙ3·éû—Ülð(s7¦ÄL‘‡ã\¬ð‰e{¼%ˆu€Ý“$ ÿ©²¨,çÖƒb†ƒƒÜ ÒÒÉ:¤Jo/6qÏÉ.V‚Ø™)T ­H9Œ™%Rç˜ul,@™r‚053Ó(V7]£qÒ¢Ø>ä‰F.m”üæ$Þ)O_ÛèÿÚÏjKå½Ï'©Bk‘šé“²ñ Φx¶È8`REäqXafCø…8Ø3£òU™ lƼææÌ0–I†¿I ªÏ»è±–L n Ð÷i wl‹R¤Ò-A~LÙ_qÍ#j©gÛ(0ºîÀ:Ⱦ…yXD¥íw¸óI©E'îyfLr:è7 ö¤Q&k-Ã8¬o;â?_«ÀX9‚žFÝû‚ºïë§´ÌŠ^?Ö@q{mà&ÛtBÜ"pä1Í;År *x6œ¨á'mUÔ. ,¤!®2"Ø, wšDîæA!ÛH›ÑîŠòÔØt©\­\ä0™ÕIwn6¡‚¢5ÛµÎ<’wÓÏÙ[SÅÕhÜÍ™d(£ ªŒsØ“Ï&·º(!|£þ¢½±“ÚP:gaÀͯv}zÛ^Pc]—X•™û[Cä« ”l3VTÆ·63›n9–Jc8‚í®@Ê[f`3å—ÍäÝ›—'ÿpvò®AiĶ€«ÇnˆJqi9m¤ÂîN+ÔTÏÝ‘¥)ó Š€û>+¶&±?TÁеŽÄt]õ¨ÊÀÊÄ)i@£¿AÏÒn½œŠn2 ‡ýN"ý4%†ôZ­9D¼o3p(ÙW@xóëSߌLþÖRÒ óù®{kDOçž4EA×n¡Çž¦kÅ3-Äá(v!ÁAÌvÒ¡c¼¦ád|2s•6èØPê\¥iØ„²îÜ×®1Ñ Ë‚Œ9ì«Hßi½ZSì€Ã·êþIò>ÅÙ/»OÒU>¿HèâTS „I=n¼vñÜÜ7`WMOD‘k¸uÏt÷,9\Øs,Gêj†ÓjW¤½ZÎÅíuw1žº EÕ!Hq K½ÓÛáã†,`GïØG¿~óúo¯Þ|8ëì´MZ\³'®š,"ñ¾¹7™±Ù‚ätDWˆ%õ€MSrá=_iÅ/gç[¬¨ÊèÊ 8 UiŠ¡§²„Ú4Çú]Ÿ ®{ZàHà­:N»<þœÔ. ‰(ë$¡ BÆO3»ÚŠ8ѨqÜtbKfÊ'IÚ“eD¯ô„Ä`‘ŽÖÉš“¾ÁÎŒ’´¿‘ÀyãžÛ-÷\Ö†D»è£»]·=¹?žH¿õª×xL‰Å`“ˆ H c¹Ö¾kø$€k,ltWp*ýsaVÃÓ©{¸]æ6W…'°yJÖ¿ z$óº”ζÛ@ìIÓ™•õiâÖF&> ÖÖmXº”—Æ(#Ô"IKýsan3éëÆ¬Jßð“W Ÿ„ìUràQÊöE(F%fecú(™¢ljen—Ú ½™¥õü`Êlí׈‘Ï5k_Ë2uñ´Yž/ÉòÔhÌßgN™.) 6ÞŰiÁ2žnÙÆ2Ñß$M´U’Dj"`X¦r3Ø$+µŒ¨ãÐç:¾×°v½á<§·Tv—Hv4R÷lùJ$‡.é‘ÑË`sæ)_¾š!_½CæiSÓGBµ| B)f‹?HŠú®eÊëWKŠwŽ/ç–­¶”ë׈ÂÝ*/•¦s¦$síø« í†JP’µ^ðPôí¶¡;V¾jKK•{‰å¤Òd€2yYèf­ÏéXËb†uVÒy…9cÿ”ó0Mb²#L´òÛuÖÑ©-ÚÁN“#I9(Ø“Yä•%P$–˜l3Ù¢Š§ài"þ­Â.'½@Í–˜[ô³Óó¡~’SY+ÉPdŠ4EE$y£²^:»g¥óES°A2RrVùÓø=ÊQƒ>†0[ßì %\ìñ‹™gXz ƒ¡¹é5Ñ>͈…fÛÅ2œyûRŸAkǰ{Þ½df:Ňð/²¯©Â°vxå¶© ÓÄçKÞÕžd\”e‹ÚT?ûîlçGU7­T.8³ ‹œÍcÞšåv/ГäW —êèœÁ‰P™ÚöÓ¡çz3[cál„¾ÒmÝ]6¨j²úzEº4U¿4ü[~µ¥ÎòIˆ ÚcЏÊ0 i³ ¨`øH' âÊÛðWú÷ïÔàüèîj•¨ ºðÕì†*ðàŠ“„7ºˆ7[ ž­>F¯Z|u™˜Ótm—˜-Ì+ éÓª7s±ØG2`:YŠ@ˆXjΞW1™é ÆÜ“DÊ•,^%[’”?©0ïT@oâ2€î~?üþþ£{ƒ»ß ïÿðp0¼÷pð0ðïÞÿáÑptçûï–Þè%÷YôìîÞ úëìÃÛ“w¿ž½iò_ù¦£ %Þæ¦ß½÷àþîÞõù°Ç‡ßÜ~÷Ã÷ßù£{÷w~¸Ùô'{AäžÎ·¹ë¿~7ŒFw‚÷î>xðÃ@=º~tç> »\õ®ïÂ.gÃ$ïÄŠºnòîîÝ¿ÿÃ`ôðÎ÷?|¨‡÷ú÷=€]¿ëî«ØäìoÍïðj6X5\‡– «HZs{¶‚Žt/RRšV†°¸ÏAs&-ü”;™ñîRJ¡ë!íS]UŽ6v"9øe±É“õŠBáJZ• Rʉ윢C!¡Š®¥6xEŽÆ!z’šv›ý™¤Wsœ[ÉàOÙ8/OnCµJoZG‘Šï9„ßaÑXé™gØd¤%´P§Á]Û%¾´¨ ?Þ®"5¦žè4ŸçK'V¤-±µ¶…˶»7=&ôel;( =I£uÞ9üÿÒüÆÒ-lÚ–f³è•$š„ñDÁÆú¦Ò#·Ò©ýug²Mœ7$œm¿zNÉ?Ž’ï6Ú`²jý œÇ–²IX‡DOÂ(°•Œìò°z‘¸ÎªV×S¬@H¤ÚlXV£ÀÄÅ07áû~¨¶ºe•p æjñå(ü¤(U§¼µ×ÒïbÞGÿÜïqxj˜YäÓ )§ï‹‹U´¢_á=÷Û%9*5ÔÄàòpF>qÉ*4Žñ<“0ÇÌ þ1'†ælõy– »ý<ô§°Húte(|ò“š{A8[~­ÌT“(5@»h±tD;%.–p†óžd-f¾•_(]s^¦‹wÌ ™ :˜ªt,×qR‹…–Ø õUŒ$°KVdî-Á¤S9°ùÞÖÏ"ƒ#Ÿ†:JÀCãd$ø¿K¨Ì´Gc°ÉKѱ­k2‚íŠãµùö¨x Í™&H_ºÛ¿Do~ɨ9f¯1–޾5™,”ï¹,?/HÚó®SvÚð™ªP’ v¤Ë\Þ„jÁ:XL¸_Bcâ‚ÂrY˜´sþ )eÛô¡LJ_I?ŸD·À!Yt¥>=Î÷<(Χ²AxuÍ•Äø‰ú$ÛKé™brðkÀ/pí-Ð5Ü:’ë)ÝÊýèƒnWš™];½L³aáœPRî¾w¥ZlýÚÐŒt“*#y¬pq¼UaL£Æëu B ‡£x%¥°ø‘Ì¢ ï¼­ð'áj\ßÏ¢šáü!&[e»’†«É¯Fz“ð Qð’ðŽ™ãì:·—¬”Ì&I[I•-Ôníepï«Î=3 a¹)ì 8ÿLùÅšPvË_ú^uáï›X¥dÅi9LVaŸKÌZ°~O] `;=³„“—ÖˆÜ\׆л*‚¯}s·ÚdÑ^Îoí¾óSÄ€þ"Ûi·Þõ`ö¾ôzÒì^ÁëP,д ¥”ÖU€L( '¢šT!)ϘLÆ~I(×”Ü^¡icT=ÝŹÎýÄrsÈ—š³d ®kã`Aòu‡üVMg\ FY`hCáiè£Òa¯—ΊìâÚ‘³ææog7WŒ|Ñ Ñ“©Æ¾‡FW·Œäøÿ±÷åÍm[Y¾;ŸO=5–3$e;ËL+ãô“e¹£~ÞÆ’“ž×5•‚P„M|¨¥Sùîïží.Ø)A¥ÈÕ›$p×sÏ=ëïÈCÍDˆ(.¾-帷H”?Îô5@ ‚Šxìuê/aœQƒî”x(5)ŠTNCätÑŠÈ¥Œ£¯"“FéÀç)ŒK§“D£­|}؃%¤Mã`NAŠ©¤1|$ßh¼´ô$·QœêÊü4‘àv]SÇ`êgÈþáüGl‚®þsG}šÄÈ©ú—b%åT¾HHÑò‹‘!ÙbŒè-|Œ%B½Ìœid$Ï4ñ~gwëè}ZÇTë_¹Û-i›¬˜‚¼ È0ãÜ€PÛÐÔGÓˆê46™WÅr©÷Í‘Q¬ âVfá$ßõžŽ¾‹â<þ.…¢ò¥Zæ'y‚<óÅÖSÕÄR)éå‹­w syªþxŠÁÒ¿ØRB¤?S|XLLàß‚¬1ü zj2A>UO}§^æ§êÙüÅÖ? ­ÿQm§ã[Ñ\c¶F8®y ú˜J»0ì­áõË~Nõ0ìGœŽ‘B?øù4£RÝTñ«AݰJµ! Å%KfK–0>"ø‚VOÅ$ ÎåS±€¹œø/ã™ UTZðYQ=@X¢‹+IéæÂŠiÔÔ€,Î8êíPKܪ[M=>ž-]¿Q7³-5NRÎ5õ0¢Îc¤±0ˆœ£Õ*Æ“ÁY±dz-‰Ø2Þa²ØÀ‹›±¢&]Øcƒýa/^Å5¤C@Ÿ«!úØÅ±w=ÐC\èÉç‘ÊýY/êЊVÕ˜*'—Rj »'šìzJÿˋ߫>UÓ-/ãCyzÙ᱋(oŠH¢ý9Dâk›ÔÌ«^Õd™×þ¦AcìLñÂ#K ®]vcàÙõ8"—@+îãF't+!­ Áæô1¤8,Þ•¨:²ù1ìz‡ ’F†R¯p,t)¥Â÷² 锿q¨Äuv!*-NéA,ÖÕe7×ãÆÍ.Õ¼æC5Ðå‚¶òψ¿xGðË&¸oí‘V¸nÿ|×­S—CÉŠêê€ Ä)¹$±'Wé¢1àýþUPâK,=be×Ü¢w†×ˆ\ÌC‚7—åç¢À›ÓC€pÞ¢*Ëäu¹ ’C°È@W/¬Ÿ“·IÀY0,)Ò <éõ– "Ôr•3I£x’ú„É AéTßN8F#…Ùõ€¬°¡Ö“qû±Ëb®@[×7 ÛßÞ9ÓK?ów‰o•±¬\CÀŽu\as®øš¤¼á‡!֬΂ÕÛr×çºïË Üo« £¢òiéYý‘{: êZçUs é¿â¬ê"ƒ4´Z"‚-„w ´¸„”xç¶vmj,௿Þùu¥¹ìæ&=µcïe¡±þ0ñ©«Ò‚n¿^o2ž|êI÷‹ùHPÅF,hK t]Š)P FŠ‘z&&f@%Áˆ¾!5üZp‹Ë&>ö0OJ“óp¾ø,?ÖŸw ð–6 šÒ¦ˆM”=îS^½q#JS‹ÖNw;b™Á‹bm&>1¿`¡ ‹lpÈBŽi²’Ø­Ë@g3ˆ0“4î×F ‹«zUŒC\€úÃSdÓV—ÒÓÌ€Áv€p~® £Dºš·iÕZQóÒ«f4§|¬ëMÿ‘s0)¶dÎõqð t¡USO»<æH åÊL d©›]ôëw-v½Wކ¥v ËÕW$ ê©¨&ÓØ8ªU…Ü} ¡ g#ùŒñÏA.üñ_"´JTªâ’RÝø=6ëDs,­–A('„ÕF¹TYj„řHÑFÜ«_Vèš;9ä\u‚Ï0 ÂÄ"b¼Ö”ŠÛëh8ûtaü¢©æ8NbhB·MÖµš@A|'.éCè*KHTJ+šTí"Rtˆ¯+ÝÎ@èùƒÉëë moÛXd´1æ‰S ÃÁGN‡Ðb¯ö¡ÓŠ?%AE+yøq)ìMAä|:®zÏÃt²œÑ¨3~‚áÁT¡Í6!9‚Á¡›ŸTâ¸È-`/“÷˜óÄèEe[x¥sŒtÖRÝ)÷É&Ýü½ éMbyŸ·>Æø'ŠY™“-»M.¾dE›šdUbõàªì0Ž# ÖƒúÇxl¶Õ·úi÷†ÔÖ€­*.»âóšì#,)po3)H'¸>j„Ͼ “ʽt[…•aµ5¨^‚²emA–ÚŸêê„6ò±íÇõ¦Š©ùéx]Ç ÀQüE_–Âto^'†ÀÝ.ÃàKý ù§(`#´fžÔûÞ2Q.iêš XD°£P2ˆ8< 4JóÌ%èêš—1¿: #å`ÜÞ-U2›Bõ¶×mÿqÜëíA«´QäpÅs¦õWÂ¥¡ë‰¤º g!xè„íŽÞœ`†‚UŒEû.+³Qö/ÀŠrV©„(\×ÑQì»’±R÷Ñ?¥Ü(=*Yö£Ë¯`ƒvt3W«B™WÙ¿§v …rQ7Üúe˜"{¨AáI 7‚féܘ6w€Ðƒ©çR_Ä Ì;3Ã:$>™õäïí¬fãÛ;aÚ;:}àÆÕ3¬YÛëïrÍÔW ´àÆÀ2dŽnZËÐfR‚‘€qÖ °á…ê0ËHOJ3 .Y+ÃbbËÄGMuˆÉЉ §Lu¼í‘ZÕNLe‹1RH8œZ:ê#Ï»!ÕwÝ[ûUK\tÕnµ¸@õÜW×®*¶º¹'óÂ|¾kGÕ$Òܼóš^Ù§7 ‡c …‡jWöÚe†F£QW&ÖÛlêvïNN¦<úŸŽáÃùñ›åÇoëäÇÊ#Ù±Š+L¿m›äÄÚ ¡IH¬hg¿x<¤Iíˆ e“8½šƒMT$=Î2‚¯ÉŒ yC˜Q7Œ,tNÞY®–:¡P+•®J2KÕ¡™t)XLÊŽ¡É^rò¡h5C¼¹ñr~‚Ø™¸{M¥˜–ó̶ÈW)7F,%>N4SÁÞ¯L2uRÁŠsP`AÝ ÆÞÎb+ð:y>ÅäÑ8xƒ~S6ªàj·k:¾ÿë»7Ú¡zº­]¬º$i#«¯Ï+ïeƒÀ¶âvþ\bÂWÛÐr;›,A\´‚ÙÍc`û ÚÛ ƒ Àc;ú0ð~•FBN¦õ²5kÂÀ¡*fž]²˜ë¥+ïZo3&o¡Æ²W~z‰#á²ËÌÜ´ `1q’ËM ¬LetyïTjM–ˆÒ™}3-…\‹UÑTÅ:F•Ð D‘ŸGÂ^?˜vØ5pÝ–ñ† 5Ä}„[$ÈxÈ•R8K|„µ4MËíÈ’Њú ÇL`ô‘8†Ù<-Þa¹+æj‡À+}²„$ô2áÝ* œ›móg½åüxíÜÝÐ-æFȪêQsäqžûãiY”ð¬ºÕ×2ÊUV®gÔcHNàŽ fÑ$_Ž‰ï¹£½n&SýH;…n¦(y±®j‡XÜ~bET¥%&¸eIKF(m µ¥©Ž†U/Y^Zš@ãçX °~÷’϶žMlTÒÔ ê6÷;µM^‰gëÃswwÖåÈ¡føé°°åi¸H²$b5Çø”•©ˆ·¹¡°Þ鸂Ө±†E^g B /ýr{H­T0÷/Ì«­:ûw]Ëir˜Åþ"S"@kÛß<]»9À¬ÔÐ]"¢âÚ4‹_ǰÙ5DSl©B  z¼>ÈÛ¢G‘\q9‚,cˆu|2RÚÖ¦'VQoxÅ"ÚÔÐÓjÚM®º¬J ÂÀ/Ý„³°¹ÿ%ŒMleÉò¡DÓ(#†ßÏ:79)ñtäyêñ0ƧUëËXj˜ÁèATµ0|Fàturíà ÆüŒ±ž=´#£7rJsÌÃ:Åo3ä Ô#5þ^`JÙÜZ W_%ñÖàŽŠéÇÍÕ´+dSîi’–;ŒkvŸž%céI”ZÁXN2êä©òPzÜA(Þ’ÐDQú‡Rüa¬”Çå¥I2¿Í"Ö–3< —xÓ›þ¼¢Ê¼.×MBUÔݽ bäV‰zXkÒ¼]§Š½}mL)Ç賚…:&«:Ï-R‡[’k~¹”N%•AŸÀö·ª 3‰Êõx&ìàS\Hu®S¼Žö"‰‚ªâ ¹x¯eR€ —fGÕ•*§ú?Ø9ý¹UYOlÔŒšÕ`\89ÚÇ7n²¼¡s.xïjÅå,P—µ‹uµB⼡59~¾X3Í¢)³œ¯gSUÇÊÖº ÁvÙ4U¾ãçG¥}nW±‹æÙÄá¾Òø¾Q\‚Jb©pe]»¶c™±˜„Y¨ÕZ”fžµ¤ØdK†lõʵî£,·ÒøÊu7€Ökª 2#ë³è`ý"ÝlWénäo`r}¯Ð¤ÑLˆÚ XQÀ=9êPщâÈYÂ!„óHÇMµlÐjy”è3)ì¨[A*幉‡›ö(s’ë›ã[¹Iú<Žo-æëÂIé|~;F–e pt:Bð{¥(ž[ÈGòfíAÅJq‰QƒˆoË}pË=ídŽ[>ï¼ö·zÞW‰SîxÞ‹Mvðøô<1Ì·î SæiWwQ=ßbö`[ð¨ÊýĦWÑîPÅ*N•ï¤Y €›ëCív‹ìÂ]tNôα„ •r ~uŠäg]º5ñävÍµÓ ¾İ±$iûªO䤾]‘…ä3; ¬˜Ø ²¸0Kuz˜5™xœQi³*‚øh´ D_ND#D­8áý:ØÂô¿$ÎLIÌ4Ì—©ƒN·†‹ìû·@]Œ §ø¬GËEÆõ¸ ?pnÀÂ:®"ëyd¿RkºÌ!+paX,BJ¨hŸæaËF«µ¢›S!â º¬‡uòu+ œs†¸zfj¬?pÉÃÔ×ò-ƒ9‡5e#à À0><©1Ñþ¼n@ç×§9{áPM-œµŸ '7à‘=jµïPÇ]Î}¨Þ¢Ãä˜~±¨r(f®(P¾0^v8+"pÇL7c”× ›¨–6 ø(%kPí'$|7GHŽí¢"a܇¬liçí¢MΖÕöSLÝX•Ò@]-þ©ìcÃZ¤Lu4\¿KŽ–ã©ãçÕetx$N \Õ$)(d õߤ²OS³˜N'[…/V¥´¥rpà _†í}8T2áx©Ó²3¯vbÕ ó‹hé35r¢tuðÃæôÙ¹,O°œN ßè,1ø EÚä<¶•¶h¨ãe–™Rn6nw‘n‚µäbBІª=´gle ò|[ŒÍ{e·xo‘DÈòŒËQhëPp0‘è@õã¹²'ÞçÈrX^-Òx´×BAE“{}áíz²& EªˆD'dWß­°¾tâ¤ñú¹§ÊaHÏI| –·Ã*2 w•†‰ï"œâ)ÎÉÍÜ«ÌÏ7ë ‰Kå‰~’ [ñY‚(!V´­aÅ—k„ )¤ª§]MÆãeS­ œÕ›ÍÔêq˜bŠK„_0çÚZ_†[©Ø˜*¥ªF™2Þ.EHvªERä¿„—ª“@i$Ë%tשú1Ý›N|¯™/Ûäì{ÿ{Ÿˆe&Ù¨QŽ6 ž*ªeuæ\àÛÇ8Y.fN†— ¼˜gál"pƒúœŽMßê1Žq¬£¦lÙïV:#×[S¶fÉ;Sá!誛çºb¯íñ^Ò]a¾öETRýj…l£¤æ5ËŸ­®, ò\ç‰OÅÛæ‘”€âÿ¡y³íâ«Ι C¨¡W!‡º€Ü»ãÆÎI§¬ÛnÝ‘qBû P†v±ü›gý=VîUãWÿnü¡µ …ú½€f™Öµzž$‹>‘bå2(kL_Ñ/»uŽ",R'QÌ€Zx¶"LV¸¦ ®c”Ì£QèÆ ÂØ8€ë|5Ih»?Jù®ïÆpÇ £ŽÑævî ^ÏWîÅUhˆ_>ñÇ_äö¢eôp=¸LÖéõøîß¿÷=˜ßÉ8]¶»µÎ$: ¥êí@ÔT¹,Ê©þ;øÿ,„yõ GæÍU \Ù Ju€5c²Q;Î5TÃÔz^᪣{»‹Gµàb_‡Óœ!òGBˆåk¦ nérF™¨[ë]Á Ô?ó—1oigE w܃&Ú*O­€›&1ÄAÔ:(F„Ñ8¯ÜW‰Û°Ë•𽥉ÚH402ʺÎm©¥ãÇ”É~”ŸZ%Iû-íõ½jÉ õ\kÝYu ‰V˜ºâxà¦]¢*J “܉ÀN“‘ •2²ÌŒþ_CZer1о%0Ö¼mßå–€Fûéãa—¨åjÉÄW úëO^ µÏunšŒ”lüo[Y×VñR¡ÒØ‹¥@ÆË Nµ{ƒÝÚ¶£Lb1¬@#áÎ…­¤aI¼ªV Ÿu= ÛлîAD Òî£qdD~ †ItÁös‰NÙ’ñ}L9Gç5zçDhx%s8eðL(hC¦}ÕÛÕ]Ö›ž‰lL °+?,èezûZ6¬hO¨Oá¸~—…æš8­ãÀ ïôêà÷!ù©Ë¬Ù0¨Oe冇2ë©âX&ËÙìrjålÙdzÉí̘)ä­¯"`L†7TÆáÄeW[¡^B%”˜ü™\z]é#¬_ã Ôv}V74µKš8bç(Á.Gf¯.Rúð–­7»Â‹ê¦+öÍ‹^Q|‹‡µkþ×6x¶tòIàz¼ú÷fOµ6¿<§Èû,œ©‰©†^œ ²A¬¶@Ü3-ˆÈò8Ã% SAã4 ꓆£ENGFs޲¬$ÿfÌB6>ñ€"ˆh/뀑Äàfù³¡ÀÓ €ÒÐ.8á„ò1 ™daªC 8ô€3øÔ—¡¦oŸj’ YïMuÏ¥HE‘„ñjÐ[. =K<8ˆÄÅ/¨–ÉÀÊ4s‡Ûl&àˆ¹×A̽)°ÜuÔ¡ÚPHÕ¾¡G«+#’¹1¼k@¸lÅG›óŽÞ6bíqÙg_í´ý"Îç—Ìm®}œ|ÊBu-ÿË®¿í:ðÕ U¹žÅtêd·ƒÇÊÉÞ›uMáÉÚ%l*Š3ðñSN¦=€ÈD¹Ûª¾ìE€‹Nݦ!˜±øò48΂r¦ \o îl_Ýv™´ ÓÂ5 g‡~î{'…ª[ÓQxLrìKµž¿¤ê^ S*ç ‚j…yIÍ“‰W!àÌ9Øjý^â"5ÓÅŠˆƒn!JÂÅŒì$O†€%7s&-…¤¼ÿÍ?ó_%cŒ DS˜0>£. òö $(y˜ÄC¬S¦ºïR#:Uò…€yøˆD¥Ñ´Èwv0pLþp[šŽ@+Z" ªeƒ˜†„Ã…WŒ1êÓÇ7˜rîG’žIÒ¸È »äÒ‚Tv ‘… á 2œ …ËðŒñßÈQăâ3ê/ÁCÂÇÖu¸z}ñûý³2!P^À Ø¢)0ý mާq2KN/AûWH=ÑC±¶ÓS™'G%ütüöÍÂ×I¢£Yæ= ‘ä4¹0>bëìà2Á~¥Ñ2oÒù}âòÂø3N”wý ¸…š;d³ºø´°P`ˆw]xP…óI¬˜û©*^öRcʪÈûñ8¤ Ù9*,§tŠ/ uWW|º’”1%îF°¿´b¬-OæQÞå¦ír}ÿŠS? ~åeë-ÃêC¡½–‹ú¬‘Lo ´ï6·Ã‰e±i>bŠ!Òrh…G@±, ò)8‘« ±YbÉø®: zŠö¡Á¸¨Œ ßR‡U--9W9‚˜y;WX}t”½4² Þ´È뚺.[)âÚzÀ-+/^«âo;A*ðyÝ‘ÐAN ’ GA4A0¤\8€`¯o#f¦yкÜ(.?ž¢¯x¨·×eÇô+ñc䓆 zãË~‰gu¢_a?‰Np˜ ÂàšP†·Ã26ùôÍüz[™â5Cl¯Ìõ~ ÁÂfpÊÅ9Ÿk)E·j@F-ÄgN06„¦•ó*Y™Ÿ`ôG-Sal–t«˜‹1·Ç=@xv9² *èØƒ ö:0ˆ ŒÃ2IòWüÁ»ƒð;í´ƒ9â_~3Jøÿ”Î~ÿW5õ„Ì^¸’P4]îõf ßzÖ¹ôíU~¥Žfç„|;9¤'!^ÎXÝÝ Û!eÉí}l}ƒêU«™œ¡)I¢Î[Ú$›óá̈Íè‰ZÛÂk_7!a `ÆÊjU-·Æ6Å…Åý’5Å}VX‚ !Q-UÊÿ=SfùJüÄÍœÆaR Ò ¬kX èc‘³Õ¤1lu™…+Éc0¡0BU™üËhRèüy~8 –\/M®­› ý,I–Ï\¤P°ÙÓh‘{ÿµTZ™÷Q°+74ôsV…úlUÌP;ìÑš~FÓßÖ=¡\f¬R|Â=Ÿ#n1$Ojm-_ž$³/p~ÅÌð*ùœŒœNUCÑ<³ñ}i‰âäÉjÂü“åÉæ6¡â §X´e/„€ý1Ý2àq‡•&zO#Õÿyœ†v¨¾"ð½Ïþv’£åNG€ ¥õŒ¥m'+u„v=ä?s,Êa§%L³–‘KZ;&TS”ê€>:kfÇ{ •ñè5¬ÙB  NðBbr Ô²/tôÚ«í,:I}(\U=Õhè×Ñ笰 ·Iâ50ä˜ Mæ‚’Š —h? ÚÑŠd$놘µ`7S·F£”ö 0q; @ü@yå Ö©ºÛ?:bç5^uŸý”>:vvFÿTt€¡Æ‹í’›) Éš´Š1Õ„qh€z£y »–šN$25·:À};“B“äŽõ¤v·pÆ®;K WóØD˜`p#½´z+4yáoÝzNâÙ¬T5Y²Q¦¯€”ºx§@'ü/ äÛ1'ÊFú+.)^ :¢bµíí 3ô†·¹&T¯ÑšBí£|«¡( Aa¦ÐˆtßhAH*6•åTi>¨!¬|Uàª&8w–cÆ“R«WPÔÍ òˆ ¬šÃ}›34ù¥ÜÌ‹d±T Õ›ÈNE^Cuõ+¥¹Ü•áìx«k/ˆ]Ò`›Ó°R(OqÍÅÌ*……Þ9(¼6»¤`#ì‹$‚gsæ&HÕ(æzìÚëƒwZ»Ù€‡“§¯±á¶6îò<±ZvàµËwW|²2í@jûÆ#ªó’¬»£»ioƒ«¥‹kޚĪp'{²÷AôêÎgM] uY:nkÆ>ÞUŠŒd:+ÌâlZ]üZÉ-²ãmÁЦ‰·\÷b.ZSÜÃ:uX§á«kUá2,0Ö_ÜpdÖE9T°‚b›1XE üÓ¿0x†—A¶ (Æ«Åà–«1š†€{NÂpær¸×Ì ­’ÕZèyÛãJ÷X®FŸú£q–Ya®<Ê öÞ> N´[ÜØ¬Õ‹J6 ÃN¤ÛÅôÛ…FŸ£|GmÛ\} Åß1{ Dìílšœ–ZF—Ñ¢Ú·eû‹¯ÌÓE´=o¬nÝ”j¬Bö•gÀÆmy†´ë8‘ë%1TÜtIX,÷êý[õxPÒ1©Bw"¥–ʃ”lS¡m™2r#»œr.¬êÀ>'œs²È_¹.ÕnOÒä<3{Q<¬8œ~˜•Ô¸öˆ½c˜’E­(ËŠœ®Œ $^Ï•9æ8ËV1> wpQí¢K’аUÅ?µ,xÙòôT©~ˆpÈV¼>X‹éº—x]ª>DI}]8B—èîª6[ܻ븣5waYÃ!´mHþæH¶~4)÷\Žð0ØõÜy½®Ëc5Põ ²¾º4TYlïX ðerQz@̲]ï78ŽóEΡ©žj戊Dq’ùÉ%²ªXVáÔ< ÷Ïh1Úò~ÿýÉ“F5yE æ¨–ª¢ðÓJ›6ü—™VÏ2ÇœjSI˜!´—Í)"t¼k*p]e]i $²vÓg²Ë#öAî°Š\ƒåç"¸YÃÃDb vNô3ø¢´Àš¹œ:g ^ó t(M…–J à^ÏÐj(èFöˆ$š·[´JÙÉÄû2«Ìšnà‡¢á8tÃ÷¨€—å9Ó' Y±ÿ¥5®–ò4ÅÑjr¸’"¸hÐ AÓáÀl‚,Eìà‘HŽ©ÄɱYÂs 9‹ËX݆v‰Yy ³}ECëÔÍ“yF¸7›•æÚÇmr;Bí×Ò ¡–w)„s£®¹JÚÚþͺâór=|÷±S!ö÷±×ûc¸|Hâ®^[‰ë´a¥””ÉCa½NVGüV´ùaN3¡—ÙÜ' ~ÅãÍ2<ŠÜKø|óqFXĶU20Äk`¶p3Û«t.ÿƒúËl ™/9Â,~IS3´ÍÜ|ò‡â¦ 7¦…üÕ €ûË<JvìDÍ£`Dj‡W1,‰5qÁrêƒÇt‰1ê³7ŸÕ“ÚJÂÛ_lîÅ¿ü&U¼Gö÷Ê:ýê@CïÙïöÁûÀ`ݚ Û‰Xo’‘l‰qx[|\­_0êÅÝIêŸBêÃÖI\n ìÔ3—‰°ƒcKvÜuN¶EgƒPLgŽÐù*³UGaNnD“ÎÛæ„9ž.ã륡:›1ÅKŽŸ+9¼K¤†,:¸iLyiiá`~³uñ‰mI8÷•`—J'Ïq;Û9RòyÔÿþÓ—=ÀHIÎÙ‹­?ƒ‰¯VfËC#Ë‹­gÏtR½FáÆ¥c4¹lëÇêïÁÒ‚"hæj¤èšJôœð::¦ãF™í=©åÌñ5d‰‹$#„u-0¢¼«V7Æ0U[ã 5…ÈÜ,Ò£j£‚yò¥E£×sÁÙÂÄWR8Äztë\DJ5Ç$¼ •ðj¢6u×Èx]Døuÿ§ƒýÿóþÓqo‹úìhx:’eþ‡\×·‡ï_î}ìmEßFqtâ§=¯åZïG ¾@N¼½õ'½â`ÿ„r{,Ûúø¶ž€¡þÀO·E‚ÞfþkC _Ç}PP˜D¨Œ7ìȸ<ׇ€ôíºÌóè>ð@¡Â9)iÓô ßün}å~ÿ}Å[µþYslš'qá6k%WM@xœ9¶6Ì06¶]—‚ê– V[Œ[7 Ça„â[ZþÙ¢l%“_ËùJöP†N¿‚.‹ÏK¬­ºõSF  *’™7W—cM,f­ÆÕ92ѵG†`Œ ]y_À©±2ꢫQî…Ôæxyϧ`}Ç×2.7µœ™ÒyºÆƒÒaêhuI‘‡a•=Б[3c*^Éù,ØÑÛº1³Xå±pÜœ3< fÑ‘$çùn¤ Á«°À1lLÆAñò²HûZƘ±k 3 ƒá —yÅn˜'Åg7+¶v«í Ц£`éÏŠ­røŽÒÇø*¿lûÈu6v¶Ìý/z¢Ç´¯˜jž\x™¤0kÜ&ŒÑ¨¡f¤TòœCФœa€ŽLb EøÆZ‰fr©:ÆNžeL‰òËúó«c#Æ`GÐç­À@ëZˆm»-çÏÆ˜6éö‚P£0Pþ|ºëµ68}‰“sujNCŽÏ²Ûw:Ö`©¦X`¨³Š;¢fpZN9=˜ °Yâ¼ñ-.ä,ôM¥ìnrtÁL&Îþé”B8ÞPLÚPj3áz´£ Ë({Ó›¤Úa œù)Úq¥)D í̓ï‡þ90cíñV‹¥«¶%Ŷ]Ѓ"†Rô=k,´Ðâ¼\€>)n+Ç}ÎFÎì)›¢j“Íq(¿éYÀâÕ#ue䂞kM²Ò‹„i9RÏ"¿­æ\¦‘2‰56z·EÇMÁÈ?› !¶p„7„52}YXÎx ôÂÚÝKoû!Ÿ|uE¥¡%¥C që¦Ñ©ÁpBŠœy¨ÁÇh†)qÖtvœ´ûd`ðÊjüJ…=âÅŸ TM®»¾ e}ÝTÿlè þ˜Y¬AÅ;ˆj FP-×Ñɬ,&Ó„§îþØò¸°IºÜA–ϨȖfÃÝç`õ+FQ꘰Ò9Y²úúbJŽã_«@œ'XOš%)ŽåùŠDŽRÇÛ±åwIÓê‘•-ÛЕ"‹¾¡Ÿì:­Þxm‡vSU£´Qo£R±` QäßÒÙK=«êüV )÷áÛÞŒmÐ#0…µ8–]¸*Veª*œ~ðçØ.†ÖÂmÔ펩Å: Ü4Ë”«t©ó¬Àð¢ÂŠy•WtiîšÛž|–ÌXÌAeß®X¡U˜Qi¾ÆQ¸Jÿ‘‰×UÝY0Ïö@´øg`–Õtñ>´x’¬EyhÇS[SU²²\ç\I‚”;4b*a`ÓGžS62½ÃMyª|­/^dZìé0VUbjjÓ­*ÖòOJÄÿÒ²Œv`5ËÜôÖÓѻ߫Á…9M¶ñÒžµà"÷¾Çcn2Ò ÚÚjO›zùœ-nw·q4º¬Nê¼·/N·Ð=q+©dÍ„Ž.ÍìøéMÜé¥bÚ«„n×é^A‹#s ŸPÙ{:ç¯D RÖF[ªØ4°ýú‚Ðñ0 ƒæÜëÖ0†,ˬ¤iü[Ðz}£ð¦¢Âè%®ví fõŠžbÙX¤% ëòt*"||D½h8²b@Œ}ÅŸ„±ê&×0Ò:B>ÊŒ¥Œªe°ñÛÚóÌŽççør¡1&m«Œc`e&Yæ0«€±mYö3mB´ÈŠ’}$ÝËÒtÎ "„جß/Š=V¡S™pyy™%Âݪó˜£ÉÙN‡¨txtà˜©°](žeK<¨óûön›s“År±ëõ$³^Ô2*üAsÞçHË®ÚÚFo·éÑ@7wÊ{‚UkU*ÓeØýÆÄò¸P«B6¤ö%9ƒ­Öç骗t‡‹s§n µoä©g]å)ýPKo'I*ik NRxþ^¬¥MlœTMt;á…Äöu›š&TõV˜úÇöWWnÞ Òz·ˆ¥ãLÑnîŸ*1¡gîf ñÀ*/y¹±–ÔC1Ò׃ÉÝ‚G[ƒ÷¼-2uœ¤˜üg…Ìûå1a×Ð`Á(‡þ—8tó[Ï…˜·HÎÃt²œ¡Û›dqªf/!J@ºÑ.d†Ú1¦ìDª°‡Yô‚Î]3‘˜Ï¨úåÜ¡þU}æÖ/uÉÆlœ,Bž™#b2ÿ`ålE€ÒÅ_ÇþYtJ œ*n•™çýì’X˜ŸFÿ¤'ÐîˆõßXïÁ""ú \Hšúôñù·sæø[ïTqìIÑ£"8AÆRáŸ%+0ƘIé·,´»U|GqÛÀQ±¸“Øõ'+°È;3 ý­Ü„ÏB- ±ŒÚÈ嘌¤þ9óõjI—z('Ñ[9‰+²ê§ëaÕÝØõCíŠ$æÛ®]QaˆªáÜUúÚkÅYúù(>tL‚ñÖϽ"¶„Ù¨p'¬tî\*™Ã†»sA J(cr×§`HÅÈü3êîk à )ÂôÐÅ£'86/9ëá+*§•ê¸-¾:x½÷éÍñ¯GŸ^¿>üûUôúuzZ…•ÕöúÆ%D(™m %é³dì ó‡Ã²ÖÁ¿1h/´WÕrðNÔ†K0—!*‡[eüÃ0%±¥¬¹<‹¢DfÒ—Ž ¤J Z¨æ“b EŸ#ãAÕpa, œHõ¬(¨Ðý+ Ù:5Áý€é×NÛ)Q:%«ùc%D°ˆÐ£¼F \lþl`üoš$Þ³òÞ_Á%nŽlÀçjǫάBÐf(5ÁSÅ)DLƒ&r|š Š"ôs*Û KŽœ¸Ý¯Ú«—6cþ׫÷ûÇÿýá Cä œ}øôòÍá~‡·†;;¿|³¿³óêøU‡Çÿ)øž{6zÚá©cÖãÏvvÞu‰€Úšæùbwgçüü|tþÍH‰E;Çws<ƒIð?‡¹Õö(ȃ-‚8Çö¿jhqÑw­@¼¦Á\Ìgq{dZiÀÏþüç?ï81{̑ںÚ]F{F>Ê–ñH‘ìÎçl²3áÛdÕ[(ë:„rÝÙ£=µ–©î)Ÿ­ÞUÖuV°iE©vØÎEnuë—•šã®`0]:تð¶5úéøõð?ºáYY,¦åA䥿ÁGµOÎüS‰fµèCôÎÚ¦³OË9„õì”òHÏw^ú¼ñÔO³0á,G“ÖOݺe»8Þ»Fez/)oÀ;¢Pç=ã¼h€,´ûÕ£†Ad“Ý‚$ÑmðÖ{"U8/6¼ºŒÔ«JòïˆÔ)åF‘Ö¡”—sEëרHŽ£Ñ¨éé®T¾ãÜ´¶ÜH™©@£$‹0æp¿¤ƒx§Jì˜Â¦å#WâÈJF˜$å`H“‰ê—¤8̽n´-±Ø!ȵMä‘./ò¨¦,B¥4j¤]-å²8IÒ¤Õ±š0PJ@ñ%;½Ôp 1Âmñ´ÊmlQ-ÝÀž(g ”Òú©/ňFédÑRXcÑè,“-|| WŒþýÁϧ[V²¦FR+A6/KI.¼†XXwŽ›âÃe:­)X$îït :‡FÛœ$‰²Fgõ+ûœ ’§¨„jˆï¹jPª5ÇQy¥’}×"÷‚õKÈû–cv8ÉŠ}Ò:fçÛŠ˜Xl’gDê åuŒçð‚ãx(bÇØ·›:aÑa¬•ü‚¼Ø`?‘Êh¼™¸0UvrX>E:cÂî±AÜñ•Öva1j-L±ruTÓO@£QR¤T±¥t-Oä°,iý¥ÓÝñ¦]ŽõªzF•ÈšÕ1öz ¨´ ÌYWÅÃRsž?}úlçïoßaÏC°Ó&¿rç|Œú™áL®:¦ß>FâªE»ôª‰Ûj‡Mø+PÇ_ãŒ!~>}7ºÈ‚ÕÛr7èºïË ÜoÕèž^mt%f´Âk;ÎåÀCpt²j Ûñp\„c”À×]rÚqù=LbS2^„âû;Š™+Œ2ç::ê%{^¸]\½;Oº$îµ'IB‹Ü`AÁê°Ç('B-˜ihûQˆWή6Wi¼·¹~仈\5×YK'@W°Ç/éÅ#~¯K‡PùyØïWïº}ÔqM%Œ´àQº6 À×_ï|AßÝUßÝiÚï®t¸ïâñO[1­+)â^î6‘Á5 ²VvZ EvlÙ¥ ¦¾FÃlœ¤)F‰îQžAð™§$ï0=2sQ…Á?ŒÏ¢4‰ E/PBØÈ§ó òK”Öx𦀠È)l‚x S_½7œÑ’ø$HÎ'C©\‡¯)Z'E„a;%²Ú×pÜ.‘AÞ×ýo„ÒSPv¾«PvŠ 9+(8I<»,h@×ôXî¶2Â>°M¾@ þæ‘wHhTR‘O? Öa£73Ç ô@¹½Äb„Î`œÕçRJÑæ| ®VË¿¡W±Žvé'†>³}ã]Û18S™Ô/ª>У N’·¸bŒ)Ù’l^n“ÌJhU¯Eƒ!²aÅ-Æ{ËçŸs)I Ðlà{f¬[Ž0è·œ{ùr/_ëÜËÕÓiݪ¥öŠ„K•ÙžR—’r+á+ñ¢’—7—hÑJ·[Î0ÿü4‚7dÞi’ša±HçzÉ#¥Ì¢I8¾#pÓ1šc¤mÁ×ÃñB ÊE]õËTÝ.ür4ªÉü$ùØJFT,hë)Øéo/Øs ·£bhjñ„ãÁí·œ«™_ªOC?¸tóÅtÐ | Õ³19ͼ”·YÎSâ²á€˜‹1åh@ƪ± 4‡Á‚Ëß Ú:‰óhIB>ŒÕ¬1¤‘o-D›,€ÃcF3åÿ[Fã/P,Š9oQCýb.pDpÇP-m8‹ Š'Œ1ÊfŸ)}¦Ü®fö"ŸMÐT:W#%BA i´DµTbhˆßÅÚF'ן)|F6m¶õaZ›Óëb)æoLíF•0cá'b%“‡J…T›–!’ÜF¼ú˜K6tñr¡zSsu·QçÓk~LÆ‚¨u±R\!ù¤Nó~aPYõ;$lY_o6Ü uå—Ø@“%_Wv €3qÄ\Ì—1¡.CyxT F<Äš0!@6é|ó5ƒ; ÙŽf7ÄQ)S5ŒŸå—и€”B?‹dmæ‰úG ¹¿jstÑ5¸”̱´ö”4Œ¤™Ä#"•º©IÓ-LȤéþ_?›Éâ¶œ™)úåÉŒ¼ÿVç‚ðeÈäE³84¹Àð€ˆsN›û‚ÑT½õäûÌV†Â/Ûšg~ F —ê_ÜAø{\%tTWµãȼH¤à1Ê~li2˜~++Açqh/7cº"!…–Þì^}¦»XªÒ÷¢"ÛµS{ƒ>üÓoD$§Bk‡5/‘¿AÉ%½ÂÑ%ÔK“è‚p dSå¸ÝeçöÂáˆ,`6Ù¢R¯ÛV2½ânΪCIG”˜'=€ý;x(.ª¸¹ÛptY©ãs.JëÆ•àvÈǨ0É41G‡±„ÈFŠ8N›iÒ&U[&EWü±ÀÅN’@#Þx+ÉAÎFT…üX±£ÂÎÐîAÂ@á‘ÅbmT™%åYéJîŒögÀ*ÀùNÀº½K]Biå¹/EJ¨(ˆ «¸ÏMv¸•r¼ì·vÔ'ð>†§˜¨{´Ô¥.C£f¬h]£0#á)VíŒÓ$ƒD™øÒDô“ Ò2ÒNK~¬Ú¯Yê&õ*$)l»¬}ã¥P62ÀÆ„Ž§ÅïÔœkVÝjÿðÐ=##V Ú–äù~_² ¡ ÕˆvU7ÄZdI0µý}¶XzD¬ˆ—d'^A6Å‹E°\5#”Ê‚’áªCÌ‚„6ÉRôgdƒH”Yi“‘+mƒØ¡÷ø—ù5–…jÔB¬ H3½*­J–>uºÌÇð4•³cM‚´.u§6a¨¹7l˜Gò2 GnTiéD\-À4‰‡s»ÿæF0‚Ù+Ê.è]9F>ÛfEæS¦#8ž6Ø+,_ÃHÀb=ký‡ó†’ËH€ý»\Ôö°K‘_ØQd«Ôîµ÷Mµ‚(äVêÉÐPYTé¢n4ìKþ1•v îKïn0´Û}.óJVA##ë 0ø¦>#U¦·ð"–Z¨Ð$Ù·ÚÛÁ˜îÒ[/²Í*…ž¶ý.¢M¶œÏýnñDmS2Îß»µ™vœwÍ™m>ÎІª–#HîÎ%z@Ÿ ÁvDXE!±Bù mŸŸ5CX¡Qù‘†„¸dc¯;(Á¦ãŸؼsTŒŸAHWÈÒ<‚é ›ÕF)ÒÎi@Ë…Ì{»Â·Žái¿¼.;6­ ‰'h|c{FÌMÔÑœjwqažLëCµw³ÄÔƒ˜&³°z-ž vÒÉ EyIÊáó±‚oªÏ„h<#Cmˆ:#I‹&;”/€°'¹hPïû˜òm ^[nˆòM·1èX¡A”©­¾ä2"j1˜ Ïs,‘nTt€ˆ¶:ý]“ß[ˆ©ŸiH#¨Ùam¨«ÀqÇ/lfÛè!íæÀÝ£èJ©'û0r,—bÀ ´6£­Œ!ŠÁ2×ÙP`ðŠÎTV‹Í«\vaDžË @Bj­ÒSmoî$âÌ0ÿ–â¥RBm·ª û±µoÏpÕ´Œ朡”z³¥ôì@n¬o¶º¥³ñ­uY;i6Û®¬ÖÒ‰ûÑŸµsê,å Û:—»ÚÞÙƒO¼.ÆF"P8UH ÷‘kóUVHºœEZкshزoŠL÷½­· |¤ã¿Eùï'¡ð ä`=Z7ûVÃvªúAƒ½)ãΊô¦’ÃP¯æ–¥ j²n|§ÃýBmòÕŽþ·#–(þ@hÂTqãYdÆÐk|ñ¤|·ø„`w7º±¡¿.ÿbí¯ôlϰÏý-G!úWçö“•V³—z¨ßO eq,‡ã âiŠÂº¸½Q°Si6©UdO\[¿PÒíÂÚ,ªælâ[ψ¿B dïžú\ë‰o,kxcÇê¿§¢‹å¡³àòf,“RP¾Ë•š8[-µù”«Ai] 3Z†k]+øiˆ6Ç8é²Pû·fêB‰uÈëè_ZXaRW³'% ¬gàÕšÀÛ5Æ&5Ô®ªøk¥YrŠÐnT…‘ÌÜ¥ åTÿS'‘еU ²­<(—%ƒ?¨ö× |HD#ë‹9Rs›Fá'~q¼½Nx#ýNFÂF9¥PÃqè ©Ä Ôô j8@À9Hçaœ1Ø¡ °”w¹ ¶ÍR·¹Ÿ}ÉS“60=‘ýÒ5Ü9¶ c”g^EN ²Ì@’a”‘õ¯B‹gì`­ÁÆ QSt@”6˜Í‹Ý̲ÅKÌAb¶ÖÍ%¶Úg`X06 ÃdyHÕ¬!„²‹¤Š°2£š²´œD"UÁf2-^ Bõ—%îzk$YLU÷ÈSU,6‰Û)º‹t$÷U¢,fIâÊUÕ¬³´•j^uÅuêHZªíUI‚ uÂíOE"GÊ••¤Ôä.•¦Ä¿†wíe…þ6fEÄ {½ÂÄ«^ÐÆ÷£J=(P ÔƒuŸ¨u.§ËdáW“N|å5Î+ë-ˆ¤2ëÜôvÇét íßßle¹âæS×¢¸¡ÕU·XfS‘„*"]p¾&ÑI'ãÖGÀ¢jr{:¶6ÊY§¡êR_Ùôs%ޮ·ÊÐÐT¼'µkˆÀzShÓÏúô>Ð_tLg»X”“¥cH¡†Dt˜Dá,ŠŽˆy¢E#¶¸ÉuÖn9šÆK ˜¥mçV“÷€æ&x2„b@€hahþ$g¸²…”*°<û ÀgððüÅ”ýœ… ‹²¡A ‘PtRãTÙ±!$^îXì –š8²vK;u1 ‰ñ>r>H„bÆŠc¦T‚,¢¼¿º°w‡Ó_hÁ)S R°¢1¸qÕ< ‡‚?Â4UÛ=ÀóSJ Q‹f% iÛ™ Y¥^Ç+ Ô) Æd‘³™AgRÃr*<¤ÄWúð^‘s@±@ÔüSÄR·? Ù’r ærfFáâ³ä ÛUl®bñœš´ëèo›ªiá†râ+ÚÇî WÏò$…AŸe]ðgã´nR#1™…å…ßž;€†Ï49ÏØù“i×騼…ØÙX :Z|î§§Q<™|×{:ú.Šðø»4:ê/‘5þKA¿Øzªš $Â[€#¤êÿ˜©ŒíÅ–¢lÅrNÕ¿ÆxÝm! ‚Ïy²Ø‚º>ùT=õz5šVsþbëÐÖÿ¨¶Óñ‹­h'm<:&@Èy ú˜J»0ì­áõË~Nõ0ìGœŽËT;õê„^£ª¤O‡þ#B"{6z6Dtˆ<´ŽroeGxþ*êÓR‹Ï«ö&SÛÁ=¨9¦uòæGu#à ÅÇ#ôS¥™iÔ8¸É]”»)*øUUœÀ›d ˆ—£jaš’«s"Hª29É+øp^.ó¼^ÜÓ³p6€ ­xÛ±F:+=ÃÍÛ[SÂñŸXµ¦N*t±ê˜Þ”šá…u·½:^ •Hg*ÜÙòdåv‰)àÕ„N„Ä,SdzƯùdEÁÖúÓX5ê!¼¯(úYKÜäº* bŸ¡2´¯Câ$ÒÑ÷³p%™c…p °>Äê:Òh´äe]á†î(ƒ‰á&@€B߇±k@#“—§ahûYñ, 5öG÷ƒñv™G.“ÖT•®<žxÓaà5YB‡+Rž_¾Lc `ãDGY|µJ¾"ó­ƒ1Ê ü:dÕž•׿="’Ae|‡ŠÑDJr³Bª¢ ctŒ¡Š`®pü¬hÖ4H]L>eN p–:Ýž‡~\~‡S¿°/ÈMF³@­í}‘Ò2c]‘Rpm$é¤UŽÒyDdôíhŽ sZÅ1Ñ‘¡h*Ö"Ú¾'ƒ®âK'‰B“ï©•™nP¹ÖZq™´2«»YÝ1äLg±Õ€¾ƒÉì…À,B¥P’K)X-l­Yå©8»6lìQ~‰ç‚ǘÀ+ ƒ¨˜œañë¶!&„1\¶iet²_¼ ¤4DÛWïßÝŽtÙ#ÚŸ²ÿ„ŠØø§êž¤èIÆäGEra·HÇäOC`§YFJöP#„(Ç×5uyŠŠ<'îZæ'tèT½ššË×K#ò`ÅåÅr!徨eçðÕ[êŽko’¤Š-ôå»ß)žl«ctZ5»W#]@að.àî´õÀ{×]÷ÀŽ+É•7$¹Ñ²\I`«›ÆúB«`轇V••ÈÆI­CÞ1¥ ðošD-BMå9î‡sQ½,ÀÅú Ô¡š :X@Ø?—¤Âå$îÇd²r(#Y-c– “(&­3ª Ÿýï7±û³Ÿ@'Ù”z«^8‰.YAœÚКe4ä²W¦4˜T}9ˆÕLÇ« ˆŸPlQM1„å#ì bШYv­‹Ž2ŒZ]]C%¾Bª!·Tí'm¨A ¥(áÛߊ1Bº¾ ²`NʶåðöL“e¨Ó¾ÐøVÔ†nP=_ §˜Ð-­tã´F£´˜(Yf…NõŠé‘‚ó .*½>CãÁa±E9<ÖxdÛ»Äu„¸wv¬‹8öÔ:]"N¡¦˜vÅEˆðåsL‚òa€OM “øVažèø 0:u –J•¦,Hš/ŠŸFÜTÒ¦‘4­’š ‰êÉÛ€¬çz)vñgRè{PØÆ{ …«¸|iÁíEÌx{g™ž8q«65 ã‘&µ:bÿ ­àè¨ê¿ƒuu­¢çjÂ[ß凯€ì“ïûiP ýƒ¼ŽÜ:A¾^eåÚ@Ž·ñJˆÇÈm\fÆã¶É^ Y`ŽéBëÖî¶š ;m¹!@”«»Q \P¡‘KbÁq1ãiO_ùr»1Ôt43¢wË9†‰öÀ‹bnªOvô§pßRs{§JrjkíO‡þŸßž}ÿ{“ûˆ¥‘Ÿw%ÖÖçž÷ìûaFJ„@ö£¶; D‰t E0ÚÆ{£L÷^3Ü;ÀgRÅ•yÐj”Jå‹r !Ô—£ÐIŒ›VG ª ÙRn•oCÜ[3×~‚u,z²÷—µÚ”`4f!„±ÕóÚ¬Æ|›Œ¼ÐÿÍ0ò[àpÅ0»›`q¦õãq]1Ò¹ Œå8šw±Å-ԿôÕw©þ ß¾Ý"îUßÿWÑh[«GÇ«ØñÊtÑ•õWö‡õ§gæïÓx‘«Ý.—܆¡?ãRSRô¥qŽØ! ZhúòŽ þ-Æ«`×t2¸ò@öf³÷ñþ,·;JÒ-X×J!(éN¶ß$C3âÓF':…Õ–è^.ð6µPñ¢²ý|éÕ—Iù[HuXÍŸÕ|T-IGéÔ„cŠ#¸¾B²O·°Éd{öaÐêGúº·Ëåƒ;<äÿêÏ?üéÙ÷O[^ûÞY4ÒÊï© 8‡ Œén\ƒ‚Á‰gÍšø³BÎÏ RƒfRÐTT•‹Ãy¿H‹6µ#¾ÙƒéaQH%Ž'˘V5ÌêRbÕOfáœ-³VÈ'F@Œ›JòݲwAs“!D¡ñ2ü™½ j+Ó`øÁOóKo_sŸ7„p¨—â œ¾0>˜3EÖga¦×KÒ L*SŽÝ/°{'Fâ FÞËKošÄ á_QÜPq›tMΡãXìbÆ×3ò9ÇXýòz¤HðÜ,š„ãË19®Ì°ôÚ²8»Ú˦ˆ!¶…ÁÑçIúe‹“º|쇳ÁP´zò rØ’VáëÃÄÃÅ9 Ù Vfnª áå9+­k@ÖŸ&K¬$miëUÂW ŒvBÈšÔ˜§Û¥“@îôš§¾Ä”(g®$þf·(ëÕ·xÀ¯"Ån”ö¡ôþ…¾:ÕÛœWëô‹!>ª%¤¢jµOÐ[!¹’Œ?RQ¹›…§þ˜(ÊòIaÐÕðä1ËFO | “½¸Þ¬8„áBí¥B¬š9 Z‘C`9ÊO”ÝDÆÇpð„@AáÊViò-ÿ\ýµ…÷¾Ó%ærQ.íÍLØ$€è€A킼+„» · œ®!è¾ø‘¸ z)‰L]~ÒYPK¤È¸gµUZ"â*nZ¿®¦d_Hi)ž¼ ™zXÉ­3¹•Cí¸8k1óÆj{Õ„–ú››FnÝÔ-ÕÇ8wtháÔÀ[°|4Îר`½¤PÓ@K·4ÌâKšÊgU¾Ø­7üÖz+IOGå÷íçl2j›gMMuq*ö¢mã†À ÕoêJfĉ‹oYUnÞþ¼oqnYwƒ¤YÝb;ÕR6Íü×§ƒ£ãfR-½u…Ž^¿ÿøËÞÇW7ßÑá»ý7Ÿ^¬ÚQëž—‰¬£<è|ßÙלbzãÙ²*ÙAõ®Ë1$2j·ú» ,­W˜©,ÅÜ q¨Oš±š{Ÿ„1 B6P¢Zö)>C}Ýî­´ûÄ_o¥ÝïÑe’£×•Ý·Ó2û„J"î0Þ®ðh¨­%Ö 'Wj²ƒå°ç™ù†&W3Ðv¤°+S^#}‰ŒªNÑ*׺µp)kv+ð&#²cÓ õ‘ƒøÌY+¹Všs9  µ7Ì9b´á“aÀyì$†C6Ôg€‚ÊgP¢ œIZ¦n¤SU8S¨Í)iæmû\xÎQЂ„VÁ0Õ'&^ñêêðÊÊõùØœíbÐÖÁY·_„²´B¢fêùu[zÓÁïL©ètZ¨€)[îŠXl¼Æt¾ªh˜gŒìBéW1ì7¼E_Ê«…„ÁÛTʱÕ94’õ‡Å æ±^n¢éŠÙÀþ·Ÿw“e¾Xæü8œõ2†ÆŒÈ®…tiP½yã„BÜíôùëZmß%„L­”/€ívçu­ûÍ  ºê÷‹VÍïŽI¯}—yïž }›EÞi”}•xï õzõ­­+èÞaë k·¾¼±Þå/”Uà½uNµµÉïöRî¸ {YMŸÚêcA¯T¯»þ¥ê»¨µ2¸uw® …bÒvQ¸é¸Óž_ Û(µjŸõ%(À =`ßtàÄíœÁN\!’þ^¡g¶““®w(ò©]z9êšÄÚ¢cjQ÷N\ëÙ\ðÍé­–ûú|Ej=â(ðrí- oÑ{{ILö˜¼ªßH5U×¢øŒ |3‚{çJu·‚2 àx–UÎ.¤‹…1qî*4k/ŽÆáìrä½*[UA7Ô•õx ¦Ð"š›e+¨,»|0tr"4èÔ§h®KȱGäòt_ ‹8-Ý«•öø*`Ü&ä1ÎÔ=N0ã1ât$çe<Û 3u!ÃQ’žîPZîJ<{öýÓ-/‡RÞù‹­_tR¾‡£Ûº•x"Ùeª·äß¼§ˆï‘±û6ëè-‡l÷å­ç®c†x¿$[Öáé¢ì³æ_°öèxïøà×£½Ÿßýõ×·Ç?½oðMU¶Öe¶€ïP*n[GÅ·®žÚÕYË‚ê-F¯0^£ù%-°Ü=£ýŸöÞýõà׎Þí´¾û[mMþXË}ðnï囃_ÿëÓáÇÿsôëÛ÷¯Ö¶ÜDz»‹]ЏJ€æŸÃVZºšˆN[«8´¿XŒd|4¼–Ý­ëo…Œ«`lܺ7aô€q•(‚†`pêåºsÔëªô”>n(ÀD^ºmËy„-Ä]Ûcë++mÀÊô]³|)O®Áxx¥…_¦³¡›JïìøÁdçëú®ªßj_ºJ.ÈzFÙ­‰ÕOý¼_'ZÛ¨¾%¬†ÆØßpøõú¶K õ:ÃÈy°C©Ëdr(ÕÈŸñØ­¢Ã=z„ù¼ž ã(iª3”¸¢Á»²"a|¥I ºÑÚÐOr‹˜A‚d:Þߎ>Ÿ}ÿ<Q·a•ÖȉyC™äül,ÚcFÚ“3Œ`‡§I<ì‘ôô¨8¬Ü—Œô¼K!|  Lಇðâ,$wŸt„¨õ!«¡³(M†ÎõðÒ$™ã4ë³ÖB"¤R ¡¾€¦çL!ûVP´ènh>á5RŸÛ',è„„Sà pq°L`<åk®®"ÖO i¡¼»D@Œ›X~d?©áæ:ðLcß7kÒ0%fÊ5jôb¶Ì“¢ö̦©ð#,Ü€3ˆ’ µ¹6½å´B‡±ä! 8®Ä^-Î%Ít5a9¤ÇR"J*Ž o˜ %`\ƒÄ&j`/Ö¿Kkozº'Á";Ÿ 弫s¾&qÂ’"pëGp:FÌÙ:K6•BJíkà9¨ÖàV×âälÇ>ÙfpUE¸ëFÕèhÍRXýâÔ¾3Kü`˜Äµ—æÙÞ{VßOýK*ïÝìù¨‘úãbé¼t§óú‘3±o®^Pp®)â‚e¥I«²8 y¦IÑW(têrQ$cªÚµ¿¼…!2]e²¸!ql‰d #®ÇRÃäËEDŽ_É(TÿO?ÕVö ˜Íçàí (å´6-¡“ãÜ¿Ì$r¢ìÂlŠx#ïZW/[‘ G£Q‹IÈ]n‡[WÄMdûÖͼ9Õtq#¬»pÙE2×›„œú¡®Ì·‹,wç—ƒ—ÃÃw¯wÔZ -™Š%B85õ½ß<ÿîgQ\É㦟҆ õ·œÌ¶eö6°Ìô‹Oë;jxKŸÒÖóSɪo]Å!¡•œo*”²ÕuÔà{óªWŽs8åx~/2ev•6•H|Ä·Ó`[1øyùÈQ6Gýë$‚SR'ä㔣ÎÃíXUƒXýèzmGºßŠÇ™éºY+r‰óYwúlô”ü¼Ü›`nI`'–æ„ýMÈ¢€ƒ€fA¸¶…J “sÒ>ó©’Z þë.¶YÌ´UŠý<úgÀµ¦vb9?¥Ú2¥EÕçY£¡J÷¦ð¢Á%Ýž¢'ȃ«©ãas¶èw1•<_pôO6'¹MXñ@øõ„Žþe®®ôRŸüÀ÷.Pg6ì,g.í—·Êgдã¼LôœƒqãÕ2OE¸z‹¸Ð]¡5B»¥\jÜÄiZ–ÛEžfÔâÝáúE:Û!°KÕ(­LˆƒOúøms@€ª®ä¥PŒRݘ‘•ÕÁf ¦A:*òÏ/á¥\%å,OT»uHú1[Bñ~VWµ–õo!(´F:ñ*öÒû Ù|ÇáåÈ6OéxÛOøýÆ6ºnŠYNl+uI€]>¿õ;/î͇:U3eÖEìúµjÍÞò·-Œ™=Ab!Àƒˆs\¿œj!#gä„—&z´/`ÏA2^š£†P—–ûP£É àè£qIˆÓ}·Ó;ÏGß.v´aKnû”˜ø“¬Ÿ^¨RÄ -ÁGm{eÖ´’Í_Û ¬î™šÛŒwj¶ñv¾}S«Rõ{Pm–t®ß¬® €t@ì×e[Ä©H´ô ÏdÎÎRÿïñ)úUP-‚€‹-’(Öö=*ÃÏï8"´YKµjÌBõ:±¶›OÀ]ÔíYúµ¡›®š’«UKaùµDtkÙ¹Ö©¡¬–Ž¥È}å„ »BJÓØÕ%Ð6t›ï¯–˜qÓù·’M'> Ddáþm)oP¼V®”³S±O7•ë{»·.³¡K·¤y{ôK˼×"„êV´±Ð63[ºÇ‹+µóÖ¥`Éæ‰ƒ ì 5p±D`²ééR»I7€»NJ ²&¶ª‘„½–·¦;?µVx¨V¸SÉu ®~–nÏ0œ6Ó‘o 1 ÀÕšŠÒže¨ý1à‹ œ2dk“áXíñ ZðúÙ2͉ …åÖµH”áƒÖÍÅiüö¢ýsÔx„þ “‹OW”“ âäÒ±}³Ñ×Ç‹j”ÉpV¬â¤U²‘À”\id%ÃûfºÝn~Õk\o«™oÄåv{ì ÕÍ®¾+°«·¨ae¬(Ô9>^TËÀnZ‚ÁÁR¡7²=ª\™ÖÞ‡CmsʧPµþœ¦³]®6ðæQ¡­’ÌUþ}2"‰°°‚i™mŽ{ø¬o†ÿ!L#T&Г¬Ð75­ùfx±H²0c¬JÔóñÞÈû]o‰Ô;UiµŽ¬:yŠûNE:ÐÊO÷g;Ѻ‰RÜÐ>¿sæÜµý¾üH)5Š>o×Z¬Êc!á‰}í7)tG0Juç£rëkˉ¨ç¸Qém½kÑ´cçØÅ‹wàaA f‹~éûY‘~í1¶Ò/­È#\ô P,4»ARo”eKëù^Âañk7ˆõÀH{·uÐh‡PgWÁd•+ž:4LrªnRWnÇ燢.•-ÀXØâËpìC%ÉÆe©a®˜¦ùÐé¥ü¤:Ç]Ê¡¢vE›§§y"íjŠ”EÚ5Qé%Š'Ñ…AW~lêK ¢ñ‰Ÿ±ˆ™Ä^eþêá €ŠgȋĿfÅØzó9‚¢›Iˆ-À^éÂ’•æY5Ç8p–ÍÚÍ tcÍ*©5Û@ئy nÅ÷âUt<½®ÈŠZF–¶‡Tô‘±µd¼ÉÉgXó)º=ÄT®gaÖ`­ÇÌ1Σ|:pÉ %qt8:ˆÈK–yyOn‰ò>gG¦"Žù·£×-§Å}†5=³ÇÓ8™%§—nô=íÞOɹâ)iÔÄF1"¡· áìß<}öDÛdt*;ñEv©Gs“ °Dåhö‰o¢60_uaÚŠ>‹HûÓ°>.Ë[ø=ì?W šЧ€°? -…fƒ¥TBuÆ9>˜ŒÇË´DF°T ½Þ8ÎÞLÉÁ¦ö7ó@œ„¹ÁD‹²žü#À·0áKb«;¦oéªÚ„Ì#fUæÑ·ýd¾#gAgæ–¾¥DŠ©€9ûN#Ò,ƨ@kä‚ñ÷ùìµ6.«×`c[Œ¯Ç¼.CÏ¿¿}342ŒL4 ºà•¢XËPðžØíbóì5¶å%ùØÊ#Z9Ê¥r^Þo_aPÉ­·Å® ‡¨°Qö¦¦‰Q<Â(—r-|€g±üO|šéenI´-ç%‹<]PEÖ˜¶aí^iB’¯_ûàa¹|bEKp™÷Ê"8k”MeÄèé¿ç!6PVšäXËG6½z´^ç yia‚mQnPSáíI#¯£Y¨»¯UƳt¼µgv(aYÛ| Hj‡Îò78@,}3hYçÜÁ¿\F3u¥²}@Ó¶\aÃSµÓè)nIJ'‹ê­·ì~šXèkWj¿ ê¨h‚Xð&V“ t=—4€µiš@ÃD¶ß&ã/å¯Ý“@SS«¶<É  fž@é,p’,Ôƒ¹±cPûäY¢ÁÞê“ôNÜ9óáp¿Éô_†~\OîLÇG´Bʃú¡Ç¨$ñ‡Ë“—ÎûÛOðèÄ„ŸK4|UˆÅÃÄ:aø™º).•ïNzŠ~˜†[‰é”La3aÙµyêÂGE kÒëb¨ÿøoÅYÕ0Ö+‹VEíHuhêMpgȦJbþËaÊÐëï·Ì™E,GJ¡äF͈¿«Ð%<ÙZ5îÑO€ÂNG*JA¡T ¤é8âªOÜð=}ôv»“ëuåI›×ÁàŽ`8–\‰QË8þÒcžä½`3, ÿ¶ý„±(Þ.sˆÃÜ“’·þ‚Cû_t"SHñšÙoCËÐ062Rÿ¯'Bƒzf©Ÿ|fÉ8jÅÏ Îñ=twE 2rqbda¾O }ŸÔ W?/a¤¨Ô Ò î ®Ã@•eKZ*Í“åõÿ-ë­ï%„ê­¼{¯ÂÜ ¦9÷Im§Ëp›Ý&©ƒÐûÓzé&ëêäùñ8L&å¦íÊÚÃñ¡ÑƒÁ”@£X¸R ŒheìÍ…-ÙÓ "7Ø2À~î¹ÛåBf›i&ô}¢Ú¤hnH˲W ù~¨ÁýøŒSrˆ#U4í„Sÿ,J,DK4kž&¦>äIè´¥,á*Μ§nß#®‡¨ËßiC¥YÖ¤ëmÊ®Ðb%À >/ç G­¢> HGÅ:Q[]s4£ÞÏ=(Â_¹ ®a¿Å¸Æ‘Æÿp^ÊÑ8Y(Á°™¥Žñ ŠókÖ¿&& Fþü0hðÛº…„¹²Ù#½6ó›xþ²Àã6Dšm bq—:j˜É¿33yK¿C’?=Ò……ˆY œÎË£Ïù¨ÈU$¹¡´C3 ®¸$ý+…}AŒ¸›r] 0õ›È›9¼œ“ûЂ¯Ï³—ÃØO£ä6–Eѹ_«e"°Ÿì²B­ø%Ã%u;V<:TA D goŠ_B½ŠúQýMýš%P¥>.®UxŠSLd@}Ëä¸[QâJ/U£BgîÛÄ‘€¨Eç%JÛ@ÆÜ´3W*¶BÀùÖ;;"åÐÍPQ™Wcæv:ƒÇÜ“ÅãKï \l;žó;û¸Ûx!lD6u˜`×ㄺúý㓃OÍÍïø¹Û¾áºv–Qi% =áQ6¹Kb{%¹Ð£Ò>Ýá)Äßõö{ |àñGòÝÚ=´Ñ í0ñßgo L×g^l“Œü¡™ ž½xÛÛ¶‚ö„‡ÖLUPΞ<ù¡qä5–Žx9›™I=ø›jš|¤þDŠÎf—¶Õ¨xdô…’‘ ·”Vö¥ Z`/PRP‡ŒX}¬”Óâ  ôÙq¥ ýUÈ&7í›].Ô .œe$‘‘ÏĪò C•lŒÏFO7ÁM댸ÊYû]ïÎZîÒ¸õ 惓;kCP<¿E¿®»DÆ…:„.—Ô6­”xuqÈæ¾öÞðƒ]0)öBÈ žÅ”ë;–êÊHßTú«!(ü'a~¥"ìUUà š ÌŽ¯ Ù3E aò5ÏM V&ßd\ƒQÌ (ŽQç2#Ô•c §À:.g?±gBB@6E€£n§¨ÿi…³À$Þ{¸w/¶öàê‰.hé÷Z¶qEÔðž«¿Þê~QäiÁvºÙó>bYøÜ•&Æ› j%¹až$3+ýÑšé§Eàù;VO´¥Aª)-ódîç-–ÌÜICüXc$Af¬ßèÃûltAn±C@øÕsõ%ž)¬Íc$gS¢á^HfVg%‚£V¢ÛÜ™?Ñ‚ÜSM"Ž~™F bšžû_ Òë Ï“ ¤ÐsÅÜ13@ˆÍ4””0_ “°¤Cõ—ÔÄ)Õ¦Lú™>—ÔÿáÄê\ÑÇ2–EÓÄ"K!$å1Êi°'ÐWúEK+sã~ÙûøîðÝ_M"*Þï²%)ÊLb%«ŒŠµv GªD9£V²-?ûÀè;¹T_Cˆ½¿½9ÆsƧQÌ{Ú$á_$ñˆ¤$µ§á(ópê<å}?únô9 ®r>8 lM—±‰›äúhЉġ)[C5GðhÓï4x±ìrõ pëTCMþÅŒ³Ÿô@1ú „g&ƒ À¼`6Š’€!„Œ ëj B*ˆ×- jxM©´ÌNFêJnA’û7ìå÷‹ùÌ Ï/0·oVdnß^¹ Ïý46+M\Îû…UìîÛÕ·+Î仞f2”ï¡Æ|ŠÍP~ôÜ«°Ô<¿k`뛯ƒöù ÇêQA¨6vŒÜ^q‰– åÁŽs—jlž©µÆÌŽÈX=h~Á»B®‰10F1L[ˆV&É–Ô á¹2%Yº ô¨û@:ÞsB8%¶”njŠ­÷uÏò¾9κJ7YÏpEO€%…”,‘T´XÜg½ yk¤ÅÀØÐaBäb}Qƒ“ÖJ%‡ØßÞôZ¶fî’œj¥Ó¢Fæ}½Þóä ©KGª+F?œ…Ž®ï(nÎzýq&›:n§S§•¥±¹;Åòî:u™ÎN+T"^”~¾ê.¾Ç›ÂÀQˆ™>`^á_Gù¦CÙ‹÷˜ ¤Îô)A£AÊ|aû7p™Ïüt€ ´ªê“Ÿ®ºˆ@º £9­Ù§bKP¸€@¬à%m!%38ìwð† ’6u_d`½6Kˆ¯»†¢N¢l³˜ùcò‘ªŸ"F"ôVBw² û$©rý<ì8ÙDÒÕªhrixí«²B¦nÉs¶¨`ΕJ\q(¦¡Í.ŧ, *ufZ“·ÓEÌY1ß&Ar7f>¨à €Õå·ô¥öa $ žF‘¯‘yE2U#ÂY4ð‚ß†È E&ÿòÛï(÷§ß~ÂWI®ÌXÍ Šs‚`ŽäLr`í˜8èÇ‹’3˜.ñ]©ä`ÃŒéÕ²ú6þø4¤{‡ߦß ‹X²°ô_´q{ö$–Ñ9RV›’$à[[qöm0òV0ËøCR×9ü'?O¼„°?-=®×±…}kJg€:LåQôî[,’ ¤2‡BÒÃõ -ÖL‡heœ¾ñ4œû¦¼~,@´Ó¸MÍñŠÚÏ <Ë`Û¿„!^³ºŽdÉÕ0±lEARØTwÖÎàP,!Ñg©#1MuZDCÂÌZNIÓµU–ÌõpªÂªã]Å82$ÔŠôÕ–ÛX•MHQ”/æˆvVÓ‰»b,®—A› ë7€›3ü€ÎòÐçwÕ™ÀÒªã匯ùŒùh}"¬`üµ˜Ã³Yt:…Ð ´cÚ€ YaG–ËÁ¥Í!­£P÷ižngÙCsC›l]Î!uÌáRÓ4IS€óÏᮃ³ðIj3O êã‡-=$ùǸ ÅÔŠQ]HÁ®%?Ó |Z öz¸rY]XˆŸv1ŸÅ­Èol'ûÙ*ë¸~Šéok­iIŒË-î­eémwµÙ§ A¯+Y*7¯Þ]­2y}:øRIß)AÎÀħÖ]ÿ£yÌÓñ£iì{”ͱDÁÌ{I?vU‚ž™â”\ŸL“V 2Å, H•^þ$ïí \Å€à*ïr·®˜EæË¼Ïo* >«IíÅÁÏþ, ¬ºjhÿ©”‹¹­¨YZÅL­m½\s\.ìU5^Õæ€V|I‹uÒ¨6 œÐà>(JEذP ÛI~Æ·±Cøl°Òx›)ÁƒúÑùî-Té]'›lR!r¨øÎ099Šþý_ß½ñÎ ½;õ¢¯ _ /Ƴ%ä˜Ï¨Öcêš§PòiYäâAæTãþƒ}5СñêsŽAWÆþ±dG”;VÌJÒŸ)Ô“­Ùúßj¼ˆ(%‰ÊnÑïn¤c‘Ì7v^gñéÄøíƒ7O¶~¬øéFÐ6n&ê­éÐJdy _xˆËÔB:ô$'½8aÈ3´šûã4É8,Š0¬té.ô Å:åýBÿbÆô&qÌ,šG3JÂ04ö˜m4 ~žŠ’bèf¨®bQYš àߊ’8†F[ìM›obOM ®C˜•YAO³UœÕ4¤Ðgô:.¡5{‰°>F–SžO>eÓ‡ÚOKL›B º  ßi¯ýqkõ‹$P?G1èNçX­Å ë(¥’éžjó”Zˆ¿©3 Šx˜b?«T?œÀ{úÈ>P(QrhzÛú±ðņÓBÝ2óº0Ó/˜úVî‘ÅãáÏÎýËÌ®Þ"¨gi8SËÄ #ÅÓÂõ“ti.ðaapu&ÆÄ Ä€ùºÕ¼J•æ%ëâ?¸ë¡Ûµj;ÓE‡|oÆÿ؆Æe¹\¥q·ç¼ DI_ˆFÐ’2¯¸Ò˜¿t\¾˜m¸ã U²Û¡ µPpÈF_1#únlb•øxÝŒ”gAÀj`@•&·1¼Ä÷Zxá¹Û#‘`à¾dœ BNjX¨ÀŽ`ؤ7¦ÏŽRÈM¢ µ»À$qünóë2¦ £ösís¸÷›Û+ë»cs¸#÷†šm†@¾úP6ÿNBGd2lÌÕÔ›\N…ÔÀ³EXéÆEÇùqAkI*¥Ø uÿÒùµh¯Wv¯Ú±&u¹l·•VsX$3+Ùø)4•Ö{3 ¬ûðÁósGï÷ÏÏ}•ÜîƒX¾á;ûàùÙ¬«(ÇQ¶‰¾ŸÎÛ0¿S¾“»?ƒ;¹¼?Wáa°˜œ]3­Ú±b;!” ½"ÓÙXn ºiŒ¾Ë˜6ŒÜ)y÷gpï7rbîúÖ^u÷~sû»úoiW„³+ `¢»$œåéå-Šgˆ†sï46™nžuXFö ¥mzàÒ†ÌäÞoô}´_ÏÏ3ÀÓƒ_§føýëŸþãùóg?À¿ùŸz¾_ 6yˆð½ií^ùŒî¼HµÄ7›Ü!ÖyõðÉM—hÀ’OsÛ ™ææ<Þ4U‡¹Ý^vï½ûÄÉ~e3¸Ù=q’ê‚Á‚³¿Alð}Ùà¯Ëz†áŸdyª.Ä;sƒŸÎ’6TƒŽ³èîñ•ú¿£Wz4Ù  ½q0Æn‰Yæav%Vyæpÿ7wÞyWÚUçpGîòp–mˆÅiå‘lî4øï º‡0k­uT÷‰¬¡œÖ2oi_i4›KÞñ,ŠÃá†Ozó“ø,LsñÃsõ×b8 ÏÂ&÷ï ºaõWüà-Ê^,óá&´àÈîï~ðo®}÷~sûuŽnˆqs¥›i‘†“è‚jÜc™*×á nÁˆìêžÂR£I’lݳ~)8u× á:ó¸÷Gýλî9Ó†8n€éjÂeøJ7 ¹(IeH$€MjÇDÚ )žk‘lšô°R„<õ Ç·‰zýÚnnQ’‡M¯bS+É}$ða™@:]6 ¶õo‚– S)Bêjwz§'i2ÿConæŠÄ¡*§š/Ö!†*¡÷fóä®ïî=Wûz·½¬4·©Þ°ŸÚ7©öVÁbCôAZ÷?tÛ½¹$ç!…m­”ë”&›ÑFz¥ÌYžõà–~pK¯î–æJ ~é?Ä<îýYðKo¶ðùà—¾º|¹éŽi¾JÖì˜^uFiC[·•¦OÝß¿¬¾,Ü$ÃMóh6Œ¡ÞÒM£ÕÕ»~e>(>ŠÏêŠb­§ßjŒwm÷þˆßÃU/8©pœ{HU Ý ¸zÓ­Bg®,"ŒÏm úØû=”ó 6ÒÉû½9j¡*° Ö³æJ|ÃBƒpâ/gy)¨ù4ô&Qšå…ï)Å¿ÚÄ\T%m#¹'ž?'psƒÎC×q=Qt.îºõPû©rYŠ<ø.ÎòÃþÞGoÏášbžjÊÛß)ÄÀnÒiPFê·Äî~FÌC£šejù»¿Åכ˽ßì{s¥ šÈ×k9mëòŽŠhgþ&Õ5i͆úÏÚCdDß ƒ¾ë»{åIÜûí}|ñgçþeF˜¥ÕØils*Lýÿv®f·A¿ ã´h¤i‡j[{˜Ôž¸íPæo!‰Bʶ·_ƒmš*QŠT…D$rlÁX±#jþ¥Iê½ Y°Ì3L/™ƒiI—W´ çËh÷W_ÀòÂS£˜r¦Ì\.6e)°æ¸vh§Ê`=¸.0å°]¬º*‡®è .ÂAk#´O€.Z¶èó¢V\~žÄÌ%wéÇ'¿Î2©Û €p¦àÃÂ4ç3u:+/g–Œ:0TâÌwÚþª[ΣjsÉA» ×³ž»2M€!ÙnáA ìU…Éç²UHᘂ~&EÓßcÙÓk;ƒX~óÿ޹ ‚È æ…œ‹½©Ì#Úc ‚ísMdaØ–dãçJ‰G„¨“ê1+ ½ƒ¦GZAQY#Úú«²ö=Sq¦çÔN*qƒ;BfÞ®5>2Ψ$¢iD´º6žu ëûûO}Ÿ„ŠK|{g^üÐÕÂìXò_ô­£\UtûPK ðDŒ< íAhtmlsingle/PK ðDŒ<íA)htmlsingle/css/PK ðDŒ<íAVhtmlsingle/images/PK ðDŒ<íA†htmlsingle/images/callouts/PK ðDŒ<¢Ô1«ØŸ¤¿htmlsingle/css/highlight.cssPK ðDŒ!¤3htmlsingle/images/callouts/15.svgPK ðDŒ<ƒ¤Tô½Ô!¤À5htmlsingle/images/callouts/16.svgPK ðDŒhtmlsingle/images/callouts/19.svgPK ðDŒ<±I‹ ¤Ahtmlsingle/images/callouts/2.gifPK ðDŒ<¯ ©ÑWa ¤åDhtmlsingle/images/callouts/2.pngPK ðDŒ<ý4¼=ž ¤zFhtmlsingle/images/callouts/2.svgPK ðDŒ¤¿chtmlsingle/images/toc-blank.pngPK ðDŒ<½€ËÄô¤ehtmlsingle/images/toc-minus.pngPK ðDŒ 12.6. Replacing the JSF Managed Bean Facility

12.6. Replacing the JSF Managed Bean Facility

Spring Faces allows you to completely replace the JSF managed bean facility with a combination of flow-managed variables and Spring managed beans. It gives you a good deal more control over the lifecycle of your managed objects with well-defined hooks for initialization and execution of your domain model. Additionally, since you are presumably already using Spring for your business layer, it reduces the conceptual overhead of having to maintain two different managed bean models.

In doing pure JSF development, you will quickly find that request scope is not long-lived enough for storing conversational model objects that drive complex event-driven views. The only available option is to begin putting things into session scope, with the extra burden of needing to clean the objects up before progressing to another view or functional area of the application. What is really needed is a managed scope that is somewhere between request and session scope. Fortunately web flow provides such extended facilities.

Using Flow Variables

The easiest and most natural way to declare and manage the model is through the use of flow variables . You can declare these variables at the beginning of the flow:

<var name="searchCriteria" class="com.mycompany.myapp.hotels.search.SearchCriteria"/>
            

and then reference this variable in one of the flow's JSF view templates through EL:

<h:inputText id="searchString" value="#{searchCriteria.searchString}"/>
            

Note that you do not need to prefix the variable with its scope when referencing it from the template (though you can do so if you need to be more specific). As with standard JSF beans, all available scopes will be searched for a matching variable, so you could change the scope of the variable in your flow definition without having to modify the EL expressions that reference it.

You can also define view instance variables that are scoped to the current view and get cleaned up automatically upon transitioning to another view. This is quite useful with JSF as views are often constructed to handle multiple in-page events across many requests before transitioning to another view.

To define a view instance variable, you can use the var element inside a view-state definition:

<view-state id="enterSearchCriteria"> 
    <var name="searchCriteria" class="com.mycompany.myapp.hotels.search.SearchCriteria"/> 
</view-state>
            

Using Scoped Spring Beans

Though defining autowired flow instance variables provides nice modularization and readability, occasions may arise where you want to utilize the other capabilities of the Spring container such as AOP. In these cases, you can define a bean in your Spring ApplicationContext and give it a specific web flow scope:

<bean id="searchCriteria" class="com.mycompany.myapp.hotels.search.SearchCriteria" scope="flow"/>
            

The major difference with this approach is that the bean will not be fully initialized until it is first accessed via an EL expression. This sort of lazy instantiation via EL is quite similar to how JSF managed beans are typically allocated.

Manipulating The Model

The need to initialize the model before view rendering (such as by loading persistent entities from a database) is quite common, but JSF by itself does not provide any convenient hooks for such initialization. The flow definition language provides a natural facility for this through its Actions . Spring Faces provides some extra conveniences for converting the outcome of an action into a JSF-specific data structure. For example:

 
<on-render>
    <evaluate expression="bookingService.findBookings(currentUser.name)" 
              result="viewScope.bookings" result-type="dataModel" />
</on-render>
            

This will take the result of the bookingService.findBookings method an wrap it in a custom JSF DataModel so that the list can be used in a standard JSF DataTable component:

 
<h:dataTable id="bookings" styleClass="summary" value="#{bookings}" var="booking" 
             rendered="#{bookings.rowCount > 0}">
    <h:column>
        <f:facet name="header">Name</f:facet>
        #{booking.hotel.name}
    </h:column>                   
    <h:column>
    <f:facet name="header">Confirmation number</f:facet>
        #{booking.id}
        </h:column>
    <h:column>
        <f:facet name="header">Action</f:facet>
        <h:commandLink id="cancel" value="Cancel" action="cancelBooking" />
    </h:column>
</h:dataTable>
            

The custom DataModel provides some extra conveniences such as being serializable for storage beyond request scope and access to the currently selected row in EL expressions. For example, on postback from a view where the action event was fired by a component within a DataTable, you can take action on the selected row's model instance:

<transition on="cancelBooking">
    <evaluate expression="bookingService.cancelBooking(bookings.selectedRow)" />            
</transition>
            
libspring-webflow-2.0-java-2.0.9.RELEASE.orig/docs/spring-webflow-reference/html/ch13s05.html0000644000000000000000000000777311360615630026066 0ustar 13.5. Portlet Modes and Window States

13.5. Portlet Modes and Window States

Window State

The Portlet API defined three window states: normal, minimized and maximized. The portlet implementation must decide what to render for each of these window states. Web Flow exposes the string value of the window state under portletWindowState via the request map on the external context.

requestContext.getExternalContext().getRequestMap().get("portletWindowState");
			
externalContext.requestMap.portletWindowState
			

Portlet Mode

The Portlet API defined three portlet modes: view, edit and help. The portlet implementation must decide what to render for each of these modes. Web Flow exposes the string value of the portlet mode under portletMode via the request map on the external context.

requestContext.getExternalContext().getRequestMap().get("portletMode");
			
externalContext.requestMap.portletMode
			
libspring-webflow-2.0-java-2.0.9.RELEASE.orig/docs/spring-webflow-reference/html/ch09.html0000644000000000000000000000541011360615630025525 0ustar 9. System Setup

9. System Setup

9.1. Introduction

This chapter shows you how to setup the Web Flow system for use in any web environment.

libspring-webflow-2.0-java-2.0.9.RELEASE.orig/docs/spring-webflow-reference/html/ch02s07.html0000644000000000000000000002507211360615630026056 0ustar 2.7. Input/Output Mapping

2.7. Input/Output Mapping

Each flow has a well-defined input/output contract. Flows can be passed input attributes when they start, and can return output attributes when they end. In this respect, calling a flow is conceptually similar to calling a method with the following signature:

FlowOutcome flowId(Map<String, Object> inputAttributes);
		

... where a FlowOutcome has the following signature:

public interface FlowOutcome {
   public String getName();		        
   public Map<String, Object> getOutputAttributes();
}
		

input

Use the input element to declare a flow input attribute:

<input name="hotelId" />
			

Input values are saved in flow scope under the name of the attribute. For example, the input above would be saved under the name hotelId.

Declaring an input type

Use the type attribute to declare the input attribute's type:

<input name="hotelId" type="long" />
				

If an input value does not match the declared type, a type conversion will be attempted.

Assigning an input value

Use the value attribute to specify an expression to assign the input value to:

<input name="hotelId" value="flowScope.myParameterObject.hotelId" />
				

If the expression's value type can be determined, that metadata will be used for type coersion if no type attribute is specified.

Marking an input as required

Use the required attribute to enforce the input is not null or empty:

<input name="hotelId" type="long" value="flowScope.hotelId" required="true" />
				

output

Use the output element to declare a flow output attribute. Output attributes are declared within end-states that represent specific flow outcomes.

<end-state id="bookingConfirmed">
    <output name="bookingId" />  
</end-state>
			

Output values are obtained from flow scope under the name of the attribute. For example, the output above would be assigned the value of the bookingId variable.

Specifying the source of an output value

Use the value attribute to denote a specific output value expression:

<output name="confirmationNumber" value="booking.confirmationNumber" />  
				

Checkpoint: input/output mapping

Now review the sample booking flow with input/output mapping:

<flow xmlns="http://www.springframework.org/schema/webflow"
      xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
      xsi:schemaLocation="http://www.springframework.org/schema/webflow
                          http://www.springframework.org/schema/webflow/spring-webflow-2.0.xsd">

    <input name="hotelId" />

    <on-start>
        <evaluate expression="bookingService.createBooking(hotelId, currentUser.name)" 
                  result="flowScope.booking" />
    </on-start>

    <view-state id="enterBookingDetails">
        <transition on="submit" to="reviewBooking" />
    </view-state>
	
    <view-state id="reviewBooking">
        <transition on="confirm" to="bookingConfirmed" />
        <transition on="revise" to="enterBookingDetails" />
        <transition on="cancel" to="bookingCancelled" />
    </view-state>
	
    <end-state id="bookingConfirmed" >
        <output name="bookingId" value="booking.id"/>
    </end-state>

    <end-state id="bookingCancelled" />
		
</flow>	
			

The flow now accepts a hotelId input attribute and returns a bookingId output attribute when a new booking is confirmed.

libspring-webflow-2.0-java-2.0.9.RELEASE.orig/docs/spring-webflow-reference/html/ch14s06.html0000644000000000000000000000673211360615630026062 0ustar 14.6. Testing flow event handling

14.6. Testing flow event handling

Define additional tests to exercise flow event handling behavior. You goal should be to exercise all paths through the flow. You can use the convenient setCurrentState(String) method to jump to the flow state where you wish to begin your test.

public void testEnterBookingDetails_Proceed() {

    setCurrentState("enterBookingDetails");
    
    getFlowScope().put("booking", createTestBooking());

    MockExternalContext context = new MockExternalContext();
    context.setEventId("proceed");
    resumeFlow(context);

    assertCurrentStateEquals("reviewBooking");
}
		
libspring-webflow-2.0-java-2.0.9.RELEASE.orig/docs/spring-webflow-reference/html/ch05s04.html0000644000000000000000000001220411360615630026047 0ustar 5.4. Action outcome event mappings

5.4. Action outcome event mappings

Actions often invoke methods on plain Java objects. When called from action-states and decision-states, these method return values can be used to drive state transitions. Since transitions are triggered by events, a method return value must first be mapped to an Event object. The following table describes how common return value types are mapped to Event objects:

Table 5.1. Action method return value to event id mappings

Method return typeMapped Event identifier expression
java.lang.Stringthe String value
java.lang.Booleanyes (for true), no (for false)
java.lang.Enumthe Enum name
any other typesuccess

This is illustrated in the example action state below, which invokes a method that returns a boolean value:

<action-state id="moreAnswersNeeded">
    <evaluate expression="interview.moreAnswersNeeded()" />
    <transition on="yes" to="answerQuestions" />
    <transition on="no" to="finish" />
</action-state>
        
libspring-webflow-2.0-java-2.0.9.RELEASE.orig/docs/spring-webflow-reference/html/ch12s04.html0000644000000000000000000001327111360615630026052 0ustar 12.4. Configuring Web Flow to render JSF views

12.4. Configuring Web Flow to render JSF views

The next step is to configure Web Flow to render JSF views. To do this, in your Spring Web Flow configuration include the faces namespace and link in the faces flow-builder-services :

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xmlns:webflow="http://www.springframework.org/schema/webflow-config"
       xmlns:faces="http://www.springframework.org/schema/faces"
       xsi:schemaLocation="
           http://www.springframework.org/schema/beans
           http://www.springframework.org/schema/beans/spring-beans-2.5.xsd
           http://www.springframework.org/schema/webflow-config
           http://www.springframework.org/schema/webflow-config/spring-webflow-config-2.0.xsd
           http://www.springframework.org/schema/faces
           http://www.springframework.org/schema/faces/spring-faces-2.0.xsd">

	<!-- Executes flows: the central entry point into the Spring Web Flow system -->
	<webflow:flow-executor id="flowExecutor" />

	<!-- The registry of executable flow definitions -->
	<webflow:flow-registry id="flowRegistry" flow-builder-services="facesFlowBuilderServices" base-path="/WEB-INF">
		<webflow:flow-location-pattern value="**/*-flow.xml" />
	</webflow:flow-registry>

	<!-- Configures the Spring Web Flow JSF integration -->
	<faces:flow-builder-services id="facesFlowBuilderServices" />

</beans>
        

The faces:flow-builder-services tag also configures several other defaults appropriate for a JSF environment. Specifically, the Unified EL is configured as the default Expression Language.

See the swf-booking-faces reference application in the distribution for a complete working example.

libspring-webflow-2.0-java-2.0.9.RELEASE.orig/docs/spring-webflow-reference/html/ch13.html0000644000000000000000000000615011360615630025522 0ustar 13. Portlet Integration

13. Portlet Integration

13.1. Introduction

This chapter shows how to use Web Flow in a Portlet environment. Web Flow has full support for JSR-168 portlets. The booking-portlet-mvc sample application is a good reference for using Web Flow within a portlet. This application is a simplified travel site that allows users to search for and book hotel rooms.

libspring-webflow-2.0-java-2.0.9.RELEASE.orig/docs/spring-webflow-reference/html/ch13s04.html0000644000000000000000000000711111360615630026047 0ustar 13.4. Portlet Views

13.4. Portlet Views

In order to facilitate view rendering, a ViewRendererServlet must be added to the web.xml file. This servlet is not invoked directly, but it used by Web Flow to render views in a portlet environment.

<servlet>
    <servlet-name>ViewRendererServlet</servlet-name>
    <servlet-class>org.springframework.web.servlet.ViewRendererServlet</servlet-class>
</servlet>

<servlet-mapping>
    <servlet-name>ViewRendererServlet</servlet-name>
    <url-pattern>/WEB-INF/servlet/view</url-pattern>
</servlet-mapping>
		
libspring-webflow-2.0-java-2.0.9.RELEASE.orig/docs/spring-webflow-reference/html/ch04s14.html0000644000000000000000000000637311360615630026061 0ustar 4.14. Displaying popups

4.14. Displaying popups

Use the popup attribute to render a view in a modal popup dialog:

<view-state id="changeSearchCriteria" view="enterSearchCriteria.xhtml" popup="true">
		

When using Web Flow with the Spring Javascript, no client side code is necessary for the popup to display. Web Flow will send a response to the client requesting a redirect to the view from a popup, and the client will honor the request.

libspring-webflow-2.0-java-2.0.9.RELEASE.orig/docs/spring-webflow-reference/html/ch01s03.html0000644000000000000000000000564511360615630026055 0ustar 1.3. Where to get support

1.3. Where to get support

Professional from-the-source support on Spring Web Flow is available from SpringSource, the company behind Spring, and Ervacon, operated by Web Flow project co-founder Erwin Vervaet

libspring-webflow-2.0-java-2.0.9.RELEASE.orig/docs/spring-webflow-reference/html/ch15s03.html0000644000000000000000000003143511360615630026056 0ustar 15.3. Web Flow Configuration

15.3. Web Flow Configuration

In Web Flow 1 there were two options available for configuring Web Flow, one using standard spring bean XML and the other using the webflow-config-1.0 schema. The schema configuration option simplifies the configuration process by keeping long internal class names hidden and enabling contextual auto-complete. The schema configuration option is the only way to configure Web Flow 2.

Web Flow Bean Configuration

The FactoryBean bean XML configuration method used in Web Flow 1 is no longer supported. The schema configuration method should be used instead. In particular beans defining FlowExecutorFactoryBean and XmlFlowRegistryFactoryBean should be updated. Continue reading Web Flow Schema Configuration for details.

Web Flow Schema Configuration

The webflow-config configuration schema has also changed slightly from version 1 to 2. The simplest way to update your application is modify the version of the schema to 2.0 then fix any errors in a schema aware XML editor. The most common change is add 'flow-' to the beginning of the elements defined by the schema.

<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xmlns:webflow="http://www.springframework.org/schema/webflow-config"
       xsi:schemaLocation="
           http://www.springframework.org/schema/beans
           http://www.springframework.org/schema/beans/spring-beans-2.5.xsd
           http://www.springframework.org/schema/webflow-config
           http://www.springframework.org/schema/webflow-config/spring-webflow-config-2.0.xsd">
			

flow-executor

The flow executor is the core Web Flow configuration element. This element replaces previous FlowExecutorFactoryBean bean definitions.

<webflow:flow-executor id="flowExecutor" />
				

flow-execution-listeners

Flow execution listeners are also defined in the flow executor. Listeners are defined using standard bean definitions and added by reference.

<webflow:flow-executor id="flowExecutor" flow-registry="flowRegistry">
    <webflow:flow-execution-listeners>
        <webflow:listener ref="securityFlowExecutionListener"/>
    </webflow:flow-execution-listeners>
</webflow:flow-executor>

<bean id="securityFlowExecutionListener"
      class="org.springframework.webflow.security.SecurityFlowExecutionListener" />
				

flow-registry

The flow-registry contains a set of flow-locations. Every flow definition used by Web Flow must be added to the registry. This element replaces previous XmlFlowRegistryFactoryBean bean definitions.

<webflow:flow-registry id="flowRegistry">
    <webflow:flow-location path="/WEB-INF/hotels/booking/booking.xml" />
</webflow:flow-registry>
				

Flow Controller

The package name for flow controllers has changed from org.springframework.webflow.executor.mvc.FlowController and is now org.springframework.webflow.mvc.servlet.FlowController for Servlet MVC requests. The portlet flow controller org.springframework.webflow.executor.mvc.PortletFlowController has been replaced by a flow handler adapter available at org.springframework.webflow.mvc.portlet.FlowHandlerAdapter. They will need to be updated in the bean definitions.

Flow URL Handler

The default URL handler has changed in Web Flow 2. The flow identifier is now derived from the URL rather then passed explicitly. In order to maintain comparability with existing views and URL structures a WebFlow1FlowUrlHandler is available.

<bean name="/pos.htm" class="org.springframework.webflow.mvc.servlet.FlowController">
    <property name="flowExecutor" ref="flowExecutor" />
    <property name="flowUrlHandler">
        <bean class="org.springframework.webflow.context.servlet.WebFlow1FlowUrlHandler" />
    </property>
</bean>
			

View Resolution

Web Flow 2 by default will both select and render views. View were previously selected by Web Flow 1 and then rendered by an external view resolver.

In order for version 1 flows to work in Web Flow 2 the default view resolver must be overridden. A common use case is to use Apache Tiles for view resolution. The following configuration will replace the default view resolver with a Tiles view resolver. The tilesViewResolver in this example can be replaced with any other view resolver.

<webflow:flow-registry id="flowRegistry" flow-builder-services="flowBuilderServices">
	<web:flow-location path="..." />
    ...
</webflow:flow-registry>

<webflow:flow-builder-services id="flowBuilderServices" 
                               view-factory-creator="viewFactoryCreator"/>

<bean id="viewFactoryCreator" class="org.springframework.webflow.mvc.builder.MvcViewFactoryCreator">
    <property name="viewResolvers" ref="tilesViewResolver" />
</bean>

<bean id="tilesViewResolver" class="org.springframework.web.servlet.view.UrlBasedViewResolver">
    <property name="viewClass" value="org.springframework.web.servlet.view.tiles.TilesJstlView" />
</bean>

<bean class="org.springframework.web.servlet.view.tiles.TilesConfigurer">
    <property name="definitions" value="/WEB-INF/tiles-def.xml" />
</bean>
			
libspring-webflow-2.0-java-2.0.9.RELEASE.orig/docs/spring-webflow-reference/html/ch04s10.html0000644000000000000000000002433711360615630026055 0ustar 4.10. Validating a model

4.10. Validating a model

Model validation is driven by constraints specified against a model object. Web Flow supports enforcing such constraints programatically.

Programmatic validation

There are two ways to perform model validation programatically. The first is to implement validation logic in your model object. The second is to implement an external Validator. Both ways provide you with a ValidationContext to record error messages and access information about the current user.

Implementing a model validate method

Defining validation logic in your model object is the simplest way to validate its state. Once such logic is structured according to Web Flow conventions, Web Flow will automatically invoke that logic during the view-state postback lifecycle. Web Flow conventions have you structure model validation logic by view-state, allowing you to easily validate the subset of model properties that are editable on that view. To do this, simply create a public method with the name validate${state}, where ${state} is the id of your view-state where you want validation to run. For example:

public class Booking {
    private Date checkinDate;
    private Date checkoutDate;
    ...
        
    public void validateEnterBookingDetails(ValidationContext context) {
        MessageContext messages = context.getMessageContext();
        if (checkinDate.before(today())) {
            messages.addMessage(new MessageBuilder().error().source("checkinDate").
                defaultText("Check in date must be a future date").build());
        } else if (!checkinDate.before(checkoutDate)) {
            messages.addMessage(new MessageBuilder().error().source("checkoutDate").
                defaultText("Check out date must be later than check in date").build());
        }
    }
}

				

In the example above, when a transition is triggered in a enterBookingDetails view-state that is editing a Booking model, Web Flow will invoke the validateEnterBookingDetails(ValidationContext) method automatically unless validation has been suppressed for that transition. An example of such a view-state is shown below:

<view-state id="enterBookingDetails" model="booking">
    <transition on="proceed" to="reviewBooking">
</view-state>
				

Any number of validation methods are defined. Generally, a flow edits a model over a series of views. In that case, a validate method would be defined for each view-state where validation needs to run.

Implementing a Validator

The second way is to define a separate object, called a Validator, which validates your model object. To do this, first create a class whose name has the pattern ${model}Validator, where ${model} is the capitialized form of the model expression, such as booking. Then define a public method with the name validate${state}, where ${state} is the id of your view-state, such as enterBookingDetails. The class should then be deployed as a Spring bean. Any number of validation methods can be defined. For example:

@Component
public class BookingValidator {
    public void validateEnterBookingDetails(Booking booking, ValidationContext context) {
        MessageContext messages = context.getMessageContext();
        if (booking.getCheckinDate().before(today())) {
            messages.addMessage(new MessageBuilder().error().source("checkinDate").
                defaultText("Check in date must be a future date").build());
        } else if (!booking.getCheckinDate().before(booking.getCheckoutDate())) {
            messages.addMessage(new MessageBuilder().error().source("checkoutDate").
                defaultText("Check out date must be later than check in date").build());
        }
    }
}
				

In the example above, when a transition is triggered in a enterBookingDetails view-state that is editing a Booking model, Web Flow will invoke the validateEnterBookingDetails(Booking, ValidationContext) method automatically unless validation has been suppressed for that transition.

A Validator can also accept a Spring MVC Errors object, which is required for invoking existing Spring Validators.

Validators must be registered as Spring beans employing the naming convention ${model}Validator to be detected and invoked automatically. In the example above, Spring 2.5 classpath-scanning would detect the @Component and automatically register it as a bean with the name bookingValidator. Then, anytime the booking model needs to be validated, this bookingValidator instance would be invoked for you.

ValidationContext

A ValidationContext allows you to obtain a MessageContext to record messages during validation. It also exposes information about the current user, such as the signaled userEvent and the current user's Principal identity. This information can be used to customize validation logic based on what button or link was activated in the UI, or who is authenticated. See the API Javadocs for ValidationContext for more information.

libspring-webflow-2.0-java-2.0.9.RELEASE.orig/docs/spring-webflow-reference/html/ch10s02.html0000644000000000000000000001025511360615630026045 0ustar 10.2. Configuring web.xml

10.2. Configuring web.xml

The first step to using Spring MVC is to configure the DispatcherServlet in web.xml. You typically do this once per web application.

The example below maps all requests that begin with /spring/ to the DispatcherServlet. An init-param is used to provide the contextConfigLocation. This is the configuration file for the web application.

<servlet>
    <servlet-name>Spring MVC Dispatcher Servlet</servlet-name>
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
    <init-param>
        <param-name>contextConfigLocation</param-name>
        <param-value>/WEB-INF/web-application-config.xml</param-value>
    </init-param>
</servlet>
	
<servlet-mapping>
    <servlet-name>Spring MVC Dispatcher Servlet</servlet-name>
    <url-pattern>/spring/*</url-pattern>
</servlet-mapping>
libspring-webflow-2.0-java-2.0.9.RELEASE.orig/docs/spring-webflow-reference/html/ch13s02.html0000644000000000000000000001320411360615630026045 0ustar 13.2. Configuring web.xml and portlet.xml

13.2. Configuring web.xml and portlet.xml

The configuration for a portlet depends on the portlet container used. The sample applications, included with Web Flow, are both configured to use Apache Pluto, the JSR-168 reference implementation.

In general, the configuration requires adding a servlet mapping in the web.xml file to dispatch request to the portlet container.

<servlet>
    <servlet-name>swf-booking-mvc</servlet-name>
    <servlet-class>org.apache.pluto.core.PortletServlet</servlet-class>
    <init-param>
        <param-name>portlet-name</param-name>
        <param-value>swf-booking-mvc</param-value>
    </init-param>
    <load-on-startup>1</load-on-startup>
</servlet>

<servlet-mapping>
    <servlet-name>swf-booking-mvc</servlet-name>
    <url-pattern>/PlutoInvoker/swf-booking-mvc</url-pattern>
</servlet-mapping>
		

The portlet.xml configuration is a standard portlet configuration. The portlet-class needs to be set along with a pair of init-params. Setting the expiration-cache to 0 is recommended to force Web Flow to always render a fresh view.

<portlet>
    ...
    <portlet-class>org.springframework.web.portlet.DispatcherPortlet</portlet-class>
    <init-param>
        <name>contextConfigLocation</name>
        <value>/WEB-INF/web-application-config.xml</value>
    </init-param>
    <init-param>
        <name>viewRendererUrl</name>
        <value>/WEB-INF/servlet/view</value>
    </init-param>
    <expiration-cache>0</expiration-cache>
    ...
</portlet>
		
libspring-webflow-2.0-java-2.0.9.RELEASE.orig/docs/spring-webflow-reference/html/ch14s05.html0000644000000000000000000000706011360615630026054 0ustar 14.5. Testing flow startup

14.5. Testing flow startup

Have your first test exercise the startup of your flow:

public void testStartBookingFlow() {

    Booking booking = createTestBooking();

    MutableAttributeMap input = new LocalAttributeMap();
    input.put("hotelId", "1");
    MockExternalContext context = new MockExternalContext();
    context.setCurrentUser("keith");
    startFlow(input, context);

    assertCurrentStateEquals("enterBookingDetails");
    assertTrue(getRequiredFlowAttribute("booking") instanceof Booking);
}
        

Assertions generally verify the flow is in the correct state you expect.

libspring-webflow-2.0-java-2.0.9.RELEASE.orig/docs/spring-webflow-reference/html/ch05s02.html0000644000000000000000000001510011360615630026043 0ustar 5.2. Defining action states

5.2. Defining action states

Use the action-state element when you wish to invoke an action, then transition to another state based on the action's outcome:

<action-state id="moreAnswersNeeded">
    <evaluate expression="interview.moreAnswersNeeded()" />
    <transition on="yes" to="answerQuestions" />
    <transition on="no" to="finish" />
</action-state>
        

The full example below illustrates a interview flow that uses the action-state above to determine if more answers are needed to complete the interview:

<flow xmlns="http://www.springframework.org/schema/webflow"
      xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
      xsi:schemaLocation="http://www.springframework.org/schema/webflow
                          http://www.springframework.org/schema/webflow/spring-webflow-2.0.xsd">

    <on-start>
        <evaluate expression="interviewFactory.createInterview()" result="flowScope.interview" />
    </on-start>

    <view-state id="answerQuestions" model="questionSet">
        <on-entry>
            <evaluate expression="interview.getNextQuestionSet()" result="viewScope.questionSet" />
        </on-entry>
        <transition on="submitAnswers" to="moreAnswersNeeded">
            <evaluate expression="interview.recordAnswers(questionSet)" />
        </transition>
    </view-state>
    
    <action-state id="moreAnswersNeeded">
        <evaluate expression="interview.moreAnswersNeeded()" />
        <transition on="yes" to="answerQuestions" />
        <transition on="no" to="finish" />
    </action-state>

    <end-state id="finish" />
    
</flow>
			
libspring-webflow-2.0-java-2.0.9.RELEASE.orig/docs/spring-webflow-reference/html/ch04s08.html0000644000000000000000000000714511360615630026062 0ustar 4.8. Suppressing binding

4.8. Suppressing binding

Use the bind attribute to suppress model binding and validation for particular view events. The following example suppresses binding when the cancel event occurs:

<view-state id="enterBookingDetails" model="booking">
    <transition on="proceed" to="reviewBooking">
    <transition on="cancel" to="bookingCancelled" bind="false" />
</view-state>
		
libspring-webflow-2.0-java-2.0.9.RELEASE.orig/docs/spring-webflow-reference/html/ch15s04.html0000644000000000000000000001242411360615630026054 0ustar 15.4. New Web Flow Concepts

15.4. New Web Flow Concepts

Automatic Model Binding

Web Flow 1 required Spring MVC based flows to manually call FormAction methods, notably: setupForm, bindAndValidate to process form views. Web Flow 2 now provides automatic model setup and binding using the model attribute for view-states. Please see the Binding to a Model section for details.

OGNL vs EL

Web Flow 1 used OGNL exclusively for expressions within the flow definitions. Web Flow 2 adds support for Unified EL. United EL is used when it is available, OGNL will continue to be used when a Unified EL implementation is not available. Please see the Expression Language chapter for details.

Flash Scope

Flash scope in Web Flow 1 lived across the current request and into the next request. This was conceptually similar to Web Flow 2's view scope concept, but the semantics were not as well defined. In Web Flow 2, flash scope is cleared after every view render. This makes flashScope semantics in Web Flow consistent with other web frameworks.

Spring Faces

Web Flow 2 offers significantly improved integration with JavaServerFaces. Please see the JSF Integration chapter for details.

External Redirects

External redirects in Web Flow 1 were always considered context relative. In Web Flow 2, if the redirect URL begins with a slash, it is considered servlet-relative instead of context-relative. URLs without a leading slash are still context relative.

libspring-webflow-2.0-java-2.0.9.RELEASE.orig/docs/spring-webflow-reference/html/ch13s06.html0000644000000000000000000001116111360615630026051 0ustar 13.6. Issues in a Portlet Environment

13.6. Issues in a Portlet Environment

Redirects

The Portlet API only allows redirects to be requested from an action request. Because views are rendered on the render request, views and view-states cannot trigger a redirect.

The externalRedirect: view prefix is a convenience for Servlet based flows. An IllegalStateException is thrown if a redirect is requested from a render request.

end-state redirects can be achieved by implementing FlowHandler.handleExecutionOutcome. This callback provides the ActionResponse object which supports redirects.

Switching Portlet Modes

The portlet container passes the execution key from the previous flow when switching to a new mode. Even if the mode is mapped to a different FlowHandler the flow execution will resume the previous execution. You may switch the mode programatically in your FlowHandler after ending a flow in an ActionRequest.

One way to start a new flow is to create a URL targeting the mode without the execution key.

Portlets and JSF

Web Flow supports JSF as the view technology for a portlet. However, a jsf-portlet bridge (JSR-301) must be provided. At the time of this writing, no feature complete jsf-portlet bridge exists. Some of the existing bridge implementations may appear to work, however, side effect may occur.

JSF portlets are considered experimental at this time.

libspring-webflow-2.0-java-2.0.9.RELEASE.orig/docs/spring-webflow-reference/html/index.html0000644000000000000000000003420311360615630026073 0ustar Spring Web Flow Reference Guide

Spring Web Flow Reference Guide

Keith Donald

Erwin Vervaet

Jeremy Grelle

Scott Andrews

Rossen Stoyanchev

Spring Web Flow

Version 2.0.9

Copies of this document may be made for your own use and for distribution to others, provided that you do not charge any fee for such copies and further provided that each copy contains this Copyright Notice, whether distributed in print or electronically.


Table of Contents

Preface
1. Introduction
1.1. What this guide covers
1.2. What Web Flow requires to run
1.3. Where to get support
1.4. Where to follow development
1.5. How to access Web Flow artifacts from Maven Central
1.6. How to access Web Flow artifacts from the SpringSource Bundle Repository
1.7. How to access nightly builds
2. Defining Flows
2.1. Introduction
2.2. What is a flow?
2.3. What is the makeup of a typical flow?
2.4. How are flows authored?
2.5. Essential language elements
2.6. Actions
2.7. Input/Output Mapping
2.8. Variables
2.9. Calling subflows
3. Expression Language (EL)
3.1. Introduction
3.2. Supported EL implementations
3.3. EL portability
3.4. EL usage
3.5. Special EL variables
3.6. Scope searching algorithm
4. Rendering views
4.1. Introduction
4.2. Defining view states
4.3. Specifying view identifiers
4.4. View scope
4.5. Executing render actions
4.6. Binding to a model
4.7. Performing type conversion
4.8. Suppressing binding
4.9. Specifying bindings explicitly
4.10. Validating a model
4.11. Suppressing validation
4.12. Executing view transitions
4.13. Working with messages
4.14. Displaying popups
4.15. View backtracking
5. Executing actions
5.1. Introduction
5.2. Defining action states
5.3. Defining decision states
5.4. Action outcome event mappings
5.5. Action implementations
5.6. Action exceptions
5.7. Other Action execution examples
6. Flow Managed Persistence
6.1. Introduction
6.2. FlowScoped PersistenceContext
7. Securing Flows
7.1. Introduction
7.2. How do I secure a flow?
7.3. The secured element
7.4. The SecurityFlowExecutionListener
7.5. Configuring Spring Security
8. Flow Inheritance
8.1. Introduction
8.2. Is flow inheritance like Java inheritance?
8.3. Types of Flow Inheritance
8.4. Abstract flows
8.5. Inheritance Algorithm
9. System Setup
9.1. Introduction
9.2. webflow-config.xsd
9.3. Basic system configuration
9.4. flow-registry options
9.5. flow-executor options
10. Spring MVC Integration
10.1. Introduction
10.2. Configuring web.xml
10.3. Dispatching to flows
10.4. Implementing custom FlowHandlers
10.5. View Resolution
10.6. Signaling an event from a View
11. Spring JavaScript Quick Reference
11.1. Introduction
11.2. Serving Javascript Resources
11.3. Including Spring Javascript in a Page
11.4. Spring Javascript Decorations
11.5. Handling Ajax Requests
12. JSF Integration
12.1. Introduction
12.2. Spring-centric Integration Approach
12.3. Configuring web.xml
12.4. Configuring Web Flow to render JSF views
12.5. Configuring faces-config.xml
12.6. Replacing the JSF Managed Bean Facility
12.7. Handling JSF Events With Spring Web Flow
12.8. Enhancing The User Experience With Rich Web Forms
12.9. Third-Party Component Library Integration
13. Portlet Integration
13.1. Introduction
13.2. Configuring web.xml and portlet.xml
13.3. Configuring Spring
13.4. Portlet Views
13.5. Portlet Modes and Window States
13.6. Issues in a Portlet Environment
14. Testing flows
14.1. Introduction
14.2. Extending AbstractXmlFlowExecutionTests
14.3. Specifying the path to the flow to test
14.4. Registering flow dependencies
14.5. Testing flow startup
14.6. Testing flow event handling
14.7. Mocking a subflow
15. Upgrading from 1.0
15.1. Introduction
15.2. Flow Definition Language
15.3. Web Flow Configuration
15.4. New Web Flow Concepts
A. Flow Definition Language 1.0 to 2.0 Mappings
libspring-webflow-2.0-java-2.0.9.RELEASE.orig/docs/spring-webflow-reference/html/ch13s03.html0000644000000000000000000001527311360615630026056 0ustar 13.3. Configuring Spring

13.3. Configuring Spring

Flow Handlers

The only supported mechanism for bridging a portlet request to Web Flow is a FlowHandler. The PortletFlowController used in Web Flow 1.0 is no longer supported.

The flow handler, similar to the servlet flow handler, provides hooks that can:

  • select the flow to execute

  • pass input parameters to the flow on initialization

  • handle the flow execution outcome

  • handle exceptions

The AbstractFlowHandler class is an implementation of FlowHandler that provides default implementations for these hooks.

In a portlet environment the targeted flow id can not be inferred from the URL and must be defined explicitly in the handler.

public class ViewFlowHandler extends AbstractFlowHandler {
    public String getFlowId() {
        return "view";
    }
}
			

Handler Mappings

Spring Portlet MVC provides a rich set of methods to map portlet requests. Complete documentation is available in the Spring Reference Documentation.

The booking-portlet-mvc sample application uses a PortletModeHandlerMapping to map portlet requests. The sample application only supports view mode, but support for other portlet modes is available. Other modes can be added and point to the same flow as view mode, or any other flow.

<bean id="portletModeHandlerMapping" 
      class="org.springframework.web.portlet.handler.PortletModeHandlerMapping">
    <property name="portletModeMap">
        <map>
            <entry key="view">
                <bean class="org.springframework.webflow.samples.booking.ViewFlowHandler" />
            </entry>
        </map>
    </property>
</bean>
			

Flow Handler Adapter

A FlowHandlerAdapter converts the handler mappings to the flow handlers. The flow executor is required as a constructor argument.

<bean id="flowHandlerAdapter" 
      class="org.springframework.webflow.mvc.portlet.FlowHandlerAdapter">
    <constructor-arg ref="flowExecutor" />
</bean>
			
libspring-webflow-2.0-java-2.0.9.RELEASE.orig/docs/spring-webflow-reference/html/ch14.html0000644000000000000000000000543111360615630025524 0ustar 14. Testing flows

14. Testing flows

14.1. Introduction

This chapter shows you how to test flows.

libspring-webflow-2.0-java-2.0.9.RELEASE.orig/docs/spring-webflow-reference/html/ch02s05.html0000644000000000000000000002045311360615630026052 0ustar 2.5. Essential language elements

2.5. Essential language elements

flow

Every flow begins with the following root element:

<?xml version="1.0" encoding="UTF-8"?>
<flow xmlns="http://www.springframework.org/schema/webflow"
      xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
      xsi:schemaLocation="http://www.springframework.org/schema/webflow
                          http://www.springframework.org/schema/webflow/spring-webflow-2.0.xsd">

</flow>
			

All states of the flow are defined within this element. The first state defined becomes the flow's starting point.

view-state

Use the view-state element to define a step of the flow that renders a view:

<view-state id="enterBookingDetails" />
			

By convention, a view-state maps its id to a view template in the directory where the flow is located. For example, the state above might render /WEB-INF/hotels/booking/enterBookingDetails.xhtml if the flow itself was located in the /WEB-INF/hotels/booking directory.

transition

Use the transition element to handle events that occur within a state:

<view-state id="enterBookingDetails">
    <transition on="submit" to="reviewBooking" />
</view-state>
			

These transitions drive view navigations.

end-state

Use the end-state element to define a flow outcome:

<end-state id="bookingCancelled" />
			

When a flow transitions to a end-state it terminates and the outcome is returned.

Checkpoint: Essential language elements

With the three elements view-state, transition, and end-state, you can quickly express your view navigation logic. Teams often do this before adding flow behaviors so they can focus on developing the user interface of the application with end users first. Below is a sample flow that implements its view navigation logic using these elements:

<flow xmlns="http://www.springframework.org/schema/webflow"
      xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
      xsi:schemaLocation="http://www.springframework.org/schema/webflow
                          http://www.springframework.org/schema/webflow/spring-webflow-2.0.xsd">

    <view-state id="enterBookingDetails">
        <transition on="submit" to="reviewBooking" />
    </view-state>
	
    <view-state id="reviewBooking">
        <transition on="confirm" to="bookingConfirmed" />
        <transition on="revise" to="enterBookingDetails" />
        <transition on="cancel" to="bookingCancelled" />
    </view-state>
	
    <end-state id="bookingConfirmed" />

    <end-state id="bookingCancelled" />
		
</flow>	
			
libspring-webflow-2.0-java-2.0.9.RELEASE.orig/docs/spring-webflow-reference/html/ch10s05.html0000644000000000000000000001163311360615630026051 0ustar 10.5. View Resolution

10.5. View Resolution

Web Flow 2 maps selected view identifiers to files located within the flow's working directory unless otherwise specified. For existing Spring MVC + Web Flow applications, an external ViewResolver is likely already handling this mapping for you. Therefore, to continue using that resolver and to avoid having to change how your existing flow views are packaged, configure Web Flow as follows:

<webflow:flow-registry id="flowRegistry" flow-builder-services="flowBuilderServices">
    <webflow:location path="/WEB-INF/hotels/booking/booking.xml" />
</webflow:flow-registry>

<webflow:flow-builder-services id="flowBuilderServices" view-factory-creator="mvcViewFactoryCreator"/>

<bean id="mvcViewFactoryCreator" class="org.springframework.webflow.mvc.builder.MvcViewFactoryCreator">
    <property name="viewResolvers" ref="myExistingViewResolverToUseForFlows"/>
</bean>
		

The MvcViewFactoryCreator is the factory that allows you to configure how the Spring MVC view system is used inside Spring Web Flow. Use it to configure existing ViewResolvers, as well as other services such as a custom MessageCodesResolver. You may also enable data binding use Spring MVC's native BeanWrapper by setting the useSpringBinding flag to true. This is an alternative to using OGNL or the Unified EL for view-to-model data binding. See the JavaDoc API of this class for more information.

libspring-webflow-2.0-java-2.0.9.RELEASE.orig/docs/spring-webflow-reference/html/ch02s04.html0000644000000000000000000000547711360615630026062 0ustar 2.4. How are flows authored?

2.4. How are flows authored?

Flows are authored by web application developers using a simple XML-based flow definition language. The next steps of this guide will walk you through the elements of this language.

libspring-webflow-2.0-java-2.0.9.RELEASE.orig/docs/spring-webflow-reference/html/ch03s04.html0000644000000000000000000001403311360615630026047 0ustar 3.4. EL usage

3.4. EL usage

EL is used for many things within a flow, including:

  1. Accessing data provided by the client, such as flow input attributes and request parameters.

  2. Accessing internal data structures such as flowScope.

  3. Invoking methods on Spring beans.

  4. Resolving constructs such as state transition criteria, subflow ids, and view names.

Views rendered by flows typically access flow data structures using EL as well.

Expression types

There are basically two types of expressions in Web Flow.

Standard eval expressions

The first, and most common, type of expression, is the standard eval expression. Such expressions are dynamically evaluated by the EL and should not be enclosed in delimiters like ${} or #{}. For example:

<evaluate expression="searchCriteria.nextPage()" />
				

The expression above is a standard expression that invokes the nextPage method on the searchCriteria variable when evaluated. Attempting to enclose this expression in special eval delimiters like ${} or #{} will result in an IllegalArgumentException.

[Note]Note
We view use of special eval delimiters as redundant in this context, as the only acceptable value for the expression attribute is a single eval expression string.

Template expressions

The second type of expression is a "template" expression. Such expressions allow a mixing of literal text with one or more eval blocks. Each eval block is explictly delimited with the ${} delimiters. For example:

<view-state id="error" view="error-${externalContext.locale}.xhtml" />
				

The expression above is a template expression. The result of evaluation will be a string that concatenates the literal text error- with the result of evaluating externalContext.locale. As you can see, explicit delimiters are necessary here to demarcate eval blocks within the template.

See the Web Flow XML schema for a complete listing of the XML attributes that accept standard expressions and template expressions.

././@LongLink0000000000000000000000000000015600000000000011567 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/docs/spring-webflow-reference/html/spring-webflow-reference.ziplibspring-webflow-2.0-java-2.0.9.RELEASE.orig/docs/spring-webflow-reference/html/spring-webflow-refe0000644000000000000000000136762111360615630027723 0ustar PK ìDŒ<html/PK ìDŒ< html/css/PK ìDŒ< html/images/PK ìDŒ<html/images/callouts/PK ìDŒ<ð§Bi “Ï html/apa.htmlíksÛ6òsû+Pv’8mHÙŠÓúbI7i·w“ËeιË}Ë@äŠDB<”ì >ôp¬X’i ¤éIl’ûÂî €ƒH'ñh Fß“üg€¦$Ò:uá›ׂkàÚýp™‚Cüânèh¸Ð=óþ)ñ#*èáßÎÿéžœ¼ø‹{ääàšéF¯ÒxÀ.ó±JO_yÅß³XÌÈï0aœi&8yKy˜ÑÈ‘wH´ }ü󚦌‡jÐ+ bÆ¿ ñÐQú2h‡D&CÇWª·xêá­C4â\¢jîGuœ&ø4’j!—ˆú]ø¿ ñ…ü÷ü-9ŸÃRä?GÞ¯ÇÞ¡³ŒA$¨Úf<€ ÏpÛ4¨óT"êä#ŒINê¿`¸äŒ°*Kk”J˜Îù½P‡Ç«ÀŽ^xÇ¥ÞÁl…ìCª ‹~pÝß dœü!DyÅi|©™¯M¸îh |ÉR½ÌÜÏtJ‹§(ùï¾ûnJ% éßÕŸBi2$ŽÑ(õÒ!Ã! „Ÿ%Èn/>5²÷R)´ðEü”ü•”5{=¥bÏ!/‹x?›Í<çé©?‡0“LÃAÆAù4…çÑó×%rJúÃ'ùyÆÏÄ sŠ\ZQäù"é…Ôû¬žÔ<¹BÍ“GÏß Ì^q‡7ÎÓƒAùdS^¤¨Ø$õ¿€Dv| ©ö>… ËGο_¹ý_û'''¿¸ÏK—^ñ>aïú]$”ñw¨ºÖT{£8ߢB X-3¸¦–6ïñÉ”Áìà =(ý7\mºËì>ÝÀgûšˆ‡0ê©÷kŒM#¢õ]¼ Wµœ“jºs-G¤" »1m7íõèÌ­ƒÀüŸ}úyë-Œóg#Yï×–¨5ßB5f _¬·Dka'Œaxf–0¡Y¬•Ù‚ª# &•&Åò=øælÜ‹Šá†¤%™¿•…›õ‡Mñꂨ¢_4=„ê¾ýt-[®Úà&ÒPvåN¾mÌötÞÓš§5Ÿ·oG²8.Тd#¤,Sõ=Yæïˆé¾b´†-îüùæ‹øv´´^Ø-س]$² cÆ›³&Ÿ"¿ß™Ó›šlhˆ6¥6}×äÛØXÖë»ÌZ·2¢nÆä7]º;Ñzñv _h<£—ª8sâ+nXÙó…©5l^âdLÎSÉxH Òóƒ—̉Áñ‚b]Ñ›·õ­h­×Õ3°/=µR)3?]nª¥‚5} é¢Ý•†Ö ·KLu²µ– Å.œNºm”n*Ò,íDÛFÑ&"€ØnѶaŠ>bJ y¹2ûœ¥ß|ñk-Í¥ ñZ÷Áõ×pÑÂeηäi­¸ÜrËhgv@c"ihŽ€Ûn~µSçöæú† ÍÑç.\Ù€ùb;Ë“m°W Õ~T—­êi:ŽÿlZýË ^^èŽ%Ð/NUúƒëþ!ãä­é™Ù“çc¬êº£ò%3KèDZ§/{½ëL°ŽÇA÷f€üœÄÞgÕ‹óÈÂû¬böšak^ô>Ó)-™‹«9è5õ 3>Å“O>2jHœ·gŸŽOÆpÒŸPç´*“Ižš ¸HÌ|M RZñ€ÓéD ñ‰Œþž t4tŽ!›³$¡òrè¼£SR³lŠÌß)u¶|áØÔ§1 Ñ„Æ01DRB}”ú!uH$a2tüèè…:<ö"ÄÎ轄é G¯ªM ´¿ÔGOfÚ½¾æró¹–­ïdë6›)ó;-RgtôÂ;ö ï`F>˜œ™DÔkÁÍ2µ9«|ˆ*>0 ˆ.J.ü)0\¸™ªU$¯Ñþ­/»‚idôPK êDŒ<Ëî^i html/ch01.html­VmSã6þL…ª%Ìí$лât¸îè0ô¦Ð^¿eyc dÉ'ÉÎñï»òKˆ!ié”Ì$­WÏ>«Ý}äiær9›fÀ’Ùw¤þLspŒdÎ|-EÓwZ9P.¸¹/€Þ¬bêà›‹üþSÂ3f,¸øâú·`2ùéç`Dk¸©NÂlþ¨¶8½PÎè¤äNh5šgS)Ô1 cjݽ›8J2˘rk£kˆKJ²hƒûõ¬á«XŽÖæ´Ù ù^ó·Zß‘¿®/ÉõË’?Gá›ãpH7d:‡.¶P | }~ÓSéua„JÉXs©WäwX‚Å|,E=¨²x! Â@ÕAf8ê#}F;ãý Ïf}‚Ùpd‡ãþ¦Q8n+ò%cî†ñ7`‰ÓÄ” A¿‚· E>jJ gŠÉ{'¸ÅóM fSË(ÜfUnYÅ+6ÁÞÞ^Å IÙ¯ö“¶ŽÄd0 ¾¹ì %qLÍËëJ͙0Úi®å!ù…´žQd­ )9i ¸^­V!=<õðk„•¥ËYºô®%g (yõ@ã¡iQÀºŒB®ó(eá­=h²9x”ÍÁþÑÄŒš.èaÍ`ÚZž{KáÆ0~cž2ÎSp­i@ÿ8 ÆoÆ“ÉäupÔæ¸±%œã ½×9ê {~@•V°ÃíLbU/±/Ö™¶x9ÿç3Z*«Á£|°úT²»öQ­Ó…NîÉ"ÅšiÓU†eÀVÃôcºO‰ï͘þ0ÄÏù9%U»ž‡“cJXÿùlšˆŠpɬÅff•ÍŽ-ÇJ$.Ã&÷)±ež3sÓ+V‰´î òàoð›!]i ¦bzT‡Jñdžñ.;”)ÃÜêÍþ›tÇ>` a‰%2Â8kï)OÇt†óYM#6k jRSj_o v”ÖžÙ®ØF¤™[;ö(¨­s?»ÂbxMü:µ¨>L”~ÿÏ»wè¨ç…'C$SiLAõkRˈo£ÆÜþdãÞóútY§‹f$²ýܳqÇeów#°îFÿ©ïLQ3'd¡]¶Á4gªd2Ð?ÙѦ\ºLX’zÆÎBG»‹xQüÍcw,£$̘‹%zI]¡ßtá:g‘¼¾yŸ%>G“" ’ ´( ¬(¤h”qXWÚÜyוÀ6s%0W ¨4“VwøØæwÔÎÁCÔXÞâ½j†ûÁæˆÅ$ÉQdX‹EÑOz}c\j]œ#ÇÇ7…ãNÆ%ú,Ñ'Tà¢, pmpv£[Ia‘Ê1Ý%¨ÿExçr9ç"AÁ¥—çóãÉ&ã%£§Ý3¹6l‡>I¥¯OK­ëÉ­g陵ÞÓ—˜ã—’˜­ÂñDb’]±_Dbþ%5Rµ+§‹: ÿ"óü$ú¬²-o[³Oø:÷ÀéŸ2ísiH<ó-i‹¦¶óàïEIúWì¿PK êDŒ<]’ב÷ƒ html/ch01s02.html­Vksœ6ýìþ U×ëÉûгµŽóØ<Æãfê¤é·­¸ Ø I°Ùß+`ظuÛ0ƒ¤«£sî üÄäYè'À¢ðR_~†‘ƝeZô•„q>m  „7£€øf<»ÿ‚ð„) &xó›3›=ÿÅÑÎ7©É ¹c÷g±ÔÅÅ—„ò–džÉ5QöšIT)|¯1÷³TÜábPm6èÀP’(X”kííg]RbXËÇŽÃF‚`9ÎÆ @1#Õó×’¿”òŽüysEnvXšü1r_LÝ!=dȶg§"‚o®•ŒgZª½)T*⽤ßa ò¶L#è@•ÅND2uqF­ƒÞ £dTr“JÑÙ\(¨þÇvÎ9Ü®‡“û“]ŒP I †è²(¤2ˆõ£ã¼„8ä­”qäR°lcR®Ñ¯8Nèk®ÒÂFã–U¬™Å|8::ª˜"1û ßImH@jóLŸS$’¼Ì1>n&9³ÜBI#¹ÌNɯ¤µô<­3—’ófÇëõÚ¥§~‡°V©A)@sVÀ€O^µä´âÁ %Ïö4ž׊¶Uär™{1soõI£æäžš“ãÉÄôšèiÍÀogžê‹‚ÅðI1~ ݱˆ™qèõvj@?_:ããÙlvæLZ[ÜÖÜk™³T\c®¨1»Ì0;¯0Ö¨z¬Œ}ùˆ3U ëÁ==ý7"z<ö^ÝBü¥Œ6dc̤ è:Á0`†¡ü€.3„§Ä¦d@â5ŸSRµãÙt8œM)aÝõÐÒŠðŒi9Ì*{ (œ6l‰<ÖidÌÝáð˜bªæ9S›€^³*ë "{{…w‚t3]0ÐI}TŒoÆš<½I%(·Æ³w´%1¶ZÌ V¶daœƒÖw€¬zŠ?üˆEí{,lÎEÔ¨fÙ"ž îY>,ô†R?•Æ Riè½ý ¼ÆhYN ›Z¨W{?öÒ‰ŠnFW& 膬n.6Ëšéö‘Œ;ë:Û„‘HL“¥4Ií½¦ƒë6;ml}Û Ÿ±d¼å}ø,ê2ü€eIFî”HEt¨:ï‹ízÛàÇîs÷ì¡Mƒ´kWRóRÃý–h»Î¶_eh³BW€ñÖ°TÀ¥Â$õnµ—¥(U`ß¡uŽÓaÙjÁÓ; ½š/¦³%ÌÆ+F/¶kèL©Ø#•þ@J·WRÖùXçÄ‹q·§[8ÓïU8½°-œ.fÙƒù¹Ø§}?»ïRLÿ žTíÈÈ¢¿Üÿ«æ¤ç7&|‡¿7O“Ý%ÖøûŸ†žÒÖŸýLØo†ýùü PK êDŒ<†ã½ßw¥ html/ch01s03.html­VkoÛ6ýœý ŽC­$ÛñZ/‘T¤mÜv²`écß Zº–”P¤FRrýïw)É9â 5 C¤ÈsÏ}ÒOMÎC?‡?‘úçç`I)ø§Ìª€¾“€0Îçe”DÍ( ¾Ïî¿ QÊ”|ºûÓûÝÐÎ7™áÜ3÷W1ÓÅÅ·#I†è²(¤2¾×¬òy&ˆPm–t `(IÌiímf]RbOKÎÆ¹`9Î& @1#Õá÷2z+åùûîšÜ­±4ù:p_Ü>ÝfÊV¶3Ãw×zŠ6-Õ€Þ* ù32árAþ‚9:&" Ê,†TY¬Hûƒ.ΠË'a”ŒËÈdRt6 ªííº?ÜE®cË̆‘²ÉS m°UÙ².èht´›°¹ä6† ¸,r (Bþì8o!Éù eÂ\ Æ—&‹4=Ç }©¬0Û©ºgkf±FŽŽŽ*¦HÂþÐ¥6$ ½µµ§Ï) ˨´¶\.#fƒãJI~JÞv¥çiÍ]JΛ / —ž^Xø5ÂBez¥±zôøì]KN«(8¡äÅ†Æ B“Ú#‡­|/s–‰l„RÀË.mF¯±*Ö¨ö¬2öågª ½0ûW"~:÷^-+þLÆK2K0gRt‘b°ÐÐý€Î8ÂSb+3 ¿ôñ7™PRµãñ¨ß(aÝï¡g‰8ÓK™UÖ (œ6l†<YlR,á~ÿ˜¢Ää9SË€Þ°*Kê "›õ Ÿér]0гÚT‚oŒ]ò¬p¥èe cŸxe{hM·Pæ¶SaQZ?’)övtx‹½î{,l,"p\ókA_mnø=–†Õ~2*KRdÓèp{!¼ÁÜF8Üvq†lU–Ú¸–"Oõ±oc=î°ÞM„Äã­]›É)Ég©ÑüÁkTpBÎ5\ÒQ?‡/0 ^kI„çŠËk'bK1Hp8œMmlDé6#wÉkÞÎRæÜ»w¯æ2þ»}£­ƒæ3Ò>c†è¸ò)Hsï« 4ÚéXˇðt+G#keÀàY;AãÅb°‡Ç~…°0Âá Rhc^â€Ý?<éÈY‡{ ­i<–5 ùÒ¢ ÖÅ(ãÁ¥Ýk­ÙÛ²fïþá+µ#°‡ ƒi7sW_”<ÆÇWhÈóŒ»`Nî¦ìãóáÁÓƒÉdòdxØÙ¸±%˜Su¾ÔêÕÅ€)­ð†eÏ}ažQ¶¬3îXåüÃ9ÍÔƒ-{(ú¯TrsìGØL#\C”QÌ´ Ù"§0P’ù!‹$Á3ð²_Æô9=ePwãÉÑx<9bÀûïgÓDÔKn-¥8¯ý)hhÚñˆx,DârJíñø>£ª( n®CöŽ×"k2Öë }s¢+mÉUÈ›£2zŠ)aü’»ÊYNÆ6hþ›,)x¢ÄÔ×&ï*ì ‰S¹³Îgç¤ÓŸµpÒÐì@Ÿl€®i~-*-«ÝdŒÈrbÓÐã¤vêÅì…ËsjÙ4¶ŽwSGñÏ‘^X,ÆnŸËU2Tý˜5âãÓ¬î~òƒÞ{ŠWl""‘›gi—7lå~Ãÿ4KÌîªü`Évó·lªïo]AÌ}‚È ~…kŒTÁ¢© 8GPˆ‰6ƒ®5>•Žrý„ 馱½Ž þ(îš­dNgsås|éûNÅRmª"° |jÈì…6W6•7¤ !›;]²YÇàdÅàÔï´Þ-AS±åÒÄ÷è›DUfSí •ÊªicžÎÊ\ÙKŠ Í“‚—PY;ãKaø7~km…ЉÍ¶Uäµ&j¢yûé^õ¿Ç[çä.ýù”2¦9Hrç#Þ-U¸hÝÅ•ÒyËç’Ý"ûIXq—¨ÞÀr´À(%ßo³]Å伋ɺ¨¬¸šRÝ Õ•¡R7O  ߊ`›ä«f}¦uyZYÜnÒ¾.YJZ“Òš@¡óÔ ÆÚlŽ.íH K÷+ê„ì¦^ö-=o.Óy,êuììt~4‰prrv¼|gŒä7ôž¯Lé·†TëF ‘ºc{Xíé‹ùÑó¢¼ó>lõõUrö±\Kñn‚?Dào±ênÔ¤éßJ¿×ú|Ç|¶,€ÛЧؒø_WÞí¯k#þ’ão<þOÖ¿PK êDŒ<Ò2w=óhtml/ch01s05.htmlíXQsÓ8~†_¡Ó 4 g;IC m¦@KËô8†”ãÞ2н¶•Ê–O’òïoe;iÜ&P^`ÈLÚH–v¿ÝoµÚõ(1©`áø>©>£ #‰1¹ÿ¼ôéK™ÈŒs¹Ì’ ùÔÀ'ãÙýG$H˜Ò`üóÉ_Îpøä™Ó£•¸‘áFÀ¸ç>qf3É1’° ­ÉG˜‘SSL±Àh)™’?Y y‰Z#¯2<»" „OµY Ð €¡$Qù4ÐÚ»žuqH‰A¸ J;׆e,ÅÙ2PÌHµaÏ+¼òŠü3¹ “µ,Mþî¹On—n"Hd +Ý< á“k:-TŸNrųøÚ¾÷‚,òºà!´DùÚˆ¤ÛkËé5n;GOȰ —Yks® ÜÜ®»ƒ›Œ B°Î¤°˜B(AÈ ePX[]!fýèæJHñˆ<'ÍJÏÓZ¸”Ö8^,.}tdů%,7Ð)2ÐË¡Cì¿lÀiø{”<¾†ñ˜Ð¸²Èa+‹Ü@¦^Ìܹޫ­Ù»aÍÞƒý”éÕ#ÐG‚Q3sW_ä,†KÅ‚+PèŽiÌŒ;Á4SúáØé?í‡Ãg¿±qc‹;ÅýJ¦ŒgoñÌth&3رìØFÔ†Š5ª€-«ŒýñgJ‹Î {ý“,ÜͽW%¨ÑL†K2‹‘3©|ºHŒJ4ß§3â)±aìÓß»ø9=¥¤lÆÃA·;PÂÚÏÇ£—$LkŒ{VZ- pÚ°âXðÐ$ïÝîJt‘¦L-}ú–•<®"ˆ\¯WøM®Ð9Ë|º_©ŠñW€c—|k LÐ •û WÐúY£I@d2k$_bÍ·æ†ñ;Ì#k@(8¬à7B6„^ÿˆjTÛÁ('ˆ¦QДmM.ã·H£ÅT£©lõ*ðv²¿‘©]ÓCÂYû²6—U¦²áWO7’~ë9rj³<ÀÔ!™I“T¬¯ˆ9^iNZfNP“€Þ7ò˜ôW¦lþÍ«#{‚„ V‚YÐæÌµÈk£ø¬¨bŽk‚G‹*B›•ˆ¹1¬°¾rp“ÂæÙž›Z ®T±Wýê{xr˜ÂtàÓ©‘9·n$gkµkñ]&V·=éš,ea¦¹X" 1^§˜qJÚUа<¼N¹„GÕN† OÏ’ÚÞ”µr¦+sf!ÑKm ÅÛJÕr(zãÎ"˜¾çn•Hò•/o3b‰ÜBÆ( ½fïDÔY_ŠJ9àž´up¥<—é!J_ëÂ]Çšž äwcò}(ÌÑȦՊD8†á“µ`t©}>~›£ªèÚ¹%V²ÈÏÃõH ««Ë4B­°êÊEÏD~§ﶘϫ]ÅpkK­Õ™a¹ƒÿw+ÛºùóúJPºJ(ëõ}·ë>sߟ\œONv뺽q·û½­þ'÷vÂæúW? W_Töcv¿Î— VÙù‹<¼êœÿï± (TsÊ0cþJ®Ndñ³°O6è¯ëœu“w!e~Zh¸ÙÜÙþiU¶\á7ã! ©°ÜöæÚ³Õ̼Ýåoö@_Ó+ME4 xˆ=½8†3ö#FVϤR±=Ë-SÚ-E$eU@WEìÛŠõžv±?øŽÅþÖ¢}Uì·Å·_OŒ?ä×¥úv€ß¥ø‚ý¤lFUýz§7ÿ× É–—=ã3™ÂÝüÐFZƒøþ¯Q¶´NM—agÛEÛ—}ÿPK êDŒ<œ~J }ó/html/ch01s06.htmlíZ{oÛ8ÿ;û)x:´M±')¯¶ÙÄò"í&mÙì¢iï(Š€–ƉԒ”¼þö7¤$[ò+n“¢In ذ¨á<rHö¥ý^4êÿ@ì§—¦$Ñ:wáÏ‚•óFp \»Æ98$¬žGÃ_Ú7ýI˜P©@§¿»ûû/~r·Ë®§™N¡¿í½ôžòÊ߉Ñ‚Ð0¥È`@NRl¢R³! µ"C)2¢ ¹d<¾… ¼.x”y¹PL 9îùç^Êø5‘ŽÒãT ’HN¨”?mõðÑ!m¨U7ÏýÊZN3lƒ¤È¾eä/"|-Ä5ùïŹ˜ðRäßÛÞ«=oËikˆ ÙŒGð—g¼ƒ2ªSY45ú= AGóÞ,‚«"Ÿ‘lmwùl×¾<åZЍ5¼Ó9—P¶»«­³^|Q<~£%pò"iÚÅÑ‘]Q¯fE½Z(г8Ñé˜ –F&ÿpÝ×3NÞ c¬8MÇš… cëö{*”,×í^Ñ’V­·’JÓ_Õ;¡4 Èæ¦c`¬$a‘¡ ^*Bj|æåRhŠô9ù™Ô”¾¯Tê9ä jÀçÑhä9Ï û ‡‘d6 *¤9l:OvßÔÊ)ÏòãT‰[‹\ÚXä…"ócê]©g•5Ïf¬yöd÷yúÕ>8Ï­½ºe]_ä4†’†× Ñ—1ÕÞe ºnÚt>¹;¯vö÷÷_º»µ­.Þ%é_DF?Çñ±épÁa ÙQа9CX [- X@¥ÍŸ?°¥d0Úœ±£Ì£å±÷m†ê D„‰1fBÎ(Á0 ÒÐüÀ¤ÈÞ!šóÏ-üœœ8¤¬Ÿ÷÷¶¶ö÷B»ïû½ˆ•$L©RˆeZ) ±YÓê1b‘NÃ[[O¢Š,£r8ç´d±E™ÒKü&¨nªrÊg׊Šñ_ˆ€1$ß$&è+Ú|£Fߣn->…!¢Gkq×€ä “CÿL=Ÿö+-‘qdmª™¾l1Ú4Ÿ‰*­+#Í wøÂ,Ò?ÇØ*m¬­¾ ÎYæ?†¯C¡ÞFPðn€mJ2˜¬šëŸd§ómÒ<*’•d tbXÍW8ѹ WNB¨ä·q²ÓXÙþÍí?¦aBP!‚YÓðšÈ‰˜Ò’ ‹Q¦Ðý •))K-¬kr´©6¼0£¢ @+ï)«œ²ÊÙ¤Õ²˜h*1—Î¥¹ÓïØqlà j¡I´ïí?â[ vS¦d”à<3‚G%ƃ²àdvÞDõ)'¿_¼exɤà&)ãøDoPõµ¦å‚•e d‰ð^ea”‘ K513 ‰…"b 1cB´nŒ`­A<ÑhìÙ¼˜Ï¡zç Q½ÛEõ ‚33£W¨=² íx¸Â·Â(àø·“?qw97>L°Þt-,GÛ÷_„F‘uÄP˜i¼˜Äœ!-Æc.ëeF.²ÃÔ:—2 XÒ,El#œäž¦ú°gÒmC‘¤®¦øF¶ÀfÞ÷ŸÆúЮn—vaQ‹áÐÅÇ”¡WÛ‡M˜,eèw8®nâÒ"^{(· ­÷•Nj¹R3’V«UÈ´E[–+憕_{È¿ÑC]þËÃé/Žç÷?ÎK q™ò½p\ëqÏ‚³{ný*AH˜¦ 3uD€½%Ì$›rÀrŒ‡˜lôvÙeÂm}tÅRùiBƵ ‡(FB^{# Qã垘g³Zl³Ü¸Qò«UlX.y!§ÕÂqnTv98¡ßñ¶¼Ÿ¼÷ÇgÇGÇËeÍw\Ž…Á +rÃ#ŒÞÕŠ1ÿwàîqàn”ü°¢7Ÿ“°¤gÃz-ø+ Õšù„âRñ–k¼G‡¡qËãùÐÐ-S§åp]‘®Q(Ù}U,®ð%H,t‡vUaí!-lU L-)ÇŽ¬„ÎÀr™öÓ ­dwö8§ªyÍâbÒUcU•Ù’`+¿¦ÅåP&¸rSÇù ²FåLmCu˜ öƒq×V³WP×Hf?:¢šb‰ôgÁ$ãËŒ^[³²ªPDȉa-ïMFÑ­»-Y9^¯d<-Ç_Y0bϵËE¤5ûôCß2—L—¢dö=ÕÕF téÁ,YIÓIœ/¨õk“r¼†z³ä¾IÃ5Vò(o¶ˆó볡öçæ0Ê™²;¡ŸýO™ˆŠð„’©ª­FŸÝi«÷ ‹ƒÏùÄ_?ƒÞG/ܽ+Ö.™î  ›Zïa ºÑöÿÒ«Üð1}ÊúU1AßÜkKçŽçŠR¾щî qöègµ´ÎÒqÌܼF~ÉY ® ¾,¸f¬ G°+õw¬J¬fD<ü€}׊ýabÀVéß¶€¬#ãF™[¯º)ÌV“f~Ÿœ¬NkK¤”TÞTRµºÖ=p±Ðb³à |h›íŽä©[%¢ÅªuÄ\íœf¹º:ºnä0^Ÿ`Ÿž_|ð²¡åSh‘á*¤iŠDUGü?W6{3E±qDÍ{e9<¾Ç'¥•þìžž•žÕ‘»Çf_}ëSÓÅ)ÿ†ömaö7k›|VÒ;ݶ5·úZÄ("ZΆøÞnoÌM5ÕïäÞç™ù‰Ù¾¹ïi®T6ÕmŠ4C¤ñ8hC !2é_)ßà¸YO/»ù%×'/ÓáeÈ"çìäroû;Cê6ï$dBÒ%×çLéÞ2 a¯ÏÙ+lkÞ4œôé^õۻë~ ¯ì5Wýºl‹ùÛÉýùô¢Þbïäúß ö“²~²w¶nuÑùk“,¸Þ'Ì,²ŽºTJ¬w‹zÁ%Éz¤™{³æ­¹ìÿ?PK êDŒû‚ .G‰ÎÒñ(Ž¿#ög”¦$Ñ:ïÁ›ùÎ+Á5pÝ;_äà ¼ò ×Ú3óIP©@û'“÷½áðÇŸz»Ž7ÒL§0Þu_¸OøTå‡ïÄœhAh€R„³8Ñé‚L –†jä•£G)ãWDBê;J/RP €vH"!ò@)ou×ÅK‡hÄUÁ1×ãÒN3¼IµkÀ_‹à¥Wä¿“S2YÊRä?ˆsßí;ë‘A­›ñ®]c1ê4P}g’KÆcò;LÉqжýHà· ¡!ªÈ—F$ýݦœÝÊ?'\Kf‚7&çfëÓUÿù¦„ç­>^B£R³ˆhg$EFt¤D?…DÀ/ ¦€äB1tØ¢¡Ÿ£w×ôšÊ•ê×1nb4šH|ß뽄˜qòVˆ¥qš.4 F#„^o#?“j¤ç)•º9(oàõ|>wg‡FüRÂ\2 ;ÐvœÇ{¯*pJþS‡ü°‚ñqbkQֹȼ˜º—êiiÍÓ kž>Þ{ƒ2½ò /œgÁ¨º³­/rù¤ÁHtÇELµ{ƒ®ní8zƒƒápø¼·WÙ¸6ŽÀ…úZd”ñ3\!;:†¥ÆSÌ«e-£´ùðïÌÌw6ìÁè¿áawì=Ë;£©‘bŒ™¾3O0 ˜Yh¾ïLS¾ó¯>þ;dV]÷ûýá¾Chóûñ(d3¤T)L\:3Z@âmM§ˆcÎBà‚é÷;DYFåÂwÎèŒÅ6ƒÈj¼Äßá¦*§Üwö¬ª?˜0fÈÖÌ– µVœù k ¡™B„AÑJÄ ¨¼uÉ? Œ<:.5£àÐ⬄>_ºÂy“_JTí`¤ÁïÔ ˜øMŸa°  Š5Ô³ÎÆ­Å|Æx4‚¢ лVÊcßÞŒ˜å“dåíêO2h|‘3Ì(R ò€L…N¬÷JÚû°ûÂ09‚Ú6FÉ Fºþ7·ë8ÍU"DE´¢ÖfŠÜ°™Jʃò-\½,µIW(C‹¿ÒðŠ‹"dJK6-lÆ}by5!UbmV$$2Üœ§‚†®ÁqŽ’a‰¢‚ng ¢"µ34(m´‰B“ˆ]#–…(d¨µ!ÓpFÍ.…V˜À°»áy  JxÈ¢3ÜÀ5Û&‚fƶ9]XFú±„S\§„NÊy(SâTTN2»µâ ‰Z T®eˆ¼vìIÔt¡1ÕÈPkþ¶›0+ysïêeÈÂ1„¥ò ±Jšös\ÑÆ‘r¹«qs>ycV ÞP-Û õûGüÆÌ«²°0œS/…jWQ{S‰ûØ­®sä3ð2ƒÉUV]$1;çB^¹BÆ^mœg/š¼9L#Ì-$B*‘Ý}çB‹ÜwZ¸Ì‰•©&ùM4xé~ ×%®»ÊµŠ0“ÅÖŸ3ƒ¨Òeš` àrzCå]½±BW¹¤TkÇXOySõ—¼S•cQÔNú­ÝIH…*1©- ¾ZÞf½pò~ò–à3&·õBȼ6øB^ÛkòZ“Æ{%‡YÊ2¶m¬ ^Pˆ´f=²Û^7»=: C+)fÇ7jÖL™<";0CË¥‹|SƤŠ1*)³”ƒEÊ“TŽÌvYHÒž¦øÍ:óýøI¬홣s ׆b4S¦ZX•?:…x )·+4Ž_ÜàˆÎ•×’TÝ`64ܧéÚØjY}žOºµ7vÇÊkV ˼97ë&œ-a#Öyä‡Þ-y–Ò¶OžXŠ"?iÏ •ß*"éöÄM1·«­Y)¥ÖÞOø¿[YëäÛõÍ@*[Ì-Ç_» ÷“ûòãÉéëÞäìèÃäÝûón•7çß’­a ßÝ÷¸]ª‡}c!û¬²o2n7økuV×пàÉaõS¬î¸aßDˆŒ'îo´­¿j úÓp‹tëÓÔ=(D±ôk¢kgšêðòÏU¥[qþÎrôËtåéÿU¶i~¨UïA ×o;~Uìÿ{Û¦ù¡¤½[I;Øí|ªÚlËP$lª«h]/]ß‚¶%ÆRÒ'–“9Ó‰½›™¦±󌖼:)û6„Ù䪈þÌãtM5 ZüÕ-"åU=­e­Õ[vò$ÿ¹êø“ß7Ÿœ/v¯÷Üñî¡FÂÍåx$çãï üFst„sU„Õå"eo´r¨\ôiU!ƒ¬¥ÌáW—øý§ n,ºôòú·h8üù—舸‘+Äñ þQMmuúg¥*UçR/í(iVG²T·`P¦Ìº•D+ap–²ÌÚän6¦!G§Ùî´Ù"úVg¯µ¾…?¯¯àzƒeá£øÅIÜgÛ „žãÚw©rüûɧ§š²ëÊxþ_pb€ßq†U†ð¾.sì@ÕÕ#U›|ˆþ‘í¿è‚Qm†/ÊiàY†Ö‚* áä ¦u)sÛÁT”½-Ìíº˜ƒx}j_wPZà0#¦¯æû(zE©à½Ö…D8S\®\™YÊyŽQ4ÙÌ”•Û>©¾àÍ,•ÆÁÁÁ‚(ø¯öB[)ôzÌ—œ}É M!×Y=§³‹¥Î¸+µŠ+£Î´| ¯ µLkeÌàe3Aãår³§§~ƒ°4¥Ã^­Ðf¼Â{rü¦%gM–2xvGã°"DñuDq¦çIÁã{ØDsx/šÃ'Çï3iF4`OƒQ;óÐ\T¼ÀO†g·h(“‚»xR k§zìóY4x1‡Ï£ã6Æ­-ñ„Úï­žóR} >è1¥î1;“tŒWT ëL;¬œùH3‹—½{ñÐé¿Sùþ³O‚šŒ¦:§Ê+èÌ´IÙRÐ1PqQø)›J‚gà«1e?ôéw~Î`ÑŽ‡'ýþð„ï®Gy¹€Lrk©|ùÂ{ACÓŽO‰Ç²Ì Vè÷Ÿ0°õ|ÎÍ*eø¢,BÁ½¡G]i+®Rv\ô–QÁx“½z%(º°Ý?ùÚçÀ»l!$ÎèPG¼mÁ[$ÕÎæ¤¶%|Üø"à<ðjAŸo®ym,Å>÷ÆwüưÃBíl÷ñ:Ï¢ñ¢KBFéVðï”ôNæIê+O$WEÊPu&¨‡¯¥fºýƒÎzHP£×y›âÈk‹—(¢²/ýb°æ³ý¿åÜbæŽþ3— …)‘›—0ÕNìe•Ê×™¯¯5õ£–üåÖÚ>êUèþO‚ĵM+L½®Zpá³EcáDì-/I´9ÑÈ|9¯$z• Êl¡¶>[~¯CÃ6¿OIM±˜×«`ƒÔÄzF¯[îWºö.j™ƒà $Í'AÌ¡¦ ÌXÇUîЦ5ž¿d-‰HæìO@ËÄHgCG’¯Ðá¢ã÷)ÅASªnB6Ë•ÖÕymñþ…â5{­ö’lfd+tɧ3mˆgrcYZºûIµÙ>Ýý/ú<‘³IVæ¤Ëìê|r2œâp0ãìt½fp® ߣ“߄ҕ±™Ö¡·C·=PÊ6{º:tòˆ:´S]¾Ñ¡|ŸûGÑ¡‰íÈéŠö ôð»¤ÅŽO¹ñ}+ÞQþ§Dt©6$ö~`íPâ¶Gü•êïWÿÍþ7PK êDŒ<ÈÆ”м' html/ch02s02.html­WïoÛ6ýÜý‡.. IŽ“µ^"¹H¤íuÅÒ®ûfÐÔYbB‘*IÉÉ¿#%;VêtéV6Dš||wïîÑNKWÉYZËg?ðJ+pŒ”ÎÕ|nD›ÑZ9P.úp]%¼eÔÁ•KüþcÂKf,¸ìíùÑtú˯Ñ> p©NÂlOâŸÕÂÖÇŸJ戰„‘¥Ô«giÒ-H¥P—Ą̄u×l à() ,3Ê­MnfcRâJÏÀgiÅ*œ-@aN›-®/5®õ%ùûüŒœo°,ùk?~zé6ƒRW°>[¨®b$žé©fô¼6Bä,È)Æ@þ„%PÈëFä0€jêMåx2ÄY§ä%,…òˆÍ¶×Úÿ 0AÛv|pãà–2®R±Khj¢—¨fZp&;½üÇ(z…PäµÖ…r¢˜¼v‚[LvQ4K-7¢vÛ]°–u³X Ò~æ¾¹¨Y ã—`0ó‚¹x^€ë§FôãI4y:™N§O¢ƒ>Æ­-ñ[葉˜Pï°FTiw,;‘(ãÖÂ:ÓÀŽUÎ?¼Ç™VÀjt+Tÿ•ÊïÖ> N’.t~Mj¦MFW%Ê€%‡ágt!ž_£ýiŒ¯ÓSJÚ~<=§‡”°á÷³4-á’Y‹EÍZ œvlñ‘nÁøZÄyäö}ÊÉšãögÚì$,"èÓ¬¶düF dñª ŽžgÔÞ3Eà x〠ååb¼ÞuË•³±Ç~:0Aæ}x¯àuš·<ê⢈¸D°¤¶E[$ØÌ`ÃgtîtMg¯™1ày«–ÚT] ŸîÛˆ»Æ€Ï’a…aR6›Öù¢ð!­¯#§ûÔt± B÷.ßÅL¾Ô$&__zô[_)G¡óë¨à±zq<¾¨ÐTTE0V**”Ý&ÕFiǵ*6*‘ç†Õ‚Ü|˜ÔëuŽÈמּGhß—šo.©3­ëÓÆÂíË)ÐìU‘¸f‰k‚,+XàÚ ]$6‘³¤ð wyø·xý\.ç\äèñôìt~8]Àt²dôxýJv‡ç~ÊЗZw*øN½§-nö íð{ÚN[ڔ˳Ùù±¾1£Ý쾋ÅýKð¤íG¡5wÛðºÜñ;söÞ/ð!µŽÄ7þ¢Ûaõ}#ù;Ü_èþÂ?PK êDŒ<‡~î¶ html/ch02s03.html­WmoÛ6þÜý ŽC­$ÇñZ/‘\ô-m‡ -–vÝ·€¢ÎŠTIÊ®ÿýŽ”ìX‰ƒ¶C ØOäsϽÓiåj9O+`Åü>i Ž‘Ê¹&‚/­Xfô…V”‹>® „w«Œ:øêþ„ðŠ .{{þ>šÍþø3:¤.uÂI˜Oâ£øw•ÛæäsÅ–¸ HÍ® mˆ^FܺœI²zõ4Mºc©êеn-ÁVŽ’ÊÀ"£ÜÚäZã’zèyùõ¼3E±¥%(0Ìi³cÁKÍŸk}Eþ=?#ç[,Kþ9ŒŸLã1ÝePé6º…*àkìMGžjFÏ#TI>CNNÑò7,À€â@^·¢€TÛl¨Æ“!ΤwÔKXå=šo ,wìmŒÉ w³Î±…nÂLoÂL{˜7h3@¬u•6Px¸_£è9”B‘×Z—È3ÅäÚ nÑÉDÑ<µÜˆÆí†æ’-Y'Å$¹wïÞ’R²¿ìmÉÈhD}òÙcJ²Œš·5+–š3'´Š£æZ> OI¿3I¬•1%Ç׫Õ*¦N<üae„ƒQ«ÀrÖÀˆÞ?zÑ“³†g”<¼¦ñÐ2X±E1×uR²øÒtÖܰæàþÑ+ÄLº.èƒÀ í%ß닆•ðÑ0~ÝqQ2_”àzш~zMžLf³Ùã訷qçH|…øR×L¨w˜ø#ª´‚;¶=“Ð3Ì„u¦…=»œø€’¥€Õè†=ýWª¸;öIè+i®‹5ÉKŒ™6]UL24?£¹DxJ|Vfô·1~NO)YöëÙt<žM)aÃ÷ó´KÂ%³Ó˜-½0(v,G+Q¸*£‡ãñ}Jl[×̬3úŽ-E2ˆ\ï7ø­®´ S= ªJ|â˜0~Ëw® ͸þ[lÈL<—[£2Â8k¯Ù5{ zþK=Mؼ£€ÀE ܃>Þ½&¼¯t¼öÓ1¢¬O¯bÀJííów:Ϫã¬M‚ëqøgŒÎ D¸;Ä 3UfÔ0~¡Ùø”ëÄýO5¼Ç8úöŒD$0sLríªà®·{ßG]PPŠÌ~8lÕdÃ{÷· 5ùV‘ÝýQßPý$±ÂâĘŒ€ðl4XLJ(/æÀÒØƒ½òaòX¸Ý‹7D仲m%ba7eÄ—ÉÁï,„m$[#’ÓÁް÷ ×hŸßü(ˆ ,1ç­é^úÆ]1Ux*ù:Íác6‡8C&/o1õ¦†±ßs |nçÓvZžiÝœb¼nNÉ@«a÷,pO¬À%+È pm°o%—6‘˜t pÑ»†É ¹¸à¢ÀaCÏN/¦³f“£'›wjmØÍÿ–)Ã޼кóºï ßÙŸ·g†=tú{èÞN¸Íl{û²6ÿÔ\÷¿ýJWý†ýdÙ¯œn|ç¿ãÖ÷ ¯ö\wçoðü}¶Ùu$¾y¥Ü3Rúò—£ðÿWþPK êDŒ<Ñ9¨Wf? html/ch02s04.html­VkSÛFýLÅív(f2’ŒÄÉ Ú¡4SH“oÌZº–¯w•Ý•ÿûÞ•d°ˆ™’N<#öu£ 7“£¸@ž~‚úÏÐq(œ+üR‰yÂÞiåP¹àvY"ƒ´%ÌáWùóÇÜXtÉï7ÃááoÁ«áb'œÄÑ <Uc[_êpƒ0‘zaW®Ð³“8j6ÆR¨)” ³n)шŽAap’°ÔÚèq6¤!G”Z&~£Ùî´Yã|¦Ó·ZOáóÍÜ<`Yøg/|söÙ:ƒBÏpe[¨ ¿†ÞY²é©&ì¦4Båð ÇpAÞÀß8Aƒ*Ex_‰ ;PUùàDÑtqmhÎp"”Gôh¶s¼48_°ýý§û-ʧ‚;\0ãS¬JÐà>P"å²üI\Qðºà‡OÁ[ðsk)Š‚`$WyÅs”8£9Ï÷ç x‹¹Pð^ë\"œ*.—N¤–ŸaŒb›Qºõ¤Ýó9of©`¶¶¶æÜ@Îÿ°—Ú:H ×c¾íƒ$L§•7Jr'´ K£NµÜ…hwF‘µ2dpÔLÐx±X„l÷ØÃ? ,Œpثڔ—ØcÛûïZr֤ɃW4^Ëk¾ò(Lõ,Êyxowovžx³³½N˜Q3¢Û­ÄíÌKcQRŒo O§h(w9wá]Ž®ê±§ÁàÍ`8¾ö[׎„wÔ”gzÆ…º¦–è1¥>³íTRe\QU¬3nØåüËš™ \ôžøCÙ?WÙó¹j‰Ç:[Â8§œi“°EAi B#÷6–ÏÀWfÂ~éÓïâ‚Á¼úýáÞ]Å™˜C*¹µTÊ|î­ ¡iÇÇÄc!2W$l¯ßßf`«ÙŒ›e®ù\äuÁã~COAt¥-¹JØ~m*§·” Æoy‰ŠähäŸle~à­·h'”ߘOS´vŠÄ§ÜØÜ£ÔöqÄGQÎjŠ-èë5ÐGŠ›´¤áµ™ŽyA|ZVj£*Œ®)YžUçö6ªƒMŸÿNùè$ÅbêöX­ CÕÍX-1¾Èšéö¯tÖ)s^ª‰ˆDnŽ`¬]Q‡°ÑyŸ… I¹L Dî¹*+²ëÿeÝzÍf:¶:ã%,HêyYJѨd8G©K4*ë£ÍÁŠYIe÷ùÏ«`Ì-ófi£OG}f%œ¡7sK"íå—üÃÒz¡viwî¿”,)aÁå–º¢£«¼¨u}¥¹ÖAã¨\ùò ÈWZ—•ŧBìµn¥’’öLhO¨ÐEä©ÁTjèÞFRAEjÇžÓ«ïѵ;9¹KEFzÆ®.î†c&œ¯Ö δáÏèË7®tÛ¢uÝu)¾PÎt›öà6íÆÖ[5m¶úö¦0úX>6Üf‚?¤ÿØ·#§K/5ßuåø¿á(6ÜÀF—t3{YDºœ/ºÏlP·V&üÌÎüÅù_PK êDŒ<£Q«ì+!html/ch02s05.htmlíZmsÛ6þìû8Ü$v¦!)Ënª³EeâÄnÚqssré7D®HÄ Á dýû[€¤DÊR$'Ž3÷¢kDp±xö}‘Í05™ S`ñè/Ä}†FRc þ,ù4¤¯en 7Þûy”DÕSH ÜšÀî?%QÊ”þrõo0øñïÞ!u솆£¾ÿ£ÿ4ëâô\kÜË™ ‚åIÉ Ã5= *â¡àù Q BªÍ\€N %©‚IH#­ƒåª”„U£±Ï£J€œe¸š@Š©Z¸ßÈèLÊòÇÕ%¹ZðÒä_‡þOÇ~¶¤2ƒælžÇpë[ñL 5¤W…âyB>˜\9#ÿ„ (È# ?—<†«²X‘öú]>ýZ=o`ÂsËÑrÓí…‚i›î¯ò8®¹¼E$L™X&„•&• â—v9ª«ËîÅ*»5»W‘á2·hþêygðœü,e"€¼Ê™˜iTn ž7êHñ´Mò‰MYµŠ.±··7eŠ$ìWýVjCBrp@­«éJÂÄ2*­3øBFÌžêJIñŒ¼$5eh-|JNª|žÍf>}vjÙ/8Ì7pPæ #VÀ}rôº§UîSòÃÆ„&N"5ù‘Ì‚„ùŸô~%ÍþŠ4ûOŽÎ‘gP=á}æ ë•]uQ` ¼W,º…ê¸N˜ñ¯0õÒýðÊëÿÔ /¼£ZÆÖÿÃîÌÏß¡ÃÐ\æ°ì•@¸D@¶F•°†ÊØ¿ãÊ”Ãì`E´þyo¶}à²Èp,ã9'h3©B:KÑ èT(~HÇÙSb½0¤ëáçâ‚’iý<8îõÇ”°îûÑ0æS ¦5º-›ÚS@á²acÄ1ã±ICzØë=¡D—YÆÔ<¤ïØ”'΃Ȓ^á_Šp….XÒ#wT‚¿"tK²kžJQXÇÍþÅ „¾EPs0AaQZßb*Ö†ïèw ìaÀFÕÁÈ8v0k¦/ZL—0×e‹ ×z8Š')â©è Ê×fÑ;4˜EUáqÒNáX,ìo´IÇ0"sH¶B y×j.¥XG«–믴ßyÖ³É`ꄌ¥I «LE<›Ö¼ÆH(w4\Úo·¿W¤èßSŠ£®KÄmœL»‚(ŽÖ¡(\FØ;Ÿ‚š»ÌMÆ6Õj4'zƒI1KÀÖÞJJÓˆub· ƒ9`ʯ¡`ÖLË×é1Ù<æthݾ¡H…g¾yy› ‚gj Œ",ë—Œ¹ÕÀ‡÷Þ€¾Ä€;GOsº™Q%›#$«ÌÅÇ%&‚—ëš.\¥›2Q"M;­kWa'( ̤ºñ¥J0!¥±`c{(­¹5íË–³On5¿Çù³#wd¿×; þøíòÊí¡] Ã2³5?©p_Ö¥íA•PX÷¹Ÿ "ñêG¯ï÷ü[Ó¶ lö åŽ´rM ÷Æ„aÎ h"'•W‹º[‰m6ƒØù;¶ø¥÷ÝÞ÷–š+¬×ŽÃbðV#Æ۾¶Êz>)$¯·»ù¶o‹¦ç°uÃ~¹¾%ø?hpR mImN±¿i‡‡]5º!FÖš 冢£X“2ƒ v® ;Ab¹|eÂhÙí<Þæå®¤Ùv}ƒ};ºq6¬÷¡³¹íå§6ÍËüy-U‰d¬Ð„c3Ïc«˜êvY!ìkçWè9\¡Ý%&ÚYŠýúR]èr®ó„¸r¹ ©Ü2Ü ÏUu Ë)že‹j­Ü®É&\€u ŒˆçgÞ/ï.‚T:W’kÄöomåm¬ëŽç-K¢P &dÆiîwtsÀBØ[æš[›u£c¹þåÑÑæq':R–ÇØ(‚õ]E„Œ¢R5™†UVý‰ 6³oÄÒVÇV,Û+‘.Ç7t^Fnã¥ÜÕ¢l%Ò7ו;Ê]Ÿ°BXYH¯I¬8FªKùâJ Ëå15¬«‹å/wø‹ÍÕÀå Y[¿Ò»[ç=€sשèµm¡„€x[Æÿ˜BÞÈÓ¶®Ëð h˜"1Ó«Œç®¿À¨wÚ«`s»Sª¼Nî`l­¢ׂxËëKs/Y¹Â¼^ОÏ_b6¸ÌÞ^¥«æº`ðZ·Ü·SOñ|§ÜúÜ©v§|Næ²$ºÀŸ%nÄk)šUk»®V£ËZ£ºÕ–ÙÑ ÝcYõ‚c˜Ht]Û»IsCJq»ÄÖF["˜»Ã&2*q3îÄ”/daÉ­BJušÛ¼:a4m+ Á«Ž¼ºj¡ŽTWÍfè êö‹…kZí·Ï•’mç±V,äXÃÐK›|eLþÿÆõ?sãúlµÿÇc÷ñY™6u j™µè¿‹Mðþ…É1{£4Ý@ÅóN7ðزY-kxѶßnÝr®çzXÃmhã¾A@}›6tƒã}(;âÝÿÑm¯Õ?·;ÄÅðîRÊâ;œÕ¡‹55P ÍiüŒ­T "©bPÁ'ØÖrÿSwôÚžmÝgv-&×IHèåÅõñ` ƒþ„ÑÓæ‚L*¶auG”î¨h"¥˜¸‘ÅŽã¢Åžîpçø‡;kG4Íp§Ë¶¼;3}(–ƒ™õdܳE~2­ŸŒ,ìHjËðùK®™¾Þâ}n7tQV îL¶×̸êÀ±³L;Ø´ÿIâßPK êDŒ<β,OÖÛ html/ch02s06.htmlíZ[sÛ¸~öþ ”ÄÎlH)²“¸¶¤çâM:v²S'Ý}ó@ä ›X”¬þúžº…’å­wÓ‡jFŽˆË¹~çB ýÌù°ŸO†?0÷é`9ˬ-CøW%&ƒà­’¤ ¿ÌJX쟅;Û¡ý§,θ6`¯>‡ÇÇ/ÿ¾¹¾6‡a/z=•#SžžÅV(iú?ÑÏ…¼eòA`ì,“Ø€eƃ 6¦³ð1`E¨9ÓóÐ +y£)HÐÜ*½$ã;¿Qê–ývuÁ®æ´ ûç‹èõQÔ –%ÈT o!¸‹H9äI¢‚«R ™²_aÄÎs5eÿ€1h1°Ÿ+‘À ©ªœ+‘u{«tzµ)ÞÁXH¢HÔÌÊöRÃd™€é¾\§ñ²¦òÞTTðœå\¦OAŽ­’”h²U’¯×I¾®I~”ee;Ÿ+‹ÿ°K^–($ÒúK¾THö³RiìLò|fElÐÚ „á°ob-J»ì£>á~ñ°··7ᚥüïæƒ2– ØÁA@83' X¢âŠrs‚ITjeU¬ògì'V¯ìtŒÉ£€ø|žN§Qðì”ÈÏ)Lµ°pPI01/á xrø¶Îèx°°büÈ‚ÔiòF£(VE'åÑÙ÷Úì¯i³ÿäð=Òìø'|ž9 úõÈ®¶(Ñ__4oA£9®Sn£ël=t|= {¯{ÇÇǯÂÃZÇ¥-Ñ5ÆÜ;Up!?aRIذì,G”] ¬Õ´¬²ô㙘¬éƒÞ/“;ï¸Ò©dÆF)úLéA0ÍÐ ˆ0TŒr$0‚ä øk?çç›ÔÏÇGÝîñQÀøêü°Ÿˆ ‹sn b˜Oˆ h¶|„rLEb³Að¢Û}0S׳Að‰ODêÄë5~377%—ƒàбJñWŒ€¡%mI*CÅÜNú& »q«wç0Fö9ãq ÆÜò/[cwø Fu¿Ã‡ž NœH5ÑWKD"µ¥ /W»8Z¤ÊS³X‘J¶†ÿð:‡¤òò8m;θXè7ÚÅ bû"pÙf€\õË%*?\ÿÉz+óè)ÊÄ(H\Ÿ°‘²™3¡OãcÔ1äÞ8Œ¢µx&ë5¢-ÿ-]`]RTÃ$@¬bp‡)ÕV( Ìf\²› Бë-¹JE ,u"æy>ÃÕ0Cë5'&äDÝUFH"j@Oš™©1­f˜1sá3Sš¡vݵB‘ ª²õWa3̨܉ûœv£|¿&XËrV*™œMÝÄLU,FÙáâÊœ&c_20Ð,Æý'DÜñYrÆb!þ I. A¶Êëì”»ZAR}–Nt×ÖQèÐÄ|Ç‘3âSÏZfA±(b̵Ìb‚‘F8»xð×fw¢¿,¦:U¾ðÿÞª}k¼8“&DèAr[Š&Ç!l8ÿ×%-º^í+ƒ&ï~•b,Ìû 6šQ^åÖcg©Ì²1ÂıžŠŒFú,ñ¢çaCÉÙtï«îsñ^O1-sÿr‹~wQ‚"ºÈCiµÃ”çFñˆìPV ËÓyØÕqg¦ŒvÙ€dˆk u.gu¸;˜b…”I=ís\w¼(ó¥ðDÑ¥°ÙI5/(:]ÃõÃÓÜžö©Z5+²qg!÷ñ¨-¼å‰KJ ‡ oú£ú8ƒøÖ¿Õîúí|üÄ—->o²7”~Ÿþ÷>)êõ\ËG(4®´±Ú‘žUÙ†ãIÉYúˆê¸+rR`»[–ÎŒ+äc”¦JßFJ§øæ›AÁ;SÓ5pÜÇûäΈðŸ:–½n÷Eç·Ë‹+Ç:[aÃxqâ徨ÏPÕK‘±þyŽ_Öa/êFw&iôtÑáxmÄ 3ª€@п×ý“µ´¿’aý†´¸1ÅwMœ±äðÆÔª=gq¥ñµÌb7­#²É"¶øô3k-Ýšm·Z©ÓfÛí[(…îµqÓŠd‡VtmÂw`¹XԆݽxÑÝAžû]lªQ!ì.…Ϫûhù„ýæw¸å#û"ö§z¦UúïâìÐÆBã”:JÞzš°žŠþlÝÈÊGµ-±ô´‹©¤æë8G2ouÜ#Èäãéà}Q6˜{ÎÍ–\ê ÝñÄÒéÄü Jß’Jüú"I¯`52™Ý`¯Mï÷þô“ŠºJ&¬? 5ÑüÄK$ÍQ¯«¯î.‘…!Äé”q¬UQŸë2׬,Þ¿¢y ¼ÜVϯ×.”*ÏéðlíZn®šv-Ç5c\I°ÔTiˆ•N@wnL‡ºhÑÍêméòíÓCn©®óñuŒ Xpq~}t<‚ãÞ˜§Íœ†Bi¾á¶èUV/sÆJ¹kwѰã…Î|Ïê•ÌÑ#^É´^¬4W2«d«o¯y‡_ËÅuJ»€rIsþt¸àž¬*é"i‡ûâßk„¬åÒ|øAQ㽋V%õBl¿Œn¹ªª#‰®é.’þSÃPK êDŒ<¹´ž.« :*html/ch02s07.htmlÕZ[sÛ¸~Öþ ”$ÎlD)²›¨¶¤çâ]wœËÔÉvß<y$Ò& %{:ýï=%R¦d9–“®fd‹p®ß¹€Ä Òi2DÀÃÑOÌ|)hÎ"­ó6ü»ˆgCï­È4dºýå&öjèi¸ÖZÄ‚ˆKzxzþ©Ýïÿíïí—ž!7бN`Ôó_ûO³±ÊN³¼ÐO…ÆìÏó8›:vÖ ‰³+&!zJß$ "í±HÂdèJu–w}¼ô˜Fyœt=²’g<Å»SÈ@r-dEàw"x#ÄûãüŒ/h)öûKÿõßõªD"…’wœ…p퓦ȓDzç¹DÉÙ¿`ÌN1gÿ„ HÈ`¿q5RE¾P"êöêtzÎ.ï`gD‘¨©Úò\¬J@u_­Òxå¨:Y}y†æ©/ï¯.ï»å¿só1š ü¥Ý~Ó8c¿ 1M€g<¹Ñq Ðœ!´Û£ dœëª.ùŒÛ»èýV«5ã’Mù?ÔoBi6d{{¡Jzl8d¡ŠÝâ'"à$¶ŸK¡E ’çìæfv:J%¾Çí ¼žÏç¾÷üˆÈ/(Ìe¬a¯È@<‡=ïÉþ['œ’Áð™Ç~^Šñ3ó¦F£6/5ò‘v¦Ü¿TϬ6ÏV´yödÿ=ÒìØ+¼ðž îζ¶Èù¾H\Ds\L¹ö/¦ Ý­=ïëq»÷º×ï÷_µ÷Ž•%þFØ;‘ò8ûˆßó2‘ÁšiÇ Âè 1€dµ, a–¦ŸñÎ,†ùÞŠ>èý÷Y¸Þ÷“0cÞ°ñ}&äЛG脪?ôÆ ’÷ápèýµ‹Ÿ“ÍÜuÿ ÛíxŒ×ÇGƒ0ž± áJ!pùŒ¸€ÄÛš`Éæq¨£¡÷²Û}â1U¤)—7Cï#ŸÅSƒ ¶œ/ñ¡¸‰Êy6ôö «)þ 04åΔ¡–† }Ã’wX;R LйÎx€RW€Âä‘:úŒ1<èð‘刄C#Ÿ#úªBt)_Sb°r5‹#ãi„ò85©²Æ0úˆž"©¬™`{f}ÿ0lKzHƒAháýË«¸9õ–vÆ ¾$Ñ€rÈÐŽA5Æ6SdÚšŠÆþÍŸÙ÷N©»‹’{H¹ôÏfâô,`}ŒUAñX ¤ÝÕ;H{ïÛ[Èrý]=äê†ÌFì§[Û4Z²¨m´«Â& 7lmÜæÑ°I((—‚Ú.(ÿa ê‚ÝÎïtûXÊ oE6‰e HЮd­¥iwvNŒÕ4›¢µü;«†hn®+ݵkn6ù)Ò‡·Ø%tê=¶-ãÔá[…½”.´/:s[¿ç®]µ:· • [‰‚2¹0ÝŸ¨õQÚ£°JPt.B¨Ê²RãZ;vŠâÀF‘yâø±HÇ w–ûDü ,ʈùÎi;ˆ ¸ÊEŒè±íGõÝÛÅàaý™ZºxD·&³·ZF‘Ò<ˆ¶(4Çœ5lðš‡[MÄø$€ˆoá¾ë4ÉÔmÅò…2ï‡&ÔäÎ…¼ò…œv1å9Œ‰iéÑò­Û¼¯U|þó}ò×í¾ìüñáìܰF×a*͸oZ¹ÏÜkšá'¶ös/:;¥í.Û=¿ë_«zÛ\èÿ‰Ð…6k›§È«•yã" ŽÛ5 Ëdºe:9‹ð Èá½¹çT{Á‚BJ¬%˜÷¥O6y¾Ð¶Á§;WU$zû¦ØI·bÛVê4ÙvóJE;ì¿Ì;gÂw¸u«Û(–žôq&­3^ÀœK‡èÐLO¼Ô°Ø0ãÃmŒÃå,+¼«,þ·¬,±‡%ÑW}¬gÛXÏZ¬S&„#dªÙ¼åô“ç=‡ŒKòJ©L9‘L¬,O º8Ï‹C“h^ÚÍÀ|f ÖÌbììì,˜&ûüVÆ’ˆŒFÔ¥—9¢$ŠHª’ªÀPùB%Ìr%ýR+«%“ßH»3Œ>%GÍŽ—Ë¥O;ø5ÂRs £J‚IX #úpÿ´%gtíRò䆯B³Ú"uù‰*‚ŒùŸÍncÍî–5»÷_"fÐŒp@× Âvæ¾¾(Y4K®A£;®2fý« l;5¢O¼Éád:>õö[7Dü+^'ÄÁ‚­H ¨\ÁÓA”&…Âw.e®b¯õøNêCfcŽ81,…® º;Il 4hÛˆÈ ÝQèÌtï4þý¤²jÉ5¤aàfb‚gLŽÁÅŠÜö S#v*I®DÚé5 ·Õò[ª5`²7”à¼ÉwFg¿›H +¸šÚ„'Ðíûw»}ç#úÏñpG-Üø¡%V­£ÃÓ:G9´Ú8l6„L³Bpcëæöà‘°Ç¡;ÑÝŽ\x–e­.·“íuf­æ³ +Sì¬l·EÛÛLT¸Êt’ŸºŽ‚Ìè=PëÉoÁb‹ñ‹>qy…oدý\YÆo4ú—ƒŠƒG™=n}£aíö·ì°¢«VªÒk/îšF5áEÙ¸Ü EÆõ&Ÿ+T‰b‚ÿãDÛPýBX“¡ëƒ?‡†¶ÀÌœ]&g›˜_*0í©¨£·™"ë+ĹRåY…™²uupݹëë÷Ìq/ÁK˜iH”Æb|6KØŸé]ö{:ñ•˜_%<ÅLÏÏ®¦3˜NæŒwk°d°;:â-Sú k®T]ÈëRzϦµ–é7ƒØt[G×tú°Õíûkü±¼iÃHú†ý˜åÍȪҵÊÿºÿ_ëó¿ñkåÊÆ}Чظû–=ÐÛããîUî’åþ¤ý PK êDŒ<(þ6t$Ï(html/ch02s09.htmlíZmsÛ6þìû(oËÓ”%_«Ú’nRÇNsãæ2ç¤í7D®HÄÀ@Éþ÷]€ $ê]ìLnN3öˆàbß÷Á‹¶›êQÖï¦@ãþ߈ýtG )IµÎ}øoÁÆ=ïRp \ûsðHT>õ< :4ó/H”R©@÷ÞÝþÛïtþñ“êYv]ÍtýVðSð’T~qI³Œñ„¨b0ÌÄDuÃ’¢‹£÷DBÖó”~Ì@¥Ú#©„aÏ‹” g£>zD£.NóÜ/µæt„£ pT 9§ìý,Ä=ùãö†ÜNy)òÛiðãYÐôæ5HÅ*ÙŒÇð+Q¦QµçÝæÒ˜ð; È5Ú@þCÀ# o CU‘OH›­:Ÿ–óÉ2n8nª6=—0žg šEÇå7* ]54Ç ]ŸÝvs¯PRLprCyRÐHãêæY}çû?CÂ8y+D’yÍiö¨Y¤Ðµ1ø~¿«"Ér=ÏtLËQÌ‚£££1•$¡ÿR¿¥I4žÉ.uî‘^Ä"*F¢ Õ¨BK¡E$²òOâ(ÃP©,ðÈy9€Ï“É$ðN. û)‡‰dÑÞ‹ö¥SNɨwì‘ïgj|O¼ÄZäÓÊ¢ £0¡Águ\Zs¼`Íñ‹öò Ë'|ðN¬]7²«/rôïGI£{莻„êà.í†Þ§×~ëÇV§ÓùÁo;ç¦wXioĈ2þÓ½áqÁa Ùë Sê³ÙjYÀ *m¾|À‘1ƒIcÁŒþ×Ç>´Àшø‘ Œ™=o’b0ÇÐüž7ȽGLFö¼¿7ñs}푱{îœ5›3Ðúû~7fceT)La:6R@â°6N&,ÖiÏ;m6_xˆ$£•=ï=³Äf™ÑKüKQÝLå”cÂ[Q ~‹0a ÉFhJÑBËÂüŕܖëØd0ÄÀv)¡Q„t¨H¾²bû°–»!í—ÒqlusL˜c:Óm@”z­VG²$E}œˆšV|úï1DF¥Rkjh]Œ+‚ùŽQ¨…BA¤O1˜ˆ=x=NSLj•Ãî_Úª½ÇxðE-2 òœ „N­ÿJäŽÊøU ðª·)Fi«Òsþnkí51DdD‰aL(GiXsv”*B+>!S(Ç' )'”iRpÍ2‚3*2„T]H®^™AŽO*XZÔˆD¡H °…”/ù¯µ§ÿÚuÿÍ|åäùJS >d`0°tXíú¨½ÞGGŸXõ»¦¦+Yæ»·ÈÆ ö‰d¬ÞìÔsÃÞz—Š1b{"é(cJc_fú¢kг¢H3_ÓdI¸!é“EJªµdƒá¦ÏbGÔ[$Ó¬@ÆñÛ”övàæ¤ocI@íj\_&úÂî¤ÖZ†ˆË3@µƒ"S¢µ:$Fú¥U$ÞÅ4-¶q”v-0Û%£E»6Ú†Çnƒé¦c›>ƒR“ÀZªŒc#*$n¹ôÕØ¬ûS¦ª$9™º!4Z²9áR@ž=†6Ù%Åmd–=i K§¬/¼pUåÙ)e=K˜b‡M:c ð@G9.ÍÔ:<™«– MŒ §s I˜E—l+èwC +ˆv0ŒPë']%i¾&*Q—­4ÂaB,aYq SwÉv¬Ü{UÁÊÀ¼½'˜Ÿíæ>ãyá ýN3+ß^‰}‰à~¶Ü7¡»›¿„ê9Ò”ÌV6 èÿGô–9WnÕÁÄzG°[¨ÖÃÑ×@ 6Vn(Ÿ¸†°ì§Eô+Íó¹í#)ßm«¡[†Ðöˆ¨ƒÇ|Sta>™z— ‰1£E'<7Ó xÈ,L_ZIßøâ[Û=ì»s8ZZ(Þ•ËWm±|µvåªP™•K©M'1Ä­örÆ•k!._˜zk€~ÃbÌq>óŸêÈ¥Ýç‚aYº*ëòr:~N¢å#ÞšãËÑ‘Õþ½Ý˜|+«r#â¢^n*ž‡:›Ì-$›rôa”qµ-=çî³”½X¢0ò>2 úlDà ”îrܪ«Ú-²ÏÛCþ¤mE¶šÍÓð_on­hÜ„  â¶tÙŠ—z߸;½ƒ:az YþìÅ',I|÷è·‚fð â\=ߺŸ Ù»xa½Ý,_p³ØI½°_ doAŽYA¹‹røßp¦½"wqS*ã“Ô®ˆé½P©"ÓÛt2A½DÁ_ØS…«|»yŠ nní% sáДej¿³øw #¶ÓVû˶˜›Ã²ääçÌ\8$ûœ¶e‰[øUŒŠ29:ŒM®ò/Kž°¯Ïm›I‡1m>|­ÈÙÛ«ÃnéBì©@⛿ø_¿sþOŽ[õÞp÷ü¬•ûü÷ϛݲá6iËXÂk—Ý¢TÝ/mÕd‹Áw;ÅÆNÚ5¿Ù~èºèâÀõi¢²fmÀY¯üÊâòaùW {mÀÝÕZý#ÊŸ3ª‹AsKÇ8mö;ƒ»K_õ£ÂüµÆ´ßæFˆüºP°ØgcZYªór†4C¤ 8hsª• ƒ ?«Ðˆ|®÷JÍ·£ìÓ¶r— ï"“ñn®ïÎ:è´†Ô»¨ÞI I×´,™Rïî aÛlÏÁŽÓ9õÖŒ³¶f¬l°¨Z3êl‹å&¯þ§|ÖY±ZÁ/oÖØb<»'-rÓM²Ô*öWíMWtÇõÃv1¹®W©Ä¶V´-*®lLó‘éD2ŒPK êDŒ<3lÜl‡ html/ch03.html­VkoÛ6ýœý ŽC$ÇÉZ'‘<¤iÒv0²bÉß šº–˜P¤FRv¼_¿KIv¬Ô^3,dˆus箣8–޾!õ/.À1’;WðW%æ ½ÐÊrÁí²Jx³J¨ƒù÷ÏÏ™±à’O7¿Ãá'Á!­áb'œ„ÑQø½šÚòìò¡4`­ÐŠŒ™Ê*–é]Žâ¨9K¡î‰™Pë–là(É ÌÊ­wC\RâQKįG wÅ ÜÍ@aN› Êï5§õ=ùófLnÖX–ü~¾=ût“A® XÙ*…‡ÐûŠ6=Õ„Þ”F¨ŒüSr%õ‚ü 30 8•H¡U•/„ᛯã‘÷¶Ò„'m¬/˜”×VÓÂڎˆmàÙþ ‹sZœ›ª,µq’Ë1E)¡ÀP2‡Iô˜ßÁ;È„"´Î$sÅäÒ n1è)Á(¶ÜˆÒm¦êŽÍY³‹U²··7g†dìgûQ[GÒëQ_}ö”’$!©æ•·JÍk«ai´Ó\ËòiOF‘µ2¤ä´ÙÀõb±éÁ™‡_#,ŒpЫXÎJèÑWG-9kx²OÉëG¯ Íj¶ò(予2ÞÙýÆ›ý'Þì¿:ºD̨Yá‚Ô âvç¹±(±/n ã÷`0“Œ¹p’k·zô·ó`ðv0ßG­¯„ìÄ÷º`B]c#ô¨Ò v;—Xc, „u¦‚-§œ¿ùŒ;s‹Þ0û—*Ýû¨–xªÓ%™f˜3mºÈ1 Xiè~B§á)ñ¥™Ðïúø»º¢dÞ®‡Çýþð˜Ö}>ŠS1'\2k±–ÙÜ[ƒÛŽM‘ÇB¤.Oèa¿ÿŠbý3Ë„^³¹Èê "ç ^9Ò•¶d ˾6•áÇ‚ñGž!]9úYù+]Yxã-˜„¦7f„qŽ ÷€tÊ­}<úŒGlÔXEà´fØ‚¾Ù]1\ŸÌw™7"ËÝú`‡…Úª£kÌgÑØ¯½‹êØâ¨ð÷þNPÿKO†HŒMBAuST‹Š¯ªf»ýËçu€é¤àÍ=øù`Åfóôîÿ/ROtR3§dª]ÞáåŒN+îkkEü°¥þiãÙ.ºeÝùëPY°^ln3Eލ”ád+°¯$aØrBÍõ=àZˆCp› KÚL`HIf¬R0#þ²Ônb)¹<º]¢Š?üPƒÙ¸`Òo£þŸh[¿À™Â±šG3£ ¿mˆŸ($…™P¢–äZÊ®WëÉ0Öº¼B§žN/º+¹–xf†gB.ZÀÔ×{4º³‘§7Ê.Ý%œÿE`'r6á"Ea¥ã«Éñp ÃÁŒÑ³Õ3…6l‡Ð}áJW‡fZ×-Y7É3µhýNW>Ž_P>¶ŠÂò‘î2ÿ"òñï°îš•Ó%íþŠy¾_]¢ù–°ÑGüÂ{¤ùoÎwé5$ž÷‰´EAÛ&ñCÑOHÿþPK êDŒ<ó ôq‚Žhtml/ch03s02.htmlµXmoÛ6þœýЇ®)ZKŽ“v^#¹èKÒmºbI÷‚a0hé,1¡D¤ìøßïHIŽå8K:t˜ôñøÜÛsÇD¹-ä$Ê‘§“¯ÀÿDZ¹µÕÿ®Å"foUi±´ƒ‹U… ’f3‹×6tç!ɹ6hãÏŒÇÏ¿0¯.²ÂJœ£àÛrfªã󺪔¶˜ÂɈ¢’X.n…*M6Ò‘åh”13v%Ñ䈖A®q³Ä˜ðf7 %K¸Z8n=i,(yA»–¨¹Uzø;•¼Qê ~??ƒóµ.¿ßC¶‰ Wvw‹2ÅëÀYLw:¨1;¯´(3ø gp*Õ~Á9j,„÷µH±§ª®ÖFäÃþžÃÖ?'וFcÈpÆË¬æÂþÉÙ“ž"Y|!U%9mS•¹­m­ï \èøLHaW¤åëÁà f¢„÷JeáuÉåʊħS &‘I´¨ìf|.ù‚7»” {{{ ®!ã?™”±Ãþ>s‰g^2ˆcHUR»ô¤J|Š•VV%J>WÐJ†¡12`ð²Ù õr¹ Ø“c§~­a©…ÅýºD“ð ÷٣÷-8£“ø1ƒ§70ž˼EÞY$ª3\šÇ5·¬yüèð„t†ÍŠì‰Gµ;õEEQºÐ<¹BMî˜fÜÓ m»µÏ>½Œ¾ÇãƒÃÖÆ#Á”Šð*¸(?Pöï³R•x‡ØkIùzF‰@j­®q‡”u>ÒÎBàrËŠþI™ÞûÐsJ4Sé fÅLé˜-s 噳™$õ \2Æì›!ýœž2X´ëñÑp8>bÀûßO¢T, ‘ÜÊ^¾p· ¦mJL±©Ícv0>b`ê¢àz³|!2ŸAp#¯é7'¸ÒT¼¤D÷Weô)¡„q"f­œ¬õêÜoÚa9­J‰s rÄ' Õä¨l0ùH•…|Ò\KZS²ÕøbCã ȯöÞnTZd9Áj/ë+w’ÂäÎáky£Cïxj!î3Ŧ ƒ‰= ¢˜aÙžg—pÍvû'õ¾§(:†& ¹~ 3esïɆÞQdkî É• è[BøÐàå£öæß-FŸiÂaß„ܺséeôS³&pæp˜Ê³ÃÞºÇpk±¨¨_YµA°9ÝÐ^Y»zé¢×2"–ÁR\‰ SÁ¥³Ð­ÂöæéMêL»Ô¡åšx'fS«*ÖÉ'0[AŠs^K€Ç¹ªï¸Ïlr9SÆ•QèÖD µ¦ÞhåÊCn5ÜŽJИ›c sUÇP‹Y©Z7ú+NÁ¥¢®»ôÑ[ûzò4¯D{ù3–¤¥„:—¥ÀkK4I„Å¥\5þ¡jH8ÝImÞkýé Yàà]1†ûýì:ñ!¼ ú¶¡±RFв yU…3²Hb˜Òˆ"ä+Ÿ$Õ?F! ¼ÿ”Û¡h&Žs/o¼2š:º+\xs¢°ês¥²7ÅD´H{àhé% ƒç¢<†vÏ“B·¹æÕ™ÒD›1n²ªÓ¸f=­– ‘޶9 íÚá_óÐs:*ŠŒdÉ´?®¿˜oÆL”&t€ƒLÌÙd̓=6uGn“ï¦Hï⦈ö..”šÒ¬W&+—¶Ô²›<ÈYؤ̹Žo°˜Ðd² /BZP—$A_'>q—Tºnú¤¾L}àB4ÐÀ ʪDÖ)ÊÏg”ìðš»ZèBx‹e7ÁGøç+••-SýüþÃ}uy8u.¿·ÓºQÎ=O¸B#š§ˆŠÏ¬é›¼¹æÀQã!wª;A²…ßæ¼  •J–èq-¿@í{ãA0t Msþ¢aPêGC«.&»²ÄÉ­ùì)‰ÒXš.@ÍwÝâÃæþÔÔè~í^ ïÃ(¦óa8 ^߇ïÚ!ד§…ûGHØ{·Üò:t 2'íƒàRÑT˜ëÓHG~Ö3¡YÑ5×ÁVö5×Ï3¥ªSçÖ­g€/îÖ I2s’ J´!•‡ÆÄ3LxiB)È%ÍÚì®iùs¦ê©œO‘Ò4ÍÎN§GãŽGsÎŽ»ï4Jó;¦Û[¦ô‡Ï¹R~óÃÏÐõ™þ´xô¥¦Å“^7-öuÖ;t~ªnæ»Ýè¾ÈÔxñ}æ¾oÆý¯öç;ö“èÁÿ0ôA6 îz.ßIå¡{ ¹×’û?Ì?PK êDŒ<·mÌü›q html/ch03s03.html­V]oÛ6}Î~Ň,KŽíµ^byHÛ8í`¤ÅÒ¬{ héZbB“IÙñ¿ß¥$;VâtÙP2DŠ<÷ܯC37—£a†<ýåo8GÇ!s.oãß…XDìV•kYåÈ ®FsxïB¿ÿ⌋.úxõ©=üòkû˜•pC'œÄQ/è?«©ÍOÏ'kãøTHáVðú>”BÝA1ëVm†èdg‹­ f2pĤ&àÇ£Š³âsšMQ¡áN›-ªïuüVë;øëjW, oúA‡m3Èô×¶…Jð>ð>’MO5bW¹*…¯8…±ÔKøghPÅ…H°Uä'²N¯‰³‰È}nÐZ¡L¸J ž"´Î'‡ Z²Ø†²îc´nwUä>˜ÅZÌs‰s wdÀ60E¯‰ÙŒÙÈZa‰íÿ±Ý~‹©Pp¡u*Η+'bKÁN°Ý mlDî¶StË¼š¥ªØÛÛ[p)ÿÝ~ÐÖA­óÕfOD$:.<ã@ê¸däF;ky¿A½2 ­•ƒ“j‚ÆËå2`‡§~ƒ°4Âa«Phcžc‹í÷ÞÕ䬉£¯h¼––µùÚ£ Öó0åÁ­=¨¼9xäÍÁ~ïœ0ÃjDvX2Ö3/EN¡ýbx|‡†Âq“rܤèê©»>kwßtƒÁëv¯öqkKpC÷^ϹP—Ô-¦´Âg–I*Ù •Á:SàŽUο|¦™…Àeë‘?”ýs•<Ÿû°’áT'+˜¦”3m"¶Ì( TUä~Ħ’àø2ŒØOúÇ õxÐït}¼ù}4LÄbÉ­¥ºå o M“¥H\±ãNgŸ-æsnV»ä ‘–ë =Ñ•6çŠJ¼4•Ò[Lã—|Cª2ò¯ðO²¶ÚõFk‰3Jëcêé;$ùξ}¦Ž†|TÙ"à¤dVƒ¾Þ}`ömÁ¨î&fDš³ÚXƒŸÚ©£KÊ–çW1+ýËhÓaáß)!¬XŒÝ1å•E U3e¥ ä•€¬7N·ñRç•™ˆH俦Úee0+YGÙÞJ} rÏ'+ë®9nÿçeË}TPòVº xI 3’zpµ3Q©'§©O—ÈøÃÍ ¬˜ IMkW¤ª÷kSnE ÔÍ¢,IÊ–…/¾# ýÊѸUõ£—¬L' Ô¢–¹Òx Â%ŠZ‹ËÒÂWHrD²–O2,Ï §·ÙÖ{—ùFL)T$Ä¥²§•\yÝ_ùdÍ“2‚NMr‰6Ï»‚H—ÛA!&˜eëçëàm”¢u>.,>V|/ªk9–´fFk….\âÔ³7ԃ᭠¥°t*“¬²ç„ñ¿èœÝÄ"!ád“ñM0ÅAwÆÙéú›Á¹6ü!{âJSgfZ—­W–ü µf³§)ýï(;[|-MØâédt?4ön‚ßE.þÅê•jätîÅí%÷—ÿ…lÇ}nôîy/ D“jEâéåh‡RÖÚãC6ú«ö?PK êDŒ<ŠÞ¤Gmhtml/ch03s04.html­YmoÛFþœû{l“بEÙ–ÝúlI…›Úm¾\Q§/Àá`¬ÈÉxÉåq—’…¢ÿýžY’)S‰sg6Äåî¼>óÌh=Žmª¦ã˜d8ý‹p?㔬±µù€þS&‹‰÷Fg–2;x¿ÊÉAõ4ñ,=Ø!Ÿ¿A, CvòööŸƒ³³Ó¿ Ž<'nl«h:òOüWÙÌäW7¢42¢ñ°z3VIv/ RÏØ•"YOÄÍ'^`Ìp³êãÑ6ÔªùyZY›É«eTH«‹–‘ßëà;­ïÅï·7âv-ˈ_üoNüC¯mA¬Sjt'YH>{lêĻ͋$‹Äo4×J/ÅÏ4§‚²€ÄeRGT™¯ˆG]9£&yAÆ$:72‹J„Eì]ÝìwaË¢-Ê<–6ÚÄ6×…•³D%vÕ‘’!^])§ÛRNk)·9‰TÒ²Hä !ƒ¬¿ßQ”dâ­#Eâ2“je“À Ô! Ó± Š$·í} Y­ /^¼€<É¿›µ±b"öö o饨ž¹£ü6úŽY]}\Ñ K!ƒµ|O0 ï­×éO¨äñPN+-:›j¡_·„nlú8QTöV$Q Ëjeû²^&˜¾CžØ¾Ê2ç÷ÐÅí?#| ì2 ‹&eÝd9Za|UËõŸø¸óIcF†!Šdq.fÚÆ.˜“¸D` fõ%(>nìjÿÍ]aWb°‘B1×…He¶6„‹?)樊‘d*C¼9w˜Ï;Žè¢P%†ó¬U]ÓGŽ^Y×¥ ,7†P¢´h¡˜±:‚˜Ù<<ƒXHãTBc^Z!­-’Yiɉâ*Ðm Œ”ËîÆwÆ Y϶®„‚2¬”Ôt`K€d­gÌ¥Ù8ÁŸ½)«¾ tNË+Ómño³…¾géPëЮnz3’Ùc{~&£Õ‚ߣßVFl,0VZ •Ì$®¦etƬŠChœïÌ9.ëmC­º)ý» ┹”p„YŠá”$TjU£¼ òvdJ8À¶-I)¿'ÛŒéãÏÄô¨‹é~,¦Âo«ˆÝ*Ð;ÚÞïcø($~gÒÔÞÙ¥®Î =´–g€†õTÂ^õº5úL·N>åÖ€RU¾ÝZ$Q¡à¥¶epòä#N²—bžÆV0H¹#£û¦:;pžv=àŠæ¢2¾1Óyc(¥yŒXq¼)n™2b û§~¥ü–Ú#G;\ÁË:Þ,¢ˆ×ÅÌà™&Ö¥ E¦-êB`TšiYI%)£Ü ÓÝS_~ùÇŸuù ÐRφ/Öj;¯±dš+:w+.½0»9ΉÀÌQ€8æ‹WÊ^tB#goê@ˆíMkJÂÖVèÜæÉöf–…@—,‚øM]Ý>Ïš-¡4yàZ†8ÅE<9unNDÞˆk1ÕEê¾ Þ›Zä•d‘ëeQ1€J‹l7 +I;òܪù ¦žŸúÈ7“=ü“ðS¤OE¡ ï ¢Xï“„ ¾üAwS훪vÜU€¢?ý÷ åÿè&ö1ØüÍ™šDMÑóiG¯hï².¨ªû{ädÒÖ-¨˜¾*v®m8»ÆÁc•ÐÐK}é²÷¥+]Š¡5D5Û¡(@&#ŽAÇÂÍ–è\!— ²›¯Glf7›,êß¹}ë;±ßÿq#LC®£6ÉÓÀk9P¢ì2Ÿà­/@.¸;öµþêROÍfÞmÆú¶êFëüšé{ë–Ê5ú IaÏ{0¹Øá’f†;Øðƒ²Õ”ùº7í˜Ϲô¹Só» ÅDx7×w'g3:;žKï¢yWhFî¸|yäJ÷nd®µ»4p_ÖŸx?²>Ó½à8yÆ ŽÞˉ患+¶||e:ý%ß\Iôø,Ÿð¿;ìºqý_ýŽ{?ꔞæz׸ʈ_çî †|Ç·yüOÿPK êDŒ<ÞKnéY x-html/ch03s05.htmlíZëS9ÿÌýº¹J0µxL€ÍrÁöV°ÉÉQ²÷’gÚ3"šÑœ¤±ñþõÛÒ<ü'e³‘óVÄbÝ¿\$à/{9nõÀŒ?&^H¥=úpñ¯þÑÑÿì¿p,»¡fšÃøÀýÑ}OTr|‘€Ç(''gdF%£j8Ȩ†œÅ_‰>r”^`G J˜ŽO©Á²ÕÅW‡h”'ü3Écak1Hª…¬üNxo„øJþ}qF.J^Š|yáþtèî9U BA17‹}¸uÍJqN#êȹH$‹òLÈ)sò¦ !ö€ü’2j¬Ò¤\D¸wPçsëåä6‘ 19£qÒHïäl§ÆIfUVjï°Éí°àwFR…LjãcÔT}üËæø—…<‘Q@¥š…RÉt!ÿ÷ûo `1ùEˆ€yS¾ÐÌS¨iúýñPy’%ºjŸ:£Y+ckk Oú«z/”&#Òë9pê•CF#â /Ðb.Õ¨7‘B Oðò3É)¥¸ëWY¾Ïçs×Ù96ìKszi Ê£ ôœgosá”ôFÛùa)ÆÄ ìŠú´X‘ë‰hP÷Fmg«Ùn¬fûÙÁ òdoøâìX †y˺ºHÐV—’z_A¢:®ªÝëtÞÔs®^÷÷Ú?::zÙ?È×Xâ^£ó½eñ'DωE +È^sÄëbÙj™B•6çØ2c0ï5ÖƒÖ?‰ýÕ¶ØX2œA&ÚLÈ‘3Ñ 3\þÈ™pdïƒË‘ó=ü;=uÈ,?:ÜÛ;:tqµþñÐg3âqª™ÎÌ, ±Y›BæÌ×áÈy±·÷Ì!*"*#ç±À"ˆ,é%þ‡(.W óvªŸ<Œ!¹7Z…¸JËÆüûÅÜûf꜇)wH õG§è8›ûV¾œéË Ó¥|wÇŒLÂnÁ$ B”,Ÿ¬&_ÜÆŸÐfF¾L2»îÕ9f óŒf©ÙF§_ uQ¢‘qÝp6Î$Y\*"ŸýZ?Ðg„cüyE&B‡V™YdÞ/Í(Ú} ÷ 9«¿‰u¾Ëã6¡Ò»f NX”pæ1½ä@"%]`-¢üTŠõ«18J¦èRnÎMAe áë3å¥JO(bTd¢šõ«¤¥½ý?©½ƒºö:5Õ7"Ú ž©¬|Eí¬ÖÎÖ.gh\»˜Ã<;Õá¦aL´ Ø˵QêÀªeËæHesJ`2.å6´£Næ!”c”¦ÒtbxñAi)!#ØW.!¿¡æm£SšrMòÚeùg¬&X÷ßE¦ "&7¨^Ô?–™9¦K¹bÀ&\ÆÈ ìœý^Êo­„ÎV(ÓQ ięҘ1Š?çúxhâIAò¾¦Ø3ÊS\(ÆOì“&ÕZ²IŠÁq ¥;çÄ£&±á…„N––QÊóÀbyò^hà½Ðü~ðwœ5féPo÷ÍTÚÙµ¼Kƃç>Î5#aEø.86)©‚ãòu3W†·ql:8þbšîÂñŠ9úm]NbãøJœ[R·L«Ö¤™áOž*-¦…‡¨ =)WM°Ëé»XUy|#æ¾K˜šd‰ß N”K}¿W]½»\lF²ótLŽÆ“5‹›†o2xÆ iocašâo¬Y–Ô;8œK{,¡üéÛºÈIžœ!¯üм´K*ºpî—¯¤ë<0Ì¥z¸Š²ªÚ~ž̓I½m3t5ytd©¬ËÖ9¸K— föc*ÖMÖJæ%«oÁKm–3Å]§¾!)‘­¶ÒŒuA•ÕÍ2~ì”ñW:£¾ð”,Âú'ÃÇèÉV]9˜¾`é›úî,{‚^Þ³KêÖx ñ ×&RéÁ›4öyyäTmÛ´@ªóhã.×)(ŸäŽ7ƒòCoyëÊY5Ë£×ε`dBÀçZûæ_åš|º²^ÇÐîa¯Ï?ìâþ•y¡ÙšãLã°ÅÞ±Y&凑–Q=0!ŸucÎó˜MÌOŠ¸Û²G³gs‹´9­i“Ó;o`ûaç¯f—+É;l‚­`Ë¥ËyÚF_娅«Ï²³Š¦N—y{ùíì1t†Ò‚Œ)¯Á¸Ñ¸™ÆZL:–íÆ!ž1)bs¸T-_R,9—gFËÇ}µËI÷Ôhßý• ˜ú±‘J,Þtþe°¡b7WÕGš¸FuçRLÿNõúª‡+2dö[^<"9E›ÿÌݺâVGš)Ò¸1èÁ&çìôúðhGûSê})tÅ}¶ÖRê×ͦBØ»WöÎÓšWÎÊ1õ{b‡xO¬óŽWqO¬Î6m_B_%Ë›]Ý>È}±{ÖOfù›‰¹ÝּúéŠÃŽû»ã÷ÂT©ë,º.V&Äd;îÉå¾c®Dšû‘æÆõPK êDŒ<Ÿ1%þs§html/ch03s06.html­WmoÛ6þÜþ ŽC$'qZ/‘4ôÅi3x]Ñ´ë¾´t–ÔФFRvüïw¤$ÛrÔÛjÀ†Hž>÷~s3ãq˜KãÇÄ}ÂFrcJþ®ŠyD_Ka@ïÓ²J’zQw&°ï_$gJƒ‰®®ÿð†Ã³_¼cêàBSñ©ÿÜ*&º¼¸Nd DSI^ˆŒ0žIU˜|µhÈ qKðˆj³ä sCI®`ÑDë`½ëã’ƒ¤.v×ô›án3Rm°~#“WRÞ’¿®Çäz…¥ÉŸÇþ‹ß§› r9ƒöîB¤pç[uñNK5¢×¥²:| ¹ärA>ˆÈÛªH¡U•+%òþiç´1Îè®T u!3‘U,Ò;@(2ß„Òý³m´³ÖØ%$ãd4&s¦ 6Ae;X­¶5è ˜€ª;Mç,,ÂOž÷ ²B·RfÈKÁøÒ‰F3§àyq¨U”fÓ9_ٜջ=BF$c¿éwR‘^ÚÓç”DIeRÍÐ]>— 3h¿TÒÈDòCò+i$ƒ@kîSr^oàz±Xøôð¯^Ы脕УON_7ä´J¢Jž­i<#4sy¬ÕÈOä,ȘÿUÔÚlisðät„˜A½Â=t Âfg_[”èíOŠ%· Ð73þM¦ÙêÑÏ/½“'Ãáð¹wÚè¸ñŠƒé÷FÎX!Þcè÷¨î{É1XÇkT;¤Œ}ø€;Öã½-}Ðû#‘ÞïûÀU“p"Ó%™dè3©"ºÈÑ Z¨~D'á)±ÑŸûø¹¼¤dÞ¬‡ƒ~8 X:çq˜s’p¦5F.›Û[@á¶±MEjòˆ÷ûO(ÑÕlÆÔ2¢ïÙ¼È\‘µ¼ÂoŽt¹.™À„qWeø”`ÀX‘ýêUŽª:,ûM['öþÃ=2Â’ûQ¹3yã˜ÖaÀâúZNÉôùèšäÃU£f¸›˜*²™5—uø‰o Bü½fÉÕ´œÒ³:vûŒŽéxGCbŽÑ¿H'¢ º®sÕÅF[½Ýüä'st¡­ÍÈ‚£íÏÉDšÜY².ìÀ=m=ã­<ƒ‡Hp/Çå'-åÍßÒeâ—Ah%÷Öªp¬v˜RDN‰ÉLm½wôÖÒºîÛ7LÎL}@ 'ØA¤¾Å¾”ŠÀ›•Î]B•x«‚Vo¬p™b3^hãôyü”›‹Ð†h+‘sÏ0<ÁÆlă˜lŸ3cT1©0Õbk©F,Ú›3^¡µü@g,?—øUJ÷Àvïï þ¡V€!«ýb/p[(¿‡Í%š¨Å žf¦.QhÎŽ'uÖ^6áý CwûÖ®”¥­"ŒÿXW‚UˆØÃ,°Êóï Da–¿c˰˜—hy$Ò›àÔƒl6ÛÕ”¹ÖZÛbZ@z„ÕúÖÍZ¥ÒÎp¡-ù-ûLãæ–0°Ë˜°‰œÃš]ß—Xž8' €Ö”Ë&W>á%["ÜNmxVG˜ƒLçGn(9r ‰÷`_ÂIoŽ*×E¿¾vŠî²´[ßûšVI¾e+‘Z¤]Újw!òè.­¦­&Wr!ü6*êⲘÆR–—Öz[ƒ’EÚ)-§(ã 0Á& ©°u_u`C N#ô¾yâßÌ7|z“)Ît|y3N`x2eô¢=S0“ŠÝÓÿ¿Q¥Ûž§Rº6å:Äž-zõN·¥~`KÝÙÛ–Ú…­¾ØãÏåºî&øÿ[ëw”Çh­WF–v xhÚÿ¯ªç;þõÄï¤m(ûhߥX“¸çßÄŽ‘¢éÊv~´Ã¤ýƒúPK ëDŒ<×µ¿5) html/ch04.html­VmoÛ6þœýЇ, IŽã¥^"iH›¦ídE“½| hê,)¡I¤íúßï(ÉŽ•Ú]†E€ñHÞ=÷öqá¦2 äYúÔOÞüŒF?ý±Z]ìJ'1†?ª±­Î>£ÊД*‡y‰ GÍt,Kõe¬[J´¢cPœ$LX=JC2p¤µïÇiYñ)IsTh¸Ófé…o´~€¿n®àf­ËÂGáëaØg› =Å•í’à~ ½‹dÓCMØMUãÿÇp)õ>ã *ð~VfØQ5«^HQep¾ŽGÑ?¶ý“®²ãð¤ ñЂEnDáõs™kSºbÚQ¨(t ‡¶?è*†ƒVáNJµJXÇúˆo0/¼×:—çŠË¥+…¥¨gil…)+·™«{>甪coooÎ äüWûA[ ôzÌW=e$i1›RöB©w¥Vae´ÓBËCøÚ•Qd­ œ6/‹žyõk öf ­àöØþñÛœ5"9`ðêÆ+`yíQÀW…BO£œ‡÷ö ñæà‰7ûÇïHgÔŒhÀkq+yn,*žã­áâ …ã.ç.¼Ëѵ¢ûý<¼ŒF£“à¸õqcKxGx¡§¼T×Ô =¦´ÂËÎ%•Ü•©uf†[V9ÿó‰$>ï½'þPöß©lwPâ±Î–0Î)gÚ$lQP¨ÂÈý„%©gàK2a?ôé¹¼d0oÇ£a¿?2ªÞÎ|gå„äÖR ó¹·‚†ÄŽ Ç¢Ì\‘°£~ŸM§Ü,vÍçe^W<®7ôWÚŠ+êŸÚTN‚ Æ/ÙMY¹Wï÷o¶2:ð6['”Õ˜­}@BQmíßôuvñ´1FгX«ôdCé Øze±Ë¼)ó­vP¨­MŸ^SJ<ŠÆ~í]T‡”NÿOQè¾ò`@r•' U735‡øbjÄí§tæë5”]G–Æ„`gØ‹Á ÇæwèEáŽþ"¨ÏrO}žÂX»â)Ê TÎèl&|=­ µ ?nÌíB\ÕÝ~[”Ú(‚-ôÂÂRÏ€~Ài˜YW ľÖ1×þPð ‚š„ãÈKR@‰žäü>S­‰†£8L¨Õú{«.”5…_i]]z£O¨Û³ãŠW%­™ÐšP¡‹86(´!kѽdiéœ%~d»î¿0áœÜ‰2#dW—wÃÑGƒ gg«9ƒSmøFúÊ•.aL´®›¨.ëg’ÆzO·á‡/Øð[Ûø«†Ïv™‘†ÿï`ÞŽœ®XúŒûÆóì".¶Ü™Òt){Äû­(tq6 ¾}™ÙBzm—øãËŸeþŠüPK êDŒa†‘ҘƃZ>è[Y¨÷eÙ%i·Š¨ØóG$-™Ò`¢z³Ù¯¿y{Ô© 7â©¿ï?«Ý@Îk^dÎaA´attR¡àõ5Q "ªÍR€. %¥‚<¢©ÖÁí®KJ âéaØuÜ!¯Y…»Ô ˜‘j ð‰L¥¼&_œ‘‹A—&íù¯§þ„®#(e+Û¼ÎàÆ·ž¢M 5¢²^|ƒ„œ ¹ Ÿ!u ä}Ë3©j›Á‰r2ë™öqù hC­£Gçóÿ§¡Æ­kГƒ»Jz5 ¤<_)BgjÃsʪüÙóŽ¡à5y/e!€¼©™Xžj rž‡:U¼1멹bsÖí"'ž?²ê Å ì¶5è”5°KŸ¼íÁi•F;”¼¸…ñ‚ÐÂy䱕G~*« `þ•Þé¼Ù¹ãÍÎÓƒw¨3èV¸ Ï‚°ßyl,VÀÅÒkPŽË‚ÿ²ÓoíÒ¯o¼ý×û³Ùì•wÐû¸vĿĺ;‘ãõ9—Ö²†-boRõ Yjjaƒ”±ŸpÇ&÷Ž?˜ýwu¶=÷k#a"³%I Ì™T]”˜$ºÑD zJ,3#úË?§§”Ìûõl:™Ì¦”°ñû8Ìøœ¤‚iTfskn– ŽÏLѽÉä)%º­*¦–=gs^8‘[y…ßá ݰ:¢ÎTO)ÆŠ<بJôÒ©±ßle{ßšîU È1¹!#,MAëk@0@ü «: XÜ™C­™×k|µ¦ñÜÆJïPm£xQ"šÞÆS½±!Äç˜' «ä| \œñ’°Ï˜ŠQ>4¤f3Êê"¢P“庋åW·Ýÿ”û£÷˜4Û‹ˆ¦I"MéØ5r룇-|nû´ÝCy*÷WP×Ws_5S -mWHì3-§# ìNL@€m&ÄH’YK@†ÈÜ)Émó7%3ØhmV4¾wHÊ‚q¼]r©p³ÕXÞ0ïu)@¢Â¡«®©¶»B±JpmÐ+ìÏ„9 -_W¥ð +Æ`íû˜ÜcÆ(ž´X~1Ïz¡è®Ðœ‰¨#™½Ñì Þ£\hÚŸyV˜#7lÅ‚m£ÖÜæçX¡­Xt›TÜÐGè2ò!]ʵ²Þ±Aeà|ÚêOp/¸NÞ¥KÁŠIÇKrKÌ—}æ»S¤b&6ý<³ ïYa j„}W¨¥OÆÖTK²(q~¸¥×ÄÝ€ùÖÒ)rn†—N¨3Â9GS¶È{þYs¶ŠÐ¡oç§A) $]<‚ Y÷ol'è ÀçkTG@äÈìßÊ•ï3¼ª¯!þP ]h¡–›s{-Tï®Ô´.]ÊÅÐ]ÉaïÀ `yÉVa«Ã›æ„=›IÚ:á“æ­À/8ö\<ÃUçŸ+rGä¡8×úYg2¹B ÷ºsÈ«ÂM”WhLVŸçÑà¥Çpj*ü)¸:Xñ ÑŒ&N*}“kb7W~ZuPî·´a ;“²9Å&swsˆú)I LŽ2~ &X@‚• I\éÀ6¨qÚ¡Ûæ•ï™k.E~™"ó#BÏN/§³fû9£G«w *©Ø–ùâž+ãë?—² ¸½9 gÆ÷öôGÝÛ/ß#í_›Û+w3ºr‘?à<™÷+#›­ÓÆu»Üðg*þ€²çù[âQZ6Ì1}ýØ1Õάöð¿PK êDŒ<Ó’4ªÕhtml/ch04s03.htmlåXmoÛ6þœý ŽC$ÇöZ/‘4¤MÓvȲ¢é˾”t–ØÐ¢FÒvüïw¤$ÛrœÎÝ:`@ 8©ÓÃçîO 3qXËâïˆû„S0ŒÆTü9ãóˆ>—¥Òxï–P’Ö£ˆ¸5}þ„¤SLôúêwo<þégïˆ:¸Ðp# ùCÿa™èê䪂”O–¼ÌÉœÃ‚ð ¡ø„ƒÒaP‡‚—7Dˆ¨6Kº0” &MµÖ³>)1H«acÇqí@ɦ8›C Š©6xŸÉô™”7ä« rµÂÒäÑÿtä÷é&ƒBN¡]›—ÜúÖa\ÓRèU¥¬+!!çB.È[˜€‚2òr†®u fÕʉ¢?ê⌚ð¼\CµÑÑç+óMÝlƒ ˜3˜ðrcm˜.V‰ÁêbÝ!ÔRúà RYYo¾÷¼gó’¼”2@NK&–†§£›çÅ¡N¯ÌfN>±9«gQs¦HÎ~Õ¯¤6$"½µZÓÇ”DÉd:›b–|!Sf¸,ýJI#S)‘_HcZ Ÿ’ãzNjŧN,ü a¡¸Þ¬² zôÁðyCN«4:¤äñšÆcBsç‘ÇZüTNƒœùŸôaíÍá–7‡†/3¨G8 ƒ°™Ù7Ëábé ( ÇuÎŒƒi¦zôý©7x:ÇO¼aããÆ#þ5î»39e¼¼DÅ÷h)K¸ÇìT F/PkÔ vX{ñg¬rz[þ`ö_”Ùý¹\ ™-I’cΤŠè¢À4 ®Ðýˆ&á)±BŒè}üœŸS2oÆãQ¿?Qº÷ã0ãs’ ¦5*—Íí* pÚ°y,xfŠˆõû(ѳ锩eD/ÙœçNAdm¯ð[ ]¡+VFtè–Êñ*EÁX“} UÎ:4ûÍZ Ë A0Á‡Œ°4­o9U;·oü7v°¸^3G³}²º¦¹³\ÔÄvóQ[Ž‘ˆ¦ŽI"MábX×r룷•à)·±En{æ«´|7ÿVn ¾×@L$´*néØk[ 0°×1aÆ(žÌ K¢ëÅÜs<#râ®ÜºxW¹¬–©XúnUw¢5øÂh »Ñº'2Þw9Vyÿê0¹³©jãcã2¼?.)™2ÜÑ@ؤb(QtÖY(Ðr¦ðÔÓÁFÂ28Ôd!ÕMHÆz+ÕòØ»HàaÖ:ƒ>Wl*¸6hŒuñ¡0'¡Ý¡­E!<Ãò:ž;Ͱ&áý˜l›­²Dcž5FѶќ‰P·™l'€ËžaËÀ…¦{תøÉ ÊþŸHE¦RÙ­‹—Óú¦í£¤;ÞÚGlçe·<Z¤ç§}ux[gHµç(b*¦±ûLÍL¿JÓ¦’VoRVç3< ·Þ.lß¶þm&hã—`¬2XZ¤Âó7ø¤›i(±…§÷5á_Ò¬_‹ÉuŠªŒ½8¿&Œž´÷`ÔØ=MóWº=íë¢ëQmkµg_»z¦Û…޾bº³•l»Ð.ììîÛmü¾Z7» ~•¶ôoü'ófdde{çϽ%ÿSï‹?į° î€.ŚĮWð½x³qìK—}³?çüPK êDŒ<gð5Mhtml/ch04s04.htmlÕYÛrÛ6}v¿E'±<‰(ß’¨±¨Ö¹8iÇM2±“öÍ‘+6 °(Yß@J¢LÙÊ­i5cEÄe÷ìîÁ.¸¤&φƒX<ü¸Ï ÃHjLÑ…¿K> és) Ó=Ÿ@IäŸBjàÚôìþ#¥Li0áogo»ýþ£Ÿ»{Ô‰n2‡Á}1ÒÅÑGS¢#YÀ ççWDARmfèÀP’*‡4Òº· ð‘ƒ(*åöyèñ –ãh3R-Á|!£gR^‘¿ÎNÉÙ\–&÷‚'‡Á.]FÊjÝ\ÄpXûP§…Ò³Bq‘?aDN29%ïa DäUÉchˆ*‹¹éîaSNí÷€:œÈ úE7ö &ËôîÁªƒJÌYÏj9¡ÃÇTS¤@Ÿ5E>Zù¨ùò¢ÒX‰Êa$,2\ +ïÇn÷$\WR&cÁ²™á‘F—ÇÐí:R¼0˺dæG‘[[[¦HÂ~ׯ¥6$$µ|ÓO) C˨ÌÑ‚ “³ZƒBI##™í_Hµ²×Ó: (yêðy:tçÈŠŸK˜*n S Ð+ Cï<¯Ài…Û”ö=—J#ÏÈ(Á˜IÒiŠa@–¡ù!e(žKËþ´‹Ÿ“J&Õsÿpw·H kÎ1Ÿ(cZ#ÙÄj…ÆÇ”Ç& éÞîî=Jt™çLÍBú†MxâDëþ¥7Ó!=pªü!aì’5É*EÛÜfû×÷­ÂJ@c é€áY‰@ë+@Eë¾ÃÃ=象׃‚c‡ªúxIèUkÊðÀÚñ(ž¤¨ÒÑ€%ZÓÀð ÈÂò€œ¹=ç`¬ö7Æ  ‘ÙÃP2‘„D3J.§Xbùáê+ÝoÌc´lJF 0õ”Œ¤I}>·6v]pµÇ&ݯ±-ît/Ã0è—R@T€û–µ5û›íê3/Ö É4A¸!.:°2ÏS®½n’3¤9`’¬ „I19š–5IP †…àqçÖ¥—0ÌC©,³OÃÈX*·/.•g­»g'bU3þ(5ŒËÌmË™àE™1—²å裉œØÄM4òÕ¡0…4ÎŒ•̽ht³Ãùç±^’ãKv=_Üð`ŒÃJÎ4zD“¹¯Nºæ~× WÜ`Êþ'2å É”6VtÑ›žÇ>´ó8w3Òã`==¶>hpŽh£S5 KlcÀ yÔÔáÜ´uʯìÌØ^ ꙇ„‰Y›ì_K#§\A\«˜SÉiUà|ŽöDÈÙNj¼ÔXvYG×Üòİ“Xí|°œßñêPkÃÊ™(–g\[×`Á¹Ÿ™£M}õŠ4ë¢u•µvbHVç™1ŠJLáC€jY¸ºl²—`¬™ŠÒç¶ô¢èRÝà]b±ù ¿qz†¿XQ©4éà¬]cï~bŽ*¯(X“¿¾+—%ËLwî-1ÙÒ‰©òùô”¢ëïf+$­ò ›«ð§}êa9¾dÓ&XÉ ÓO¿ŒFK¨\\ìkÅÚ`Œ<Þ€'p˜Ð<)î"Ëoüˆô Ô„GŒñ2ÿÚq¥ÓdçÎ&ôô»Kå<¶+Wh¸Öþ^«Ë¾k1õ{ÊþÑVM°¨M–‹îm´}Û¶Çå5_eæå SÚ§T)ŸiÏS[+íEÖâƒk–Èrk´-ªJ–IêÚ@Wl×Är7 óýöÑÕÐ"v(šH«³Ì °±ñšõLD¨AÈR˜à€¤LÄž’Ë_ÂÞ¨TÊΡhæp=´Ã¢¶ ÿ­"îü[ù&ܱb‰{…ù¬>/ÝðœÇ›¥ö÷#Ýøˆ¯M ÿƒÄ0ǹø|ëTq«WÚÓÅ­[ð…Nhn޹͂»]èÚß?’Íx•}iíì´xóVt oÞ†­>“w^UÇä¤ÚÕ„µÌ§;~#|ÿzÄm/ŠcÊûïE½Fö¿ŒügÅ}ýú¹¾õ"á¿çM¼S)‹|‘\mÞÙþXÝYËpÍ×à3½)ŒDR¡ãz—ºgkˆà²Ù˜]îq}J/ì"_D<&!¡§'‡ýô÷ÇŒÕs r©ØšžÔ Sš-£±”®“âZ¶æ{š]ŸÃ¯ØõimÝÔ]Ÿ¦ØòfGyø¡X4lÚ~•6Ðö㻆2²°½ª :ÓŸë„´¥??|-íké&~h"õ în{·4ĪÓd¶ëiÿåPK êDŒxÐþd«ËvÂ+A{W ¹n¬çZ7g-&æ†ê{ÖªÛI”™¡L¬À%K( pmPEòÕ&>Š °kчúÎéO—rvÉE‰}‰žŸ]N¦LgŒž¬Ö `ö³úÄ=S†e|¦u¨g¡ <²”¯÷ kïä;ÖÞ­tU{‡°íýë\þ¹¹-›Û ~—bü ûÉ¢9ÝøŽqÿZøm®·Ü…ówxG~œÙCb‰»sné?}÷· åð]þPK êDŒ<f ò^-html/ch04s06.html­XmSÜ6þL…ªN™pö—p…óuÈ I:4ÉÒö#Ûk[ K®$ßqÿ¾+Ù¾;_Ž@;aÆ’W»Ïî>»Z3)l)¦“X:ý‰øŸI –‘ÂÚjÿÔ|Ñ×JZvpµ¨€’¤YEÔ ÝùS’L°Ñ‡ËOƒñøÅ¯ƒêÕM,·¦£àeðTƦ:}ÅeÊeN¬"Œ”*1 ™‰àò–h5v!À–’BCÑĘpµà’‹hZn=mpKVân4³J¯Á}£’WJÝ’¿//ÈåR—!Ç£`Hת„Î6"†»Àù‰6Ôˆ^VÚ9ñÄä\¨9ùh w5O¡§ª®–NÃQ_ϨÊ@^åŒÃÜôÎWfëÌðŦ’­š·wÔÖ©Ñ^!a‰åJöõI X_ßñ¦¾ãVßgЙҥÏÛ…rÚ JÔøó`ð r.É;¥räL2±°<1(–Â`0˜DóÊ®çé†ÍX³‹ôØÙÙ™1Mrö»y¯Œ%ÙÛ£Žvæ„’("©Jê3•0çGPieU¢Ä3òi%ÃÐPrÒlàz>ŸôÙ©S¿Ô0×ÜÂ^-Á$¬‚=úäèu Îè$Ú¥äù ÆsBsïÑ€u‰*Ü7f·ñfwÛÝ'GoQgجpAŸy“vç±±¨XWš%·˜»ˆ\çÌ×9Øvk~=ŽÇã—ƒ£Öǵ#Á5–àU2.?bìQ©$Ü#v&·H Tku [¤¬{øŒ;Ž“{þ`ößÊôþ܇¾£Lb•.HœcΔŽè¼À4 ÏÐýˆÆÕSâˆÑ_†øs~Nɬ]GÃáxD 뿟NR>#‰`Æ “ÙÌYۖňcÎS[Dô`8|B‰©Ë’éED?²Ï=ƒÈJ^ãop…©˜Œè‘7•ãS‚„q"ô¬}ôJÜoÚY>t†[E2Lí„a&`Ì- ”jk%O?cOB6mì¡âÔ£k•¾\SºB·µs4À¶ãÑw-Ó$ª‚¯¶Ä<Ã4_:©.êJos\ó伬 áÙÂSñÁZÃhä9è&ù+zu¤%ó¹ÊšRä­%*Ijm–Xë6Jcñ@ꀭB‰öæ=ð£ ÕŸ.ïV5ݤ«—€O²1Pá,ã µïŠUcàªÚŸ ä7-V5Ö–Q¯ ï*Ж7Åèê(ðÈBg´1ü‡—_%Ú<Ë4†}Â3žbíFqW[kÕìÛÄÚZ¨œ'ØG„pIçr¦n!]³*Ño‚ç‘—ß6žMWh‡glQÞB‚ôñ¢‹}S­8HÃá}Ò ")k£pdž€rÈ,G¶¬ÆÆ×4¬lC>sU²¿j£Ø*5 šþ>ÆÌqÁ ødà^˜¼iá\H¹5ËÕx¸O/”ªÎñØæXê&¿nf(“¡L Á†sˆ5$ž@á …@âìGï›ÞþË”w-²ë„§8ÝÑ‹óëÑ8†ñaÆèi÷NC©4»gÚúÆ•þ0”)åg9?r ZžéÏ1£8ÇlFº9¦¯¶þöSiúµZ ÛþÁæÿ}¹•U•›¾úäú¿(¶|uNßã×èã‚ЇـxÌ÷Ü– ¯™ÜïÆy÷o‚PK êDŒ<ÇÁðÑ_ ñhtml/ch04s07.htmlµYmsÛ¸þìü ”7iä9‹rl7ÑÅ’ZçÅwé¤q&vš~ó€äJ„M<”¬éÜï.R¤L%NšóŒ%¾‹gwŸ],V“ÔäÙl’Of˜ý›ä`8K)‡ð{%–Óà•, fxµ.!`±»›î̈柲8åJƒ™¾½¼ŽÇûeø4°â&F˜ f'áóð¯E¤ËÓ æRå¢X0ƒÒHØ”²˜ŒÜØI&Š[¦ ›Ú¬3Ð)€ Xª`> b­G›§!ÞVŽC÷3‡¿à9>]@Š©Z°_Ëø¥”·ì?—ïØe#K³? ŸŸ„‡AA*s¨×Ew!é‹kÔipY*Òä3Dì<“+öæ  ˆýZ‰:¢ª²Q"=<éÊ9ñÖù¸†¹°Òù¥‚e[‚>|¶-ä™ó¡Z KÆY.È:’ 4UWÒx[ÒØKº¬J\Wk’9©(ê/ÃáKXˆ‚ý*å"vVðlmD¬ÑÈ ‡³‰Ž•(MÛ57|ÉÝSdÆÞÞÞ’+¶àÿÔ¿ImØ” 1N¿ØtÊW9:+ÌdÌ ’#,•42–Ù>û;ó#G#­³0`/ܼ_­Va°Jâ +% ªtÌK_ypZÅÓ'ûyãg,¬FC^kÆ2-xx£Ÿ8mžlióäññ”9rwxì[ÿä¡¶(ù®oA¡9®Ü„× 0þÑ øt6i»j¦%Kù,z‰L ^T¬†BÏ…brUÔf i„®BÃæ¢@ù£€“%ŽS¸{Z¡É=]C›ŒÊ{¬;úFÖwY·aXƒt(ò2sÜz‹W@û 9šoÐ ŸŽwóiïJ2QÏdkY9S4³ZoIÙ ¥Ð]3©¡¶UÆ\!º•T·¡'\è†Ó†W+ù™¯[ðHÊ y‡7sƒuÞÞ™óF!hážE/ -x%/¢4l-$âÚCŸk ’t‰®²~Ó¤Œ˜¯ÓkÅ\òµzÄS´na™”›&\æJæhi≇Ê5ú8˜–>•!c—´üšaîÂÜèDÙåzØ&ªeV’aÙ˜ÊD¿ ,–`XùÔvA=hÿ YmK GÚ;ê·i6ÄоI‚*ˆÜ0qÈŒíÉ#Mû¬©z5Œ7ûÀë«í×{e±»a¯÷w‹6©’´8Áoîb(É §þ Ü_ÜÅÀë!í×w€Dó{(h"©‡¥[†òÚ¯éªSYeI—O›¬2¹°´’žh›Š\&ê]±£âöR‰Ë踑#£]¨9ùdë©ø¢•áŽSˆÐÜ•n§Öíp·©ÿ/¬ìë³\V¾G”èýJP]S):‚¬Ý6óÓ¹Š2•öQ—Wr éÎÉ.LïM÷<úï#{|Àþ¥û(…ùÓí.Aº*)aZ9ƒîüðAzc™Œòÿ°pÿqáóË—±oÇÜ·§€¯ë¥ÀTª¨WØRÌräb>p+ü ¾’ ¸[Üàî ÏÝû~æé7ªéä… ŒZ³?z“ËG{αÁ‹‡Q%2Ó.Xð¤ûC¶ç:_”¸Ka=b7M¬÷02}>дUnrAwÕ›œÒ[xÿ %«ä”]Þ•B}m÷í•P¡ =uÃÖlȼX×õðýâï ³§§C°vX ¬…|ýª9\ºµ›¶ë„¾õx’tÄÈA³1¸’"Ü󬣲ù ‚ ƒæjKÒvmmËx –öî!©8j<"0+ªÕ¨Æñ•v}໫¿¶z‡uÕwõå…ÝÈé°à°<@ãfˆæ<ÃÏ*Û§ ZI£ÛÝ©ªäBÚç>¸lÄUe)•Ý8ñLã úxÔ¤ +#²E9Èh>ÉaZд×óŒ%bn;†­øZßÛúßp²wƒºß”\¸Ã*6ZS][ˆß«^k5š¾Mj,®PÀtQÑá;xî§S,Ÿ‹E壴s¢u>²gÝBn,ÈDBpZ‚àëùSÃÚóóv0¯áY ®‘Hž‘Qˆ IoQt/iIq¹Ó^E¬# %¦t"·DϤ¼­ÊÖ)‘CŒgVdE+lÊ@Ò:rP-UH\E…5ev-câ.½­$ÒÁØw&íìKð4çµ×¨yÕj©ü¢}Ï÷'Ú]̬> µÛuÿuó¨…Qéº —¸Í•”†%|Ò•ø]w;ýa«`XTzÕ- («ú̉~í±w÷´f‰UGžš*çÿv»ŒWÒ «eˆá Ó¤?_R_À;ËšÅOegÞna%ôvÿ… ÈÚ¤­]Î}6MçwR–ç”W¶šÍÔÏ­;ÁH‰rŽcBÌQ£D b¬@nôˆª^(›îOížì·ôn¯³ùuŒ¡3eÁ»óë“qã£9Nëw P=¾£‡zO•n‹s.¥íôÙVÛۜ͜nWòäv%{[‹uW²+¶ºÿ›ÇìS¹i(öü!mʯèOÇ#{gdI½ÔÝ¿|¯îiÏG³ßdS¿ Ðøâ3=-Z?ÔŠ§¾<ýÔ÷?PK êDŒ<*ùehtml/ch04s08.htmlÅWmoÛ6þÜý ŽCƒ$'ñ7‘4ô-토+švÛ·€¦Î’ŠÔHÊŽÿýŽ”äX®½xCp"RÇçž{§ãÂV" `YúñŸ¸ËHamÀ_M¹Hè+%-H|ZÕ@ oW µpg#wþ‚ð‚i6ùåú·`:ýéypL=\lK+ „Óð‰œ™ú⺩k Æ”2'³Rfø?ŽZ¡X”ò–h 5v%À–’BÃ<¡Ü˜è~7Ä%%ét,Ü:m‰KVán4³Joð}­øK¥nÉŸ×WäzeÈïÇáÙ$ÓM…ª ×4á.t†¢NG5¡×µvü3r)Ô’|„9hÈÛ¦Ì`ÕÔk#Šñdˆ3éÜòP‡‡\”°4ƒóè¯Å&‚Ÿmƒœu0@Ï•®ŽsŽ3}Ú”J%ºlˆø|ñy¯x9_m„˸«EÉQr…¨ßÁKÈKIÞ*• /$+[rƒÊ3‚46\—µÝŒÖ¶`í.fÉ£GL“œýjÞ)cIBF#ê²ÏœS’$$S¼©0~¡PœY4%¬µ²Š+ñ”üL:É(2F„”œ·¸^.—!}záà×K]Z5 g5ŒèãÓW9£yrDÉ÷4~$4÷¬·(䪊r~1G­5G[Ö=>}ƒ˜Q»Â}êÄÝΡ¾¨YŸ4ã· Ñ79³áM¶ÛÑÏ/‚“³“étú,8ílÜ8Þ`%¾V+å{¬…•J±³÷ a­n`‡”upÇeæhËŒþ™í}äKƒ}3׬¥±Œí扰±Kü^¢eøÆû×XfKß§d[líš–Y'”l ¡7 >WÝèEµ¯qF—ÂЀ½{žµ°=Þ“Ü^ø{Ì^Û°ŸISº@a-´W?:•d‡ØcÕC`Ú7Ù—ÿ³ImV}‹ºð¼òâ0?µ…÷ϸs& ¬Á"þ‰¾Êg/ï+DCßÖ7™+¥êËÆÀö Æ]úë…@™9Ê„l´„™®4và苉\ÄkÝ7èÿÍ…àFÌox™áE€^]ÞL¦3˜žÌ½èßi¨”f{óW¦ çæ\)?E|?pv®Ï 'ÞäN¼c«ŸxCØæë»uú¹¾V» ~“ø€ý~¸•Uµ›ÓßÑÿ«Š?TÒwøæ07 ‰¶$ý°ãFÐÍXwås÷?÷óòoPK ëDŒ<ÇPHÒq>&html/ch04s09.htmlíZmsÛ6 þœý Ž»6é­–œ4Û¼Fò®M›½\×í–¶Û>å( –ØP¤FRvüïR’m%öìîº.ë’Ë‹EžŒ [ŠqTËÆŸÿ•`)¬­ðGͧ1=UÒ‚´ƒWó (I›§˜Z¸²¡ëBÒ‚i6þþü§ÁhôÅ׃Cêá"Ë­€ñqðup_&¦:9¯ å“9—9I¸Ìð¯!pU ž¢à< ùHpyI4ˆ˜;` KI¡aÓÔ˜pÙà#%5krÏãÆÉJlÍA‚fVéÕŸ©ô©R—ä·óä|eÈ›Ãà«ã`HW5(T ÝØ¨2\ÎfÓ©ÓóJ;k~…„œ 5#¿À4ÈÈ·5Ï UW #Šáqç¸õÐ/€cxÈ)‡™éõ¯4LWÌptdÔ9º®PÚ˜O÷ $úªu8¼…- Ö&xƬƒb¤T„út0x 9—ä[¥rä‰dbnyjÐË ãȤšWvunÞ²)kZ1<ööö¦L“œý`¾SÆ’˜Pvæ1%qL2•Ö%ÎV TŠƒ+TZY•*ñ€|CZÉ04F”Ð^ƒ¨mÙÕËá•fé%htÇEÎlp‘ƒm›èë'ƒ£¯ŽF£Ñ—ƒG­+]‚ \‚ÏTɸ|‰‘@¥’°Aì‰ÀX}Ñ€°V×°Fʺ?c‹‹Ãƒköàì?—Ùæ¹}F‰•ÍI’ãœ)ÓYÓ€†æÇ4O‰‹È˜~6į³3J¦íóèx8SÂúïÇQƧ$Ì a6u£€ÆfËÔcÆ3[Äôp8¼G‰©Ë’éyL_²)Ï}‘¥¼ÆŸÕ¦b2¦üP9~J1`œÈ;ä¬íõ€î'ë´8rJ´ &8Í#,MqQ^ªU­]ÉãŸqG!7c#pæ5mA¿\]jº6s4Š­×Gó¼@…Ú1zjɵYaü'Í©Õ(äÍ ½Ó±x¸Ï8/½É1ÚCœ^&ó˜‚ìÏœO1.ØšæöWqÔ{3è23*"€éÇ$Q¶ð>lÒº³qàæÃÏ'j¶û„G«¿+¿ _ ¶¹HîôqŸé¸, ÝÓ˜€—[ˆU®¬Lx^ë¦'\± X¢&M¶\jQ§ÉÜK:7è«‚‚ßÓ¸ŠjÁ´˜£,LjA0Ã2ҙߜS®•ôcO”Æln¬æ©Ïδ˜2·Â!#"ÃYaNéŒÂ íÕ û0±æš•‚ëëÄ'÷…=‰ÜÊè$ 1° ßx¯Ë,`.À÷cr]ŒYT'©q¡yÖ Å×…¦LÔ(@}»JŒÃ>Ã’Í…¡;{¯nÃNØï~nO<ÃÙh[7¿}ñ­]pŒTFã Øù6­S ·§Lg G„ÿ¾.®žÜ&}ž_U\ÏD:WÜ>µ~ÇtµF«…ëo£<fi¸«g;±Ú¨>š™d»¬;«¶iÏžö—Þ.NxÏF¥ ¸x?6íŽå&rÚ„ s}-mùÖË7)\CW´¾ŸøÔßÄÑ¢2aA‘ +‘¯†²‡Xý©ê !iƒ›ƒqÕÂõnJêH¸«S®¾´ëåFÍú•#+Y3êÊpJŠy[»â»¬•Ù²*º1Ûrµ¬NÞ°ç,-”lŽbFVUˆÄÖmÀÁ±£®%³+–tË—xÏ{[2n*(¾¦¦µ±ªDT‰ÿ­¥ZAE®Xã3˜°ZØ{sÌ}ã©>R/ôx®–gÁÞÞ]é½Õ¥·€Õ~†ÞÅ‹؆k ¥mõß+UÎDUÛe£3ïŽEݱ¨;uÇ¢n?‹’Ýÿïe…ä‡%j 7m,^·У ‰ªeæX‰ëí°× ¬”›ƒa§M’mÖîD—üÍS—Ó†Ì,”0ž-!óÐ#µÇ·fcsü‰7{ªHTN}ƒç §<…wâ`Ú8t¯$Â#ó¬§ÝvÇÑóûÇJÐZi‡ÊÒ‰ÄH;[¦mAíÂq¨Ûó¾5ïÃѱÇg7©ÝGh[*~„ö­£ž­™=*ûÏYùÿ¥ÆÿibÜVûS)vóÓ‡¢È;1d·«¨–;‹-½.œ»½5%(MJ…ïÁä%ᲪmÃúš.ž7?¼AÍb#­c•™çÊ݆dóZÃ@û#ÐŽé*mÿ¥mŽúw^(U!½~gÁ] è.”™ L Á†3H4¤Jã(á[:Þ 2xÛ¿‚²z´½Ã€ 1¹HyFbB_œ]M=éÞi@ß± Gñ7L韔O”ò‡Åþ´vÇÓòEŸþÁöñ{<Ø^{:Ýl÷aë›wgƯ«å™ôzßËI÷û}¼º'«*wÿwpþ®ñÅšHãïT »Ùß×°Qâ//ø¬9æoÏÊÝ•w¿ÃÝûPK ëDŒº¿Mä¾'óªq6[¨ñ_3qUæYŒëÕjëP=>Þ¦ŠO¶*Bk‹ÏÛO ÷ÅpøH̳‚ý å<ì¢àùÚd±†Ò1NÇ:VYiÚ¦zÇ—Ü­ÂEîܹ³äŠÍùOúG© ›°Á ×Ó6™°DÆÕÆ s[¦a©¤‘±ÌØ?™ß9i‡{àp½Z­Âàà!‘o(¬TfÄ *„Žy)ÁW§=8­âɽ€}³ñ æV¢!¯% c¹ÍyøNßsÒÜÛ’æÞW§OAsä®pXc¿r[]”|.^+¿ êx;ç&|;Æ/ ‚ß.†'ߟœŸŸ7<õ2¶n ß" ŸÈÏŠŸƒ …سí"‡ë>‡G€¬Q•èÙeèÃK¬[¶äõŸÉ~ÛlVG2Y³h›I5 V)Ì'ƒø“ ÊA>`ä•“àGøyö,`K}~vtt~0Þý~:N²%‹s®5ܘ/‰‹PX6<ŽU–˜t}0]-\­'ÁÏ|™Í­±Í~…ßps]òbœZVs|Šá0´å¦¼•BHK…~“šõ qö”r1ƒmÇœñ8F½ÀRöFóô%â|<âSÇ„ Ïý®Et¯7{8`ýxT6OÈóèÀ*zÓÁôgXŠ`9@VÜ‘Õ4ª}†1:Ñ"6ǰ)/æ“@]sÙÜBæ–ýŸô¤ó=ÌFÙ@rÁÕI“ZºÔN2}":ÀvƒÒ“gûoiCîmie5–i–¨l) ­©vhÄ@V Lh›\3‘0>Ç Ò„gÀdôB‡D®©9S*Ü&Š™T1áÑUœv("—Í_€oÌó|Úè*w´yò‘Ú<íj³_suèù[N‘/[+-¥@…§ûUxçuŠâÇ8~ÍJ²_kf$+…‚ä ¯£–†{Ķ4Ø,SÐjfïÎe.(q·ïÌå¸PoÖ²R»Ê·D 1‰¬´M…¨„ˆd)6¦ U+‰>Sï6RG´0uôI @’˜—(ìÄa…U~ @µ-Ž¥FPp©„ ¥$ #è`7 X‰AˆEêr‚òHV¨'®”"ü•F>&P}rú‘rvK™´=¤‰¹!ú¬T&Îc.k ·"®6™`n'Üçì÷¹óD̲¢Û\\cjkZ2´5."7L3 VƒOΈw~¡¾ÌŸ'J_«*6•Vû° q&|áCK Ñz¸Y]eyÎxedã¼@¸”ïáø)7ž|RÙTL­:-V¢¯ˆPíPìf"^#µyt},YÊ—Î× »aä¸!Im¸"̓±§›!à:ÊF7VqU„êÏäÌÓ„‘«&Ú‰A,’Ì•S0²‹ÄÄ#~-Ñ—a5ƒj¬'• ꜕U„nÓÛÝE ±$ïê ˜×—¿[ü|¼²•M)=wlí¬!KHë+-¥;*6fy7“P@V…è"R\qr§vÅÆZÞšµƒ<ÓäæèÕÆÔ1Ôߦùt/ ¦N~ôHø~Êön³Kõ.JÈd¿Ûl?iT%Ußõ„ŒSã^úüðÞD³¹= C?2v½Û º”YRoªý”º/ôŒlY®;™ÓmWæÀ«…~^¸¬Yïh’è¤Þ¢Qîn¢žµ¾}/ÈlVC´F Y ŒLøzppÐFB?5û'‰g:ØË¢«š‡ßû¨ÊrtmƒƒÐ–ü×ðÞx—R€uº …-ðÄÂ$úIÄŒW¹yMÂï%õ˜HQvuYºB(|g•Í5I‡EDH-M~دK‘kq£W´þEÆÛ~ù™¨Ý£ù4z§ÚÞQ|Ž Ey¶p1Y[æZÜu?Ü­S–›’zYØ´è³õKa³*z †þ³ÐYÝíÛ|.¨fE[#v¶N¿­dkËèQépÍ@)O¥¾Ý Ã­Bh«lSW¯­·J% 7W•º¼*rê¾Zµ!åF¦´îÕÀ/€ÝùâqQ4ZF²mo«…ºT®0NwËúòunn;‘áøfCx_qƒFFMêlo‚´6=– nAØÏU×ÓŽÙšÞ×sãœw¯lÕÞB³i/(5"¹Û„ïRƦˆ¡Ó›qt Bƒ¢–Ž(ÒSÜxé{¹˜kj·Ût¶’UžP>ò¼˜ƒG¾/8üz§³jA- jÝi«¬“÷>øKÇ©z•ÖÀwýpÒš)iÐps¥SUrÉ)ÄÍ&‡Œ’ M]w‹Y%£»bÑ6q僲sFJöFÑû†ÜNÿíFæ¦ý¶ì@HjßsS.£ZÂÛ1ü²/·?4®mµÝÞ­V;æ%‚÷ÿÏåŹ}á Š+÷¬X‡>ê>âQ§„®‹n?«YâZaöÈ`Þ6¨d†$µ‘VærMCñë_+D‚×ÓBÌ‹V´þáaæ_墔„øSæšÆÕnp>íHQUÞÓÙç2cx@Dèñ¦ùE'ú÷ÀñW 7©û{ßú6ùœG‘¿'‘ž Ô“yþÔ‘Ä%üº·Üt:¶^ð\KûĹ4›‚óâÍã>Ùž’[6 ®;צ@½ŠŽ(Äj‰h‰+WXjÚ {݃nóeã€JÌAÀz„nUDØsAŲ~¸Š>€>n›^×Ãl?ß§&ΖN™ˆ½2°†Þ2Fx{t'á·Ž+º¬t¨¡fû4ÛµÓŽÅ>÷ÙÔÞ˜}#Ðq‡Z#,3®M mÜÜE[åw·Õ P¬M¶ØëÜQOŒl:ý¨DrhûÑ€Áè §'óÍÔQëŸÜ Ý×ÎÑ;Küi/Ç|¹wÃCÏ‹k߈]ô4öѼ®ÌË9bO–붻ĿjØ v:»4.ÌÑŠc¸Í›¥MwëÞ¬Ì NSL6Úýt¹å¯ÛäîõzÂK€³’ç $¸¦y˜u¡úö¶¢dác$¹ÀÔÑó„Ó\®(b¦7ø /²Ç]V3±±¿me!´¿]ÒLJ”Éo)A‰i‹CóJ¸¨¸xyÉ~âKžÈX[Ïü˜×~´ž¢-Öæ%^Ûoš“4Ï¥,ŸAäí4tH¥>Þ’cÏ {ÂB˜ÑJDÎ-„½Ó#jëE¾ëžj4ù˜)oóÙÛóЄÏŸ½=;ÄùÉŒëx|ÏÁQºç6fRÚS öÁ-Ïn4÷tO\œ}½Ç&ê]²ÕîÁ®éoåæ°D?ÀOrãùmˆÐ•‘%¹Ý±?ª‡´ç¤ÜôG¹·SE¬qã鳞ã(>žè¼>¢ƒÿPK ëDŒÝÖ@IÚ®"jàÆöýS’Li0Ñ»Ëß½ùü—_½ up¡) ‡xæO&þ#‘èúô²©kZ—"'KÆËŒ™RŠ0hC^Šk¢€GT›[º0” Mµ6»>.)1H©cb×qK^° ws ˜‘j‹ó+™¾òšüyyA.×Xš|™øÏfþ˜n3(d½îRdpã[cQ§¥ÑËZY#þ€„œs¹"a D äMSf0€jêµÅx6Ä™u'óP‡ƒ\–°Òƒ÷ñÈ–Ûz2¾ ‚;-ΗîTˆ‘JfÀPÏj5½5í ^ß@Ú˜ž1Š ]ZYv?zÞ ÈKAÞH™s g‚ñ[S¦O;Ï‹Cª²6Û>úÊ–¬ÝÅøxðàÁ’)’³ßô[© ‰ÈhDmÜéJ¢ˆd2m*ôšÏeê¢Ä¯•42•ü1yN:É Ðšû”œ´¸^­V>}|já×+U5tÊjчÇ/;rZ¥Ñ%O64žš;‹<Ö[ä§² ræÕG­5Gw¬9zxü1ƒv… úØ1»CÏ¢f9|R,½…Çq•3ã_å`º­ý|æMŸMçóùS︳qëÿ sð•¬X)ÞcŒ¨öˆqŒÙ Œ „5ªRÆÞ|ÀëüÑ{Ðû¯E¶ß÷+)a"³[’äè3©"º*Ð hh~DŽð”ØÈŒèOcüŸS²ìÖóÙx<ŸQ†Ïã0+—$åLk e¶´Z@á¶a òX•™)":R¢›ªbê6¢ïÙ²Ì]‘¼Ât¹®™ˆè±S•ã]ŠcE)Zêì?ëÕO­öÃý2ÂÒ®ùÔ;S9þ€I,nu"pæ(v O·@7w–Ž–Øn>ªÌ $ÔéÐ;ËBü½eiµ„œ¹;mlö2ðІÔLЯLä1t™«16ÊÚíîRLÏÑu¶4#LDšÂa[×­ÞÆ žî½#­2dz€çŠiÏ|ûZ»Dü¬˜Hhc¹'fïiÜA@ØuL˜1ªLƒ/HÒóh‹î–:²6µ&HÃ1Ë]1…%:QŸ¸¤ªQµZ«Â*—+VñRÛÒ‹Åá7§¡ Ó^¢àžaøÄ„6Ž}“»bk‚4.³N(º+„L@¿K©á +&yÐôPgê·pì¸Ö’NîQnNݬ±×®M£9€ÂZh¯~<Ð ;Ä#¿¦\9|ñ?›”ØÚù]ìq¥¤3çO%?Èñ›LøgøãÖ€;¨½‡Ü h'ïRDAŸŸï¦g© ܰªæð3AŒ$8¢Ù,_•œcý°W™¦"˜;2Ù`ŸÅhÑv¶:„Öù ™ßgi[&Ö“Ï…”õyƒåâÎÄc‡Š~á(³@_€ V(H¥Âj|ÕMq8VÐ}ƒÁ¿ ®øâ*-3èÅùÕlžÀ|º`ô´¦ ’Šíiä÷LöÙ…”®ã¸’`¯]¿3쎳ïØw¶¸¾;a›ûxü¹Þ4¶Ý¿K»ü†ý.öìÊÈÚû'ùÿj|±ã;&~‹ß7‡Ù?dØ’8è3aÇÌÐõ[;Ú)Ñ~~þ PK ëDŒ5ÅÉË+ˆJ+ó9[HX2«En¤•*7£¡Ÿ¹Ã5r‡¹OJ_©¥´ Ë®˜û:žÁ\æì•RóØi.Òk+#ƒÂŽ!&#iYØ®Š>‹…ð£h"w¢æ(ŒT6œ‹ð³yì¹y¼ÂÍ㇇/‘æÐ?áßqFÕȶ²(P¶´ˆ.A£8.æÂ†s°ÕЀ< ¾;8>>þ68¬xì, /Ð _¨LÈü:À€ç*‡¦¦h²oÑ ¬Õ%l˜eéÃO8Bæ8Xáµÿ2oÖýÐE•ÑTÅ×l:G)=æËÕ€6†ìù4Eòœ‘QŽùßöðuvÆÙ¢z>>ÚÛ;>âLô¿ŸŒb¹`Q*ŒA+ Ú4[1EKÛdÌ÷÷örfÊ,úzÌ߉…œ; bí|¿ ÂMM!ò1?t[ÍñS„CS¶[ 2ë¨Ño\C8 Åf¨ã‘`"ŠÐ.1½yòúùh(&~_$;˜Ño;D[˜£‡¶–óU{ô`å£ÂäjŒ`y@ŽÝ¡“8fúŒJéiÆ@d÷Q·"Ÿ9ä}µ¹C–懫·ä ÷=ª¢3IAè§lªlâdèC;ñtô€_!¼-U–Ô»ï…óÂ0“90E¿šeJ‘M×àè3Ÿ´äFC™0H"aV±Dä1ciЋaáGaY&®™Š¢R#y-¤]O;Ý4+.ÁMqD¦ÈQø‘–ì4éé™é5Ç.à4Ô¦£‚0ÖÚ™…#…㓽eW‘…‹~)ã -ÑQ©'œàáe‰4…˜ñ™sÇ;gËrÏ>­A0§ŸÅ•—ÛñLb H¯w1Ħj*(ß´ŠñB(qƒR‘VÆ ªÔÛt‹q ,vŠŠC•ŠZ}oPN›4Ï$þ¤iipÌ"}éµ0S i™-Mlˆ®˜ôÁo4éþI·æÛ‚ ¼º*þÐê£Gk=¼ÙZQ…ÎŒE†ºÚŒPöµMtm¹¢ŠœÑ#Ô^â´óàC¦CÒÖ`KMÆÄ@k$‚uE™Z2HªHÈšH‚gZeHV:¬ZÇé÷z3[£ê|Ãì6®± Uß1™´IT™Æ,–¦HÉV; K1’@Už¾ÚyÜn ¡W0W#ó…º´7†¤Ñ6~Àm¢bÉOˆ«±®|fh•p·TV„æh!Jr‰ç46uãN «ŠÚ;´ZâôyÐ A€@©x4¦Ñ ®äHªÒ†«†Oçfä¼ÄjEËÉÖïé¦6ûŠCŒ-]ö|ÚŠR7…?×"K¥!Ö°”y”Ú“%ÕzF’VÌûA“¾Ÿ°ÕiÂZ-§h³|ÒL¯NÂ’¶Ä Ü”ÓLZ¾-«î¢5Å–Ñc¯3“:ƒ¸¦úhnO\gt#S@$Ðô¶€W¾,¿›µ ΩÓW˜a.xæGÕ7»µ¥»îìÊî4b:È7®)ÁÍ÷zÕp»fW)bŰT:æ“¢œ¦2ºIÍ47TÏzÖå‘ý×5Œ_H…ƒÅBc]]¹UY#¿ôäçûC”£Âncõu½C3™^ésïPNkµºvNºo¤ìƒIMœªòfݯ·HUØ(© Þ+•½Söt!dJÚËÚ‘ìôñV,‡"Ž+a nÜ#‡e½C5÷Y)SŒÉƒÐ…püÛ¥M¯3´À°þ7Y£Œ)ØÙ‡B¦Ô,jÌLPÅ‘DYHkÓÞ §´ç`çwIÓEèVœ_¹·_;†ßí+”mëOl!°É ¨†ÊöÂ'2?aÕ˜«£ëÁ¦™âî€ÍÎ^·!ŠM‹€qÜ7«Õ¼ë×éÙ*lêÒý .•ÖS)¶Mÿ"Zÿæ®qå2£f|H€Ã¹œñIÓ1ôZZ²Þ©t§ô6nRåƒOTÏQÝ ¤ WA`öÈ]IQe“ª£’VtRÞ.“37Í«Á¬—®¼¤^Õ•ŠUÍQ•dØ úäßÓ.dE"Œ¤Z ² 2=âßZÃÓºœñE¡Ïôתd9ø” ¹)µ/‡Ö’ÿcSãÂ<Œ”–ÕøSåmœKµ¯¯Ãw+¾)ƒ"þtS=áòl[TTUƒ…<n‡‰Ã×·´Oµ,Usy\®]o¹ºuàU¡º2&ð6AU®»"õ•û¼ÒRÝV¤~4¾—™a=‚‚ÞÐOyòAd¯¯"ýEúUnÝ1Ô­6 ^‚¯Ö»CÍ,öJ­åA žòÒJtj}HûÄV]ª´á—ÕB›Þ²â¸ç2ŠÌ-¿Ÿ*ªOjøg°‚š¹7^º´î*«n×g›eþX§u‡ô}×;íK×–Ôcw8ìµ+¢Ó²íö¼ŽN‚Q8Ìb¤³sj]VÛrÆÎË(a«ŽWŸ@ÿkuÜV-@¤2ŠN|òu°×UËæX ‚îú/¨Ç'μ/5+F©*¹°þ  Tn›®pí¤gHÝäÝÛO‹èø {ŠÐœøÔ[­-ùÌõÿÌPº7öö,´AºeŠÚ›<áÕ|D> û%¥’úðŒ†Ëê mM²3‘nÌ\½AŒýµ<ÂÝý¹=±¡£ä9]äh)BBDwƒÕÖ÷Vdµ.ïÄÕ±›m`½wµ£9«Võ!u›¢{‰ÿk ×cº¹„t'VñÀìÔvçì­²_¦Úx)Mâí¶²S0Î ˆäìšeÈ•¤³¤îñv'ÜYšº¨Oû2K(FÉ •)líÎ%‡ÖIj‘¦[š9ZÕºÁîDPêÀ=Ý¡2)‹˜Â–஌Ø\”jÙ]Eþ½¹¹|«Tq†[­ÞXºÞªºNLqÎ ç ÅÙá¦"×à ?›!9"äáçþ=t÷bï·\^¤³‹HÆlÌøÛ³‹£ã)Ì?©¿ÃnIiqÃEÜ+ý{²™Rî¶È]×lyWÖ¬éßlÝãÍÖÆë©úf«O¶\¿@Ÿ|,ÚK©Íïåªëþû½óñ¿WɆE˜¼Vl'ƒ>Jâ®[þ›{Oº×¥K^ú’ÿPK ëDŒ<ÚI]šÄ ¾html/ch04s13.htmlåYksÛ6ýœü ,;‰å©Eùµ­×µã<ÜdÇI3µ³ÙoˆEÚ$Á m§ÿ}ÏH‰”©ØI³Ý«Ë"\Ü×9qbòl2N&™ýŒsa8KŒ)‡â×*Þ YQ˜áÕ² ÝSàñÉŒhü3&\ia‚7—?ONþú·ágÅMj219öŽü§ÅT—Ï>Ju›3¶HMÂr¡5Ÿ =¹~ã,-n™Yài³Ì„N„0K”ˆ/Ôz´nõñè1jEèyât/xŽÖ™(„âFª–Ê/eø\Ê[ö¯Ë v¹’¥Ù?üý}¯­A"sÑÌ‘øä“­˜“T ¼ËR‘Å”grÁ~±P¢û©J#ÑU•+#’ý㮜ãÚ1¿ÌaEÎS±Ðñ¥ó¶}p¸)-NΫO"¬L#‡Å šT]‘|ÖyG¯ƒFµ—©.3¾$™¥,«’$ýe8|.fiÁ~’r– vVðliÒPÃÙ‘'cª´4íÝð9w­ÈŽG͹b3þýZjÃ6x”uúÔcAÀ"V9‚æg2䤿_*id(³]öwV÷´Î|ºqSBpd5¬…þкְ—8œbýú¨t–@¡zŽŽZE/LÞ!X¤–SÈš;²ÎF͠߈G'(Z„æaåÅ,ðDјeJ2×\%‡÷ˆ3ÉW§l*Mb}èXl6A@;t»?TÉa£jû»´ÀÛàñÍÆ”ÅNôÛ›¼u¢l!$‡Pë„¥šñ‚½Ãb©@«¡TÉj&fQee›âd… ÉdÌbª±4XÙ'%Þg@­EÆzpÙSÁx‰ˆYK± ì1®ÙBdýO) ›àó¿Ñy%B -³9Z¦KÆYmévó.¡c(jë¬^oI\ H£D³Hƒ<›l°?b¼2`àŸgÙ¸Sót.6ÌÄà(…‡Œ³÷ ¹&X”jªpe3ÓbŽL6i=!ŽRö霱¬UÝë{¿àª€¹«.¤iO7¡”Tm“ßär[11ˆ<>E Ì}ÆqÏ«4ƒkš¼Ÿ`˜¶Ig†Â-£Á´¡i'ˆoIµ¼ƒ Ã/DÐQAk´””WCJ™32g‘MÔònÚ,G½`Q+Ó–™âyf£7CùꢣIR”0ß÷w]Ħõÿ€‰z™I6 - oRˆ* ^NXw0U¡Z¸Õ/µH߆r°ëk›ÆƒMùp¿U 'B°ÄKŽjTO´k×¾~$b^eæ lþ‚†u,‚–WX4LY\™ NŠÚb}«Û`÷óŠSª>@oK"·¯ÑùÒ %ÆšòÈfæ³QAÌ@¯_¦.!oð%³,ás‹gª7à#;9ØI¨¹«ÌCÐÇÚ/,REq#—®›6|Ù§á#‹%¶T¡ÿ"†† Ü¬¤íüŠ'Ÿ˜ðACüBšs ?5÷hm^[P,7pæj)U¿35û‚éV¶ _ïGÕ=Úµ ƒìˆS•ÛßÿKx4˜˜VE”5K²ºUæXýj+ì: …wë:†`š´@#ˆwCn½ŒýËœGW’…JŸs»pêR„iœ†sí1æ%ʹӦo’Um¬K¡h1Ó¬ â4½K&Xf‹ÝzÓ-Œ¤Z:]^4ŠÔÜú“¸ek½uÍÄû‚‡Éj…ó>éØqgƒ,%­AuU–R¿Î®ÏÓØw=Z>n!?x@%}¼ÆcðÛþï[ Øã-¸þxåiá¨ÎÓs%s»Á€âܲ@—7{VLΑ‡™–ub®rˆ(„RO³J7û‚÷7ÝžÛ”kÂðê‚͹J‰€Näþ§™y–œÊÊ”•­ÏŽÅ(6Ó¿u'ð·8ïwžÎÌŸÏ$õÁñš#Úv …-µz©ÈYÝé!•Ö…í*p1‰Ýe óQØ) ûbuŽ—-²Æîª™dÍDÀ@äNÚ-Yç9àþ B;»+=±2 ±ù£Ü­7„vkä0Gd3ÊsΦ©5ÏIú˜Ê­ºÙB\KU`°ž=Nr¥)•m¿½µ)Ö†œ—”ᦖ­y+!QXmcJê69jÆëîîVl™Iy[•Ö°µkZ*|½–‰5‰vÚP%´›HèÚiAH4\Í„a5y,m–´˜Ç…õÌîÁÅ'Z=Ó6+¥õÐÚ{Ö☵˜¨ÁØj*lÓ{ÇÐáñzSÉäôpN¹$jÔb•6:¶\qA™ð©€™+å~]ñ\~„\‹½mñtQ/*ž‚Àêé ±`;$àmª®0Ùi»³uTI€dûk%”=Õí |lY­dOTh’XÒÙ!B0ÆDSç5¿½êk«z—c¯h"«cÉ•¡pÐÔ˜@d“Î"ÇNˆ ª€nv8¨I"‰¶Œï&£…ªû×ÖlÄÒ‰™ï6÷Ô§‚M˜ªHáÒ@´¹‚ø¦ (‚šœQjMZÚW2s:Ácš#ÏdxØ[†klÂNôdK|†y>Œ"ÿn´ÞĬޗÚHoN°b‰„r1€$¸g…Þ–` êÝä9QFÔrxµzáµÆ\ªˆ,²¡lB½Š/F6ÇHŽ4O‚\ÜíÀƒyÇi´qÓÁ»IJß «§hºïÕ­É…”å9Òaó¶„.$š« ¤V£_3Zˆ©;`jt£G¤™(ü›îXûRáK.®³ø:L#l"½‹óëã“©89Œ¹÷¬y§¢Å·\Ü1¥{FKi«íyñÏéWcºGëÇßðh½÷|¼9Zî^ÞM>”ëSñ~¿ÉYû=öÓ’Î>YÚ+‹û/¿Ö IÏUèäµÌÅÃüÐÕÔ)ñ¹Æžû†Gt§DLtoýPK ëDŒ<®"–üû html/ch04s14.html­WmsÓ8þ ¿bO7Ð0»/r­m†·Â1Ž¡¼Ü·ŽbolQYòIJBÿý­d;KZz7d&K^=û¬žÕ®’T®–YR!/²»>IŽCå\3Æb™²—Z9Tnüé¢Ay;J™Ãï.öë ¯¸±èÒ?OÿO§ÿï±—8á$f“hoÝW3Û½¶‘üB¨Ý,›Ä­M"…:ƒ2eÖ]H´¢cPœ§,·6¾œhÈÀ›Ž„g-oÅkš-Q¡áN› º¯tþBësøûôN×X¾ìEO'Ñ.ÛdPé{ßBø=òq’OO5e§ñ|ÅK½‚8Gƒ*Gx³ Í:ˆjw2Äé7å#’¹¸²ƒõÁå&‚Ý;¸ B3-ÎWmÎ=ÊJ¸ j´–—8DS´]C´Ç? =îо˜ñüÜú!\Búm<~¥PðFëR"ÇÇ –Ýx:ÙÝNðáû,)ÄrÉ­¥ æKï M;>#+Q¸*e{»»÷ØE]ss‘²÷|)ÊApioè[]i®Rv\•ô”SÂx“ŸTªŠb þ[ôž÷½ãH✤M8ð<§xŽD¥Ùz~³t²“˜g­;.»ôÉè%»­õ¢%¶eE„:Zjk!ÈÞ“PžVK(„‡¦6áŸI‹ s·G’rU¦ ÕP­PU|‚µÓÝOµ?xOªùzLD$rs3íª°‡m1÷1Žƒ4IÄnÖ¨Úï9nþ6á´}¶®BH|Âöü3ËÂò$öƒ ¸sFÌެ5ÕM¿ÙÀÃ^•>µ.¸l=B!¸Ôåa8' 92k`*\¥áµÖ…ây÷¾tG‰Ï¼Þ¢’cÇéMˆÐ:îνÏàªÙšËDÑ¥W–\.È€ô$-ð”ö2¯^ú"hg·@ö4~†2q}‰s Ý&ßìÁ¦ì~éÚ DÛÚ‹øµB ;hÀ¡áye»Îün]fÒäDo°Â«î¥úƒ@¥æÚ„µ­ž¤xÑfU¼]º,åéoÐ6ZÙ~e‡o辄Aì`SCG£· Ù37º¦wÁÓ#à¶±/* $kF1µpmîþc’•L°ñûó߃ñøÙ/Á>õp‘åV@2 ÷Ÿ…djªã¯æ$eÙ•ÕxᲈM$¸¼"DL]0%€¥¤Ô0‰ifÌ`5â‹lZnœ4¼%›âl4³J¯Ñ=QÙ+¥®ÈŸçgä|‰eÈ×ýðÅ(Òu¥šBç›Ë®C'útTcz^idNþ€”œ 5'Ÿ`dämÍsèAÕÕ2ˆr8êãŒÚMùèÃCÎp{LïþJÃlÁìßÙïpN¸©[8 JUuÕG’¸UkHÏú0@o®!«­ƒ`™åJ:ŒŸ‚à\’·JÈKÉÄÂòÌàîæId2Í+»®É%›±fSagggÆ4)Øoæ2–Ädoº3G”Ä1ÉUVOQ¥P¨Œ9¯a¥•U™ɯ¤µ Œ!%GÍŽçóyH;ø%Â\s {µ“± öèÃÃ×-9£³x—’'+O-|Dë" 35,¼4»M4»7¢Ù}xø1Íô±gµ3wÝ‹ŠðÙи³áE¶Ú£_^/Æãñóà°qí–ðÛ‰š2.?`ÆïQ©$l1{)0GÏ0 Öê6XùÃøg\þí݈Õ#óíÚ|õˆR•/HZ fJÇt^¢ ˜\~LSð”¸TŒéÏCüœžR2kÇãÑp8QÂúëI”óÉ3s—ÍœÐ8mYŠ<æ<·eL÷‡Ã‡”˜z:ezÓlÆ ŸAde¯ñ["]a*&czè]ø+Äq&ß©O%ÆèAÜ7ï<8Ç-€ J1<3sH¥Úxj“xž£Kwœ{v-èó5лU¢!¶™æE‰„Z=Zòv H> JŽSÃÆÇ:ð»ŒO÷…è©a ³û¨'“ELAö¥òõÄeW3Ý^ʃÞ:JæJ0²ÀôI•-ý6õÛ¬«€kÈïÛ:•ÕõkåOÜ«ÉaÂjaŸ’y ’,TMàš[Âün"f0Ìs”†û² —%®®Lžú;3&I¡¼gdK ®NsU›©6N(·j57xȽqZ[‹ÕÍQú\‚uç%7øÄZ`é<ã`Óà_^ÔÚçTz … B³©@Ÿ><ö8r5¤³(E`®¬äÀª‰ë ¹i¶$L“¥Q|ÓhÆD³+Aï€eÕ÷°Rlyýk) ¿ êR“oCw’¶v {Ün£†-EãÞÓŠKdÃsæh»Ìzßÿ»ÜZ¹¼szfÈ·˳X %©é× o*úÿ, ]åÑÓûMÃó^Óp-¾•‰ÍuÙÉž)UÖnv°®IìÚK6´ %ØÁR ™Òø\šÓ$¶‰t[£÷# á…˜\d<ÇFž^ŒÆ)Œ&Œwk¦J³-Ù­Pú}ÓD)ßFøGù{§å=ý–gt-ÏÆ¾¥kyú°õí7¨äKµjX6ü÷=Ðw‚'³vdUå{È­¯aÿ4ðrÃ;hòßMï{Ÿ`CbëkÞ†Þ¯=8®±w]¾û§àoPK ëDŒ<_›í¾Ÿ5 html/ch05.html­WmoÛ6þœýЇ..:I¶ã´^"¹è[ÚAW,Y·o-%6©‘”]ÿû%Ù±Ú8Ͱ°,žŽwϽð99.\)gq<›ýÍ'.Ñq(œ«ü§Ë„½ÒÊ¡rÁåºBi»J˜Ã/.òûO!-¸±è’÷¿Óéñ¯Áˆ5æb'œÄÙqø³šÛêôÍLk'T'+‘¹"a£áð[—%7ë„}àK‘77ú†¾Á•¶â*aG«œîRj¯r_`cÁ³Û±÷ÚY‘¸ ºÆœ6¥hí5ŽêÖÃ;ûHÇ:Žø¬uG†³ZgôéŽÑ ´­f±Ï½yá¶Š=êÖƒ?û@Eñ(ZÿMtQ“T þžòÞK>±}åÁ€ä*Oª~mñíÔŠ»K1î=oÔòu—[’†;R_Œ7Xv¯;Ž-¦nôÿPA3h(D‰ÜœÀ\»â[¤PÎè¬nVØ£øûgû0WÍ©¿,„….—` ½²°Ö5Ð 8 µEpBìÕ6óÚÏ…FÐÐqyÙ P¢§;¿Ó=£e³Û4Rûëpµarî€C¥)ê W“sX+„×{/”’úÉê×= e˜ {¨’_cçŒn+»ÙÔx=D$rý X\Òø–— j\¨¥¾ÞiX]6Xˆ:…®mŒÿ±V´t°VÏ!6­­Å,l­ê—e;Öε®Î|´_3?16³F’΂tB….ZáÜ`ª LôÙFRXzí ™Áö±þ™Wrq•ŠŒ¦;?»šLç8/8;Ý<3XjÃ÷°ô7¡ôIt¡uC+ÍA¿'‘n÷ô)pò€x+±}CÙ>÷B߉Ž:¯]9]±Ù]¯_÷¬µ¸åÝqöŽ^No€Þ~` â{ïv·L€î€øiîG»ÿ»ð/PK ëDŒ3 $(ï|j`d<»ÿŒ1SŒÿþú§Ý>ùÅ9¤»Žá&î‰ÛrŸŠžÎÎ^CŸ ."ÂÃ¥ Ú0ºã•t„‹;¢ ñ©6ãt `(‰ô}híÍV]¼¥Ä ¢ ˆ½ï–ØKq5Š©æ ¿–ÁK)ïÈ—ëKr=å¥É_‡î‹c·IçÄ2…‰l.B¹VW”i¡úô:SV¿¡G.9$BˆÈÛœ‡°À*ϦJÄÍ“E>'•eÞŒ ÈÍÌ4zC¦`ð­<šiž‡n-³9ZvS×3G!¿ç%D\·RF sÁ’±áF+‡à8ÝŽÏ̼onÙ€•«{{{¦HÄ~Óï¤6Ä'µá¦O)ñ}Ê OÑ[n"fµp3% dr@~%¥çi¸”œ– x?]zpfÙO9 7ÐÈè€eРOŽ^Uà´ ü}JžÍ`<#4*4rØD#7©1÷Vï—Úì/i³ÿäè òôÊ;¼¡‚Nµ²­-2Á'Å‚;PhŽ›ˆ÷&S-5èçs§õ¢Õn·Ÿ;G•Žs[ÜL½×2e\\aä7¨V'«—ÈÖ¨j¨Œ½ø€+ÃÆ’>èý7"\í{¯¨$ž Ǥ¡Ï¤òé0F7`”¡ú>í%Èž–>ý©‰Ÿ‹ JÕ}û¸ÙlSŸw;! aZc³• — ë!Ž!MìÓÃfó %:OS¦Æ>½bDfô ¿1ÂMtÆ„O Q^0–d‹Z£ž#û 'Ò[VxÅ,>º·ÃpkZß©©Ý˜ÖuKÈ5,àUŸÏqœÁ[‘ê%®z8ŠG1⩤, µ¡{…¾²ÀJH…¶^ak<+ì5ºcÁ'sˆ^e"ò)ˆE‡åÅÆX¹\ýÄ­…çè8[HL’ž4qa²š—Z:…p¡mvTÜš ÿÍŠ´û¬˜HÇF¦ÝyQÏ®u $`+ Æ ÈXæhe# y„‰JøÏ–« ˜DBó 1Ê`n,Ii‰}‚òË]ûšÈÜ`¹Ó"Ý2„©¦°°þEŠ¥ ×ÖáX6ž&æ¬cxB'ŽaÑ2tKÑ%Ë„ÌÅ{¹5#+"™hÀ’ h*œ =¥¯BiµãidΊ†a%°<¶Ã#ÔVÛsfn³À&÷²ÆÁñ6£›9h |›qñlÜ‚‘‘›±B¥9èò<•„ÜF67u¼¤ÈJ%¼šžª^´§ÆÊ$‹?aõó$!0bi†'Al/Æ“$×h¬„‘i̾}hbfH®ñÑ,ÿJq„õäl†€[R.€ð>±‘FJ¿ ;¼E¼Y:ÌX”jÊR2•óm9lAnaøQšØ¢¿Þös½‘.úÕ>b€¡Tw®Tžê1¤ÌBÏ ¸hò°AöéHóÈ"[Íæ¡÷å÷ËëB´ÃZ›æÈÖü´Ä}Yõ‡;5Â4ÎîÄÇ+IœêÖi¹Mw¤Ëçút.£R™º$x¤¢{Ù"ÕØ  Œ÷“å¹Ê»F ˳±Z ±®™;•úèÕYmý+b‡'檾†iŠ-F²‰ï׊ã5¾?($Ð"ع¨qݦÇ<ÀñÇv™gzí2ެˆ2Žj 7I£i¥íþ«sXç½”›ªÕÙÍ‘¼¹«{ìàPHVs.¬kòÖûðž;¶¨"÷jÂtÏúÐÿÿ{ðï´ÿnzñõ©°ªßðò'ÂfÁJØkÞ#æÚè‚|¯èÉí«C9˜Î1/¥Ì.ð}`y~iG„“Þ1Aš>Ò¸ŒíðÊòʻ՞méA¸·‹ãèù1ßCÆ7Iÿ&à!ñ ½¼¸9n÷ Ýê3z6y¦“Ž­ËÝSeqjÖ—²˜!#œ-'gÓ=‹Ã®ã] »jçU“a×"ϼ†ççl6¥ªG·“Ù×åÉ º32[3¢û·ŠÇ5CtßɶÓ}] bó¨¿fòWMÑìp×Nzí?GÿPK ëDŒ<Îq›óHjc!Yb04º‡P)hV1ôp´3Zr‹Ó…¸‡&0`}´ñ:Ú¸C;kAdmŒãHJVUhÁ‚~ïyï!ã‚|’2+€œ V<žh z ž‡:Q¼2«©ºc k¥X'{{{ S$c¿èÏR‘Á€ÚúÓ'”DIeR—hÔ/dÂ,¿RÒÈDä'ÒiÖ…OÉI+Àõ|>÷éÁ©…_"Ì70¨è„U0 ¯Ž>tä´J¢}JÞ<ÑxChæ<òØÂ##dÌ¿Óû­7ûkÞì¿::GÌ ]á‚8a'Ù5ËàF±ä†ã6cÆ¿ÍÀt¢ýzæÞ&“É[ï¨óqe‹‹gñ£,WxTH[ÔÎ ,ÝK¬ „5ª† ZÆ>|AIÃa>Xó³.Òí¹\k §2}$Ó s&UDç9¦K Ýè´@xJlmFô‡!~..(iºõd<NÆ”°þû8LyC’‚iÅÌkŠ ›"9OMÑÃáð%º.K¦#zÅž¹ "Oú ¿9Ò-tÅDDœ© Ÿ,«²SóÊÑSe¿éÂþÈšïà ˜a‚C†‡2­ï Utüz°¸µŠÀ©ãؾ]}⸥…´Ô63R<Ë‘Rg¥GLlì ñ&Ìk)9‡pœ ösÒKŒ†Äbj™È" ¢Ÿ5×hl¡µâî'õÞcöl“F"0uB¦Òä.Šm‡_$Âs‰ÀHn—|å£ÛÕßÊ¿¯ˆÉ„¶„dì3ûæÂÀJcØæB˜&L`p1#«¬AéÚ\´›¬¬d÷($J¶©Z²«µËœVØd¹Åä³ $¤…a¾åwƒˆðÀÊ ë| vðè\Îõ6Î¥Tp&ô”¾H!]Ðné°©D¢Q¸E´Ž@ê\Y‹áB<5DΜ›+>¸ŽPaÕÒ8¶èL±²àÚúˆíuaNC{Æyá–=ªÕ‰Éº*3Fñim“ÌÓN)ZWjXQ£}æ3ív¼ÎÌ©»æleÃg;0À2/qàödÚŽé?c38 »ÉA¼d„9Øßjäã. ;ÀÚrz Ö/Ѷ­! 6fÐíÙs…¡`q–w…K)«‹ {íŽ`Çðb€¨3C_€ æ0UH…];¸Ó­+8ˆé¶Qú_Fîm1»MxŠ£–^^ÜŽ'S˜ŒfŒž.Þ)À²-£ï™+ýÉ4“Òµh×!wœNË=ýq2þ†ãdãDXŒ“>lýüê­žæÀf‚ßdº¼à?iº•‘•‚ÿ~þ¿þçþÄŸñ.¼[ú$[;Þ®7ÌÙn^Ùû”½\ÙoÿPK ëDŒ<ëñ …¬„html/ch05s04.htmlÅXmsÛ6þœû[t’ÈÓˆ”ßZ-²ã6v_&ÍõÎîµß< ¹"“ €’ýï»AIT¤ØÉ¥s›CàâYìî³»œ¦®âY<‹ÿî7«Ñp(ŒiÆøg[."ö½…ß<4È íž"fðÞ„öýsH ®4šè§ë§ÓÓŽ™73¥©0> N‚"ÑÍùEjJ)@¶&•5.HÔ¼iJ‘ëYØ-ŸU¥¸…UÄ´y¨Pˆ†A¡p±Tëp=Ð#CÀ<ûw*^ÓhŽ7Rm -Ó祿ƒ?®ßÀõJ–†ÿßœ¶‰  œýÞ¥Èð>°*ÓžjÄ®EÐáwL઒KøÎQ¡H~hË ¢Úf¥D19Ê9õtyik¬HîŽJ$4 ›2ôäx[̱ô祰r2LKm]np(OБ å½ëth¹²n*¬éyî‹ñø;ÌK?H™W‚W¦L5w†ãq<Ó©*³i¥w|Á»Qò“gÏž-¸‚œÿ¬”Ú@£³þ§ÏDd2míŽA%S·kÐ(id*«øüÊ0Ôº œuô¼\.vpnů$,UipÔ Ô)opÄžïÁi•F/|µ†ñ°Üi4æ½F9m˜óà~ÙiórK›—Ï/IfØ=Ñ;pf~ä©gÑðoOïPÑqܷܿ9?4b¿]Œ¾9šN§_½Ž¯·‹¯eÍKñ–b`Ä„¸gÙEE^û†‚ÄÕâŽUÆÞüJ#‹—£-}Èú—"ÛoûÐQË,‘Ù$9ÙLªˆ- 2ù©±¤"ñ ¬SFìË ý®®,üóôd2™ž0àÃùx–• H+®5y1_Ø]PѰá áX–™)"v8™M‰Æª÷ÜÖá>¥ø4 ‘ð+ â*-|šÒk‚77>¦ìhÒY¼s®ÙR|ôˆ¨ÆÎ¯«RÛR‚JÓ•9ŸÙ"©_QTĹ4³™×¨0¤1l/ä†|9i©ê‹ËÌ/ж9,,fµTx!ô•~‹˜aÆü/rsîºÔ½XÐÊxŽM6ø0žÒÖW¶ø ÞC6:è±Aø8ºuJ~¾ÇqQü±'2ò1AÜ©ôo*3º¦îÿ§’ŸG#ÛûêbK‘½J„;\x¥ºû&’¯ôQ»jxßHÙ\QA¶ÝèÚ^²ïB+Z3§5@.‘"5Y¤ÑÞ1´Ûá@G*+̲—®Ø˜U³ [[[c¦HÂ^ë—RV‹ÚÀÓO) ˨´Aâq¹@ñ %Œ$ß!¿‘ZÒ÷µæ%O« O&îZø9ÂDeZ¥±ZôáîqMN«(ئäñ‚ÆcB§Q›Í4òД~¼+½]i³½¢ÍöÃÝÄô«èŽc0¨gîj‹‚%ðA±èšã2aÆ»LÀÔS-úñ¨Ý{Òë÷ûíÝZÇ¥%Þ%&ás™³L¼ÅhQ!l;âµg kT k¤Œ½8Ç™q“ÖŠ>èýoö½ïjÊ`(ã)&è3©:IÑ ^¨~@‡á)±ñП;ø9=¥d\û{NÖ¼âlL"δÆfc» (œ6lˆ<&YlÒ€v;‡”è2Ï™šô-g‰‹ ²WøM‘.×Ýu[%xaÀX‘;T­õt@öÏvïÙÍk0#tï€aVG õ5 bm&‡ç˜ãŸ…Õž;†5èÁè‚á†ÚQQ[ÏHeIŠ”ê]ÄÄÚj¾EwYb%§°ï̇½F4Ü¢!2]t,I@A4}æJ‹ ³jºþI{ûè;[‘¦ž’¡4©³bUÚ+-Û+þ@$ùu¯¥½çåßÂåà§4³Q„ÕbaMÒ„irþîõ;Âe’E$ÓĤ@r[/°6äRüb'ÊáWcÑUŒi§f(MDVuÔ³»^`¡6YšLeI@LŒt, ÁÁ¤Ì¸Ûºöš³±wâ:pÏðCÇ^oÿVì-ÿ»ÈËܽª¿qùßm†áƒÿ<—¼q]u’ÏW.¯¹G86ìñmAùï6ëÝc3¯I…êwÞ%ŸIYœ–ö¹¥ÙÛtÖºr”¡Œ'Àø*ˆ4(ÿJûÖà °¥›šÈoi6/ùè2Êbl2éÙéå^ýÞˆÑÃÙ=¹TlCÓwK•fO6’Òµ'®;¸c_6_Ól¥ö¾c+µ¶šµRMØòöûšðc±èÖü.ÕWôÇòjddaÀ;½õ¹¯Ò5ï¿Â—ˆ7K4¹V$¾ðJiM{Y'’}‰`ß(Øw•ÿPK ëDŒ< …Jhtml/ch05s06.htmlåYmsÛ6þœþŠ=Ü%‘¦åwëbQ;µ›vR'§×ûæÈ‰˜$x(YÓÉï%Ò–\ç.wsm5c‰»Ï¾`\S“g“qŠ<ž|î3ÎÑpH)ø¯JÌCöJ 3ø°,‘ATBfðÖ íþˆR®4šðû«·ƒÑèðïƒ]æØ0Nƒ£àY1ÕåÉid„,o#,í“k’q&ŠP˜…L›e†:E4 R…³EZ׳ ã1Øñ¤†]ðœf,Pq#U í·2:“òþyõ®V¼4üc78>vXA*sld‹"ÆÛÀªI2-Ô]•J üŒS¸ÈäÞã Âw•ˆ±Ãª*WJ¤;‡]>‡Þ(ç·UƲäÎ<ºÃ¡T8oóÐ÷Ùv­+ò2Ü´æ÷¹d°.·ã»ÜŽ=··&E+9Œî‰[þ–í_ƒ3LDßI™d§Ï–FDšÌã`0ëH‰Ò´õ‘Ïy=K!òäÉ“9Wðôk© „Ðë1zú%ƒ0„XF•U$Èdä” J%ŒdÖ‡oÀS‡Zgƒ—õ‹EÀú'–ýŠÃB ƒ½ª@ñ{ìéþ+N«(|Îàë5Œ¯%N£o4 "™|ÔÏkmžßÑæùÓýsâ9¬G4`}‡`ìgk‹’'øAñè†lÂuÂMp ñS=öÓé`ïxo4 ö½Ž­-Á5ÃoeÎEqIG¡Ç Yà²ÓŒ‚÷ E±5ªÂ TÆ>¼£™¹ÀEïŽ>äýó"Þîû¡Ë*㩌—0MÈgR…l‘’(ØHýM3bÏÀFgÈþºCŸ‹ s?ììŒðîúd‹9Dך™ϭT4mø”p,DlÒíî쉋 XÓ+úK n¦K^„l߉Jè)¢€±$ç­”Tt<ì_ÜÞ³r=Ÿ gäÙ1§s¡Ö7HHÊgyòŽNùxÈ'µ8b;pžéQ‹éÜ–ìQCÛŒH‰$%H^JX±1-L.ÉSX É)k0 Ÿ%æä‰¿Xí>¬ß]$”SRÅlRVÓLDÛ´[‘¹©†ê¬ ~qWÉÇñ¿2înÖÖØÿÂJó®ÖM õk9ð,£– ±ýxÄq&TÎýn ÂFúUœK_P]mñòp*úövyIº®ôƒ²2½»¸´S–ÜÝ–Õ8ñEAWÆVë#´ÍY+yºru£µâýéÿÚ3Þ0î½—2¿”ætÎEf‹Éù*Ó`¿kÚÆ”~¬Ïþ=3¬d¸h$xÚ³JdTíÉ~.}Ðo›·ý1Î8å‚$d»/%(‚lo0ƒKà4“JƒYc‹~0µ2{ý/kqÿ¾½¿r_Ÿ|²gtcAþ²%ãàè3JÆd[qú” ³ªpû)/Á½“’2¦)”ò?%Èõ{O“Î[²©ôhC7?*óÝ:¶® mjeÅP®A¯ˆ¾TÑ f*©‘Ü)Z>Vº¦k'"Œ]÷v³Ïlrî*Éß~©wÚ ù§Þ”;ZR:¬”Pç"¶š“Ïe‘Ðõß¾)€æ34˶ÙkC§K‹ìcë¢$3…ËüwUþOkÎÖ=ä4,âÕ®vÐ|NªC£]¦þkU©)=öíÚOõ·UnO‚ӮǺ îZ}¥ëõÿ5ŽôõuËG)ýç¨{åo¶ú{Õxz#eyQi¼Ûp²=¦”ÍŒh‚ÍpS…!@5ü¨‡6—`|ì6Û}™Ïéß\g³ëHÄêìÍÅõÁhŠ£½g'ÍšBJÓ|Kåž*Ý6ÇLJ÷ÚïÞºÙêXíé¶(¾`‹bc—¡iQtÙV÷;¡“ŸÊuoa3À/Ò±ø ýaîGF–¶±òp?õßÕ?ÝÐRž¼–9>Î]5ˆG7k7toüy²í9Û«³ÿøPK ëDŒ°¿ÝAt#=Žû݈Ѱ˜Ý1Ó”DZ§mögÆ'=ï©H4KtûÃmÊ<Ø«ž§Ùî`ÿSDT*¦{¯.ß¶ý»ýÀ3亚ë˜õù¿ú?%•ž¾Õ“ä,Ð\$„ݰ s¿è8™êvl‡nÌ“k"YÜó”¾…cÚ#‘dÞ(Õ)ïúpé ¬9Žðºo…HèîŽXÂ$ÕBVx&‚'B\“?./ÈeAK‘ßø¿>ô¼*‘³|lž„ìÆG¡aLdµç]¦’'#ò_6 籘’÷lÈ$KF^düõðøøøqûÈÉXéâ_>cÊ“70ó[^"¶¤ÙY –½€ÙdµÌØ‚V¼ƒ;Φ­yÀúÏ“p¹í;RºÞ’Ál&dÏ›F`˜c ~ÏÄ@Þ#8#{ÞðïüÜ#w}üðààø¡Ghýy¿ò bªLa:ÁQ˜„Ûš€)uÔóüè•ÇTÞö¼7tÂGf‘²½„ÿ#`7V)MzÞ‘j¿˜0ØdЊ@`Cÿs6‘ G5fC°s—‚SL©k|¥ ¹ÿ\¼Û¡};8 «Žèã Ñ’Õ%ÐaY[Ì‘ä£Xr£ÔKæ¡ÿŒ†\Y~Œ´£tˆøìR3Žb~æ¥É¨ç±¤n9ƒ28Ùìm÷':¬= "21£ò„ „ŽŒ -¬[Û¹à p·Ñ¢Ãœëêß 7”à¨.Á·ðŸÒTjËm~Ì-b&5À°÷!bd(ÐaÑ´N¢"1U„&ÎÖDGT“@2ªÜ& › qØE >,dpKx2±·(‰@OJ“°®ÛIadÉrItG’Žc@~èXõS¬O»è5y‹(nk O†À! <é“ÙTkɸÿfãÌ4íz³í&4ΠMÌ• °CàM…¼ö… ElL;S6ÀA=G-Ï`ÖŒ}r£øãȮ:¼¾¸4C·y¦ÃHØ|lÅO,ß. íT ŽEÿ6¢Ó±MÚî²}èø7*Ìåüi¤Oï™±–Ξ¤™n0Ð3Öª@h¿*F'ã—nUrœ«bi'†#‚ï4à›Ý€{(ÕÀ€뀗ֽ|ëÎ+[N´_HIHõGðBu²_H»À¦+ø¦²X¯ã zˆ”ùŽ»Ý®ÔRg‘n—#B§ ¦©Åɾ)ÜjÖõÊÛtÍÕ6 K UbèÔðWa‘‡¨”œÆ¤‹ QÎ%þ˜”t„Y)` ÞèÈü¸I_,„ÓL1K/+ÑÒv(>$ ž‚þ‘vNˆˆ!á0.6ßÂËø×Í5¨ “»„ðDO1A½”‘u´MîS'íߘ\¥Á©H³tݘ{³ ² uܼÚu¬M0\™4 Óªå\Èñ¦Î='ÂòÖssåûzø /³*¼Ø…™š{Cą̊2ù¥×6y’,2$f…0ûå…ÈÓ[‰uÏ×Ì_%„ d<  ôh˜×Ój™‡3!t&#ÛiðDËØà)ª ýbïZÙ ðDñJ¢¸ŠÿõšTtš`£kSžpÍͦï<9²ÊœX<#™iNëͼŠÎÒ‡+(6®·VÊ ïj`0nVr½p‹H€Y˜Y§±I´l!Øm,¢.$É^b²KLv eyÙa˜¯ÃüSXÿSXß±Âڅοha}·²‚²¤þ¢¬`¾ ^Ùå›e‡»ä䯔 ìK˜.ù. º*Êp]’É!›†¬Uf* "2ˆ1T®,Z {!zSÜò€†€n[´m‡H b¼È˜jäRnôµo Ì+·ÕoŽ#ý©a$Ü%Z<©¿¿ûþÊ7’^ÀÔñÁ”-—”=ÇYèt•Ÿ°©1ÈL¦FÈŽ‘§ˆøŽX€ÃÊ.>7Õ[[€üAo¶ûZzuDy‚‰š£MàŠæø`UàT‘1lËhå2`ˆ"f4æC !$x&¿³Mîc‚‡1Ý⊿zT9Û x„âÃT|ˆ`Ø ²¼¯â n7¯‘™· kíoæ¢Å ; ìØfgÑ<j£>£æ»`˜,?»€P_×.;ŽŒ9Ó¾ÊÌîÃÝDG„È÷©ÔŒ6–kbÍÄ ‡Ê¯°@†Z×áñ/ MÖ5åq\ÍÍŸìþ¨0—ïÿ˜F,YÔ4׎kg††Qq‹ŸSÙ0‹ãÛ‹¿nDS²˜1.b×¢Úe~»ad»„H£¹‰6I¾E3a,4ë v i™ÒbŒ1'’Œ hp PáAÌó´wVìê$cÜÓ ¡ z“¸—öX$bd{÷ì¼ØUnµÑ$Œí~H\œ¯†6ˆ”`æ€&†^qxâJ|ç=ÊÀ˜³l³_àï$ßà½ÏExê¬ç™ ™"f¹…‘ç7PÀ'46_ZÜè2RçÂçA, C³8¶ï¦Rj_=Uv %BWv é Œñ¸¹´.ÌîX÷:+¢@Œ^ÕÌî&Ú2º•%œW0*“TÞ~·LÞÌ‘;o>ž*C°Ã;xjè»ÖÕ«æÉ,Åkv;Ïðúi6ˆy°L7E3s+oõn±ðË{ƒG3ýÏ ?mЮÛÿî-Z"[¡©eCìN{ÖzÏþ4Åõ[ëý7zß]DáÚÉqa)Ç pKæûþì˪UTÚ¡ ÈK­S\$ (ð* ±8Çœ?bzoZûxó Õ|Âòž­ýÓ͘xMåu 5yœjÌ€ÅÊ÷3x×€‹ÂR’éL~îÂ#~·‚½>ßûÜ –›˜`pµ fa›rà_õ(VÙx~B–(î„éUÁe´»‰cT] ©©*4ø­bûǬ¥¸ðo£úË<6žÃòѱã›êH xBætD܇v¯ •¨mAÎô:§3IÄ\6É“OÈ[ü&ÏiÙÁ ?=Ê¿„qoúÿxà^ö+‘É€Ù7ýæF’ Õ9ôù7™ØOó Íð£]Èër$xBÏ»Ò"…âB‘á×U˜hˆh³Äl'Îc®Mà/?¼¾Àê|Œ"€[ ù(“,´zZ àÃ~yV ßÁÞm\x÷œ†~!·"3ù£ŠÇ·¹…̤/mc¬úçÖ!AÉ/B°a|0‚©|büvË-0@ïÿ4ˆ£c|•p6S¬­x_3;¹Í„¯¼¾_ª­B×Ñ^¬îJô¼4‹âF¿'ÛïûhÂÕDÂFo *´Lʱ·woï›HaýaWr\ ^9øÛUMþ±NΩhoÕÛå™i¾¸ET ¦ª|Ý…‹uE9ƒNëü5wÂFþ·< ‚Á –䢿Ííxrûš|e¿°Ë?/9½·œ*§¢Øú²Œ¨_x‘_ ;†¤U„¿$¯<Ÿ—Å­É%Ÿ¬Hï‹v,ašå-k²8m2\3Á&¢(ª =˜ á0-ÌLa,OäžAŽÕ9.=Øp‚S©Î«NeVöùÞÎy†°løWҪܺT6duŽ”obW¯¢àÏdQ.˜?§­ªÙ{á{7“©èE õwk„•ä¼!ö›ÚœäLÜ\_{Nh“O^šF ƒwÕëWì8jŒpþrlRˆïx‰¢yÛt+ùŽ svök¨VKBv¿¿Ç& p{s£ý›h-(¦ÖÂÄÆªžÑm³ T¾Æ\U¨¡‹•p¬Œ D†…]ë]ÐyÎárF *›‘MY)††H9~2‰e j‘:‡z%ìB1×tByl¿ÉE»0“yneè—§ ¸Aæ ¢™ÚÝþ-NN¹"=ÏÌjIíÄ<”$¯8ch3„6~Â4î$·ë$Lv>©NlNcñ?ÕÀ©,ÒÝà’«xxðb¥wq~õðxÀއÔ;ÍŸI6’.9dN”ú9C!ÌI欈†gu}ê§j<Üá© ÆÈOÕ¨“ÍæOîéLË13¸ý!k„'weVþó¥rG Ž>ê¿cÖLô:–‰u‡ -8bĹ'ƒgËà¡UÿPK ëDŒ<€A<­œhtml/ch06.html­WmsÛ6 þÜý Œ».éµ–'M¼Æò.}IÓ^Úæ–îå[ަ —„"5’²ã?’©×ìVß9)xàiîJ9›æÈ“Ù>Ӈܹj€×Å"f¯´r¨ÜàóªB¢YÅÌá­úóÇ rn,ºøÝå§Ádòü—Á ꦮpg‡ÑÏjn«ãS©—ð+žahlaI•Àé°‘›ÊBÝ€A3ëVmŽèäÓ˜ k‡w»-8BÔñëYƒ]ñ’v3Th¸Ó¦ùµ/µ¾¿.Ïár£ËÂ{ÑÑA4b]¹.qm»P ÞFž+ÙôPcvY™Beð'Î!Ðú S4ž ¼­‹{ªêê;)ª .6þÈGÏí訯ìytÔúú“ËÑÀ‰p…V€·(êö‰—ñî©UäÀŽÚC;÷ÕFãN/…®ú B:fÓƒ—˜ ÞjI„ÅåÊÂR fS+LQ¹nè®ù‚7»”5=ZpoÏ´uÃî.óÙh_0ˆcH´¨K f$µàžRTí´Ðò ü ­äph­Œ¼h6h½\.#ö䨫ßhXšÂán­Ð ^á.{¼ÿªgˆw<½ƒñX øšQ$t9Ìxtmw6;_°Ùy¼ÿ†t›-Ø“€`Úî<Ôݗφ‹ h WwÑU†®ÝÚe¿Ÿ ÆGãÉdr8Øo9vŽDWt3_ë’ê#]Œ]¦´Â-b'’Â{NyAj©ñ)ç.hgQàr÷ >ý7*Ùûa(4Ó¹NV0Ï(fÚÄl™S(Õˆ~Ìæ’Ô3𹳟Fô9=e°hדƒÑhrÀ€÷ßϦI±!¹µ”Ì|á­ ¡mÇç„cY$.ÙÞhô˜­Ë’›UÌ>òE‘… ‚;yCßœàJ[q³ý`*£'A ãEPÊrâùo²¶>öÆ[eSW8p!ÐÚ$8Õ½÷zvA7~:䳯*)NÂVéaGéáF2ßfÞYî6‚=êÞ20ûH±ñ(ûÝ0ø–Z‡&÷÷b@ý ò`@r•Å U?D¡ªø¬j¶Û?ù¸÷>8¨)å)9{P6ÎTwÎ&õíäã5Æîß ‹Âíý?´zQ—ÈÍ ˜k—?€Á PÎè¤ezMg¯%ô®ón‰*T‰¾Dñª’ESmSH8õCªÆ–š,ù* Ò\­ ÔI‘®Kí›|6§ÝZº‚úÔ–@§Ëìû¦Ú õ šè?•ey€Åe£¡5G¥˜È¹m0ô9Ç蔘6gHKé;ïµ¾“4•v_¤@ϯ)hÇÖU¥Mš·ámQÏ 66}S§©‡\ ­«¡›,°ôL€C\0È>£û^–…{è ©­jPt4cÄ­¢+]÷ÍÌhÞ@bgÅ¢uÐúþâä>E®¨ f­Ç¦ÃjÒ“ŠñÔèºÉÓ=þ¬‰ Ö?P›ptçÈ)¤µ”+ ^ÙÚ»›Œ¯Ûuë%ß ©L¸œ|ïõPä“|E ‡´WÓ A þÎ sG~´ X’+š3‰&/(퀺9f¡å“`¢¿PôÄ(Ⱦ67–;J0‚dæDN'7á RªUkiŸ2Ä;× «j8`í1h3‘œÔV%R.%QÔtCy»‡ñ¶¢&åý—S½5Ê"å-Ó ¡³¤6¥$ª nâ×½ž›qè\ëêÔùb ò“ÆzF‘$“’L¤Ð É›…6Ô˜†×v("š5ضiá¿LW2½EBÓ;?½:˜Ìq2N9;^¿3Xj÷t÷¯¨ô›oªuèC¡3<°oÎô{æÁwì™÷v¯zf²Íüwé™ß`‹våtÅfåN³;¿çGÉìŒÅêóEmâ¿î#ÚKã'C?&ú_¥ÿPK ëDŒ<™hÍ«%html/ch06s02.htmlµYkSÛHýÌþŠ^m%!5H6%^°ÊdÂdRL–ÈÎ|£ÚR[jÔÚî–ÿýžÛzX;63,UKjÝ{îûÁ0±Y:&‚Gã¿1÷3Ì„å,±¶ðÅK9yUnEný›E!<VW#ÏŠÛ£÷ÏY˜pm„ýrýo0øç¿üCÏ‘ZiS1> Ž‚×ùÄ穚_‡ª»ÚHR¡p ì°W¦2¿gZ¤#ÏØE*L"„õX¢Åtä…Æô–w\zÌX‡®Ç•9Ïp7¹ÐÜ*ÝAþ“ Têžýq}É®[Z†ýç0xwô½.‚De¢á-óH<$2xÔ‘w]h™Çìw1a$ûML…&™ØÏ¥ŒÄ ©²h…Hú§«tN; b¿òœÇ«*Z!Th1{!R9”Ö!õn•Ô»šÔµK''Ñ$ÿÝ÷±ÌÙÏJÅ©`rž.¬ ” ßM¨ea»¦¹ã3^Ý…sìíí͸f1ÿb>+cÙˆíï{ätæÌc£‹TXf0Vª[©ò ÐʪP¥oÙ{VŸìõŒIU7p=ŸÏïí9‘o)̵´b¿Ì… y!ö½WÇkpF‡£7ûa ãæÅN"Ÿ7¡Êz1îÌ›Jš7¤yóêøhöª+\xo‚a}gW]0Ôæá½ÐPÇmÌmp [ßÚ÷¾}ðÞ ƒSÿ¸–±óJp‹üIe\æ_áøû^®r±á؇f¼„€¬Õ¥XsÊÒ—+Ü™I1ß$¬ÿ)6Û¾çòÉp¢¢›Ä°™Ò#ožÀ ð,ˆ?ò&)È{Œüpäý£Ÿ‹ ÍêëÁI¿?8ñ_}>FrÆÂ”Çå3â"4n[>޹Œl2òûýW3e–q½y_ùLÆÎƒØò¼Æ'ÜÔ<yÇŽUŒo!†Žìž±ˆëèÑ'j@†šf*¦°ò3†Â˜{Tk2Áø Q=ìñqÅT#‡²¦xÚ¡¸DùýH¯à­G¥eœVÍl\þ4!Œ¿:iù¸‚å$î9µ£xÐwXfÅßÜ\1xš}2Häx"@[sTLA”ө %VÇ5¯Ýo44 T!uíš‘gȼºœˆ) Sùyl ÉyŸ„–„:vF­}e"H‹)ªsàŠPц¦"á~¿àß°©ÔPêÂ=[ V*Éø†x.–„üp% ÏZº}ÇY˜g)y\£¨¿NíùÊKs"I}ËñäýC–²WHÇh7á÷ +)S~»¹ðÞ{”Z¼9~ÛóÍ„}}=>‰µœ”(¸c°ËM}nôøÜŒ§%ÎtÛ'ã:Ú)„s¥ï¥cþDd¼7bêÕÔša ï³#ŸÁ~ìXõû‡½?~½¼v¬}™“·¢yÝ·‘gî˺…|Q%ÔÖý<‹N¯:â×—þQÐLäu]ÀñÚèkµr‹ž{ÞÞìF½Ž¹ãpm-–õO¸ü:•q©E]f´¦Ô¹&f(?5‰ûÒº©oȺ¼(ã¶›Ìq·Å&•†Bþ³œàÒβBLĴ㿆o{ô{ÆZÚ_®>l§ú¥àߥ··÷—Amñ3göªÜ)½C@Ëh›#O[Ô{w èTÚЋ]ˆÿVŸ]ñÒï:éa©Ø¤µJÍcB;K[ƒlýì6Áî6˜Û{M›ƒé9r>‹JëîÕ½Í/OÏ_Ä‹¶êc{v7·ñAN|’'kÜl ÇÝy ^[†P¦Ïuü2nãšæE5}é NÄÏq™ÿ (tº¹á®#®‘=‚´Ù÷:þ³¦ qÇäSïÚ4qËæ ´˜Ô)ºœŽ[~Õ8º®¼*õ;µ4gžîϧҖы8þD)š>RÕ£™f—ZɵÝ,¥xdˆV½jRW^(…RZ®ß© /{V×Û›§Ñ&µ@ÇiÊÐ4GÐK»¦‡Æ–‹ùºòö©ë¸Ï›U]¡^®:]A_!GNÁóM2lªUæ@vEÀ4U•b’Á"Dÿ¿¥ 4Vϸ–45s0vÖãîbeFvŠ CŒÇ5SÎêÅmVoMºÇÕäŽú§ÏjÂx*rý†4´8×e˜¬R)D5afJÜœÃÓ9_˜z²ÆÐý,ãÔ?˜– %-xä»Ù¹óÜMÍ´Þ³øl¾ÛQ©Úe´ëÚK¥Š ’éÑš–6¡Mÿ›âÌg‚\XªDhö”Ž„îÝ™^ålÁÝêÒ½»Í|ÎÖó6Þ†2b#æ]^Üž &bp4åÞyóL‹ Sè†íãQV—ƒS¥ÜŽÌ­§v\¶ï¬.óN^j™·v×,óVi–kh~+–¸õèþúRo‹äºêʪbûþñÏ Ÿ¬ù‡Ëø³ÊÄnò¯‚¬@¬ÿOÆšmf½¤Ý5-²éßcÿPK ëDŒ<dÃÕh html/ch07.html­WmoÛ6þÜýЇ.. KŽ“%^c¹H_Òvº¢n·} hé,±¡H•¤äx¿~GJv¬6^3¬lˆÇãsÏÝñîäiáJ9›ȳÙ>Ӈ¹jˆŸkÑ$ì¹V•~XWÈ mW sxãbþ Ò‚‹.y3ÿ}8™üòëð¸©Nâì4úY-lu6Ç´6Båp!õÊNãvw*…ºƒ2aÖ­%ÚÑ1( .–ZßJ#Z2pÄ£3ï׳–±â%IsTh¸Óf‡è >Óúþš_Â|‹eáÃèô8±]….qc[¨ o"ï!ÙôT6¯ÿ?q|€÷¸Dƒ*ExU‹ {Puõ€*ƒÍ6ÅèÄŽÆ}°“hÜEØcÍS]aïÐXaÇ ¼q=På· §_žnA_¿Lð>–dæ)Áý8>Ã\(x¥u.Ηk'RKÁÏp8œMmjDåvSö‰7¼•ÒyðàAà äü7ûZ[ Ìß=û„A’Ù´.)‰‘Ô)wB«¨2ÚéTËGð:Í8¶VF ž´Z¯V«ˆ=:óð[„•µB›ò ìáÑóŽœ5irÀàñ-ÇÀòàÑo<ŠR]Æ9>ÙƒÖ›ƒ/¼9xxô’0ãvE ö(0˜v’ûÆ¢â9~0<½FCá¸Ê¹‹®rthÀ>žǧãÉdr2<ê|Ü9]Q¾Ð%ê-Ä€)­pÚ¹¤4^Ò Xgj¼CËù‡w$i®_øCÙ©²ý¹C[™.t¶†EN9Ó&a«‚Ò@—ŒÜOØB<+öÓˆ> šn=9&Ç x6ÍD©äÖÒ5æ·‚†ÄŽ/ˆÇJd®HØáhô­Ë’›uÂÞòFäáÁ­¾¡oAt¥­¸JØQ0•ÓSJÆ«ìm\yŽûo¶±9ö&;‰K_pxš¢µ×H$ª;«xöŽê{óYk‹€³À«=ÙÝðÚjûÌ‘n«Øc¡î,ûÙ[ʈgÑÚÞÅ!¢4ü3½yêù•'’«Ê®@øøþ2`ŸävGÝܧ`Q‘@4eM “V~2„m­×®ÐFüMƒÈÐkZš·þµoϳßMÁžë^¥A›ðB%¹#ßË=õ±¡*ÈiÊûb§BYëÚìFH­¬¥@bƒÒk Â÷wÃ묄”Ò´&÷6ƈŠÏ,à -7ñÆU?]Û¡w©uuA‘ÿrØùy²™D’t–¤)tñ Sm¨ýÄŸl,Ãx¦‰ÂöÍ„ÿ2;®äò*Í vyqu×–Ä7ßï]±ø¹ï_ü?ŒPK ëDŒ<@w%P«! html/ch07s02.html­WkoÛ6ýœý ŽC…$ÇÎ/±\¤mÒt²bI·}3héZbB‘*IÙqý.)ù¡TÙ²­lˆ¯sÏ}ð\yœÛBLÆ9°tòñŸq–‘ÜÚ2€Ï_Äô­’¤ nW%P’Ô£˜Zx°‘;J’œi6þpók0ýôspH=ÜØr+`rÂåÌ”§—jIRE>I¥02jùzÕÇ‚Ë{¢AÄÔØ•“XJr ó˜&ÆDÛÙ‡”X¤Ô0qãIM^²g3 ™Uz‡ó;•¼QêžüysEn6X†ü~…}ºË W¬ms™ÂCèœE›ŽjLoJÍeFþ€¹@Èo0 2ò¾â)´ ªrãDÞ?nã7¡¹qqˆÍ´Ž—ÿ @b€vLøcØ ÜæÐ$'%  À°!Ô÷Að2.É{¥2äL2±²<1Ú‚`26‰æ¥ÝMÈ[°z‹aoooÁ4ÉØ/æRKbÒëQWdæ„’8Æ¢H*g+*a–+–ZY•(q@^“fg#BJNê /—Ëœ:ø ÂRs ½J‚IX =úbø¶!gtïSòrKã%¡™÷(`kÂDQÆÂ;³_{³ÿÈ›ýÃsÄŒêèg0nfž‹’ep«YrÃ1͘ §ØfªG?ƒãÁh4z wŽ„S¼pïTÁ¸¼ÆrïQ©$<±íL`E\a5 ¬Õtì²îá#Î,8,{üÁìŸËôéÜG^?Æ3•®È,Ü)ÓeŽiÀC÷c:O‰«È˜þÐÇÏÅ%‹f<:ê÷GG”°öúdœòI3K˜-œÐ8mÙ y,yjó˜öû/(1UQ0½Šé5[ðÌWÙî×øÍ‘®0%“1zS>%X0nËs*GG=’û¦kóg½A0w—…–$`Ì= ŸŽ›?ùˆ÷y±ImQSϯA|µƒ¸å×uÇkRÝ\4Ïr$Ó˜hQ’R0¹ÆL9V5ïjä#ýÁ=c2ZÁÙCÌ)“YLA¶ÓåuÅUX=ÝüäƒÖ:¦Íi0Àô ™)›ûøÕîø4p» rX…ËHñéÊkÊ»¿¥¿}›(º½pè †û*­™Ëåpq"þosÇHæ\Ñáÿ”bÒ—Z9®\çã´à”DÕ]H¿s]\B¢ŒË]øöúªÓïÿú[gŸz¸NòáQp"çROÈžpÃUÄÉëRļU3#²½£6ÎQí–kt ""šm-/ /ؽÞ2F¯FyLbMÞÖ&Œ$÷¼§À]m¸Ãe¸Ã…XUÄÜyÝÁZ]ëпüs§ó‚§B‘×Z§’“SÅäԉȂÛcÞé 62¢p‹ÁúÌÆ¬z I²µµ5f†¤ìwûF[GB²³C1ùì1%aöD%fI uÄPyPít¤åòœÔ’Ý®µ2 ä¸z÷“É$ ON~†0CøN©¸XÁw裃—59k¢p›’§sO M½EÖXD:ï¦,øl·+k¶—¬Ù~tp˜ÝênèÏ`P?y¨/ –ò†E·Ü€;nRæ‚›”»úÑýtÚéõúýþ³ÎAmãÂ’à ñ•ΙP—P ;TiÅ׈JëäÀ:SòR/ÞÓ±à“%{ úg*^û®ï+ƒ‘ާd”BÌ´ é$ƒ0@ºù!I€§ó3¤¿ìÁßù9%ãú¾¸·×?¤„µß±“H2k!¡Ùµøltl<&"vYH÷÷öQbË8q-. ™,A€6ް´~œº^[K¢^õ³K»‰É‡«‹³›O×g¤;#Áztï¹Ä¯óN6ü^ûè}eû8h·¶Š¹lÕ5šÃYôHv°¾Wøàn×Àë¶GñÉpŽˆéË yÀ®iY0ã3“ K²>WΉ´ÈÖ'þÖUǰ]Ìp¨?™j ‰DD¤1™-iä:Gðò@€~–B+ X,¥åfÛÈu…Ô–Œ€Ð}Š~ ‹$s80¥pr@ß^B?2{·fiXGõÅÌIX)Ý.Œ.$#hqñ:[1¦%¾‡îsèè¹PèdæNt2¢Ó Ý€†êGtÄž™ý¡‹”Lüuÿ°ÛíRÂÚ÷‡ƒ$Ÿ˜3¥0”ÙÄì—5!ižè,¢ûÝî3JT]LÎ"úMòÔF¹——øÉ.W+#Ú³[¥ø+Æ€1"O«^ªl1Í'iˆ—ÃØd"#,ŽA©[@fÕʤ~Ät„lè¶GàÄ’õ ¯@ïÉ®ª!Ž×j:2O3äã·h±*WÖ‡át›aåøXmCkvl$æ7z¦å¬BzÌÊ4¢P¶}g‹ 7·ì¿²ƒÖ}ô¡)ÑH„“Çd$tfMèêûuì(ï˜÷Î@$ù$ïe ýÅïʦåŒóÒX´ÙˆÈ»Á§Ùp £™ù](à¼3Í9'¥ÐÄ”+´Á½4[ù” L¶4›ßt¸©’¢Æ:Ÿd$1±Ø{BSÙ½b_¼]Ü3ÌUVU­©„´ù.Æ6ÇmÊÇM XUoN-Ì™…8¿‹¡2²M±• KŒÎ¤˜º¢uáŽÐ: ΰ¹˜ÕØTL9\:.ÚúS+ÇëJQ¹ªˆKÒ¯ñªÔ†*ØmÞk£Y^}Xi„™ùjí2sŠñ%M² pRWxªØAð˜Aj,áY>ÂãGòÁ.rš+p¢Žš$›Ù²¸Ž¢7ê7[&—ÚÜÁÛ\¯Ýæ6µ´K ×ÖÞ`åq^#gçÊ(ùUS›ŽYo}+3a3µl…š´VÆWFOÛæØÂ¬¹¶c)ðd5bʘ÷ý œuš6ƒ¾ ±#÷H”9ºž­2ëï¿8Ƨ'ëlm¬æÿ{= ÷¤‰0<Ú¶dåVìÈÙѸ·‰a)\Ïœ·öÆàŽÓGVƒÐ­Í]* ÅP6c31‰§ýˆÞhQáQ`)‡æÒóɈ¹deCã sDB ㊑¨ZMY­¾¾Ëÿ·¥øW‰7wË&¬¶0’ÉöMÔW†ð6‡ -NÅÌU’•‰¹Ô{Ö÷õ…ˆð]ªiS‹Ågþ¢àRˆê¢¶ÕzA`fð&…8ÊŒQ&(A›sƒ„XHÙÂ/*tÙ‰S8]7G?eÞ¾áã›8OpΦ—7‡ýôÆŒž4÷$`.±5sïUÚcéX;–ÙÁhËÑtþL{„<ü†#äÊA°!Û°õÃ÷UÃÏÕýø·šà7*7èO&þÊÉG_|}­òÙŠ·~Ãw¤ì6ú·:[½U[1YûD2ïQÌKóÚö_PK ëDŒ<(S¿½P®html/ch07s05.htmlíYksÛ¶ýìþ \ÜIâ´!©§%Å¢:Žc·îx’Œ·÷›$—›"xH²ÿ} )‹²QM&ÓÎT3–Ep±8{ö×8VÓt2Ž“ˆùŒ§ ‰•Ê-øÿ,™»ô”g 2e}~Ì¿xr©‚åèþÇÄ™ Ü‹ëÖpØYmjÔU¢R˜ ì¾ý2ód~ŒªÂ$š‰$‹Èu^üŸÕãØ)„Çi’Ý©K¥zLAÆŠ’X@èR_Jç©ÕÆGJÂ*ÑèçIa@ƦØA‚).Vp¿çþ;ÎïÉÿ®/ÉõR—$¿·íAÏnÑU1ŸB5v’ð`kƒqL Õ¥¥ €GÎS¾ W‚€ÌòË,  ¦j–/ˆ[ƒºžAIOÁjÔÚd­{.`¾ª@¶zë:z¥–Ï1,YÕŠÎðA%<»L¤Ò„ÔgHÜŠâa]ë°ÔiÌ»Èb@¥ Dÿ±¬w%ù…ó(r’±ôQ%¾Dª°¬ÉXú"ÉÕªƒîØœ­ s&HÄ~“¿r©ˆK©<ù–×%÷gSt™rŸiüv.¸â>O_“ŸI)é8R¦6%o‹|^,6}}¬Õ/5,6Î2>Ëá¾èž–à¤ðÝW”üôã'B#c‘Å*‹lŸOˆÙwòUaÍ«5k^½èž¡N§xÂúÚ —-M¹ÈYŸóïA ·Sömªl:¤7'VgЇGV·´q¥‹}‹IøžOY’}Àð?¤Ï`‹ØIнÄ(@µJÌ`ƒ”Ò?>aË<Åáš=èý³,Øî{ÇÔ”±ÇƒGâEè3.\ºˆÑ [h¾K½ÕS¢#Ñ¥ÿmáçüœ’yù<ìµZÃ%¬þ~2’9ñS&%†.›ëQL@+æ!ŽE¨Ø¥íVë%r62ñèÒlžD&‚È“¼À¿á¦2g™K»f¨ù0Z¤iÕŠÑX£Mÿ„ŽFPjL!Da¾RÞbÊ7&óä¦ùØa“b`T˜¥Ò£¥O07ÕŽ×f8"‰bÄSQC•=¯“è- ©cLu Û8oèßèšW$øª~eYäRÈê.3eEGYÑ\~ÅÚ{t®Ëˆ"&Þ«ØðWõ ´déË/cü‹Rˆ´¡çâN…~õ;7ɸ&Lb&‰àÞ ëCm@ÂsýOLæ$լغû‰$0ñHXž§IQ½Ã|lžžé¢dt&8ñðEF*s°&ã¤+@ È7Da)G»Krf:*•ÕN*TîÛÒà ´àâÞæ"rж%SŽÄäsD5EUuž ,0.½U<§“u³—ÒËblLÑ$“Dx '9æ2ʼnvXfÚ—„TÙ¦~äÃïЩ…}ºdT&êßtâáü¬¡‡¨CY7N }_ÎýJR²iŽã®pþ°ôêLÂzLßÖü‹VfvaÊ¢Á\öÓàÙÓ-ŸCúdäZBtöLˆn=!¿U8¼ÈaMC¾»=ä>?Vñ§ÎMìë(\ÒžƒŸ„z8”3?&ÞzÂF둽›«KiøJ9®üæ3E¦€KÇ »¼6ï¶„›á‹L•¾´PéWW¢×8íàœ Ó}ƒïßFô"%uE¤R¤üF_¨b E#L®WP†â^¦êx¬§ŽJ"N-ÅðMå›·5ZdBÖ%™R"ñfª0Ž—~,¥Ýué9Kg(Iõ훩96ãôX8åò' _" ñ.j¦A‡fpp†8׈yâú1Í540BOm»Œ¸‡W ”U$îRØküAwØñÚG~wÔ÷üNßë¬Ý ý°58Ú™Ñ;ò™#‰^¾|ÆÕÇ˳ۛ볫7æ×õͧ³«ß/®?^mpÙw'Äb¥´}ÒÛ^·5j·Ù!Ç}ÿ(ìµý£Ñàˆ…Ž×ýKú„Þá’{úø-Yïü#ß ÃVÐë´{½‘ÃFx7lu1ÜÁûÞ¬ÿX–>W¦¢¦$z°Ó펼°ßŒŽèwû¬;ì!ëmváo@rƒéo[ÍoеÁ4X¬¬l96ø.»$ܰ[¤jçvºÇé"Û¶I)µU›¡0IAo<6Hâ+µÜ½è½G±¿2›ÒDêø+ÂÒÔàöZÚåþ e‹Îd‘àëÔœç\ß×wUU7³§*WÕöTõ`$ã2)-öºªPÅRÉ :·mŸèµÔ{ÈÎ4:C”Á_ ‚Û¦D  9:„´-ú·ÁeŽ5¿r[U‘ÖpIUˆ[+…@÷)–ˆË³q#sãê}{toVÔhpÓºÒ‰‹èÙ9ŽšBÜ~)èSÊ,*€ážæáq'°õA¾¨Ï)ÜE·5Å}4úgÐŽ›ܸ*ì—­ôq~Ü>Êæ;)ÜDËze+¾—w$—œççúÄiínD_?TGy)Ê„(cg  L(LVÎtŠT·ïê÷]«Wû\5ܦ᭟Ä%ôòü¶7ÔëÑãê®?¸`[ŽüŸ™R?‘97çÒæp¸á©ü²Oý ½÷ ÏÐ7ž„Wgèuµ³çu“›üé|3À¯?Ußa<™—Oæ¤v뾿ÊC¼áæsò+×Ù„Š:ÞĶëÄ w eé $}›¤ï©ÿPK ëDŒ<ŠKý®Ìª html/ch08.html­WÛrÛ6}N¿b‹NjeR‘²ìÄjL*ã\œ8ãI3uzyó@àŠ¤ ,IÑßwR2™H©ÛF3Ò·³g/8K%…«ä4)gÓï |’ ‡Â¹zˆ-ÊeÊ^jåP¹áÇu D3J™ÃO.öçOAÜXtéÅÕ/ÃÉäÉÏÃCàW:‰ÓIô£šÙúô\ê\¨M鸘ÄÍz"Ku eʬ[K´¢cPœ§LXßÍF4dàˆIKÀ§ gÅ+šÍQ¡áN›ÕWZ¼Ðúþ¼º„«-–…ߣ“ãhĺ ]áÆv©2üyɦ§š²«Ú”*‡?pÁ_qŽÉx³(3ìA-êoT\nãQŒNìèIì$zÒÆ˜’5/óEÀnM\¡ ±[÷ ¯9±£qr[È sϰ¼ËÈòá_òîìs²ðýpøóRÁ­s‰p¦¸\»RXÊF†Ãá4±Â”µëæð†pšY*›,¹œ¿³oµuÂ`À|9Úg Ò2-e5’ZpWjÕF;-´|Ï¡ÝÇÖʈÁ³f‚Æ«Õ*bN=üaE¼q°Ph¯qÀ½lÉY#Òïh<–†|ãQ$tç<º±7Ÿysððè5aÆÍˆìQ`´3÷EÍsüh¸¸ECá¸Î¹‹®stíÔ€ýv6ŸŒ'“ÉÓáQëcçHtMWó•®x©ÞÓ 0¥îÙv&)Ñ—T$ëÌwìrþáÍ,K\ >ó‡²ÿZeûs¥If:[Ã,§œi“²UAi º#÷S6“ÏÀjÊ~ÑçüœÁ²OŽG£É1Þ_Ÿ&Y¹!¹µTÙ|é­ ¡iÇgÄcUf®HÙáhô]T7딽çË2wû } ¢+mÍUÊŽ‚©œžŒßò-+È¿à¿ÙÆêØmA$Î)­ .Z{‹D£Þy±§èÊ'1Ÿ6Ö8 ÌZЧÐ ³íÎbŸySæ…Ûnì±P;µ`úžrâY4öƒwqˆ)õ ÿLaïÅžAíÉ€ä*Oª~j‚´øjj¦ÛŸbÜ[j´ÜËΰ#0´Ddö§ o8u;, wøÿØAhFäªDnžÁL»â+ŒéÙ-„¯³ ýðvÖö‘¯ƒ œ®¿Ü_T t“mvz³ ®@ßùBhÊ[Ï+âIòá7G±7œöjÀ]p(`\N·Ù:îHñq‰Ò†³g„_U¼°þ0ý”Ô"4'©¢æ¶œ2œ—D1—zÆ%t([zJ6ã'usi(ÑØŸ¼eÈ]¢”Yƒä Þ¹§É i•£Þø$q½‰Ó9b2ïç.63rJ/TöNµ U§že˜ùUïsâ…j[ÌÚ·áQC-Í:³Nb?9…8ô@®ÖÐm ÓMá¶%^j]Ÿ‡˜õ[¡ï6›>%iÏœöD ]¼Â™A<Šol,‰*ê7l_Çø7åZίE™QGa—ç×Ç“NÆsÎN7k+mø…ÿ•¾ÏµšTâž"¼=Ó×Ïão¨Ÿ;Uñ ýÌö™ÿ&úùÞÁ²9]³é½ÞëîïbŸs±ãítú–^ï-}¦ ‰ÿòÒ¸£·´·Ç¿&øwÿåoPK ëDŒÜ¦²bi¶} héZbB‘*IÛɿߥ$?”8h–Õ€‘"Ïá¹¼W殣aŽ<ýÕoX ã;Wøm&æ1{§•C傯w%2HêVÌÞºÈÏ?†$çÆ¢‹O/þƒß~X7tÂI Â^ø«šØòøÔÂTê•£Ž«AŠ„Ï|Î7{ß £zîP ue̬»“hsDÇ 78Ybm´î ©ÉÀˆœoj=ŠÔ›¡BÃ62Þëä­Ö7ðÏÅ\¬°,üu¾> »l“A® \®-TŠ·¡×Okzª1»(Pü{•â zg"ÅÔ¬\‰È»ƒ6Π٭ ät½)-€ÒàüB(Ú¤MÛíßGé78Þ{ z [‚·˜ µÎ$‰âòΉÄÒ&§£¡MŒ(ݦ5×äwÝK‘²³³3ç2þÙ~ÒÖA óhÄ1¤:™dV(uÂÐ*,v:ÑrÞ@32Ь•!ƒ£ºƒÚ‹Å"dûÇ~…° ÚØ™)´ /±ÃvûïrÖ$ñƒk/€e•¢€/…‰.¢Œ‡×v¯V³wOÍÞnÿaFu‹l¿b0lzžº%Ïð«áÉ ÚŽ«Œ»ð*C×tuØåIÐ{Ý ¯‚~£qcJxE§ñ½.¸Pçø¦´ÂG†HrôŒb‚`™á–QÎ?|¡ž¹ÀEçžrÿƒJ÷>ª’Ëp¢Ó;˜dä™61[äd…ÉÙD<—1û¥K¿ñ˜Á¼i»ÝÁ!Þ~?¦b‰äÖR ó¹_ u;>! ‘ºž¯Ÿ«;ßò•:úD_¯O“Þ&W“x·à–:ÐäJ_ýý§€ÿ·ñ/PK ëDŒùø¿¤ËHemÁ_3>OéK%-H]- $ O)µðÅÜþS’UL°é»Ë_£ñøç_¢#êÕ%–[“q|?’SÓœ:†¨‚œ µ ïdš[&3HA4\Þ "¥Æ.˜ ÀRRi(Rš3èVc|¤Ä¢Æ‹{žø’Õ¸Z‚ͬÒ¨_©ì…R7äÏË r¹ÖeÈïGñÓ“xH7Tª†•m.sø;wѦƒšÒËFsY’?`Üù ЀÎ73žCOÕ¬Y;Q Ç}=ã68Û1é)h4Ì7U˜áh[˨ÕóΩâ*"ø ÷lÎ6WŸ÷,HŒaßÂɶ…“ÖÂÙÔXÍ2ëí¸ ÿE/ ä’¼Qª@Î$KË3ƒÏ!Š&‰É4oìfº>#š°ŠdÙÛÛ›3MJöÞ¼UÆ’”PGBóŒ’4%¹Êf5&0*c–+7ZY•)ñ˜<'­ä``Œˆ)yðy±XÄôñ©S¿Ö°@ïá`&Ád¬úðøe Îè,ݧä§ÆO„–Þ£ˆ­<Š3UJ6ûÁ›ý-oö¿Fƒð„ô±G´+wEÃJ¸Â(߀Æp\—ÌÆ×%Øvé€~:‹FOGãñøItÜú¸±%¾Æ‚|¥jÆå,†*•„[ÄΦñ‰€j­žÁ)—2ç°8Øò³ÿZæ·ç~àûK2Uù’LKÌ™Ò)]T˜äºŸÒ©@õ”82¦ôÁÿÎÏ)™·Ïã“áp|B 뿟$9Ÿ“L0c½lÆe˦ˆcÁs[¥ôh8|H‰™Õ5ÓË”~`s^z‘N^ã¯B¸Â4L¦ôØ›*ñ.CÂ8‘»u° ]õºÜ/_9û­>f8a„esˆ¨ÙYÖ“XðÉ€M‚YTœ{­Ò'J;»ûH@¶æe…ˆZ#=\rg3˜|À„9\‘÷wàŽÇˆ»Çœôc ³G˜Z&Ë”‚ìgÍwG´°Ü^ªQï=fÏ5j"€égdªl僺¼ëAÑFW‹ÌA¸®„(j´Â½yÝòatOŽû>| oä–fÐ/n6k„y¼ fãÆÞîM„’CÁ%ädº$¶’¸ª\as÷tÒ0<¶0©îiB˜µšOgÖÈ-;Ø•<ð}ÕøBùN;u±Âð  žÈˆFpl¯˜pR娀´!V­ …Vu§6«¸Èƒü‚ Ñ“"À²Š?ð…‡­4V7AŒ³†FYž»»EŒ°°kµ“³ëvi03a”³ÔYﯣN¾à©A—`M½Û]ÒhÑ®·¨J ­ú ‡€Qho(4˜O½Ž5q¥fµ†ñdx$ìiâzÔJ¢‘eå*îÍ„l ¬ÓÑ%Ú ¦Û‚s&f(D]ª”Œ°å£®SšCÒ®‹É3´Õ𨴧-n ÿSÙxD¡n.Ýí½ ç–]Ž5†×\àIŒÔ(v–×!/àQ®¤XâÓëµµ"¦£Iˆü!¾A"²Ü1ß-;Úc¾×T À>I?´mr‡ÁÖrBÀšôÈfwŒC8{†Tw¹ÃÅå¡·ÕÙʺWoU©gÈj&›È綃tŰY¯…Ò2ÇgÏr¯tÁmåiÏlûZÃF ˜:/ÄdÛñ«u¼Búò Ì ¸RëAjø9*`;G,.Â>Œ¸Y%„dLJeû>"ùAæA`UB‰ÿ±0;Ew(Ož³4],ZηzRþzÐÞw°ÿ±ÖÃu=ü_(ÕœÏ lýn®^Mäe ”‰%ØÁ¦û¡kÔƒÏfà»´ÄÉšÞ6ßg†¾ÅuÆsœéÅùõÉx ãQÁèéê†ZivË,û•+ýQ³PÊ\~ä¹ã¸¹ÞÓO¾ãx¸sÄ[‡}µ³¯¿G'Ÿšn°Û 𻌋ßðŸÌÛ'«7ÔÞÿ³ö߯¤Úñ±?y«j¸[XúÀˆÛ¾™wLÏmI¹¯$÷Éäþ1ó7PK ëDŒ.}âßPï½W%/äµÀ€I%ñ ³AåqIõ@°V׸ÆÊ5èÝgš™8¬øCÙ?“éÓ¹) Ç*Ã8£œ)±YNi #÷#6ÏÀÕdÄ~ÒïüœÁ´†ÃÑÞ_ô˜B"¸1TÄ|êvAMÓ–‰Ç¬Hm±Ýáp“©Ë’ëyÄ®ø´Èš ‚G{MONt…©¸ŒØ~³UFo Œ3ùŽXåä_àžt±ëžÛ´8¡´†x’ 1wH4ªµ¦Þ·{pÚ0ë@ß,>2[/-³õ„t‘åĨۤÇK®‚øŠ²äxµŒƒ&ÊtL¸wJD/»Kùä2‹Ê~ªUqÕÕNwù^oRæ4™ˆäúÆÊæM[AwÑ÷ŠGw=Þå…lˆçÓùÊ÷t—ÿ«¦ë>Mèd ¾#éîìÞA* ) ¦`Œð“ÚÒ0-4¹*æ¾ûþB‚ÒTRÎÈÉ­€ÍÑ`6Ѫ]KI‡Åk·2‡„K‡GµyGhÜ@èšf ÷Îâ…kaàÆq»ÕèK¾ìpk±¬è£íi—×Àס¹B9­ A<Ïî¬\+tÈT+B8:6×j&ý¦É+ŠŽ~À ·2ÍKQKNXm {º¶YX䳜V%’Z‰aÕ€˜êbL\v®1VM§\ÔdÆœ.±Îh+³­±EN K¥ªóšb¾rò8q_ ‚l&dãK´Á Ç”Ã&qÁ­ œk(IÞÙSý_„üFLn’"%g—ç7£1Žö&œ/Ö4–Jó'õWúz7Qª‘€¦_¨yßôåêàÊÕZÉYÈU¶þö*­…f=Á"_ÏøÓndUåDöÙÕÿ A¾æZ¤ëæË¢ÐçÙ’x溶FÃ;)t´;­Ýõÿ_PK ëDŒ<i8ÿÓhtml/ch08s05.html½XýsÛ¶þÙû+Pî2;W“Rl§UdI½´Ûì²$W§ëîv;D¾"“€’Õ¿~R"õQ»ën¹³c/¼ŸÏ `’™"ŸM2âÉìOÌý›d8ËŒ©Búw-–Óà;Y*Møi]QÀbÿ5 =˜]ÍâŒ+MfúööC8½|¾ÜÄ“Ól½ŒþRÎuuý¶ÌH Ã˘Øë<•ø;+&/6ÉEyÏåÓ@›uN:#2Ë-¦A¬õ`;á3` 5zØï™W½äFS*Iq#UGãïeü­”÷ì·ïØíK³¿¿ˆ¾¾Š†AWƒLÔî-Ê„"k*ö´ªNƒÛJ‰2e¿ÐœÝärÅ~¢)²fýP‹„zPuµ1"Žú8£Æ1¤ã@¥hÙ…Ðë]”«çõ\ÅcÃÔ=”~ê ¼êC¼jn×ÚPÁnÉ@íÙä‹0ü–RQ²¤Ls­äùÚˆXë …ál¢c%*ÓÅg¾ä~Yprr²äŠ¥ü¯úG© ›²³³Àf—l:e‰Œëщrs#dUJËü9û†5’ƒÖy°±À÷jµŠ‚ç×~ƒ°‚ïè¬.IǼ¢³àÙåwrZÅÓÓ€}¹UãK¤Î¢·E±,)>ëSoÍéŽ5§Ï.ßsà¿ð`6 §ÁŸ‡øws°eó=ºGWãýùÙ$Kç\k¤-_Ú]HaØð9ôX‰ÄdÓàÅpø,`º. ®ÖÓà=_ŠÔeÛÊ+üdP7×/§Á¥Û*Å_1ÆŠa–ÜU£#±…TŒ–¤ÖŒr²¼ýÜ6›^“ÐB”ÂeºA g{eR‰uHȸo(†r­spÎK7šE®Ð«Ö+[-ÌJ:ÓL.ÚezÌ&¶‚Ú RQe\ Û_¨˜9@›/“¾Àœ9wüÆ"°Vxp¡sÊßÚ™Èóñ²¿YÓ¿ _ý/è/Ùí½[ï?õÍ~®¶·ëà þñ û#Æ÷ÓÇž ÿ[£³¥³¥eÓ§ØÝWÎ+qè9òè9w` ìk”}ÌþPK ëDŒ<ÎÏ÷* html/ch09.html­VÛnã6}N¿bÊ"ƒ…$ÛIvDr‘½dw‹ ]ÔéåÍ ¥±¨D"U’¶ã¿ïP’/ÊÚ»)2x=sf8sÈPØ"†y2üª_X å ¬-=üg–Í#öNI‹ÒzwËÄu/bmàö_B,¸6h£Ï£ß¼ÁàìÜë± .´™Íqxîÿ,'¦¼-ÅFhgeÔsažÉИGÌØeŽF ZBã4b±1ÁfÔ§.K,ã®?¬ùJ^ÐhŠ5·JoÑ|¯â·J=Àߣ­± üÙóßœú]¶Í@¨W¶3™à£ïü#›ŽjÄF¥Îd á®sµ€ßqŠeŒðq–%Ø‚š•/Tjœ¯ã!ºÓ=kƒ ü³&¾Ÿ¥@YòTQ[-0IaÛ;7Ý~ìÜï7` œL‰›Gœf©ÿhBúÑóÞbšIø¨Tš“Éó¥ÍbCñNÐ󆡉uVÚíSºçs^RR̹†”ÿj>)c!‚N‡¹d3 ¢Ï :7?W1·™’~©•U±ÊáhV1¹Ïࢠþb±ðÙñ¥ƒ_#,È}ìÌ$š˜—Øa‡'ïrFÇуW¯€¥•G_yäǪRîß›£Ú›£'Þž| Ì îQ‡W Âfä¹±(yŠwšÇ¨)ã”[œ¢m†:ì+¯ÿ¦? ^{'[[ü1Þ{UðLÞR t˜T÷,»Êé@o(ÖêîXe]ã Ì3\tžøC§ÿA&ûÏ>¨t$œ¨d “”ÎLéˆ-å¹±INð \BFì§.ý®¯Ì›þà´Ûœ2àíùa˜dsˆsn e0Ÿ;+¨iØò ñXd‰ëu»‡ ̬(¸^Fì–ϳ´Ê ج×ô ¢››’ˈT¦RjÅ”0nÉ¥ä[µÙ}ÉÊbßlrœÒ‘†x£1HÊe;üB|X["à¤bÕ€¾Þ]±Z¯ûÌë,v½°ÅBî¬÷á-‡cQÛ¯¼ ªxÒmàÚòVÜIâKGr.Óˆ¡lK%.“êáæOô[óU€j¥6U€=ãLÃDdwèEÅeû˰ÁØöþ+¨®r1G®/`¢¬ØÃÔˤÕ*™Å.¯V´{kõÝÌí#^VU'2M@Áµ0°T3 X•%°7÷CͦJÃÌ þr¹Rh@9Ï´’•àUµZ¶ ®ûF©òÚm~"ÔN W*šÓš)­ñ%Ú€Ð5ÆJSé÷&È3¢ I Ù>=û/º7Χã8KHïØÍõøt0ÁAÊÙåjNc¡4ߣ?_¹Ò–‡©RUÕTyüL‰XïiWøé VøÎºýªÂ“}æ_¤Â¿ãÌ›žUT”ßyW<ß¹6[±ã]4üD¯ ×oE Í±&ñ­GË}kêÃ]SîÎr/àPK ëDŒ<¢H¢—html/ch09s02.html­WmoÛ6þœþ ŽC$ÇN['‘4ô-톬+ævë·€¦ÎŠÔHÊŽÿýŽ’ìX©³$m Ø©ãsÏñ^®”i\ËÒ¤ùÄ%8F çªþ­Å"¡¯´r \ðqU%¼]%ÔÁ¥‹üù f,¸ä·éŸÁdòô(8  \ì„“…£ð‘šÙêd ³¹ÔËAæ"/mG­L,…º dB­[I°€£¤00O(·6ºÚ qI‰C6 ¿N[ÞŠ•¸›ƒÜ6[t_kþRë òyzF¦,Kþ>Ÿ†CºÍ Ð%¬u •ÁeèíDžjB§•*'ÿÀŒœ¢5ä/˜ƒż­E=¨ºÚQ ú8GÝ­LWÖAI¦àPzûpe`ñÇ^Îöq;_Gw/™œØ©õN7(´BÄŸ‚à%äB‘·ZçÈ ÅäÊ nQ2ƒ Hc˨ܶO¾°kw1öööÌœýnßiëHBêCÌS’$$Ó¼.ÑK¡Ô¼QVF;͵|L~%dY+CJŽÛ \/—Ë>>ñð„¥µËYúpüª#g Oö)yrEã ¡ycQÀÖ…\—QÎÂ/v¿µfÿš5ûÇo3jW¸ q·s×»¨X ã`ð:ÎsæÂó\·5 Ÿ^£ç£Édò,w6n Ï1Ý^ë’ õ#~@•VpƒØ ‰1z†A°ÎÔ°CÊù‡¸³°\³½ÿFe7û>jªG<ÓÙŠÌrô™6 ]èŒ34?¡3‰ð”øÀLèÏCüœžR²èÖ“ÃáprH ë¿OãL,—ÌZŒd¶ðZÀà¶c3ä±™+z0>¤ÄÖeÉÌ*¡ïÙBäM‘+yƒßéJ[1•Ðq£*Ç'ŽãEn©OÚØ€øo¶Ö<òŠ; stmÌ㬽¤²#ïÓ˜ÏqÄÒV¢f µñÙⵯs¼¥´›‰yT:=Bjg)Hߣ‹<§–MchÔ\1¶ÿŒ^è¹ÂwèL¦ò„‚êû©©+>´Úíî§õÞ£¿|ýE"˜9&3íŠæöÚâÝ¡Îå” _#Åÿ÷S1Z³Ýþ­šŒÛ”j¬+ ,Ñ–0ÒUñVqsx‰(cÉJ×ÄéM| ]m =ÚGMjëw…íŽÿB„â²Î€‡³‘è¹2¸œf1ó¸C¬@²¦ü ˜²d.° 7ÙV!UÔÔÝÒÌ +¥°9bÕx$ÝIìãw-QÈÀ1|Óa²â«”\—`Î1«1ÓËRnä’ër &k”Ù®«¶¹d^ÂR›‹P›Â¸²<(äÝÙêb²¬7’Aç9†Îd$’“'d.tbXWó:Mesæ&8ø>,bÉ %½ù·°wðsÄ”FbŒ0ù¢±TD£8ã9ÏXÚEÃbнQBD´À=š”…U^·‚†VÉ•(%aE‘ò¦˜ÙëTÜqÝà]7ìºîÖMÖ1Ž2 átjxí,CïÏF‚NîwÊA­†%ÉÚ`°”±ˆßÜöö|ó›nÁÙäÄ€XS±µÚXÊcɲ±wb|šêSßÜÅV#IÍðIÓÉN:6`!BÕ ÙÞÁ´–|^b•™ð¨Q ¶•*––¨@\i£ü4Ö§vzŸ¶5=€OÁtr#ïÛù™óárêY'{sPÐ;í÷ïc{’g™îeéý›ÛìÖ:(ö\áÿ/áÂÒ cë<›òPK ëDŒ<¶t$Éw ¬:html/ch09s04.htmlíis·õ³û+í$’-)Kr"Ë$;¾ä8£:K¶;ÓéxÀ] kw±°¤Ø_ß÷pìA.)J–7­gl“ ð¼û$:KGƒ„Ñxôbþ 2¦)I´.Bö[ÉgÃà™È5Ëux±(X@"ûmhv¥û¸þ1‰*ÓÃW翆ÇÇ…n ¹NÙèQï¨÷]>VÅãI*æ¡dS®´\Qh.r5èÛiƒ”ç—D²t(½H™JÓI$› ƒH©~=Úƒ¯Ñ@£¿,é9Í`tÊr&©²Añs=â’üãüŒœW°yÿ ÷ÓQo?hRˆŒyÜ<ÙUYœHê08/$ϧä“Sà‰¼e&Y1ò²ä1k*‹Š‰dÿQÎ#·1ç ¥YFΙ†ÙÍÅ…d³ærµ¸ áÐÁxJˆ²€é Ÿ–°°Å-ˆ9ìWâÃeˆ›âbW,*a#½¸Ø7aø„˜“—BLSFžä4]h)@³0 T$y¡›úDgÔŽ‚nÜ»woF%™Ò_ÔÏBi2$»»êœ: ÈpHb•Ȭ—ŠÈpÐ+¤Ð"é}ò7âföûJ¥½€œØø>ŸÏ{ÁýǾ‚0—\³Ý2g*¢Û ¾=|æˆS2î䇚ŒH05…ÔsÔ‹DÖŸÒÞ'µc¹ÙYâfçÛóo¿Á—ྡ`àF¶Ý‹‚NÙ…¤Ñ%“°§T÷>N™vC»Á»'áÁOÇÇÇ?†‡ŽÇÆ’ÞG°¿ç"£< ú¿ä"gk¦=IA¬g VË’uÌÒøá ŒÌ8›ï.ñÒ‘Çëeß7îd0ñ‚Œ§ 3!‡Á<1€ŠûÃ`œø€ Nƒ¿îßÓÓ€ÌÜ÷ã£ýý㣀Ðöï£AÌg$J©R Ät†X˜„aMÇ@ÇœÇ:ö÷¿ ˆ*³ŒÊÅ0xMg|j4ˆÔó%üM€ÜT4‡Õ>E 08åz‡•›þ=òÄí`¥lÒPB£ˆ)uÉ€š¢Ó’GoÀÆ}:²(plt@l­ \u–ªnb$Ÿ&@CТ)ïô£× (¤ÉRcx훆hŸA-(é RšO‡ËÛÒ2ŽÌ»’ƒÖï 5ôÉ@Hʨ",eè8‰DYlà›t¢pÀàŒÙ„çÜ`Å1K)x ƒèé§eª÷Ìl꘦dÌ ]d1©¶e®ù„3©ä4Ep@%—dÂS†»¡HÆóRÚq $±\î=RæÁ¡5À1Ðiˆ% [C&‹ YF^J=çM¦’f),ƒ­'ü]ªÐøIj ¿ÌÙÙ81B©· §ŽÈò ªµäãÝ©pÓ†ËÓf4-aJÐÿðâiøêõißlT ¹ Pãÿï]zLýï¦ú±ãD²5ö÷…50ä±UÂ'F’¨ƒQ©´È¬Z4¤y2:%&°)Ó^+/áñwت7DG‰N¨&ÕQäØ\ \HÓD)¡Ò^&ðKØmX17Ú¸dÀßßÿ>Ä_M°SÅéĪÇi3É$ø#±~궺PÁ÷â¯vÀæl mƒ©Â;*™Ô©Ï pZ)w݃õ‰›Q'Å„JCHŽš1—a֜إÍ!è0a­UÍ «Q‘/Ä‚tÕd K˜á׬Hù%#;Õ÷!§ b´µ è$› yé½D_Ѭ€|vç.óU/Õ;I:â[_m±!éílbûÐõEC¬ Ûdã[zþ%!,Ù¶³˜\'^íê¸êeϪz:fdÖ%Ú”F­¤Ý؇ͧըëýta•û´.ÃrXp£RÌüµÚϦÆM™ž3–»:­&˜æ±­ÐЫ8Ä`ìÊèõá—¿7êG,ÓŒø€à«2¬52¨<åŽÁÖ²cÕ0LüM2l‡a03 CÜïÌn#Ù!ó„ƒY$°î4§ÝàÚ$[n¶¨:•Sž‡Øò9!û½‡<LÜ˜é¼øÁªY52frì7ZU¼8!Ϲß.@"… ƒí ª~“‰šÞÕÁrkˆÌÜw-€>ß zKyQ=ÕÃàŸ€é_i<ƒ@¡úÀLoÊ'Á¨j>µºX©Zí†5×¶è©ÔýÞ[¡Cç%zÏ”&…¤‘æ‘ñÑ.2Â(ˆdEk°T,sþ[ÉHìI³*gÛ:<‡9ÃæˆË”‚é,ö0€ˆ9jCÌ –£¾WþÝÔcæ±b Æk@Ú!y6˜* R²Àåsá‚ÓDB•‘Ð"BàÖY˺æŽlŽe‚…ÈDÛ¨ÙjÏ­^_MÀÛªŸ í3$ ìÌ­ƒ~Ó1;–.|¸ªàìy}wþÁ˜»áÇw_дÉnÝ‘©š1÷p©\·e Ã7ž°á^wöšFWþئÁ~r3FÚ9[Jmä/¨}B€Å…˜39)S+°ñ1úW+éV ©•¼Ê!¥°£“.Ú”õ(Ë›ÇYUÓ ÁÅ~§ãÚŒ*­ºËüõ*òßy’¾)-¿Ë¨ÿÊe²cpVµÁ¨²(háB”àIbçX|œçבV÷Áød?r\b½·~š£­ÙõížÝŽÕT ¾]Ó'&íXž_©=gʘ[7N<³?°;1gMÊÂZª3@…Ùd»]¸Ñ&Ülº·`#Mg 3æ²2ëçײ_‚Û²UÝ3w®Žë´aÜ$§Feÿ}F{Îbê¬ïÌ)´–Þér§ ÀIÛ=.¨H˜«¬ž6“VE €õ±‰2L@冑ÂLìR@˜ ´kìá ã˜c–²)µ$qß–âÛW^2³¹ß„!É¡=ƒíñú†[õŒ¾î…¸ªJ`Z|Úû.ânz²ò^ýz°»ôU©Ã-×bëe*ÆÔ7e,@2^@¡8ëM›ýµ-Ã7‰¡¿kW¬ÇÃdcŠZu£î|wô©LüäÏlœ.ãît¬=ÿ·å§š(¥˜F×eósSè Àº—FÛ‡Þ½F‰Ñ‰Ÿ€¤LRîË ›¶»S_k0ÛØm´âê ¡réXÕîÀ¤Gä¯çÌR+«›U-ÎpޜڶqÅüŸ¦w¶Fð×#qºwîõôÿÞ¸›Ã5{ûùR^#€•ž¾3þ Û°·L°3T›®\ëLÏ@bÝíéß”À²+@¨”­“$,¸.‡Å;_ᄚJ5Œ$Ã[”nMÕ-WK”zlð6ÛpŒcFskµÖÔ{„|¡Ò÷÷­±« À»¤uÍhµÂáÚU‡¨7cª¼1ó·EÔ­"›qášS»ä™]±dëå‹Ês'b\»³ˆƒ×AîõzÛ:±;ãfôþ+™Ù wÏN퇗òÇÃæGëòÇ%/ÖšgsÇ.¯mH7å‰k¦$±γeóð`LêŽ×UwÞm•ëZâv©Æž¨Ïô J;lÛÈ"gæ´¹uu:Öûs{:û[É1vÄeuØ{çuÓý¢‘d®Z]P%~Äsc9昊GDŒ?ˆ ª:ÍÍËl s÷ìN0eÃ"ƒaÕìÈw_LYVü¸Õ™÷~k•Y—ÜPc^,¹ í¦)Îe(¸Üž0¼Ëí‰Æ‹3sŽ0£<5iÒòQû1ê4çÀñ¯/_ŸUç€é’bW´‚쟷–冄í†â|¿â„o'ÐU8²¹¸ÄtÑ=ùûûgiØŒhae;kÎc{'é—ó7{ä=ƒŠÄâmžJÆ2*ñ¡r¾j¦ëskW £‡êà>f3@Tdu÷²ï6VOmï£}A¼y¯Ïéý=l„Ôέ:G‚ÅP½”ö:l^É煉Ég§ŽÇìø`BƒÇþ7É2!éš'?+¬´_äL„0¯SÌ ‘-_åTkÚ/iŽîð%Mç‹ÿ’¦ ¶\}©7zWÔï`º ¼“×5×ðß¾G±Í£¿ÛîAÒñìqô³À›»ÛlC›PKÄ5/ ×Þwèã2|P†¯TÿPK ëDŒ< °x"Uhtml/ch09s05.html½XÛrÛ6}v¿E'±3 IYRÙ&•q.NÒqÓLí¤í“"W$c’`P²þ¾ ð"’–|iÜxÆZœÝ=X`éF*M¦n,˜þDÌŸ›‚b$R*·àŸ"^xô ÏdÊ:_å@‰_Ž<ªàJ9zþñ#&$(ïãÙïÖdòüÀÚ§ÎU±J`z`?·g3™Í¾´à üBqAx®bžI×)ÍÜ$Î.‰€Ä£R­€¢$0÷¨/¥³~jã…„*z<-©g,ŧ!d ®Òbü–û¯9¿$’³K’¯ûö˱= mO¡^;θ²µ«¸¦¦êѳ\ÄYHþ„9AŸÈ0™ä}Ð*òƉhpÐÅ9¨s¶’ Rr ­Û“s‹öt9÷Æíà c©Äªn,ÃP­Áö]$WdJç~ûú†|ÄÐ…G„B¤Ÿ-ë5âgä=çaä8cÉJžÄ`YSWú"ÎU;3ߨ‚•OQ;;; &HÈ~•¸TÄ#{{TkMRây$à~‘b®ì„ûfQ;\qŸ'OÈ+RY:Ž”‰MÉaùÇËåÒ¦OŽ4|ƒ°±‚½"é³öè£Ñ›Šœ¾·KÉÓ5§„†Æ#‹ÕÙ>OÙßänéÍnÏ›ÝG£wˆé”#Ð'†[=¹k,r¹`þ% ÇEÈ”}‚ªíÑ/ÇÖðåp2™¼°F•­)öî»·Hy È&߸ƒ§Ÿqo»›–K"p`V /Z k‚×ËEÉj3‡²©èpÊ®‚é'Ì’&TR1Ž:&ÊxDèN6$øjóɲУuSeªŠVWù¸úˆ†ß1eº#‹˜8$3®"½²ŠwҀϑۭ9І5Óögn6ÜyK¢YkaÀUŽIº@x\Ìã°(‹^ k›_ó~xOïG]ï·xZ}Á…­«¹>Êdéý±RÌtuÖHcG; Àh{v¾H *âê][“Ñßé´E¡³²ëèß§Е•(NÊS+Vc„ L>“ å I<…y%|Þc+5O<ßjXêñ¨I5$:ˆòq¢Ž\½Wk‹(± obª­§Cudn3[êÕÒ7bJ‰xV`åšâ©¬¼¾Õ‚%Zh!xÚ¬N+TZMp~4‘c`}ØÌe+ç.!-s& Óß¼ )[aµ‘¼Ù7@X# ­•Z«²Ôœ+s½}×”™–¬ЬÞPi+ôk]‹s¥uòÀ¥MéV¤ìj=UÞ¦…çwVÒ’ËeÄÕ­Ø£AÞWTOK£{ji¼MKëHYÝ8”"êÇ&ß ™sì-¢é#•Jib¦µ’ãõRW¼ðcµ1@Y‘ΰ ]?ÊóÊÇ0Îp!LA …E ¬V¨*)u÷ahUmÜ‘ÿW›„ob[ Í6ä}Ê*M›4À*v f¿öÂoW 9 bi®ñõ|½QŸé]8xW3ÊÖ$6!h™±Fô"Kâ4ÖY[“iHlB°ömÒÏgû³inO9ÏOPý¦V÷uÇ™ Ímì ”³„™Ÿ l3œoÒ)Ï%ìé¶Þï>=âE2¿ðã{Czzr1žÌ`2œ3zTÿ& å‚méÕ®¹Òm¥æœ›¶ÂÜîïØN5sº-Ðø[ ­LÝua‹ë¯V¦_òu³™à÷·E·8¯UgFŠçºk»ñÍõ=Úð~jú§p7÷»K·¼ÚÐV;H7ýú €~ø/PK ëDŒ<Ž=Dã‡ú html/ch10.html­VmSÛFþLÅö:)f2’l‰IBBB‡ÒL¡i¿1çÓZ:têÝÙ†ß=I6ØNñŒ5ºÕéÙg_îY…™-ò8Ì'ñPÿÂ-‡ÌÚÊær±UZ,­wu_!Ѭ"fñÎîý#×mtvù»7íxVÃ…VÚãAßÿ¹›êè²Ò²Lá·o'pF(©æVª2 šma.Ë[ИGÌØûM†hd'ÆVŸ– ,jy¸uÜP/yAÖK$x¥WTâƒR·ð÷å9\.± |øï÷ü>[e©¾e™àïB%ŸŽjÄÚHþÂ1œæjà5–áóT&ØšV¯Tiœ-ó‘õL¿ vàï·™ž–‡w(¦”P•˳逕”¶°Aßô‡]0ªÚ°E£˜ÈtZ3ãØ¿£mqø£ç}ÀT–ðY©4G8.y~o¥0”ñ=/в²«uºá3ÞX©C¶¶¶f\CÊ5_”±A¯Ç\ç™CQ‰Ó‚*ççJÔâWZY%T¾¿@»3ŒÉ}‡ÖóùÜg;G~‰0×ÒboZ¢¼Â{³{Ò’3ZDÛ Þ>Ðx ,­#òø""_¨"H¹c¶›h¶E³ýf÷aÍŠl§f¶–—æ¢â)^i.nQS:®Snýëmkê±?½áûáh4zçí¶1®¼â_Ó)ü¨ .Ë :=Vª7l;ΩEΩÖê)®ÙeÝÍW²Ì$Î{â¡ê*“͵jQ Ç*¹‡qJ5S:bóŒÊ@FáGlœ<×’û©O¿ÓS³v=Úë÷G{ x÷y&r"çÆPó™ó‚šÌ–‰Ç\&6s½ÛÃÀL‹‚ëûˆ]ð™L낇ýšþÑÍMÅˈíÖ®RºÔ0nËó²•Q˜5Žû' çCç»ÅÊqBÕ 9p!И[$6ÕÚ3¥Ó_¨‚ËwºÊµ÷ŠÊµVž(W²Éý«(×3ÑÁ¬]YU±ø™§—×e›­ùø‹¿Ð×å×ïe Ë±!ñý/³5ÊÝž7‹Ý`vßüÿPK ëDŒ<òïæs­html/ch10s02.htmlÕXmoÛ6þœý ŽCw…$ÇÉZ¯‘\¤/i;dY±¤íö) å³Ä†U’’“¿#%9R"ÇÙÐ/3`C$ï>÷ÂãÉaj21 S`‹ÙÄ} #©1…ßJ^EôµÌ äÆ;¿.€’¸EÔÀ• ¬þ!‰S¦4˜èÃÙÞtú˯Þup¡áFÀloìOüÇù\‡ˆµäI©xžÌý«L„A- ž_"¢Ú\ Ð)€¡$U°Œh¬up3ëãƒ|v<«™ç,ÃÙrPÌHÕ!üFƯ¤¼$³5–&Ÿ÷üçþ˜v¤2ƒvož/àÊ·–âž–jDÏ gÁ˜“c!WäOX‚‚<ò®ä èA•ÅÚˆ=ÑÃÁqí—ð÷ϯɤ› w.óN¡ ú>H9º¬‹¤ÇûwÀö¸7\ÌÄ©Å4’,ÑZëê=ï$<'ï¤L£œ‰kÃcî^€çÍB+^˜n¾²ŠÕ³˜;;;S$a¿é÷R‘шڬÓ/(‰"²q™aØ|!cg_(id,Åò’4’A µð)yQOàxµZùôÉ¡…_#¬70*sÐ1+`Dí¿nÈiG»”<½¡ñ”ÐÄYä±Ö"?–Y0ÿ«Þ­­Ù½eÍî£ý·ˆÔ#Ð'ŽAØÌ<ÔKà\±øºã"aÆ¿HÀ4S#úéÈ›<ŸL§ÓgÞ~ccGÅ¿ÀøFfŒç§xF4—9l;ÆÌ„5ª„)c>âLÅa5ºeFÿm¾ØûÀ”p.×dž`̤Šè*Å0`Š¡ù „§ÄædDãçø˜’ªOÆãé%¬¿> ¼"±`Zc³Êî § ›#_˜Ô&ïø%ºÌ2¦®#zÊ*ž¸ "7ò ¿)Ò˜ÜyD÷ÝV >Ř0VdkÉJÑJc¿‹vï‰Ýº°Äà†Œ°8­/É ”‚ÙG<×aÀfõnˆºpäÄgĹûÎzÍn˜”âIЬš½zÜòÁ’0;ÅxYz51gsàü׆}Æôâ¢!6{Y–'…¼4W_lžÕÓÍO:é­cðluF"˜zAæÒ¤Î‘ui×Îh/«b/v¡ñš¨  òܹtÒ’îþîž§@–\aÐ [ïJm•;~æÚNÇ 2ƒ*¡ÍûÖûLgmÙuª€.´ 3‚%s@|ÍÎ ù–Ëß²´ƒÇLˆk,‡¸î-íS`@ ŠBð¦:ºóY8CHc \±¬Às1{Ee¬Ð˜¯€o%h¼÷LÊ .Ú*¾â˜q¼‚ÚÙAËÞHgðëã£AÓxÎW0Ųµ 4º kz…÷å&/º«ûÊÔqÁ 4Èدu‘BOT]µFä芞¼÷Ž ßÿþ†!Ü ±JöäTæ]Ifwï–°½ c6+²ÚÉ\À4¾Ám]YÖ—upKÖAuVVJô KjcUéŒ~Çe*@“ãÿ6üY!Ù¯Jeرäbi‹Ä óS &#“袲Ý}ásîW1Y¶¶¶æ\³ŒÿÓ¼SƲ1ÛÙ‰( ÍëˆÇ,UIMb¡癸ÒʪD‰gìgv‡Æˆ8b¯ýÞ/‹8zvDâ[ ]XØ©%˜„W°=ÙÀŒ·#öã Æ,ÊœEÞX'ªf<þb¶½5ÛkÖl?Ù?A™C‡7Ñ3‡`Vꋊgp©yr Ýq•q_e`ÃÒNôùx°÷jïðððå`?ØØy%¾BB¾U%/ä$ÄN$•„;¶ Œæ9æеº† »,]|Ä•y‹5{0ú'2½;öCW_FS•.Ù4Ø)=Ž9†Ó ÍGSâ#Fù9Žþ¾‹?§§›‡ûÃÝÝÈñþóÉ(-æ,ÜLh>'- qÙò)âX©Í)‘wŸDÌÔeÉõr}àó"sÄVû5þæW`q’ãhß©Êð*Á„¡-÷W°Ítrè7m”ï‘î KÀ £;âŒ' s ˆ¦ÚÈçÉGdúhÈ'^# NÀ ôeGhà×ꈸ—.²]=xrc‰˜|À˜<Ì™=t>Ç“„®1,½ØHì Œ.—Ù8Ùœ«7”k~9|ä{½ç@ª×DׯÙTÙÜùÒ{㌔ód¸Â7+µƒ’W^ãv„|o 󽯀îgåXy™QR7Øè:š4‚@_€ž @ßЃ CÍËíŸ5E4ÜQÞ—}}oaVHÊG„HæÆýF]hŸ9H*Ϩô¹cužžn(™™ ’bV$wר%^z–Æ-µMAÍ!²{Á—ŽÜžŒAnJøñ{èøÞö¸t|ß)¾ØKÙ¼[d¤sÝø§—>ËÄYŒxi?ÕÜa®,3œâ×r¤À¿¡’{SMbEŠ gocÔgûÖÖÿ-߃ïÿ§|obðˆ|_9üË S:…U0÷Â}Òvû†|OÝ å¡ûÍÐQµ9Ÿ¸pÜ b¬:š¦:l* XX¡ƒ÷}8EºÀ §BñÇ>ìµE…˜¯Ô/P¶ã)° 4úš’®Ä3Mâu6O¹¡ˆH #f`éù‚ì3x,9¬ï./?öÓOQ<æ8ý2Y—Să*ñää˜Ût‚ nQ&²ÌásL•>÷˶5hxþro3äœZšÕ‰Ú‰'~û.‹ÿ@JG*©aíyâFEm¶¶º¨‘ªt¶ xãP—ø%šñ9/„kÙCþ²BSå@c¨)oÁ¯áõN IJ{ŠC ôßÁ^&5Ž‹Dtm꜂¡•\´‰ïs#ø±¥™c_ôŒ :ÏÞŠ|0Å µýÝ…ö³ôjR’@åãA>¢£…gM×*l-±òqk_£ ç샺¨“ü´m_ñÁI³# qMØ×Œ$…5Çõ™Vå=bÙt¹ •{iÍ+·<0¬Åoñ„qu™,:þxÖÎî<¨2cñ…RièrÊ£ø·ª1Å–§.RW{ ¬¸C¶ÔS§Æ™£i¥èN3]K«²û¥í9}CMjCL)àûe¬ŽêNýôŸíô\©ê´FkƒOš-6SIì"«î‰%Ø!ög*ñÃ/fHté·»óÁo™#^‰ÙU‚ÕsÌ¢óÓ«ƒÃ)îÍxtÔ<Ó€žåwÌón™Ò·Í”r£'7óyàÈ­}§?&;xÄ1ÙÆW3&ë‹­oÏå'Ÿ«Õdk3ÀG™—Ýc¿;ôèÎªÊ ÷¾2×ÿ^ëó ÿÞ˜¼SÔÙ>Ä}ˆÄ7üÓ`Ãì0ð‰ÆÄ43¦ÿLýPK ëDŒ<‚ÌtÎ3 \(html/ch10s04.html½ZmsÛ6þìü oÚ8S‹rì¤õÅ’zÎ[㛤íÄN{÷)‘ˆ„"x(Gw“ÿ~Ï EÊ”-§¹z&ŽI»Ï¾ïBev‘OF™àéäs?£…°œeÖ–ñïJ.ÇÑ3UXQØÁåªKüÓ8²â“ÒþS–d\aÇç¿ NNÿmð0räFVÚ\LÆâo‹©)OÏe.Ø/‹9K*cÕ‚½ÌÕÕ+^¤¹Ðf4ô[F¹,>2-òqdì*&ÂF,Ób6Žc†ë·1#f.`¢ç‰£à ¼‹Bhn•n¡®’§J}dÿ¼xÍ.Z†ýö0þáQ|µdj!jÞ²Hŧ˜ÄO‚:Ž.JMÒü.¦NöVÌ„E"ØO•LE‡TU6BdPK‡ž½’Á7¿=cç€;v©ŠR‹e›’9<¾Fì8{.MÉm’M«Ø M‡X­u‰=¾Fìq ö›$¡Qy@ýe0x*æ²`?)5Ï;+x¾²21Pv*ƒÉÈ$Z–¶m¢|Éý[8ÊÞÞÞ’k6çÿ0¯”±lÌö÷#r@ó$bã1KUR‘ËĹJœ&âR+«•?`?²°r84&#öÄ¿ÀóÕÕU=8%ò …+-­Ø¯ a^Šýè›ãgœÑÉø~ľ[ÃøŽEs'Ñ€×ʼnZ ç<þ`î{iîoHsÿ›ã 9ôOxˆ8£ðfW]”|..5O> u¼Ÿs¿Ÿ ^íGïÎG?œœ|?82¶¶ÄïŒÏÕ‚ËâgÀ~T¨BlYv–Ã^Ã@ÖêJô¬²ôǯx³„í÷7äõ_évÛ]nMUºbÓ9l¦ô8ºÊ`xÄGÓä#Fî8ŽþzˆŸ—/#¶ Ï'OEŒw?ŸŒR¹dIÎÿò%q¯-ŸÇ•LmF~{øMÄLµXp½G?ó¥œ;bëõÿ2ÀÍ$Å8:v¬æø+ÃÐ’»e¯ ";šô/­Ž@73XzÄOaÌGdeo,O~E”†|⹃pêÀ¢ß·ˆ¶ÀÞ”C<À~\ZÎ3 ¼:ðŠÞì0ùö#x˜{èôŠBÃD;‘؇°4/æãH]#ºTC~ç_‡_ÙQçs“r5€ä‚ë'lªlæté½qBËd€D?“ó%»Ã•@{'{fGµíߥ Ôùx þŽ&­Í£!½š0i˜ÍƒªDaÈõJ% $€Œ[–ð‚M«ŒH)3{ò?‚e(#.O3®i¯H*‹5H²œ½º¼ü•¡—¹°LK©Uá’a:c;£r\§+‡îæMg)/íz/^Ò~-L© ÅÛLé'.-”›"ÊIœ4—†\¾ÊCÞK¥I\"U¾¶Ò…+NýHdZsV3ÈOza©˜ÉBºP†â‚‚û!Qõ”ŸiÁmMXeeiq Ò¬@ó»@ÂagG›;‹­œêåšß¤ìC”UeQiƒ¤ð½°(¶äíODé÷ÛL««b¢*I*½&;¬ò®·^fˆµÑdí ï_2ÏáyÈÞÅH[-ý:n½†Qzû›iÄß•ÒcÄ^œ3îó;JS3žˆÆ]ÐÉÔTQÖ‘§ä- ‰j8¢œ\šå$#0I£IYMs™  áó Ûº¬áV¯l!bÿ½ç:Þy\X—OQ„‰ÆyJuð.ûßT.3žYЙÂWßð’%äŸâEmØsòP¼ß…æÂëð-zpfDûÿïÈ4€öù¯áó‹÷Ù}dóeíÐa`l;˜ƒîgα j€€1<±¯ë3¢aÏ»ŸMx(&ëj€$Ór”4S‡¿/Φ9‰½îë1ch®(vÀ^•ÂW`qÊÉÃóŸLg¬PvÍ_¤„(„!¯rŒ%WˆQÆË2_ì¿TÅT‘¯Å|áPK¡5F ¨|2•Ÿ"VXJ«°ë¢‰œÉ„çùê‹“5ÛÛû¥æ×£u„\7у: \eÂç™R~Jí³*"©E1•í„DŸ&—s¦Qi+€ÁرôtU«ê E–þrT×%‚ ×5‚˜Ž²ób†Ò t;åìÝÛóÀç¥Ò ÄÉP}‡у•<Ã1„Ɇ™²"7Ã)ÆM¸øîñ<?¬•×t6vÕÝáõðûèwHÕ¦ôæfq¹Ýh»g¢® k÷b¨b€ä-©Ò­UîÜ’ŠÀõ0¼€®—œÊR´i÷G¸nÛ¼p߯0-UÖI‘RIìåò¥ÚéÏŸýŠ€«ùåÌ„xóXšò½nœ½C×¹€ßcÖòX.בHÈ0µÀí ºˆ Ù}d'×X)é<îxêkz¢¾«;}N;&þ¨.BJ¾«7T…'ÖZ©;›Dç©©D„´DkbÛq†sé2wk©`aƒŽ\ì–P^ºa’Àû ­æ ç³uÅq}nh‚Â[“U£w BòÉ­*B• 7Df«?Û˜Žî8!w'¤Þi¨= BóÓÐ ÿÀ:õ+;Þ>õ`Ä€û.H7Ô]QhÓPCŠ×4ÍØ+ƒ´”t† לAŸ3²¨rö\»3gæ…ú3gXI#N¼£=šQ ™t¶¦‚¡ üQüô‰ªÊ¼ný7'iÈgn-x6qš¬y#Ž<˳¢Î÷ÞÑÕÖºw¶¶È-)Ïd®…ØÿäÞÞŸÐöºWõª§¾V´ÑoÝè†Ô´ÙÚÓÛ kþ“ûÏ[¾¸ ²Ü(œÕ²ìd1jÿcðà¹ÙßÜjœÌÑ$ EúDè…H£@éA›ñÌýL¹ÍÜ £º’£ýÐ`Ô Ùw¬…ŠFU~ü}+øó5êÓóç(7ͬõ•… ­;¯Aµ0Ýó¿?‡[7ö{’Žâ]¢pÝ<›V½Þ½LP»îŽÓI^ ñЀ§"Ô’ËþyÓ%šsàü®Ë÷í gÛÎŽd]—Ψ¦Ju’ª ס°yÊ“uõòjdNî˜9nRÒÿ·¥‡âèñ}Õy.Ê\­ÜyGϹÛ-ˆFµ]MD=»1¯Ñ$E•—˜P áÔ8MoY‡ž2¶Ö&Yïè@: n TyêÇ0è3Þ)™›ÛÓM¯¶Ÿ‚mnÏëc‚hBòñæ²%Ï+,‰ºcA´Õv‰ØJ¶ï|çJL]ûh\Q4qíˆ×ËLcøíÜž^Ëß©üº°ôgµ•BßVo„¦Ã¤7ž†ýóóþœWE0é΃”³xÕ°¾u]4ïF¿×Cl 2 ¨BÛeÓA‚o¸Ž´q®kÙÆlvøð7­`Ì6­åÏŠÛm]dÓýøˆn û¶þèÖN²½+kŽ@Yg Y÷4ÈW íûÖ£6¬¥”‘Ê„TØqªÍtf[H¼™Ï½‘éW©*³žÿ·¸ÖuwYú­†qËîv-ox´ïÞž»öùî¥Å8YȽnŽW¶2¦œÛ©4&fë,è­ÚÖ›Sñ†Rý®ŸØµÈñ´µB’Jkãê¯7ðýÆ—”+\Û_.ˆêì¼aJs݉›úh›Ò·ô B¬7(è È4Vçi*}FÂØˆ-rÝò“7Ìä§p~nª’NŽh®¬„¼Çô‚OJ71K}õ"7Uvé¾ ÚÊcMÜÖ#Ä]ÏîzŒnêÞØ+àImøÁÆ\Ö˜ïƒmž'ô5Ñ ŒO_%*QÇ–°3â8±Ð_ÃïgZ©]¤ƒMTöÆp}“a–Y•竘WÛA…ð¼á›ŸðÕ¡f§ß1Ǩ–—Ñ`¼>Œl În$_×Çh‚ÔÏëÐèÕ?’þdá@Á\P¡=]?‰Óýtü”¤é¬¦Hýé «›Ž]i#*Ý&ï ôÍmM`mÔPÿ»¹ÐòZ©òeeÄæEº+5G½ªœaM\;„K‚1Æ¡‡Ì¢Á‡îõ¤ö}»Ü yŸÏÞ'èNÇ,zýòý£“©89šñè´þL d¾å~Æ5Qº×'fðbw‚¾·ßñ E³§{ÕáÑW¼êÐ{O¡¾êÐ%[]¿W5yW®o'ôü*wn‘Ÿ-ÓU¥» qÓ½¬/?빟6yåN©wÑ@£±ýÒWÏ}?t͇îüЭÂÿPK ëDŒ<ìmyF›html/ch10s05.html­XkSÛÈýœý½º•@*‘D›õÛ· [„M-yÜû‰KmIAÒèÎŒdüï÷ÌH261Øû ÀXã™Ó§»gNO{˜š"Sñør? ԘÊçÿ×Y3òNdi¸4þ§yÅEíÓÈ3|kB»þˆ¢T(Íft~õ›?üôoÿ•çà†&39_í?Ïʉ®Ž¾d<£ßY˼6™,‡a;c˜gå )ÎGž6óœuÊl¿õ÷Þ oü×KK‚kË_d!²ògc×+eÉL{›c“\`gÖ¨š×Ì2öÍGŒ4Høî=ýÓ2~8÷¡S™áDÆsš$È™T#o–" ØlpäMrÀ{dwçÈû×~Î΢ö½7¶®;ÏVÃÐŽ)ãì†ó9ö†ÂÁ˜Sj«†5þÚº]Ù‡)¸Ìeíx}]Æ¿´nÛŠ›•5S­ÛUÂ꬀QlçˆFf17CÚëC™0¥ð K^ÚP¹àjŠ¡…Ñ öIü’Ú$×»ó]ƒ••0}èd©BÖÔÂeÔ œ„"o!¯Ïrs4´½Ÿ‘æ¾ødÆköо`ç$X¡æP9LÓý•MjHØ8‹»I£û“‘טàYÄß;@o DÇ`Rg9ôÉ׬š çr#Çíš«nIoëYbŽÜ%o£ï}yÝ‚d%Lº‰SøõôØ?¿< Si8×á71d¡ÿÜBSzS¡cù Ãð±ô¸¥[fö¸þý ?üÇ€HM…S?¹ÛM¦ uöŸµ«NÚE½±pC$&,¶Éíf‡eñ´Ü„.U´:>ÅÙe«˜A—Ä–ƒ.‡Á‡ÇXlÞõÐ†Š•ÙæÛj³‰u³¤«[¥ê¹1ÎóÓN—Uû“ü¬eÁêŸ^ÍýÃh)÷n¦ÓJÅ}ƒšÓÚxÚÚàÊW;Ú*»p‚kU»ÓþN•­”ÛÉKeÊÕH=׆ UkTŬԨšt¯£rUžQfVQua9¶Ð¡šržÛÿ®xR¨qá‹R;,úFè*,JÈ ªîœ½ÿÁ…Bغ§%qé@O9A hm‚ð’;(à%$²a:F<¿*ÔEØÌaÚ˜¶ðñº¢ ”丅í ï4®Ú‹wWU$ü"ƒ"wEÜYÔ¶°þöîò‚kçsén tzá ³“#ýÈùŠùŠÙ­úÝÚbzûñœä´­ïŽ«)PБ¼-ÚN«/ªí…hÑê]HYÙØÜkñlÕ÷_9æL1'(ÙXÇ…G*Üð›mEæ}”÷P'ôg:¦ë|zán1"ïâìú`0áÁþTxGýgŠá—x sùÎ•ÕÆb*¥»i»+î–ÍÅbÍjWpðvk¯ô}W° [ÿeÄøsuw‘_Oði6øOM÷ddåz™m¿Ìø«¡H×|Á3~/­ºoU¾-‰­¿)YÓ5u½†ím£l¿”ûPK ëDŒ<šÓ8«html/ch10s06.htmlÕYmsÛ¸þìþ ”mgΔü–œKêärñ9_Î\¿y rE"¦€¤h:÷ßïY€”DY>Û=wÚóŒmûòì³ ¨—»q1èå$ÓÁŸ„ÿéÉI‘;WÅô¯‰šö£7ºtTºør^Q$’0êG޾º.¿,’\K®ÿîâ§øèèÅßâ½È‹ë9å ìív^vž–C[_¨¬”…*3!KAS#£ÇBŠÏŠf½nx¡‡×ÂPѬ›ds"‰ÜШ%Öv—³ #á Z­ÁˆRŽ1›QIF:mVtÿ^'ßi}-þyq&.²¬ø¼×ùö°³­jë15{«2¥¯6{²ªýè¢2lÎÏ4'…ž‰4"CeB⇉J©%jR-ŒÈá”–Œk?~~#ÞAÝ º+]¶äT†¦«’ìî‹Â^ÔâØ¯PÊêbrCN ‡­ÈÙ[²×Ö轜ʋĨʉLTr½4BÿÇßQ¦JñƒÖYAâ5ÂŒÍ~ô—]üœœDbZww#!ÛϽTMERHkf9å]È`ÚÉ!ô˜©Ôåœ »O"a'ã±4ó~ôANUæ$–ë ~s¨[ØJ–ýèÀo•áSÀð’‡pXƒ½DþM5öY‹ZjA#Ĺ'…L²öš Wµ1£çÈõ^WÂÞœzUk¡/W„®¨ú[Lܬ—QYÅê½Zê•7‰bð¡cÝ‚VÞæ®w=J FtZ!²”¸=Y–Y?¢²?Ï: ¹0]ÿÉ÷[ÏG¦khQ4¯ÄP»Ü;2p½õÇãiBÄy ËØ Ë êâ˜ï7&¬þ­|zþœS‰…#f|ïv‹gFlt$”CöN,Ù0mª ·Âå$0g„ÓX`}¥Ä“²øôñlZ &’Œ´8¿4è…¼=ÔáÍßò64$Bq+й°ÞJÅpް95E°aÚpâœ.¡gþA2\Á^ºbÕGÅ œ6†ÖopÊV-7I‰ó8xcJ&¶(kBYa+JÔH%¬›Ææ#›“¼D~gsçM¼ÀËœ×à l¬ÍõÌ üñ/rYc§ 8½üñ,J‹-Y¦­­tÁ8GãªÆQ‰ŠC*„rsoë‰!BÚ3ƒyªnàqÿxÊr$Qóžî¸Çì۬ȋØI>À­*}ð.ÏH¾8ó¢¡L®›ÓL8ìx¸ýT®ÌøãÏNÀ#Ç.GZH HbIË„ðµûlÊ9“LŒ¯—Ësââ´åËþB„Ot‹žZ›k{ëQ‹ÓšøB+\‡±¨”à0 WŽþÖ6”Ph}Ýœ677@ûÿ5Šð;¿‰R?ŒOo=)Ó¥I3íY«Z©•2Œ¬à}à6ç‡tc^*˜ëAýDÊ•ɬG_‘5;le8õ‡Å¶9ÁRº8a.nDÏ´®Nxûµ›P¾ll®)as5âÓrI® î1€‚Sv¿Ø.g+•/í{îÕ Ã‡\,^£«D¥¢/¢³“«Ã£!ídtÜ<ƒ´‘·\ðÝ0¥}ÿ6Ò:´V|ûsÏ;¸Å;íÛ²ÃG¼-ÛxÕÕÜ–µÅNn^Ð>UË;®Í þþk³;ŒçrëGNWþ‚ï–ÛýÿÔì|ÃSÍ=Î},o«”¸ÿ·nëªÉ÷Å|yÌ_Rý PK ëDŒß÷ûÏ1 ^iJ„3âpëDl) öûÓI»h+t×(ÊŸGUÜ@Êߨ×Ú:ˆ ×c>/í3Q‰ŽËœŒ ¤Ž¹Z…ÑNÇZ¯ÐÎ CkeÀàYÓAíÕj°ÃS¿AXá°W*´1/°Ç·ä¬‰£Oîh<–ÖõùÚ¢ Öy˜òàÚ4ÖܳæàñÑK ›5ØaÍ`Òö<ÔOñƒáñ rÇUÊ]p•¢k»zìãYôt4OúG­[K‚+:£/tÎ…zK£Ç”V¸gÚ™¤ ¼¤¼ XgJÜ1ËùwÔSQõîÙCÑ©’ý±kÉ™,tr ‹”b¦MÄV…RÌØB<Ÿ›ûa@ÏlÆ jÛããÁ`|Ì€wǧ“DTKn-%3¯ü.h¨ÛññX‰Äeþl 3°ežss±·¼iAp7ßÐ/#ºÒ\Eì¨Þ*¥¯˜ÆOù*QËÈâÒÿ’5‘§ÑÂJ\R 'xLçÇÞ +vžðé;:û“O›í 8©¹¶ '[ k®›™Ù¾íH3·™Øa¡v Âô-Eɳhö¯­ k/S9ñ߈N4¨Fž H®Òˆ¡ê«ÖŸ_MwûÊFñÚA¨ÛÚëýk/5Äâk¢‘Öô¶ß[\,ÆnøÿˆB] Èj‰Ü<ƒ…vÙ.ò}¡œÑIûìÛX²¶åbkpíb]·›gËüVRz›ÍAX}éC½Bÿ¾°þ×¹¯+RR²œ¾·Üç´–7‚J£-ã ¸…úZM/Hä–¦IpEµŠ¶i‘b)üÝÁúNL ÏsÏ0'!°Ô¦é¥dÊ[@•q×Å VT ½§)a)¿ˆë$'Áƒfthi1'‘9»æŸ©|åÚѲ;f“°øÂ=-‚^‚Ëpã©9œ½»ðžIAyw8L€ê–Ÿ´5ñ·Oç¤ý›âLβµ×:h$Žd‘YWn^R´å©ë3ƒTæØí1~q­Ë´§¥°I©¬;á.…\33TXDoæYŒPóråDJ!ÙÀ¡q ÐÆgÒÄç÷yÝ®7 K…Õ7-(}P=<ý ÷´E~WDb[ðÞ­°Y>òÄ¢ï8/0¡™7R&áyÁÅÒd‘&UbtœÐoõ´¼YAQ6=xð â þ^¿•Ú@ƒ³YªÏÄ2šç¤®+dÄM& ·TÒÈHŠGð ´–ž§µpœ74^,.{taáW •Ì Ô/qÀž¾lÉiÇ ¯i<–Ô9¼óÈdî%ܽÑÇ7Ç[Þ?<}M˜^3¢{T3ðÛ™CcQRh?)Ý¢¢p\'Ü¸× švjÀ>?wFÏFãñø©sÚúØ[â^Ó‰}%sžè¤ X! Ücö\Pn_Q‚¬QsÜae샻Êp1Øò‡Ô]Äûµ÷êäOe¼„iBšI°EJ2PΑû› ‚g`“4`? ésyÉ jÇã³áp|Æ€o¾ý8« \kÊj^Ù]PÑ´áSâ±Èb“R6‡èyžsµ Ø^eIA°¶Wô“]¡K^ì´Þ*¡§ˆÆš^âRr·Æ³?qGbd9´˜g¤²ÏG´Dß"±ÚQ:Âtø}‡Í¶„×,[ħ=ÄË BCt7?•%)l·Ý Yì¬áÒÐ2m8Öî{µtõØg’iC+‘9!µy‘ ‹M!ë"T6e¥[H8£÷$¨-ìDD Wç0•&­cÚÜ ºö߹юj¥q4É&Оˆ,g:êè÷—ÝeÚ|ºhO€jREׂ¦ÂX_LY¾=wûÌÂÒPò=;‚‘`IRâÒmÓñÖ”¹Q \÷ÅätØ^N&0Ëènƒ™’9ÜPÁ¨‡O¬í…°MZ£ñ²%¥8Sz©–ÒLC ¾t£VXd”]°àË5ÁÆaª€-z±$¶uÅÒ[Ðb,…¤Õ½MžÐ$…DaÍp&mý±!¤ dG¼È÷K.Ú8¯ð}¯$-ÔÊš˜'Šç"Ó†À¨ sáÛ#ÝY¤Â¡êmoRÑ«€ ±¡‚­bÞuMdÝUhWR¬Ò«~ç8T i“ð(1;÷4œØèNíµ­uâ.{ÇftoQ—<ÐfÏÞõÞ€Ãv­§{«¤JÜÆí…RÝ’þn2w+§ïfµ½ÁþÀy{"g?wKü+/©° ðÖ'JQã‹ÚÔykóo;¤” R:dÂæäýäur:l´ì.ó\ §ä†n¢·f#ïÇýî^{·~ûBÓe…]y]5“WR–—sÛM¤íÓºOÍŒlÜG•‚ œTt­{7Ú³• ÊS¶¯×ºOOv-f×QS/Æ®.¯ÏÆSfœ]tïæRñ=½ÑW®l¶.3ªÎu+bïËÛ—ÕšÍVãì[µ;›ƒ®ÕØÄœïÀü\®[‚Ýì¾I£q‡óPµ##Ëû4Hÿ5éŽ/“á[iæ!Áؤ۸ï×±]XÛ¼ØÜvãöŸÿPK ëDŒ<Û²²žhtml/ch11s03.htmlíX[oÛ6~î~Ç¡ƒFRâd­—H.Ò¦éA×Õíº·€’Ž%&”¨‘”]ÿûêbK¶Óº]ž†ˆcRäÇï\x.òS“‰±Ÿ‹Ç?‘êãg`I)ø»ä³€¾¹Ü8PÕ£€øb<»ÿŒD)SLðfò»3ýú›sD+8ßp#`|tä»òPgoòH”1Ï2)”ý÷–͘Ž/ á9aä=KÀ÷ê}¾àù-Q ªÍB€N %©‚i@#­½Õ¬‹CJ 2lˆÙñ¸–%gÎ&ƒbFªŽ2z.å-ùkrE&K,Mþ<~ÑÓ* ö(y¼¢ñ˜Ð¤’Èa­Dn$3/aîÞ«¥Ù[“fïáñKÄôêè~ÅÀofvÕEwå£bÑ-(TÇuÂŒ{€i¦ôÓ¹3|:FOœãFÆÎ÷¯ì…ÌÏßá Ð\æpDzs>}…ްF•°e•±?ìíq˜ÖäAë¿Ìã»mïUÈe¼ a‚6“* óÍ€¾†â4O‰u΀þrˆŸËKJfÍxtrx8:¡„õŸý˜ÏH$˜ÖèÍlfO…Ó†…ÈcÎc“¢>¤D—YÆÔ" ïØŒ'•‘Õz…)Òº`y@«£ü¡ÃØ%?ãR”»¶qËfhÉ4à¦hnŸáÝÔ·€ôŠ­×|ü€ï±qMãŠqú¤Úa¼c¤©¹n§¨x’"ÇæØÓ|kì¿C{Z¦5ÇJ^eÌCö7š¬g7 ‘9B˳< (ä}£VÈúa=Ý|¥ÃÞs4® îHDS§$”&­ÔZg]ÉïÜh‡W–«¢ ü~“¦Ã–÷»hSkýi&„k‚‡¡!F÷‹RbRfË Ï 6Õn(§„cV:ÿ†Dø4–\2• W/ìs“)dQ nFJq‹{݃¸˜çÜp&¶UóÃèUk‚ÓþBÞÈp…ç{ņ„ŸôW4e…éK šð¥bí%æU%Õ°>ˆ0Mr©2&zGØÕ¾­¡ío:^r÷=;1&!ÓVVtø)Ã\<åPgñלà¡Âh°¦žý²…ª,°x_ãçÚš¾0 wPm™JSíŽÖëˆ 㕲¿f›R·JÛ"E›Îm¦`ʧkFSË]˜)Å2ÁµATL0„9óm¨kW¤Â1 ŸÔ–ÄÀŽÏÆd} 3Fñ°Ä¨=¶©«Y¬/›1Qâ’Ķ,&ào¡ZîÑi©©f‚ÖSm‘ãŨÝê 5I‰÷(1gÔ~‘;åöz‚ÛµÿuÕQÑ[zÜÿzÚAOÎÅ¿tªÎ U°X?§wn>¦c,÷ˆ^h™ xD'51ìÀ–‘Îv™;àa7õ-¸Nƒ» ­«î#òn°¸Ã$£½ZùÞÊ­×ÿÖ]³®m–mÝ•”Åe‰Év­³SÛk¡ûS\ãæ`¼9„Êvˆè®Þö¬ñ ¯®Î]Ï÷tG×bzñ»"zuy}2 a4œ2zÖ>SaozG—²!J¿‰˜JYÕÏUµºc#±ÜÓ¯õOî±ÖßZ·µ~¶Ü|ý0þT¬jòíï¥Òÿ†üÖU«‘‘EÕ¡ìòÎâGÕny3~±p7Mô¹Ö$v}!²¥÷i:ÛÛ~ؾ—ûPK ëDŒ<––éî ±'html/ch11s04.htmlíZ{sÛ¸ÿÛý8^ÉsåWî\[Òc;_'¤3Ž"!6IðP²šñwï.À§g9Q;M[Ï$#àbŸ¿ÝÑ u z!£þàÄüõb¦) µN;ì·ŒûΉH4Ktçzš2‡xö©ïhv¯»øþñB*Óýó«·ƒƒêì8†\Os±ÁÎŽ»ï>O†*=ºJ%Oò+SåIžjrÊî¸?í»ÛNƒPĬ؛'>»wQfØYí;¹@ŸØ¼ŠÄ„¼g#&Yâ1òKÆ}Ö •¥¥!è¤Ažç4te5ô—Œ{wáÉT²q¨ÚÞ›£»—S>O¼(ó‘ø¼xB(yGƒ&õ4Ú¤þbŽú‹œúkšøR=¾¥÷ÀíoSmñ]§ó’°Á/B#Ç ¦š{ ìá³NgÐËy¨Yñ¶ä icccL% è¯êµPšôI»í ƒªC‡ôûÄ^ƒ]ÝHxÆ‘ÜT -<m’ŸI¾²ÛU*rrhày2™¸Îæ’/)L$׬%Ly4emçÙÞIΜ’^¿å*6~ N`$êÐB"×q7 î­jYiZ3Ò´žíÍ®}‚gÓpÐËGVÕE –º–Ô»cÔqPíÞLçCmçÃqg÷§Ýƒƒƒ;{¹ŒµWÜÖSSž\BŒ´D$lɲã¼ú<Èj™±«4þ@ßs6iÏÈÖ?Küå¶ïìé …?%Ãl&dß™„`p2¿ï # ïôʾóý6ü½zåqþ|°¿½}°ïÚœô|>&^D•7¦cÜ…IÖt|L¸¯CpßíígQYS9í;—tÌãA¤Z/á_ìF*¥IßÙ3[ðˇÁ%O@·ä5ñŸ_p±‹LäD#63÷(¡žÇ”ºcÀVº0Àï ô{]:°[aßpšý±F´ÆéŠcy]Ì¢äA<æÛ68M‚Åà순ZºÆyð7˜ªa/Å<½§IÐwXÒ4¦AžÔ"Uñ"ÐÙm̃QÖ‘ˆQyH†B‡F­6'(#çVuüÊ>0<®nÍp·`½þZäQûwLPù’F˜|¾ ˜H0³hJXRLR”L s¡:! ¼¸ Ú°b†&<Š@“øÿ‘Q–xÈcÒ¤MˆcššˆJ1Q€3Ü0ÒÃH/Œƒ¿õýJ“½.¤ìPøuŽê ¨ˆ÷º©QõFc«‘@°Bí°{§Àpž)P¿f*gia7Oñ÷<ÒG#!ãCž¤™~裂IMP D™ä ,•$94Ù…Bΰ(KÒFÿ4ެýÊq—‚J±"Œ:@ßT[ŒÂü€Ì.£ZK>Ì#ÜÏõgi”Áˆ&*½ðJ£ÄÎ SªÃ/¡ÙEE-—Êzú ûcê{lÿÙƝ7 ò­}݆£µ6)&Î"†ù¾6ù¹4³sç>” 9·Ê%€Š˜mQXãó[®]4šû Ò7ô®Á—â~îcS’ÏŽqªß@a ™+³ …f‘"éª-"`Ônëé’üƒ§PÇ<<`å°TÛ݆ºK½äŽ)ÙP- Õ9E‘0§&"¬e4˜Ùd´`Væ¦ö¢BðP#¨¬  5bWuµÁ¨ ÊqiaR Ýq½E”0Sùs hÑ1+83´¡R%¥Ã)B!H,>—y¢éö@F)(HHb™Š ¹‚×M€·ø®‰ƒ.àyÄØtZ01Û/À"+ä *Å“˜&É,¬^1+ÿ{ ¡­ÁÔ½ÂR²ìHÐPÜ–È€•¸És¨T¿—u|T*Œ+Ëz…{fÖ‹8¶‡ Í2.#`¬ë"| YÚ3’?ÑóJ³ÚT6gÃ1ëƒ ¥nUFJ3IÆdD6Fk“:dl…2dJeØkm@nC±% ë[¤ÀòÂ$ìQÜT—0›2–È™cƒB{NÖud“UÉ*°kµ²Jy<-Øbbˆ„‘»1¶<÷ož@×¼ûáw3ô¾¥4·Ð·ÚŸk)®•««µEŒ[P¦HܵÈÚL…òÌ–»¥n ¨DC0™8¡D¥ÌãPeæ¬XÎ Â?‚4á>¨¶D,ú:ú© ÆW9A»ŠsiëÉy8ÃÄÔ2ÖÀØÌŒ²¨žØq²(˜ñìãl¼¶ øb¶ià¥-2`ß”pÇP ØóiÏSšhärŽÂAΣ™É$$Í& óç²jÇWÍÉd${¤àlCׄlŒ' «„.¶™«©?×k¸þ?{xÄ#9uëãÏ! aÏS_az Ùy¨¶Ý\djydÐzP|@±Ào—TÄ¥‘ªÊÖqòp­Í¤üÇ”»#I¤žõ@kVýëA¦ "PääÈc­HÞ3•EZÙó¥€sB[LÓ Ó:àddƒ‚4Z3<âù¦…¸tCŒ5ˆM¬õ°öh†_³r¸Ä€Ï{pÄò$²È¯wá€M^|T?I˜P(Ìxæ‘éËóí,æ47ku$ž·˜sÀ4ZØ÷þÚ³ßÅãxÌbêOŸi`SᾡÁg¹:øißÇéæm.…åsóšÁÃT€ÕPþ²Z4Å.¨ÅdvÃö(ÖÇ+ m,>QP!–ÿ´ÈX¶Z,<ηd¤Å”ç#Ö¡xŽbSŽÊ •Às‘ü¿¼û-ïùFp{I·J}g÷‹sÃ*;la±…+ò¦´µU$„ÏU:hÅöDµÖy¢ñûP@gÂ?† À1¸s©”íÂö1â5(Ø€¹íWOÅ­h)0%§äøÝù£Qå# ÉLòBæÝ Å}µ#À6&'ÅLÞÝ®#|>^KLCœ&\CŽsVªpÌ9f!éšçXøjx{rv|yóñüìÓ*$!©²èQ’ƒñœMš°²Ü·#þ_¤Ñ‹ãë³›“×g'~ûázmJ½ÀC4"Óÿ“z}s~yþòøýÚ4ú†'|HåšuùoÍ>@¦k¸í|_jœ˜¢èoö |aÖÖßM<¥?£^Ø.ÊçvŽ¿›¤êv¾æÛÁL·T•Üßj,©¾æãßÍïÕzóí€`7ed‚j³Ú¡y(ß+óûóêòµUY”~í÷Ïò¶Ç…é+<Ÿ¹å)Š+¬Á7aº;aC‰:…6©{«ºöLĽm^ï©_†xÊ¥‰›htãqŸô‰sñêfÿ`ÈvGÔ9*æð¬EÒ%—æDiÞ- a>¯›Ù+Þ/(ßi^Ø_ãU€…ï‹«M²Ùü½¤Á‡´úd¿˜Áµ\xD~ÓBá“©¹Àð¤ËL_ªpÁ…¯ÁkmÊ**i2m™x´[^p9"¿W€ç%xQ¯êýPK ëDŒ<ìŒt ”'html/ch11s05.htmlÅZksÛ¸ýœþ ”MìID9Žw×M$uòò&oš®l¿e aS €’õï{.À§(Årêîz&‘îûž{ñ%v‘NF‰àñä/ÌýÂr–X›Ä ¹¯UfEf—ë\,òOãÀŠ;¤ù/X”pm„¿¿øçàôôÇ¿žŽÜÈJ›ŠÉÓ§ááÃljòïx§2›³—Wü†ýÂX3ú#|ºfZ¤ãÀØu*L"„ X¢ÅlDÆ ›·!f!R) =O¼ð_àí\dBs«tKæ7*z¥Ô5û÷Å9»¨iöåiøóIx´%HÔBT¼e‹›”Ou\äšôø]LÙYªVÐe&´È"Á~)d,:¤Š¼V"1:tðìMSüÀ—ü"Ò2·ì_…Œ®Â’¹Ë6QstÒ£{Ò§l<å7"R°T™éPÍ`ÉÕã ’Ç%Ágì=L:÷4@⯃Á+1—ûE©y*ØËŒ§k+#ÛÇb0˜ŒJÎ-]Õò Z S9¦a®•U‘JÙ?X9r84& öÜ¿Àójµ ƒÃD¾¦°ÒÒŠƒ"&â¹8~xöºÎèhü(`1³`î4ðJ£0R‹áœ‡Wæ‘×æÑ†6~xö4‡þ Á¡“`T¾Ù×9Ÿ‹KÍ£k¡aޝsnïsaËWÁç—ƒãŸOOO<+ulM ¿"#ߨ—ÙGäÃA©Lìö2EŸ# @ÖêBleéÇ'¼YJ±:ØÐޛŻ}?t3šªxͦsøLéq°JàÄÔÓäF‘8þv„¿³³€-ËçÓ“££Ó“€ñî÷É(–K¥Ü„._¡ñÚò)äXÉØ&ˆÚ££fŠÅ‚ëõ8øÈ—rî"ˆ5ã5þ%759ÏÆÁ3ÇjŽ_††ìa u”è_\±?&î%µTÌàßg<Š„1×òä[³xò ù=ò‰ç ±±$úS‹hKÄ=Ä˺]D-ç d,Ùv$ÍúÈ0ù^@§þÐYE…~ÃA/Ù§ð3Ïæã@d]:˜¡¨ó¯Ëÿ’ãÎw¸’€R¤‚ëçlªlâlêQß8åWfÀá|€p{8/9®„mÿŸWEÑÿõpôB<•T ßÓÔÂä€UÁ’Š•4lZÈÔ²˜MË”‹?5ÃèHÈ% fšÏ ŸPÖ¦H6ÓjáF¡—HÁŽ(—‰‹z ãZ°«€e,Ør³w—¿žc:·Ä!x¼Qà—#ÓË•vèO2q#%1Èü=V þg¹„¬,"1+ñ¢ÎV|Mbh\È ù—È(ñÓÎfEš6"R4c qð¨–Í!¤ã4u—lÞH4æ=¿¼‡)5–Ä\ò;]ivM¬1V_–'N›®x 2'È•¾3dÞákÅÖtf³"J2àÚ|ímÎ Q£Z€8¢jäÊHçxÒ=‰ÖF~:Æ5²Àƒn½]ˆÅTè[R¨v\›¬W_Wi;BÞ x@ƒH‹ ˆ¶¿× µCá6ƒ&ˆ =E5ì×/¯.è§Œ §î‚_׊^J´U$ )–pE"M?¤ ÒÕ›M" ¡G‘Ƥ‘Òµƒ„$e@“` ÈdzuÛàfmðXÏ](ãMËß—mi\¦îB9R³"‹ˆ0Ñ®wç¯SÝ;A·òªžóÏ:|Kr˜IœÂ Äb9ƒÇ|¾ó&§„÷å ÑÂ`3¹ˆ( ¯3µBÖÌÕyÖ¡ßa Ê´%Ç´2+‡¨%¶ò´H)k"¬ìOºÌzä5·› CoýñþYèPŠjá}àÌìª6ý“‹S—™ì\N5*üà‚Ì3“‘³Ç;?ÿì€ð :IõtF(IŠËªÏteRe´¤ŽŸ„=\|’éý€¯Œ§"A£ù0V½F80‘çvä¤ó† 8ŠÖ’¥-2â.æV’GÎc¥™èw0Qzúª„[ˆ•Ò×èMÃŽö4r"·ðùФC&q^Íä¼ $™®ò3^¤¶.0æ¶T BÙÍÀDÆNÒZYJî¬VåãE·˜~zï"“ÑC#ð,0a4¬ÑŠan¨Öã`Âʨ$qÄCº Ñ’¬.•oi¦ÏB°o{wÍZ DA«§*î·ùl‹ÊŒ•Ùôwx É@[¦S4–Ó_Æ<· h³c¥xÙ öÓ ²Ç;Ê/’`­ ]}E†¤Ò/ý®Çï¨êNÊÓ¬û+ßrô D]ߌhs,ÓªÝÛø’ïZ–ºB>ïPõ…X×qµy‹Ô·Xô>Lí‹-¿ªI:°_¦è]±ÔÄ— ÛÀ­ÕrZ`9‘q9h¼9hÉÓKò –¯¿ £Rô­ÁdÝËÛ(ï€` Q‡ÃŸuú (ocþpn_8Kí4ažÐv½‡´”$· K ø×ôvõݤïQ%¦3€Fˆ ‰cHB¶¸¬¼P±: ìÔ~Øòm«VTi±5g/“vÍ2»€p—w*8ôkª4…Î|gŽÖl€+TZ ’l-Ñ=Ýk´X›°4‰Z6ø­š×,až¾넽 ²QYÀ®î`ýr¤¤nÿê>†Ôuõ°…I•-ú¢Q_Õ,¾Ð+WåÜUàjQÂê¨+hT(v¨Û™ïìÙ¤7œV$h‰iÝá–nŠ\$ËÖi÷…E Å{JÆnKÍÐí/ã[©ZDœs{¨)lÃížT¤]¿{ƒ¿ß!y~ô|æÆÿ>Þ"ó7(–ôVªÃßß¾¼ÿx6l‡ªNþçzÛIs!¸ŽdêâÞ¿©îŸ¶âeDü ®®æ’ðôÿ¦x‡Ëµïšû•Ó—«8¿]ãv"fk‡À>ÏŸ°^Ð’bÃ6õNU¹5…õQS Êe]o‡¡Fî?z…1({™;­4³Â;¬76}kà{•û©n£ÐXos‡‡oBg¤‚6l¢U1Oª~Gä¹Tí‚H…;AÛZâ§"ë‰Ñ–5.œº'Ó씈ªÍï–ÏÛ¾K…[ØÇá•Ó†°Ûkï Oü¢ÚÑlm‡aQ¢A3e(Sm!¶ÂÊýv;Ö‰X÷Ô‰ M;¥Ú®ço¶=ÍR¯V¸ožNÏ"g´bóÌz)Ë}j—D½ä©lÔÐɯۅ*)¶;·æçLSÓÚÞÎUy‘?g÷Ô§:Œ½€óöeY„ðž ¯ók:šE¯»zº>öÛ´ÝÑX—txãN®ö`à¬vë¢RbÿŠ«²DÒëm¼sR•ƒ· \çÓ÷é= çp— ;gXÍ3³o?UÚÝÚ:±÷ê¤Ôm´´;Í~ç kωßTJ‰ý2@Ü ËŒ‘ûªV*f KGî‡Ýµò·Ô³÷-mA/iü&‚mkÚU¬¾ÿq®T~F5eãÞ]­¨.e¤3Ø0vˆâªé6 B|xe†„?"C_ìºq—k_ÓÙ×HÆlÌ‚ó³¯'§Sqz<ãÁ‹êøh¾ã:CO•îmƒ™RîÜÝtïyã žÓ½#prw¶žêWwºd‹þ­¤Éç¼9Îß.àÿ~CàåÙ²|²*w×öºÇô½FH¶Üñš¼SÔîïc‡®°^ˆ]÷¤¶\’(sˆzgº&C·ñþ PK ëDŒ<• bGçë html/ch12.html­W]sÓ8}fÅ]í° ÃÚNÒ²ÔSZe ËlÝ·Ž,+¶ZÙ2’œ4ÿ~¯l'µKRÊ,™IÆ’¥sÏýйJ˜Ù\NÃŒÓdú ÔŸ0ç–Bfméñ¯•XDäD–Öû´*9ÖŒ"bù Üþ#`Õ†Ûèìâ/o29üÓ‘.´ÂJ>ýߋؔGï.fp†ÛSM­PE4ïC)ŠkÐ\FÄØ•ä&ãÜÈ4ŸG„ÜÎú8$`‘IKÀ§ ç‚æ8›ò‚#¼Òª§Š½Rêþ½8‡‹ –/#ÿù?$]™ÊùÚ¶(~ã;Ѧ£‘‹R‹"…x 3©–ð7ŸsÍ ÆáM%ÞƒªÊŸTj¾ØÄ#Ìð°6ù‡mŒßÒ"‘ùøŠÞ ê׊kzp®76Ãñ¸±¿NYCÓcG-X7{p\–ZQ–!ö¯ž÷Ч¢€7J¥’ÃqAåÊ f0 ÷¼ih˜¥ífîŠ.h3‹ÅòèÑ£ÕÒwæ­2" ˆ+Bó‚@A¢X•#_*V[÷ѶULÉ'ðÚ•A`Œô ¼h&p¼\.}òäÈÁo–ZX>¨ n-ù€<Þ?iÉÍ¢=Ooi<’Öytí‘ÏT¤Ô¿2{7{w¼Ù{¼ÿ1ƒf„ò¤f¶3EISþISvÍ5†ã2¥Ö¿L¹m§äó±7~>žL&ϼýÖÇÎÿä©Ê©(>à¹B|Dzc‰xŽå°VW|Ë*ë>âÌBðåàŽ?˜ý×E²;÷A­/a¬’Ä)æLéˆ,3LVº‘X"<W¢ùmˆŸÙŒÀ¢O†ÃÉÚ? ±&©1XÓtá¬pÓ–ÆÈc)›a-‡ ˜*Ï©^Eä]ˆ´©ßÛõ¿Ò•¦¤EDökS)>¹²wKîQ° ý«Ü7Y[;£-ˆäsLkH2ƹæH£Üzœ§ñ ‡6Æ8©™µ Ï: kf›•Ù.óZ¤™Ý,ì±(¶ªÀôæÄ±hì×ÞuL±S¸g {/ö(ÿ¥#’iDxÑOM-*®ššéö'÷Þ×jÜ4’3§È§‘Èîðgã5ŸîoǸáÌŽþ3¨Ûº)9Õ/ V6ÛÁÖ¨’*©˜#·¡>jÉŸu^îb^®Ûpói›Ä̃0íxÏ€ „èhqŽÀXó6£(c"/¥˜ ÜR·Ý-^ ¬£f»g¤ë+Uá·÷̺ ŸÏàDå%ªFaá=ždÙÅ€÷_N; Ümc®çj%%ׯß`†Ay¿kT…þ0Y%n&§RÖïjžlCDŠXã9nŰnCÝê&…»©œ…ÖRG§gEŸÆB ‹ññáS&¶ÁÇ•‰ lKóÝF ÿ@z·# ±qÚX'a®±"–J_×ôzV×¹B²§êJ5.èPá½@Ë•³€ñ¶JÉkaïÄ­[›>{®T9s©»Ó_] [7?‰kæ¸Æ/¸ –<Öœ)ö‚+Haðj„MŒìjC?Ò®.åü’‰Û9Ÿ]Lb>Ï)9Z¿Óܽ>ßlË%wúoÑ·lï‹AŸeCâÇîŸ[ÚT{fÜÃ]?ÜŸœÿPK ëDŒ<ÄŽ ÛV-html/ch12s02.html­XkoÛ6ýÜý ŽC—eÇÉZ/±=¤ô +šfÛ·€–®%&4©‘”ï×ï’J®Ý E‘÷žû:<ΰð35$²ñw,þ gä+¼/;ôW%ç#þÜhOÚw>.Kâ,­ŸFÜÓ­ï†ó',-„uäGo.~ë ?ÿÒ9àÑÜÐK¯h|ÐOúÉzâÊ“‹ÒJwRX°2eo`+·ÂK£ÙiYZ#ÒbØ­O •Ô7Ì’qç—Š\Aä9+,MG¿<íôŸöƒÁ“ÎaãÖ‘ä #øÂÌ„ÔïÐóû\M÷l;UèÒs´Ìz[ÑŽ]>|x•¹¤ÅþxPý—:»¿öÝÈ(Éɖl’£fÆŽø¢@ÐaÄ' æ9 -9â?ôðsvÆÙ¼yõzƒ#ÎDûýx˜É9K•p=,æÁ Y,{1Ž…Ì|ÞíõræªÙLØåˆ¿s™×³Ùoñ[®r¥Ð#~]åø˜)lùjÎ*u4~³–~€Ò˜V4E±‡‚‰4%çnàvpÁø=æ{ØãÚ;¬flcñÉ–Å-°;g¾†µ•y8“(½“ÆïP¸€«FƒíÆÄã ŸQ›V¥þ%:qÒíêEž W/7Š~ë=ªx@ {Ì&Æ1ƒ5©»º0SäÙ¢:ÀüÚ ýU ÛËÕ½Xÿ4D\¢}f Va¾ áç¾pÌLêð“¸K.ß„]%&Q{6Ãt¨ŸP Tó“#µåxªå1\WÖ(N¹´aã}´˜°…tlÎ;¶4J¬vbŠ®Måai–ž‰ÄàÈ%k¿ÃnùùÈ‘³9î5Ç+Í‚ì´R¸²T—yƒºšMºqã<Ð ›E¨˜TÒKrˆW§ªÊ`ú¸å.BØêc1¹”)é ÕpéA¼ÖÆ3uN›Ð+ëËaoÂ[—š’X½'à[¿ y@[x&_/ë cØ ²`³_¸eÈy¥„•×;BQJp™ÈCzmàË͑йìòÃùf1–­£à^±9æ1k¦u}F½åá­×Ñú‰4§í@N¯Å-PX/…Š×«Jœ Â!TG±MPëS¨bnQz9§m«ñ æ#¥PÖ,ŒÊ6À®Q[ÃÑ*Ú¥ 9@¹±) _Á:zÞ8GNe*´WKh¬‚6 }!f¦‚Kä­ÝÙ6ˆOìC°zÀë÷A~´|âVõ× ¼ ¶J¹¿4Ö&äD:z õYÒj²”X6ó… Ô»E<Ì•m9hwYK“=‡ë4|Dþ4ÞÉIÓãa>CF*üÖÓ°a±Zy4`lж@,¦årj½°ÓšrfâÚ@Ú,wXTReÌÔæ¦A’f4•ZÆh#W¡IÖ´³V®˜l3æ:*ƒ)á#½ ƒA« „mì¦õ£3Ô³n—@² µ§[¬æ:\ð›ë¦wGÌ®üEè!íÛÏí[æï0YݬkÅznLyŠqG©1¸’‘ {¦Ø“hò]¨^Kid îµë" 9Èït_#ü®Ôô*•??»:LhП ~²zgif¬¸G€}J[M‰ú ÞÏ_¨‘ÖgÚBæè[ ™bd%dÚ6«6/ËÙî›› >Òrxò¦¼_~ý׸‹ß4ǯñ ôËBoƒ«A|þûÜE×h  àƒœÿ&øPK ëDŒ<Ñêf †-html/ch12s03.htmlÕZmsÛ6þìü ”7I×$ýv­cKê8¶Õ8㤞ØnÒOˆE:Á dݯ¿]”H½Ò‰›Ëe&‰HûŽÝÀ¶b5H;­˜Ñ°óŒè?­S”ÄJå.û»H†mç”gŠeʽçÌ!yj;Š=(ç“ ¦B2Õ¾¸þÃ=<ü÷kw×ÑäZ*Q)ëìîyûÞ‹¬'óc %ýB$YŸŒXÏ{¤-ߌj¥Iö…–¶©Æ)“1cÊ!±`QÛ ¤ô§o=xtˆy¬øÜ1’gtoû,c‚*.*Ÿñà ç_ÈçëKr=¡%ÉŸ»Þ¯ÞŽS• æVòN²=x¨)ðDQÛÎu®5øÄz¤›òùÈ"&X0ò{‘„¬FªÈ'JÄ`‰x6vywÝ% g„NxV# 6¬’;óTJ:F07…ETI’“<œqvÖ«Ó>˜£}°ÀwÍB` AP…aÂF艟\÷ ë'ùó~ÊÈIFÓ±J Þ™ëvZ2I®ª>¼§CjÞBðlll © }úN¾åR‘6ÙÜt0(å‘CÚmò €’^Ê­žÊ)ðôùØ‘¾/eê9äȼ€çÑhä9¯Ž‘ü„ÂH$Šm“ÍÙ¦ó|ÿÔ 'EÐ~韧büLœ¾ÖÈ¥¥F^À~Ÿz÷ò¥ÑæåŒ6/ŸïŸMß<ÁƒóJKвošÚ"§}v#hðlÝ&w}ª¼»>SöÕ¦s{âîýºwxxø‹»ou¬Lñî`žñM²°B6Œglɰ“<{ 1d•(Ø‚Q \ÁôøæŒ>àýó,\î{_ç›V‡cÒëƒÏ¸h;£Üaê·^ ä‚qÚvþµº]‡ íóáÁÎÎáChý{§&C¤TJl:D.LÀkE{ Ç( U ½³óÜ!² ¨·t˜ôÍ™Žð7qS™Ó¬íìkV}ø…ë ‡¬Íh1h©Éà߰佇¬-©”EàÜ%4˜”_“/\æ+H-Ÿv C jù,Ñ_*D+ò-Ì+F²Å‰¤ƒD–IM®laŠè|_¡\F"­¯¯m ƒ;j>‘,P»àUšõÛËêÓùc̼¶ÿÄ{µïà8LÜ Hʨ8"=®bmD“õ¥É~ÉÝ@;Ƶ>Q é:¿Å{¥ØÕó²6š?71#Q" HÅrÌ€…D*¶(t‘;I¤N¼P äß“J¿Q1«ká¢(uÄßNç,°SAÌÄ5ÔñC]È­ HM›'%)ó 6€ ÈÊè OÙ6˜‚ h1‘’Û— rLéé\>JT¼Ž¡o\à/âh´'Ò(åi;Ú’1jûô ¬gXèAòXÇ1ÉåæTÐÁB3Ip ­¹&ì€Q4š˜PÇeÂåÒV›E¬P¡Ä88•u‰ðH?Ûà(u3ß".Ș‚Ð Þ=zs㊠ÆêTÝëÏß7/—>ÿv÷Ò+­æÍ„â÷KÕ;ß'U7K×ïífú³ÇdÖzAİ4S\ûÿ›äýÇÔÄ\I?B¿Yž¹µ›¥–á1ŽIñÂ#ɤb4Äwﮯ¶ËB­Æ9ì Óɸ¯úÁE™Fi"â“dÄj8éÉZnž1*o%›Ü'Å=P…  »-ï ·u(¢zx65UÐuW›Üîù9]¸¯À³óîÉíåÍÝõm·{ñùköõÜÓ+«®½Q!ÒzBI}Û‘:‘˳ÿ™ɹóÝJ¸Ïœ~•ám^&í{—œçÝB/°ZÛvÆ•?…1Œñ2¦ðr÷'xn HÃG§±Ì»¯wkV»ÛÓw—FwA’6q.»w‡=v¸Qç¸ü&Ø€ º¤mN•z³ØMwNéÎ¥† c“9õ.¯ƒ'ìòZØ©UvyÕÉóm¦Û|ÚŸµXÀ'éúZ£?Ú'ÅsÝ›öˆnÕ¯µF¼ {·ó–ã²lbºÈFˆ¯h…]Ðg˰ù;!±ÿú¿PK ëDŒÑÅÑšŠ¤T"OàoœÀE&`$(ÌcTðëøæzT[‡™Èoèm2m–êÑ0HNCiÜÍú4d`dÍŽG•89ŸÑl‚9*n¤jIñ“ŒÞIyÿŒ/a¼¢¥á¯#ÿ‡S¿ÇÚR9Æ· ¼·¾ŸxZ¨!]±þÄ)’\ÂÏ¥ˆ±Cª,VB¤¤žWÊ²Úø@8-dÞ!P(œ·IèÞÉ=*'”¾À‰KËÚ´rÒV—Öë{´^o 5åj/r35ѯ=ï&"‡Ÿ¥L2„·9Ï–FDš4£ç†:R¢0m;}æs^Í’×̹‚„ÿª‘Ú@‡‡Ìz£0CˆeTÎÈr~&#§¿PÒÈHf/á Ô+ƒ@ëÌg0¨&h¼X,|öòÌ’_QX(að°ÌQG¼ÀCöìä} N«(|ÁàÛ;ßKœDo$ò#9 îÖ/*i^¬IóâÙÉ9Ñ ª ØK‡`XÏì«‹‚'x¥xtCÂu ©§Ù§·ÞñÇý~ÿ{烙±µÅ¿¦ÈüIθÈ?R²\æ¸eÙÛŒüö’ü‚ÈUâ†UÆ>üA36L×ä!ëŸçñvÛ.Ñ '2^Â$!›I²EJf W#ñC6Ɉ<ë›!û¦GŸ‹ ózÜ?íõú§ x÷ýh‹9Dךœ™Ï-T4mø„p,DlRrâ^ï]Îf\-Cö‘ÏEâ<îÖ+ú¦7ÓÏCvâX%ô‘ÃØ%Ke)‰îhÛoÜ:¶xjúNÉâC<¢˜Ò7H‹ñ=úƒ"ðQ…‚ÇtMôûÑè ¥B¶IJˆj&\ùÆ\1úH´¸*DNÞÀ€ÎûL6êJcdŽÈÔöª,EyoJª³­"¤2fzÜÈÒþ-šã³ú\¥6«@,@hK*ªYàøp%)ÉI…þ(‘.e©`íhéðjèV¾,ò(+c¤ýØY5´1ØhÏ>³‘SÌ0°ƒ.z«> :¸8E³;'Q¬2þNºVÏ“Rd$˜§QÍÅ>ƒÕh¤Cµ"D9|t– mHnJ…Ï3s6´AÙ¬H3Ïpzó†Î˜£Ò$<Å8Ø@G®Œ…õªOW^Ÿ½¡E;GÏs¶Ðy®ë•°¾‚£Ä¤¤<5"~«uáúº9ÏJZÓ>u*/œ’4¸êÆ—*¡|™âŒŽ%«i5ºØÅzp«ÅØ/NÇã^ï(øç·Ë±ãì‰\N•Ƀ™×aô4ò¯ÅäC±ÔþûH©‡ÐbPm½¬Ë]8ÚŽÿïxä¶ Î}nàÙêíVǧÕ5ÐÿÝ߀êκÞãÐÝKFØt‡k'Н6¥ ªùlíÈFTêÀù-Fä¬8zà2¤=sÏÀþ-¡"7”|¼èøíÁž:mú'ˉªÄ|`Žï.P¯^¯<ËÁu„]_Ú-ø’½÷õ戣ˆÜm¶ÆwÕïÞ®èl9ø’üO‡Üå+u nW^»vqk[u•ÂNuz`ƒu[1¸MHWºñ¢î@·*Y ©ö¢tG•7U±è¼ÌŒ^PGêç†R€TÀò1Ÿ %s×|߉©ˆx–-¿s†û”Óc8¿´¥óŠ[ ¼2l͆ò/I§må—ÔE”Ô.øk%e·à£+ŒA/¦ÞDÊ›Õ @髹«!虈šbºâgÑšÓÎUâß’töt±^†·Üάø8þUs°º¹”²¸(5®_†Øû†¦RÉhÍ”Öø9 #©ÈÁgØzsÿs÷ž«}gð»…ëlz‰B`—×§ý ö§œ5ïΤâ[zü{¢t[ð©”®õt­ßžmøjO·M>}Â6yc«Û´É]²åý ºÑ§â®ÁÝ ðIÚæòüY¸æþ ÷|•>ÝpÏ9úEÎp?t!V ö¼DÜp}P7ÚöÚÈÞ!Ù+ëÿPK ëDŒ<Ë‚v½ì html/ch12s05.html­WmoÛ6þÜý ŽC$ÇqS¯‘TôÍM‹¬+š¶Û·€¦NŠÔHÚŽÿýŽ’ìXÝ¥[ Ø©»çž{á—®’i\ËÒŸHó‰+pŒ”ÎÕü=‹„¾ÔÊrÁ§U ”ðv•P×.òú'„—ÌXpÉÛó?‚ÉäñoÁ!màb'œ„ôp>¨™­O+ÅÜUœq°ovÂëJÆQ+K¡®ˆ™PëVl à() ä åÖF7»!.)qH¬ãã×ië‚bî À0§ÍóWš¿ÐúŠüu~FÎ7X–|9 ŸŒÃ!ÝfPê Ö¶…Êà:ô.£MO5¡çuãÊŸ0#S©—ä#ä`@q oæ"ƒÔ¼Þ8QbHz8¸nôî|JÞ"ÏI ­zµÅ6„Žo¡ŒwzÃÎiB' ñf–¶g@aûŽo8î |„Z2îá] ÞïL±2ò˜"S|'…[!þÏAð ¡È­ ä¹brå·˜‘ ‚ -7¢vÛy¼d Öîb%Ý»woÁ )Ø;{ª­#  ¨¯Pû”’$!™æó 3JÍ›¨…µÑNs-’g¤“Œ"keHÉÓv×Ëå2¤O<üai„ƒÁ\嬆½ô²#g O(ytCã¡EãQÀÖ…\WQÁÂK{Ðzsð•7÷^#fÔ®pA6 ânç®±¨1ÒŸ ãW˜Ë„\Ì…¸nk@??FOF“Éä88ê|ÜR /ð´¾Òê=ž’UZÁ±ç+ç Ka™Ã)ç>àŽ¯¨ÁWþ`ö_«lùÄ3­È¬Àœi“Ðe‰iÀªC÷:Ã:»¢Ä—iBâg:¥dÑ­'ãáp2¦„õß§q&„Kf-Ö5[x+`pÛ±òXŠÌ•XÏÃá}J켪˜Y%ô=[ˆ¢© r#oð["]ik¦zÔ˜*ð‰cÁx‘»··Ýmðü7[“y¦„³3Â8jÛ+@VõÎ3Ÿ~ÀnG,m-#pÖí@·@·ˆîl2-³Ý„Œ(JdÔéñR;[Eú“æyµŒ£&è8gü3楗 Übz™* ªŸ¹¦ïøbk·»ŸrÔ{ô]‰H`æ)™iW6AlG€mzt°|‹ r´æ½ý[¯Gfûù„mP+¹"¼Ãj IdØ…ê Ǿü×NøgšÞ6ë÷û6„%¶.rÁ}3÷wnÑlîû-Hb!y›“•žfü;ïÏ»ó„áTÚu;^¯›\^ÏƪÆ œýµQÎtϬ×ô~x›,ËmåJ¯½M¦ˆkÄ1ÿ×ç8ª1Îf£…}k¶’Â:´…íðt'±?˜k‰RŽ}dlF(‘>(ÜIƒ¼W‰Õµ¼;}}z9?8hŠ}޼V¾Îí&$îŠÓØ÷ý3(1WÌ–"Úí\…ù:Çþ?m¥÷BF{0 ùv(¢=±Ø¯ð­ˆw¹4°>;›;Á™ÖõÔ×ðWw?n׃Z¢LŽ2¡-af€kƒÝ9º´‘/P8p龑ù=£õBæ\d8RéÙôb<™Ád”3z²~g Ò†íq·\éO \ë¦ 7]ðŽSh£ÓŸã81vvýõÄèÃÎoß_ÓÏõM¯ßMð‡LñŸ,º•Óu3ç¾÷ü_CRîøožâ†»E¥Ï»%ñýwì“¶›SþVå¯Xþ_Þ?PK ëDŒ<òÕžH` P/html/ch12s06.htmlåZksÛÆýœþŠ-2‰å‰ʲc«²¨ŽìX‰3Ž“‰ì¤ýäYKb-‹ì.H1ÿ÷ž{ >$JU¦é”ckH¸ïǹ—{’ùI~z’)™žþEðëd¢¼™÷eOýVéé zi ¯ ß{7/U$’ðiyuåûôüs‘dÒ:å¯/~ì}ý·Þ£ˆÉxísuúè0~Y ]ùügUæ2ÑÅXøL‰ï/ÎŲc•ŠJâßåÚÏOúáÉ“\—ª|9?ϕ˔ò‘Ȭ ¢Ä¹þâjŒ‘ð±>Ÿm 9ÁÕ±*”•ÞØ%%¾1É c.Å?.Þˆ‹––¿<ŠŸ=‰¢e 23Q o]¤ê*&íÁ“DD¥%½~UCqž›™øY”UE¢Ä·•NU‡TU¶Jd°N‡>[‘u^CÎ1„Ö¦è(­š.“p_¯Qùº¦ÿô¸béF2Q®—ð•ø ÷/-`¶.ÑgkDŸÕD¿“EšE’òÕÆtâWí3±b0øk¯÷Bu!¾5fœ+qVÈ|îuâà†Tõz§'.±ºôËÎû(§2\E$}öÙgSiÅX~ï¾3΋ØÛ‹(BÝq$‘š¤š@‚87 ›*.­ñ&1ùCñwQßÙï;—Ç‘8ðy6›ÅÑÃçD¾¥0³Ú«½ªP.‘¥Ú‹¾xü²ÎÙdð _-ÄøJDcÖ¨'âÄLúct‚6V´yðÅãW ÙŸð!zÈœÔWvµE‰œyger©,Ìña,}üa¬|}i/zÖ;|vxttô´÷¸Öq鑸²õ3‘ºx‹ÔØ‹ S¨-·åðâÄÈz[© wyzó®Lµší­èï¿*Òí¾ïsñ9št.†cøÌØA4Ëà„ÔDCTŒËHPœ¢Ïð:?Ä´þ|ôäààèI$d÷ûÓ“TOE’KçØrJ\”Åe/‡c¦SŸ! ¾ˆ„«&içƒè­œê1GXÜoñ?ƒ¸¹+e1ˆ3«1Þ%ºåNå-ƒæLšþ§<‡$NM>W#8üD ™ gÝ¥‚€åÆœ?ý Õà¤/Oƒ œ²Ì5ѧKD—dÞXd‚d›²zœA¢šIG®bcÙ8} ÿ‘\A"Ö·ÏöGË¡÷pQÇON%þ<-‹ñ RE׉\ƒ(îÂåúOvØùΤ*Ar%í±Ÿ±C p\œz¡ N‚kzC¸†Z½‹+³ÃF“å¿eÓO뮊çÄöDJ917•ð‘5)såU>G&žªåXK(HB*ÝÌ®o%=7ÔEˆV3êp~£ž@¹ÐdsðEÖ‚,Sv±xíÅXOUI ”µT¤Jæbb¬âniM.ÌÕ†dËõH%s˜x•1·-m3üº ïLåy/U#]à› -׉‘±BÚkÄ×ïA’P]©¤ªµ S®T%UyÜáw–¦šn…EçûÂi궬¤F‹DbCó9 n‘ÎsQ9Ò½6±gòCºŒHFÜÍ•ÝÚÃiEž‚²~°D¢J_É` *$e†ºAb êIX?3"Õ#†¾ëHÖÃ-9é—kñòº€ÖD³¬lˆ…TMUnJêRû¬ãLç¹BK.¡!ìšBZI¢ÿV)t'—˜R íDa¼È ¢>‡‡aÞÂT㌵wÀB౪!s2X5ÈÚz’¤t꨽ŠZ¯‚ê?¢éBÄd÷©Ô9×[S²G!Œ4$4ÐáZVÞ‡TÃ_‡¨À].¡gX‘ýE|¨)VÂi6U"…Rim}Jú‚oj$®Jpƒ®]7Œ-‘I˜(Ch“øvUERë@’Ä„hʲÌu 0įd ¨ƒï{,Œ‹ ²u6 Þáëë‡ä „ó3=¯Qtʱ¾BžS˜UQr“S€Jª’ŒL¢ â_×­VÃk¥ÈÞ²È>îÙ-•ËN[nBE}ÏFf@üKó jæãj&½(””tº±Í„€ŒQY8g&çä¾TA8Ø’¿gÛ³»BèRÄe–Cž.Vn­f±d£ ¡ˆE3;@3;êbàÃø¨î¿,4eŸLúÉuMbñO$m‚ølä…ÉÃÒ™*Oi‘RÔå+¨]Çär¨2f¡ ]cÊðŠñKo*¿ŒL àÈœ©½zƒŽQÚÐf\šÜÐ>ÞPlÖ=Ú”3™;X«0º ³%Ë¥YPÍc­Øê$HRY†Gü¥)FØÐÄqOU®±”•ÄøÈ=·*¡(°@áXç Íœ ÿ€“[ÌJüóÁU€ï´d Î-ÛfK#Í_6!·Šûª$ã=­?MF^ǘ xc2õ]ð fù¨¦Ùr$ª™Ñi .ቨÒuó“,2"ðt„fŒ>Þéˆ`Š<7ÒÖùu À[GÚki‰˜ê‚™ºá;ŒÌì¹ü}^§"8p¢ÑSx¤…NO€ä,÷vPÁÇήŒ¡‚Ÿ—5¡UÂ\¥ø[ãÚ¦.QH(þ{<ñ†÷ÃÒuöÕôÝ-ï /´4Xר†aˆ¥íçý^]JÄp.r#y1S*ë¡#ð?T"†îëh"•^Qf.„œ˜˜b_ ¦ ŸÓT òÀ¼ Û­º² B]¼¿*41[lI¨5^ÝÕcØZqáY‚Ñ䪊ð][¼e»}h÷±Äƒ¾™!ß­6 OW7 ÍúŒ×PèZõ›-‹…Îry±2“fYÖ…n qÖÏ7ÛmL Ý”!@Ÿ„]-áÖ]ôÚâMþW6ìªÀRÒjðv•ûPaŠ^ˆ¯UH±õ EÅm7(¸(7Ê!¢ ¢^(;EÿŽiáú"\r{õóÞ)Sv>lËóŠù®‘„¶Õ¹¿I J7.q-Û¥Ú=úMñ&äQ®-Ýжc¾­þYòýÖ&¢]h^^†âD­‘Ê.ÓÆ5~Ù6~L†ã”B}feÉݦ T*‡ñ’‹Ì7h4:&˜°Ë¢q—i´þM|I:=°½2t¹w$nMP.WÍO× ¿Á«I†×ݬø_³ α“N‹j2Tö?4¨N?Ý›Œù?ÝÉ`×*Š’U¤tèå^ kB›€üÞ*àËÉ$·›x/Vª`ÿæØD×ݽگn9oÖ zÑœoĺí4¢ê:šœ ðÓ&½ùœÐýPÍM‘®ñìþ”Nû‹0|®¬¯1bQ¼"¶¼ûYÙ°wpñ¾@¢—Æù¡L.yZqÃTÖ;üËs@ä¼d3É£1 ¤óp $à ž¾‘´ d±¬a|U“1ÅFlµ¬Ã×ü|Zï±îk³X‚ï¾w Ý?Ç€Ðm¯•6³‡Ý\ë4±íY´fÁëW¬áo{ó1å9ý4°rô’N76ç"sÜ3Â=q¡|¦†V%Æ¢ðö?º~΃|ü±{Ôvù„âmN2~ÈGŠˆÞœxr4TG‡#=o¾³j‚Ýr¢pM•î¿‘1|ÒOšíxè¯}¦{*ïÉ=žÊÛx²®9•×%[­Ÿ>}_.ÎÓmð^NéÝ ¿˜ÖŸ¼)ù,á.Gïj†lÙëÓï Á…],Ñ•5q‡sÌŽ0Ö F'Wé+¤ÿ7PK ëDŒF‘6ü|ÆÛ)ä®ÎU¡¬ôƶvñÂ$ÏŒ¹ÿsñ½¸hærâ—ñ·âûQ›‚Ì,T½¶.RuãöaM$uÝØ‚x«fʪ"Qâo•NUgªªl6‘{:óÀgfòè5Ð9¢µ):”V]µ§p÷¿éÍòM˜ç­*s™ m>SÄù7²s•ŠgJâ¾Ëµ_uæ/€ƒÝùOzóŸ„ù_™,hþw0ÿÏNYñòºTVÓæI¼ou’1gŒ] Xþk4z¦æº3fž+ñ´ùÊëÄhR5ºÄêÒ·úA^I¾ êõÅ_\I+æò;÷Ê8/&âà Bµu#1™ˆÔ$ÕDç&!öÅ¥5Þ$&?aäxì\Gâ1_€ÏËå2ŽŸàôÍ K«½:¨ åYªƒèˇÏqÎ&“{‘øËšŒ¿ˆhN;ÉzGqb㹌?¸{¼›{7vsïˇ/aÎ1‚Ñ!Qp®lË‹dúÎÊä0ïçÒÇïçʇKÑÏOGÇߟœœ|3zöغ%~Gø…YH]üÇå *L¡6 {šƒ‚ÊÓz[©Qÿø ®\iµ<¸±þË"Ý,û1Y¤Ó©IWb:™;‰–ˆô¶?‰¦ Ñ—‘@…D¾?ç瑸 ŸOÝ¿ò(²ûýÙiª¯D’Kç@Ã客,\ör t,uê3Ðìû÷¿Œ„« iW“èy¥ç¤Ab=Þ¿ ÈÍ])‹Iô–šÃ_ ( ù8›—ÁÖinü—Ö#=aþ\Í@â§RÈ$QÎ]* °4g?‰8Ë3¦&N‰è0é7­I[DZ¦l˜ «çPéÐU ³@€HSDû“Àáß £Ž œJüµ,æ“H])’5BÅãËáWvÜù¤‰¦É•´ÅÔøŒ˜È~Á‘F3 ” h”™Á( ô£„™×{iÿ.k?Ë?7}†ÄƒåÄÊTÂAT°Å– i âÁnJ‘ªÄTef|)WG`¶Á]Ól…©¶À5R*pT`œ•ë¬ ÀV|f„N€Éq§?½¾çb¾vø#ôNÕË&à-Ì §˜ª@\ w/€¯òΊf†;IÕLÚ›¢³. ±i&ùÌT¾Eµ,V"©œ7 ¦*예“9ƒÑ®æÑÌX`ÂÂXøz®M)P™›MvgM°û¨’ÂitGH ´^ãöì—^ÈB—U.=lö°d‚ª²Þ÷ríØ,Œ*À~]üzN›í,6´»CXIÁŒÎËÂà0XÁØô ¦•ÎSšÙªÈ.7+à7‘¼Ì Ü$Ë2×Á5‹žŽËÞy9Þñ¼<ìž— gC#¼•ψã³Ñ9¯y€xʲãóGááGž‚P›€k òæé#3 ‚‚óáÀÉÆ‚‚ï@QY9O#S$$0qº”Ã\½u ;U®Õt¾  ™T¨kIb¡ý!= ÿ‚&\* KæÚ¡6»*÷`@.p 8´dK‰²1h4èø37’=p¹·°)à¼Hl”À+ Œâ%h¹#š‚ìñ½Bè ³“úÌšjžÑ Y(b½Ì·á&J|D¢ÝÄÍ–(¶E‹c–¦‚£=UØn›UÁTË]àä|ÄŸ¾Êý“Sõ,y9ߟ‰›Ã¤÷VÃA‚}è4 šÜt%ó D–pÚ+vÜEaðWsÿ„ÈÝH„)FŒ½yÇ­w)\t;ÂÕ5pÇ9RçÛ70…(xv¡ì•NT RIy7|~’=Goµ<¬w'z²·QÂ*tÈċĔ*Î:¬¼{æ‚û»¦O¥—oи4óŽïÒxPJ›‡÷4«#Õ ¶V Ú‹ÿ…ã±µƒ  ¤$£ýˆ~ÇísÇ®&•µ7ýõ†³È Ýt׿€Ì7¼`mDôñÁ[>þ.À!¬íY°½Èì1z, £½J Â1„ ·Ñ$ºï®I;ÙbRÆaÛZÏ6ÞAaѵø|:ú—ƒ`×>³€ 5`± cÖ9Y°àdFéòÓ¾o‘iJɳ­SÝÅ |6ðŸ¦ÿ2í·ÞÒˆwÒ¿Û¹ÿ•£«qm8wâf7¿¡§|¥,£ã–ÅêX¼)ÆÓ‰%°^çn ØBÔ_޵»±&DºÛ˜¶– [¶`o9òÂh,Ç _Î%ÊžñuU¦<'Ž#ˆW1ãb1ŽÙ®=ÓX>àq ú¾P4Eâl¡ @¼Y‡TëX ˆ‚@™éǬð-sNf«ˆÉlÜz­‰Ù{¿°BÈ:È A*&BœÉI ü 7=· fÌ~› kÃæÀÇþïj ÉÍ\ƒŽ‰“9 +Sàö9­Ò1È›ð'!JN¡ÀëL-hŽ, ª1íˆTu8ìßœ(¹ çn)W1ì-ÓàDéh)YYÎÏq|WS†ì­Ø"ÑV 3c4Ïô<¾^䤹¾Ä„¨19»P©–vÕJØQ—^„b΋9˜Ûì-륻tTS“`:Œ9ÙMÜurGd§b[å*8Û’33@x¢gÿ¢x 8Q ËÃarz¡!”§| &9a͇ôâvi ,Qê¢Â­™`–0»Y!}H$ˆu-fÚ+g±¶GGœy–гJÂN-Q8hB0Sµ¢CåEI[¦ˆµø —r6œØAÕ¥©k›]#YPd¯É«ªr_œuìR/Tû‡™Á\|ÚÆTu¢•a[…¹]aáwCµ¿gŒÔ Ú½I¿ {¡i÷"Á!»üÑA’•ºö¥õT)°¯] „A€!jSÄÖp¯.,DPB]³à÷J} >PŸ¨ÿOÔïÉή‘½m.Äý[ŸøA ݺ/§üD ľ‹ De­s³7ǧ0fŽ©ô­Y~ÚÁò€ç·X—¡ÁÕ••Ëj$ˈ¡Ãþí·A[œQ¬ÃKBn½e)%Pìÿ Ã6íO®° eë&/¢€Hl«Í~\âóQ0„Z£Óº ¾Ÿ”»@~“Õ¿4vˆû0~—~¥S€6×gUŽö£iÅ5þzaXHeå±`¦UžŽêq†í:ŠÆØÊä\"í´¡#ª1/,!rªKÊ\=à½qs÷7\‹5‚&J TÈ™ÇÚc“ q½U3y€LÁô<«^nLÌAY±½‡ã’Ô 0%ÜA×¹cݲP>3iá:¯Ð ã–´š¢®Ã’3ý3ñA’teMŽB§§Ô3æ~\D}duÁÝÜ1Ã5M˜êÙL'XÆ…}Ì•§æe-ˆ{þJ¢ A-@c)­4•Ée 6)ñš'†¬5i•0â8v§-EJM+̪N…v—¦&ÐŒáœÝ.ìl7þœãYYGÊ•þü“±O'Ø›%kÌ6–á ó‚p±gjØ:ÔôO+§ ltá–¬ŒW~‚©´ÎŽéàÚ3ž¤æ1•îP†} ?(~ÔL½ì3þ`ѱAŸx=…ðW-²AŒH'S€»ÑÚI5°ñ¨·p {¨Qg°ôû´í­Öȳ1ç þLŒÃÎ¥‘æÛ&CÖ9JNh¼@×Àùqpƒ}„TÏSWx¶jÐx\ßvg:ñè´òƒ¼.a<…ov/^´ÀÍRî>tômþŸ_?çÔèÜ e¹©ë#T=I¥M Ö´†®S€Ôù`¸ªÔÐvGSé@5Jì‰ ”n€´¤cNµgO±Ev¿ïT³`òš‚ p"9buÁƒfUA UæC 3ÀšHqûðNœ‡Z¬–aG ùÖg€Î}dIHfjÍÒ…âkJ§q_7zg ã×Ýâ içº!&,îÇ_ëâ‰ר뽾Ø<@0Å£h'Ñýöã8cÓÑd•øÄÀñÍæ{2AøÙ›2jí¿†[õ¬Uî'Ñßq®DôÔI¤xÒÆHp<׳è¬iðï<)€·ô,hé,Ü×:üy—5”‰ ¯ºGÐgGÿÁÜâ×â#Ô°©SÄrxogÜàBtþZêU×ÓxÆã!ùõž!<¦›ðæ[ðÈè¡ÂñPÒBdÖ@Ðu›ËE´ÂãsÈÉNg Ï  P²_£mâÞ”£:¿í< UŸäj8Ï*ï7ýf\hFw€*´>²1aú¶HpKDÿAöL†)²*R­¸š•ƒ~’ž˜Rí+axMÜDÚ`(àvÕt¡‰% ¹RK½,ïé$»ààxn¨Æ7Dîl[?›Á‰›}nïëA¿‹o+]õ€Ø‡ _6-…)F|ô±X» æØ¡Ý³¸#êHGgÄUÖ<ôV2thÒf°¸6ÚØ]Ý_ШªðV­Ÿg <×ô³ì«æú¹¶×:XÇçjØçjØÝÔu¸ym3+ç Ž;¶©Ú˜ûï.øi|ªc8‚¦u¶ˆÅwx´-|Ù Q4ê;¨ô†‚ë&*î«– °z»¬ûkj9kžb»ì»™ì(T!è)B(¹¤”îÖ¶v{È3pv©mxwÐ~Eç"Б;³¤ÀuénÖFˆz¸BÛfë‰nÔÂPWã*> Mª4r~ñãÖÛX\(Õ’O¿~Bal8‡SK…“p•Ô%”E¶|øs­˜§©4` t¦¤Ç²ÕN«&÷Ù oòáÁÝVú‰ :CǤaD£Í`Б RXÍõ ¦4eUbš«‡ëxqÉÑ­“ß[±Ñ“˜!³°¯Úý§€â9wqÑÁ9[Å @ÆVõ›îÔñ5½ûa‹H:w­d·}ì$ÙÕN¸ò7BnÌ–l›¶ñûµV!é{o­ê‘·nê÷ÀûSnþO Q× fðïÇrÑÓ5€ÝO¬£'´Vpñ ¤£ö×=4BmTÁzÓñFLÖoê «ªhÚêÉŠÕ³‡·zàÛO8ÿOþ­Îû‡:AóMoµaÆÕÝ%;À©vm¨y©Õ÷Æ”çôôA÷eV”¹ošÊaÌ Æ@téÇK5 •<;þàÆèTè¾Ð¬ýΧÓÞ õ>Ÿ½O€ODôýùûG'Sur<“Ñ“ú;«ÆÊ ïhêm¥û ¥àqz%¾ºgË×(5÷t_sôh¯9|UQýš£î´UÿMlg?—ë ¸—×ݱÿnef÷º},G²—ܽ2Ø©º Sºd3ÿÎÛâ6ÖxÆø~0|Y¾Äð_PK ëDŒŸCÜR Á…m/¼¬\&BGÞ{¦í„«,Wt3h¦'s&üÍó^ñXHò£RqÊÉ‘déÄŠÐ@L"îyƒž µÈm3’ŸØˆ•w!Á=z4bšÄì'óFKúdcƒbâšJú}©°È@¿ŸªÐ)õs­¬ UúœüƒT+;cRŸ’ƒò\ÇcŸ>?DñS c-,ß($7!Ëù}²{\3:ì?£ä‡ŒE«-òC•ubæ2ÏJkžÍYóìÉî Èì”WpAŸ;½êκ¾ÈYÌ/5 ¯¡®úä*fÖ¿Š¹­nmÐGÞ΋n·»ïíV66^ñ¯ ˆ_«Œ yu²A%Äï–eG)äÉ$ ˆµºàKVYüòîŒoÌÙÑ?‘Ñí±ï8Nê*š †˜)ݧãÂyæ÷i‚xJ0Qûôñ|NO)U×ݽ­­î%¬ý|ЋĈ„)32›P ×pÛ²pŒEdÈè­­'”˜"Ë mûôœDì2ˆÌÖkø—ÜÔäLöé®S÷—|%ë%à§ÿE5²V)JùBßc„…!7æšÔ|) ÞIô:lPÂÁ‘C_ Ýom _Ê=%²å€´ˆ@T)iá’Kdp‘D\%"goÇEö$üÁjEÌðÐnCÌ™Œû”Ëv8a–·«?ÉNë9„É€¤œé(›8'–;ƒqDè  ÷ ááö !ư`~]H“Ú¢æß¼Þx˺Xz¶yuBrbúÁþÏ øK#Fœ€æמÁ#DT&ju”’¡Òd¢ MÆ Žåy*J&Ü$Aa[zù Æ jUÈÈB•Ôi“Z^ñÀ$Â4µ!bÍm¡™Ö 4a ¨gd(ÚH¨ÂÌ)zlŠ´mƯw¤S Dm¸1²ÈÀ¢†U]‰3\£«xê°PfC[­‹w¶¡º&Ž`âü4AåFdyÚôj%/F7‰,‹8cÈyhè ª·æìdxðkx1M ÜÏ@ˆá=^‚imYœŠw1ã¼Ã0@ ºŸÅàð§ªz|¡Zv>³ZvÛÕrKe {3¿”Õñku 0r +È©ài‰¿»Fâãç¢tx3²¨©Ù*Ÿ0—9²¸nAT7’ÚüN¥XV!Uº×ÁG‹@ºw9h=r††«– y ´˜¥Â Õt@¾{šÚÃîõ’$õ Zt`†KõãÚ™…Y(@(Q@­± ×<ª–öç—‚o XFq¦Õ¢§±=tÀo…“™ÌÄJí! ö˜é;º†L÷æ*± 'ßúmÿ]G×x®ã\w«Û:w†qêöF¾h¾4Ó/‘@Ç@%۴ɬÂÝLûЉÃD¤Ñ:¹ÞˆîŠ ßD:Ú²! î~ÙàvÔ#†îéË™pì<ô_òÚ_¬¥›öÃÐP¹ÜMDçÐÁÃöp\$+Q÷IGç΄¿:!Ý-/†Îi•´my/ÿýûöþ¬ò|4uÊD&]ìÞ•ÝÉ*Gd{ß‹D, …pôáÖQÝ‚@Ô®ðÿÄû ¤û—&Ü?Ïnâ¥T¶æ MË#ÅÝÍ¥³¡ã!תJÈÓ¸H™ës5vùJ~[Þgó»Yû56Ö÷@Ù¨©_GЬü½²”ËOMT^ä_Oåˆù[ùœþ‡!òoÀp к‡ ¸™ôã¸MÝê7£’ð;ÛÅñRd| 49|çZ®3÷î­µIXÐýOÈÑURO..Û,~§yżX—ú—%öÿõ#ÓWäÏJ¼ŽÕ¾-ƒW~ãKÓ’¾ñˆluô-ÉÛ²ÑrG_ä¢2á¶Ï óËõ¨·r”¦?ËãT„×+ÃQ3=D"¨ <ñ 9ž®C¨’!Š¡ÄÙƒ'M¬LІ<ï2EîvS÷V¹V ´‚nI8û·‹jæ,‰æïË\²fwŠ%§² Ì{UX«ä½8 9_‹zXXž1ß›@·Ô˜·‘Y%ôû{Û\Þ·á9n|ʲüðñöþÖ Â[»Fެ仼¬É’Y°‡Zeúîp‹Òâ!ä8qJM.ùˤž:O‹!¦$…¢„YP\ýºòÉÇZb3Ûñì³:?Ž6gúkÙ¤–Œˆ•5;Zò£Á:\ÖÄ åYu2+yYÒPÝ¡Òè~œÝF”åßéòL©ü ÍqÂWÏSX3„5¾ä¶3æhP:âºóÉt°:¹ô?µgÏÍ)ÝçLó®ÒáUÚ'ôìôj¯ðîÎÑÃú™æ™Òì–©Ú‚)í¡×P)7ãq3–5_ÓwÚó¨½{œG-)Õ󍶨bqh>øÏ&IËÞË|j…ý.åñʪÜMÑ>wöþ¥.I–ü‡„Á…mä:^iã.A|É`É$¯ª6åâ\ÿÇÉÿPK ëDŒ<¿‘Þ  ‰7html/ch12s09.htmlå[ÿSÛ8ÿ¹ûWè¼³[¸Ån—¥In(„¶{”²nï~b[ŽEË'É ™›þï÷žd'v'†¦½9f€Ø±Þû¼/z_$¹éQÜmGŒÝïˆùi˜¦$Ò:uÙ¿3>î8g"Ñ,Ñnš2‡øöªãhö [8þ%ñ#*Ó··ïÝãã¿ýê¾p ¹¶æ:fÝÞ¯ÞÉ@¥/û—{M¥ž’31JE´È%H*§ä-Jª¹HÚ-;¶óä‘,î8JOc¦"Æ´C"ÉÂŽã+ÕšßõàÒ!PæàðºkåIèîY€¼%1Î…ÿJˆO䟷—ävFK‘?^x¿yûNA$F¬àÍ“€=x(?ðD¨ç6•<’l@.b1!7,d’%>#¯3° ©, ~*tàÚjë·Û‹²N*RÉÆejÿx‰ÊqN§—D4ñ[?bäƒb’ôR&¹÷‘ëˆÜp?²È…© §tYât¸Àæ0gr-$ÜÐ €ÿ⺯Ø'äµؑӄÆSÍ}˜ëvÛÊ—<Õe»ÝÓ1µwÁž={6¦’ éoêPštÈÎŽƒî©NÒé@øÙ,éÅÂ7L½T -|ï’¿“üÉVK©Øsȉ½דÉÄsv_"ù…‰äšíd S>MÙŽóÃáYNI¿óÜ!?ÍaüDœ¡‘È¥…Dž/F­!õîÕs+ÍóižÿpØš-{ήAÐÎï4ÕEJ‡¬/©ÿ ìØ!wCª½»!Óù­çé{ðËÁñññÏîa.ciˆwSõ\Œ(O®`Vì8 LšÇNcðãKð «eÆV<¥ñÃ5Üs6ÙY¬ßK‚zÛ·LäiD0%ƒ!ØLÈŽ3‰À à_ ~ÇÄ@Þ!èçû}ø¹¸pÈ8¿>>Úß?>r­~ßm|Lü˜*îKÇÈ…I¸­épLx #ðÜýý¢²ÑbOǹ¢c>4DæÏKøn¬RštœCÃjŸ|p|䉱-Ù qü D(g³LÞ¦„ú>SêˆéÊ ß½†PÐnÑ®…„ƒ:'ús‰h õÊc‘­$ù0D9“ ®d9"ª19‡|˜Yím2aïaBªdȈŠÑ!ãiU\Ž­¢i e SÑ©d$šH‘i'ø0ŒŒ¸3-™!·LŽ!“Ôi º‰ãéZ$Ç‹¹ªp…pÄŠÏ‚piŠô…!]¦XècÀÊŸs3Ú˜,ðDiFÙù—ȈO«j¦±HÉxx;á! …$ìŽRð¥)ŒA©GÜx*z ‰ÙúÖ£B\Ø'—;˜ºøßÛï& Šਘé+lÆ xJcf|ŽÏ§BDñ¨qøDά‰üÃc„XA2æh"£SêÐ üsh•%ú÷³²ßÒ<@ã 9™bÖAÆÎÀøÇ€ C1 ͺ®çHüLn-MrݒŨ†Rw%—ÓåAþPgñ¡13xÀ +øœ4Ëá©–,Æ=›ŒCˆa%êAþBnÞhì{ù”ô.V²ßìË *ð=m€·4ë×j¡÷Àü —ªЄÞëI$[ß\2:÷É%í®ÅÑÐÞì &ux³$â­šEâjk-èmC”*I÷ˆØ4/YbBQ…CÄ1E0ˆû,ñgMÞR—høà¢L ?£_%Z¼ZfÐm÷†Ù +{I‡#˜ -ïÁ<¨rM?ƒq[¾`Ay0kLKr˜îx‰±d®e Ò\BÅ]W^뛸«ÔûT3²C•i‚ª Z ¬æA‚èÔöWbuÐ\?7k54sLÓÐÔÚ Å¤EkÔ„/NfËù¢Ðv„Þ%C‹Ž /žIfy3´‡ 3)¡ª±B y+¬i[4ürb:ØTàê97êŒù§emÇÈÍ„¬$S ,¶*(k©ƒ.1ÑKDõ):öw´•L„±jžèÑý‰Ètšékš°x+£Òn˜Êb­ S?.nF9¨¾YŽÛ¦D¼1šA‚Mr“·‰è• –*¸h–Írž›HÿkIObjÏÀ•;²ÿy9–oPc@5íã4ú ÞµŽ–YÓÐÀn¦ÔG}7µA¶ŸùÔ}# UG±Ø3Š y0˜‰ZwÌVª«—åUQœ»0MpרDn½jß(á>‹§9_^UÅÞ7¤ —ž…¥Ð…=¥òZnË,±œ°8†/‡Lãê< …›ÀS¦­pàwÐû‚|{¼oÎåà°€nU2‹»‘°;Æ ò¸Á‹[d¸Ð1I–¹b[·þR¯E‚IoE,ªšñÙÕû~¸ä4YKËVy$û~œ– nϤåV+~&a–ârJ.~@ ŽpEèbw ,ü*޲ Á­c!±ëGÈb³4c…Ë7LŸ+r}}ÏXÍP\Aßuû™Òb´w¾u^å^Χ¨éÑ(ƒD1ug SŦx¾6b£IÀ%Ø I˜+/ÃDÅi–ü¨Ø=—4_/T|æ 9l  éP¬…%^¼øyß!šJð±Žs§Eêt‹û8u7šÒÌÈ|Ëtf’ŸÖ잢½À‘íö­j¸»Ärk»³õÑÕ³|Ðx^„.Õ–õ‹Îøôâþž„{È×ioû§ýÞÝíéo¯^ß½ëõß¼_³7µ’Zå Çà.Áº ÓÕ£Ö¤žZí|…ÎLlv…M2ðFS«à"÷xgoN¯^÷î®{7·ooû½«³Þ¦…ïíiÛ”&ÿ_êî]¾ºìÝýþáíÍ?nïÞ½?ÿfêi¬Ö¬2| e/xÊ9€Yülx¼áQª«9ÑÈ´¡išz> oƒuëø=âÆS`üéô¾þƶ`<åAý œË—Ê8Ó+ô7¦úøJLŠA_âÛÄáç®å¸qÈ£ ðhÿ®QŸÌ…[³xø$Åg2† ]ˆ,7 -„­¿Ö³Z=j³êVúðB­7ovíßÙ;—B¤xŒeáÝ |=¢¨–cx&„g¼„éø…d¾iZ÷ª…#K¼ûêk:åWÚxâ.ï|q./ìø ¤ÎËâ;ÉFBÒšW–D©¾1 aÊ›³ê ߘ©ê?Úâ¡þ•ó‹CýU²ÙòûEÝéüDþj€_~ȃðdœ_™.éKÞQzªb¢opußœ±MtSÀ‚X÷ÔŠ÷ò¹…o½à+0ø ÞPK ëDŒ<ÈÓ ¼h html/ch13.html­WisÛ6ýœþŠ-:©åÉÔá:JLªã8qŽñ¤ž8=¾y rE"€(ûßwAR²h[9ÚhF\î¾=ð®”³¸@žÍ~‚æ—è8ÎU~^Š:a'Z9T.øxS!ƒ´]%ÌᵋüóGÜXtÉÛ‹?‚éô·gÁˆ5îb'œÄÙhþªæ¶::׆ÖÞ’‹Üp'´Š£Ö&–B]A™0ën$ÚÑ1( .–ZÝdàM¯g-nÅKÚÍQ!¹×f îK¾Ðú þ¹8ƒ‹/ §ám#(t‰ëØBexú<)¦‡š°‹Ê•Ãß8‡S©WðhP¥¯—"Þ«eõƒUëM=ŠÑØŸõÆá³®Î a²àœw'º¬´¢À™˜nn¶«ß‹ ¨–[&v8¾aŽ»4 ‘/ø+œ‡×¥®2¨Úû5ùþ9^`.¼Ö:—ÇŠË'RKmÉ0f±M¨Üv3?ñš·»4C=ª¹œ¿³o´uÀ`ÀülÚç ’2.KÊ-”:m +£NµÜ‡ß¡³Œ"keÈày»AëÕj²ý#ï~ãae„ÃÁR¡My…öxrÒ³&Mö<¹…ñXÞdðuFaªË(çá'»×f³w'›½Ç“Wä3jW´`û ‚¸ÛùÖZT<dž§Wh¨—9wáeŽ®Û°?ƒñÓñt:= &]Ž[„—tN_ê’ õžŽÊ€)šfÇ’fòŒÆƒÜ:³Ä¬œ¿8§Zàjp'êþ+‰½Ú‰ç:»yN=Ó&a«‚Ú@Gé'l.É=?¢ ûeHŸÓSu·ž ‡Ó¼g¢†Trki¦yí£ ¡mÇç„c%2WÐ,‡ØeYÒ‘HØ{^‹¼™ ¸µ7ô-®´W ›4¡rºJi`¼ÉWˆ­ 'þ›­#}àΑĵ6æÀÓ­½B‚R=xÊgçtþãˆÏÚ€ä8kÐuN·œ®Ñm,‹]áÈ ·1ì¡P2Áì=õÅ£hã7ÙEM]IDü5•¾WR†ÊƒÉUž0Týö4Äâ'ªÝî~Šqï~S –Ø;z¡Âðåêã5œíß­ØS7úÀ %ÊR"7Ïa®]ql ”3:[¦á¶ÈGö·[7w®šÃO¤n¡«'ØB¯,Ð8 K‹·BlËa]Tµ0Z5ç}l¬ na±”’N@åqÂBxwñ!N×$nÃ6,Bì즥Ú+Óœ´”È?X'YÖiù[3°¼¬è ñª’¢ee äˆ23RšµÄùˆKÛÓ¿•pEƒ-#›¼ï9³‚‚ˆ…À ˆ„j¤Lˆ8ÀÜÑtK_*‹±¾>–º“M@¯Q:•ÎÑ3Fë²I3Žª~Í7Òu¦uuê+|G²¼*¬õD’Í‚lB…."94˜jC$}²‘–^@HØ.fÿ¸”‹ËTdÄüììôò`:ÇéxÁÙÑúžÁR¾ƒ‰ï¥Ò'Ê…Ö o4'ùÉróLŸã~ Ç=È\÷8.Ûþ‡pÜW²ƒº[9]‘*ü‡±oϸŸBñÀÛåì ½¾Þ&ð¥²ô· ¾ï-ï!莑×u/òþÆ¿PK ëDŒ<šI'Á’„html/ch13s02.htmlÍXmSÛ8þÜþ nZè´¶CàÚ\‰sC_hé0SÚ»ûÆ(öÆ6(’O’ø÷·’í`§v€»ÌbY»zöíYIãÔÌùdœ‹'‰ûŒç`IÉ=ø»È!}+…a¼/×9P•O!5pe+¿O¢”) &<:ûÝ~ùÕÛ¡NÝØd†Ãdg×úOÅTçû¨k–%…ÊDB–0õ¯æœ0“\*œiìó8(¥Æ<—D©6×t `(IÌBiÜŒúøH‰A|,û<)-lŽ£ PÌHÕ0àŒÞHyIþ:;&g+]šü±ã¿Úó´‰ •s¨×ÎD W¾µ×´PCz–;‹þ„)9ärI>à ˆȇ"‹¡¥ªÈWF¤è™–|.ýtZúƒ!ÖgR´”ä  F ³šjôà[M»¡+íEU?yÞH2A>H™p ‚ñk“E݃çMÆ:RYnšÁ¹` VŽb–—‘ÃïçJIþŒüFª™A 5÷)y]àór¹ôé³}«~¥a©2Û…±¶é“Ý·8­¢p‹’ç70žš8‹­ iˆÌ†™‰$¤ ÚtTc“®®þ¤ÃÖ{Œ¤¥h©×d*Mê¼Xò{/rAÂÊjC„÷ `:¬á7ÿæ®8¿¤@¢JI™I3©«r±&øÂàÔzØ6¬F¬æBCìך4›ç˜­,ÏyVR›~A2ñ"&ŒuÝO^¦À™¼Z§iôAå¨Â–I°Š-ƵÏr¥àK•9/Œ °™BZ 鹑9¸ äÔ¾´Ž{áløtöÙÛy9ÂnQ7´Ì¢¶|Z²±ãƒ¼öБ e§å¥xÛ[Ên(hÂâØ ja]4G/Ø‘¬ôÜØHm•ýM'UÀÆ}œY†®CÄV®‰R§¸q¬Ó÷7@ÕJ3v¬Ž9Ï´qÝìñSnöÇ– ê)÷ Ã7Nd>|9yš˜}·[ºm¾g“³!¤—3oŠ[\Í›/¢^ñ Gþn‹ºá†Ƽ¿ ½o«Ã¯8⬺ʺÖÍX2‘/gèÝu‘bNbÝ꺶íp?ÎNÑ»®¸`¼ø®@u‹oöMÐïœ^.YìIái,ZSä ¹þuú…ú3=èHõ[ë«ê÷ÿ]…âèuƒ­R4dÇxGb!q¿ÜA·²ÛýÚå*ÇL šm¦ƒ[mªdÁ6½fÚ2ªÁ–ÆTÜdÀ›9þíúëB/WØÐT§Ø°PãÒvOÛœ°ï±L9ëRÖLq§I»¥ÏÀXªí#y¸Ê³¨Y¾ªQàú³õk4\îα+Åe_ľŒ­juÃÆ—ìÚÎÃ)¶gϰ¥Änj}ò¯ZCå¶õ,ô}s6®¹»ÅÖÚ¯f–R]ú¶ùÕáWu;²˜„„žï¦0Îݯß)˜KÅzNóߘÒ>lϤt‡Mwлã{%Ó>ï=Ô©¸óT[ŸŠÛ:‹_ó›³l7º9!ßb¬* $vOÕp§C³þœÄ“ tôæúçÑÙÙ·S«n¢s]Àôø$8 žð™ªÎQ×ÐgÁÄì닊¥ðA²ø$ºã&e:¸IAû¡Cúñb4þ~|vvöÝèÄï±³$¸ÁB|)J–ówX ‡” ;Ä. LÞ+LT«e RÚ|y# ŒøáÆ~0ú¯0±vÆ>´¼2™‰dEf)ÆLȈ.3 æn?¢³ÕSb’1¢_áÏå%% ÿ|vzttvJ ëÏO'I¾ qÁ”Âìe c$k6CË<ÑfíÑÑcJT]–L®"úŽ-òÔfYËKüÍn¡*Æ#zbM¥ø-Æ„1"1W†›´ZÌoÒ˜Ë^SsŒí„Ç Ô- –j°”§ï±È'!›:{¨8±ð¼Òï:J;ðvò‡C7 Jæi†¨¼¡6>HÓw.ƒÍ¡²{­»±y˜ï‘^XÄúËxQàý˜Y^1iæ†ýG6îÍcì I#˜|NfBgÖ‘Žá=›b–‘²ÁyÄø@вqƒ·û¹}ü…ØOúØÀ9Ê ›ƒˆ×¶×nD!¾“!|•凃Á‹&veTCBJÀöËsU’¹d&ó$5Ûe á#ËÿZ’š뎕+˜˜Bm€›ïÔbñP&¡š­ÝqŸwf•9%HQ¬’Z!:ì ­ÑãàÈæ‚‚§Hoí&¬‘IXõö97k¼§¾!*/óéw¡qR\˜Íõ…°9,°+’a§W(È4‰nuZýP"•ùo¹2%Zž™“\ŶC4 LkÒšBópq­Áª ”“¬P)n·ª5R¸Äàc‰ª®]‹Ü“ó\çX…¿ùí«pûX/p– g‰ZcÿÙ²éÀ] •‘Sk°.ú¹³éÞp^Ì”!|½NΦ n¢¬ 0=Õñ©˜ï—I.mˆ˜³ºÐÚ”Íbô€Ä­ÔxÃ;¹ |‘KÁÍrë6Í$öJÌ;ë¿<1ÑÇ„Ódè{<¥I3'Ei¥?þreFe­¬BÊ9 À]Uä1VòÊ䯑ôÖ#ÛýâŽsK“F–ƒML;if³b„ĺ2¡Óªž¡^l 8?%;ÅìP#eŽZ_î^… {ëG fÿJÐ4â·Ÿ^¬3™ÇR–6µ‚ĉÄ2ZÜdi—ï/„© íØ•š-ÀC"4'Ÿ›¸-¿ÏÚ”šîÂÊ,·Ç¹á% Ôm dº±M¨p|Ü…²y‘ ›·Óþ¿jüå«À;Šúj‹èz¬_†^v±ŸÒüw̰ðMD»å"n8D1ã‚0US°Ïìèf>oñÁ‡ÓG³e¤ûb`À ˜ë¶_5dÕävc ÄÏoÈ {‚_aé 2˜YU#£z‘uö¶RnÖÐK¤'÷6—sÝ6CŒªc<¶'"ÁøÊ1+²µ=)ôùfQk†33`;«ži,{ô"É/m -XQ£@S›Û1kè‚<¦ Ž•.î4„°Uæ}¹Í|Où;“¨ô$ÕŽÂv:ÝXÔ«=dê \„P¶`Ü Ó}HþÞ5XÂrìØ‚Þåý-÷‚Ø3Áþ›ÐÛ:p¯ÏAÁFÿm³0Üßa×û…)ˆÓnáü²+vKwÞÒëvhöçÓŽ‡Gèá=<ƒ›}\óÊu£Êÿx-¹ÏöšôJˆêÏ+›×£æ²9°(3G™€ƒÑsbdb×ÿî}1™›ds­lþiõPK ëDŒû#˜ÍžþìR[n¤»ûáAøPÎM}øAi”Xò…ÃÊÄQû>\^ "¡Æ®˜ÀRRjX$43&º’†¸¤Ä"“Ž€[§-gÉ*” A3«ôÕ7*{¥Ôùó서]bòe7|~Né&ƒRUÐëæ2‡ï¡³u:ª =«5—ù sr$ÔŠ|„hw ÏaÕÔ—F”胮‡9F®çJ@j ËM3½‰Ôca¤¼h<ÖèJ¢Ã†POo@=½Fëw•ƒ!Læä+z >³Ì‚óùOAð .É;¥ ä¥dbmyfÐï9A›LóÚnFë[²VŠ rïÞ½%Ó¤`¿™÷ÊX’É„ºÄ3/(I’«¬©0~¡P™÷KXkeU¦Ä#ò+évF‘1"¤äE+Àõjµ é£C‰°Òܤ‘`2VÄ>ØÝ‘3:Kv(y|Eã1¡…·(`½Ea¦ª¨`á7³ÓZ³sÍšûo3jW¸ <ƒ¸“ÜÕ5+à“fÙhtÇyÁlx^€íDúùe°÷|o6›= ö;7Ž„çX„oTŸ<ÅZ˜P©$lÙöR`öž`j ¬Õ Œì²îáJ–X¬“kö`ôßbRl}ä{JÛÝ`¶µw´ìÆIi^”ȪS4à&GûBzŠ‘rÜZVÞæÈ{g†{Æ` "b ³»S&‹„‚†Ë7—a­¸ûSî ÞcØ\ƒF"˜~AæÊ–Þ‘mw¯[‹—’® !·íq*÷zŠ›k_mÇ’(©@¬" –qÁ]_#›%ö}×=ŸFb—Ñ=E÷LSÿÑï}z‰*ãȽJIÕ`™ay¹Ã¶%ŒA¬`~¯DlÁ„ŽÖ§’bZL‚Rá?¹Tˆ–sîë'dÞ Ô’Æ t¾¾F¨¯åîí0x è\F@.¹VÒ÷C_Ê5úB_òÂÞŠ)T n¬Ÿ÷ {»âèw”"° ߘÞd÷2}XØCu¸mà"¸qhÄ‹[!¢-wSìŧ”.BãÇã-†•Ò¡ H·?üOÌ®+Ùî¿hÄ·z;¨X]#ãÿ¿×-‚šYìTrãLôõí«àøô¨ÇŒ\†n×<r»OÇÜäs]C_ÿ—÷–¥ê#¬¡ë÷w%è/÷,pO(‘2æV oÑ7¹R‰—ºm¬ÿ›ñ.çÏqìÓ“£óƒÙf{ Fûw*¥Ù–1|Ôá”\(å‡oÚwœ”—g†Cîà¹Ñ!Õ¹!lsó&~®¯FÓ8Á2ðn±Ÿ,»•UµÍÛ/ãÿÕørä÷Hú^¹š¼‹ýC†-‰»ßôGF7MÝÝÎ]ôÜOÈ¿PK ëDŒ<ÿ†A@ûhtml/ch13s05.htmlÕWmoÛ6þœý ŽC­$ÇvS/‘4¤mÒfH» é˾´t–˜H¤FRv²_¿#%;Vì¬ÉÖ ˜ â‰|î¹anÊ"s`iüq¿°ÃHnLåÁï5ŸEô•„ñ>ÞT@IÒŒ"jàÚvýIr¦4˜èäüWo<~þ“·K\h¸) ÞúÏýÅDWgR¡Äw2M˜HÉ.R9'ç†ÐaЬ .®ˆ‚"¢ÚÜ sCI®`ÑDëàVêãƒÜZJv7VV¢4Š©VÈ¿–ÉK)¯Èo秨z¥Éç]ÿÅÈïÓU¹,a¡ɵo­F–jDÏ+ÅEF¾À„hɘ‚‘ySó:Puµ4"G¯tppÜõÑ rÍ8—¢R)˜­Âèþh itë3‡¹î ôUeo e¯E9ѺÆpqAY ‰WR”èNÄýÞó^B†ÞH™@+n O4º<Ï‹C(^™Õ@]²k¤˜-[[[3¦HÆ~Ño¥6$"½µY¨÷)‰"’ʤ¶ºüB&Î%~¥¤‘‰,vÈϤZ>%ûÇóùܧ;~‰0WÜ@¯ VA>¾jÉi•DÛ”<½¥ñ”ÐÌYä±…E~"Ë cþ¥Þn¬Ù¾cÍö“ábÍtÇ1[ÉC}Q± >*–\Bw\dÌø˜VÔ£Ÿ½Á‹Áx<Þó†­+Kü Ü‘¯eɸxÛ G…pÏ´Ã÷SaªaÃ,c_ÎP2ÃLêݱ£„[ùÞØ®À„™ÞI†1“*¢óÀنæGtR <%6=#úCÇÇ”ÌÚñxÔïG”°î÷8LùŒ$Óó™Í¬P(6l‚<æ<59æq¿ÿ„]—%S7}ÏfÃÝ,n”#p긶 {+ +\ï-$ »Í¤ÏrdÕ*êp+Eücg¹5¬œÍó=)öÃÓ‰‘†Äìb”™È" ¢@WvlÎ5âö‘:ß1¶Z#‘˜Ú'irçȦÔWÅ^icƒräö˜ÈåƒéÕç4`Ø5ಞ¶Ê«¬Ôp©Ê•‰­9,+òáÙ IaʤÄ`¸ìp@Zï!UÉŠg¤ä‚—üœf}P²ëfä/[f„—U¶f6û¥¬±"¦à©Fæ9Ã&ñ,ÁQ‘©TX’9EÝ ïèn —G$\WRcp&NpÇçŒ5´«;kIí„¶–,º°õúu'þTݶ › ~“Fä+öÛ ëFFV®eÚxcú»vçî‹ñ[¼G>Ìô.¹†Äïcº±v#ÙÜvãöÒÿ'PK ëDŒ<Ž_ÇÑSW¾½p®"'”R|6O½8Ó ežCê°_¿1,”¾–ŠQäüª —ùHä–f£(q®¿c l $^k+´œc7#MVzc7Àÿb’wÆÜŠL.Åd-ˉ¿Æ?ÄÑ&‚Ü̩խtJw1[ uMJ«t&~§©8/ÌR\ÑŒ,é„į•J©#ª*×FäðJGÖµZ¿\kàÊèŽÒÒbSŒ;xõ@Ò«-Y¿™n—:¿Ã œxéÉuäjxoCîɖГFärž žÁXð§^ïeˆè¯Æd‰S-‹•W‰ƒ·SêõÆC—XUúÍÝÈ…¬wA”½½½…´"“Ü{㼉ýýˆ èÞDb4©I*&G\˜$x#.­ñ&1Å ñ7Ñœì÷+âH¼©7°^.—qôâ-‹_KXZåi¿ÒäYÒ~ôìøçœ³Éèy$~¼‡ñ£ˆ²`QO¶ʼn™÷3߸çµ5Ï·¬yþìø 2ûõ ‹èE@0lvžê‹RfôÅÊä–,ÜqI_gä›­ýèëiïè§£Á`ðºwÜØ¸ñJ|düÅÌ¥Ò‘û‘6š9vZ Œ—àÄz[ÑŽSž?|ÆÎBÑrËDÿ ¬z4öýP[†S“®Ä4CÌŒEËa³`þ(š æá(úó~ÎÏ#±hÖƒ“ƒƒÁI$d÷ùx˜ª…H éˆ+¬…,¶½œÇR¥>gžEÂUó¹´«QôQ.T$îÏ[üæ€[¸RêQtTeø”€0|仪W‹ƒHþM[G £[Ð J!“„œ»%+w¦óø3}Ø—ãZ9§k#ôõ†Ð ¬ÖÝnPVe9P5Š:ØôÃ’0þˆÀ1°R0¸VŸ›N€%þ!–:E¤»Ñ õ… Wo7ò£ÎsD‘«4P$í15>^¬K|Y›ÛS!@xpß·ü¨E½ùwË‚£ï´à¸kÁch{–Re!¿Á}Õ.ëx¬2”‰½/9­9ý|!Œ.Vˆ'We±)¼SÂúhò”Š™5sôD8äAó ßQ"+G‚óÍÂò{èwáÂçíº}ëe{`È ßÌŸ£1?ì9î3Ã>ïŒQ¤ÖÕ|Ë G®Ã~Ù±n‡L,ŠLë¤7è€D 3ÎÔP€Ä­~AZ…F<3VLÈ.ØUSéØ ì¦ÚêS½KÑEQP&‹Ð&Ïî*몕AÏ­Yj¡fFðþ¶§·\öÀÎ]6ê´ã¶hÂN™äŠÐ1] 5/ bsOÞ!g’÷ˆPRž‡ÿgw”TlΧʣ¡µjâÆïŠÕÅU5 Å“ƒßŽÓÀ¢+r¥Ñn×LoبòIŽê[2ß78yïƒÿišÍyªSl²T.„Ã:óÑ®‘I´WâVí\ã j+P9ëøó6ÏkÊT.^!-ÜòxÁ]†W‡à ¼ebñ»¼Ë´šË²D¼ÃéTÍ„é¿î6,'¨¾Ç·TE€ 3RâúH 埦‚êUƒ÷x®2G_aª¬¸²®Leņv!gHU2³™²FÀX‹–5»3â“Fÿ†NØŠ,°¾ñOý~(h‰%dö¿^] Ád\Ù¢ØÜTþaLþOÌ»q³šw ÛêŠùarþ ­¯ëÂ;BÖd ÏS’kÌTÙ*Ô8Ùò³ŽÞ{³D•°/±½–»S«ÒŒÄþ‡ÉUïøàð…˜Ww§Ôf{ÚÔÅÚ^#†Ùçóü W¿Úˆ‚P¡G „ !;tÐrMÂïML+¨Ùç˜5çÖE,L*.pŽQñ^{ûRä­5!Pcø I’Ê> »ª\û;àÔü&w3º+ɪ ¯Ò×¶±¡Û©ÿ®o8—Æ”çÜ!·n6|yh¯ÎÌp&ÖäûKš¢ä µý×/`5i\¢Ç.ßsQ¸.f׉JqAˆ.ϯOSÍdô¶}fin¬|d``JwžžÊ0Ï=q¦^¿Ó~Oþ‹ÃïÎáµ~»b«‡7íñ×ò~jÝ ð?„¿a¼X4+oÊ0¯?ñ¦þïº!ßñÍÅø}èúOñDn b÷7;îMñÝ/‚üUÓ¿PK ëDŒ< P¦# html/ch14.html­VmoÛ6þœýЇ. I~[ê%–‡´MÚA,ÙÖoM%%©‘”ÿû%Ù±{K±!OÏ=÷JŽ›g“q‚<š|Õoœ£åX[xøw™.BöAI‹Òz·«ˆz2‹6pߟ‚H¸6hÃ/7¿y£ÑO?{=VÁmj3œô†þrfŠÓ[46•1Ì3µ4ã Þg©¼YÈŒ]ehDË Ñ8™0&x”ú´d`‰GcÞ­'5cÉs’Æ(Qs«ôÑJ¼Wê¾Þ\ÂÍËÀŸ=ÿÝÐï²m‰Êqm;•>øÎC²é¨†ì¦ÐŽÿ_8ƒ ò~Ç9j”áS™FØ‚*‹W*4.6ñHzÓ=nƒõþqá/Æ”h •ÀáZiÚ¶p.©V2§`´p%Ep whºý'¸C¿ßàž?P,#Gùlf¬æÂ~Í3ÇüüEiS%]n]2¾÷¼÷OJÅ™äÙʦÂPB"ô¼ÉØv;w|Ák)ÕÍÁÁÁ‚kˆù¯æ³2Bèt˜«Gs !R¢t¾ø™ÜYö ­¬*;‚_ Ñ c2ŸÁI- õr¹ôÙÑ©ƒß ,uj±SJ4‚ØaorF‹ðÁÛGoÅ•G_{ä •1÷ïÌaíÍáoß Î 3¨W´`Gƒq#yi, ã-ý5…csëOc´¨Ãþ8óúïú£ÑèØ4>n}âO©7?ªœ§òŠš¤Ã¤’¸Gí,£œ^R‰¬Õ%îÐrÙ¿¿&É"Åeç‰?”ýsíÏ}PšñLE+˜Å”3¥C¶L( Tuä~ÈfÁ3pe²ºô»¸`°hÖ£a·;2àíýÉ8J 2n Õ5_8+¨IlùŒx,ÓÈ&TÏÝî¦Ìs®W!»â‹4®*õ5= ÑÍLÁeÈ•©˜ÞŒSÙ;Ìò®úÜ=ÑÚfß™l 2œ»äÀ…@cî‘H;;{rM=?ø¤6EÀQÅ«=Þ]óÚh&ûÌë4NìF±ÅB+ʈcQÛ¯¼ ªˆÒ‘áÞ)è­ÈÓ9P82q‡ e;1ÕXqµT‹›¿¤ßÚ¯Ts[G˜$Äa_Ü“þšÈöÿ–UƒÂöþ%¨Ž ò/C®O`¦lòœ¦—J«UT WQνõ`ÞÚÜGº¨þ6I 4‘““°R%Ð XÎXíº_5^цØLßK¥Š‹ÒàÓ©ëÛz$f¤3'_¢ –8Ó(”¦>îL¥†&>6¶o8}Ë›fó©H#^ìòb:ÍpÔŸsvºÞÓ˜+Í÷ “g®´{}®TÕUI¾°ß7ß´›uøŠÍº³Ÿ5k´Ïü«4ëx‹feUAƒíÅ·ˆ—ûÙ&žì¸M>Óë‘ö¿£M·&ñíW”³¬i w(¹Ê]‰ÿPK ëDŒ< 3VÈlú html/ch14s02.html­VkoÛ6ýœü ŽC$ÇöZ/‘4¤mÒnȲbI·|3(êZR"‘IÛ1Šþ÷]êáX‰½¦Y È_‡çðÞ{(?5Eú)°8Ü%ÕÏ/À0’S:ðÏ,›ô„q®–%PÂëV@ ÜÏ®?&+0nn.9³Éâ–JÉe~@~!ÍLÏÓ:w)9ª;°½X,\zpláW •èÍhÎJèѽᛆœV<اäÅ=„&•"‡µŠ\. /aîÞ¯Õì?P³¿7ßÝà¼Åb^Ûéh‘fȧ Ñc%·:E|†Ùs¬>µÚ ^}¬·e‰õ:4údªY‘‹ºÐ^þøÐR|ºrïÆe¹‡™^*ÐØy+f Üã8$&ÛÙ’ B}äŸú&r/ƒFuþÖlŸk`¦"‡uøÛHx Ör)šzà\0XÂŒ•eðõä•÷þld(17Á /8°ûë_cY·aÑåþmTC—ûõAwªT9­ Ü>àÜÒ>9Ž™ã_‚uá5p:¸4ËH!…t€¼®x =UU¹"‘¡Mzzö; }m:ëèÞöRÁ|]ÞÐqØj™–ñdi™ HÉLFŒ¬ÇµÙíêéh¿¾þ'7ô?Ù€’hÔAr¡ÿƒãœ ‡y-ešy.X¾4<Òhû'ôu¤xiÖ=ö…ÍY³ŠAóàÁƒ9S$e¿é7RÁ€Ú`ÔG”‰eTèC7—3\ ·TÒÈHæ»äÒJzžÖ¹KÉQ³€óÅbáÒÝc«~¥a¡¸A%@G¬„}tø¢§UìPòø ÆcBÓš‘Ã:Fn$ /eî½Ó°Ù¹ÆfçÑá+Ôé53œÐÝß®ÜÕ%Ká“bÑ(4ÇyÊŒ{ž‚i—ôósçàÙÁx<~ê¶×¶¸çx1_Ê‚qq†÷a@…°EìyŽÞ<Åx@µFU°AÊØÁ\™sX ®ñAï¿ñvß{užñg2^’YŠ>“* ‹ Ý€!†ô:ËQ=%6&úã?“ %óv> ‡ã%¬ÿ<ôc>'Q뫮 fs{ (\6l†8<6ïpøˆ]SË€ž±9Oë"Wò ¿ÂÍuÉD@ë£RE0Vä™,C¾µBû;D«4‡Ä^@FXÖ€°Ê<ü€Wß÷XØŠãi«ôéšÒ5¤òIƒk3ÅÓ ñ´GôP‰i!aöKË~$™J‰½Dɰ×1Mnq×IÿHÚ õ¯¿É=Y!•>Ë&v¶i˜ßÏkA±é×ÎB× ¸‘ôå„çÐIoWlN<[ͽÌXYz¼:qÞžMÐUE!Eûç^b~nñìÚS¿Ù ¬ï¸ Ç&‡­šµS)ËI…éàZ“fû ®ƒÊQ&AW€±G+ˆ7(ï‹ö¬cA`'D·õ2÷éyÎóä<â1ö:ôtr>Ï`|0zÜ=SPHŶô7¨ô[ƒDʺ:ÖõéŽíÁjO¿’¾c%ßX»JÞW[Ý|…?—WUx3ÀïRÛoáOæíÌȲî?îù.ò-’mx; ßà[Û݌҇݀¸åEgC¿Óö¶µµ}®}«þPK ëDŒ<.-{P0html/ch14s05.html­W[oÛ6~NÇ¡‹ƒÎRnM½Dò¶IÛ!íŠ&ÝöÐԱĆ&U’’c ûï;¤$ÇJl4jÀ’GßùÎN 7“㤖ŸðJfà)œ+‡ðµuJ_iå@¹áÕ¢Jx³J©ƒ[ûçO/˜±àÒw—¿G£ç¿ ÷h€KœpÆ{‡Ñóè'5±åÉX'TN¦Rωu̸ªLâF,‘BÝ2¥Ö-$ØÀQR˜¦”[ßíF¸¤Ä!¡–‡_êŠÍp7†9mV¿Öü¥Ö7ä¯Ë r¹Ä²ä½èÅa´KWzn¡2¸¼©¨ÓSMéei¼„œ{S>Á (äM%2èAUåÒˆ]ÑÃÁõCÇØÞã¥zÀî>ÄèP>A.¬³tq% {ÅôQz­zôõh]РF_’‚© ÁrÄüa8|‰jy£u.œ*&Np‹ŽÏ`8'–QºÕp}a5kv1Q¶¶¶jfHÎ~³oµu$%ƒõ h)IS’i^ÍPi$5gNh•F;͵Ü!¿’V2Ž­•%ÇÍ®çóyDwN<üan„ƒA¥ÀrV€>=xÕ’³†§Û”<»£ñŒÐî¿ØFGÃƒÖÆ•G¢k,Æ×zÆ„ú€Å0 J+Ø v*1¨˜ëLk¤œÿñwjóÁ={0úg*Ûû8ô–d¢³™ä3mR:/0 ˜ih~J'á)ñ©™Òwñu~NIÝ®G‡»»£CJXÿ|œd¢&\2k1—Yíµ€ÁmÇ&Èc.2W`ïî>¥ÄV³3‹”~`µÈC‘;yƒïéJ[2•Òƒ *Ç_Æ‹|»{hfÀñï¬S¾ïu·X¦Ý„Æ9X{Ȧ\[ÔãXîIÌÆFÎÁôht…àšÒðZOLj¼@>­Š+µ¶)Œ?`¨<«†O°6®Æáác4z!±ÀÝ•©<¥ úñ ƧX³Ý~û½sŒ›oÑHD3Çd¢]\Øôwר: ¶6‘ÀSdøÍpûßÕϲ›„l½e5…® ™ ƒÀë"p † ÄÐ=måPÃñ ‰K4ÐÙƒí*7l&E ƒUžø\ëN 9DÏϵÉ踬&Rp¬.<“bµY'äÉ]z:~´!¼Gƒò÷“@§ÝDï5ß)á˜ïšöÌWt}_…ˆž:gĤrðž•D¨²òy#óŽÉ¶g¹ú´GöÀ$Â÷à>Œu&xÇ­ù.£-ÖÏ.%÷:™ü½æ7g·XØzÂMåÖ5ÿö±¼× tÌ[ å«Êà€wŸ-6Êän@`–ö †\ Q ~ø¹íÜŽ `:xŒ¤ƒ³¯“v³–P÷mô^ã•GH{Ogƒy…ý|€cã“¿ÈÈ<‰e|6÷¹²„ÜìD¡Ð8¼ôèiçË–Òøgµ ô+ì4ðÃFlIsQ“rAj¼·L¡¾BÅ ‹™–\£s¸ó®t¡2±K܈ú%×Tòò>r¡uy^Y¸ñ£¾»$H”™¢L¤ÀÅs˜ ´ LüÅÆ¾^Aá°§›Æõë×rzÍE†9I/ίGíO=éÎ Ì´aÆëSúÓoªu˜¡?r.ŸéO­Ãï8µÖΞnjõa«‡Wäñçònâ¬'ø]æØ7ì'u»rº ³öQwíÿë‡bÍŽñ[ü/ò8WôÉ6$w‘_3ØÛñè¯nþçÿ)þ PK ëDŒ<™±RRÚ html/ch14s06.html­WkoÛ6ýœþ ŽC%çÑÆk$ i“´²®˜Û=>u-*¡I•¤ìÃþû.õH,Çl‹uî¹ÞCEÂÍe `Yò„ÔŸhŽá\9„ÏU±ˆék­(7üx[%¼ÅÔÁ ýó'„ f,¸øÝä—áxüü‡á>­á"W8 ÉþQð"øN¥¶<ùÖ*'3©—DS™Ä¹(lVG8¸&dL­»•`€£D˜Å”[ÞÏ8¤Ä!¯–Ž'ŠÍq6†9mVˆŸiþJëkòÇä’Lî°,ùm?8> Ft•Ðsèl*ƒ›À{Œ6=Õ˜NJã½ùRrá=úf`@q oª"ƒTUÞ9!0"=?Œí=^X¬ØÑóÏ7EÙ:f_S¬>Øñ°ãìgͯ=#¶J=""}3¾‚¼PäÖ¹rª˜¼u·å †Ã$²Ü¥[ÍÍ[°f‹cgggÁ ÉÙOö­¶ŽÄd0 ¾èìKJâ˜dšWsÌV 5g®Ð*(všk¹G~$íÊ0´V”¼l&p¼\.ºwâáï–¦p0¨XÎJЧ‡¯[rÖðx—’g÷4žš× YçQÀõ<ÌYpewov×¼Ù}zxŽ˜a3ÂÝ«DíÌccQ²>ƯÁ`8¦9sÁ4×N è§ÓáÁñÁx<~1àÌ¢€å`ÍÌþ¹Ê¶ç>¬ûI”êì–¤9æL›˜.¦ë Ýi*ž_1ýv„Ÿ‹ Jíx|4(aýûI” Â%³+˜-¼08íXŠ<–EæVîhô”b©ÎçÌÜÆô=[y]Aä~½Á¯@ºÒ–LÅô°6•ãÇ‚ñKݱz[ÃùoÖq8ðZH 3LrÄ㬽$UnÜÈÉÜâQÈ’Æ0g5ÏôÅ è Ï }£áµ™Ž)r|Z=VjcGHÞcÆ<«†OímXGuÃ_cRz™±ÀÝ>æ–©<¦ úi«Û‹¯´fºý½û˜>ß–‘ˆf^’T;Q‡°éé®ñuè}­â%|lÒÄAÇzõ·ì3˜ ˲ÂW“ÄÛ´Äi7`xaa4IA`¹iÜCý©+’kD°BW2Ã%=&%n|'[]åÿì5 Ωð• íÞtä÷\<MÜà¯+ƒ*ä&Žaç›8¯Q{Qèo'ÅQèÌ“¸ªæ¥ÿï,z¥p¸J¹E›Ë ¿ ­[=Θ:÷Ì¢°ÄÀ™;Ø£sÃæ²¨£­-ò¬»+äël©MF“²JeÁ±¥àý„l]¶ÐEÖ-ò¦Ï}Ù{ñFø3TùBÚé£9@6Ø#=©™­`ÝÖ¡ …‡h´µ†ÏCÕ?Ø„½¸O¸FùØ ÊÊm‡L´æ{ _­¡W‡× ëù RÀ«ÏX7®9¤Üx=ÜË.$-ó(À`œû"}—m']6\óÝ6QðžZ°Ž8€éÅøüsŤÝnÁÔ:òª„û»Ö¬ nÞ,.µ./|Á¯(¼fwj/qÍ × \¸„ÔÇ ¯lèkª6ݦ»ÿEŸ§r6åE†i¡—Ó£q ャ'Ý=smØ|àJ_ÆfZ×½¼î¦”²»gúºsôug£ztºÓ‡­l“Oå½fl&øU”è_ü'‹vätY«å—NÈÿ×}±á!y‹/‹@ŸcCâKÇï :Üê˜?pùÓ—§ûPK ëDŒ<³­¶×uhtml/ch14s07.html­X[SÛ8~n…V;]”Ø(Í–8;´…–½L¡»ûÆ(ö‰m%W’2;ýï{$Ù! d/™Iƺ}ç;Wg™‚°dø”¸Ï ÃHfLÙ…ïU>‰è) Ó½œ•@IìG5pkB{þˆÄSLtvñ¹Ûï¿øµÛ£n`rÃaØ;^¿ˆ‘.>Êø&)aDW£1—ÓAè÷ x.nˆQmft`(ÉŒ#kÞÍ8¤Ä ›š„=oÁ œMA€bFªºoeüZÊòçÅ9¹˜ciò{/xyìÒE™, ‘‹n«'Ê´T#zQ*«Ã0"§¨ù cP b ïª<TUΕÈÐ-{«\‚6ÑD·Ž— &‹z÷ðÆá ÔšdL$–¶0ÚlóÅà‹î[™*–8@% Òs6ú©Û} i.È;)SäX0>3y¬ÑÐ t»ÃŽU^šE÷\³ ó³Ož<™0ERöA¿—Úˆt:ÔF›~EI‘DÆUÔ.cfr)‚RI#cÉ·Éo¤Þ†Zó€’W~ÇÓé4 ÛG~Ž0U¹N%@Ǭ„}¶ÿ¦&§UmQòüŽÆsBS§Q—5±,”×zËk³µ¤ÍÖ³ýÄ ýtÛ1Ô3›Ú¢d)\*߀Bs\¥ÌW)˜zªC¿w÷^îõûýÃî~­ã‘à 3ï­,X.>aðw¨Öl;æçkT+vûðg&9L;Kú ÷OD²Þ÷¡+$ƒ‘Lfd”¢Ï¤Šè4C7`x¡úq„§ÄcDÞÅÏé)%“zÜ?ØÝíPÂÚëÃA’OHֽ̙lb¥€ÂiÃFÈcš'&ÃÀÝÝ}F±¬S³ˆ~b“Å0vË#¥*Cˆý&ä=+¸â0F×aq ZßR)Wfðð æö dC/Ç®=\]`·¢`x^«é¨<ÍO-¢ÅJܯÃOè$KÉ“qª†ÎÈxGØgôCËbÓCw2‘FDÛS® ØàòÓõO¶×ZGÙbŒ,80õŠŒ¤Éœý|%7^ÑnáQ{ÂÖHdù°³²½†ðâoÙÜs„<¹”ÄⓘqÞ:¼ƒ…2Í5Úç¬h’%[U|DÉ114Ûñ™‚: %eeÈ”iLlœJp#N)4Ÿ,ÈäŽS)¡X½‡ÈÊ`å2–ŠÌd¥ÇÇ$Ç8ÃkÅ#º{d9e抖þžÁÛ/¶q1QK)’Em ˜d¾Ô/…ÕνÓËa9'µŸZjIžMKÛžâ%Ø\ïó÷“s)ËÓJÃò{‰mý›—Ž{Ƹ'`Â)ŒðúE¡ ÂkÚk6ÿt]ûþOÚü+>¾Šó3œžŸ^ôGÐß3zÔ¬)(¤bkÚí{ª´»á±”®9tÚ†ñüL»‘=øÙ•íhÓȶa«û¯ÈÃoå]ºšàomQžLê‘‘¥ë½7xÑþ·&ÈVüÝ0|Y»™ÚT=‰^äW´÷ul_Ýì{œý[èoPK ëDŒ<׌ï)% html/ch15.html­VmSã6þLÅVJ˜ÛIG v:ÜqÜ]‡Ò›Âµý–Qì-p$W’òﻲs ¥S2ãŒ%¯Ÿ}öí‘ÃÌÎòQ˜!OFßAõ gh9dÖþ]ŠyÄÞ+iQZïvY ƒ¸^EÌ⃠Üûgg\´Ñç›ß¼áðø'¯Ç*¸Ð ›ã¨wìÿ('¦8ûZ¤š'B¦0Õj=¿µI˜ yóˆ»ÌÑdˆ–A¦q±Ø˜àq×§%Kdn=ªiK>£Ý%jn•Þ`{¡âwJÝÃ_7Wp³Æ2ðGÏ?ø]¶É S3\ù2Áß…I>ÕˆÝÚ…ð'Nà2W ø§¨QÆK‘` ª,^ ¨Ð8_ç#ë L÷¤ Öø'MšUñ½æ`ÊÉ”[H’r¶tlºý'HÇ~¿Aªh]àTHa…’pÅeZòÔQûÞóÞa*$|T*ÍÎ%Ï—VĆrž çBkQØÍJÝñ9¯w©?öööæ\CÊ1Ÿ”±A§Ã\ß™SQ‰ŠËÕÎÏUÌw¿ÐʪXå‡ð34–A`Lî38­7h½X,|vxæà× -,vJ‰&ævØþÑû†œÑqtÀàÍ#7ÀÒ*"¯"òc5 Rîß™ƒ:šƒ'Ñì} Ì ^Ñ‚V Âf祹((µ·šÇ÷¨)ã”[œ¢m¶:ìë¹×?é‡Ã·ÞQãÆ+þ˜fðB͸×4&•Äfç9UöŠz‚`­.q‹•u7_hg.pÑyUÿƒLv×>¨$%œ¨d “”j¦tÄ•ÚŒÂØ$'x®/#öC—~—— æÍz8èv‡¼ý|&bqΡFæsç5m[>! ‘ØŒ¸ÛÝgÔû³×ˈ]ó¹H«‚G{MWFtsSp±£ÊUJw15Œ3y^´2 ±ÂpW²rÜw~œ§TÙc4æ‰I±u‚G_h¶Ã€jœTäз +rkËl—{-ÒÌ® [,äÖé]SY‹Ú]P¥•ÎwO™o¥ŸD¿pd 'QˆÊvu*1)j­X½JHýÖó*Aµh—UšÑKé#&Ï– ë¯8mþo0ÛÞÿcÕ©C¡æÈõ)L”Ív1ö„´Z%eìúlM¿×ðyãá.êE%·™0ФL¦–ªº« q ø Œm=àE‘‹Z)éúI߯&·h{[Ë÷•RÅeið©l;e\ijN6S²ñ%Ú`±Ò4HÁ rb‚’´‘íR·ÿ¢‚ã|:ŽEBêÇ®.ǃá‡ý)gg«ggJójôM(m±˜*U OÕÎ/Œõ;íA¼â oßo=ÙåþUý_¢ƒy³²ª e|æKã呵©f[>“FŸè;ì‘èsá· Ö$^ð³Eêšq—;ÅÜçñ?PK ëDŒ<Ø‹·L Øhtml/ch15s02.htmlÍYksÛ¸ýìþ ”Û4Îì’ò3ë&’:Î;o²“8M¿y òŠdL,JÖììï¹(J¶’8éÄ3¶E¸¸sϽ€†…UãaA2ÿE¸ŸáŒ¬…µMLÿmËù(z¬jKµÏ— E"õO£ÈÒ•ðú‡"-¤6dG/ß¾ŽONŽÿïGNÜЖ¶¢ñþqrü½ž˜æá³J-Äš–uiKU‹3Yç­Ìi8ðS‡UY_ MÕ(2vY‘)ˆl$ MÓQ”3èGȹô£ÇÎÎÎ\j‘Ë™ÊX1»»ƒÎ<ˆÄh$2•¶3,©Tê6M­¬JUuOüS„™ƒ1U‰~Ï‹Å"‰î=dñ+ ]ZÚmk2©lh7ºsø8(gt:º‰Ÿ{5~Qî,ŠegQ’ªÙ —És×[s÷š5wï>…ÌÂCtÏi0 #·õEƒ48×2½$ w\äÒ&9Ù0´½;~=899¹×–$HÀ'j&ËúÀ¿Õª¦L;­Ó3 b­niË,Ë~Çȼ¤Åî5{ý§uöñØŸ '*[ŠIŽ˜)=ŠÂÁüQ4© >ŒÊQôÓ~ž=‹Ä<<ŸííEBn¾³r.ÒJË9ïBÃVN Ç¢Ìløîí݉„ig3©—£è•œ—¹CèçküP·2¬GÑ¡Û*ǧ€á)·c¬¦:Yü›u ðþA^ESDx(…LS2æ’ Ñ&ÿŽÔäØo ©™Ó0H¼¿&qMÃ¥»×l»BºÌ höÙЫÞÊ ãW«æ•röœÃQ6ø3b²C©ÝGhá¦QDõfÔÅ0ÐüpøSl¼Gô˜˜¡HER?e çDÏê­3˜âœI6ÎV‘‰«Ì…¾· aqÐY°þ·q9y^ ¢ù8½A˜P2 ,^LYd¿·èö…œ“¨•åšXç”a‘]Õ}™ØBÞã…ZМô/ Ô5u²©"&.7MZ«ËIkÉo¼ø : ZšnÄ Ê¼ÃTi'h¥”UPÃùQÌ:‹J,ãè uŘrNNÞ)^ÎšŠ°cU‚¡<ÂÃùØ¡D6r³nœ6 ÕYyå}~úß3PY¯üûM6 Œê=óŸ:{8Ž¢„YsYV.É%j!ÃV‰£¥æþ¾‡›øû¬ÅV©ÊïšL"UÅ9fi‡GÚÎ)Lj-ÈÛ0,qÓh¸I–™@¹µ“5 cx ‡®%vÙ~råPix:Ï«iï^ùdr±uvâeUA–A㨠›Ë< ÍK)µ“ã:AY•æQN1FYàÎû¢d7DÏä%bÐA4-#™f ÿ_³à^@Â\Î)P´àÒÿD‡F3«Ø½¿JH¿ÿËéÚæÀG[wN[(hÖe/ì°^Ù ï¥/‰ "Å Y þߟ¾yõòÕóá€Çœ#.ECH@må¢À’Z–!¼ç›Qsšjv)Ö ãºÈxA·öƒd6ðcÌ><à™ æžõÜå Õè½BLûìl×Ó34DF^¡w2ªÕ)Á‘9%5ÙrVâ3 ñ…UM4~˳Äýä89îRN“·± óu{œ)”‚÷t[ûâãá‰Ê }¡ y‡:+f&—Úþ½Wþ÷Ïžh©KøcÖ3ÚÃ_ܳ•´EeoW¿DìPvîÐ/è^ak7¹‚á¨b¥±ÐQêL¨Ö6­]s^!)ØaVùD#Ç]€“¿)^ÒBéˤ n “µ€Ù—nP¿dØwï¯fUØPÓ r;üBr;ú6r‹Rמ?Çrâ}˜ º;ÚFw×,9úBKŽ¿“%1ÀïÎq#9FÐ?ææÜ[ؽ›/AP¢R¨JÍeÄBì<þ­ïì<"®V)ëj÷„{ŒØÔ±=d*ç 8PÓÓ31‘ƒ®mñzUœ±< "Ƙؿqµ¢+)£€Ö…ÊzŒÈe©­–Üi¬sng’t”¾êV>@=è6>EvAçä™"|¥fa¶«»õ}:楱"î,„á)w#e=W—œ“ng笰§Ë¸ :eÍÄsÆz¸¬ lºôö(yéD„ê-õV¨­‡?\f˜Î©e¿~å;t1(\ Ñǚͪ¯QAÜÚò»¦´Ö5¦:– \?T—|×ñãF*ô±/u(¦UEi¸¿@ܺöâÆë¯âkW)º¶Å¸â¸–`™+á8Ï\¢Š~Ã.¯ëj‰×à æ› s#ü? ›çRÇМ÷*_dðÓ×:‘ñ¸’Ñ~6¤­7Ÿ %n_oÝ"³jJȨŠs`^Jf"~dŽLªºúÃæ»ÇoõawŽt½MSItJ®FŸåê…#Gn»Î¡}§êïL¼"ÜVóíc©ZÃå^n&?QëÿG2 2Tɧ}ýüÌl£¤zn¹$ç%l¶…Vm^ üäùßûä7Y/;r^8TH>»"8þHލð‚®¬Ûů…s—ÒІY¾|ûž·ëL¡qFU9+]ߥ’˺øÛ¢?ýñç½PJ,†/y¤^ºƒ„ƒƒšZ¦vÙº[˜Î}ƒ#?§õÒ­-ë´j9ÕÄõÀæÞn©2Ÿt¾î,\‡Ñï;Y:_´¡Ydü÷-õz4VËgJ5ÏX»kÊ|gÛn*Ì™bŽ;Ó Çæ3‹F?=ø`Ü•S|ØüŠ`ýÞõKîg/ªéEŠ#øHDgÏ.ŽN&tr0•ÑÃîÛ­åGîIo˜²y9UÊÝè¹ë´[^e®Öl^=}¯«Ç­w‡ÝÕã¦Ìv‹ÌwMc¸]»ïrùãÁtþÉq?qaúµ¦[¾¿P3ºõ›úy%>ûåË–kØ?|ÝÎwïüÞÿPK ëDŒ<äê8´¢ 3html/ch15s03.htmlÕ[ÛrÛ8}Î~–[“85KÊ–o"i*7O2ådSq’É› "!‘1DpP²þ~»q¡H™²(Ûqf]G¤€F_N7.¤zÆGƒ”Ñdôb~3¦)Iµ.BöW™Í‡ÁK‘k–ëðÓ²`‰íÓ0ÐìR÷°ÿ3§T*¦‡oÏþ?ùOxqiÎFO¢Ãèa>Vų?Ù˜œp± t’MKIu&òAÏ6ð,¿ ’ña ô’3•2¦’J6±R½ÕÛ¢A%§ >¬ò9ÁÛ)ˈ²¦ó+¿â‚|=;%g•,E¾D¿EûA]ƒT̘;Ëv¡±0&ª: Î ™åSRô‘M˜dyÌÈïe–°†¨²¨ŒHÁ 9ðl]ó¹˜Jš Ì‰3r°¦N!Ù¼.Eí÷¯ê;QF¡Wl’店œÒ|ZÒiS©¼ÖxtEà‘øž-H=t1+4ºûŸaø‚M³œü.Ä”3ò<§|©³Xˆ£ŠeVèz ¾Ñ9µo$<˜SI¦ôõF(M†do/@ð©§I"âr¡‹¸ˆ T¢B -bÁ“߈kÙë)Å£€<µ/ày±XDÁãg(¾’°™f{eÎTL ¶ütøÒ)§d<|ŸWjüL‚©±(¤Þ¢(³Þ”FßÔ#kÍ£5kýtødöì<÷¦«/ Ô'Iã &ÁçSª£ó)ÓîÕ^ðùyØÿµ||üKxèl¬u‰Îa"¾3šåïaì¹ÈÙ†fÏ9„óbµ,YK+>À›yÆ{kö@ô_çÉæØ÷ ¯ Æ"Y’ñb&ä0X¤À˜? ÆÄA9 þµ?''™»çã£ýýã£€Ðæ÷£A’ÍIÌ©R€b:ÇQ˜„ךŽAE–èл¿ÿS@T9›Q¹ïé<›‘U{ ÿRP—«‚æÃàÐ 5…O1›ta® 5’ð_â‡ïãèNgˆï€ÇL© ú­syôfù GGvLœÐ_jBk*nâ«\»N2›¦ ”§¡ZÞÊ £÷1TÍ*eLîCþÀÏ”Fd‹õĸg°¼6C1…¥$ßäôßCø£AΨ|JÆB§Æ–àKc0 §È·á‚'ž06áf j‡ð¥}¯zýwafãÛ|EzD§Àïd¿ôBQ E`gÜo"$‰ôzjø7)HJ…yBeB”McFsòõÝ)×88ŒkŒÏœLÞ+ø95- M ñ›QqÊf4BÝ?A_ûXédÑoõ&*›<›dL™ašm€c d¼$Œ¨ ð+CÈÁ4·ú˜0(’fIÂrcËÁØÚ$ÜK]BSZjªÂhL³NªeV%‘ó%YÐ%Ñ¢jÇVéG†‹Š+˜ëÃ&æºá+ÄÀ)‹²J¥Ìu|nÆ—ñDK€Oh eËÅùÈV8iz ÊT$–@pêh'æÂD à¤Ê¢R³$ª†m €§RQòÆô‚•Ê´}aNTÍ—r•ñIL¥ao³Ôy}Éb@l± QÓÒëëŒcÇP[(-—-k: ­LÃZ5ËK%ŽåÂÊ%gÖàFxÌ”M d̸2ý žZ™ì~Pe£²«6Ío¬æhÞ•M 8`¤¨+µ=`@Á1cÀ”4ÙeΤÂÖ8;û5X!­0¨ ÜĵÁ!KQJB `[Å!8:ÁÁiB ÿW»ÇTßÄ9Î8ãœ7Vös+ÚiSùaIç$g–ìVg¾Ölå¥{ß3¸/%§jÀÿüñ”8; ,¡%צ—÷zëõíÒÚ–‰(’kÜ—· “ÙÜÏôŠ…ÕnÖ› ªlƒïÙ%îq…Ëj»TÈ ‚gr˜ÙpKª ’Ž3e„E§ÐÏ=Ás6[­ã@Ie¬KÉ0¶À,@ð×gÉ+ïX fµÓ‰;سêÀáÑ­^…GJ]ªú[W]› ¤{B/Lê.9µ‹ý»®l:”ý×,£ïÛ² ¯8øZU:ìÖ€p'S(ÚgÐ.Nì­yqKÙQ3tmìž; ë@ ¤Ÿ{Êý¯ÈG|Uv8pXQ)&;Ͻ&ãà©-TòŒ1¼&YŽ„hˆÎ’¤Ê¬úÊš/]µšýÀŸ“æNŒK®9¨;šD¹Ä›Rc½Q“±nXb /r4b¥™ Û{ƒ«„€iNA­=Ïý¡¬9HL•9vÀÃøñp*ñVƒ?jwÛ¬:ãLEª¶”™ýÕ€h*§Lƒs-Š`ôÜ|E>a;Œ’µ£ÒÊ„ª–ÌÞðp²µýGW\cŸÉLÔÖâ×M«:cÆô£k]å#,4pAuIñ”\“£ûª2ÉŽ—/Ý!ø¦HþýI[7ªÆeÆ…!²P³­Œ†^Ø>g®Ksý:ÿËJ,Š¢’„··YquŒßïÝ>Ž\Lê"m?× l˜ubwÂX2ºÚÛ¨ öq/mæÖÝ=ìšmVá»—k.ºÑ»yüe£÷^ÛÌk|¦î¨l»B”÷.Ö‹ˆ{@Äfe¿ ª ]Amö2iÒ¦ÁÃK|ÛŦӸÀV&ÿ¡4GWü8ÄÜ]hkfù;.?0¶µ;‹nµmiL aˆv*·-ìïê.ö©ʼn)=›w°ñš³/49´™@›(gó²d±©‹{ßTÏòDßš÷ëëW•w¹Ò|Î'çq–! NOÎŽÇì¸?¡Á3ÿd3!醫ÅWLiÞüaîÀš ¨oÿV}š÷uîð¾në…[_·)¶¼ú‡£ÏÅêšm»‚wryw‹ýdîžÌº£ÃÜÔiËYŒÞœ©]¼ÐÔÓ*±í/Z®0»™„wÕñâ:þYÌÿPK ëDŒ<‚¾Ú?html/ch15s04.htmlÍXmsÛ6þœû8ÜäìLMI–ÝÔM$Ý8‰•&£¸™:Nï›"—/1IðP²þý=H‰’åÆioæâÉì>û¾ËQjŠ|2JID“¿1÷7*È–SôŸ:[ŒùkY*MðiUg¡_¹¡;Ó·÷_²0J“¿»ú58;ûñçà˜;r#“™œ&Ç?öN{ÿ,çºzyIKö;ÍÙ4—KÂ!UFúþÜ(ÏÊ[¦(smV9é”Èp–*ŠÇ<Ôº¿ÙíaÉ™¢ˆ]O<öRØM¨$%ŒTÈodøJÊ[öï«»ZÓÒìóqï§ÓÞ€w¤² –wVFt׳²‚§…:æW•ÊÊd#Ëo“"ÈÃÞÖYD[¤êj-D ]lÑÁÚkæºJ”ˆ,ÍXÉ‚ïÀ©-ºTôàä¡“†TWÁq–ÔPC&Ë-r%tÖ’•Ø&u^UTFÙ§vÞPußPœ•™%Çf¢Lj‘…ÊŒdCüû ª "XSü=^Q’•ì­”INì¼ùÊd¡†9" ‚ÉH‡*«L׈_ÄBø]øÏ“'OB±D¼×¿Hmؘrë—úgã1‹dX0k/—¡°W)id(ógì_¬9Ùïk÷8{á7°^.—=þì¥%¿¦°T™¡Ãº$ŠŠùÓ“× 8­Âñg?l`üÀxâ$ D+Q/”E?½/úÀKs°#ÍÁÓ“ Ðìûü™C0jv«‹ êþ¤DxK ê¸I„éÝ$dš­C~} ž=N;Wz7ˆÑ7²Yy‰9ä¥,écç9¬=ƒ»€¬Q5í9eìØYd´<ֿܑ(£‡mßw)g4—ÑŠÍØLª1_¦0¼âù<yάˎù?ø›N9[4ë³ÓÁàì”3±ý|2в s¡5|\,,RØ6bË,2)Be0xÊ™®‹B¨Õ˜_ŠE–8b›ó Ÿps]‰rÌO«¿B8Œ=òˆ¤–BNGÈ~¢–ûÐ2oˆåü#ÁD’Ö·8ÕÞ0Ÿ|DõÅijáÈ!lˆ>ïí |(µxpû1©,Iªá³­¼—2&—0–…å9qûNÙ¨*ö7ì±eM¡9†Y‘<ÆœÊm‹¹ücÌo7_épë9,gS7äÌI¨l.Mêtèó~í„¥ ±i8XÒ<†U‚°± ì×m—[ìÝï9†ß(ÇɶÅÌQ`=ý¼6aû€XÊÙ+ÿOöA®\òx²ñùe]QÄšöáók6–«¶©¼e-ò|ÅB|³‘ ÚºýÍ'S©ŠóІ̨ow& •7•‘>b¥´æ_½pl÷\Er©+{¿¹y´¾•ø¼Œ>Ã%#a¨ehÈñÖY ÌfÝÛpK{l]j&Öê*œº{&›­²ZÛo“Ò> îRË^£²ymÈrßwÚâ ´Ù nÀ}„§joò|D{Íf¯M¸Nõàùv)>í=oµ±³Õð²ðÉÖÞUL˜õM›Í,ÊQ–{£~õödʃE “2÷¾üëÛË[hv1{¼ûÖÖSÝEº soApT+*Ý¡IÒ’kä5“¢÷°Ú¶ †¶o¹ï/"Š4ªAUIe¡ë2‹3p¹˜ù³X·d™öü—)•,3v2å6áyTË !c;ά¬ÉZfN;¢CœeE•“m@|ñ1φà·ùÎN;Øö‚k¥l¶Ã‹Ù3>ÙóÄyšù õã;ôž·Ò@‡²"ï?S»Á®ìÆWÈŸtWü¢ãO9(B‘SYÅj8¬yãò$¡á³¹"+aHûÐöÍíoŸO)ì¶¶µq0}âÔY#*kÿ§h—±Íù#†ŒâhkBÞu]Ò£„÷ûþäÜ—"Ïñ]ÿðˆÅ]ÑÃVE+QlH R+ÏB¡·é€.Ä-¤»îTØÐUpêLÛÊEC¹aݬ¶”êö{q/:öŽÑ”¶©@­xlj2c†C*@„ ¡ XAŠZBÎ(ñ£”WÄ{Dê)hØñù¦p=îLoÃ&^ß_MÙ» '>ÙÙøÎCž‡Þ"l­‹;ÀDóñ¸ÙÿŠ5ÖÖ„vÂÕ…†È—b¥½g§a7â»ÐÌ¡¦í”,v6iI³ëßfÈΘQ}½@rÖ6ŽšÌÞ!¯aæœLÐ’(D„ˆà2-ë`›5h{ªÑ-¼ÂUjÇ€!@ÑĶ…âîŽý÷z–žIYMQMvgh;¦¶nŽ31ÎôJ2}¢J1ú_t?wŒA•?4j~ËHz“Ç7aaå³éÍéٜΆ±à/ÛgŠ ©Ä£á=Q¶'·XJ7ĸ)â‘ÓÛúÎöÀuú?¸öNLíÀµM¶¾ÿÒgr]mf¥ýÿòôõÙÙ¢YY¹ñ_ýYáÓ=¯Î&¿È‚'ÿ6Êæ=Ô_~+µgFm¢Ì¾‡°/%ìÛÐÿPK ìDŒ<¢Ô1«ØŸhtml/css/highlight.css…ÝJA …ïç)xW¨]”¥°{£Ö.Þõ fgÓÁÌŒìd,E|w§«õ ¹Hr¾“d1ƒ`â@°n´\R°Úl0Q"ß—:@,amØ='ÂÃýmuf)Ç ÉXòúàr£³ØÒYÅ$.à‘tV³…R—–çO´ßÅiÀ«Â‘kp±ìªª®ÛÒÙÆ ó–7è#-ÔÛ4Ñ{ r^wu‰˜dÏÔÀ‰fgÚЗ»@ZÜýg!zü-KœÆZdr}úñÕÑ‹æ|.¸º­ªîSŠIW¼PK ìDŒjŸQH‰>Ò¡Ú#9à֨uf T~ÔZîöIv|ÓULó˜^{¡Rr9ê€å*¿¾]åÿnGiâe8$¡¤€i¶‹¼35ÐR¥eçªá¬kNÔ^Å—4ì›ì—t²ºµ² ‘Ùl?†¾ÔlKâŸ7Ç šš“–J-*89·'Hš3޲ô&à'‹+‰°DŸ¨ŽÚ˜ÅQ;¨ø€SùbØÒÑÌÜ}ýÕÀÓ›Îs­ösÃyzôýPK ìDŒ<ž,W.ÇÏhtml/images/annot-close.pngë ðsçå’âb``àõôp Òœ ÌÁ$ó?Otq <"‹¸…A˜‘aÖ   {‰§¯+ûN.9ƒ;! ³B²%®%Îù¹¹©y% ÎE©‰%©) å™% !© îž¾ïSTó€ ]=]C*n•öäePà`žhQb¾ ù÷+RÉñ-ÍÊ=«ºüÓ\*O†<½«gÆ|AwÒ¥%ǤwÛÇ.}ÛyøãÎçŸ>7WÛp‹):ë~(û 4ÁÓÕÏeSBPK ìDŒ<ãI^JEhtml/images/annot-open.pngEºü‰PNG  IHDR U.T±‹PLTEfff™™™$Ž€€€ª§™øøøÌÌÌf™1333ÝÝÌ3€Ìÿÿf“³nþþþ|ÍÍÍ÷ïï···TTTÌcˆWÑÄ®ÿÿ™‚ˆt÷õïûüôÆÇÆ<<4`@2xºú¹¬sJhPK ìDŒ>>???@@@AAABBBCCCDDDEEEFFFGGGHHHIIIJJJKKKLLLMMMNNNOOOPPPQQQRRRSSSTTTUUUVVVWWWXXXYYYZZZ[[[\\\]]]^^^___```aaabbbcccdddeeefffggghhhiiijjjkkklllmmmnnnooopppqqqrrrssstttuuuvvvwwwxxxyyyzzz{{{|||}}}~~~€€€‚‚‚ƒƒƒ„„„………†††‡‡‡ˆˆˆ‰‰‰ŠŠŠ‹‹‹ŒŒŒŽŽŽ‘‘‘’’’“““”””•••–––———˜˜˜™™™ššš›››œœœžžžŸŸŸ   ¡¡¡¢¢¢£££¤¤¤¥¥¥¦¦¦§§§¨¨¨©©©ªªª«««¬¬¬­­­®®®¯¯¯°°°±±±²²²³³³´´´µµµ¶¶¶···¸¸¸¹¹¹ººº»»»¼¼¼½½½¾¾¾¿¿¿ÀÀÀÁÁÁÂÂÂÃÃÃÄÄÄÅÅÅÆÆÆÇÇÇÈÈÈÉÉÉÊÊÊËËËÌÌÌÍÍÍÎÎÎÏÏÏÐÐÐÑÑÑÒÒÒÓÓÓÔÔÔÕÕÕÖÖÖ×××ØØØÙÙÙÚÚÚÛÛÛÜÜÜÝÝÝÞÞÞßßßàààáááâââãããäääåååæææçççèèèéééêêêëëëìììíííîîîïïïðððñññòòòóóóôôôõõõööö÷÷÷øøøùùùúúúûûûüüüýýýþþþÿÿÿ!ùÿ, Vÿ ¤”„œ*Œ‚ c,l€‘3Š5TrîÞEŠŒR,õ1"Š8•tx’¢J”D6|‰Q£Ë•ŒþÉdT £Bˆ(HTø/$9() ;PK ìDŒ<ˆÇÈá=Ihtml/images/callouts/1.pngë ðsçå’âb``àõôp Ò< Ì$Šå˜­S’·» ê^e# /ÙÓÅ1¤âVhßFÞ,û—|‘ÒÓÜë”¶¸ä¥™rJSX<iˆ|P_ò¿}÷Ù‹·"žñ…³­`^ÃÇÍk™¼Ñ±ÁWW1Ånƒ¸Æy­öØç°éŸH®½sm¬©¤TiKç±+ñ:bo†lZç\âQœŸVRžX”Êà ¡¬é™›˜žê›˜ž™œ­`¢g¤g¡`i©o`¡o`¨\”Y\Ré[Y\’™¬—Z¬—RZŸW¢—œŸ;q—â qZ`ã2ÓóKJæ™Z$˜¥˜¤$¥™›&'¥§šš˜š˜¥Yfd)¾êâé ZË`hTah¤m mÐ’»»Fž®~.뜚PK ìDŒ<×b8v¿html/images/callouts/1.svgmQkÛ0ý;ùWƒX–l'µ;e]³RØÂB ŒQ[±E4)ÈŽìÓïì4ƒÂw~wïÞé”Ü)h…­¥Ñ)á”:7…ÔeJÍÖ Éíbœ\9<-lÖÇÂl<*u¨›îQFù¾¯`yÜÛÀ“:”Σ:€ë³F 3Êܤ*`ʃ |à8½Äý·«ç§%Ôm ?Æ£äjùuõ¸z]¿ô©šf»n×u´ó©±¥ë1Æ\̑ſåG%õî-¢È²Hù‰¢}ãÿ®/‹”|ÎN¾p¸]§äÝy†ù+-Îðb¢“ES¥Ä÷ TB–UsŽ[)º;sL ¾‡ŒGP7'%RbPy«L·²–%æBgèœM–ïJkºˆµèà/õ¬×û,GöÞŠZØVàU’\Ú\‰K_|³ñ5 Y9ÀgtŠÑéÙ> .’Ë~}å…üö hó~Í£dŸ5Õ¥v+•Н? †2¸¹/œÑÀ '½ã¼bt:Ë}zNØ$@:œF3 ÃÏñi•O=¯å à ‘È[sŸòiP9XïãßÐèw?è(qqÔ×>ÇbüPK ìDŒ<îÈap¦¡html/images/callouts/10.gif¡^üGIF89a çÿ  !!!"""###$$$%%%&&&'''((()))***+++,,,---...///000111222333444555666777888999:::;;;<<<===>>>???@@@AAABBBCCCDDDEEEFFFGGGHHHIIIJJJKKKLLLMMMNNNOOOPPPQQQRRRSSSTTTUUUVVVWWWXXXYYYZZZ[[[\\\]]]^^^___```aaabbbcccdddeeefffggghhhiiijjjkkklllmmmnnnooopppqqqrrrssstttuuuvvvwwwxxxyyyzzz{{{|||}}}~~~€€€‚‚‚ƒƒƒ„„„………†††‡‡‡ˆˆˆ‰‰‰ŠŠŠ‹‹‹ŒŒŒŽŽŽ‘‘‘’’’“““”””•••–––———˜˜˜™™™ššš›››œœœžžžŸŸŸ   ¡¡¡¢¢¢£££¤¤¤¥¥¥¦¦¦§§§¨¨¨©©©ªªª«««¬¬¬­­­®®®¯¯¯°°°±±±²²²³³³´´´µµµ¶¶¶···¸¸¸¹¹¹ººº»»»¼¼¼½½½¾¾¾¿¿¿ÀÀÀÁÁÁÂÂÂÃÃÃÄÄÄÅÅÅÆÆÆÇÇÇÈÈÈÉÉÉÊÊÊËËËÌÌÌÍÍÍÎÎÎÏÏÏÐÐÐÑÑÑÒÒÒÓÓÓÔÔÔÕÕÕÖÖÖ×××ØØØÙÙÙÚÚÚÛÛÛÜÜÜÝÝÝÞÞÞßßßàààáááâââãããäääåååæææçççèèèéééêêêëëëìììíííîîîïïïðððñññòòòóóóôôôõõõööö÷÷÷øøøùùùúúúûûûüüüýýýþþþÿÿÿ!ùþ, ~ý 䔄Œ*Ì) ÄXˆ V­Þz“’Â_©ïþY¬`Ž7Œ”Mz°4G(æşJ©Ž`ß͵÷3÷u¯ê*^ô€õzéœ=’Œ/vñ³œþŸ(Û!qfA½äwæÔ·Ö¸Sös›û¶,é֓ж‹SDŸmµ¶¿»È9é4g¶ Ð9Î%®%Áùi%å‰E© Êšž¹‰é©¾‰é™ÉÙ &zFz ––úú† ÉE™Å%•¹•Å%™Éz©Åz)¥ùy%zÉù¹w)î§6.3=/±¤hž±…Yª…qR’eRJZR¢±‘‘yš©ER’…¥yªQ²E¢©À|m^ .>® µ †F†FÚÚ-¹»kAaèéêç²Î)¡ PK ìDŒ<=¸& Zhtml/images/callouts/10.svg…SkkÛ0ýœü U…ÁÀ’õ°%Ë[Ö.ë {VeŒ’:ªmêÙÁvâ´¿~WvRÖQ˜Ñá\ÝsŽn”ÙÙîw‰¶¶i‹ºJ0§ #[¥õª¨²oºá³Óéìˆti+Û,»º‰Ñ‡U}oÑUYnÚn ”Qî¡‹K4ß­ë¦C×å&#W¢¹=b¤(cè|S”+ò ˆÞ#Dˆ³øøýâæözŽÚm†~N'³£ù·›«›[TµwŽÂy×­cßïûžö’ÖMæ Æ˜5|úúø®,ªÇ·¸1ƪÐò Lð?×/V þ²|²ÍǦSµ ~7f8Ùñ 1Ò„B_¬º<ÁRb”Û"Ë»o ۟׻3Ä”ðÁÓ j»§Ò&¸燲îãmÑ÷¥=±Õ6r¿L³¦ÞT«¸²=ziýãv½L¡{ÝØÖ6[ W™¥E“–ö  ?Jýhãc6,èJ!W4ôt@؇æÌ/;4¿Ö‰ód¶^vùáìCQ–ññ§a L=Ψ£œÑ J%Ǽ€rNUÄÖŠjB‘ ªÕ–kÊ‚œH*Õ‚KÊùçAg1ê<»˜ÿ·dCOÓˆ©4€gfÀ6¤†ž3ÙÈj©Ò¡ CÈå8E^Ê ¼&)q ‘ÇFÂê(Ücwæ¦(4w7 •òxD¹Ò£·÷wgtÈ›â2åÔÁ…Ç?Ìcá¡ù`ÍÀ[I@Zhdž¼œ LJœ$8$BµÇCý‚ª…ö£FnáÁÞ{fì̇°ÿ‚W~:ýPK ìDŒ<·[–ÈÊhtml/images/callouts/11.gifs÷t³°Läaàah‘ennnaaa)))MMM###kkkggçàààÔÔÔÌÌÌêêê¶¶¶þþþéÓ§Ï;wÑ¢EëÖ­Û¼yóŽ;Ž9röìÙK—.ݾ}ûñãÇoÞ¼ùðáÿÿþÀâOFFyM ;XݨwÝÌèêa`8R¢vx£šƒ‰Ó1UÞÉl,&NÔѲcp ðbhOq2)pšÌuñTìN;É«Y=¡É¾|Yh"#¾­F„‰ÁPK ìDŒžg‹}Sm·§wS„«ˆ¸|¢|RóúD¡y‡æ›9··œÍéázugÁë©¿?v??3çp‡üµÒ·»üX|/´utdÌZ¦âz·­-1$ÔUÞÁåõ®{yæ±×so³ø\#â*sÜvþùüÀi©×_ý['îºðuUä´ÚûÌ, s£•1,ɬÚy&“Kã"Û— e>ÛÜ7öœtD¢ÚFÎ5Ðà˜Îé[zŒ+ö«x^ºø1¦,šñCżöúµõÛËbÕOÊo}½ëô¦7o;VdÎ:ý´(¬%Ñ‚çð¶T÷ŽÊy¯wÕí[¤aÕ—<ëYb‚ý¤'ÅuÖLy¾‹u‘0t<]ý\Ö9%4PK ìDŒ<íp©ÒÖ;html/images/callouts/11.svgRýkÛ0ý9ù+®* ‘,ù«±c§¬kÖöQX”1Šc+¶ˆ&Û‰“ýõ“ídÐQìòãÞ½ÓÉÑíñ§„¯j¡UŒ¡¸Ju&T£}³ÅSt;GWÃW¼J]…ð.ÓK)÷uÓSÀlB ›À·õ,Ž¥®x”û/ž\!ø„R¸Û ™Ç\wúãÎâþëûÕÓãêCßÇ£èjñeµ\=ªŸ; MS†–Õ¶-i¢«Ü²)¥–É¡ùËãG)Ôî5 ‚Àê³FòØv…ÿº¾Èbô)9ñê™!0ÓQuŒÞ =ÌÎDØ—èšD+²¦ˆ‘ã (¸È‹fÀÁÛ;}Œ Žc nN’ÇHç­ÔmxµØH>ã*1¼IÒ]^é½ÊBÅ[ø#üúLR£.+^óêÀÍU¢TT©ä—ºæQôއ״£JMÌ'žA§ ª:€,#λñåñë=˜˜ucEeÒ—³[!exý¡cc&÷Ù#6 &Œ—Ù…Ù§©ClwB'.aÔÅŒøSÖáÛ$ðìÂ&7þÚv‰W`‡8þšu„û±¯³êüêÚü·5›ÏsþßÛ Îæv õüî‘eÆtÞ̯0ÿPK ìDŒ<êKÉÒhtml/images/callouts/12.gifs÷t³°Läaàah‘f!!!)))mmm###+++ÿààุ¸äääÜÜÜ’’’¦¦¦žžžÉ“'Ïš5kéÒ¥›7oÞ½{÷‘#GΜ9sûöíÇúôéß¿ÿQâOFFy°M@ÈÀêÿ@=Êw“GÒ/K‡ÛR¯DxS}& ‰þséä>ðé —‰Ã%F›.ÝY’d16°]ô™%r‘¹@AFäE×Ã,^½UþO 4L >î©ûÏÉÈ` PK ìDŒ” Ñzþ˜KbBP›ŽþI í0Sémõ ×¼_Ãe¬#ñ‡QÛ;LPwÛLÝÍŸR›öç>o»ûú齂÷Áç++ùû„>ÿœ“(r7¯ÜF®zÞõ¬­³8T<Ý[æ÷¸->þøâ…wón¿ýö° BGìðÃe»mçŸÿYóî÷¿ô•ë²Ooò[>yŠG“Eßõ×[ßÿ¾þZÔaÞsņ»ÞåmçnbpX~ÙR®?sS„ÞtSÍÔâ‹>Kk÷ßÏžõ¬R®áúkVY¶½qï÷šw)/lðœd"Ï ¡¾:T¢íòË/uû¥Û%ØV­Ò›î=ïùªUM)‘Ó6ß|3]ýCœ+0t4@aÑT·?^äèv¦IA§Î¦Ïôñ¹¼%ךÇY‘eÀ½cÿþng|ÀœÍ±º´ÃßdPƒ§«ŸË:§„&PK ìDŒÌN_înîîQÝ=¸.ú~“†á0 t´ióP0ÆBØÃçßWeýü'Iú] üS'üOûåzŽ?­^lûÀ1‚éÔÝ¿3œ ©—ËÂÆP®ûbޥč°e^ô#Þ•v¸lösÌCRÂO'¨ë_*;Ç 8?UÍîÊ®|¬ì™­WðGWÙsÞ6ÛzÖv@¨£ÚmV°7­íl»³ÐÊ,+Û¬²G]ø(ͳMO™_ÀÊ 7Tz9¢Ö9wãËä×3À:scžÌ6«¾8ž}*«*=ýèØÀä>+spF<ãLR¡(Ê™"œš˜;"h¢E!hd–BQ]I¥YrWP×^g9êür1ÿoÍ#*¹ ¸W•1¢©V¼˜6n¤€Š‰Gìb ¹45h"PS°›d,€ˆ"†Ðqb@Hqµ–NH© :ž«cJ H-Ç\’r¥ •ˆCƒÚ‡d” ÐLÀ‘AE b §32±÷–”E€¨¢"qÎ,‰XSÆ#h‘ƒTLõG•Pdô÷8ó/àá_¥kQ¹JE.Z"®ÇÓ…p ¸êçÓßPK ìDŒ<þñŸÈÑhtml/images/callouts/13.gifs÷t³°Läaàah‘fnnn!!!YYY}}}SSSwww__ßÀÀÀèèèÄÄÄœœœ²²²–––®®®É“'/\¸póæÍ;vì8qâÄåË—oݺõèÑ£7oÞ|üøñß¿ÿQâOFFyM ;Xý¨ûùòIú¥ép[k•rHGclÛd¶im6¼*L":œ?3,PÓ}rpÂyo††–• ÝŒÿ)Û½s]ô4Õ¶æƒyÛW¿þU·ÿý÷j†G?2Lx^i}tÛ[Ïi§—¾ÞÅ0ï¼zÿa«¹ç^ÍR=^xì±aò ®@‘ÒØÿ«nçmgxöùg†É«²ÝóžÿÜwÿýwóÙgw¿Ë`^µ:z °¨±Ëžõí5“ïe‹çùë®gËŸ–ºrUVd˜Ìñé§[÷ Þ:þßíÏu†œ¿¯9õDÚÙ¨“ÁÓÕÏeSBPK ìDŒ,arÚÐñ°çø$U†FÍFÁž,âG'éR‘ãT9 `*ØÝÞªTQË×À&±Á O‹išUÏ¢3QqWÚ“&Ý~«È` PK ìDŒ< Üš ›html/images/callouts/14.png›dþ‰PNG  IHDR Ù˰bKGDÿÿÿ ½§“ pHYsssŒ"¹tIMEÒ ¨xœ8(IDATxœ}=ªÂ@…O2…ˆ¤Ð¬\ÁÂìÀÙ‚ˆÛ°ÄX¤Ð"¸†Y€;@Æ)l”T!H!„ûŠø¢ðà}ååÜË=ŸCD‘µÖZ;9ç­V DDDqÏf3Çqê¡ïû§Ó‰~qXk¥”ÓéTQ‡¤”Çãñp8|.)¥¶ÛmUUËåçüõz­×ë~¿Ÿç9¹EQh­ƒ 0Æh·ÛQEàù|j­¸Ç£,ËÅb‘¦)€Ýn×étn·›¢ÛíÞïwîx<þ.’çùù|ö¡øƒŠ§’q~IEND®B`‚PK ìDŒ<Ç0Œ!Šhtml/images/callouts/14.svg…Rakœ@ý|÷+&(tÝ]×Õ3gBÓ^“@ÒB)áâmT²ÕC=½ä×wVïJ[]d}ÌÌ{oft~¶ûi ÓuSTeB8et™Vë¢Ì²mŸÜˆœNçG® ºÔõª­ê>¬«G WÆl›v”QîÀ·å,v›ªnáÖl3÷ª:—£G Š2çÛ¬!àRFï\×Z|úúñîþvM—Á÷éd~´ørwuweó`C$oÛMìy}ßÓÞ§Uy‚1æaŽœþ]¾3EùüÏf3oÈ"åšZáÆ/Ö ¹^½èúÀí”MBÞ=œìñ 1†ˆ‰¾X·yB|Ÿ@®‹,oGܺ?¯v aÀÀ÷ñ!Ó 4í‹Ñ ©ÐùÉT}ÜMñhô‰.WørWésVWÛr—º‡ßÔÑ?n6«Ù›Z7ºî4Ž2O‹:5ú ‹¥zÖñ1²Rl€+ z9 Úâ!9³ëËä·{Àsb×<™oVm~¨}*Œ‰?mps7’r©Ψä"Ç;J}*¤ÃL0érª"nq¨\AgÈ ÕRHä®O}µä6 /å¨ójÛü¿µˆ¨ BG0ú"G«hö§r‡w¨¢ÜU4ugòZ öR©rŸF<èÐR*ß³­W4ŸÀÀIwxD9W)s±E9Œ²PXÍ™ØãZ{Ä22X$BáØÐåȇ™{¸õý…ÖéôPK ìDŒ½Iéä 3 §ššô=Ïçœ~(ØÁÁÀ d%Ãwü±áì³f³Ï:-lqqq™÷ÜTª÷ËŒ“)Ï>ÿüý×/¦±Ãâù®u¯wéþT¶{«Ž·ÈÑÓO­Z•yß¿ù`‚…Œ[à–½ì­Q2Ç»&Íô˜ôd—ž ¡Ò­³®Eo¾W3´%s[¸3¦noÜî»| Õ6r×_—šÍfudxPcç¿ürØêÔYi+C¸ 0LNÝ¡³lòí·eË/Ÿ|ZT(c?ÿ|ÖV®Φ ï¿3VÌ{þ{ßc‹í·sOL™è {PXlê=þø÷ß{¯¿î;lù|Ö²‡ý9·ýj,çú-Ïۮݕ”®5õkÕßÚk‹ÎÅ^?ûüó×*[]†œ—óW\·f’€Ç  Q ž®~.뜚PK ìDŒ<*uv}>html/images/callouts/15.svg…SkkÛ@ülÿŠË Ýê^:=b'ô‘¦´ 4B)Á‘/’ˆ*I–œþúîIq!%Ð쇽ݙ•´8Ûÿ*Io›¶¨«%À)±UZoŠ*[Ò]÷À"zv:_1F.le›uW7 y·©ï-¹,Ë]Û)"$pù¾º çûmÝtäºÜeì²"0&WGB pNÞïŠrC¡uô–ÆÅÇonn¯ÏIÛgäÇ|¶8:ÿzsysKªöÎ¥hÞuÛÄ÷‡a€AAÝd¾äœûxGO_–ïË¢z|­AÄqì·ØòIÝàì›%½Z?ÙæNP‚Û©Ú%}3i8yN$ãˆ)=B¼ŠM—/©R”ä¶ÈònÂ}a‡÷õ~I9áD)üÑùŒ´ÝSi—´F懲’¾h‹ûÒžØjì~>fM½«6Ieò·uâOÚí:Åîmc[Ûô­,Ò¢IK{˜‹¥~´É1v¥(@=Pãõ±9sëËͯkÀsâÖ<[l×]~¨}(Ê29þ4¤ÁÍ}Q ÃظÊ0Î9è(U µÇ= ‚k&ÀDÂáÐ0 q s ¡éE\çL2+#ÔçqÎjšóÛÉü?µˆAié ±V)#† ”ò¨X"ŽUè)dŠ&œJ(–{ƒEA¤'€Ž 2ÎRîIP2BݨØ3 ¤`c9áMƒöX -3ÚE.Lî,¡|ÓGÂãEÑ8Õ¸š l¸zŽÓ Àz>c…œ"åŽ@8'¡dÎHˆü(u©sÏU!— dàÌI©J¦˜“¢ÊÑÃ}‘»èØ{ ‘’9ÚÃÕ\½Xæô>¾)Ï¿†ÓùPK ìDŒ<ƒ¤Tô½Ôhtml/images/callouts/16.svg…SkkÛ0ýœþ Í…ÁÀRô°eÉM:öèºÂ^°c”ÔQS϶óhýެdÐQ˜ W‡«{ï9çÚ™¼Þÿ®ÈÖµ]ÙÔÓH0WÍ¢¬—ÓhÓßQ½>?™¼ ”\ºÚµó¾isòfÑÜ:rUU›®RDHÆ™ˆÉ÷Ù%¹Ø¯›¶'ߪ͒^Õ„ ÉYàȉfœ“·›²ZT$‰yE¥žâý×w×?¾]n»$?OF“_®¯®º»ñ©hÕ÷ë|<Þívl§XÓ.Ç’s>Æ]tþ´|_•õýs ÂZ;nÑò ¤~ð?öËÅ4ú4p툶SwÓèeÐpvHäÈ .vå¢_M#¥"²rårÕ¼-Ýîm³ŸFœp¢~ÑɈtýCå¦Q滪ÙåÛ²+o+wæê9z;/î—m³©yíväokàÏ»õ¼@÷ºuk·V&EÙ•;ÎÅKiî]~ʇ]ÍR ‡#j=ˆÆh^úõ-ÍÏkÀsæ×<š¬çýêX{WVU~úax@ƒÍ}VÌ Î!Wˆ¦PL&1&xBÓFxœi*™MåJ²LÏdÂÒULé™ð‰äã0gæà ÌäTã0žä_XpÊ\f‡9J逡QÛü°”TI€1 ¿ÿƒ «@À,¤ÁF&â`CÀ¬/–"ûvùH>Kì(CöGAC½ß˜ÅZyÀ2ÐcŠIðO‡Å 7z<ðc† UªhP0¸•}n=0ߌøã'jÂg1ãû=üGÏOþPK ìDŒCM{Ö*Â8ïuÕ]Ñ;­ªŒáCvqòœÕÕ±LƒRõèuòšCœûP«FÕ‚£„IQ'Z]tá§TÏ*¸fãV¸¤ óÕÀ&³a|Ù…üzX‹a̳ð·ùeï¾Ð:¸þ0.°É}Ôv}ƒÃ(]?gÔöA-Û`†M9³ §Òãv%±¨ïX¹E]Ùq—2;'‚ ¹å !>Ž:ÛIç×óÿÖ–K=áÞL&ƒ•à§.X9Ôc®!©Ç%‘ÔâŽÁ!ƒmÇMø’± Ѥ°\g WÕ, ðŸåăT–fcâ»2çÖv2œB†&Lóå7f9ÿ PK ìDŒ<ÊJÌä;html/images/callouts/18.svg…TkkÛ@üìüŠ‹…‚´¾·ï;¡IÓ4ÐG ÁJ Ž|±ETÉHò#ùõÝ;É¡) sövwfgeOw¿ ²qu“Wå$b@#âʬšçåb­Û‡ÄD§'ãÃ$!—®tõ¬­ê”|˜W÷Ž\źiCˆ0XL~L/ÉÅnUÕ-¹.Ö‹äª$‚ÓŽ#%(%g뼘Ť4ï IOññûùÍíõi6 òó`0>¼øvsusKÊæÎ‡¢eÛ®Òáp»ÝÂV@U/†œR:Ä»èäuú®ÈËÇ· ˜µvn±ä’úÆÿŒŸÏ'Ñ—Ù“«ïXDв™Dï: Ç} -ºp€x±Íçír ‘¥Ë˶ÛÜmϪÝ$¢„!ð HÓ>nUÈüPTÛt“7ù}áŽ]9ïä~–=.êj]ÎÓÒmÉKiÇŸ6«Y†Õ«Ú5®Þ8eœåuV¸}_\JõèÒ#¬ÊPÓ =íQíA4Äâ…·o±/~[>ÇÞæÁx5k—û܇¼(Ò£OáAtî«ÃDÌ(HÆ—xšL—1%0*Ú0G:á`_ré)— –‰¡§ÌäçÐgÚõyö2ÿOͶå1ö²Jg‰ayL‰9¥{¬€•Ñ„‚Ñ3°ŽÙ˜ƒ²ÜW1‹dƒ µ )1I8–SíÕÔ£X¡± ÷-±XpƒÅZéX@’€qxÅ N¯ÀçPc’ eà 1© ^G «M,@ ž¡Y'@'”W'%f«{ =çèC Õã×ý•½ñ+CžI0wû·Lïgä~;8ž0²< Zm¿½:<¥oèqÌÀÑ0ƽ5ª»çÞkmŒïÎh3Â(±c_iñÚpTŽÛçÞUÔeµ_1ØŽíépÖ³yÙ‚*ï–= /ÞRjüXRvqš>çÜ¿s(„áÆýL=?:ï üKM÷ö‡ø3éü+89øPK ìDŒ<^­}«­html/images/callouts/19.svg…SkÛ0ý;ýª ƒ¥è·-7iY»®-¬[a%PÆ(©£Ú¦žl'Nûéw’AGa"H/:½{wOòìt÷»D[Û´E]ÍFh€l•Ö«¢ÊæÁ¦{Âqpzr0;Ä]ÚÊ6Ë®nôiU?Zt]–›¶ó[ˆqB ÑÅ%ºØ­ë¦C·å&Ã×"~s1h$HJÑÙ¦(WH1)ãaì$>?¿»¿½@í6C?&³Ã‹ow×w÷¨jÜVwÝ:™Nû¾'½ u“M9¥t ±àäíñ]YTÏï˜1fê£@ù¢.ñ?í«yðuùb› p§jçÁ‡¡†ãq#ñ)†m!Ы.ŸB(·E–wÞ¶?«wó€"Š„€_p0Am÷RÚyPƒòSY÷ɶh‹ÇÒÛj ~\¦ÏYSoªURÙý¥úI»^¦À^7¶µÍÖB+³´hÒÒîóÂ¥ÔÏ69¢~+…˜& ÐË5S gξlO~¿ÇÎæÉl½ìòýÙ§¢,“£/~€ 8w# “:d”DRç”È8„ˆ 3¢cæp¤1'Fñœ“HoYD¨d9D脚èÊgZ ™^]¡ÿç”p®BXbo)¡\¤ð, ™S )1Šƒ`2~Öqʈ€4„Jb‡“œÄ4Æ’DŠƒî¤ÄLÆ~6),‘'3Å¡ ;,%þUS‡5ôa®U‰*"¸I)–£ŽŒ8Ö„ñPyIbªˆ¡Î7j0–DSøO4uJÀ€¡ÃŒ8už:d7†{·A»N„aWƒ?¯è†ƒ®€Rá%(áåFƒÆ‚À@9BpB)¨ “Ò¼ºTQÞcgIìÛ’»nH/F b'qÎ 1L8QJYÈAQ³±„ðMAÃmϦð0Ç >¾“ƒ?PK ìDŒ<±I‹html/images/callouts/2.gif‹tüGIF89a çÿ  !!!"""###$$$%%%&&&'''((()))***+++,,,---...///000111222333444555666777888999:::;;;<<<===>>>???@@@AAABBBCCCDDDEEEFFFGGGHHHIIIJJJKKKLLLMMMNNNOOOPPPQQQRRRSSSTTTUUUVVVWWWXXXYYYZZZ[[[\\\]]]^^^___```aaabbbcccdddeeefffggghhhiiijjjkkklllmmmnnnooopppqqqrrrssstttuuuvvvwwwxxxyyyzzz{{{|||}}}~~~€€€‚‚‚ƒƒƒ„„„………†††‡‡‡ˆˆˆ‰‰‰ŠŠŠ‹‹‹ŒŒŒŽŽŽ‘‘‘’’’“““”””•••–––———˜˜˜™™™ššš›››œœœžžžŸŸŸ   ¡¡¡¢¢¢£££¤¤¤¥¥¥¦¦¦§§§¨¨¨©©©ªªª«««¬¬¬­­­®®®¯¯¯°°°±±±²²²³³³´´´µµµ¶¶¶···¸¸¸¹¹¹ººº»»»¼¼¼½½½¾¾¾¿¿¿ÀÀÀÁÁÁÂÂÂÃÃÃÄÄÄÅÅÅÆÆÆÇÇÇÈÈÈÉÉÉÊÊÊËËËÌÌÌÍÍÍÎÎÎÏÏÏÐÐÐÑÑÑÒÒÒÓÓÓÔÔÔÕÕÕÖÖÖ×××ØØØÙÙÙÚÚÚÛÛÛÜÜÜÝÝÝÞÞÞßßßàààáááâââãããäääåååæææçççèèèéééêêêëëëìììíííîîîïïïðððñññòòòóóóôôôõõõööö÷÷÷øøøùùùúúúûûûüüüýýýþþþÿÿÿ!ùÿ, hÿ ¤”„œ*Œ@Š c,ÂÚ¹wÆ È¨a)kïuÀˆ!É= ½ÕŠˆ ¡Ë÷æ4DÐÒ¥’sµj"0IòÊ—#×Ü#††Œþ1ät®é9”ò|©P`Iš9() ;PK ìDŒ<¯ ©ÑWahtml/images/callouts/2.pngë ðsçå’âb``àõôp Ò< Ì$Šå˜­S’·» ê^e# ¯ÚÓÅ1¤â–lßBÑÃ<.ö&&:¦:"_¸boØpA›ƒ­-­eÍA&o^nÖГîKªw}/ÝqûZöÛÝ;?¸ç°,Ùi÷³÷Á‚ÎwdˆwNàû1OpÉ¡já×Fý•ÓLs×3Å}Ù©ªpá7O¯ËúåÚ"þ‹û¼4k»­êCnš&Ìׯ_ t†s‰kDIp~ZIybQ*ƒƒ†²¦gnbzªobzfr¶‚‰ž‘ž…‚¥¥¾…¾¡BrQfqI¥CneqIf²^j±^JiA~^‰^r~îÄ]Š;€ÆiËLÏK,)šgaš˜jjd™li’hžfbž’šœœ–˜’hd‘˜œd™’ö4#/PHWÐZC£ C#mmƒ–Üݵ °ótõsYç”ÐPK ìDŒ<ý4¼=žhtml/images/callouts/2.svgmRýkÛ0ý9ù+Të¬/˲·¬k×öQX(”1Jꨎ©gÛ‰Óýõ;ÛÉ`£ÂØÏw÷Þ;4»Øÿ*ÈÎÕM^• À)qeZ­ò2Kè¶}f–^œOg'Œ‘WºzÙVuL>¬ª'GæE±mÚ!D„Â#ßïoÈõ~SÕ-¹+¶›—†àý蜓Ëm^¬H ´¶ï a¬·¸úöqñpwMš]F~L'³“믋ùâ”Íc¢ë¶Ýľßut ª:ó%çÜÇ=ÿ·|_äåË[E‘?d‘òM{áÿ¶Ÿ¯úyùêêGA N§lúnìá숉1<@Ltùª]'T)JÖ.ÏÖíˆw¹ë.«}B9áD)|ètBšöµp ­Ðù¹¨ºx—7ùSáÎ\¹Ä{Z¦/Y]mËU\ºŽü¥Žþq³Y¦ÈÞÔ®qõÎáVfi^§…;êâ¡T/.>åÃBVŠ ¢×#ª{@}$gýø²#ùípõcžÌ6Ëv}¬}΋">ý4,´ÁÉ}‰ÀëáuPÒ¦œÐ&ò4„J²¸´F"3âTåÖã³Jy¤>@2è6I¹§@ Ã0)”€$Ó tà Ò)&Œ’ž«-&8רjXÉØÎÚ‚‘z‡B¡¼@kâeÕ¬oR{ï©¡Á>MߦÌà­ °}•AѸ å„<àl p‹”‡¡ÔJËFÿ§ãÇÇß~‹&êq`°µP·Ã¼~÷ç0™ùx‡Þ¶óéPK ìDŒWi )8$%k‡‚0©V †ßpIÔ… ‰Îà©r¨h€º04¨!Ö¸&“X{fAhÂ]y() 7Ž—šdÄŠP–À€ JiL‰•\bÇ>âl¸„t¸º¥ €Wï3ü«õì¶ðe9¤€´ ‘qýBÃN8C% œÄ#Ô$qæI<Š6×ïèö²¶ÃzI@¶;ß)K@2¶hƒý8Æð/ög´ï…sùŹEÁ`À ù„%'lØ"(,Œ÷viðKŒ4í( äÂ;°wœr§,L‰Ê2Xöž6|ÕÄ â,‚Ç<~ÁöxúPK ìDŒ<”âshtml/images/callouts/21.svg…SýkÛ0ý9ù+TKÑ·-7iY·¬-죰(c”ÔQmS϶c§ûëw²“ÁFaÂ8ϧ»÷Þ”ùÅþg:W7yU.0§ #W&Õ&/ÓÞµO$ÂçÓù !èÊ•®^·U£w›êÑ¡›¢Ø5íB\PFy€¾­®Ðr¿­êÝ»”Ü”ˆÁÕ¨#CC—»¼Ø Í•ŠÞ"Dˆ—øðõýÝýí5]оO'ó“å—»›»{T6>„³¶ÝƳYß÷´—´ªÓ™`ŒÍ`Ÿÿ¾/òòùµn­ »PòD=ñ?íç›þ´~qõǦS6 üfôpvÄÅ lôù¦ÍXJŒ2—§Y;â.wýeµ_`†’< ¦})ÜW üTT}ÜåMþX¸3W®á‡<®“ç´®vå&.]þ”Žúq³]'P½­]ãêÎA+ó$¯“ÂyáPªgŸ²aAU¸¡ÐËÕà§~|é±øu°Îü˜'óíºÍ޹OyQħ‡20¹ÏšJf.)×î½·fÅõ0¯_þþ?[n©²g`ËfŒªÈPZ ¢œ)pb"îqh@Ãj‘ è…w<¤Le`^¾‚ª’üzàZ\£ü|áð‚Ë~>ý PK ìDŒ<+fgúhtml/images/callouts/22.svgµSkkÛ0ýœü U…ÁÀ’õ´e7nY·¬-ìQX)”1Jꨶ©gÛ‰Óýú]ÙÉØ£°Lçøêž{î=Rf'ÛÏ%ÚØ¦-ê*Áœ2Œl•Öˢʼîî‰Á'ÇÓÙ!èÌV¶Ytu£Ëú΢‹²\·ÝB\PF¹‡>\Ÿ¡ùvU7º,×¹¨‚×£FŒÊ:]åi®”yŽ!NâÕû—W7—sÔn2ôq:™Ìß]]\Ý ª½u!œwÝ*öý¾ïi/iÝd¾`Œù°‡Lß–EõðGQä»@ù¢®ðOãË¿Y<Úæ–cîTm‚Ÿ=íñPb 6úbÙå –£ÜYÞxSØþ´Þ&˜!†¤„O'¨íK›à”ï˺7E[Ü•öÈV ø!w‹ô!kêuµŒ+Û£oÔQ?nW‹ثƶ¶ÙXe–MZÚ}]8”úÁƇlXÀJ¡P èq°äÌÙ—íÉO÷ëÈÙ<™­]¾Ï½/Ê2>|=,çÞJ…Âã’*£RF4ÕJ{Š28y¡<ˆfÄ©¤"Pƒ˜ÑÇi$vPS 6I™' l§&  â‘Tk—©•J‰ bàj£`CI©%`ÃOR®tR‰k¡¨>—44)\U#Ðc® È\“a`eIY(\y(©¨ˆœ.‹ÂÖ”ñäPÊF‡T%qê;œŽ?Ý€Ê%À­wEâ|pë‹;…ß;Ëa ˜è/¬Õÿf­ükõ/Öæ„s¨ÿn®|Ê\ù¹áÎÜѰÑÝ™·|÷‚òñô+PK ìDŒ<3©ƒhtml/images/callouts/23.svg…TkkÛHýœüŠ© ÒxÞ3Rì”v7Ûºmaƒ¡,KqdÅQ%#Év²¿¾gf䅖Š`ÏÜǹç\gùêékKŽÕ06}·J8e ©º²ß6Ýn•¦‡Ì%¯®/—/²Œ¼­ºjØLýP×Ûþ¾"·m{§pD¸ Œò”üµ~Knžöý0‘Oía—Ýv„†ÃuìQC#oM»%š+å~%$Ë|‹ß?þv÷ùÓ ;ò÷åÅòÅ͇»Û»Ï¤¿ø£¤ž¦}±XœN'z’´v Á[à.¹þ>ü©mºÇŸ%ð<Ïá)ÿ ©/üÃøÍv•¼ß(B‰x .NÍvªW‰” ©«fWO›êô¦Z%Œ0"%þ’Ë 2NÏmµJzt~hûSqlÆæ¾­®ªnƒWv¿)wCè¶EWÈ©±1î7%²÷C5VñÂ(˲ʶ:×…)ýcU¼dáAV ÜP ô|FƒÉÉ;/ßîœüsx®¼ÌËýfªÏ±MÛ/ÿÚ@¹?%Í­H¹¤Ê©’ešj¥SE™6œ*ʼnq—’ £R†3§MÊi.f¨©´Ý.J– »ŒS—RÜd’jí#µRe&¨¹Ú)\() µvܤ’r¥kKe.ÖBQýNRëJ¬ª@Åý˜§ ClîIZãBgI™¾ã2~IYüêT>[ï‰åâ]Pë_ïÂÿ++85Ò*j¤©Õ•ØX÷9­Á‚A£ˆÑ™y5 …)Åwþ†Kq˜3†’þ}ŠØ:Ucn.PÊSæÂaxe½P.À*¹à#^P$¸¨¨Õb¶‘C"o#ø‚!shصæ°ž˜Á¿Æ† ;3cï J ˜{æÒZÔWÁÇòˆã,ЈÙÔï]l‘f† ë\ ε^(Ø>Q–Ñœ‡EðçÖ7UAG`(,• kÁ3Êg¦ˆÃyNÂ…U´ó„õ‹x-‹6/ø¹Íø—r}ù PK ìDŒ<&ÝÞ˜ihtml/images/callouts/24.svg…SkÛ0ý;ùª ƒ¥è·e7iY×®-´[a¥PÆ(©£Ú¦žlÇNûéw’“ÁFa"8ϧ»÷îžäùÉöW‰zÛ´E]-Fh€l•Ö«¢ÊÁ¦{Æ&89žÎ0F¶²Í²«›}ZÕO]•å¦í|1N(a!ú~ηëºéÐm¹ÉðU…ˆÞ Ò„Rtº)ÊRLJó!ŒÄÙ·Ïw·ç¨í3ôc:™œ½»º{@UûèBAÞuëd6† ‚ÔM6ã”ÒìǧoË¢zy¯€Åq<ó»PòDñ?ã«Ep½|µÍ# ¸Sµ‹àÃØÃÑ.xŠ1ì!l ŪËÊm‘å݈û§õvPD‘ð ¦Ôv¯¥]5(?—õôE[<•öÈVKøÃOËô%kêMµJ*; ?¥£~Ò®—)T¯ÛÚ¦·0Ê<-š´´{^8”úÅ&‡Ô/¨J¡¦‰ôºGÁ Š3g_¶/~¿XGÎæÉ|½ìò}îsQ–Éá¿@œ»‘$ŽxÈ‘F¦+¢¤ %¡Jc8y.Cˆh3âT®eH!f”‰ù*"" j“”†Â3bb D’i,ˆR.SI™bN¸¯UF† „€ Ó¡ Lª<""æ÷\u)IdR¸ªcУ® È]“‘6^YqG”’ðØéÒ8ÚaE(‹`@TSâS%—Ø©ïp:¾„t|uJ—·Þ5óKïÖ›;…ÿ;+\×2ä %x>âgÊ¡1¡{xBë¹›€÷ SyÍa<ŒˆÔ¹7¤g”h¥ó]µçzsã¢È5Ú„ÌÆ4L&Ýdà˜ãô^9 f‚<`•Ä#Ç/øåX?3ŸÁ¥Ú=àÃ9žþPK ìDŒ<‡ ddàhtml/images/callouts/25.svg…SikÛ@ýœüŠ­ …‚v½÷¡Ø)=Ò4Ð ¥”âÈKD•Œ$ÛI}gVNKK¡‹Y?ÍîÌ{óFš?»ûÞ]쇺k™`<#±-»UÝ®Ùv¼¡>{vz<D)9mì—c×äùª»Žä¢i¶Ã˜BDHÆ™Èɧ«srv·éú‘|l¶kzÑ–‚WGA,㜼ØÖÍŠ¡µJ¥HñêÃËËÏÏȰ[“/ÇGóGgï//.?“vø†¡¬ÇM1›í÷{¶W¬ë×3É9ŸÁYvúçõ»¦noÿ• B³t )_ ÿÕ~½Zdo—÷±ÿ&2î´Ã"{2i89ŠTb 'ûz5V‹L©ŒT±^Wã„wuÜ¿èî'œ(¿ìøˆ ã}YÌ7M·/võP_7ñ$¶Kø£×ËòvÝwÛvU´qO~¥NüŰY–½éãû]„VæeÝ—M|¨ Céncñ˜§Y%–@÷¨GÍ yö­’ÿ­Ö Ú|4ß,ÇêáîMÝ4Åã×i 8÷N±àd.Ó^—œf´É5ãÆR˜¼Ô9D¬Ÿp©˜´:çóÆæ‚y€†)gí¨ä¹„°§‚ù`¡–*f Þ4Z—T2™r×p •„e`/l®˜Ð¦rLy%53os¾„WUBÅ|%Pèán@‘ÎúĬwËCIÍd@^ÜÆ…ƒ”ò”³tUKM‘ý€Ëé!çÓ#6¨ñ¼õ(,È7É­8…ÿ;+9³:~g¡ dVPW8(u¹.A» É^qph‚†éðÛ]•ÜÎåm-¨Q¾ÅùP‡¡“Çh»JíÛJ1…Jà3NÐMïCªép¹ '.Á,˜ŒŒ07(¦¬;`ôB$/P“—؆G«&Ûµ/±Wcr¼e¹&.Õ¯áK©Š© ¥Áf, @Pá†ä;ɼ’4¾¼ýÃÉÉýù ¾‚Ã_úéñOPK ìDŒ<ë£lE+³html/images/callouts/26.svg…TkÛHý;ù[¤õþÖ®c§\Û\hï å8Š#+¶ˆN2²b'ýô÷fW>èQ8a¤Ñì̼7oF^¼yþ»e‡zØ7}·Ì$«»ª_7Ýf™=…ÏÞ\ž/^ûPwõ°ûaÎ~Y÷÷5»iÛ§ý]L*.¸ÌÙwØÕó®Fö¹}Ú7ãÑy—0æÌq!ØÛ§¦]3+ñ?3Vñþ÷w·_>_±ýaÃþ)4GûêèQ)ž#Ò6¨ÉV U¼Áh¡I˜xâ" 9í j¨D‘Ö0±9­¤Òá°]Dô”Œm‚  ?ÿŽMZ‹Å ŸçtÃ_Ðåù?PK ìDŒ<ðMq.;html/images/callouts/27.svg…SýkÛ0ý9ù+Të¢o[nÒ²n]SØGa%PÆ(©£:¦žl'N÷×ïd'ƒÂDˆŸO÷î½;ÉÓ‹ýÏ‚ì\ÝäU9 8°€¸2­Vy™Í‚mûDãàâ|<=¡”\»ÒÕ˶ªònU=:rSÛ¦íC„ `ÀCòmqM®ö›ªnÉm±ÍèMI .„`Œ\nóbE4W*~K¥^âÃ×÷w÷·W¤Ùeäûx4=¹úrwswOÊæÁ‡‚uÛn’ɤë:è$Tu6Œ± îç§ï‹¼|~À­µ“~)?PÔþ§ý|5 >-_\ýÀ‚Ó)›Yðfðpv$}‰!ÜCÜèòU»žRdíòlÝx—»î²ÚÏF‘ÁxDšö¥p³ Bå§¢ê’]Þä…;såôq™>guµ-WIé:ò‡:è'Íf™"{S»ÆÕ;‡­LÓ¼N w¬‹‡R=»ä”õ Y)à4¢—#ª=&HÎüø²#ùu¸Îü˜GÓͲ]sŸò¢HN?ö eprŸ%ØH„\‚ŠUʨ­t¨€iCñä… 1bâ§„Q!ÃX¬MÈÁŠÔ #ƒj£”…Ã1å[ƒ…7T‚Ö>S+•R¢çêXᆒ RKÄ17¡®ô:iÅB(Ðs QœâUXÑ¢ó(Œ1×z“‘‰{e ,¾<–T ¬×e6:` ŒGØ ÇR1eЧ*¡¨W?àtx ÙðêT>o½7fżŸÖ/ ÿŸ¬°ÀýhH¬ÌÁ /Qä½Ähßø†Ñ¿À¶¹næÜ‚Æ^¥úa(Ï¡ø©¢Ów‡ç ƒžóxÁ=ÛȬ¹XôZƒ½é¯Éá?…óñoPK ìDŒ<á.ó‹Ohtml/images/callouts/28.svg…TýkÛHý9ù+¶*HãýÖ®c§\Ó\¸Â…@9ŽâÈŠ-ª“‚ìÄIÿú{³’Ëå(œ0òhvfÞ›7#-Þ<ýÝŠÇzØ5}·ÌÉLÔ]Õ¯›n³ÌöwEÈÞœŸ.^…x_wõ°Ú÷Ã\ü´îokqÕ¶»}r ¥I’ÊÅ7ïÅåÓ}?ìÅÇöaS\u‚’ófĘ ORŠ·M»NY~¢(âÝïן>^ŠÝãFüyz²xuùÛõÕõ'Ñí>³+Ûî÷÷óÙìp8ÐÁP?lfZJ9ÃYvþ2ü©mº/ßKP1ÆY:EÊ_åÂÿi¿Y/³_VÏõðYeêt»eöÃÈálrÌS‰ÑLšõ~»ÌŒÉĶn6Ûýh?6õámÿ´Ì¤Âü²Ó±Û?·õ2ë|×ö‡ùc³knÛú¬îVø+nWÕ—ÍÐ?tëyWÄ·Ô¾»_UȾê]=<ÖheQ5CÕÖǺJÿ¥ž¿–éBVÊ“ƒõ|´6²’7,ßæ˜ü}¸ÎXæ“Åýj¿=ÆÞ5m;ýsºå~5K+C6ØJŽœu¹%é|Ék›ÃãÃhW†´·¹„/8Ÿ+Šz2™Òí¤’¹†;ŠBô(d•/ 9Ç‘ÎڪФS® Öh$g`åsCʺmI&êmÉ}0T† «ªQ1O2…b#“,}HȆd©¹Ô]=¬§~(ÙO›þ¾f7m{§bRqÁeÊ~¿ûÀ®žöý0±Oía›ÝtŒ‡à]ä(™ãB°·‡¦Ý0+ñ?2–eDñþ·w·Ÿ?]±ñ¸eœŸ-_]ýz{sû™uã %»iÚ—‹Åétâ'Íûa»PBˆÖ’Ëoj›îñ{ ²(ŠEXEÊŸ ¥Âÿ¿Ù¬’_ÖÏõðE& êtã*ù!öp1ÊP"†Ä©ÙL»U¢uÂvu³ÝM›úô¶Z%‚ ¦5~Éù§ç¶^%=˜ÚþT›±¹o닺[ã‘ݯ«ÇíкMÙÕ'ö-5ò—ã~]!{?Ôc=kŒ²¬š¡jë—º0¥¬Ë×"\ȪЀtÜ=¿ @²@ò–äÛ¾$¿\$óÙr¿žv/{š¶-_ÿ.Ð@¹š¹J¥æÆ›Jd–[cSÃ…uœW&EÄùˆ+Í•3©@Ì[—J^¨Z®s¶³J¤ aŸIî ‡BFºLski§5¦ÊW!×zƒ£´ÕÀ^ºTsiì.çºPwÊp{­yî+U…Šøµ¡A½5™;˜5¹¢ò(i¸*ˆWùŒ-2Ç€¥|&xØj”Ɉ}ÆU|IE|¥ mÀ©§Æ uÔúJ.ü¿²J@âa9 ¨iB¢®Ì&)4 á<¹<ÀJbt’й·YÜ©¸fέ¢I[´/Œ÷ŠfqÕ cOå i& ÉgÛ ÌÀ8¹Ž®)ˆ‹Ê‘Å@}ÈT‘”µ¼d;} $îh;BêŠâNH° M¦@¬ˆIÓ ø—Ñ ††L¾Ž*}eòSu9gÒØ.6™B kƒ‘d-dáÐ`jÀ$Šwú›‘çLÏùá¼¼#c •å(œWå#úO+Ñêå¹ù†ÏÊåùßPK ìDŒ<Ø,ù —’html/images/callouts/3.gif’müGIF89a çÿ  !!!"""###$$$%%%&&&'''((()))***+++,,,---...///000111222333444555666777888999:::;;;<<<===>>>???@@@AAABBBCCCDDDEEEFFFGGGHHHIIIJJJKKKLLLMMMNNNOOOPPPQQQRRRSSSTTTUUUVVVWWWXXXYYYZZZ[[[\\\]]]^^^___```aaabbbcccdddeeefffggghhhiiijjjkkklllmmmnnnooopppqqqrrrssstttuuuvvvwwwxxxyyyzzz{{{|||}}}~~~€€€‚‚‚ƒƒƒ„„„………†††‡‡‡ˆˆˆ‰‰‰ŠŠŠ‹‹‹ŒŒŒŽŽŽ‘‘‘’’’“““”””•••–––———˜˜˜™™™ššš›››œœœžžžŸŸŸ   ¡¡¡¢¢¢£££¤¤¤¥¥¥¦¦¦§§§¨¨¨©©©ªªª«««¬¬¬­­­®®®¯¯¯°°°±±±²²²³³³´´´µµµ¶¶¶···¸¸¸¹¹¹ººº»»»¼¼¼½½½¾¾¾¿¿¿ÀÀÀÁÁÁÂÂÂÃÃÃÄÄÄÅÅÅÆÆÆÇÇÇÈÈÈÉÉÉÊÊÊËËËÌÌÌÍÍÍÎÎÎÏÏÏÐÐÐÑÑÑÒÒÒÓÓÓÔÔÔÕÕÕÖÖÖ×××ØØØÙÙÙÚÚÚÛÛÛÜÜÜÝÝÝÞÞÞßßßàààáááâââãããäääåååæææçççèèèéééêêêëëëìììíííîîîïïïðððñññòòòóóóôôôõõõööö÷÷÷øøøùùùúúúûûûüüüýýýþþþÿÿÿ!ùþ, oý ¤”„œ*ŒAŽÄX‚7kÞœAèsÎ!€ðoÍGF +¦¨XòcŒˆ´:g &˜sŒ¹g²aJ-8«å2(£w1r¼#tÒC­îÝkq¢À• cZUˆrd J ;PK ìDŒ<næyU^html/images/callouts/3.pngë ðsçå’âb``àõôp Ò< Ì$Šå˜­S’·» ê^e# ¯ÂÓÅ1¤â–ªßjÑÃ<Â&_¤Ûâ–n1Ø -"Çó†‹}·[BŠÄ µ—«M»w™?tçÎUõ›¸DÙ Å#D.-x^øŽË›ç袭Mb „_œ]øáôüÆ×զؾ¸½_WYbúϯïúæÍ ¶Ú•t0÷MÐ9Iµ,éçw˜&ÿyÝëtƒs‰kDIp~ZIybQ*ƒƒ†²¦gnbzªobzfr¶‚‰ž‘ž…‚¥¥¾…¾¡BrQfqI¥CneqIf²^j±^JiA~^‰^r~îÄ]Š;€ÆiËLÏK,)šga””’hdnd–’’˜œj‘˜d‘h`˜fj™’j”š”’Äñ—¯¨‹¤+h-ƒ¡Q…¡‘¶¶AKîîZPÀyºú¹¬sJhPK ìDŒ<2Aíu+html/images/callouts/3.svgmRkkÛ0ýœü U…ÁÀ–õ²,»q˺u¥°¬Ê%uTÛÔ³ƒíÄé~ý®$g°Qä“û:÷\ÝÕÅáWƒö¦ê®Í1##ÓݦnËïÆ§Pã‹óåê$ ѵiM¿»>Cï6Ý£A7M³FgBŒJX€¾ß]£«Ã¶ëGô­Ù•áM‹ˆ3ÞyŽ )B)ºÜÕÍÅLJý¡0´¾¾¿½ÿv…†}‰~,«“«/·7·÷¨¬ Wã¸Í¢hš&2 ÒõeÄ)¥øðù¿á‡¦nŸ_K`išFÎ )?ÔþO~½Éñ§õ‹éF0vÈñßÃÙlÈ\ ovS½« Qeê²=Þ×fºì9¦ˆ"!à‡— 4Œ/ÉqÌOM7eûz¨sfÚ5|ÂÇuñ\öÝ®Ýd­™ÐßTÏŸ ÛuÙÛÞ ¦ß²*ê¾ẖ.cN”Ö[Â5ÜB(°ÅRÃ-Sî1°. Ðù{ ²X.u ¢$”PJ‚Ÿ…Š-«=, ܶ¡S#BJc¨% …<ÊTÈWÌÖMl;ÂR$zO U’Ò4©‚è4µ¥¸à3–DñÂ*MbÛ}’pàŒC ÌÀa¯‡m‡Ž)‘|†Š(¡*A´P Ø)Õp'PTIøÇmG2–ÔÍ0L9Vjm2ô‘:^žíˆYIÊÍ^ÃÌ%‘ñŒïü£ý¶K±XE°ó«¾üPK ìDŒ<-)íkhtml/images/callouts/30.svg…TëjÛ0ýÝ>…æÂ``+ºY–ݤeëºRØ V eŒ’:jbêÙÁv’vO¿#É)ëÌéø»Ÿ#ÅÓÓÇŸ5ÙÚ®¯ÚfqÊ"b›²]TÍrm†ûÄD§'‡ÓWIB.lc»ùÐvy»hï,¹¬ëM?xá‚2Êcòíú‚œ?®Ûn _ëÍ2¹lõÆëУ š2FÞmªzAR®”yCH’¸ᅵ]Ý|='ývI¾L_¾º¼º!MëLÑjÖÅd²ÛíèNÒ¶[Ncl_tò2ü±®š‡%ð<Ï'Þ‹”hê ÿE¿ZÌ¢ó'ÛÝòˆ@¦ŸE¯Ã Ç£¡ð%‚ÙC8vÕbXÍ")#²²Õr5¼­ìî]û8‹aDJü¢ÃÒOµE-:ß×í®ØV}uWÛcÛ̱%wóòaÙµ›fQ4vGžSCÿ¢_ÏKd¯;ÛÛnkAeZV]YÛ}]Jû`‹#æd•€kš=íQç@4AòÒÉ·Ü'ÿ{<ÇNæƒéz>¬ö±÷U]Güƒ6Pî“¡B›˜+ª¥^1š SBVfb jR0Êr=bA%S%ƒM …U7©[¥MʳqßœµJ$奰å<æÔ$)U™ˆSªU€¥@}Œ‘ºSžŠÍRá›0˜3a lÜ„ÌMƒ’ uÍSš–4Æ=×Î:ž”¥zÄ’æ%Ì=³L£¾Ê5º£RÀ §Ú GŽnŒJ=B kÌJ:j'”c·¢,£9X…#œg®©ò:Ca©”W8‰‹äzš›H8>Âë® ·¤†ø:Ø/wþÆ"CÚŒ*]ªñpA œ…¡¡™tz¤nBP6˜6O5¸½}xOü)ŽØùÎxn(‹˜ç]ùŽñÝ‘ý,B¸h‘ ¯>,Nf3B|t2> ¡¨Ìe⯦³«>>???@@@AAABBBCCCDDDEEEFFFGGGHHHIIIJJJKKKLLLMMMNNNOOOPPPQQQRRRSSSTTTUUUVVVWWWXXXYYYZZZ[[[\\\]]]^^^___```aaabbbcccdddeeefffggghhhiiijjjkkklllmmmnnnooopppqqqrrrssstttuuuvvvwwwxxxyyyzzz{{{|||}}}~~~€€€‚‚‚ƒƒƒ„„„………†††‡‡‡ˆˆˆ‰‰‰ŠŠŠ‹‹‹ŒŒŒŽŽŽ‘‘‘’’’“““”””•••–––———˜˜˜™™™ššš›››œœœžžžŸŸŸ   ¡¡¡¢¢¢£££¤¤¤¥¥¥¦¦¦§§§¨¨¨©©©ªªª«««¬¬¬­­­®®®¯¯¯°°°±±±²²²³³³´´´µµµ¶¶¶···¸¸¸¹¹¹ººº»»»¼¼¼½½½¾¾¾¿¿¿ÀÀÀÁÁÁÂÂÂÃÃÃÄÄÄÅÅÅÆÆÆÇÇÇÈÈÈÉÉÉÊÊÊËËËÌÌÌÍÍÍÎÎÎÏÏÏÐÐÐÑÑÑÒÒÒÓÓÓÔÔÔÕÕÕÖÖÖ×××ØØØÙÙÙÚÚÚÛÛÛÜÜÜÝÝÝÞÞÞßßßàààáááâââãããäääåååæææçççèèèéééêêêëëëìììíííîîîïïïðððñññòòòóóóôôôõõõööö÷÷÷øøøùùùúúúûûûüüüýýýþþþÿÿÿ!ùþ, hý l%%E %¥*T a r,l@É¿9 %¶¢áÜEŠ”6lUêƆ104Ôr½“¨ a2Å=F*c2ó¯gÏR(Rð’"#9†z[ãPaÒ¡R(È)1Ž ;PK ìDŒ%åVÂJ©CÝ pAåüØÜÃò¸/«žÔ!ÕWÐÜŒ>Ì(cp{ÈU6·,÷#€®÷wß?¯ŸŸ–P·)üœN‚«å·õjý EýÒS$kš½o]×ÑΤe•‚1fàYü~Tyñúž€{žg »(ù…¦}âÿÚÏ“>>???@@@AAABBBCCCDDDEEEFFFGGGHHHIIIJJJKKKLLLMMMNNNOOOPPPQQQRRRSSSTTTUUUVVVWWWXXXYYYZZZ[[[\\\]]]^^^___```aaabbbcccdddeeefffggghhhiiijjjkkklllmmmnnnooopppqqqrrrssstttuuuvvvwwwxxxyyyzzz{{{|||}}}~~~€€€‚‚‚ƒƒƒ„„„………†††‡‡‡ˆˆˆ‰‰‰ŠŠŠ‹‹‹ŒŒŒŽŽŽ‘‘‘’’’“““”””•••–––———˜˜˜™™™ššš›››œœœžžžŸŸŸ   ¡¡¡¢¢¢£££¤¤¤¥¥¥¦¦¦§§§¨¨¨©©©ªªª«««¬¬¬­­­®®®¯¯¯°°°±±±²²²³³³´´´µµµ¶¶¶···¸¸¸¹¹¹ººº»»»¼¼¼½½½¾¾¾¿¿¿ÀÀÀÁÁÁÂÂÂÃÃÃÄÄÄÅÅÅÆÆÆÇÇÇÈÈÈÉÉÉÊÊÊËËËÌÌÌÍÍÍÎÎÎÏÏÏÐÐÐÑÑÑÒÒÒÓÓÓÔÔÔÕÕÕÖÖÖ×××ØØØÙÙÙÚÚÚÛÛÛÜÜÜÝÝÝÞÞÞßßßàààáááâââãããäääåååæææçççèèèéééêêêëëëìììíííîîîïïïðððñññòòòóóóôôôõõõööö÷÷÷øøøùùùúúúûûûüüüýýýþþþÿÿÿ!ùþ, qý 䔄Œ*Ì EŠ)ÄX Ç¿w•HᯀŠÿ|ÉH#ÈVΉÃG‹„”œãôK!}dô®¦IZ>R:÷1†G–ÿ”„ðFi§¿ ½»W ÂFЬä¨Ð%† ;PK ìDŒ<ÔþQ\html/images/callouts/5.pngë ðsçå’âb``àõôp Ò< Ì$Šå˜­S’·» ê^e# ¯ÌÓÅ1¤â–hßBÁ#<,ü\RmRRR«X§ø*Á&ÕÆV§ï”±`Áÿž9éeßX&M—?zÞ·éᵨÜkò‡%™s·˜Pž¤RS|§PåÌǸÕ+šªBK¦òo¸wEä…Ì×HÉ)ão±Fkofm•Q>ûkÍs~åhs}§øúß@8—¸F”ç§•”'¥28h(kzæ&¦§ú&¦g&g+˜èéY(XZêXè*$e—T:äV—d&ë¥륔äç•è%ççNÜ¥¸hœظÌô¼Ä’R yi©f–&fÆÆæ–©IF¦©¦fFiÉÉÉÉ–IÆÉæ©÷7YÎêâé ZË`hTah¤m mÐ’»»lž®~.뜚PK ìDŒ<«›MIÇhtml/images/callouts/5.svgmRkÛ0ý;ùª ƒ%ë—eÙ[Ö5+…n+¬Ê%uTÛT³ƒíÄé>ýNv3è¨0òãtïÞ½“gûßílÛUMaNF¶Î›uUÞöOÄà³ÓùâˆtikÛ®ú¦MѧuóhÑ•sÛ®Cˆ Ê(лK´Üoš¶G7n[«Ñ1x7i¤HSÆÐù¶rkq¥ÌG„ñß?ßÞß,Q·+ÐÏùlq´üv{u{êîÁ‡pÙ÷›4 ‡a ƒ¤M[„‚1Â>}›¾wUýü'Iާ@ù¢¾ðö«u†¯W/¶}àÁtê.æN^éXb †jÝ—–£ÒVEÙOxWÙá¼Ùg˜!†¤„Ïg¨ë_œÍpÊO®Ò]ÕUΞØz?ò¸ÊŸ‹¶ÙÖë´¶úGôÓn³Ê½imgÛ+‹¼jsguáRšg›³q+‡¸¦ —j=À! ?¾â@~¿X'~̳ÅfÕ—‡Ü§Ê¹ôøË¸@&÷•+ÊdÀOD"g4†01pª…"0ãD’F‘žp.¨Ö à]È1ÊLPSÅ9ÎróÒe,‚˜rÅIL…PΉ¤œ™€ME,ˆ¯‘VÚˆšH–’&¾®ÍÔìLꩪߡêˆG5 Ç¾A(Ài”įX‚™(g‹µSF&d2ç\L8÷n¥|ÚX¼HÐÒ»SÂ8ŸGÆnÜèˆpýyíÒ#žì$•L•Äøñ\¿èa³EWöºÁ³<ÿPK ìDŒ<‚†Q)ÌÚhtml/images/callouts/6.gifs÷t³°Läaàah‘d EEEMMMCCCKKK//¯   ìììâââ–––žžž)S¦Ì™3géÒ¥k׮ݻwï±cÇÎ;wïÞ½çÏŸ¿ÿþû÷ïÿ±ÅŸ,ŒŒ ò : ›@v2°†?Pwó T˜°B‰Á@äíÆmR}Üßñ6Ÿ^ø4QmÂ!ÅëF…í綦¦Ugòžç}ëèø¼r×Vž–ü‘W'îäÄ8•úÝX+²úƒb÷êLÑ„¥6ÜûÍœrè®àmõ'o®/Øÿ\çðéi©r2?®ìH_èç³r‰Ï{Þÿa¿~è°ß\lñŠk‡t$Ð!Î%®%Áùi%å‰E© Êšž¹‰é©¾‰é™ÉÙ &zFz ––úú† ÉE™Å%•¹•Å%™Éz©Åz)¥ùy%zÉù¹w)î§6.3=/±¤h^Š‘iй¡¹YŠ™y¢±EbZ²a²©™©©EªqJZ’aâ_¯[ºø@º€Ö2Uih´äî®…ž§«ŸË:§„&PK ìDŒ<¾5É–^html/images/callouts/6.svgmSkœ@ýûò)6 ÝÛ_®®¹KhÒ4 4m !J oãI¬ê—|ú¾U¯’EÆ·³3óÞŽãìt÷§ [[7yUÎ=N™Gl™VË¼ÌæÞ¦} bïôä`väÒ–¶^´UOËêÑ’«¢Ø4mï"\PF¹O~Þ]’‹Ýºª[rSl²àª$´wÞ  Ñ”1r¶É‹% ¹RñGB‚ÀQ|þq~{sAšmF~Lf‡ßo¯nïIÙ<8—·jÛu2v]G;I«:› ÆØgÞÉÛð]‘—Ïï%pcÌ´?EÊoºÂÿ]?_νo‹[?p ;e3÷> ŽGGÒ—Ü=ÄA—/ÛÕÜ“Ò#+›g«vÀÛÜvgÕnî1ˆ”x¼ƒ iÚ—Âν ÌOEÕ%Û¼É {lË^Áã"}ÎêjS.“Òvä_êÀŸ4ëEŠìum-®2Kó:-ì¾.>Jõl“#Ö/d¥À5 ^ö¨vÀ›"9síËöÉïkÀ:vmžÌÖ‹vµ}Ê‹"9úÒ/Рs×ÜPδÏÕ‘L §0ŒÆ È0*ŒpŠM¨bŸ’r©}A b%‘öCªâ¸`”…Úï-ø')£¡tÕ"ûœ†}yr_£œ*Ð"ÇǰEN¸V#Ö`á)ó•N‡Ö~DE(M•‰ܳÀÁTE”CjH™4#6Ô:½dÓ÷Ámw•¤ã2cŽ g.LÂ*Ê4‡fÇ=æÍì™–°*vV‡Î£#¨НC?_É5¾šæÊç!L”.^AŸpjPß5b9У“}›ðiÓ÷Åùzè"#N±»?·Š ÌÌø<‚,= ðßÈyus4™M1I£ÁßrrðPK ìDŒ<Ã)Ø ‹html/images/callouts/7.gif‹tüGIF89a çÿ  !!!"""###$$$%%%&&&'''((()))***+++,,,---...///000111222333444555666777888999:::;;;<<<===>>>???@@@AAABBBCCCDDDEEEFFFGGGHHHIIIJJJKKKLLLMMMNNNOOOPPPQQQRRRSSSTTTUUUVVVWWWXXXYYYZZZ[[[\\\]]]^^^___```aaabbbcccdddeeefffggghhhiiijjjkkklllmmmnnnooopppqqqrrrssstttuuuvvvwwwxxxyyyzzz{{{|||}}}~~~€€€‚‚‚ƒƒƒ„„„………†††‡‡‡ˆˆˆ‰‰‰ŠŠŠ‹‹‹ŒŒŒŽŽŽ‘‘‘’’’“““”””•••–––———˜˜˜™™™ššš›››œœœžžžŸŸŸ   ¡¡¡¢¢¢£££¤¤¤¥¥¥¦¦¦§§§¨¨¨©©©ªªª«««¬¬¬­­­®®®¯¯¯°°°±±±²²²³³³´´´µµµ¶¶¶···¸¸¸¹¹¹ººº»»»¼¼¼½½½¾¾¾¿¿¿ÀÀÀÁÁÁÂÂÂÃÃÃÄÄÄÅÅÅÆÆÆÇÇÇÈÈÈÉÉÉÊÊÊËËËÌÌÌÍÍÍÎÎÎÏÏÏÐÐÐÑÑÑÒÒÒÓÓÓÔÔÔÕÕÕÖÖÖ×××ØØØÙÙÙÚÚÚÛÛÛÜÜÜÝÝÝÞÞÞßßßàààáááâââãããäääåååæææçççèèèéééêêêëëëìììíííîîîïïïðððñññòòòóóóôôôõõõööö÷÷÷øøøùùùúúúûûûüüüýýýþþþÿÿÿ!ùþ, hý ¬%%E %­*”CCr(Ô Õ¿‹ÿ¬ˆá¯€1œ£€Iµ<~Ì$)÷Z~D ó£µZ.œÌñOŠË8?2º‡À%#J>Ö ú1…B!.›*È))Ž ;PK ìDŒ<}î”NXhtml/images/callouts/7.pngë ðsçå’âb``àõôp Ò< Ì$Šå˜­S’·» ê^e# ¯ÈÓÅ1¤â–jßZÆVžÿ0¥HÅM›Ä:×¼ñ™ê¿OtÂÔ5¹î'ë=OVíùÌdgf¸ß] ,h»s‰kDIp~ZIybQ*ƒƒ†²¦gnbzªobzfr¶‚‰ž‘ž…‚¥¥¾…¾¡BrQfqI¥CneqIf²^j±^JiA~^‰^r~îÄ]Š;€ÆiËLÏK,)šgdialfahb”˜lbœœš”bdja–b‘bhhlžl‘’¦fùr&PHWÐZC£ C#mmƒ–Üݵ  ótõsYç”ÐPK ìDŒŽn(…GUª:i«:„YµQ°4æÐ´B2΄ß×°8í«º…'sÈé²6ë‹GSÆ9Ü´É`"\×@ioñðíãêùiÍ1‡ãQt³øºZ®ž¡l^zŠm»m»ë:Ö9¬ªs[rÎmŒ‘ù¿ÇOF—»·"{ˆ¢ä'šö‰ÿk_g1ùœœUý"àtÊ&&ï.5Ì^‰pHq¡ˆNgmÇ!P(íµêî«SL8ppüÈxM{6*&:oMÕ…GÝèQ3U&¸ÑM’îòº:”YXªþJ/þa³ORTïkÕ¨ú¨°•(ÕujÔ5/^JµSá-ªR,@LÙÑùŠêÅy?¾ü*~»\³~Ì£hŸ´ÅõìVÞ~Úàä¾H—Iß ØtšRÁîZø2>>???@@@AAABBBCCCDDDEEEFFFGGGHHHIIIJJJKKKLLLMMMNNNOOOPPPQQQRRRSSSTTTUUUVVVWWWXXXYYYZZZ[[[\\\]]]^^^___```aaabbbcccdddeeefffggghhhiiijjjkkklllmmmnnnooopppqqqrrrssstttuuuvvvwwwxxxyyyzzz{{{|||}}}~~~€€€‚‚‚ƒƒƒ„„„………†††‡‡‡ˆˆˆ‰‰‰ŠŠŠ‹‹‹ŒŒŒŽŽŽ‘‘‘’’’“““”””•••–––———˜˜˜™™™ššš›››œœœžžžŸŸŸ   ¡¡¡¢¢¢£££¤¤¤¥¥¥¦¦¦§§§¨¨¨©©©ªªª«««¬¬¬­­­®®®¯¯¯°°°±±±²²²³³³´´´µµµ¶¶¶···¸¸¸¹¹¹ººº»»»¼¼¼½½½¾¾¾¿¿¿ÀÀÀÁÁÁÂÂÂÃÃÃÄÄÄÅÅÅÆÆÆÇÇÇÈÈÈÉÉÉÊÊÊËËËÌÌÌÍÍÍÎÎÎÏÏÏÐÐÐÑÑÑÒÒÒÓÓÓÔÔÔÕÕÕÖÖÖ×××ØØØÙÙÙÚÚÚÛÛÛÜÜÜÝÝÝÞÞÞßßßàààáááâââãããäääåååæææçççèèèéééêêêëëëìììíííîîîïïïðððñññòòòóóóôôôõõõööö÷÷÷øøøùùùúúúûûûüüüýýýþþþÿÿÿ!ùþ, sý l%%E)¥*T„ s(Ò°”7k½ ˆá¯TC%÷4ž›ÓCBB"x·¦a Ô:wAC0h¹'E Ë›'KõjØjèFæ¼3xŽPIP:÷Ž’MŽOÆ QaG%!BI(0 ;PK ìDŒ<ÒœxF\ehtml/images/callouts/8.pngë ðsçå’âb``àõôp Ò< Ì$Šå˜­S’·» ê^e# ¯ÞÓÅ1¤â–lßBÑÃ<¬ü\RÓ¤ØØÚ¤¤ØÊZ­¹ ¸§)1aÁuS“¥\/íïîÖùzgúŽðè ]nìjeùº3:anÈ ã üSÒ&|lœ*^ðõ¹˜ÿûéû;’·¼)c|ÐpÚýz[§Øuíøÿj3¯vèZËcOÞÿaX<ßr—[Ò[> SœK\#J‚óÓJÊ‹R4”5=sÓS}Ó3“³LôŒô,,-õ ,ô ’‹2‹K*r+‹K2“õR‹õRJ òóJô’ós'îRÜ4N l\fz^bI)Ðÿ˜ÝÜ]_f»$¿†ƒÉÑÅ÷›«›;R6÷.¬ÚvŽF»ÝŽî$­êåH0ÆFȧoË÷E^>½×À“$ù,Z~ƒÔ þoûùb|?Ûúžî”Í4øpÐpÒR?âö‰]¾hWÓ@Ê€¬l¾\µ¼Ííî¼ÚOF‘¿`8 Mû\ØiPù±¨vé6oò‡ÂžØrŽWô0Ïž–uµ)iiwäµõÀŸ6ëy†îum-¶2Éò:+l?‡R=Ùô˜ù]pMÇ@Ï=ªFh^:û–}óûðœ8›“õ¼]õµyQ¤Ç_ü8÷ Ã… …¦1Y4¦\¨Ešc"I¥Æ5P&c>>???@@@AAABBBCCCDDDEEEFFFGGGHHHIIIJJJKKKLLLMMMNNNOOOPPPQQQRRRSSSTTTUUUVVVWWWXXXYYYZZZ[[[\\\]]]^^^___```aaabbbcccdddeeefffggghhhiiijjjkkklllmmmnnnooopppqqqrrrssstttuuuvvvwwwxxxyyyzzz{{{|||}}}~~~€€€‚‚‚ƒƒƒ„„„………†††‡‡‡ˆˆˆ‰‰‰ŠŠŠ‹‹‹ŒŒŒŽŽŽ‘‘‘’’’“““”””•••–––———˜˜˜™™™ššš›››œœœžžžŸŸŸ   ¡¡¡¢¢¢£££¤¤¤¥¥¥¦¦¦§§§¨¨¨©©©ªªª«««¬¬¬­­­®®®¯¯¯°°°±±±²²²³³³´´´µµµ¶¶¶···¸¸¸¹¹¹ººº»»»¼¼¼½½½¾¾¾¿¿¿ÀÀÀÁÁÁÂÂÂÃÃÃÄÄÄÅÅÅÆÆÆÇÇÇÈÈÈÉÉÉÊÊÊËËËÌÌÌÍÍÍÎÎÎÏÏÏÐÐÐÑÑÑÒÒÒÓÓÓÔÔÔÕÕÕÖÖÖ×××ØØØÙÙÙÚÚÚÛÛÛÜÜÜÝÝÝÞÞÞßßßàààáááâââãããäääåååæææçççèèèéééêêêëëëìììíííîîîïïïðððñññòòòóóóôôôõõõööö÷÷÷øøøùùùúúúûûûüüüýýýþþþÿÿÿ!ùþ, xý l%%E)­* s(TA+kçJEôתáo0ÜÓÒE¥:°¦@ ÷€Ù«aȆz½;w®–M†6 °F©aŒ–Bî…Pò/GCFþœhõïÝš†)ưÙ@ o ýQŠA ¨;PK ìDŒ<Üç[ehtml/images/callouts/9.pngë ðsçå’âb``àõôp Ò< Ì$Šå˜­S’·» ê^e# ¯ÞÓÅ1¤â–hŸ¢X‹«»[XÒÄ^:›„v†Gt>á:ǹsRvH’¶¶òæ•'«'Ûëÿœysz¥~VÛK6Å·d…‚²vÏÂt\{rÂäß\e…ç(W:°µ,ßþMúÁv‰³½[V¼ITïJúÆ­®åÚß^zí¶ˆGHýgöž‹¤›—~‹â\âQœŸVRžX”Êà ¡¬é™›˜žê›˜ž™œ­`¢g¤g¡`i©o`¡o`¨\”Y\Ré[Y\’™¬—Z¬—RZŸW¢—œŸ;q—â qZ`ã2ÓóKJ曘§š¦š¤˜X¤šX&Y$¦¥™˜›]14Qêâé ZË`hTah¤m mÐ’»»~ž®~.뜚PK ìDŒ<0š0y2html/images/callouts/9.svgmSýkÛ0ý9ù+Të¢/ËMZÖ.ë ëVX)”1Jꨎ©gÛ‰Óþõ;ÉÉ £&è^îôîÝ“åéÙîOI¶¶i‹ºšQœ[eõ²¨òÝtO,¦g§ãécäÒV¶Ytu“’OËúÑ’«²Ü´O!ƒÈÏ»K2ß­ë¦#7å&gWŸ¼4Rb€sr¾)Ê% …ÖñGBsŸ\ÜÞßÌI»Íɯñhz4ÿ~{u{OªöÁ¥èªëÖédÒ÷=ô ê&ŸHÎùkôôíö]YTÏïD’$_EÊouÿ³_,gôÛâÅ6‚<ªÑà 'ûDê[ i±ÐËn5£JQ²²E¾ê¼-l^ïf”N”ÂHÛ½”vFkT~*ë>ÝmñXÚ[-0°ÇEöœ7õ¦Z¦•íÉ?ê Ÿ¶ëE†ìuc[Ûl-Z™fE“•öÐ_JýlÓcîde8€0"z9 Æ:ArîŽ/?ߟŸwÌ£ézÑ­{ŸŠ²L¿øeðä®…‚$TH±åÀe”qRT$qå‰[# 21ÎÜÃRÇlØ‹82,„P‡¨<*¶ #¿š CìÙJk&A+‡MÌD±G˜Çgxå$n‰c=@R˜Œ3 1ª …„ D(è ÓË VDAZbÎI† ˆ°¹ÑÂeD"‘âú?NW9NKÍœ?”ΉúëpB¯äÚ½™âPyÁÁ6ßÄ!‰’=Æ– •Ñ…DXqF B ¶÷8C)î #Gb„ë=F¾q¨Æ^Tr !pîGÞ ôêîÆh:ÁÛ±_ð 8ÿPK ìDŒ<Îbäúêçhtml/images/caution.gifs÷t³°L”``øªË  ŠŠ †† NN QQ ÉÉ ÙÙ ÅÅ ÕÕ -- == S¦0̙ðt)ÃÖ­ {÷‹§L¢ê9sª·nZº4yëÖäsç®]c¸wÏòùs†÷ï¾"‰ÿÿž?7|þÜòûwÃ{÷œzzzæÌ™2gΜ¥KhéÖ­[Ï;÷üùó÷ïßïšK:PüÉÂÈÀ Ç â€üÄÀöÏaúé§E;côpQI[1·NZР‹!8k‚βi¨‚ÝªŠ•v3B‚Œ±zÓ³U%+mäøÙ®"©¼žµéc……ìù㓲à‚ëDStà`ïcOa\¼êòäc…ã‘ÇŒ‘~PGèpž| üXc°숰I3©°écpÊÙÈñ¬ Nî=âMphQóúÿ©^-Ú¨¢Ò•l‹Êg¯Ü¥y,(×ÇpDõ§;GîŒÑ9<×øDùgl¹)Œë3ˆÇpñHpŰÏV·njÆdдél 4 ®zE:ÈO¸Pa³èÔ)°à {·Më?¾øa…Íl¨ ØgQ= G8MžŠ®kEž=þØâuEP/œ;•1WM-ZVO݆ *k%X ¬Q€ÁPK ìDŒ<‚Pœ¢˜âhtml/images/caution.pngë ðsçå’âb``àõôp Ò ÌÁ $¯¯<{Š™!À'ÄÈåà```PTd04dprbˆŠbHNfÈÎf(.f¨®fhi¢âž†ž Ù3e Ô)ÅS¦TÏ™Ã0gNñœ9@Æ”9sæ,]ʰtiòÒ¥@ÆÒ­[¶nÚº5yëÖ­{÷2ìÝ›|îùsç®]c¸v H^»wáÞ=Ã{÷,ïÝszþœáùsÃçÏ-Ÿ?þþ=Ãû÷ï¿gøþ]àûw‰ïß ¿ÿþÿ?ÃÿÿÿÿKü£€ª ~ù“``Lòvwaè`•õr>zº8†TÜ*t»¯É§MúãuI"gÖòLÞép;!©â?ûæb'×·¡Ë㟿÷gÏØÏb#î‹d‚Àeõ†‡†¿——ðõÝyÂù•‘-|Ú‰¹R%VªÅ¥Õ6—ëðxõòÄúiœ7þM>ñ§iú¦ ¦– ž•°j8ÇëÆjÍžð|•ûc/õSŒ²Íæ† ³ßòEym:&£ýþyÒ&#§‰‹,¶˜?{ _ ÿr•ëå]/ƒ¼¯ro)Ó<—4ã`Áú’%÷kœÜ$ÙwôÝKþùaI2"‹BfUmwy¾€oãö²ÇçßÚN) Øõoúò¥)Ò¥_§Ïo,믪f÷{c==QK èyç׈’àü´’òÄ¢T eMÏÜÄôTßÄôÌäl=#= KK} }C…ä¢Ìâ’J‡ÜÊâ’Ìd½Ôb½”Ò‚ü¼½äü܉»wÓ—™ž—XR 4/ÙÜÀØÂÜÂØ 1Ñ$59Å4Ñ$ÑØ(ÑÂÔÈÈÂ8É8ÅìG€è6 .>® µ F&F&ÚÚEÑœ†@OW?—uN MPK ìDŒÙ®»iÐ^C*Òš&Ô¥^“âÈI_à×ïì$ :FŸåçîž{îtÓãí]‰ÖÚ6…©R,ÇHW™YÕ2ÅEchc*ðñÑþô€Rtª+mç­± z·0?5:+ËUÓzÅŒôíêlkc[tQ®–ô¬BˆR—þñë‡Ëë‹Ô¬—èûþÞôàäËåÙå5jZŽð¯¢,“7Ÿüw„æV'•©ô!>z*^ ¥›bÑæIÈB!‚+‹Jgó:±fU-ž‚¿MQõè{€p_û5þ$ÙKòr_‘®º8jW¥xÐÖfeQ?G܃€»¢Õ¶,àJÔ.ñøQõPöÌÛyÝ)VQÝb”ëb™·Ãk]èÍ{³M1G©~Œ`’¦žg:ŵնkíÁªIqÞ¶u2m6¶‘ÌØå(}#(ãå,Q±Hñl~¯íÍ–ó€ßH ÚîKàz Í{ÑæìÞ´ž·ù/ÌAö¹lBä˜ÉY³&1Så,¤‚‚߀Á:²0OIxpÏBxC~—F„·>†H&3¹88w9aÄÀçé\hŸâªL2_›8ëI(<àÑ‹-ˆ¾…@:z1‹PN<ù¬Çþ—ÊŸ§²x&¸ë#d"&l\R¡h Ø_‚nŠÿ"ˆ%R¹!z°tùNÆ;ÜO4"ê1÷rÒ{2î‡8¢Üót¸éAs²·¢1H•,ðân`rG^owõ¶[—Ìšºß–»¹½m^Ú˜å°*QÑg~Ås­UÔÕòäS·“GûPK ìDŒu>â󱑰ñ—Ùñ^[¶F¤ý°t¢oH?/±ª‰šºT/]K™¬1‹ßÒ½Ñôàcw‘»ÏÒœÿmÅ'Í|iŒõ°DµŸ{ u >h ìä­Æ | gå@ëŸ Aðwm$ ˆy!ÇÇÌNë¬ ,Í–ø\M¶³:p¤½vnZD=Á+-N÷‹Aù']!˜Eu#O5Y•R£fu ƒí>ŒÉñ×½âZ’…ø``]${*‰êj¬ç¯ëráéB°€©ÇÎP >çÐ]YÞŒ-áظWbÙoó¢sze=ÅD¡”vZVõPú¿Qõ^jýTrñ3z¿Ì¥‰jMSÓĄůÑóÇÄ`Ÿ.ƒ˜,/©)Ô Ãì®fªkŽ´÷‹Á¦èyèÐg•­ëÂÓý嵡îGŠïÀa0 ¼… L…wS’â÷8†\j©(ö¸büÍQLÚCîíÆcC©‚‰ÏlyƒyùúmNUÝ‹gSªGÅ`õÔDñáÿ¶ßE’Ë…9A˜–©öÙÿyGq:ù¥øÚ® 0žñ€XVúˆ ôN»@|H4~¬‹—þ-¨9n/µ ;y —C¸´y@ÆŒÄG mËó?ÎÆúÚ°JÉ8n½ˆzöëÌ5H¡L8ØXŒÏ•›¤Ž[ï‚ß&ãe/‰Á:߆úAžÄ =£Åôßk)¾7ÙÖ*œ·Dmž¾Ì®l½$ +þ0|—÷ ìpq'ÞÒC‰Š3*dAEÛ$±©Hž-‘µ× ×YTS1ÅI2Ó/?F~ùy‡ÊÂüü%Ñm¾G ŒðDG¿)4àä=m8’Tñ½4 íë6]ôÈ‚ŽR|kBc5ݰ–…)¥³©­åâC$`øxÒ]hfÛ®âç3GûnjJ§ Å?~G••±!ó 4ïƒmÀ¶¼„ꢰžÓ_<üŒÊóÖM±ãVfEÆÆæ‹»¨ðr…݇jíKGZ8Þ©,MMMÌòxåš0ÛiO‘òZ'KGGG ³¦q:eòu£ÐWxí£ %î9’ä£ ö$Ѹ$+ÒÙoég%UîyŠÄŒ ýÕ Ò²ÀâqNÓ#w*ªR“Öè›g2bÉâksHß~A+¢y+ìú„ô2×7ˆâ÷Õ$…  ¥—eqØ‚+cyg¡õ¦mFÇ€Yï8Ns*‚ã~íúÞX7H_Û5ÍËõðÍiøâ‡[ïñ˜Õ<“s:#eåÔÀâ-»ÌqÉ~žÌhŽ÷,ÿJ†PüÄêÂç«m4)Ü•ð&LÀ@Qõd¥K\×Ä•EW¡±Žóô2×§Ò7>foäž!↮ ò¬‚hòßÅØÿrQ9Ê*4Ž›}IU†öÎn²Öºtœ`âk‡‡ôÁÜÒæUr1C¡}z›°ø¼m„$>ÿ«_o˜±mUÜ÷‡±‘ö¤ # ±hÐ×7H€x¶âïìï}Î}Èòém‰È^¤ïJ£Qïq4,"︀¿òÕçs¹DdGl´«{³ãAiiΛÐßÊÆ›¾£¹©ý†ÛL\òGìo ^,Xgˆº;:μ>jE.£±Bn=¶·¿lÔMÓ±¹­î#«ŸCùÌ î×—_Ðþ<»FS 1Ÿ ¡ªvi¼‰·TÕ«êMž;ˆ6±6…2nGE¬µý–â¹4žpiÛ Á÷.n=œ¸ãHzÌeP¤:¶q1¿…)¡ZüÖ¥„ú+¤Àò/UB¦uá—<¬+t1S×AÔ?òƒÑ1`Ÿ¼|âmIü ñç]óM Õ9ûäß¼ùoÍ]¹º¢žƒ(: Õòñ.<Þ´Ÿz!ñÌ-‰Ž™Ÿ+Ûðä&}‚kÑ}ðsZy­¥*ä  Ÿ‚uL¨¾Âb£c¬*f~óL‡×! qÕé'!ÈXu(O‹©H¹•Qq.~ûÅâMwÌò8Pm´&Žõ«,1‚*®kÎ ‘½v ãºâíZ¢íº)¡îÜ/‚IÏƒè¹ X¨ò “ëMt¬3}†hPŽ!Á¤ —é$ $"ãp9áî:æÏ†Y•Ϣ⊩ÙxâP™b™÷Òb³7K=Õ6-Ïwn Í(!ÖÒgæ¬ ä‚ÈzÜ^ü= ƒX+‡šÔ1 nEÎÂÙtUÌrDÃ=ü^5òÛõ˳–¯µûfÁfážÓ®L3;*ka!Fs‡æ†5žüWcéaï°–3žDÏËiu›NZtVß»I¦ó+)FÇf =ò8mU‰&GŠŸÕ¾£2"mr”¸˜åÐÔ^‰FÎJ“ï´[MjÒf]ljŸ0­Œb”²*]ø›uóö_ˆ[_ 7w¾9•/‰'ŠH{?«mŠF3¸˜PÁCVÂî9>®9Ñ÷K’ÆÆ`'\ý®ø ÷‚˜íþ ÀCÊf¹Vs&VÅk{ä¯jÖÏÑ6ýå9qCü•ó}I³›grd¢~éÌ% …âá ÏB¼à{dZ@„N.7©úWí¿48¡ß—)‡[G@ŽV¤¡œ}Ê‹i, ¼ã5P›â(Ü|¤ƒßN4 ¹ƒPBU€í£±ªÜ²øChlÝ_£š‹GJš"GêÄV¼&¯•=RQá ŒÄ¿,A_ “Jx"?ö-ÆõYðí³2'wsáC¤!U¸rØô_šÕFi¾Ë­Ê‹ ²m‘>—ÆÜ<¶…Ý» ò¾ÉÖÖÄSETVrJX~õÚarÐ…L¡¹—ä¿/õáÀøZ6$]mÓÛÐÌ=.¦yÕD²8䫸—\žG¿Xö ÑûUb3…‘$câdÔ¤>³©M€6ÐÔfN8£ÒÕ_ûb ùúM‹Qym,ÛÍÍ—”™ûŇmµÍ¸éú…¾†ºÀ•ß1Yp7mÔ);‰w4ÅM‡s’·B]Ó³(…$Wþ&†Åv¢/úwÜHZÛú'¬vóŸ ¹-œûÒ:å-OD¸:Õõ- ‹?@¼4ýMÀS*7Þ1õÈ)ÄŸçÔÐf¦ pvóq•ñžx¸Ó.hÏH‰¹d_×)²³¥«òQ׌ï„ÐMy!–òãEÚ‘Áj…º?§Ð;Ññ& T…K!ÒЪ´KÄu–£¥¿»®öDˆ»<ü÷2e\Ë$¹’è‘~öôøæÜÓD_”ƒ¿UÁ_¯d~ÑïmÔ¹Õ‘‘rÉ5ÇÑ1›ÙP›ó ýU:44TÁ\z>!ä?ØÆž‰!¬ˆ.϶?æò¼! šM4>øôJU d³Ã<Yï 5 隥ƒtôbÔÀˆgš©­ëô¡¶ä£¢ƒ›ÆÅ!» \(Ý>R)[I¿8õmÆÛüí ¤ÂÂBŸIÁÓ2m ÇXÕe÷æQN’NÝŒ‘éü¹°Š/é]ë­Ääúˆ»N†¡£#º|øÂHÂò«ø3‡£Ì‹’’hgý EM|¼˜+È&熭5Ø»‚ãÓnÎhS8M’V»]rŠí{¢¡cZ¢ãº=X¯³bƒRÃÂ}S5žú`ý‡¼ŸYöP_JÐKåcçk»<<<¦ô÷Ç0üö­Ð²Ê>@O þâBš‰ë®¯.qgãÆ¤¸<&êÚó"À¾ÑøÝrnÌmÕ ½XëE±êþ?nˆKû€@É8À¿¤¾D8â›~×åZ©GpIðíÚÑ+NC¡9>æ.›¸8‰JðzéQi•À2è°å<Ð%ókHçJÓfÚJk 8Ÿ?¯ÉüBújf:S 'þâjN²>‡Že¤ÚJ¼år¹1ÙÉ6Bȸn °Ò¡ëÃÔ–ñW‘6msò@Ðåá)òå`{K’ôHe¶ a²òï¼¶LëZ­Ž™ØiÈéiÂØ.Þë•Ç÷¥‘\4¶ß¶¿*gÎ]ˆì¥§ÈXóœ³íQÞu”^Ÿ(wÙ¿ç¯-E{¸à+) Ù|±à‹¶Øè}ävû ÏþŽñ4ªyî‚– û1v¤ç¢z^Ûd¶§UîÅ`ýíã„u ¨™ïWk–´:óˆDrÝ ¿L-·Ò’J¸7iJ Ø’+é¥P»SãzL\Êkk7[Á8öÍÌÑÇJ¤Fíþ¥¥$®ãTéëÅÑ3³“ã‰G}š“·ìãû¾Ó©<ÇÑÔ/l_›wt &åÌÚ,fgùqrTzEçÝ®›ØþKÚË ´~"&v1Ch-×É]jžó¥¢Vx<‰¦³4¸sâ^í¹ UejË0Ïh.‚ï3‰Õh’–z T`d̸Wáþ~ÊŽÜ×üèD{”±µƒüñs]^Vš¡~ånkÙ¯fš×Y•WW5*fP³[ ™Ú©%:¹÷’3ÍpñW’¿S~™1MYcpiúåÅ‘|ñmˆá}‰òðôÌÍß}¸õ‡’‰¿8¶†ì¹gÃz?)»Ûéº÷»:{ù«%Tìêã6zèìí;;ÿ!yÁ¦7«©l¤.»©Œ-1Xú<ïÀ«=# ?^ .cvÓ½^ ²×OLtqé9yyC e¥¸ü€-õƒ=‡æ.3–)žÏÝŠÏ3øóÏÔ‹Ï/¡^2ò¤¡î‘è{Õb:ßÚ´o¥A—ÙÌŸ¿£þ4ôÛíÚÁFá†G…ëcÖ“6ë¸Ñ|Aƒ¼”ÇwF}#çf¶­´ôÐ+&É­Ö¡ßt\âêiУ¼?ÿ tÃJ|ÜMQHþkµ71¤·ÍË|œÑ»XÓ ÖU±’ŽBª¥¯¼]Ú5¢RqV½ª"“É\zý£É}ÈÕß™>µ¶¤¬ô4MÿuñpwìöüKãƒfv_ ­¿]©Q}L|Ú­ÑûJí¼å‘æ_’”šs ­“‰õÏM¼“ä3¾tûöÓ >xò £ÁÇU¼½êòàyË⥓~ªùe=R:s”bÃk¦3 ¹ÁCNöy£aŽºy¹ôñïîí®5´«w?Tœ‹ûõ°/õ“eœïínûÝsŠÏ}¼»Š‹#jCÝ ¹7»ßÔ Ì[<ÉŠ3ïOý”±°ä%uyûßÃçOì:ü4 ¯ k±€jƒÙ»¬iàÖC¡"!ŽŽY˜ÏT_õpgÊÈ}ëU‚ÂË£gNt.þÀ½£Ñà™‚ì}hY\iéõa1|aŒ3ªjó1DrÒິÇd¡Â ?}r0Y[-\­zïR‹}“V„,"Ewé’™Ÿÿcãø”lqMý‘!Ü2…Сœ3fg¢…àõ'ä€KMðœGe0g!ÁˆCnògn^”e¶ÁE·}ßT;‰ZïA³’„±“˜?ýRp.Âm;]K4Ø+ôþЗ ³œóýy”ƒzÉÌ“( 0àÝùïð%è‘°¯ÕƒFÆÆAvæið8-w“Ÿù¦]äN_ºdrùÛë¿ä:+Ø¥¥–­Ôà~^_Ëc. ¸S+sž¿ZZ·Mk­þ‘JAA}Á×EÓŠáà¡ÑÁg7íú´ÊááF:kÔØ+-*Âz©ÚÃÒ‘|\]\Z>áÔ~ÀFªDÏ ´%Ä•ö3'ï·ù¸†.î?fg‘Ó2iq]È’w>gr>A¬=í‹ë‹ö‹üñêl‘‘>=lÏÑJÇ¥ÛÇÝL~XÂÁa êPP™ý!›…%¹´™HšÙ9~„[×8[õ÷H"™”“EÑ+c€ãbz¹«KKzéŒuûi/)“˜¶ê±»=Ïš*2Ýrtxµƒ(7@äÌ슸ÿªÖY¨ô#’œ2þrÎ9Ì}ˆ;žvazdªÛ´ìàG–‚P¬UÁÈß6Û½« œ–±ø ÊéP(%ŽSˆ$uîãÈ=¦~î¯Û}tÊšÖåóE,fl²­¦´T7k¥ë×gÁ§™?¼EêOw§¥j™n,gúÞê>P7Ÿn=6éŽ3PÂíS»{u‰ã§'ÿVŠ›¦þ†;ætDryÌ?A踑•ÅÙãižU~mÐ:”g5Värp9‰ÇA”®+¬ÆNsö¢º|é]ò¶ÇJK–Ì*K{P”WóŸL%Ø€2 «™”ÿŒ_á9ý…oʰ›öL<]¶ptôq½r×pm?·±B~ìDŠ€Ûûбù¨ê,{›2Ân|—èZö h|c…•WinôN ànÈ,`{Ke¥¥ß=¼®'…_:›Ù­tUzY!"¼öB"Ôƒ´uX˜àK\—µ+?p¹ÏksL64>—£RÔÝB¤7Û¬‘}%që« sÈÃÅYî$;ßJÞ»œ£öžr‘Ü'£‹ëèd¬6omK躙.’øöÉHç-I”jm0Qéað*…F£ wÞµ…š”(­”qP6c5Y˜ŒN=`⟵ö–Ý»TjD÷E‹å›ŒïU6ªQê%ûJÆuÌ×"äTéå¡VÓ@sü)zÊþ_ˆ)A!±+öË=‹a¸ù ž‰ŒÓæUÖöq/ø¯­®pÔÜ"¤¡†h±DÒÂÉe‚‹š>A¿0k.6ü¸¡6ÌÈ‹7kbüý_'€(»Îdº¬•Ó…lûyXçä¶ÛýÚ¼Y‘5ó3¾þ?@¥:÷®r(RnóèB¬\ÄöøÀôÐ!ŨÜÏuî/äÇÙÊhõžšèÈHif=ú ²„ú‹Ë—jjº©.N‹a´¶´h¬êb (¦%«õW"kGž¢J¾ß3ŽvÔ[ØÃx¬SÕí…Ú—i`MËHG……/KáÖç¬SG/|Ê¡Ögà6öº„5MÍXé¼ÿÇC:LW>(ùšŸIÙu‘—A¼Žå”×kR3RÐèõNͪ<ç8rKzS¥&Ë.ãæeŠ}“b“s æÄa‡i©©ã×9†e£¿wü©)P5†ÔŒ›.Ze{&]KÒ~û¬V_ƒ÷Ã×´ 7Û·ÏS»+Øûì§©|o,ñ€¥wZŠûöV¹?Doíêß ~–Ä›®[Ë •ô(ÇÊ»¢8ù™¾;»ß£¸)²KÛŠ³Vû¿†Þ8BÈ1­ÜÛ2ÏŸøK¸¼¶nÐÞ/ÞâÀÂa«Û$t† âàÀ<ü¤jâªiXˆ£¿zT³×¡~»ñEÐPú{gû¤r”pB¯b"\ |Œf‘)^©å`Q&JÚ>‹uÒßm5§Ô""ëø-¥àÏ5Ƭ­_üY™DYB¢Wšé¾©óVNœ;eÊÂúÄÚ¯wž&6þý1*()ýãFÕ‘üµ­‰‡Ðrw.,Ì4"÷ˇÒÕï]òh6|}ÑpÇ¿ÆgÈš÷¾±XgýÁÄýÉ‚bÔš8qË õ¹1ÏWž~ŽbÔýXˆtÿõz »ÎãTH6íØŠ²×5üÔßõvÝf€¶3•fü\ŠÏ’¬bC… ´Ïg7â¢ð·ŠP×T+J¯v¶ó"×zªú?¢¶í3}v±ëv¨O|ì/G/Ù`Òyv¬‡+Y:é¡6|?÷ÍÎ%pBŠÒ/WZ8+±K½MG»¿×¨ñ‡ÐÌÑÉ`ì¯Æ?´ám“1"cpkŸõ.„ÓEŸGã‡v”‡ºæ¨žÆ›zÅfElß©ÕO_¡Lî·i°‰þ–è½úçÐSîùnu Å Š–è;T*A~&à“+i2s'9ˆœE¼›1u q *K¯4Å”s`Ð>€¢Íp¸Á}€ÆŒæf3±®9ÕÆ»ÊCí$ ýþ¥úÏÑAPΨæG<ñò’‘¤~&·¤þõݵÉt'hî'ã†ßÿ,|z¡¾lPžuïEg› K?Œ»6²¨XøÌàx»Ñ:¥ú׸Þ~KÕ S G§ú 9ÁØ•;¤KVZË‹¡,L—§ôŒ„ Ó‡ª4Kb1å¿ô£2kÅ!„ ü™£pkKUæèÕpX긮¨i3¥Ñ¿Ylèó½HD ¶¯ú@êñùË ââO¨ô¨»7 ˜»aK©õ¾7º6Î\»Ÿá臥ñôêòJÞ£œk¿*{ß{4ݨÑu !ËTeyÁ1ûè™>üú\}ë刖¼.Ô‡Ú¤{öÍ×Z¢Ø‚ ð‚¯FÎʤf€ÇºÕG gîøMçdÙm'‹-`×\ZB'¿>ˆatFÉ7óAñÉÓÈ4`65";|\ ¤ãýr€>Úƒ8)m]ÃŽXâDº r (zI}{;î¹±<V¨§®ù~!Rlž»>?_ÃbóÚªF“S!@~ú‚åp 4ï=R¹gÐo3‡í½ °ÍõÃÚœMº=™VƒÙuuÅ…Á¯IŒ/”P<ûn|óGGÐÞÑXUÔú{ž”xô"Àe„—븯aׄiòxWêö“E?«¤¿ H×½féäÀ­÷?kÔâVíòî’í<Ú%Äê§rš!¡…kƒÅã-ÆÓµ_ØŸœ,V¹gÁthÙHü,Å]]•/oÖï~œ1;eôÇðÅþTÑ“EÕW‰íSè#yIN-±è$,»}%1’ÓT1‚yØÌ¯ylÔÕøzphøAý/ÄÌáz9N4‚0(ý¯ñ ôv­ IñkaYô3;þ‰¤˜À¬ì+ÓñìöàÀ—¥¥ôçYL¬û—ò{‹¦Î¡•›Cˆ.ÿý¾mÝG¯¯n8-“÷˜|4Ôݸ™:ëéˆ ¦ ÝÛk¾ÈÏNGÍì$ ŸÊ-äÏeÇÎ*Pjð%òÍŠ "P¸”òˆ^“þçÞOZó !4lþM·íHód7qÕHúJ˜<Φ*œèFå1±i8W¬åÔ`«X3ßÌnëÒ ¿‘ ;^ÂdáÒ‘w)+/9)WDÞמ9Y”nIŒm+—ˆœÅ¤…+Ïߣ¢†]"û·•ÔÜ…bšßŸr °Þ2h­³7rÅeÎ7o‹â€Ä² Duß^X—¤;Üë© ÖÌ¥pN*¼G­Ø'o´3“ÀÄkræNÍûÅ„É*Õ"¦ßÈŒW³³K»¸>Ÿdð›°>0po-þÐÃrWw „'$ðŠ{ªšc¾Âƒ\pÈ¥sÕ•¡K>,y¹+ólç]Q’œ˜‘ºg@³ˆ{ŒfØeíÇ¡OBìv{•‹E4c‡B1 ϸÔRÝ ‰A{šªhÁº Ðr~×Þ ÓnCÚªÔ–Ó2Ë}ijKá|Ì©HwH¢ù6-Q÷¡Ÿ™îDÛNëçeYôgDZ—– ‡Öuk‰þ§ßçLÌb]mTÉ÷y¹ÀG:jS¹˜Ìьخ`¾FeÃvßï(6_ò5]81Ë„óåZ™Í~òDfÆäìY«ÿÜ–ôO0LúdÑ.ÿz瘓2‚W/,â/¼Ÿ;Bæ)ºÄâ-üœZíRpá6“Ø}s9ß¶v;w%Êt¦ÒaéF%h^}—Ã!É+±|†³W¹­SCƒK,7yó2,(Ú——W×dOùû>áïwº¡¹÷d‘*·~U;G'€?äê3rñIê ßp(£8ÄÎ6aèlÓ¼)ÕZ3‘À²eˆ¶kUÅ€·á‰ â1|‹úˬQ­+¹~NfO~x÷Ãù—N/ïÄ]IhéŸW÷¶|Z£–ª-ò7©¡ÁoôÃøl•†EÈEŒŸò­-ª¯–›ß6 ‚^1Ñô¼!örKs6rÛhaj›4ÀÞ¤UáÖdVµRf~í‰ ƒ²÷0O8;‹?è¦øë¿ñ˜ÄM7^ûÚr­<ôI§î5‹6ók*ÅÀø÷Ä[pÊ©3“ë26¦þîC ­k=˜¶påv-­s‚§#•]&=*@¦õJ³zß9Ê—¸¾ò¤é¨Ø ýäLÏÊ¡x/Ý‹DZ&Ák醳™Üõò( °Ñh 5’À? ©àè?¹D㣢íóÏ;†¾P÷®Ÿ¨xß_):_·]q â:eòÆ Ë{܇@ñœÔtoÓ6yÏ#@èì×ôkÊÜmŒ5Îiˆf¹Æ:§òéR\öUfövf~ÀÙ¼ 5™ï!Þ——ÖjSÀœ÷<\üb°^3©0±QÛ@IÏŸ= *5¹ºÛf*#b›¾\Í~ÚVÓÛNÂÌîW_Í3Nú9&rß~Fo/7Nsc•­/Äúø|òþ~ `빸Ï9LçX¾.FXltôse[X¤\g]`¢×e·ÐÎV…ö½ »j¬˜d+Éît¥.ÍÄDÊ«üúþƈ/ž l†Ù³`ÁsúIy%w—¿Ü4,êTÁô0ö³é_‘š€Ã—RSejFêÖV§b!bD˜ZÁ9ο{¡,§òß™¿u:º ½]®Ü3ã%U1ÄVú㥸ØÖWÁá2œl'W>ýUlst)ÚhF;kªÁÕé-s9ÿ!OýUJãÂ;À<—æD^‰ŠiÕ¶Q¸Q`4šè ‚™+cM*Âч½)b£·ÕGع”&ÁË*€7÷ļÁâMâ|º Zßó lÉ­Vþò—Ùÿñô7´¦­Þø=K~&|9a6Yï×áð¶¿Ý N*y®-|ÑtÛP´})º ¦„f‡ ße”ÒW¸KïDå¿¿Í÷7ôlÌ)÷ Þ|»Â7ÄNHÙÿÓý¥Dd±çV˳E“ 33ì_ õݦ—T@ªbñ¾N¡…Éëi†Î®û–Ôüǹ‡Z…Üö*˜Cc™bð&ÆŸB²ƒ\÷Åñ/§—ãö€rIc¬D¬]lÊ}ñÓóò|#Õ0Y·k‘uÁfN;]ÏßÖ¿ñ^ÉèbÊ™/¥v®Ò½€]ćXŸ¢ŠßÔ ó|®r‡Çõº3±EoàÖö×¶/馨Š<|]?š€ŒÜ¶@댭M]!yWSž~pt|ªC<4-ÊAQ’Ϻæts¾T°ñPr7 1 ñW%5X2ÈNúÞèªgÊÌ™ºkRBK[ºÿìƒìÚ»Z’âšÄòMÓÅh%7‹ªçžu÷ŸK(¡²¢e/»ž ¡êî÷“ˆ›ª½"xÄ)HãÐÛÝúl&³îÀSŽÙ8L‹Yj~p²ç“nX¼Î%öì烕ÎÂä»A¢[AóÙ‰'eÛ¿*|ô×:{‹hs»ù%hE¸‚°_¸ï6ÒÁÅ€„ ì¼n-,ùŽôé^Ȩ†H˜o#ä0eíý`‰SJñ˜ÆÒÃØcGqBñçcCÔTÞ ˜ àÞ/DNÓÏT,jÛû{÷_gHÎMFÖD/{.d®Zý÷ÎHÜ…Y{#Ü—£lj¾1Eû,eJˆ?»ü|_ÿ†¥oæ[>Eã§6®ÌV¢T³™ «œÚA”?:oµþ¶\Ù·6”ƒÆç‡Ðà½qr°x‹^=å¦âü{ÕŸM[Em|u¸rLÆò-3–ƲYϪ œT*¦ÁNi3ó7ßd&x¥Ýt¹2ɰnãÆm|Ýøövz{šïë}/‰ý\Bk½Š?³þÒ éæÖø¸ÕÃF )HŸ&sVbñ%X¿I$Ö‹ù´QE¸¼v5䃱Î/ßê×1®–ª ÂH’À—“é9»)Tƒ”ǘå¿of@•ÕjP‚=þ&Ñž7V°à09¥c:Öãù é²ºòJ¯?ä¡ü¤Ì B vý_ Ê´-¤¦ð_P>½Ë³­†îîÄ7a`îC›oNëÒɨc6ÎŽÙ¿¦ž×,÷iÕÍ(3>,Df»•Öñ³m{PnÐ[üaþ^°rðE¦ç­v-^ŒqÊxô–î©®>®—Ô½GZY>¿šËæPz^ÆÉ€2¾ 3Lg³ÙF9['ìr‰^OØ(q "mõß-º%šá©ãŸøkÑ2}-'°”-·²Q¾c#Qq‚ _èdQ½¹pu_;~Ÿ~CRÙûÜÕ¨ži8ìMÙ3:¸x1’,Þ^5v„êÉÌŠ‰Éfêåø<üДÚÇ¿2x7ýàmWGN,Î~+BéjÊž£a„aÛº©´ë<‘ôoÄíK ºéÍøå‡Ž iëÑJ5Ä€Z$·Y vÁ:Ý­ªÔ©Æ3°ßÑ®(û¹¬Ôrâðñ²ÀjzXßqë1ßüùfè3‘¤ÌA®˜Ó@«ù¼‹³£Ñ£2Ô††™K÷0Ƭ‰qæ€1†"d[}ZÃGêªëGCöIÃöz>|‚÷ž±Y¾àûO95û¤”³:o)úPÜÌ‹Q‚£„‚àñuõØKªòf­ßzLõìÿ¨%JâÄëØW†Ä T߯ÁN/Oã œebÇ ³?juÜȺ¿¥¦ò0Ii׿ˆÁšîñ´D+++ËþBSkÈÞ†z¢Ã%wYª;¨o(nä„hÔnsì&*ø¸Eéð}ÚÄŒÕýˆnþ€P·³üËìo»nîh”&®)™o C)­±ïÑSÞ×i×w*¤¯wcÐÛó$3_î@d>rS/À›)¹7^8/Õ]åë¤~®ÿ#£ÚQUɪ—ïžüЉí¢èJþÔ%\ÉÁ˜¤ðÉEì?¹p «â€ì‘µu* 7#Öl»;^2Çrœ—*;î¬9e~M¡ˆ&½ÒÛɲ–@DéÃÐö©v÷W/k ÑgaŠ8G¦ÐPL6~ý4õ't…änÄ6$wøPØ kÚÕÔ1ƒ)ÃÖ©Õ|ÁOOåî;û•×ì´Z­çj‰Æ0ÂÝë§àAå1$íÅt“=™˜&²Þ¯lï¶ò‚e-a7†žùþ¸—fù´½™*/D©­tA­¼6ÿé~€ƒ¼Ã–9œPHÃÕÔt¤Zº2BÊ;£ñϵ·é¨YÇ­Ÿ#I“ Ìe8PƒKyÿ·ÿÅÌʺ<^_»mTYõsDO™YFEƒ${CÄú äꎢÆΖOsss7ù.áêÒ¯Ž ÃX’v²:9ÞœR:êWÎÜfRIeµpŠÓ·±x ‘†$ò©h-j„ÉÊÁ&kO,Ê[ÿ,È}kt `5†è=3™cnþΔ¹Ž04v²ÒØGcÅOÃã{'¿{J¿â§÷¢¬´4&.pÂê'øÒ†«£c7âºpá‚™ŸTöW']§žEÐEcþ1ñ rö©U #Mz½SÅDÖ†UØê^+:0¶ÃÐXqÉÖ³è#B=·}ÇGôR4 /h†wœ•"ì8tŸgÁ©Ë6¥¦ÐЮ&ÿÒ`)»ÑÂò€»ìζ 8Yê1+úo¤!}ƒ¬Ö02m묉3ÂÎüѼê*üöÈ“û­‰,žqã§PT]^‡XnzINˆÝøï88¯uT¯ö ‹G ZX?è´³^ÐWO]½ÇûI†žRHâÒkëÔ(Ÿ$)y%¬£§6r€Ùáès†¢¦I™¯/?¯7(Ô' ;  Ï¼ªÊ,¦;ÃP³§SáK݇jjÔhX˜ ›J.Žžô„ïƒå¬´äÖoa\NB ꦬ(&ôAŸ0¦x–°"É%‹R¶ÀD3J¨nß_„hÐ…ÓàO ¯'±i°Eª¼+çÿª|Ü®õ&¶faŒ‹™1=7ùçò“÷ã/fÂûë,Y{Ë·âº)íZRÞç¯Ì6jttòéC¡åY–¯`™¼ _?a³Ɗä$»ÂÕU43»Óx»QãÞ­Úk0ÙEʃ)Þ¹*GG=æ¥gHŠvÍn5§",àÂbeÓ§<'•âËÏDé,4¾=€"ÕMË7Ójz@ý80ðSX½~ÇOŸ?eÑg­æÖèÁB®Â6ÕIc€e(îŠÛw÷Ñ^D­lÔâ–”MWÚHIæØw¹‰eÀ´a'´ÏvŽP¬‰Þá(æ…Oš ¸õ¸nŸ7»°~±‹Ú™˜fò¨Dd-r›BÉdس,ãŸMÌÍé)õ¹y&•Ã,_³+±¾„E: %yw1 >ŽŽ¸±Ôùy%ª?M_¶|D‡Ýøt®hצ}NÖûÞ£?£®8%ñ¯ï`Áµáñêf ©_Éd6Ôž˜yTRÁnäÙ¼X÷&æphàB"ýˆàÜÊûÎçâ¬7ÓÞQa'ö +Li¬ ‡à„Þ…á€Iš*¼è:Åçí$úE¸ôíZÖ´½ú‘n¥›t~R=”0óOË'b¿¢lÂ+=ÉÕ½•„–˜V0ã ?l(4]<2+•Efº6³ž°#ñ%ñýôé£~îV…†ŸMHŠgè‘ 5˜\~ÊïÌAsRQo«'ŸFJhÑ]<åy$+nc…ñÓ¨Q4ƒ·T-¯­=ñaþ̧9Ø\ª…¯ëbáÆj"RaÚª"Ô5G UέARvBˆc ‘$[ϱ?…â­ÏDæäõäJËIì¾ëQ!sÛ.mÕ„+§¼Q‡Aì f\OÛ¡¤sŽ›±åä¨h2-ÛFJ \L¶èœ}’‚ŒKß—pÓ«:S¤=HN=•òH¨æ^Ok˜‹êfYÅ3¶<ùè©áFȽ°g,üÎ;˜´ÛÖYöô¨–,X•G‘v… ‡`ß#µgÂCm1B°ísú•º¡wÒ`ä›Ã˜ËØÒ ©Ü2öÆj¹« +)üÇJÞI¶Ú›Å¦\ªÒñÛóåè ~žTèÔëÔƒ¥Þ…è7Џžº[¡¢4Ø\è}Üçénþ’99MUÇÇâ· Sí-ýå¿_C{ØÀ".iÏR>?6èÏmýBƒCŸîHÁtĸ6É–Ü6¸]) ;¸‹•ʉ1Cí%ç¶6}cÿ; Þ=¿§¦XN1£‰x^néu†í¾'\yP Œ.pÚë63¿ºb+*Gpo‰ŸØoM ¿ø•X@œ­‚ý“ „~1ÙÔ4¬+;kŽGåò=®½AÍŸzù‡,Ƚì6 §ŒÁª¸¾ùæuÚ«‚FàÄNôË:VG­àö]8 í;ÚÈ~›Ûó—„JÅ €ÚZ×Õ:'í4Ÿ%¾_ 8ʶ(—ïèß+¹V'Áúˆè}˜e•4þrõÑùf+X[izŸÓ°ù`º÷hÌÄUÞüYD×6Ø3yVRÌe´y¤TNá p/Ö&¸ŸP=K(² òÏQP†Œ8Ä‚³éŒü5¸µˆH`Ò×ì­ñæïÖðÈLÞë¼Ê‰ÛRÞ/©˜ŽÆðKÞ¼×"ô¨ÅPÁ¶Øý„òZFzv¨寮œÜÒ†ã5`|ã§ã÷•X,ð,sy læ0PUU"réþã¬Ã÷n‰ Àªê-*µlh¬Ý_ôSÆçÕ½Õ0‚m×X“LT?†Žé¦PŒ%:ÀÚ ÀÐÐm¾ì½kŽ«ÿðg1˜>0¿Gæ¨,9Ú³>齜÷Ø 4Ò«›bMÛúKh QÍ*6 öegz -Ñ8¢¨pÏ¡öÅzÒýcüÔâ}W§%·ÿÆÒ¡ÿÆá>ô‡^DQéáº$¶]àHo[K÷Ê!ŃGe`â2h„ü(ô®U-ùam]éáØ`_^‚ÅÇ­÷”R±ÎŽo½Æ`×yTŠ ^R w%¿Ÿ×+?¾Ò(õò0ÜìŠÑ‡”kÅç݇.$ *Ij¾ê>„[ŽuþT,‚¸bñþ£©€õ²0°ÀÊ![kUŸòÉ¢k€‡`åЃ²%åPAèA‰ÕBŒBÕÌÎê1‘O½¤¶x$öÕœóýйl'A~A Ihüj)ì.af'1*µÙynSÁ´·½ØüZ ¬ì-[9aO,,,T…(‘„þ2ãüSêæS:X:2²ÙLƒ>Ù²¥ªd“ýÏŠ"o@1“x¼ÃÅ_ÏSRÀ5]µ#%«ÓlscÌòº‰Žõž:*=Êu€cÏèt†±© M",ÁÉ’€TþÝ kÆÌ9ΪQ t×÷Àìÿ½µqϦJ w* öÀW޵ë^Aø<(zH2æ>Y!ÿÕXÁ~¤òë) ÐëD$¥Tì²P„‘R3lÅ~PíA¤U‹ôŠ9oÚ…ËQ¾PM…Ù?ç&{sN™²¹PÁFtÕ|Ò†ã„`‡ÐP½ƒÖ² ŸÀAÐ×ññô³ÜXž……FÒ«•æP3Ç.¯c4eÈ^ÀÎOhÏ‚a54ÃûíÝøW²eam ß @Í\ø-2D^ȶœëÖË ûBcP»¬÷€ƒ´Î*Ãm(¢¿ç–#Ÿ÷ˆÁ~Éç4×õ5òáÖÐÊL6¦€ œqLÈqöP5ۜހÔ6„½ê¨6¾Ó˜š|u‡·•:¹ßÊ`~?]û=xàíïçÕ¿Kl~ÿÛŸ,ñÿ» ý·`è*ƒ ®|\íý`º·þ:×Ìô©‚ž°¸QP6ýiÓEŸ 2K?sp…$‹·øýœCqà÷sŽ;˜{04{›óÿ·Û9€ïGdÀvDd?ÎÉòçn0~øÿ]ö%Ä tþ¨F®>zvCàâîÐÕ±6b> ü9k†<]arñÖÿPK çDŒ<Œ©õH K#html/images/flow-view-packaging.png|ºuTß¶-\;'¸„àî îîîîîNàîAƒ»;'¸h4¸»å‘ß9÷Ý{Þ{ß×Ô¨1zרÝ{­5ל³×9qd„÷ KJ|VóÛýÄÛ‰÷S/ êY~ú¤ ù鉂“½™¥)xd%«{²ÍÝuŸ1 ÜÖ²¦Ð-v™š|ä…7dY°<–.OjP|G=#B ÿA;TJñK];º¦[·àõóÏ;÷®³‡õn½Iþ;Wý;ÏSçŸW:€ž!z öˆ€Ò}®¶#7ÄŽæXÆS´%–.ˆÂ‰nbíÇÐkee¥ù"Eç«âYž‡ÓoÞ=hÞð,r½qõ¶sé»Û h!@ˆÄ# 4Eé piè0Ä:4 `µµÓ¾¾Ã6û”vP€ÍåéÛ=7 €Ñs.ª\: Ð9¸Rtx@9€)EÇxCEØXXŸ@`KH@”%†¶‡([躟H ¶Â,€ñLŸÍ€½(úsA½‰F ÒÙxŒµ_ÆB„&>5°`³0 2fJÙi|…°ÁdÁ¤Á޹dÈÛø¯¾³+‘8½€?MëkWöÆ"€@åJùÑ÷Šhœ:å¨‚ÐæÓq.WJËR­ÈÚ _YG˜ÏÞ3 Äi—?i“jå{ZìDŒñé4É_&~&p“x+œž§`\šcŽb•'WÙÚªœ*á)ªk¨±¶°²ô´(9L:˜ÑæT`¡ÀË^æ°"3•bo·í•\3õœÍ°çýU¼!÷ë5®ç#ìﵪx»X¾>òÎÓ_H7µ'ß›0HÇÈ[”¼Ê_aMQYKÃÅ¢Å/ĵ)fªNý0¢¾’ÀRì|\—ÍÝ”e—,8¡–>ÅÉZâí´·ûc´ tkõsP_çgp‡gÐz8&ª5.!3cwÛvÚoÇ Œ×#¢s[ÊïJ¾›—~Ø,24—4íÚµû}L;þÓZG¡L¥tÅI±ø½¿äVÝ0Voy;_cÖbZõK[—^³ñëžËËyåkØÇf^ǚÌêõV—;±ïpmÔ&ÓÆ³‰ƒÂX?´¦º¨9ÙãÞ¾¶ ®í/ºÕ gã³æš¾U/J/W“«z˜]H¸ „÷¯‡Óh‡GööD(8Ñ_¥¢åbæ;Šºg}ïl;<É\gœ\Ë ylŸùgŸr–ŸQåˆ=ßÒE…í7?#Ÿ`ƒÂó²·¢‡#Xz3a–eÑir±ë kð°³1É5ûæ‡=û¹ÕKÚƒfí»{éÃEüA;H ÔlëÓv4SÝZM… þñ—€³œcçà­SóÕÜ…Ú9áïIl Ìèžt'lÊH܈ÃÈïåÒ¥’‡RéàÊBYÓkSÕ]•¦Òa{Uª2ªwM‡4ªÇ*ó¥‡#!:1J0•æ+ˆm^+v0Ôa8101š².2î™ói“èÉôäUšÕ«Ë{ËÈÜ\ÅÜ7í'p®¶â|ü±^1÷T3nëçÚW‹¨KKR+$øŠèAöátáßûûÅ}¢bo£¨‹;¿] µ a J™È:Id]’¸²œÌæLÐâm°tŸ½4ærG±f Šï è;µ†‡yb?4…g¡zãÜÂÓ b;g¹ù±Sµ¥¹Ñº §÷ Ÿ)¥Ö«™¶í–ýV¡UùI«û– ÝTêôÞ’§uÇXßË·Ø¿5’-†T#.\üwèÆvþ˜ïqÍl~·H±Fç#~ÌÐ%º™£U.—)Ü.®\rö’Ú$8 ¨sxxÀpðÅËäUcÿâ9¶³$GŒŸüVòºòöN Ú#þ~ÆRÈÌ`WuÒ`DaÜúгÃ^,¼úkaÌJôÅWäîJ*Ž.®i.O›1 ³×——eeâo‚Z¾è׎§§Ïù¡º¹ó4Ž\Fü5-=޲“³TSÙ7ão"íçÎBÎŽO_Ç×jC_n¢ß5.ûϽŸ%{¤½2çã;â[Å}b’þ9¤C¿¤uʒ÷þY¡;ŽÓvÀ[dtå’O"¤ã Ò£~Çhùá={duÒ׿¤Ã] í t×? ‹Æ«^t*-.Xí~¢q,ã§››‡ÛzoóÞ:cVëeÅ–gÑUúÆéI" Elµi3†y0в¸yükúG …/z) j —«¡¶i¶j¶‚KMgnN4n?]%WÞ½áØn'‹z7ôjïRøÁçæ¥Æ¹ïl¢*õµ”x'A/<±ƒŸtÕÛJz=À„_æÕb%= µ£¢âÝ™¦¥õã4ñºÛ(q«oë# ]6a.±HJiúû˜åÙ-Ÿlwªã‡«ûõh_Ò§ìú†zGn‰Ÿ+Ý”ÎÇcG£ö.'®Â#ñ}Ñ ÆIÛD+ä­pF°sŒnn®¯ÓóÖg¼Í«S’SˆySuãÝö ¾Ï”[ ‰®ZH³¤n^'·«GYï7þ\œ«2®fœ»Yoqa­ØKÑþi»vÒ8_œ²7Ã{à.I?à­­•®ýq•gµœ§ŽGò.†8B@ÃwiQu9{Qù²ôåbcPyÚÆ·ëÅrRZÏ¥;ËÿƒÀ>_ÒÝãÓ °Å¬ö«;Þ¶þÇ;9cs†Ÿm>;/×V]·W#Œ¡cE´®Ö¬‚þE¬¸@¦=1ˆáäqõxô4¢ç@ ÅcêÈà>h° !"Q¯ÕRÝ?½f £DMZïg”¬ð'¦˜òŒâKœ™!É<>…pÅØ4t›´Ë´Çéom(nf“ÏÈÛA­ãAf¤µ µRõ§æÙ¦Î&åÆ8¦“F¹Ûç[û๺]£ÍÈß=<ÆÚ-É­QžFžƒžºÚ÷I‘éÛ%ÐkP+ÐðA»\:§™ …S¼†Ä›æd«¢+Ÿ›¿pDD²GeF¸K,I\KzIËIOáÞûXJd²4±l×}w‚prÕÖi¢Á¡N£’¡Ù£Å£š°áÏ·ùÞQ¡TtXMY±P’#]3Ä`O Ñ#ÚRž dÛèÂòKú&½õæ†OOØ&ÉÖÉbLôMŒ`·GØ¥p¨a/¯NØŒÛL7­¶sÝóÀðNgݵcž”:Ÿ8âß ñautbøÒøÀ¾´¸ã=&B~…u‹KAÀüþ·Î„äêía÷ÙS¾Á\†û„õã©m›‘ÝŒD¤Õa`òËXôÌ8ñß§©ôn!±G¢µ×¹Z׆áEP`ŸòPÜpγ†Ž7OçÀÿò}kØUhrRGê\œÎ‹b»ÃËKÌ÷ÇÚ°åÁdÞ,úºJ¹æl<ÔÑö ïÁœ¾מ‚‚—uÞhW\Yœ<—r~d¶Và—ToY†%z=­=/º™v/W Áµ‰€÷4,\X§ Ï&d_x‰¢KÀ–Èrž“júRZVzdÚàôè>¦ N=“3®3+LT¾Q›F’†“¦@m[ÍB½d¡ÁSßéØúD~¿bïÈPk®s2mÒòÞêÏÊ~ßtñ”ßlŒ¨g u}xég•WÇÀlˆj¨l(âÍ Ç‘A‘˜>¯¾fцÏV¢ìŸ«¿XF°G¾\jIIF‚A¢hsùüÇŒvѪ ŸÉž‰óÅnF“‡f2£“®Ú¸Š’‚W»$^õZ%z9M壽´®´o¤B¡aAmþrV%} ¡óçEEÔ’æ2AÃó¥šÞý­¦ÙÁVJêâx3О6oGÊ š×ÂÊj£­‹­ëqôI%¡o¶HV¢î¥»JkSr[µ§”‡¦‡øæ“À…ñºèùš†| ¢‚MÐì§CóҺ͈ºáZ‹‹4@k÷4Tc¢eçþéËÅäNBÒÛ/~îƒIÖ¢[±SëÑ­QÊÝ9¢ûœ#s±®“ü˜ C‘?ÆdC¹YkúîV»2Ÿ,]Òl~Ü ~Q5›N]×oÕvÞÒÑ’}ÒnkfϘ;µhÆmöjVæ™ ¶pùrë °âQ÷ê’ÖUÍèâÔM¸@tã•É£Çü`Ã_þÂlTågxuq¹žüûHjã@Pÿõ@.7€5D[Egœœ+$b€LuW n7F$†y„õ3ÿ稌iÈñÇñ]\7³œѦAìq®Ñ¶8«¸ÞhOl°ÉÆñ¬ñ‰½ÉQ? i[æ[µ=ÝÎe®N71Àå»î;¹8T˜s½»ˆ¶]$è4yHÜ4ÖÄ â-eRëz .tgÄMÜFiF«†]í¸©‰ó…T¨ý½ên¾]êa ªb°ã¹RÞXŠÄŠÅ˜Å/è ~üeëõþÑ f0ÌL¬iµ#Z’ò]1¼ÙÓ„¼†ÅzÃqÍûšW“à&¬¦ÙZw÷W¾C•3¾Èí²l°xz;Ô#óÉäÞíþÔé\ÕIN‰L™Jµ·>ÿÒ0~nÎ¥Ð{®u¿šíé—ª‹X–¼ò7 %£Ë+•“†:1 ³ “Ó奬ÈþÖUÔ¦ßÞDZ´Tts<<^|Û…2ÓÁÊï̤V&Ƹ²g£Vc–Výì¨ð6­*¾|_$w0(â+ûÉ©À·~'»(¥¤²y5‘×쌗¿eUt¿ëYâò¢Vo|vÇ|ìE`2·kŽ˜ ?„4wq1|šœ¨À|hp}$æI– £ƒ•­óRÏ@í!xY¼D¾êM(}EtË•Åaï§.¥ 0ÞùWêŽèUiV\UÄú¶?òÈççàuóà!Lx¿ º/ÌñÌ.Ó—ÝHîÊEEÿTöBYs\ÚîÐ…ÖÖH h=*.q‰¬À9ˆä²·VÍ®»Ön~Å-1jizKg $„ \ÈÂ;ßAt€êÇåÖçÁôéx9 RE9ˆ¾ÒÏ™qj[—B¾ÇFÔºCr€ ×ʶ}å÷%¨æîmuj io VÈP©/B.ó‚ Ï Ó€ FƒŒGƒtÉA D¡ˆ€y‹!ßÛJD(‰0ˆˆ,¡”¨T(Ð âe"6\.Ì#/˜=.% ©¬ëµûëGaéÒ Ìø¼Óñ_p’T_%9®‘ÈuH}Hž¡žÏ,ž#{Ñ^>Î{MmX7ðiaT7 áÈNÁˆoO}Ë‹\;*˜˜.¶ o@Y¬´ j~ñ§éù3Âí÷’ª¥J %!¦€—÷IpÝä[ÊšL|À‡@¨<úžþÇ«z+(q "˜LxØÙèPìå Da¶¿0+6Ü·´!¬sdT-R ¹À+ê<·Jø“Ò ’Ÿ…U<²N²ýu0Ì»Îß;ÔåSÚØ(Yr¶H¼ „Õ¶Â×–2.Ã.s£þ%ëºnê+\¤Mw;ª×ºÕ÷ë“­$³JgŒ¦ÚØ™Ö)RE-.yE´¢VW‹Þ¡¹æ°I3*!ãÓ·B¼‘žrÒˆÍpæž+¿Ýù„3¾ÉqÖxÆI³®³tN66(ˆ@0ë½ìv›µ¶áŸ‡/ϓŎP}k†+N—vK0ªÍíÍzAÓgHÞ”ÎO³yT?[„Kµ…àCžk‡ŒX'°¡àBçP“™XÓ9釪rŸýD×ü7 zÖÌ92'öºœs5ï’k'0º;_XKDäü<Ý–×-Ö¯«3§SÎ¸ç ™Æê6’į†àúæ:íÃë&0eÒ‰d3êМ/þr\’z“@4ìÞ%okaÓ‡­è έ͆k!éaW|Ëëë~‡sßí»>Hçx~OKÃ]e£ À´ã®m‚å1XŽ‘Œ¿f‚˜‰‚™$¸.âë{/0„ÀîÞ”’Q¡øWÇW å„‚¬Myß›4–±s›¸s`µªˆÓÙl{Z|IƒhW3ÛµM»0°Q±©æy4}Æ^¶Åã1ÛÌJdff~Öø½»[ÐZ¢‡¾ÇÇ5zÂgµÈ½>D@µ­>þòÇĬ †?ºè›~jâæÁ¤ú™ÇY7fæÌÙ¶êû#q}Ùï3‘”¬hm”O®Ó &÷’®¢²õx²/ªRPáŠ8©V^€Hbž6ãîTê5úEta×h>žõ”!Š‚‹šï ¤ëŸ4áâß6‰ÂqOJ|¦sø/P"ñ/“1o¿Í4É6ÉWÕyì=8¢PéˆáêS*ây³5e€LTÊY¢¥¥åÓÝÙÙÑ‘3 LqQQ«v^€g¡ï q’2T”¸žÿÔãUØ/}ºÍÊ¡Y¡Veä‘AO‘“k¾(«Ï›éQG"d“œýÑMg¸’çEä¶øj/æµuÔ XŒ-…ÃêD±ªUÁAù›×•kºÖNÔ˸¥Ò=ªõU´N'‹H]ÌoÜæ§«ØgàŸ;7&†î¢­š"è©S†jŽ_JI|gápU¸uÆÍB(Mm5‹~®4gìSñå[ZËæÎUÍ&qâíÊÇ…P°  úöíÛÏ,îmÜèÈH§fìGÛÉ‘GwÚÅ® Û—t„Ÿ‚ú‡çŠ«RjbDy“EœX”ÚÕq•‹®4*‘ïávì´q sõ¸P+"ËË,fíÁ9 dÂ&»Ÿ9^÷>Âô¾ßl>´¬Gy…­ø² äõN0ĉ+X¸VhÍ:'ˆcÖïì¥Ïoz4pú¢)=÷>¶SðkY´­¥é?ê‰c»–ª,ûÎIzÿšSEk¶ö¼÷ÍR“-Ý …f¬sûf`ñP˜ ŠÎÖw¤Ïà[Üj‘#t ‰':=ç‘zúÖÇu Â ÷_ý zÖ&™¢ÛIk%®Ø]!™ÜüªB?·%'´h*ª¨*PaŠÊ;‘Ž)†œ÷X Rᣥ_ìûbgË•Ìfò=´ÀÕ5/~T¯ÐÈŸ¶¨Òëló¸ØÂ¢Uk±6ûáЯä~¿’š[û3£÷~¤vvŒµÙ6ÑÑ?m8Ê‹­NÎÛX”‚˜àþûÙ<‚P_…¥ŽiM"!m¦ó¥®³&+™!#ƨâà¹ÇûG‚`n~fTQ(õ±'ÑZE¦´s@NÌ,:¢Wµù¨b*Ç6¡êšhµ0Á¶«-*éʰ¼f{ŸØ .¤ȳ_¦É»(IÓÈ“6ŠhWߺòò£ž@ÈL[­&›åÚ²µŽ5ö´ÿ•î•—ÄxãEV 7çcOܕϬ‘æÙñÂ6¸F†îùFk‘=ø¢GLò=öi†yïë”j£™§ r*ñ~ g=—Êxu¦áȹò‡´iÜ]@Á†‡‡ÃÂÂz×}÷ýûÇÅÚ©? ˆüÍÔêÀE`ÆN®‡õo;+"ÁMLàs‚ö:˜ü49 Ÿ÷øúLÒrž<ÖX\s)s¹LÚ5?<üà[÷ÁçüÍÜ0²3´íȇ§·Çñ›"P(äø·.>=>¾ÁÔìúzNRRƒÑ„£ûc™uuàWè `Êâ DEsIùL醚uö‘aqn¶ê]£ÿ‚ðé¬!@–ã©7•7§óúÐÆ|Úð ð¸"˜ŒÁçüJÀýmÚBIY988¸U§Ê:sä Á…žwìHdѤ;¾a܆͉Zè®H« ùLiäþE, b‰ì§L‰X@-àî\IÌd 2`‘ï’È`r?¿õ\,W¯&âr áããceu=(ô…^¹U#aóÕeCù ô "@ÏE6Wñÿy~¯‰ëmRçñíCY%q{3ò# Ç~¥áà޾‰.Ï1-Ób·¶å–†~WPir¼Á!.ýM- ¨4nQõCúH¬•é:/=’õ´ÏÍY’ô”"¹Ái—Q‡@Å;ª—þÞêÀ(×dú .?>ð¨l”­&xòž.ñÙK N‹ÃÚY"‡~oï6‡~à„‘xL[q-+­)^åQ(Už¾÷I„t<ìëyrÝ• šË×hš}#ÜA#N…&á6(OÃXÑoß«¾?Ý$1•‹Šžã"&"?¯ÍÙMMª†(ôDj°e=ï8}6’pŸ…íŒð¦ Q±78„χ‹»¿é¹øvÞŸëúÆý±ÕË.8§1Léêfjiü DŒºœ=ÈéøƒE8¡kÆP<ÑEÜìÔe_åN!m/†ÏÑ#Eñ>­Æ„9{\ôÈçU,(;²Ä>瘷üÄ×µš€©›Ýs\~ËS? ˆñÂöl!¥Eõ@±Aä(H hÂc„ͱ=•U¥¹™IÈ¡Ã9Ã(•‹’ÜcS|„‡ÚøŸU¡ß±å猷…—&ÀçŠYcÙù.’qGy¾ž`£-Öü2ôØ·Ðq™:z+u6pã9I]!¬U®H5·ð”0¯z ô5“ÄI›RÅÂî´IÔÝ‚çbI±‡èØBánÐôd")ƒxŒ‘%™2&o)8¤µÇæijQŽ€¯©Œ*Õ¾õYNÑw¼^¿ÊŽ) ’7õÏC»j%L„)4´Óýض•Yk´Œ¤›/jØ}ËJúJ–`Zlåë¾}ùMÿokiÚŒq¡ýŒãÅQçâ~E0ƒè|BÐ%NÉ—Ç`„?iõß»cúÓž2x]ŸR¼9IKÙÑWÒ1&S˜&'9Ü(dJ%‹?Ší¾ê¼qW³W'<Ñ"×5³¡®²I0ÅîºWè1ÇsZdŶö°SZÊ]gBÙØS7ÓnâÂ'8‹¥– Z¨Ýöhc,£-BóÄå®oÍÎP|bM…ÃØô3±B:œ²Ôÿ.n‚•)zžÕ |žg®Ö°Â|L©)ȯºÿÝêœÉqů*«SA¬®{#G`˜>äE™érä‹~'Ç”‘fã ãy ðüV¾•²Èás£ÅÎxeôUž¨kFΘÑl®Vì&É#E|Ñšm¶%ŒºÔ—6j È³¤àë1Î&qÖj ?éé­×™Ži êÞ!uxïáÕt±ÆY Xš¿˜^ËTŸèФNaÙ`¿ZòLrb—²¡Ý÷[ÑÜ Øi|ÖÐ8'‹„,=yýÉÈ š“M!44ïWrÂôiÕj| ˆ€øþrŒP›ëbzÇ1q¦Ñç€`I×Jõ×7×î`í@ÒÄrØl¥î{;âÑ«òuµ‹5ôÓL—ïr´DØÉÄTr3€H°Ìti«¨T „Dì4ß»k@WôÖèÒÌÿ¨´ÐÆvÊ)0{ÞSŒÃÿ«žñΡÂ8¦ÁTL”‰¡[Љ_ö.¨œ2ÄÑÉj:åŠí˜‚B¨Ù*ƒPŽƒ§ ?ÐÆÅuÓjºnH¾¦Ž‹Ö a÷!2ªÉ4(fUíBG¥;—HD‹)/ÑZ‘Å.‘v2—±·z€g`‘Ø»4©F‚ÿÅa(”[’dO¢û?[¡°S‚Ð9}„yÀ?WðW&öÀwÀËŽàå/ö¿†X¡'…JÈä‹°(:¾K4¯ßî³­º•=H¶ŠZç +[†ã#äèÈgW¹vÁGdžï帗§3´ŽšÞ,Evâ’îØ»ß.G9 ü †• eõzyŽféb桽û¢ ³~*jË «ŠG_›½ƒK+kÞãä]“M‹{2{<'ü]|jü0 ã=Mù«€šF ¢c¤‹ƒŽ÷>5ïÿÁ LH•üøÁ\@Û«WÒ9¬MÔÖt·‡‚6XܱÖ-ÚÏïE ‡Ø«©f¿ÐÒdºûñ% ÐÂçõgVÓDFÒ¨O iödQKçzô››Ö&h\´tØ*!>ƒÃÏ&SÔ8ô2¿_ÙšBŠq”xwkøº[å}¨¸JQ}&»•´Ü¥ëÇÿíQ‘XWÇ#ƪDÚ9Ï ~Ý]`e/©¼{´ç¸C›Í€>-òðÈ,ÀÖø3‰±­€íC”;ÙLøéýŸGáL.9ʰÛsþœã÷È@©bWµó^Ç9Ò½! å] Nßz7#>²öyõؼŒ^ ÏßB㌾ð/-èÍ(é>ó]uï'LWÑÍÐêY¡³‰_ÈÈ%^3Ðo„ }'ÖÍg Àœº>Ûõ•~~²ÿ2ûjÚÙŽŽøè$]¯wW·í¼KœÃ1X«]#ñ)¡óÄü,Uíµö±öÛuÑ-ôseמ¸àî S?»ÞN\²1Ôu%¬uC|(tä¯ÿ)ЈŸ¦ØNÛ•ê/­˜•Kf IÿÚ<ٮʹ¹™žž^%m›„^Ú“­õ'š^e Í·r«}\ïKolçF‡É‰¯¹ï EÔ)¤Þ«äºrçY«¡Ý_ñ|R’4&}&îÁjÙØ¾Å@Fû=Cy‰šß¨éÌMÿ!ä[#½÷mníËÊlÃùÈŸ¦ø!9±npK%^îI…R#_k”8wa¸ ØÜ÷´¼"ðã…aLñaìü»Ðƒ¦è¢ö? Ë4c~³«KšåV‡²Ã^…Ý%G‘xœÝ­ZØÈH\‚d9LGi²9 yÜ‹z »"%PÄ•N¾—ÖWä=ÇžQ›ÂŒƒ<­[Œ¨c ÆÇeŽ!Å-X?<(AA Fãâ ÔåxlžO¹Ñ°'ã§z;Г°I/ÐFCÿÃ5ªB-N `á.¹3ˆÝ ‘²Ú‘-Š·ì.Ö¢GG}]ï²µÅiÂ…xn¥ødŽ¿þ„£Ûâ°Ù²Î“i;fš¥ÑGhÞP¬d =øàt‡ˆ€|};,ßÙÖöÄnÕóëj®:U,úÝbMYÞž¨,ºgl‘yôÅÕL—(jtõ^,t&¼<Ü^êEœï„ž”:i$CÇ ÃíO[‰ê¤Œëe`½©¥x‹U½“…ŽWQ)8èŠÑþyqŠ0Nß©¨– æEã[ „•’–\»_KÔS *“#Õ¬%âTŠ5Î.£*UKb’þŒ¾B+];8•¶5lVp)nµ"œßá¿L_èD¯j>ĬÂ4AC€fíX¡bCês>™t7kiûú¬‘‘ÒÎVÜN¨öˆäâr¸½nndW&4D´¤=“3ôNNàòÈÚÒ=„2&œƒ‡)·Ivã¿Á“Í'ï û²ç¬ÞÁuAHBô6“¼Aè¿ÉSÎÙ8Y¨Ogð·““ Åû¤«+ hÅêæt¸ã jƒ›e…Z&a[Ú‹"”gx¸8mÚñ%HôÒ±àÀé®Äò–ø¶J’Pyò4—¯¯sþ³å|“ðHläHâ:;váò¥dd¹zöµÆî™Þzýh¸=¿9ò¿­3¯vRÎ|ù¶—¯ŠØÿXfMÖ-hæ˜ïI›±Çùìÿm™Q—›÷|ù ÒÒÞmŽÛ0Fƒií~IDH‘rØêã\|¬Õò¯~xÝ¢{·¤÷4ÍGò22ÑÝÝÒ$@ÏÆÆÆ ²{âÒT‰”ûޝøl¥ól@¤ÛÜÚs(üþÉ)T@Tv'à{P¯7Üç?n“ØÓ~†%e$¢)-œÅjÔ¢¡âÑ»=÷-n× –™\¦ &¹+ò-åÌx!{ò9±!}CÍä° €¸M'€vQf9¼6øß¾ª.nZJÊ^Õ&dÇwªÅ{*÷2Òå4zùˆ.Bëuü«CÆÆu‹NÌ̶⒪ͺœ®‡Üv"Øó¢ÎÐÇíÓ+‘-A1t‰…ä‰h(@ WôÿúZ¢ƒ"ßgÛ• ÓxÀØv¥tÂwf¡¢¢¢¡9OgýÚ[ZZÊlõ¹x (eZö µé¬ªWÌWšª¡t_m‹ˆ/ДS0¡°ZY™¼Ñ/$šHp͵Øž¼ú=.¿ÇÍÐ;"jº¸¸4Ö6Ê:n³Ô:î/`)ÅDÜ$½¦\Z™»¯;¿~¶ÜÇÂF l”Xòuj¯£da·¯—ak´E?Ej¾ë°vrròö~zS‘ö8 :iYY|bOß=a¡ÅJn§û¼ ˜î8z¬h=*?ª”òª (õ[2ýý»¸¼Ž2ô:¸bGÇwHâèýè©8Ij~× ,¶<¡ýÍ¢W, #ËB4€‘B*¨í”vPˆQX nrÎצ½Ž”½šîCôx·½…÷Æÿÿan¹eŽXDuF:÷~(æ>6< àþú¾M8–ãI3œ‰ q®"Ðó¾ð†‡œª+N>‡âžŒu[køs./KvÄlhÖóåq]ç´^«ÑY«O»„5;BèŠWT"i9“î¨#Å=«qNÃ#ÂíÙÆÙæUk1˜Ö!pûc€Á³ÙlÈÐ%èÖ@<¸“ÁÚ¾xÎåAÃï`ºŠÍêÑßÇÈ?V^ßÜds;wvú®ýÖXñ>u<£ 8Ù&;ò %h«¡nÀÍ00Ì_g€ÞÊ®³Io4P²ÀO»r¢ÏQƒlŸ[_[kÚæ¯ÒÄQ¹÷ßnza6°ñü –z¾2eíS+2ºOJzR¢šÝZ‹ãÎð»1cßuÖÔ1W[VOýÀ*SsOÝ7ÕÉ™’#Æ`JkÜÿê1†Éïû‚Ån» ‹_w|> ôû½%u•Å(•ÊDêËä!ãä£Û,<}0îÒmüóe6·,Àâv‚Õ†ú÷å^ô;‡óå°(\.ûhGJ™Õ=k°Îú/ÄI¹RGÒ‹m¿µã¦ð†¦>~ªËa©­=´Èì¢è•zŒW¹8f=T.ayÕSN@(è^8?@ëBíMRY+§F4u YË>tAºj -Š×_gp¤-ôŸáÔEǰ0(Ü Yn3HœëšYÉ1èuxÌË2vÝ“Íê¶¾þ’zÛËãû[¬Ï•˜Ÿ%¶†,¾ÇbEÞ€{—43Û ®µý”å*wÇU†ÊÆMF,Yβ±ÃØ!ÞÇ TëµÓ0³3Ú¯¶MM?ï!«Â™¶ae õ5퇷1v‹ÚwÖÖ÷º]𖃡ˆÍövwúB9m–âRS›m–Y Õ—|¡ÏˆêŽ«/âøP\æØÜf ¢Ûˆ > ê´/Á T}Ý[ï°‚1ϹùÿÆI%›”CÏÛ¶Ô KH,ú®ÕDÔÔ€E1Ë&¨pÃòOr@fFÂ(©¨>¦¨€u̺h-,¼À¸Ì£Àÿ§­£P„úñý¯³SK‚ü¢BUéËKõKrò‚¼¦üèÑ+SŠLÓp¡q+ÒHö@±“R䨻®}« ÜÛ±9¢¶UdÀ(Ý'9B#jÃÔM/wÓÉö^äïKÛØ|Y¶ÿ2Z1a d(3>q—ië’7añ@-¯Èà4HnØßn#Üí7Ëׄtfù¶«âØÞ$h‚È!¯ðþŸµ¿iïͱoµ‰4qÌBÿÀPb ý¯µrøêBçž{o¨ 09Î{&E2n÷"þƒûü-ð’7Þ#c²°·CÁ]µëa¾Äz¡Üˆ 3,þ.À|xƒ­AºAÄwc†"î팛8mÐtVÒ3n⦇˜ÞanÐV‘S9äÈüzr£Z­pGp½-¼J;ÛIY©jÉR<ëM³B¼ÌDjÊë¨ÂþŒî¶yteòÖ˜¾+—Tä€>¦Ðin¾æŒxÃpùAÀ=óe¬1àì¦ îQ/Ö hϰòA€”mkëèù lœùPôåA=º´õ—’ýL4Mê„/,~QHy9+Zub…yÕëmÛ“¹~´ÚÄ{½?Ñ|àô'GÒÒpcÄúÛ†ÿETÞð¸¯ê¼p0Õe$£Š’öV•× ’ˆñ•ŒX›;ÝÉ·²£³ùß?T—àf™B¸÷Òô\gÙ²À9éG–D{ä Q¡Cü%%Z¹㨺 =UéWSÑ9dÏŸwÞ¿zS/n² âRRšüÿ¼vu)¢J£"!ÉHK;/š^æ€P?Éî>Œ÷%ô|½KV-QÚÞõÉ63÷ ¦«W úȧ_Yº¤©Øâ.Ý7–~ÃK[°»ªçq®—SõaC’’„H/»Ü³'ýâZ–Ü@a÷·C+S滌¤FÓN]YÏDRµ×ö_–•Åß“£p× ë0¿´ÇF€ëDz"##yœ÷¢™hh¬¢ß¿Ë4…?v»+êõ•‚ʽé÷¿iõ ¬´Gþ¥ÙnØ!.u¡ɦ8Ï9·õtì pl'ÐÂõe²Ò%g[ Á®ð¡‚s[–@¹)-Gbdo9mè¬äå$rŒ:陂Ðⱘ‡¢3W ©"€É-w­ªâ‹ÌÄ*Æò­â³Ð ÌôÝÊÕ¼ªìn jW:Kr zÇ$Ò°$022rrrÂi·VÓõ¦‡ œ.qOþnW`‘šôù6Ðó˜¦`샹¦ Ü!ñ’Uˆ@ì±²y¿À;î$w%Òêr)­Ì÷(ß“e³¨hoév—?B6/AAÿON#Fk(Ф»—¡ž²å!!sñ%øàëü õ‘”ÐÈ«-h¨šOCßRù&yîh6Èù/¾sÛüv1Ne—_a5øÁòxÒY 1Aìþäò§±7`ªÔaN×ò…ó©—£†•^ ¤·d¿_i}cpü¬ƒøÅ…š8ú6 »n>}àÂÓ9ÒvÔFÄ ??ƒ äßÿ×ÓßJkñ5pdbUú1"ù4P÷G|!XÓÒÙäå XÿÈqý9Âÿä´†³ÿþ;´²³Ãµ†§ßër€’¥.à 8ћЦU÷4òúZë=H›z%j‘¾{?N²7ÊwÐÞq÷K\´tjmÍ6ŠòÉZþ푈քD÷u‡‹ÄÃÈ 3V´ÌŒ§ò$8”¨ê€ L0Ó q{”@÷\Ø.UE† §‡ìoiÈwþ|+!S³ZÚZË&0êtÅû¡òX]9[\ùèù½HFU;§´y\¾´îêðÍíù*•V_•(ºn° j%‘‚€€-§ý”_«ø]òTžº£ù¼ ïŽLþöû¥e›"píkŽD}*pý'„î…Ìù½ã(»…©¾Ðl-ËЗph•_U­½ìføuéº j ƒò¦žzs *ìs\ò·½¸óteà6sk«B ù:.ÃèŸøÂàOéœMÞêí­cŸØóßb¥mT¾QÈŠjC}á9)á$¨(®\² `ušcÚs+ˆ­j€‘|¸½*9zdó,Y¸læ³òåV‡•¯‚àGõ¥ûTlLîúÌL®Ä«U’´« [çEñ[Ò"}…Ýzä]‹£<씽k£’öT¸Zf€ñožo _èctȘÆCu{“1…"ª©k&9ZwR¸wClÙ¿ñUÞÃ=g‹z‹^8÷¤×„:÷ÛÅÓ.OHG,Pf´ä]‰HÕ#ãümWô2ÌõBÑÿ.ëÅ›0 ^8Aé?bpRÃg‹·|ZüعMk€Ö¿9EIÞ¿ËYó€°ŒÑkòÍ“¡'ô0èòŠv óˆ2—â³…ƒxºóEÇ.-Ø  Ê‰bÿª*^PãE7ñé;NߊÕ8®–QOhý³2êj‡ ìÝÆý 2šÞ1×BúÇÜÝ[ðT‡è½#ý'¹/&³¿=Üw× bä<ëÁ÷¦’rð§å?ÈSÚº"¸qîqÿQOHâÝYš÷fB+é$1ˆ_ºŒi§Nb‚ý»”.8+ŸTC?øÓÛ— /(@ôõ9ÅŸ@ðPÇx£Qc•®D¬?N•ç³yÜ"}$ÙöAÍ`›ì¯l={‹±´h¯Îõ}/çóè`‚v¯XPX?2Èc§uQŸèjÿÏKLó­¿ÏíY®ÿý-X©_/Eàz¾,¬ìXõB8±¾§ñiÎ:·g3¬¹<lj û÷Lð©Vh¤õK:íØ:y,Ì’ \½´—ÓŒ7’Æ3 ,©óZ§Ï›˜ƒõÓ'â\[ÿƒÖÞ^Ri5Ùø K¦ $á`¢#ÖZŽp˜±W¶p è5ÙIÇi@#’gŽÖqýHi©äòÞgý{î(~p$â9ƒH¸F“’€À6íTnõº¢#³ó"¾#Ù×ïíŽá—g­eô¤ 7|O³Û‡0-ÖuιÝÚóVj $æ•.· ^@„ä¼è-\;¼¡›$êðÝÛ›Æú aÂÓzIÍо_ýF?Ž×ƾÍzÓIunÉ6‰c+‡*Zïy&~^†•Ž÷uz'kΜѺ©]ÇÂ=½êçKåNÔ°f™Õµ?«ééFVq¿ç1…ÂÕ•v4ý”J£ªxù¤ƒ§ŠId—4dEëþzP×Õ®£‰“ó gîÁOü¼½›0ÎU–ßq-cà%)YU¨î\f1zQ ÙnîY·ÑyŠŸD ïÏÿlxÑ-ƒf!ïkY'ªù–{’ÿÊ=&3 ´3ߥŽÃ \3‡œ§ÕÓÙ|žÂ°Loçeõ±ÙöØVMµéòA؃’Ê”z®}n¿â» Nfÿ“f×`s\¤þÚw[¾ïu>$¯{Î ”'º\¢ü ‡ñòïS¶£$Ðxþê*4}þZ4Ûõ°‚c®´3œ‰ýxؾŽH0Êt•ã3$ðï"±jìêNYì¨q¬¼1?ÂlýÌæÏñ„PŒb;s—¹9„u)Û7ÂUk’sM|…ªJL ±7ÑÆ„J5¬ÉkWwL›Æƒ)/Q‹Üû_ ; ÐôA½Ðÿú“égû÷Øßâ/«Ý–—p]H#’Õ IWê%îÆvoßPÐû ×–ßÕ MÔ/²­ê#B`‡Òùöü”J ŽËº&Â6{OÅÍŽâÝÌ”fü’ß8yõâàÔ°„Mð4oåãöΉŠÕ‹GâÇjÑB_u;‡zÀ>ˆÁ¡öÉiöv‡1/‹1Qe( ‘ËFº^›Gózïa}VÖ,¿ƒNhIåì& ½¾Ùiˆ@$€1 ì‡y@tLø²‘c°Á¦aÃ6Çý¹lo&Ö¾æËL”õNƒn|×ÝI:ÜqÚ~@ÚW9úŸð#ýćBZuÎa!@fS†ÔÛÓôÇL©QNÒÆWIGý|m©¡0[,ˆ3Øú¿JJùî§#¯áä9Ùd· ÞG$âr~¼KU§a0P·ÌÞ•ï_z2Ýhýa^áafĹ‹¹±øäîA'fàJ²ÖÈBkŸÈ k\`ä=?͸Ý<<ˆMþ÷È Ç}Âð¬xV/ô‰«|ü ~{okwK¾¨^l bu莮”ÿö±µMăÓM|Yi³@99„EË}nžÑË“LwçakܹÁ„”N%¿û#£¤>K7æ«Ü…Ɇæq×)ò… ó3`ñ4Úù¶(f,Î@T Öõ.Õ×çFZ~£ëŸ ÖnkÕ‹F±˜ÿ1ʸh“I„—üoCFbô¯àⲟ!t ÷—ð5ÖÅÍZýïaG«¤ñÞ¯áFPn°?üóÔ.ÄóI<8†ZŒä­!Ù1_¥õæ«ÒŠQ~x+¶?2æ0áÒšûZ‘´,ªAÒ‘>»»m¢j‚=1ÿS7Á3š/œUD§Ø{oöz{¶¥ø¤0àðžÒÓi’í@ªSío`ŸìšÈª ŒCæIÆè’†à'ÕiiÜÔ0O¡¼‡"€†ÿP-ÍíR"«¤Bÿ}i¦Iz(£æù2ièc–±aA§‚LB‰‚¯Wï}ÃOKó\Ç5FÜ‚'ä|Þòæò¯n•ñbKÙð·P3¾ÿm9æhUëtšÖ Ýåþ´Å½º ‹b'ÞHl/Yý¥P¦Æ.NñAî×ù!Ü{Ë„šQrÊë&É‚†/¼ÂÖìXóæÕ:`Ê䘷Tpæ[߯fÝ`‹¿¼CôoÆè Ž!ø<¨îEë7£}‘øÑße}ž5ï? *ü”? oööàÕMÿ6ñN˜<ÓÇÑÁÁ‚Âaó˜û$‡«ç·®3^ë¶_ y¤fÐäWÕEßÄž>/±pbL„R,ûy?Ç'÷æ*k|”¨qÙæ4·]~ïX…QöMÉÕ·†¢‘ÇyþS6ÄÉk=$,þñA†“•jG â—ÛrÙBèÝ^¶y?ê¬õóNŽâꉤý‹6‡±ÆˆdxÜ”–¹î¼†Ë‚ó9ø(Ć•7"Iï”#3ˆ…Cç`a£ï./]/ÜA™U-~ZóŽ4ÂÒþcR-‡}²2mEšOñHé0±ß¦svøAÜòƒR —ÐÅ…dÎUŸYêÁGù®öd4l®£sÈØ2’~óBĹV&¡=½ãJÿØ9°æâ<^òºÎnl¼Ì¶Îœÿq[cøOãiî¼:-‘ø·¦Úg)ãžZ\”Æ÷îê2ž;骼?{®x®¿æ#·8$ô4°YœÂ_ÚþÇ@ãøå;ø?.‚ð§«5#bÕ‹äÌíÓD $,ÛÓOt<Ùr%Í­]ÿ>n4ÏàO˜œ |?×õUXÿÀú‘!H ÓKëª-N¶º'Ëè(¶Ö7úÉjN·9¶˜SZß- {’ ͪ±¡¿tÐ08$_eh¨´7A|©Ù1¸ËÕþ¿²è,ÎÆG6¥È>è|jýÖTaÑ:[L¿¸šT„¼ !²0ë-Ž^Yq™Âh˜ ÿ1g’4»ÿœOì¨ý÷ Êþ¢»©èµó7ìÐâÉKnÑ7í öÂVÿR©ëTwÞòQ­ÝÝ6xæ/fõž…1æº:Í[kÁì\ïŸ&ˆWPí'×_ûM†mr]ƿԥÙZ×G×Úc/6k„……Uÿô«þÕ33¸VËïí¾üþÆ¥{-¶û×ÙÍÅ¢13~•~·ß/pþßî7~ýÅñF}Ó8퉘T.ÕÅùùëa’ú?³ÃoÄF ê4qÕéߊf1Sä\Eݯ6qf‚BöB/—W4,¦°ÃŠ~›8¸’Ôp:ÓŠ‘°O¸cn\!Éðv‘0È<êAÒ£Á¶â¶,²ÂFlÿrãÖ“ßxü¿„*÷Ð6ÿ«iŒ`ûIGª¸È¹©„œWò|µï)æÝø‹ó÷¤Â½(Ün7D)½ž âŨÈÈÈ AQ"©‚§vÆ…‡ùþrø+Øðó’Œã?w‹È0žŒ…{ÈéTÁ[âHq?=0_º/’l°Sdü‡aÜ/Dª!sâ7æ^ :ŠŽ±`Ò~†y–Ô^–”óŠ ìõD –="®H>ÀÞ!5è:t½dß%¢çmü=Îo[E-7oX ãÖ¤ÙkŽ›=†Û½m|›€l÷zNâƒtFÿÓSøö¿Öǂ̈ú‘Fr}=ˆÀ.0¬\§x5ZÐ9/Ž®Á 5öåÖçÉJ+v!:Zª8i*Dt~§tÈ"/Öq{-È£Æiȱ-é÷™ìžn ‚“ýÕÆ ú©Ìg &^B·«Gv d1¨^…ä ß)¼«Y°",üÍ#O³¾Ô# ϲw†L¨JLÒ\¸³7=3z©$©¤& ï¾2ÿ½Jåa‹1›J'UÄ;eÆ[°$èÅTŒ? |«Çu·`ð@©ìl‡Ó §ÆmÇoÐL½¦ZJ"æU§n†’ ¼éè=Aæ¦xƒˆÊ^ÏáBÁ«8þ:.´™g+ÚVÀ;ö馅ekIÕ&»gâÇ]€~cµ»z?E»7"Bó0°5ÖÄÓ+#^W®&«ãCAä¦7äï¾R™L°•uÏ/#ÜŠÛ=ý´ÄªÖ0À¤š€WÖHz4Ô'ä{LÂð¿í8Ø/šŸE2¯Åë^räžÄd^µ‹Xå2Ô œ7ýä·ø¦M•0#œ­¼ÅvZ¡–ÅØŒ0£LÇJÉXBJÒÕÆVkT5JìEj C)j+j´Ä®c‹!±/“è9Î;ç¼×÷çÃóœû¹ÎïºÏ}£F¦õîv€U%5 <Ú†Jíyýáóïc%7êeúÊÝÙf#C²¢N?'œp²òÚÇ3 s˃sÍCN|p7˜«ˆöõõ•+Ú·Åjê'¬D`9_c{2˜W\d¤$]]*ù™Rræ¤, 7ž®/¼Ø˜ÕÛx#c»«„k Q‘Ê^†V ¢»þ`+lâà—Ú`}ZÍü"6[’>,Nõ nQþ‡hÐÿ…î„ÆÍt6¿#ÃÞ„/3ý¢,ZpæøHçúØ9„ ùEjé™){(/# ýÑÞ'-!‚R;ï:/]ù•`]èf„&°é*‰xôV eûì}ÑÉ “äB ‚O™[ñ$§ÑËŒõ˜¶=!'EY“¢59"~P!. “|QnF¡t®$6D58¥†Ï¬gÌ’E×–à•£`Ñ©èÐtµC6à ¶ívר#XˆðåkY"åJwèÊÚ¦#&ß:ÄÞþ|86–!s髿«_.¯ûýknáÕÍ‘ÖÁäçö5yJÉÎz”Öuv©(xÕ_ŸÉ @TÇfœƒDïçÓù†Í[£ø¹çÙÍ;Ÿ>eZ–éEö–ùL{yÅ,e¸öÔg ¹OÀ³ÂKñ‡$ÏH…ÑÖxÙý¸ÒRü€|‘¼êNtåEÕïÍ]-F{_é ¤hzªKú­pó,:‘)Ë<ÎÊ›¹|Ùõšíˬ{T¿4º<½tÔâåcÆC–bõâáaAA»ÇU. ŽÉhÀÙÒta¯6îR¤¸¼6Œ€ Jå¨ÿÔØ)[µHÇ«˜ [îÕxU­ðm+S~hJ©Ž`0tϬÚFQê¤ðhÝO¢rƒ?8óçßR°;ÿr&ºØ—1@lAp£›u&Œ÷Åk‘u<¾?C ûþÁxx¥CGB÷®UP§š7çSúç°¡ÒýÁhtjªERÆ0jO#ÑÈŽ‚8ü §7<¾I.Ñ­yeÔ€tSy˜1½¥ÑªíÅKLÜÓ6:ÛÚði业¥7l«Üm, è–«}>Ö”ÊÅQRÞ±æø’Ó¢Añ +p]‚sæZäA$Ž÷ç‡m¢EñѬØfѱòËgM•t=IïU"L›þ]ífŒÝ'Á+åèÐ!-ƒ±oä-¹ Á mÖ™¶œÚìÞƒ¤'p@䯢†#1-\\®V´dØdN¼64¾9°ˆ+´Ãé^šå)§H‰É_mjØßLÞÜÏ­KôáP¢ i‰•EÇà¢Lé8Bµ.èËãs$SüÍÒµå‘a¹Ä;7ÛRXòqïê;¿iìc) ÉAçåD¦SQ`¯{ô©-€;gEÞníhQ>„«MDN0Ó1™ÈérRÑÿËþ;ßÝ(JLóÎ!Uñ IJo®Ø!f²+³ ŒÑÅ>)z/¦\‚’}çÓ²õV¦)%¾-‡©ôr«s <Ë,ûÕd[ÞÄXL£Ó‡Í[+4D“(oi3]ùJ+r»aŠäf÷,ÕßMÊöGÅ«¯C{Á÷㊪B/åÙ☽âߨ’Õlš\ðv@dò=Ï1¶{4q¨®Šsø÷rYZ碪5× õðK*ô5—H|Õ¸ H áÛÜñ wÜ ƒµð­ýA%ÙŒô«@–Ú5µ¹}=äÐÜ´ÙüHˆ”1L°Øø¯¦Š<þ­\ؤ¥¦§§tˆ¨®®ª¡U¯´¥±¢¬¶›µ·S³¤Ä­ÅÉÂŒÀ_¶ÉǧҾÌoÎÂФԥԿ×ǾÄÂÛÓË«âÃÅÑçÕ鲨ãíÛÉäð—¸ÁôÄâ¯ßîŒÊV¯V@Gûëu0—§‡›¬ eÅ K,hŒ€é¢Ç+BŠI²¤I ;PK ìDŒ<£‡O.À„html/images/home.pngë ðsçå’âb``àõôp ÒÊ@ÌÏÁ $#3ÛÔ˜|B\z{5§hÎ1tšãäµÔ+ymrñÞâ–½-=Çz¦œ›²ôÜÒ­÷¶»wìÜós×Þ_{þþùûïïÿ‚Q0,À§wKÜY‚1ÉÛÝ…¡ƒUÖÈ™ìéâRqkmàE¾Ã 9šÂsTüÿ¿qqä6ØKû¦´0?zjQz°Tç{á¡=‹w駘0iλ ¿ßµí3Uuvg~î?¼6·ãëÂn.M¶ßbòçVÍâÔÞ¹½‘w³ó¦•ìsmn~>[È&j]ukšüÜ+ªÄ¼²+×?”Qhæèy`ò¸²fþ Sƒ;Ë*ßlÎÞýS_ï1+×ùëYZ†wÎs.q( ÎO+)O,JepÐPÖôÌMLOõMLÏLÎV0Ñ3Ò³P°´Ô7°Ð70TH.Ê,.©tÈ­,.ÉLÖK-ÖK)-ÈÏ+ÑKÎϸKqÐ8-°q™éy‰%¥@ó MMŒRÓ,M’MŒŒŒMŒ“L ÌRÌ ŒMÓ, ß¼ÙÔÅÒ´–ÁØ´ÂÐTÛ@Û@¨ÎíP†ÁÓÕÏeSBPK ìDŒ<ûôD‡html/images/home.svgíTmOÛ0þ ¿ÂiŸb×oIÓЂö©ۆ*¡iB]ê5!‰’4-üúÝ9ÉÖvhâ뤜³Ïw?wòøló’Æ”U’gG0î“Eù"É–'©rÞˆ çìôp|D)¹0™)çu^†äõ"ÿfÈUš®ªÚºÈˆq—|ž]óM‘—5¹NWKz•B)¦¿ûôöæöúœTÍ’|9<¼¹º¹%U͉ó=ISZ®RfyödÊü$J“b׃1áñ{û;Có{sûë–ô!©M™&`B}âœîœ"ÚSÎôév¾'»¸zo[=³KŠ®“E‡>SÚõ¾4ÉÌ<ÉÂ2_e‹}P½­€iL–/[ ôž¿°ö^¦áËdû õÂ2{“‰£ƒ¢vHl’e\÷«&1ë7ùfâp‰àß!ÐMaUÌ#3qŠÒT¦lŒufÕĉ뺃õzÍÖŠåår Áޱ7Y’d1q¦óGSÞm8—üN9p­Ç°^A‹ØûbØo_[apó:Þò«‡Ö)ÙÈ21õ˜p¥`AÊ]QΔ ¬6°V0Á&“.~5 ÃÚXÆÈå»ã`û®Äø­FŸ¶éh¢.‚`!³µ±2µ©°¤¬=ÚåT`°ðíˆ3tGuH.^ü¶µ¬­ÕÞŠ;ט ñª˜OÕ°§Ø¢æRˆØo롨ŠÄ¿Bƒˆ dņ¨mïãE8áC„0¯·i+ˆì¹íÙA‹h×âÉ<[5ù¿jÿpÕ4ª¥ R uXÙ`ÚTþ@ºá)0õ`Ï{+QqÖøQ09õÁ‡•G¢­êŠªb`})x,&`.cÉTô«ôœ(‚Þ¥Šä”‡¥ô±•ÕC­ú´í*ƒ2jºn}×5Ð3© áŸðÕ…[ gjhû±'­»¹Žáž][n±E«g˜x‰ðx°Ä÷°ý¶¯bTæE÷(>ÌËûjûaôº‡q¯.¢¯Kàêà’Ïx¬ƒFí|ŒOïéáOPK çDŒ<⪡£2â6*html/images/hotels-site-bookhotel-flow.pngÅzeT\M»eÁ-¸‚;4î Á‚»kp‡4¡q Ѻ°ýîîFxÌ-kE|úÂ.q?Òü4õÃ͉ÚA={Ë_IB{æ`ê z.ËíFxiz)óZÃRÉnjÂGˆ±ý u\•ýDqXuý¤‘\żañ„cÿäFýÈ•ý¬7á3H"»+.ôãHÅVU•‹”ÉR¡Øv‰Tƒ¾í¬E,³¦T¡CQ~6ßô’°c«¸bJèßRguˆ‚Lð^”=]' €ž]±òAä @ çJ˜ M.3ªŒ?¥_Ÿ´|jŸÀýɃ8J,UÈp/ÄñlùÚioHô‰›þù£š•ËÛ0®£ötSøð|;_×c¬YxÄ –.¶¡Ü~»_VÃG/ÿ°o‡œ‘Ð`ªKYçTš:¯žàËÆ©¥\³î°¦ U¡nà8 ¾ ”ÎÖ¯ÔÝ™Ÿ–Þ`OD˜r®ÕDl …$%…y+Á_·¸#ÑIÆ¥8äÒ«hT/§w$ñ—ÝÔM8ÜLà úy¸|(_l? ß¹ü%9ßËÄæ7¶ª]& 4ýÙþsé¥cxÃú¸Zå’ÓÕÖÏˡˋ0°ÆBæ`÷¿r[à­ŸÄÛ€Õż9Â%xžù̪órXì`xËÄÝæ%‡%›EŦý}Èð†È¯4†¯Î2'?´‚ÆðÎÞ¦å GyS]‰®ÆéCØ¢ˆœS}Buñ É=’46õ=†[;ö›{óåBŠÙH,ŠO’iÙ#ôñšûõ:Õ¼#oæGööÜø7”fp—w¼\šª+‹ŠÊov3ä=GjÓ›=.Œõ´î–¢”n¶QÇp_7É,vQétåRDƒ3g/0.†EÊ“¦¶æ9¦ÄŸš¤V>"L9UPácÇ–´>Þn®|h‡n}ïÚžÔZ>¯otj‹âWÎS"W*WâU(úÚfæ3N{ZÚA #¡ŽØlÞ Ù #þ"îÍÁãǮ©{xWkÚÚ¡ÝRŸTU^Ýz]»©×å™gæC ”{ðëœ2}U𳦬IÇ„¤%G&:?°ô2 3•ÏÌzd -a´®ÝÏ!†Âk0x;ÜÁCR5à"rvGç•5`"hN¬)‚µ–§÷Ý”a<“"¢ëÐ2°Èù’Q\O®)šS¢Z<÷íBÁ÷Mò{e½å¡—ÝÇ9c߸J£v«ÉÏtrª,>Oñî¹S°,ˆ4½BÅîå) ©|‘]Ž} ËÝR­À£¦3š¦°{¼EðEÔ“¥0-÷öø fƒ“×ÖëzŠ«z:ÀÕ]óÞíQûª¡ãú]x©,N_˜:UžRÿï3&º5»Íúñ+°•³åÙ”2æZž=ùÃ(çÍòeÌ™ÉbÛë „Ü•^Ó¨ ¥QåB)’ %© AíUƒ]—éb…zý‹tÛ~ï|L¹Ä/š§$Å}I-4îšÍÒ5Zë©ÇîíB­¿ùá{•õ ä Žg|«©ŸÓBŽ ‹ÝõŒ¿Õí¦lÀÖõÛvÏ[ÚÎÚ/îÃä DéDU£©1E3O¿]MN|·ê oz\Ú"âÀ7Âþ…UÚ¼KÆJöÅÛá1ôjhûx*¶F5k©r¥e)4º$’C‰G‰*#//5%Ð3ðrònW‹ZJ,àk“p µÉ C­ò2I“µÁ©‘–®á­‹Õ”…¢—ƒyË*ËÅÊÂíU“87i€i ˜Äá’º¶§úØqááë<‰;ãzY—Ôcˆæî8z)ñ|X¿çÓoÿ„€Êýå½\—¼®¬³|ä*K~®9–WUÅ:»ƒlò•ŠŠª¹¦_ádm­îMŒ\ú®/¦;ï§”´žÔÍ­6´a÷Eµý‡gHqÙÁcu^f°“œ¾;lÕf›èÄ9Éùµ‰­µ÷&–iš WM/È)KÒ¿d¸Äy|nôil ðþî%ç½Ò ÷S3ò[>J?ö­ÞËt’°ú#ª&¯¾AÙðûàˆ&Êór0´˜Š¼¿_hŠÚŸ£ I«òŽö¡b6¯á‡×Ó³BH<í…ùa†Û®Ëü‚¨òÄ‘…~ŸH+¿™Ñ¯€-Ö{}œ¸jãÇŠ¾ßü¨w§§i¸Âú*.´œkŒ¤ ½è{ñóR.ÝŸ ¿*û Šú[~Ï«?_š+±Èßè¶xŸ— —(>/žw«›ßŽ´hqÙ8œZ%÷);ã­Ý›ÝÃtoág_,‰†oLs¥ðô-sÎ+ʇŸ+ݨaž,%imN÷Õ _G•*û¯¡æÆ¾t×ôغH± 9ù|¢qžò&Ë)pþ,Žd‘cË(Ww£%€{P_`þœÿivÂï[X &±2;ðã5ºÛYßêØOl¬Mqº¦Ÿ Ãú8T åbªPâþÅù£‹®òáÛ/ô%(V?ðƒòrA1,sµ ïÄA äÒŸ˜qß0 þàÄÆ m­ˆ)¼Þ‡Ò¯†Ý‡ðЩâ3âNšL¾¦×¢§()¨aLýT. þš‘2ìn0f¯þ¦#ÃêP:^z§c5G9·;+5W=»%Ð, $À+(×nX…Óÿž%v´84¥"ÎÔÎt6$Y"³h5 °|ôz´AàòxóÉX0 79òŽ™é\köÝuÊ/X¾1‡lÓFÓ¡UúÕø|øþqKqjnL(bFºj·°²Áûâôú‹ÄÉlò§Rôñ_näPäÀzÊŒzÌ%E·%è%E[ø¥<¹R`É·i²M’ z3o”Õ¨óÛŒ9­gMÜ\õòOœãí' Õ\«ºÙsÒò#Cjw<À`=pÓÁ%;NkT»ÏÖ»”ð®¾ïïÑçÊÈïŽ YËoÄ B×?®½È³¨Bìo`ÌãÇ’\¤Ê¤£è&8 SWºƒðGEÜ ¿æâ·¡•⽘·o´¶Ù¼òϼK«ÊwÇmîãõbY>úáÕ.±Rdö†Á\9€±\4ÃpÕ+©Íþ^¿ó¦C®_*MÞöý³ò€ ƒ†ÇÃíNûµþÃÄsZ…—_‡a¨C¢fÊÚ™ø·ÍYÔÞs¢PoEÊaŠÞ,â±|¼ÇŽ{w¢Ô $ûÄl®¥]åŠþÕÎÉí³÷² a´O”ÛŸžu  fS­H*Ä0æa‘I8gÛ«~S°WVRX³¶pÃhŒÐù*ƒ“w«p°Ê±ÂY©u ´÷æhçp~ø[^YmŽ®|ÿ³¾ö{ÞOÔ²sØš^i|=àššv:Rn}ÖJÀüÔðS)èý'¥OѦ<^™eK›ˆ®,ÐèÒÔæçÌtñt‘w+v ÓíÓ¡Ð"Ñ’äÛ_›î”;pSq»V ºÄ¹(ê‰Ô—ö“0‘2a±X231Š.¤æÁÞj…k&jù%å—ç‹I1Žÿ›µý24A5.˜³÷=lBo*‹ÓË~ÖØÍyÁfM?žpB¦äÊñB!oÆ"jwp0Ï×X'äÑs9ÃÕªôj¸ýF¸X_oeqF„®™µ9×ï‹Ö5×͵/2%Z)ƒb 2#_ûÎ+÷l°ÆÜ5ˆÎºv—¨Ìåêm©¥¾ËýÄ>ÎÊE¶ß-õ03ý|+EÍ÷õ¯…³E¼‹-®ß€»ˆ×ëåËQé7îÙO\±kÊJ‡Óµ.Ù< •~u«·!]ÌÕ¶òGå¿Ëٲٷ ØÈm=kô`z- L›¸<_jÀÆÑ«Ç›ädqAûhŸ‡ !C®SÑ’‡W¦å&Õ'§K‰[{rËÛâ†;â¨hA"¤ÁŸßk¼%|-ðÚE£ù‹Tm#ˆùm$W¸›K‘K0†4x;¸Aê¡Àl™I³øÄãs Y õ}~ǃšh ŽoOŒè6ai˜‚ëy{+œ®ü)Ùð\Ï"a$œ$ lßÀt H%h}‰OËÌ ôÒCû·4b¬u¼BrÕÏ܃ñwæýÌýå¿Ü™¨³%4º˜´|ª.rN ‰Ä5 xÉÜé/lÞFKGZÆN<Á°èàC~ëƒÒj)]·Ð “¥Ç+@·¼RÖÖ§]ªÙÿAþãÑ:¸Ž¨n¢ÒÓê.²«q$ÒŒ´V|@üÇðÏØZˆWÚùµÇ ú¡Ë±2®5–>š:£f{uö©Iìä&š[žï$|›ƒçnQÓM:]ÙO=GFÍôôLã ¦ÊMAZÛrYìàÁbn6ý3R'|·nË—J—…‘uRHÈGd-Oa,XϪKn~$n@p˜7·‚ðûnùps©¯EyÁ)y¾ÒNÏ[EI—\ÿêõŒü¤Â²ú…xaË#aц©íÖ{™Ó“JÃÁ‰u«±‘¬ÖIjFŠÏ¯²ffÂÆ^SåZõö,õGÞ)R¦6ƒyyZN•ŒµnZæP £Ë]‡Ï¢0=²HxÅ×’g“ÅØ®‹ úŒòËuJÏJ£ý[nÙ6šp³©s)òÅ…ÿ"ƒ7:4ÎËåÖŒ4vú$¸ÿÀñöTÖŽJŸÐ”ècëóÆZ6视[L<tŒðò´½R˱íGÚÔ¼˜¸2·Þ€ô‘´š†¿yˆ ôüL¥TåzÎ}A ¡~¤,x¦§ûð¥E"Úóå‰Ñô,b²ÿXG/ëªW¢;¶Ý”Æå‹‚ Hß8™L …Šbr(”Ñ’>¢rwIÐv^|E2ÿ†„žƒ€ë„€ üEdú Gæ9®ìÇ0™oŽPTf•—¤¦Ý½’´Ï$EFÛÉe$ÂTÐP¦Œ0žÔ{ >âL>¿AÆèz¦r5–ëø™–°—–Â'¯üùAè‘dá1Ú”òÔWSDuî™ôÎ.Ç}”ØÚ¬}tlM©K¨16oí_#8Oèðyú …HF“èˉ2òµ8YáGœì'­æÏ ôíPûsL+w WBö%HbÏÇv³m¹¤áOždŠÅ–¢„Ñ™6aÛîeª@È&ÆþµüS}$}IÑ^ôg/@¢h44¤þAFÇÂ$øûA¥¦“‚@/A²7^é‹þ3‹ÇËdªVßzž‡ö„Ò–iëZv|žS+¯b|rÈ ‡rñÁÜx%ØúT3kã°Ru«¸™œ§ÞN¢VjªTÈþ$=AVã.Âé“:ý†õþ‡Ð6Lh ´ÏxyFcÿõ&àQœ^=²^ž³ÊJŽ%5{z™ à† Å@@œ/ÃA"´x h-"è¸ô’* Ô%‰ðÑK†Øë(ŒgU=GÌ®Ïx+ŽËÉšé{(˜6Ä7‹’µm{—n7SNGGþ}‚ºd½3žIÌÊÈ‚‰ƒCu­& D¡êàà€ŽŽ¶þ w-ÜnaEd{§ žôR;ÙÙQ\«Éäĺ]7í—[ è;“Phãû꜖©¨©©IH<ÛAì¼¥îˆÑ³³³[™¾ŽIl9{ˆœû§§§À¤àÀUà^Ð`´sN¬Š‘‘xàã}$¿¥¹9´ó'š÷ÅÔû o{{{)))77·'ðëðÐʼnBVíoS¶YÞcdddñôŠ_¢£Ÿ¶s£MMMoSÔ;ÈÒMÜW:B檭Úî›Úî78¤f%`wWºµ»m0(´aQD&g…ˆ’²Ùi¹õæl+¢í£ Q___FFF}‚,O3íΰ^Cmmmkk&Ôžoa0œ(·!!çhc“Âç0}²æÛb¤§w÷ ×kIÜybo¿ÿ“Åïö|çÑw $9ñd…°5ÜÅÂÌœ ¶RV!++«¡¡¡ª:&‘4_ç°À¿ìçºwÇœØïZ×qà1’î=ðXJ£•õ'¾ûõ:ºA¿ùôé77÷p–xàÉj÷b“çÌääó±&õþ­¡4~Çß aÔ^ŸÑÓø<àú…J˜˜k-úM‹€éŸŽ;qhi½ä"`0¿Ý¢ÂëÑoݦ+N¶<©¨Ô~dz•f;;;â;ÊÑT¢¾W‡-¾W'Ý$,ïËÝ( •³. 19Oc ¹ŸtË k¬c‡,ílltš½N  Ð-y3³µ©ˆÔÔÔݽ= n{ûR}v'lLLõ" È$‹˜V©vlLŒqõ\cc#3 ™Ybbâ»h*ºœOŸSø¼OÍiRùRµJ"#"JÊË7.½)Q9c «îìzu°h`2qæõ .p«P(ZP@?ÂE‚‡Œ‚âááAOOO%âõcæ«›¯ï]±f‰åà×1;6?cho’UcAeŒ %8ê&´x€ ¥è — E¡1…àe‘-kê뚇ŸÜ˜äFèìYy ±°°€U¦§§ßÞúôhëëë[ZòÀõ—fgÞŒ% lØÚÛŸ³:r§šÉå«i4.:*oEP‘í¸ =†‚²f_ž!À®ÒWvv¬_XùpÞlú˱þîî÷@, GÛÓóªl†úÄ ñƒ5JgñÓbœµ—-â1}CHZø?I[«¯þÜöïuº /Á4¹S°Ä™½gdãº%ϼ 7†Šˆ{àxÆŽ<Ò D ÿŸ¿«é¬åZìî5Ë_ éç¯&Wü›ýNj¿Ë,ÐkÜwVÿòI‹‚ábwûÕ+=ÖëÕØ¨¤ÞqN™ÙÔ\qëµz³iô1$NSi¡¹àùâC?TÖëRõB%ÀÿÄn·s;áø[s#,‘‹ÉEū⧵±_1¬“·ÞSSs®TÍ•wBн%ìOöÃ¥?…Ùf<Fžz» ƒ-Ex¬´Ö¿íÚ‹Þ[áŽ=iàdYìUÞ>2|ZðÙÉO¶É|¦¾7R5}¼—Öø…ìü&†©mq4ñ –sq-Žqvµ3Ýòð–ýco˜ÏHkúú*“˜prrRCëð®L®ÈðýôL¿½ÔY^½­CýãJÕ#5CZFÝÙÝªÇ ®±')VèÄ×¥Çzß¹*‹   z444htôr“gÅ¢ãV`‹¼bõz cÛaOĸ†{©Œ—rø=^QM¾;ŒË²h@Y/–YÓŽlY¤¤µ¡Gj'W1¾Î§V-_:¨VÅçîà‘úE&1uy´›´šrº¯Hm¦\QqŠÏË¿U:Ñ©n«Î®zKÜC92OŽ ¹JöéÒÐÈMèý½ÔLn‡ÉÜDZ²÷.l·²Ûr,7ÔˆK“ƒäÉ ›î7R¤}ªäjí<¯x*ˆL±|º¨¬Õ-˱ã²6óï]5ÉSa¼¾Ò’‘‘‘ø Äøì¢|"¶êéüþþ~m9Í+©õ>i+eªœI’Ȭ@iÂIÌ Õ^\«ëAVps€R[`Xöo‰x'‚§ç9i†nÓn«ÙXŽoC¹•jþÁÍœœœÖ›M 9eeeYÙððpUFBTÊïß¿ ¸nÂÆ¬W[)ÛÙÙЭ¥¥dO ÉLQ_èvWø_ôÌD­ÖÒÐèêêÊ+,”KÈÌ^.-+Óü‹Ílú 1#?!{þü'æ:¸··W8C©UFZZÚÎn¯ÖnfÉk-òè)/û?W?·…ή®pÑо {:ªªÆv›2±³Su8º _–ð8Udúq3í¤œw4Þ'GÔhF^] >/'Uæ™Êj[y™cC€.Ÿ‘q¿²z•Öª>K(N“³ç¡™¼’*R™u¤»7–-váËh¦¢XÍËë?1in¤~vçX:g#\oTäSúãtÕmê¾Fø²IBß_foãMÈ‹+þiZ¤4M(ðUJ>Aߨxº8OG Þ²‹caƒUR¼3yW%›¨×GjÇ8ôx¹Íz%“œ;`Ê¥IR€—¿ËVZ.!iÍÙó.”¢†m°éGS¶d?f'[ÏÕ£ƒ?xFëÊÍœv¤ìpªêv.ÎÛÃŽ8öÚl‚ùF2VWM3!"$¤f"^|'£+í&|idf"ÜBÂÂáßüU©LÖÙNºf£©®Þ¹e6õäÃN ÄÏ’*ÐïmáW>ûŒ5…<ù„ðt_<Ã…ÏÃÁ£O}ÜwNx/‰™Kyû¾ñ †W5AN?;Øršd)]R]ÍÊ2i×\±5¤²¼1Rü:’!nón…OvÊ›ê'Z=¹a …j0ÓÈ•¸rJšØF'æ/‘Ú¯­C€|Å¥•‘¥p?r–È_\ «D?¾¾w1Oë8Wr™¯#~åÚtûtGn)/‘ӉݡJ®uë¹×ˆˆjÅ剙AGs޽%á ;nŽ ueÙÙ&€Ô4ç²Õ…GÓÃòÓc½Z:TWOooÏé÷¶ˆ÷é:õÓuï5ÊeŸeuŠB êŽî&±AÒƒßÄ×6º¼ütº1AÂaØìå ¤ç+uõ‰§¶Å³JW ËO€ú;R–“Û=c |ôstdÏ®Gæ”Æ ¿~A¤Wï¨(#cmgç{»SHfæÑ$ÊÌ À\i)ÅYA^žL€è€æ ·ÉÕÑщ£…/:,¤¾Í†`¢¡Ê悌VÖÈïÙèr4[xàb£;K[XRÖ-äžÞÞ³äfž·íņ ²­Zòs}òêÕ+&&&H—“rDtô–g¥÷ÞŸ³|³ˆ×ù¢„¤$KNR‘÷ ÉÉ€]àú†üq$™Ý·b{œåd÷ôH\LÜ‹ñøÇô™s“bù 77‹d(ÍÌÎjeÅÇwÈÊÿmf°õõïS¶“ì=Ú::)úìžp}?¾ÒÀ¹ÑѺÕsƒ˜3;nÎÎΰʮ.HÀΔ¬ƒ˜Š¥¹ÁÑûDëHf‡'½Ö”â¿mk‹5˜ÅTäîî ö8ÎãÍH ØñO$@™ß!¡ò9- ö~T Ÿ8YëTóÙˆ¸0óø¾é £§©÷F‚”QùòÉ¡¡¡Ã©¼Ðߎž**£%­Öc9tòIöKÍ‚||IP jÁ€"`PbLì[ Ç•––noo—¼¯¸,¥jìß:@r@êýõⶇ§½™ jûxãl¡pæš©™™çÁ|7©“ÓÖ üÃÊ[MÍD@bVšv3ÍÉÍŒzw:ÀáKŒ…‰ùšÐÌb/£ãâ2äøÂ×jÞ@èãwŒžngv&™*æP©C%Т……aaá’ââr£6C-­F¯zF!¡Tq‹9 @ѵ0’êön7p^…hkkêß8 Ôé0*;ùû·à‡T”MÐå,%GëõêíÅž"}¼aÅÌÞEHHHóÕ 9 iOn÷*T¥¤¤¬­­³J¶7 îáÖq´}§õ¸Ø›4ëý n @ZFmkß«³¿çŽÉ@ÊÊÊDßoÉò‹}©±›)OM%`ÀÁ˜ƒÅ"ž:09ÒuFÔ Äˆä×7 |¨•Ë×…»äë–9ÛÆÕnae…Š‚â¸Üš2Ïâå°‹6 Lê×òñ}@€lŽd=m¦9áÇ*Æ÷™ÛÖÞNOI\¡Hc)ðé:ðÞÙÍ­PìNNWú4 Pnïè‘ðÞáa&§É§­³#&ß%Mï¾ÛÆ€ùÜæWM‹KgÑ€9QŸ=óšÞvròÜ Åãꔽ–—ùõ>]5'a³æSê ŸoÂñÜ ÌОˆú]køèÇ&ë<·h…<ögÑ&ÍOçB‘`ÍÂF£;Ý$þ—Gå<¿#ê3Iø_y¯¡‡ü¿«Wþ„åKÐKÙ¸ã`dÏŒG5Z<,¼'›`®öT£f”¿¢²Yø*ܯŽà0­ åùê°,O¨Ð ˆSzeë¿NíþËNÍӿᮀmå÷™§ {–7ìJÆ@þÔ utvb£+ЃI±VVVrXýãIÍröþ Ñ¢ëiõ¿»dÓ«³ÿÝàîÆÆ/ÿÖSZÏÇåsJêCÌÂVBrÁ+‡I›™›çYd’øØàÏoÞ¼~ç° >´ó_¿Í’iâ_)ï ?‘ÆD»ºZÑ;Ñð(ŽðZ‡è˜ÿ¯|õЩ™· ¿¦2Ã’u®Ð6b˜w‘ÿ¿²È±¯§Bº•xO;ª'ÿbÉcô»×’(?Tö¶4ß[x÷ìð¼¨h¼¯¬FDý!¶ÐÍñt×)I²Ox9X rÖ†òƒ›Æe:àÜÄ!Æ2`;_^}ªú-jUæ¡yqY#¥˜•ÖlŒü±ó6A;çÎ-íÁ 225ïÔ;LK¢)]Ô£s5 qN[®|Ok’-® »»ÓEt°å{ÕϺþOsžTiyÃM1BušÅÄ¥´7]%FI™Há·Ú‘ÈFØf˜7•>õömf'€ Ÿi?™$>õÔaS<Ï×=äÕ-¿…l‰ùÈ³ÉÆå ³ËCÌEï¦]jiew7¼k „ÏóS÷ß¹LÔOž=î¥Oqñ~ýÕè¹xê^‘WB'Ûr_æÊGSÌ Ø›f3Êô<œ‡/–•ñµ5­„äå%8d¥zŠ]8IÆ$uø&š±éÞàùOyM‰kS­*×U7%¶Å•'- ÝôŸž¿'‘on6ð=K[Qå q;9Ë‘²¦'µ÷%5½®eO]¾H£¶êû€¸WßÓ4JæâE?0V5ù8Ÿ›BE>Õ'(×Çö§«l~…:<>»êêê™[¨Æ;…AÖWj‰|_Ù°Ã4!Â¥tE¹|â°|ª§JaùB‚ðoJF:lƒA]^ϤéAVdæœZ:¶M”²/UÑ_aû£ÄïüÐ’Ì+jÕ.£‰l-yLÙ‚ÙV›Þi^EÑøÕ0-]Ï¡Žô4\FO×ÁvÂê‚;CV‚ UÞÆ ĺ%[l]Uˆ Ñm—d'@åv§™~iÖóüPùöJ·„?%j½˜±éÔ×iŠ«ô©ÀÛ¡úzÖb¥>ÝÖ¡ˆ_CMMÞËDFÁ¶ù˜Šìß¶V-ZñÍGäjšz¤f0wM;ÆÚrÅ,¤ˆNº‡´Z‹nè¶:%åŒ7õµei ˨Êa!2s¸G;ÙP*Õ6Þðl‘ÖE€2ŠÝÿ¨£É'Q}ÑâƒfIS ħÌöÀx††ãL©ë6oÂôORWR/âÜ•_±Â˜5ä9~-)î‹ÚµšMðbO$̽óùõ}9°Yi {–ŒÝc«ž; £„‚WLÛäΈvûâã2e9J8üof54§¼G°V¾œ@Ôn(phRù^Å@yææú¨ÙÚv„CO¯^Ó4:2Lyõ9~ë#ðͰô¹¬²’(:P~| ¼MίèðMZ;zIÓé)—"dàlæŸÚ™ÜøšwãLŠ'ø¢Þç}-7ÕØÑ¸S,Uļ0Kf•ó©Páe:B¦7¢sè66œú=¶-û5söÓÓOg8r­WYb³ÚαÐô­¥E¯óÞ1qXU1\™€»ï»íL8¨6™CþHl'žváÐ_òíñqŠÂ—Yô9®Yû¼ÏUÿä> §%•ÝO²à͵À)˜¼Û_ãž³ßO3/ Éè,h¦Y­.¼r]HTf‚_ÏÊܪ®……JŠ»”_j SͽÕf8G—}ÖiáGØòØ0Øñ=¾#îéÚA‡w6MTàþJ6îipw?n£šJ»‚ãÞì7–lœ%»#“!þ[ˆùQNÌòÔ«AÆí‰â‹åj…Àœ¢ Ž¦Ã”\ç8Ú‡]Ü ‚ëÓg©ÉvƒY•Λ´@¼…g1qc4Vt´©Gµ=y©-–²áá)žrñþ¸z¦xŠåÅ?Þœ§ù>ng£Ô`:†ºõ»à­öi“VŽ,$»…‚t•)*s‘Q'¡Œ/lB#kØö›ÇήdˆƒSÃLf?­U¦‚GÎýG2¹@9"j·°8Úüý:¼³ÝÊ“´Âá’q¥Zxú‡«.GÝׇÂÁ†ˆ–Œ±Ÿÿó1Vä+éâÙýƒKó.‰®1°×À϶®EÖbž )Mý[#ÒF·øâï7”ÿr¶ñÑi샙ƒƒÄÔÞ?0üéÓmÊß³·ÝÝ]55µËƒ†FPÇþB½Ó\•…»»ûÃà¿ií‰"‘²ÈÉç)[ÿÇ›-©÷¨Æy-OwüŽ÷ëñÊ€&¸MÁ–åÙŸ´u·°ØX‹w¬ÕssC€~ë—,Óº›³Ê’z÷îJœ!ΚVP. Ê™“Ö<k¯h½-ÞÞÁ>Ïú:ôF½è¦Ž†Áš×erð\–ý¯2„Ü™_½ÊÎÍ}ÍÁ¡ìæ hî !·ÝÉ¢ããã A®žÐ&¥?cÓÓ—ÀTzººî78cû>4–Á¿<‹]óhš)Õ9ÛH6 ¸?éÅ1ý(¿"Î3^nÐT÷a¥ÐGóµòn~ÈÀÌèèé ›<þ´···kÃÚ¡Õsöáááu èù¤ºòœ}]{ã±Â®Î®$ÑÿëþïÎΣà™ùz§å*‹`óyVûçqòÀE;*µÈÃùDβ¿~Ð ,!9ÕÕñmXÜiC¦vÈþcd^lO Îk=xc ÎkIì_HÉk—iU¾ %•q´œÇmïþt(x³¾†F˜5 ã!ÌÙC¬Ãó‚ÿ~ûö Ã# zü¦üÌðpwªd¢@±Ée£²H]ê=„Êþ÷»3ÈŽ˜ÿã€é#Ea3ØÈ÷ŸJÀX-)€oIÍZS 9%œ|ÿk~ ‹»Sp#zv<¤…‹Pnÿ t2Êðomö'ÕÝÜh1!ÏÃôïÝ&Ÿ_…'Ìÿ0éÌ– ƒÊÄåy.y[ýŠXf¦§§gfÞ½›Æ=d¦ÅƒŽãÑɪùøáYXXtwu5,"¡â0~©««û{;_cs_°k@&fZ¬­­œÝë›ßÙ?ÄíáöâëWÒ ä×é~Î ä[`Â/Àx tA×kžÃ¹ê0èßBvTÎ+=Pk0L y@ âìì,”===´ãMÙ>Š™ÙŸ®÷U´=ú8;sý­gà«ZZÒg}ø{ÌùãGŒrâc«€,9%9™!y ü;ž2¢ndtä&¾½WÑF gûÈÕC‡öÌÚÞž6¾UUÜ4q0.å(JœmssÚhü¿êL‹¤]0LfvqqÑÐÓ“‡ò63.--M4‚%QN ̱¼áL,_­O¾Z·Œ=Ù.o·þ'ÁÅ›¯˜$ìÛ·ÍÍÍ££*4§÷TdOt¾Q‹›:xâ€Ægdd„B½8vZïÏš×v蜯þg³ôÐqpZ1Ù‚Ž°× /A¸555Ø|”"^£Ö<ó—yy´3S%ï}7×eÝ6S éšowKØØØ‰[˜VtÞE \S[ûp;ÓFŸã{ÔRŸUëùO¥²pbÇ£)Qn#_>ùÐrÁX&òRBFFØÆ§ŒíþþþÁÁA«LïP(%Î;KËM eŠ®Mp§°rq9ß]ø™Ïç¶´<,ù-¶øzš˜˜##Ǭӹ-úÛƒQúûïïo·÷•Ób•××ן>ùÒØÚÚîîïSN÷tHü‘µy‰eVÚÔô·`…”2qÖiãJQ(øçÈdÜ:#㈈ˆ(§f¢˜ŸÇ@Àâa´²Há¯v÷®0½ßõH3— ¾a=7ÞÝs÷Ï×X`ÚÁ¤µµµM‹g§]áÁº÷ç;~9µµ¼,[ÉLÌåsÒȱ‘óN4 2'…+7- ºnËûÂUg_G‹¬ºÀͨ­=«pŸõt¿566È×1MŸ»ƒzÑ÷Æh’ÀpxºQˆŒ(JæÂüü´¡ÌÊ…ƒû¨ºÒRÖG%99 £$£ÈŒ¸¸¸ÄD„6<š€À¡“ÕmøðÊŒUDÄoªXó/"›×ê¾û`:Fz3i[«[¦¤ð·Á""rÓ’å’““ÏÂWWMÀ©}æÀÊ^ý­ÿ3šÅÆÆ*NL„ô Øý=Q9{ûÛ±^Ÿƒ½¼¢bË3Þ+)q`övÞž¯·»›Í 1a¤hbÇM(CŸ½~ÎÞÛÛÛÆÆ‘? Ú¤rùÜ [×'k€ãßV^íÕJNAA1eË+nèÚ´˜’’„)nâ÷#¬™WÚ–¾þ`5+¿¼¥ª¥å˜¼¦†gäÀÈèÜ{€©ø›?L¤t®üÐfmƒqQ}èà‹T2tli©ÕvªxvvöóçÏ!˜$øªžžüm™PèXejj*Ø’ %¸ýÛÄŽHð;ÅÅEù$VAý¯Ý¦Þ@Òa#ÆÄ3hø]\,W¦U¡]¹ú3 °§ÕH¦ÿÍFòš ü÷òr–òYÎýýýu¶)`u´ZêV )wxª[ÀðÆZXX¸A¯%bÑ:¶ >&Ëô¿Ô¡Ñ­¶TÔÕÕ•–-üüå Æˆñ(†áÖý LóÕŽr£¶%sî ŸC#mí_G*vNNW¬`™Š‚±ŽLL ŒÐ¦–QêvîcMxsee¬²/N‚.JìÀÆ}ƒl‘3P:Ÿ4´´z£¼¥‹ƒÛ’²pp\5¯¹À±P²6q™mííŽÍÑðFÒÄ«ÜÜ´«yöå=_ÇöªGÓ œwYW³—bN,k‹ß3#€ŒX¿pÇ>‹»pwöI›‘ ü*ÿ-Ð&}d¿ê)Év¥&Ÿeâ8í[çv_Idýk¸#µ¶¼sc“NÅåó¶þðÔÕ9Föoò‚«'·ÌÄ{tög_A@“•R‚”¿5þôPK çDŒ<}Þž¼,{0html/images/hotels-site.pngÅzeTѶfnÁiÜ!¸hw îîN w Ü!¸7Á݃wwx{ïÌ[kfͼ?Oj­]«ªNUª}öþ¾oŸª0E°äûwïÀ{i)2ƒµHÄ7Ð#Ñ„ôÑØRLLQZLŒLÑÉÞÌÒÆðÈHÒðä™±Ÿ^c뺩fOf\쇘›Ðð#÷œ³<’-žPH¬S ›¥C¢Ò –Q «yª)ÊFìÜ‹]·Vîúfß6¯^Îï ÍïfŒ7Ÿ:Ìû’ô 1£pÃÞïñ´º!·5ưd™¢/È)G÷õÁ¼äU@ÞÀÖƒéÃ$"žÆÛ^gºØ“@op¢ÜÕˆp¶Fît©È¼>2CÙ'T %@,@1§µ&Ö ÐùÍnSÐ o»i褎ÛÄ’P 8‚ Þw~D`ˈ‡ùIø”ÓŸø) P´RRbÃdq)§÷µ€Ç[kŒ©5ðŸCá;Ûîð˜ß+:#Ò} Íîbv^W¼Þ%ëÁÀàn¹@²X:°Ão¬E°MÛ)AtÞصÀƒÖÉñfW:ºˆæ‰nÿíýá¨àëGj8ÀÛes'ѶӮ £æ±¥.®Þ—8ã°b†^¦Ñ¼!ë_æc§dëÌ{Á—x@dq‹Üj#ÇÍsLéøåÔ;Æ}ÆTØ„mT{^r‰Ýjíý¥9‰mæ$˜YÇzµ7­ß" ““CÜJÁÍ'í®°Tbñ“©¶yÔÊ…ªµË¸½zÉÜ÷ Ó¶Ç3Çh¼>nN•+]Çû7¿ÄFا³Ðæ¸?›×¯áùuvu®’ÙÕ°o[œÕ*Þ°:[ùxØöz`û×™ÊN¸«÷xD}>‰úm®ä/b¯ª&p,eÕ\UFÆ„µO?îܰ˜1™VíØ<m üJ§ùÎâ(uþSýË$Æ¥hz´'É­à†¼.ˆ)šÇ1Íë›6¦>[²êŽÎ‰Û¤û¨­ÿmLp)žiéy %s„.FÛNʰgÔýÒøá¡ë0÷Ž=xmíÀÞéµ¶º¤¤òþ SÖ}¼>£Í½éú³Žúãjt"øáya¢Uj¥—Dw¼70†=káúÝõ˜@…òìîˬðkÛ±øÆpÌìû*4Ü÷qúe—‡ ‡®ÐÝâÞ½Íѵ«ÆûŽhn…|0¸Ì)W4ú½ÃØkž=ýuuv<4b§m7x77\Ø“å ª³®“öŽöÉ}|½¤[³½1¹¦²rW¿£Óë^pÊ.LÏõÆ_æÙ§gaô3àÇ„œQ-@"68=)(*É6è™a€fŒ®r~AÿÄ-‹oõdëiñMX F“žèX7VI ÇщSZ«-©®$R^š1„‹s_ñN‡ª[]Ï47<³´‘@M05¶L©tñǵœ·HІ‚ÎÚ(YßYîä¶²°è}»Z‚K­ÜÓ¯³œ‡®„ Ë­äï8Šüðª‰s*ߟ„†äí*UaR,úY¿<Àx¿Ñ‘&4¡=;ŽÝfå´ò¸ÛESº˜ôcë«ÓpyѼm꾓 +—F Q!Éúþ¾¤ó¥Ú²Þil¾e7w4»Ü %н“eNq˜`®ÝÄ^ž¾é øœ˜·1`= žPèÇÇ›‹g¢òbinê8Í•Ê5ê^gXy Ë$…«]àm—š² ê%·]ÕÚ$êÔÿ¤¹vñAs7V764Ù]rm¦}M> ]ék¤ý­b=kÉnѸçppÕÞqÙur"«'¸B%¨3BŠ,˜åñãvfºØ¼W( 2û²º‹Ã‚iÀ÷þJyÛÁÆáž¶/ßnG÷Îfãê”ÒÙV«7:V¿Å”E±€9À$©ïÒ¹21ÒRýÝýof÷ÐÔIÅ…ü¾·òû[ÎÓÔ+¬áµ ‘ê]¨kë?8™S™ÏšÊ{Øš´o2\n,?ܶ ä.÷3ò2ÙÞÖ÷×…¾t?!±ççê9¿dÓ@nHn¤‰áŽ‹é>%û„þW·ÿYc ó‹*”-â}¸†L¯¬¶´£lÔ&CAž Š)[MÕf[é”[EE%5Ÿ¢™úzíûX™Œ0'²+g`|zÚNz‡[ú˜ëŠr»î3l|NÐdƒ­‡qäyî`À>S­ñ®jnJA}¤þÉÍÐ,]mù֭긕˜€¨,#<ÓY/Þík‹W o¡g±‡ŒçF[³¢ÏÚiÆ™wía¿ý'óuAeYEö{øm;DA²‘o¥$Ì]˜Õ˜¼8³¤¾,…ÉêÕ”ÏU ùM?=^áŠ@ ”×&ûØ_T]œ––¦OMu ÜÆ¿üvmtQãkÝ>¿T þæFx¼h¹HGÓã×ÕSt¢¬bÝ¢=Æßn@:LXwê ,ú®àË+èkVœßxµºXfZ°=0fª‘ŸÓü©ôªtÉq²ai/~Ä´IÀiûdv“À«â’³þpáÙµ›ye¤,¦y{î‡3¡»w…c~IAóøAOù|5Y}gn°aì¦4º<å»… ìW5·ÝëD+ó¯çªW©"ÙöþK—ñx+,»ah|hÛí~G„1y–®¸_—#ÏY¼‹ªÙñÌõ„Îü|8 ÷ÿìvoO%µÔ§Úß‘~žþ€0Úˆä!+¡­ ¢®k#)þ„ùñ )  Þaã7 ?˰ ‰ýä' ¼-ïDŽÿñ®p5.vwCHŽâ(”z3ä)˜xª„I‹6c8CA­NMX(PèWG›X)Æþ=3uœÝ¿¯é3sí-)FÛò©òG-óE¢ÅƒñÅÚ…]ž6>N^ÙfͦÍfêŸc ¸v¦'F$¸YšYŽúx«¸B¦#?³Kî/n"Ÿy£ÑR¢é±é®Ô$ïR¹ÅqMÚæ¾7j1ݤÞ$ÆäÂô_ŸVv¡ƒ2ÐV~(Œ¬i²)ÍÐ]ÁMa’½Gý.!ü^^†]GV‡ž¥Lµä¡ ©ìºd³œãSž8»Ø°hºt«μˆ‚2iAÇgV‹Cg‚sÇ›iP­ƒsMsnzATRpý¾;!»{ëñ 3*$º ̱ûÌ,Πëý»_]á-‹ä)(ûÝšˆð‰Þ·—?[_ˆóMkÞô 7Ñæs£ˆ­dNöaP?‚¸cF#ùEøÙ¸-)Å9¯?-Ù´˜JXîÜúf=¦×8M¡µ r z0¬þôèú´Qb,Bc¢àG[)˜©¿é‘Üaó¤Ûsß-3$ž.k¥WéW¥×ôrÒ¯ú¬Ùc³5D<†»¨^tó},a[oTÐXA3 ó¡-›ÔsQ0ÔSžhŒØ“A8Ž‹óÌîðQ”ï—…ɹ¼·RÞ·öÅ1¥káIÀH´ ףσyF²!&K›òá“cŽ"oqˆœÜ˜œ¸Ü–…©Ë»–­ï¼‘Í‚úÙôe›Iµô4)QúšÝšžîLl¯ÿÙú=Þ<„3t i»;·¡vNK ¹œ*@à T~ô¯Mà/àÀ‡¹&7rã CÁe 6°>— w¾—£— O¾—Ÿêˆ ž–/êÌæÎh¿bÊö#ÉGç^§x'yÆò!<:|:3z:ZÁå´üHõ0µ$uß’ä‚Ê!qÚ©Ÿ“ 6ásÉÓ$S¼¹‡Å!Ó:³Ù¬6 Ÿ]—-·t°§¥jÎ,Ä BYcAëãã%®–>·þ›9Tæh˜|lùž¿TWg~e^€ª±-Ï'Ü7ûŽíxçý–±œF>ö--W×>¹k»ê¢ƒ2Hëf‡ ÂéV´ÜL×éédoî$=ä’v’•qµ›ªìMqËiêhšàd…æ3ì*àA±v3!!âšóÊ·¥>a™ã¯w*Ìáh‘«öiØ|µz‘=­ü]ÁëȔüWøÌ´²L oå^§©Ó¾L—¹ƒÆÑòæ!µÐòo™¸}¹OI†çÕ@µŽñzÎäÓg»7‚,{&7ªô3<®=¿XMÚ=”YÛÖÙF@ü"€ÀþUWUo„‚çkh/Pí¾ âözÑ(¶Aö>6APDÖ$ìÈÃÈ6¾›½YU¤i g¬k¤-Þ2¾7ú#B’q{\BWRDŸ!CÓl³Ž§Û™ÜåÉÖzÙ¶ûŸl©öÒù©{Õ\ç^èã«aq~p¥¾¶‘ˆ2‹›Ó?F'¦Y±õ"xð‚ïÿf&ѰÜ)MQˆdö8ª ©K¹Zwô“àç‹EPNÃtµ»{¨«Àê©@ìVé1îºþúäV°Gú£ÉÛ=Ò‰Ó™šŠ.¢2P…V­«6çÂ0nfÑ%ß{¦y…ãqEÍE"CÁG%WJÙèâRõ¸®ÆENBÓlMèøÙtq!ã+lOó2Zî7‰6-ã Ÿ—ÀV¾Üd †y¯ÌÒxü0ïg&ZvñAåX[¹·ieáAx¿_ÔW^Ì)Ï·öOfArQEãr¿Ù)¿`Ó²øäIêâ¼Zdúùð³Ðx6d†”–ð+yöü|È$Ižù@ÿêPÔ£±ß¿ó”¿‡é722ë¡ÉöQÖÖæ»ªøæh¥¡¥u?§cÏÉÍ]”ŸÒ!ð3.>þâ|€t<ƒ—“Óµ/GlѤXd©ÎrºÅõðæt-;+‹äS0`ƒ\PÐwŽŽˆàwÞC¼šC“ÏH u;]]™u-@… Œ‹ýãä)!ñÍ“sö’­ ÏÀG ®@Ù’ƒ`Ôìòb{8Û÷fúh!=lž&"èêÚâ ãh5ZlPÕ,½‚wÙìÁqEEET¨¾÷q}[›@íâS',k?&&&³nÓúqlh2³=bw¹Vío;÷uŠ7ø•†þNNÍ>÷ÛòòòY}λc“c™ü²²²hD<±YYcø:5&HòßYEп®´º¯¹¯ùnõG=^Wùgffʃ$òÎíý mvÇ2¹;-ÚÜ\q™a1ár~þ<„ÆÊqý|èÞÞdžûoÇÆžÜ\`°h¾÷y^mM äá ¬á-+#Q´T{{{sss™F•~µQßÁl™ ÃëYˆp]CCôv³þÈ%%%ÐÞ4:fG¹×ŽœšC™ÕB½bÇò²Á"plllf1[ªÖøÛix±ÖÜ¿Ü~¿_ÓÙ¹vÖ G\©DÕ‹ôÂE tÚv9–H§DaË©üž4!`ÀƦ˜ûôôíÊã%3-íà>D—ù–+vÐ$Ëß¼ÌÇÏCÌÏåûp•Ênî5Ç$Ô¥¨¯ï7ÌÔ(—-´â­zÞÖ›’ÂmÜÙ¸ê%‹·ÆÍ%uåüò²÷ÙºH³®¾Á¸)ÐÓ½{|ººº*;Ǩ߶p‰úuÑFÈýDWY9¾(j7öb@øå<Õ<‹ E»bnÚšÛÛÛUí7i+v·‚¥|®Vc¼YÖ†YܰíîÙœœœÂ¯ÐK‡‡ujÍÞ§`À Ä¬y[<7”{lãµE@Ýv|| .š~ľ¾¾Ž¬ž›SZÙÛ¯µ{7Þæ¼¼¼444ln­Ý¨©©Ažwww½IK‹‹?G Þþv^ó¹ŒjKücû™ÿ›—3kgì½|×ìshlÏFhD!»Y$w]Ö²ûŠ4QnÚ˜/\7ºƒïîî†ç[u+!Èׯ_eO^®Ýö<+«¡ÁZèú›oÖë¤Ð: "&áÂ|üĸˆ<ývxgÔ@"èÐ|(.Cü²÷>þ–æý—ÓòÖLï´uÊïaÂßþþÇ´Èþô³ïsŸ+©€óîȲ©Ÿ7¯µñÎñ> j%Y|ŒÔt¡|ëÆ7ÂUïÓvèH”=ÊÍ“qWä˜Ç¢BæÿD¦?º[2Á'š÷]hë‘—,VòG2ù ¡ç~cB§ø"ŒßW«GÜŠˆ£ôœU#Ò|óÇÇ7ãà·Šº.Íim%Šª á¡PùãtŸýrES¡~øH;à¨Åa Ú.ŒÕã4µåÚá°Qbà$Φâ””Ða„…önP·TP›RKêqeŰvtt466æååÕÕ¹<ÝgdKÄÕ/ZNpØ´OÎåŽá`jdpe{¤ì- ùç1?»çºä†`/^O•£ýí©•>bðz7öt—_í¤4$Zf¥–*þ¾îõžÂU+¯•d|9ì.™_ó¸õÁi÷ž"I¹™6wnÖ­$åîP’H”3–N΢›ríÈø,4'š8]ôúľrOvYö³ùpZr3%Cæ€ABÙ¯ ,hÆÅQ˧]A±×ÍÝýÒ7뚥½î°[ï2Y¨ÕݹG¶lMè®Dÿ¸½5ÀO”ªPžê[ñÜ-m–ŸÞ?ìå Æk”…€S?Œ§-lt1”Ê7ñ:ðñĹÀ`Ð'LOÑ«ýjöÊ/æìU:VžŠt“ÇT(©³Ž÷xVÏ}w°fk«ä›ò·ÇÕÞ|71ŸKhèÃãã¶Ó½qŒàÜÌÌÌê*Äj¶´®Ž£c5b:ßWÿÙ€æbvvçžtå§PÕU½šQw¿â˜ÉüÉã Ž·:ÜÑÈÒæ‰âЧŠ %Þ9f5=¬àŠ „ìnt¢e½RLŸë¿’ø¹¬ 1`LV»«'x½T }µüA“"¦Å&‰+wCã¬(—¿Á–ÇÊñ¥ŽêÙ† ½¸sU²¢D¥sš—»<Ìþ‰‡M(œÁ¹î2Èôé‘õ³I(å´sZß§'òoKf¬€jê:•7mÁëðÑ(›êƒF“ÉeÑlfÓ¥Rõ¬;3¸­³2ÔýßÝÍ›n©û9’¬€õsF% JzG•Ms›ÓS¥Lš^g2w£bø§LA—üÌ_î‰Õ *Èl† ßãd«&=Šš®_/¿éÇVMÚh¥f2ÿOŽÖÄyZãA»Æ!^º®z³yëÅ[ÚÖY›ú„M‚m²ùˆ#·”"ÖE Šà [„2J²E7:å:²ùìß0çÄü4A& úï0Ði r ¢hqY(‡Á$!eã2ñæ7zåŽT¡øÿNp‡…³¼Jônèú|ÆL€ò ªKB*‰ðQ9¼®¯®LLL¤â9ÌFð¥ã?~ü8bæ\˜½ûjŽÚýP„ÞÝrw»æÿºBÆëÿ⣬¬ìïÿº3šNê±þEq'êéD qjoÛ…/IÆÔÞ¾Ê\‰9%]®JÀê8™ÐFžzÂöÍÍM¨ð#ÀÂû‹€²ÉŒ"áLp–ªÞOç¦?` šÔ¿Þç0#T"¹å­üL¸öò53+Ô¯BsešD.r3´‡ ÄÊÄf8ø Š) w¨ >ßpww/*(nIÞ v?înòÀ„v:ùX¶•A"ýMXpä‘~ÌYy{ï1QD6Áè_SÐ gÂq1·<^JZé0á’M$/''d$’9Ö‹85S,º:F­~—§§£e¦ÃžMÒŽ¨¬üD ¤/ÿmm˜lU¯©¨û z~Ájÿwñã–ÑáXéi¶û3gþƒýùpBÕu´…±øbª °¦ncœþYàÆÄëû0.œùË„üEauÛc?$5Þ«|ÄQîùäê(”44Å.~p¿ýua¡2=”äápiIr÷à½kjÍg­?]ÖùŸfª|,ÇgZwp[_Xkgqd_!ÏeìTŽmíy[’![aœÜˆ4YÙ”•å–­à¶ŽOuüa¡ñjóÔ-è*¯jù摲Ÿ“Ë10x‰)•‰x3óK×C•51¿›OnCþ{×ø‚Kì°0s~¾hwŸì{Ðõ‘uÚK^Ù~Á‡†ò .ºçlÉrÇM8U+­›•iJ¥¼­V*;Ý3R›Å;¢@lžéÃñªJaC* “–ü1‡HÎ)»*泎ҤŠxÄ©…GÛ˜ÑéË×™e®Ž› ùcJ-(kOjñcÐQ¯PÉjG‚fª: àé¤Ö1Jjà 8áÿëPÓWNÑ'ŽÚªˆÃ+è[«˜^w,è@ƒY?c Æ!€ì?ÏÐõDœø2½oO|Ošwedeƒa VáóßûlLÒ–˜Ÿ]CcÚ÷ñ¸ñùé0îÕ¾éоúœ ÒÑñúòx*ì÷t—náuÞ™ÀårÙà|]Δ¨$Ð( º’gÜ?3€&ç÷]ø ”K¦÷û#Ã*·XûúúÄõÿÃÝJì!÷fÐê¨Knòåù1èF7o"M¨ÉywLQƒRÉÅjùâ6à]àÄÚég—÷BBB íëíƒo-è¨O/8¹{¡Ò)ÜÖsŒ"踌šë©?äÓ¹¨ÒGIP`|ˆ’(P¦Cì^ª·³ØŸ*Ȳ7[©³LЯâ&ˆBÆeT¤Oòj¹;ßÊš_ô¾9:w*Tzt³Ñ4œ@‘hêÆ·åÁ1=ñŸ¬þߦÌf.pý×;aÖ®¡zsssdõÓÓSxxxr2.êÆ,®ßÐZ~ÅŽÔ›–¶´¶6Žï -ýµut2ù¶-?×. ¼gÄEÆH•+´]nÀP²··‹áÙ°ùñ«CbZÁæÝÙ£Fh2™ÞÇð‡/`iiéG|”Èê¢l?>nîÆæ¿Kj(?û±>>”–ŽŽŽœ|cÅ}XK§ƒê¸çqAÈ¡ŽŽNØ/çK[[×Ö•U1E__AãòÂÂþÚ=$M5µ¤[AˆˆQ$.îCÃhrøØ-¦üjÖ=9–dNá'ŠÆ+¾ººúÚ'ôTH¾ú31«¥¢¤ôXuþÇ„îªø8œçZ›[³.TÎ ?·ì"â>nÍÚ†ô°¹-"XŸæ;^f¡Ñ‹…u¹—ó²EúŠø³gù0s eí È>V¢C,u{gçææfhû:råååŠ6†‚¯ô|Væ¬Pj…¬òùCvvv¨,¶þæíÏ¢Û¾·Þ”ÃlH™ÌbÀœ2œÂb@r *ñëqˆ}S|ƒNNÒñÿÐ…ÅßTZÏP1#1›¢Œ<øøøìÚ¯çñ˜¿¶ÄN2³±ïM楦¦æ0›Ô…&ÏKÝþvŽYãz¼9[­·Æ«Š@ð™¯Ô[\\„$ô‘$‰|çWdCk+Q‘ƒ·¶°ð=9ynaÁCí0ŒR,µú窧Ï=1b`/¾2‡²ß.S¹;‰büëf\î'!oÃöË;ÑX¿?J–|Z‡ òI ¼¼zÓk$R, ˆS8AØçþdG÷Wé{íd )ÃŽT_YÆÕš ñ¡ˆ×M*dí>¹=ǬÛ€}ž”šê9X´×Í$™o(Gá6X.1B¹ ÷Ϲ­IÌ|ÖvRºß~”Ù¸>iü¿ZÝ +•”Íqªâ0"oÖÉ´9ãøu%/,1ÆÌÛ›¢±Mš¢á!¡’I¤Û5?¶ÓõŸ7ˆ8”Á…²Á¼ +àÿjžûÛüíP Àêô¯Þõ$?’>>‰Å<<@±Å–b¾zg<Šy­O!Ú#E¯-Ý—äzÜäÜû™´þ 4îšo4eïw™+`ÿ8|¹«Ñ(¥±3´˜@²èb‚H¨u茣ÙÑððûÑ-ƒH³!s$3Û{Äí^ýFþö=Ñ}jg†OÇÙñ\ö""´ ‘Êâ¾Ë¥’ÊI VH3ÏÖ»zø¶ÈĽVN#äcÒB†ØMsm†àˆCk¶iÒa3j`ªUÀ—½+šÄÛyw`%µî ¹’x©°†Ä{+n?LÎ?34ܦs±WT'ªëøK¦œ{…1ÐÁ^ü™ ž"ŸÜlu7ù¦#ÆÅµ/J>™äUøuÞ!•ÏÀ×WvqÕõã|ŽÊŽBùô¢ª£uB‘ÀCDÃÐ]ø}Ù´ ®ÎosS•BÁgˆÈà‡ö‡ÉÂnH¥­áÎB‡BáÀüÓ©ýG̰PæŒûÄø0ÝS!6Û¾^¾•ëÅËÁͼ‡—Ûª«– ·‹WVfsß̱:Þ×ùGñt[«brG,”r»O'°sÆÆš/ÁüsL‚¯§öxªSôŒôôsÉ4)ÇÃÖkš…Õrj¿,ô¥ ¾—[êÏÕœC, K~$3µÅý’Á¥ÿÎýzk¤l`àã“]ç8 S#KØJ0,*Î8ê­Ÿ's7Î¥K§<ÎBó=fsûj_ø5òÁ Ä7Iy”&‘ÇX%‚Æ#¤ädB])UD¤Ï“5 ~>½xÎ'l1®ðúO¶-›‚@•Hô±¡¡S›íGFhÿ{ÚF>ªK+æ©÷òóóAý®”gûáñ~¬Kzn­+^ù/Ç Ò#ö”¶<Ÿ)ó’‡+^ç{Ùü p>¬!¿ÎÀŒ5Düùˆá°~›£ãsÄ®<|«óúÊ›”„P)7[Tß‘aK ßù¤¿=˜X’9â gˆÈÿ*..®€Ãäf³ì0³‰Òõ3OqÝ€”¤0¹¤¥Ó¼f¶>>Œ­°‚®­I”1Ž12µvXU™Í¬Tµ$1’×õ-ÈÔ;F#ZéMªÅÉRÛŽvJ”jgB¯+QÅú;‘©v`tÛWÛ_·<Œ–OŸ'kÆiäFÒvƒèI,àqvÒzz£‡µä¸X!Q&¨îå´þ{ÉŽCÛØT¦Àˆ‡fÙ­lÒ*…®êÜΤ±Õ¤FX“Å¥L›ôbúè:XNŸ4ôËá÷é*&4ýŸ¥ºþêÃñ%8Ø@¸N‘:8¤[Š`¸“¿hRaÞÎú¦‰ úO¤ùzZ¶×LJ§­O±Á§ì:(ßäÄüÄú9ÙXb:JâÁ"ñº¬ënÄu>L@$Ñ¿î9'úf>ÎGÔkÉ\IñV2Œ^Ÿâß»„6½*)ÄecoN×üÓz{{££ÉýÊQ¤%%%ŒrOÓq°L ¨4|¼TÏÀÏï½ñÍa¦=ZndîA‘ºzó*Qu6û¿°ÿ@´{5Éìã?½—LFÌã°n>O!û…ÐUEE%È`|6€LãmlÁ'Ðà¹Þ{¡pÚE¦ˆ,O±Xæ þð½E°ÒЖÝ,阮°RAŠObeYYYë3Îõ÷ò"u>sv¡ÿ/r âŽøž‰`‹–ƒÍÆ&T÷e“òw 6f)ÔQ ¢L cltzžzXÄoHÊ66ŒÑR×P_â2i_õ  m ßëÆgO•Ë©Jånsb­u#É¥ÖØ­´@åË6Ê.wÌ·¿ÐøÝOê´+ ^€ž93vÕ:s‡×vü3Á š“““Ü\`…zzb"öv åA  ùx1)iv\܆ÞâÊ JçCç|6ô.,_CC-›Ùä›ëœ˜þP>ùŸûÚò×^‚(S†ùùùƒßuîÍ,.Ò¥ #Øo Kñ»A”Ï玵¨Ð=¸ÑR[[»æÿúÜ•~¦¬¯¿ÚEèÿ¸¼æ-2¬`Ñþnµy^––•펤²{ /ä¸Ü>®½BŠŠhXXì__ž±hÀ”È;-æSSRnʪ˜µë~Ùo‘¿ MfÒÙTvvvöòòúŒó&Ò >ˆœ…å”Åÿ~¸†|" üýÀtøÛ”_±0‡A=ƒßÝîäw3TÈJK0üÈÓWPÿÝìœÂ¬×bÔNn·¹+9΢¡«û/¿§ó°°°ž*ôÏu­¢úúú`ðX‹ëá7ÈìÏ ^|ï£ê´ˆyxx¸»»3ÄEb-½¾¾†ÊT… žóQî5l8C|š çÖ•åÛV+cÄ‚ªŽ—¥c74nì! Lçö9òÿo/ÂtÈ™‡QÖì^ÐWH‹ƒA•¢Ÿÿ PK ìDŒ<µ%×ëhtml/images/important.gifÍR1sÓ0V @€N¡­€ÐÖ¥$5-”´ÐØiAÅMR×Þö}7 Í0´£h˜‡—1@)dLf¬Å˜ÆyE „Ç Ž+q,q®pÞ¢Çòt: ÔžÍ†”bJ!tÎ1çîx<ö†aEÓét6›QJcœs!Ä|>OtðCþ].`ý4Hg\¬)¬`t‘ŠPò÷Ì[ªyÞÖ¶)¾ÁvoQ¬Ö?7 ¬¢|‰©~m4hlè…ܥ»Zu3K­_gzo²ò÷3Ö¨_$ÝOóæO(o盜%å¼ñ1÷s ½Íùóä JÎ;=fVJW# ¶vÔEfënéÅ2].—^.ÓßWî´–éGí§_ntdé¹ëæ^­º•:e–¬¾–'ž%GØËמ–yzUîÉ×l÷uzGýz¶Åæ£Ç+YÅ!ºLïmdá‡â"Šñ õ[3Ø=ZýxT~¥vcÎN‚Opíûß/Ãèª P¯P‚“?PK ìDŒƒ¯µs P¿ÕvB¡É¨é@Ãd6"èo;g•`PsÎ+ÁÝÞÖs%˜Çǯ%@ÈS{4ñܾ•Už-µs"þ1чßÄ?øjª<`g ­ñeZÔ* Ô+½ƒÃ¦Ú2Ã_Yvì*ÿÁ¤è•lv¬~Œg Z¶[s“ôY[Ãa; =ùí/öoJĘ!¤f€þcl¯RmÌRCtEXtSoftware@(#)ImageMagick 4.2.8 99/08/01 cristy@mystic.es.dupont.com‘º!¸*tEXtSignaturec3ecc1fc5135d1e959695e569d213122riðIEND®B`‚PK ìDŒÙ®»iÐ^C*Òš&Ô¥^“âÈI_à×ïì$ :FŸåçîž{îtÓãí]‰ÖÚ6…©R,ÇHW™YÕ2ÅEchc*ðñÑþô€Rtª+mç­± z·0?5:+ËUÓzÅŒôíêlkc[tQ®–ô¬BˆR—þñë‡Ëë‹Ô¬—èûþÞôàäËåÙå5jZŽð¯¢,“7Ÿüw„æV'•©ô!>z*^ ¥›bÑæIÈB!‚+‹Jgó:±fU-ž‚¿MQõè{€p_û5þ$ÙKòr_‘®º8jW¥xÐÖfeQ?G܃€»¢Õ¶,àJÔ.ñøQõPöÌÛyÝ)VQÝb”ëb™·Ãk]èÍ{³M1G©~Œ`’¦žg:ŵնkíÁªIqÞ¶u2m6¶‘ÌØå(}#(ãå,Q±Hñl~¯íÍ–ó€ßH ÚîKàz Í{ÑæìÞ´ž·ù/ÌAö¹lBä˜ÉY³&1Så,¤‚‚߀Á:²0OIxpÏBxC~—F„·>†H&3¹88w9aÄÀçé\hŸâªL2_›8ëI(<àÑ‹-ˆ¾…@:z1‹PN<ù¬Çþ—ÊŸ§²x&¸ë#d"&l\R¡h Ø_‚nŠÿ"ˆ%R¹!z°tùNÆ;ÜO4"ê1÷rÒ{2î‡8¢Üót¸éAs²·¢1H•,ðân`rG^owõ¶[—Ìšºß–»¹½m^Ú˜å°*QÑg~Ås­UÔÕòäS·“GûPK ìDŒ<`8IHähtml/images/important.tifóôÔb0cg`h{`¡¨ÇËÖä”èº)↋¤ KsÓ=Ž0ÉÖæ'L9eVF|¬í‚ )6žÚ§Rƒ^Èpm™Ú¬,”³.WS­³õ²äœ3D8ø—=Üy‡§@uÖ©C Z“µÔÚ; ”"ÚÍØ.3,áÜñ"˜I†KíiÁT!¿íœ©ÙŽ)/c:mfèð`šÒòSG(0ø WbËû>3à “Pü k‰?\L¢6„wKJð1Ë>Ù8¹¨"BÎë(GwÒ«'wúdî<ûtã‹}2ÇÍŽŸY׬Q”õ=$rÀà_N„D`éÂ7 ?dxÄÏoRjpQ›=m­p¥ˆ†‹ô¡üãš2:.RR“ߤ|LHÉU¹ÖÑ´¨I}K‡9«kØ~×€É?.ÿ&Ìà` MK' ôbbˆbHÃl ,f¨fhaèÂ)`8 —ÂáZ4¸ ÷Âá10<„×àð|ŽßÃáw$øRŽÆÿȆÈñoM ?ÿNÀøÇ¿P¶ÿQà4JÕÀøOÊL§E |64¥€RÈ”`üsÕ¶U쳎SÓ9¨ÙÙÀøgê3ê Æ?­ äAÌ~”»ç=Øu U^Àø‡¸VqÀCmØ@o`21ŒæcøÇÀf#3˜-b"±™ lPýÁ e³1”Í Ä‚Œ,p5¢PqƒŠƒÌ‡²e„#+˜­¬³¥¡l= ÛI¯ 2\ ê@PK çDŒþÐñ º'"2.Êó'”¨/¨4< Nj|tµ7f4\„ê®^šÇÑJ~©>¡ãvà êã¡_Õà :Ï•Òt—–ᓵ`ÐÒÖyUó}|íÌ2Ø#á£U^m÷Ä:#¿õ¹'“€ œ¼‚®ž¾­½—·¯_HhXxDdbRrJjZz~AaQqIi]}CcSsËžÞ¾þÁÉ©é™Ù¹ùÍ­íݽ‹Ë+èõÍ-î*#"##¡ ##?y‚âø¨2.2åsŽ'Õ 5TN3`>".. ¬¬¯´@¡Gí3íwUžÇûK ÿð_ÿ·Šzè el9ÿȆ\ðè‘ß0Ž‹h¨ÈãÕ g¬Ô4d=©ÿHS§aáÀWQŠÉBÊHKÿ¾èñt-ßðª÷óä×¹O:ªßp±¬‘äc‚ÜE×lÕ:1} ¹o‚†mó†/sÅñé‚s¼Zax‡'YL«]÷¦0‹…R?Þ$2“ûwBrf6Ú¸¼Ðƒè²vµ¸/i†d/‘â¡iÍŽœ•ëü¼›èXk†RérkÄ‘¸ÛƤÙ^óŠŸ2—9Û<å>©4äkTúT]«÷Ž0M©ùÁlXFƆ~ñá{xߢ3fo„[Ñg¸DWd?¸‰´þ¢utßîÛ®dÒJmtÑ'½™cŽeŸðéÙÂU%rlÓ²“cp„Éðh9ƒVÝ@ær'®~곉2íH÷²#•.ù¹ívLQ«Á]ôááb~•ÈÁøÐNJÃ0Ø41+Kiß&v7Æ«Áúâù8€äñÚ‘üZ=ìÌfñ²î:ªh(eßÿâ°à¤½z<óf¦fœ·‚ÖóV]´ðlG¬øáý’—¬G{Æ+%œ¶®¢“Îùõ¡Tn×Ož$OÓ™½˜—qíTeˆ=ëPîAî$U¸¨rQð¥È›Í k¨m–U¢Œà÷Ó?ORbòÅB£>?”ÕÙùu5Þ_~˜ivzµ/ª@ÿ>ö¯ÌDüÑÄžæ{Æ9.g8Hºòõ6 ˆžTsz7Œ»}"5owµ5WÈC,¦Áü­ÿ“¢ëÆ+ÑÇ‹Ï<íè\•_J™‹Ñk§ÿ†mô*Ly$®Pv¨·›è]&¿<3p®´Z¸s§±J&²'H&zSÃYB¶~ä U‰õÅ ´Þ2ð¡'ß‘h“Áô‘×&‘x¼ÿËÙëÈhsÒzÉ[n\âar{ó‹½,¹ §&é—±a÷MÎI¾Açì€zl$jUÚò=•h•1R›+6š³Õ}{Þ{wgÿMÑB#®¡ÄP-Uq$­^†s§ðT:· ¯Ej–:B¨Åv8žÏu¡ö¼\crÅ>‚Ý/Ð5]‰$}K+[~^ã»ñC2Xí}¨0¹·õ Äñp’‰³§_2úùм·×ýän>êè4›'Þ¯]ßW¨¾ˆ@½ñkÜÆ¶j0h{»²û³úެÝ}v‰ëœ|¡(e5ìë†xÚgØÇº`Ÿln”äieœF›Œ¡÷õ!ŒÀ¾–ðmË4Õ¤›ÔJM’'(ëFç¸zD[fÛy3Ã`ïÙ¸¸>zêÖÇàJS55 ¤þí/N+G!÷ú/\«!šH,óȳÓaß…3íîOÁ©a}Í ®b|0|G280ç±÷kšÝ-2pOÎ*«¨L›y–\,DÌH«,Ó\lÆJã3?(—^åìåßt’º¾Óå”¶nm^ðÖV÷gá@—ŸàÍCÿÖ[¤í„à [P> .cyó»ËE¶›/PÉH¬.(@°5;´süüó”€+§uÅYÓ ;MÉYéøëh1uŽñÇUe&#³¸Ö37^±<~ŒÕ(}Ãòöùd±‡äj‚%–¿´&vP¶˜*'&uǰ¼òËØÉoQÁ7—dK{ÿª£5ÿ°öË{A¤yšwÆ ¬Q(#ðиzŸ5N‚LÅó8s?-÷Ûá0)Íeâì<—A|U2ƒ´²"£ - †¾_Ë`xNMº¦Ì#ŽªÁäΓœ£»1Q“òΤоŒ*¿e<=öŒÌ¹†íB…[¢Omã,¦òjÏÄz^E&ªß´¥´×õŽdÛ c2‡ bû+,ê#c„Ò-r¨²×ÜP8yH^‡Ít¿rçõš„I³«võ±nlQ —ØÒ’I ‹ÑWØåg8ðSDf ^\ Ö´ )ª (Fãæ¦zsëýyì•ã8ä÷‚ÁÎ;,égÓoÄ èÐÄvm9˜J#ŸsëŽùhFkáÊNwi¢†Ú6Åm5%å§E+rÐÄûìÑyûåÇ É)ËóП‹xV–ÍH'Iφ+ÆpÀ÷±ûUù³Š&Öjê]i.RË3 ŸÛŸŽ*BÊK>\TËŒq?v.˜,©æ¥ˆ©j!¢V—”ûÒa‰¥è¦)ìuÆIþº\ö1“È)t?*I*i¡¥ +%ÙþUD57^UH¹sC1÷E× ½u=÷%ÿaaÿq€~Hõ{¼½Wºš¯~GÆoÇÊÎã½éÍ9ås® èÅ&"u[HŠË¯ö~D8£Ÿô°ÕAÊrCü}N“]tY… ¬PFmðìƒÝ›Ì =}zfËB_u?>÷L¸klêÜ–L…£Ž&~Ð*1èl Xq×è òüWޱ`NÕ$žò¨¨éÈÏqî"ûÉd¯#ÝpÚ÷Uþ¨9to:;jrS¶v;|è ¼"KÑK¬bTâ™R-‹âx€¡J$RfD6”.Ô¥PKt)ŸÔüâÁõpS r[3d\ òIâh h/'øÛåJ»çQ䌯?çõñfOì ;=Æû×(–qµ—£–öÈ&™B²„,y‹×E‘XSîg‡(¹£-±J?e Á‹ìÎtÚ›•i¬LO%(O)ìýz/Õ‚ÜêDÃò–ÊÒø2Ó>T·™‘§“mŠÅ?¤í‚Æá8]ììPƒ«¹<œ²NF”ZfqÅcEǵ]8­ŽØœˆ¯. ]‹ ¢©“*d• ^(¡`ûì ß6É, k³;=é®s+ì4L"qOVë#ã=Ád/1׫ý1âÒ‘ŸO*9>ßV¥¼zÈ«€t<sð•aYm?>°(}ï†7÷az·|¸;­_“!Pã°Í£5éá4¯ßJvé!ž„ÅTkM™Nñj¼úµ¬»˜?Ï`éa:øí„é[¬ì¬_Üz¼@œUD·Ì÷œ`UÙ~H¹Í<¤êŸF£‰¦àÀ÷ܘ´˜øl,‹šÝ’=†NS)k©Z×­§íjZ„HžHIÒh+U çB±9ˆGŠä%tÛ+¸íËY1žý¾[6V+Γ4±ež†z¢¥Šøá=€T޾-O“q“Ó¿¾È”Tiß;Ä16É× ò›r‘zÛñ0~Šè­,%&½:Éçm1š ¦ïÄb\ç(åso/^iÙ˜†ç7Ÿ!]a^Лµ„yoé7 ½ö€ÉÊÓTÅY•¨Vû>×ÝÙÍl«–§DSÅ:9š ¢{3ÛÂØVØÈëà@FÞ±þâÚ©ªTÒ—©„îp¤ðJþÑL9ÇyGœ¤ªþM’o%,ŒT¿40ÖÙ¹±ÞS0u©-µ³Žô£Î£óéA¨¥ÕLê&ÎûÞ< Ô¨Q ŽÈ’,¢^Å¿ÄEç_Ïúh¨ýsþÚ+ºk}wKÁ³€‡.“¶4w~TøK–M\®¶µ“^Èh§‘¡¢‘[5~sÌÜØfÇ\ãüÄ·:ñ.;}͸szúP?õž—F¸â‘ï¿jB^WW9!–îªêÅܹ~®%K).À—=Ø|¦\È0Á4ÝWÃgHÿ*Ÿ/Çl?WZ7hˆ‹9g¬'ÞÜXOTá‚"6{uÉæ¨-iæè$MPKÝ€}·»B/Ó—Š޶{˜iìÏÔóÝæÁü’ËýùŒ‡GÏâpW¥y{±úæml7%o«°Z+± ›ž{ƒ„²è•ºßbå¾0YL!ÕÊx/3Ln‰™u óß Á|Ú|ÉoÕæÖ)&¨I˜˜® ƒ¿ùÑ·oŸ¢VÜe„ø‹Jº^Œì…×=íl‰¡åýu]›XÀtᦔÐÓÎwºèáÔQªßIc¥WaÍåY{ ßéy…Y/bÞ1šZÖ¥&‡ôe}žæ…Å«ÞNZäe~J÷6 ’¸˜p¨¯´°O³9ÉNÝÙóW„y‹Lœò¹8ÆÄÀ‘ÂÈÆNžD÷ÊÎÔ'}?䱆“Çd£rŽ+Ê ¡¹™MôL¹†uO¯Æ[ ’EõMD¯²WD• Æ#/›n̤ÊâŸÑ˜h}KuˆÛBÕhdw7žÆý€´Ó†Ô»&:ºFÎq'8_ë|D‚}еÆ':=bÞH¶0º¾Ë9+|…Ý‘Â6l¾ÿE!’ÂE+Érá9©å"WERÝJ]‚ü\d„ýÖçŸxD1ùOc8ì1ù´:¯_wˆþ‘¡©|Ì5Xëìeiðk¶«ž“·èפG~hKÒÒœ¸ü9YòqTU\A3”HÓWí=Åݪs›P|ßQQsõ÷úX÷'kè·aÛ0쯣›aÍ[VÍm)o±š_k­I¤…—œÓ<ãÄÉ–=Úø:Ã/KðŒ`zœE­¯”ý¥ºüª™¯½!Q–EªC´!Ð8¢Köµ6ûýùRv^2¢*|¿¯ ™ÅCa3S4êèQõ—L÷¶èIóÈvÌ ™øñµxà ¾y<ŧÏ6Ý^|ïQÁŒœY_ˆÃL¾ØÙO©@YÞL1]§FïŒÉOs9v!1~‰ÿCú%-Œ+¯¤ƒ©Å}–—ûóÍ»xfê r´WqýM[}+(&_‘•иŽKs>‰Š|&-ãúË¢É/)‡—þá»VBcü‡×Aúé·¹u¶?l©Ž ¢S=¾Tfw)7„‹¾ ß÷ª¬ýÑ;ô$»‡†€“5%é‰?O‡½€ÚÞ^vŸwÃS,“Dú óhg³o£ñ†˜Úx.4ú(à ՒÃ?‘Šß ÏCAg ®óÇ–‹T¦ý;=Fº.¢Ç5 Ä éåq3$vúVJ(r¨/Æä¯Ï—áHÈr<[b•m T³3Ôn´’¯¿É˜ë$/.݈7,¼¼>O¨òµw#ö&/Ñi,HøqÊxŠìi§¸¢?ÖrìlÏf% J´¿¢á ý„·ý^¯-/ñë£Eoʦ(X±›l¥½I1ë); 8Áoôþ+NÔ } ß޲£èÍõñ,¿qß¾Òª‚UßÇ‹˜æ>ïønB Wó f“F(ï+¯SmÕ)÷op@U+)ƒ¯ ‰±4«@T€D\äø²’©ÿ{+ÙK}ñ˜°ÝË‹•‡KÆ JÀ*(jz qÚd^tsùlEù…»QÃàl…gÚ½†¡W¢87Ít‡æù®î<{¿:žh9)ãiö0_'Ÿ-Î4仉>ž÷e1-)ÜŸwl%éÿ¾¦DtoÄÕ›.­&ë-ƒbo»å4ŠJ´ £žO j¶âwuý8[~¾Î©&"ÑR΄gb0SY✴týèÐ4\ÚüÆÈ쾜‚ ã{XÕÉÕíC·oãîûöÒ¥çaAÛ<#Dd¾¬/”ßÿöˬ³¿Ö„°1 Wè”áÉY¶˜h†›˜(ì­£'çñÊÆá}Ÿ—'•;­aû‹ì Ødd“p€b)­›c_ø7Ö¶=xâÛ|>‡¿ øsúê¾óÔëîÆ=%B×K•¡¬ÐR‚gˆH°Rtô䦑”wF($vXG†ö&×±ÉçP¨_׺Qîú»NIýì—]…‰…4˜JîÝ!\}ù}6(J¶bù\7æ·U7‰÷Ga Sÿâ½È¶üøë'O2ê3 J Ž"tFAÞ^©À·`PÄͧ#è1=óƒä‘p„7m¹|EAP‚ PáV¤Fh‹—®1“cçñ>¥Ááñ¾mdMHu$2ríïyùD¢¬Æ/¯õoI–9¦¦7_Õ‹3³Ol€Â®n’W\ê’—G~LzÅWT¬ƒ1y3‘¿áªMN…s¶Ã¸d¤Ýÿ¥t!—EÉmߦÀ¼7¨ QÓÞùªr\†Mé×¾ùJŒ³¤ÏP(ef4'pÐk†Éj¡t_¼DºV’%#¢¹ÔUŒ¼!¿¯͈œÍ¬²açq-½¬!g‚½b•T;0¾éRgj ðü(¼~ÕéjÁq¼dïóÝ’"M %oMYv½â² û½’ÆK@ÉZE?½±jþùs±Â6Ç a0›îÖP{òª›Eñ{ÞÄD2Œ¦?ϑҰumqΗès!:uƒr <ؼíÐæcxB*$¤[y±s5ßÂ~¬èá,;>L5–¡Gæfi½*§‰js‚ø)‘Ä ½R|ñžòC1EdZ²%îOæ'‰Aùš¸ÛcåÐÀÆÿ){™þÿã¼ý:Ii±ûN^v%¦+œ¯kYǹá¿Ðþ>lÑì7A±u,xYSú¿TqÍ ¥DÃôcWÝ\ ‘+ìBgCVÚycæÿ:éTT÷ëRÚ\¯Ó·ÊW¯Ûµf~)¶·¾àÓB’—ßÅj¹K+»Hajª²ûû.]¤ý i‰ÜÍxÙ1%Å2ØÆ=£,Öü#°JRY¹K¤¤‚Oñʃª±¦¹¥*˜TÓ÷3ޱÒ1óýN g¹Æ½ÆuHŒÈãʬÀìë?Pžã5mN_úZ}ëk€A4¤ÌMnôm4÷;Æ$ˆÒäçù öfTGµ.ïÑ…É…¬ßÕ‘ÏÍPtã ó~$‘z„býL!“¬–ap¢¥¹ÅÄYèËs®¯òM\ejñnÂÌV†Q7¶†‡Ç1Ú ßö?ßìb‡Z…OÄÕ0#ktݬ’.LÏLS*`M&©=¥róx-1$\da]ý\3_±BQ3]îÛ@zv϶2)±´Š??žÎ¦ÉÉ¥íú}H:îí’åÓñgÚÙqÇóŠ= X¯Ûm%vך esÃ÷ͼ]ˆ,TX§œ¤1B1Hzjvà0žUîàìhTUg+Ãew؆=Û[™ÉÿÐÖgf«#NÉ*]TXô Âϧó1,ÊþëÙ¤ÔüŽ—\L’K(²w«ºdõmÛ¹qs¹ÈkKs?wùáVüHå.¯ ~ºqºO *ݼ68…zjNKޤäï/òN-¢db`Ä5ñ~ä'é[ú“«Ááùµú+Òkap`•;@¬ÎÉ[¶ 'Õ„ FtT|1¹þU´–× X®=!O3+ús™³Â[8å×Ú«ñÁ¶báPÌsTÚ³žn‘N޳ÍÌ7µ¨jjIã_ÓOTžàíF8:nã%ã TaGòÞî‹mWŸx ¶üØeû ³4 ƒÚA;ûÒ›½Š¼º!Aêög¤Þ™woCí;=Ì“J×§ÑTg×fDšWÆ÷öÙŠæyK45Ö4)1²ˆ½©’ó¸˜ Ö%²"‹fû¥Ò0ðÇ\ BÀœÎabŒî¬S¾JÝi»?×sK_k{Œú¬•¶¬WsðAÒôiG&Æ%58’Mˆñ0 ìæï^š©ˆ=Ì‹Ì]ýõ¥½²’²vÈxm)™S+û ÷­IU02ÝãåÒ xâÄù÷ ÀoµÆ¥¬y"æ\Á@z„I³Çúšd‘ã4Lëzn&‹ ¯DƒüC¾{Û˜HSh̃^>ö¨×pžwmòàw"’𒢕–ÑeºµÞsç«ÖL'£ƒ|0Æ MeÍoÖÖl´Ï2Êæ"auÑèÍ®sÖF®3lsªTéIcÒ²ø9äßÁ¹Ä^÷v7´l-’U’l'_–Lætù¹@ .t‡“Ðá_í¥.wa¨F$‰õ“î¥#Jj/¨±Ùüä'Ó~íÿ·‹eð™ÿÀoÌí÷¬6Æî¸ãnTÒ²–?°ñYÃ13.4j‹oú¸_®Æ‡wk.Ÿ=®2Ù&F¹‘Æœçu”òÎ÷ÐFô¥…mnÐ@h8–?ŒÑõ¬x87ßõZZ÷i¬rªæHhø;1±[÷?p¦,‚±Dz*yÓ¸…Ÿ,e °zŸµ]›iEÿè"•QþÀ¹Â*¤ãÜ#ÿÑ]M¢q3‰‘å‰>³¤ˆEÕ“'Ü âKœyp ˜Ò ±«Å„±ÝÿË 'NÑÇÝ<Õô²ÈäW›˜ºv‚¸a[_%Íìð×”Hì;ÇJß3¡nnß@¯î3;žø#… Ϩx<l&Fõ¬,5 @6õ(³]ã¼ðJÐ&FåjÐN«Çzóã,ÔK‹K#sðÀiCP `0¦rA+ÿĪh¸÷0ØÌ8IØ>Z~Ç7ð3|4Äüñà‘ÀüRIý^ž½wQÅÂRȇ;Ö>Y®quºôì "äà£öé¶€¼ûz±t±³…ö¡“•¯Ì©+?­¶î÷REåÚ*¢ƒ SLF•…¾ã¡sæ?÷)ÝP3{út…ìaâ®ä{d®èßl¿•j0¤…1LP^XB«ÈEpÛþ²ßc"·¬=wz‡çsÜ[L êFXÞ˜ð5ßýP‹äï*w•%#‰æ3hÍÆÃùC8ÌŒáÝÁÎXߪø;ÌljäA›ÝÉ?jn]HÒ¯u)ꄚßçÌ%‰Y—èyúÐWÿC_o# /`V@ÅrÎ7Å—ré€ QL·ãB±ÆmEº¾gEx0ä(©PÈì ÎÉ}iI*£ª›(Þ! äR–G¾l?"ä _Lõ×^]¸$™~*ÉZ­}ÙRìàÚüÖX&K°3ÅJhE‹ÔŠeˆÆßÃT¢úŠy×F9ðÿ4(ÿÔf‰ÿç&èy± l$|äéߣþ1IŒÝ7p|ï?鯄­ éTÙÝuw˜~HøÚªÐ9@.ëSœqŽ>Žž,žÝk+`)×äÏ’±Q¢´ Pà˜Áv3úDž*ÛnO%w'`‘ˆaõŒŸž«‘½ Ÿœ#T'd9ãéÝ n_B’¶øÁŽê D«F#Î.÷ÍÙ7{îÃn‘V·36û ³96îµæ ç·x¿¯”ÜÕ"½{.®~TȈ٭۶ųð8UþZ.@{äln?»…”ú†@š¼ Ã7ŸHìñü‡ÈXúFR“EmJÒÇNGn¨ý`â0‚@›²µ+ÐxÖÿl7ÁØ3GÕ;l³‹¤%­¶ f?/°ÖEïdVi ½‰(¸¶µ l*ØW~•ÌŒ#ׯbÐÍÚÎ+²“2q”TŸÖ–W‘VÒP#l¾ÿ½öKÎoRÁ´ìáäÃEè&ÙK©8Ògl)¸jùNêÛéÐ0ŠPÛmÈ[º›¹µ¾+åŸý’Z,ø>9)*ÌTrïcfZ*œ7Q:aÌ"z8K>0³==:t|T»4e°•ýÛy«ziù}åµøó¸t9s©3æF{¾¸`_0â$qʉÉ.Ÿš„@¶lò8Ûõþ¡ â¡a6ò3'4á ´ßA"suå¿¢½÷‰øj­êsçÍ»•û—&äç(£Ãƒ(5X«¾ ‡Ý¶—uœÀ‰¨âã@‰ Á&¬÷‰øàÀ Û±Éù ߃¡ST…’>´••^bb¬¢†––‹‹†††±¢ˆ´ÔY4æ³!™³!ZÈ Î®®Üq=xVæˆÅÈñò9f¼2@DŸ›óôY)S_®äd»û™âÍW!è ŒÖ sTÉŸ}n.tPÃl&ÆFH­7C‰ü}+ëwtRzÈ b?£;¨}T-#ðÒ=ª?n [RÇ*ñ‚ œ]–KB– 5®šŸF,›4BcMË­K‹XÕ=ÓM2y]dƒ¬S|›µ¸¬§;†¾Ùß|/[è»M>vÃ/z_ävpy Y¼;0—äUoÐk:RN:œ6“ÑT-f„ÖâNö(q«Î·Û…fÄ÷ž ïþúQŽª›/ /eÊÀ$-¾¤N|¿–<˜”ó¹–Ö¤|>—m(ZZô^²¹æ¦ ŸË Ö’d!ݸ̥h|- kkQ qšl Á1 D„1úò×{|3f‡J™u¼zÚ'ÛƒšŸšèË5›øéÍ2õ^»Æ¯U{4aМ+Wp÷sj”wØ=#‘Ûèl׸‹9]0L9<¾“\f]¬ VeU™¬{C‘ïÏ0no®%¤WÌêŠ?•¿¢âí4¦"îñšéÛkL&4d-¹wÔ¼‘cv¿™¿A©ªª/=¿¦-Ï<Sœãs;)c«ŠC!¡A¡Ââ²òò²bŸÝ];F»u›xY+)i–€Êãôëpß”YƒS;Ï»`šB&%g6«b2`ΟAsF*)A†=¨-­ŠŽþ¡»Ld=‡Á’b ëçºo‰Òý—KmÓõõËôÅ^Ve}2]æm­˜qc=Î ˜g°L§°£íJ|cÒï“…™.í ]àÓï¬/ý} çÙ<õ0ÃJún)mÚg]=‡)í=ké¦k.[”šÿkó_“ÈßHC‚ùe©Mh.•\¾,F÷¨DÓeDI…ûÒ]g™ñÅô¤,¦'¾Õ“jªuÕòPζ,†µ¨fZ5¼²ý%…¿ëMþjÛÀ4Uþ¾²TA|QôGŒ|gŒþø)½ß Zq†¨þŸ)¿òe6qeôÑvËñypÇ¿ŸËI'æR9Dò¦Û™EÆ3D]rµô½dáBüóÿž×ÒD…Ÿà@#¾ÿ&²†¿¿_ß=¶Zª|­¾KÞM¡BÍDåo¶cãí…þiJH+m)5DK‹æµã)è:Ô}éŠüÖ¿£Àñ€@l»ìx{Ùý®ÐÀéPáyÚHð W±ûWÕûÊ›§AvŒöwЬòœC|ržZ,¹_e4(õžrö±Ì<Ô ìBõïd¿vY‰‰ê"uÈ}98ül¾$W:B•}aM¤ ®}Ò‰»§´Ñ¡F0DpÜÜã”¶¼–=Ž—š8Ü÷© ß\NÞ1ç Yš ž—ûÁ,Åàb$…Ä:ĺ±RîóšV§7Õ“jj̃=™¢ç3%BùÙCm}þ‡pà9Um6ÁÉ…PðF(uˆ™zÌçmž–GšèTþ¼ž^ƒM¢/£iït[kÅi—ú¾ŠpººÆ—Œå>²Ò©q»¾RŽkÇ3¤<Ñwï*Ëg—Îû6Ãúb¶¸&}•[†ý?ì'f–Í:Ìße°×פb¦€<á€Õ½Ý‘Þ™bë;§aC½—T—°/yï4'äß^¨öÑ"éÎLr¦»Ê vXþzÈÞ+¾ØÛö®|$F¥lu¹ëÛ¬êûüÄÙt3¥ã5ÏR}M(ØÖj^p =Ìíwî°bòw%,QQ;«»p‹gÝÄr›ªöÐ ¬Ý©{%°ªkÑ-ïÎè¦aÑþEòØJ‰‹ž2µž™U_w«EB"òóÓ;Êè«k¸lâc¼Öw‹í6Òå«Õ^IEm„ ßýR÷AšŠŠƒ°‰9K6€¼×‡Â®‹Lê;S±W„Èݼ!Î/dõ¼eëͬ¿r T´ 9¥ûÆ¿!]Q‘ŒMÊ/ï¶ +êïá–È”DËjõž;hiYwX¢´YØÌñÄÞ!•@ÎK´b%¾ç”QN{–被íØZÑ;F¹üØßœŸ(;.÷X±©êäI¾½`ì·g¬6¢z`¶ˆ^;ø8ì}ü#+g‰ø I€˜é—•Lƒz¨èxPŽŽ¦ªÆ1 ¯hG6Ox$1ºÎs4ªPù—L̯ßÍò*%òÏ5(J›e?y¹V!âÏ£  ñ–/LÖS4z>ü#ÙÚB]/Zñ¹’£*m´%Täš`yåD¿ä9Òù³<ÙkêK²‚¿ãÖ×¾žù´kz<”–+ìɽã-®û^Ø=!ö·m£l~ªù à–@íùÔR˜ö½$«²ð͸"%¡ïË„KèQuÑ‘â°A'¯sÖå9ÁƒÏÄÑŒÛa¼Üöpö2?Ò€¦š¦/€j¢Üóû/Ñ`÷"sÍàjAгjišÑRß¼ºùöÃTQ%óójÖ”ÔpÙñX³‹³t9_b«8ˆ(™õ)n±¥;IüÄ÷³6…N—_ô(SO™’…]’Á:´ðe)ãfdnV.ÃV¥¼Y:‘ª°zd¿eôÈþ Þ?ކä ™¼cû­Ý]Ñ}ß¾Ðn¡à×´æ¹oÑÌUŒ61KjjO ìÅë|ň,m¾™ü2ùã©èÆHg%uО~Ý,ùiøþãBë›ZOÞÙ‘G°7….-ûtËΤ)|ní–€ô]Ñèνv›æŽmn‰y:„—ÿ©Za;L+@_9!«øø&Ê“‡ïœýz©ÆÀîžè}  Ï¦ï¿ “¼òÚß[øcÑä9ˆ˜¼õ¤óèhä¾aþTqúV>§;o¿×¼sª7\7×ÿ‘*æ%§óó ]‹ˆW~f?[ÔyO™w#ýG1ü|£^éÂ>è³åÁüL~bwzxÚ8\…øƒ`&>‘‡ S™²q%ª?½ô£k3~Êq …áЛÖä·3v¿€¸êh¨¬‡ïª2Â*Ett!²“O_ù"ú‡¥ŒÂØsÃÆÉEå=d`z×"w§)V¯}T¶öÏP·Ù@… YÓÝ^Ø8«}}ØóóíI·ë•P,cjjƒÚÜ¡CÒ±–Óæôa§•ô6Už·_#h fèK¹$aåp »m¡îk%jQ)øÍ¥ãÊðq1©×1LoµƒµÔt v?r»²)ë40iä«B÷Ôö -pùMˆø+âšy.¤ÊÕ†/ƲÇ@‹”ÛSÏðóÄädÜwYl¿€"†6,°£ì£§Õ™OÝûٸ⃳5r?zwîíÁn=2Prª¸Îûm?àTÌ@˪º=8e/ŠÜ’ÝÆ«£G-®Ì¯p±iÇ<ÒǬpHØÊÜYü;ªÕo‡þ†z#XŠõåÃa`Òõ‹ûx¿—¬ìýçY‘›ÓŒºVâÏ [Ç¥l:ï'3‹p€äL¯Mû…ƒ³SÈ¾ÒØ§%¢ŸE+­  M¶Ã^Kí0'‰ñoñkrÁ›R5ÈêLó©'UiTŸÅ¦ w7rZ=«7†®FCá7Z³—-¢jÞ2‹7è§>÷ê‹ Êa;¯ —„¾òm,3~bÞ}å'ø9DÔ›UÔ@$¼¤¸€äW°eA’xHƒ±Ÿ>÷·-Çž»Gõ0—ΟÁžG3-)&g3‹“s¢+e‘þ„8‰/}µ[mî½<%J܉Áö›%Q‰i‰Š"›·,C1=› ÙžwµG3, Ù!wgÐÁj ®³S¾OíÀ[¦ZÔu÷raOåvòq®/¼¬dýs¿&•îÆ7 ëýS 0ï#…i.+oºÕþÁQ5£øþ)!!Bëq¬· GMÍGìMþ}GÞ\ÆçbœFͱãü]¢$Á $š®Âº“YŸp¼À bqÙ0v¨8‘º7‚Õz¡À`X·¿{x¼äañ_2ÒJ,' )¯ˆá8. ’P¾ð6Ë µauÎÅGÜýøœeÿ[Õr‡]·äÜ ‚iq|@+¼™&Yìâ¬ÿ’!ÿíÎ\o“w¦~„¦G•û$Ø8…·¶Ç¤w‹­Â0×}/“wíeiKz™‡QÝ‡ÂØ›#Ga1¸¹µäø qÅ[~M›Xrv"3-FS“+”-+ï¼à€ìÁô!Yí²Ïg†ƒïÁA…¨ÉÓÄüâ:£o–ì‹“Åi‹Ò,Š?ùµN‘ÞPS±]Y\š(3°æÃVWB[ªHÎ+÷,í;LJy4Ÿß1·ÒÁ懮ÄýN£‘A}ëжZnYΠӽÔsyùŒ¹NÒÕ’Çy°{N©OÄeI3>‘°öº÷à°2§Ê¯ýaSÅÆk€ºÉ³mkàùW½<,-±§Ã²WjØ4Y[/%Òƒø&D¿ ’[¿ƒtö$aÈM¥fj†V 4s½X*ãÊfdÝsóU˜ÓËÜp{§û€5ݶ=:3؆;Ö §»òï ã~Û²ïüñMšßÅ¢zÂòô_lVZP.ÄAµ°å´û(8p n‰AôkÇžcà&BVömX–­*j|ä@þ…—~:ÿÓn•”æO˜é?ŒZpÜ´‘9“„¯Ö\hαh›àÇ&ÇPG ¬—Q¥C:ÉMd¹z¸9óúXœ5ã[®Àt¹¼I€è‡71ohïëñiQ¿Å$fìã~Z“Qs$”\_V·ÆÐ›PwÏ4Ï–ït¢Ì*j ¸åÇÑq¶¨|-O³“â”}̶€Å2Á½1©™·8µ® ‘ñˆcÇ6qŒÉÿCoòa6Š–4^=©]z@%sõ ϸ8m~|l…fœB¾øÐ¾èþ’aç¾ëOz’’q!Œgxõ¿dµ$HðO¦Þ$ͶìùgqVSg’”‘ÆçGæ¢3˜§4á’ Ñi‰ñ?Ô¡¥p`‹þ~M”°ú{?f€¼­µ!6³Ä‚ŒPgwgáOã³óà£K–[¯^¶÷ç¯î3&~”0øL›sg{díM÷Î; -¤®ÖE{ µ"K#EX›äœâû*Ù‰Fpà<å¦ñˆ¡fåµÛÔ )ŒFÕúkMNj˯Žx£|’',ÆPV|å­‚tyãð óên¬ã%SÙv°V3Ûû¼—AÆFûF7yÕ#lªä» ÙË Mæ_! ?—çšHŒgæS –fõåŠ9tß)ÑhêÞ¾’ÓQFf*a9Pä I8^ry,y³ž»´.5~Úuòf\l‹ïïÉœ=¥ùü%nªŠ-r—Oú'*¡¶Šîf÷»b8pMÈv5"¼ûþ=JL6ünA ¨ÑËé…µ¿³éááW»Ö¸ð'ç®ÕÎÚ©ã:ßïè¸ÔèÆ€¡e±¿ÆTÏí¾Ë©jU]Àd»—WW7ÅAS,ÉðGð?F¸åÝ㦠Åî‚™¬ +ë Ì·Š9õ|‚=އ¾JccáÅ^{m“»®HHÂ_P#ñJ¦aZu’í™^bBiÓؘɃOÙ· y&qÚÞ×8¯"IŸjþš\³‘ŽÂh+Ršýƒ;^Ô뽩^žíÏ•#ã æÍIÖ9Ù´rÛÁ½Ð¸[?þ©òƒµPö˜~%§ÜdÝkw„à‹vVt©4ˆj¾«h”»~ëZ0·T¿–MÔ)jÁȄ鲙› ‹À³÷E¯€~²#év+|ú¡Çiø^&KS¤Ëç=ó˜M£HÅù¦IÂjJw6[^Q:6êÝí.Ný=Èß3BÂ4òÈ}Ꞔ8ùFØéÛ—•sOÇm $™i9üFM’\Íic`T–Ö0Q—dËËçÊz_eÎ!¿ŠkÀøÎ†Z«* Úçk’ÕÄOïMßÎ?bNݪK’¤ÎC•Ug"Ò“×VçD£Áí.«,*.*/ ªŒ÷±/±ÿ™›^˜¥™••›å¡g–…žk ±µŽffd”x² x°þÇÖ}Tý‡a^&C¿Þ¶šÔ‚α:î<%?í8}Šz \6™·â _ùƒóx _b¤å{"±jˆó75Aꆋˇ¿1àÓœ mOwЬÞOw¦oNf žBíÆá‹Xtõ@i.„ηžœu §*ŒòD¢Ä8^ TÆYÈjÁ¨•Šõ}ekÊ*¶§\)âLQg"~s2ø|-”Û' è¾ûrÀqlX‰Þöv#Ç’r±dŠ>¹1?V,ò©©àÐÁ=¬8Y/ìÓ?ò!s{5ldutú@Mì¶èWDJZ9Cp5L–ôÌh5é r8_þÆ¥ªƒãއíE.éUdâȦ•±Âee£üøgHa†¿¡Ù+¢ ¨ŒÜêR,#å^–c®K+B†û:l=óÛÚøó/¥r]¿2¶ËÿÆÚr‘–²¯.F7làÀ§‡Ið=®aÀ]姇o'ïàÀdìL$@¤ý®2ê_zúÿ°¬.µ°íÝ•™‰‘5ŠõuœõL‚±䟸[GQF¦€.uÌÌ%‡„Í­æÞ¦Žt¿¯ |,­….)M¸[ò%t‹ÈñˆJuC½¼‰™ƒ³&=(ÿ9ÅcСoܧ±²‚v·W¶Š3ÂP’wp«K_±¸”eÏúá,£Ò–晚3k¦ OÉNã!U¹o³–úd¨ ‘G|úÝ»†%MŸ0éñ¨×ç7äj†¨Ñh%û)ä>£­#£ÞÞ$›É£ì4Ê›áˆ#æ>/~,TsG¼Ï èS7ÕÏ=ýê¤>‘|1ßîX{‡JxöÆýÚÏ×m¶4Ív³à…ê&®ùàz©zÖ—$Ë «j’皺„LG­,¹t^âòÔ<2g4Hª`UÆnRñÅŒ#¡3î\'Õ­OeÜ“º?*JŸXãÑn`=­^¥sJ£ Q±Õï8'uâBŠnÀ÷7H§Ð§òjò™!±Ÿ:[È{Þ ¦£5ð™Ë^Ï2™·9Òh‡´Ûp³qN+˜ê`rËz“úJw[Ô/T¸úsý&yGÇ!BäJ–€qø~ZùâU»˜_‰-B:/¤êø -o.¡ç_a.$uxä°—þî71»öŒLД>²‘þ‹d8PÚÇžYr6u'ûµÄýÎÍo Â3…ò|¢÷GŠü•ã“óÆÑŸ[’¬HÉ{1ï!ˆ`‡þÝH`Ø|Y@ äj€ùÖ;NXßÎ$Òê”59GSûÝ$6ÿÎÊÁ£ÑDýQÊ¿UpC{ª¸]Õ³Xü¥ÀéøúA«ãІq-RC+fÙÈ;õ§JB¾‘%áË8 ÔžÈíS¡S›Že![’³Q“ø¥{Úlv˜…8ñ’™Ö´¿?±¥T –L ‘è"“%}õ0˜aŠ™*J¢ÔÛ)z¦ÅRÖy+wîµ~Ó•I —ÚP ÇÙÜdºÕv+ ru¨SŒ çKðöÓûâÚ¸ò:“áO«ÈL¿Ÿq‘Ó ‚œåØGKI`G½Ãa÷DF0ù9ûܦyš®_µ¥xb¬¥æÆ‘Íä§ÈÈôð–ßqß„+û㵚÷¤ûŠ`ÃÞfzÌX8¸Ρªæêì—¢î5àæùÝÇ´•f´ÆH×ë©ÒÿŽÛB‰€™ËøÀÎKÖuL½)†2¢4NtKeñ}‹°ÛÛü—N]-Ñz*ÅÈ$3÷"î|ÇHPãöM½*ßÑ… yºÍô1¦q}ßZ)Îq÷Ðf#9$¥ˆe×~m’R™é»¦©Èç¥ï}Í´¬µ½0ÙXîîÌMgµ9v^[,Ì'¯t"~÷~æÎ '5ûì-¾öÖÿÖ°‡E£·¦›Æ] ÊL£\C­ëÑ_øÃàl†NOh»,ñ㙹­À®.Ed0¤Td°K›6+ô•™î÷œ¢`šåðá°¨’.šUEÞçg¥„3¥¥e¾ ª OrÞ­þ*ìÎò]°äçíp]rÌQE,×qïÍÁåÀ)§ˆö”y­Ò*ó uˆYÑ€ö('Œ<õY/E¢›©÷àñÊRŠK§Œa¼æ«Íˆ——ȱ²ýA8Ù2G}-rZ)‹™·9p`ìûA̬Õr*ÆiLp7ˆH-Ôéõ7¹>• Ê(¯Ëd>y‹u f9Z6‰)û@íø˜o ûgœ^Þ’RŸ=£<_ŸÊ‡:, è¶Þ%tjÞš,1<©¢nâdZM/ØRþ옽 °ø*ýÝQ›‚\<((h€8Ä!׫ ¾»pvî~•Ë ìFÁøüç)'屓!ù@¾k’¾¾þ›ÒbŒÒR–Çâ{~²qšxyúʇÿ®0_.,Á0¤Œ $±YF$µM&†p_À…šPÈõ-+jáã\œ•eG½nÓ›x$>>™y2”‚ÿ\o`©þ_?ÉxÍyÆæò7j(>»dÁ¯k´‰oÌnƒñ©±=¹5#ÈMÚ8JZ:£BŸ¾åÝÛ‘§ÂA¤×›ÄæX›úÂ÷÷p‘ûéÜ­cï ¥ÿZãAq:#Xé@ääÅmuuZqMäP¸þ÷>b/F”â˜ùiX«Îx`ûbÿª§)ŠâG’V8‘ï¸>)ÏG¼ÇZìï¿—ýžß@ûñ ¼™î6 ”}LK `Ï2HgV àῺ‹y¤Ìñz<+Ì·Rò–º— ¦…\ʥ嚛¦Â}¢[Lâvâ®CïfÊJ–ë8“äQÆžR£,ý8Ö“=þòn‰j×6Ï~ÿ2ê³’FΨæg_.Hü/šŠÿ7¡b9¹ƒ“³†µì‰-˜ÞÎ|3I3õ É9EeñIeÅYűxa Ÿhr¦ŒŽâ_=[å\c‚w@/{›ŽÑK®{µ3í¶‹ª&¶÷ãé«`"¨2G¼—ÚéG´3{‚›´²’&91=û8"®dE ;  «ˆ_Ý ùpqóç´ë± h,,G}]à•¶‚—!ÏåøðºÊí ¿ó@_ôi*-äºKG»ˆ¥i%5îÜ­Pqµ–“¡+byk¨?:0¯¿£=G,Hyãöhé‡ ¹¨£ÿ,né'Ñ:V+Ebß¡ Róþ6FÚ œ%¬-þÔõ}Ã/I¯Ø–÷0ÚŒ²TÚðåoœáÍÂÔÆSV:fCä™§Žœ«ªáǕփÀ4¹ Jƒ»À¦”E„OŸ¯ÎòêC•ýuÍùeEíáÅiF»ØÚ²ôYZ9%•/«·^_ÌYñ³RIà‡›mK ©ª+¦~TOJÔAdzghžh:—YOŠ(¥Õ ÛQÔ°?–<†è¤,†èE°æÖÕ¡(«¸šPЗŒŒÈ”·Ðúñ¤‚dØya|<>sS‡ðÝ׼Ŀ4íIùf+ ëÿLíY ó#e Í‘Æ\iÞú2ydE“;¸Ê½ÜÔö©>ñ…­™Ë[uÖ,ò¶ò:Û`Ïëå÷F²½¬?*‚Ëh*Ä›y±ŸËr_ÀWøÖžŸÚ]NŠ%J‹§»ç.m=X–§Ä˜Î’Õ2¤Í1(Mc´ÝûcørƒI”u暴ޫÄ/7¯ 8>iª) ùäøtg˜ÿ—òiþ+‰“N÷l´[¾#>̓΂ƒ™™‹ü]5µ ÕðmÕ×7 Céäø@¤d2U¤äO>{‚» Ò›é à¢À_oУgÖÇvÁä”Ÿá… ö›¨ ‘Ui0ãäŸY ÈüÊ….$cPÇ?“dFöÝ5u’®¹3ÓºOÿ¬f{j(ãíÝøô>+²Àçr¡®1O£¡Ž—ùv……ã§XЈšŸ Îi½ÚC¾ÍêŽ:Â…o· ~ÀSU2ÑI5bvY³ÕÏ/[ä–(‘¼y1K¨©‘=³#B¯™(ˆ¥Æ5Nîv¸w‘IV3s­¨xùõ|¨ÛÏÂL?®-3ðõû3\óÉPHz‘Õ HÀÑ܆‘lÿïìg «ÎÕay“š$ å¯_ç ‹J ¦„7b±ös §š:{u+R†m'ÓK«E;Qyö·e~ǰՑÿ°Ô?<#¸Mö Bºþ¸„N×›¢Q‡F<†a¯³²w~ûõªèÎÝ–ŽÍž1ãàýá¦xKû¸+!;Lö:3<ÈØXî{©ÇÒ`fni¡õ4/ù>#4PšM_ Èúkúâ(û‰üüôœ¤GÔ’ =¢NŸ,ÿÕ÷ËdíŒÏŸ þ¤.“UXZYYF­8Î$&+ÒÌRZò)Õài£žãÿz”²Ô#A.º‘Ls÷­98Ærg4mfgð9¶oŠS‰GxŠaw†\ *u±-½ÓUý(+$ƒQ†¾pÒꋪ¤>瑚ç5µšýÓFŽ"žcsڀNJd÷®šÕ–;mо¢”|>ø /ï¼…žÊŒ{^u¹kþä˜3ûa! µB{•¦|§ ·ÝVWÒQ6z׆ ÿ9“ƒ¦¼éL;LZ=÷ñ4Ýù_TÑéŠÄ )=LÓð6ÁÌå€èt#Rüd4<âÓvC½þè«§))Ûw—YXwâ¸>:¾æ%G‚M·,K àaç߬öÉÓÝ'Í”›'qø9{˜¡ˆ0ˆ&ÿ$fRœGf‹\kƒ'%›lâüEÛú‡Äfn‘€ž„ì«xMƒ¶^~Í ‘‰2™tZp²;#wõ­îLÃDÿÿbfÞ)áߨ ã:VdˆHí­ÀÄ1QBTΠuÔEc5¤ÎVµçPa«âï^qÙEƒB-šÛ»ºEżož—´®Ý“Z¾Ú"²¸†ÖFTcÂf£©¹EÛt»#:Õ^{OïÑæ0ØÜºûîSj®Ú¥­]W@í1Û—¿’ûÞ;>š»ž&õ»üÁSË%@)!‹·ñCÒ¿×KI°@M ‚E÷U7T2´ýkÉk|€Ö­h¡E]q‹ž[ÅMpq”4SŒ¶” Š•6‡²¯zq fÅéBL‡ŸRwšcíÇÕÎFÈÍ\€™¥æÛˆpßs™4¤ÒçÅ……>#•|¢urJ¹;Xb €¢^ŽyoÄæ¨p“G¨óû¯À\)Q~ÐÉŸÿi›FjÏi â‹£èýqzˆðй2¢|‡eæK‡w¯‰¦e·ë2‡g—,öòR¢Hœ¶£{d½F¬(–â‹Iá™×¾Ûcë ßUO€àµÔ|J?¶q…¥µ·0GÛ©n"‹y6å‰M‡óz Ü ‹‘ŸèdËX X-MíÎnmàûgà˜„Ÿ’NðWUô µŸ‹³ñ#Ú3„+! š&´Í(dojhµìÐÁ›ð“l_òK~T‰‰5‡% XӸ㨻3ÁßwñrX&Àt?^DÛn|;”íh;:,ª'41É…4¼Ð(õ ý!-ç÷ÂOvñg›Ë^½hA›aZZö~E'¬«uq|é=ùkiQƒ$®KúF®.›©GÌ+òt…žut´+Ýœéx…?6eèu9ŸõUÞ.«KϦ`^ s¢ðcž÷L~ì$| —ÿ6RrXjLJáú&FÿTt w«LlݵA’bþd \!y^±MPðY²„2 ¢çØ'n@ÚCSNŽZ®›'ùö¶Üº5µfMS/¥4áÛæ&Qðëw˜@';fÌÿì„s¥¶ñ&kw.$8<“Wóô÷»[•²ÄÚJ#oüæS’™›üÄñþ³êåG¸5éÀþSÅBA'©uZñÖ{æÕвñü m%E~QM[ýéòÊŒ5ÊJq‡˜RDÒ•Ü™9FØU×÷²ÀãCÏÁV¬Údža÷z-›yË»ªOŒ –ß?†>($µ60G#?¼È–îÃIW.‹¼\¹ÆH!2?Zá˜~zš½§pR¿¢‘þ‡‡%úaßñb§%ê£y25~øÌBœØŠÕKÌÎ݆,ܵ‚’ ̹qqÜ(žžùÊ *#%#†ìT¯‰5Ô%º»ï›¹•¨”V˜“ #Xs“sÝ:¢:æîM—uD÷xË"˜•v‡IûN nZ!Cµ¸ÒA3KRÙÔ~ =çGXú^Aû§…ÃJzžl .â½#s Ìâ ¤-W3já¥iâ%UJ3yZ¨ØDvÂ’<±ÇÁÎrFPÚXwžK&pZKg·m§Ó\É??G<› <<€žGØ·®æ‚~ÉV ¾fïFn$ÀNd€®¯ ø¼ð| úð„2^\¸‹AÜ gtˆô€‡¼g,>À`@—1P[ ÞgÎjEw\Eu6g4¡4@ôÌe&üɩݖ_£`NÊÌJ­mÆ‘DVlZ¨RJáäG|4 ØI¿Æ³ådý ¥ˆÉÌ®qÊ›ßx9*cª®òmƒ%˜•5óoí[ñPü…Áv² :‰ä”äÞ~h¸úP ;S±Ñ3ð¦}Æ£Ýæa¬óšºK²×ß|HC_ÛÈDoЦ¡ËI£¡£Vì»*ë§¶ÉgE£ì_k _[45t:4ÇI!ÿêBÖ @/¦¸ 5DL 7Ÿ¶M|÷ÍŸ-îaŒÏ!øèìxŽ»’ÊýÇ{=×3&Ÿ/§¿ªýÆ Ë0:$TLów…/TVŠwþ2Ë.þdÔCÇCùvýõÒêÓÔSÛ*Ðj™Xyê_4j5–û±‘‹a®×Ü3‡óÐÐô%õ0ª)К)¢Ñ¨ÖZã‘_¼å1X†äÙpèl®¸ÿöYë’GµÑ¤“O¬Ç`ŒÀ´VPøˆÝSÁÔB¡£[…®d%ßB¢ö|–sê—r [ŒõŠ“(^ŒØ!Qcd¦¶´4Õ2ª­ë0Ê`@a,û‰ïÞ­3ômü8åû|ÿ äO(“ª7é)Àþ…-ü–úŸ§Ÿ­=¯Êø¿­JÞ¿N þ»Ù‰÷–`¼È#Hs#‡ÃÖ~i™,þ~aÝ„rÜêö5˘Ü`[&mkñ(lñö¶XA©5ïõŽ_Õµí¶ö-¢,lûáNñSõ}~³+%b ½¡¤Š:æ;ûyñ"mß—„ÙUÓÜ‘v±û&gÅ´%d4Ñôß³ã) "i‰)àŒ8£øY333»C™!r)*·PÕî8¼ ·I?J0YŒB`nóº`Sv·3´IöøÇ ÌÑÝEg B¸dV²—õ>}trë(/¸òSfš!Šhè.ݦ(¨ Ð"׳FVt­ïUSLvå\ å®Ê “póx.ŒuÖ Fá¼—ònNšÎ'øJ«[˜Ž~è*zo¾z€¬V`µ0,BfSC+Σž.åkÅm;çÕÉ-³x)9 &Â$1ê—½÷·ÞÃ^‹ÃZÆ4;C•øj¥üà˰wßI3ÍÅÈÊîN¥Scp6ޤ!™wì¥i᪮5XÒÿ^4²y}“ö£«ÊÓ‰;`‚V¬õ«Â ¢’,®Ô|3&Rr$`âà”´õ¥ŠãßïÞeÈ™jƒV”#S ÛÕhTǃª2ý(û ÜÇ ã$¬lcäs@fXUK„D«ß½E<>šþm!¹E± ËíË+Óͱ­R >_;½ƒ]Q¬Ì>ë wúäªå;>1ŒbÚ™>¡Rnj,ý¨²3®c¹«oõPüYjjŒq¼ÑÒ=rÒ‘wür¥oióåc˜´8C¡F¨Â>ó òñ`þÏ|ðå¿ÛáxÉWKéWoÓMl0uvÿJñÍÔìØÍÚÏM *‹Æq¿&G-Q®s„Õl-ÀRîSôv;Z\}4VÖ;—†“pþnLÔNËc~•,®àakhoè šò ¾1/‘“ ¹ŽXѾ˜æ%æRj„ƘÖeæJ»Ó×–ïà¡xaÏN÷ƒd¨op¨ýi‹’´eË…o‰Ö:æn!IMÜ·:†{ÞÃ.‘tf…Tq"ÅÆŸÔÅÑô®ã<— -=;úöpKëbbâXÅ"µ¼lUm4$Ar]«oÖ€áÉh¬ ÌHÂÏf…¥RÔEÁ¹.NÑêŠøzù«€¸ãµdîµD÷9†–™_\Ö‹*âbq ¿prÂg^Ñü6Ÿ¾õŒ Þ¤¶$®ORö“Ž5×Á+’É2ÈLþ×EµïÿÙ¤¶Lj\TνžÉìF#–L˜“$-…[ÓlÏjLð&ì¬*GÆýŽÝ "<à-ÅzÀ·èúó{–êÚ¬×pK#š¥kìé­[W=k8äˆÇ5òr›ƒUoJT$»M•XxYQ ÞÇÏÂë0¨ª”bó ]Ú¹M·kœãä ¥ ÕgEßE%UŒ±Z97½]K·t=~^t+ÿ)bnÃT½êäNým£Ë¨FÁD1·bvõ›,?nÓ/ Ör¬éµÖãÎÉ^›á6Wö%­˜åyNs‡JI€èEØK–’—Ò™Çës¿´›¹h*—Ïà§]z¦é¶½éU«÷a%Ù"M·>"N›œ.óé·õ4jU‡·r?_J1 2‰Åµn4ñŸjµüÞ9å89r.Ñz–`„£Ygnòš½ž¿xOM?3Ìb:…Ë™¾ ÿ±R'ÒÒúÞå†ýLß±œ+H\:™äFÓÐ3ŒU9Éá#Ïá§¢ñ)#ʸ?Sq¿pâ|'ÀÍÐo]­0×öK§ ø´‡RÀ„6h6tS2ÕDQüů®Mzp†©­’1t\Å)™{=–RµÆ/&æn0tš¢åòžd*®µ g³ ØI‡”!—fG¬cF z¼'YÅWØæ5Qº–ç_ÞM¢”‚QJ_ Fýöï‘þyŽÛøÅ¯ãµìlë‹®õP¹²ÚÓNKM­÷Ká€lsµ¥.é+±k†ú6Ç÷Ÿ¾ÑÒ§†¶˜Ð®˜|X™‡ t4ß–%ßZ#{®,?<žŠ6ùm‰¶¥™Ï¾Îþ¾'Þ²ÿ~#—´ìbõ{¸‘v×Â@¥²¥ri=á¤ÆR@›x~L½`6ô´¦êì2*Ñ%\¬µþTb­ †¡Šoô_N &ÓÅ{'ÀëÙ§?ç6Çc³px´`‡ø§Â¦¸+‚^YÀb6Ó¼tmœÜÎ*Ô<‹yÉ[û.Œ~¯­Þjú¾Þï̃qD5Üe©¢’ã¤9daW¾±}dÉ‚£|€w "2™O3`ðîœ+@Ö$òè.^ß[› P¹Ž¢)Þf|0:y îYY~·~µ˜tþpxR§â¡á{&wø£ß@~&LS›»ˆ¥èLçÉÕYæO…b¬¥}ÜÝ^á\ä„ý¢~9ÈärõÏ£È]—,Ǿ!ÊùþáMYã?¬¼ïèGL"Ì™KpL`g©D¾yvLáØÌ¦‘ø7[¡ÓÑ%ŽAösÚ/åzEPª:_\ê›.½g¿SIkjŒ‚¬­º-á+¼kÝ•2˜-lõÒŒúT?ë,ߘKÏpÈ S~'G^D zY@Á¸Ïxý0V‡8aûת>š¾ V@Yá°Ë–ý×ík[½Gµ¡•ΡaÿÌ%½ƒ,ìwËÒ,úó¹ù?SâFþ=¯¤”Te+¢«—ÞSMäÜ~æxœº…ì+Aç©SÎ*.H1ÇP8$ËV‚O>•üC}±ä5–Ï%|ë÷Î/”îÊ–éÊ:ÞdͦéÍДÌomÇ@ÞEø“§BΟ ð:ßÙâi¤ôIpiÿ°2f®í@]핊ÊÒ½ÐÐ F¬;Y—ÏviS“×c9’RíÚ ¬i:uª®€Þl>LàÝ–s…D¿O:ô. :<#‡*Ýõâ[ÔÝ­ûnm©ð@ À8]È•w?Ä ¼Ì¥Z§Ñ®3îi o#¹o¼žee?„úw]\ß±°'ž?ªY–É¥Ý$U`½­ÙÒ[ô±±;YSذÄt6Ÿ•¥¾‘éËìPdß{zßSP<îiø¼Ÿó=}.vÞdÏàHxV¹Ú‰peu"/›ï^®ÓÛ—Õ“ ™¨~ÐÍ´ÁåQ^Ðj|tuúåÌ;å1<"}ä>Š¥zŽrE]ï.Ûµí)¶P~Z°Ú¯~â8ÎÀ†”¨9Êu0‡Iö—ÎXË‚¹’/8ŒìšæB쯘(²(€¡æJ{"@‘Ù¿ú%¹=Å{´ù}Ó?ð>'c¨åÆ2¼%É©y„í7B“Ûœƒê³Ýjþ†›Çä±®HeÞ•HæŠßøÃP•g“Äá‡!93S¼Ìn%z“ÜÏÊ->̾UæÞO¸¾šÜ(Ť­öºµúÀE%Pµ|ê2çõHƒÄ8ëû¢á)m‚åQ@òv÷É…u§í°65͙Ӟ„{øÕËÓ?¥Ý0\€@šá}zÉàSíÞÄU‚I]ƒÒ1\`…hÜqþ»Ï?*µ´®‡0p¡j§Ùü:úÙÕ›ÖCt³Ñ ̤ êQåíîžíתK溛fH&¹DŠ‹ÈT|•8s?[=ìòvg½©€¦§Û3í áÔv¿§ ÆÇ¥£ÎÆwGÂŒKœ(ˆâ¾JÝ«ž®·¾Ämv*þ ¢(mqÜü¥í‹é׈€øÞiG‹ÔBÌa¼Ö%Óž¬ EVV”•7Ïnº-–õ”:</²Ì@ÝèjT1O-ÌÐlÇxQ·UüþÔdÔvŒo±£sq*ÔŽQ²©­E'¸”aD­ÀR"nmKA€lä‚é¥\>Ã?hÖÕ"°Ö¥”5Ã7„/iò/ ШÿØVíh‡x¤>@êX×úõ¤èì!cÁV6â9"¸E tÁÁÑ^ŠV|YÖ ü'•þ0Û4Ÿ ˆ¤(%þ~u ZšÃ@ºmfW'Æú;•t•¤þúš¿ãvŒ%ÝvY·ÿå ¡ÏÀ• Ÿ%²0h¿o,iÜ[ýîl´vše×ù¡ÚE@xäBïê©Beýo¿EPQU&í¬´¨úg<‘¯ß“vdBÃÏïi®èšå4dºßnœùh­¡±‰½Œ/Z¦‘ÀùÓwˆ»ÀµÒe3v/Vc&|¤©gl7“ [þvÓEŒiR}GzÒè ÆWŽÛÕÔúu¯º)ÚC+˜IrR ¸./æÊBâCC7V'øÔÓevöétÞו—é¦Nü(X2é³yÏ;åìKª’]³ìöÆxBeþöbá+5ßô NR‰MßaS·‡+›3Q ¨þrP€¨é ¦Ú3Ô–î Õ[Érª‡ß:†RT3ÿÀ£¶NïÙìŒÐ»ã7¯‡à¼ê^fwöZÑTdÇ:rª»¡=L{ôý³D¥šWâ3‚Ìkéóï«]hÖ¥°/xum¶¡˜½Ôš ^a±OÊì×—ÌÙ—óe¸*EqBO·Ji÷é¶; 5÷Úû.ȱÕv3»à»¨×(Ji)ôS Œtýå~íá}C»" âº'Ù¨?ÞY‰ÙË´Ç[8Kú{š£€ŽÄŸ"х˼5Ž©­Òh ©¢ç›ôË(3”Êò=dµÞw6¬BÛ¼Ï2Ljim-oÔ $ç6úS©^4œbK áaྡྷ¨=ìãVÜܱqŹŽÌf!yÙYøκfš…=÷×÷/NН—ÍâµÅ³’>‡Jß°Rw´/ºq–¼Ag5}5Gbïïó+Æä‡wèž | ¢Éí>¶@3WаŠ>}òvæ‘긘ÝÎΛp“ÊöôÉ•Ãñ>ãN¶ñ€Î'6ªµ›B ‚û¾æV|š9&!£‰ÿætþ6J޶ø(ë ±Ã.nM“¶ø»šp÷6¢8˜¤n=Yå|áÃüû~ãºV(6 ŸýÉ2)ç÷ÜLá„ÑvfÛ/,…Rµî\É’͘¸jT9þæí 0dLrgL²)&Ãk¤N(Æ'úÊ\EC]†›vøuÕÊTfS_&„Ãù({› 4‘~l;óogØÿ­Wtö“/Y4oHE#­÷æçám+º§ñ•ºž@%k¦yŨ òr‡ vï™2à;LAǯË䥰ò·°ËK¬3fÕ3»ãбE®i­w‚›üÝ> ,Eh§Ÿ#2¹hQ2nšF ýàêü©3ï·O2º>(XÿôH戩nv$*mx³ÇmÙ«ß¼X¬Ÿ¦Ë×"˜€+%=Ý>­@•w+eâÏà¢vËQ­Íæ%Ý»ø:»t"í¿l¢dhÅ¥UâÝ÷ZjOmÃHûÓVÕnÈ$~/²;³‰P ¾„\'ÝñðEšS™·6vÊN¨ïg{•šA•PWØ–xIç+];טBÑK{ˆ"Ô@›ªZáäÅæéI,âKQ¯ÒžàºqºJ»yV€êÛ—RªVøÙhZsÌ‹í[¤¥ï_Ñ7Š—b÷mÛªÏÃ4E˜8~4R³¨@Õ¶ ö»1fÞ7¼XFç¤ìu,y¨UˆI• ZÂ>(ä È±ó;ÍÑÔíU]a¥;š|ªXrϸ‰=¶î–P;£TtNHKýJ€±E9t‚¢"ó!Ø.‰C ‹`Ç{®…r̶]pUªy÷#¸:R¡TØ7Sü¡B–ÿµ¡Ÿ9 çô´íÃ,À'xwÝÉç»Ñ»«XòyšèDÈ/%n§á¶¾[ÉOï²Â`÷±&­káIž™dÕÄEL˜ƒ¡«+ÆM‚ØScjioV²úv~Æ8KR]|­V”´ô,w½õ4ë^&&À„9–.³fТûð.þöoºhýˆW•Š.’KضÀo²´ÂÚ-‘Y$ý¢ºVk{ÏÏ?«Œ(]eÖ4ÑËìÑéœ?¯“¸ùäF–¹IfÅ9#>‘°IÃñ’‹ƒRV~K0?nìF‹¥/«,mÏì2•Tª–j34kâ™F/™&æ6«æç*iNªäútüsÅ¢aèU•;bÔi •ãµ™‘’jf%½ÉÈíu«~B®o ¯˜\ïSÓ~ÏXï ¢IÉ:”Ïndñêyklô·¿ÓYñ|vUmFA\tÜáÆa¸ TZЬ$Æ’húI›ßœõtÓÎqØ)ôY>ó‚ÎVŒ|úŸ.ÏóNÉ¡üm@EÞYÂ.øþÔâô™ÀÝÐYæØĶWI÷Wé‰|(>bݘ÷>itÖĬ„Ê¢K9180b÷òÅê! Tw «Ýe´VªÓ3Ƚ٦l)îNlç¹2À&A]A_ùòâéXÅ^±ºs£ÃRìØªS9ªH®ÎXB¿ü]9Àˆ $3pË  Æü"2Z¥JªÃþ3Þë¨/5´_\uyv"¢Tn±vwæ‚qŸ=-wýZóս׸ OºBfwI ¼O£KÀn‚oˆÊ‡óø a±à‰Ì³ X-â?û*p¬{½ùä2Í}Oè}BÚŸ ýØ4<¼u2Y 廦ù×íÝ\Û^"ágÐmÜà=z¦uÿkð¾—¥Õh{¢Ï €‰YÚ›Îx†—.-Ð^ß+ÕØÍ¸ÉCƒIƒ­ÌþÉ_óËì—RE›o´æËÝ÷œcö6Ý©ŽÏç²va Ž¥ç³+®ÕGœ~ëô.6‹étNÞ­›Y¯Egб¢2í§ä‘(4Va(ƒJ'MZC)Äœ1+_!NÓÀŸú@L œÏø~ò[!Js«Aé?_ Óì¦ó•îniL5ž¡÷µ´œTuˆï‘àÏôô¦K³†Cy­éÇ? è¢Ñ‘CWÓ[Q쬽d¬‘tÐ>pÇ5L þàøåt*X¹©A}蜭]#.`˜<8j_¹d€ß`giÊ|Ã,4§È»÷òrö&ý„/UèÙå˜Rî‚©®ô…•$ÑS'©Oĸ--{~Ýñ¬,s¡ßóCãêjos¬Ë…‰Éí.`Žâæþ°Â#½QŸò„Xqô©¸1B’cùøPRµ6Kþj3rÊèÌ¢Á?-ñ4±ß—-Þr̨Ò§7µ¦h¾2þé Côü7ví€5áˆÊ‹2EaªÚz‰Åç&lF%@§7(ø¦úÏUDÇàÒ#C™ìÇq¢›-<Õ¡è„Aá–V²rá^Ú5¦ ^{´¡»³rÿcÊàF—‘YP­mòkè>-F(n…Ô†Hý*ÑêøeöÒdE¿²É N’ÙªŸƒŒ–›tq‘\›=xn>˜ø ßF.ì÷×Õ8{§‹mG Ë· ôàÁÞ"ÇV';´'hÓ€`ƒÁÉ3½{@ïHíáÓ¬æËëdÇþN!X¼2éwûB¼W H¹áBÙdìR3K?Û€La-dšJäw+C©!•åý»9¾«Ñßf2Ñï‘D¦ZàÓ½6î=j˜…=#6¥Ü»jdÞ“Õf–‰wC Dmú:‚T‹ÍÚ•Uµ\m&ý"øüd fÚæ¸|ÏœQè]jY ®WPY޽£–ÜNfY™¬Öûå…WLgá¸ÀÞ°O ÐŠùÚ;FÀ}í!¹©Ôiƒöü¥!íq‰œ4i†RÜñåÞ4žŠ½ÌÊÒop {¡ñਂ.Þò»¾š'F`E&©Ê{Z ÍtÝØ’hlOÿyl)ÞžùSaa¹™J«uH}ιAÇmàÐB”ŒclxDõ¾è~6äA§;-’ûŸ½€0áYq :Y­\[1nf¯¤õ²Ö[-)ÖCÏŽïŒVÛ¿ŒÓõW«¸˜é¾LÌòÙgû]g8æU4¢UÖ"¯¾¶8üš|9Ÿ1ðA¡1E÷àó‘:g§8ÿ Íð儉lË»jOc_woð70Ѩ€eº’o&â"ö$Þ½Öº.cÍÅÐÞØ[ÉæÆÜŽqDFÖáCêœö†¨®|Â|ümSÜ¡\{÷ÍÕã·u’¼Tú—Üø›dåKK-!„Âoøåää;”’ÊÔé©n¤ÈÇÁÎk>²;eÌr;Z;Úͦú¦¸ký9s¬ë|‹6º÷suÀèYégN¬!êUµ:•ô&—d6çyyÑúÉSL…¡¡™¡ìOÌr˜Ú’ñÛàOb¦O[ô¡“Û0m¨¹ë°¸0þQÊ[¿“èjI§{Ævoݰ%àLÛí’™ævS-[çq&<OgÉÆ·Ü”©4¥Ýz.£L4º å6²Œ©Ç…ønùD#NïUo4Ï,d9Fl~U¬4ü’JþÑACWÜKBÀŽëgÐz©Ý§oã=ƒ~Ü¿cwëšH½Ã # çlßêµ ‹r:xל}~¤­^…édÞ8‡Ú>mõ­ “añÀ1p­5ÙwýnUðs*½œ,ørŽw_$¢P£\€…%{Ï~&¡}@G\Ï`èÌ׉ÿ¶èÌ|„ìÐ3cðw|{™m“š¶ŒÃtsj‘©d¹Mä¼²ýÏ'å¨aŒø÷r/9lÀk­c«õ=÷À–÷6k§Ö‹R$Ü‚§{¾{WöÓBj»]6seœ%Q&–i±=ÇxáÄç’M`çn_W.áFÏ›qâúÚ§/,£Ÿ56"U‰êñ ¤h‚SûxjÖî¼ø!€ÛE“ïµözZë ÇŠÚBÐ šž’ÁOu×/ƒáVO%«Ú¦­Mæ`"z®…ÜçmŸÈ”èZØ€AÅèÐëo¥”= œÂ¸½ÔU@64Ò¤-8_Zcø‡`[Ž®‚—•gC*¿«Œ›ÔtE R{âtaìßEÍZáø‘NñøQâ¯`÷ß¼ùŸ‚V5çQâ Ú+Mö0 £I:Óì=3pXoêðÞ\@á·Ò=Œ‰ì5Š?ºeÌÕùÑŸf¦¡T·Ã©.4»r¾k.÷ÖŒ¶Öñ«³FŠ1ôwê4°I9¢¢©Ë’þØpµ¬PœÎ»“ŠY_ª¯”Æœö)%›P ãÊÐ{:W¿ˆJ¾Í_÷mžºÉôlyi¾‚þíÁ]p+¤®#v™e„êüý.j7¬$àȱÁ!Ÿr9êÇ÷ýq²{¨€±®·¡’¦å†]Ÿd-¬,ùï¸ÓÆŠÎ¥›Fvè¢@íËo)Ê·Ý-c4­æ)Ħ$Ì[\,Ñ¡84’ÜÍí¥*¸¡—žhVû•§¹ï}õþlß½-6ï-Ÿpãˆd¥ÄL’]ÀI ¤ØvyJ ÍoüçÚÅiìËc›6ï¯L…ùóãÊ´˜œ’HÎrMÈjÐ×:/RQMI–JJs˜Ë mØÞ7Uƒ×¼øÇ!™;péÀ8½Öð¿œÂ Ú|Æ7Ò—ÊÙAÓÚT;¨–¸¬‹¬ )ÖªjþDqñnæäçGép¯Î€ˆÆ¼Ÿ?Zpý~Õ÷< â»høÏf<Êz–ÉâNÏ‚3î·?õ(yïØâóÃ6jCD·‘"Þp[ÈSÉhMê¹³S>¤j¼,}P¶—““üm3?ÊPä´\Çb Ìxõ‚ýµõ¹½²h¬ÇžÀŒ£×ˆC'G vÜC™Œ¾„p)p+Ôâ%§hvl,šw õñ‹ÁŸý³yJ{›güwÂ}‹Yï¢âNK1䆎¨Rj8Ç·ŽÎ…$^Û’`â +QØG&ûZŽ•F¿øIZ+½¿kx%éÏ›ñ^=ã©Ìp XÞ2D ¡& W?Tº@Æ'–.^u‚{çŒbˆ’é¼£ÎõS»¯Ë²Y¼žþ¨<`6ס")½Ú6O£Éèû“ºæÛ[üB·ÓÓ¸?§oªM¾(‰EH™TâvLM Š 3°ÇŠ{\íî|O|W•–³Œ Râ¡)Gœž¦zLÌ’ÌL FÑß ò¾[üP=,·ð§_òÓäâ:}l®hZÖ¼‹ý=,y)íI1q^hÁj ÞM;ºy¤½ š»“Š+ñ_‡s%.¿·¥/¥‰ß:­™ Am2Ã)ü$Ó]øu¹öëÖrܨ®ÏªÕòíA·Rü‰K[ÿ÷N¾¦W±Y½DnøÁ/CBk™”#l=Oµ¯'Ù]x=D>âÎhöPí¾Jă “3‚ÃÁØ\P¯3Ÿ±i¾r]04)qÙ^3ËhûSG®ƒšbay|ÉŒ¥åÁ¢ µñ6£!ªçk¨Çî¸ó}&™ëÞ°eè½È¡@¡ºÍK·¶È ›ZšV¶~*վ߷±êòuñòàdn˜g»ö°£>ÑM¿%K…$Þ ò£lw(ç 2H$*†šM_Z\[Z\ ’gb×ã¯ì€®•Yº1ž¬×7„~ª—,ÿЧŒz93×úcŠEá‡føë#»ÔvçW†o~e—÷_jðx³1D( JéFL€ú9˜œQœÇq'†¢HjjTqøaùP—äô ‚Ù §rÇ…qb j‡ÏnÛQ]ªâ(Ú¤R**È_©ß ïcý“¸9þ´¥*仟~Tǫ̃°l¬‡qÏçúñ³)EðTÓÐð aQ+7yMýWŸe†À‹“, /´Ç øàânD…Húé/©° {=;.{u¾|7£½xŽ2= ™KNN÷.¨ *·Së"ê'±/–ÜŠ(‹Š!)` @€Ï`ŸeE—¼õƒ÷=TzÀœ»ª™BQ?¨Û쪪iµÒý»BšÇ̬x®Š)åïœêLÅ'R>»>2qìžð2c–îÊSóíÕ/.ô&kXì­æÉ”PÎnsmcš FŽªr¼èØ’2ŠF‚izµÿP®äèÃÀà\‡ñ|‡'¶y#ŒÜød´ð^4ƒr[)ª?m¶€‡ §5àƒ5g ¸U·ÚÁö³CžVƒC!¤±¾K4xnéµ#…ÆÁüz®Å´RÈ\IŽ6çõZ+ŽÓ[èþ¡þŒc¬Ã“ûßÁÑŒ^ê{ó0 “±Av€”qp0_´ã{m•D»a*Fá¿ ¼ï˜`'œ5nÔ8îÌ ×·ÆÛEv`e´O-uM™B~ñ¸|5m(ÈñøõÈ ?2ã‹Õ€v‹}¬§÷ÞÎÀÂØI^·:å»Á´3K^ôËì€ùöfÁú*ýž%%×¼îSôsõGÔÏÌÏ“/÷ž†­ÀG@u{Áü'kuÐÝñƒÕÖ…ô:C£Ú>2K«“¶:KÂ+MCîúZvw)Î[.²E+«…Š.îwÀ çhR¬'Tµî6 b]å±Èb´Qg»ÊyoäVPß¼Xƈiнx×ÏæÂ/dWÉÚñöR‚drs2¿Fú’¥ƒÄ%ªÑ¢z É™XaäwÞ°”$muRá(.Ý'Ð|>{i¨wr\¿fÃQ‘s^¤NpâuØN8[‘YDÌÑ©ašÃI@uÊ“ùQÕ­üÙô­r8¡ÂÃ:[Ÿe´ãZëüÿ€bÈÏKsU% '[ õïßV1d¶Î™Cç©z¤¢â«ˆ«DÖЋh½ï;é7Â,OÆFí˜o£…™˜ý‘ù89k¾Q…8ˆ‘©ïëCOƒWXOß45¹ÚÐç¡´Vhþ,3Ó(ÃjfQæþ ’QJø3Kð‰ÇžÀÎÖW{àŒ¬cœÞ9\w…ò¢òTѵvx§Ao–.…Ùš§þ6ø‰”¿£cFeš6¼6XéGxÚŠðÄ qDEþ !a)Ë"‰÷ŽDBŒ·­K¸Iõ Ä)Æ™å$å;·½Â’¢¤—Ô¡CÞ “ýMîœñÔÔw¶õ4†§¯œ¼Y¦ŠÊ j¢Yî1)(ÇÄZÍ/NK ®åÓ¬³¤ >.”þž‚¸l²¹8/~(=2Q²(%|Ïç€ÆOÕ )ÿôÅ*7則A阚ÈGûS59ù—åldðËb=BÈ Rgñ.¢ â@ *nîòB1Óòj-iÑ’ ¥ ƒ¿k=̽NØåHE>Ñ\Öß×_`Š áç¤4‹ÖéZÄ Vpq”å=‘²öëÕm¹¨…f§^A<‘Zk8ÜÞLvŸþÀúÎpÞrlŒoø^ƒ®ôcYžÛñO<\gJŒV·Y³%#1}$HãdýÄ»oºÓÚÚ¦«ú[Ù¸Á:QëÂÈØsžŸßIP|MA&׫9Fêýø+v†€©Æaxýµ6,ÄÈc*z܈û?ïgÊkë Õ„ýʸQ#ËÚûÌ߇횴ªü>2t G+ºqª ÉiŠªÊ¬Á§’²²’ÔáAêȱc)ê„cTïÓFÞŒ¹­Oûêe›÷ãÔµ'·ñRT5e¼mßÕWÂ>¥†Q§%èDP/º˜ç»›,Yk¨PÇ|—â“úd!uE[à2·¨Ée¨ŒZ䕱:~t–•*/é?±zË`;©¬ÂnÿwVijÓœŽ"¹ 7Ly`H­ÔßéX¤Æaœé²¡¼Q«nø–×9½³1z­b2ÓÏÒ8 [F©8|IiªÌ’W†ÚìøÄ0œÕâ;}1íL@uo*}qMú¿…›ÿ—^Öýÿs±øPK ìDŒ<ÂÁü^;html/images/next.gifs÷t³0OTcPeøÎ `ܦÀ¬@pçÀ²S>üþïÐÐÐðŸÁÁáéeÿ–,XÐàTd:0840Œ‚Q0¸Áÿß,XNÅ@Ã0õÌP^`àøÇÀÏ!ã±aÁÁfa­˜ íÊ^s<>>tdøo”uçÄÆÅÇë0H°|ظÄs‚¢{ZÎ øSM F›R:Þ«:2H¦ëI/Vhè±}ôú¥²ƒ#ë#å*·|Í’¹”Cæ <[ñ5͹&ú©lµ@|Ħ öGÖ¯KšÜHÊåX `·“¯”I¢ƒ?ÿòLIöGŸ¹$kúÁ¡¦B`~R‹¤ð£êƒÇN5SXÓr:ú‹ŽÍü!’ÎÓÕÿaÿö?]uîg]û·ø˜ºµæ¾µ?><<ÜÎ/oWƒá.Š*¢ˆ©È07jã¾Úî5‘›ÓÎZe80XPK ìDŒ<±`Â~html/images/next.pngë ðsçå’âb``àõôp ÒÊ@ÌÏÁ $#3ÛÔ˜|B\Zz{5§hÎ1tšãäµÔ+hmPòÚäì­Ù-{[zŽõL97eé¹¥k¯­Ýzoë±{ÇÎ=?wíýµçÿþþÿ(C.NxÌŒIÞî. ¬²@N¯§‹cHÅ­½rVài }³y›Z[õÿðX¶ÕwoÌ7Rt*’/wd®›_ ©|µÁìÝzŸÅ/Œ>ïÞôbÊQ‡©yß‚6éYzT8Ð[U[ð{©wêl‰Œ;wÛy"m¿¾a~S(Ê’–7Aa¾¤Hx´ì噣åXÅïW­_ÀnôºñâG“g[7ÎXQ¹^çøšý® [å¨]8¾é ÐaÎ%®%Áùi%å‰E© Êšž¹‰é©¾‰é™ÉÙ &zFz ––úú† ÉE™Å%•¹•Å%™Éz©Åz)¥ùy%zÉù¹w)î§6.3=/±¤h^Rr’‘QªEbJª©qR’Iš¥IZ’Aš¹AŠy²A¢Eriýœl .>® µ Ʀ†¦ÚÚBunŸ€2 ž®~.뜚PK ìDŒ< Jv‡ëhtml/images/next.svgÕRán›0þÝ<…ëIû… $©¶.m#um¥E•ªiª2âW#C íÓï 5Q_`w‡?ß}wçst±ß*T SJǘS†‘Ƚ‘ycYjâûã€p|1Eç„ k‘ ³®´ Ñ—þ-ÐR©]Yu (³ÐÇk´ØÚTèAíR²Ì"¤ ÿv¹zzX ²NÑÏÑYt¾¸[-WO¨¬Â¤Ra®s16ý"ÿx~äÇ{¿OWÝ\·¤‘›* §t0>`Jæâ¯–yhô.ßœò:^bvªKü&Œž%JÇÈŽuk ÞÊJ%Á„Þ)±‹ðI;¿à&Ú @]•1öü¢Â(2ͪaWKÑ|Õû3ÄçÇÌ),‹u"b\Q S‹ÌËgUU„¶Ý4 m\ªMj;PŸ iºrR$71¾]¿ ó¼gÌaÏ.†Ú^p}†æ»¢Á­ÕgQ±®²w§|†DwêY§Þx³¸KÝKœ]T>X.·PœŒUËeqPoØþ°÷ÿì#²Û±ôú0ÈÄ袟ãvm^ÊfyÒ<ë›÷|ËóoØ#Ë<¿öüCŽŽ(ô¼aÉ{ÙÀWÅSHÃSd«Ç!_-*g„ý›tNoÒè:b³`‹G×!UۮϾ"®>¹tmqèri1Õ<"ÀÑ~ÉÀç±Ï$!Ý J"WeüYܺ|¯¸†,ñðžâTÓvÈä¤Ó¡@@UÍKBšÇ|2Úž;EU7ᨃÈQ ÿ‹*lÀÎÒõgÕ1m<§(Áõ"â{:$ô´s`ˆŠk Ôé¾Á¡¢[<Þó¢ Ž"ƒ5PK ìDŒ<Èðéêhtml/images/note.pngë ðsçå’âb``àõôp Ò Ì$ŽÊ$©)¦$ow†U½ÊF Œ,ž.Ž!·R')N:lÀãZ»¯µÕ›››Ù™›÷¿h ‹c ³£s £ìAíôÉ&¹KOö<~žï}_ï1ÏüÂS“XýùÂë²úŠ­ÒÆ_L|›ŠùYå:Ž«6=‘gIÙs|ŽÇ‚/†ó¥f?Øô¿’Oõ«¯Ååoi'¼¹•¯Zsm«]¦sº®_Áµw]˺gD¶K •ø(3}¿?ÿ6Wâ4±¾$ë ¡g9”Žß «åÛpeqÑ}†°®Š5±·«BÞ…°}7”ø5a×nÓ/LîÆæsÏ{{µê̹åçŸÍL®ty’ß¿§9Û>/ïýÞ-t¤ôïœûë§]ä{b¹Ï¦­d¢Nÿõ’Ë÷ã;5<øŸÊÏ›ú=…çW¶0tœK\#J‚óÓJÊ‹R4”5=sÓS}Ó3“³LôŒô,,-õ ,ô ’‹2‹K*r+‹K2“õR‹õRJ òóJô’ós'îRÜ4N l\fz^bI)Ð<ã¤sódÓTS s³$Kƒ”ãTóD#³d‘Ë“uñt­e02©02Ñ6Ð6(Šæ4E¢§«ŸË:§„&PK ìDŒ<2„ &cÛhtml/images/note.svgµ“mo›0Ç_·ŸÂõ¤½ÂŽŸ†„V{ÈÚJÙViU¥jšª,ñ›‹’öÓï ‰Ôf¤ÊžƲ}÷»ÿÝ™áÉêÖ¢Úeê²sÊ02ÙÔÍÒlã´tDk?$ŸA§&3ŤrE„^ÍÜWƒÎ­]”U»…BÊ<ôéêV¹+*tasrž!DHãþöã›Ëë‹*ë9ú|x0<}¸<¿¼FeÅþ–Ze.3 ¹&zñ®}ÖK²LgUqA¹’z³iÓÌ|win‘Íøø •ÿJÝ`¨P"ܶkû§‘Ü·Låoú*ÜO°ê°&õ©ÔBíò;äu¥Ñ°#Ŷ÷¦pƒ©Mó§;›Yûl$ܦ•)l S¤¶ÁAw)ÿ¾Dágò wv\Ñ0àþî_à‚6÷Áÿ•1Nª*z½årI—’ºbÞzL0j‰1V:¯0JL:OªÍªNÍòµ[Ř!†”†7ĨÌ'Sã¼0¥)jÓÊž£tãñäÎ7+Æ»ár¸³`øzÓ&w0Ì'Uòh› 0·÷Ò§ÇCªk®ixÆù•¦:á’†–3ª=Îïq¯ 7 ɨ ßã}XЀH íðàÌKzðQÖ§ŠÀØ + ¥! ¡hШÚá§þÐOìç7ìÍ»«¬ö¨rø¯‹¤ÿP0Ú÷¸j@‚úŒ1²9¡r€¯p‡úžTXIm„( )ËÚY?߈®šèán!èý@óùlád;&ÑÑ¢iáò=:ã¯#+í)}Æ®X¢t­÷|Øü¥Ç‡?PK ìDŒüþïÐÐÐðŸÁÁáéeÿ–,XÐàTd:0840Œ‚Q0¸Áÿß,XNÅ@Ã0õÌP^`àøÇÀÏ!ã±aÁÁfa­˜nPæcqظèh·„q ǃùÇûœ»d~òË343x¬Š‰¼¤âÕ/$ø¨8R áø öU8(û5ÿ(óûòc³‚ÝB&ÆŠžì–°3TôìøïXÀXQsãËýM?6UåÜ}dùQb\QËñþTSÈñc½Â¾=ÂŒ&Âävqþ=ÂþCþH=ëGF±ç3ÿ9RÜÀû/¨ØîÇE°âÖÿ<ÿ´;ø ׳€tÝxhßøŸë3ÏÅd ân¹ì–vÎ1º³’·«ùñáááv~0Ã΂16=ByÐÌo‡J„fª§èÔQkPK ìDŒ<ùr§‡­lhtml/images/prev.pngë ðsçå’âb``àõôp ÒÊ@ÌÏÁ $#3ÛÔ˜|B\Zz{5§hÎ1tšãäµÔ+hmPöÖìâ½Å-{[zŽõL97eé¹¥k¯­=vïØ¹ç箽¿öüýó÷ßßÿ£`ˆƒ=oެf Æ$ow†VY §ÚÓÅ1¤âÖÖ‰ùð8ïf9%¦jôï¾jê£G¶q[L¨Ú$²üCÌÓí<6¥Ó._™ý`ÆFí•nçØ){‹ÏŸ­Ø¸1ñÈ*^n Ëáe5'#×vG^îÙÍ“bûèYô²—«›&ýœîw\úï›táÅ*wxûïüÿÚíl˸õ‹j÷În 3œK\#J‚óÓJÊ‹R4”5=sÓS}Ó3“³LôŒô,,-õ ,ô ’‹2‹K*r+‹K2“õR‹õRJ òóJô’ós'îRÜ4N l\fz^bI)Ð<ƒ4 óÄÄ4ƒ$“T#“¤DC3Ó4£D“¤´D³¤äDSóì 3¦uñt­e06­04Õ6Ð6ªsû”aðtõsYç”ÐPK ìDŒ<òXŸuähtml/images/prev.svgÕRmo›0þÜüŠ«'í66”Hµ—´Ôm•Uª¦©bįF†@Ú_?ó65QÿÀ,î?¾{îÎçðò°“Ps] •GˆŠ€ç‰ÚŠ<(öýé3t¹œ„çÃ5ϹŽ+¥ø°U¿8¬¥Ü—UÁœP ¾ß_ÃêP(]Áܧx`܆þöióp·‚²NáÇä,<_}ݬ7PVÐo!e«œ/ ›zâý?Zù±ÁïÝU·F×ã-nĶʂ 2S6bRäüy Õ>ßžò:=/Ö{Ù%~áZ-)ŠcdLG»5RïDŵÆÞ)± 褟æ&Ú €®Êy~Q!ȸH³jÜÕ‚7Õ!B(x¾ù˜9e'·íÞmémIB„4B $z“^ R¤Y(J³"éJÁ‚ŠÒ;Ò¤7$$ôƦn¶ß2ï‡]R7aw ï?ç—/\îÎÎÎçxÍÜÙy%{]d}ZÉ—Ié&5\Rrž,þ~Yj^ZX󠨉ú{øüïâïaÆ£“·Î¼zìVÊ]^:Mp«ˆ„m×*¡É•&å.|ª<&¢š¸/t·Ú FŽçœx{Þñ¯5\ˆ¿ºéÈöËñ× 2)„`^ÌŒªoR„CˆçZ’°Ë+Ù—”»ÐÀ>õršŒaD€(/(øªÿxÄÿváÀŽ?œ‰»­ y€Ï‚^»`âG˧|ŒaXO阜[ObX®ëé4¡¥ûâ&þÏŠíúïèÍS+v¯¹XÅ ’>C% ŒaÁ¤VLùÄìÊ?X¾ÇTNñ. ðîbØ?ÇD"€Ü¢¼Beqqy ÃÀÀp©½XæéÒL,Õcéx„°ç,K$ )k{¥g BJPÿ;,ÇbNà¸%ŸåxžG|ý]EH‚¨­#lEY‘Z§.Q•ÕßšHH·òlÑ ü%e§,ùiÅoçöË€€ZR}0´sǽ_øÒ2 ·>C†ctvÉOÐÒãã¿v–ùëÑýWŽÜIŽË(Ê{ZªP—£ „');GG©½«—ŸÜoXäK1݆‰kq¹+_üê1¬^Ž—GÈ^,ñóðܱo·ÖÑ²Š•Y‡\M¸¹ò÷õŠR…½Ô~nÌŒþ½k¬–'yi‡¯¸œpãi‰ãØ®m»-¿@@ àØÍSöo*×i]ìgx«_»ž•]ݳþø•£õw!D„‡£{ÿÐ!QýÃ|‚­Â¢e®&\ßåØƒ'óË ËµªBe†ÕGª´ñ»¶æ¤íöwÇ©_m-(ÈZµ"hÕƒ»Øûñ4%4¾uiН \„Uã}xž×û¹½çã2íïß«ÇÖìÝp5ñ¯U ( À ¨:Ü<<,<Õ®U»­ó6v lWµ±+ÞØ}ð; …õ:5<ÚÇÃwòKãfyÝÍÁÅì»Eå%]ߘh!èõ^-Z_[sÒË¥™ñÏܽðõ-'âÎÔJ`ÀpŒá›…Ûg}=­ 3úÝþùO’€‚NïÜþêš“î®ÆÏŽ[ù毶?¿«ÏE‘´t`û^ï¾2»gxK†ôðõ“«~[såá dÐB@’€á€õ!ª]‹ð;›.Ù¢ÿʵªy›?üîø÷b™9êÅ —û|ýö—fÁ—SòKFáf§±š¤#Ža‚tÅ‘ÀÛÍnP£#O¥UÏÿöã͇·ÇP"I¯âàM'Bq 7Ç­xóâWÇäNî¯)!ˆh Å–Yz”‘—¶tÛâ=¬|céÈþfÖd~ú“¼ ÙA-ÉNO¸ûø—K³ìÂÜ¿[²ûü^V«¡(!Tj2õ…Wg}=1óQ~ΰw ¡èIVrRVJþ¬ë* –cŽ\þõÏ}ó_™]ñæýô‡ëöo¡¨r=´N®ŸÿæÀ‰u…ùG®ŸÌÍO¯ õù¥ê²WW¼‘ô\ðÃtlçnÎTå•üÆòå2ÌF²¼&µà 7»β^YÅ;“ó—!ÄØ6æsÓcÀhÝaØ‚Ñskƒ¯†8Iú¶ë9ºûˆç€ïaö9ERÑÁ‘»?ÜþÓÂ펮ÀèŸÑ_’»®ýtö·z³$< ór¿±WÖ^õÆÒ¯Jš«%8†ÛKì¦ôÿ뢩= ¾ÂÅ4¨cßY£Þ©T¤ 1+årÂúfÍ ûdÒ¢%bÿlW»†D)0©@‚,,Ê+ÇË 7‹‹ò+Ù­zlßWc¢7ðÍã/ãiÖûß~ ¼^ñxN(µŸØwLÿÑ<¼6Ú–™ž–ï$Àñ¢òb3#Éäð6t ÈüÒ}NÒ.ÒŒåÕ Vq¼ÆªFB}ƒ#C¢@Sþ¬QœáØ-û¿é0»w̧¯­?¸õìÝ‹éYÿÀ¼ºÚ;ï<*Š“ÿ$?£.Ë+–96i1Žÿ ¥éÎ2'Z@W⬊é‹ÏHª¤H9ÎõYtHdÿÑLTŸž°ùèëHm‚ŒOK`X†ªžwgy ² ‚2mœ-tD*ÊN8­ÔÄå•üîå<ÙòFÄBѲ‰ ‡?¾¯V•šÖN€HRV^rèü¾Cg£ìœ\훹4 ó îвMtpds7/g;§¿cj#Ûï@<À€ ó‹ Ž­kèÑ3Üïß)έË]Óô¥ªRST<çïá+Šÿüm>ºC[ªx~Ì[ ™É¹Åù>nÞÕ=°fV:ëçxUaù9Wiß§eÇ0 #²K~p³" ­ˆ!ú´íñóÂío~5C¡ÈZbAœ0f¥ƒ>· 377íÖý+ß)ñ ‰ÖiÀШ;µÞ®ž ‘ÏNŽ)‹Ëµ*'©C-ü1ƒ#_‚ÿ˜ðˆg9®ª»ßÌɽQZ®©ä³9¯Ÿ¨ÈÏ[d0\­,:tíDÇA‹ú«!êëF«®(7!厇a”Ö]X~ÚÚv†wxú«cÃûŒ&I4JSyÑÄPB Å¦?’Hx¿}ß71±c»½7ðtÜ…ÆœBž7iÕVA¼ÜÑþ{R=€k¯œFÁßé¸óyY©F’ ˆ0ÿPà8Kz·÷ÊCuZA&j‹c”­&˜Ô³œRF‡ñȾ8†w úvîúï~M„ÉÖ`ðü_ÉqÄW§d^I¸ù <)±‹z±ð×Ú/*BIœ()}z¥¾ŽMøKÌzd0Ö3òÈNbïî読]ÜV¿Ðâs×Oì»RMaxØ üŸÅÖ!E*ž× I¼‘z&—· ÍÊè1á-Ú+íH*»0—a ¢Â:eë‰4e SÇù¸{ן6ýJÏðn$-1…k8Îëu»Îíy¾ãHRAXŠ?^û,ÌAA )¡m}]³³¾JÔ" ]<&ðÖ†sœŠáË…”[E…Gz€¿1{¦ÑiJÕÊʵˆ")ó$AææÄ§'Ößà­”»ÛmR`Òé:Ík½GÓ/Ô)UàãæÝ¶ExÕBžÃ—ýX!@jî“üÂüzL(^ƒÆ«sÛ(BÑ­×_?YõY3‡1R:Äz/Cˆ¹JÙ:¯7»0÷ÀåÃ\-U—=÷e†c—ýòÕãŒD ž%rXÆÇÍ‹4Ë•TQ‰bôg“î<¾_Wƒ²S'¯š^V^b£·wõÝ}¼hB „cºŽ«D†M[7oýÁ­J²öû–ÙwùHÿFeæ§AYÿVØfà­AkKù1†ó<÷åÞƒ#_ªØH‹ã´§ãkI¹ ØÆ?M+#îñý˜¥2Ò€¶ îЧm÷®¡:‡DVlÒ©T{zí·Ïm9ºãÔ“•\RÐ-,ºn#Hzßoþ°ÅãçO~i¼c•ªtŽçö]>²h{ìã¬G@KÁ¸Ïà{}Ф`ï@xeRßW×Úš“ûÄ”Ì$)^=wýœŸÎþ:8r@¨O‡“»‹sæÓ¬¤ì”c×Ož¹uª¿Š þH’ÂC€Ãʵª’òÒæn^9©Ö«@úVüÕïOÿ:sÈÔÊ@XÖ/Gô“J—ˆcÖš–åÊŸm’@$a‡Y–ÓC-û嫌ÇÀÎ ÝMºu7þêZ©ƒ£ÄNî"ó vØ#ž Ë+.¸•—Wœ´êjÛ™ Ú¿°ûÖ«$ÅÊâw¿™¿zÿ7ƒ"Ã|ƒE´(13ùæ£Û é À²&ð€VÓ2°Ýü—gÁ‹)®.ŸŒ{Ú—Ó+ £òöÛ·ã¯H*¤„BJ ÑkY­xÌÖxWg׫ᯅÜ÷Þ“xcGêò"e‰¿‡Ï%Þ:_þöÕ1N2GÓ7vžŽã’r?¶Æ~" £# lÑ7@À )¹…ù¶£*ˆcB/Ç×0ŒD–"फÎÍrJ“'Šx{‘¥ÌŽaK^[ÑhÊc¡zÝGN }dx—?¾<úÎÐ7êG^wà¼ÑsÀ ¶JˆcA­léú{ìÏãzŽ4‹¡j¥ 8nùaVJ&}Àó –Êjl–¨Àâ±úwgVUåÍk£VB‹ü`óŠwV¹;»ƒZ  Œ+¡âe@U&IgzGJ‹7‘*އùÕ‰¿ÐæAmý[ƒ±†€¢.?¼áîè&qrÛ’}u;åÞ¥ת>s‘õ±·E¼…¢Çr}Ë•àÌ7øÆÝKuퟫWÿ|yéá'{µéVÅ&’r‡‘¥ê¿,ó" †+aØÀH£ñ ý%BëöãH„âq=Gë9ªHYœ˜õèZâ­GÙ©ù%…Ê£n¦ÒYæØ¢™DË6ƒ#}ܽ)‹¬±…郧 ë<èØ?Žß:]PT çX‰@èéêÕ5$jhçÍ]½êiÁÓYþõÌ•kölPtRàí3ü,>Ã4@î»qÆ—›nQ1©~ï•9ÍÝ*¿ë­“²Ùçnÿ â²`ôœç6(wòØ0cŦCߪõ©HúÞ˳<ê®óó—ûÆŽŸ?ÿåY%ê²ôüL£Ç#pÜ_î+I$ö0yõ;œFiª%e˜ˆ–mküºšçe)r:Íí—›Ÿtš/¦/×êµËv.Ú¦b ½¶S›îgW¨z¢™-ŠK«e²ñ燆<¯7:|¯ ”Çz:NhWšåXcM%I$a©É›¼úíŽî0ª¢×†¶ßr¹zÐÃë ‘ÐjzY£×Ösî›ÍŸ5Ââ¹'»5bg*$!óQÔì>*M¹Iy©ËÖ¾ûõÜÓª2¸5‰ioWÏÑCL&ñ§ãÎ÷ ï‘t4I¥d”¨J«y-¤³½8²tBˆ1‚+xºÊú7V(G$-Ò¡åà³ÌéÄm4d¾ëù,M ­_;S!î\¦*U˜ÀÇì]½ûGô®‘>0“™3ÃÁÅ8„¢ 7qœèÞM³A(ÊŠj_ …á˜À2&{æ 䣤+4É‹ Ë_wøâÊÓ·ÃK½ƒ¼kVý˜Á_‹f~‹Ç¿Œ0\Sª¸rwBïÑÕ/VðwȬ‚ ü œ¶¼¨„G‘ ¹ÜaLÓ¼þ÷…áØ…;–.úö )SFñ„HòÁËï`µ¸_ó‰áYÃÞì5´*Ò?œÙýRûž^Þ-+KB,žs³w©½QJ@:c`y]>Bˆmîü†€tnšÝÿ²¨´êÃ×Oô[0|åO+Lt Q´ê±½G×8ɳ>ü HÁÆ™+år_`ÙøÔ{÷Ó掘^o´p-胛·ª½£Üò2Ž×¸ÈúÉ^nšàÿ¬”ªÊíø´Û»†<æÂís U‚Ï kîôÅdóç+×YÒ¼Õö÷6I¥ .ßrüûI}Çøú‡YA„ SP‡Ú„*Ë—#°ˆS䑞¦¼[z|dó)X+565Ý^ %ªÒaK',ß±änÒ- ˆj‡R² Ž«ßúÜÛÕÓ:üÀ Ž}øp»ØE~òâÁ”Ü'Ÿ¾¶x,qž“9{¼Òm¸E­Kåyö¼ÓWyÄâ8(_BSžÿ‘±–ФUGà?¸Wퟗ?ï]¾tã$HíW+ác'ÖÏ^ór×:/zFFþyÑw¤@8kÓ }F÷Œêz‹ÁÐkc¢×y@¥{È!]ý&!!&Àm³´Çg¬‡Fõ‚µÔe`ÐŽìׄ?–c+·V™&u¹„–l·±þ¦Eçß¹ùÇÔU3>›Û§]÷ði]´šrx.¥dÐ9:¹ßÜp¶…ܯV|T—>NcHÃë®DˆEÀ¸Í÷vžò_î½—üva¿A§éÚiÞÈ/\%s£K–"§÷Âá©I·A$À1@R]Ûöø|òâîaëÿ¬¥÷/ÜOKøä§åkÞZvôÆ©9kgƒH\ŸöB ºu³×ÎaæJ…¼Ò=I¹‹ê9!¸Ï÷všÜ¤]^y˜‘´b÷êøŒGB°­ذNûµïeÉ%Ç©¤¢–±âŽþS“s'g¥«•4%ðoæìÕRBÛx‚Ó£ìÔø'´ŒÁÝÁ¹M@w[ŽUÕô ™‚¼[V$»4zmRVŠŸGskOWy’—®Ök[û@bV2Ã2ÁÞ”õw€1“”™’ù4›¦>>-šùÙÊ ÄÌG XŽ õ õ ª³¨ Ù$wRï7½hàTí¯ÙjjDFA¶ÙO”¿z>!ìBbx¿s -Ï'„$æ~¨còPcKaYÑÔ5³ðN Р#@'xùó)ÇYÛ”ž1,ܹL:Lnl¢ ÅÄð_.쳡W[}‘°jïÆŠ'?žÙ ‘°vÿfk›j3³;1ØõjÂÍáKÆC/t#/Ü¿bm#·Rîõù`(ô  @ÐCÜ'}õ¶¢¬ÐÚvr sG.›½D  ÐCóéÄüâ³/Ûxë_»€Öß}°iÌg“•ÊâÊ &:MDx—çomîf†.),ÿ39 B| &!–CZ©0ÄÏõmW»‡’ݵrÇî!í}ÃN,MÍK¿Ÿøánõîªå¿­]±õc°sˆúš·›ç¤;7n™ðùT±ýÀ}¬j*»0pÈRäT<)./tÖç™Xžãtš‘K'äg&·ŠnèÕÂZã0jɸŒ”‡Ám;z¶à)þê¿~óÖÀ×\B¬H;1,óúÚ9'Oïñ Þy0øã7O8ò£Ö ;»ËŒJnˆ^9zó”}Œ7ôÃ'è-îøN¯"e‰y ¤.Ó(Âñïsrƒ¼[Ÿý²jý¡­§ãÎ+ÊŠ\ìœlàM.?¼^ž: Û°É}ÇŸˆ„ôÊ©±.^-î>‰¯ªÉþqAÀñŸLXðÞÈ·íDR«Ý>–9vó”ÔÃ+vüüŠýbAÞ-tècí§ã΃VÓu¨“ÌQQV¤(+r”9 é<xîüý+µßoè­»ƒ#û_~`òªé)îüzvOLçÁ‚:TãYErÞ–+#pB,‡t.’ÑanöCÜí†Zu˜©Í²rj¬Z«:~ýäÜO§ƒƒXîêÙ¾eÛÅtjaU;%ªRP±íZW}è,s õ ¾M¥Óü[èã‘xJ¿±¶}üiYa©ZéfïR©¶%’_üH|Ç©ŸwÛc<2Çp¥V<¤å§7>þ :¸ã‰Ï÷½¹nöŸ—Ž Z4òçvŒ¨ô„ÊSJí·@´ÀÓIÚÃIÒÙIÒ³i#ºmâé"?»ëFÒí¿Râî¦Þ?yûܱs{®&þuiõ‰Pkîu¡HP¬ªyŽB¡²!·r¯¾qÛQãœ3Ž0Ljë‚R€cËs ËRdƒ A ¾¹«——K³g‡‘"’ ±®]@øß‚?ûýô·v.[·kù ùÃ/m<ÛõÙ6Gi—PÏu€áaK‘À—Äeÿ–’ˆ Šˆ Š0š›±+ÞØ·÷Ç;©÷¬Â_°w áêtö¯3y%òg÷(¸u6ññOwïr_«ú#I€‡ª ÙÀ˜Ô´ â,s û%§%^N¸Þ+¼kCúî €züºðÛª‡–p¼ùõÙh·Þ‹…¢µÓ¿èÚº³¢0ÏûÙõÉ øŠ¾ð¯Ê·Ïíüãçûv í$¡Å—^¿zh°–ÿëØ®O‡^§Ní‹ùôµÅcßoí|ìæ©¥?­à•Ê÷f¼-Xç*u Z¸çâˆmä~8Ž?ÌH ðz|pcÀkﮜùÖº9ŸOù¸KH”F¯Ýyê焌Gß¼³Êx׫…òJ·á+~[¿÷]8ŽÏ1ÝßÃ’‰eu5úéß…ö}$Ø@g|  ô‘B4ô[4RQj5¹•’ó$lZè‚A?;l 3ôA7bâW3µzõT¢~êºÙЀÞbèïý ¿#t§VíÙhmS¡oEC_ÙÓR…ÍC¤ÑkǯœúJñ.0Ðz  ~;õžµM¹þ‡Ã°fЃ—ð.xoñø/§Õõ2±dÉ’ÿ÷IžÎÁ‘-‚Y©€öppiߪýÇ“/™°Ð¡ê%¶–‰“ÌqLg¹Ú uI;†E/{cÙ‚WfٰLJÀ‰}|Zñ!ŠäNr'w¹½sŸ}Ûø[wÀð½'eÙľc”^5EC¢^ò÷ Rêµ´DnïÒ¥m÷¯çmˆj[yƒA WÀð®ÃDR;=˸;8{عtëÔ³³nKþ­Iš¤ÑLÓ4É¿(ÿ7€•.cK\òIEND®B`‚ PK ìDŒ<ÈÓ| Vhtml/images/tip.gifs÷t³°L”d`øÂËŠŠŠ–––QQQÉÉÉÙÙÙÅÅÅÕÕÕ===S¦LYºtéÖ­[÷îÝ{ìØ±sçÎÝ»wïùóçß¿ÿÿÿ?PPüÉÂÈÀ  â€ìd`ý§à(B ,eQ£ˆ¨e÷&îM6B0Á)W4N3»©¸ö-²*Õä6ñ½lâ+láÛ¿),èé¥ !]g²I—|€Üà-. Á%& ÿê\²U›A*/2Ò½Èâd_¸ÒnËíÈo 1ÜbËä%."[À†«ròy<ãìÚ ‘ul1/‹h†lñ+ÓdN…0\¹Xݼ!ÊBÀÊ|ƒ—\TºrúeOV¸: ;ÀÒ `ê„—ˆ|yಊèÅF°2]~WÇÓ`Ù GIOXü. NÙbS¶àr€ˆGà!û’¢HÙA`mÕ;ÝñØ{'Áa$²Øät°™þŸ AØýì*?ÁŰˆqôÚä(bÛµÉh8Lе‘Æ©O.®"ƒ5PK ìDŒ˜L´Ej4tß½é\âQœŸVRžX”Êà ¡¬é™›˜žê›˜ž™œ­`¢g¤g¡`i©o`¡o`¨\”Y\Ré[Y\’™¬—Z¬—RZŸW¢—œŸ;q—âPP‚ËLÏK,)š—šj™bannli–œjdfž˜šd`hn™blšfa˜d”˜,düK¨‹¤+h-ƒ‘i…‘‰¶¶Á¾œëAqãéêç²Î)¡ PK ìDŒ<â6ªÓ¢ html/images/tip.svgÍUmOÛ0þ ¿ÂiŸl×NœÔé h/CÒš&Ô¥^’( iá×ïl'°ðQ¥Îå¹»çžK|òhu™¢F—U’gc,ÇHgq>K²ù'UN• "*ðþÞöh‡Rt 3]Në¼ ÷³ü·F‡izUÕBãý8=@“U‘—5:N¯æô0CˆR“þéûÇ“³ã ªš9ú¹½5Ú™|;9<9CUÍþ“¤é Ë3=¶üBv¹ýµt™ÌêÅFRñÞZºhÓw?Û_Ç`Ù6B=JË«ÔÜè2ÆiR¬#†5ÂVCÀBáGv™ÔºL¸ îéòhë!Qòe¢Ö_Ìÿo”ý¼d{c©Š£…N拺{j½ü¯Æ˜#ޤ‚ #Ø&ƒª˜ÆzŒ‹RWºl´³jŒu] z½årÉ–>ËËyÏ}=(cåÌQ2ã¯Ók]ž¯8÷ø¹AÛu \ïà‹XÑfÖ­Q1­â"¡Xs¢Hh$“wK¬·í|Ôœ*ƒÐ[ÄÁ­E:§Í¹AGÂcª-‰¯€›Y¬Ûg[È îl9¸¨£²Ë îmôç)&ˆßgQJû,$œ©˜r!¨€–À†;È`Äù"b|ÂHf2…DÊ­?¢&|ÔÅ@ÛŽPPç4d écj$SoH`áÓjªª¨žQ݇4)˜ß@(|gW¹ a÷-f,Úz€*l ÷‚úÌ_'½Ûìbˆm ?0ŠëÛmÒÀ4;6‘ÝB¡ÙBž©…+g¹˜ØúÁ&. ®Çêm½ÈÈ~aŠ^{˜îw ÛÇ{£õ˜6ÉúoVÛ³Æîõµ==”Õ‹Ç‘wäó tï§ ’¸L;šÄ7â¹éÞ‘Œzæ¤jWw¶Åe^´GÛå´¼¨þ=Þd{¼mTöÛÊR©¾ðS¾ª‘Ê µä#s€îmÿPK ìDŒ<ì«L¤html/images/tip.tifóôÔb`bd`h°`¡<—­É)1@ÝZÒkJБ$žç{ô„¾Ç¹ó¾âŽ©Æ”t×…Ù¾tÎè¶½Ô}cMç¿çAkƒ–¾ÑJxÞêõPç©Î6¶ï¶¾ÅZÓ¼y‚.*ôÏpØêÕx^ËX#ºª—{j Ö‡%‰o¾‡´ê¦s~pb`z³ÁÜ*(Þ¶u)»Ù옾ûóg¼›°;wß«ÿÕ÷Ö†Ÿ.¹·±iÿöµç‹É}ç :ÿ5§ŒO¸í@JZEGзlæÕqšMÂw×UVtš}&gŠ äÚ&Ý éÁÖñJí׿«,;ÙKYãB¥s¦XñÇäŸrÖÿ˜¼€†Ó¼ ÿXÀ,0`d³%AL([ˆ™ l f†²Y˜ ÊaAF¸Q$q1¨8Èq(û%K1²‚ÙŸ€XÊþĶHzAPK ìDŒ<#â>html/images/toc-blank.pngë ðsçå’âb``àõôp Òü@ÌÉ $åf§)ƒŸW ÝÆ `ªÌ:pà@CCàÀ†ÿ`ê?˜þÂjž@Æ$ow†VY GÎÓÅ1¤âVòÿûÿÛ Ô$üàgT`ÈPXÀv†aʧKrU:—¸F”ç§•”'¥28h(kzæ&¦§ú&¦g&g+˜èéY(XZêXè*$e—T:äV—d&ë¥륔äç•è%ççNÜ¥¸hœظÌô¼Ä’R yiæ©Æ)‰I)&©i–ææ†&I¦f&Æi))ÆÉiIIms.¤+h-ƒ¡i…¥¶¶yÙq ž®~.뜚PK ìDŒ<½€ËÄôhtml/images/toc-minus.pngë ðsçå’âb``àõôp Òü@ÌÉ$N<ÑìRLIÞî. «z•€<9OÇŠ[Éÿ0,ý/|>QAžÇóz–=C­nÁº¨Ï»\*K\#J‚óÓJÊ‹R4”5=sÓS}Ó3“³LôŒô,,-õ ,ô ’‹2‹K*r+‹K2“õR‹õRJ òóJô’ós'îRÜ4N l\fz^bI)мÔä4CãÔ4sS#“4Kƒd“‹dóC£D£Ô»ÿf|Ò´–ÁдÂRÛ@ÛÀ¼ìÈ8OW?—uN MPK ìDŒüþïÐÐÐðŸÁÁáéeÿ–,XÐàTd:0840Œ‚Q0¸Áÿß,XNÅ@Ã0õÌP^`àøÇÀÏ!ã±aÁÁfa­˜nP–cqظèh·„q ǃùÇûœ»d~òË7tª¯ÒÉzjßÉñq« Çå3Í?ÒÄX|\æXcÅÉôá„Àû¶M|,6f8×x±2}Ø!Ðp žû£«-ÃäÐöÛ˜>¬`8XÏõ±ókÄ7Å}[ÿ 1üÐW´ÛQ¤øè°µàCû–?.õtøohýÏ÷ÈxOˆ’ݱÉÆüF 3~H0üX¯`wÖü£$ÃGyÇšÅá]*üŸ|kÖ%>êÖ”Ûñ#ÏùÈv1y»šnçÇÎ8ò&¢ŽCѾµ1¦¯î￸hl ÖPK ìDŒ<Àø~.ŠWhtml/images/up.pngë ðsçå’âb``àõôp ÒÊ@ÌÏÁ $#3ÛÔ˜|B\Zz{5§hÎ1tšã”¼69{kvËÞ–žc=SÎMÙzoë±{ÇÎ=?wíýµçÿþþÿ(ÃlÚ=³˜%“¼Ý]:Xe=€œ4OÇŠ[S'xóPà`Í}ÍÎêø®þæµ¹žÚKò¶tˆ °¨®ìkýpƒÍÏ Ù‰g£'< H}ùÈ`Ž‘Z‰ ƒÖòókºÍƒsûe–\‘SóÊÜÍçÎ:kÏéÓ÷mÏ×Ë´y'öVß{–¾Ea™Ø±  é\âQœŸVRžX”Êà ¡¬é™›˜žê›˜ž™œ­`¢g¤g¡`i©o`¡o`¨\”Y\Ré[Y\’™¬—Z¬—RZŸW¢—œŸ;q—â qZ`ã2ÓóKJæ™›[YX¤Z&'§&š¥%Z$¦¤›'dóljbàé ZË`lZahªm m Tçö $åéêç²Î)¡ PK ìDŒ<Ž×1†ãhtml/images/up.svgÕRmo›0þÜüŠ«'íLC¤ÚKÚEJ»J‹"UÓTeįF†@Ú_?C`Z¢þYÜïí¹;Ñõa'¡æº*Åϵy#Q*;ü‰MÑõl]Ú6ÜòœëM¥t¶ê'‡…”û²êL0ÁÄ‚oë[˜ ¥+xûÔ^ä¶Ý¦þúiõø0‡²Náûè"ºœß¯«G(+è—2ÌUΧM=óãÍNâh÷î¦;Cè©j7b[eáûB›9ÿ­DjµÏ·ç¸î×Ö{Ù~åZM)ŠSËPŽtg€Þ‰Šk)ŒÙ9°èlœæ%Ú€®Ë± ¨d\¤Y5hµàÍGuˆ,0³§°,6 Q¡yÉuÍ;c^Æ(«ª"tœ¦ipãa¥SÇ5ý9¦L×N b£åæ…ë§!.yòéíE¬÷fø®iÖò‹¨ØTÙ?^:E`²ïÅÔr}|•ìYÄ2ÜînØ5Ò_º 3+À,iµžÆ†˜M-²¼Âã6™¶^£cÚKfõ2£¤¦^‹nõ¨†ü>—ÆeŒK·àn/ýµ6=ð+rÞœÃû?爜v-=?.2Ѫè÷¸Ûèçò­]ž O†á‹_Èšd,¨Yp¬ÑGíß2ýPK ìDŒ<¥qÜçhtml/images/warning.gifu‘?haÆŸJ8.ºª%ê’£øç$ÛÐT‡T‚’#ÍjÄÁRCjSÓ-±F¡­¥§´z[ûDnª7ˆØ¡G‚FÚ":d°JÍ—D(^“ßô=¿ïy_ž÷{ÏGÎõ¯ºáÆNŒÃ. À>à, q Œ·È €¨€f܃AÅçSy^ŽÇåDBEY‰ èÀ'@w¹t·» Ô ÉóUžß,Û¶9ŽärD’IRe™¢¢)Šªªº®W«ÕZ­Öh4šÍ¦¦iøÿá~;:€¼-Ñš Ìnèi9¹ò%}j!zt®4ê?hª€ Gæg~Œ¼îéú0݆«ý/+õÌ@>[¨8ß,Qøbí…±B¥î6L8s-ZhÃÌ5e@æ5†L8äY4ßBü“r×Ö¼iYÚïØK ž˜¸ï£u“¬ãÞºQþ,Vè,Y‘M8a&ïþ4[ÏEºßYð6{'W·!u:ÎäÃLÇ QZž½By]µà®A/Y4æüN©3µYì±Ó¯…nÒ!F7‹^ ›îδ¡í$ÌI.HcûÇ’-çT膋ÂC¯RÞuÚÓ9˜=nÂð×é^Ï>ÚlìÛ/3vX(§‡'v¬f4Yh}¶Âü‘mø¾2µ¼hm@ ÙÎN¾ÏÞÕÆ°çBé¢ÿQ”Ì&ÿm5«~¦âáõ$Óº\váô_PK ìDŒ $@1PÐŒÀx/àz?m^o ª*ÐÐðzI€T*ɲ2Òç#ý~’$ƒ@P" úý@ TOP$IQÔ0 NPT±Ù!' …0›æpÂAˆÐ1‰Ñh4Äùüx<žLf"‘HÉdrØÞÅ.þZò¿ÒW=¦òR5ºR¸ZºXÒ©‹ªÛ>:nu¸:ÅìPÂ_±°øfy˜!g¹žóâvŽ#-¶í þ¸¦ï¿°ý¨@5ŸçÍë¾WÞ‡µ™ºi_íXK«ZœíZ+ü–x윩5Üœ|6Îø=shsËhèå-¹ÃªýŠ;%™laؽ/g¤£èA Q05úeÝû§oÊš:H¼úr™÷Û°‘ñóàEêý`ÉBwÝ–¾Ák–«éã,ÉcÚs8_?òöeưÂnk ¦,Ãf}‡pýSÍÆÊçàJL;Wà\æŽfóü«–^§ûÆÝû§ÇÈõë­rgÌÞ˜?ÿ\%Nqò'Œ+ôÎ%„¦ž8ïj"®ÝV?&Ð9ŒÍÖ c³ÍlÏ’‰¤"E–R™+VäŠ%Yf·ÍC´:Ú=„Í,²zD–Ö—“™]޾qþSZîÄŽœ­Ùi$Zi=³LjʳH-òS2£Ñ$W(J‰2O™'>Ù$–šdò³‡bý4‹õ¥§ÇB*k“Ê„b¡ØÝx€þI€NS©~R|©ó/PK ìDŒ<"uIÚ }html/images/warning.svgµR]o›0}^~…ëJ{ŠùJ€„TûHÛHÙViQ¤jšª,xàÕÁÈHûëg²%h›ú2 Œ}|ï9÷ú0½:ì8¨©,™ÈchcÍ·"ayCV ~ˆlx5L/74§rS 7‰øFÁ‚ó}Y„˜ Áçõ ˜ !+pÇ÷)Zä ¤Óßz·º¿›ƒ²NÁ—Á«éÅüãj±ºeEüÎ8.‰E(itymF·E Kª,ãÐvÃ#ÆYN–GRìódgg¼vË‹äžÓ(ù3•b²å¬8GZí3±^)hÇ**9SŸÈë«8]õŠŽÓͺçöºì{§ÅÒšæ"INŠ="ÿð_ÖîË:üª,ÓNsí1ô‚¢‚ £,ͪã®f´y+1$€/PꇊÊb³¥1,$-©¬©ó2†YU‘e5Mƒ ™ZŽªÀR2¦“°$†ËÍ•BòàAÕÖW\¯•›¦_ökÍP`±©²\Ý.P\ìö†žƒÝ¥ÇCׯ£µ†–WPfûØá6Q‡zªõv©ÃLÒ­{†Ö%Üÿ%aHm>Æcnz¥&îã©w©àÑPp½Uá_ò]‚}Þ…dxÐ/¢cP—?µRmC;·fl¥(:/vùXžúáw~ôîÅéîÅ †^pKÖ$ó‚Ú Z C>ÕŽÏ?PK ìDŒ<æ—UòÆhtml/images/warning.tifóôÔb`g`hàW0|p"‘½Å‰]À#…'HŸí‘¡ÁKî¶Gw<³•ïïRú8ñÀmÙ ^îJ {’849½Tƒ&:¤ÅØz>u¼P±+T§‡+yÒB &ΙIzÕìø&¿üÑ’ =³ÏÙAC"ÙXº…ñÕ‰l ,Á‹¯IíMIbehzmvZåL;Cóº2­£)Œ\qoJ'žÐ`‘:Ÿ–dZ²¦ç`Ckƒ‚ÑQ/çP©/g¢$d8X… ^ð0±Kžj}h8á³óâ¹Í®Q ömc±àãü0iâ²8 +Á¼íÉ+œò™ïäh+ý]“ž¿Hºç—­áŒíµçùZíž—ï¸í¨ ÀÀÁ À Á È É`ÈàÄàÅÄÅÍPÌPÍÐÂÐÃ0ç€áR$¸ ·"Á½`x ÏAá50¼„ÏÁð=~Âÿ£p@B œ"ª,K`êh¦‡¥@¶!f¦™pÊØ d¯“ ´t Jk‚U\’÷€Xÿ ÀÔöH~âö÷(„ÀÑøÑÐŒ@ £ùþ1°€Y`ÀÈ fK€˜Hl&(›ˆ™¡lV fƒ²™X‘®F*ÂbPq9âP6ˆbd…¨ÖÊÒP¶m‹¤×ÈÎu PK çDŒ<¹Õ#^]o’ html/images/xdev-spring_logo.jpgìºTT[û0~†fèFrèn†鎡[%†n†%¤ééî”’’FR@@: T þˆ^¯÷_¬õÿÞo}kÝ=뜳ŸŽ=³÷³çì‹k¾ª¢Š"BÊ—àbýTÁ×Þ44v0t!€|Ù]~€zÕK対ˆõ'Òåïû ¼¼<@üW}âË+.Â@ùÉ_tyM\^Ê?á«§Œµ«%³sE¸zÚ¹ºAät!†ö.Ö®>ž?/¯¯ˆ/ryãã¾7ä|лô‡~$ì|ä_¶T€ „üÓG´ßãÑüˆù÷8.sòSˆé—n´ŽŸúþâûÅ¿Êå!€}ÓM9 éâÀ½‚ë +‰%à€‰‰‰M€Æ" ÁÃÆÆ#!'""!""'À¾j?ÿºp°°ppqðqqñ‰qqq‰¿ßp‰ˆüO\ô) ¢@È ‹•ËPÁ} ë—^¢‚®ÚÏ‘/ƒCAECÇÀcþ‘x™3ä?ˆø„Œ„‚„ŠŽ†ŠŒ-pI$@F¡#äC•Ѷ ¢wæG#N*¨“e`$Ñéµô™”CgJÖ=Y?µò„’Ö‡2Ëß׳Vxò!D6¥¿Ópïé´×«·Š,)Ea©}3›ï5õÏn½7°ñO+n˜Û>V2´õ‰H/iœý@BºôåÊ't4Tè• t|„(—¸Ó¡ò'÷ WgòD€ÑrÝ#$YN—ÄÊSð” í»èÌÐ'S—N<$³VÐBÀ7~¹ðï=`ùÓ…‹EùÊ&pHªï Ý -YÜP· ¬¯y1Mˆ`Ð¥õL ô1y®¬÷:d©ËüÅçàÍÜ칚»Çcý=šc+~I ¶ŽCý•»û?éÇús6æ\ŸWô~Í›¦o[’p?*úõƒ×>uï'.€ÆÀ‚¼<èõ’¯ücñH–âï8ìk›ªÜýÁk,ÆÇ®ŸFß8•Ï/˜ ñkTq×—¸ÞrŸŸzoQéÕôínÉc˱úKºú3/k›÷¥»{m+ _|q® pxwg¡bÔñºŠÍg¶†@ïççP¬œIéò,÷ çdµCAaÖ€•]¡pþÑôóI‡ {þyé;‰"L¦1d…eaUK•¯Ú£\ÇCBim¡ËŒä¯G°f&´µ: ¥­xJML¼yªoëB#\þº;[ çåƒÇJïnäzùÓ®ÃÄÂ>‰;”Ð,…‚›É{QR}Ø´zs}|A·naÏ´ëý˜©wNÕ„g:„éxÝÀ‡òGîð OUâÙ{¯EÏå6HoèWÁ?m—ï¾s§Ùž´}ñùÚ^Sìç{¾%Oã„/¯öFûÒT'¥Â¯óL&¾4Ï8|—«2<\j¶ßÜújfî:ÚÞˆùŽ&eÞ¶µñyWlͧl]ÛáMF|«‚êŽ ºÜþ±¡O{Û‰6™kA ü¦cIúlŒi”U•ð‚‚Óûšò `ÂÂ_”Öö³¾÷õ™÷å_qîD‡‰Íéá L-ž –Ì´ÜÝMØm¿aÞ;«‰ðí¼—¼Ù¨8‹ÜJ¤O‹H(Ϭç|ê7ñ-­æ<ÛôÐy?É#¾Û%;, 5õ\ ®…WÜnvS0WRiÉâåcæš»%»“;wv¦oÜl€ˆgPM‰‡–ê¾™tÏ=}ð©,Áe4Y…ÉÂ#Y…1¥è²wýbõõ»¥³µ‘Ù¥7K{•E7åÞ8Ù3ŸQ¼ËwxÙä/5éýõ[út»3í£·Nwn~®Ù«Ä«~°`QDÛæŸ·áíüžåíë/<ï»vRï ‡‡ŸSs@^îiíäj•œk5âä=ØýPC£ÂÓÄSn­=½{2ißÄåƒP‘];×˳Çuó¦Ró ‡RéK×5¾òL^f;õ¦õò 6•ñUj¬óÃûæ àå|jQnöÝ© o[&Pèå·†‰w>wâ…œV¾$Œ®Æù>vëOxÎ2uúe÷›Î›™ÝOš{¶,gƒûq´ëõ o%oâìew¸n“Jô9}9ºÛ[ïÂyS_êÁùãÅÌŽé÷w{]–kêXùfY“èbJ)|¶Ðr÷[ê ·äôò†;Û ŠÏ¥ )»º«}ºóàë'Ÿ À:Ñßܹ­Ú°Ó9ØÞPwp'úÓ#&¶/ïZöJ¿¼TÚ+J.ãB=žUáIÕQÑúù¸X¸8ÄîüsÑàæDdU4PP®&utªï áåç Çt…ÃWÄ~ÅÜj°X›*¨-IôùNC>üAû¹,"ýñ¼’c¾¢á¿ÚõË%ðŠ‚s~·å{_ûÓ\i}{cþ!ú!þ \A,øWøc!º²‰üþç"ÍccsIqº¼£ý”ú)ÈÌú…Ὼ›|/~b Ww®?1W:?^õÝ.—öÙw¾“ÿÿ§]ÅŒñ3¿? é×Oͯ¬ý€)®ký_Þÿh*ß £+¾€5¼/ãó¼ŒÆ°\[à&à¸^>]6ÿØ~Ã]éQù/~5ü?ñ.^NNße¿»eéêåbí©eé`õ']Ç Á÷Gz—_E'WÛ?Ô¨Ãm¿Ã²WçŸð•:¶v?éW®¡y:Ù[Á= œÔ=¿ëÿ‹Ô+Úe‡ðòB¿TäÓnëáêåö𫇽­½ ÜÅËùÂVÐý.¤u…»„q,¼®Jp¸‡n}彟ü'3øówÌÕ8ÛBþñ#{y8é)éý5ùÅhxÚÂÿ‚A³pBèYØþ‡k¿”ƒû"T<•õ4Ô-]]¾0þ@ÿ…ÓÎÕÃ_ÆÉÞöLáý^ùô÷ìZÃm,¼œßÙ½áˆÁnðú¯ìX–¶r®N®¿%—à‡€¬Ò/Âw74]]¾?1®nZ^Oøï‰;]&òŸ°Ø–®ˆË„þërˆíþ‘ýêÆúCî{è×O€?ñW]ÐÏyŠø ú> ÈW0öUšç&,ÿò"½ì®›ôÕÆ‚üïð÷FâïÄ߉¿7o$þ_ÛHüXóè®æpÝ«àåšÈ\›®€åeÁ `€Ýeqyy^õ.KéË2ì¿æ€r?ÔýÐÿ£¢E0¾ÿ! .Ö¯qÙ!nb<<.žÜß×En+Wg_ 7>n^@⺯›…•#±„_Ök’,ÇY öÖ’,†P ^ 79¸½²¿\×_SÏÊßÑJÔšåºXÂWÌ×ÙÍް€ø:;¹xŠùJ²\)»ìGó°@®XŽ’,F0â²2r´G|ß?qñ‹pBl<,œá>®Ž>n!–K…Ö6b:òŠ?Õ]B’,?ýöññáöàvõ°åáåáåçáççºäàòôsAXør¹x2°ü”³7ú%ö—pí®¢½4†\™’‡{ZyØ»!ì]] ßa‹ËŠ!Éâåeo-&"$,Ìoc!ÊÅ/äâã³¶ä±䲂ŠÂy-ù,­…xmXÀŸ&á¾ö6ÿÚèwÊf!‰ï ØU%¦{™q¸” ¿¨ ¨0¿(T‚çi¿øaö¾p'#y{g¸‹ç¥¯RP~ÁŸÜÿHù«ˆñŸaß%Œ—àù‡\üÈ›õ¿IÏ%á2;WÙù8òÇ&þ߸óù·!û…S¶÷D¸zøIIðü3î?ã>ÂÞæß$ò;å7§¿ƒb—»/øåãÊ> žÂýb4Ò{º:y]!…ùyþàýý‹×ø_óÿ+Þ?qú.ö)þŸ¼ÿ€þϤîr²û×™ûcü‘¸KHLÎ~¹K•¿¼¤¾¿Táâáâ…êýñRÅD‚ç˜þÓpµ¶·ñûoä~cú%w9WZ[ ,þ;ÉßÙþâëå¾îrj•ú÷/‡~sù'ï&éžø¿ùÂþ‘vÏï[Ržï_ /+ø%;Ã_ÆLCã¿wvþsà44.]÷°÷†[+z¸:_¹îfááyõÇ‚$Ë&®Ø!W®‰Ù»x",\¾ÿ»!už€ ”×ZTT€‹_ÀRøGx¢Pa!. A^Q a(/¿•°Ï?Éþ¦ÑÚÕÊërrE\b,†—ˆKÅÎ?MðÿOLü¦ì{Œ<ÿäï¡ÿw†È5t¿Lünø?ñM±¶ú5În^NW+½µÜ þÝ Ï˱æû9ÐÖVb6®Î){g [8ƒÜV‚çOì¿ö÷¸,3x~.W÷¼ýmäo#ùÛÈßFþ6ò·‘¿ümäo#ùÛÈßFþ6ò·‘ÿ«FÀ¾ú€»XK²ø°\—úíð€ô¯Ã ÿyCú³!ÿj¡ƒ~§üÛÃ*HØÈ ‚ßÈ^ô£p©ñ·ã€Ž†‚ЉŒ¾ÄPA¿Ÿ;ú~tôýì> "#_ú‚†‰‰¼Œõ;‰  Ä #â#ƔѦ·pçg Nª“­÷d$õh@4B½„ÈÁ'½:O˜¼ÉB ,ŸÞkêgn&¾B@F‘Q0ÐA?Î( Ðñ¢ÊУi_ê!B>I*¨ë”e ^÷ ѱ L–ól`”'Å8­ŸÒµºTü×7ùs|H¬ÒLÍÐ;“8ÀGò%w·¡Z©Þ|ªƒú6Suo»¶f¸º’¯³˜ÕtÁx$t‡r˜ t2íÖ9[TJÕ”ñ^לT¾O•© 홊[3f’~}Bgƒ…zŠƒiªPZX3k‰áN«•¯HË¡€kK"z c™€ï‘š¸Ïh÷¡o¹ Í'ªâ’Ûæ—ª’cëÕ›‡L½8¡Ÿ:ÄŠñó±"<Ø\=©;–¯çë ¡$I¾ƒ6åOk˜Ï(Qõ·MZŒ¯±¯šc='H*ª3:å·¢ççš ÃV€[‹ ÏnŸÜ’¹¥-™"“E?ꦅºA!Xo*Ñ-Á¬Q½šDz¨².VoÜØÈ)Á¥qù´šÌþÍþ‚Á™H«^+ª€ék“bÓ8¨­Å)±”Qe úŒÛ3_[ –HÒJ]ðì$æ]¶C Q¶üäTz]Œ´ùü—ˈÁ§Ù*Ía`bTÝȤgz@Y¼q#/^Ã`uÅ-ë ÚLOÚXcÛ¾´ÍˆqÅÆ©ÞïkgÑ!‰)0 I•Û)Ò’——r6_qÄâå!›ŠR‡·]Fܹ?’j¦{0)ȼ³O¶Ë§Ú@%ŒÞ V ’;+ߣöXÚË:Ô;œ5ë¦ãwc|䤖¯j™&¨«¡§O—ŒÄÔäŠS²{É|ëÚÇi:Tœï…›+RÕøDž4aló÷^ØYíìÖ)X\1(—CúþßÎ}<ödÅœ¹z>CZ$…ˆŠ4ï³¶»<†ÃT0 D½˜eö|º¸®±`‚kqMQù!í†\ŠYrµ¦ºmÖH€ æÁtN©T ÷(p1dÍœöqV¢î5ÐH+nNlñÑ:}3p®6/+±ú’V­bÞ¡¥”’ßþròŸ1i`”úNØç ŸB…wŽ»‹`7à(í ’ˆÖHPêÀˆˆŒdj(Û™ÊEëH"愆ô…)L}NG™N¦ .‘f‡ñ‰Ã)&ù;l¬ô¯Wò[¢!SÌYù±„|‚•%mz0†s÷ô5_/ß>!AŠR§5”s:׿Þèï5”^7ŽH)xäÞËÙš®«‰%ÊPó~{J 7åqÆ{àçA¢¥¸KöôhÆÏáãèGÔª¯t|!AGºýâ|÷ ›Ôéd"œ(±ü”ßËG~[}-¨ÐâŧˆS{è~žšÚ¼^]/Bª,NÅ{]“¡µÊEÍ“ø8A‹UÄ'! ¼bê Zb3X€¬1%eˆ@Âôѳ2€4_ü›Ô‘}ÅV §žÖOmZ/bÙ7æf{}§ y“Vòú=Ô2ÌûSZ8rwšÏ 8Lòš.ÙĤûÄaU Òû5° `ÉGOôliPÙ|äS’Ès –`ºúFä‚5¼C‰³ª–—÷ƒL ñfO_=˜•i®9_67‡¡xA– c➬ þ?!êÈl&‡« ÜVHR-kÛì ËR^;µ%i·VFf èêÁŒ6—‰©‹ñçtÔ(6¦¶Cå´—=ŒýŸèü® ëbb¦i1«F]0±ú«ù  á=,éNþðVpÖþ`ëyUá½UˆE)*Ûú²ˆª´ëÀhË›Ë ËvÄ/£ä犬SEh5-«¹+ ªsc£eÛq&FH9=s„/mÎSJØŸŒ‰M¡èžOGz^'%æÐi쓳Ô3TƒOòa (–@¶{GkSÔ‰´¬ ‚´Ùê'f¡8¾f-£Yµ€0óÛð§}íK‡Ÿè©ç-L•°!¸Ïí’Y)–9ã­õ„,Bª ZébYTe—Œ³ûTuˆÁgÒcfQ-9=ïx1ôz˜>¡k<+ÝåÄdÈØp7a“Ÿåt¾gA¨ß§¦\æ‡@ ËŠ›˜aVD@èC£/PJOLèuŠ£liLŠÓÉ™˜˜G·,&m¨“5Ÿ–_!”£Jåǘå£W ÜèE"—Î/ˆ³€èö€AsYò¡º6(††‰*¢UG,¾Ê->+Å1aY%4_)Óèñ±%Ãpq§púð‘œB"ƒPQgD"* X2˜„G‹"/k©{KÞ©·úR,Þ¤ÄÚ ŒälPªZΞÌAÁ‘À®´;;Œ¯°_SrŸÆ‡éÅ™ò ÊŠ0¼ ÃûM0á2Ëkryä”›IJ@–ô–÷“u륽~–>H–-ïWü;«ãÅ]ÍgÇ|‚(ÓnÇ ;šƒ”9ìs3e8÷}{Í1š³C²cÓ£,ÏFº—Çh¸=ýþQs*“e‘G¥˜òÒ^ZЮþÆG Û­nô[ èHrY2¦m²"Œ1Þ%bH¡ÉR.…=™ªêè|Þ3ªa©®î“°™Ï†McøCâð,šÍ˜±Óqê £ˆÁü¶Æj|§¤aÁÛù‚‹ìzQ.Hl°/Y9È_\aÇÒw#0[”¥³/GY«潎ÊtY IJ„僆nÁz×§‹ëå̦0´3÷„‚b‰×+í±ÞedÌ$2= °»1H_Uf1óüŽ£0×4‡bÖíîYöV™ÊËÐr"®++ŽÂm¶0ØjI±ùêL_ ÓX^bÂâ“gCÎnÚ‡‰Ý·¼è|6ŒðÅbbp„4ÎuÔ¶[){$ÏxŽX?áû}¾¥[ªÅަ.UôDzÁ„Ù% 2½Qê5SºRœ.£X×…¥sÔ§p|âªÑe¿§€'xgR|¿ÙŠYš•ÑA›=h¹ºª @ Y‘ƒ•ÑZ&Ç‹*_ÉN_˜1?¦þÄ]é›b!¾×x?\PvAHѨ>†ÙðYq-$3¾¶†\ÈŒS.v.Aö:Á±ŒÅaØ×”ð?OvÒmcËoè/^œäW/êT/o,VöOYù7¸+ÕëÁ‰Õø¢‰bk°D"˜ñ0uUˆ^œnK|F'“œÆCгP¥ŸäÕc¶Üâ; (Ô¸=ç'o¶ù€FuùF.Ù\ô×ó áÒÛ‚hѺ"U}7¢®ÍzD‹YŽvÕ–£N„SmàùAóÛsmâ3Ü™¥¥1¤4[vÛd¸Æ.‘¾à”XÉaºC­½2õC˜ªÌ¾4ŽÙ‚hh1ÈQ§Ñý†/ù +î0Îè.}~F"ŠŽ®k†tKA¹ÃG¯F“öG}-˜F¸zsÖ„ªåŸž`…±æê2#Q7PÚûƒï0ñtµ? z8q'%o6•2Ñåd¸ó憙A‰mË)Šv"Ô+¼¨·*xf?hÇßV]\ƒôJÅÏߟ¢XCøÖ¾‰ðC˜à·!R|$òÜ,ri¥e±`+;/t:6¼·†qÄÛ(G³Q‰òG˜‹ ¡9} ¸ˆ6-”óÄ'·ð?ìq7c.¹qNÃ:·Tüæä¶“9£—´–˜'èd#@<á¼‰Š¹(²)SLN.Nšªâ‹¯ äÓÒã9ü¦“½“›GÊlïÍän•"FQvÐ!ÒP+Çœ’n9H«‡ÜίÂ\Ó¡’ذ\'á!+È}©ZT¤èp⬹./‡ir~ªêçýÊv\IÖXcÙ@`­„2¸ÜÒç:2ã4xÍ Â¶mé #Ôc3ù,è{”ÿ”9–âNl7(¾L¬N·Caù>ô0Y”.¶÷©u@`-uå+i4ºög¸L%7 hÓµ o»Z°ìŽOm,l½Ë{. îþCØ’9Öó‘v£^Ù~`M¥=ìP|_Û„õ~2!™‚¼P¯½1ó iÞçÅ ^–=ö¯š8” 6xׯ®…» úZ¥w&!>]¡c®ï#êŒÀØŽ„tG)š@kf;þ`MƒAíL2¢FשKƒ©ndÍÅBŒÑ5&C™z»“$ü%_S¦É^"õ@þW¬÷øýûÆÌê›FÜÙÅ<‹-þcÃrm,8æŒ KÕ™E¡I0läCÐü”£ßz{V…òáæ-O3~O3=u¾ìNP°Bjgüßÿ„x|19E_›½W¤M‘œ²LO·~ÓKÊ¢ºÛ(mº×AJµK7S¸‘ÂKYæ?ÃjAKðÁE,gFsL’î¢\Fâ®$ªÜÓÖâ´Â"V-‹¶$ò‰ª¥¥öæd(Lv1eSIž™µ€ñìž B2Ñ1D"éˆY©ª ´ºÈÑÜt¨$Ÿ.zbyd»Èé…Š ŠWEŸ4UüeGoì$ë‘>áèé–->._Tò˜¬ˆîñõÆlªè¤°Bih›­úcÏ™ëʽhš[êÐ\h„išÇµÕTß“ØxÛ(›}-¦@P£g¡·œ´$’`TŽ!ø"ª‹ £D8 ´„è”n¥»ZÏ-©Dµ †Ó'4¾6—;–ß‚Xð{0ä{Q–ÚœÚ{(?r&hv]‘ŒeÉÈÀðŠÄWœPyªÐ|]>œO(OŠm·ZŸ®Uw=f¼Eë¡ !mµÖ ïnSsŸ“RÓåÈÕ©<ïV‹^ƒRìd¶ÎxDÌ]Îh7Å;地´¬\ u¡°ug _¬e”Þõƒð’ÐXÛÍóM'8N\´ý€¬-œmOK›2³¹µ1$å…v«’’=ÉUqæ¡¡*TsÁ7kmEÛÉTä˜A"é¢Uvž‘öMé7>>­Dg’?%Æõ@:„Ct€#@¤zEnæeëöaà…Ý ÚâphªlV …UýbÖšŒ´L¯4Ù²BY}ØÇ¾u}1ô×3o¯U¦F¾®+!~âÖß§Û'‹æÔ"T}ò" Z…î "ë„jïΛ^sÊêЭ‡y“séeñí´ÙÝR¹ðõ.â]&@êé74R U,Õ†ª–°Iã¡v;x³¨LFƒ#hzЬ@FFÆ@Á=bV —I¢Q5H„Kâ•";ýè6}1Ÿ|Ð^×+ð=$½¾Ë‚12GKCŲ–í¶‘FÈe<2 V;ë) uÇã¥× ±yÙñjÚ¡|Ì\¼Ôµ6lÌœÒkV~É=„½V—._­TO#¹ëQyÕ™òIƒo„–­µ½¨ïŽæcNÔÃÍúfÚ¨q©uŒ9èKù! ¥ñtלո„زÄà~1×ðŒ<ñ[E#\°þBcy^œ ¡ ’nG¹ä#w±Šôšl‹AÇ\tF¸ZÇâÁ´Ã=Cß²{yi‡âIž8`?å¦ìœ ÄíéF.ZYÐëg”;Ç«ôÚƒqѤ,™|i¯tIk ÂqüÀ¹F§Èƒ1 3YMžIDSXQ}K¯,CZÙG•šU–ÚÌhY«îI¢‘Fs]O>êG5e )H’nÔëªÓµßce„9ˆWLׄwP§ôÔÓãÈô[´•aß²6š© –ÖæE\7ÒŠ•––}ØÚÅJ2+µ1&Ì7ÆlÖ«m¯WP‹Hã‡ÓAf.në-I†ùš-ãvõ` ®HzòA TÆÝ-±UÒà"Ö˱V~K] †ŽUíS†Oüìr®¡Œ‡{’r£Óo» À:É1˜a2 äÈ#"VÊè¹öe§Ïènßàh.7]&-mq}2Ên:ŒEݢ춺VýIÉóôqóèûưû~B ùþöµYùhç0Ž ó$|Œ =¤hYÉôÉž`ï¶[yi¾éÆËÛýÄšùÌ5·ãí¢všÇ{*¥=ÉŸHª]èU^èSSŽC:ÒÅLcÈ C=!ìákzòêntQºó¥ÒöĈº¹‡†(!Òek)Ó [½LŸ7õ–&ô_È?«%$úb*L8°”Nj7J±„¯Ë /)J‘JŸæ“l-jBd•=f " ”Ñ\Þ Žg&L²¨y´?8l¬Ãïuf‰–`w³ëÞ~ØkYDÀ„I‡’ƒT…×}½pƒITÙw‡ü©*'ì\ÿ£’Vò7ƒdÖuÙz7”iÈ#wÜ‚ÄÄh¾$=Âå W‘²»sIÙ½DR˜zf–Tƒöâ¿ÞLj½þ€èiÖmYûÃÈÆá¦W$N•ÆÌà†·³@ØS½Óg`í¶Âl¦,EuŠŠ®Ê#ø(Ä_@ØèÈí-¾ 8lŒ óZßíòuûŒvK^-óŽg£‡³æÈ+ë‚ãÆ‘[ÁhÄ(bïfGoûB…U]A×g5“-(õmüBä¶Ø»î7žÕFƒCß—?-G7¡ÖQ¤à³é;¡–=Wtô¡_A¡›ëR“ öì¹_»²`ùpÛû!/ »–ÿβlؕͫ»ûl½‹uIxI}×â]–Ùz6þ *)ŠAq¡¶;dˆšK¼lcÇ©„‚ÉF>þ4Ç4t`“¡y#ªçO6º ¦¼´w + Ž{L¢‘1ƒ"îÈá ì½=T{:·áÅn¸j=+˜°Ð“{3RÔ°ùÝ#õB$ÄB—2ñÉÊ!ŽÕÌŒ"9r$¥%-wâ¡ù±í$â„©Ó±ìýxš¼,_·‚Žª]òSW¦û½]\½Ü3%o1? Çï}-å.-[mï°Ý¥N³9Z%MÚ NnQlok/ꥫä„(ãÆ½“œa’•µxsÛhç ƒj[RöX ®mz^ó|¤éê‡Õä/¼ß½ÑÒOˆ7GL&ä(x$ê¡&™kT«Ô§²¦êàÈmÍÓtí}}"ý1f™á™ã†‡lõô 1%Ê$¡â“1¥.Kü{ºG ·ÔË©òå%k~Š?Ž´äù¤ÛKÁÅ-?wÁsm>¨»z„}Pþ¼½ŒÆ~›]i ÎÞ$Q1H—ÿ<ÿ²Ô]<‡Èœíð[VF¬0rÕ:ö׬*çã>zćìù™ô‘xOÜ–¿ø¿°²öTÜ~U¡RÒ+‚Ê NXQ§}bN{F=Ê Wãç>¦¯ {"ë€A®cÔ¸ˆlâÈG¾âŒr/W¯à”œÕ5VH5,ÛI¡«ÆèÊÉVZ¿±¦Ì²¬TŠéKd¯ R}Op:ãÜ|`²™Ši‡[¬†´7D>M«ª8òÉÚm°t`èÚ“Œà®ÆíwkÄ&1œc¦EÙÒe›Xîž4+ÝŒ—páYîC…îw»ý¹x;;ó`¿Oö¹¾glIÐz©„ê¼ãÊ"V]RRI=Õüsú¯q–—î§qæÉ –ôÏÙ`§£p½hžü·îfTÍð€{õÀÁú¾r|èºUaåTË·„â ‘šWk»ps~ËdÏ-÷ Ó¥Õ’lÖkqæ !êî€ø¹ªý‹¦ç ¢¹÷˜]v½ñ R<ëÜ»ì†5Ÿ±Þ·k-æÊ亣$%3üHº# “.1êˆ1ê¸ÛtãåMuHüe}lõ,v'ø&iÓÌÇIˆñRÛÌÌÞ›ô 9ý_’6ÑiŠÇõ·N¡Ô!iú¼xÃrYúÉÙóÄÓH ËBÙs®}ù€Ž_4º†»Kû·wy»^vSæÈ4rfž\U&Z~ÄL2YDX9¸2Š3d÷à¤ô jÇ( TöÄfšXÀӠП7Ÿ¸¸ cÈSÓ™â w²m²Ñ³Ôô Ò¨”Y±ÈûnQò……ΫÐÝ‘¹Tã’Cðî†vå8ý(¾Ê³›Õ_­í¶{}Kï|ÆAÅÜ„ü0™g¨¦jb{ñÉ+[ÅvšŽÀpu} ÇN=þÐù¶y³¯–ÛvÄýbÃÈý"&¥žB†ÍÑ!ô„XêdÇdF^xzp¡ÊüýöA¹ö3)ë–Ü·|/^ôI©ar¥¥õ’¥=Â'À ¿\0ŽDqy‘µQDã“HdYá$åê¸ÖÒБõ¨4AbG´ø8ˆoy_û+ÊŠ£j5ËI 4 +𢍫¼ÉwB=]`(Zµ þ é|WmÂøÊz8Ý—ÉåÅØQoCgÜÏøy‹/ e¦üY&»œ ·PjE±>@¦¯½,špJÑ^çäùМ ªM`‚X=W->5†z:ÞÈ[j ͋¤ébMU„ûéþ¹½I˜ þH´"þ|fÓFFö Jo‚V…Pä=Ë ©’ת³r«E¶ÆÏ6tDÃjRÅ‚˜D2¾¾¢%÷Âí°Áj´™¾j¨Q~);”S?•½ i§òžl„ñÐcé ¦•¹ä™† 2-QG‰áT½ “CfåI¥9+³ÎøNO™ª—‚l9V1:û-z¶`ù™ÓSðç&üF%ZSa¿R¯ ‚á~Q߀¾Çryb>ºî­¢UÑg9»8¶â ¸Ê;Y‰[!ìâ3Ìè¶¶ü(šO¢Ež‘ÜhÅBà×Èwúï–Q ¸å«‹†Ê©‰ö=êìcë#ÞIõ"@íú$™én†”º_fïˆ]ÙxÈÛ)‚ü»•i‹áSpÚJ®° ofÛ ˜½Ï…@²$«é£‘„::"3e±RiúÞÞÓÅÊqPZgt«øëØhZ»\—¿ñ"!‰üí ¶}Ÿï…ñéC²oÛ×¾¦ëWÝþÓ:/RšùõT‹  «F l¸wλvÅãS:»—ÖZŸAS‚Öe§ìÄ0·g”ì ¶Ç——Èx©ÍKŽÈ™ª±ÚWÌÜNßîåÜ9·Ð}%‚óÉ]JÄ×AéæÛ™@{pÜ‚“?W'ñŒ6Ìîô-,á”ëÆ7aG<»¾µ;ÏÓCZI“GJ—ë†s[“ŽJgˆPî[±VÀD¥ÕQ‰2²ý½(öš×(dfžÞ<Éß›²›T'“¡N׊KŒpªH¦Ãñ!N›)“ÑFjõ-W©CÜ‚õèuv†(gìé®ËƒßS#ìüËV8æ|ª˜„FŽ?ú‰wÉ ŠœP0Mêö†½Ö÷j0ÃJº–»vG$!ÒýSùcÙös¤ùÿMy÷ãõÐôD‰\£Þ£óÀ‡ÁH!††âcŸHX`û'GV„Ç«Å&Ì¡µ­DBn¡Â§†lþþ¡7[¿¸m…À+‰¤xäèWazçV¸9-®·Ò6{¹˜ºÜ*¢h#Ѳ™Ôq×qz˹Â2xÆÒ¸40ywʪĕ™`ˆÆlð–ÄKiȼ†`OE¶(F…gNÄ·<‰vò“79ÎC­×Ó¼‰bbQk$)mÍœ‡e3‰DG@kÔ÷Ûä±p'@»¹Ï—¤JB>Qr’ôAKí™â?T^ßM@â²A7ÓD…q†¦ûÉ!Cûï¼q$ÕZ »0 x:¤^¶Ö¤½%hC:¾·‰’›ë:Fp®R›ÞâDj°`Ô£,  ª5,Œö‚½—Zpo2uú<[ÿ†9ÉY‡mYº…HOõõPÏ`ó=îUùÞ“<Ó`ãŠÒy&ž}ŠÙ¾O¤O;øçlIïÅ5Ì$¨ö·Ã×O¿±ÔÑšñ¦lõ¢&š Êç7¼b=ÒpSG­·+p9k(æŠW«ð{Íä_Ëò5&:àˆæ¸ê:®Ð²A«ïöƂƞ«T~ÊàÊÁ~C”îûî“äoœ¸gûg›MV ¹7ÈØ&‚d7šn‘Ýo9øX¶›ÚádÖfó•‘TrÛš€¿‚þ냖ÕåñWM߯×ÔPªfŸ¦x`{lIîÓϽȅPœÍÚ5Œøv3¾!}ýЇµæÚǃi¦ÓkÉNj9‡ƒÞVm­mº¦ºÍ‡5LüuøtYéëV-ÚS”´žyÁ%Ö:ñ `”E8L‹VÙâPÝÇ>›´#u…1æ®’#ý TÏÁ©W¼[ØîƒMUR–¥#ìZ¦ÓГ橺j\)Ûýá•L£§aw9ÐfÓ3}“<EɰÄå±3o•´H-97›u¯/w7ãI°©ò Ù#tódýìnë}ûÒzó·´í ¡åtLÛÍ:¬g¥£‘ô Æv~1–h_Ѝ¡* I² c%â)ÑV *ÌajúäümþÊ´ør³Ðø<†ÛÔ,-‘ŠãI#„æK*bîœFZ5i\"8HR’oŽœu/¾ÓßDG„ [¹RFÞFRçSö£hœ˜KEÉ£/ýšÛ0Xîeñ¤"û£)—4³¢z»ñš–éÃ~ýº—¥Ìr½²ÊóAãc&j§A­gB* Æ*żƒ ,ŽE²Ìí}|Ñ0€'ù¾{ÒÖÂË‹$Þ¼5¨Ì¢íèhâ›Èйá®÷¦©2³·[5e~“[¯*ä‹9ǪÖPM«ü&/ÃgVªaXÁ=V’¹àéyþÞŽò=«³’WwÅÝÌQÞ{¯)1û!¦§‘vzÉ…ÖFæºy_I¤èož‘šL%h¢|ÁeöD[¦îÅ^÷T.Àm‹f%ÐI!¤~¢_ÓqÞá´*ìáš`ÙíªÐT€,ÔÒæÇ`¶­Ý“ESDó€SäAÿù-³×EãÖ·§;Š ø‘8Éʽ@mr>yãAšžÄ‚ØšLI{vt›ñ¸¢–-ßì€2AõÝÙ’?ú{]ÎøäøYÅ7;´õ¨ŠOvW|Šƒâcý‚]Ur£«ö&i¯Å4ït~‚¦‘Ì4Òsî‹õ7d?ébeË0æLºo™b+Uùúd, ÒïÒ§µŠ;V_¡œ«kœu ·~àüÖÆXoªÁ…cçiÔ«¡EµŒ!¬‰ÖÉßÉã'Ò§‹ùçË‘’þœÊO4³AS3Í9ÙuÄÄáC?|êÕZb+·aÁNûŠBèú›4…vs¶h[ßx!… Y#Š1ãrGs÷ ó’„é}xºn®ªH³È’î£&tÓHr2*Žž …ª*“ ;a uo©~ªÞMZ–&m!Û-­ƒIiêGŸ¢Õ£4ã4ÚФá$MU‘ ÚºšŽõW¯ *tÈ'jë›’È0È9Þ˜wή­*POgÖIS½ÙÃÕÒÄSD~‘‡Á² â4øÇâSµ¶P ž|9z·7,>Ö/£ô|΀oˆl†)˜ {ÑÃytU£éˆ*^èQ¸)Œ)„lvû$²Õ÷Fƒ]æ—rf^zÍ ’À¬¥"1•¥æ±ú¡ÎðˆóÍ!Ž w 9ŽE6™—ýO4“Ÿ&ܹîÑØvÎÍFÕ×é;xçå›·BaåM™ntµ1NG{ÜÐŽ +Ž×z-ždóòØŽ1–Õ èÕ&ÁÃÖDF@˲–ýÁYü£–ÆÀéñOƆá!§”‘3rsm‡$ùr‘äAnjîTÁM[†éwÕxB_PfiùѦðÍ1<~#¹„Ì îcÚŸgI˜Ò1»¹ïuº Ç»Lk»™ìØ;ºìë°W¥Á™¢l–‹Ô\nL²ÝS?ríi{¿¼í÷êkųJ¬\H]SâiÿÛ”#ŽäùÎ,é¡'ý¬jU±Qh§ ŸõIíúëHßíè)G±1O/Üu‹Ÿ{í´ÈéâìCª¨ðÏŠÌíÂ5¾n‚¯óØ+ˈ„§Ëo}—#žš·ÑåxË5EŤNl@£¸3HeY:ß³i2RmU´ávÜÊaÍχlËX?Üf2F cRŬ±8\ÊËHm6Toëêv{¸ÉóîúAáÝšõ:)ßNÆ•6‡p‹i{\¼îcÌ#î`íqfG ¾M¥œÃëÛfçÛbwûϪf¾YDÊ—+ŽF¾MD]j%&€™´i0I0F;ÜØð±¯mpË…sÈeW.&c©¼Rï-VŒÀW‰ñs¹&»\Z¼ 8ù4Gg#.läŽvï6v]žy›\‚„C_|Îâqõ ›Ê‰ÄoBÏŒ DÔâÛ‹Ç!BvRCD%­=2ïò–;Wµ“-vKÆ?/õOf+ÉÛtˆ^‰žÌ¸]S èV€c‡V\\$ò¬;ãv~²­½*·Ä¢‘íL¦…i¼¯£Ð©aʲgýóSKµ·9ÃäƒBÆ8‘7›lªm^¶¯[ç rX2Ò7è-‹;žyxòíܬuIèpª ,^ë…­Ø(Jxë?…]§ðGÏ…Çy§¥u²5ô<<¹ž‘ý™çÖo¼}7‰J¨ŸÎß:G+ç~åøE²Î¦1ÁõxÕ®×yrêðq§ÐHJ÷l^–7ø±¿EG Q÷x×Aèý£!ʃ–5—§iˆÔÂñ †!ÃCˤ„Lú2aB‚ÝábEÒýÉ%ÔâØÚ‡ñ_3˜Š¯Ãöü¶A½‹š9K#r[Ü{;µŸi kÁõÃ7Ek¡ÓãÙjÓ!_²†{È~ n¬W8Mä/Ö/Ãñ¼p8 INÛoÂu®ÙbiŽ‘¼Èˆ~Ò©BA§Z·y¼ºrNFºä=b½mÞ.Mõá:ŒœZNƒß>[¢m©¦E0°êÊ1Ò™ºöëmì1)Ã)³évžtÿ1¦³ííª +w]܆ùKs^cÝX£Iºj9‡Kum‹GåÃA© ¨°ó7A¥:7"v¾&h¤ŽÝ?Ú¶{4EÞïÍŸÀ;&³ g»ÙÂWTÛzv_+S]”,®ëf¬ïÝÜ/ö5%1× eLoh.¹Ð§=Ñe…ì™ß¯à>rÇ–¿6¢xè*is¿V9œnJÉ}ža`„­ê½k ©¶Qo×gó./—ÖC‘Ók±Uì¬|PT…Žú[¶¤\×e=N=±ÝLS%,¶äàYoIu_ 4å„úÂû_…ÙÖÜy›¬¹a ½ùuò¶œ‰+'¦¶ÑH´”{»rª}ýšŽ¢¤y…¯ÍizøËÍaj=V ÁÕ‰Sf'S¸Üô…9ù)ŽXöVž{^ÓÛ,ûz!,É4Â>4mp¥ÍoF÷E_Qm3Œ6n€ÉÄnÚ TƲ“’DØ‹´Ós-y(n¡šˆí¢ñ£F˜v½Vm£ºÖüô{ïÊ9œfí¶µfNõózßÀxÝZòØÞ…!©°}$!žõìnqI&áÈI‰¦°õÔ–„Ý^«C$½ <Û;Œ­¢«|¹òs,I‘^fÔN× ño›+ï¾Æ½šmà8öÌ›í:m!?¼_ÚôhèÖ°+ºéc€Ðé‹'Ÿ_™º{fýL=êÀe–‹¸?餠Kª_òü(n7gn°j@ÈTyîBÓ#t5‰)ìˆLNŠ?Çu5Š©sq w“»îĪ·ÜÏHÈT˜wJ pdº…·¨J·¢äÎ 0éƒð(²«;?s˜ÍÙÓøæ¾c·‘P7¯@=zSâ^ß—=~‹êÉhƒÇKŽ}·û!‘‡j°^¢¼®WË[7<›îèûYäŠvaûÆûúoMwµ–öú[óƬԃ¼%¸ƒ-Ü?gÕ@Yo+½|¬ÅåZnù¿ýçb&¦ÅSÑÖ, ß…„ÖÑBŒ-®JÏL€œ}tÜ:ÁLŠóö2iOß<ÂçÞý ¶³½ïlæë!4ŽßE­^ôºsq‡Ÿ!þÜ;X¿ºé|WÆd²æä½&ç2´Áluõ­Iå7‚H ±®ñÈP_s[¨ÝÓˆV1oØ•?¬rUPõùŽö¥z÷ÍÁX¬´-„ÏuõG:Ði·FQ6=l‰ÚPïóÆîã¥ùŶè_à ƒ„iŸº.)iñÁòur;úÌ röCtÓÚÍw>Î훦æÐ5tÖ/݈4óNB\ÇÆœÅ͸¯9’Œ"$C—S4î­á77Žϸ–ç(øçÒFDÂî­nw£ÍÇ;,d‹;ŸKx—B&ÞÄ-‰¸è™v³+|Uÿ dä’®>07 dUî£ Î—‚PEçÒ9®;æf½Kn¸\¿¯O¿M öøéy“Úüm•Q‹þBá+£‚~Ä–õ2cƵ»ûe2ì8‘p=Â"¹Œò]cfj¼V1~µ%ñng¾BÚI/òÒªÍõB¬¤y|1*Ûò][k\æ¬EÑ~îíy]Ò·–!ÁššOÞ‹¦-Q:|±–)…t½>\o^U:äãñÜîÍŸ^‡ža뉵Opd5ѼÙêJù탫S»üªBÁ¡c–t¾Š##”ñuz¹# zÖŽñ>=Þzzk±ØÌ­ØoïuÂá~6µ?Í’GdþÖCL%A'¸6{ ‡Í)²ôkùÁ#o $âÒ  «Jžjg±ë¶y ŸÂÇùo#ø élCJ3câ}«š©C:²x­¹aô§wazã¶ØUªõ…ÒDzïÀiÁ2ø´8~óÖ{csëµíJvÜLJúq™G‰€HuÒyO[œÜ\jgæ}cî ïjŸH2æv{Íÿ¯’³|Š‚á¢ø.-¹´,Ý%Ý Ý½´RÒÍK7(ÝÝÒ]’K H§t.H#©4H½Ï¿ð~½ÏüfΙ{Ï\–ú½8³‹‹eØ]è¹m±a0àßxSç–^Îi;C ¦H”F‹âj’­bö4Û¢lha¼è r¿LMT¢!n¹‡ødÅúD‡jbå*ýÏó ($|KÝaðýýö#˜ô©e´%"þ L5CEš‹ÓZe›"Þ¹¸) ï: ‰¸%°L½rW÷c·þÔ< ‡¼rˆçeEçÕŸ½õ½/ýýç[]ÈxÍ‹ih—œ¥i\lç€X #Œ5®8B€  3{Ö |l$Ìï)ËùªŠ†LÍ®—pÛ*Û,ïKH\q}ùåý"•${ w{¼’·ZgÆÝxÈ$ظ/vM’»[¦¡-x|WЃÜO—ªïˆøåB7Ël‰ò©œ¹¾põŽÓ }£–„ÏîVê¸0…¢¤þ•˜¯ !މ@Æ).3ÇožÄœ{.•Ì”»í|0?Ÿ¿¨ìºn©¶÷z]õ¾ ÛÂiߌ„wÄŽºb$HLصūǕëcâWñÇÍ䧯á•)·e·d‚ëö¦w½:ùôù…c­üD€æOÝÉD'î£ê‘¾¥vÞ[ð‡=¥}9}Ê–Y‚Œðb¦™B¬ªK¢Cj§¯€p½øV Û(1Å–3ë¤âºñ”zH÷í×µ?þp„wìcEÛmiÄWÛü§B áR‹JÐ(ø°}¯ršáЖúx˜;РtJWôiKCbÎ- Ú½?×%ÊÔžUFõOP«z#ÄÑO˜5à‡’@LÀPM Ш¥ê‘7¹‘Ð˶µ›‰!¬ØÍ§{„Pæ`æãø­“øä]Ÿß„µ—;@¶ÍÍÜ %MD‰Þ©šŽ_HšÚv{)òOš <ƒÖ Db|=;E/Ðz°XƒÌü»ìÈ£‰%ç]÷ÈÔˆÒç þ+`o{øP²¨ã ÕÛ ¿u±é°§s_u\ÿ’دô Èt™ˆéø/ˆškU¿ì mtXœëö}g³¯$Tîë:@vàSŽEŽÕû¾\Œz^v×8óTQ›G mLΦ&ì?b¯†ä÷ÚO\Å’â­ºÊv6Óˆu KƒÆ»P„ÒäìÌ77ËÚÐ$ÏôÚwþ_ü~¨•FÖ§øuëÓ‹ÿ d˜éÓ¡?ZU’ ­j2ÁÔÂéUmPz =÷ª«Xp–†›?üÚBãY4m¢Ù?5=³gV¹4Ù(#¨“m½nÞÎs;ªb$ï®ÝÊÜqˆ9f€*†áJõ.ÿé ÝÍJÞ*Ü«`\/g²c4,y¤»scvÔGÀ¬‰pØÙ9»ÊsÃF^Ñ›;,lòã PEhªœ Ÿ1½v3úøP2ðš“Ri_TÝÿò!^‚øCkÇÓ e²†„ŒåɯYЧãqß³÷ñ¬_·îwž¹ÏR…wc{ÈaÉdÏѺ1pCùüøØå°ÆLŸ°dFþ ˆWµ”µKÇËèñy žÞÒ¨ ÎB{R)(™ç &†=x[ •d>:qijãŽ}Œ°¿Ââî¶ËmoCDôC2jb.¬GÏ$&~þÊV¸orNd)k§eL¼ÀGUË‹Ÿw;¸ýé?ývµ6uŠ¢ð¾KIÕü u*£¨÷³@FuMo‘™t¿¶ï™~CdãÅÔÂÿ‡q±âƒ,Kßô8MñIŒ5 tuHÏ"©BZo!”€T)ºèótÑQ¤˜×Mºx¡“@t«$b§F+«N’ŒŠ6‚齋Æ8o>†û'Ø|4ñEó:†×CL¶‰Ü»üsì[R0YobhN#°Íq쾨·ËvË"Èë{Õƒ’cÑ·|ê¿(‚V˜ŸE »¼è>t@5/ç6ŒPä$ÙX»õÉ`ÔmmÚ²H~ Ukkd=j¨Ç¼‘ò[jJ>4¼±ÉÆßg6·ƒÍÈø¨²»^Zè—Òlãi£m9Ì‘,Î×ã¥Ä‘ªöÓ';VåZÖe9Äð)@BwuŠð$/, ¾Þ,'ÓÌ‘‹•1"z.¹¯—Ùª3—øöv´ó³Ug œù鳺ѩpJeTÖPý±îwêHcXÐ1ÎPnéíŽ7€Âõ¾º j¼œjÊϼï÷ÁšaÎ!¶ì¾÷7>üA¦%Xìøj¨¿q²¸3®~Ñ]+­ÌR—LîÁ2{ZC$!Â73°þáßù3ªpAÙ'­œþJÉ ªÿ±’­ó¢7X!µËz|–ÍûôÍ}šþÑ‚ ’ZÅ®[oŽh{:*ù{®=È*©.oó1‹³Ùÿ# ‘Û#~ W`s’ ®–+•RùY3|£ø¢K§QÑFBGK Ü¸§B£!øö/È•H'ᯠ¿É·419ªAà–¸F7è1ÈVaχÏHµßÉõ¶WÑ<ªšW^›G ¢ôѸ}ø@÷ƒáÐ0…1òÑ’PŠÒyð+Àz…j<¼ô¼q|¼k‚²»#ñI¦óâRnÔ±“â·Ye*²†µ‹¨œ2ª ý+Ì ¡d_Ö#0Šè¨Òk&"UõhM²j“ró±f!æWªµF‰ãÇW¶Be1@©øcÕUÉjØ42”»¸YhFäA'í›Ágª4V{Ï)¹` FÕÜî„ oø_|ntó”-Ѭ…‚þ´Á"2ãÄ#ñ¢ê©(kà9·¼Zÿ_UïÓëâiÎÝ~>ÜãRIà®(…* Æ BDD{†ªÇ,‚[2~ŠHþ”øðç"ÿÒ0«¬**k{èBákj‚Ëé+½˜v¼V=G’7-Ù¾‹;k/<Ҩѽ^ÙqNÌË’Ó³¼þFÞèL=o&(©cⳬQ€ F’&K k‚wòpN×ûYEMjç|h¸hNt±Õ¶Iao&ãÃR ÈT#ÎF dt¼#_ý¶Æßu/q—Èœ nùý,u±šwêr<﯇ËG‹×Û¹Ú‹ï1?+å+þãXܪ¹¹›v<@óO‡§À)º±µ]½LºÇÅËz­v'¬«ºêêrIfb•»Å»ˆ’£‚VQ½ÑY(TW’ßTxt0=ãsà/,àö¡Xæ;®¡õz+äªâûõÂ~ ËŸìfäÉu]IßaÿÆ¥ù¾y“Qú)ëöé¸å\Ìfלèf—cHÍÐÌ…V«Â]Í Á¸#ge»ë3W&Ý3/û‹»÷ô®´ s¤M_ߨ²ÃŸ5;`x6 ”íNø©õÂËZ‡“ÂD˜“FÿáZº/ÄùÎß먷^UaÆk·£QNǦÖ~¥p¦ÊI]ôÁn¹z^Ñ _?£í)BShþšg§LcÏ-‹¤y‡Îð•uè#Aû¹†Ì>»×êž fûÁ¹ØÒQÂÔ˜1œHPº Ëp\0èòŒ±ÃmÍë°r\9¶Eºû³EòFTh K)湬·¾ ó“&7B`Ĩj‘WrÌq­“ÇÄÆdÍ#k$fÉ—éðG»EŸØÚuÔèÿ’ÚäÆqhgádÞ®¬ õ —`øRÖRúž@=û/-yÅv4ö!(°éwghKµd ÙëçV¤ák˜:±p³pk[ç—ó²ÒcuÑl¥¨—~'XòÜÑÉŽklîéqÛ$å¿eˆ o«Ÿ¸;ˈBx4 ‹}ˆ¡+߉îU†y-öŽñßz]ñ†0Úä(¨0ßpþ]-Wß‘ËeT¥•ƒÔ®j²!ð6ûLóús` Åj¬Û´ü E½ŠÀÔlã·s¾Ÿ÷‘o hNÏK:êH4>*Üw/¶’×!7I¬êœ·úõN¾ûâ‡5 rL$З”äZýõ1jš*÷Ô¨*’ÖF›ÛÇc º~IÞ]¼  òûÐü6ShTAS?-D %5æˆ÷4Òò¦càJç…MZzh©Â0zqpÛVèWàF5>ŸªI”Θ[tC‚h!Ær´Éÿå‰Ü„KŠiI'ÿÐŽáIo›ýVœŒ»ðÝ4Vñºç¬Ù ÔÃkwzùlÛ6¶4dâ Qùè¬ãt&ë©›ŒÕù`_[”Ó‘ ˆ1Âg¶Þ¼r;^LZcMeíØ,µ“ž—p#t É“+ýááO$ñÇøLbq¨%ùùÊàƒ3­…)¹ÒïÔ‹½Ó;|̆Ì( ºZÿ š9l›¢hÇ^ÿÄfè#[Óôðí(EEFqº‹ Šë¤Yí~‡eÖq Ñâðl˜¿ƒÀG…!2”œR=l‹³5) æA'ØËÙÛþSõˆ ùÀÒ^]Ñ™¶Õd)Ò[àóÉ­ÌwKCÌ-“aÏçî*aËÝÔ¶©‰qÞǰ¶bûíú%·×ú„*ÛJòl²£b«qWÌ‚©Öc雼¹’XE«‰^Û5ÂJÙÖ ª}c¼L&å h¡”BÛÖš0ìX™™QiÍo´é¯ÇTO_y}܋І¥q%ˆ\L ™êÈ´ï–eú¯Æ5Ïû( ¥gvüQ0ˆPµ† —ì¥é;ØX‹Ö/kiW‡¹æžÒr{rÎ`±p*nå@!%TSW®«Êž²8¶Q˜†âÇ%ôþŸvs"PTé.Z.0Œ|-±öc­U'ˆ­Úu×Gåˆ6¨äjí9/.€¢œºò®‘óéån'Ðú˜Z9ÑÈX«*@þx Ìgòe£1%«7Ħ^4jÞÀÖßÜ 9Ö¥þžˆ¸Øiãv²ÎtÓ.aØ.á]\t5É,ËÄ<’²ûÛûð&…³²17 wN:%æ_òÃñVnà)ct˜]YçvÁ8 bÕe=yuS¢›ï€Óþ96TEn±Îõ€Ìj·_©:ýÐrj͉BË¥d$ɵN³L–ª—›Â«Ô¾øñ.jrXZ¼á·k±y–ý8¡êkåÌããViö˜ Øž£Ã߀àUˆF–»êèÑ|ˆÍä /ño úŠ÷Í9žfÍt %6&ƒÒx¨ÅPDÐq¦-AÑûa9ÝÃ[ßW®·ú•ë@¬¯³Ï¯g`C"?Öî%•£,ó,gMP›lOàî«ðÂ2¯I§}©ö¦äÕINwëjðV½À…Åá÷aÊSŠ ­q\õv^†<¬³ì÷„U¹Ž<'ç¢å×”ˆœfqÀE›ÄjÑØ`™ÇÄy›„¹é©†@Ù²¹?z}]ú™b&üŸU³!ÄulÉDSvü@FŽîíìùÑëÅ{“A,bø/ž¤þÛi±17/¨ÛÐ/F+®Ì_“ÌžûýùÚæÅ-aR£˜zbIðøûy)|³ meô -‡bäíX•è„g˜)»´ ¹Zj¼âU¡ªÌê寊þƒª"Žé ôð8ÒˆHí•o—Sñq¼ƒ$º#3lãòʱ­œoÔö]Ðô…™š ÛFK›~ÄØ³TVÕǶ?5y’,ü¦Z‡ æ Q{' ÀŽaçà¿Fáú½8—\YÆBßêÜ,‡v6F¾l]fö‚}Ñ­3é-ªX‰‡ßgÄZ(Îz-Tï b0Rõ(™rÃ×k«åx<¡¹wäȰ&?÷ Ñhå»—ÄÃÑh©dÄ.Ÿ¬4Ì/¹ ù„adfÚAl#o/ðžÝw ÃÔ8§R¼R_¥ü»Lg½Qñߔ樽âBYA÷qt_Ô/B8m»K¹”=éCßW‰Jòd¦Ÿº1õnTº¸œÓ[*YÊJŸî¦¬ꎜc£yáH êô«÷QjÈy £‡„D6ÎvbUN‘Ué‘!˜PÄsEôŽùÒ¸[~2/µæóö½Ýr«ËK¯¡tg‘ræ ·_⬑Ï{PÉÒ™ÚÄ[Ô¯a‘8¦Z—“+'¼ Új_D—çgßœgÜPI¬ÑZGʤ>Ób0¾„—Å—””`'€u²Ìô×Ò­˜óþä=íôd¤ûçþîUŸå!:±ažsQ4¶ýà¯T*WtæþÖ ‚Þ›¸çD6ç“¡!§ì/ã\–ŒÂF¦и²@ž¥3Ñð£ä£É)ë!þ¾œ½Íã›` ¨¶¢pK«õoOö·rõÎXJ°VJ)]Š}8KV¯‡A’H!Žm¢ÁË*F˜FDOïê4½±Þ¨!ô˜¶¹¥# è¾{ÏX±ú½4qåù㲇ÿßUS1ç¶vI/ç@„uT‚Ÿ\dm1j7dQUô´Ú -÷QæÀß´åï„ÈãÜ×…ºX±8Í“ÐÏhbnãxÈðµ†Äíé s„¾]E"½W`¿±·Úpƒ/–@7ñ™ZØe –·¸V¨ãŒ¼gDܱÓ<yM·QÚ†R1ª?޽NÐ+›àíssÇOñ3Ç®~ý7¹nØ:Íã·alZ5ºÇÿÏ™“ôuÉp £²‰yÞ㌅¼0äìãúïíÉAÐÁ@Ù4ÐÁ )¼›hϨÔêE8'‚s‡h‡„v^È´¾”³<3ÒoOÂR¢¬ÙF¼ÓÞ?¯êè+’*6ñ ñ÷Šõ—ÊÂÄÔÅe¯Ê(¢wJ¼ Þ`ža,ŒÆìä”jÚK•—Š ÇôWÇÎ¥%wZ0ýåUáZƒ—âÍBN &Wõ®˜{§_ÈÆ|J“?w¬…ccôG`—’>Šâ ÝC<Ôî)J£òÍÆïN¦’µ»Ri"ë;ƒÏ=]ŸÎ>×kÒÓYÒW½ìJ¹ÌÔïv9³HÝ£Zßÿt˜’N÷õX_BèLDï>6v;QÈ*‰AßÍk,ð¢Ç :ã“ÜK :§ •n€Ø¬qBÀ;”Ÿ:äý]O ´êÝÜpú0s¶Ðd¿YÙ&™a'w[Ò¥9Ôjš)ÙÚhU™P"ðW¹úŒòFÝrRŽË®Öí:ñ3†0û+&ãVÙPˆžóïè¨Ì¸a²f,$>§LÚ7úshj1õÙi•g\9r[ ,!º¿8óùÆ$‰Vjúˆ $Ifw Ûh¬ì|åÊlo±«“NRG§J*Oßù7~#*¦ƒê”yFSܶÎ9ìÇôLಭGº¦_8sVÂÕåvÆV‹âbâ‹mÆYÄçuÅÂ…s©ó1_cܘHA¤ ‰uÞ9’ã°ÛÕ†îf rˆŠð¥á¦`f}ä”AE+–%ã#¿¸·?@¨YºPçãŒr¤ª±v×1Õi« 9ëG…Ð]i9 MêCÒ0½“p>/}¿˜Þ÷¢qÞëöWzqØ@‡â AÒqj~nÓÔB _­š-< “ÍÄ3UŒC²G«´u\!ÞÀØ{OÌyï\Ç’vúBOØÇ@Þxwáô­3qú; ±ËÕº¬•$’øõQžÃ§Nð:rú`€ÅGÊPçõ9õNo”ƒ€‹¹š|lËjçâOç—ß«çK‚ϵúÅÖfØÙÁWW‡wúíxΔ²;ArW‡4ŠSOÁÄ1>Uv¦r17šq>1óƒÄØ5C{Â×*ç!,EXÜÚÕ$ªªP®;¤¹ñ%¥Sî0Þèxë%pâôgw0–b˜‚yÞ[aÆÉÅÒmÎùÑlEbµ>ÆÉ —5?Ÿ'¦$÷Iô$D, À›¸£bP—º”M¹´&תÆÞé–ÈÝŠX®_·¯K—ÃÀ!„N«Ò‡ôâDñaÛ¥®^´:9ŠÈHÄçmiœ|4Õ6Ðë_T{;&-iy@§= ?}Q[Ý>êcr.ƒIH¶˜Í_ P†ö•Rá«Dß‚¢¹¸¦ÃÐþÌtÚr¥Gmøc‰ç@‘¨€ÏõD‡Diúw1•19ÃUUx«EÒs¤X'-~œ»K‹©Þ‚‡ŽÊù¬‚Þ«ñ“!¡6†ÅY9ÊB„ð³e ío¢‚„áttŒ nèvGÙ;ËÓŒ¦š ƒ’Ï^b`ü<1Š#­””âöp¤‘"èb­Ö¯Ž!þfINQÏNµŒVC‹ΈÓ.•˜~¦Sfäi÷+Åd$5kIJƒ•®%ŸŽØ…¢ÇÐi±œáô‰}q°H舄í)32zÖp¸æ'ÚcWKw Å~cÕ2dIy“T$´,ÿtý¡Y{\…dhüJZž‰†U‘@]jáW…ˆÞ4¼LY#ÀAŽÕÙ4É›EËù„Ì΢Z,mAÐ÷}ÈéR;RÀstͲùJ“ºD‹ f8‚ÖñÀ»ü”﬘Åþ++ã¿â»[¶E¾L»™ ¤h‹pt ƒ"?Ï‹£ºX·ô Ó“%é÷ÚÌ`yäFˆ= Ë5¦5È.Œ~‹‰N í—Fzå£øË”ZkOúyI)ƒwZ?C¨ni®œŽ×'&»ÔŠ*Â!#ŒŠš ÎÎ*ÐÔÊÏ¡ÌÉþg­Èö$µ®FaK@ !¢–~òëL0 ‰sÈsfA'Z”‹×£aa ¯¡°DATЊ]Fj0ö³'ûøkÒ‚¬i²0 Ñg,nöº,È‚¥ï¿p˜Þ_·§(8*¿øÑEÑ&Ñ®ŠNHÖ ÔŦÕÑñI(þÔ©dåBKÏK(!€ö›F›.E9›>ò‡6Q’κ†V%ÚÎÍÝQ3O‡ü`JóMƒˆRT$“HBÇã jªH*òÛb³2, ä€$jž˜ÅÓß l–ËœñÆ_´2 eA´îKë]4{Í*ÿ¿Ti5ÊÉ_ÈsÅ~fÚ5=T9!œ±hŸÀÊ"ÈJë˜_-("uÜâ‰ÎtSÒ¤y£žX›“?2*Wø¸x ÿ|ô:Nölƒš0Ø×…§0Dþiz2 w4þ©lˆúêjŠ/Âܨ(ûž+D¯‹WÿχBËZRÔM7lQÑbŽ3ew){C å)ÕKJòuµ°¹«òJôpô¦ªj ŠÎö‰4žó{Ún\aV[:Œ:}¥tiµ~0-|LÀ‚ª "êqATÄÓ__Ý·ƒ«ªËXÝå ‰Ù!Ñè˜8Ô gT?Ù{ !ß(£ç?_ª•ewj¡%þØ[yï€ÌÔú̲ýŒØ:žëU$˼r·-Âs=Uf33RôÉCuÈ®1Ìûéê9ÕHVV6¤Ò¼Ñhźy¨ EÂí;C6véC®<Í.9Žþ¥>c‰q3[|Ôw‡½½Ât©çï¬fÈDB¨÷×BšT9Q÷Æ»ã—HJƒ¡zØòL“yd5{ÓrVý¿œe+x5L*ÚÅ ¨Z•Y:˜ÏÄ_¾÷Íï‡Æ—+»¡…œÉ+Xà¿+•»v »5)Õ!S¤_ Ý )Ýh™ZâÑåÆÐì/UÂ!—…ä.F‹Ôþ.õm ý½g"xŠìJ¿A¤£E•3ÄЯ¨JÂĸÏKÛÖ4+zb|lëÀZ‰¬»FgcŒ X†ú5‰É$åÆ;L@!d"Ú¤¢þõO¥yH8àE>¤ÈMm§%h0¿cN²CÙº©¸es¯ømÍ3-&pëYŸoΠ{QQ¾¹Ãöf[È ¬Œí¶cÆü†Ažä‡>´ÄöÄB`߉é&Ç€µå±@î!ŸæDè ©š1Ú\Ài•P] ’öæ9ä†H€ )13rŠª­í<-1 Õ¡}e{¥|ÂÞ¶NCLGN¸9µr˜:o渟¤êÔ!K#Öb›`ÓK­ØtÁ½8sËK#‘%To#-w¬·=Xw¹@>ôRnT)ÍFþIþW@L'½ŸœÆ»@{ÄŸ]ÝÁ-€«j–·xúZÕ§("š3Ìyø–À13òg…Õü;(À iЊ>©#£Ô3(¯QÎiV‡¾ ƈòqà¨ËP4×£IÙ¼l‰ÓЮ-¶ • ÉBYëú…Ì•\Î8šÈ§7Ðb¨§,NRA¬‹x_J¤Ò«G´‹}a`‡0å2ýo×lå¬*È:o±ºêzüpä‚Ô•h§ÃŒ²‡à;É»®4à1’CÈ‚Z%ÂÁ«\žš¯‹Úo§e`7#…Œ`ÜhAî¾}d¯ñ‰öè‡Í†ùÒÙƒ¨óèU>™þ‚q˜€¸½œœPÆš4 faÎP „Ÿ «¸Æ_aÚU)Cبc®tžX1CPÊ׆mÈÓn:à Üw>1þ“ÄíH;›§!ºQF!€'F‰ iîPÝÒÁX ÆÍ± 7l4ÅÂ)geCÛKg)/ÂyØ2#8#$_HžÍk¶ˆq‚¬3B”\•ì³`ƒ£ŠQZü–jϧ=DââY!†3PÙ¨ÑÛÞÔÚeÊ*@ÍΙAÃ|ö°®ËD·ËRBžY¼{#…^籟ö+kÎò[wŒ‘S°X;O ‚ùD "· ™Ë÷3¨<ñ]/[0Jdë/‡04Ø[dyc”ºÒÜoØZE‘ûÇàÕ]~oÌw| \ u–Lk¤Ð/Š®h»ѳßuÉBQð¼HýváÊЀxÔ”œ6ÑtÂú,Û)¶Ã5í_D¾`êEA@eØl¨@,¿ëÍL½ ‹Ð üIL-Šéjѵ))îDϦ0z-ÜÊw4ÌÇTH˜e‘ò¬Ž¹Ÿ¿fòÇ9dÌi›1ë!GK‘( qÊyô7dxÒ@„Ö1­ôÅÈXyX§ŠõY0âÍpI§Ü¹Ø%J0Z "9û˜Ó·«´L@H,èñÏò‡bTaR[Æ+ÓÞ³—#·µ¢,ÐDjý³¯J¨:´x‘gŠÈ˜afK;­_ØGèe³Èìò8¬Zž³† ïà«»U$ª÷×aU;«}›Æè8VºÑ4ôÔÊýúæ:8LHbÒH"õC¬­“³.‚SHç—’/aâÎQàêµÞ)wV øð @r•DVógK…!×s¼ºŠˆïÅ1Ûý_å+QñýÐPR–ô¢²ö˜! q˜…v¾ø$Ç&ª¢ŠÓù½GA‡ãZâ61æ”WÇàªßr;)ï`ÜÕÖ°5ÿ¨eLòDTS²!©¦("ú墸*)@ª¤.·X4ä:ÒÀÙÞ4mås™ˆ©Ø¨ýÂìs!®k—õ|´87Ä[(ôçþZ¯–]mlš¶ë†î²´GêGÔ”Ñj)Q‡r÷¨´£JY@H¤4pyV_<¥1Eaë7ˆb!†gŽU†BAZŸÑôÿ””g ŠA·ë²O«­W¦‡×e© ÿsPj”eê&Õ®ÇÖ1!Ÿçû©ïX´\¨’%ä× šÏŽÔ~‹ƒ½µš—¸åØ‘aޱ/ìÿ\Š+ƒÌ¯ñø‚$ µ®Âƒ84_ Ï<^vKóÔŽÁi½ý`«ÜÓØB¯­9‹«Ò²©Ç\ê?DÁ -óPeï´JU¼3£ØÇzØ¿q°ŠËE€AGoSiï9Sïh†äcN¦ñ+`7Öñ1;ó ã˜!ÈW˜àç‰w}âźæ¢qðcyÖ…ÆÄH?tåðÙV²›ãç‰CïÏ­Äç‚æÿ†ûËûLE†Aº2§º’†ð=§% ƒíÞ˜rDé?áRô«ZOÉ›»çÔ –¡ayÚÝüÍÇøZÅ}ï°¸€¿÷_öð6ȃ%“Ö¾*uot%7{×_@ /É?…w»ì/%îQJºdNôX¯ÖY&nÊrý&ÕÇyæ ë›ä Zž}¢¾ŒÈþàU% –wÙ˽0põE2ظmˆø¤Ìµ”xt´Gf³F½VþDj8}õ  ¯ÕhÂö4úŠô]¯ û—rÿ#çKÌíüù²À?ÿw_gI݆—ÿiŽók굊æŽw?‡;×}TÁ áSâ´÷Ÿ~AÁ÷ëþ{åW@ÃeB^Û%QÿØæ>Ï{Ö+Òg1ƒí/¦ülçš_ûôO+'n¯=Ò‰û¯¶÷åDÔ«¯€#——3N® L-£EI/ƒ¦§ÒùÝ›0f6”Š?¸’¦šwöË/¹’2–2/§‘— ¯€T½¶WÀƒÌ‹r`î+à÷îÓo{XP‹)+ÜF;Aó,õåcpžà×H!åêÉÕÀâW@½Îõ ëW³’w©A»”¯€ŸAYŽ’ñ/˜rߥwïÊ)“Ÿk{¯µ^ÚÖ 3µƒ3¼WtÔ®PgNÈï|$‹žmM}¾?;ö²9òRQû!þ³d"ÁW@;ù+@¤~ó×eã+ ‰B])aRãï•üòD=o¤&öüéRèT³yÚàø@üTCö X!ñþO%EÇ#IÅWÀS¦ê+àaé×ù‡N=ø@ï¹,bÿŸ}ÙêÿPK ìDŒ<Ò>rŸ ƒ8html/index.htmlµ[msÛ6þœû8zzq¦Õ MÉ–ÉDZ[çœ4¥É}Ë@$$"& %ëßß.À7Ér,S:ÏØ¦(òÙÅ–…:ŽÎG!£Áù?ˆùÅLSj¶Øß_ŒK‘h–èÖçUÊâÛOcG³{ÝÁû_?¤R1=¾™üÙ úÖ븑æ:bç“TòdN¾²)¹ŽÄ’|b3&Yâ3ò{Æ6êØËFOîˆdÑØQz12¦J6;¾Rêl>:DƒB¹øùܪžÐÎÎYÂ$ÕBÖ4~+ü7BÜ‘ÿNnɤÄRä‹Û>ëµ»N]ƒPĬ͓€Ý·q¨ U;O i * ¨TvÝu¤pžúxÇ?[­7lÎò»󈑋„F+Í}#X«u>R¾ä©®û;]P{,þâÅ‹•dNß©?„ÒdLŽô¤úÕ!ã1 „ŸÅ`‰v$|ª¹HÚ©Zø"zE~#ù•ŽRQÛ!¿Úðy¹\¶W¯¾DXJ®Ùq–0åÓ”;?y—¹rJúã—ù¹RãgâÌ͈Z´QÛqgNÛßÕK;š—£yù“w˜û >8¯Œ£üÌ®¶Héœ}–Ô¿cÌñmNuûÛœéüÔ±ó×Eëäìd0œ¶¼|Œµ[Ú߀ÕoELyòXuì$"a\vnÁé«eƶ\¥ñà#œYp¶<Þxÿ* ÷}Çéh*‚™ÎÁgBŽen*ÁðÇÎ4x‡ ñÆÎQ~®¯²È?zÝî çºþýù(à âGT)`*] &á´¦SÐcÉŽ·ÛýÉ!*‹c*Wcç]ð¹a©®—ð‚º‘Ji2v<#jG>/y: „0Lƒƒ¿A!üeçX›wÿ•LUú® ŒÌüºÓÚu…ÌòÊð1DÉçaI õ}¦Ôƒa&£öü˜zÔ¡çV¸Ñ¶cLYÁšk&BŸÐd>vX²nn“!ötþ't×¾‡ïŠœt$V”þ¤)C·¦ËšPšéPȹYêlùÎ…ÞƒSèÒâäŒK¥Q!çüߌë( ßž“µ‹T&í%o09ȯ½¼-6j ùJ.yòcÉ_˜\P¦.úX:^ýXöïø#vpÑ_hýcÉI ÙR\ô'¡{Ââ-V4ñC¶Ø"¾þ×ü©CÀ<d~1Êur¦W9^u{ZÜ ¦fT1žÌ„qºÂ´tÒ£Nºý–4›TchUW¬GËš¹"6§Q" oD£7°á8JÍ„óâR¤œ)"fD‡\•ó-‰)älÿFfB’•È$Ë„dŠ YN€€+-ù43©U "tú…€}×àR·6Lå5GŒ•¹Ƭ•ù˜Š6?“ˆ´Ã¨½ÊÞ‹eLtÊêCY™ÔH>˜ÿB–!3¥ŽÅ :K ®ðµ ÷i­Úxú‰íß­Éj9šž6ÓX2¯>ÑSë® Ö@oò§(¢èÔWX6k<ÒAÀ–©™4J?,AÜ6¹I´¥)8ç!X°]3q·AÅ4ÉhÔ ÈSP òc<0ÇLîïÕ“ºo£º'¥ò'9r9cH,î%ÐX&³-ãÙI€W ðPdFă ˜¦Bꆸ½·Wà ¬±HÀ,)FVCø~ ßo“?Àí¼_ˆJÍ6°<˜I“÷tÁr 2%Š=-Åžî*"ŽØ|8œóû›, 0>±T(Ë›UC]ÎJ]Î6uI0ì#ÈX‚‡Ôë Í;†ï»PÁA`à[6ã ¦véNïBô(È[3lñZ€¢À'cvAª6€"ˆ 8)A‘¿5„ôJH¯‚DWÇôŽe)¦=Š+L£{ ê•‚zÖË"É‹Ø ŸM¡û%4ÄКƒ¶XéfPÒâTÛ¼Ýþ´„‡X¹0þk uVB!!ÒLwþÌ4üƒ NS OCÜA‰;h“/Trœ²š*9,Á†mr ³'Ɖʦ³­¡òÌ,øl»º‡¹R™é¶pÕñÕí«}¢Ñ±h#½CD WE ‡8± W·„Ç©¥mLOÕ̃º%ˆO§<âºQvõª¸ó0î1S`ç†Xý m’2à 0û0Ϋ"ÌÕEʈbTú!2Fs!aqïK½Â`‡O, ˜)í±ÞÙ+ÿ[Ô#ƒ³AºÞ!H׫H×k×g.”HЭ™Ù{ÙzH6ãÎÙªD†ŠÒèŒ7,ùzªfo°ø£-º¶!Z¿DÃ$Ï|X™€®Òxê…ÆQ׫ø×Cþ½áI€ÈX…X¬QÕ«’}“ýG&a5àUŠÅt²° Ćèƒ}`3‘É¥?µú7„–°Ã5N䨊°û4â>‡ª¬™·[J€C˜¬" `èûXÛu+XwÝ ‹\DSS»UüÁa{&N O ümÎ>· Ck0!ï| )Ä0H×M‘«„Cò–«4¢Æ›©H³´)j‰ph{Jý;³¥¼xÏLÓüZ˜?ß»'j‹{”#m¤êþ!Ru¿JÕýµTmeûU²îc².‘Pµ7v¯Äî.™öE ÅóÂn™ò´©€Ê§ýRÀ ¦~•ºûUq)Êgé> g%(dî?ÍVS miŽ(`¨oVÝïià„¡¸Ò¸“¾ë-üÖî­ØB·Ò z# N§Uœbà°LQ·6(³™vÿpÛ䙿+\Žš€käAÖôg5£)ƒªW–:;„¥Î*K¡¥pYrCŒP¶ÏÒþ¬Êg˜1>‡,G ŠõpCØ^ Û³°“ÜBhö«">n›™l(¤_ „T™ñ¹õm¾#_ÈÜ—>E5È£ï&`çšîuƒx¹Á¡Á!84¨84@Ý(CRK"~ÇÈ;º õ³h5¨h50´‚ZÖtž¶ÞNà½g¢©Â¢B“í;»!öKÄ~»® ¹8Ôº²(™±`^ëc`§ÎÒ}øc!”ƒpÜ‚;Ê;CäÎ’™Mž–o®}¯‚†¨^‰ yC÷‰ ñóXn\+’ ‘$FaÉæØ ZÑ|ÞV\"W °ï…|øy\)?¸ôÉSÙû/—èH6Ì&;Ó&G?R¸/ü ÒÀû³ÆíÖº9]¤M=?…Ú÷q“Eâz®g,TÛ] ì¹4ÌÜ«€37Eé‰È~¦´ˆMûƒbG£Ñ† éWBŠ…Ñ'¦D”íaéÓ ÷Æø<¡f?¹éÍP#m_r– F·$'NûxÓ2îßUwìÃSw§ß7c®{šÖ›Ž¦ë8Áîf>¦ü‘-tö²y¼Þt4]ǛIJ V¥Ô$ñœô±ÙÖ«[oCš>äCü·Ì²ñJÊ­w"m+Ce\|§÷`§¿3¦¶tPžÉ°Ò!àŽw“ëC当5>a‡ý¥Ñ‚sk-8×ôà¬Zøˆ—„9®6r‘¦RP?l(Ç«äx˰µ6œkúpuܲï‹mx»«Š.zdƒ|'aýJØFo}TÔGsZ 8Å]ý4¢¾™-`Y‚Ê‹é7 ®á»†·Ö»sMó®Œs…™X‘¯¸e·ùÈP3aƒJ,M®’JV„ÅõÖ_ \su«xnž³3b?q?´B…Œ›úkXIâÚŽË õ‘J½ßÅ©Hp¾¹åSI¡ÒúQè>3+”\¦RGL*3äýÀÔ¢n&…CtÝZWÐõ)‡Ì“O¹Mé^ëºÞfR°¬kÛ«`{•¾4 üZ£Ð5Âñ½ò‡À¾ò$€L3iºiéÖš†®éÞ(3T>Íæò®’—"Ùº×ñLŠ–&Â=˜ MÛs›)=Òo“œ‡èºµî¡kÚ‡W÷šÙþV±ºþo­íÜ|Þ:Ñï&Ë«d­·1!C-âä‚dz|¢Á±7”Us‰éèâ ÐötgöѬ'1H›ÍVk9º¦çXw;n·Ë­kü€O+àÓ `[Ô‡ùìÒÿ¬Â‡©ê½0}Œü!Ž}ƒ¡´ X寲´á“Yˆ¸íî>‘÷h2ÊZæ¹Ã͸8D«Æ­µjÜ~±I·Utý‰”†à^Ž=½¢´ºÜs÷í5k\Ó­ù‹Ì:žS¦ÓÄß×ÄДæ".· zøþ½¬9”‹­µ-ß+º"½ÆGŽ7Þ'ÂWvŠ—}"¸f×´¦;0‘J\â@YÚù®:‘Ù^n_õªþÚÍs^Ïù;ù< câÜ^ë ¦lp2£Îëâ;ÉbX\=òšÌƒ¡¬¿Å2Â>f¼ã›,å=ëoŸô~üöÉÖwJ¼}<†¸ÿÛ'OhkñøI‹ôÿ¡ú6üòë¯Èä´Ä—˜àŸyùðPK êDŒ<1ªhvþV html/pr01.html­WisÛ6ýœþ ÔÊ$"壉‹êär’ŽsL¤ýæÀɈX¤¬ßº»I§ÑŒmÜãíÃâ-=É]UN'9‰tú ŸIEN°Ü¹zH7E›ðgZ9RnøaUg²[%ÜÑ•‹½ÿ)“¹0–\òúâÝp<þå×á!á&®p%Mßš I“¸[NÊB-˜¡2áÖ­J²9‘ã,‡UÂ¥µñv7Â’3‡Ä}>¿žv•¨°›‘"#œ6;ÈžkùTëûëâœ]lbYöé0ztø.‚\W´Î]¨”®"_rz¨ ¿¨M¡2ö'ÍØY©—ìš“!%‰½lŠ”öB5õw Tj¿S(Ò6Ôæ£ÃýH‡ÑÏjfëÓ×Ê6ÒZÁýÇáð)e…b/µÎJbO”(W®§4N'Vš¢v»óY´¢ÛÅÑß¹s§†eâwûJ[Ç6pßRö1gIÂR-› G•Z Ÿ4ªvZêòûõ–qlmqö¸ÛÀz¹\FüÞ©¿‰°4…£A£ÈJQÓ€ß=~Öƒ³F&œÝ߸Ïx*ŠuE‘ÔUœ‰è³=èª9¸VÍÁÝãˆw+,ø½€`Òï|+µÈèƒrAt\fÂE—¹~kÀ?>=:LJÇ};.Ñ%®×s]‰B½EÛ¸ÒŠn1{R¢)ÎÑëLC7X9ÿå=vÚ‚–ƒkõàô_¨ôö³ƒZLf:]±Y†3Ó&áËÇ€¾Bù Ÿ•Ï™ï„ÿ4Âç쌳¶_OF£ñ gbÿùt’-“¥°m+ZŸ… ¶˜DzH]ŽŽîrf›ªf•ð·¢-²ÐAlkoð“nik¡~Reø&Ñ0Þd«G9Ê öþ']'9ò9zŸ’æ8ʼn`BJ²vAÈzÓ=÷AÛI,¦ÝBØ4ÀèC>Ü ¹†±±ÌoKnŠ,wÃ= êË[=} ö=„.y(,ìAáýw¼ÇrÝñ€“*K8©ýC"áû¦ÛîåG{Ï7¯ÃM=† ÇùÑ:óîïÚ_Œ7B­Ø2&êº,:%°Ð-ŒCÌåÄ,3‹ ozά£Ú2§]‘l1¨TZ̃ºn\9!ø»9†b·,\Á¸\Á¸ªq‹ `2\N'ì"än,V’™•—[äýð) ›ûÌáf¨±¡C70á#EYRЧsÜEO⺯ÃÔB¤ žA1PtÉl®ëڧ¸].|–…[\Z¿ù€•Úü€ \Òà!s’ ݸPƒ˜êòPC.`'›yÆZ½¸¹Ñ@·Ÿ%«qeáPxÆ|ͳÀʘm×Gwe†H{ƒ¹…‹×ê°ááøº>À|ãN @4™Çª}´$o>=óâU¡pÌ‹4Z–ºÑ3ÓRŽy¡Š ¾­ôo—¯ð­µž”™Ÿ”žy³Ò ÃÂ8óMDøs­Ì5] o¦ä¹Öõ™÷¼6ýZ®6sØDŠ\Œ–7$µAÄŸmŒ†B6Œ ~Ûù/Ãæ²œ_Ê"Åáçg—'ã悟®Ÿª´·ˆþ¥ìkò\ë \AN¾Q—7>û{òÝ4öFåüBcÓÛ’ÿýJa¬íWN×|ú•—·o¯lj~]¯ðn»Åúoåïcì@ÜôrxÃdéUÝ¿øwÿÿÄ?PK ìDŒ<íAhtml/PK ìDŒ< íA#html/css/PK ìDŒ< íAJhtml/images/PK ìDŒ<íAthtml/images/callouts/PK ìDŒ<ð§Bi “Ï ¤§html/apa.htmlPK êDŒ<Ëî^i ¤; html/ch01.htmlPK êDŒ<]’ב÷ƒ ¤Åhtml/ch01s02.htmlPK êDŒ<†ã½ßw¥ ¤ëhtml/ch01s03.htmlPK êDŒ<ÅÓ3þk ¤‘html/ch01s04.htmlPK êDŒ<Ò2w=ó¤¾html/ch01s05.htmlPK êDŒ<œ~J }ó/¤Š%html/ch01s06.htmlPK êDŒ&¤ÌËhtml/ch04s09.htmlPK ëDŒ¤»ôhtml/images/callouts/15.svgPK ìDŒ<ƒ¤Tô½Ô¤q÷html/images/callouts/16.svgPK ìDŒ¤Ì#html/images/toc-blank.pngPK ìDŒ<½€ËÄô¤%html/images/toc-minus.pngPK ìDŒrŸ ƒ8¤ä¥html/index.htmlPK êDŒ<1ªhvþV ¤'³html/pr01.htmlPKÔÔ*7Q¸libspring-webflow-2.0-java-2.0.9.RELEASE.orig/docs/spring-webflow-reference/html/ch05s03.html0000644000000000000000000000670411360615630026056 0ustar 5.3. Defining decision states

5.3. Defining decision states

Use the decision-state element as an alternative to the action-state to make a routing decision using a convenient if/else syntax. The example below shows the moreAnswersNeeded state above now implemented as a decision state instead of an action-state:

<decision-state id="moreAnswersNeeded">
    <if test="interview.moreAnswersNeeded()" then="answerQuestions" else="finish" />
</decision-state>
			
libspring-webflow-2.0-java-2.0.9.RELEASE.orig/docs/spring-webflow-reference/html/ch02s09.html0000644000000000000000000002431711360615630026061 0ustar 2.9. Calling subflows

2.9. Calling subflows

A flow may call another flow as a subflow. The flow will wait until the subflow returns, then respond to the subflow outcome.

subflow-state

Use the subflow-state element to call another flow as a subflow:

<subflow-state id="addGuest" subflow="createGuest">
    <transition on="guestCreated" to="reviewBooking">
        <evaluate expression="booking.guests.add(currentEvent.attributes.guest)" />  
    </transition>
    <transition on="creationCancelled" to="reviewBooking" />
</subflow-state>
			

The above example calls the createGuest flow, then waits for it to return. When the flow returns with a guestCreated outcome, the new guest is added to the booking's guest list.

Passing a subflow input

Use the input element to pass input to the subflow:

<subflow-state id="addGuest" subflow="createGuest">
    <input name="booking" />
    <transition to="reviewBooking" />
</subflow-state>
				

Mapping subflow output

Simply refer to a subflow output attribute by its name within a outcome transition:

<transition on="guestCreated" to="reviewBooking">
    <evaluate expression="booking.guests.add(currentEvent.attributes.guest)" />  
</transition>
				

In the above example, guest is the name of an output attribute returned by the guestCreated outcome.

Checkpoint: calling subflows

Now review the sample booking flow calling a subflow:

<flow xmlns="http://www.springframework.org/schema/webflow"
      xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
      xsi:schemaLocation="http://www.springframework.org/schema/webflow
                          http://www.springframework.org/schema/webflow/spring-webflow-2.0.xsd">

    <input name="hotelId" />

    <on-start>
        <evaluate expression="bookingService.createBooking(hotelId, currentUser.name)" 
                  result="flowScope.booking" />
    </on-start>

    <view-state id="enterBookingDetails">
        <transition on="submit" to="reviewBooking" />
    </view-state>

    <view-state id="reviewBooking">
        <transition on="addGuest" to="addGuest" />
        <transition on="confirm" to="bookingConfirmed" />
        <transition on="revise" to="enterBookingDetails" />
        <transition on="cancel" to="bookingCancelled" />
    </view-state>

    <subflow-state id="addGuest" subflow="createGuest">
        <transition on="guestCreated" to="reviewBooking">
            <evaluate expression="booking.guests.add(currentEvent.attributes.guest)" />  
        </transition>
        <transition on="creationCancelled" to="reviewBooking" />
    </subflow-state>
		
    <end-state id="bookingConfirmed" >
        <output name="bookingId" value="booking.id" />
    </end-state>

    <end-state id="bookingCancelled" />
		
</flow>		
			

The flow now calls a createGuest subflow to add a new guest to the guest list.

libspring-webflow-2.0-java-2.0.9.RELEASE.orig/docs/spring-webflow-reference/html/ch11.html0000644000000000000000000000646011360615630025524 0ustar 11. Spring JavaScript Quick Reference

11. Spring JavaScript Quick Reference

11.1. Introduction

Spring Javascript (spring-js) is a lightweight abstraction over common JavaScript toolkits such as Dojo. It aims to provide a common client-side programming model for progressively enhancing a web page with rich widget behavior and Ajax remoting.

Use of the Spring JS API is demonstrated in the the Spring MVC + Web Flow version of the Spring Travel reference application. In addition, the JSF components provided as part of the Spring Faces library build on Spring.js.

libspring-webflow-2.0-java-2.0.9.RELEASE.orig/docs/spring-webflow-reference/html/ch01.html0000644000000000000000000000555111360615630025523 0ustar 1. Introduction

1. Introduction

1.1. What this guide covers

This guide covers all aspects of Spring Web Flow. It covers implementing flows in end-user applications and working with the feature set. It also covers extending the framework and the overall architectural model.

libspring-webflow-2.0-java-2.0.9.RELEASE.orig/docs/spring-webflow-reference/html/ch04s09.html0000644000000000000000000002307611360615630026064 0ustar 4.9. Specifying bindings explicitly

4.9. Specifying bindings explicitly

Use the binder element to configure the exact set of model bindings usable by the view. This is particularly useful in a Spring MVC environment for restricting the set of "allowed fields" per view.

<view-state id="enterBookingDetails" model="booking">
    <binder>
        <binding property="creditCard" />
        <binding property="creditCardName" />
        <binding property="creditCardExpiryMonth" />
        <binding property="creditCardExpiryYear" />
    </binder>
    <transition on="proceed" to="reviewBooking" />
    <transition on="cancel" to="cancel" bind="false" />
</view-state>

		

If the binder element is not specified, all public properties of the model are eligible for binding by the view. With the binder element specified, only the explicitly configured bindings are allowed.

Each binding may also apply a converter to format the model property value for display in a custom manner. If no converter is specified, the default converter for the model property's type will be used.

<view-state id="enterBookingDetails" model="booking">
    <binder>
        <binding property="checkinDate" converter="shortDate" />
        <binding property="checkoutDate" converter="shortDate" />    
        <binding property="creditCard" />
        <binding property="creditCardName" />
        <binding property="creditCardExpiryMonth" />
        <binding property="creditCardExpiryYear" />
    </binder>
    <transition on="proceed" to="reviewBooking" />
    <transition on="cancel" to="cancel" bind="false" />
</view-state>

		

In the example above, the shortDate converter is bound to the checkinDate and checkoutDate properties. Custom converters may be registered with the application's ConversionService.

Each binding may also apply a required check that will generate a validation error if the user provided value is null on form postback:

<view-state id="enterBookingDetails" model="booking">
    <binder>
        <binding property="checkinDate" converter="shortDate" required="true" />
        <binding property="checkoutDate" converter="shortDate" required="true" />
        <binding property="creditCard" required="true" />
        <binding property="creditCardName" required="true" />
        <binding property="creditCardExpiryMonth" required="true" />
        <binding property="creditCardExpiryYear" required="true" />
    </binder>
    <transition on="proceed" to="reviewBooking">
    <transition on="cancel" to="bookingCancelled" bind="false" />
</view-state>
		

In the example above, all of the bindings are required. If one or more blank input values are bound, validation errors will be generated and the view will re-render with those errors.

libspring-webflow-2.0-java-2.0.9.RELEASE.orig/docs/spring-webflow-reference/html/ch01s04.html0000644000000000000000000000655311360615630026055 0ustar 1.4. Where to follow development

1.4. Where to follow development

You can help make Web Flow best serve the needs of the Spring community by interacting with developers at the Spring Community Forums.

Report bugs and influence the Web Flow project roadmap using the Spring Issue Tracker.

Subscribe to the Spring Community Portal for the latest Spring news and announcements.

Visit the Web Flow Project Home for more resources on the project.

libspring-webflow-2.0-java-2.0.9.RELEASE.orig/docs/spring-webflow-reference/html/ch04s07.html0000644000000000000000000001576111360615630026064 0ustar 4.7. Performing type conversion

4.7. Performing type conversion

When a model binding occurs during view postback, the binding system will attempt to convert the input value to the type of the target model property if necessary. Default Converters are registered for common types such as Numbers, primitives, enums, and Dates and are applied automatically. Users also have the ability to register their own converters for user-defined types, and to override the default Converters.

Implementing a Converter

To implement your own Converter, implement the org.springframework.binding.convert.converters.TwoWayConverter interface. A convenient StringToObject base class has been provided to simplify the implementation of this interface for converters that convert from a user input String to a user-defined Object and back. Simply extend from this class and override these two methods:

protected abstract Object toObject(String string, Class targetClass) throws Exception;

protected abstract String toString(Object object) throws Exception;			
			

toObject(String, Class) should convert from the input string to your object's type, and toString(Object) should do the reverse.

The following example shows a Converter that converts from String to a MonetaryAmount for working with currency values:

public class StringToMonetaryAmount extends StringToObject {

   public StringToMonetaryAmount() {
       super(MonetaryAmount.class);
   }

   @Override
   protected Object toObject(String string, Class targetClass) {
       return MonetaryAmount.valueOf(string);
   }

   @Override
   protected String toString(Object object) {
       MonetaryAmount amount = (MonetaryAmount) object;
       return amount.toString();
   }
}			
			

Review the pre-built converters in the org.springframework.binding.convert.converters package to see more examples of Converter implementations.

Registering a Converter

To install your own Converter or override any of the default Converters, extend from org.springframework.binding.convert.service.DefaultConversionService and override the addDefaultConverters() method. Use the addConverter(Converter) method to register the primary Converter to use to convert between two types, such as a String and a MonetaryAmount. Optionally use the addConverter(String, Converter) method to register alternate converters for the same type pair; for example, to support formatting a java.util.Date as a String in several different ways.

Each alternate Converter is indexed by a unique converterId that can be referenced when configuring a model binding. When no converter id is referenced explicitly by a binding, the primary Converter between the two types is always used.

The ConversionService is the object Web Flow consults at runtime to lookup conversion executors to convert from one type to another. There is generally one ConversionService per application. See the System Setup section for documentation on how to configure an extended ConversionService implementation that registers custom Converters to apply application-wide. Also consult the Convert API documentation for more information.

libspring-webflow-2.0-java-2.0.9.RELEASE.orig/docs/spring-webflow-reference/html/ch04s12.html0000644000000000000000000002110711360615630026047 0ustar 4.12. Executing view transitions

4.12. Executing view transitions

Define one or more transition elements to handle user events that may occur on the view. A transition may take the user to another view, or it may simply execute an action and re-render the current view. A transition may also request the rendering of parts of a view called "fragments" when handling an Ajax event. Finally, "global" transitions that are shared across all views may also be defined.

Implementing view transitions is illustrated in the following sections.

Transition actions

A view-state transition can execute one or more actions before executing. These actions may return an error result to prevent the transition from exiting the current view-state. If an error result occurs, the view will re-render and should display an appropriate message to the user.

If the transition action invokes a plain Java method, the invoked method may return false to prevent the transition from executing. This technique can be used to handle exceptions thrown by service-layer methods. The example below invokes an action that calls a service and handles an exceptional situation:

<transition on="submit" to="bookingConfirmed">
    <evaluate expression="bookingAction.makeBooking(booking, messageContext)" />
</transition>
			
public class BookingAction {
   public boolean makeBooking(Booking booking, MessageContext context) {
       try {
           bookingService.make(booking);
           return true;
       } catch (RoomNotAvailableException e) {
           context.addMessage(new MessageBuilder().error().
               .defaultText("No room is available at this hotel").build());
           return false;
       }
   }
}
			
[Note]Note

When there is more than one action defined on a transition, if one returns an error result the remaining actions in the set will not be executed. If you need to ensure one transition action's result cannot impact the execution of another, define a single transition action that invokes a method that encapsulates all the action logic.

Global transitions

Use the flow's global-transitions element to create transitions that apply across all views. Global-transitions are often used to handle global menu links that are part of the layout.

<global-transitions>
    <transition on="login" to="login" />
    <transition on="logout" to="logout" />
</global-transitions>
			

Event handlers

From a view-state, transitions without targets can also be defined. Such transitions are called "event handlers":

<transition on="event">
    <!-- Handle event -->
</transition>
			

These event handlers do not change the state of the flow. They simply execute their actions and re-render the current view or one or more fragments of the current view.

Rendering fragments

Use the render element within a transition to request partial re-rendering of the current view after handling the event:

<transition on="next">
    <evaluate expression="searchCriteria.nextPage()" />
    <render fragments="searchResultsFragment" />            
</transition>
			

The fragments attribute should reference the id(s) of the view element(s) you wish to re-render. Specify multiple elements to re-render by separating them with a comma delimiter.

Such partial rendering is often used with events signaled by Ajax to update a specific zone of the view.

libspring-webflow-2.0-java-2.0.9.RELEASE.orig/docs/spring-webflow-reference/html/ch05s06.html0000644000000000000000000001401611360615630026054 0ustar 5.6. Action exceptions

5.6. Action exceptions

Actions often invoke services that encapsulate complex business logic. These services may throw business exceptions that the action code should handle.

Handling a business exception with a POJO action

The following example invokes an action that catches a business exception, adds a error message to the context, and returns a result event identifier. The result is treated as a flow event which the calling flow can then respond to.

<evaluate expression="bookingAction.makeBooking(booking, flowRequestContext)" />	
        	
public class BookingAction {
   public String makeBooking(Booking booking, RequestContext context) {
       try {
           BookingConfirmation confirmation = bookingService.make(booking);
           context.getFlowScope().put("confirmation", confirmation);
           return "success";
       } catch (RoomNotAvailableException e) {
           context.addMessage(new MessageBuilder().error().
               .defaultText("No room is available at this hotel").build());
           return "error";
       }
   }
}
			

Handling a business exception with a MultiAction

The following example is functionally equivlant to the last, but implemented as a MultiAction instead of a POJO action. The MultiAction requires its action methods to be of the signature Event ${methodName}(RequestContext), providing stronger type safety, while a POJO action allows for more freedom.

<evaluate expression="bookingAction.makeBooking" />	
        	
public class BookingAction extends MultiAction {
   public Event makeBooking(RequestContext context) {
       try {
           Booking booking = (Booking) context.getFlowScope().get("booking");
           BookingConfirmation confirmation = bookingService.make(booking);
           context.getFlowScope().put("confirmation", confirmation);
           return success();
       } catch (RoomNotAvailableException e) {
           context.getMessageContext().addMessage(new MessageBuilder().error().
               .defaultText("No room is available at this hotel").build());
           return error();
       }
   }
}
			
libspring-webflow-2.0-java-2.0.9.RELEASE.orig/docs/spring-webflow-reference/html/css/0000755000000000000000000000000011360615630024664 5ustar libspring-webflow-2.0-java-2.0.9.RELEASE.orig/docs/spring-webflow-reference/html/css/stylesheet.css0000644000000000000000000000145011360615630027567 0ustar @IMPORT url("highlight.css"); html { padding: 0pt; margin: 0pt; } body { margin-left: 10%; margin-right: 10%; font-family: Arial, Sans-serif; } div { margin: 0pt; } p { text-align: justify; } hr { border: 1px solid gray; background: gray; } h1,h2,h3,h4 { color: #234623; font-family: Arial, Sans-serif; } pre { line-height: 1.0; color: black; } pre.programlisting { font-size: 10pt; padding: 7pt 3pt; border: 1pt solid black; background: #eeeeee; clear: both; } div.table { margin: 1em; padding: 0.5em; text-align: center; } div.table table { display: table; width: 100%; } div.table td { padding-left: 7px; padding-right: 7px; } libspring-webflow-2.0-java-2.0.9.RELEASE.orig/docs/spring-webflow-reference/html/css/highlight.css0000644000000000000000000000063711360615630027353 0ustar /* code highlight CSS resemblign the Eclipse IDE default color schema @author Costin Leau */ .hl-keyword { color: #7F0055; font-weight: bold; } .hl-comment { color: #3F5F5F; font-style: italic; } .hl-multiline-comment { color: #3F5FBF; font-style: italic; } .hl-tag { color: #3F7F7F; } .hl-attribute { color: #7F007F; } .hl-value { color: #2A00FF; } .hl-string { color: #2A00FF; }libspring-webflow-2.0-java-2.0.9.RELEASE.orig/docs/spring-webflow-reference/html/ch04s05.html0000644000000000000000000000630111360615630026050 0ustar 4.5. Executing render actions

4.5. Executing render actions

Use the on-render element to execute one or more actions before view rendering. Render actions are executed on the initial render as well as any subsequent refreshes, including any partial re-renderings of the view.

<on-render>
    <evaluate expression="bookingService.findHotels(searchCriteria)" result="viewScope.hotels" />
</on-render>
	    
libspring-webflow-2.0-java-2.0.9.RELEASE.orig/docs/spring-webflow-reference/html/images/0000755000000000000000000000000011360615630025341 5ustar ././@LongLink0000000000000000000000000000015500000000000011566 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/docs/spring-webflow-reference/html/images/xdev-spring_logo.jpglibspring-webflow-2.0-java-2.0.9.RELEASE.orig/docs/spring-webflow-reference/html/images/xdev-spring_0000644000000000000000000011100011360615630027662 0ustar ÿØÿàJFIFHHÿáñExifMM*bj(1r2‡i¤ÐHHAdobe Photoshop CS Windows2006:08:05 08:34:10 ÿÿ   I&(.»HHÿØÿàJFIFHHÿí Adobe_CMÿîAdobed€ÿÛ„            ÿÀ "ÿÝ ÿÄ?   3!1AQa"q2‘¡±B#$RÁb34r‚ÑC%’Sðáñcs5¢²ƒ&D“TdE£t6ÒUâeò³„ÃÓuãóF'”¤…´•ÄÔäô¥µÅÕåõVfv†–¦¶ÆÖæö7GWgw‡—§·Ç×ç÷5!1AQaq"2‘¡±B#ÁRÑð3$bár‚’CScs4ñ%¢²ƒ&5ÂÒD“T£dEU6teâò³„ÃÓuãóF”¤…´•ÄÔäô¥µÅÕåõVfv†–¦¶ÆÖæö'7GWgw‡—§·ÇÿÚ ?•6²»ç¸5§ÚâLh}²¯ØÓt#Ss–}wZÏHTç‚Û½]ØÙ,ÇÈfÖÕúKqr¿Uê8ïc2=)»íUÝëøùUŒz,}´œ?ÖÎFvç0–Ug§“‰ŠçŸçw±õÐÿ´}¡žž5?§ý2ÍŽb;ô+i°Çµ­qy4'MYïoùÌõkȪ×Ù]62ïM­.²§o`q×Òõa¬uµþ§¿bͲ÷ÛS«}UÔß°¶ë@¾Ág¬ìWØüm­{jô~Ù³Ìk?Ifû)³}vìVmÏ5 œÑ@ªšqìam’Kí47({Ýé6†2Ì—ú{=jŸêzž—è8%[‹¢©…­Û}¬ì㹿{ÿïÈ6–¹ƒÜ$翇(™¹¹¢j–Ýs>ÐÐòÃUgn7ªç¾›3œß^ì¿Gô^uzáP:…ù;j§Û̓ ¶¿uüÆäcß‹?ÎÙS±Ùê[½õ~‹Òôl®«öjR—¾ÿ÷ª¥«qe€ù­;›êã9úCâ^U­eùæªéôqæÐ=gØû굌È,õ1ÛsYüãêÌÄ£«Y‘•e¿á/Ñß]˜íôIÊʨ\붸ãÔÖ?êË]èz™žædYú½Œ¯ù›SgÊä$c¡®»ÿŠªi¿Vwº¹ðQo¡§e_k»—Õ‹[‰c­7ÙVElõ¯ªÿÐaz9gûUv?Ôõªý ~Š…9XÖRX t[aÉǧԷééº^]¶ÔñöFÖÜŒ<Ë©ý[׫×ÿ¤† ÷ŽºUI,ë¸Ñ —챤éªzòñ­£í ,£ÕäÛesƒêØû2¦Qe›ŸfnÚ/Ûo­ö¯¶}—Ñû"bé³&¢%_³žì‡Õc­°ºÜZ쾆Ðûj¢ïK;{1èõ=_´Uÿm8`•Ñ"Ž–Š{ª™²,ÃyÐþ–¯ú›[ÿRõÑ/;é½BÊ3>ÒÏOeO¦º\_4=GÛaß¿&¯§éÑè3è3Ó^„ǶÆ5ì;šðÒ;ƒ¨SòÒ4qñŸù©nÌ’I%ar’I$”¤’I%?ÿПdôÛö¯KËÕÛòÛê+˜¬¤_Còli$Yöìô jßµz>Ñvýþ—Ó±y*K&¥ól~_û¯ê¬®ŸÙa¤³–zžâvmõ'óçü/õ½è•~ʆ†ú¦+5ìßêOèO§úOµ} žŸé÷¯I/µ/ªdQÓë|Ñ‘ëZn÷6±Xhº-ßö¿±×[>׳í>—Û?Mý/Ñÿ•_dÜÿKÒ˜ý>ͼ÷õ¶ÿßו¤›ÒÿæA}6ßÙþ‹#Ðôw~Ž6lÝüÌÞ‹€zW¿pÅÏ'ÒñüéþRòÔ”SùNê}g'öVÇëᇲ#ó=_í} ꛽oæí<ÄlüîÁ¯2I,_U>Ÿú¿Ú™»ÓõÁnÛ¿þµ»Ýþb¯zvÝ7öÙ·þ•^p’—ªŸWèæFÏ@W½Æ½¿Kù~ŸýùwÿWz]m¹¤5³è¼Çº³«ï{~Šù¥%')üô·ê¨üßGꤗʩ-ïÕI/•RIOÕI/•RIOÿÙÿí ¼Photoshop 3.08BIM8BIM%F ò‰&¸VÚ°œ¡°§w8BIMíHH8BIM&?€8BIM x8BIM8BIMó 8BIM 8BIM' 8BIMõH/fflff/ff¡™š2Z5-8BIMøpÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿèÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿèÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿèÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿè8BIM@@8BIM8BIMUI xdev-spring_logo InullboundsObjcRct1Top longLeftlongBtomlongIRghtlong slicesVlLsObjcslicesliceIDlonggroupIDlongoriginenum ESliceOrigin autoGeneratedTypeenum ESliceTypeImg boundsObjcRct1Top longLeftlongBtomlongIRghtlong urlTEXTnullTEXTMsgeTEXTaltTagTEXTcellTextIsHTMLboolcellTextTEXT horzAlignenumESliceHorzAligndefault vertAlignenumESliceVertAligndefault bgColorTypeenumESliceBGColorTypeNone topOutsetlong leftOutsetlong bottomOutsetlong rightOutsetlong8BIM( ?ð8BIM8BIM8BIM × à)@»ÿØÿàJFIFHHÿí Adobe_CMÿîAdobed€ÿÛ„            ÿÀ "ÿÝ ÿÄ?   3!1AQa"q2‘¡±B#$RÁb34r‚ÑC%’Sðáñcs5¢²ƒ&D“TdE£t6ÒUâeò³„ÃÓuãóF'”¤…´•ÄÔäô¥µÅÕåõVfv†–¦¶ÆÖæö7GWgw‡—§·Ç×ç÷5!1AQaq"2‘¡±B#ÁRÑð3$bár‚’CScs4ñ%¢²ƒ&5ÂÒD“T£dEU6teâò³„ÃÓuãóF”¤…´•ÄÔäô¥µÅÕåõVfv†–¦¶ÆÖæö'7GWgw‡—§·ÇÿÚ ?•6²»ç¸5§ÚâLh}²¯ØÓt#Ss–}wZÏHTç‚Û½]ØÙ,ÇÈfÖÕúKqr¿Uê8ïc2=)»íUÝëøùUŒz,}´œ?ÖÎFvç0–Ug§“‰ŠçŸçw±õÐÿ´}¡žž5?§ý2ÍŽb;ô+i°Çµ­qy4'MYïoùÌõkȪ×Ù]62ïM­.²§o`q×Òõa¬uµþ§¿bͲ÷ÛS«}UÔß°¶ë@¾Ág¬ìWØüm­{jô~Ù³Ìk?Ifû)³}vìVmÏ5 œÑ@ªšqìam’Kí47({Ýé6†2Ì—ú{=jŸêzž—è8%[‹¢©…­Û}¬ì㹿{ÿïÈ6–¹ƒÜ$翇(™¹¹¢j–Ýs>ÐÐòÃUgn7ªç¾›3œß^ì¿Gô^uzáP:…ù;j§Û̓ ¶¿uüÆäcß‹?ÎÙS±Ùê[½õ~‹Òôl®«öjR—¾ÿ÷ª¥«qe€ù­;›êã9úCâ^U­eùæªéôqæÐ=gØû굌È,õ1ÛsYüãêÌÄ£«Y‘•e¿á/Ñß]˜íôIÊʨ\붸ãÔÖ?êË]èz™žædYú½Œ¯ù›SgÊä$c¡®»ÿŠªi¿Vwº¹ðQo¡§e_k»—Õ‹[‰c­7ÙVElõ¯ªÿÐaz9gûUv?Ôõªý ~Š…9XÖRX t[aÉǧԷééº^]¶ÔñöFÖÜŒ<Ë©ý[׫×ÿ¤† ÷ŽºUI,ë¸Ñ —챤éªzòñ­£í ,£ÕäÛesƒêØû2¦Qe›ŸfnÚ/Ûo­ö¯¶}—Ñû"bé³&¢%_³žì‡Õc­°ºÜZ쾆Ðûj¢ïK;{1èõ=_´Uÿm8`•Ñ"Ž–Š{ª™²,ÃyÐþ–¯ú›[ÿRõÑ/;é½BÊ3>ÒÏOeO¦º\_4=GÛaß¿&¯§éÑè3è3Ó^„ǶÆ5ì;šðÒ;ƒ¨SòÒ4qñŸù©nÌ’I%ar’I$”¤’I%?ÿПdôÛö¯KËÕÛòÛê+˜¬¤_Còli$Yöìô jßµz>Ñvýþ—Ó±y*K&¥ól~_û¯ê¬®ŸÙa¤³–zžâvmõ'óçü/õ½è•~ʆ†ú¦+5ìßêOèO§úOµ} žŸé÷¯I/µ/ªdQÓë|Ñ‘ëZn÷6±Xhº-ßö¿±×[>׳í>—Û?Mý/Ñÿ•_dÜÿKÒ˜ý>ͼ÷õ¶ÿßו¤›ÒÿæA}6ßÙþ‹#Ðôw~Ž6lÝüÌÞ‹€zW¿pÅÏ'ÒñüéþRòÔ”SùNê}g'öVÇëᇲ#ó=_í} ꛽oæí<ÄlüîÁ¯2I,_U>Ÿú¿Ú™»ÓõÁnÛ¿þµ»Ýþb¯zvÝ7öÙ·þ•^p’—ªŸWèæFÏ@W½Æ½¿Kù~ŸýùwÿWz]m¹¤5³è¼Çº³«ï{~Šù¥%')üô·ê¨üßGꤗʩ-ïÕI/•RIOÕI/•RIOÿÙ8BIM!SAdobe PhotoshopAdobe Photoshop CS8BIMÿá-http://ns.adobe.com/xap/1.0/ 4294967295 524 73 1 72/1 72/1 2 2006-08-05T08:34:10Z 2006-08-05T08:34:10Z 2006-08-05T08:34:10Z Adobe Photoshop CS Windows uuid:3f50d993-23b7-11db-9576-fa409a7502c7 adobe:docid:photoshop:3f50d992-23b7-11db-9576-fa409a7502c7 adobe:docid:photoshop:86772fa8-2454-11db-8c34-c59e0b1bd60f image/jpeg ÿîAdobed@ÿÛ„ÿÀI ÿÝBÿÄÌ     !1 AQ"aq2#3‘±B²s$4r³t´5u6 ðÁRÂ%v‚¡bĵÅ&¶7 !1A"Qaq2ð‘¡±ÁÑB#3árRb‚4’Cs³$Dñ²ÒSc5u6ÿÚ ?Ö1(@%+¶Ÿ¼ Zw =ß.¾WK¨TוjLæ%®Á{*QN†LGxm:cÓ¡È;ˆ5èÊ%ðÓp¼Õ¤€²šµ˜õS]DÄJ'¹ÉI3)¶ ‘U²žtT â'Ò+%Ò¢@7NšÛ#~¸cx8·íOg9`Ü1¥p;w̾íxªfù¦§žd)q³”Œ©€@=º3AÖ@Ì%ë-T¯l€9va8ºdf©ÍªáB<ª‹"e†¡E#¨  ”¨Ô½zi—Ó‚EH**õxY(Ç*Wë£ÆÊ¦dªIïE`1j)€ˆî …6ô ޤÅ)©#›%‚¢­Ñ¸ÌmÈŠ’‘§‘lC©ûì†R5}Çð2ñëí TB´ë¨Ïâ72m]Ù8j:ŽCF ´ä«¿#Ù¤•ÚÊænËq.øN—r%HÆAôi’h âŠèF€= mH„rÛê:šíTíÕ\¾!1;p$¥lK JYˆ–4SMTU!’%µo §éðˆ&`ñÓwlÕ 5Ȧ u8­´ÂDÍä~.ê‚ mKö`ñ1 ;F€+@÷ë\1è“*’FœÖ²1P#–ˆ8I@0ì&QqDjÒPÝ}š\ÏÓ¦¹!´¡Ç-ÚâFH£âC”D‹q*b4éÔwß>Ò4‚ 5¯žžlB«#";Èa"?µˆ¦=MðuîR¿¦Û<ƒI®£A€Q€¾jOt6òŠhQ XA¡öípßOv­u`Ò×%j*åôC˜ÇnÝG ê¸&í &P;=J'ªÕ ôk8¬º€ -ÌB¥FY_ú@–Ó«^Ú°wT)JQ% ZTGyëÜ’â1<}‰Lè…û˜w¢E”+q+Ú pî–¥8´¨j)88Ë™MHh[CŠR=¢œƒ‚Ä…EÒû—Ð7’§@*P1;eд¥zjâÝÅá¬2b{Öcy'‚ùP©‘är$†.ÅPQNئÜ|ð‰LWClúU?´zuÓ€—±Ît”¡¥qÁ,¸—SN 9#¤Pvóîƒe[9/mØ üÃîÔyjøÌ^¥J´ãRx €îSÅ;1“¢µL!A‡l yHõDˆþގŠ„)€¢aï 5K£v—ú••¶á®²8H;0?N#¸­nKsïO(8w– Ý[oÛ'e#ad =A7"Š¥\© ;þ>Ÿ8ëF¸alÀ¸ù¹OØŒ*âÖÕÁwkÓW0’jÝžÅrK˜]Å”·,ªqûE{ %ÐDNn›ë…­EE@ë¯PÿÛwT9öÛÇH]Ëù‘8Ï'!²´w¡àí<ö­·§nõÇ%³Ž\ÃãŸ×ã™]NשÖÌF„#B¡ЄhB4!F„#B¡ЄhB4!±fÑÊ­VpÝ•b°¹h¢©”çl¹‘Q¸¬ˆ˜STPXäܦÖRKâÒæƒCQÜrYzÂR4!F„#B¡ ÿÐÔµÚš¢P¡ÐåøŒNŸœ0í§¾•×Ê÷ó4Õiìå~­¢„Þ a¨t5B´üÚGéj$g025… ŒÓk Ω2-ˆ±JtVOµÜKqEL. €›h,‡@üñökeÛä×¢n¢À™J¡L1vÔJ P¨SSÂ…ÔûWµÍ2†£†šä‹ÍñÎâX‡Ç ¹´®løÆ Ê4| 4Ú*T‰n)PüšœMün¥ Œ"¾¡&a©¤—*܉dJížç‰™nÚ‚’€P¤ È`í€PÁáÓ¦²C\ÒQ™ê6€ŒátݺŒv©&ÐAÀ c*rCJAÚ™ú~ k7-Ó+Fš|¾Õ*¸EE)߯Ür((„¢{Q)…3PŸR=:×®™x[âŒ0R¢¦ðÉÈmpQí¾`vŠ )†Ú¦ ‡@ ?¹`”êjÉ/î(ùúyüÊ`S¨O*L>¤Â@ÙZ&n… Óâ¨uԨݦ  ¦ÍáSP—+²”+ù-¯S*„E4~ÑN “¶c&@($jQ*€Ð®­¡{KF++$dAœuUê%hC7$ ™PLÂqGã)F¢5Ó„´“†4BÙ6FX²‹&Wɦ° ™Ž°¤P¢& ¤ ¦m§uð bŒ 8#ëN#øu´Zº¥Ä·} XTÖdJªrù ‚6(S&³iz ~%0{½ºŸ£Ð?/”žÕ•nðÑ~ò^\V§g·ñ‹ƒð6Á7ÚTÞ4öiÇh2¹®¦ª}‹£522Å”F¯óiµ÷…4þÈš@GÜ:3chu!)óWæîÕ‰Dî Ú#ƒœÄÙEtÔ)OAúÂ`÷ê.¶ Ù¤pÍ+ÓP¼æÙIyÖCæ’ï,ŠÛOÛ&Ð!B‡/j†0FB”Ò%lnl‡NJ;ÚçD–—+yÒ’v’täîH)õ\C`¨tÌè ‡@¥4í¬Íl‘`j@L‚| ­ ÚÍR<âbá8+C Ý U>°ІÀ Ö½ujÓ2 ®ÏÅHh-šÍ´©Æ}°a®¾X–ÓÁj>R½=™N^”0©zÔ(a÷j :œÔNÓ —nH©qG9HÀPQO,c€J©Šbw‰®@>jêÖÆAÙZé B•É\· hÏ4 ™8ˆ!(­VO½pS‰‘w½"DhˆÓÙ«Ðã¤ùNIzBÌ|Ì{è‘TÂ+À¾B¦ïªÚGrÑ«ŠÅ1Á‹äIR”(5ŸQ\Þz Ö]SCصÒÍÛ»NÙºˆPMÉ—<ÀE*$]'…ò(»N%:‡jä…˜âÜ!¤,e B’‘PÖ+¥×gNLê<âó´B”Š‹¡4MÀÙtTÜ‘Û8Xª‡Cxt®¤W‰8,O6!G`—qdÖÚeÆ9Q¡Ê—ÐMý¶ªj¢ª` a2r& uW¨iñirH¥qÉ4\?F'Ûw˜ Æuˆ4I4ÐIÃE¶?D†17ª‘ŒºcáÓ­4ÌLoï$`rQ ¸dT†õqf¯“,NnîolÅΞ`·T³GŒÑ›R·‹,ŠpF~ª,P–š+t¹7d¼‘1Œb‘5"o÷7Û6͹_íö^µð l- –ë{šÝO æsbf©\ÖâàÍ8HÙºc§§ê=Þ;&ÈÈ­]4¯pdQF3|’ £8—9­hsˆiµ—_3øWìt£³Ìãh»ŒH#pεr^^¹dö¦ƒ³kÛ²OÕ %йL¼”ÛÆíR ˜Çp ]yêÃÛÿp½ÊÝ„±½Ï$›»ÆË ´Lâö‰Ah9G ­04èóì;’A¶ÞÅ%¼x¡Œ*N ;!©๑Ç\‘³ázå<˜Í(ùL¹-;s£ ØP)5‘U[nÝEeª=þ€#Xðvb$w‚ØW2i™A!}/ºtÞÕÑû^ÏÓ;4ºíìíÚÍG7¸ É!5¼¹újCk¤W*ÝnŸ{w5ËÇæ<ðáÀsçÛ°q“Á-Hr¶Ê*w ¹DÍÝ*ŒGpªíKƒÆ8ªÒ ™ŽmrÚYÙ:j ³6û™ÃríPï Rî8®ÜCéPugp÷ÆØfhò<§§ ƒBš¯c²ÚšàA@AÁ@ÜE©²…øÄáU: çÔó¬”籧ÂpÅÄSÄ@l³‚6®ðØ•Þ5èRƒQé×Zîílš»S°;Pv-Tš1è¹h`I`1ÁÇÛŽnÐL—^¥V´«Ù¤°ƒJ§)@¾jv'IÑŠ ˆlÀt(˜€˜Æ¡„(nÑœ9KP8-<ãF*"Ìæ"¦1D€ê½ã „TÄ ˆˆœ< MIa à›pâ–-bËÓ KöÀ¨ƒq0"S‚fß»ãÜPè¿&¦Û½àÓY&”Áh Hß.ÈŠà±—D®L®Ó¦qT 0L% ^ƒ©à¸ز¾Š1&Tšþ[´M„¸Þ ÇqŒ÷‰´ñé](j§b§V“¦-ÊÔDóFXCUÙ´ªž€CnnSÀ+ª=ê$.¦I@àB·V»ÖŠ˜†K»ÚìÓj„Wx©»iD@j¦Ñ/zë”_BÖI pÃâ©€ŸdÉèïÞ"Qø€¥.êà”ÛZüº¬n–´€ k÷,â!F/ÆRÑ®™‹¢©‡¡Š`T©˜@Hs J(4\XÜ6 ¸ekˆM–*TD™5y"‰ÒXŠ ¡‘@´T½±M3·„($Pj;«Ó¯†»”À²" AÅa¹© `dXÔ«@Q0t?Z;‰OŒ@@B£¸½(Õ>âÍ7&Í&\ÁQiT¢{®Œt–2e!\n ìS¸`=j#ׯ³OYºLMSE@ÑÉ¡A5Aqp¸=VØtŒuk°DåLL5 Pk­ºÒWâÂyhœΆs.¦"ænt R’‹ …Aˆî(Š^i©ñÉ!`þeVn_nÑbf;U¾!PLa©|LO²ü==ú—Î]^ëYP·iÅMDźàÕDŠm…+‚˜]‘A8˜TŠBZÓðê4Áæ<)ª¨ <âß|ÅN &¯|Žh‰è¶ÎÀ¬@ÚsÂ@J½­uÒÒâkÈR@¦%M¥‹$¢kƒs *†àTDLp!‰Sר˜@iMt±Ö£W‚@©à”ÓM#E³åÁ%ûäYTÛÐUØDɰü[7j'¨ÓÇQ´>'†áB7ߨ¨Ã þ=¸¤¸6tš©¿(ƒ€}ANÜèŽ&‘a¯Â Q÷jâÞYe„¼š9§ ¾*S|£Áb¤% !œ­¾?¢â%9HqèÃJ,PúUøGO’þV’(áB²pÓ ¥q¡Š1‘T”H€ø£Þ›¾*u8”E%ÀÔÛJ€êŽý“ŒÌ?ŸÚ| Bi툴‚ʵãl¬Y& ³PÜ‹Ù}À®åPU#(ÕÁŠc ¶¨j«½¬îeÌ z37XîpóA …Í™Ä|ªŸ±ë$hø§ãÜ2íΛ†(œDHS θ ¼:ôÕ4Ì4|y57íJn çö¯Ñ·²¹26g éqV^ÃX°Š ƒõªÃªZQ”)Ul§ÂFä¯Ò {oØN©;ïG ¢ê][†Úá9˜]Sÿ ðÆÞÕ¼ì×[Q5tx|8ê+¯®ä­Ñ¡ЄhB4!F„#B¡ЄhB4!F„#B¡ЄhB4!F„/ÿÒÑ¢JOZ…DCâê_ B†—䮾Y:¤­Iâ˜ðO‹ZO°ÆJå{Ê(à¾,âI†µÁ}µ·Ü]÷ï~IyǘÒÐh»SJÜ‚M°,åeÑ‘ÊÑEÑêísúžÚã{ݯM¶Ç ôê’GàtFÚZWr4u'ZÀeg¨M#={’gçïIìís0Ç–Ö{æ/né×e´òÇ'ml17ƒ˜T8ƒÝêc™ù{ Œ„JE»x¼s,pô©&u©Áío@ÞRÖÒöúÞìà/¢öW† ÀÒÚŸï;pR…­³Žç4÷Ñ^îTc‰>d¬uÇÛ§ø¶RùÂ6ÎFkw"Ý!Ö½K=3uÇÀ“°ÝÙb£æb £0P °2~ÜTPÊo)u¾¾öá½(Û7ÛLéaôš\â›ð2¨V¦‡Qq‰€Wëïfh,G )ÔŠ†Ãœ[ƒÆä#¶â‰À¥/›I D@vœ( q‹XY#FËíðPõi5QÓ³Øé†J¤"( ¢s äˆ9W¶ô¥L¢tÙ½HèÝí cÔÔFŽ ²à2Z —i5º­{”Šm¤‰÷À±ÊMÁ·,xI¨™êaÔ¦ú%§´tP }3™XmE pZUÚ¨ÂfI°¬&zÅЬW”þ§§”US@éHC¸Ø˜4‡02V‚qX¡¯½&!›ã¸;žâ^D ñõß…Ø¥¾}ýü(Þ]OW‰EA¡ä€E@ðàP6­¶(n·]½×•ý™•¡ô<Új5S¾•§zz&ê8Š®œÃ½8—È>O@CðrNø¹ð‡ð%¼k©õΖDB1¾ERJh’Ão%“Á½â-Á.Ô§ó ù6ÎŽëîý¨.¨©Þº»gé–fîÝ9‘膊—87·Fº¹º¨ ÿ´@­CE6Îví‘mP=¬°Öæ´úÇKå>i -Q"0] ÷—Lí®ØvôòOUŽ]tÑœErT‘]M®I²•(•R Cå×½êýÂ@ø‹Ü#Ékây+B®È@ÇY %ÑFÂÍG½Eb„SîÙ`Lª C( ”z @=úÑw)ß4Úåyq4úQ15qL‡i€ ×iAMë¹h¨” ÛѤ= ð ×ߨq;œ])Ÿ7ó($ …J±*ç(3IÊñÎwTí* ™"ˆÂpÜ4üzØcdsFæã«I§Á80 ÝLÂd †öÌ&eHÍ2 ¿"±…ÂBjRX´ÚZk1Ým„T¡ñ(oŒ6J…›l8tSK$o,)¨²âàH'ÜQ¨ xiJJõñÔmÁìiä• h¦KêÈÓJFËçdpǨÆÈ˜½´æôMà µ: ï%ÚB¨Ü *T!„@(!Ôu7¢ö£rÝE¾ôéÅèè׫ yùixö)‘5²>®žïâ¬÷8c½>}>‘À®2ÖUç ÜÛ“–,žAǧÅÖf —-ضÖÊÊ}þápX®#Ÿ.Þìjd“HŽƒá8Ä€Ò·þËtFÝKu¸º7¶ ·ÑÀ`q«[ÛÞ§›(]‚Lqÿ;úJr"ÙØµÏ#9„&névV”Æs±pí½hÊNÉ(“h¸§7-™-~G@šAÊ¥I5ä…‹@P@§X»‹X»µ^ß_L ŽÿpcÉ Õè_µÔøÑ YÛ¹ÔÔêü_"³œÅü‘ä¦ÎUåñ5ÿ5j‘Óú¦âbÜ@ÂöÏŸÓ#Ü6›ÖoÄ RyŠMqnºè÷ôžéuhÒ]C\s-­ZOy%Aš œAFÔ„e"VEKï*¯tê –:{á¢a ¦µÈsNy&òA .’g’XÉ•—˜‰”Õ:∓p‰D´¢¢mÞ5é§E8Ö•Y¯í éâQ¬Î"ÌIÉ{fÞ¯xOæ”)„ÄÛôwΦ.â2PAÉ[K:MꎒÝå{¦hN¥î eLU k¼T2ƒ×À)×\¯u·|3jhÅ:Ê´Å8Z¨s6Wì¶Š‚" >ðèZÔD7ÓÇÙ­]õæìªQÉz>Ed··p ju0Ñ>âœ7GÛá§ÛêÂÔ2C <¦ª¤dX‡‘$ˆB7‘H®¸ËƒÙ8Ÿ²¿:î tþž¼ýų«©¦‰°Nª¡MW«µ‰­vèƒsnPO°2«@ o/Qެ·P55íËŠÄ™-l‰$»²f!YÅ$ûå1–ÊPHûE›ª%¢>ÝF²{A婊ÒFiRðÏÈÖ4Jf}:€"eJ¦ñYPTMRv÷k·¯…5¶Ú—:µ­ë—zÁ¼‘ 3ň8¤2 &[´$*€wt0OÅ«6ˆ„b€Ò§çJÕCÞ¤gYÉâR9…¯•:€%8˜ýãÌz€À )P¯QÔÀ1®5X ¨*5,I•*¤謄B‡\È¿@ÿ‹¸&§ÉM4š+§WÒ²I%j™¬ð¬](&j ÎèÀ©JuEBª ¦*`")DÔññ ûµ´G µ¢ÅGÁ4EWë¤ÄÆ3rܪ S`¤¡JPûCh)¦€¬~šå‚*;Ô&Mgg2+NŠ9:ýV‡¸€t¯B¼zé©ÊÆìp L9ƒC€K9Ä¥¼Ä)ÄŠè•r6À6ùBˆ™z]‰…•ë©VŽk ­ â£0¼8Ÿ ¸%å##î 4ÓcC¢¡žÔË V¦*Än"b¯Ä=5kk%š(Nx|êS œjF íd˜¾IzRfNdqÆ?>Î^Ø‘ïÿgõ m‰ù÷’x¹ýĵ³dã+¾zÓRØ”¶2kTJ¤¢ïŸÊJ‰ )~ú}½é;Ž”¼¾Ûà¸}É k”€áBÒhÆ;E4æÔGhVæÎÜÛ0]§î%® ºÝ\pñóê¡~úŽhÆSã8‹ùq351ºŠ w…z¼™{ìï·  Ö±<É…hñóPñ-^þ7khÄà~Ï—‚¸’˨ܱʸ‘ïì¨ÔÆ“c(«P9@L˜›zuê¶à#AÔÃ_𜠄ÒhÑLB8—OŽótl«’! w–Ô©AQȸxªI±t`PÀT¼¼‚H˜êSáD õthz©Ý+×{w­%6Ëïøy;½B48ð%ÑSÁ…ØUu³\: ‘ Œà~8ˆqùª¿Bºú·DhB4!F„#B¡ЄhB4!F„#B¡ЄhB4!F„#B¡ ÿÓЧC´T¥ú}£‚ #³¦ïwˆP}ºùk(trãÚµR ÈàŸ¸6pƒ7ñW)zazƒ_ï¸ýpå‚e¬Ÿ”rœU­ v«plÚḶun[n`¤¹O6fÑRqRk6ó,Ý$‚Çö'´ÛÆÑÒc§o&È\Ç`<ß@ ×<4À«›9#1«G,œ‡þž<ºðòœmȸ?–vÆ‹Œí¯=g\3mÊB™4#Ù9ËÆà»“¹D jÐéÏÛ>§‚øî.íÄ5¨i%ŽøV¬?é‰-f\NP,ƒ—yC5Å~3òkOÙÿ¡/»>߸¯–ó¹ñÆ7„äoÍúI°—·lVÙXÀH3Qt°W¢ŠuPÍõ>á{qµ[lûÕ¡Žò&‘WR )Ü@¦TJçÈÀǶ„.ÞDÁðž[Y«”×%/ëÕÄùÆû2Ög´„³ÔJźeáñþ'±\2W”åÁZÇD ³ã(îMpL²d:¦{nö³¤7-ŽK«yç2ú€z²4Bí1´j 9œqì¢SlíÝ)5®ÁWŒÍÏI¬ù˜-œ ò—xôù=òv Éëöäµc#^)Ñ€Bâµ`“·ìø©é•»l\¹fý$U |d2«"ýŸ·ÞÜÎãµþÎàLì®jÕÔr rå=ë"ÖØ öÕh³Ëx¾$òçã/(¯ø»VÓMµñ’lKMœíÇvc¹¸¹S[S¶í¯/5 ЯŸÎEsÔŽøSfé`C¸*$îó}×Û6ž¤†Ïp¹md×Ô ¸¶‡M\uQ®©åÄŠÓ_jÖ¸5Ç—ìNþk/éïÅK ‡\˜¼óacŒ³æ a“íÜ_ Õ„ÿ&óûÉûz͸­…IíxÜqŠíK~׸€· ŠÊ ]­áÀŠÄé>ÑtlPíwm7ÓÓÔáPe”šÔžHÀÕ¤q ©Å<ë8(ÃCO¤ª›œyèÞ¼¶#y²§(-¬o‘q¥Õ/™¬HlzµÛxÚdl͘ÞÓ·e|ÉCAÆNKÅ»¸NõÌt…ÃA™ÑL\W~Ýt;ç³’ÂKˆ"Òu5¤9ÚªÚbó<Õ¡pÀPgU›hyCjó#àŽ ó=N;áh vÐŒð–>¿œŒÔºóÓR²ró{9Ž–MΆ!Å&é Ý3öÓ 5EîGLA¶> Kñié7Ìââ]R $öá€vÅÔT!­<ÃuÃ{ςٔ–W!.Û/ fxŒY{æn@Æ)jÀÙÍÒ6>™ºYZxÞÃsqË^²Vö@fÒ<\¸w%2±!š—rác·{QÒŸOÉue<Æà¼VP¤ %Úca Õ¦ƒSœkÄf–ËXLEÍ&½§îU«sÇÒã0å qǵ­>b¨Ë*O[ø–‘×½¯n4ºze¬%» îÃ…,ÆÕ—™x‘rí9 Y3;D¥*Ê&å§·>ÜÈöm³Y\¾áܾ³¤ÚŽ  W*‡SžByh|Tþü¸_`.@g^6Ü— gä± øö¨Ìˆ"ÙYhy‹bý³¤5IE‘BEͧr3;”Šc Ê5Âúó ÝÓ;ܶ6Î×pÒêP–+´ ü•tÖú@8‘Î<€==1Ö”ÎVuýž¹Ș‡W½·†m›å|WeØ{°2²wUÉ7rÉ΋ÙT‘"Hp»uÉõ$n :ì»7¶Á´X]o¶ïºÝ'Œ9ÌÖcŽ EhKAsœ+Cˆƒ€¥]5–ñ66Šš(´ !ˬçð͉ ÅnÄOތͲ«HG Oìö»¸÷,þ¹$²]ƒM- hsXÁMOÜ4à9±D~Ö2U!Ëþx+”—Ïy9™³NN–m’oËZj÷Å-eÒãŸcpÊ4·,i«¢5áò–Eº &›9¹–1΢I´Y$Ü»+¶¾Øt&Ûw<[“e—SJ8¶8ÛS¥µ[ˆ+ÀâRE­³ZâM~…áv>ÅÁä'ØZ¹‚æ·¸{Ç<‘–¥²ÌÃͲ¶ ´f– V‘Ò­4gpÌ[ÍÅÊ®Þ4E»DQU[A#Cj^×m›¯PÞEÓ™±@òêP°VŽˆüDPPšVM2ÍŽ•ÚOå¡ÂüîôêÊ9†ÍÅ3œGÏÖV1ÈÔ%›ÚrmÌÞMµÿ‰¦ÙÀE_7ˆ6\|ðˆ¸x^³h™üª&0"/N˜}šÛ¤:IÛ¶Í²ÈÆ¼†‡úäÈ+€qC+Ú)AßÅÆÃlN’Ã~?r´¹ú.+…ļxÇ~ßòó6…ªµ™p!}°‹lîê.5»Ðc+çT·¼ìs×D k‡‹b®Ù®ZÊdXœ'ÜOiìöŽ¥·´}ÓÆÎùYW†‚ñˆÔCjÖ¹í «Cˆ€pjKqµåW—+K/ƒØšOy”1Ö#¿ò=Û#;w[Å’ÍMÅ«#~ÙËãLUŠmå\[³’]åtä$,Ú:5pícÛ ÒböÛ‹ŽœÛ7k›¶Äç—I+ô™dhÔÝ Œ~S*áP㨙9)bÚ-p%Bøq•ø-êQvß|yãý«É¬ ±µÅñÅó”î8+’×¼š@ÈÂÅ(K­Œ3‰ñ<ìûUhŲE}ó¤èTH‰)&ÓÙl:ŽÖçlÚ,nmwFKe3zšˆ çn-ÌŠ††áZR¿m šX*/½yáé+Ž0´nÿó-͉5 ³~Çb¨×ÀäZ˯Šc¤å .kåœ(   æAd£äÊ%Y…%J ¯aöÇÛž˜•¶WL¹½¾p£ä/ôãÿ€‡v¸šç‘ hAoœå%æÎ;±ø‹Èkǰ·f¬Cjç|\úæ:Äö­ÔþaˆBʪF̈ôÌ•ˆÛ¸PZ¹M%@Ë$¢Šj^ë{wi°9³m:e+C›«Ú’ IãLÁ¦F‡I‹ynBܨ¦ÙFÑÜRâ…Ë~QÁæ ­!ž]¹CPâŸ6yn?eìi™í¿üÑ={ÌàWvŽKZe+&߆Ÿ¼R°o¥Ð´cœÎ‹+Noÿ$*-H£–áÝf‚k ˆÁغ3¦n·K›Ëó9Æ:Hy@©Ðp¨?b1HŽÚ¼µÍ4áŽJ½çžCâLeÎlƒˆq›0'peïza»¯¾Î½ìƒ“îÈ‚ì·ànø+ñ–7t•¢Îâ#ÈWíb‘™"©7éÊðFëÑÛ¦÷ QíŽý˜%¦?PêyæÁÚNœÛËCå¥qÀ}¼QÉMOeU†ä9°5ÓΛKÓ‡‚øß(†rBþ´²Eñ2ª7U© sÿ +5‘læÐVò†R?¤g NÍؘŠÂ¼I‡!J±äïÞÝì—ÛvËdæ]º@÷?PCM2neÕ®QbKH‰ÆÞzñ+Ó”¼•àÏ óŒï#ñ&[æž@Åï mg|­ÿšá;f&òn‚&ž´±Í¯kZ—Jª+n®°·r¬£Ç>^EPúò€¨R^‡èýM•Í“îæhç‘ÒÅx†5 Ðïc†)_µ‚1¤°¸ö“O™L9¬ _Œxüi»¯+§‹¢A[^NÜÈn"–É8S( ê]“«.îq DËE}ío=f“°H†!ÒGq×#ÆË)­õo·QXÁ½ì/s¶é0-u £8ñŒ­*(15E»²`g«-?Brñs p[•qºH•6"²àR\t§¶Ý1¹lÓÊù'~䨅KÀc#{®Ò\ðÒ."¢œ ”«k icsêuÓæ'ëT‚'’‡7w¹eGäþX“9Ø6ä¦#Ëí´â :_hƬŒ*‡i8º"-ÛrFåZ:é2‡[½çJ¹¶ÃÿCôe½œíÓ(¾c9d&•w 0r^ÆŸŠ¸§¿in#‘¢ºÇŽešÉ¦§™ÆlG¢¸ñg0iO»8Œ¡†›v…)«½ªÜÅÑûŒ©8™‰è…-^;þäÝôýãÕ·Æ+ï7sžÕ½ñ·퓨µ¥È`Êo-yå${6ñاbDìé)ŒÃp«,ÍÑÖ‘Ž~›F=S^•LNo°{w±n—W;ßQmr±ÇD¢RÊáOLE¤ë¯5]¨ZxCŠÊ)Ù'®Óé“ió}ê ÌÜ'šï«p¼]Ãù‡X¬¥&äÞ\Ȭo û¹üwðûã[qvû(ûÌj-\t““—ð¡½>ÅUÑúÿ¦ºVÎ&³c³tA­v¢é5—‡SNiZð¦4û½´:L--¡Æ¦¾p¢èŒL·“˜™E×lk(Š€`ÚJ!ÝGq(%T¦›®¼û+\Öixô*f Š!kákšô’³ÿ?ÓãÌ‘rùˆs_]ó­X·UÙ¢ãX¡ÅtådÜ$˜»âM´ë©A* ˆeT¤C˜ªéY&¸:2KÛ;¾m1¢Ñu3ª¨ð^¶²6(Æž1‹IæD½åà-{](¤Šyqºž½@`Ü NNÂõ9–܉R1Œb”¢!Áìw-òã¬mì /|Á  ñ?PÌö T:¸ÊÐ+šµ¿¹ÍȾ§ÖÖ=ˆQ›õ1w,ë7">lªk*Êä¸oþ÷ol½*DÞE¡íkš6@ uk$  €˜ýÓÜ»–5öºõ˜ŽdÓåÚ¦\p¦j1êçíë›zÛrˆ å£ G4leQ*§+fö@çD‚4îv¨€‡Mc¬/®m:?gž#ù†Î2|t1!g‚¨™‹Žx­¶‚»š0d.P"ñrPTÎg {­J²¢@Tô –A y×dêÍÖ}á°ºGh.ïíU™î8®‘úÀ¹CÖ–¼™“+Y.âv®wˆr&ºriNN´®äŒ`ññ×s÷îg¢Zúʲºü Ušì¸$} 9¹n D óÔ*§Ñì™b¥ÅÔÊ¡„ÁB¶ ˆZ¦t=̧Û˹K¨ÙÜú1ýë8ö¹W¾<áûü´È´† s>–JA/.eJám¢¹”ôˆ"à5ר÷­Âã®ìa|Ž1¨Å1þØL1ÿ˜Á™Ô˜¾¢œ+ëÏtTPÊ«þ^»d·(²Ê;âæ@‚$)Œ¢†= "au­5¾û±¼Ç¥šžK+S·>qà¥Þ¦¹;ŽØpûzœß?ùÉ…qûóEdÛ'Ýù—Ýø¢pEŠ·rc”Ôt¾JP#rìÖª÷4DÞ×*E“.›y·M¹ì–V[´ŽƒrdMsF¡ÁØŠžÝ$€k%Í/`k°u.äo¨'ã¸3szxð+ï$Fæ»öáä¿%okU¾8gs±k!°[8âÃ;黊>]+R=ªÊI®ŠÙÊ`EÎôê·¨’öÃ¥ö6Ûi^÷¿S#†N Éµ4OÏTÌl0éªÇÀÖë+2ÃgXäHåDS1V€(Ñ–…¢&Ý´B 5g޼Ô7Ü/¤”º¬$üV»#«­:2ô›gÉòàÝ8õŠp1“Ø®ÖâB™MÉL%Ý_oQÖ£¶DcÞ­….éR¡®¦Ó%»ÿQÅ‚\ˆóÒ'º(ïâíæ1NNìVÚ "_£òkÝ}_ºÿIéýº}ü†ÿåj»™úZr¢..L¹uàÎ+ñ~ñapÜÑ\gÉ™fö´² ýÞâyE-<¨ÎÊ1ó8P¥Z&Ö•¶]»EQ’tU>ó2DE"]üow÷×xé¿éï™…ØêàiAJaJ&µÈ(’Ì 8®­úo[°í=Pøg"›PLs);‰WŒù%vl¦¢¤0×ÃUÈ^M'WCq1WýÛÊfÅÄÌpÇê\`SÙwg-yˆ´´k7 ›A8YE ™„àL³wä8 fÝãׯ¿Vþéo»†ß¹ÌÈæ·QúÊÅôl´jè—½?p®J±9yÈìÑeLkÅ®2âi‰\Ãh`y arì#x)KÖjÃ:ÅLìÿ…Uµgˆ;G´íe¢­Ê’®P¼öžÚï{·Üw‹û§¶Ò!¤†žg’5ü ZæH¥(J~Èç¸ä¨Î$çgÿñ}›Ã¯Hì"¡_å N>Òq˜n¼åÉŒ»:&¸˜¥ú6= ªÝ€kz8)|ÂH5Š|Å«Š[®©úwc¶ÚâõËÅ ‹ÞüøsP¥j`xkX*ºë,»3zËevrC¶Wa`”9J#lª"47AgáÖ‡ï”o ·–!W€>ÕôÑÍ#5µæÕ«'è¥ék²(š,¼ÇÍÇHƒ´SVÿäáÎù£ÕSj@¿º·öof¹i"rÙkÛ„“}ÁHÿ—oËŠ¹¾6›ió®×un±jÕÒ¼uÈÈ,fåH7¦ykælɇɮyÿo[½þãÕÛÃ.œK³È¯n¶&m^]+±Â‹óÅÄ|Eä¸ëp;d»¥âÞ”T¤~Ê»7”Dhaùõ§õ×Rnu•¬,{„zÂL¤‡®’zé¼V#=ú}$ÐÀS#éÛ‹HB©¸ˆ\79 Q ¿F¯Hû‚Èîv­§ÔmA·aùÂ~àb³ž²€åìWý(ùÁþBåÜK‚îÜZçå5ñ%Ñ1iC²½ÂÑǧ²ânÃÁ9M©äY;¶n˜°IB¬ÝF*‘LqT ]¯sÞ ‡Lm»•‘?µô9p¥(0Ê”#¸Š%É'§\ܨ¹/eæÏXL§?lcîpòÒæŸ^>Jqhè¬Ér7"1ëËÎÌK½{*Ö6&1²‹ºxíd› ™Ç85̶¿qwmÒâK;Ë,ôq¥r .$Щ$€8¨M»{ΖT¹O½2«óÜ2.‘k‰sŠǼºÝÑÈx5`²Æmm™©r.ÝfEBÜ¿›Æ8]„J7ͦ*%•¬Þ‰êç?}ô.Hå:M{òù>Xµ¹üБN>BcëßÑüêÊyí<)žàøãéý0í’ç8㋽s‘>ý‰TŠ·ZE‹×‚±—x‚€%4õ2K¤»Sv[ûýË] ÜÎàN§˜üJŸ£Ó/sùweX?&8éëkh0Æ‹û†ió -Ƽh›¸¶Ü†ÁP–5«ŠñeÈí>ËÏß™Fø²m(¢‚³…!%ñLœÓm‚æöÏ{ÎÙ¬ŽÍ ø»H>aíÍ–¸UÏŸBKÚ>Õ'å¬Àý#Ý9Ýþ^b{Â\ˆGùC(ÀÎÊ ¢ëŠe$nÙÅUb§AUÔ¨:ÕzsumÇSGÓTñþ">ܼJ •Ÿ‰IKËÉçç;íì±#w¡Ê\ù.õY…{ŽfY]yvê·®P]ár»{ši´’ )õŠ ì†5 a hžæM¸C¹\EÜ®¿M~‘Š|çàx®žæGØ'ý:WÕ»v"X¹nOòÒÝ[D?*)¼U6sÜRRL×9£µµ‡®tÓ@Ià*“’n…±²f{xÑ~¹*[\é¨PãÛ¤Ÿz’ÀfufRcÓê-‘=3½vH-“LÏx™‹JôCo×€Züšˆpo7|u ¥ôÞ¦ÇÊOšD‹B[ý£ø®Bà¬;a>°Ⱥƒdº«1D{¦ìýM[ì8’¨ˆ˜Å®êT¾‡\s~ê Å›¤öâwpøª©n\ד^+·˜6øÁx Ð'šÆcÁ‰òÁ±ùï!†Õ¹žZVÝç|’ÕâÊVñ¼¬AI(­‘t(Ñì«>9&ŒÐÃÛXúîý8Ÿ¥_5àÔ Á¨?ËsdC­Év#WØ:h˜ûýCœ_°rÎ2·Yb/PŽÙ ­Û³†¶üé£ðîRÄ)?MEf°%•/.³{Yqû’/}³JQW)H–í³·Ý¢ñ»SÀÜ£Œ†´ŽÝø; °ú~pSŽð64]°”;(DÜPnNqÚŒÄtÄ*§i3%åº/¿Gaˆª*ER1LPxNöÿxnå·n‚FÉÈ£¤ÓÿeØÊ…¤î±ÊÙã]ãâ>_BºñòEs±Sh@4fÙ&¤)€¸9Jì %LÅú¥6š€+×U[†¹®~OO©½QÌ)RZ}03)˜ÜÓØªQÈÊØ$àC“ɪ©‘L Bãð(!ÔÇEë¸5Þíï©NÙ¿î/s--¯[ª0rF 4þxõTœIcel}7ùï¶s†—Œ;‡ˆ®«·šö2ÝQ¡ЄhB4!F„#B¡ЄhB4!F„#B¡ЄhB4!_ÿÕ„A(.ãÁ3ê¤tÌã@ÜBˆ6~ |Å܆‰uLŠÕê´–Ï9?Ï>5XïñòZ˜®K:Cgçwy^].x‹AÕ”ê×|”ªÒœÎ?¸ãÑi8DZN¼Û¨¶†î2(š½×Ûïs±mÓe”6?S]x×NŸ A‚²·º10ƒ•VÉÏ©†n¸.ÿNoOË»+ɬ¶@[ Þ‘s’ÄK†íÇP"2ÇŸžzàÊ,º¢Õ\Å0£Bí6àzϤof7Ól»kîÁ®·E‰=®hpi=ä'ýHGú-Õà«õñ;ÉÎkæyÓ•·’·¼ Rpv]¼Ê=¥¿dãËe©»­­›ЋI¼=»‘ˆ~Ùw(ª¨õ§uŸ¹&ý¾Œ3j4 ¦À(Ó\¹ôn®UØK=å®8zòÏ+`‘­»-¾sYðŒ”y sBIÅÏCqžê´î;fãa+q[·D$“–O™:nªK·p` †Çí¥ãÛÐó]¼ÐþåÕãø#p!XZšA^ÿ°*™…ýO¹sf$¯¸}Ãl“®8×QçÌ8ûÝ Ì[ÿx¤å7.,{vé¿®KFÐvã¹±DSf¬iĠЩlM:ùz·cÙ·Ûí!½¡F³žœhI W0=‹V éŒ$ž)ÅYÁ¸îNBå+vÙä6O¸æî;ÖéŽÍÉ\·6AŸ»ZÊ6~òí%¹qÚW ç¨ÊI‹´A¼ƒb‘Úˆ’(¤nsu×V÷ÛÔSÏsDÇ[%K]PEHkšp­EÄ Æ )œ±)Ç›=B¹{Êö=Ë|5àãkNÁ„“²q-çhbl· ~a¸IFQ°ÆòOs´¤<M™Â2!­በɉ·|Þz÷iܶ“c$äº=-§”N^l)Ã0(0Re¦3Z)# » à’M¤¾ÃÙÍuâS™Œ±³½½qÞ:/Êö)ˇDž¶®û=Ë÷í–ˆWt³5;XŠ"¦â‰8¿In[vÕ¿É4övó1 €%isAÔsy…4ãQBp5¾¦BKAI~Ló«˜|ÕP·¶iâ—mÛýš16«Ù‹qÎS·óM½nÜ O´·¸.<ÓxE¯³•œé¹\é år¢dES]©ºÓdß,E¼ñÂe sPê5À’~pªžûˆän“Dü¹}K9”¶!›À1\ôþ‘ãÕñ"…ÅzX³—7ÈFOM4”…‘JvEpäcgfãÞ[ÑË5vs™Ãa`ß¶r‚)fíý}²Úí¯±e­¤p kƒIzðŸ.Äz~Úc9R|g@æl‡Ìf¥ìL¿v_VÍ¿w¥· %bJµÆv”<Ñ¢ãÜÉ;”›“ݪáú‰yR#Ó¯:‡þŸ‰–w’d 9ïb@>4Æ€’IâT§Ê"hÕË牷ã÷?¹eq?”Þ•¸2Å»3j’ñÑÙˈ±K㻊וcúq9ÛŽ)ƒ̼„ŽòYÃ÷SnÑe°L£7 œä]ì=\[iu¶±ú²sy\Ü3¨Çé§qH9ù\ÕF­»‚3*fŒSró€Å9s$cxÅ:\-yÌ[Qw"*5/•2sÌctQL‚ Ô¿ 5æ¶Ø#Ø·[«x_ªHí'´T€~!P\D!‘à*›ŽòÎ?l{Ž-ÆY³zØl\»qNÙ¼Òe*nÆÚ÷U*áfg =¯ˆj)Ê"]PôÍõ–Ù½EygìÇ–P\ÜxÑ®a¨á;ANÚJÚêp@╜Žõ7æO1›AXùï‡Y—=ncîØÄùz'!bvHèùñäÃì÷1 ¯—ˆfb"¬{– £D fæ‰Nû¿{³nû4¶²Ånçȧ–¢•o6pÌ`¬å¹c˜ê´ÕÆÑ‚{j5YFÅš¤U b€íÚ@ íÜ"=}¿.¼‹¸ÏKéÿ(¸ª§º‡”à²c9¿Ÿx_q¥yàN;q—$äx÷óŽàr^g²²%ÓxZ¬§áÛò0vÛËK*ؑёkGµ\»ŠÔ^Qû¤ÅqEaH;§µ]U¶ôÜdIglnK‰õ\×@p´@áQËZ¹ØÐÐJµ±fÁ«·ŠªÎóvYä†Rs”/Ž9ñË]SWEÇ|¸ã¥—{ÙŒ²ÓxH7•—¹ïFW†FÈes8£ä”Tjfe:®×QR¨¢‚p›î_Qm;üm–(bl¢µ-LMI­;©™ÍbêfJ&ÅÊ>Uð¢ì¼.ÜK"ñ´òl[yc å‹eKËd¸TÛÈ6E¥ÅÞFD«6i.ñ$Õjñ:.TEpY#Dö˯À&µ.)©§{Ž'íE¥ÈŠ£ðªÝ;ÍþN« sÛ‹hþ“-¥—íšÚ6= ä5÷ž8Ô×4¿]ºi¤hRÞ?óëš|0µÙà®5ñbç¾Æì–QÊM¸2$œ ù`™<©›k1YÌÒ‰EÚHlÑé¡ÞL‰ WBûÓ](fŽÒÎͯ}C¥ÒïUÀ»V—;]4ƒJÑ€­*‘Íh4%-¼á™ÓÈëeÕø]Ä t·ß1ÁöÎ;ÉqxvjBnfqÅß%d/—ßÌ'>uåÁE¬³X¢´j‚@È U;·Ž·é+ޟ¶ØÈæ¶šÇÉ©:Ëu‚^+AB@“GÍ KBÙòߟÁæ©¡-ŽAñ…Œ†‡RذòÍŒ2ÄTÇÐ*ÊEIº‹µ. Låp ÁÈÅ‚^]Ük¶È¤²ÂŠi(¨©®‹¸û¡²uÔèÛs6š¿ËW|k‚Ëîð[…V¿ ò/˜\7°®lqcÅãlÝÇ|„àò—¿ye—#b©)Å<–‹bGÑvÔªâÜŠ±|“U&›…Û¬ªD1un›÷Ns²]zrXF‰¦ãÝòƉ†Ý“ob_dNaòk0Z38s`Ü!Ä [wväh¾>Z“з.HHÀ¨[·¾Bº®[¢ð’³ˆä¢ C6rÊ1Jy„7 ¶ãÖ›½•žÙmmm£œBÍ%ýÏq%ſݨorÃî#cHcCAìâ ’Ø TÇë[î v @ÄSÁMÀNCwÄ8€€‡³\ÆÇ}Ѻ ¨Í©UÜ&mù=›9Uê3”0´Ï'Öµ2Ààq­œ•«pÇ·˜.›8¸ò ÚÓtC"^fd®Ú k•ƒ~ÛDD¦ö}ëÜOßmð´9¢PÚaÇ´š“‰ãõ+I/5Æó-¦LÈÜ¢œâ=«éÖÕ{pœc·3yyÆÍ…øºžjV\¶#™sÜ Û§Çhݳ Ρ"S{÷©H »ƒ².Yõñþ„ld"¢¸ã\q¦t¥qÉd]·ÒÒâ¶U™ÞÛØK‚ FRPÓNœFËÅÊÆ(‹ÈÙ8Ék 프{ÔHª+¤r*Š…)Š`×4´ßæ‡t}ËA­Aú”ÎCõµ6.ïQnD] å9Ä.'r·&Ú‘¶¼.rÈÖnD·2\ì\A„R5Ö1ÉU¿›±2…Äz·»¼Ç2¢rõsÖ{FìØíem5ãž ~4p⺊@=F‚GjLæ+ï–\þÈ6…ñÈé(VVÆ3…<.!ÃöºÚÉÄxªSh‡°ìÆj¬‹8oݸYÓål‚'\È ‰©ên½†X?oš#€4Q­o`!ö&./†Ø¬Œ7©)8ÃŒn|†ø[Á ¼yìè» 0¯}âL»pÍæhhÛmŪº¹-Ëù :´´k÷§rŠm[°Üè‚ç(ÚôÏ]m¶[q€ÛÛ09 :u_AJ¾®5'&€U9 ËY4´ cüqU:Zí¹”º®U1¥ƒˆœ;W qÖ*ޏ!ñõ¬Dc°+Kb6è¹.ùöÌÜ‹Q]@s$íC.ª†Þ Ròþ¥ÜvÛýû÷vñ±­qÄ4Q¢‚™|sÍUÎöK#Î{•м}^¹BßÜ|TŠà§½.¬i+…ó“ÈIÙ²JÆK·¸$ÌNI åÔûy(Fk øçMÌÍMB‚){F×ÖÛl;pµÖÑÇJèc\Žx“^úÕZEvÁn†Ø?ñU¯ˆü±ÎœÉwFyÁœ`â¤æX¸efæmI<‰då9T1,uÀÒuŒÅ£‹[Ú¹’ÌV&Õ>vb„’’Žº.)Ì¥^ßÖö;måÌÚ#!Î̇rƒÁ¼Ùx×Å";Æ1î:*åžJó"ûa{eŽ6ñwÞîfîÌ€ì+þʺ/c%æ8[^NnŒ¥}1šHíÜÆX[‘éÌŠ@eÅ4ÀšäÞêõNnRG8´µeèu]+D®m Hsµ@T«V·(˜¿tW9  gxWþÝ"N‚N†½¿ÙÎ#SFÈZnê!³´¨|¡ø¹ ä\Gª--{ð©͊îù,máæãòÒ­6_oBg¬ÝCJUQÜRÔ´øˆaè!¦,7¯rÛ7») .a‘¯±í ŠöŒ1QÅ=i# š7°ó‡*Q«Tê4!F„#B¡ЄhB4!F„#B¡ЄhB4!F„#BÿÖZÛ ¨ª Óhí( €í÷ôðöëæ~æÃ¥Îjl…¼ä[¤qò8š†.ââî &ÛÖš×És[V¸… H«áÜ,Råî¨Å¹À¡@¢]z€{vˆÁ¤Cs;M=Có¥‰â£w5 íÔȊ⚤Oi@¦¥¡Pñê#óêm¤£÷QºsV׊K8¬Wþ¢Þ .b&pM»Šølß\3HÌÏâe8‹ŠVÇsò?xG=$¼Å–1Ãr’HÈE³\,ÔëÍ‘R»“ ‡®ºÜý½»_í_«O#"c#©þã@oЮã»m(@øeøÏjÍD8•ytÛÖÜSˉãû±¼lCH;n,ÓNÖ|æ2Šm øA6m’¤Ý*e €â_¹E{}pëWQ®qq À šàC°dgí` ‘¼c"”j¬O`HgfQ©]ûÙ0|À[œÝ[¼D@k×pP)á­(=í$‚ió&\Ð)CPUm艈—ŒÆ«' 3l—! VÒLŠ®™”¨í/šDà$(€Tß.3ÊçklŽ?Ø«Áß?Ñã[ná)>+3¦I* ªë“Èͤ$¨ì,{² °¢"PS¥u‰ö¸ÈÒjåŒ|½Ë*Û‡p•ñm/Ø…MDæâÉÙ¡ŒŠû¢fÊ(=ÓT;…8›ßM4é'ôõ]@PA S,k +h¬ã™8Z-:91[”’ ˜Y.B¢C3ñøiæÜLcoæ È-“K~)¼«&­RM7mVˆ~€ óQjÌVP” w ƒÖ¾ñÓ÷ä‰ ÀÔGa=OjÅií^ÎcؽLÆY£u„¡S§0ˆü"iìðÕ“%‘”-y68à´?uÇ¢S‘Ñ›ã! M´ˆšƒJ¿NÏ$Ž¡sÉ .¨È(Üzg(‚ÈåÞ8…j""%á§-¥,s(üÐO5J$Hxä½6Ój%!@@GáÚ"Ô~Nš·7¿Í)ªVªŠ°c¡·™“c‰L;ˆÐ=¢!Ö£^¾ý"I%1¸z¤ %a‚²6 hs¤Ú‘ìÇhêŠ"Q(í À;„jb޹‡P~äI%%v}«-qÈœg ªAº5¡‹°)TˆZ˜@wÃ§Ž´×ÏpÂO¬ê©~Z\¾AE& )G3¤]…©€:õ¯þÍd\Ü~kª™ ‘ޡן'm:Q(¶~n<Àñ•¹@â@îO¥Ó¨të­bÝ'·Ü!kæw¦ì3í¢(iž)%÷{G,ö*Õ3—hЧ‰Jb…xW¡zuñé­‹q•ñ^ëÖAÜj–‚&·+)5²µ4-I.-…ƒ Úº* @ÛL P*”5€AüzºŽWŒjœm(ÕDU ()ÆÚ(ˆPKù¢oÇ«å™ÌÁÔF4«”~e ˜ ZÑ(WqiñT(PÖ¾ß &<ñ8¢¸’FkIÒ5»¶EPR©‰Ž‘N5T !N€SxŽ¢_ºF~do"‹#2>5è R"’I™#‡ÂR‚Q ÛNQ¨âõ÷é³1–-EÄ’³õ¯9Hˆ‡&9ŽÁ¹ûÄ“9“¢`¥ Pj:a˜1Á¯8`›$‘– {7Ì­HÑ N!vö«R›óL$ñ ûôΧÆóÎHwýJðu\qJu¡£éT<«pó %(ì7r€tºu¶ÓßQÕôZjjÓôqO1Ü¡¡ØÑz°lÍ DÀÑ‹5À^Ñ:pí І ³X¸sÜÍD>”š¼ U¨*Øa¿º‘tí·)U 9`pLCíï¢@0†¢A{<5źÞ\k:Á£±áÇïJæ'U±X â=ƒòD¥¬[è %0Ô: a ø@Ô®’Üu`ëid­Ä4·OáøS—ü5T›©ŽoU™?¿â³•YS·•  ÉÝ’FVÀPn¨˜Ô:­„µ÷‰+«Ù4ú“ALÌߟҢz`ŸR«½š¹€.‹_I9HÛ žb‡SqíT’”A2ˆü)³‘Y%GƧxou5êÏûvê‘u¶n]'s'çÛ8Í9úOu$¹²ïJÝ:zçTRZ=ÕsqGÀýk§:ô¢Ù¡ЄhB4!F„#B¡ЄhB4!F„#B¡ЄhB4!¿ÿ×Q@²õ*ˆ‰N;kÐ¥÷P@iZt×ÍKòÛL‚Òâ󦨀…Ø&©ªJSáëAm<5¬¼8)g"­VH•ALÁN‚Q ÔKJP:tñ~¡1Á®ªÀâKT%ª»wP‡¡h""&-MZÐK_hêu5P°‰ÒÕ±ƒòL¥™ºQ>ïie2÷'V'-CÁ% SuñÛ©×2Dö´8Ò½©`ÐÐW@#ݑŭpŠ'å•MšªdÜ)*ÂA2‰¢Tœ§Ü¥>q¾$™ ¤ù›E ã VòV%£\³*ˆïr$jää •@ý¾)`7bøô7Ošˆø\ãÊòHÄU E&Ìœ«äÎDdÁßmC¨$2N]§¸; Qº¨˜S ý„¾ÀÓå¦Iq€íEFb,¤Dôr‹‹5ö]¤SMÄ#Õ…‹ä€¤Ý´ÍÖ1T0ÃOÁ¤H CP›Õ‰9¬è¥g¶…Èèä]6ë)p#ÝSQ#nDZV§© õ8ÓAi «³I uY¶¹ nd9Ûp‰™É5Ü(ÅÁO±?DÉ$Üâ&7j!Ô¡Ô4Û_¤¹œ jÕ3‡ÞRlÖn4v %š‘j¥Û^=c³”25«ý! nöu®a$Tæ–§¦Þâ* á7vI l‚â`0‘ $EÂ@1A>áËÔ}½zë^Þ-ÃecÂÃÉ}0Åx³nõL\·n³Ÿ.dŽª¨Aw1ç0P>  ÐDGKµ¸1´ÝŠFªÀ¥ä¤38ùwglÅ&é¹lš¬D S Ò0}Gü@­MPÖÇe;Þ^òQ‹•6äŒacò[9´How[Qr ½ ÷›3¤0@O±4Ì4ÿŠº"il3DN,}iÜïãTÄàpK˜w=•Ú©_ˆ í Ó·à5ê& ‡Ï§dÓ,n`ÄtnÌSBH½ÄEN¦- `­áˆ{€j4ù5ª;–GaU ’Þò´ŒNR¬¢b!C€˜ÕTz€Ò£òÐk]E•¾WQ$­Ê¢JeÕ„£A5F•©Ä|GÇR¢ysj‚I¥V°ô*¦)JS »­F½z D~MH!Îmk‚%Cç€÷?÷»”ê"j€Ô@½4¨ÜjÜ2I¦“TÁhJˆWhÐ@Ü%Ý´ÀÆöû+«x‰v5Á, * þ´PäPJ1U¨ü^ß j&¿.Ÿ.n%Ç ”'šÅ~P˜§Ú4§^»«P¥ÃÝ­'¨mËØ^°ÜB®ƒsÝE!ÞjÃøºü%ú?¹”íÓ#ÇõI·ˆ;7Rƒ¼Æ5FàSÖ€=šc…Z±^ €¦&:*ä•(¦¡ ùà`íÚ?íÓOµæ9/~e–€IÔpHi˜sÄËÈGˆQ4Ü(ªuüäÜÕí m5[½Ü¿¸²µ¸n&˜Ÿ™šÐ *ÔÛT(h˜HÐÕ÷ @­tå”ߘÒrPèNÉ%.6¢RœLP üh€ÒzW¨ëyÛ¥Ô[*Á¥¢€$¯ib˜w¤p!ê0 *Q¡‡åêÙã 4w ,3NM(—e]„GpãP:íèP£Ô¡©18Ó2–i¨^’©÷Rtå(€ÃQ=h>ÿ“Ji«ôÕ`‚Or† c¢ëÄÄø†•èp¥j.f‰"8bV(á’gÆ«¸„9„ UˆP¥ *S˜z€ôëO—U–bñÌ Q5§Î½:ÚÍ@0u²‚#Q¨, 'ê t¥|5†‡E)k›ƒ¾Ä—4Œj–ÒR`'U‰@HÅ ¦1VÝBAÜQê!AÖÇɦ‚ºJe팆 fõSÊS¦m¢oˆ6‰LP:‡Ñù}š¸·h¨cŽ5Ÿ½{˜{n© “´Ê¨”<*¦¶µÔ ‡QðÒi©Ž©çiùþA=&†–Ð'&;”ì®ÔåÜU™(DÇã1jÙcî)€âMq§MÁ­ ªmL°ÎÁÃêHõO¯½¬Dß°pÄÆ]±@Â;¶º ­P  "z’>]r-ŸpvÛºDçFXÿp?L{*“s®-ÿ¼ÜGܾ¢ŠáÁžE¨z“éÖUˆ˜ä'P\‚bRhë— fˆ§©.m\Ïë90®ñÛOÕ\Í%§˜ñNËÇÁnØÿƒg?¼-ÏëhjŸyÏàýŸ³ØÿjŸûå×å&¡Z~5æTBìûT?Z·ä lÖ>W|R¿Š¦Ü¤ú8Ãõó¬u?þf÷ý“~´ÅÆE!ã|þOû¬Gåw‚Œ|ðø„äÝG?èZ¬ÿ¨TöæTm?Þ¿ÛþÔWþ‘ðX…¼oâÖä?o—˽eÙ­cÞCç/èV ý/‚ÀÌ-×Ñüò†™XvnKEoä›ôÃWpyWÝö¯†_I/Öééä‚fÚÚ¦ü“ZÎóú¥µ[Ëgì‰óÿ‰®Isú’øýŠDy0{öƒþPÔ4ÓüŒø­c¶_Ò.ž“ôJOâwÁ-r/øˆŸÐüšÜì¿úV|ŸæwÅ)å Q[Õ?vWù&ü¤Óãõ‚S³*§ï?^O÷i×þ›>?bBcBþì‡òÔÿ“U¶ÿæ$BþI}›ÿèãüèis~´^)·fRŽOí“þYœ6ž‡7$IæÌ£K}¢ÿ®Sôõ)ž`£,“~ãÿÏ~˜k?þ D¾Aã÷¦‘ý¬¿ôQþ¶ÛZ—R–wØSLóÐë÷x?Õ¡ýg^x¾ýk¿ç*k2zÜ4ÿ6ÿ¸ÿ9®Þßò±ÿ²+P¨>]«{jˆ‘þüÓ[L;ý_ò7ìO³ÎWêÿü«ÿØwÿ¯Gké?Gÿü—KÿùÖßîXºU·ùkäoÔ [}F„#B¡ЄhB4!F„#B¡ЄhB4!F„#BÿÙ././@LongLink0000000000000000000000000000015000000000000011561 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/docs/spring-webflow-reference/html/images/annot-close.pnglibspring-webflow-2.0-java-2.0.9.RELEASE.orig/docs/spring-webflow-reference/html/images/annot-close.0000644000000000000000000000031711360615630027565 0ustar ‰PNG  IHDR oó‘G pHYs  šœtIMEÔ 0ÜT€›tEXtCommentCreated with The GIMPïd%nEIDATxÚuÁ ‘8t7 cûÀÔc_„ƒ#ŒªŠOfDxÉTåÝ.6Ð-’Ҥƻ?]¥í‹iÃñ¹çòóƒ{< !C-ðvùIEND®B`‚libspring-webflow-2.0-java-2.0.9.RELEASE.orig/docs/spring-webflow-reference/html/images/tip.svg0000644000000000000000000000464211360615630026664 0ustar ]> libspring-webflow-2.0-java-2.0.9.RELEASE.orig/docs/spring-webflow-reference/html/images/tip.tif0000644000000000000000000000064411360615630026645 0ustar II*€?àP8#ž ‚BaP';J”RÄb ç¼.÷^ÄÜïxÜ5(”gE¡‘ô‰‹=ҋج‰þçR­aR¥ì*`ç…Já,å,¶÷=ˆMsˆ*–K RÑ s˜@µJÏ*3([z •Q*ð¤aì÷T…-d3 ôBì°7:R_=…¥6›\ŽßPŸ˜î»m¾êÿ{Þ­WËtÞ±‚¿·­Ïû÷ RÈ_õlv†ÀdfxˆRök«^)‚Ý®yxˆÂ›Ìl”­‚-R—ˆS;_"‡±¯î}“]“J#(Ðyö±3–,ÙÆ¾ed'; cÆ2ÖiìK¨ÐO”´Q)ÒB) %[…JQ‰²ü²¦B"K‹æùCõ»®ç}Ÿ÷¹Þó×ç>×çœÏ¹ïs_×}^a‰€¨è8ºëv ¼·/žeØ< ‚$r,ÍÜÅÅþ£­¾à…*‰F‹üϼÿÕ°to_DB7±mbwHŒ£Å a @#Q4P¡»»jÀ†nâFÀmânÀ&Cã! _4… À2€1¡Ç’°*@¡Ä’£°GPjQQ1ž6P$Óèq<³ êíã‹ß,™²`ˆÀ¼ùÇ. Ps @\úŸÂ=aÀõ­ÿø–]÷,6DKN æ1cY€å(ÀF!ƒñ½‚ÁØ8À4ÐIާ'ü:/éøoëÍ=ÿ2&€RgrB‡1ïÁœb¹ÎÚÁ6Äþ‘c‰‹+Ä-Í£ÊkÈgÎï à.è…ó" SEh¢±bqâñI’©R™ø,é,™²åo9!F¡\±ZéÚÖFå.•ÕqµU»†Œ¦––‡vªN¹î#½u%C’Ñ™m£&R¦T³ÛœÄ]–7­ù¶ÓmúíÔí9|vrp®ÝÁíéöÈCÌ3ÒëžÖ7`gµßbÀÁÀÞ n²3åhð³Pö0sj|xmÄx´eL"íêî7±è8B|@B~âݤÙÞT“4Úž²ô®Œ‘̉½Óûæö/f-e¯ælü…Îå<È›'˜/qHñ°VÑóB›£;Žy÷=á’\D-Ž8qšz†Z^v–Tæ[îvξÂì¼Æ¥J…ª-eªñ—$.‹\¼Ê[ÃSËyùÚÏëëuË7æoN×ßêoxr»³±©©®ùêKwϵœ¼w¸õ`[VûÞŽ”NúýèÑ#»HÝÄ\ÏÄ£3žØõ õÎ<­–ÕçÚ/Õ?ÿ¼íEáË€Õo¯ ‘^«¾þúæápÁˆç¨ÄèÔXÍßô·ºo¿Ž7O¤NN®N5L§Í˜¿cz×3›ÿÞéχ‹æ¼ç…燊?y/ /|.\rZæZîù’µb¾ÂX½·–²®³¾øµæ[Äw¥ï3?*6Jý|ÃØÍ` ÐL|h³F…›•ƒ•mƒý+Ç'Î)®×Ø^îvž:Þ ¾ãüÙ‰‚¸]BÎÂDQ]1qu 5I])¼•´©Œ¾¬ªœÊù­ E%ÂV]e¢Šª·U=™«QªÙ õL{A—WO[ßÍ Åð¢Ñ 1«‰Žén³óY¢²e„Õ5ëu+Û<»! Ç4§~±¡® £çQ¯%_ÚÎ~kþú{[Id#JBðíå05jxøåˆQòÑ~1Å´WtþX÷¸ÂøG‰¬IɇS¤N¦}Üó)}%ãkæ·½?÷3gqfóçˆøK.—pÐ0Ï"ßöóaï¿#…”£áÇbŽÓNÐOÆEÓNE9Xâ]êrÖªL·\õœj…Êy¥ J•ŠUòåªe/É]–½"uU¼F´VäšðuÁ:¾Ü7¹ë±·¸¸nó6âš„›…ïˆÝÅ·(ÜSkÕi3h·èpêô½¿óÁö‡ø‡K]=Ý%=QÌ =žò ÷ÔÓ¨gÄ>‰¾ÕþÞç/_: È ¬¼ê,Šymþ†÷ÍèðÕ‘´Q›1Þ±á¿+Þ†«/N4N™ ›6š™wöÔûèVE>~˜»;ha×'µOß»>]ò_VZ^úrg%gÕeMxmd½â+õáÛú÷»?27¬~b>cDmöµÆ´ˆþÂü 3Ï2Ï:Ï6Æ>Ìñ’ó1W ¶–»Œ'7‘Âï @ä\Æõ ]Îñ%ˆ1‹ ŠWJÄKZIqKâ+¥£d e1²¯ä.mI—÷PPQdU|§ÔµµZùJœêN5 u5‚¸›Æšæ´V¿v›ÎuÝR½\ý’¡ƒÑ¶mxcŒñ¢É€é-³cæ T¢—¥µ•¾µüvaf›UÛ÷v¯í»«œŠs]’v„ºzº9¸y¨xJyá¼¹|P>_|ßïœð{³ë¥o@gà=RKP3ùå|pn=4 ̆ª.Á±9Õ}/¦–V±û$ý¯Ø¤¸°xÿ§D“$õdéTtêrÚÛ=OÓïe\É<¾7c_È~ç,íl\’³v`þ¯ÉÜ7ûòºò›];\]Pr$¯0ã(íå¸Ç ë“ÚErÅ‚§˜O}9=}f¨¤·ôÞÙ«e¥åÇÎeW¤¹@ªôªÚqѶÚè’Ìe¸ð~|5_ûéäçÂåÒ•ºµ™oø?Ó €Í·£ Pà=àZ P° È €«páp7¤£+Ù€Xü~?¬À ’  ¦à‘çá>L#ìˆ&â‡ü…4"ïQ(ÔaÔ#&V&¦<¦~´(š‚®C3˜™Ï3Ÿ`.³ YH,m¬Ò¬ûYgÙÙêØEÙ³Øç8¼8:859K¹X¸â¹&°ÎØneîbžXžq^Þ>e¾b~fþxþi7vA‚`9Ž—û*)ôVØGø™Èv‘6Ñm¢ bºbÍâ&â6}’Þ’ÓRt)>_ZRú¦Œ­Ì¸lªœ€\Ý—-KòE & “ŠùJJ3[O([*/«T©ú« «õ©ç¬4@£E3CËB›I»C'[×AOR¥¿`0hØats[¥ñq“lÓD³ps²Å.¢›¥•…µév33[3»íö.¾ŽÁN4çý.E;ê\{ÜÆ=O/GïDŸ ßA?î]†þä€ã¤e²Å?¸(¤7 CÝžÑÅíSNûD7Í‹û;A;17i$E5õ@ÚlºeFiæ÷}žû›²¥rÒ¼É5=x+ßï°xÁ@á©cA'dO~(®=^âx–¿lü\ÃùÂJÊE›KjW®~¯]¸þîÆTýXÃlãÊÎÙV§ö˜ÎŒå]Í=cOXžú¼ŸyÙ=ˆyMÎy+?‘65ðnëû='ì/-s¬Ä®M}³þq—ÁØüI;‚è‚Ã^8ðáCL(¤ @q¡lP9¨‡LlLÎLELãhet º‹Y˜9Œ¹ƒÅP1],J,¹,Y]XëÙ$Ù°}f÷eïæÐá¨àäãÜϹÊÊõëŒmçÖá¾Ì#Ësš—‡÷ïO¾¾%~*ÿ¸ÀNW‚N‚pÖ¸v!c¡Fa=áÛ"Z"µ¢¢×Ä4ÄÅMÄ;%ì%$$¤Òðløbé­Òm22s²9r’rM[<·¬Ê)) +f*)(=Ûš¤ŒWîV‰U•V}©–¥®¥>E(Ò°ÑØÐlЊ֖ÓÒ9¢ë¨‡Ó[ÕŸ0xlØ`tqÛiã\“ÓH³s/‹DKc+=kííÚ6º¶:vÆöÖ.޾N!ÎÉ.ù;ª\[ÝÝ×<%¼,¼£|Š}Ÿø1ï"ø{¬'M(6Áé!u¡3TÙpRDYäX´xL­r÷B¬f\rüýDl’grIÊtšîžœôç™R{#÷5eqe“rj|ËuíýeÙØœ„ùÛ¶ç{Z+(,Ô::z<ã¤LуSgÄJÚÏ’Ë9Î5¯¨ê®Î¼¬{e®¦ò¥NéÆB}MCr£}³ä¥–§­·Û“;fï;=¸ÛEè¾üHòñ±^ÌÓägËý>ÏŸ¾Ô(„!Ÿ×ׇÑ#£gÇÆÞÊûMš¼354½òN`Vù½Ù§®sÎóŽ vŸL5?ã—Ø—>-÷©]É_¥®Y¬ó¬}½ú-å»í¡£¥?; €Íy ؉1‘1t¼Ñòÿ9ìý7‹ŠŒÿ­ÁœÔ8[w€¾ºµ+XÀTt“3ð òÁ±Vn¿°~ÕÚv3±£Å¹¸€0â›æîX„N²sù…3£#€¦[Zýн@wõ9¤>"ÆÞ8¡àhßZS± n¿ù«’¥=ˆ 0)aD§M>J€–€2Ä@$ĨÐd  ¢od b!HI€‡H Ânˆ*P bÅÇC$C<ÐÁH@‡PÕ_ ÿSǦ€ÔÿƒA ÄP÷Ñ£n„$Ç$z†®Þ~þÛþb0DÿÉ´©ô{–Gk¢uÐhc´ ÚðhZTÑÚh}´9Úm„ÖA<»=÷'+ñOø?§€¡ÿV«*„ èÁ 0tˆ  îû'6gu @I @ëzjæ¿ß«¸à¤8b -™N ‹Ã›Óh‘ÁxbL->.˜®‚·&«©à5 €Ž$LT~T”E pHYs  šœ IDATxœíÝ}TT×Ý/ðßQ@gT Æ†Æ†$­3$¶½ézƒOâ ‚m¢‰ˆ16Œt5º@-ÉmQžµ’ šZ²2)qÕB^Ô±UP¯IÀñR2©ÉEò  W°:è3"3Ì˾lD"l˜ù~þ:3œ³ÏÞ‡3ßÙgŸ—‘c ”LtD0 ‰@<$ˆ‡$ñD ’ÄC€xH"I£ƒg³Ù.\(ú?0,ž{î9›Í6Ø…Ÿèjûœk×®%%%…‡‡3ÜñÞhéÒ¥ ,(++ øR8:Qmmm 3gÎܹs§èº ‹;wΜ9óñÇokkøRH¢‘séÒ¥¸¸¸9sælß¾]&Öï$“ɶoßwéÒ¥.5¬u¦¦¦ØØØçž{nË–-¢ë0ìòòòž{î¹ØØØ¦¦¦Ìq¢‘P__?þü7fddˆ® ÀyõÕWårylllEEEtttÿ3#‰†ÝéÓ§,X ÕjŸþyÑuQ“&MŠÿè£bbbú™SœauáÂ…Ù³g¿ûüå/E×@Œýû÷¯ZµêË/¿Œˆˆ¸Ý:::V¬X‘`³Ùººº*++c•••G%¢‚‚™L6yòd"š6mšV«‹‹«®®æËöy0Dâuvv.[¶Œ+'$$H’d·Ûår¹g†ˆˆˆ¦¦&Ï1vvv&&&~ÆXww÷­×ñbphêÿÏ’hx}Ÿ$ð&¸²F;$ˆ‡$ñD ’ÄC€xH"Iâ!‰@<$ˆ‡$ñD ’ÄC€xH"Iâ!‰@<$ˆ‡$ñD ’ÄC€xH"Iâù‰®ŒU2™ ?*y×I’ÄCÜ× ‰`ˆûðŸ}>ÀÈ»sùìÃ|öù #Gg ’ÄC€xH"IâÝ9‰>ûì³á¯Æhä³ y’ož¡1’äµ[Ø‹›&oÕþ›†£3Iâ!‰@<$ˆ‡$ñî|,ø¬S§N>úè£Ã¹çÙÏ+mÝDÔÝM÷ªÿãÑÈ,ÔúyÕÕÙs¼±û:MÇ«.ÿlάÀ;-×vîËÏÿÇħƒf<4gVä êjª=~9ügÑÿT]Ÿ3+lPËBÿÐ'‚Ûz饗fÏžýƒü`Ë–-&“ixVÒõIÚã >6jªÌVN*ªµ`¡³iq%ßÎçlþLJzçVÖø÷• ÔÔÔTVîû­J©^WÖ×ÊlEó¤·jm·þá²þ'›¶óûâv×`m0 †Ó˜ÞÂn·{Ù²e&Lˆß»w¯Ýnç½KM³ä«(¿îÆ‹ÒTJ.¬cŒ5ÎW©´¥uŒ1f©ËOU‘*Uk03f©NVå[k9’¯Òä6X ›³K¬ÌR²6umvšŠH•šßÐų֦©R×®MMÕ6t1}¾F•o¸¹jS.Qö‘ÆÕ…ÙDDªÔÒ:sCÉZ""JÓ[Õ…Ù¼k *»«Û¹y§ÁjÕkçn®bÌT’›JD¤J;b캛‚±1¾Ãô¯ÿ¦™fÿõ¯µZ­¢k1hc}Çâa¤P(ø÷VHHH@@À’%KØÝK¢ QòÚìì쵩"ÕsKˆT¥ fKÃaÑÎkI*Qv©Åa9œM”¼Óa©NN.¨ÓQIC³VÍ¥53KŠhmI‹¹A«¢ì#&cI*Q¶Ád:¬Õiª-LŸ¯QiõžuWæªTÚjÓ‘l¢ì:s—ñˆ–(µÎÚM´¶¤Îa©V‘¦Òäp´QñŵI›«Ì<‰ºê ˆÒ¬¡$T–»±-ØØßaúÑÓ†eœ(&&¦£££±±ñnèv»ó›ßÌŸ??88øÖ¿J’¤ÓéÖ¬Y3„’Gà‰”^ðÄ5?¿o÷“áhNòìŸÅý,¸ûZä•W¿µûóPz‡r·'ݯ z²P«ÉýôˇªjKRˆ=ùÇjÍ„·\ë¨tõC¥”Zb|æþ@ºF“h<‘Ó>UsäÏÜ£ ¤5š‡N~¹÷ÃÜjó¬PŬßmUm̺u½òÉSÉFgO¢ÔŸF¦"C+ ‹TQÇgø…Ì,3¼~N¿‡¡Ü@“zoÿ¢í›^tåþÖtâ¡ nA†2N´iÓ&I’¢¢¢¾ùæ"JOOOII‰‰‰Q(¨¨¨8sæŒÑhܳgOkkkTTTVVV\\\TTÔž={ˆèĉQQQž³VTTÄÄĤ§§K’”žžÎ߬­­U(’$-\¸ÏÀ ä3ÇÇÇ;N¾HFFFkkëµk×ÞxãA=ò5''Gà÷À(ç9:ó÷÷˜;wnQQ‘Åb)..Âns;ö«4oѯž|2)é™ôºüÒ—]µ]U÷÷Ì®O4ÕŸ¿á ¢i‰H“üáâ÷›¾SØ$?"¢ëvR—ìš<±ŸïZëÑ—>õ‹{.cPM³55}ÓÔd_Sð‡ûn¬Ùi;·_©z¬°òâtÕü´[ö»?¥¥®2–ή{L¶üà nA¿»wêt:"Òét‰‰‰Där¹Ôj5åååÉår"jnnæ%×××{¦ÓÒÒär¹R©dŒÅÅÅõ\//P.—/]º”ˆrrr, )•ÊÂÂB"R«Õ.—‹ˆxJ¥233“ˆŠ‹‹ù§B©Tvvv644‘Óé¼›Çïg[xôP©TD±eË–Ë—/÷úë]jš¥@EÙGŒŽ®®.‹©4[EÉ;ÿß‘l"m cÌÑF”o¨Ï&Ê­laŒ5”¤’ªÀb©NÖ8˜EK”\``Öª¤YZ33çk’+-Œ±GaG²I•[Ék(Íþöè,÷H—£Ëb1U¦¥ê-¬®@Ck0Ƙ¹:™R ]æ|"­ÞlÑkI³“1ÆŒ%DýwÎZJ×ò™é0QZÃÝØlŒï0ýë¿iƒn6ÏââbžDõõõ<c<8x6ñÐáÁa6›c<2:;;‰¨°°ÐS O"‡ÃÁãiUSSÃçdŒåååñpé™D|f|B§Ó1Æ\.×hKÓ;ÖÉ“'õzýíþz·’¨0¹Çcr®Áì`ÌTx³¢Ê.13fÖÞœCSRgf–êdM¾…±®ºDª#'’æþ¹gò5š|=³ÔåjˆˆT*"J«s0Caj•¥ÞiîªããÒD´¶¤Ž1VŸL”üÏó•7ª¦IN&ÒäëõÚ$m•Ùª×&m®bæj>^MD©ÕwcS06Æw˜þ KeffæäädffZ,¥RÉgÊ­Iäv»c<ƒxÇÇbùv€/ÅçQ*•J¥²¬¬Œ—Ãn¦›Ãáè™D.—‹‚åååñ žD£ÏîXߟÅd2™{ wYL&“Å1ˆŒG 40ƺJˆ´ý*;Ì&“¥ëÛÒ»ø´Ãb2™ü®[×Ýeji1™ïÚ‰3æÃ;̠lj"""ˆ(''göìÙ;vì7nÜ­ótttFÞ‘á«'¢‰'*•ÊÝ»w+•ÊÞ|ï½÷Þ_|a4ñ‹_<öØcD´aÆ–––uëÖÉår™ì¶õä…Ÿ9s†ˆ®\¹¢T*ñÓ@Þ!$44TÑc? Ì)–)¡´òñ™êEó&Ì\œ_™Úï ²Ÿ"44$ðÛÒù´_Hh¨Â¿xëºCï¹'TqÇ *al‡C©TòeyWÈÓ'òñ‰ÌÌLO†/[^^Nß=4c7ûD6›Ý<(ãš››{yúD¼+ä9Nljj"Œ”±Ñ4‡¥Åh\WJ¨±±U‡¤ÿ¦ ñ±LN§S&“õßUéuº—1öÞ{ï­\¹²³³sâĉž÷ßy猌 .=Ï»Ýn‡Ã1~üøÔçÖÕ>ûà+/ÞªÃò¤4??¿~bˆúºêdóæÍ+W®LKKëC½ÊüNÍd²ÆPŸ«€1dä˜1ær¹zÅçOÞ%>ûCãÅ[u´<=V’¤>cˆÐ£ðyC¹ÛÃétnÛ¶­¡¡añâÅ ßgõv»ýßÿþ·gœˆZ[[ëëoÜè5~}Éd2 |μ¼ðÀŸþù6oÞÌÇ€L&ÓñãÇ•JåóÏ?___/“ÉÖ¯_ÿÕW_9Ž¥K—†††Îš5‹ˆÜnwPPЫ¯¾ºhÑ¢%K–lÞ¼966–ˆöìÙ3sæÌ'N(•Ê3gÎð‘שּׁ¬èèè«W¯ö¬¿ ·çô´iÓ"""*++ßyç¿ýíoëׯl“`¸ :‰******bccwíÚÅkooçϹpáBUU•Z­^±bÅ¢££Ïž=ûòË/{ #"¹\Àß '¢{nÞ´AD&“é_ÿú×éÓ§OŸ>m±X<èv»ÛÛÛ;;;«ªª®_¿^VV¦P(x·(::š?eÙ@ííí½*Ì[¸p¡Á`8qâDXXXQQÑ`› ÃmÐIÔÜÜ<þ|v»ˆ¦OŸND/¾øâúõëM&“^¯×ëõ………¼÷Ñ+V¬Xñúë¯QEEEhhhŸ«èîîæü¹h’$ÉåòÄÄÄõë×'$$üᨨ¨Ðjµ[·nµÙlüŽ3£ÑHD­­­=WçI7>Š´k×®šš~' Œ*ƒ>‹ÿ /üýï÷œYÏËËS(ååå7ît¹\_ýµJ¥Z¹r¥Z­nooç1Áeggnß¾ˆš››ùMöýkoo?þü”)SøK“ɤP(æÏŸÿæ›o‘N§“ÉdjµúÖÓd2™L©TÞÿýüqtt´\.ooo÷\"£ÇÐï;ëîîž0a‚çóïv»{Þ8æyÉúº~Úívá*!»ÝÞóþëׯxÖèt:owå$1ƺººzVxdøì%³04^¼Uûoš×6{”ðÙ †Æ‹·êh¹ÛàvD ’ÄC€xH"Iâ!‰@<$ˆwç$:vìØÔcòÙ†Œ¼;_ÐéÅ}öï®4Ü‹·ž7M /Þª¸ÆF;$ˆ7”ßö "I’ðƒwÏnR$ ÿiƒ1Á‹_¼ŽÎ@¼;÷‰|¶î›­âÎI4†:á0Fáè ÄC€xH"Iâ!‰@<$ˆ‡$ñD ’ÄC€xH"Iâ!‰@<$ˆ‡$ñD ’ÄC€xH"Iâ!‰@<$ˆ‡$ñD ’¼ÖܹsM&“ç¥Édš;w®¸ê@Dàµ:::ÂÃà ƒL&3 ááámmm¢+}“c¢ëàÍ$ [X˜}ûö-[¶lܸq×®] v¹\|ðÁÓO?-º^>ªÿÏ>'à I$ÃáP(üePPÙl[+ŸÕÿgGgàµüýýSRRÆGDãÆ[ºt)bhÔB7[½zu`` ¾ôÒK¢«·…c‡á…£3ᢢ¢ŒFcdd¤Ñh]Ÿ†£3ðiAAA¢+ýÁ7öðBŸH¸«W¯N›6íÊ•+S§N]Ÿ†sg"!‰¸þ? ~#Yð&2™ !{×I’äv»E×B$ c It×I’$º b`ÄÄC€xH"Iâ!‰@<$ˆ‡$ñD ’ÄC€xH"Iâ!‰@<$ˆ‡$ñD ’ÄC€xH"Iâ!‰@<$ˆ‡$ñð{g0Lœg?¯4¶uQw7Ý«þG#C°PëçUWgÏyðÆ~é4¯ºü³9³°>ÛÅ/ÿûÃCìöЦ<ó¿°2"rÖ~ôamf~è¥KSÕ³B²žÛdª­º>gVØKðqèÁ0éú$íñ 5ÕG f+'ÕZ°ÐÙ´¸’oçs6ÿãC½s+kûòÝ 3fWQ„Z}ÿÙw›¤Î»8:¶Uª¬$ùÄ«_–žºàȽ9kI‹jd»¬ÿÇÉæ¡”D„$‚a•ÿƶ þðÚ¶ý¥©´_ßBDç>zK-I’¤Î+;KDd=ûÖrµ$IêåyµmD¥šìGtñÓ·ÔóþëœÓ_15˜ÈºwÝòu¯¤«%I½ü­s6"²~”—.IêåëÖ-_žwîÚ¹ßÏ^­­6¿»á…¤¤”mŸšw>õoC“í–Â{•c-Zù8}ÕxÕ?XâO¶³»–§¿’®–Þª:ùÊòôWÒIÒ¼¼]{ó–«%Iú¯²sDtñó¢EjI’¤E늚œ¶½ëSK©Tµ²¨Ë?@1ÉÿÖžÝõÊòu¯,RK’zù§M6Qÿˆ1€Ápòâ-|§¦Y 4DÉk³³³×¦jˆTGLÌa,!R•6˜- ‡UD;¬%©DÙ¥‡åp6QòN‡¥:9¹ N_@D% ]ÌZ5w–ÖÌ,*¢µ%-æ­Š²˜Œ%©DÙ“é°VC¤©¾X­"¾«W½ ¿µœÃk‰²º˜^›œ[m¶ò‰H[ZmjÓkˆr׫ ˆOè ‰Òf-‘¶²…9Œ¹DZ½¹«¡”ˆJêÌÖ*íÜÍU·4°ËP !Z«7™Žäª(»ò{oÕ1¬ÿ¦ym³G ŸÝ±x%çî<|¸´´¤ •(9¿Ú¯¡Üjþg½V“¼ýïRU[cŒuUk(µ®MŸLDD©%FƳV%Íú³™™ó5š#fÆ«+ÐPî§*Ê­63ÆX—^Ešj“^óÝ$r8Ž.}ï»z•SÝeÈ'U~»™Dz­jíaƳTk(×Äsè5”ÖÀsxi£áÈ‘Ã; ´¢|½™uÝXµU¯»¹ªw ëôÚäìJ3c¬«.ŸHkþ¾[u ë¿i8:ƒáb¿JóýêÉ'“’žI/¬Ë/}ùØUÛUÕxÏ áŠñDSýù"š6!ˆ4ÙÙÉ.~¿é;…Mò÷#"ºn'ÕxÉn É{l9zö²g@©íOþþú—¥¯Â{–ãï "ÃwJ™:]qc}šÉ~DÔ嘤ùq9DSÉyîJÕºÂÊîéªE©*ÛÍ‘%‡g¢W§L ¢ žyq†èvD0\Æ]j½ì´ÙlÖÖÿóþJ¾÷þŸ>eØXq‘ˆœçÞÝxôÇÑ?zŒŽª¹HDç>~û¨êÁ)ižÍ}í-ýñåwk‰ˆÈ~KÁ“~’M;öŸ&¢sŸì5Qà£ÿ;›–­üÓ9+ÑÙ½¹)yÁ#ô.üÖ*Þ:HíYÛU›gâÛ!sÛ•O)¹øƒ×^HúQ㇆@?r8®öX:¢W£úX'ô IÃe|½þ¸Ò„ “Â’ÿï3†Â%óÖ¦mœ!I’ÿÌêì’å³X¯/ücÜ I’f.n))^BDdï¢ßÕí,]úéMß³L¢©4/»î™£q’$ýê¯ýhòš—kÌŸ±qæ$I’¤‡Ÿ)1Î ¼§¯Â¿SŽ¿ÿxRݬ-MòÌ15°÷MòŽx1¹ô!I’¤UW’éå¬]Ö¾¨9úXò»V¢ID¡½â)™ˆHõ¶@O?~ƒa"I^»…‡Ü4kk«Í/0Tq3lÖV«-P2àC—¦O‹ŽÒœæÝo;·wÂÌó¶!äFImV…„*¾½.hð…߉³­Õ:A¡ô#›ÍèGä´9)ÐïÛônà`øìãµÍ%|vÇVÖÚ¢Iª•ªd¡ôh~eËïæÜ#¤ÃÁgw¯mö(á³;Ö°sZ/¶˜ý§Ì¸‹½ÑÀgw¯mö(á³; oÕþ›†kIâ!‰@<$ˆ‡$ñD ’ÄC€xH"Iâ!‰@<$ˆ‡$ñD ’ÄC€xH"Iâ!‰@<$ˆ‡$ñ¼êZ`$I’$I’èZxŸÝ¤H""·Û-º åÅ?Ýã5ptâ!‰@<$ˆ‡$ñD ’ÄC€xH"Iâ!‰@<$ˆ‡$ñD ’ÄC€xH"Iâ!‰@<$ˆ‡$ñD ’ÄC€xH"Iâ!‰@<$ˆ‡$ñD ’ÄC€xH"Iâ!‰@<$Ñð *//] ÁÊË˃‚‚ú™I4¼êêêRRRöíÛ'º"ÂìÛ·oÙ²euuuýÌã7bµñMO<ñ„Õj}þùçEW`¤½ÿþû7nüä“O"""ú™ I4ìÔjueeåã?nµZ322DW`äèt:­VûÙgŸEGG÷?'’h$<ðÀ'OžÔh4ííí¯¾úªèꌄ×^{mÇŽÇŒŒ¼ãÌH¢rß}÷:u*!!¡££#//Otu†×Æ:têÔ©ðððÌ/1Ɔ»NàÑÖÖöä“OÆÄÄüå/‘Épº`„Höó‘ãv»×¬Yóå—_~üñÇ …b€Ká?4Ò®]»¶páÂéÓ§ïÚµKt]|’h$%&&^»víàÁƒÁÁÁƒXŒÁˆ³Ùl‰‰‰Ã¶'ˆôÔSOÙl¶Á~(ð]Þ}¢ÑC ’ÄC€xH"Iâ!‰@<$ˆ‡$ñD ’ÄC€xH"Iâ!‰@<$ˆ‡$ñD ’ÄC€xH"Iâ!‰@<$ˆ‡$ñD ’¼ÖܹsM&“ç¥Édš;w®¸ê@Dàµ:::ÂÃà ƒL&3 ááámmm¢+}Ãï…ƒ×Ú·oß²eËÆwíÚµàà`—ËõÁ<ýôÓ¢ë}@×r8 …¢³³“¿ 2›Íbk}ÂÑx-ÿ”””qãÆѸqã–.]еDàÍV¯^HD/½ô’èêÀmáè ¼\TT”ÑhŒŒŒ4¢ë·…>x¹ŒŒŒ   ŒŒ Ñþ O^îêÕ«Ó¦M»råÊÔ©SE &.IDAT×n Iâù‰®ø ™Læƒ_{’$¹ÝnѵD0Bc¾™D¢«06`ÄÄC€xH"Iâ!‰@<$ŒÏ>ûLtðÍV®lñÐ'ñD ’ÄC€xH"Iâ!‰@<$ˆ‡$‚Qê£>:wÅa„!‰`”Ú°aáC‡ˆH’¤wÞygÈ‹ß*&&&**êûÖî*$ˆÑÒÒ%IRzz:eeeÅÄĸÝî(ж¶¶‡~xÚ´iü¯­­­žeãããSRRx |óÍ7Dtýúõ˜˜I’¢¢¢øœ|q"JOOç3+ŠTTTœ9sÆh4îÙ³‡ˆÞx㎎![¾ƒŒ8—ËEDqqq:ŽˆòòòÌf3©Õjþ>clòäɯ¿þzqq1)•ÊÎÎΞËQff&Ÿp8|¢°°O¸Ýn¾8cŒ—™——'—ˉ¨¹¹™ÏS__ït:‰è믿¹-€1Æ’hll$¢ÄÄIJ²2"’ËåŒ1OŽ8ÆXdd$"Òétžeùê333cõõõDT[[KDåååž’›››=‹+•J>3/ßår©Õj¥RÉK³Z­.—k¤Û·ÀõA˜ .èõú¼¼¼ÐÐP"òüÿ%{ŽÝæY?üá‰(((ˆˆx/é¾ûîó¼ãé%qáááDtýúõ[Ë ¾ -ï ãD ´´´ 6ÏôÃ@*•ª©©‰O»Ýî9sæðK{¹ÝQØ#<âr¹ŒFcXXØO~ò“ŸÿüçÑÑÑ[¶lù>Uzûí·=W`ÃCr¹œ_…H=žÛÚÚ …$I›6m"¢””"Š'¢¢¢"I’ ?ÁIDo¿ývffæ /¼°dÉ›ÍÆ ±Ûíü޶¬¬,þNJJ _–_’’’••åv»ããã%IZ¸p!c,<<|ÕªU’$I’dµZGpcî;AÔjµZ­NLLLLLŒ‹‹£›—J———ó‰ââb~3šÉdª©©!"‡ÃÁ'c‘‘‘N§ÓÓ…ÉËËknnæ%óBÜn·\./..®¯¯çw“x–•ËåjµÚl6ÇÅÅ-]º”Ï©Óét:\.·Ùlyyyiii7ŽBJ¥2''çøñãåååüî³ .x¾Õj5?^s»Ý™™™qqqÇ?~ü8Ï,žDŒ1›ÍV\\̳,33“ßçQVVvüøñ´´4Ïíieee‰‰‰üv37¼p~Ó™Ãá°X,¼>Œ1pÂ6OÂшÑÞÞ¾jÕªØØØ„„„… Qww7¿]ž‹ˆˆàŒ±ššš3f ƒÁ Óé<ƒGYYYÝÝÝK–,9vì˜ÅbyóÍ7- ]¸p¡ªªJ­V¯X±âÀÑÑÑgÏž}ùå—ùRr¹ÜßߟOó¢üüüø¡bXXص¾ IÂxîSeŒÑôéÓÛÛÛù µ+Vðgƒðž}öY"Z³fMZZZFF†§„ŠŠ Ï`ÐÕ«W‰hÊ”)Dôâ‹/®_¿Þd2éõz½^_XXÈïPkoo÷,Ë3H¯×ÑÂ… †»½ÐÁ}2ðUr¹¼±±‘O{”<‘Ëåü¸I©T*•J>”ÃÿTVVÆnŽyF©9ƒÁÀ+//÷¼ãr¹ Ÿæ*jllT*•¼pþÏœ999õõõŒ±ææf>´#W6Âèâv»GŸ÷mØíö>o+ãݨž‹¸Ýn·Ûí¹Öó’õuqvÏ›×@$ˆ‡¯Iâ!‰@<$ˆ‡$ñD ’ÄC€xH"!ÇŽ]|³ÕC€k¬a„H’/îl¾Ùê!@ŸÄC€xH"Iâ!‰@ö±3–,ÙÆ¾ed'; cÆ2ÖiìK¨ÐO”´Q)ÒB) %[…JQ‰²ü²¦B"K‹æùCõ»®ç}Ÿ÷¹Þó×ç>×çœÏ¹ïs_×}^a‰€¨è8ºëv ¼·/žeØ< ‚$r,ÍÜÅÅþ£­¾à…*‰F‹üϼÿÕ°to_DB7±mbwHŒ£Å a @#Q4P¡»»jÀ†nâFÀmânÀ&Cã! _4… À2€1¡Ç’°*@¡Ä’£°GPjQQ1ž6P$Óèq<³ êíã‹ß,™²`ˆÀ¼ùÇ. Ps @\úŸÂ=aÀõ­ÿø–]÷,6DKN æ1cY€å(ÀF!ƒñ½‚ÁØ8À4ÐIާ'ü:/éøoëÍ=ÿ2&€RgrB‡1ïÁœb¹ÎÚÁ6Äþ‘c‰‹+Ä-Í£ÊkÈgÎï à.è…ó" SEh¢±bqâñI’©R™ø,é,™²åo9!F¡\±ZéÚÖFå.•ÕqµU»†Œ¦––‡vªN¹î#½u%C’Ñ™m£&R¦T³ÛœÄ]–7­ù¶ÓmúíÔí9|vrp®ÝÁíéöÈCÌ3ÒëžÖ7`gµßbÀÁÀÞ n²3åhð³Pö0sj|xmÄx´eL"íêî7±è8B|@B~âݤÙÞT“4Úž²ô®Œ‘̉½Óûæö/f-e¯ælü…Îå<È›'˜/qHñ°VÑóB›£;Žy÷=á’\D-Ž8qšz†Z^v–Tæ[îvξÂì¼Æ¥J…ª-eªñ—$.‹\¼Ê[ÃSËyùÚÏëëuË7æoN×ßêoxr»³±©©®ùêKwϵœ¼w¸õ`[VûÞŽ”NúýèÑ#»HÝÄ\ÏÄ£3žØõ õÎ<­–ÕçÚ/Õ?ÿ¼íEáË€Õo¯ ‘^«¾þúæápÁˆç¨ÄèÔXÍßô·ºo¿Ž7O¤NN®N5L§Í˜¿cz×3›ÿÞéχ‹æ¼ç…燊?y/ /|.\rZæZîù’µb¾ÂX½·–²®³¾øµæ[Äw¥ï3?*6Jý|ÃØÍ` ÐL|h³F…›•ƒ•mƒý+Ç'Î)®×Ø^îvž:Þ ¾ãüÙ‰‚¸]BÎÂDQ]1qu 5I])¼•´©Œ¾¬ªœÊù­ E%ÂV]e¢Šª·U=™«QªÙ õL{A—WO[ßÍ Åð¢Ñ 1«‰Žén³óY¢²e„Õ5ëu+Û<»! Ç4§~±¡® £çQ¯%_ÚÎ~kþú{[Id#JBðíå05jxøåˆQòÑ~1Å´WtþX÷¸ÂøG‰¬IɇS¤N¦}Üó)}%ãkæ·½?÷3gqfóçˆøK.—pÐ0Ï"ßöóaï¿#…”£áÇbŽÓNÐOÆEÓNE9Xâ]êrÖªL·\õœj…Êy¥ J•ŠUòåªe/É]–½"uU¼F´VäšðuÁ:¾Ü7¹ë±·¸¸nó6âš„›…ïˆÝÅ·(ÜSkÕi3h·èpêô½¿óÁö‡ø‡K]=Ý%=QÌ =žò ÷ÔÓ¨gÄ>‰¾ÕþÞç/_: È ¬¼ê,Šymþ†÷ÍèðÕ‘´Q›1Þ±á¿+Þ†«/N4N™ ›6š™wöÔûèVE>~˜»;ha×'µOß»>]ò_VZ^úrg%gÕeMxmd½â+õáÛú÷»?27¬~b>cDmöµÆ´ˆþÂü 3Ï2Ï:Ï6Æ>Ìñ’ó1W ¶–»Œ'7‘Âï @ä\Æõ ]Îñ%ˆ1‹ ŠWJÄKZIqKâ+¥£d e1²¯ä.mI—÷PPQdU|§ÔµµZùJœêN5 u5‚¸›Æšæ´V¿v›ÎuÝR½\ý’¡ƒÑ¶mxcŒñ¢É€é-³cæ T¢—¥µ•¾µüvaf›UÛ÷v¯í»«œŠs]’v„ºzº9¸y¨xJyá¼¹|P>_|ßïœð{³ë¥o@gà=RKP3ùå|pn=4 ̆ª.Á±9Õ}/¦–V±û$ý¯Ø¤¸°xÿ§D“$õdéTtêrÚÛ=OÓïe\É<¾7c_È~ç,íl\’³v`þ¯ÉÜ7ûòºò›];\]Pr$¯0ã(íå¸Ç ë“ÚErÅ‚§˜O}9=}f¨¤·ôÞÙ«e¥åÇÎeW¤¹@ªôªÚqѶÚè’Ìe¸ð~|5_ûéäçÂåÒ•ºµ™oø?Ó €Í·£ Pà=àZ P° È €«páp7¤£+Ù€Xü~?¬À ’  ¦à‘çá>L#ìˆ&â‡ü…4"ïQ(ÔaÔ#&V&¦<¦~´(š‚®C3˜™Ï3Ÿ`.³ YH,m¬Ò¬ûYgÙÙêØEÙ³Øç8¼8:859K¹X¸â¹&°ÎØneîbžXžq^Þ>e¾b~fþxþi7vA‚`9Ž—û*)ôVØGø™Èv‘6Ñm¢ bºbÍâ&â6}’Þ’ÓRt)>_ZRú¦Œ­Ì¸lªœ€\Ý—-KòE & “ŠùJJ3[O([*/«T©ú« «õ©ç¬4@£E3CËB›I»C'[×AOR¥¿`0hØats[¥ñq“lÓD³ps²Å.¢›¥•…µév33[3»íö.¾ŽÁN4çý.E;ê\{ÜÆ=O/GïDŸ ßA?î]†þä€ã¤e²Å?¸(¤7 CÝžÑÅíSNûD7Í‹û;A;17i$E5õ@ÚlºeFiæ÷}žû›²¥rÒ¼É5=x+ßï°xÁ@á©cA'dO~(®=^âx–¿lü\ÃùÂJÊE›KjW®~¯]¸þîÆTýXÃlãÊÎÙV§ö˜ÎŒå]Í=cOXžú¼ŸyÙ=ˆyMÎy+?‘65ðnëû='ì/-s¬Ä®M}³þq—ÁØüI;‚è‚Ã^8ðáCL(¤ @q¡lP9¨‡LlLÎLELãhet º‹Y˜9Œ¹ƒÅP1],J,¹,Y]XëÙ$Ù°}f÷eïæÐá¨àäãÜϹÊÊõëŒmçÖá¾Ì#Ësš—‡÷ïO¾¾%~*ÿ¸ÀNW‚N‚pÖ¸v!c¡Fa=áÛ"Z"µ¢¢×Ä4ÄÅMÄ;%ì%$$¤Òðløbé­Òm22s²9r’rM[<·¬Ê)) +f*)(=Ûš¤ŒWîV‰U•V}©–¥®¥>E(Ò°ÑØÐlЊ֖ÓÒ9¢ë¨‡Ó[ÕŸ0xlØ`tqÛiã\“ÓH³s/‹DKc+=kííÚ6º¶:vÆöÖ.޾N!ÎÉ.ù;ª\[ÝÝ×<%¼,¼£|Š}Ÿø1ï"ø{¬'M(6Áé!u¡3TÙpRDYäX´xL­r÷B¬f\rüýDl’grIÊtšîžœôç™R{#÷5eqe“rj|ËuíýeÙØœ„ùÛ¶ç{Z+(,Ô::z<ã¤LуSgÄJÚÏ’Ë9Î5¯¨ê®Î¼¬{e®¦ò¥NéÆB}MCr£}³ä¥–§­·Û“;fï;=¸ÛEè¾üHòñ±^ÌÓägËý>ÏŸ¾Ô(„!Ÿ×ׇÑ#£gÇÆÞÊûMš¼354½òN`Vù½Ù§®sÎóŽ vŸL5?ã—Ø—>-÷©]É_¥®Y¬ó¬}½ú-å»í¡£¥?; €Íy ؉1‘1t¼Ñòÿ9ìý7‹ŠŒÿ­ÁœÔ8[w€¾ºµ+XÀTt“3ð òÁ±Vn¿°~ÕÚv3±£Å¹¸€0â›æîX„N²sù…3£#€¦[Zýн@wõ9¤>"ÆÞ8¡àhßZS± n¿ù«’¥=ˆ 0)aD§M>J€–€2Ä@$ĨÐd  ¢od b!HI€‡H Ânˆ*P bÅÇC$C<ÐÁH@‡PÕ_ ÿSǦ€ÔÿƒA ÄP÷Ñ£n„$Ç$z†®Þ~þÛþb0DÿÉ´©ô{–Gk¢uÐhc´ ÚðhZTÑÚh}´9Úm„ÖA<»=÷'+ñOø?§€¡ÿV«*„ èÁ 0tˆ  îû'6gu @I @ëzjæ¿ß«¸à¤8b -™N ‹Ã›Óh‘ÁxbL->.˜®‚·&«©à5 €Ž$LT~T”E pHYs  šœ IDATxœíÝtSUÚ/ðçФMÓ6[•Áˆ z=8íëXG(D w qP¹ ¬³Ð™Û:â’2¢Ü^µõU߬ë-«Ã8SÖ è‹U¤eIU@K‹­áÊA ÅBSKQ’’Є’¤I³ï¡1‚4m³IšäûùGÎÉ>;ÏÞ=_ÏINN"0Æ3&ÔD € € € € € € € € €6|n·{Û¶m¡.àªØ¶m›Ûín(b‡û4Œ±Ç{ìûï¿w8ñññWc$¡Ò××—ŸŸÿÑG½ù曂 }ÃaŸÚ­\¹òÛo¿Ý¾};R‘'>>~ÇŽ:îé§Ÿֆà Riiiccã|˜˜8¬ ÂEbbbCCÃ'Ÿ|RZZ:ô­†qjWYYùÖ[o577§¤¤ ¿<€°‘’’òñÇÏœ9355uÅŠCÙd¨AÚ´iÓºuëöïߟžž@…á!==}Ïž=3fÌHIIY¶l™ßöC ÒöíÛKJJššš&Nœhabâĉ{öìÉÍÍMNN^´hÑàýi÷îÝ?þøîÝ»oºé&N„‡›nºéÃ?œ3gŽB¡˜3gÎ -¿·š'%%ét:‹ juvvN›6íüùóƒ´ñ$Aðß ²ùM>"À‚À‡ Æ®®.ïâ‘#GÇÐ7·Ûíß}÷Ý \.×Úµk‹ŠŠöìÙãYóÝwßÙíö‘U p5pRUUÕúõ뽋¢(vtt\ÞlÆ k×®½|ýÉ“'ËÊʮԹÛ펋‹;sæÌC=ôÐCMž<™ˆvïÞÝÕÕu¥‚CäryFF†w155Õó1¼_|Q¥Ri4ÍfóòåËŸ}öÙ®®.‡Ã1yòdAV­ZEDcÇŽU(D´jÕ*O{«Õêí­­­ˆ^{íµ¼¼<³ÙüÀ0Æ.\¸à툖.]*¬Y³Ünwà#®aúûrr¹|ùòåMMMžÅsçÎÑÎ;KKKûûû8žžÎ[²d M˜0A„Ý»wßwß}ãÆûõ¯MDF£ñoûclçÎ7ÜpƒÙlöô6eÊ"¡°°ðÉ'Ÿ|íµ×ˆèèÑ£wÜq‡·Ã¢¢"…BÁ{ñų²²¾úê«À0,ŽH½½½¹¹¹«W¯^±bÅêÕ«=+ÿð‡?´¶¶Ž3fÆŒ©©©F£ñW¿úÕÍ7ßìr¹ˆÈf³}öÙg‹/þâ‹/<íccc‰hÕªU·ÜrËÙ³g¬oÌÆXss³ÕjEQ©TzòtHDï¼óΔ)Söïß?iҤÇ>"€áâpD"¢üüü3fxþššêù‡\.÷6ÉdžxNÛ:;;;6}úô™3gzÖ+•JƒÁP^^~Ë-·LŸ>Ý{Tñ¼Á——7cÆŒ·ÞzKß76<Î;×ÛÛ{ðàA¹\^__ÏeDÃÂçíïÞÞÞKÖ,^¼Øó„Ùl>wî\RR’§çòÇ?þñ™gž1 Z­ÖÓ~Ïž=åå寽öšÝn÷=ªœ:ujΜ9žkaž7½wpxŸ4555??ÿ™gžÉËË[³f — ß{hý¶©¨¨xá…¼‹©©©íííN§ÓûõõõŒ±ÖÖV"jooß½{·÷¡þþþ¶¶¶ââbßöUUU¾ýççç{ª¨¨`Œ=÷Üsß|ó·C“Éäm`0†zs0ÀùMÁÕýˆÃላ‹3fŒ7´žÛwÝn·Ûíö¼.òuáÂ…øøøË×»\®¾¾¾„„„Kîþõvèy®±cÇŽ¬N€ÁùM>kà>k |~C6y~æ9ÔUDAÜnw¨«è ’÷' £K~R1zàÔ€ € € € € € € € € € € € € € € € € € € € € € € € € € €ƒèýîo¾\æcïl®ýúº9g®úÞ¥ `^]Æ#Mi÷f]ï»Ò~úÐoù ÓAéÓæ.}ð.ÅO604ýÆcr’§Wœö}Øujû­‹ì›îÞ8b¤gûíöÏNP\óg(mF§¯¾úŠˆärùŸþô'­Vëû(ÇqY4eD妋K]5eÕm6æ4hJT"”Õ™cÌ©©)‰ˆÄâê&cº­%…e%"©µKCy‘XØÐf±h+I,(T‘X¹WÏœm…Dåšî™ikIqƒÞöãæ©´¤öpm1j-Ì ©Q©ÊëtÌç‰|¹µt«ty%…ïÞ28¿ãŠä 1Æ>œ””DD111r¹<33³¢¢¢»»›ñ—E[àÙ‹K*ëš$cŒu••Ôél6}¹H[uÌ¢IÕdp:»öФÒX˜T­"R×iÛ¾©- *ÑY,šJ‰5F©šHU§ëjk*'*3X4"©´—íïÞÍmÖƒ³o/7ÙÚJˆŠkuNC‘X§3Yô{UD[Ûlޖƃå³K^^ Ga½· Âï¸"ùÔŽˆî¸ãŽóçÏ3¦¿¿¿···£££´´tüøñœŸF‘µÙiÐ4l½Ñ֢ΦWœ6Ÿx—èÚ>}c£.ýw¢t¢‡ÙõÒ«NíŽnÙ&Q29{¨¸aìôæ—¶”iž™ªPÜõÄ{ÒU¬³G,þë©×ßx÷|½{Ò—öÓgs¹\®7¿QF”LcI–ž)Òu¿œ`>ÖB”Ó§ÿü3Ýù‘NtÛ~lï©öÒJ p$ÆXRR’Ûíö‘&Mšôâ‹/vwwó}–õ/½´ëÂ]ó–>»~3s¶K«ß>ø­D*ûÙŽãÇ;™O¬™}­ýÄŽIbNMÓéëÄ9…·K¾N™@DcÓhl\,Q¬â¿C”6NNDäryBôé±3®g3¯‹‹[wÈìÝü§\–ÎS$&žíè8Þñ}æÕ³¯M¸¤åÏUŠä :tˆˆúûûårùc=ÖÔÔÔÞÞ¾jÕª´´4¿Û‹Ó¤}^ý_'ìDD.sw7Ñu7Š*úT\TôÔSEwô4Ô°8{N’jëæWžZ86’%ŽˆˆDD qž¸úÝ"ê¨_>nö[ŽKz—eýµ„~tÝ +ѱwËV“zþ­ÊÍi '—C""š•ER¢¢¢§Š;¶m8jqþ´%ýl%¨ÀÏG­©S§Ñ{ï½çp8.”ë¸ 5…¢wJ *›œŒµÕ• ¬(ÖY˜ÓФö,©Ôj"U¥V[®ö¼…à4hŽ âVÉbÑ–«Ë4Œ1fÓªH­µ0æÔWx»WÕJ&Ƙwsf=¸pöë&Æ4•j"µÖb©+Q]쮸ÖâÓÒª-_XzðòJøÍCï-ƒó;.ùûUAðßfÔ¤xîã²›&)Æ]£¸ ã²šÍ®X¥R;°l4»”×(cÉn·ÇÊd¾›\V«-.A!»ò(»Õlµ“âå ׋ìv—§[»Ùh#…òJm«$ a½· Âï¸$à)RgÕï¸"ù5@Ð H H H H H H H H H H H H H H H H H H H H H H H H H HDï1 ‚ B¨«ˆ4Q;¥Ñ$·Ûê†*R¿™>’àÔ€ € € € € € € € € € € € € € € € € € € € € € € € € € €iôš={¶Á`ð. †Ù³g‡® ‚4zõôôdddH’4fÌI’222Ìfs¨‹‚ŸçÿgÂú§ºø÷ßÿá‡މ‰9þ|RRRÿæÍ›xàP×üîHÒèåt:•Jeoo¯gQ.—›L¦øøøÐVüîH8µ½âââ–.]CD111K–,AŠF-iT{üñÇe2Éd²?ÿùÏ¡.®§v£ÝäÉ“õz}ff¦^¯u-Ñ §vaoùòår¹|ùòå¡.ƒ#ÒhwöìÙñãÇwww§¥¥…º–è…wí¸x=üîHÑû«æcÆŒAƸ!Œ~.ž£è c AâN„P—x³€ € € € € € € € € € € € € € € € € € € € € € €ƒèý^;ž\ÆOÞy{Ï×=×Þ|çïÔy7*™Uû‘OZÒrg^ïíÃeü|và—úâÓoº=ëÆkFPâ±æ/“ïιð«G¤À™ÿ>7ý¾†ž¬œétxõ”q²Ò›­á¾:]¾+N–ÌŸÿQKKKSKÓG5ÙSÒ_j6¿[k}ná1»}Ó½ÂGìÔ?ù3”6£Ö Ås—ECD{M—šªËÚlŒ955%DDbAÎÄëÒÔ¨E""uqÞɘM*)(.)Õ•Z‹®®@$"*¬Üka–jµXP\@DbA¥ÞƘE£VU;žMW­¢2 cÌ ©Q©ÊëtŒ1“T;ÐI“1©¦¤ZkaŒY¤šâj‰1Óë³¾½¹˜ˆˆ µ§T[&‰•{õ|æ1æ{Ë üŽ A œ©¦€ˆH]XRS×ÔecŒ1ÃÞ¢ɦß[NT sšÊ‰Ê›º˜S_FT®51›VE¤.¯k;ýM!QqÎbШˆªuÆj‰e ]†¶J•ì50‹FM… Z­F£iÚ»µ€¨¤AÏ DbÎdÑïUmm3V‹TP«g6]!Q¥dÑ–«Ë4&ƘES®*Óx‚Ôdl+!*®Õ9m’ЍVo³µÕ©$§™ó½e~Ç…SæÀ)—mvæ<¹gß¾Ö«s%q¯A÷ÙTðGýçDé"IF›òÏz©å„ôÖ?¥O‰î'"§“¨dó GÞØHå–…SDïµé,ãbëΪÊŸwý5¤ú_*ñË“¯ü&ŽhcEÙ™d"²´×ÕN›`<ö_D9}úÏ?£¾‘Nt;§‰´å¥¿Î GWê S2RÃ@uq>•ÊÒ3Eêùå„ØØ®›ˆúëÚÚGçê u™²`OYäÁk¤@ÙOÔ¯|iÏÔ»æ=»þ0³ÕKÿ¾ý«3Ç%q¼½£ãxG‡ã‰ê57'žŸ$®¬iê»N¼¿@´;‰ˆ’U×&xºS<ÿU¤gŒK`”–¬”9$R9¤ªÜµcÇŽ;v|¢­+¤ u’¥ó‰‰g;:Žw|ŸùDõìk•þ£«é¥Ƕ¬œ6)ýŸG¬D4öŠ%»(vje—®nmY™3)ý ¼h ‚8Óëϯ®?a%"rYMí4A¡ü3Tý[QÑSE‹ïhx¼Îbïþ„ÔÛ6¿²láMí[$Y\,ÑY;)&Ý%JZŒDÔ±¾ãrÙÍ“-A1N©ð¾àp™æX…R!‹X´&(•²X²Û]2YìO7·Úœq Åð^¬ØÍF)”J™wÑd£q×_#èÓêŒS^Ö§÷ÙÍÆÓ6R\b˜cLXï-ƒÀO_)HੳŠ_5 € € € € € € € € € € € € € € € € € € € € € €ƒèý}AAu‘&j§4zƒäv»C]ÂDêW.FœÚp€ p€ p€ p€ p€ p€ p€ p€ p€ p€ p€ p€ p€ p€ p€ p€ p€ p€ p€ p]Ar:{÷î}î¹çJKK…¥¥¥Þ£p= |áÑ(©gðõcÇŽ}ûí·ýü"‘ÿo¨ ëo±ñ-¾¿¿ÿþûï?~üø›o¾9sæÌÐ6tá5ÿN§óÔ©S“'Ou!œùý+DÑ×qét:¥R©ÓéÆŒ‰®ãp0ÅÅÅE^І"Šv©o¾ùfÓ¦MÁLÑþýûƒö\£Ðƒ>¸sçÎPW$QtjÇ ò÷€ ‚Ðßß`tÃwþW­Zõå—_†ºüþ¢èˆä›"—Ë5kÖ,A,Xà™ M›6 ‚ T*F#F¥R)ÂÚµk‰héÒ¥žofÝ´i“^¯7 ,P*•z½þøñãž×Ù{öìñt¾jÕ*AfÍš‚AŽ&·ÝvÛÉ“'C]E°0†ÒfÔòàÀßõUUU¹¹¹Œ±üüüŠŠŠ––"r:žx6ܽ{·Ýn'"ƒÁššÚßßÏ{á…Z[[O:åi`³Ù< , ™L¦mÛ¶QoooEEy¶â2„p”ššêøðûWˆ– ]2Šúúz"ªªª2 Œ±§Ÿ~:77·¹¹¹¹¹™ˆ:;;½íM&“Óéœ4i’oÚÛÛ—,Y“$‰ˆ<¦¦¦¶¶¶æææ¶¶¶zŸtÄAš5kÖ™3g¼•Ÿ9sfÖ¬Y#ë ç7QtjçkÁ‚’$íß¿?==}Ó¦M---&L$I’¤ªª*ARSS=-SRRbbb.ïáæ›o&"N—ššêÙðå—_¾îºë$IЧÃÚˆõôôdddx‚*IRFF†Ùl¤C¸ºÏâhFW8"åççK’ÄkiiÉÍÍ­ªªòaœN'¹\."²Ûíž =§v&“ɳØÞÞÞÞÞþôÓO3Æ ƒ·çI“&:ujÉ’%ž‡ÚÛÛ)€#ÒöíÛ’’’ˆ()))!!áÝwßYW8¿)ˆ– ÝsÏ=¾ë[[[‰ÈsØimmu»ÝÞCP}}=c¬¦¦Æ³è XUU•÷=¾AbŒú¶ôDÑËív¬ò¾¾>¹\îíG.—;ŽÏC¨ôôô„º>ü¦ ŠÞþ¾cÌf³%$$xßÍs8ñññÞEÏyß¼v¹\111?ûºçûãÕm‡Ã1vìØ‹/,,ü׿þÕßßóè£þãÿ°Ãà ëÇ—ßDoF¿C‡åææöööÊåò¦¦¦¬¬¬PW4la=ÿ¾¤0.žˆ&Ož¬×ë333õz}¨k‰pŸ/\½èàÁƒ¡.a$–/_.—Ë—/_êBFÈûÊ3âEË)LGqöìÙñãÇwww§¥¥…º–¨†S»ðŒ¸bx:::n½õÖ .„ºÑ.11ñèÑ£™™™¡.d´ˆ–×H÷Üsß6ûöíËÎÎÞµk¯‹l×®]ÙÙÙûöí|J=AŒ ~§l(mF­¡ßØØ˜––ÖØØxUë‰$C™±°Þy|ù‚ÄR4R~ç-¬w_’ÿâ‘¢@ >{a½óøB~þ~$/¤(pƒÌ!îGF£]áÓßH/?“Òƒñû ‹ìùô›‚è½ +—Ëq%„/ÏU¸ÞÞÞPÂ>kwÑåב.\¸€ñ•™™yɵì蹎-G¤a=#vɬFÌ$㈠Ѥ0½)Üá~$Ÿá|š;È»va=®Q+Rg¯‘‚Aà Z‚4”û‘€;\GòiÎg½¸Žd¸Ž#‡ p-AÂu¤Àu$Ÿá|š‹ëHA©³Š×HÁ€ p-AÂu¤Àu$Ÿá|Ö‹ëHA†ëH0rѤP]G2ûüCúúOu m#×±æÏ.ßÅOŽx—]Ææ›}õÏpDsÄ`ÆüDÏu¤h Òo~ó›|dº Â#õf""ë‡E‚ Ó©?f&"™j²<èô'÷×w8d"¥$&\ì/!QEªx"²{ã‘é‚ L¤âˆ™N¼[òè§´B\qÈJÆÏ7Ý/‚poEý1"Š—M–Å…jøÑ¿tuÅM–ÿ?ÿ×p+™:_}}KÙÞu2׉SæO¬ÓÙTqk“§<ú‹¶ÊøŠù«Ót[ÜgeS¦=¥s¾AɽúæG¦Ý7¾®maæØ¿O¦Ç×üïo2‰ˆ.œù”’‰\ï>1mÅÄ:‹SõÙóÉ⣿pþ÷“%ôº­v¥hÿ0.g}δ9áÿ©'MûE›mj¨'!DxAÁûïСÎιóNê;_Ö-=ÿïoTÒF*·,œ*#*Ö–'—íËkßX¦±LUÈh^I¥˜¬i[?Ö²ñ¾i© –-¼‘ÈJ*˜7ÿ÷bR__||Ÿ´q˲K¶ˆËBE,Í{^£JøÏ6Z)RÏ/'˜Õåôé?ÿŒúrD:ÑÊ Y,–äääÐ=ðDxÜn÷• N®œ‹xïý çÝND Þò©PpüÜÃ$¦üxª•!i§”DÏ‚‹HLJˆu$SAIñ–W_ú°üþyדã,Ý9ѼÛeDD® *úˆˆÒâ<½8‰h|‚ìb–ÎS$&žíè8M”ùDõ­×&P褤¤DÆu$¿ðéêŠ#’~0Ú]v»Ýz¤þíOIÌœòo$m8`$"×GëW‹·ÝzËïèŸ;¾""׉½+¤´_f0‡Eýì+ëµå4¿`‹çM»sàÝ—“ˆHvm}úAËi":ñÑ~*NG.‡DD4!+‹¤„EEEO-vlÛpÔâ Á°£Pà_¦‚3.©ºÀg²Õµ’‰1¦­)¼¸B,‘,Œ™´ËTR+1fªT©›,Œ9uDe{W‹T®5]ìѦU‘Jca&mÍÀFªZ‰1¦©T©µK]‰êb÷ŵÆ´å Ëš)’£Kf5bv¿‰ðyŠ(Ù¸‹žyC.ò;ŠèÙ'x‰ªC.ºçž{ü¶‰ª=#@Cœ«žžžàÔsµùMA´|Önˆ:::n½õÖ .„ºÑ.11ñèÑ£™™™ƒ7‹˜_¢¡1;>´  Ñ$ܸɧED#c*8µ†h Rll,ŽHpõDK-ZôÃ?„ºŠèÂ3™L¡®"H¢å5ßÂ… §L™²nݺPÂß ç7´†lçÎ;wî´Z­¡.$H¢åÔÎëå—_Öëõn·;Ô…D²îî"­V›””êZ‚$ê‚d4gÏžŸ‘‘á]ÙÝÝ- ÀúÀן;wî‹/¾ÈÊʺâŸ!âà5€¸Ž þƒ$—Ë;;;ƒP ÀèÔÙÙ)—Ëoã?H;vìÈÊÊ:|ø0§ªÂÉádz³³ßÿýÁ›ùR^^ÞÆûÛß~ûí·œjß~ûí¼y󪫫çÌ™3xËØ¡t÷ûßÿ¾§§'//oÿþý'NäQ!Àh×ÙÙ™——÷ꫯ.Z´Èoã!‰ˆ–-[æÉRssszzz`Œvƒ!//ï/ù˲!БÇIDATeˆÒ~¨A"¢+Vœ;wnîܹûöíKIIa£^OOÏܹs—.]ºbÅŠ!nâçGÏ/W\\üå—_~üñlj‰‰Ã¯`´»páB^^^NNκu놾հƒÄ{ì±Ç¾ÿþûúúúøøøa 0ªõõõåççOœ8ñÍ7ßa[²ás»ÝÛ¶m»jc¥¯¿þÚív7Ã>"Àåð!$$$$$$$$þ?) ëk3zIEND®B`‚libspring-webflow-2.0-java-2.0.9.RELEASE.orig/docs/spring-webflow-reference/html/images/next.gif0000644000000000000000000000207311360615630027010 0ustar GIF87a&%÷€€€€€€€€€ÀÀÀÀÜÀ¦Êððûÿ@€€€ÿ@@ðʦÿ€¤  €@€ÿ€@@€ÿûð  ¤€€€ÿÿÿÿÿÿÿÿÿÿÿÿ,&%þH° Áƒ*\ÈP €‡#JœHñáAÿ2jÜȱ£Çøð±¤I!GflØ_Ê‚2²dˆï%Ag.Ägs €Œ:âëé0#LAâ#z@F˜ƒâc #TŸ3ñQÍxõfC|[ÿu{_X²hâ;ëu!€ƒøØbm  >¹uˆoÓ™âó  aÆ‚ø/ÌxŸb„â{\0ãB|”flˆrÆ™øg Šð¿¤ðùE-ßjÖø^£Æ';)¾­øðáÇ>|øðáÇ>|øðáÇ>|øðáÃG>|øðáÇ>|øð!áÇ>|øðáÇ>|øð1mZ±¾}‹¬Y³fÍ:h@;././@LongLink0000000000000000000000000000016000000000000011562 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/docs/spring-webflow-reference/html/images/flow-view-packaging.pnglibspring-webflow-2.0-java-2.0.9.RELEASE.orig/docs/spring-webflow-reference/html/images/flow-view-pa0000644000000000000000000004541311360615630027610 0ustar ‰PNG  IHDR1Ø ;CÁ^iCCPICC Profilexœ•Wy4Ôï÷¿ï1Æ>ö±3–,ÙÆ¾ed'; cÆ2ÖiìK¨ÐG”´Q)ÒB) %[…JQ‰²”5YZ4¿?ôésÎ÷w¾ßïùÞ¿^Ï=÷u_÷yîsÎó\^a‰€¨è8ºëv ¼·/žeØ< ‚$r,ÍÜÅÅþ­­¾à…*‰F‹,}[–y« Ãg¿Æg´üBôßóK÷öñ@T@ t›€@Ð&vÄ8Zä0Iº»+©lè&nlÐ&îl94ÀðES¨Ñ,sJp,«J,9 {¥CàiE2À3 ªÞ>¾øÍ’)k†hÌ›|áÒ5·Ä¥ÿñ)Ü&\ßúoÙ@pÏbC´4á´`c0–åXŽl2?*ŒóL#m‘äxzÂïóB^€ÿ¶ÞÜóocBP(u&'tóÌ)–ë¬lCìŸ8–¸Ø±BÜÒ<ª¼†|æüî‚^8!²0U„&+'/‘$™*•‰Ï’Î’9 {Pîð–ògÊ«•®mmTîRPW[%°kÈhjiyh§ê”ë>Ò[7P2$Ù6j"eJ5»mÁIÜeyÓšo;ݦßNÝþÃ'çÚÜ®‘n<Ä<#½îù`}vVû}õ' ì â&;SŽ? e3§Æ‡×FŒGñG[Æ$Ò®î~‹Ž#Ä$ä'ÞMšMáM5I£í)KïÊÉœØ;½onÿbÖRöjÎÆ_è\΃¼y‚ù‡k1/´9ºã˜çqßþ'ÉEÔâˆS§©g¨%á¥agIe¾ånçì+ÌÎk\PªT¨ÚrQ¦Iâ²ÈÁ«¼5<µœ×˜¯ýº¾^·|cþætýð­þ†'·;›šêš¯Þ¹t÷\ËÉ{‡[¶eµïíHé¤ß~ý0²‹ÔMìÁõL<ºñ8ã‰]¯PïÌÓúgY}®ýRýóÏÛ^¾ Pøþêñ`ÑéµêëooŒxŽJŒNÕ¼¥¿Ó}÷m¼y"uÒpruªa:mÆü=ÓûžÙüNy>¾øT4ç=/sNq½Æör·óÔñVðçÏHŒÀír&ŠˆêŠ©ˆ«K¨IêJ™à­¤MeôeUåT¶¨ÈoU (ª(¶ê*UìT½Õ¨êÉ„\RÍ­gÚ º¼zÚún)†YMtLw›Õ˜Ï•-#¬®Y¯ÛXÙæÙ 9h8¦9õ»ˆíumpG<=zø(ùÒvÞð[óרØJÚ Q‚o‡,‡©QÃÃ/G|Œ’ö‹)¦½¢óǺÇÆ?JdMrH>œò u2íÓžÏé+ß2¿ïýµŸ9‹3›?Gä€Ä_r¹„ƒ†yù¶‡œ{ø ,¤ ?sœv‚~2¦(º˜v*êtÈ™ÀïR—³VeºåªçT+TÎ+]PªT¬’¿(W-{Iî²ì©«â5¢µ"ׄ¯ ÖñÝà¾É]½ÅÕÀu›·×$Ü,|Gì.¾EážZ«N›A»E‡S§ïý¶?Ä?\êêé.é‰zdþXèñü“½§žF=#öIô­ö÷>¯x‘øÒi@f`åUÏ`ÉPÌkó7¼oF‡¯Ž¤ÚŒñŽ ¿­x>®6¾8Ñ8yd*lÚtFhfþýýÙS¢?Z}ùôqîîü¡…]ŸÕ>ÿXìúrtÉYiyé땜U—5ᵑõŠoÔï„ïë?îþÌܰú…ýõŒµÙÔÓ"ú+ógÌ<Ë<ë<Ûû0ÇKÎÇ\-ØZî2ž<ÞD> ¿ƒA[p×/tE8KÄO” Æ,6(^)/i%Å-5Н”Ž’1”ÅȾ’»´%]ÞCAE‘Uñ½R×ÖjåC*qª;Õ,ÔÕâlkšÓZýÚm:×uKõrõ H†FÛ¶á1Æ‹&¦·ÌŽ™'XP‰^–ÖVúÖòÛ…m˜mVm?ؽ¶ïvhp¬r*vÎuIÚêêéæànä¡â)å…óæòAù|õý°sÂïÍ®—þ½÷H-AÍä”óÁ¹!ôЀ0ªz¸hKÄJäTTô½˜ZZÅî“ô¿b“âÂâýœM’Ô“¥SRÑ©ËiïötípuAÉ‘¼ÂŒ£´c”ã'¬OjÉ žb>õõôô™¡’ÞÒ{g¯–•–;—]‘v>æ©Ò«jÇEÛj£K2—áòÈ•»W‹kèµÎ×Ô®c¯/ÔõÞ¸t3¯>æ–[ƒÎmÜíµÆ‘¦–æÒ;éwI-Ä{[Z™['Û:Û«:²:I÷ˆ>X}Ø×UÙ×Sò¨ýñÄÆSÑg}¾ýiÏK^t¿œ%>è<”÷úÉ0ÿHàhÓ[þwã_'÷Ncg.κ|äýôj¾öóÉ/…Ë¥+uk3ßñ?¥3›oF 8À{Àµ `@‘W àÂànHG W²±(øûý°/H‚*˜‚;DBœ‡û0°#šˆòÒˆ|@I Ïü ス̂f!±´±J³îgesd«ceÏbŸãðâèàÔä,åbáŠçšÀ:c[¸•¹‹yXxbyÆy]x[ø”ùŠù™ùãù§ÜÚ ‚å8>\6î›P¤Ð;aág"ÛEÚD·‰6ˆéŠ5‹›ˆwHØHôIzKNKÑ¥ø|iIé›2¶2㲩rru[\¶,É)˜(L*æ+(Íl=¡l©¼¬R¥ê¯&¬Ö§žK°ÒÍ - m&íl]=I}”þ‚Á a‡ÑÍm•ÆÇM²MÍÂÍÉ»ˆn–6VÖ¦ÛÍlÌlÍì¶Û»8ø:;Ñœ÷»í¨síq÷@<¼½}*|ý¸wú“Žv–É ÿà¢Þ0 u{xnDoO´gL9í3Ý<6/îm‚vbnÒHŠjê´ÙtËŒÒÌû<÷7eKå¤x“kzðV¾ßañ‚ÂSÇ‚NÈžüX\{:½Äñ,Ùø¹†ó…•”‹6—Ô®\ýQ»pýý©ú±†ÙÆ•;œ-²­Ní1Ê»š{Æž°<%ôy??ò²{óš8œ7:òN~"mjàýÖ{>M.Ø-^ZæX‰]›únýó.ƒ±ù“v9І½p:ᇘ QH2€âBÙ rP™Ø˜œ™Š˜ÆÑÊèt³0ss3‹¡bºX”XrY>±º°Ö³I²`ûÂîËÞÍ¡ÃQÁÉǹŸs•+”ë ÖÛέÃ}™G–ç4/ïÞ_| |KüTþq¯á¬qíBÆBÂz·E´DjE5D¯‰iˆ5Š›ˆwJØK HH.H¥áÙðÅÒ[¥ÛdñcÞEð÷ 8XOš Pl‚ÓCêBg¨²á¤ˆ²È±hñ˜Zåî…X͸äøû‰Ø$Ïä’”é4Ý=9éÏ3¥öFîkÊâÊ&åÔøžëxðF¾í¡‚êBÿc"ÇŸœÜ_¬wjåLCit™bùlÅõ ‰UfÕü—Þ_¹[sâZB]ÐMû[º·5šÔîh··z·S:Íht‰öp>Úx²þt¡ïÃó¯/r¼Öõz›:^1ùb=«ý1b®~aí‹ñòÞ•çëJßé?_þé?<€3„ATBÌ#8„ˆÄ"UÈJå*B1É3Å1=D‹£ÑÌúÌåvL*fž%Œe‚5uŒmÛ{û4•c‘3‘“Á•‹Åa+¸Õ¹[yvðLóîáà«åwäŸ(ÔÁå mš¾ $*': vXÜF‘h“L—²À£ñ]ÒGdvÊ*Ê®Èun9)¡@TÄ)~Qz²õ¢ò^?U5u&õiBFf‘Ö^í'ÝmzúzƆfF¶Û¼ŒI&¦ fûÍOX\$Þ´ì°°þdƒ¶¶Ó±wwˆu<êTï<¼ãªíà^àÑã…x›ûdøvù îrðOh \R"S(UÁ³¡òa‘Ôæt¤{Ô¹è¯4ûÝUtFœO|S¢HRbòóTí´²tLFXfß>íýeÙØœ„ùÛ¶ç{Z+(,Ô::z<ã¤LуSgÄJÚÏ’Ë9Î5¯¨ê®Î¼¬{e®¦ò¥NéÆB}MCr£}³ä¥–§­·Û“;fï;=¸ÛEè¾üHòñ±^ÌÓägËý>ÏŸ¾Ô(„!Ÿ×ׇÑ#£gÇÆÞÉûMš¼354½ò^`VùƒÙG§O®sÎóŽ vŸM5¿à—Ø—>/÷­]É_¥®Y¬ó¬}»ú=å‡íO¡Ÿ£¥¿: €Íy ؉1‘1t¼Ñò¿ wÿ«EEÆÿ­ÁœÔ8[w€¾ºµ+XÀTt“3ð òÁ±Vn¿±~ÕÚv“‹ØÑâ\Ü@ñM s÷,B'Ù¹üƙёN€@S‚-­~s/Ðã]=@©ˆ±wNd(8Úão­©Ø·¿ãW)$K{@aRˆN›ñ(p"XÈ‘t B$ˆ<¼<Tˆ…8 A<$" »!¨@`ˆý͇H†x ƒ5€¡ ª¿þ¿Ž'L¨ÿ!‚ ˆ  î£GÝI(ŽI6ô #\!| üüïhû?ŠÁý'Ó¦zÐßk´)[aÿù‰üϦqÍÂÜaÚròHnØU·»·^‚ѵï {&>ˆsû6AÓ (θAƨ×[@ „ü±Çb2êÍ…Ô´•03™7-Ç®Ÿü~EÜßÀÜg6›Íæ¾>sŸY÷•ƱÍ¿½ý3§éBN~yvÙÞhÞô¯›Ñµ–ï9Ôa0˲ߔGóÇÂÔ½o‡²Í à&”íI·ÇÔ},_Ù”W¶>Œæò;¹¥¶%⌂7â%·aÜ„™†ó<ÙÞÞ~êÔ©o¾ùƵé’%Kžz꩘˜×E4,à>€»ÜáàO2ì >ùcŽ›0úƒ0H8ñ‘³Áñ@àw{&I‹…óìóP«?3¶ ©¶XÙžQ¶9žZ¯ë™Mo+ X,€»Vfåm’†ñ`lTl¯:úeüÙm:aFᜓ111†µ©¿¿?kBÀ-À|uŒÍ|Û¥w³„>Uº£ ‘òìda"¶=•¥¢_—¬ áéÏWïxï¿ ›%Óº¯øëG_MĩҊ&3º&ûµuÑÖd¼øIuEM³ˆMÍýUJ‡éQ—jzÍB“²^[/åЗß):ñŒ¤¾Ê¡kÐaTPt|}ýuÿ˜A¦çl“AûR4— X)À ‰’ ®ûŠ1ð»^XÜQ½÷<@æºÊ–𒔞©ûØveCj^YJ™# 6æ³F’’’ìo“’’ÆX‹už¬÷ÐÚ—×Ãlyy€îÂIENÎN埜œU¶W‘ž-tºÔÀ }JbnmÕ>´2\¸T*6w´ö ’ ’Ä<h¿îã†E„…/²v¢`hù¤›Œ_tKï ¸v± ˆ]ͽyÕ ÀÂÞÌ]p†aèþ~`ÀÜÏ0Œ» /ì±HôÖ5u0v~®…Dº”’¸YQTT¤P(EOr!ËS¤„ðÀh(™ñè}N§Ó›<ù¸³·×'W¬X¡Ñh®^½ºxñâ+V¸kfÅpÃRðøÚ—Ÿ±Î–ÁøÉ±ÓË3·m q˜È‹z4²N{cE$ê1 êülàÉ ³®Wk* !·,})ôœ.Ï­1ˆË( 9ÌÃÉ‚õΜ®$RÂ5”+jËŠ–»6ÍÒ×q¦®º|UTìl…$WYA±ƒ6mÛ¸£T™S Y»ÂFí` oÞÐQµ#¿ IeŠõdº$Œu}²««ëÀ›6mZ¶lÙ¸+ªÜ¼Ü5˜ùÚ¿Úý“‘c×3Hvsì:yÚD3Šg'†áp8´ÉÈpø<ʱ x< ŒÉd¡xè*È;ø²R±Œ1Ñž­ÝÉœü¨Lz½™ËNu=„¹ÇX÷ñ‡‡‡{²¢Ì}ÿ%:tkrÚŠç0¹p8ÏÞ†ÃãqÚBƒ¶0àð»²'=*žPDæ<Âd˜žûxÜ2t Ÿ&Ÿ8d»Y%ùÅH<Þ|7ç1´ÉäÇãq<^æ6ç$@˜ ìç] ‚ä$à[œ$| ’“‚o1žé‚ø s™Û›“ííínË»Üp‡}Ó­cÒéÍB!¹ÆBðÛ{-D¥Rùûû§¥¥QSâÈôL¿F {4EÅjˆå…² rSa|nïM>ÂlÆß'ûúúΜ9ÓÞÞž””´bÅ ëíoìLÞWÝ…Æ?–×õ€$·¬ ‚gÒ¨ßVk´†'.×ÈÓ® /Ö AîÓa"žy^РÔ\þùº1î´'xóÏ7Ž9¢ÑhRSSƒƒƒ¹\®k›Éû t-;ËëB×d¿‘´Ìl4r)@÷¥Z£•ïRÉøýF†Ø"ÎL§F€± ws­0m`2O¾Hš0wðöy׫W¯8p <<<33Óué¤}ÚöV 4}]4à‰DÀ ÔŠ·®=ÿüY{d²x¢Ф OñöõÉÅ‹oÚ´éÅ_d]:ì+0׿[ióX_þ‚¨•‚( Nê-õ±2:¨×U%™É’ÓjeÞ;- kÄÀõï”KÐQ#`î¾b¼>¬(ýÃÁ¯‹u•-ßš8~<àÊM‹mhàÏ%Jïý–,\¸pÜï“6_ÁÁã6_ÇHbGº¦±3+e­ë…0( _{É ˆK‘þð•²éj?`tŽŒ*èbÆb7P¶AºyaE¢©®©ûõ”0«Fàù¥üˆÍŠDÛÔnÍëÏV¤„PÀŠX4œüärDbHwÓ½ˆ{*„ToÆÇ9èáy×Éû D²ÂÌWªòêrËK¯·)K¬ ²žæ´KÄ‘é×@ô/…EÅ¥95ò­ä¤+Á|ëú$¦è+`hÍP#5ŒÉDÛn"“ÂscÒÌ\¹g€à)·wžtçMƒ)ù F;Àâ ˜‹À4žPHY `†Ô4ûª¯€@˜vfHNsR«E ø$' ß‚ä$à[œ$| _¼Û‹xsâ˜> ³ïÍ“ .ܰaC^^Þ²eËX\a÷ ¼{Èæ°¿¦‰kÛ€ØÕñÑÜ›WÍ,Jî4Ži:Ï7¨4øÃj-€öë>nXDXXð"ŠƨíþÎ/.Ež$@ÇÕ~§õ2 CÛuÌÄ‚.øòËVÍHà]{07˜-ž!ܨ_ÞáÜ÷nKN4¨wæäp%‘®¡\Q[¦X_˜eÙ÷žZEÅnL­91` ’f]+®(ÖT@BnYwZ¬Á°_¦Æ*ÕÅ­jËä«$À$Ì |ëú$¦èð†6Ñàñ(0&“…âQ“‰æñ(ª Êϯ,S¬ã´d¤Óä(`…6éûÍ~\ßñË*k0Û™]žO°»8<`´åùŠ‹¶e‚ÛVñ\[¿ŸG+OH¹¬œ5H˜íÌšæÛé`h“ÁØÏX ‘ ‰pÇ™!9I ÌH­à[œ$| ’“‚oAr’@ð-ˆg€@ð-ˆgàŽ05cÒéÍBò¼ƒÙ‰oÝÇ3Ï@§"O¥$¼©H·ÞøÆè4ÛvªùI¹Ek ÈSi‡ ž\O®u¾ ˆ›ðæžt>úòî¼Ò+qY{2¥nGIwå©bòÊ6£ÈSaM^Á:ëÓ,Õ{ ‹¤œÎQ[LÈU¤GŒôf˜ª·æ7;ÜM˜ûfúðç¦îcùÊ{Ñ&Ý£)*V@,/,‘{îf³Å3Ð Í­=ƒ8ºþz ðl‹âä¿xP@[àGq±v…~~ý_z¶°èÁX@Y3@÷ʼn‹Z;1V]? X¬O–„¶Ay2V™8ú~ÔÑ[µ×lêé¼mR üà‡ïÏ–V6/ ^›©ómeF6§{¿X}wjž"%¬ó˜BUüË÷ÊIiå,Ãçx¬ž²²2F3R!ÁŠÕ3àþåÖ30ÌG§­÷úhO6÷ †Óšƒî¥x|>ŸÏ£XÿÏÞP |ŸÏ·CÿúA›8N&†öäg=žì ¨Q¾¯s‰;lqÔ!æ°@–G$ ¹÷ÒGÍ‚„ÜDÛìgª-VeeXï-¤/Ö Áš§ÃD<ó¼ÍeÚ“qf³Æ3@¼fÍÝ §zÒ£Nuäv|ÐÐôïå}Küûo‰Óþe½» úrK³Y÷²ÜŒsåž6Ƨ[°HC’½ígï—Vþ±ú±¢ô¥ö8ü­¾æG?åý0À"5^ä•cô­k´‘…¶ÝÎÚ·šè$¥<¡ikMü0–àn[u(m`2ÓN•0„™Ž·Ï»Z=ááá™™™®Kmž@ý»•k_ͶþLg⟯|uø¨õmÔÊÈ#ô9÷BW$JTŸvëî9¡‰Ü°+èÚyûRIdă!üÀ¸ßãö 'Ò&ó¡µYs9-%„¢µ-{öŸ±ýÚÓ´ðÉÿ¶ù ÇNF¿à¸­Ÿí¬Rµ<¹‹G9¤‡?àg}îº#Ã'ña¦êÕ…é¶Œ¥»ÿPÙ*Ë~ÓúÍÛØY«jêMÈz¤¿§ëŠ7¿¹hZ 8?"ž0ë˜MžÚOñ³Xn¥Rˆó^¡zx+}B6æ|bºPßpO+vœEq'ÚS6ÇQâ2~??°Xüï¾qìg¡!Šß´æL~UéŸÄÀ’á->º*-Åu‹¬V>€Ö÷•½‚5o &¯×+‹;ª÷žhÀ\WÙ^ò´¸rÓpÊü¹$CgÞû]¸pá¸Þ:›gààq›g`‚˜-ˆYõ$Úšù|`¿„B}}½´im±Àâ³=]YÛr¬×~öÐiöíT×wšâ"x°ѧQX¾ÁñÖ½’ýùöò^ˆí者í¨rX •èÏjE\–Ì^š’¸Y‘hÛ^íÖ¼þlEJ¬ˆEÃÉO.G$†t7}Ћ¸§BH1×lcöx€–˜•±è®¶¨@­•ŠVkHT¦Xïò‹¬?U§”ÿÊþRôpr¨º´á¬6"Q⺠ð÷ýÑñ£_ÉŒÛYùÛ¶ìÓµn3„³žCe,€õܘè_ 3ŠŠKsjä…[ÉI×Ù‡o]Ÿ„<¾ÀŒIo0säžÙÉÜó øSpxB!9dµÌšæÛé |Š’“œÔj¾ÉIÁ· 9I ø$' ßÂïÌ"žÂ\Æçrrnx`h”óóX‚ŒQ¯·€ùcß)`2êÍ…¤Zd†â[×B&ïº[‘§ Í-KàѾ“«¸‘º­ % O*òþþÔÓ«ÿ}” mÄN Ľ¼ùå¡K.LM8ÀèZË÷ê0˜eÙoʇo=g ÂÔ½o‡²Íz»!7¡lOºýŽQæò;¹¥¶k¸g¼/!·̹bÅ FsõêÕÅ‹¯X±bìÆSð ?9vzyæ¶­q!c\—†>(@kÔƒK—D  Y¶ÒVBíì"(Z>áJR³W³žÒ¼p0uÕ嫚 bg+$¹Ê‚Š5´iÛÆ¥Êœ:HÈÚ5zÒu°Ð7oè¨Ú‘_eÛ £Á×ñÆõÉ®®®lÚ´iÙ²eã6žžIÀ˜ôz3—/ds fÞ¸'888<<ܫΉ9ᘞPDæ¼9oÝÇãâ ÌfHNsR«E ø$' ß‚ä$à[œ$| Ÿ«ižFˆ¯€0™9ÙÞÞ>QŸú´ù Ý©ãËžy*È›ðT>À¤õ:#(¾O$ø"3ãZÈDŸ;2¾Ó…œüòì²½Ñ^¹bï¹|€5Hk5 …Úz‹“8!«0]Êq$ø,3cž´ú öïßïáó¹¦à+pã'€`üfÓ„Çòö`Gƒº7.ko¦ÔtùX~éÑ®4iÅ$ø,3#'­ôõõ9s¦½½}ÜçXÚ|îqï+€îBãËëz@’[VaßÓ£..Õôš„&e½¶^ÊI£~[­Ñ°qX"è9_[ZÑdB×d¿¶.š­×TPt|}ýuÿ¤‚ßüC)Õ§–ÜC¹ |–™”“VnܸqäÈFc}Þ3—Ëum3y_®egy]èšì7’–™F.e+nøE¥åþ\BwVoWíZ#0~©Öhå»T2~¿‘¡@çi)®hÊ(TÅ .)ò•Çc•ë¸.mœ_>à.÷Rö‘üò9M2víº|–™z-äêÕ«8tèëR›¯ÀÜs_ý”k_Ͷ¾6”ýmÃkqáAßY_žtê¨moBÓ×Eó(J(zÀ#G³Ÿ«®û´€…øA¡€ZñVí×(kS—ˆ¶½@kMù¾uZ@×G³ôš6˜ÖÃïIJŒ2.PõÇjã.Hð]fjN.^¼xÓ¦M/¾ø"ëÒa_¹þÝJ›¯ÀúöD­DIpâPÇh©ŠõàÁØY›»£ô[~ÄSOÄp­åÌTÈ몒ÌdÉiµ2ï†5į^»*15/oۺж6Îø®‡0ãM‡Z YoÈã奻äÜÞæ¿tÙƒfæåäÂ… 7lØ——·lÙ2ÖWØ}ï²ù ì¯ñÄ<tÔ4vÒ`Œº£CÆ\»ØÄ®ŽæÞ¼j`cÔvç—"ÏN ãj?X"’˜Çí×}ܰˆ°°àE‡¥Í(†¡ížfbA—|ùek¶ÞE± >ÌLú>èáy×Éû D²ÂÌWªòêrËV €¥' Ô;sr¸’H ×P®¨ýý¯ý•¥ Ö~ YOóúz›S"YaÖµâŠbM%$ä–¥q]Ú8à±|€5öËÔX¥º¸U b™|•„Xƒßev^ŸÄ} m¢Šçòm¡M4x< ŒÉd¡x`L&šC9ª[]#¶:ÙÚL´Ißoöã øŽÃg |’™1Oºó¦Á”|ŠÇz‡€=αç+‡çÜÔ5âºB¶6ÓÅR.+g |’™1ONÄW@ðyæXN>ÏÌ;ïJ ÌnHN¾ÉIÁ· 9I ø3ãZÈä žÂLdÖæä$=Œ®åxgØ3ñSµ LÈNà©@€1êõP!ß6õf „B‡{s“Ñ`¶ø§ÀÌdv^ ™¼g`º¬ž­ÇsLÝûv(Û¬w rÊö¤ó˜Ëïä–Ú®´BœQðF¼„˜j ò› ¶ ¼°@Ds†áëód{{û©S§¬ž'–,YâîþžÉ{8~ü<šÜ.å–Ææ)׳>[Ò3;ÇSm±²-<£ls<´^×OÀ]+³ò6IÃx06*¶Wý2~‹  žÚZ²F$¤ ¯ÞºãÏŸ~+[æÁÎ|_Ïɘ˜FúÈßßßí wSð ø®½ñpe]/ Ë(ÇKè.ÛSÞ` ˆÌÚš%áä¿•öMʼӡ©%¯§œev¦Á*Àôœm2r_ЧŒz£Ÿ@(G$•ZŸÄÌ].Àß®™8¶¥ðÀÿ{Ý Á—ñõœ––¶ÿþ¾¾QK LKKs×eòž€CMåùÌÂ’ÀŽ÷•U§Rãå|fgyƒ,³P'<_­¨ØYQ¸wKÂË™õ;+£åÛ^xð^ž®%ßI& ^«yÀ™ñôM#`Påçp¹0›š”µe½td]:My“!Vþ„5Ýi­¦¢úì•‹ ܤ²‰»ˆà³Ì€œ ŠŠŠ:sæŒc0**jŒ›gPÿnåÚW³­?SÁ™øç+_>j[ÉÊÈ#ô9õ5ò]q"Ð7Åü€žö³€,5.€4íA³ªMK§ˆïâ?¾‡Ç£´gm2NÐZ`q {N[®=ÿüÙ”#²KÒ£…¦Ëù¥ïu$J¥|0vŸÜ®¬‰LÍÛ,ÙöQü@ÚÑ÷ÚóÕUM從2•¼Ï ÈIÉÉÉííí7nܰ¾]¸parròí‡=¨÷Í30ŒÕ3`«Õ:Ô±¥VKðãÀúd€eà°`Ô'eÇG§Ûd˪Õ~÷9”wR!¯«JZ›©•Mç2T[â]¿«ú·Ø£ƒbi¤/$J‚ºî+F)Ÿoê>¶]ÙšW–âxHLñ% ƒÿ\IDAT!|IHX ±£´®Õ˜âT¢IðqfÆ=IIIö·IIIc—5OÚ3`Å2úí½±ÍwtÿµÁ€Ð¨` Ô]wý7ûÁ&°3-V^Øc‘è­kê`ìü\ ‰t)Œö€²‘ÞgÑét:½Éºëº=ú¯.ôBÀ›t ̘²+Vh4š«W¯.^¼xÅŠc7ž¼gõ œ Ämß–ª¶7€`c^„àÞU2qEåÎÖú5eEëœdéKm뱸šðX ´iÛÆ¥Êœ:ëzv…Q€éæ U;ò«@T¦XÏ£¿ýc±rxêÍÚ•DŠ&g3éúdWW×6mÚ´lÙ²qOÉ3À ›|€¦iø _Ùw– Œôœ«cÒëÍ\¾7öG†6ú-ðs¼µ€0ƒ˜1ó$€àààðððàà`OOÉ3À ›|€¢¨±XLU€ÃŠÏÌ8ïJ ÌHN¾ÉIÁ· 9I ø3éZÈ‚ø Þ„ää8Ü_ÁtéœWK„3r-d,Àµ;}ak^ùKe{¥“Z!Ì æÊ<黾÷ÝGE¨ÐÜÜm‹&ûkO„3ˆ¹’“wÄWpñ“ꊚf3›šû«”‹¯€‚›à0Æc»‹>¿ç¥ÂŸž8xlUQ.ßrù¢ú˜ ÷<Ú„ÐÓZ[ZÙdW,¦è…O¾žâ8¡¡Á b®ä$¼î+ `h8}+wW ·»¡T­jŽR&r¿põ±I ‚€ârè–ÝÛ¾O(y]Ê¡;ÿaøÎÌ0o訪¼áhBеW6É2 _|(à³C õ9Ö'1¡ÁÌ`夗}4¸Ùò ­ŽUkznÒ=],¾°ƒÄ ÐûÁž­.nמt¡ãz9 ]LßµŸ±®„<¼òQµ†-û<† î,sëúdrròÂ… ío=ö˜ëß­´ù ¬¯a_AÔJA”'u8M’jøžeÀö?_»Ä¸B¡æ®N- gœMÜ-„ýï«Ù¹pÚŽ?àúWØ%è(40w_10uÛ®¬IÍ+Û’âð¥‘âKB¤ñé¿^#¾X×Ê:5&ÁÜÊIoú (Z>éfcçÀÒ{X}쀵êWodËP¥(Ðô0N+w2!%÷šÇ4ç TüGC„3‡9÷IzÍW çtyn@\FLÈØ|¬ (ÀLs¢åEò"uñ[ ÷œý{‹ A’R˜eÙ÷žZEÅnL­91à”´Dh0ƒ˜‹×'½ã+`†ÃáÐ&#Ãá2°ù ؃Ád¢y< À…ê‚òó+Ëë&Ÿ$DhpG™só$¼å+àp8(ž‹5ŽUGàÖQàŒ¶<_qÑöF°qÛª)ÍZDhpG™‹óä4à{¾†6ŒýŒbÑäg[‚@r’@ð-æÖyWÁ÷!9I øsñÏ¢ùø¿²Æžù^ Á—!9é=˜¡ùO&mu v7æ6ÿW’–;äØÕ{0 ˧½ `‘Øò»)”0!9é=,ƒœ¡!X_ƒCCCC‚€Eþ‹D–?ê\tŒ®åX‹Ë­u3ÅîS‡Ñ:vŠ} M»ÆYƒlz^oth˘Œz½ÞèzsðŒƒ»z†Ã xä¹×V=óÖÿý·ö|öïŸøö<àRÃ^–>ôÕª†ªìUñA“» ÀµûÔ|“Àá†ÃÙ«žr¿çÒƒîZ…²Iký™+ËÞ#ØL³Kz@rÒ{ Xü ½ô\Â{63CCŸm鹄ÁÁ! Û•~óLÃ& =ŒˆÜ¸ë1Úâ`-Yc5!Ì*éÉIïqkà ˜—#O{ïÃæw~ GžÆ bÏI>ã+П¯ÞQq1s×q"Ž©»q‡ò﹪-!Öõ<ûÓãê¸k²sùŸ¿[Õj€XVP g­töPzÀpï Eö» avIÈ÷IïqËÂa‡˜Á!fÖ©ò¥çì‘[öœ´ú ²v•l“ËÚêTÍZ:ÍÎò†¨Ì½{•YÒï+vVôìAÀÁWðØ«r)f›¯€±ú ί-,ÉÛ©©:e]KqeÓC™…*UQòý0\U)”n”Çj+wþé²¾»\YžùBgx=üãå’’Ì8ª¡¼ôL`zII®¤WsªkŒšÊñ¥üü)³F•“³uß±ó¶ ±a¶¢Ûóswמ·~¤µšwvï.ÈÙÞŒ¤ßÌpéÉIï1Àø gà5! ~*ì{¥gß}=ûî{¨ç·8›àÚËæ+ Cd«cž›tO»]M@IÓ^ £MËl¾‚ª+q»n|AÂà`±µ®zÄWÀá?¼òQ—5ŽlsI‚ ­t‡òû¸ÌÍq¢áõp3‹¶D…QE ¿Y/ —.çNÃAXXj¡J¥Ü•÷\OCÅÛ—íñ„ì’={ö–mK½Øô^‡°IRÓ3æ¦r‡–3’“Þc€ñcÁ âOUu2ÓŸ…‹¯€­ŸOù ˜[4Pw9Žkíã·ÀÞl\ûˆG҇áDañ¿LhO}i²EYL³Iz@rÒ{ 0fphpï}ؼêñfpž'½î¼¯€Ñ<¬>yA0šwvjD ·mìmVU¶ê&ùAx&=@›LÀô|ö©u?Ï avIfôàg ñžwm<¸{Þ< zø7ñû ,ߟ>¥¡ñpÌ#êŽÐmÊÄ WT*ÂZ*㳬€?pËu+& =05ìÈo²?‹eÛ6DØL³Kz@jµ¼Ç¿–×¼°q­õgë¹D46û ¦mÒ÷›áÇòGÂÕ„0‹¤džôƒƒóUæÍÃ0(ÈY;n¯ì+˜:OH± ÁÕ„0‹¤dž¼£_Á’“‚oAλ¾ÉIÁ· çx¼GýÛñ¬ñµ¿iñòH¾ ÉI¯’”óW§HwcnýÛñ$- vȱ«÷° ͳ×4Û_ …,}ÀÝJ˜ƒœôfþàÐÓËêøéÒ¨šÝOßézÀ°2†Í`:·â¡ÁÕ“Q¯×ëGßpìVŒ@Ž]½ÇÀà| ƒ…o•˜ošnêý׋ª.ŠÙb]záëÕ^Ý©ÈSY«÷’¸—7¿!ôøBä´ˆ `Ãù q’‰ßž`ß4Xl.˜Ô9ùÙofF»Ü}1ž‹XÌåwrK‡k ÄoÄKxSŒ@rÒ{ Î ÛvðfÐa)ãÑ-éì0—‹rKcó”ëÃ<º—…â2 Ò_ݧ¨<øÑcŠôO74M∓üâAþú7'÷—W*.`WiœÈåOÃØûeß´…ÅfàÚ:1/÷õhCwx,F`u ܵ2+o“4Œc£b{ÕÑ/ã·ÈÆ#œôÌ|†j:Ûñ_Æ®|£ç{ã[¿IýUñá?¾`]ÊÚ«ç|miE“]“ýÚºhíêŸü·Ò^ I™w:4µäõK—#÷ÿLRWÓ,Ë}S¾4x÷½B‰8ø€×Å4ðãEÄ‹–ôå(Žüµ+.=bôÎ.kvܯ×b—jzÍB“²^[/åÐ×l›•I£~[­ÑHÊ+[æ8oÒu‡H}c]œÛЗß):ñŒ¤¾j”ÌÁއbvG$•Z= üÐåüíš à)F 9é=n1ó˜Á¡U+F&%fphßÿLg‡¬KYúèZŠ+š2 Uñ‚KŠ|åñXåºEV?ÀÌÂ’ÀŽ÷•U§Rãå /gÖ﬌–o{áÁ{yº–|–.;êïÊ-,Y"äW(àoõûn´¶"®`c„ÕQ Ë,”Ç ÏW+*vVîÝÄÄ %¯K9t§M\–èZŠ+›d™…/>ðÙ!…úœca£½PL’˜ P}zÁø´ÎigŸqÜ/£Òr. ¡;«·«Žv­‘FØ öÒ}©Öhå»T2~¿‘qžZ¯_é½e±@÷ŸÎmó÷†‹5ß“»«„ÛÝPªV5G)%NÝÇ#Ø\.Ìf„&emY/Y‹NSÞdˆ•?aý;Ak5Õg¯\¼hà&•#s<Þã3ß2‘ò÷ ·ƒľƒ">DÆWz+~Ò[ñ“'tÞÕ3 moÐZS¾ï@ÐõѬ~ÿ.>ðã{x<Ê]—Ì¢ÍA#…|qpph$páì9í8Àç]s¹ã~#ŠY‚ÏŽU×}Ú ÀÂzF‡ ¨oÕ~qrw·®k‹Ìa¼L·¸:»OæìT/MÍÛ,³¹…Æ#yÒ{ ÎÄ•ÜßÀ 2‘‚aÏ€­VëPGòãNh@¿zm Å²jµ_ íë³ èñºpýFµˆ•>‘–¸Ô¿ ´ò£ðÔ ‹ ´Ú®N--ržLÆ,phl_wOK³A¼&œ‹¯Gî°_ÆÎÚíª&YFöSá‹Ïµ+TÈ몒֦†CjeÓ¹ Õ–x–¼doã,spŸÅ&Ftt Ôu_1Jù|S÷±íʆԼ²ÇciŠ/ áKBÂ¥u­Æ”û8™'½Ç3Ÿúò;uÓßßýÓ¹ÒíÿvÜ.’˜Çí×}ܰˆ°°àEÔ𯘓Ô]wý7ûÇè2ª9Ð××K{¾¾dü½-.( ÿæuš6uÝÕŠâ6H^XÆ2r‡ýºv± ˆ]ͽyÕÌòcÔvç—"ÏN ãj?% îÛ°ÉF¯×#1»ÑP6 2ãÑû,:N§·¹¾Æ#yÒ{X˜yƒCˆÿr}D²Â¬kÅÅšJHÈ-K_ÊV×Ϲw•L\Q¹³µ~MYѺqºÐZ©hÀ•¤f¯‰¼*.p ŽL*([/á<—ٯݜ,hPïÌÉáJ"%\C¹¢¶¬h¹Ó¦-×Û”¥ ÖHBÖÓ|ŒH£¬ê–6Xd#x,F`s ˜nÞÐQµ#¿ IeŠõ¼±ÅCoñ¿¶¥þ½çÇ×Ð ýŸ¥¢[ß5¤¹¨Jô—\{O‹¹¿¿ßlgýf³y¤g]\·â܃58úûÍÖÚoÏÞþç~φá8ò‘ý²˜mk³Œ±o×·X†††®ÈÎ~¯ÝÀ񮆱={{‡Ùõt¿Ü¿ÿzïõñ×c1®_¿~ÝàºdžôÌàüÊÝ/CCC˜7o0TòVµG==³P”ÃD5 ဈ \¶8²_öEœ1ì&žóˆ5Û¶7›„æ…òÙÚXhІ¥çdpu °7s+F 5Íwßó L;¾ .`Lú^-¹m2ùMAb4½œ$| rÞ•@ð-HN¾9Çã=þ\*e?»í¼—GBðeHNz•Õ¯}îénÌýs©”¤%Á9võ–ÁyÖG¦ ÿ€‹B—?în %ÌAÈ<é=,ƒó‡ð§šÖ>cÿ÷× £éÿü.cAÀ"K—?öŠG~^à<‹n; Mƒr¾‘%Èõz (Çg˜Œz³BÇ댌Éh0[ü„üI[ÙINzÁy ƒMë±>˜C`a÷ ´]p¾ýœà“ðº=ÀsHNz«gàßk?°˜oYÌfú‡ný@ߢÍ»ûü”<s GÿÀ¤Dðº=ÀsHNzfà ɟ}xàt£38Äî°ZžýéquƒÜ5Ù¹üÏß­j5@,+(K( K¡½K„éQ;ì»±x°rÇqº”ê;ù "ø,â75þlvûª~ÔààØn³ p&2`¯Û<‡ä¤÷°Öjª?ç:O*ÞØÀ>O2æï U ·¤äæÑÒÊòRIRVI wßÕ©®Tùâ/-\—B{–Ò{?§‚ýeF6€«âÀu壯éRªïä7`°vä~ÆfW°¯JHò\²Ù&4àáq{Íà9$'½Ç­Áy–A¤?ó=²8øç+_>Ú[ñj¼8›à|¿+4¸™E["ø0=…Ö¿Y/å^ÎE¿ßˆ… ´XÜGc™­ˆþÚóϯ‘…#eõ#Ž(fÉÍ3Ǫ¿ÕÙ öGlÀÃ+UkÏV>zœÙò ­ŽUkznÒû øà .€4íA³ªMK‰Y:j»\6=zUpô W=OlÀ$!»$=ZhºÜ˜_ú^G¢TÊc÷ÉíÊšHg{€è{íùꪦòÆ_O ™Ä¶HNz[ÌüÁAÔüedž,Þòôxž”Màg/Ò·ÿ!wQ P|ç"z—²ú~—‚}76V>zœl¥ú#~÷â׎ã©FyìLtÀ€ížC®OzÁyÌàÐsIÒŸ¯‰{é¹Ç³2¦¸B×Â|×"z׈kÁ>« À“•;VñSª¸¸v_•àà˜Ð§1 ïÚ<‡Ì“ÞÃb™78„ºÎ›é[ýýôþö¼‘2n/«€í9‹… ë\DO»”Õ<ìR°¯XÏbð`å#UüË×R}zÔà9nÄ,1ž]ÁÑ«Pj[äÉ€ð¶=Às¦\VMð”¯Å[õ‡ÿë©g`lœ ó] í]".ûnmã¯|hhh"¥úNâ‚1:ާJåU˜è€'Ê”ížCæIï188ïÀ›)Žžÿ­lš†õ:æ»–Ë»Dœ öǰŒ¿r+—ê;¯Ð}Çñ£¼ ð™²=ÀsHMóÅg<S·LºTß§jü}’“‚oAλ¾ÉIÁ· çx¼‡»‡1“§!9éU’rþêénÌ­;ž¤%Á9võ–¡yV·€ãkAÀ¢¥¸›B s’“ÞÃÂÌrz-Xä°è§K£jv?}§8)]˱—gùÜ9šv kГQ¯×ë'ÿ˜»i‚»zÁù ß*1ß4ÝÔû¯U´{.|½zz63‰º{ºS‘§Ò’¸—7¿!ôøz!}µª¡*{U|}s“-ü˜Ô9ùÙofFOøæí x¬[ê>–¯l®)eõ°µ¼ýœôVÏ€aÛþ@ À :,.ÏÀ¤êîi .³ mñÕ}ŠÊƒ=¦H¿ŽŸ‚©ÀÞ91/÷9ß¿î {¦Î·• ,ÖâVokËÛ9võÌ|†j<óա㟗½÷×וG™Á¡Ì]UÌàÐXž‚Ý'«srrÔF=çk·æääääì>v¾¶hkõ½µmg­¢¨¶ôµ]³ÞÛ=ªqOeÁÖc—Môç«s¶îÓÒ˜Ö}Eê6# Þ}¯P [”œœœœœœ‚wÎëlt¬ÁaŒÇvo-RŸgì /¿SðNKkcQNNNNŽºÅ:£§Õ:ª­EE»M£w¸£îðWhÀ¤Q+¬›ªí6Ù?Š“-ÕÖ=Úרét4JEÇ˾;~0Õ«Œ²2nY‘Tjù¡Ë¸rÍä®åí‡ä¤÷¸ÅÌc‡V­ˆØ˜ôЫ/>¥È}–Ú÷?Ó­9yË­gàb]ýå–lXÊ·–Ò?W¨Ú[–w«¡ü¸6`y$Õü¾†À\þ°IûÀÀìXwïÐXz·ùã3æ|c3Ìmmß1`.ië æSÀßêV*òš—·1ÂêˆÊ,Ü»W™%ý¾bgEÀŠË¡[vooøþ±WåRŽ}VIBåùµ…%y#5U§Œ£k)®lz(³P¥*J¾†+F§=¾~¥·Ïb±ëö*ßL¼²5ßÊÚU²M.k«S5k]¿úï ÐYûVT$O¤á|¨hõÑØòÏóm¡…£OŒ87â*Ö#7¼ºúòŽòúš¶ŽÐg )ôÑ@¬ô‰Ä°Ä¥þ¥•…§²8Ü‹¸B¡H«íêÔÒ"‰Ó÷HÁÀþËìÆià‚‹¸QŒb\oÀõïzbqGõÞó ˜ë*[ÂKRBx®Þw-ÝlyÚ 9é=¬Ž¬ Wÿ¯ÎdúÆhø{ß½÷üï'´IÌã¨QÝÇ•Ç6€’¥É*ªz!É[4Nc*ô)‰¹®U+Ë . ›•­fAö#A@ôõõÒF¿¯/ÿ{cE]ÍÇ)ë"øv'À½\– , A­úÕ²C;Ê~…¥²Qs%œNŒ%÷uŽ-M¼ÏXQ¡ ÝÉþ‚ÈՉѶ³;ŒQ{É ˆK‘þð•²éj?À6,K ëïü¢;© †±Ø‡Ãa †$nV$Z;е[óú³)!”“7œ‘ÇÞòöCrÒ{X˜yƒCˆÿrB½Fý¸”Ò§Gð„1+#¡¹"[FîÂÖ8êÑÈ:í‘|p¨Ç$¨[ð³eI ø$' ß‚œãâ x“ÿx€qƒ¯µs P¿ÕvB¡É¨é@Ãd6"èo;g•`PsÎ+ÁÝÞÖs%˜Çǯ%@ÈS{4ñܾ•Už-µs"þ1чßÄ?øjª<`g ­ñeZÔ* Ô+½ƒÃ¦Ú2Ã_Yvì*ÿÁ¤è•lv¬~Œg Z¶[s“ôY[Ãa; =ùí/öoJĘ!¤f€þcl¯RmÌRCtEXtSoftware@(#)ImageMagick 4.2.8 99/08/01 cristy@mystic.es.dupont.com‘º!¸*tEXtSignaturec3ecc1fc5135d1e959695e569d213122riðIEND®B`‚libspring-webflow-2.0-java-2.0.9.RELEASE.orig/docs/spring-webflow-reference/html/images/prev.png0000644000000000000000000000215411360615630027025 0ustar ‰PNG  IHDR#Yi†&PLTE„Œ!Œ!)”)1œ1BœBJ¥JR­Rkµks½s„½„ŒÆŒ”Δ¥Î¥­Ö­ÆÞÆÎçÎÖïÖçïçï÷ïÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ¼ìĪbKGDˆH{IDATxÚµ‘ÁÂ0 C»ÊV%2þÿo%eâÀĶ 8—Xz²§ð\å· #KSŸ›!Q±aĪ (9±Wv|ÉY­‹YÒŒ» d=âæ[¦é«‚’ù—NÇýìg£$Ü Üÿõ‹C=µô%Š ¹‹CtEXtSoftware@(#)ImageMagick 4.2.8 99/08/01 cristy@mystic.es.dupont.com‘º!¸*tEXtSignature0f87aaf0b04e24ba165f2a4bfa6bca57kИ•tEXtPage35x15+0+0~FòIEND®B`‚././@LongLink0000000000000000000000000000014700000000000011567 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/docs/spring-webflow-reference/html/images/annot-open.pnglibspring-webflow-2.0-java-2.0.9.RELEASE.orig/docs/spring-webflow-reference/html/images/annot-open.p0000644000000000000000000000150511360615630027601 0ustar ‰PNG  IHDR U.T±‹PLTEfff™™™$Ž€€€ª§™øøøÌÌÌf™1333ÝÝÌ3€Ìÿÿf“³nþþþ|ÍÍÍ÷ïï···TTTÌcˆWÑÄ®ÿÿ™‚ˆt÷õïûüôÆÇÆ<< ]> libspring-webflow-2.0-java-2.0.9.RELEASE.orig/docs/spring-webflow-reference/html/images/caution.svg0000644000000000000000000000233411360615630027526 0ustar ]> libspring-webflow-2.0-java-2.0.9.RELEASE.orig/docs/spring-webflow-reference/html/images/draft.png0000644000000000000000000003742611360615630027163 0ustar ‰PNG  IHDRŒ¶K°ZJ pHYsÊ&ó? IDATxÚíÝÛv㸕€axíJVÞÿ³¦K²xæb·µËå²E€Éÿ»˜Õɤ]eùðkƒ ¨¼÷陦)Ïó#¿šo@‚º®kš¦ïû#¿†ï@‚…nÛvš&ç\–eEQ0IP¡³,DZmÛÃÎÓLÒ€D -†a8à<­Ø8H¶Ðÿ›))˲,K&i*t–eã8fY¦”:ÔŸé4‘|OŒëÐtšHzµpÒi" H±Ðt: å½çU€‹}ú³Æ(õòòb g1I>š¡Uhæi&i@Š34ó4“4 ÑšyšH~[褢H§‰4 ÅBÓé»qMv%‘ëп­×§™¤€B§‰yšHÀ¥³Sì+†/‘€£ÌÐO½÷2" ˆUèï®rø꺶ÖÞýèô—^g–»àh…þÊ^î/F”}dD(tKV¹éôúXî ½h._ç|ïcî÷f’€äüõ×_ÁÓ…fžf’ t¡oçé¨ûÈ8OiHÈÏŸ?7WèÛN—eɺ7‘€}zסÿ8OÓi" :¡BÓi" :ÝBÓi" :ÝBÓi" :ÝB¯ÜéŸ?î¸ÓÜ' :îŸf’ ý¿ù5Bg<šI(t‚3ô¯ót×uÎ9æi&iHÚù|>N¡³Ï9Ùßõi" «rÎ?>3åBßv:ö>2¥ÔÎÖ½‰4¬ûkWkcL]×J©ƒzÍNgûº>Í5ix€išÆqlšfáeÚ­zÆ~o&iH]žçƘªª–Äus…fžf’€CÌÓ[,4ó4“4ìžNí~hæi&i`žþß ]UUìÂ1O3Iót.û½¿2Ï«Ü[/tÆùÞD¶ÕéÏïËÚôuèÏ;õ3ÚîýÓ,w@*¦i†¡mÛ×½÷Wè[MÓÄ^÷öÞÿøñc[ëÞDÒêô‡×§wsú±Î¶v}šåniáá$î÷>B¡³,«ëšýÞLÒËår‘‹¬ Ks;O¤ÐÌÓD"’§O†jªtºëº<ÏSh:M¤ V¡åŸCuÚ97MSžç»Ü)F§‰4¬]è°öÞ‡zXÞb§‰4.tØNfw7„/t–eÎ9¹é9vcvŒýÞDšN‡ítì«òÉvšH@”BÓé€.Ëò˜ç{sMbúó×§[çúôóósQLÒ°Uçóù[…fž5O¯p}úr¹ô}O¤`«…¾oQ”N‡êtìëÓIušH@ôBÓé€.Ër…}d‰tškÒ°F¡ÿ÷kW©¢(¸>½Äq®O3IÀŸÜúë½gž^>Oäú4‘€?ÏÐßÝ)ö9çÜ8Žã8²–I§‰4,*tðÛg•RÆcÌaÏåØé}ï#ãš4¬Zhiš®ëœsQÿ”G]Ÿf’ ½íyz…óȵߛH…Þ|§c_ŸVJ=¤Ó,w…Þƒ]Þ—Å$ šyú«VÞGÆ$ ÿóÝ'gPhæi&iXi†¦Ðû˜§ws_“4ü]hV¹™§S›§™¤ Ö‰%šyšI˜¡±ÏyšI…_hc …NdžÞô~o&iššy:ÑyšI…¦ÐûŸ§7z}šIÀq?4óô&æi&iGœ¡)ô1çéÍ]Ÿ&ÒWhV¹éôV:M¤Ph M§í4‘@¡)4N´ÓD…¾¿ÐܽÑN—e¹‰NiúJ)cL]×z‹ªªÚD§‰4 }Ï m­¥Ð[ïtúëÞD…þv¡™¡÷!ýëÓD…þV¹÷×é”×½‰4 ýB³Ê½?)_ŸæXP;éÔOfèkÛ¶ëºÔÎ e’°ÃšBcó4‘°·B³S »é4‘@¡?ÃN1:ýÀNiú³šbìt:÷e±q …þm¡™¡+‘}dLÒ(4…Æót ëÞD…¦ÐH´ÓD…¦Ðøm§{}šH Ð¿õØó½Ù8`“8S kzÔ>2&i›œ¡ƒšû¡ñ‰G]Ÿ&Ò¶WhžœƒtšH Ð‰všH8t¡9S ivZ¾Õ‰4€CÏÐ\‡F‚6Æxï½÷†—Àagh »;eY¤ýÞÖÚ²,­µJ)&iHež¾-tÆr7 ÜÝé°çœ¼+tÆa&(4°D¨sN~-4“4 ,§—¯{Xh" €Bîôï M¤Pè½™¦)ø«‡xþ¤ÐY–q  ½ã8Ã0 Ã8Žu]óí´r§³oÞ—õy¡‰4 ½·B7M“e™s.Ë2:r§ÿXèŒånz…–Hw]7ÿG¬Ù鯬{¥ÐLÒ(ô }ÛiæéGÍÓ}ßÿîª_,4‘@¡÷Yè¹Óò<%:ýNËWçîBiz·…Ó4Ñét:ý­Bi»-tUUzî4ëÞ)tú»…&Ò˜¡w^hÁº÷Ã;­”ún¡3Îî@¡w_èYžçEQÐéõõ}//ÿV¡‰4€½ºª*cv¾Fx_¡éôcyï¿[èŒû¤Pè-úz½Þ÷¯Ë>2îŸ^ß…f’°‡B+¥¬µÌÐßzOS–%ótú˜¤Pèͺïû»gè[²ŒyšH…6C·m{ߪé¯X÷&Ò@¡ƒ:xP§iš¦éwGW‚H Ð÷š½Ü c¬µ»‰4<`†®ëš½ÜK ]–eY–|‹¦ŒÝÝ6Yhfh Í$ Éšû¡)4‘€E.—KðBK`µÊj/·ðÞSh" €B_äqÁ9ç´Þù/®y•›BƒkÒ6Sh‘çùËËË^Sé:´÷^ž“H¡™¤—sN)µ Ó4Ïgç…þ: M¤ ÓZWUe­¥ÓéšUn" ËóœNShitz¦Ð ÒÓé°[”÷×iy¶…‘ð€NEA§?Ÿ¡Û¶ ûaån«¢((ôÖq €¸¦ijÛv†¨Ýâ}Y¬rƒI@ó4×§×)4'–i ÓKÿªœX‚¯`¹ÀzebÝ[^vŠIó4…‘:M¡A¤ÐévZ ün+ ½o\“ð˜bêú434˜¤0O§8O3CƒIótŠót¼Kä…f’€¸óô^Ï •û¡cÌКI˜§}^²Êü×,«ÜLÒ°ö<½§ëÓDN±ÓDN±ÓqM@BœsMÓl÷ú4…‘@§Sì´ÜmE¡ËÝû­¤u]×›[÷žŸ>I¡A¤Ðé„:éÔOï=…&Òn§Ó?ç$Þ©ŸÖZ }p\“®ô¯O³S DŽÛi­õ?¾Ûi ØXîö/©U®O;ç¾»îM¡A¤ Å}dóN±à…ÎóœBƒHØX§Óy^VÔçCól+Üâš4€ÍXmÙóósžçŸ:Æ*wQUUñ…“4€MÎÓë¬{_.—ßD*´÷^V¹)4˜¤ìažîû>꯯_çéH'–dì“4€ÍÓEQ¬0OOÓ»Ðì“4€}ÎÓë\ŸÎ²ŒD’ë´Rª,Ë®ëØ)" ßîtìëÓ1Ph|פlùWØÛõé¨÷OSh<ì[…—À:eYìuo &i¸³Ó±ïŸ¦Ð Ò°ÛNShit:ÅßlDN±ÓDRì4…‘€;M¡A¤àãN?öþi ¥ßB¼vÜéìq÷OSh0I@Šó4…‘€/uzåsC)4ˆ4¤Øi ßN¼Òél•ëÓÆ &iøv§W¸/«ïûišxÁA¤ ¹N;çÎç3‘€;;õú4F(Ê{Ï«àPœsMÓľ>­µ~yyÉóœLÒðíyšuoi ÓÀ=Xîp\ι¶mû¾gÝLÒÜ<]UUQÌÓ Òn§Ùï±Ü ¬{ƒI’Ÿ§Y÷‘: i`kÆqŒýÐilפ„\.—¾ï‹¢ÇJ6xYV¶Îõi¥Ô?¸> " l©Ðó4Æäy^–¥ÖšTï²Óì#‘6Yè[eYcä™Qo‘ðBgYæ½WJYk1eY’êušuoi`«…¾í´+Ö±¶æii€Bÿ¹Ðbs‘b¡ÿþéUJk]…µ6Ïsë­wšuoi`'…¾å½¯ë:Ïs¬©5‘D¡gZk¹kKžÁøF;ͺ7ˆ4°·BߎbY–UU•ç¹µ–ÁšNƒHøª×××®ëÖù³äkÖÀé4ˆ4€´ -wmi­•R2X³¹ŒNƒHx|¡?$©f°¦Ó ÒÒ*ôŸÏ[ÿ“SPd›Ëè4ˆ4°Ó45MÓuÝÂ&ëÞu]Ëb8©¦Ó ÒÀæu]÷úúzç§RÖÚtï½—BËY(ì§Ó ÒÀæ‡éëõ: Ã}Q¬ªÊÓ¶­÷>ê¯ûï’=eUUi­Ù\F§A¤­jšF*{G¤1§ÓIk= Cß÷Ó4¥óë½—uoIµ<tDØïýÏŸ?ï»KX–¥RÊ{ßuÝ0 ã8ÊyaI ÖÆÙ Îæ²_;= CÔ›ñ”R///tšH¸'Ò2Lßý^^^æ9U"}ßhûÓ”«Ôu]+¥ó4ˆ4° ã8þüùóîÝóôôt{n³¤ºëºiš[çm±¹lÍyšNi÷ÓMÓÜW,O‹¢ÐZßþÞϲ¬išišR[—¿ŒÜ`-kà<‚NƒHéêûþõõõî·_‡é9‡Ó4 ÃÐu]RÛ¿oßacäHðƒÇƒëÓ Ò@ºÃôëëkß÷w„²,Ÿžž~÷ÿ•_ý]×¥v³Ö%TœN§ªª¾ò¿Çqš¦O+»MµµvNõ¡kæii 9Ë2­”z~~þâñ^’g¹*;ÀS;eþ¤ä~-kíqež‘’#÷b-ù+g}w‰Xnª^r¦Ê ƒµÜfV×u–eGX§Ó Ò@Z†a¸^¯K†é<ÏŸŸŸï˜8½÷²§LªìÀªµžïÚÚýø:βìÇtšHøó/åëõÚuÝ’PÅóóó}•Àsã8¦ðx÷eåy.»£‰4€ß’ì]¯×…!©ëz¼¢6Ã{?MSß÷rÑ:ñþi­«ª’-f‰¿«ø¼Óa×½)ô¶°Ü <²"yž/Ç0 òtЏïèßXk%òˆ­dßèËýßóÓ;ä®­m¥z^÷õ(3 Í$ à{^__—œ*¿ÁŸŸŸ%Bky²ô-›ÀÿM"§•ÉVpc̶Rjž¦ÐDÀ·ÿÊ#7ÎIòÔõOÍ”»«Û¶•»«Ó|æmª³›#ÁÿÛ†í´Öút:QèÍa¹xp6䯡…‘–››×ß'%œl·ÖÊ&ðdßúË_¬m[¥Tß÷ò¬-¥TúÝZ¸ß›šIÀ¢aúr¹,}ÇmÌ?û¹8ç¼÷òˆ-©u⃵ֺ( ¹¢Ÿþ`}ßÙï-G­Qh&i!É Y²Ój‰Ô®Lø™ÎØJg™["]–¥LÕ‰ü…§µÖu]Sh&iÉĶ<ÒòH¨”GÏØ’õùad !ÙT+¥ä#rźª*¹Á=µyšUn&iMÓÔ4M×u sUUÕétÚÐg-wWËÛ‹Müe¸1F6Ç=öí…ÌÓÓ4EA¡‰4€ˆ‚Ü‹¥µ~zzJaÔû:Ù\Ý÷}×u)OÕså÷qåñ—›{J•<`[â)Ç¡0Ñ‚HûŒtQòD©…sžLx[ Þ0 rau‹×àäE–TÏ›Ë´ÖÆ˜Í½ç@ZßZ\“œÌš¦iÛváDZÖ>??o¢›.ôネö¬gj0I;¦åúâÂ!lǮ몪J¿ÐrÏôξˆ2X÷}/¯–³Áùö“4À0ý·¢(žžžRžáö7Cÿ®Ùr×– Ö¬ƒIØüïô…ÛDz,ëû¾( 93Ùz÷…ÎÞ†A"-wm±¹ LÒÀ†­ŸÏçå‹ÀeYÖu`2CH–¾åHpk0I›T–åò† Ãàeéà3´œã±• ÛÎ9yʈܯU–%ƒ5˜¤™¦ér¹,<)Sž¯•Ô•éy§XÀBEQUÕ4M²WKÎrÙÊ:“Ë@¤|£¯}ß_.—…}Íóüùù9‘ßþRèaB}À¹Ð2‰Ê³>»®“[–7ôµÖZ[k1EQ¤ó -iŸ%íz½Žã¸ðWv]×óã’v\èÛæÉC«$Õé~KžÛ!O c°&ÒDHÚëëk×uËïŸN§Çï£ÐÖÚÏ·ÅÉ1æMÓÈeà }ÝåÀ²ªª8”ûÈøÚ©“íc ·DÉã0Cÿú?“g‚É#¶ä€‘M|Ýå]…<%š¥o" ݉jùïh9Åó-ÄóÝV+úÝkx:Æq”‡v{ï_G”­dÆ M¤$麮—ï…–‡5YkWþ¥ü~èïZÈgmÞÈP2ª¦ùE¯ªÊZË}YGÿñç%Ò'§y/Œœ¬÷®_èà÷CßQè_‡TyúHUUeYf‰=ý"Ïóº®)426Ž[ÑuÝò{±”ROOO«šÈ ý•†išº®Kaª–… " l‰sîõõuùÆ«ªªêº^apŒwbIŒzÉ%júxwµ\‡¦Ð ÒÀÆHBš¦Yú3¯Ôóó³µ–Bÿ.Õr­ZŽ-[sœBƒHÛ¦þü¹ðN*¥”\ˆW‚ú–,ÑË`½Î8…ÆÇßü¼À†È‘ ‡Å¨ÛÇ‚Z)µr¡%™rüËÓÓÓ Ç‰Ph0I{0Žãù|^~/Öét’Ç90CÿñµRJÉ(² | œBãÜ' l‰Öº,˶mΦã8:çž ½ú׿C–eƹkË9'kࡎo£Ð ÒÀ®"¤¬}ß[kFz3ô¯µÎó\kýüü<ï,[xl…‘ö¦,˾ï—ß&4 C¨N?ê\îG Ör£¹µv>aôîB?ê ViQxïå‘KV\•RòÇåƒÏ3ôî ý.Õòìgkí0 òL̯×z.4O¢Ä~x €m‘u× {—Ú¶]¸:½ûUî¯|-ʲ|zz:NEQ|åu˜Ïå¦Ðøó÷»»-Ó}ß¿¾¾.ü8yžËC¦ïKþÁ ý+¹©Z¦êq?|U9õßÂr7°ÉaZ“îºNŽÔ¸o,–yZB%3eö¶êP/æù|^xz¶÷¾ªªªªnßîPh€I‡‡aCæTKV\«vÎ Ã ‡pÉ©‡º!Õ{oŒ‘Õˆûß°+Õ÷ýí$M¡&iˆ\õìºN"uÞ-Šb^¼=Â`=Žãù|^øãì½/ŠâééIkM¡" вXJ\m·—}³û©Ú{ß¶íõz]øÂæyþôô$BDû'anšæ!·QÉE뺮ç'ìUß÷—Ëeù ¹®O¡"ý뺮뺅{š‚¤Zn)®ªjÇÃôõzýʱ$k¢ÐÀlC¬`ȃue€~øUaï½<åWîÝÊó|—ªå^,Ù‹—Ä …˜¤‘\¡û¾ïû~ùÍ»1ÈUê²,÷×içÜåryøº34À$t Ý4Mß÷éÌsïÈÞòišö×­uY–)DšBa~”x 0ÏÞûËå"O¹O|â”mVròèž¾ )Ü N¡PXîF°ì ñï&ít:i­÷tVÓ4MÓPh€IȲ,“=brgíæþærwš¦Ý|9äÀ5 i Çñz½6M³ÑÎÉEô=uÚZkŒY‘ŒBDÉZèÄ/BÎ9·³N—e¹òÉ- ÒHË0 ×ëu†ìlØY§åœ5 iTß÷òxÄÝì=ÜS§ó<¯ªj/ '–DÉúr¹ìïórÎ]¯×}Ü—•çyY–±?­uQ Ò ÐkðÞ¿¾¾î#Ò±÷x³Ê i¤¥išzž§Ïçó¦·Â‰²,å‘V ÒØ?¹Õ꟩\ŸÞú<­”Š´Ç›ëБFr…nÛö Ÿ¬<5«ëºMwZ)ã9"J)®CDÇ-´~û¦û¾ßúöuétÈ_ìVÄS°J¡¥…Zkùí¯”ÒZ{ïsZkçÜ4MJ)çÜjwã8 C¼Ëºk¼ ×ÚŠz:¹¼IDAT£T˜Sú¹ i¨ÐÞ{‰qžçù·gqÈÿFn‹’UhyФô;v°›¦ÑZWUµárcŠ¢èº.È\N¡"CZJ\U•1FΚþð·¿dx¾›ÈZ+SµŒ¹Rë¨/Â0 yžowž–aºïûå/”÷¾ïûM¿e¶…GUâ…VJÉQyžß½ýX¾uåá˜}ßÇ{¼÷OOO›.“<ç»ïûå eYžN§5ψ4°^¡åM²ëxùïzYïû¾ïûaâÅã_ÿú×vŸ9-/Ñõz òóþòò²éëôÀ†°Ü Ý4MØàyïóÙ`Ï @¤±j¡ÃæÙZ+›ŒV¾~iŒyyy û‡zï»®Ût™¼÷²£>ȺÂÖ×ÿ"-:ì*·ï|:Ö ?ìôóósÀNËh¾éHÏçÆ„zËB§"•fè€ëÃrm¸ªªÇÞ³”çy]×a'ÑH»Ç×û×:Èk"gÀÉ1püD›™¡1u]?¼ÐÙÛƒî÷–2mýZ¬\†ò¡Ú¶ÝÁS·"£ÌÐEcL"7ÑÊÙOÞñqÓ_ô€Gœî`i ÒHºÐagè¤ =ÿ­äÖ¯PYšÿïvYkƒtÚ97 ‘ˆ4R/´œ•‘Z¡EQŸ©õœð•~ìm˲l𦼠‘FZ…Žq:ÍBϳc¨¿›<:sÓßòÄÉPÛ¼åÉ¡üXDÁ ½ãëÐ6ÉZ›çy…YyJæÖ¿ ¼÷EQù6hÛ–HDa ½ïb+ÌŽû¸ïHŽf õѶ~Ì @¤‘J¡~À­zîtw'òqvÐi¹=È "¦²ƒ Ò Ð÷ÏŽAš$·Joý²tzûXðg› Òú(…ÎÞÅ\þÞSŠÊ² r/– Ólóˆ4(ô¢¿y¨HïciW¹äm‡snGV¼" ½(± Câ½ßÁîîùÕÈó<ÔÚ@ß÷»ye" ý€&ÙÒjZ äš °¼}á4o€Hã…NùL±¯ÇuùeéfòëW6È{ï}Û¶¬xD˜¡?Sìë^ú3£u¨sQa­ x¼y×ut ÒXµÐ[Ÿ¡o»°Ór˜Éž†i|ÈäCÉ=ÓüDúÎ,ùw÷tAz^]Èó<ÔòÀ0 ]×ñ“iPè;›”HÏ’zMªª u¶É0 lóˆ4(ôÚ“tö¶µ{§k…Úúže{¼" }çÜ’~Èr÷.¯¹æyäô1y•š¦á‘‘F”Bïàn«O"½ä“’åîý½,ó;³P§„r@¤k†ÞÇÝVNxÓ4-Ÿ¤÷ú$‰€—Û½÷]×ñÈ €HShV¹¿QŽ…wOåyð–âÉW?ȇÇ‘mÞ‘>®¦i(ô·ÈS&f~÷ßWß…°ƒ ÒÇ-tÓ4ú»cô’HË3£öúúüýAkkm¨÷"]×q/@¤)4…þj3–7l÷×YeÛ`¨Ö÷=Û¼"} ×ë•Bß7/\z {Æu²ä†éPß Ã0°} Òš¡¹}÷H·déÕ{¿û—hVE¨ícrÏ4÷bDú…f†¾Ïò-cJ©²,3ZkC}²Ó4qÏ4@¤)4…þ¬K.H{ïó<ßñÒ¿¾#±Öj­C=rƒEo€HSh ýÛB/_q ¸¼•NÜÊ.æ ÒšB¿‚å”±%“œµ6Ô¹ÖŠt¨ï¥Ô8Žý…{ì"„f者Þñó¡?1 Ãò$TUu´-c·ä®³€Ï¯ ò¶ Òxp¡~À?ú]×]¯×å/]À3=6*Ï󀧸 ÃÀ#7"½áB/OË»Ìs†²á.àöæmÿšÐ:àëÀ#7"½ášëÐË änYàÛR^Š€¹Èm뼪‘f†>\¡çÍb ¯¡j­uR÷•eªÓι¶m¹ ÒÌЇ+ô8Ž}ß/€ÌŽDz&ÛÇB}(k-‘ˆôAgh¥”4}¨B;çÆq¼^¯Ë—RåØêÃÞvõ»×¤ªªåïZ”Ru]Ëí×¼ª‘NœúvbóÞ;ç5©È§ê¹Å§ÓéPÏÒøÖ{— …æ ðEü&zð öÔÏY×u2©ä·¡÷þõõuù í½—ú÷MÞ{ùïåq·oä?ÎÿåüPËù_™ÿaÃïèµ–K÷½¢Ð‘Þ’®ëÂÞý.'óßýïDçÜårY~W÷Þóë#)ç• çœlI›ÿ,ï½÷^Δ¿Ožçò_*¥´Ö·tåäÿµ¹lËãwœîI¡"½±ÉOæ’x;¤ÓRèP/cQEQÌaβ¬ï{i³tz"ßÍÍó/ÿüë;éñm³å‹"oä¿LÚ–çW~÷8t ÜÿCÇËvzǶm‡aˆú[uǿú,˺®åë2Ÿ2½ðAÔŸ|õç6KªµÖózrÊÍöÞÿüùó[ë§Ó‰BDšNë·dØBgYVUÕ8ŽÎÁ+|'ÜÎÙ’j™éç'ly˜ÕõzýʯÙ~ä'” ±ÜýзHJÉ ÍY–EíôþÖ½ƒZ^¥G…pþse]Þ%È(/‡‡ËÁœ·Ïºxà_õëßE¬rLÒ;™§›¦‰úà=­{Ç(tÊß2OÏûä44ù²Û¶ýüæ~®CDzoæú4…þã÷‰\«–¯ ì!7ÆÈ=c2d¯ìa®×ë'׸ Árwï•VY÷ÞÁ~oçÜù|>ì3”æ¹YVÅçýçò›-ÁŽºõÌZkŒùð Á 0I3Oqž>ò ý•ožìfÝ»( Ùz&wcË Üƒ-Ûë.—Ë»d(4À$Í<}ÄyšBeÈž¿Ä2^Ëÿ½½¿Kkd뙄_k=MÓüq(4À$Í<ìwú†î9ø*wÀ![ž@%_ýù@´»ƒ= Ãù|¦Ð‘¦ÓQ:½‰ßªÞûóùÌ êÅœk=_º–­gw ÙÓ45MÓ÷=…ˆ4Ž"ñ]¸z¥_JI¤å†ììmëø·žÉCb(4@¤éôáæi ½þ=WYù,kãó&¿[ã=E€HÓéCtšB?<Øs•o‡lY÷d‘­?… Ò Óßû¬¿ûDýrÜ–X†lÙu(ûÎDÂ-XÉ¿:Þ}Y2CS褾 o¿:Ã0Ü>m‘¦ÓGé4«Üé7Îë.ŒÑ‘Æ:M¡7ñ­È^n`5¼Þ^§å™x™¼^¯Ã0<ä™Ê:ýoBù¤Ð“43OgxþôC -7;çdÙöv{Ô|$µü»—™¡"T:½òº÷:{¹å¶"yH”\OõÞËÝD·÷ÏÿÑ9çßÈßmGùÇüÞc†ˆ4×éØ{¹¥Ä²N›e™üóׇã9É’my¤Ä4MRn ù8ŽQŸ ™Â·Ü†NzvõÓÇ}Òµû§c¯rË©ÔUU©7¡&òy¤–ZËIY–É?ïlà®ëšBD‰v:Ò¯ÐroQÆcÌj_Žìí¶snùÉÎ €HÓéÍü¦ŽWè<Ï˲”úQëÏ·¶•RÃ08ç¤Ü2mg[ØŒF¡"#v:^¡1ÏÏÏ¡V¶ƒ¥$Û2^˨-ÁNðl i±Ó‘ ç¹1æt:mb÷–[k-·¤ã(µNä0T i±Ó‘î¶’+вAl‹_¾ùJ¶ì7d¯üIQh€H㈎4C[k­µeYîã¨ygø¼õL®gOÓ´Â'H¡"¸îº®ïû¨Ð÷äD*tQ²Ml—÷(K°•R²>o=›Z ûYSh€Hãˆó4…ØìùÎì¾ïeÈž‡ï%¯…ˆ4ö3Oýw:…ŽlÙz&‹áó=ÙwüPSh M ºÇw^JÍ'xÄë´÷¾m[‰å'¿Ù)t¼¯²|îòT´yȾ½¿kž³?²)4À$#ÎÓúCö|%[H°³_¶‹Sh€H㈦Ðé|dY6§Z¶‹Ï§¡Qh€HãÁ^…NyȾ½ [ÎO啈4Ž2OSè Mؼ˜@ÊØ8v€7bëî#³Ö^¯W ½‰o ^€IÇš§•RÁŸÌH¡0Iƒy:À[àoû(4" :" €HƒNSh Ò Óˆ4¶Ûi DšN§Øi DšN§Øi D)všB‘Æ–çRhH‡æ%€tºª*y21…€T~?s,(Ä:ç†Rhø:–»ñyZþyÍNSh ÒøF§W»>M¡à\“þØü ˆÛ˜îôëÿwg–'CGÿæÓÚC¡€Iú³Ïÿ7˲iš¼÷J©išæÿfî±ÖZ)•ç¹üïµÖZki›ÖZþÅ­'gµuïišœsÓ4Í€HÿÍ9'»¥œsR )ñ»Ç!Kzoÿá]Òf2JÅç~ÓéOþ”¶må%¥Ó@¤3çœÖºëºiš†aXfåßMÀóÿáÿàvÅÛ{ßuÝœgkmžçƘyÚ¦Ó¿jšFþ¸<Ïù€ü*>Â-X2ãè½ïû~š¦yhŽNya空( ­µüsÔ?7øg±Â}YJ)¹ N§à@‘–ËÐ<Ž£tú!”?ÔZ«µ.Ër^!§Ó³º®é4%Ò2.7MãœÇ1KfÁ9Ïs™å6¦Óp HËè,Ós²Ÿ ÷Þc­•K׉Ötˆt]× ÃÐu]¶‘½Z2OWU•øæ©5;m­e¿7ì'ÒrßÔõz•[ª¶÷•PÊZ[…µ6Ù÷tÖ´“_‚Ã0ô}?Žã|ÉæÈÎóaŠ¢0Æ”e™à&ð•ïËʸ‘Þú=Žãëëë>–äNëq‡a¨ëZH¡Óü 8¦m/wãØ÷ý|ÆÎ¾6yžËx‚•ZgÝÛ{:X÷@¤·G ±ÎÚ;¹žN'cLj{Êè4ͽ_|r¥öz½ðÝ+Ð_çœ{}}•ç9–e™Ô»‡uÎ÷fÝ‘ÞL¡§ijÛ6öîâ¤Z8/LÓt:ÒÙP¶æõiYò¡Óˆtº…†¡m[9>ìhœsmÛNÓ$·i%²¡lµNó¼,D:éDÉ)%Ç,ô|×7÷eÀ#ݶí|¼Ô:-QJE!QÉóÜ{/…»÷<7˪²RÊ9'ÙÇQÎAsÎÍÿÖc_@çœ#zœNs"½“BËÇ—qS¯°ñÛ9'ç«Ði Òq ]Åóósj¤º#WJ©———¶m‡aˆjùøÆ˜ãœJ§éÇ:{ÄA%1h­çB¯Ðé¾ï¥‘éôõz=Nt‘Ž^h¥”µV ½'rB™µ6öJÙñž—Å>2Dú}¡cìå–GGÌCçþ:=?VK.Óé€è4€Íä êa&‘fh9´«ªª}mäK#ïrbÿYUUÉ:p Ÿõ:眜N'k-pÐI:Þ }„BgoWÙeµ v§åaÌ)tzµuo®O8n¤#Ý=? ùP_¤Õ:-—ÃÕiù|é4€EšUîž&‹ôGxïÛ¶•CÐŽÓiYB ÓŽi IY–•HVJ9纮SJEqNgoKýtÀþ#M¡£’vFíô0 rüY Åb¿7"M¡éô?ºØuÖZ)•ÂsJX÷@¤)4~ÿÕ4Æ$ò019µf…yšNHM˜ÇQPèõ;-üŠôñ½÷—Ëe§\‘µ¶,ËØË›¦éû>©O“4…Þð<= CŒ“Âd³·<Ÿ;NÇž§Y÷°«HSèÇvZîD4ùÉ&²²,Óy(ëÞˆ4…ÞŒ¨÷eyïû¾—·éÏó¹ñ»NË_u+o,œŽqêçíoð{űäSØÛ¦Ó|Èô'ò<§Ð6éÿûßñ>º mt:J)­µµ6ÔòFعðHgYöŸÿü‡NèK®uY–¿[¹ 6i:}4yžŸN§P_Ž íñ€MFzNG½þ¯SJåyp{sðb²w'ŽÅîô0 t:rßp%7Ló’@ÜH3OJÀÛ¦™¤`HÇî´sŽyz‘†=Þ°F¤3Ö½AŽ„ u/_MX)Òtú(_~­1A¾ }ßs#¬éŒëÓLjtƒM”RÞ{¾”°^¤3®OïRÊä^,öxÀÚ‘fžÞ=cŒÖzùëïßð’Àz‘fžÞ½¢(‚ÔŽn¥T]×\"M§Ã|j]×…ú€u]³©ˆ4 l¡‹¢ Ð@¤étmÛ^¯×PM)e­å¤n Òt:­BgYV–%'u‘¦ÓKõ}¶ÐEQPh Òtz©a^‡Î²Lkm­eG7i:½´ÐmÛ†ºáJ ]EQÜ DšN(tÀãÀ´Öu]Sh ÒÉuºëº­t:R¡ŸŸŸ)4é;í½ßÄ<©Ð§Ó‰B‘NzžN¼ÓRèaZ)%OŒ&Ò@¤éôÒ:ì‡5ÆXk9_ ˆ4^Zè°Ž”ÇESh ÒtúþB7M¶ÐÞ{Yè¶ÖòDšNß?COÓv†VJN' DšN/*tðUî,Ëžžž8þR ‚ÿŠOÊÿû߈¯ReYVUµþa™˜¤™§?ó¨û§ãº®ë¢(ø©"½‡N˺wÓ4«u:^¡Ë²ätn Ò{ë´l±^¡Ó± Í W@¤étZ…–'\±R³ócïDÝG&O\®ë:Æ>²Ø34…&iæi Ò{é4…"M§Sì4…€#;Ö5é[é_ŸžŸ>ü¯G¡€Išyúþy:ÒÓ')4i:½¨Ó¬r²#/wÏR[÷f•À$âM…0I'4OË M¡D:­N³Ê ø–»?¶Îº÷4M@¤“ëtžçÞ{örˆtr–W^)E¡D:¹N3C>ÁƱ?ˆºŒBˆôþ;M¡€HÓi ÒtšB‘Æv;M¡€H#ÅNSh ÒH±Óˆ4Rì4…";M¡€H#ÅNSh ÒH±Óˆ4RìtQˆ4’ëtQeYRh8ž‚L¼çe±Ê LÒHqž¦Ð@¤‘b§)4i¤ØivŠ‘FŠf§€H§Øi Ò)všBˆtЦÐ"b§)4€H§Øi Ò)všBˆtŠ–Bcx•D:¡NÏ…VJñˆt*¦Ð"b§)4às<ªò1.— …|îÿ`uüÝÀ¡œIEND®B`‚libspring-webflow-2.0-java-2.0.9.RELEASE.orig/docs/spring-webflow-reference/html/images/warning.svg0000644000000000000000000000217511360615630027534 0ustar ]> libspring-webflow-2.0-java-2.0.9.RELEASE.orig/docs/spring-webflow-reference/html/images/tip.png0000644000000000000000000000070111360615630026641 0ustar ‰PNG  IHDR*Þ bKGDª#2ÛIDATxÚu’»à @!+xŒ¬’6¥K—¬àR+hJ·”–TaK >ßžþRh~j?ïg0qF@”Ÿøƒð!¢ÊòeH,î…0܆x˜”0‘&p „^—µªJéÄ5y»=ôJØ % P<†*ÄŸ{Œ®”¨…Š–×Âj÷ #û7±^ñóŸÍL~Ù!=™ ä&Ṳ; ‘&rgߊFâm‰¬Í©×Pý•¬Ö;Ùä óot6BöJäqC ìXduÀê³Ýi]}OLð4+|) -íCtEXtSoftware@(#)ImageMagick 4.2.8 99/08/01 cristy@mystic.es.dupont.com‘º!¸*tEXtSignatureee9d877396ce267aeb0179d35f81b2ac3ú'tEXtPage25x24+0+0¾ñ ¯IEND®B`‚libspring-webflow-2.0-java-2.0.9.RELEASE.orig/docs/spring-webflow-reference/html/images/note.gif0000644000000000000000000000110411360615630026771 0ustar GIF89aô JJJRRRZZZccckkksss{{{„„„ŒŒŒ”””¥¥¥µµµ½½½ÆÆÆÎÎÎÖÖÖÞÞÞçççïïïÿÿÿ½½½!ù,þ`UUUUUUUI’$IUUUUUUUUUUUUÕ,ʲ,ÊòTUUUUUUUUMN²@ÒN“ä(ÊSUUUUUUIÊQEQEQ¨0UUUUUM CQEQEQ5-MUU`UMJCQEQEQEQ”ÒTUU= EEQEQEQ5-UUUKDQEQREQEQÏRUÏBQE9 Ó0M$I(IµHÔM´$ÌAO‚,˲(ŠÄ< ´HŠÂ<%=ŠóMEòDŠ´@ŠD5)ćÒ0LãL’-"QÕOF‹BMÔDQT¤HK”H5)†Â4ÉBÂQHQ%)Ò)Ç2MÅ=ÎQEQ%-`Å@Å(OÑ$ÑPEQE-O-5Î! âPEQEMËTUËCQT$ERREQEQMSU´HEQEQEQHQÏ2UUU1 EQEQEQEQÉSU`UUU£LEQEQE=ÉSUUUUUÅ€Š3QEQ%1ŠSUUUUUUUÐ’,QJѳ$ŒTUUUUUUUUUE¢(ÊòLXUUUU!;libspring-webflow-2.0-java-2.0.9.RELEASE.orig/docs/spring-webflow-reference/html/images/home.png0000644000000000000000000000220411360615630026775 0ustar ‰PNG  IHDR#Yi†&PLTEŒ!Œ!)”)1œ1BœBJ¥Jc­cs½s„½„ŒÆŒ”Δ¥Î¥µÞµÆÞÆÎçÎÖïÖçïçï÷ïÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿòî¤GbKGDˆH“IDATxÚ­QÑà l)œ xÿÿ±£Y¶,]Ò¾”„âå8uÁu,÷q¼£»Å™N!`’œîRN`Mè}‡™%,»ióímˆõ¡‹ )ûΪš +¹· šC²©<ÙóÍqU;pZÚ–ÔüzJky¯à ƒŒà4ãy|Ÿ¨50ܦyì³k»ù/.ã Ì×j*1ÝCtEXtSoftware@(#)ImageMagick 4.2.8 99/08/01 cristy@mystic.es.dupont.com‘º!¸*tEXtSignature154332ef94ba5222343b4126d6035f91ìïé€tEXtPage35x15+0+0~FòIEND®B`‚libspring-webflow-2.0-java-2.0.9.RELEASE.orig/docs/spring-webflow-reference/html/images/note.png0000644000000000000000000000075211360615630027020 0ustar ‰PNG  IHDRÅb$bKGDª#2IDATxÚe’!’Ã0 E}¾……K C ÿtAQCACQAÁ+g“4m¥ÉŒãçoKß.ã Ÿqþ•c ¢üô D«Ô="¼ú²s ˆÇ%‚äd¼ÇœH ô1Ÿ›à²ÿy%ØM8ÓöfÈK ¢wª¬Öµ>i6g-NpÖ‹˜Y‡tL#÷ßŸÛ a–Žb;UÍ#2ÇØV} °Ô£rßVŠx¬]ÛzTîT÷1úºÜO HËè4Ý]o žíÕzÌÎ§Ïæ™gç"Ó’NþåHl¶ó§‹U÷‹Äuýœß¯–Ñä9¾<†t‘,×tÓß_‰)2Håž•÷d úkBCtEXtSoftware@(#)ImageMagick 4.2.8 99/08/01 cristy@mystic.es.dupont.com‘º!¸*tEXtSignature3bd747c5e45807006b090dd3e7a26c44Ó“útEXtPage24x24+0+0r[ 1IEND®B`‚libspring-webflow-2.0-java-2.0.9.RELEASE.orig/docs/spring-webflow-reference/html/images/next.png0000644000000000000000000000217611360615630027033 0ustar ‰PNG  IHDR#Yi†&PLTE„Œ!Œ!)”)1œ1BœBJ¥JR­Rc­ckµk„½„ŒÆŒ”Δ¥Î¥­Ö­µÞµÆÞÆÎçÎÖïÖçïçï÷ïÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ1£`ábKGDˆHIDATxÚ½‘á à „Uâ\³¶&†{ÿW]«ÝØŸ2!BrwA~Ÿp)#Õ€6î¯L£è2ó»²è”ÅD@•nöR²ÌŒ¥ÅQK%+÷uKe›hÜ݇ YA=õììqfn ŸWRÓ™±[Pßz¯ 2ëÑñ4æµ±˜¨y¯,Ǭ¿ü×:l&ÕXDzìCtEXtSoftware@(#)ImageMagick 4.2.8 99/08/01 cristy@mystic.es.dupont.com‘º!¸*tEXtSignaturebcb022e8ade53bb4f94fb0f70d7c0a8cuœktEXtPage35x15+0+0~FòIEND®B`‚libspring-webflow-2.0-java-2.0.9.RELEASE.orig/docs/spring-webflow-reference/html/images/caution.gif0000644000000000000000000000134711360615630027477 0ustar GIF89aõ-!!11BBZZcckkss{{„„ŒŒ””œœ¥¥µµ½½„„s””s””{œœ{µµZ¥¥cµµcÎÎÖÖÞÞ9ççïï÷÷÷÷ÿÿçç1çç9÷÷1ÞÞBŒŒŒœœ”œœœ¥¥œ¥¥¥µµµÎÎÎçççïïï½½½!ù.,þ@—Ëår¹\.—Ëår¹\.—Ëår¹\.—Ëår¹\.—Ëåbµ\.—Ëår¹\.—Ëår¹\.—˵’ €-—Ëår¹\.—Ëår¹\.—˵š,¦–Ëår¹\.—Ëår¹\.—‹%!y>˜TËår¹\.—Ëår].—k%y<Õr¹\.—Ëår¹\.×j²ñx8ÏÇ’j¹\.—Ëår¹\®eãñ@Žd¦Z.—Ëår¹\®ÕDäñxÄãYN-—Ëår¹\, ÉãñxÄãñ|0©–Ëår¹V’‘Çôx<ŽAãñx< ªår¹V“Çãñx<@ãñx<žþ%Õr±$$Çãñx<ãñx<ÏxQ¹Z)ËÇãñx<ŽÑñx<gCY¹\-Æãñx<Îáñx<Oh²r¹\®V óñx< PÑàx<O¨´r¹\.—«…²€<Ï0ˆx<žÍdår¹\.—ËÕJY@ÏcPÐx<¢ÊÊår¹\. ËårµR–Ç£áx<›ÊÊår¹\.—Ëår¹Z(ŒÇãñxB“•Ëår¹\.—Ëår¹\­æãñ„JÀ•Ëår¹\.—Ëår¹\.W em&+—Ëår¹\.—Ëår¹\.—«•ºPV.—Ëår¹\.—Ëår¹€.—Ëåj©V.—Ëår¹\.W;libspring-webflow-2.0-java-2.0.9.RELEASE.orig/docs/spring-webflow-reference/html/images/home.gif0000644000000000000000000000050111360615630026754 0ustar GIF87a((Âààà```°°°Ððððð,((þºÜþp…H+ ˆÍ»ÿ`ˆ)fžhª¦Ú؆pìµY)ß0Mø6 =î…@ÜÐv3‘ÊRçùý|Ïg2¶¤vœ@gö¸ u?`ñ˜Ì•îÐäõº¤¥¦§§tˆ¨®®ª¡U¯´¥±¢¬¶›µ·S³¤Ä­ÅÉÂŒÀ_¶ÉǧҾÌoÎÂФԥԿ×ǾÄÂÛÓË«âÃÅÑçÕ鲨ãíÛÉäð—¸ÁôÄâ¯ßîŒÊV¯V@Gûëu0—§‡›¬ eÅ K,hŒ€é¢Ç+BŠI²¤I ;libspring-webflow-2.0-java-2.0.9.RELEASE.orig/docs/spring-webflow-reference/html/images/prev.svg0000644000000000000000000000202011360615630027030 0ustar ]> libspring-webflow-2.0-java-2.0.9.RELEASE.orig/docs/spring-webflow-reference/html/images/note.svg0000644000000000000000000000333311360615630027031 0ustar ]> libspring-webflow-2.0-java-2.0.9.RELEASE.orig/docs/spring-webflow-reference/html/images/home.svg0000644000000000000000000000400311360615630027007 0ustar ]> libspring-webflow-2.0-java-2.0.9.RELEASE.orig/docs/spring-webflow-reference/html/images/up.svg0000644000000000000000000000202011360615630026500 0ustar ]> ././@LongLink0000000000000000000000000000014600000000000011566 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/docs/spring-webflow-reference/html/images/toc-blank.pnglibspring-webflow-2.0-java-2.0.9.RELEASE.orig/docs/spring-webflow-reference/html/images/toc-blank.pn0000644000000000000000000000047611360615630027561 0ustar ‰PNG  IHDR ¡kd0PLTE€€€€€€€€€ÀÀÀ€€€ÿÿÿÿÿÿÿÿÿÿÿÿO&IbKGDˆHIDATxÚcøÿ¿ÿ?|`ø h  Ì”ÐBÒh±àCtEXtSoftware@(#)ImageMagick 4.2.8 99/08/01 cristy@mystic.es.dupont.com‘º!¸*tEXtSignaturef7e388dabd4ef0097714b5643fdd3cfbb†œÒ tEXtPage15x9+0+07vð¸IEND®B`‚libspring-webflow-2.0-java-2.0.9.RELEASE.orig/docs/spring-webflow-reference/html/images/note.tif0000644000000000000000000000071411360615630027014 0ustar II**€?àP8#ž ‚BaP%ê•(¥ˆCÙиK½ŒŒRµœîøãŒ”JDâŽx{z(ÿg%°·z–W'KW±T¤ÎašÁÊY¼UK&Oç°™Ü ‹c/V´¥ëz©\õó½¬ÖR£¬æóYœŒBD")G=mÏRVàNyKœs¦·«²õ’3d»Ò†2Ñ(¤{š­ilg|‘½w©ÃuÌ:QþïÇÀî¶vò3z9Ê—±ˆ\“(”=©c†³ÝyŒ{ Blïõ«Zµšóg3Ú¥‰Ö&:r–eÆŠKrþÇ“¯vÕŒMwÃ×Ï(oôg½Jt"•þ´a„Î÷æˆÅÉÎÞÖ¹³D‚A¸í@à KK þ"=libspring-webflow-2.0-java-2.0.9.RELEASE.orig/docs/spring-webflow-reference/html/images/warning.png0000644000000000000000000000233111360615630027513 0ustar ‰PNG  IHDRשÍÊPLTE!)1BJRZks{„Œ””{{œRRœZZœ{{¥¥99¥JJ¥„„¥””¥¥¥­­11­””µµ))µŒŒµœœµ¥¥µµµ½½­­½µµÆÆÆÆÆÆÎÎÎÎ))ÖÖ))ÖÖÖÞÞÞÞçç!!çççïïïïï÷÷÷÷ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿp;ã”bKGDˆHèIDATxÚm’}o‚0Æï”MÜæÄé¦5…%¼•%m ßÿs­ìzP“^ÿ ²¥UDÂýKnßk[;Ò»?0n!¿œqCtEXtSoftware@(#)ImageMagick 4.2.8 99/08/01 cristy@mystic.es.dupont.com‘º!¸*tEXtSignaturec42b7d2d564aab588891979703f02b45Oß“tEXtPage24x24+0+0r[ 1IEND®B`‚libspring-webflow-2.0-java-2.0.9.RELEASE.orig/docs/spring-webflow-reference/html/images/up.gif0000644000000000000000000000210111360615630026446 0ustar GIF87a''÷€€€€€€€€€ÀÀÀÀÜÀ¦Êððûÿ@€€€ÿ@@ðʦÿ€¤  €@€ÿ€@@€ÿûð  ¤€€€ÿÿÿÿÿÿÿÿÿÿÿÿ,''þH° Áƒ*\Ȱ¡Ã‡#@±¢Å‹3RDàŸÇ CŠù€‰$Sª,iå?‰ñµ4À#̃øfàñ¦A|: ðÈÀ?†ø‚à±hC|Jð¸€À ñE=ÀcU‡ø¶ð¨Á ñ‰õXö!¾µÿ0ø/!>¸r!âÃ;á?„øøÒŒˆO°P…ÿâ3¼T">Æ\þ3ˆ2˜øpø¯ >Í7ññA|£WŠ$ˆòM|®aâ‹-íˆønCÄ·>|øðáÇ>|øðáÇ>|øðáÇ>|øÄâÇ>|øð'áÇ>|øðáÇ>|øðáǾ­\5ê߿ѧÿÿhP@;libspring-webflow-2.0-java-2.0.9.RELEASE.orig/docs/spring-webflow-reference/html/images/caution.png0000644000000000000000000000234211360615630027512 0ustar ‰PNG  IHDRשÍÊPLTE!!11BBZZcckkss{{„„„„sŒŒŒŒsŒŒŒ””””s””{œœœœsœœ{œœ”œœœ¥¥¥¥c¥¥œ¥¥¥µµµµZµµcµµµ½½½½cÎÎÎÎÎÖÖÖÖÎÖÖÖÞÞÞÞ1ÞÞ9ÞÞBçççç1çç9çççïïïïï÷÷÷÷÷÷÷÷1÷÷÷ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ_§ä\bKGDˆHñIDATxÚu’ÛŽ‚@ †ñÀ®bÌ®ÊIc¹APÛ`bxÿ³sBEíU§_çïOh¿<Îô`Ó'€á1û§wpŽÜä õW–Èt:%suá&³w,ÀHêéȯøf Øþ“Èü‚—²59 ævÀ:€Ç\^ F;`çªHãJ'Ê8‰ƒ71€›íZJ²Æ+ïçb²2B‘¢8·ÀŸ›¤Q§$×wŠéRKÕ ´v)ÎnR˜Áp¯t¤ß} Ì²ŽÅîéŸVb¢Tšz·Dç ±·vã@Ïí=”rPºþ—§¥duõ—Ÿvz{Nël;—a*CtEXtSoftware@(#)ImageMagick 4.2.8 99/08/01 cristy@mystic.es.dupont.com‘º!¸*tEXtSignaturec70387830aa4ecd5a4a32a852283b3d6øP¶tEXtPage24x24+0+0r[ 1IEND®B`‚././@LongLink0000000000000000000000000000014600000000000011566 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/docs/spring-webflow-reference/html/images/important.tiflibspring-webflow-2.0-java-2.0.9.RELEASE.orig/docs/spring-webflow-reference/html/images/important.ti0000644000000000000000000000374411360615630027724 0ustar II*6€àP8!. ‚BaE²XØDDb‚´.V…ƒälv:2‡h`d€@“éø„`™ŽC@ c3„êȘS£Ö½db‚ë6Ë$Ìfƒ®v*Åd ^ìu‘È(Á_fb0mRUt¬ŒÁ€ŒE€ 2ÅJCUôÌZ0è Ê…á1óC£ƒEZ ¾¶8 𒑦^:n·c‘xBoÜl+"ý¬go¢Œú=1˜·}΄>çw¸ÛA !)1BJRZks{„Œ””œœœ¥¥¥¥¥¥­­­µµµµµµ½½½ÆÆÆÆÎÎÎÎÖÖÖÞÞçççïïï÷÷ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ{RZ{9J„”¥1”)Œœ¥µ­µÆ))ÖÞ!çï÷ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ{RZ{9J„”¥1”)Œœ¥µ­µÆ))ÖÞ!çï÷ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿKKþ=@libspring-webflow-2.0-java-2.0.9.RELEASE.orig/docs/spring-webflow-reference/html/images/up.png0000644000000000000000000000212711360615630026475 0ustar ‰PNG  IHDR#Yi†&PLTE„Œ!Œ!)”)1œ1BœBc­ckµk„½„ŒÆŒ”ΔµÞµÆÞÆÎçÎÖïÖçïçï÷ïÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ²»™~bKGDˆHfIDATxÚ•KÀ mëAîÙÖI+¤oÁ†É@^P?á'#H];á°<ùR‘Í[æPeéâ0œ2&t<*§Ï¬‹7Sm¤Ô&Ji»Gš¾ ËËß=φKa1{Þäg´ ¦ưCtEXtSoftware@(#)ImageMagick 4.2.8 99/08/01 cristy@mystic.es.dupont.com‘º!¸*tEXtSignature2772383288e9cce11a512e2a8adf37b0k ´tEXtPage35x15+0+0~FòIEND®B`‚libspring-webflow-2.0-java-2.0.9.RELEASE.orig/docs/spring-webflow-reference/html/images/callouts/0000755000000000000000000000000011360615630027167 5ustar ././@LongLink0000000000000000000000000000014700000000000011567 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/docs/spring-webflow-reference/html/images/callouts/9.svglibspring-webflow-2.0-java-2.0.9.RELEASE.orig/docs/spring-webflow-reference/html/images/callouts/9.s0000644000000000000000000000206211360615630027523 0ustar ]> ././@LongLink0000000000000000000000000000015000000000000011561 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/docs/spring-webflow-reference/html/images/callouts/25.svglibspring-webflow-2.0-java-2.0.9.RELEASE.orig/docs/spring-webflow-reference/html/images/callouts/25.0000644000000000000000000000243211360615630027417 0ustar ]> ././@LongLink0000000000000000000000000000015000000000000011561 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/docs/spring-webflow-reference/html/images/callouts/27.svglibspring-webflow-2.0-java-2.0.9.RELEASE.orig/docs/spring-webflow-reference/html/images/callouts/27.0000644000000000000000000000207311360615630027422 0ustar ]> ././@LongLink0000000000000000000000000000015000000000000011561 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/docs/spring-webflow-reference/html/images/callouts/13.svglibspring-webflow-2.0-java-2.0.9.RELEASE.orig/docs/spring-webflow-reference/html/images/callouts/13.0000644000000000000000000000224611360615630027417 0ustar ]> ././@LongLink0000000000000000000000000000015000000000000011561 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/docs/spring-webflow-reference/html/images/callouts/19.svglibspring-webflow-2.0-java-2.0.9.RELEASE.orig/docs/spring-webflow-reference/html/images/callouts/19.0000644000000000000000000000225511360615630027425 0ustar ]> ././@LongLink0000000000000000000000000000015000000000000011561 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/docs/spring-webflow-reference/html/images/callouts/16.svglibspring-webflow-2.0-java-2.0.9.RELEASE.orig/docs/spring-webflow-reference/html/images/callouts/16.0000644000000000000000000000232411360615630027417 0ustar ]> ././@LongLink0000000000000000000000000000014700000000000011567 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/docs/spring-webflow-reference/html/images/callouts/5.svglibspring-webflow-2.0-java-2.0.9.RELEASE.orig/docs/spring-webflow-reference/html/images/callouts/5.s0000644000000000000000000000170711360615630027524 0ustar ]> ././@LongLink0000000000000000000000000000015000000000000011561 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/docs/spring-webflow-reference/html/images/callouts/23.svglibspring-webflow-2.0-java-2.0.9.RELEASE.orig/docs/spring-webflow-reference/html/images/callouts/23.0000644000000000000000000000260311360615630027415 0ustar ]> ././@LongLink0000000000000000000000000000015000000000000011561 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/docs/spring-webflow-reference/html/images/callouts/30.svglibspring-webflow-2.0-java-2.0.9.RELEASE.orig/docs/spring-webflow-reference/html/images/callouts/30.0000644000000000000000000000255311360615630027417 0ustar ]> ././@LongLink0000000000000000000000000000015000000000000011561 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/docs/spring-webflow-reference/html/images/callouts/10.pnglibspring-webflow-2.0-java-2.0.9.RELEASE.orig/docs/spring-webflow-reference/html/images/callouts/10.0000644000000000000000000000055111360615630027411 0ustar ‰PNG  IHDR s;bKGDª#2ƒIDATxÚ%Ž¡!C#‘H,‰œN^ [¶p‰\»%Œ¤${‰Ì;‹û/yI@ò’à¥l\â\òyˆSM³}ßi㎋ªŠs¢à×uœÈŒèºËÿaˆXÌ  ÷eøÚ­ÀÜvù¶G¶j…É!=£dçRµ;?Ý¢CbË kCtEXtSoftware@(#)ImageMagick 4.2.8 99/08/01 cristy@mystic.es.dupont.com‘º!¸*tEXtSignature386e83bb9bdfba3227f58bb897e2c8a5Ÿ+ tEXtPage12x12+0+0„m»}IEND®B`‚././@LongLink0000000000000000000000000000014700000000000011567 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/docs/spring-webflow-reference/html/images/callouts/5.giflibspring-webflow-2.0-java-2.0.9.RELEASE.orig/docs/spring-webflow-reference/html/images/callouts/5.g0000644000000000000000000000162411360615630027506 0ustar GIF89a çÿ  !!!"""###$$$%%%&&&'''((()))***+++,,,---...///000111222333444555666777888999:::;;;<<<===>>>???@@@AAABBBCCCDDDEEEFFFGGGHHHIIIJJJKKKLLLMMMNNNOOOPPPQQQRRRSSSTTTUUUVVVWWWXXXYYYZZZ[[[\\\]]]^^^___```aaabbbcccdddeeefffggghhhiiijjjkkklllmmmnnnooopppqqqrrrssstttuuuvvvwwwxxxyyyzzz{{{|||}}}~~~€€€‚‚‚ƒƒƒ„„„………†††‡‡‡ˆˆˆ‰‰‰ŠŠŠ‹‹‹ŒŒŒŽŽŽ‘‘‘’’’“““”””•••–––———˜˜˜™™™ššš›››œœœžžžŸŸŸ   ¡¡¡¢¢¢£££¤¤¤¥¥¥¦¦¦§§§¨¨¨©©©ªªª«««¬¬¬­­­®®®¯¯¯°°°±±±²²²³³³´´´µµµ¶¶¶···¸¸¸¹¹¹ººº»»»¼¼¼½½½¾¾¾¿¿¿ÀÀÀÁÁÁÂÂÂÃÃÃÄÄÄÅÅÅÆÆÆÇÇÇÈÈÈÉÉÉÊÊÊËËËÌÌÌÍÍÍÎÎÎÏÏÏÐÐÐÑÑÑÒÒÒÓÓÓÔÔÔÕÕÕÖÖÖ×××ØØØÙÙÙÚÚÚÛÛÛÜÜÜÝÝÝÞÞÞßßßàààáááâââãããäääåååæææçççèèèéééêêêëëëìììíííîîîïïïðððñññòòòóóóôôôõõõööö÷÷÷øøøùùùúúúûûûüüüýýýþþþÿÿÿ!ùþ, qý 䔄Œ*Ì EŠ)ÄX Ç¿w•HᯀŠÿ|ÉH#ÈVΉÃG‹„”œãôK!}dô®¦IZ>R:÷1†G–ÿ”„ðFi§¿ ½»W ÂFЬä¨Ð%† ;././@LongLink0000000000000000000000000000015000000000000011561 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/docs/spring-webflow-reference/html/images/callouts/14.giflibspring-webflow-2.0-java-2.0.9.RELEASE.orig/docs/spring-webflow-reference/html/images/callouts/14.0000644000000000000000000000031511360615630027413 0ustar GIF89a „ 555999FFFLLL[[[```{{{ƒƒƒ‹‹‹•••œœœ¥¥¥²²²½½½ÆÆÆÊÊÊÕÕÕÚÚÚãããíííñññþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ!ù, Jà'~$hUìð¤B°ˆáŒÇ’%)àQI(ÅÄŠ$ $À5‹‡…"x}€°0Ž*–:Œ¢ÌZ^Ô‡b’Ûí!;././@LongLink0000000000000000000000000000014700000000000011567 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/docs/spring-webflow-reference/html/images/callouts/9.giflibspring-webflow-2.0-java-2.0.9.RELEASE.orig/docs/spring-webflow-reference/html/images/callouts/9.g0000644000000000000000000000163311360615630027512 0ustar GIF89a çÿ  !!!"""###$$$%%%&&&'''((()))***+++,,,---...///000111222333444555666777888999:::;;;<<<===>>>???@@@AAABBBCCCDDDEEEFFFGGGHHHIIIJJJKKKLLLMMMNNNOOOPPPQQQRRRSSSTTTUUUVVVWWWXXXYYYZZZ[[[\\\]]]^^^___```aaabbbcccdddeeefffggghhhiiijjjkkklllmmmnnnooopppqqqrrrssstttuuuvvvwwwxxxyyyzzz{{{|||}}}~~~€€€‚‚‚ƒƒƒ„„„………†††‡‡‡ˆˆˆ‰‰‰ŠŠŠ‹‹‹ŒŒŒŽŽŽ‘‘‘’’’“““”””•••–––———˜˜˜™™™ššš›››œœœžžžŸŸŸ   ¡¡¡¢¢¢£££¤¤¤¥¥¥¦¦¦§§§¨¨¨©©©ªªª«««¬¬¬­­­®®®¯¯¯°°°±±±²²²³³³´´´µµµ¶¶¶···¸¸¸¹¹¹ººº»»»¼¼¼½½½¾¾¾¿¿¿ÀÀÀÁÁÁÂÂÂÃÃÃÄÄÄÅÅÅÆÆÆÇÇÇÈÈÈÉÉÉÊÊÊËËËÌÌÌÍÍÍÎÎÎÏÏÏÐÐÐÑÑÑÒÒÒÓÓÓÔÔÔÕÕÕÖÖÖ×××ØØØÙÙÙÚÚÚÛÛÛÜÜÜÝÝÝÞÞÞßßßàààáááâââãããäääåååæææçççèèèéééêêêëëëìììíííîîîïïïðððñññòòòóóóôôôõõõööö÷÷÷øøøùùùúúúûûûüüüýýýþþþÿÿÿ!ùþ, xý l%%E)­* s(TA+kçJEôתáo0ÜÓÒE¥:°¦@ ÷€Ù«aȆz½;w®–M†6 °F©aŒ–Bî…Pò/GCFþœhõïÝš†)ưÙ@ o ýQŠA ¨;././@LongLink0000000000000000000000000000015000000000000011561 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/docs/spring-webflow-reference/html/images/callouts/14.svglibspring-webflow-2.0-java-2.0.9.RELEASE.orig/docs/spring-webflow-reference/html/images/callouts/14.0000644000000000000000000000161211360615630027414 0ustar ]> ././@LongLink0000000000000000000000000000015000000000000011561 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/docs/spring-webflow-reference/html/images/callouts/11.pnglibspring-webflow-2.0-java-2.0.9.RELEASE.orig/docs/spring-webflow-reference/html/images/callouts/11.0000644000000000000000000000106511360615630027413 0ustar ‰PNG  IHDR Ù˰ pHYsttÞfxtIMEÒ-'<Ùj€tEXtAuthor©®ÌH tEXtDescription !# tEXtCopyright¬Ì:tEXtCreation time5÷ tEXtSoftware]pÿ: tEXtDisclaimer·À´tEXtWarningÀæ‡tEXtSourceõÿƒëtEXtCommentöÌ–¿tEXtTitle¨îÒ'IDATxœu­ª„pÅÏ_ š?‚}‹I6 ‚XEabƒ¯ad@ƒÙlÛ´ÍlŒ êÜ ë•ûñ‹3ç̜ÈÖuíºNMÓp†ˆˆhš¦$ITU݆†aTUE@DëºÞn7]×mÛÀó|EÇ=ŸÏoQ–e×ëõý~E¡ëzY–}ß¡m["â¤iz¿ß§i¢(ÛÓqó<ß3I’Ä{<EQ0Æ,ËÚ.ˆãx¿$IÒÑñ\v[àxž‡ð}·v]'Ëòo…ëºË²ì툨išËårV„a8 öeGˆyžëº~½^¢(:Žcšæa`?’þÉ,¬”红IEND®B`‚././@LongLink0000000000000000000000000000014700000000000011567 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/docs/spring-webflow-reference/html/images/callouts/2.svglibspring-webflow-2.0-java-2.0.9.RELEASE.orig/docs/spring-webflow-reference/html/images/callouts/2.s0000644000000000000000000000163611360615630027522 0ustar ]> ././@LongLink0000000000000000000000000000015000000000000011561 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/docs/spring-webflow-reference/html/images/callouts/11.giflibspring-webflow-2.0-java-2.0.9.RELEASE.orig/docs/spring-webflow-reference/html/images/callouts/11.0000644000000000000000000000031211360615630027405 0ustar GIF89a „ $$$)))222;;;CCCSSSeeeiii{{{†††———¢¢¢®®®³³³¸¸¸ÄÄÄÍÍÍÒÒÒÛÛÛãããìììðððþþþÿÿÿÿÿÿÿÿÿ!ù, Gà'ŠÙhŠŒÄt&ñ&@4BÆ% “‘áa‘,*>CPJ‡dB4pB“ ÑÂ]¹>ÕjŒ0UcÀôô¡4¶|;././@LongLink0000000000000000000000000000015000000000000011561 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/docs/spring-webflow-reference/html/images/callouts/11.svglibspring-webflow-2.0-java-2.0.9.RELEASE.orig/docs/spring-webflow-reference/html/images/callouts/11.0000644000000000000000000000147311360615630027416 0ustar ]> ././@LongLink0000000000000000000000000000014700000000000011567 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/docs/spring-webflow-reference/html/images/callouts/2.giflibspring-webflow-2.0-java-2.0.9.RELEASE.orig/docs/spring-webflow-reference/html/images/callouts/2.g0000644000000000000000000000161311360615630027501 0ustar GIF89a çÿ  !!!"""###$$$%%%&&&'''((()))***+++,,,---...///000111222333444555666777888999:::;;;<<<===>>>???@@@AAABBBCCCDDDEEEFFFGGGHHHIIIJJJKKKLLLMMMNNNOOOPPPQQQRRRSSSTTTUUUVVVWWWXXXYYYZZZ[[[\\\]]]^^^___```aaabbbcccdddeeefffggghhhiiijjjkkklllmmmnnnooopppqqqrrrssstttuuuvvvwwwxxxyyyzzz{{{|||}}}~~~€€€‚‚‚ƒƒƒ„„„………†††‡‡‡ˆˆˆ‰‰‰ŠŠŠ‹‹‹ŒŒŒŽŽŽ‘‘‘’’’“““”””•••–––———˜˜˜™™™ššš›››œœœžžžŸŸŸ   ¡¡¡¢¢¢£££¤¤¤¥¥¥¦¦¦§§§¨¨¨©©©ªªª«««¬¬¬­­­®®®¯¯¯°°°±±±²²²³³³´´´µµµ¶¶¶···¸¸¸¹¹¹ººº»»»¼¼¼½½½¾¾¾¿¿¿ÀÀÀÁÁÁÂÂÂÃÃÃÄÄÄÅÅÅÆÆÆÇÇÇÈÈÈÉÉÉÊÊÊËËËÌÌÌÍÍÍÎÎÎÏÏÏÐÐÐÑÑÑÒÒÒÓÓÓÔÔÔÕÕÕÖÖÖ×××ØØØÙÙÙÚÚÚÛÛÛÜÜÜÝÝÝÞÞÞßßßàààáááâââãããäääåååæææçççèèèéééêêêëëëìììíííîîîïïïðððñññòòòóóóôôôõõõööö÷÷÷øøøùùùúúúûûûüüüýýýþþþÿÿÿ!ùÿ, hÿ ¤”„œ*Œ@Š c,ÂÚ¹wÆ È¨a)kïuÀˆ!É= ½ÕŠˆ ¡Ë÷æ4DÐÒ¥’sµj"0IòÊ—#×Ü#††Œþ1ät®é9”ò|©P`Iš9() ;././@LongLink0000000000000000000000000000014700000000000011567 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/docs/spring-webflow-reference/html/images/callouts/7.pnglibspring-webflow-2.0-java-2.0.9.RELEASE.orig/docs/spring-webflow-reference/html/images/callouts/7.p0000644000000000000000000000053011360615630027514 0ustar ‰PNG  IHDR s;bKGDª#2rIDATxÚ%Ž­…0 „OV"Y!²²‰¬ìL•O¾•¬Á Hdä‘+‰H¾äò’£ší‡“ ×e _ÊÐpD—²ã„l½ðC›0T+ÈÊ«+¤® ’VA†jÝ“ ƒ{ŒO•9ølsLGÉIÉz¼ó>61¿GVSCtEXtSoftware@(#)ImageMagick 4.2.8 99/08/01 cristy@mystic.es.dupont.com‘º!¸*tEXtSignature298368142ac43cebd2586d8d1137c8df&9é™tEXtPage12x12+0+0„m»}IEND®B`‚././@LongLink0000000000000000000000000000015000000000000011561 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/docs/spring-webflow-reference/html/images/callouts/28.svglibspring-webflow-2.0-java-2.0.9.RELEASE.orig/docs/spring-webflow-reference/html/images/callouts/28.0000644000000000000000000000303211360615630027417 0ustar ]> ././@LongLink0000000000000000000000000000015000000000000011561 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/docs/spring-webflow-reference/html/images/callouts/15.pnglibspring-webflow-2.0-java-2.0.9.RELEASE.orig/docs/spring-webflow-reference/html/images/callouts/15.0000644000000000000000000000120011360615630027406 0ustar ‰PNG  IHDR Ù˰ pHYsttÞfxtIMEÒ0 ÏJtEXtAuthor©®ÌH tEXtDescription !# tEXtCopyright¬Ì:tEXtCreation time5÷ tEXtSoftware]pÿ: tEXtDisclaimer·À´tEXtWarningÀæ‡tEXtSourceõÿƒëtEXtCommentöÌ–¿tEXtTitle¨îÒ'IDATxœu1Ë‚`…¯E`59¶‰-A´ôZ[… ¦ÖœªÅ¡Æhr ¢ŸÑ/h1A¤-§—‚"Éè6B||g¼çœËáˆ":Çã1›Í6›ÍB¡€TDDDžç5ô˜ÉdæóùûýN\ˆ8纮ëº.Ëòv»µ,KÅË墪ªeYßOƒÁ`8FQ´\.kµZÇ‹Åb2™H’äº.1"Úl6Š¢ì÷{†a0ÆF£Q¹\~½^»Ý{<×ëu6›Aà|>O§ÓV«ešf©T Óe¹X,¦“Ûív§ÓÉårq?ŸÏjµ € ‚Ðï÷xžçû¾ã8·ÛmÈ”‘L?IDATµZÇãûýÞëõ¾Ã9皦álÛN|9N§n·+ŠbbW*•õzýÃ)­rÎ]×Íçóõz=-ø ý§Ç!®¬’H¨IEND®B`‚././@LongLink0000000000000000000000000000015000000000000011561 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/docs/spring-webflow-reference/html/images/callouts/18.svglibspring-webflow-2.0-java-2.0.9.RELEASE.orig/docs/spring-webflow-reference/html/images/callouts/18.0000644000000000000000000000247311360615630027426 0ustar ]> ././@LongLink0000000000000000000000000000015000000000000011561 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/docs/spring-webflow-reference/html/images/callouts/10.svglibspring-webflow-2.0-java-2.0.9.RELEASE.orig/docs/spring-webflow-reference/html/images/callouts/10.0000644000000000000000000000202611360615630027410 0ustar ]> ././@LongLink0000000000000000000000000000014700000000000011567 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/docs/spring-webflow-reference/html/images/callouts/9.pnglibspring-webflow-2.0-java-2.0.9.RELEASE.orig/docs/spring-webflow-reference/html/images/callouts/9.p0000644000000000000000000000054511360615630027524 0ustar ‰PNG  IHDR s;bKGDª#2IDATxÚŽ!„0 GFVb‘ÈJ,²¹WX‰ä È^Y¹’kTb++#³©É{“?/ù˜YÙ—y/j†é!ÀÚRj»”Ç+“~ “àöEœ#y@„§·öà·‘š!âî¦s².Ôg±þ…E±‡íÒëOÍr /¯óŒP8bÙÒûCtEXtSoftware@(#)ImageMagick 4.2.8 99/08/01 cristy@mystic.es.dupont.com‘º!¸*tEXtSignature34623e5e4d48310e409b280afe247602Ô14$tEXtPage12x12+0+0„m»}IEND®B`‚././@LongLink0000000000000000000000000000014700000000000011567 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/docs/spring-webflow-reference/html/images/callouts/1.pnglibspring-webflow-2.0-java-2.0.9.RELEASE.orig/docs/spring-webflow-reference/html/images/callouts/1.p0000644000000000000000000000051111360615630027505 0ustar ‰PNG  IHDR s;bKGDª#2cIDATxÚUޱ À0¿¤ô.)½Bf£té6#d¬Á”H¢(ð'¤ÿ‡»ÍÑÚXæW¨¬ 9c±A€M-!d>°0(Ï* ?ðœ/Èc}ÜÖ®5u„‰ÆŒ:Àx,ìÁT´CtEXtSoftware@(#)ImageMagick 4.2.8 99/08/01 cristy@mystic.es.dupont.com‘º!¸*tEXtSignature58a072e070da22f6135cbd3e414546f9hj!ítEXtPage12x12+0+0„m»}IEND®B`‚././@LongLink0000000000000000000000000000014700000000000011567 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/docs/spring-webflow-reference/html/images/callouts/1.svglibspring-webflow-2.0-java-2.0.9.RELEASE.orig/docs/spring-webflow-reference/html/images/callouts/1.s0000644000000000000000000000127711360615630027522 0ustar ]> ././@LongLink0000000000000000000000000000015000000000000011561 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/docs/spring-webflow-reference/html/images/callouts/29.svglibspring-webflow-2.0-java-2.0.9.RELEASE.orig/docs/spring-webflow-reference/html/images/callouts/29.0000644000000000000000000000260711360615630027427 0ustar ]> ././@LongLink0000000000000000000000000000014700000000000011567 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/docs/spring-webflow-reference/html/images/callouts/4.pnglibspring-webflow-2.0-java-2.0.9.RELEASE.orig/docs/spring-webflow-reference/html/images/callouts/4.p0000644000000000000000000000053111360615630027512 0ustar ‰PNG  IHDR s;bKGDª#2sIDATxÚ!…0C#‘•Xdee¯P‰Ä"‘\£òËo+{%leåʰ!bç½ÙÌ$ûci 1 qá dCwC‚ôèmJVàÁ$‹Ë6ïhu•œTšj~<_­Â²ä¹|ËÀù™ó㣴 KªF¾ê6Ž[ê¼ÃCtEXtSoftware@(#)ImageMagick 4.2.8 99/08/01 cristy@mystic.es.dupont.com‘º!¸*tEXtSignature9f82fcac9e039cbdb72380a4591324f5€»øvtEXtPage12x12+0+0„m»}IEND®B`‚././@LongLink0000000000000000000000000000015000000000000011561 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/docs/spring-webflow-reference/html/images/callouts/17.svglibspring-webflow-2.0-java-2.0.9.RELEASE.orig/docs/spring-webflow-reference/html/images/callouts/17.0000644000000000000000000000154211360615630027421 0ustar ]> ././@LongLink0000000000000000000000000000014700000000000011567 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/docs/spring-webflow-reference/html/images/callouts/5.pnglibspring-webflow-2.0-java-2.0.9.RELEASE.orig/docs/spring-webflow-reference/html/images/callouts/5.p0000644000000000000000000000053411360615630027516 0ustar ‰PNG  IHDR s;bKGDª#2vIDATxÚŽ¡Ä0  †ª—ðõ†~+_Bh  áýIlgvö’—ÅÏM‚áÖZmÖÃmã†Àwb$|SÜq$Ìñ^€%Ô)%¤•°ÞÔèõYP3ö]2­QÙjµ%—›õ|ç#[7/B_ûCtEXtSoftware@(#)ImageMagick 4.2.8 99/08/01 cristy@mystic.es.dupont.com‘º!¸*tEXtSignaturefe690463379eb25e562fcc8cc9b3c7e0ß²9žtEXtPage12x12+0+0„m»}IEND®B`‚././@LongLink0000000000000000000000000000014700000000000011567 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/docs/spring-webflow-reference/html/images/callouts/8.pnglibspring-webflow-2.0-java-2.0.9.RELEASE.orig/docs/spring-webflow-reference/html/images/callouts/8.p0000644000000000000000000000054511360615630027523 0ustar ‰PNG  IHDR s;bKGDª#2IDATxÚŽ¡Ã0  –†v…¬Ð¼‚a` × 544T¥ é?Ý»/TõÜ—¸W[Б!Dغ…õ¹[`TÈ3Ð(”fñ•põçï¹g¿ˆcµÁÙ3Á1–Ø¿.0µ”>Џú_ê³ +U­9Æäïü£Ÿ9ºFbíCtEXtSoftware@(#)ImageMagick 4.2.8 99/08/01 cristy@mystic.es.dupont.com‘º!¸*tEXtSignature57be19505c03f92f3847f535e9b114e9Ù4kCtEXtPage12x12+0+0„m»}IEND®B`‚././@LongLink0000000000000000000000000000014700000000000011567 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/docs/spring-webflow-reference/html/images/callouts/3.svglibspring-webflow-2.0-java-2.0.9.RELEASE.orig/docs/spring-webflow-reference/html/images/callouts/3.s0000644000000000000000000000205311360615630027515 0ustar ]> ././@LongLink0000000000000000000000000000014700000000000011567 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/docs/spring-webflow-reference/html/images/callouts/3.giflibspring-webflow-2.0-java-2.0.9.RELEASE.orig/docs/spring-webflow-reference/html/images/callouts/3.g0000644000000000000000000000162211360615630027502 0ustar GIF89a çÿ  !!!"""###$$$%%%&&&'''((()))***+++,,,---...///000111222333444555666777888999:::;;;<<<===>>>???@@@AAABBBCCCDDDEEEFFFGGGHHHIIIJJJKKKLLLMMMNNNOOOPPPQQQRRRSSSTTTUUUVVVWWWXXXYYYZZZ[[[\\\]]]^^^___```aaabbbcccdddeeefffggghhhiiijjjkkklllmmmnnnooopppqqqrrrssstttuuuvvvwwwxxxyyyzzz{{{|||}}}~~~€€€‚‚‚ƒƒƒ„„„………†††‡‡‡ˆˆˆ‰‰‰ŠŠŠ‹‹‹ŒŒŒŽŽŽ‘‘‘’’’“““”””•••–––———˜˜˜™™™ššš›››œœœžžžŸŸŸ   ¡¡¡¢¢¢£££¤¤¤¥¥¥¦¦¦§§§¨¨¨©©©ªªª«««¬¬¬­­­®®®¯¯¯°°°±±±²²²³³³´´´µµµ¶¶¶···¸¸¸¹¹¹ººº»»»¼¼¼½½½¾¾¾¿¿¿ÀÀÀÁÁÁÂÂÂÃÃÃÄÄÄÅÅÅÆÆÆÇÇÇÈÈÈÉÉÉÊÊÊËËËÌÌÌÍÍÍÎÎÎÏÏÏÐÐÐÑÑÑÒÒÒÓÓÓÔÔÔÕÕÕÖÖÖ×××ØØØÙÙÙÚÚÚÛÛÛÜÜÜÝÝÝÞÞÞßßßàààáááâââãããäääåååæææçççèèèéééêêêëëëìììíííîîîïïïðððñññòòòóóóôôôõõõööö÷÷÷øøøùùùúúúûûûüüüýýýþþþÿÿÿ!ùþ, oý ¤”„œ*ŒAŽÄX‚7kÞœAèsÎ!€ðoÍGF +¦¨XòcŒˆ´:g &˜sŒ¹g²aJ-8«å2(£w1r¼#tÒC­îÝkq¢À• cZUˆrd J ;././@LongLink0000000000000000000000000000014700000000000011567 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/docs/spring-webflow-reference/html/images/callouts/1.giflibspring-webflow-2.0-java-2.0.9.RELEASE.orig/docs/spring-webflow-reference/html/images/callouts/1.g0000644000000000000000000000157111360615630027503 0ustar GIF89a çÿ  !!!"""###$$$%%%&&&'''((()))***+++,,,---...///000111222333444555666777888999:::;;;<<<===>>>???@@@AAABBBCCCDDDEEEFFFGGGHHHIIIJJJKKKLLLMMMNNNOOOPPPQQQRRRSSSTTTUUUVVVWWWXXXYYYZZZ[[[\\\]]]^^^___```aaabbbcccdddeeefffggghhhiiijjjkkklllmmmnnnooopppqqqrrrssstttuuuvvvwwwxxxyyyzzz{{{|||}}}~~~€€€‚‚‚ƒƒƒ„„„………†††‡‡‡ˆˆˆ‰‰‰ŠŠŠ‹‹‹ŒŒŒŽŽŽ‘‘‘’’’“““”””•••–––———˜˜˜™™™ššš›››œœœžžžŸŸŸ   ¡¡¡¢¢¢£££¤¤¤¥¥¥¦¦¦§§§¨¨¨©©©ªªª«««¬¬¬­­­®®®¯¯¯°°°±±±²²²³³³´´´µµµ¶¶¶···¸¸¸¹¹¹ººº»»»¼¼¼½½½¾¾¾¿¿¿ÀÀÀÁÁÁÂÂÂÃÃÃÄÄÄÅÅÅÆÆÆÇÇÇÈÈÈÉÉÉÊÊÊËËËÌÌÌÍÍÍÎÎÎÏÏÏÐÐÐÑÑÑÒÒÒÓÓÓÔÔÔÕÕÕÖÖÖ×××ØØØÙÙÙÚÚÚÛÛÛÜÜÜÝÝÝÞÞÞßßßàààáááâââãããäääåååæææçççèèèéééêêêëëëìììíííîîîïïïðððñññòòòóóóôôôõõõööö÷÷÷øøøùùùúúúûûûüüüýýýþþþÿÿÿ!ùÿ, Vÿ ¤”„œ*Œ‚ c,l€‘3Š5TrîÞEŠŒR,õ1"Š8•tx’¢J”D6|‰Q£Ë•ŒþÉdT £Bˆ(HTø/$9() ;././@LongLink0000000000000000000000000000014700000000000011567 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/docs/spring-webflow-reference/html/images/callouts/7.giflibspring-webflow-2.0-java-2.0.9.RELEASE.orig/docs/spring-webflow-reference/html/images/callouts/7.g0000644000000000000000000000161311360615630027506 0ustar GIF89a çÿ  !!!"""###$$$%%%&&&'''((()))***+++,,,---...///000111222333444555666777888999:::;;;<<<===>>>???@@@AAABBBCCCDDDEEEFFFGGGHHHIIIJJJKKKLLLMMMNNNOOOPPPQQQRRRSSSTTTUUUVVVWWWXXXYYYZZZ[[[\\\]]]^^^___```aaabbbcccdddeeefffggghhhiiijjjkkklllmmmnnnooopppqqqrrrssstttuuuvvvwwwxxxyyyzzz{{{|||}}}~~~€€€‚‚‚ƒƒƒ„„„………†††‡‡‡ˆˆˆ‰‰‰ŠŠŠ‹‹‹ŒŒŒŽŽŽ‘‘‘’’’“““”””•••–––———˜˜˜™™™ššš›››œœœžžžŸŸŸ   ¡¡¡¢¢¢£££¤¤¤¥¥¥¦¦¦§§§¨¨¨©©©ªªª«««¬¬¬­­­®®®¯¯¯°°°±±±²²²³³³´´´µµµ¶¶¶···¸¸¸¹¹¹ººº»»»¼¼¼½½½¾¾¾¿¿¿ÀÀÀÁÁÁÂÂÂÃÃÃÄÄÄÅÅÅÆÆÆÇÇÇÈÈÈÉÉÉÊÊÊËËËÌÌÌÍÍÍÎÎÎÏÏÏÐÐÐÑÑÑÒÒÒÓÓÓÔÔÔÕÕÕÖÖÖ×××ØØØÙÙÙÚÚÚÛÛÛÜÜÜÝÝÝÞÞÞßßßàààáááâââãããäääåååæææçççèèèéééêêêëëëìììíííîîîïïïðððñññòòòóóóôôôõõõööö÷÷÷øøøùùùúúúûûûüüüýýýþþþÿÿÿ!ùþ, hý ¬%%E %­*”CCr(Ô Õ¿‹ÿ¬ˆá¯€1œ£€Iµ<~Ì$)÷Z~D ó£µZ.œÌñOŠË8?2º‡À%#J>Ö ú1…B!.›*È))Ž ;././@LongLink0000000000000000000000000000014700000000000011567 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/docs/spring-webflow-reference/html/images/callouts/4.svglibspring-webflow-2.0-java-2.0.9.RELEASE.orig/docs/spring-webflow-reference/html/images/callouts/4.s0000644000000000000000000000141711360615630027521 0ustar ]> ././@LongLink0000000000000000000000000000014700000000000011567 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/docs/spring-webflow-reference/html/images/callouts/3.pnglibspring-webflow-2.0-java-2.0.9.RELEASE.orig/docs/spring-webflow-reference/html/images/callouts/3.p0000644000000000000000000000053611360615630027516 0ustar ‰PNG  IHDR s;bKGDª#2xIDATxÚ%N«Ã@ 4ô†^¥´0°+ ì »F``¨a ¡+§&–ÞÓU¹¹ª² qXÒ çqî K ࢵ‚Ð]pêÁ›qðËŸø3×&”=èÛ¿-#—ùõž™S:ºbÁmìRÎ&jçüQ¸5cüëLCtEXtSoftware@(#)ImageMagick 4.2.8 99/08/01 cristy@mystic.es.dupont.com‘º!¸*tEXtSignature80bbda2726ddace8ab8a01f59de2ebdbýutEXtPage12x12+0+0„m»}IEND®B`‚././@LongLink0000000000000000000000000000014700000000000011567 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/docs/spring-webflow-reference/html/images/callouts/2.pnglibspring-webflow-2.0-java-2.0.9.RELEASE.orig/docs/spring-webflow-reference/html/images/callouts/2.p0000644000000000000000000000054111360615630027511 0ustar ‰PNG  IHDR s;bKGDª#2{IDATxÚŽ¡Ã0 D?44,5,ô ]£°°Ð+†f„¬ÐK UÉG¤{º÷u¸ÛÖkí»¹ãSàÞ@¦cB»æïSCá¸hS‰øž¤{ë2y–4Cm¬s^ö¹% Ðû D¯§+O£ŽJ)}‹:TÙ5`Ÿ/£CtEXtSoftware@(#)ImageMagick 4.2.8 99/08/01 cristy@mystic.es.dupont.com‘º!¸*tEXtSignature80eae529c94a7f47deccfada28acb9dfåo± tEXtPage12x12+0+0„m»}IEND®B`‚././@LongLink0000000000000000000000000000014700000000000011567 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/docs/spring-webflow-reference/html/images/callouts/8.svglibspring-webflow-2.0-java-2.0.9.RELEASE.orig/docs/spring-webflow-reference/html/images/callouts/8.s0000644000000000000000000000230011360615630027515 0ustar ]> ././@LongLink0000000000000000000000000000015000000000000011561 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/docs/spring-webflow-reference/html/images/callouts/12.giflibspring-webflow-2.0-java-2.0.9.RELEASE.orig/docs/spring-webflow-reference/html/images/callouts/12.0000644000000000000000000000032211360615630027407 0ustar GIF89a „ +++222:::DDDOOOSSS^^^cccmmmttt‚‚‚ŒŒŒ“““ššš¥¥¥³³³»»»ÄÄÄÌÌÌÛÛÛãããòòòþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ!ù, Oà'ZM²Hbú9@ÛêP eL’þD‰ ÀòÁ 4@ "<Š-šÀb¢€ÑLšÑp è‚ áj .ªOä0(40ñ¼~ÿ ;././@LongLink0000000000000000000000000000015000000000000011561 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/docs/spring-webflow-reference/html/images/callouts/20.svglibspring-webflow-2.0-java-2.0.9.RELEASE.orig/docs/spring-webflow-reference/html/images/callouts/20.0000644000000000000000000000234111360615630027411 0ustar ]> ././@LongLink0000000000000000000000000000015000000000000011561 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/docs/spring-webflow-reference/html/images/callouts/12.pnglibspring-webflow-2.0-java-2.0.9.RELEASE.orig/docs/spring-webflow-reference/html/images/callouts/12.0000644000000000000000000000115111360615630027410 0ustar ‰PNG  IHDR Ù˰ pHYsttÞfxtIMEÒ.UF¡/tEXtAuthor©®ÌH tEXtDescription !# tEXtCopyright¬Ì:tEXtCreation time5÷ tEXtSoftware]pÿ: tEXtDisclaimer·À´tEXtWarningÀæ‡tEXtSourceõÿƒëtEXtCommentöÌ–¿tEXtTitle¨îÒ'IDATxœ…!«Â`…ÏÆa`R†,/É+V5¶¡¬ì¬ 3,ü+KV-¶™-³òeƒÅmç†ÝëåÞpïSÏyyB€óùœeYQÝnw<{ž×jµš$IFQ„ŸŒF£ÇãѤ ¹ÝnÛíöápX,Ãáðv»=ŸÏù|îûþg©®k˲N§“”2‚8Ž×ëµïû×ë@žç$!„àºîn· ‚@§Ó9išX.—$5)esÑLÑu}¿ßkšæy€×ë@ ½^ï½7Š"Çq„I’4($W«U†Óéô~¿†a€ªª.—Kžçªª‚dY–³Ùì—'ð^E(IDAT‚~¿_Å·’RÊÍf3™LLÓ´m; C!¿PÞÆÿ@ý·àk«uˆO4ºIEND®B`‚././@LongLink0000000000000000000000000000014700000000000011567 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/docs/spring-webflow-reference/html/images/callouts/8.giflibspring-webflow-2.0-java-2.0.9.RELEASE.orig/docs/spring-webflow-reference/html/images/callouts/8.g0000644000000000000000000000162611360615630027513 0ustar GIF89a çÿ  !!!"""###$$$%%%&&&'''((()))***+++,,,---...///000111222333444555666777888999:::;;;<<<===>>>???@@@AAABBBCCCDDDEEEFFFGGGHHHIIIJJJKKKLLLMMMNNNOOOPPPQQQRRRSSSTTTUUUVVVWWWXXXYYYZZZ[[[\\\]]]^^^___```aaabbbcccdddeeefffggghhhiiijjjkkklllmmmnnnooopppqqqrrrssstttuuuvvvwwwxxxyyyzzz{{{|||}}}~~~€€€‚‚‚ƒƒƒ„„„………†††‡‡‡ˆˆˆ‰‰‰ŠŠŠ‹‹‹ŒŒŒŽŽŽ‘‘‘’’’“““”””•••–––———˜˜˜™™™ššš›››œœœžžžŸŸŸ   ¡¡¡¢¢¢£££¤¤¤¥¥¥¦¦¦§§§¨¨¨©©©ªªª«««¬¬¬­­­®®®¯¯¯°°°±±±²²²³³³´´´µµµ¶¶¶···¸¸¸¹¹¹ººº»»»¼¼¼½½½¾¾¾¿¿¿ÀÀÀÁÁÁÂÂÂÃÃÃÄÄÄÅÅÅÆÆÆÇÇÇÈÈÈÉÉÉÊÊÊËËËÌÌÌÍÍÍÎÎÎÏÏÏÐÐÐÑÑÑÒÒÒÓÓÓÔÔÔÕÕÕÖÖÖ×××ØØØÙÙÙÚÚÚÛÛÛÜÜÜÝÝÝÞÞÞßßßàààáááâââãããäääåååæææçççèèèéééêêêëëëìììíííîîîïïïðððñññòòòóóóôôôõõõööö÷÷÷øøøùùùúúúûûûüüüýýýþþþÿÿÿ!ùþ, sý l%%E)¥*T„ s(Ò°”7k½ ˆá¯TC%÷4ž›ÓCBB"x·¦a Ô:wAC0h¹'E Ë›'KõjØjèFæ¼3xŽPIP:÷Ž’MŽOÆ QaG%!BI(0 ;././@LongLink0000000000000000000000000000015000000000000011561 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/docs/spring-webflow-reference/html/images/callouts/15.giflibspring-webflow-2.0-java-2.0.9.RELEASE.orig/docs/spring-webflow-reference/html/images/callouts/15.0000644000000000000000000000032211360615630027412 0ustar GIF89a „ 333999AAANNNTTTeeekkksss}}}ƒƒƒŒŒŒ“““™™™¨¨¨´´´¼¼¼ÂÂÂÔÔÔÙÙÙàààíííôôôþþþÿÿÿÿÿÿÿÿÿÿÿÿ!ù, Oà'~–4èU,à ß€$@Ó,¯¸,4là" 4(ÄFq‰X‘‡ÁQÐ" ʨ¬ÀX&—ÅpDhµr" ¢5ˆÀFË} ;././@LongLink0000000000000000000000000000015000000000000011561 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/docs/spring-webflow-reference/html/images/callouts/24.svglibspring-webflow-2.0-java-2.0.9.RELEASE.orig/docs/spring-webflow-reference/html/images/callouts/24.0000644000000000000000000000215111360615630027414 0ustar ]> ././@LongLink0000000000000000000000000000015000000000000011561 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/docs/spring-webflow-reference/html/images/callouts/10.giflibspring-webflow-2.0-java-2.0.9.RELEASE.orig/docs/spring-webflow-reference/html/images/callouts/10.0000644000000000000000000000164111360615630027412 0ustar GIF89a çÿ  !!!"""###$$$%%%&&&'''((()))***+++,,,---...///000111222333444555666777888999:::;;;<<<===>>>???@@@AAABBBCCCDDDEEEFFFGGGHHHIIIJJJKKKLLLMMMNNNOOOPPPQQQRRRSSSTTTUUUVVVWWWXXXYYYZZZ[[[\\\]]]^^^___```aaabbbcccdddeeefffggghhhiiijjjkkklllmmmnnnooopppqqqrrrssstttuuuvvvwwwxxxyyyzzz{{{|||}}}~~~€€€‚‚‚ƒƒƒ„„„………†††‡‡‡ˆˆˆ‰‰‰ŠŠŠ‹‹‹ŒŒŒŽŽŽ‘‘‘’’’“““”””•••–––———˜˜˜™™™ššš›››œœœžžžŸŸŸ   ¡¡¡¢¢¢£££¤¤¤¥¥¥¦¦¦§§§¨¨¨©©©ªªª«««¬¬¬­­­®®®¯¯¯°°°±±±²²²³³³´´´µµµ¶¶¶···¸¸¸¹¹¹ººº»»»¼¼¼½½½¾¾¾¿¿¿ÀÀÀÁÁÁÂÂÂÃÃÃÄÄÄÅÅÅÆÆÆÇÇÇÈÈÈÉÉÉÊÊÊËËËÌÌÌÍÍÍÎÎÎÏÏÏÐÐÐÑÑÑÒÒÒÓÓÓÔÔÔÕÕÕÖÖÖ×××ØØØÙÙÙÚÚÚÛÛÛÜÜÜÝÝÝÞÞÞßßßàààáááâââãããäääåååæææçççèèèéééêêêëëëìììíííîîîïïïðððñññòòòóóóôôôõõõööö÷÷÷øøøùùùúúúûûûüüüýýýþþþÿÿÿ!ùþ, ~ý 䔄Œ*Ì) ÄXˆ V­Þz“’Â_©ïþY¬`Ž7Œ”Kp"!;././@LongLink0000000000000000000000000000015000000000000011561 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/docs/spring-webflow-reference/html/images/callouts/26.svglibspring-webflow-2.0-java-2.0.9.RELEASE.orig/docs/spring-webflow-reference/html/images/callouts/26.0000644000000000000000000000266311360615630027426 0ustar ]> ././@LongLink0000000000000000000000000000014700000000000011567 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/docs/spring-webflow-reference/html/images/callouts/4.giflibspring-webflow-2.0-java-2.0.9.RELEASE.orig/docs/spring-webflow-reference/html/images/callouts/4.g0000644000000000000000000000161311360615630027503 0ustar GIF89a çÿ  !!!"""###$$$%%%&&&'''((()))***+++,,,---...///000111222333444555666777888999:::;;;<<<===>>>???@@@AAABBBCCCDDDEEEFFFGGGHHHIIIJJJKKKLLLMMMNNNOOOPPPQQQRRRSSSTTTUUUVVVWWWXXXYYYZZZ[[[\\\]]]^^^___```aaabbbcccdddeeefffggghhhiiijjjkkklllmmmnnnooopppqqqrrrssstttuuuvvvwwwxxxyyyzzz{{{|||}}}~~~€€€‚‚‚ƒƒƒ„„„………†††‡‡‡ˆˆˆ‰‰‰ŠŠŠ‹‹‹ŒŒŒŽŽŽ‘‘‘’’’“““”””•••–––———˜˜˜™™™ššš›››œœœžžžŸŸŸ   ¡¡¡¢¢¢£££¤¤¤¥¥¥¦¦¦§§§¨¨¨©©©ªªª«««¬¬¬­­­®®®¯¯¯°°°±±±²²²³³³´´´µµµ¶¶¶···¸¸¸¹¹¹ººº»»»¼¼¼½½½¾¾¾¿¿¿ÀÀÀÁÁÁÂÂÂÃÃÃÄÄÄÅÅÅÆÆÆÇÇÇÈÈÈÉÉÉÊÊÊËËËÌÌÌÍÍÍÎÎÎÏÏÏÐÐÐÑÑÑÒÒÒÓÓÓÔÔÔÕÕÕÖÖÖ×××ØØØÙÙÙÚÚÚÛÛÛÜÜÜÝÝÝÞÞÞßßßàààáááâââãããäääåååæææçççèèèéééêêêëëëìììíííîîîïïïðððñññòòòóóóôôôõõõööö÷÷÷øøøùùùúúúûûûüüüýýýþþþÿÿÿ!ùþ, hý l%%E %¥*T a r,l@É¿9 %¶¢áÜEŠ”6lUêƆ104Ôr½“¨ a2Å=F*c2ó¯gÏR(Rð’"#9†z[ãPaÒ¡R(È)1Ž ;././@LongLink0000000000000000000000000000014700000000000011567 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/docs/spring-webflow-reference/html/images/callouts/7.svglibspring-webflow-2.0-java-2.0.9.RELEASE.orig/docs/spring-webflow-reference/html/images/callouts/7.s0000644000000000000000000000134211360615630027521 0ustar ]> ././@LongLink0000000000000000000000000000015000000000000011561 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/docs/spring-webflow-reference/html/images/callouts/21.svglibspring-webflow-2.0-java-2.0.9.RELEASE.orig/docs/spring-webflow-reference/html/images/callouts/21.0000644000000000000000000000203511360615630027412 0ustar ]> ././@LongLink0000000000000000000000000000015000000000000011561 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/docs/spring-webflow-reference/html/images/callouts/14.pnglibspring-webflow-2.0-java-2.0.9.RELEASE.orig/docs/spring-webflow-reference/html/images/callouts/14.0000644000000000000000000000063311360615630027416 0ustar ‰PNG  IHDR Ù˰bKGDÿÿÿ ½§“ pHYsssŒ"¹tIMEÒ ¨xœ8(IDATxœ}=ªÂ@…O2…ˆ¤Ð¬\ÁÂìÀÙ‚ˆÛ°ÄX¤Ð"¸†Y€;@Æ)l”T!H!„ûŠø¢ðà}ååÜË=ŸCD‘µÖZ;9ç­V DDDqÏf3Çqê¡ïû§Ó‰~qXk¥”ÓéTQ‡¤”Çãñp8|.)¥¶ÛmUUËåçüõz­×ë~¿Ÿç9¹EQh­ƒ 0Æh·ÛQEàù|j­¸Ç£,ËÅb‘¦)€Ýn×étn·›¢ÛíÞïwîx<þ.’çùù|ö¡øƒŠ§’q~IEND®B`‚././@LongLink0000000000000000000000000000015000000000000011561 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/docs/spring-webflow-reference/html/images/callouts/15.svglibspring-webflow-2.0-java-2.0.9.RELEASE.orig/docs/spring-webflow-reference/html/images/callouts/15.0000644000000000000000000000207611360615630027422 0ustar ]> ././@LongLink0000000000000000000000000000014700000000000011567 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/docs/spring-webflow-reference/html/images/callouts/6.svglibspring-webflow-2.0-java-2.0.9.RELEASE.orig/docs/spring-webflow-reference/html/images/callouts/6.s0000644000000000000000000000213611360615630027522 0ustar ]> ././@LongLink0000000000000000000000000000014700000000000011567 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/docs/spring-webflow-reference/html/images/callouts/6.pnglibspring-webflow-2.0-java-2.0.9.RELEASE.orig/docs/spring-webflow-reference/html/images/callouts/6.p0000644000000000000000000000054311360615630027517 0ustar ‰PNG  IHDR s;bKGDª#2}IDATxÚ!Ã0  š ú ýFa¾PXXj˜'”ú ¡†‚‚ªÌnçnöˆˆó©ºµ „oPêHÈÜl\BuNØ­«ð!‹«i`¥À°ÞûdÂÝÛ'äì× ¿ç,ÃË–eøÔ¸g¡NL©¤Lï< ÿV‘õðˆ?³s8ê ¸YCtEXtSoftware@(#)ImageMagick 4.2.8 99/08/01 cristy@mystic.es.dupont.com‘º!¸*tEXtSignatured25d7176d67a038afc1c56558e3dfb1aýõµtEXtPage12x12+0+0„m»}IEND®B`‚././@LongLink0000000000000000000000000000015000000000000011561 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/docs/spring-webflow-reference/html/images/callouts/13.giflibspring-webflow-2.0-java-2.0.9.RELEASE.orig/docs/spring-webflow-reference/html/images/callouts/13.0000644000000000000000000000032111360615630027407 0ustar GIF89a „ ///555<< ]> ././@LongLink0000000000000000000000000000015000000000000011561 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/docs/spring-webflow-reference/html/images/callouts/13.pnglibspring-webflow-2.0-java-2.0.9.RELEASE.orig/docs/spring-webflow-reference/html/images/callouts/13.0000644000000000000000000000115711360615630027417 0ustar ‰PNG  IHDR Ù˰ pHYsttÞfxtIMEÒ.1ã ŒtEXtAuthor©®ÌH tEXtDescription !# tEXtCopyright¬Ì:tEXtCreation time5÷ tEXtSoftware]pÿ: tEXtDisclaimer·À´tEXtWarningÀæ‡tEXtSourceõÿƒëtEXtCommentöÌ–¿tEXtTitle¨îÒ'IDATxœ…!‚p†_ð‚Å9”¯ÌÍH┢3±‰lŒïÃFâ#Ht&EÆþéït÷»ÀÝÜ]¸{òÞçˆeY–¦iUUŠ¢Ìf3Û¶A@ 5M³^¯ñ“ÕjÕ4 ˆ(Š"Y–‡ƒã8“É„1Æ›N§a¶’À9‡ÇãQQ”Åbaš&ç\UÕ^¯çyÞét’$IÌóüv»¹®[–%€ ƒÁn·«ëú~¿ï÷{âãñçy;Ŷí$I–˥뺞Ï'€Ã0:Îëõj%ÇqÆã1c¬( Qu]ÿªÛn·æóùh4êv»žçù¾ßï÷7›Í»îhª§.IDAT|>kšöëMÓ8ço‰ˆ®×kÇ–e©ªjYVÇ—Ë…¾ÚÇÿFü×ð ‘÷¬ÊäC3IEND®B`‚././@LongLink0000000000000000000000000000015000000000000011561 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/docs/spring-webflow-reference/html/images/callouts/22.svglibspring-webflow-2.0-java-2.0.9.RELEASE.orig/docs/spring-webflow-reference/html/images/callouts/22.0000644000000000000000000000237211360615630027417 0ustar ]> libspring-webflow-2.0-java-2.0.9.RELEASE.orig/docs/spring-webflow-reference/html/images/prev.gif0000644000000000000000000000213611360615630027006 0ustar GIF87a&'÷€€€€€€€€€ÀÀÀÀÜÀ¦Êððûÿ@€€€ÿ@@ðʦÿ€¤  €@€ÿ€@@€ÿûð  ¤€€€ÿÿÿÿÿÿÿÿÿÿÿÿ,&'þH° Áƒ*\Ȱ¡Ã‡#@±¢Å‹3R<àŸÇ CŠùƒHª\YÒ$JâsY€Ç˜ñÑ$À#NƒøvNôø³ >¡xŒ¹‘ >¤xŒ¸ñ_A|Px|ØôÀ¿‚ø²zlØUà¿‚øÄþ[Xvà¿‚øÔ&lKð_A|rQXø¯ ¾¼4üW`º ÿÄøÄñøÏá¿‚øüÇð_A|€ þSø¯ >Àÿ!üW`…ÿ þ+ˆ0ÃÿÄØá?ÿ â ÑcA|€‹ÀX9>ÀÎGð>|øðáÇ>|øðDáÇ>|øðáÇ>|ø²âÇ>|øðáÇ>|øàƒ>øàƒ>øàƒ>øàƒTQi$ᄈ)§œrÊÅ;libspring-webflow-2.0-java-2.0.9.RELEASE.orig/docs/spring-webflow-reference/html/images/s2-logo.png0000644000000000000000000002263411360615630027340 0ustar ‰PNG  IHDRÕBOA/ pHYs  šœ cHRMz%€ƒùÿ€éu0ê`:˜o’_ÅF%!IDATxÚì]g|TÅ×>·íÞmémIB„4B $z“^ R¤Y(J³"éJÁ‚ŠÒ;Ò¤7$$ôƦn¶ß2ï‡]R7aw ï?ç—/\îÎÎÎçxÍÜÙy%{]d}ZÉ—Ié&5\Rrž,þ~Yj^ZX󠨉ú{øüïâïaÆ£“·Î¼zìVÊ]^:Mp«ˆ„m×*¡É•&å.|ª<&¢š¸/t·Ú FŽçœx{Þñ¯5\ˆ¿ºéÈöËñ× 2)„`^ÌŒªoR„CˆçZ’°Ë+Ù—”»ÐÀ>õršŒaD€(/(øªÿxÄÿváÀŽ?œ‰»­ y€Ï‚^»`âG˧|ŒaXO阜[ObX®ëé4¡¥ûâ&þÏŠíúïèÍS+v¯¹XÅ ’>C% ŒaÁ¤VLùÄìÊ?X¾ÇTNñ. ðîbØ?ÇD"€Ü¢¼Beqqy ÃÀÀp©½XæéÒL,Õcéx„°ç,K$ )k{¥g BJPÿ;,ÇbNà¸%ŸåxžG|ý]EH‚¨­#lEY‘Z§.Q•ÕßšHH·òlÑ ü%e§,ùiÅoçöË€€ZR}0´sǽ_øÒ2 ·>C†ctvÉOÐÒãã¿v–ùëÑýWŽÜIŽË(Ê{ZªP—£ „');GG©½«—ŸÜoXäK1݆‰kq¹+_üê1¬^Ž—GÈ^,ñóðܱo·ÖÑ²Š•Y‡\M¸¹ò÷õŠR…½Ô~nÌŒþ½k¬–'yi‡¯¸œpãi‰ãØ®m»-¿@@ àØÍSöo*×i]ìgx«_»ž•]ݳþø•£õw!D„‡£{ÿÐ!QýÃ|‚­Â¢e®&\ßåØƒ'óË ËµªBe†ÕGª´ñ»¶æ¤íöwÇ©_m-(ÈZµ"hÕƒ»Øûñ4%4¾uiН \„Uã}xž×û¹½çã2íïß«ÇÖìÝp5ñ¯U ( À ¨:Ü<<,<Õ®U»­ó6v lWµ±+ÞØ}ð; …õ:5<ÚÇÃwòKãfyÝÍÁÅì»Eå%]ߘh!èõ^-Z_[sÒË¥™ñÏܽðõ-'âÎÔJ`ÀpŒá›…Ûg}=­ 3úÝþùO’€‚NïÜþêš“î®ÆÏŽ[ù毶?¿«ÏE‘´t`û^ï¾2»gxK†ôðõ“«~[såá dÐB@’€á€õ!ª]‹ð;›.Ù¢ÿʵªy›?üîø÷b™9êÅ —û|ýö—fÁ—SòKFáf§±š¤#Ža‚tÅ‘ÀÛÍnP£#O¥UÏÿöã͇·ÇP"I¯âàM'Bq 7Ç­xóâWÇäNî¯)!ˆh Å–Yz”‘—¶tÛâ=¬|céÈþfÖd~ú“¼ ÙA-ÉNO¸ûø—K³ìÂÜ¿[²ûü^V«¡(!Tj2õ…Wg}=1óQ~ΰw ¡èIVrRVJþ¬ë* –cŽ\þõÏ}ó_™]ñæýô‡ëöo¡¨r=´N®ŸÿæÀ‰u…ùG®ŸÌÍO¯ õù¥ê²WW¼‘ô\ðÃtlçnÎTå•üÆòå2ÌF²¼&µà 7»β^YÅ;“ó—!ÄØ6æsÓcÀhÝaØ‚Ñskƒ¯†8Iú¶ë9ºûˆç€ïaö9ERÑÁ‘»?ÜþÓÂ펮ÀèŸÑ_’»®ýtö·z³$< ór¿±WÖ^õÆÒ¯Jš«%8†ÛKì¦ôÿ뢩= ¾ÂÅ4¨cßY£Þ©T¤ 1+årÂúfÍ ûdÒ¢%bÿlW»†D)0©@‚,,Ê+ÇË 7‹‹ò+Ù­zlßWc¢7ðÍã/ãiÖûß~ ¼^ñxN(µŸØwLÿÑ<¼6Ú–™ž–ï$Àñ¢òb3#Éäð6t ÈüÒ}NÒ.ÒŒåÕ Vq¼ÆªFB}ƒ#C¢@Sþ¬QœáØ-û¿é0»w̧¯­?¸õìÝ‹éYÿÀ¼ºÚ;ï<*Š“ÿ$?£.Ë+–96i1Žÿ ¥éÎ2'Z@W⬊é‹ÏHª¤H9ÎõYtHdÿÑLTŸž°ùèëHm‚ŒOK`X†ªžwgy ² ‚2mœ-tD*ÊN8­ÔÄå•üîå<ÙòFÄBѲ‰ ‡?¾¯V•šÖN€HRV^rèü¾Cg£ìœ\훹4 ó îвMtpds7/g;§¿cj#Ûï@<À€ ó‹ Ž­kèÑ3Üïß)έË]Óô¥ªRST<çïá+Šÿüm>ºC[ªx~Ì[ ™É¹Åù>nÞÕ=°fV:ëçxUaù9Wiß§eÇ0 #²K~p³" ­ˆ!ú´íñóÂío~5C¡ÈZbAœ0f¥ƒ>· 377íÖý+ß)ñ ‰ÖiÀШ;µÞ®ž ‘ÏNŽ)‹Ëµ*'©C-ü1ƒ#_‚ÿ˜ðˆg9®ª»ßÌɽQZ®©ä³9¯Ÿ¨ÈÏ[d0\­,:tíDÇA‹ú«!êëF«®(7!厇a”Ö]X~ÚÚv†wxú«cÃûŒ&I4JSyÑÄPB Å¦?’Hx¿}ß71±c»½7ðtÜ…ÆœBž7iÕVA¼ÜÑþ{R=€k¯œFÁßé¸óyY©F’ ˆ0ÿPà8Kz·÷ÊCuZA&j‹c”­&˜Ô³œRF‡ñȾ8†w úvîúï~M„ÉÖ`ðü_ÉqÄW§d^I¸ù <)±‹z±ð×Ú/*BIœ()}z¥¾ŽMøKÌzd0Ö3òÈNbïî読]ÜV¿Ðâs×Oì»RMaxØ üŸÅÖ!E*ž× I¼‘z&—· ÍÊè1á-Ú+íH*»0—a ¢Â:eë‰4e SÇù¸{ן6ýJÏðn$-1…k8Îëu»Îíy¾ãHRAXŠ?^û,ÌAA )¡m}]³³¾JÔ" ]<&ðÖ†sœŠáË…”[E…Gz€¿1{¦ÑiJÕÊʵˆ")ó$AææÄ§'Ößà­”»ÛmR`Òé:Ík½GÓ/Ô)UàãæÝ¶ExÕBžÃ—ýX!@jî“üÂüzL(^ƒÆ«sÛ(BÑ­×_?YõY3‡1R:Äz/Cˆ¹JÙ:¯7»0÷ÀåÃ\-U—=÷e†c—ýòÕãŒD ž%rXÆÇÍ‹4Ë•TQ‰bôg“î<¾_Wƒ²S'¯š^V^b£·wõÝ}¼hB „cºŽ«D†M[7oýÁ­J²öû–ÙwùHÿFeæ§AYÿVØfà­AkKù1†ó<÷åÞƒ#_ªØH‹ã´§ãkI¹ ØÆ?M+#îñý˜¥2Ò€¶ îЧm÷®¡:‡DVlÒ©T{zí·Ïm9ºãÔ“•\RÐ-,ºn#Hzßoþ°ÅãçO~i¼c•ªtŽçö]>²h{ìã¬G@KÁ¸Ïà{}Ф`ï@xeRßW×Úš“ûÄ”Ì$)^=wýœŸÎþ:8r@¨O‡“»‹sæÓ¬¤ì”c×Ož¹uª¿Š þH’ÂC€Ãʵª’òÒæn^9©Ö«@úVüÕïOÿ:sÈÔÊ@XÖ/Gô“J—ˆcÖš–åÊŸm’@$a‡Y–ÓC-û嫌ÇÀÎ ÝMºu7þêZ©ƒ£ÄNî"ó vØ#ž Ë+.¸•—Wœ´êjÛ™ Ú¿°ûÖ«$ÅÊâw¿™¿zÿ7ƒ"Ã|ƒE´(13ùæ£Û é À²&ð€VÓ2°Ýü—gÁ‹)®.ŸŒ{Ú—Ó+ £òöÛ·ã¯H*¤„BJ ÑkY­xÌÖxWg׫ᯅÜ÷Þ“xcGêò"e‰¿‡Ï%Þ:_þöÕ1N2GÓ7vžŽã’r?¶Æ~" £# lÑ7@À )¹…ù¶£*ˆcB/Ç×0ŒD–"फÎÍrJ“'Šx{‘¥ÌŽaK^[ÑhÊc¡zÝGN }dx—?¾<úÎÐ7êG^wà¼ÑsÀ ¶JˆcA­léú{ìÏãzŽ4‹¡j¥ 8nùaVJ&}Àó –Êjl–¨Àâ±úwgVUåÍk£VB‹ü`óŠwV¹;»ƒZ  Œ+¡âe@U&IgzGJ‹7‘*އùÕ‰¿ÐæAmý[ƒ±†€¢.?¼áîè&qrÛ’}u;åÞ¥ת>s‘õ±·E¼…¢Çr}Ë•àÌ7øÆÝKuퟫWÿ|yéá'{µéVÅ&’r‡‘¥ê¿,ó" †+aØÀH£ñ ý%BëöãH„âq=Gë9ªHYœ˜õèZâ­GÙ©ù%…Ê£n¦ÒYæØ¢™DË6ƒ#}ܽ)‹¬±…郧 ë<èØ?Žß:]PT çX‰@èéêÕ5$jhçÍ]½êiÁÓYþõÌ•kölPtRàí3ü,>Ã4@î»qÆ—›nQ1©~ï•9ÍÝ*¿ë­“²Ùçnÿ â²`ôœç6(wòØ0cŦCߪõ©HúÞ˳<ê®óó—ûÆŽŸ?ÿåY%ê²ôüL£Ç#pÜ_î+I$ö0yõ;œFiª%e˜ˆ–mküºšçe)r:Íí—›Ÿtš/¦/×êµËv.Ú¦b ½¶S›îgW¨z¢™-ŠK«e²ñ燆<¯7:|¯ ”Çz:NhWšåXcM%I$a©É›¼úíŽî0ª¢×†¶ßr¹zÐÃë ‘ÐjzY£×Ösî›ÍŸ5Ââ¹'»5bg*$!óQÔì>*M¹Iy©ËÖ¾ûõÜÓª2¸5‰ioWÏÑCL&ñ§ãÎ÷ ï‘t4I¥d”¨J«y-¤³½8²tBˆ1‚+xºÊú7V(G$-Ò¡åà³ÌéÄm4d¾ëù,M ­_;S!î\¦*U˜ÀÇì]½ûGô®‘>0“™3ÃÁÅ8„¢ 7qœèÞM³A(ÊŠj_ …á˜À2&{æ 䣤+4É‹ Ë_wøâÊÓ·ÃK½ƒ¼kVý˜Á_‹f~‹Ç¿Œ0\Sª¸rwBïÑÕ/VðwȬ‚ ü œ¶¼¨„G‘ ¹ÜaLÓ¼þ÷…áØ…;–.úö )SFñ„HòÁËï`µ¸_ó‰áYÃÞì5´*Ò?œÙýRûž^Þ-+KB,žs³w©½QJ@:c`y]>Bˆmîü†€tnšÝÿ²¨´êÃ×Oô[0|åO+Lt Q´ê±½G×8ɳ>ü HÁÆ™+år_`ÙøÔ{÷Ó掘^o´p-胛·ª½£Üò2Ž×¸ÈúÉ^nšàÿ¬”ªÊíø´Û»†<æÂís U‚Ï kîôÅdóç+×YÒ¼Õö÷6I¥ .ßrüûI}Çøú‡YA„ SP‡Ú„*Ë—#°ˆS䑞¦¼[z|dó)X+565Ý^ %ªÒaK',ß±änÒ- ˆj‡R² Ž«ßúÜÛÕÓ:üÀ Ž}øp»ØE~òâÁ”Ü'Ÿ¾¶x,qž“9{¼Òm¸E­Kåyö¼ÓWyÄâ8(_BSžÿ‘±–ФUGà?¸Wퟗ?ï]¾tã$HíW+ác'ÖÏ^ór×:/zFFþyÑw¤@8kÓ }F÷Œêz‹ÁÐkc¢×y@¥{È!]ý&!!&Àm³´Çg¬‡Fõ‚µÔe`ÐŽìׄ?–c+·V™&u¹„–l·±þ¦Eçß¹ùÇÔU3>›Û§]÷ði]´šrx.¥dÐ9:¹ßÜp¶…ܯV|T—>NcHÃë®DˆEÀ¸Í÷vžò_î½—üva¿A§éÚiÞÈ/\%s£K–"§÷Âá©I·A$À1@R]Ûöø|òâîaëÿ¬¥÷/ÜOKøä§åkÞZvôÆ©9kgƒH\ŸöB ºu³×ÎaæJ…¼Ò=I¹‹ê9!¸Ï÷všÜ¤]^y˜‘´b÷êøŒGB°­ذNûµïeÉ%Ç©¤¢–±âŽþS“s'g¥«•4%ðoæìÕRBÛx‚Ó£ìÔø'´ŒÁÝÁ¹M@w[ŽUÕô ™‚¼[V$»4zmRVŠŸGskOWy’—®Ök[û@bV2Ã2ÁÞ”õw€1“”™’ù4›¦>>-šùÙÊ ÄÌG XŽ õ õ ª³¨ Ù$wRï7½hàTí¯ÙjjDFA¶ÙO”¿z>!ìBbx¿s -Ï'„$æ~¨còPcKaYÑÔ5³ðN Р#@'xùó)ÇYÛ”ž1,ܹL:Lnl¢ ÅÄð_.쳡W[}‘°jïÆŠ'?žÙ ‘°vÿfk›j3³;1ØõjÂÍáKÆC/t#/Ü¿bm#·Rîõù`(ô  @ÐCÜ'}õ¶¢¬ÐÚvr sG.›½D  ÐCóéÄüâ³/Ûxë_»€Öß}°iÌg“•ÊâÊ &:MDx—çomîf†.),ÿ39 B| &!–CZ©0ÄÏõmW»‡’ݵrÇî!í}ÃN,MÍK¿Ÿøánõîªå¿­]±õc°sˆúš·›ç¤;7n™ðùT±ýÀ}¬j*»0pÈRäT<)./tÖç™Xžãtš‘K'äg&·ŠnèÕÂZã0jɸŒ”‡Ám;z¶à)þê¿~óÖÀ×\B¬H;1,óúÚ9'Oïñ Þy0øã7O8ò£Ö ;»ËŒJnˆ^9zó”}Œ7ôÃ'è-îøN¯"e‰y ¤.Ó(Âñïsrƒ¼[Ÿý²jý¡­§ãÎ+ÊŠ\ìœlàM.?¼^ž: Û°É}ÇŸˆ„ôÊ©±.^-î>‰¯ªÉþqAÀñŸLXðÞÈ·íDR«Ý>–9vó”ÔÃ+vüüŠýbAÞ-tècí§ã΃VÓu¨“ÌQQV¤(+r”9 é<xîüý+µßoè­»ƒ#û_~`òªé)îüzvOLçÁ‚:TãYErÞ–+#pB,‡t.’ÑanöCÜí†Zu˜©Í²rj¬Z«:~ýäÜO§ƒƒXîêÙ¾eÛÅtjaU;%ªRP±íZW}è,s õ ¾M¥Óü[èã‘xJ¿±¶}üiYa©ZéfïR©¶%’_üH|Ç©ŸwÛc<2Çp¥V<¤å§7>þ :¸ã‰Ï÷½¹nöŸ—Ž Z4òçvŒ¨ô„ÊSJí·@´ÀÓIÚÃIÒÙIÒ³i#ºmâé"?»ëFÒí¿Râî¦Þ?yûܱs{®&þuiõ‰Pkîu¡HP¬ªyŽB¡²!·r¯¾qÛQãœ3Ž0Ljë‚R€cËs ËRdƒ A ¾¹«——K³g‡‘"’ ±®]@øß‚?ûýô·v.[·kù ùÃ/m<ÛõÙ6Gi—PÏu€áaK‘À—Äeÿ–’ˆ Šˆ Š0š›±+ÞØ·÷Ç;©÷¬Â_°w áêtö¯3y%òg÷(¸u6ññOwïr_«ú#I€‡ª ÙÀ˜Ô´ â,s û%§%^N¸Þ+¼kCúî €züºðÛª‡–p¼ùõÙh·Þ‹…¢µÓ¿èÚº³¢0ÏûÙõÉ øŠ¾ð¯Ê·Ïíüãçûv í$¡Å—^¿zh°–ÿëØ®O‡^§Ní‹ùôµÅcßoí|ìæ©¥?­à•Ê÷f¼-Xç*u Z¸çâˆmä~8Ž?ÌH ðz|pcÀkﮜùÖº9ŸOù¸KH”F¯Ýyê焌Gß¼³Êx׫…òJ·á+~[¿÷]8ŽÏ1ÝßÃ’‰eu5úéß…ö}$Ø@g|  ô‘B4ô[4RQj5¹•’ó$lZè‚A?;l 3ôA7bâW3µzõT¢~êºÙЀÞbèïý ¿#t§VíÙhmS¡oEC_ÙÓR…ÍC¤ÑkǯœúJñ.0Ðz  ~;õžµM¹þ‡Ã°fЃ—ð.xoñø/§Õõ2±dÉ’ÿ÷IžÎÁ‘-‚Y©€öppiߪýÇ“/™°Ð¡ê%¶–‰“ÌqLg¹Ú uI;†E/{cÙ‚WfٰLJÀ‰}|Zñ!ŠäNr'w¹½sŸ}Ûø[wÀð½'eÙľc”^5EC¢^ò÷ Rêµ´DnïÒ¥m÷¯çmˆj[yƒA WÀð®ÃDR;=˸;8{عtëÔ³³nKþ­Iš¤ÑLÓ4É¿(ÿ7€•.cK\òIEND®B`‚ libspring-webflow-2.0-java-2.0.9.RELEASE.orig/docs/spring-webflow-reference/html/images/tip.gif0000644000000000000000000000112611360615630026624 0ustar GIF89aô !!!999ZZZccckkksss{{{ŒŒŒ”””¥¥¥µµµ½½½ÆÆÆÎÎÎÞÞÞççç÷÷÷ÿÿÿ½½½!ù,þ EQEQEEQEEQEQEQE9‹²,‹²<EQEQEQ”Ô(ËFR$EŽ¢<EQEQ) 4MÓ4M8M²PEQEIJ#MÓ4MÓ4MÓ- CQEQ’ÒLÓ4MS´DÓ4MÓ¤4Eõ,Ò4MÓ$!‚MÓ4MÑQ-ÑNÓ4MÒÑ4MÓ4= EQ3MÓ4M8A 4MÓ4M“¤Dµ@Ó4MÓ4%ÂLà4MÓ4MÌCE‹4MÓ4M“@Q†4MÓ4Ó)T´HÓ4MÓ4)eHÓ4MÓ4E FK4MÓ4M“TP†4MÓ4MS¤PÑ"ÔM8MÓ4IeHÓ4MÓ4E -Ñ4MÓ4M TP†4MÓ4M¤PóLÓ4MÓ$”!Ó4MÓ4-EAË4MÓ4MRAÒ4MÓNÑQ”´<Ó4MÓ$”!MÓ4MSÓPHQÐMÓ4MÒ! Ò4MÓô,EQµ,à4MÓ4AÎ3MÓ4MÉCQEQ£DÓ4Ó4MÓ4MOòPEQEQ‹âHÓ4MÓN£8EQEQEAJ²@Q=вDHQEQEQEE¢(ÊòDEQEQ!;././@LongLink0000000000000000000000000000014500000000000011565 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/docs/spring-webflow-reference/html/images/toc-plus.pnglibspring-webflow-2.0-java-2.0.9.RELEASE.orig/docs/spring-webflow-reference/html/images/toc-plus.png0000644000000000000000000000041011360615630027610 0ustar ‰PNG  IHDR Èä)‹bKGDª#2#IDATxÚchÿ`À¥ÿ#óðò@ÈC"Ô£™j?RJl²d™:4CtEXtSoftware@(#)ImageMagick 4.2.8 99/08/01 cristy@mystic.es.dupont.com‘º!¸*tEXtSignatureab17802e1ddae3211b1ce6bc3b08aec7{ú¦( tEXtPage15x9+0+07vð¸IEND®B`‚././@LongLink0000000000000000000000000000014600000000000011566 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/docs/spring-webflow-reference/html/images/important.svglibspring-webflow-2.0-java-2.0.9.RELEASE.orig/docs/spring-webflow-reference/html/images/important.sv0000644000000000000000000000233411360615630027732 0ustar ]> ././@LongLink0000000000000000000000000000014600000000000011566 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/docs/spring-webflow-reference/html/images/important.giflibspring-webflow-2.0-java-2.0.9.RELEASE.orig/docs/spring-webflow-reference/html/images/important.gi0000644000000000000000000000175311360615630027705 0ustar GIF89aöC)))999BB1ZZ)ccBBBRRRkkBccRssRccckkk{{{ŒŒŒŒ9½½­­!­­9œœZŒŒ{œœcœœ{µµJµµR½½Z¥¥c­­k­­{ÞÞÖÖÞÞ!ÞÞ1ÞÞ9ççïïïïÿÿÿÿÿÿçç)çç1ïï1ÿÿ!ÆÆZÖÖRÎÎsÖÖcÖÖkïïBççcçç{„„„ŒŒŒ”””¥¥„­­Œ¥¥”¥¥œ½½„½½œ¥¥¥­­¥­­­µµµ½½½ÆÆÆÎÎÎÖÖÖÞÞÞçççïïï÷÷÷½½½!ùK,þ€KKKKKKKKKKHHHHHKKKKKKKKKKKKKKKKHD?8???8?EJKKKKKKKKKKKJC79"&&&&&>7EKKKKKKKKKH84'''''''''/?JKKKKKKJ8=&'''''''''''&BKKKKKJ8='€''''% ''''''BKKKKE&'''''&'''''&GKKH<4'''''' "''''''/@KKE:'''''''6 ,'''''''HK?#''''''')''''''':EH?&'''''''þ€''''''''$8H?&''''''' ''''''''$8H?&'''''''!''''''''$8H?&'''''''*1''''''''$8H?&'''''''375''''''''$?KB"'''''''+ )'''€'''':EKF9''''''' +''''''3;HKJâhQ¿ x÷¢B‚Ìh£Ìõ¢@&ƒ v»þíðž9*áÁü`þcÛªz6•_Åjl;HagV6÷쥽Q‘¡™\ì’÷™¹km2®ãÌ66å â\DšHâSŠç^ ŸvÚ­K‹ÊÞ2¼uH‹O¶¤S®x¯øRïÆ\Í*ÕQ|þg,ÍkÑËÐ]7twú )Ÿäˆe'›sͯìŸýr=»Ð$þ¾ì¾óúëj~ß'‹˜¹~pZöÍÔ ÑŸð7YhÿáM`«ðï‰_ÌϬ(U´ÉÞ¿Z£Ó«[VìŽÃÞm"Xóhç§»[ûííÜž¯=ìÒËè—¶Ì`”žžMëgév¶fô¡ÿt0møR‡ògÜõ´øŒ§Ë—ë|ôí¥ð½±ÒùײÒ6­%k2ùþ±§Ûè?¨ýù õ6ÅV×v—ˆ%´ºŽXš2°ýªHézI£Tr+/¨ ÿƒ«3诛?¾NÅ¿>Jô¯p=Jy £Ø‡¶³¹GM!‰8zZó•M*y #óíGWèÐû÷^ëÞý׺÷¿uî½ïÝ{¯{÷^ëÞý׺÷¿uî½ïÝ{¯{÷^ëÞý׺÷¿uî½ïÝ{¯{÷^ëÞý׺÷¿uî½ïÝ{¯{÷^ëÿÑßãߺ÷^÷î½×½û¯uï~ëÝ{ߺ÷^÷î½×½û¯uï~ëÝ{ߺ÷^÷î½×½û¯uï~ëÝÏ”ß5¾+ü)Ù3oÿ”ß°ú‡<ÔQnlÌçó…DÚiöæÙ¦5ƒ?S+ÀÈ‹KM-äx>ý×º× ¾¿áIÝ—ÙY·—Ä<þäÆJÕt”ß!¾R½_Yõí•^ò[o®hŒÛûp@$e–j–B²2©ãîq÷Oy '~fæ[x'èA¼I xIVA‚ƒëÐo|æî]åÔfÝwHÒAøÔçå¡jG:uT¡Û?Ìså2Ô7ÊoŸ}µ#P%¬êOOOÑgö.$òáëj6üso|å>¦]3Ë”†UP@UÆ(óWßknˆÍ&r„“0=²Ý¾…#?è1ÙÁÅâ*qîþüÛ&¸ö=•œƒ‡™¨?Þ§þ7ùz;[áÏÆý­_ühu~tnF‘j'Ý]÷=¹êêÃûÚŒîñŸ5’z½@~ç0`¼sæ?¼÷¼|ÂΙ¾‚Üþ DXiöH—öÉÔc¹û±Îû™jn¿Oü0¨J¶Ëÿƺ1”˜¬]²Pã¨hÑÙ–š–;±ff¢Ý™Éú“îÞ9·šy…ÚM÷˜¯oµO4’g×¹ˆ¯@›Ýçwܘ¶á¹Ï3^ù³ù“Óµ%$Õ•TÔTqyj«*!¤¥… !š¢¦U†•‘¤•‚H<Ÿd/$ŽK<„“æI=!Q$Ò* ´Œ@âN~ÀÙt[/ "EÊÕGÙªÅo+TVˆýQG1Ž&4TŽì°®•Ib5³’™˜ŸåM§ïï&Í*Ëmîü¤yNÿR§í‰ùz?·çe¶`ɼLßéαû½sØÝ3óã(§—á‡ó ùÖxÌxf¥ëÙÏ'{ue^™%– Y°ý‡j³LºÖ"ÔrDⲕv2{žùWï±ÍVFÞoå›[ØÒ@Z ˜æ„ƒ®,`QQAÈç¡nßî…üZq±ŽT,„£ŸšþÀ:B,LûðÜÅöÓ,8ª²ÊG¨" ˜è\¬®¡ÑCÀŒƒùõcÝêÝ{ߺ÷^÷î½×½û¯uï~ëÝ{ߺ÷^÷î½×½û¯uï~ëÝ{ߺ÷^÷î½×½û¯uï~ëÝ{ߺ÷_ÿÒßãߺ÷^÷î½×½û¯uï~ëÝ{ߺ÷^÷î½×½û¯uï~ëÝ{ߺ÷^÷î½ÐwÛ=¹Ö×[«·;›~í^±ë-‘AOuï뙢ÀíÌ$õ”ØÚ3[’¯–(ENK)[%$ ZzºÊˆ …$šTF÷^ëQÿ–¿ð îûù?>_¬¿•†Ç›¯zÞWY/›Ù¶ç¦Jú _5gJuV^ž*¬±u”µ6K*"ÀVDVãÜYîG¼\í}›KÌ[mÈ­cµŠ;šc¶ "Ÿâr25tæŽwØ9JûÕnˆí‰(Ò7¦+Ú>mLp¯©ÿñË”ÞÏÜ=ë»w—É~ù¯fªÌvçugrÇ6kåšz‰o㲓Ôaö¥$/RÑÃ> pª©ÔAcÏqþõœÿÎF{^ÜÛ#Ti…«;®~9¨44"0 úuœÑï1ï…àÛ[èl EÖB?¥&?éh:1*ªŠ4XÑxTUGÖÁTñ†i¦¸‘渕¤™K1$’|É9ê&wy]¤‘ËHNI5'ó=wí®«×E•EØ…K’ÿy÷î½P8ž§Óâ²µq$ô˜¬\jñÏKެ©ô±FÑ4‡£Ý«™7™±¼ašå?‘¨ý™é{Òÿ5š?òíJ 3¹²Ì—ã †«cö5e&3äþÏÛñ±‰åÚ}’±¬{Ëø>:R~Jž©§:ôM¥z{i÷Àåc[m³žm¿uo'Jø¢­jìkS_Šðᵊ’u:–v?qöëѪ}=ή1“œú¯—ý£­Ž¾4ÿ‡ßÌGVz7>'´6ô wÿ@v=*lÞíëúÔZ²›9²kç5UÔtnÚZ»õt@• *³i÷—Ö—v·öÐÞXܤ֒(dt`ÊÀð*ÀGØz‘ã’9‘e‰ÃF ƒPGÈŽ¬gÚŽ¯×½û¯uï~ëÝ{ߺ÷^÷î½×½û¯uï~ëÝ{ߺ÷^÷î½×½û¯uï~ëÝ{ߺ÷_ÿÓßãߺ÷^÷î½×½û¯uï~ëÝ{ߺ÷^÷î½×½û¯uï~ëÝ{ߺ÷^÷î½Õÿ¢ùþE?9òÙÿÞ>aü~ý׺՗â˜Uø»ñ½QUýu•E¥ß¯¶ó; îìK©&çß½Þžku}ÈyægeßoÔ$«u*ªŠðUP€¬ çI$“›ù ÈåˆÜ.©­™À¾@ ä:âŽIåH ŠYç’þ8 æžM*Y´C¼¥T“`l?qÙ I¢úôUg`ˆ¤¹ò§ö ô'aº‡wåZ¶0tþGI$¯‘e©P±yXèé¼±I! "nmaÊ w+hþ.ß.´ÿ›£û^ZÜîñPD•¡Õ“Ȉ®8>… _HmÚm•¯ÈåÀ©,)"ÐS “ã/4 L¨ *ÁQݽ-ÍÈÚ 7YŽ#EQ_´ÓóÇB ~S²J‰žC§#áõÏØ 8ãž„\VÎÚø] ÁãéæJu¥5&%ª–ã'Ï<¡žg‘¢VfnY…Ï´2]\K]r±­+ÙÑå¾Ù·ÚÓÀ´@ÁiZT‘ó''†zRÅ]@Š€°TŽ0±®§nªéPYûs휱Ï—¨¥Gìè÷ìœ!Û›_Š`ëQ(š°I¤H+jÙªª‘Ê\ Ó^M‘@¹·µ'‚­p?Ëþõ.mVŸCamnA­þ˜äþÂiöÒ«Sª?íϽtaSë×µ7ú£þÜû÷^©õëÚ›ýQÿn}û¯Túõ‰â†BLÃ!6»CqôÏ}ìꈲ; ¿º%6Ðì³”¥*ôrM“Ž7ñÜtn¾ªZ¿$eY­f7÷1{cïw<ûYv‡fÜ û)`d´˜–…ÇžœÖ6þ’PúÔc£‹šw]‚AôÓkµ®cj•?gðŸ˜èê|Kþw=Óñ7pmÿÍ¦Š—)²25”[s®¿˜ÇÄIÉÌ–ÑGŒ ï­«Ž†¢}¸'*¢\´ öÒ»–>Z_}>öŸß>M÷^Ím¸únaD¬¶’$_SÀ•>k‘æS·/s^ÙÌ輺6â>Ïâ1û:Ú³oîìÁâ7>ÖÍb·ÛÏãé2Ø<ö¾—+‡Ìbë¡JŠ,Ž3%C,ôuÔUpH¯±»#©=Í úx÷î½×½û¯uï~ëÝ{ߺ÷^÷î½×½û¯uï~ëÝ{ߺ÷^÷î½×½û¯uÿÔßãߺ÷^÷î½×½û¯uï~ëÝ{ߺ÷^÷î½×½û¯uï~ëÝ{ߺ÷^÷î½Õÿ¢ÿíÅ_9òÙ¿ø0¾>û÷^ë]O„=>[â¿Æ,¶z¹i±ÕºZ²šŠ¼•UTÓõÎÔ©„ÏP@JTš TyQ€ ûáo¼;’Çî§¹±Âµsâ <úɇçþ°Ï~凹æ¾e¹¼—L ¸Ü0UâA™ˆ©ò¨$2ŸGó ·0›zž:lF:š‘c³yDjõRIáHyj\žicŒk\ÿSî&–yfbÒ9?àýZØÚY ŽÚP<üëJTž5 g×§Ïmt¯¯{÷^ëÞý׺ú§¹ÍçF’Òâ’\ÅJ9 7ÚJK årÂÅO Š×ãÛ‘ –ôèë—­Þé` qÕÏû^ñ¢1é^Ž·z”º÷¿uî½ïÝ{¯{÷^ëÞý׺÷¿uî½ïÝ{¯{÷^ë E<IMW U4ò£¤Î‹$l’+#‚¬‘ȸæÇß Ô©$qÍE2ŒŠEFqÐc¸zŸ”6'ýÂU“}1)’É0‚Zšú¢´hÄh"î÷>ÕÅy"aû—ùôÜyJÂê¯f| ¾YCÃËËðâMOEÓ²zukðY}³¾6Æ/xlÌÕ,ÔZJÚòØLË*¼5ôSÇ!‡\Q–:‡í‹@û<Ú÷{­¾òÛqÚïd·Ü"`ÈèÅ]Xp Ž·›>ï²J· Jš¬‘×iZeMH<ÑIøóÞÿ&ÿ“žmòÝ-G»~J/*ì³ä»âí^B£9Ù¿¨ªä’\¦õøó“¯yjrw¬ÍW·¥“Äñ)ñp޽ ö'ïUm¿½Ÿ){•:A½$7†‹ç€Y¼£”ð „cƇ&Oå>KÃß½¸Kž /“z7ÏëqŒß'º7æNm>ùøïØ8^ÇëMáJeÇæ1¹ÇWÂr;{qbä+_·÷6vñVPÕ$sÀÿPU•›7Á )ªž¥>9:=ï¯uï~ëÝ{ߺ÷^÷î½×½û¯uï~ëÝ{ߺ÷^÷î½×½û¯uÿÕßãߺ÷^÷î½×½û¯uï~ëÝ{ߺ÷^÷î½×½û¯uï~ëÝ{ߺ÷^÷î½Õÿ¢ÿíÅ_9òÙ¿ø0¾>û÷^ê”>ÿÙüGÿÅcèOýõ{Sß}áÿ§·î—þ,{—ý¦ÍÖ2oÿò]Þ¿ç®oú¸ÝÏqÏE={ߺ÷^÷î½×½û¯th:XlÖ\êóVäc •t¬útœ4múÇ–Zö >‡Æ¾ßJã’zòŒ ¶×W?œ/䢸ûKýƒ¡ãݺõï~ëÝq©xè©$ÈWM>/óÙ…D48øåµu[ÃKãûN=Þ¦º-mayn›‚"—sç…PXã8{åçÑFퟟŸ º7î“´~PtþÛ­£mbbÝty¼¬’ M 56×C4ÈÇÔ¾Q` þžå.[ö;ݾlKYönC¿6s²'ƒ¥k¨ÈU”UH\šzôúÚܸ&;wjz^Š•Oó£øw”¨Z§Û&;ç"ìDpõOǽý¸1ó(!VH348úúY#‘È…µÉ·Ö_Ú>åÞòßNs]¶ÊØ­u™üS\v”@4$Ö¾TóéXÚ/ÈR">¬)ñŸÌ7¿7hÖÿÊ7ùïÚy,`©¦ëÚm»ÈÂâMü]3Ƥª±Æ«÷çr ·?íA½< ÏóÖ:T»Á´Èæzyo˜_=Doò?þ`G ™šZ†™%¤·ŠŸÇ ¥ô^üþ¯ðöúýÃy·éä/îÝõuí¥¼Ú)Ž=ګdž8|ú¡Øo|UÓ<^3†Õ\ðò§?>›r?>þLmu2ïßäíüÇvu"s%\›/Ÿ‰cþÔŠ¸<}KȪúrmǶà çjÓÀÚ«ÿ<óÿÐ}\ì7bt'ì=#Çó˜øÃ·êMqõOËž†ªìoŽ=ƒMÔ*Í—l]i î\j_ø–ó÷(÷zÁã]¢ãl¿CZŸÁ¦”¦$ MsÃ…3ǤÇg¿¿Mh?¤3ùtbú¯ù”ü ›`|¨êм¤’ø 9]µ›ŽM(m=&] ‚wÓv˜Àƒk{‰ù‹î÷ï'+ýCî<‰w%¬I­¥‚“F­r§Q hšSפit€—¶p§?gG_WA›¢jü5~7=ŒeÒõøZúÞ1ÕÖå³=]+/Ôä{ˆnínöù–ßp´–ÞàŠ„•7§¨W ÔùÓ¤äqV"øè)Ý]QÈ¡ªÛ¢,Mrëg¥bÆ‚¨G joö®ÒF.MÐëbßoCxˉ{—×Ï ~ëÊv×*eÛ©ÿÃø[øMG$õXKŠùü³{×=ò×á.£1‚ܲ*þ-CQì^ùÁR*¶G}u„<ãö¿qc1ïå‚jxÂd8ŽE!Š{Ï»—Þqö3cÉàß™6!-¯’Öäábœœ´^Jç1ð5\ƒ.XæË½–áv.c¨€6””þþ$È£y+޶æøcó7¢~xô>Õùñÿt.wjnÚ5…­AE»6í¢TLþÄßXÞmýÕ·« Š¢žU¬$Œ¼nŽzM‘ËK†‰€!¨ Š‚ÁdÄu1+”‚¤TçѬ÷~·×½û¯uï~ëÝ{ߺ÷^÷î½×½û¯uï~ëÝ{ߺ÷_ÿÖßãߺ÷^÷î½×½û¯uï~ëÝ{ߺ÷^÷î½×½û¯uï~ëÝ{ߺ÷^÷î½Õÿ¢ÿíÅ_9òÙ¿ø0¾>û÷^ê”>ÿÙüGÿÅcèOýõ{Sß}áÿ§·î—þ,{—ý¦ÍÖ2oÿò]Þ¿ç®oú¸ÝÏqÏE={ߺ÷^÷î½×½û¯twz¿%ÇÛðÁ–¦šJóãUf‘rVÂÌc¹wÓ æìý,žÕZÐPóÿ—©S`„Á´Ù©e-þôKäGEoä×óø•ñ>X°Ý™Ù´ynÀ®0½U×ÐK½»7TËAII€Á-dé%GÜ [†`Oéàûš=½öÝr^Þm——dƒgs›«b„á®®éMN… t"·²¹º¯ƒTyœ^=û+üè~u¬SüSø…¶þtöa¥\y|ɬ–vÖb'ª0Ræ°}[Ž«rHÏL4l) ŽMÔœÚä/¹(mQÁwÏÛÔÛžà ±Ša¶X’¦£Ä•t† §Î˜=C±F(n%$ú ÛÇ£o²á7ÓöU6åþaßÌäçÉÌÌÒ ¼ŽÀëœù騆eˆÂ”Sa·q屈ŒE¦š™M¬9-–³íÏ"rt0AË<§cf±T¤K­KTšHÀÉšŸÅçNEgk|8Wå_ðõhý ü™ÿ•ïÆÁG7W|*èèsvî}ã´é»sUÕ†.ryúÛŠ¦Jã!Ô$][• aìkÒž¬kom]¯´hF3ií¼ØÆ®8ý½‡ÇahW@!-I§¦§ zx¿¿uû¯uï~ëÝ{ߺ÷M¹l6?C.3;ŠÆæ±³ÿžÇå¨ir43pGîÒVE4pÄr§ƒïÝ{¢ÞßÊ‹ùnü•‚ª>åø[ñ÷uTÖDñÍ—¤ëÜ6ÕÜ ‘¸6„8ÇÝÄ¢S1u°±°ߺ÷UA¿ÿá4}?´k*wGÁ˜_*þî¨ôÔã°T{⣶:¬VÓI$Ô>ÎÞ2­m<—ÐâÒʼ¨<† ó%ò—5Ã=¿1òåìrFQŒ±#1C^ÐôÖOòé‰mmç–9¯Š6úë?ç±ðv:ºÎÉé.°þd]?‡Ž¦i÷¿Çš¹v§vÃŽ‚1RjòwûL†j¾:t}b•ªãÖP×Kâ×=ýÊý¹ßÒêë”.§Ù·6©TSâÛT! žw"–£3+ãAžŠ§Øàz˜$*}8ö:÷J2o‡?)s-ÕyMÙéÎ㢪0VtÏx⪺ã±198§ŽšJZ%ÍÓÒCS1–_ Ž/blaO?ýÚ=ÙöàÏy&ÏûËeDfk›0d@Š ³IýHÀ©P:ŠštÝùê ðoà×8eâ3JƒJŠð?o­(î ',y_ž¶ÖW~u¦å“?Ìß{|…Âwg_E SÚ{ÿÄ÷vÌ£w™%ŒÊ²ɩ§ßºÏÞ&âÆóoö»n]ì¤ Êg®¸$à-¥-ŸœFNb=‡´ ¹kq¿Ùf]›q×.ÙP"š•ÑSEGô Â¢Avüiù%Ó¿.ºC¯¾Ct.ð¡Þý_ÙX83{{3FtO kÅ_†Ìнªpû‡]”µÔsªÍMQ#.zIÔ™ÐëïÝ{¯{÷^ëÞý׺÷¿uî½ïÝ{¯{÷^ëÞý׺ÿ×ßãߺ÷^÷î½×½û¯uï~ëÝ{ߺ÷^÷î½×½û¯uï~ëÝ{ߺ÷^÷î½Õÿ¢ÿíÅ_9òÙ¿ø0¾>û÷^ê”>ÿÙüGÿÅcèOýõ{Sß}áÿ§·î—þ,{—ý¦ÍÖ2oÿò]Þ¿ç®oú¸ÝÏqÏE={ߺ÷^÷î½Ñrùò³¤þ/mès]©ºâ¤ÉäœSm‘†Œæ7ÖïÈH²x(6æÙ¤/‘®–gN½$b50¸÷!ûyíg;{¡º.ÙÊ[;Ì þ¤Ì Á¨Ì’¤qøEXùѮղî;ÌÂrÃÍŽ~ÓþN= ÝñCù¶ÿ4<ÝŸ9-wò¼øaUÄÁFN2ß-;WoÅI„sQA·å•)6Z+C=cÇ"4{õÚº!rÁºs)½s8¡×2§„é£,Pš«Š–å Xi:‡SæÓ°CakiíâMj¿Ñª€*åçù޶ø9ü¾|†<×OtýçíÊ”Š]ÅßÝ·9ìŽåÜY ”Ÿq‘“wn©“ÓÏH²ñ±ÑƤ‘cÉ9Rª¨ªŠ (ppä:?( Õ¢{ß[ëÞý׺÷¿uî½ïÝ{¯{÷^ëÞý׺÷¿uî½ïÝ{¯{÷^ëÞý׺÷¿uîˆwÌÿå›ð“çîÞl7ÉΈÚ{Ë1ƒ„ìl]9ÚÝ©µê£jw§­ÛÝ…û-ÇG53ÒFR9&šŸÓcƒî½Ö¼}£üµ?š?òÍJ½Ëðß°+¿˜ßÄÜeæÉümíê˜)>Hìý¼­‚¦—`îÏN;°Ì 2¤xªäQa ßýÓû¶{yîbK|¶ƒj暆[ËU Úƒ¬±©%K3í½ÈtÓ¢«½¢Öè5+‘L S#…)þ£Ñ<ø7ü˺Cà¯sOÝ]A¹ò{{âgtoˆþb w¾/)µ»Kà‡xnýV/n|ŒÙÛ/;IŽÈUõ>n¤Ço3C ´”uñýÇ‘µÄZYä}£}Ø9OdÙy—yŽõkŽKši3f»øü-ý\1©­J¾›{H¡º”<Ë«"´Ó¨èÉ!4‚NIõ½î5ˆÜ˜|VáÛù:Ö ;Ž¢Ëᳺ¨kq¹L^Fž:º …e;ÉUe,Ë$r#t`A±ö+égN~ý׺÷¿uî½ïÝ{¯{÷^ëÞý׺÷¿uî¿ÿÐßãߺ÷^÷î½×½û¯uï~ëÝ{ߺ÷^÷î½×½û¯uï~ëÝ{ߺ÷^÷î½Õÿ¢ÿíÅ_9òÙ¿ø0¾>û÷^ê”>ÿÙüGÿÅcèOýõ{Sß}áÿ§·î—þ,{—ý¦ÍÖ2oÿò]Þ¿ç®oú¸ÝÏqÏE=uôää“À}I'€¿uîˆ^säyüœîZ߇ßËW¯iûþ`“°»J¿ÉG|} ¨›ìïÔ¨Øê¼¥,¬Z:8žFgM!e}Q{Íaþé›Ç= NhçÕ–Ã”É ? ÅÒñóÌQˆÔÙÒ?R,ò5Æä#½ÝEcÄ/qÿ>¯Ï‰òõëb/åÅü‡úáæ~›äÈ\ÜŸ1~käüUÙŽóìúÉàöMsQŠwÅôöÎÉ­F?iãh¼’,5m®ÐÞƒô{ê.rÎÁÊ;M¶ÇË{T6{\B‹j|Ë,Ç͘–>g©šÒÎÖ¶³c…x)ÿ~g«âö{Òž½ïÝ{¯{÷^ëÞý׺÷¿uî½ïÝ{¯{÷^ëÞý׺÷¿uîƒ×î~±èì.ØÜ©»h¶Ž+zvUôÆÔžª—'_>³»¯`:Ǭö–6ƒE‘ÈO[¸÷žç£§iD_mCNÒÖVIOEMSQº÷B¿uî½ïÝ{¯{÷^ëÞý׺÷¿uî©óù˜%/ˆ̧ _ŸÝ˜ôEò.—QŽÚ¿#úÖ†‡¾ †hçŽL&ù¥HâÇöNÎÈCU,xì —ÉO+"H€}׺­oå¿þoÿ,>íØÉ×çÖÏËïî³ÝÕ[æŸàoÌ ¥÷ùŽºÍàövÜÎïªÞݹ ùVÚ¨¥Û8:‰ð”Õn*i¤#XþÞ_~ëÝmYïÝ{¯{÷^ëÞý׺÷¿uî½ïÝ{¯{÷^ëÿÑßãߺ÷^÷î½×@†”‚n<‚à‚=û¯uß¿uî½ïÝ{¯{÷^ëÞý׺÷¿uî½ïÝ{¯{÷^ê€ÿáQö⯜¿ùlßü_}û¯uJ ÿìŒþ#ÿâ±ô'þú½©ï‚¾ðÿÓÛ÷Kÿ=ËþÓfë7ÿù.ï_ó×7ý\nŒ­MM55EeeD””KSUUS,pSSSAK=EDò²E Ä…Ø…U“oqäqÉ4‘Åe¥b¨’I  ’N'¢  ª*Ç¢CÔ½sòKùËv¦{¡þ%n ÏM|/ÙÙ†Ûÿ#þgÓÑÍfå†|y®µèW—Å[9^ kQ„P«vXî¯ÒﻇÝR ©vþ{÷2ÁdÝ;d¶²qT‹Íd¸S†`¬fª§-Rê`åIX[žñg⑞ è\yŸAÀyõº'Ã_„¿þôÆ¢¾3uî;clìbC6RºÉYº÷¦m"ñÔn}ñ¹$¯Ü›†µ‹4“Ìt©r±¤ié÷ŸÀ€u(tl=ï¯uï~ëÝ{ߺ÷Pry*,67!—ÉÔ%&7CW’ÈUI5 UUÔI¤3h†™6Ù¹¸‚ÎÞ{»©–;X‘ÝUAff>A@$Ÿ :Ñ OÑ'Û0ê7×aíM´6Ž'%çÊ¥ßÉ\—ííÌûCÊÞ-ܳˆÌP-OÔ´B' ¤|(ÒjbU;Y¨-qÕ¤ßOwnÑO@t0*À0 *UHlŽ£Íï/z×^÷î½×½û¯uï~ëÝD¯¯¡ÅÐÖdòu”˜ìn:’¢¿!¯¨†Ž†‚†Ž¨«¬¬«¨xééi)iãg’GeDE,ÄO¿uî¾sÌù«f˜¿óÁþT;_©kògá?F2΂Ù]O—‚\ź»Km|†é*ÅíƒC?ÛãóXìLš|^ÞªhšZZ)«Z?¯ŸËî‹`Þ6»­×qÙ-ï£}ÚÒ(dš jÑ%Á”B_Èxž šEkE©'èßïÝuï~ëÝ{ߺ÷^÷î½×½û¯uï~ëÝ5åñt[‡ •ÂdE`Çf±Ù EwØdrXjóE§š†¤ÐåñT|]SA+ªig†¢"H¤G ÃÝ{©TpÍMK4õsWÍ)ÖÔG ueQP´±AI÷2…¼ž(⌹%Q…ëÝJ÷î½×½û¯uï~ëÝ{ߺ÷^÷î½×ÿÒßãߺ÷^÷î½Ö"¤ëND¥¥I§„5 ¤o È’ÕYàŽS%@(ŒÈΗФFå}׺ÏïÝ{¬5ÒÂóHE”¢"kŠ6ši]b§§‰¦’(Œõ3ºÇ,5;~}û¯uŸßº÷^÷î½×½û¯uï~ëÝ{ߺ÷Tÿ ‹ÿ·|åÿËfÿàÂøûïÝ{ªNøRéÉO#*"|aègwvˆ‹Õ;U™Ý˜…UU$ð¾ {À ÷sÝIæ=ËþÓfë7ïù.ï_ó×7ý\n½GÒ½«üé;û9ñ˦ó™Íƒð3¨s°Pü®ù ‚i)jûK-I2Ë7Hu~Ut,¢°FS!Y 2Å,×ýµ9é÷Zû¶G°Ácî?>X¾H¡ìíœbÝHªÍ"ŸôfP³¿êMä¾QËï¹Åþ2EcCøGñüGËÓíëx®ˆèŽ¥øÏÔû+¤:;da:ó¬zÿ KƒÛ_J”´t”´Ñª4ó²-nB±ÔÉQQ+<ÓÊʼn>óש;¤ŸË¼Ç|íÿ‹"³Ÿðô;ƒä†#¥{+#ÑxLŒUt™>Õ¤ÚYY¶=$”y)`ÆÖ¼»… ñÁRëO<šRS¡›ÞǪÕÒiǪ1ømò£>ll®¬ØÝóÇå‡Çæ3ÔyNºÌ|蔫ØkÚû›/µ²˜ —{uÿeüiîYò[»lnÌ\Y"Éõþ6ûTÓILôPÇ%X×Ó2šqG:¾dÐýŸê¨ôêçwÏß„!»pûÇå¯Çœo`å—¾05ݵ²†heÚ:Éš‡rà¢ÌK–ÂM >>ieûˆcÃHåPj÷­ éÕüxMPq§BUwÉ¿¸Ì>ÈÜ9}!AìÜuFc­³u¯°é±=…‰¤¤š¾«'±²3g’vãé¨iäšI±ïQDŒä…ûÐRxÕŒ‘Ž.?oD϶{wâˇø§_µ¿˜ßÛ;rwŽo·¶GYv·^G´~af°49}­º~;nš|œùßOC•¤¬Ãc&§ÈÅ4AC¤Œ»wÙì·ÍºãkÝ!gÛå uèA£”e-ü2FN™”pTVm»­ÆÕõ„È·‘ƒ¤”GÒH u¬¯Äޤj:À-g>Y.ŽY½ÿ„ÌwïÄž Ý}?g`¡ß[µ÷>Ò‚ WTPSï,6>¾Ÿ5ˆŠ8¨*& W"†I*+0olØ6M”8Ù¶[KEaŸâ­=|5Zþ}$yÖI¦–YK\;ÌÄ–fcRYKMI$’MNOF?s÷—Mlε îMÓÚ{Õz=¿_…ìZý×…fçi7i¤]§.p ÆÆçNê’¾Æ-$“>AçiÄŒê ¨šž´Ò"(f`¤g[|¶ø»Ü[—³:§ä/Mö&ðÎíÌÖîÄíMØ›[pnZݹ¶²´x-É•ÉÔe ¹šÈAI½D«ÊŒ@÷âÉydÁ4èÃ{×WëÞý׺ÓWùáÿ3½ÑòŸîå]ð‹w¾?jÑO/ί‘ûv¡ç§Û[l5êº`d©%Jy÷>|^¥\ø“ü ¯™Ïº†=í÷“döw•'ÝnŠÍ¿Î¬–vÕ¡–J|mæ°ÇÅÚ™øW'ºöÔêïæ3ü„vÉÅA…Û_çgNbñT4AÈ‹º¦™Â©ž®¦BÒK!y“õ÷î±§îKÌ[¿6ožõóýxÓî×rí’HçÌŸÞ8ÉTQTy_R~ë?z÷¿uî½ïÝ{¯{÷^ëÞý׺Å4Ë+²Ê᥂±E$Ϫy£X¤jÌ"ŒÉ©ÚÚQf!A#Ý{¬¾ý׺Á2ªÞ¤A樂–- ¨ds’ÓÂò¼J¿pÐ'Õ *–ý׺ê'2EÂÎŠÍ †&’& jŠC ’Âd½-¥Ùn8$sïÝ{®LªÖVPÂêàqª6WVþ€«€Gø~ëÝr÷î½×½û¯uï~ëÝ{ߺ÷^÷î½Õÿ¢ÿíÅ_9òÙ¿ø0¾>û÷^ëVÔ]ÉóÛdü,þYs•[;¸>(üzÜ?-ûË«ƒ ºN£¬6hÉcᮈŠj]ñ»¨çôÐþú  ªM8íO° ̾ó{•î8XêØmùŸsú(\vÜJ—Ó”üQDð×W!z‹öNWœÃ¼o7ñÖÕ/&ðÔðf7qj"~ξŸ>)tŸÂŽƒëïÿ¶6Ñë~»ÃÁÇÀ¡%Êæò²»£sä‚$٭ϸ+CTVÕÉê’W° Šª¹ùÔ¡ÑŽ÷î½Ñ{ù]Wߘώ}½šø¹C‹Ìü„Û»B³tu6ØÍÿ \>÷ÝÛ^z}ÃG×™Jœ»ÃAŽÇö$XÙ0rÖ4½d ñË‘¤‹±Jç‡U}ZN“ž¨ïùŒu57ó/øÝ²[iüù ÑÿÌךël‡CövëëL¦ÄÜ_{»ð¹ îîÍü¶ÚñKÖùþ¬ÙXÚjê¹èñYÌ´ÙÈ„"2oÓXc‰zaκR6ñ+éŠ|Ï zyŒW¦þìZ.£þz_οtugköˆÉ|{þ_xŠíÛÕG‘ì© ÉPôÎvZ³›ÄíH2;‡'`µ¥¤½)ÃŽqWSOã‡^éP)þ®=WXŽGÔ y|‡—Ïþ/¢‡Ò>ItFÉþYø=ûñ—~e0xOæëòç.{¦¶žÖÃváÇÇÚÚ½•·úã®÷ ^##[³¢ËíѺñ¹šÌnßš¼PO5L°‰$¥×'ª3Cþ¬ÿŸ­Û´°®§ªÐ$õmßÌï¨7vïþYØþŒè ݸð}QüÍúßåGnÉÔ]yO& hì¼~Þî;°7âb¢Ž¯qg7dÅ[U4uY\œÓÔÔ²HÂG5z}…(¼ mGíÿWÚ˜êηßxæÍüÏûówt/fÍÔ}©ñKã6Àë}ñ?[Ue±½ƒ—êŒd/gm » ÅQ‘«z¦Ü¸èbŠxa¦ËQwFÜù ñ[xüRÜÛN‡¿è0[[Ý;°7äÛƒ(:‹-éz:œ…>w->[=ˆ©¨ÈÉïTÿ.žŽ•5ÿe?Îxüúºïuéîµ1þp¿Îƒuî­×º¿—_ò×ÜÔÙ>ß«Š|É”yV»güwÛuA©sj婌”™ŽÓ­§g…L,ËcÅå¶Ÿuû³î×,{GËso{ìá¯on¤x³ÉL*%ãs…1ƒÛcÉTq„û÷^럿uî½ïÝ{¬kér–²­,,ÖW@P ˆ¹$–?ïÝ{¬žý׺÷¿uî½ïÝ{¯{÷^ëÿÔßãߺ÷^÷î½×½û¯tw_l`z`î®ë쥦ú·hïûܻަ‡qäëvO_l½«™ÝYíŒÃí<åÍî1‡¢³(‘¨æz¸å Hik=׺›Ó]ÕÔß!ºßlvÿGöÖí³Þxè2›kyìì­>_ ”¤¨‰&]BÞJj¨–@%§™c¨ý2"0#ߺ÷B‡¿uî½ïÝ{¯{÷^ëÞý׺÷¿uþ­³7Wc%Ï—{±pY ѽ·ææø‘³6vÙÄC÷9]ź·GÍŽxM½‚ÆS‚¾|†_-] <)qªIüû÷^èHþH¿Êãn+¯†»?¯sÔY/‘‡Û[¿äŽòŠ¢,œ•{â<%=-.ÅÃåÄ0½VÌë:&þŒ°T•bz‹6‘ ÀçÉþ}{«Ž÷¾½×½û¯uï~ëÝ{ߺ÷Do©>ÒuÌ/”1pý±º3[§åµ?Pbû#dg6öØ;K „è½½™ÚÝ}G±ê1t˜ÝÅŒ­‹›•rõy%¬”ëX¡6 ºà.›€ìõî?웣Éï]9×½û¯uï~ëÝO• ±ÿ"÷¿Uw>ÊïãøÉò¥q›×mì.æéŠÍŸW]6ÇìvÛÓß{²¶žúë®ÀØùü–ÑÅWýµ~0ÔÑä1´õ•ò+—Ø?.¨É¨‚ N½AÑ{_â­e÷Os|ˆìáß9ì;/¿þBg6ÄØí™­Áíœcín»êþ¶Ø¸:ÍÃ_VðÐã š¶²­ç®¨ª”FÉâk.´±…%ªK3þ¬uªÇóþw}¹óû+»~&ÿ+ýÁ”뿎)][µ»ËçQ¢« ÊnüDII›Ù¿á©Jj¨éó!Z3d$ÒÓ“â0Æìí® ¯z½ýåOgvÉ#¸u¼æÉ°Y£ U? ÌGöQ$žæAš‚7Ó=)°:eÒlŽ¿Å}• HÕ™\T†¯9¹3Ý«3›ƒ)-êryJÙYärlX€÷î¸ûϼÿÌþäs ×2sNàÓ^Èh«Â8’¸Ž$à¨>YëÝ\¿¿uî½ïÝ{¯{÷^ëÞý׺‹YCC‘…)òtµÐGUC]”ðÕB•غê|ž2±#«’¤Š¢ × ñ$ˆC(#Ý{©^ý׺÷¿uî½ïÝ{¯{÷^ëÞý׺÷¿uî½ïÝ{¯{÷^ëÞý׺ªÿæ'üâ>ÿ-|Òw÷›{wfVŽgØ¿:­)÷oso<‹Ò<ØÚîõ,úvÆ.ºsü›ÓÄ©(xÖb4ŸtžêîÖÆÚkËÛ˜á´u;»E‰fb2@ëOŸ”]ÿó—ù·î(²ß0rÕßþ$Pf-²¾õ¶v¾’]É,^S¾÷,-NæÉšI^ˆ…‚b±Ã ïÝ`G½|« ¹.ùsÚv[›ò ½û ïÓ)þÕ©ÂF­T5+Ð…¶¶ÎÞÙ¸^×Ú˜\nÞÛØZH¨1XlM$TXúHWJE<*¨¿Õ,ìK1$“ïÝs{tÝw-óp»Ý·‹énw)ܼ’ÈÅØñ$œýž@`PŸ=û¤{ߺ÷D»?íéŸÈÏÿû¨ÿø"~.û÷]ûàÙÿ©_ýäzú{{÷]ëÞý׺÷¿uî½ïÝ{¯{÷^ëÞý׺÷¿uî½ïÝ{¯{÷^ëÞý׺÷¿uî½ïÝ{¯{÷^ëÿÖßãߺ÷^÷î½×½û¯uï~ëÝýýнUò¦û û»ic÷¿Wv†ÚÈmmÝ·r( Ucëâ*µ4sé2Pe±µ*hꣴ´Õ1$¨C(>ý׺ÑæwÅ|‡T÷Áþ_ßÌNZîÉÚ»?nÅ‹þ]ÿ1rO··¦ôê½³¸*sX=…“ìJ7‚·ß\™±•J%òe1”“ª¸BþÑ_ýx…À‚èI*@%Æ0Š TÐÔqŸï}î‡%­—¹|ƒ¾µYB±ÞØÈ¢H1#2Ï šƒWðåhŒrèôSAûãïÎOæÍüº!Å`°{–—ùžüVÃ}…>Áí­ÁO¶>Tl­·HøLq¥Ùݵ⟿?†c)* på¢þ‰jy ­÷‹iÃr¦ Å_ÌüFžT=Áx€+Ñg·?{Ooù¸AeÍ÷&òج­ªÑÏwÃs@#‚|u‰A`ŠîsÕô|8ÿ…ÿ.–ù{÷FHáݯþ›—üG1ÙÁU‰F4ø‡ãÀâÒ¡ªcHÁÓÐìç¬~ëÞý׺÷¿uî½ïÝ{¢ÝŸöôÏägÿ‹ýÔü?}û®‹ýÀ¿ðlÿÔ¯þò=}=½û®Œuï~ëÝ{ߺ÷^÷î½×½û¯uï~ëÝ{ߺ÷^÷î½×½û¯uï~ëÝ{ߺ÷^÷î½×½û¯uÿ×ßãߺ÷^÷î½×½û¯uï~ëÝ{ߺ÷DÛçwÁžŽþa?·?ǾòÅÔ ÉIsdïŒ!Š—{õWabC˶;beÙL˜ÍÀ­!€EU’ CE#~é©¡†æmî"Y-äR¬¬++ 2²š‚¤ ‚ Z^ÇSßßûê«áÍ(©£ìúX'­é~Þ‚žj-ò›®h$Qo-_5©è·í5"¬y¼+;URÔ†:t’šûl¶ÝTx‡EÒŒ0óùQ\Ó©ë—xÏ»ÍÏ·wwåÉ–Ï/$N奈ÍbìxÄÛ±4ÍLÙÉZ#¸µÙýп#ðCÚ½m³û †òBsøzyrت™hå¥PåbÊãªRž¡•d‚e±TX*î»,¢&v@I#5Fò$P1P)Ã@Ü›î_;ò4¢nPæ‹«4ÔXÄ­ªf%íä µš2E ‚.µèo•¿¦Ž§ùüýùñ÷ ISAQIÓ…‹¿ºÅBš¶7bI\øØ*b¼m$S<ˆ„iärgoÌ™¥Õ¾*ržB˜Xç>z†<±œµå¾¾íŠßž9Jˆë™¬ÜÄáiДº;W‰D´8\dùõ÷ó°þpý´ þ|sù·ékj)*÷—ÇÍÈô–ÿªÇ/©òÕûG°©sûrzæŽ5ÕÓÆÄ…Iömó·Ï xú× ŠSÔü?gwËŽ:ȾZûÑ{9ÌbÞ99…öëÉ+úw‘#ç—Y`ä¨Df£ßûs³zÖ®•ÛõAV›÷cmØ¢–&á½eAR9÷n:2ç ü¨³‘¬´_Ì‹á*à3':{oH/ϪþîÆÌ‡üA÷î½ÔœŸózþTø˜šZ¯æKð^UQr1Ÿ*zK5)ýL8më_3Ÿð O¿uî€ëÿ þL›)æÍÿ0•ÈÙ“eE½»WÐ +]{´·<“³[ßߺ÷Ev¢¾MDò|{éoœ?+«ª(0ÍÔ?·>3odfždŠ)jwdVl¦ÇPYõ4Æ–Bª.SÞ‰ ¬ìh€TŸ O è¯sÞöm– .·ÞÖÒÙ,óJ‘($–vP©=¾Ãþ{¿Í?·ÆOñùuõGÇLd”J˜Ýÿòï¹dÞY_5O™Ed=qՔ؊Š:šDUaU]DzÈJŸeónÛ|5 r¬Ô­º¿*Š€~Dž:‡yï'ìß-ø‰'7Çyt°K4{\{D±§ H 2ù@5èˆö~Òþa/¤|Ýþc}¿¸¶}}M,Õ]!ñ–Šã¯TKI Z$ÃååÚÂ=˺hd,×z¹f½Ù‰ú”Üs"R–¶äµ8¾(kžÐME<õ ùc8ïÍ¿}’VH9“¨ÅF™¯Ÿ®koãú‘“• w)zGâWÇOŽ”ÍPõFÖÚÕóCO nã4–ݹ1K$òÃ&Oufd¯ÏWL%©v,ó’Ìn~‚Ä7[•åÙocáŸÂ0´­@§<‰©ùõŠí︾à¼Ë̼Ïpöÿ£> °µaJ>“M-/‰%«štc=¡ê4è욥Ÿp$ Où È[yei*IR $¦O­ïÇäù~"–ÏãrGØ(?ÂAÍÙÃ\*¹ûNÁNƒïgõï~ëÝ{ߺ÷^÷î½ÑîÏûzgò3ÿÅþê?þŸ‹¾ý×Eþà_ø6êWÿy¾žÞý×F:÷¿uî½ïÝ{¯{÷^ëÞý׺÷¿uî½ïÝ{¯{÷^ëÞý׺÷¿uî½ïÝ{¯{÷^ëÞý׺ÿÐßãߺ÷^÷î½×½û¯uï~ëÝ{ߺ÷^÷î½Ñ$ùñð ã÷óè¼—H÷Π55O÷ƒ­»+nºc»§·õ*_¾ºûpªýÎ/+E2'žFšºaH+ài‘Ǧn-­ï-æµ»%µ‘ º0 ¬¬(U”ÔF"„u¥×cmÿ‘¿Ë¯¹±Ÿ>s²¹Úé±ÿþ]â)&ÆuOÈl4cM+3^ìivGqÑR¸!‰ª‘>æOÜ€ºMXe­£œ}ªתª«y(P(¶ €áЦÞyÛjŠ86¾qÝm P¬WsÆ  Hp §%ñ+â®eòÿ¾?e${ë“!Ó]uY)-õ>J¹#êÿßÝ—p¿FW’Tå‰õGÈ‚ŸFÉîǺHU—Üú ÿÑÂìØe¡")Ö Ãÿ‰˜¦WÆ|_øñA"›¬´-ÖðL ï,{md¸?Nx÷i7+ù\È×nú#ò @?!óãÕ¤÷kÝ9X»û“¿Tú_Ý(ý‚Pä:ðeÖÛh"íξØû}c°EÂm<( @‚‚‚¶ÿt…øá{7ûÛŸ¢ë¯pùþùJ^óÎñ2!ïn\ɤ=-•UQUBª¨ ªª,ªª,€8Òt$’I5'®ýû¯uï~ëÝ{ߺ÷^÷î½Ñ[ÎäN[1È\”¨©s¥TaM¢¦VUà2ÓÆ ýnGÔû’­ ú[X-üÕE~Þ-üÉè!u/q,žDãì˦jzO×½û¯uï~ëÝ{ߺ÷D»?íéŸÈÏÿû¨ÿø"¾.û÷]ûàÙÿ©_ýäzú{{÷]ëÞý׺÷¿uî½ïÝ{¯{÷^ëÞý׺÷¿uî½ïÝ{¯{÷^ëÞý׺÷¿uî½ïÝ{¯{÷^ëÿÑßãߺ÷^÷î½×½û¯uï~ëÝ{ߺ÷^÷î½×½û¯tüšø¿Ñ1:kvôÈî¹ÀvWo:_S¦Õ-lAÎ;pmìœF<–ÜÜøYßËE‘£–ºi9G}׈®´¦ù‰ðkåWòˆÈÖg+?¿-¿—‘«¶ ·ñøé³½éñ§#¹ðøèš]ã±q16ˆw*1ÿ”Ç•TW{_#¬,÷ÃókÝó?·i—1±-%®ÞáŽIC…‚R~ÈØäé90ºó²¶ÞúÛ˜½ë׳¹6ÆjªñùŒ|u¸êÄ ²x“Ë%^)t7VÜ{½Å¥¥òRâqB#"¼hxË®lï;.÷ËÖϾmóZnpµ9«>GˆÎâ§ùSçÕÅÄG‹S¬ãt`[é^?¬KÿC@/í£ËÛÀãgÿCÿ?u¿/ãë³¹ð@_ø‚qý"¨'ý°†çÞ¿«ûÇü¡÷¤ÿ º÷ñõÀî¬ü¯ÿ¶¦¬ÿêvþ®o?ò‡ÿOú ¯xðÿøÍÐ Ù}‡·§Í¦7ø›ñ&¸Íe¾æ­VwpËNK)§1m¤ƒaÍÈ×aå]Ö?Û ršük€ ñ­N*(Fk€GºÎ²Iq½QV§öJ|¿ŸA]FýÁBáb•`¨o$êˆ $h"ªJy5/‘cõúØI,î2).cC^Ôý½¡‡ó¯Ë¢ž“U=‹\ú>ÓKµy>âIj‹~:<hÜÞú¯qô·&ðò­²êñî½4€¿mkª¿Ë¯t•¬ÜYºôñÕdj=2#GŠhäI@WYR™!Y•”ZÌŸê}[í[u«j†ÑCTš±p ±4ü©ü‡^é—Ù‡^ë‹2¢³³TVwf *ª‚ÌÌM‚ª¨¹'€=é™UK3£‰<:~ÖÒêþæ ;i&¼•‚¤h¥ÝØà*ª‚ÌÄà =Öó[ù¦-zŸ‹rwNâ_Ë~°íûßiPjë¾±Ù;cº:?un ì×ad¤Çìꌦ3´ë§þK[Q’¨h|4ðM9ñûóám{%¼ví¨Gª§ÈêÓÃÖ”ÿ7]`ûŸ{GÎ^ÚlÜÛ»s…šZͼ}!ŠÜµfmÅÍZ`”/õ ¥5[XS@~¡~ÃfO^÷î½×½û¯uï~ëÝ{ߺ÷^÷î½×½û¯uï~ëÝ{ߺ÷^÷î½×½û¯uï~ëÝ{ߺ÷_ÿÓßãߺ÷^÷î½×½û¯uï~ëÝ{ߺ÷^÷î½×½û¯uï~ëÝ{ߺ÷^÷î½Ñtù3ñ'ãÌ~¸Éu?ÉžžÙ=Á±²Q°þ»°ôõµÊ›O–QW–¥{Uü{Ÿ!¼?–—Èú~ËØÐ4õñCåÞJ¿,ÑÀÕVOC×ÝñEÛ† É^yžÔMô$•Eiu&tàj:‚=ÌûºûoîcK}}¶ýþÕ?Uj7v$±i’š&$’K8ñ€R¥·OÈ×СºóçAöŸÃë Mþä»?WSf^™d.vßoa¤«Ù9G©HõCÕ[Z ÔåC*[”?X7Ïs¿rùvK›ŽXhw­­0ðÊÃpjha‘»žƒ ÈÌhiшۛ§lïU>sin,èÂÕ(jl¾ÞËPf±• T00×c§©¦“ÒAᵃqÖ+î[^ç³ÝIc»íÓÚÞ§å£qö«€GìéûÞúC×½û¯uï~ëÝ{ߺ÷L{‹9O·qU)Ç‘“LtôâDêjd:c‰ Ÿ åœ€ÅcV`¦ÖöªÎÕï.À9'Ð'üƒæGMË ‰ žŠ…eeNBªzÚÉž¢ª¦C$Ó=µ;è ˆ ª *¨DZƑ"Ç€€`tJÌX–cRzîýk¯{÷^ê-mu2’¢¿%YI ¤¦ª®®©†’Žš$RÏ-EMCÇ1ª©%™€{nY¡ Í"ªz“N޶[æi¿kåÍšæûpb(ÆÒ6M:AÒ+æÔ>‚™Ù»›¾wY럇=Ù?.û 掓íºSY×øz™£w‰÷glÕÀ»F¡nîµ2p° o9šÒ*­ªׂÿœþÏϬ¾ö÷îKÏ{óÁyÏ[„;>ÖhLjD÷lšTøQ`仳©Á‹«Íø»ÿ ÀïN÷— ½?™¿rÑlý†Æ:·øñ¯)_CÊSýÌÓ&;·û‚iNOr )ÌI=&:zFÓpÊÅ Þî——äøòŸøF~^i©ë?½·öGÛŸk Oê¾ÂŸ½4Ñîæý[—õýFþÌ4‰cCAU&¤íÑ?:Kã\á:— :¿fu/]mønÖÙ*82F±µ]`¤‰&ÉdfTJš†–y,59°ö_ÔµÐÇïÝ{¯{÷^ëÞý׺÷¿uî½ïÝ{¯{÷^ëÞý׺÷¿uî½ïÝ{¯{÷^ëÞý׺÷¿uî½ïÝ{¯ÿÔßãߺ÷^÷î½×½û¯uï~ëÝ{ߺ÷^÷î½×½û¯uï~ëÝ{ߺ÷^÷î½×½û¯uï~ëÝ#÷Ï^lÐÛµÛC²ö>Ðì=§“¡Émñ¶°Û³oWÄêQã­Â稫ñµQ²xØ}û¯uE}õÿ ´þ]½™¬Þ½CÙß»±f3n_Œ[ã'·öåDÒ¼²ù*z»rɸºæ%™‰Xú"opÁ‚²ì3/ÂHè‹}å~[æ{f´æ=†ÒúÜ©ZOI@j’ÊJœà©‚U·Ø?ȧù¯õ#K'Çß–ß~Omºˆ§Áü‘Ù{㨷þFšg »—­ Ý»r«0`‘QZh¨é›@-ê%™å¸qÏXïÍ?thwÿÔÚí.ö‹ŠÄiK!5&­À›Ö”FA@(©%'tt—óEéÚ,‚÷òÎï}á¡XÌ9‹Y=Ýûw"L)PðÀ»Ó¼¡µ#<‘ ÅLîê‚.®‹¬å1Ô/½}Åf[k‰9wÜ5{ÁMÜÚ”C‘]sE4Œ´ZDRÑAÔ ¶äÎàØBWíÿ†ß̤"€3ÏQÚßûsoÒÃj×3TÐârð´ jÌ„r Ü1üú‰÷¹·¼¶uúx¶»¿ù¥uOú¿=")?˜¯ÄJÉ$€vue d'LÔ݇Ø[f¶'¸ ɵ±']Øp ¿âþíõò=GÝGßrÚO& ¿[cOås_åÐ=½þv|rÜ‚ yìÚbŽoá8êM½»ëꥅ´ff¢ÛµZª€ˆLJN€€MÙ„»vç´XÛÿ¹ÎÔ-ÚÜ})A_\ñùò}Ñýû¹¹XÛ”àHŒÞÙéhY‹×ìR:Áˆï½½ºËSõï^|‡ìü·ž`ÁuïÆ®öÜYJÕ›Ì ôA6= ðÄÑ(?¾üŠP8ÔUSs>Ú¼Fû”Ž„V?rx®”µÍæÍlCI.%bA­Hð­ä¥(H©"• Äì~…þbÄ"¦¿–ÊܳÖÏ8ü¿kãögDm2šYª&Éf7Îä9Q€´rÐ ì,¤(tóXá ŸæÍþ@?ËÔ£±ýÂ%4~d÷W"©mlZ£Ïõ%•hxPøGìèõuWò!þmÈèý­ØŸ¾mš¨ã.ÞL÷ÈϤ…äS+R=D[oaÓå!PT,±TS‘ê IJ®9‹rž¡d¯ôGùMOìê{å?º²üµáËy´\n×kø¯%,µ­káB!ˆúQ•ºµ.Žÿ„È|ÚùŠÝò§|w7ÎÛK:Öš.åÜ£ou\ÚN³Œê-‡ükÑÑ ´pÈj4}5qìšI¥˜êšVfõ$Ÿðõ‘{FÁ±rý·Ñì-¥§ð[Ã)þóªÿ.¯ÿ¬ú—«ºckc¶GQõÞÊë=Ÿ‰§JlvÚØ»kµð´§Ñc ÃÒRSê'–b¥˜òI<ûo£n„/~ëÝ{ߺ÷^÷î½×½û¯uï~ëÝ{ߺ÷^÷î½×½û¯uï~ëÝ{ߺ÷^÷î½×½û¯uï~ëÝ{ߺ÷^÷î½×ÿÕßãߺ÷^÷î½×½û¯uï~ëÝ{ߺ÷^÷î½×½û¯uï~ëÝ{ߺ÷^÷î½×½û¯uï~ëÝ{ߺ÷^÷î½×½û¯uï~ëÝ{ߺ÷MY\=¦Îa±Yšq{A•ÇRdaúÚ*ÈfAÏý׺ƒG³¶Ž:žZL~ÕÛt4“¨Y©hðxÊjy”\…–iR9x ý}û¯t÷KIKEt´TÔô”±±SRÃ<‚I"8bT&üïÝ{©ý׺÷¿uî½ïÝ{¯{÷^ëÞý׺÷¿uî½ïÝ{¯{÷^ëÞý׺÷¿uî½ïÝ{¯{÷^ëÞý׺÷¿uî½ïÝ{¯{÷^ëÞý׺÷¿uî½ïÝ{¯ÿÖßãߺ÷IÝÙ»vÎÄÛ¹MÛ¼sxí·¶p¥N_9–¨JLn6žIâ¦Yë*d´pCç»YF«’>ýÑfñ¼í\¿¶]ï;ÝüV»T Id`¨ŠHZ³RNsП5~$Èë"z‘ävTDMçˆgwbUUj fbläŸ~ê;_}}›f ¾ælʼn æ:“ûz3‘È“G±0xåE’7GGPÈÃüMýû©UY]UÐÕH¨?#Ñg©ùŸñ>Ž¢z:ÏSKWK4´ÕTµ;¿E5DÑOðK2Ë ÐÊ¥]V~ê,—ß/g –Hf÷'gI‘вµÌa•¡PAÁ ô*õÏou‡nÑdr]a¾öÎüÇâja£ÉV팥>Z–ŠªxÚXiê'¥g&x¶›ÞÜû÷BþYç>Sç8.n¹O˜m7 hX+´,ЬEB’µ+N=2ö/È‘ê<­³ûKdì<¾K¹\~?tgh±U˜æ©žVSGW$fh>æ–D,·³)ߺAÌÞãò&]ÁaÍ|Ýa·^ˈ‰<Ë2j+©CQ©H¨órë®þéNÝÉWáúô6^ýÉâèFK%Eµ³”yyèhx©Vª­iAOQ2¢–¶¢x½½ÖùgÜ^Dç;«‹.SæËÆîõºÛʲJ…ÔÚI $€+Äðëa|…èî¦ËS`{3µvFÅÌÖQ.F“¹óÔXŠªš’HVªž:¹#3C剖ë{Ï¿uNd÷'y:ò-¿š¹¾Ão¾tÖ©<Ë2F ŠŠ‚*:A³±ñþò3¨¿ô4ÃÿõG¿tÿ_f¿ð¦ì¿öUý×¿ÙØøÿyÔ_úaÿú£ßº÷úûû5ÿ…7eÿ²¨¿è.Ÿ¶OÊŽƒì½ó‹ë¾·ì·¿÷&O žÜ-ÑÈÒæ©1˜Í¿6"ž®\½],Ì”2UMšˆS¡¦Ñ!O¿ta±{¹íß4ó§-r¿4Zî;¤¶òÍKgYV8á1†22žÂÆU8µøOFIä–V HÒHç舊YØÿ‚¨¿¿u#3*+;š('ä:,³|Òø™O4´õ!úš à‘áž ·Ž&)¡š&)$RÆó«Ç$n¤2"ÇߺŠßß?gcwŽOr¶e‘I˜Á`‚ ¨ ñcÿgcâ?ýägQèi‡ÿê~ê¿ëïì×þÝ—þÊ¢ÿ º|Ûÿ-~/XœÈ ÈdêRšwþÚ‚®®F¾˜h ªÈA%dÄ):"à ÚÞýÒý»ÞOi÷k”³ÛýÇÙdºcEO¬€3E à±ù-OË£`He` ° ‚¸ Ž#ߺ’:bÜÛ£nìÌ5^âÝyœ~ßÁPÍn[)P”´‹,‹ mQQ!Ä­+…¹ \û)Þ÷ÝŸ–öÛç~Ü¡´Ú¡¦¹e`¨• Ìp$ ž™¹¹·´…î.¦Xà^,MûOAû4ßçöu¿þ…8Ïúÿî<ÿ_fð¦ì¿öUýÑWõ›—ÿèñoþö:÷û4ßçöu¿þ…8ÏúÿïßëïìÏþÝ—þÊ£ÿ º÷õ›—ÿèñoþö:ƒ”ùkñ¿ŒÈdÛ¸¶5rã誫M/=A_“¬°¼ßk¢†o-]mFF¼»?>Òß}མ°²¼¾oq¶¹D13èŠt’GÒ¥´Æ€ÕÝ©EQňR^iå裒C»BÚA4VšyæOèÀÑÕE]GK[a e4Q\EQÍu€m...y÷.ÛN—Vö÷QWÑ…xÑ€"¿:Qƒ¢¸à@?· Ãu÷·MìLÔûsyv^ÎÛÚh©çŸ›ÍÑã룆®%žšcDˆæ)âpU…Áÿ\`mÿÝ_mùWs—fæNvÛ¬wTUfŠi’7 à2,A£Pxt[u½íS5½Þã s€ V`r0zUlÝû²û.gcnl6ëÄÁTôRäpu±WÑ¥\h’INj -•E$Åùö}Ë|ÙË\áe&åÊÛݵþÞ®Pɉ8•Ô¸¨TytªÒúÎþ35•ÊK4ªšŠúW¥w±Jº÷¿uî½ïÝ{ ;ü•莯¬›½û?lb2´ÞAU‡§©Ÿ7™¤h-fO”ÉÒJméI"Vs‚}ÅÜÛïWµ\s-—3óͽúWT*Í4ÉN!áe• e𞉯¹‹dÛ\Çy¹F’Ž*¦j¨b?1Ò'ógâÎãªZ<p`éæfDžÆnm­Ky*–¯Üø`‘Б$E’7 ‡ ý„tü7¾Ðëü@ÏïmÇ‰ÚØCW ñ\ÕdT4"®¥ejzv©˜¬I$ÂÒ "Û{)æ.håÞQÛÆíÌûͽ†Ùâ*x³8DÖÕ*¥Ž44¯SL]ÞÚXEãÞ\,PÖš˜ÐTðè;Åü’è,ÞJƒ‡í탓Êå*éè1Øú-Ç©¬­­«•a¦¥¦‚)ZI§žW ª$Ÿ`ûz}¦Üïm6í»Ü=¦{ùäXã.#gwrUT–b@yô_0ìsH‘EºÀÒ±à’NÔô1W×Rc(k2Y ˆé(1ô•ÕµS1SRRBõ5µŽ˜á†6f?€=È×wVö6·7·sí!ØðT@Y˜ü€ŸèÝÝ#G’F¢($Ÿ@2O@wû4ßçöu¿þ…8Ïúÿî.ÿ_fð¦ì¿öUýÑ/õ›—ÿèñoþö:¶–óÚ›ó›ƒfn ^æÂI<Ô±åpÕqÖÐÉQO§Ïu0–Ú"à5‰±ãØû—ù—`æ½¹w~ZÝà¾ÚË•ÂáвÓP 0H¨­:3µ¼µ¾ˆOg:É i©MEGô‹Ý]ñÓ;7S¶÷fìͳž¢Jy*±¬å|ÕÓÇUK$”õ$'§•]M¬Aöß½ÖöÛ•·9ö^cç}¶ËvŒ)h¦#‘C¨e%XƒFR>`ô’ë{Ú,¦k{½Æçª³EEF¨éC²;3¯»&…NÁÞ ßOŠ–2U Œ(h¦ªI$§†¢ZvtŽYR`¤ÞÂÿ‘ìß–9ß”yÖ+¹¹K˜­7mÙVF‚E‘Q˜¡ŠÔ@&œiÓö{†â$k´•T€Ji^§KŸbž–õï~ëÝÿ×ßãߺ÷X憈e§¨Š9àž7†x&E–¡•JI±¸d’9ˆe ‚ ¿uWD‘94l Š‚ à‚8Ž´ðù1°²Ÿ þkd&ÚôÓãöw`mþÛë:wŒ%»rlÄ;ŸŒ4n¯EŠ«§—!(AjGàû÷\O÷S—nýŒ÷Úåö›p¶Ö;Œ;ˆ"ˆa2 âAƒU•­Î2clu·Õß›kwì ¿Ùx¬„Cin-©ŽÞty*‡Ž8áÁd±QfR¢­ÕÞ8M=·˜j>2¬Óߺì¾ÑÌ;^õË»w4Ú\Ü×6ir®HDñ‰1©JžìàƒéÖ˜]Ù¸7'È®ÜïþîÁ`g›oÅ›¯Þù‰© ñC·ö~Ctâ6v×›!ä`Z²WËã¡”(òI+É.…E§ºá·=î[§¹œåî7>íûs6Ú'{© Šmžâ;h ×ñ$*ÔË1gÒ6›äþLݳC¹ºvõ4ïMs¬7…FJž+õ[c{‰2T•r!:ê%§ÏÒd"‘ÀÒ‘˜Ø‘uп¸÷8Áºûw¼òt…þÓz\‚Ð]UÕˆâH™fRF˜Áâ*V¿goSe÷ÏVt–9à—û‡¯ß;’EEybÊî—\vÒ‘®¥Ä⥨t^+¢&åE½ÔI÷ìçH¯7þQä;fSôP=Üæ•"Iû"JñcœÄJ„ð¶/€½ Mñûã/_mʬTXýå¹±±o}ý1…cÈM¸·$k_Eô+´»s%>8'*†™ˆ¹f'ÝfÝ×ÛȽ¸ö«–öÉm{ÝÜBêìÒŽfœkçaŒ¤4à4Ä’kÇù᢫ñÞBŠd]ÁØÈ®TkT“´ÑZÚ‚»F¤¡*? ÷ïò£÷G¶A¨\ÞŠý©m_ÛAûDËáÇòÐÿfÓ¨çíOôÕýÀðnìÎÕþþŽ?½Z¿„Qâjþÿø§÷óméûâš|_ntxï­µX{¨;ÙºÇúòrdœÝý{ýݦö[ è¾£û5µøŸWštbŸ® oü1ŸþþÁ?ÿKžýÔ¿ÿþuŸû¥ÿßG£)ñ ùmg>#wÍdRödíü†ÄÝûk0’mÙ•øŠúêí³W‡zZïNêLµ=bPÔ‰[]9§1§ Ou){-÷^Ü=™÷ ßš!æäÝ6Ù6û˜$Ûéž7w£*>¢àH¬õ¡B «¶Ú=û¬ÆëL”ûu7?Î>åÚ©P¸ÕÜ¿ s¸3Z” Q¾svš)+M(š˜T´RU™Y<‘™ Á`Mýû®û·¶ÛßÞxÚQºæIbÕ¦º|[%´ÕuP¶¢*+ê+^¬ïþÏÿ‹ÿ`Ÿÿ¥Ï~ë+¿àÿγÿt¿ûèôW~[+lÿƦËvýqá7ö oV`ésXÊÝ¥6ÊËžÌS`éŸÜÛªŸ*ðÖ×ÀÒFdÄI"#«ÝDÞò}Ò·j9:ó-ùÞ Ço¶x–Tksk'êʱ)Œx÷ ! êJÕNMÁr“mo½ïÕý¥×»«!“Ìmþ®ËìÿîU~NYjM?uÒî6¯ÛUR¡cA‡ŸoGš^³Wwí; <>žOøãu­GÇ~›ÿO}©…ë?ï÷SøÅj³øßðã¿oü#U“ñÿ þ)‡ó}ÇÛh¿Ü.W³ZÇŠ^Ï{oþ»ù¶òOúˆ¦Áñôø14”ðüXk«Nšø‚•­±ã`Ú?~npíßQák uiÕM*O KÆž½XÏü4çýÿßý…Ÿþ‘ýæOü?ùÖî—ÿ}‡ÿë_ÿIÏú£ÿ]zƒ”þTY|nB|GwÓäò°ÑUKÇUõÓbékë£…Þ’Ž£$›ï"ÔTÎaÆ Ú´5¬R_}Áo!²¼—o÷='¿X˜ÇíþÈáIDiô†5f /á¾k¥©N©/¶,r4[Èi@4- Ÿ OˆiSçCOCÕÂa©¥¢Äb¨ç '¤ÆÐÓLµ(– X¢+C¡±üûè¶Û–»u…´ x±ÂŠi‘UPóK©H¢Fø‚ûTµüÕ•Fþê‡ ¡ÛhgžÃS*f¢(¥¾¥T¹ ~.¯¾i}ý[9¨5ºq_²aOÙSûOQ¹¿îvÖ|ü&ÿuaSâ¿PUPpù–!@³î¼û»X[ÔîÄ“ù&þóîÀª¾Ãûv>šcù›©Éý§'çÐó“@³µSøþ>ÝÏs×B~½ïÝ{ª²þ`ÿ+7]šn˜ëœŒ¸ÅšÄ&OxnZ¤ƒ'…ÄW;ÇA†ÃÔDUè²YH¢ygH–vŒFCK­0GïyïÞïÉÆmy2õ­÷››q-åʲÒ#†)$ y ‘”ÐC>¥9ó™ç°Ó´mò¸t¬Ž0UOSäOxJq¨*ßÿ—þçî½¹IØ»ûrϲvžq¯MMD2;£pÓ»2î+$Š“Œ«bZ dóÍR£X‰chåxÙ_ºFùîfÍoÎ<Ù½¾ÙË÷@¼ ©â]\)?Úd$Q1©Fmo ‚dv r÷"Üïé¸_\m_*«¸þ,áAò&¤ñ¥$Ào¯å]‡z™úÛ³2ßÇ`‚I)qÛ΂†lnF¡C§“)††Ž|RÈl<ŸmU¤ýVljoš~áÛpÛ§—’ùÞã÷ª¡+ähc‘³E2¢޴ôô=½öΛoÜ_Ç@(O¥V…~Ú‰÷Ç‘ñ3´æØûͲÔÛ2Ÿp¾°v>AÌñaçóý­VàÂÇj…§¯¡ 'ÕJDY(C½ž÷sœþïüù'+ó)¸NZKÃáe!Ô!mZZâÜD¯‰XŽ‹”ÀÆêØ7ÝÕ÷3ey¨Y‰4Ëü&´,¼hGÜ8õÁ f°øí¶rX<¬¹·º0Õ°·Žz\†+-HÑ>†³£¤ÔójGµÃǾ¿î{vÕÌû%î×w;-õ³Fë†Y"•(iÄTÔò#©æh ¼¶’T=¼¨AóX›­n6vGâËbgKxúó~U`3uƒU´òÉ>·/ Nÿ+ÚùcYã–NWê8½Ê—WžÀûÿd»©:6}Õ ˆøíe Êþ;Y|høq\Ž#ì^NWæˆÄü-ç*ÇÕª[óFÔ?.¶5ß›×°v&éßÙIñ;_nä÷ Å$[UÅAE%T4ôò. ò×È«V¾§‘@½ýöSšù›oå>Ußy²ùÁÛìlä¸4? Sš— *Òµ,)Ǭ€¾¼ŠÆÊæúCúQF_í ­ÛÀ}½jŸ” ÜÛš“söUF1›&ë‚—5”¦„CަÜ;±s™ºJQ™Dðâ*ÜÔ"TPÄM\¾µÞ÷»}ïf²'okõY¥QHÖâëÇ™#µîJ@  ²êÆ9RâånwôŒ 1¾¦þ2ßgŸÖÂ;—|nÙôjÐ.Sa5VÆËSÃ¥J eŸPb¾°*°5”Åœðó,–ú:÷÷Nç~lö_—mà ¿ÚKXÊ£ðލZœ{ xÉ<ÃÓxä}Áo¹zÑ1âÁXإʟÍHûMz¬¿æ½*;Gä_íÈ#&Ì¢ÃìjiQZlŽéÎU%}u:IÃÈñÕä £ÐxI {~¢N}ï9–nz÷¦×”¶X¼gÛb†Æ0¢­%ÔìÔ$‡’8tðN'¨ëŸ/ræ±·]F±Šy»‘ûH_´®×¦ú×Ô=e³º÷T¹‰Q¡íN4=tÖ&³ç¯ó›sfé%­ÚyõìmÃGXï"Ru–Èš™0 ã"ÊíV>†p¡5>Ÿå}Ö¹"Îo¼?ÞY÷[øL›<ûƒÞÌ­S¦ÆÔ¨†­M c@>¾ÿòGöÓþzoã–ýŸ‰ûGùfúºzߊ•{ž°§- ɈÞÝe·é?½ÒbÎXš ÝŸÆåL¦‘éuH#ñ0°RHk{¬wö{fûÏ_ò”“ûA5ÚòŸÕÈŽêÆñÂÇâv\L’WIާN“äjF·klæ©KÙ/Wß²oêþ¤¤ï®‹ªÞ4ÿߎ¶Ü4‚Ž›¶6„ô•9øÊïžÎØÛoÅS_˜ªízþÊ£ÛŠÌb޶£•ÍÕfh©#j§T”†žÌd‘Þê&÷_Ú¼vͲI¾{…y¸n¼¿kFyp{å‡È3G$­*¨Ôk BTêe6ãü¤»_¥wGJdúÛ¯6Œ»}lšš\¯bÑÖWœ½Fð¬Ì£ÒSox3OHõ0U oÛ½7ÇCR:K'ºÌ¿¹·8r.íÈ—|¯Ë[1°æ Y/UŸÄ7--Un„¥T°m zGEAUev±þäÿ™CÚ¿ø÷ÏþóO`ÏqÿéÞsçý)oí^²Ûwÿ’Vçÿ<òÇZÌô=oäû+IÑRVÇÙI—lCãòXlMP¤Rùm¹úªÏ÷'ù¨ÿÊîîÿÐÿ©û$÷–?Õ¿ü¤îö_µÛOC£÷3øåÿœ°Ð}YÄJ çŒè£Eرe!ßPç{0îµÌ¿›'&rnÔÞ³×ÔUT’:¶«šC*ÌŽñLŽ6de'3þï6¼Ëeí//ÛsŒs¯4­Þåõ^1¬†sº^´ŒÍRY:ƒ©*à†BT‚dUKÈö+T¿ /CͯW^4„’|ëÆ£ˆÇFWÜÕЋªJþjßñþu7þ9ïýÜÁï˜ß_ùZùþ•óÿÕåê÷;ýÍÚÿæ“LJVð‹þÉc¨?íK—ÿÞ§=ï0>ì_ôâ=»ÿžií*~‡¼›ÿ*ÎÓþ‘¿ãíѪ÷<ô&ëÞý׺ֻç”(~Uö‘Éù žm¯= ¿è|klͼ”~Shš ¾’+v¹÷ŽlW±ûõÏfúµfµd'èíÂiò I§â \׬yçus>çây”#ìðÖŸæûzØs­ªðÕÝw°ë6é€à*vnÙ› )t}ºâŸ DÔ qÒéP ZÞûÉSí·\Ê—6Ý/¶ÛtÓO„aO (€Pã‡SÖÞн…‹ÛÓÀ0¦špÓ¤Sùtµö&égZäÿ0ª¬WÊ=çüÀÓÓâv¥.~Zr¬²g!ÀQ DŽŒÊóÓã42ZÅ2Œ5)÷Æ¿½ôû\þús/îÒ†T·µYÊð3¬ Z‘‚ˆèT©È=cÿ>4-Ì·ž 5@Ôþ £ù@~Êu}%JŸ¦zŽ Ás—‡¬v YS/2”{W•ÆCe»š ×às﫞ØÇ{¶ÞÞŸ“ûÁv;-xø‚Ö õùê­z›¶a"íRÍý¨¶‹WÛ¡küú©¯æ‰ÕÂ÷nÌî,u1Z=ÓGýÐÜ’Æ F¹ì,RUa*gm µNOe„rG8œûôrÐs-ûg-¯ãúK’)`Ôƒ? °Àó‹½ÉÚü+«MÚ5ì”xoþ™r§í+Qö'H®ØùJwÁþ²ëá_åÝùLÏ÷+x)ž¥°]f˜Êê*š@‘ß1nF‘ÏîIëw!ˆ óÿ¾Ç˜þëü‘Ê"ïW1OsôWÕom:3b¤ÌÍ‹ÜË(î!ˆGºs/ÕòfÝa®·lþžºa¡ÿ¦¬f¾d7ôhú{âúf~eöŒØådz±u}›EäŽAP¹ÈÄû°–8êqºE`UûɆ–ÔÅçOn}Œ]Ëòô–cúǾ@û’TBq¦Kµ¢Š @ 4ƒIÔÚ„»O-‰¹[SøÝÊ™‡®¬Çæ¡ÞŽ8Ôü ùCÒ¹þÓÅnyÄX ¦ÄÌnªz9æX}Ѱhkr”øÊU”]*³™jâ²ÝÞX¢]-a§þéþíÚûg»så†ù.¦}ªk¥F`¥®¬åX–¼hŒ«Œ–XÅ |¾¦Ï>çË~ƒ@Îiß,ù²êhIø±r]×òc'Ú©NJS‘ìLÝTÅš:­çž®ª8 þO4¦eÉÍQ_ÜÔ<±ý,ÿÝK•¯}Ì÷²÷žwáãG¶¼›„ìkF¼ÛÀ­jkâ™'\ñƒ$ð6ä‹)7Žb“r¹–ecë#§ùÕ‡ú^¶÷Öî§N½ïÝ{¯{÷^ëÿÑßãߺ÷^÷î½ÐsÛÝs…íÞ®ßÝe¸4®'|m\ÎÞ©¨`  ’¾ŽXèò‘_Q‰­ñÔÄOH”Ÿ~è3Μ³cÎ|§Ì\«¹PYßÙË à.¤,ƒúQ¶—_é(ëG 6¾F=Ý&ËòãÛ-ã}¯çZèWÙÉœO”d¥1Ó®<Ô‹ùÛJýFÃߺàKm7+¼¶Å®3x.¼ ë½~u𠳬ÐiÏ·‘êN¼Ãõ/Wì³À•|VÇÚx=·MPªªkÛA =NNP¾“S•«Y*e#õI+Ï¿uß~Må«.Nå>\å]¸ƒgag ßÇ¡iô¤j»z³Ö³ÿÍïª(6Ê$ÞX©)V›·v–3u×PDê³Ñî C>ØÊÊÔÊ %.N ]5H’äËU%EÀÓsî¹a÷Ñäûn]÷iwËFAõd—€åfްHtù,‚4}_‰ÚOLžoä©Ô¸¼g\vouÏ-V{unH¶9"™&ªÃ`vÍ-&_ “¬nM,™ì¦bx¤ÌtȶWõ{©ûî)ɶ–œ±Í|÷#Fû…åд@-P*ÈàÐö™d‘IVÓ0Ãfï½û¬öꈞбñޜ˳Ý2À]|Í xý *Ç}f4yµ`?#ߺç¿ßåÓ÷W¶‘ë!¸½4®hØN4ŒüÇDwâ/ó)ÎüNê™ú·ÔØëO6ëÌn“˜­Ýµ˜I–L½&*‘¨Å,Š€bÃò]µ‘an}Ô ìÇÞpöw”$å+^N†þ6¼’ãÅk†ˆÖEt鸠ðë]Y¯ th¿áð÷oýãÆÝÿщ’ÿìOߺ–àøÞ?ðš[ÙkÿÛ?CÆ?æ¾¾Lüê.žN³Àl,&ãÉo*­É§ÏÔîJÜ–?Ö;ß=C‹¦Z¬>11 çqÔ“¼È^FXe_~9cS[kÀ+æ~–\ŸP‡!9šÎ§ðIÿn¶4÷Ù>²¯{÷^ëÞý׺¤oæ«,g°:¦"£ÙÙ©^ êdHåÍ¢Å#¥õ*JиRE˜£[è}óïèèy»£t>‡¨oÜÒ>»kÏ„ßñîý1üÄ3];Ö;K­iz·ƒjÑÕÒG–ŸuUÐMZ*²uÙ##ÒGƒªHJ5iK áoù·°¿¶ß|=ÏÛžGåþJƒ‘`ºŠÂ6A+]#½#Ú9úm§mµÛ—mWX‹‘Z’xi>¾½ ð뛋þ|¾ÿCZïþÇ=Ž?àùÞðšÛÙcÿÛ?F?ëŸqÿFtÿœ‡þ€èÒüHùs¹~LoáC_¶1ÛG µö¦:®,m{åå¬ÊWeå†Jé«ç¡¡–8â¤cHUtܳ1bT,í÷|ûÂo~öóO1ZÝìíûeŽßˆÑÌ¥åyˆ.ddB@ ­X’HÒ&ånj¸æ+Û´’Ùb†( :ªÅ¸Ô动1üìø‘îª NÊëÈ#—±6Î,ãëð@G o ËSO4ÌÑÆ¹ìSÍ/€HmSøµH,ûÔ}Þï=Ì´ƒy> Üãc‡$Y’ʪØ‘ågf¥¨¦ΨÄwpøíÞSÜŸdb—’÷—ë6{g`-.üH.-ZµdŽB¥£BjLRDê¬j*Ú€[77îü¸­·Ü[ø!þÍ꬇ÌJò Ðð¦j2o¿æ™¿sxzš …ÖøM‘©àþ7”Üo*ª&’ãî±Ô‡·h¦%>¸Ž¦0ܲ0ãÜ‘Í_~ÞlÜöé­9S’ív»ÇB¾<·ñŸÅxñ†‡ˆ²-rTŒto{î]ôÑ4v;zC!Ô[Ä#æ”ûA.ƒ¿Š¿7÷|ïz~ÎíJ<½_¿÷“-”ÜqT Ÿdä%­5µt+XR¦¯’©ÔkkØÙK$eä,c{ ÷zæÏuùžwçËkˆùCê>¦Ynx»Œ…õ²&º3Ç#WÆœöYP³’P¿–9Vû{¼]ËsGõ³=k1­HÉüMÈ<6UTUDUDE ˆ *ª¨²ª¨°UP,ú{낪ª…P@:x`pè¼|¯ëš.ÐèÇÛ•OOU& £rák*dXb£Ím•9šyØ‚*¿µji\ƒhgp÷¿¼›mÏ^ÒóžÍ;"Ï«\Âìhkaã!-øCé1±òGnˆ9ŸoMËbÜ-Ø€Á ©>LÃ>U¥Èžµ¼ê]’½‘ÙÛ bIR”Pn½Õ…ÂÖUÉ4P}µetI_4rJBˆè¼†$úÉ U–ß}¿å‘Î|ñÊ|¨óâ¿¿†rBéÜ A5Y¨¢¤Ž±ók³ýá¹XÙ¢Ë*©<( ÉûiZzœu¶.:Ž“Ct´T4ÐQÑÓBºb§¥¦‰a§‚%þÌpÄT~÷ß«kx,íà´µˆ%´H¨Š0TUÈ.²cEˆ =à:Öwæw^Qõ¯ÈÞÅÃc^‹ËäbÝøø az·\+™©ÇɨÂ!S2D‚ÿäÂ6þÕ‡¾ò|ŸmÉ^òóŽÛdÉô7 ¸ÕºQ3FGáÑ#8Eÿ}è>tëÍö ·sá dxnÞ Ë_q*iò§Vëü¹úæƒfü{ Ýôµ9ŽÊËä7F¦žU˜ÁCŽ©Ÿ‡ÄÉ$lɪ‰(f’Áãš®DnVás~M´å¿h-7Åd}Çz¸’âFR”šb$vw#м®­‘A*rߦÃÈ Ëpå‰@ª¿• ù#£íï,:uï~ëÝ{ߺ÷_ÿÒßãߺ÷^÷î½Ô ®+Ædp™¼uc ˜ ¬ÅeñZ:|†3+ŒÈSÉI_ŽÈÐUÇ5-uu,ÏÐʱ±V=û¤÷v–›…¥Õ…ý¬sØÏG$r(xäÁWGF]IVV0$Aèÿe?âÏýãW@è›ë¯þÇ=û úÏ{Iÿ„·—?î[eÿZz1X¬f ŽÂa1Ô|6‚ˆÄb¨éñøÌV3O%;AI4´44°¤PÃ,qF¡T÷î‡Ö––›}¥­……¬pXÁÇq¨HãTDEQ@UU(è1Ý_º}ç*÷>÷é.¢Þ[— ´É_¸wW[lÝÜ­J:hh¨Ö¯-—ÂÖWÔ­%Žé^ÇÊÇì>Ÿêíùœ†Ž,|Yç×ûOteb ‚Ie††<Žs]V”pËQ#,AÂ+;.O¿tß9‘9žñweä­§p¿T%¹³·ž@€’<±»’´“Lž’?ì§üYÿ¼jèý}uÿØç¿tMþ³ÞÒá-åÏû–ÙÖž½þÊÅŸûÆ®€ÿÑ7×_ýŽ{÷^ÿYïi?ð–òçýËl¿ëOYq?¾=í½ß³÷æÏé޺؛³cd²¹<kblí»³kó[c9´²4yI6ö7ÙllØ­Á9O­uŽU{÷W³öŸÛm¯zÙ9‡dä³oÞ6ùdx¥´¶†Ù«,ÛºÈaDñÇ3v=@p®2½òGÑÉ Ñ¤±J±HªñÉ©WŽD`UÑÔA}û©•]YAB(AÈ ñyƒÐ~(|ZbY¾5ô 3YNuÙ$“rI;rä“ïÝG‡Ùÿi $û[Ë•ÿ¥m—ýië¯öSþ,ÿÞ5tþ‰¾ºÿìsߺ×úÏ{Iÿ„·—?î[eÿZz~Ûß:iW&SjtoOmœœlGoužÊÂ×#ÄI’¯„¦¨VŒ±*C\Ç¿ta¶ûkíÎÍp.öŽ@Ù-.<66±8#‡rD§Yèa÷î†Ý2î ··wn*£º°]Í„«hZ«¸1T9œUKSÊ“ÀÕüŒ4“43Æ®…éuXe›¾Ë³ó„ÛVý´Û_mrZˆ’h›I º£‘Y–ŠƒB3=½½ÔMÔ $'в†SLŠ‚éAÐÝ‹­¤Éc:cª1Ù}L5” ºÚ•´U”Ò,ÔõT•Tøx禩§•$ˆÊÈÀA–¾Ô{[auo{cí¶Á ä.¯‰·Ú#£©ªº2ÂYHXA½!M“e‰ÒHö‹U‘MAF#-A½ þÇÝuï~ëÝ{ߺ÷A¾á龡ݹjœöëê¾·ÜÙÊÅjó[‡cíŒÖZ©i`Ž–™jr9,]MdëOM Fœè‹°fïíÇ·œÁ¸M»oü‡²ßn’5Å•´Ò°U º¤’&vÒ *Ôš(`‹çÚ6«©Z{­²ÞI*Í3 ’ 4.™Ùwøÿÿ>3§ôYl¯þ²{,ÿYïi?ð–òçýËl¿ëOLþàØ¿èËiÿ8cÿ z÷û.ÿÿçÆtïþ‹-•ÿÖO~ÿYïi?ð–òçýËl¿ëO^ýÁ±Ñ–ÓþpÇÿ@ôñ´ú{¬¶à­Ü»emÍ™ÉaâÂdbÚ¸|v߯×QÁXk©ä©Æâ©©h䬆f`&Ñä(ÚXÆ;·\‘Ê›½Î÷Êܳe¶ÞMl!ZünŠúÔ´q*¡pI£ÓU ;k´íÖ3½Å•œpÈɤèP €j*_Ÿ„¯c^ŒzEnÞ¶ëÍüŠ›ßbí Ü#¢…·&ÜÄf¥§F ÚϤ¨š•†²U£ee&àƒì3Ì—ÉüتœÑÊÛvâ 76ñLTü-"1S“B¤r=#ºÛ¬/…/l¢—ý:+Sì$~]%°ú7kÕŒ†¨zç^Œ­u>ÏÁØ ƒOW-•ÜØŸ-Èý²§Ú?kv+w´ûy³Av C­¤ÖŸÂå /ûR+Šð&ƒbÙm›\Uº¿¨kùT~] ÞäNz÷¿uî™óÛ{º±5x уÃîL@B+ð¹ìecZ)ª!«§xì„u" ºxåMhÚdEabÛ¶Ñ´ïÛ}ÆÓ¾mv÷»TÔñ!ž4š'ÒÁ×\r+#iuVŒ¡†@=5<]Dð\Â’@ÜU€e45 Ð€~Þƒañã †^éàAÖ{(G ‚0—`±ìÿ´€‚=­åÊÿÒ¶Ëþ´ô]û‡bÿ£-§üáþèa÷"ômÐW“讑Ídk²ùžœê¼¶['W=~K)“ëÝ¥_‘ÈWUHÓUVWVÕb%©««©™ËÉ$ŒÎìI$“ì}íg¶;åÖã¹{q°ÜnÈÏ$²íö’I#±«;»BY݉%™‰$š“^‹$Ùvi¤yfÚmZV$’bBI 3.6. Scope searching algorithm

3.6. Scope searching algorithm

When assigning a variable in one of the flow scopes, referencing that scope is required. For example:

<set name="requestScope.hotelId" value="requestParameters.id" type="long" />
		

When simply accessing a variable in one of the scopes, referencing the scope is optional. For example:

<evaluate expression="entityManager.persist(booking)" />
		

If no scope is specified, like in the use of booking above, a scope searching algorithm will be employed. The algorithm will look in request, flash, view, flow, and conversation scope for the variable. If no such variable is found, an EvaluationException will be thrown.

libspring-webflow-2.0-java-2.0.9.RELEASE.orig/docs/spring-webflow-reference/html/ch07s03.html0000644000000000000000000001245311360615630026056 0ustar 7.3. The secured element

7.3. The secured element

The secured element designates that its containing element should apply the authorization check before fully entering. This may not occur more then once per stage of the flow execution that is secured.

Three phases of flow execution can be secured: flows, states and transitions. In each case the syntax for the secured element is identical. The secured element is located inside the element it is securing. For example, to secure a state the secured element occurs directly inside that state:

<view-state id="secured-view">
    <secured attributes="ROLE_USER" />
    ...
</view-state>
		

Security attributes

The attributes attribute is a comma separated list of Spring Security authorization attributes. Often, these are specific security roles. The attributes are compared against the user's granted attributes by a Spring Security access decision manager.

<secured attributes="ROLE_USER" />
			

By default, a role based access decision manager is used to determine if the user is allowed access. This will need to be overridden if your application is not using authorization roles.

Matching type

There are two types of matching available: any and all. Any, allows access if at least one of the required security attributes is granted to the user. All, allows access only if each of the required security attributes are granted to the user.

<secured attributes="ROLE_USER, ROLE_ANONYMOUS" match="any" />
			

This attribute is optional. If not defined, the default value is any.

The match attribute will only be respected if the default access decision manager is used.

libspring-webflow-2.0-java-2.0.9.RELEASE.orig/docs/spring-webflow-reference/html/ch15.html0000644000000000000000000000544511360615630025532 0ustar 15. Upgrading from 1.0

15. Upgrading from 1.0

15.1. Introduction

This chapter shows you how to upgrade existing Web Flow 1 application to Web Flow 2.

libspring-webflow-2.0-java-2.0.9.RELEASE.orig/docs/spring-webflow-reference/html/ch03s02.html0000644000000000000000000001061611360615630026050 0ustar 3.2. Supported EL implementations

3.2. Supported EL implementations

Unified EL

Web Flow attempts to use the Unified EL by default. jboss-el is currently the default EL implementation. When found in your classpath along with the el-api, it will be used automatically. You can find the JBoss EL jar in the SpringSource Bundle Repository.

[Note]Note
The el-api dependency is typically provided by your web container. Tomcat 6 includes it, for example.

OGNL

OGNL is the other EL supported by Web Flow 2. OGNL is the EL most familiar to Web Flow version 1.0 users. To use ognl, simply include ognl in your classpath instead of jboss-el. Please refer to the OGNL language guide for specifics on its EL syntax.

libspring-webflow-2.0-java-2.0.9.RELEASE.orig/docs/spring-webflow-reference/html/pr01.html0000644000000000000000000000612611360615630025551 0ustar Preface

Preface

Many web applications require the same sequence of steps to execute in different contexts. Often these sequences are merely components of a larger task the user is trying to accomplish. Such a reusable sequence is called a flow.

Consider a typical shopping cart application. User registration, login, and cart checkout are all examples of flows that can be invoked from several places in this type of application.

Spring Web Flow is the module of Spring for implementing flows. The Web Flow engine plugs into the Spring Web MVC platform and provides declarative flow definition language. This reference guide shows you how to use and extend Spring Web Flow.

libspring-webflow-2.0-java-2.0.9.RELEASE.orig/docs/spring-webflow-reference/html/ch11s03.html0000644000000000000000000001163611360615630026053 0ustar 11.3. Including Spring Javascript in a Page

11.3. Including Spring Javascript in a Page

Spring JS is designed such that an implementation of its API can be built for any of the popular Javascript toolkits. The initial implementation of Spring.js builds on the Dojo toolkit.

Using Spring Javascript in a page requires including the underlying toolkit as normal, the Spring.js base interface file, and the Spring-(library implementation).js file for the underlying toolkit. As an example, the following includes obtain the Dojo implementation of Spring.js using the ResourceServlet:

<script type="text/javascript" src="<c:url value="/resources/dojo/dojo.js" />"> </script>
<script type="text/javascript" src="<c:url value="/resources/spring/Spring.js" />"> </script>
<script type="text/javascript" src="<c:url value="/resources/spring/Spring-Dojo.js" />"> </script>
        

When using the widget system of an underlying library, typically you must also include some CSS resources to obtain the desired look and feel. For the booking-mvc reference application, Dojo's tundra.css is included:

<link type="text/css" rel="stylesheet" href="<c:url value="/resources/dijit/themes/tundra/tundra.css" />" />
        
libspring-webflow-2.0-java-2.0.9.RELEASE.orig/docs/spring-webflow-reference/html/ch09s05.html0000644000000000000000000001212511360615630026056 0ustar 9.5. flow-executor options

9.5. flow-executor options

This section explores flow-executor configuration options.

Attaching flow execution listeners

Use the flow-execution-listeners element to register listeners that observe the lifecycle of flow executions:

<flow-execution-listeners>
    <listener ref="securityListener"/>
    <listener ref="persistenceListener"/>
</flow-execution-listeners>
			

You may also configure a listener to observe only certain flows:

<listener ref="securityListener" criteria="securedFlow1,securedFlow2"/>
			

Tuning FlowExecution persistence

Use the flow-execution-repository element to tune flow execution persistence settings:

<flow-execution-repository max-executions="5" max-execution-snapshots="30" />
			

max-executions

Tune the max-executions attribute to place a cap on the number of flow executions that can be created per user session.

max-execution-snapshots

Tune the max-execution-snapshots attribute to place a cap on the number of history snapshots that can be taken per flow execution. To disable snapshotting, set this value to 0. To enable an unlimited number of snapshots, set this value to -1.

libspring-webflow-2.0-java-2.0.9.RELEASE.orig/docs/spring-webflow-reference/html/ch07.html0000644000000000000000000000615011360615630025525 0ustar 7. Securing Flows

7. Securing Flows

7.1. Introduction

Security is an important concept for any application. End users should not be able to access any portion of a site simply by guessing the URL. Areas of a site that are sensitive must ensure that only authorized requests are processed. Spring Security is a proven security platform that can integrate with your application at multiple levels. This section will focus on securing flow execution.

libspring-webflow-2.0-java-2.0.9.RELEASE.orig/docs/spring-webflow-reference/html/ch07s05.html0000644000000000000000000001725611360615630026066 0ustar 7.5. Configuring Spring Security

7.5. Configuring Spring Security

Spring Security has robust configuration options available. As every application and environment has its own security requirements, the Spring Security reference documentation is the best place to learn the available options.

Both the booking-faces and booking-mvc sample applications are configured to use Spring Security. Configuration is needed at both the Spring and web.xml levels.

Spring configuration

The Spring configuration defines http specifics (such as protected URLs and login/logout mechanics) and the authentication-provider. For the sample applications, a local authentication provider is configured.

<security:http auto-config="true">
    <security:form-login login-page="/spring/login" 
                         login-processing-url="/spring/loginProcess"
                         default-target-url="/spring/main" 
                         authentication-failure-url="/spring/login?login_error=1" />  
    <security:logout logout-url="/spring/logout" logout-success-url="/spring/logout-success" />
</security:http>

<security:authentication-provider>
    <security:password-encoder hash="md5" />
    <security:user-service>
        <security:user name="keith" password="417c7382b16c395bc25b5da1398cf076" 
                       authorities="ROLE_USER,ROLE_SUPERVISOR" />
        <security:user name="erwin" password="12430911a8af075c6f41c6976af22b09" 
                       authorities="ROLE_USER,ROLE_SUPERVISOR" />
        <security:user name="jeremy" password="57c6cbff0d421449be820763f03139eb" 
                       authorities="ROLE_USER" />
        <security:user name="scott" password="942f2339bf50796de535a384f0d1af3e" 
                       authorities="ROLE_USER" />
    </security:user-service>
</security:authentication-provider>
			

web.xml Configuration

In the web.xml file, a filter is defined to intercept all requests. This filter will listen for login/logout requests and process them accordingly. It will also catch AccesDeniedExceptions and redirect the user to the login page.

<filter>
    <filter-name>springSecurityFilterChain</filter-name>
    <filter-class>org.springframework.web.filter.DelegatingFilterProxy</filter-class>
</filter>

<filter-mapping>
    <filter-name>springSecurityFilterChain</filter-name>
    <url-pattern>/*</url-pattern>
</filter-mapping>
			
libspring-webflow-2.0-java-2.0.9.RELEASE.orig/docs/spring-webflow-reference/html/ch03s05.html0000644000000000000000000002657011360615630026061 0ustar 3.5. Special EL variables

3.5. Special EL variables

There are several implicit variables you may reference from within a flow. These variables are discussed in this section.

flowScope

Use flowScope to assign a flow variable. Flow scope gets allocated when a flow starts and destroyed when the flow ends. With the default implementation, any objects stored in flow scope need to be Serializable.

<evaluate expression="searchService.findHotel(hotelId)" result="flowScope.hotel" />
			

viewScope

Use viewScope to assign a view variable. View scope gets allocated when a view-state enters and destroyed when the state exits. View scope is only referenceable from within a view-state. With the default implementation, any objects stored in view scope need to be Serializable.

<on-render>
    <evaluate expression="searchService.findHotels(searchCriteria)" result="viewScope.hotels"
              result-type="dataModel" />
</on-render>
			

requestScope

Use requestScope to assign a request variable. Request scope gets allocated when a flow is called and destroyed when the flow returns.

<set name="requestScope.hotelId" value="requestParameters.id" type="long" />
			

flashScope

Use flashScope to assign a flash variable. Flash scope gets allocated when a flow starts, cleared after every view render, and destroyed when the flow ends. With the default implementation, any objects stored in flash scope need to be Serializable.

<set name="flashScope.statusMessage" value="'Booking confirmed'" />				
			

conversationScope

Use conversationScope to assign a conversation variable. Conversation scope gets allocated when a top-level flow starts and destroyed when the top-level flow ends. Conversation scope is shared by a top-level flow and all of its subflows. With the default implementation, conversation scoped objects are stored in the HTTP session and should generally be Serializable to account for typical session replication.

<evaluate expression="searchService.findHotel(hotelId)" result="conversationScope.hotel" />
			

requestParameters

Use requestParameters to access a client request parameter:

<set name="requestScope.hotelId" value="requestParameters.id" type="long" />
			

currentEvent

Use currentEvent to access attributes of the current Event:

<evaluate expression="booking.guests.add(currentEvent.attributes.guest)" />
			

currentUser

Use currentUser to access the authenticated Principal:

<evaluate expression="bookingService.createBooking(hotelId, currentUser.name)" 
          result="flowScope.booking" />
			

messageContext

Use messageContext to access a context for retrieving and creating flow execution messages, including error and success messages. See the MessageContext Javadocs for more information.

<evaluate expression="bookingValidator.validate(booking, messageContext)" />
			

resourceBundle

Use resourceBundle to access a message resource.

<set name="flashScope.successMessage" value="resourceBundle.successMessage" />
			

flowRequestContext

Use flowRequestContext to access the RequestContext API, which is a representation of the current flow request. See the API Javadocs for more information.

flowExecutionContext

Use flowExecutionContext to access the FlowExecutionContext API, which is a representation of the current flow state. See the API Javadocs for more information.

flowExecutionUrl

Use flowExecutionUrl to access the context-relative URI for the current flow execution view-state.

externalContext

Use externalContext to access the client environment, including user session attributes. See the ExternalContext API JavaDocs for more information.

<evaluate expression="searchService.suggestHotels(externalContext.sessionMap.userProfile)" 
          result="viewScope.hotels" />
			
libspring-webflow-2.0-java-2.0.9.RELEASE.orig/docs/spring-webflow-reference/html/ch08.html0000644000000000000000000000625211360615630025531 0ustar 8. Flow Inheritance

8. Flow Inheritance

8.1. Introduction

Flow inheritance allows one flow to inherit the configuration of another flow. Inheritance can occur at both the flow and state levels. A common use case is for a parent flow to define global transitions and exception handlers, then each child flow can inherit those settings.

In order for a parent flow to be found, it must be added to the flow-registry just like any other flow.

libspring-webflow-2.0-java-2.0.9.RELEASE.orig/docs/spring-webflow-reference/html/ch08s05.html0000644000000000000000000001332311360615630026056 0ustar 8.5. Inheritance Algorithm

8.5. Inheritance Algorithm

When a child flow inherits from it's parent, essentially what happens is that the parent and child are merged together to create a new flow. There are rules for every element in the Web Flow definition language that govern how that particular element is merged.

There are two types of elements: mergeable and non-mergeable. Mergeable elements will always attempt to merge together if the elements are similar. Non-mergeable elements in a parent or child flow will always be contained in the resulting flow intact. They will not be modified as part of the merge process.

[Note]Note
Paths to external resources in the parent flow should be absolute. Relative paths will break when the two flows are merged unless the parent and child flow are in the same directory. Once merged, all relative paths in the parent flow will become relative to the child flow.

Mergeable Elements

If the elements are of the same type and their keyed attribute are identical, the content of the parent element will be merged with the child element. The merge algorithm will continue to merge each sub-element of the merging parent and child. Otherwise the parent element is added as a new element to the child.

In most cases, elements from a parent flow that are added will be added after elements in the child flow. Exceptions to this rule include action elements (evaluate, render and set) which will be added at the beginning. This allows for the results of parent actions to be used by child actions.

Mergeable elements are:

  • action-state: id

  • attribute: name

  • decision-state: id

  • end-state: id

  • flow: always merges

  • if: test

  • on-end: always merges

  • on-entry: always merges

  • on-exit: always merges

  • on-render: always merges

  • on-start: always merges

  • input: name

  • output: name

  • secured: attributes

  • subflow-state: id

  • transition: on and on-exception

  • view-state: id

Non-mergeable Elements

Non-mergeable elements are:

  • bean-import

  • evaluate

  • exception-handler

  • persistence-context

  • render

  • set

  • var

libspring-webflow-2.0-java-2.0.9.RELEASE.orig/docs/spring-webflow-reference/html/ch06s02.html0000644000000000000000000001544511360615630026060 0ustar 6.2. FlowScoped PersistenceContext

6.2. FlowScoped PersistenceContext

This pattern creates a PersistenceContext in flowScope on flow startup, uses that context for data access during the course of flow execution, and commits changes made to persistent entities at the end. This pattern provides isolation of intermediate edits by only committing changes to the database at the end of flow execution. This pattern is often used in conjunction with an optimistic locking strategy to protect the integrity of data modified in parallel by multiple users. To support saving and restarting the progress of a flow over an extended period of time, a durable store for flow state must be used. If a save and restart capability is not required, standard HTTP session-based storage of flow state is sufficient. In that case, session expiration or termination before commit could potentially result in changes being lost.

To use the FlowScoped PersistenceContext pattern, first mark your flow as a persistence-context:

<?xml version="1.0" encoding="UTF-8"?>
<flow xmlns="http://www.springframework.org/schema/webflow"
      xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
      xsi:schemaLocation="http://www.springframework.org/schema/webflow
                          http://www.springframework.org/schema/webflow/spring-webflow-2.0.xsd">

    <persistence-context />
    
</flow>

Then configure the correct FlowExecutionListener to apply this pattern to your flow. If using Hibernate, register the HibernateFlowExecutionListener. If using JPA, register the JpaFlowExecutionListener.

<webflow:flow-executor id="flowExecutor" flow-registry="flowRegistry">
    <webflow:flow-execution-listeners>
        <webflow:listener ref="jpaFlowExecutionListener" />
    </webflow:flow-execution-listeners>
</webflow:flow-executor>
	
<bean id="jpaFlowExecutionListener" 
      class="org.springframework.webflow.persistence.JpaFlowExecutionListener">
    <constructor-arg ref="entityManagerFactory" />
    <constructor-arg ref="transactionManager" />
</bean>

To trigger a commit at the end, annotate your end-state with the commit attribute:

<end-state id="bookingConfirmed" commit="true" />

That is it. When your flow starts, the listener will handle allocating a new EntityManager in flowScope. Reference this EntityManager at anytime from within your flow by using the special persistenceContext variable. In addition, any data access that occurs using a Spring managed data access object will use this EntityManager automatically. Such data access operations should always execute non transactionally or in read-only transactions to maintain isolation of intermediate edits.

libspring-webflow-2.0-java-2.0.9.RELEASE.orig/docs/spring-webflow-reference/html/apa.html0000644000000000000000000014762311360615630025540 0ustar Appendix A. Flow Definition Language 1.0 to 2.0 Mappings

Appendix A. Flow Definition Language 1.0 to 2.0 Mappings

The flow definition language has changed since the 1.0 release. This is a listing of the language elements in the 1.0 release, and how they map to elements in the 2.0 release. While most of the changes are semantic, there are a few structural changes. Please see the upgrade guide for more details about changes between Web Flow 1.0 and 2.0.

Table A.1. Mappings

SWF 1.0 SWF 2.0 Comments
action * use <evaluate />
  bean   *  
  name   *  
  method   *  
action-state action-state  
  id   id  
  *   parent  
argument * use <evaluate expression="func(arg1, arg2, ...)"/>
  expression    
  parameter-type    
attribute attribute  
  name   name  
  type   type  
  value   value  
attribute-mapper * input and output elements can be in flows or subflows directly
  bean   * now subflow-attribute-mapper attribute on subflow-state
bean-action * use <evaluate />
  bean   *  
  name   *  
  method   *  
decision-state decision-state  
  id   id  
  *   parent  
end-actions on-end  
end-state end-state  
  id   id  
  view   view  
  *   parent  
  *   commit  
entry-actions on-entry  
evaluate-action evaluate  
  expression   expression  
  name   * use <evaluate ...> <attribute name=”name” value="..." /> </evaluate>
  *   result  
  *   result-type  
evaluation-result * use <evaluate result="..." />
  name   *  
  scope   *  
exception-handler exception-handler  
  bean   bean  
exit-actions on-exit  
flow flow  
  *   start-state  
  *   parent  
  *   abstract  
global-transitions global-transitions  
if if  
  test   test  
  then   then  
  else   else  
import bean-import  
  resource   resource  
inline-flow * convert to new top-level flow
  id   *  
input-attribute input  
  name   name  
  scope   * prefix name with scope <input name="flowScope.foo" />
  required   required  
  *   type  
  *   value  
input-mapper * inputs can be in flows and subflows directly
mapping input or output  
  source   name or value name when in flow element, value when in subflow-state element
  target   name or value value when in flow element, name when in subflow-state element
  target-collection   * no longer supported
  from   * detected automatically
  to   type  
  required   required  
method-argument * use <evaluate expression="func(arg1, arg2, ...)"/>
method-result * use <evaluate result="..." />
  name   *  
  scope   *  
output-attribute output  
  name   name  
  scope   * prefix name with scope <output name="flowScope.foo" />
  required   required  
  *   type  
  *   value  
output-mapper * output can be in flows and subflows directly
render-actions on-render  
set set  
  attribute   name  
  scope   * prefix name with scope <set name="flowScope.foo" />
  value   value  
  name   * use <set ...> <attribute name=”name” value="..." /> </set>
  *   type  
start-actions on-start  
start-state * now <flow start-state="...">, or defaults to the first state in the flow
  idref   *  
subflow-state subflow-state  
  id   id  
  flow   subflow  
  *   parent  
  *   subflow-attribute-mapper  
transition transition  
  on   on  
  on-exception   on-exception  
  to   to  
  *   bind  
value value  
var var  
  name   name  
  class   class  
  scope   * always flow scope
  bean   * all Spring beans can be resolved with EL
view-state view-state  
  id   id  
  view   view  
  *   parent  
  *   redirect  
  *   popup  
  *   model  
  *   history  
* persistence-context  
* render  
  *   fragments  
* secured  
  *   attributes  
  *   match  

libspring-webflow-2.0-java-2.0.9.RELEASE.orig/docs/spring-webflow-reference/html/ch09s03.html0000644000000000000000000000762711360615630026067 0ustar 9.3. Basic system configuration

9.3. Basic system configuration

The next section shows the minimal configuration required to set up the Web Flow system in your application.

FlowRegistry

Register your flows in a FlowRegistry:

<webflow:flow-registry id="flowRegistry">
    <webflow:flow-location path="/WEB-INF/flows/booking/booking.xml" />
</webflow:flow-registry>
			

FlowExecutor

Deploy a FlowExecutor, the central service for executing flows:

<webflow:flow-executor id="flowExecutor" />
			

See the Spring MVC and Spring Faces sections of this guide on how to integrate the Web Flow system with the MVC and JSF environment, respectively.

libspring-webflow-2.0-java-2.0.9.RELEASE.orig/docs/spring-webflow-reference/html/ch14s07.html0000644000000000000000000001103511360615630026053 0ustar 14.7. Mocking a subflow

14.7. Mocking a subflow

To test calling a subflow, register a mock implementation of the subflow that asserts input was passed in correctly and returns the correct outcome for your test scenario.

public void testBookHotel() {
    
    setCurrentState("reviewHotel");

    Hotel hotel = new Hotel();
    hotel.setId(1L);
    hotel.setName("Jameson Inn");
    getFlowScope().put("hotel", hotel);

    getFlowDefinitionRegistry().registerFlowDefinition(createMockBookingSubflow());

    MockExternalContext context = new MockExternalContext();
    context.setEventId("book");
    resumeFlow(context);

    // verify flow ends on 'bookingConfirmed'
    assertFlowExecutionEnded();
    assertFlowExecutionOutcomeEquals("finish");
}

public Flow createMockBookingSubflow() {
    Flow mockBookingFlow = new Flow("booking");
    mockBookingFlow.setInputMapper(new Mapper() {
        public MappingResults map(Object source, Object target) {
            // assert that 1L was passed in as input
            assertEquals(1L, ((AttributeMap) source).get("hotelId"));
            return null;
        }
    });
    // immediately return the bookingConfirmed outcome so the caller can respond
    new EndState(mockBookingFlow, "bookingConfirmed");
    return mockBookingFlow;
}
		
libspring-webflow-2.0-java-2.0.9.RELEASE.orig/docs/spring-webflow-reference/html/ch12s02.html0000644000000000000000000001005511360615630026045 0ustar 12.2. Spring-centric Integration Approach

12.2. Spring-centric Integration Approach

Spring Faces combines the strengths of JSF, its UI component model, with the strengths of Spring, its controller and configuration model. This brings you all the strengths of JSF without any of the weaknesses.

Spring Faces provides a powerful supplement to a number of the standard JSF facilities, including:

  1. managed bean facility
  2. scope management
  3. event handling
  4. navigation rules
  5. easy modularization and packaging of views
  6. cleaner URLs
  7. model-level validation
  8. client-side validation and UI enhancement
  9. Ajax partial page updates and full navigation
  10. progressive enhancement and graceful degradation

Using these features will significantly reduce the amount of configuration required in faces-config.xml while providing a cleaner separation between the view and controller layer and better modularization of your application's functional responsibilities. These use of these features are outlined in the sections to follow. As the majority of these features build on the flow definition language of Spring Web Flow, it is assumed that you have an understanding of the foundations presented in Defining Flows .

libspring-webflow-2.0-java-2.0.9.RELEASE.orig/docs/spring-webflow-reference/html/ch09s04.html0000644000000000000000000003525411360615630026065 0ustar 9.4. flow-registry options

9.4. flow-registry options

This section explores flow-registry configuration options.

Specifying flow locations

Use the location element to specify paths to flow definitions to register. By default, flows will be assigned registry identifiers equal to their filenames minus the file extension, unless a registry bath path is defined.

<webflow:flow-location path="/WEB-INF/flows/booking/booking.xml" />
			

Assigning custom flow identifiers

Specify an id to assign a custom registry identifier to a flow:

<webflow:flow-location path="/WEB-INF/flows/booking/booking.xml" id="bookHotel" />
			

Assigning flow meta-attributes

Use the flow-definition-attributes element to assign custom meta-attributes to a registered flow:

<webflow:flow-location path="/WEB-INF/flows/booking/booking.xml">
    <flow-definition-attributes>
        <attribute name="caption" value="Books a hotel" />
    </flow-definition-attributes>
</webflow:flow-location>
			

Registering flows using a location pattern

Use the flow-location-patterns element to register flows that match a specific resource location pattern:

<webflow:flow-location-pattern value="/WEB-INF/flows/**/*-flow.xml" />
			

Flow location base path

Use the base-path attribute to define a base location for all flows in the application. All flow locations are then relative to the base path. The base path can be a resource path such as '/WEB-INF' or a location on the classpath like 'classpath:org/springframework/webflow/samples'.

<webflow:flow-registry id="flowRegistry" base-path="/WEB-INF">
    <webflow:flow-location path="/hotels/booking/booking.xml" />
</webflow:flow-registry>
			

With a base path defined, the algorithm that assigns flow identifiers changes slightly. Flows will now be assigned registry identifiers equal to the the path segment between their base path and file name. For example, if a flow definition is located at '/WEB-INF/hotels/booking/booking-flow.xml' and the base path is '/WEB-INF' the remaining path to this flow is 'hotels/booking' which becomes the flow id.

[Tip]Directory per flow definition

Recall it is a best practice to package each flow definition in a unique directory. This improves modularity, allowing dependent resources to be packaged with the flow definition. It also prevents two flows from having the same identifiers when using the convention.

If no base path is not specified or if the flow definition is directly on the base path, flow id assignment from the filename (minus the extension) is used. For example, if a flow definition file is 'booking.xml', the flow identifier is simply 'booking'.

Location patterns are particularly powerful when combined with a registry base path. Instead of the flow identifiers becoming '*-flow', they will be based on the directory path. For example:

<webflow:flow-registry id="flowRegistry" base-path="/WEB-INF">
    <webflow:flow-location-pattern value="/**/*-flow.xml" />
</webflow:flow-registry>
			

In the above example, suppose you had flows located in /user/login, /user/registration, /hotels/booking, and /flights/booking directories within WEB-INF, you'd end up with flow ids of user/login, user/registration, hotels/booking, and flights/booking, respectively.

Configuring FlowRegistry hierarchies

Use the parent attribute to link two flow registries together in a hierarchy. When the child registry is queried, if it cannot find the requested flow it will delegate to its parent.

<!-- my-system-config.xml -->
<webflow:flow-registry id="flowRegistry" parent="sharedFlowRegistry">
    <webflow:flow-location path="/WEB-INF/flows/booking/booking.xml" />
</webflow:flow-registry>

<!-- shared-config.xml -->
<webflow:flow-registry id="sharedFlowRegistry">
    <!-- Global flows shared by several applications -->
</webflow:flow-registry>
			

Configuring custom FlowBuilder services

Use the flow-builder-services attribute to customize the services and settings used to build flows in a flow-registry. If no flow-builder-services tag is specified, the default service implementations are used. When the tag is defined, you only need to reference the services you want to customize.

<webflow:flow-registry id="flowRegistry" flow-builder-services="flowBuilderServices">
    <webflow:flow-location path="/WEB-INF/flows/booking/booking.xml" />
</webflow:flow-registry>

<webflow:flow-builder-services id="flowBuilderServices" />
			

The configurable services are the conversion-service, expression-parser, and view-factory-creator. These services are configured by referencing custom beans you define. For example:

<webflow:flow-builder-services id="flowBuilderServices"
    conversion-service="conversionService"
    expression-parser="expressionParser"
    view-factory-creator="viewFactoryCreator" />

<bean id="conversionService" class="..." />
<bean id="expressionParser" class="..." />
<bean id="viewFactoryCreator" class="..." />
			

conversion-service

Use the conversion-service attribute to customize the ConversionService used by the Web Flow system. Converters are used to convert from one type to another when required during flow execution. The default ConversionService registers converters for your basic object types such as numbers, classes, and enums.

expression-parser

Use the expression-parser attribute to customize the ExpressionParser used by the Web Flow system. The default ExpressionParser uses the Unified EL if available on the classpath, otherwise OGNL is used.

view-factory-creator

Use the view-factory-creator attribute to customize the ViewFactoryCreator used by the Web Flow system. The default ViewFactoryCreator produces Spring MVC ViewFactories capable of rendering JSP, Velocity, and Freemarker views.

The configurable settings are development. These settings are global configuration attributes that can be applied during the flow construction process.

development

Set this to true to switch on flow development mode. Development mode switches on hot-reloading of flow definition changes, including changes to dependent flow resources such as message bundles.

libspring-webflow-2.0-java-2.0.9.RELEASE.orig/docs/spring-webflow-reference/html/ch07s04.html0000644000000000000000000001267511360615630026065 0ustar 7.4. The SecurityFlowExecutionListener

7.4. The SecurityFlowExecutionListener

Defining security rules in the flow by themselves will not protect the flow execution. A SecurityFlowExecutionListener must also be defined in the webflow configuration and applied to the flow executor.

<webflow:flow-executor id="flowExecutor" flow-registry="flowRegistry">
    <webflow:flow-execution-listeners>
        <webflow:listener ref="securityFlowExecutionListener" />
    </webflow:flow-execution-listeners>
</webflow:flow-executor>

<bean id="securityFlowExecutionListener" 
      class="org.springframework.webflow.security.SecurityFlowExecutionListener" />
		

If access is denied to a portion of the application an AccessDeniedException will be thrown. This exception will later be caught by Spring Security and used to prompt the user to authenticate. It is important that this exception be allowed to travel up the execution stack uninhibited, otherwise the end user may not be prompted to authenticate.

Custom Access Decision Managers

If your application is using authorities that are not role based, you will need to configure a custom AccessDecisionManager. You can override the default decision manager by setting the accessDecisionManager property on the security listener. Please consult the Spring Security reference documentation to learn more about decision managers.

<bean id="securityFlowExecutionListener"
      class="org.springframework.webflow.security.SecurityFlowExecutionListener">
    <property name="accessDecisionManager" ref="myCustomAccessDecisionManager" />
</bean>
			
libspring-webflow-2.0-java-2.0.9.RELEASE.orig/docs/spring-webflow-reference/html/ch05s05.html0000644000000000000000000001226211360615630026054 0ustar 5.5. Action implementations

5.5. Action implementations

While writing action code as POJO logic is the most common, there are several other action implementation options. Sometimes you need to write action code that needs access to the flow context. You can always invoke a POJO and pass it the flowRequestContext as an EL variable. Alternatively, you may implement the Action interface or extend from the MultiAction base class. These options provide stronger type safety when you have a natural coupling between your action code and Spring Web Flow APIs. Examples of each of these approaches are shown below.

Invoking a POJO action

<evaluate expression="pojoAction.method(flowRequestContext)" />	
        	
public class PojoAction {
    public String method(RequestContext context) {
        ... 
    }
}
			

Invoking a custom Action implementation

<evaluate expression="customAction" />	
        	
public class CustomAction implements Action {
    public Event execute(RequestContext context) {
        ... 
    }
}
			

Invoking a MultiAction implementation

<evaluate expression="multiAction.actionMethod1" />
	
        	
public class CustomMultiAction extends MultiAction {
    public Event actionMethod1(RequestContext context) {
        ... 
    }

    public Event actionMethod2(RequestContext context) {
        ... 
    }

    ...
}
			
libspring-webflow-2.0-java-2.0.9.RELEASE.orig/docs/spring-webflow-reference/html/ch11s02.html0000644000000000000000000001003311360615630026040 0ustar 11.2. Serving Javascript Resources

11.2. Serving Javascript Resources

Spring JS provides a generic ResourceServlet to serve web resources such as JavaScript and CSS files from jar files, as well as the webapp root directory. This servlet provides a convenient way to serve Spring.js files to your pages. To deploy this servlet, declare the following in web.xml:

<!-- Serves static resource content from .jar files such as spring-js.jar -->
<servlet>
    <servlet-name>Resource Servlet</servlet-name>
    <servlet-class>org.springframework.js.resource.ResourceServlet</servlet-class>
</servlet>
        
<!-- Map all /resources requests to the Resource Servlet for handling -->
<servlet-mapping>
    <servlet-name>Resource Servlet</servlet-name>
    <url-pattern>/resources/*</url-pattern>
</servlet-mapping>
        
libspring-webflow-2.0-java-2.0.9.RELEASE.orig/docs/spring-webflow-reference/html/ch10s06.html0000644000000000000000000001525311360615630026054 0ustar 10.6. Signaling an event from a View

10.6. Signaling an event from a View

When a flow enters a view-state it pauses, redirects the user to its execution URL, and waits for a user event to resume. Events are generally signaled by activating buttons, links, or other user interface commands. How events are decoded server-side is specific to the view technology in use. This section shows how to trigger events from HTML-based views generated by templating engines such as JSP, Velocity, or Freemarker.

Using a named HTML button to signal an event

The example below shows two buttons on the same form that signal proceed and cancel events when clicked, respectively.

<input type="submit" name="_eventId_proceed" value="Proceed" />
<input type="submit" name="_eventId_cancel" value="Cancel" />		
			

When a button is pressed Web Flow finds a request parameter name beginning with _eventId_ and treats the remaining substring as the event id. So in this example, submitting _eventId_proceed becomes proceed. This style should be considered when there are several different events that can be signaled from the same form.

Using a hidden HTML form parameter to signal an event

The example below shows a form that signals the proceed event when submitted:

<input type="submit" value="Proceed" />
<input type="hidden" name="_eventId" value="proceed" />	
			

Here, Web Flow simply detects the special _eventId parameter and uses its value as the event id. This style should only be considered when there is one event that can be signaled on the form.

Using a HTML link to signal an event

The example below shows a link that signals the cancel event when activated:

<a href="${flowExecutionUrl}&_eventId=cancel">Cancel</a>		
			

Firing an event results in a HTTP request being sent back to the server. On the server-side, the flow handles decoding the event from within its current view-state. How this decoding process works is specific to the view implementation. Recall a Spring MVC view implementation simply looks for a request parameter named _eventId. If no _eventId parameter is found, the view will look for a parameter that starts with _eventId_ and will use the remaining substring as the event id. If neither cases exist, no flow event is triggered.

libspring-webflow-2.0-java-2.0.9.RELEASE.orig/docs/spring-webflow-reference/html/ch04s02.html0000644000000000000000000000740711360615630026055 0ustar 4.2. Defining view states

4.2. Defining view states

Use the view-state element to define a step of the flow that renders a view and waits for a user event to resume:

<view-state id="enterBookingDetails">
    <transition on="submit" to="reviewBooking" />
</view-state>
		

By convention, a view-state maps its id to a view template in the directory where the flow is located. For example, the state above might render /WEB-INF/hotels/booking/enterBookingDetails.xhtml if the flow itself was located in the /WEB-INF/hotels/booking directory.

Below is a sample directory structure showing views and other resources like message bundles co-located with their flow definition:

Flow Packaging

libspring-webflow-2.0-java-2.0.9.RELEASE.orig/docs/spring-webflow-reference/html/ch01s02.html0000644000000000000000000000520311360615630026042 0ustar 1.2. What Web Flow requires to run

1.2. What Web Flow requires to run

Java 1.4 or higher

Spring 2.5.6 or higher

libspring-webflow-2.0-java-2.0.9.RELEASE.orig/docs/spring-webflow-reference/html/ch11s04.html0000644000000000000000000002366111360615630026055 0ustar 11.4. Spring Javascript Decorations

11.4. Spring Javascript Decorations

A central concept in Spring Javascript is the notion of applying decorations to existing DOM nodes. This technique is used to progressively enhance a web page such that the page will still be functional in a less capable browser. The addDecoration method is used to apply decorations.

The following example illustrates enhancing a Spring MVC <form:input> tag with rich suggestion behavior:

<form:input id="searchString" path="searchString"/>
<script type="text/javascript">
    Spring.addDecoration(new Spring.ElementDecoration({
        elementId: "searchString",
        widgetType: "dijit.form.ValidationTextBox",
        widgetAttrs: { promptMessage : "Search hotels by name, address, city, or zip." }}));
</script>
        

The ElementDecoration is used to apply rich widget behavior to an existing DOM node. This decoration type does not aim to completely hide the underlying toolkit, so the toolkit's native widget type and attributes are used directly. This approach allows you to use a common decoration model to integrate any widget from the underlying toolkit in a consistent manner. See the booking-mvc reference application for more examples of applying decorations to do things from suggestions to client-side validation.

When using the ElementDecoration to apply widgets that have rich validation behavior, a common need is to prevent the form from being submitted to the server until validation passes. This can be done with the ValidateAllDecoration:

<input type="submit" id="proceed" name="_eventId_proceed" value="Proceed" />
<script type="text/javascript">
    Spring.addDecoration(new Spring.ValidateAllDecoration({ elementId:'proceed', event:'onclick' }));
</script>
        

This decorates the "Proceed" button with a special onclick event handler that fires the client side validators and does not allow the form to submit until they pass successfully.

An AjaxEventDecoration applies a client-side event listener that fires a remote Ajax request to the server. It also auto-registers a callback function to link in the response:

<a id="prevLink" href="search?searchString=${criteria.searchString}&page=${criteria.page - 1}">Previous</a>
<script type="text/javascript">
    Spring.addDecoration(new Spring.AjaxEventDecoration({
        elementId: "prevLink",
        event: "onclick",
        params: { fragments: "body" }
    }));
</script>
        

This decorates the onclick event of the "Previous Results" link with an Ajax call, passing along a special parameter that specifies the fragment to be re-rendered in the response. Note that this link would still be fully functional if Javascript was unavailable in the client. (See the section on Handling Ajax Requests for details on how this request is handled on the server.)

It is also possible to apply more than one decoration to an element. The following example shows a button being decorated with Ajax and validate-all submit suppression:

<input type="submit" id="proceed" name="_eventId_proceed" value="Proceed" />  
<script type="text/javascript">
    Spring.addDecoration(new Spring.ValidateAllDecoration({elementId:'proceed', event:'onclick'}));
    Spring.addDecoration(new Spring.AjaxEventDecoration({elementId:'proceed', event:'onclick',formId:'booking', params:{fragments:'messages'}}));
</script>
        

It is also possible to apply a decoration to multiple elements in a single statement using Dojo's query API. The following example decorates a set of checkbox elements as Dojo Checkbox widgets:

<div id="amenities">
<form:checkbox path="amenities" value="OCEAN_VIEW" label="Ocean View" /></li>
<form:checkbox path="amenities" value="LATE_CHECKOUT" label="Late Checkout" /></li>
<form:checkbox path="amenities" value="MINIBAR" label="Minibar" /></li>
<script type="text/javascript">
    dojo.query("#amenities input[type='checkbox']").forEach(function(element) {
        Spring.addDecoration(new Spring.ElementDecoration({
            elementId: element.id,
            widgetType : "dijit.form.CheckBox",
            widgetAttrs : { checked : element.checked }
        }));
    });
</script>
</div>
        
libspring-webflow-2.0-java-2.0.9.RELEASE.orig/docs/spring-webflow-reference/html/ch14s04.html0000644000000000000000000000753411360615630026061 0ustar 14.4. Registering flow dependencies

14.4. Registering flow dependencies

If your flow has dependencies on externally managed services, also override configureFlowBuilderContext(MockFlowBuilderContext) to register stubs or mocks of those services:

@Override
protected void configureFlowBuilderContext(MockFlowBuilderContext builderContext) {
    builderContext.registerBean("bookingService", new StubBookingService());
}
        

If your flow extends from another flow, or has states that extend other states, also override getModelResources(FlowDefinitionResourceFactory) to return the path to the parent flows.

@Override
protected FlowDefinitionResource[] getModelResources(FlowDefinitionResourceFactory resourceFactory) {
   return new FlowDefinitionResource[] {
       resourceFactory.createFileResource("src/main/webapp/WEB-INF/common/common.xml")
   };
}
		
libspring-webflow-2.0-java-2.0.9.RELEASE.orig/docs/spring-webflow-reference/html/ch04s03.html0000644000000000000000000001072511360615630026053 0ustar 4.3. Specifying view identifiers

4.3. Specifying view identifiers

Use the view attribute to specify the id of the view to render explicitly.

Flow relative view ids

The view id may be a relative path to view resource in the flow's working directory:

<view-state id="enterBookingDetails" view="bookingDetails.xhtml">
			

Absolute view ids

The view id may be a absolute path to a view resource in the webapp root directory:

<view-state id="enterBookingDetails" view="/WEB-INF/hotels/booking/bookingDetails.xhtml">
			

Logical view ids

With some view frameworks, such as Spring MVC's view framework, the view id may also be a logical identifier resolved by the framework:

<view-state id="enterBookingDetails" view="bookingDetails">
			

See the Spring MVC integration section for more information on how to integrate with the MVC ViewResolver infrastructure.

libspring-webflow-2.0-java-2.0.9.RELEASE.orig/docs/spring-webflow-reference/html/ch02s03.html0000644000000000000000000000626611360615630026056 0ustar 2.3. What is the makeup of a typical flow?

2.3. What is the makeup of a typical flow?

In Spring Web Flow, a flow consists of a series of steps called "states". Entering a state typically results in a view being displayed to the user. On that view, user events occur that are handled by the state. These events can trigger transitions to other states which result in view navigations.

The example below shows the structure of the book hotel flow referenced in the previous diagram:

Flow diagram

libspring-webflow-2.0-java-2.0.9.RELEASE.orig/docs/spring-webflow-reference/html/ch07s02.html0000644000000000000000000000604111360615630026051 0ustar 7.2. How do I secure a flow?

7.2. How do I secure a flow?

Securing flow execution is a three step process:

  • Configure Spring Security with authentication and authorization rules

  • Annotate the flow definition with the secured element to define the security rules

  • Add the SecurityFlowExecutionListener to process the security rules.

Each of these steps must be completed or else flow security rules will not be applied.

libspring-webflow-2.0-java-2.0.9.RELEASE.orig/docs/spring-webflow-reference/html/ch12s03.html0000644000000000000000000002660611360615630026057 0ustar 12.3. Configuring web.xml

12.3. Configuring web.xml

The first step to using Spring Faces is to route requests to the DispatcherServlet in the web.xml file. In this example, we map all URLs that begin with /spring/ to the servlet. The servlet needs to be configured. An init-param is used in the servlet to pass the contextConfigLocation . This is the location of the Spring configuration for your application.

<servlet>
    <servlet-name>Spring MVC Dispatcher Servlet</servlet-name>
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
    <init-param>
        <param-name>contextConfigLocation</param-name>
        <param-value>/WEB-INF/web-application-config.xml</param-value>
    </init-param>
    <load-on-startup>1</load-on-startup>
</servlet>
    
<servlet-mapping>
    <servlet-name>Spring MVC Dispatcher Servlet</servlet-name>
    <url-pattern>/spring/*</url-pattern>
</servlet-mapping>
        

In order for JSF to bootstrap correctly, the FacesServlet must be configured in web.xml as it normally would even though you generally will not need to route requests through it at all when using Spring Faces.

<!-- Just here so the JSF implementation can initialize, *not* used at runtime -->
<servlet>
    <servlet-name>Faces Servlet</servlet-name>
    <servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
    <load-on-startup>1</load-on-startup>
</servlet>
    
<!-- Just here so the JSF implementation can initialize -->
<servlet-mapping>
    <servlet-name>Faces Servlet</servlet-name>
    <url-pattern>*.faces</url-pattern>
</servlet-mapping>
        

When using the Spring Faces components, you also need to configure the Spring JavaScript ResourceServlet so that CSS and JavaScript resources may be output correctly by the components. This servlet must be mapped to /resources/* in order for the URL's rendered by the components to function correctly.

<!-- Serves static resource content from .jar files such as spring-faces.jar -->
<servlet>
    <servlet-name>Resource Servlet</servlet-name>
    <servlet-class>org.springframework.js.resource.ResourceServlet</servlet-class>
    <load-on-startup>0</load-on-startup>
</servlet>
        
<!-- Map all /resources requests to the Resource Servlet for handling -->
<servlet-mapping>
    <servlet-name>Resource Servlet</servlet-name>
    <url-pattern>/resources/*</url-pattern>
</servlet-mapping>
        

The Spring Faces components require the use of Facelets instead of JSP, so the typical Facelets configuration must be added as well when using these components.

!-- Use JSF view templates saved as *.xhtml, for use with Facelets -->
<context-param>
    <param-name>javax.faces.DEFAULT_SUFFIX</param-name>
    <param-value>.xhtml</param-value>
</context-param>
        

For optimal page-loading performance, the Spring Faces component library includes a few special components: includeStyles and includeScripts. These components will eagerly load the neccessary CSS stylesheets and JavaScript files at the position they are placed in your JSF view template. In accordance with the recommendations of the Yahoo Performance Guildlines, these two tags should be placed in the head section of any page that uses the Spring Faces components. For example:

 
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<f:view xmlns="http://www.w3.org/1999/xhtml"
      xmlns:ui="http://java.sun.com/jsf/facelets"
      xmlns:f="http://java.sun.com/jsf/core"
	  xmlns:c="http://java.sun.com/jstl/core"
	  xmlns:sf="http://www.springframework.org/tags/faces"
	  contentType="text/html" encoding="UTF-8">
<html>
<head>
	<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
	<title>Spring Faces: Hotel Booking Sample Application</title>
	
	<sf:includeStyles />
	<sf:includeScripts />
	
	<ui:insert name="headIncludes"/>
</head>
...
</html>
</f:view>
	

This shows the opening of a typical Facelets XHTML layout template that uses these components to force the loading of the needed CSS and JavaScript resources at the ideal position.

The includeStyles component includes the necessary resources for the Dojo widget theme. By default, it includes the resources for the "tundra" theme. An alternate theme may be selected by setting the optional "theme" and "themePath" attributes on the includeStyles component. For example:

 
<sf:includeStyles themePath="/styles/" theme="foobar"/>

will try to load a CSS stylesheet at "/styles/foobar/foobar.css" using the Spring JavaScript ResourceServlet.

libspring-webflow-2.0-java-2.0.9.RELEASE.orig/docs/spring-webflow-reference/html/ch05s07.html0000644000000000000000000004527311360615630026066 0ustar 5.7. Other Action execution examples

5.7. Other Action execution examples

on-start

The following example shows an action that creates a new Booking object by invoking a method on a service:

<flow xmlns="http://www.springframework.org/schema/webflow"
      xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
      xsi:schemaLocation="http://www.springframework.org/schema/webflow
                          http://www.springframework.org/schema/webflow/spring-webflow-2.0.xsd">

    <input name="hotelId" />

    <on-start>
        <evaluate expression="bookingService.createBooking(hotelId, currentUser.name)" 
                  result="flowScope.booking" />
    </on-start>

</flow>
			

on-entry

The following example shows a state entry action that sets the special fragments variable that causes the view-state to render a partial fragment of its view:

<view-state id="changeSearchCriteria" view="enterSearchCriteria.xhtml" popup="true">
    <on-entry>
        <render fragments="hotelSearchForm" />
    </on-entry>
</view-state>
			

on-exit

The following example shows a state exit action that releases a lock on a record being edited:

<view-state id="editOrder">
    <on-entry>
        <evaluate expression="orderService.selectForUpdate(orderId, currentUser)"
                  result="viewScope.order" />
    </on-entry>
    <transition on="save" to="finish">
        <evaluate expression="orderService.update(order, currentUser)" />
    </transition>
    <on-exit>
        <evaluate expression="orderService.releaseLock(order, currentUser)" />
    </on-exit>
</view-state>
			

on-end

The following example shows the equivalent object locking behavior using flow start and end actions:

<flow xmlns="http://www.springframework.org/schema/webflow"
      xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
      xsi:schemaLocation="http://www.springframework.org/schema/webflow
                          http://www.springframework.org/schema/webflow/spring-webflow-2.0.xsd">

    <input name="orderId" />

    <on-start>
        <evaluate expression="orderService.selectForUpdate(orderId, currentUser)"
                  result="flowScope.order" />
    </on-start>

    <view-state id="editOrder">
        <transition on="save" to="finish">
            <evaluate expression="orderService.update(order, currentUser)" />
        </transition>
    </view-state>

    <on-end>
        <evaluate expression="orderService.releaseLock(order, currentUser)" />
    </on-end>
    
</flow>
			

on-render

The following example shows a render action that loads a list of hotels to display before the view is rendered:

<view-state id="reviewHotels">
    <on-render>
        <evaluate expression="bookingService.findHotels(searchCriteria)"
	              result="viewScope.hotels" result-type="dataModel" />
    </on-render>
    <transition on="select" to="reviewHotel">
        <set name="flowScope.hotel" value="hotels.selectedRow" />
    </transition>
</view-state>
			

on-transition

The following example shows a transition action adds a subflow outcome event attribute to a collection:

<subflow-state id="addGuest" subflow="createGuest">
    <transition on="guestCreated" to="reviewBooking">
        <evaluate expression="booking.guestList.add(currentEvent.attributes.newGuest)" />  
    </transition>
</subfow-state>
			

Named actions

The following example shows how to execute a chain of actions in an action-state. The name of each action becomes a qualifier for the action's result event.

<action-state id="doTwoThings">
    <evaluate expression="service.thingOne()">
        <attribute name="name" value="thingOne" />
    </evaluate>
    <evaluate expression="service.thingTwo()">
        <attribute name="name" value="thingTwo" />
    </evaluate>
    <transition on="thingTwo.success" to="showResults" />
</action-state>
			

In this example, the flow will transition to showResults when thingTwo completes successfully.

Streaming actions

Sometimes an Action needs to stream a custom response back to the client. An example might be a flow that renders a PDF document when handling a print event. This can be achieved by having the action stream the content then record "Response Complete" status on the ExternalContext. The responseComplete flag tells the pausing view-state not to render the response because another object has taken care of it.

<view-state id="reviewItinerary">
    <transition on="print">
        <evaluate expression="printBoardingPassAction" />
    </transition>
</view-state>
			
public class PrintBoardingPassAction extends AbstractAction {
    public Event doExecute(RequestContext context) {
        // stream PDF content here...
        // - Access HttpServletResponse by calling context.getExternalContext().getNativeResponse();
        // - Mark response complete by calling context.getExternalContext().recordResponseComplete();
        return success();
    }
}
			

In this example, when the print event is raised the flow will call the printBoardingPassAction. The action will render the PDF then mark the response as complete.

Handling File Uploads

Another common task is to use Web Flow to handle multipart file uploads in combination with Spring MVC's MultipartResolver. Once the resolver is set up correctly as described here and the submitting HTML form is configured with enctype="multipart/form-data", you can easily handle the file upload in a transition action. Given a form such as:

<form:form modelAttribute="fileUploadHandler" enctype="multipart/form-data">
	Select file: <input type="file" name="file"/>		
	<input type="submit" name="_eventId_upload" value="Upload" />			
</form:form>
			

and a backing object for handling the upload such as:

package org.springframework.webflow.samples.booking;

import org.springframework.web.multipart.MultipartFile;

public class FileUploadHandler {
    
    private transient MultipartFile file;
    
    public void processFile() {
		//Do something with the MultipartFile here
    }

    public void setFile(MultipartFile file) {
        this.file = file;
    } 
}
			

you can process the upload using a transition action as in the following example:

<view-state id="uploadFile" model="uploadFileHandler">
    <var name="fileUploadHandler" class="org.springframework.webflow.samples.booking.FileUploadHandler" />
    <transition on="upload" to="finish" >
        <evaluate expression="fileUploadHandler.processFile()"/>
    </transition>
    <transition on="cancel" to="finish" bind="false"/>
</view-state>
			

The MultipartFile will be bound to the FileUploadHandler bean as part of the normal form binding process so that it will be available to process during the execution of the transition action.

libspring-webflow-2.0-java-2.0.9.RELEASE.orig/docs/spring-webflow-reference/html/ch03.html0000644000000000000000000000560711360615630025527 0ustar 3. Expression Language (EL)

3. Expression Language (EL)

3.1. Introduction

Web Flow uses EL to access its data model and invoke actions. This chapter will familiarize you with the EL syntax, and special EL variables you can reference from your flow definition.

libspring-webflow-2.0-java-2.0.9.RELEASE.orig/docs/spring-webflow-reference/html/ch01s06.html0000644000000000000000000002776311360615630026065 0ustar 1.6. How to access Web Flow artifacts from the SpringSource Bundle Repository

1.6. How to access Web Flow artifacts from the SpringSource Bundle Repository

Each jar in the Web Flow distribution is also available in the SpringSource Enterprise Bundle Repository. Use this repository when you wish to run Spring Web Flow in an OSGi environment such as the SpringSource dm Server. All jars obtained from the SpringSource Bundle Repository are OSGi-ready.

Accessing Web Flow bundles with Maven

To access bundles using Maven, add the following repositories to your Maven pom:

<repository>
    <id>com.springsource.repository.bundles.release</id>
    <name>SpringSource Enterprise Bundle Repository - SpringSource Releases</name>
    <url>http://repository.springsource.com/maven/bundles/release</url>
</repository>

<repository>
    <id>com.springsource.repository.bundles.external</id>
    <name>SpringSource Enterprise Bundle Repository - External Releases</name>
    <url>http://repository.springsource.com/maven/bundles/external</url>
</repository>
			

Then declare the following dependencies:

<dependency>
    <groupId>org.springframework.webflow</groupId>
    <artifactId>org.springframework.binding</artifactId>
    <version>2.0.9.RELEASE</version>
</dependency> 

<dependency>
    <groupId>org.springframework.webflow</groupId>
    <artifactId>org.springframework.js</artifactId>
    <version>2.0.9.RELEASE</version>
</dependency> 

<dependency>
    <groupId>org.springframework.webflow</groupId>
    <artifactId>org.springframework.webflow</artifactId>
    <version>2.0.9.RELEASE</version>
</dependency>
			

And if using JavaServerFaces:

<dependency>
    <groupId>org.springframework.webflow</groupId>
    <artifactId>org.springframework.faces</artifactId>
    <version>2.0.9.RELEASE</version>
</dependency>
			

Note the Web Flow artifacts in the SpringSource Bundle Repository are indexed under different ids because their transitive dependencies are different than the Maven Central artifacts. The difference is the transitive jars such as commons-logging have been patched by SpringSource to add the metadata required to make them OSGi-compatible.

Accessing Web Flow bundles with Ivy

To access bundles using Ivy, add the following repositories to your Ivy config:

<url name="com.springsource.repository.bundles.release">
    <ivy pattern="http://repository.springsource.com/ivy/bundles/release/
                  [organisation]/[module]/[revision]/[artifact]-[revision].[ext]" />
    <artifact pattern="http://repository.springsource.com/ivy/bundles/release/
                       [organisation]/[module]/[revision]/[artifact]-[revision].[ext]" />
</url>

<url name="com.springsource.repository.bundles.external">
    <ivy pattern="http://repository.springsource.com/ivy/bundles/external/
                  [organisation]/[module]/[revision]/[artifact]-[revision].[ext]" />
    <artifact pattern="http://repository.springsource.com/ivy/bundles/external/
                       [organisation]/[module]/[revision]/[artifact]-[revision].[ext]" />
</url>
			

Then declare the following dependencies:

<dependency org="org.springframework.webflow" name="org.springframework.binding"
            rev="2.0.9.RELEASE" conf="compile->runtime" />
<dependency org="org.springframework.webflow" name="org.springframework.js"
            rev="2.0.9.RELEASE" conf="compile->runtime" />
<dependency org="org.springframework.webflow" name="org.springframework.webflow"
            rev="2.0.9.RELEASE" conf="compile->runtime" />
			

And if using JavaServerFaces:

<dependency org="org.springframework.webflow" name="org.springframework.faces"
            rev="2.0.9.RELEASE" conf="compile->runtime" />
			

Accessing the dm Server Web Flow library

A dm Server library for Web Flow is also available if you are deploying to a dm Server environment. Import this library in your MANIFEST.mf to automatically import all Web Flow bundles. To access the library, add the following repository:

<repository>
    <id>com.springsource.repository.libraries.release</id>
    <name>SpringSource Enterprise Bundle Repository - SpringSource Library Releases</name>
    <url>http://repository.springsource.com/maven/libraries/release</url>
</repository>	
			

And declare the following dependency:

<dependency>
    <groupId>org.springframework.webflow</groupId>
    <artifactId>org.springframework.webflow-library</artifactId>
    <type>libd</type>
    <version>2.0.9.RELEASE</version>
</dependency>	
			
libspring-webflow-2.0-java-2.0.9.RELEASE.orig/docs/spring-webflow-reference/html/ch10s04.html0000644000000000000000000002413411360615630026050 0ustar 10.4. Implementing custom FlowHandlers

10.4. Implementing custom FlowHandlers

FlowHandler is the extension point that can be used to customize how flows are executed in a HTTP servlet environment. A FlowHandler is used by the FlowHandlerAdapter and is responsible for:

  • Returning the id of a flow definition to execute

  • Creating the input to pass new executions of that flow as they are started

  • Handling outcomes returned by executions of that flow as they end

  • Handling any exceptions thrown by executions of that flow as they occur

These responsibilities are illustrated in the definition of the org.springframework.mvc.servlet.FlowHandler interface:

public interface FlowHandler {

    public String getFlowId();

    public MutableAttributeMap createExecutionInputMap(HttpServletRequest request);

    public String handleExecutionOutcome(FlowExecutionOutcome outcome,
        HttpServletRequest request, HttpServletResponse response);

    public String handleException(FlowException e,
        HttpServletRequest request, HttpServletResponse response);
}				
		

To implement a FlowHandler, subclass AbstractFlowHandler. All these operations are optional, and if not implemented the defaults will apply. You only need to override the methods that you need. Specifically:

  • Override getFlowId(HttpServletRequest) when the id of your flow cannot be directly derived from the HTTP request. By default, the id of the flow to execute is derived from the pathInfo portion of the request URI. For example, http://localhost/app/hotels/booking?hotelId=1 results in a flow id of hotels/booking by default.

  • Override createExecutionInputMap(HttpServletRequest) when you need fine-grained control over extracting flow input parameters from the HttpServletRequest. By default, all request parameters are treated as flow input parameters.

  • Override handleExecutionOutcome when you need to handle specific flow execution outcomes in a custom manner. The default behavior sends a redirect to the ended flow's URL to restart a new execution of the flow.

  • Override handleException when you need fine-grained control over unhandled flow exceptions. The default behavior attempts to restart the flow when a client attempts to access an ended or expired flow execution. Any other exception is rethrown to the Spring MVC ExceptionResolver infrastructure by default.

Example FlowHandler

A common interaction pattern between Spring MVC And Web Flow is for a Flow to redirect to a @Controller when it ends. FlowHandlers allow this to be done without coupling the flow definition itself with a specific controller URL. An example FlowHandler that redirects to a Spring MVC Controller is shown below:

public class BookingFlowHandler extends AbstractFlowHandler {
    public String handleExecutionOutcome(FlowExecutionOutcome outcome,
                                         HttpServletRequest request, HttpServletResponse response) {
        if (outcome.getId().equals("bookingConfirmed")) {
            return "/booking/show?bookingId=" + outcome.getOutput().get("bookingId");
        } else {
            return "/hotels/index";
        }
    }
}
			

Since this handler only needs to handle flow execution outcomes in a custom manner, nothing else is overridden. The bookingConfirmed outcome will result in a redirect to show the new booking. Any other outcome will redirect back to the hotels index page.

Deploying a custom FlowHandler

To install a custom FlowHandler, simply deploy it as a bean. The bean name must match the id of the flow the handler should apply to.

<bean name="hotels/booking" class="org.springframework.webflow.samples.booking.BookingFlowHandler" />
			

With this configuration, accessing the resource /hotels/booking will launch the hotels/booking flow using the custom BookingFlowHandler. When the booking flow ends, the FlowHandler will process the flow execution outcome and redirect to the appropriate controller.

FlowHandler Redirects

A FlowHandler handling a FlowExecutionOutcome or FlowException returns a String to indicate the resource to redirect to after handling. In the previous example, the BookingFlowHandler redirects to the booking/show resource URI for bookingConfirmed outcomes, and the hotels/index resource URI for all other outcomes.

By default, returned resource locations are relative to the current servlet mapping. This allows for a flow handler to redirect to other Controllers in the application using relative paths. In addition, explicit redirect prefixes are supported for cases where more control is needed.

The explicit redirect prefixes supported are:

  • servletRelative: - redirect to a resource relative to the current servlet

  • contextRelative: - redirect to a resource relative to the current web application context path

  • serverRelative: - redirect to a resource relative to the server root

  • http:// or https:// - redirect to a fully-qualified resource URI

These same redirect prefixes are also supported within a flow definition when using the externalRedirect: directive in conjunction with a view-state or end-state; for example, view="externalRedirect:http://springframework.org"

libspring-webflow-2.0-java-2.0.9.RELEASE.orig/docs/spring-webflow-reference/html/ch12s09.html0000644000000000000000000003361111360615630026057 0ustar 12.9. Third-Party Component Library Integration

12.9. Third-Party Component Library Integration

Spring Faces strives to be compatible with any third-party JSF component library. By honoring all of the standard semantics of the JSF specification within the SWF-driven JSF lifecycle, third-party libraries in general should "just work". The main thing to remember is that configuration in web.xml will change slightly since Spring Faces requests are not routed through the standard FacesServlet. Typically, anything that is traditionally mapped to the FacesServlet should be mapped to the Spring DispatcherServlet instead. (You can also map to both if for example you are migrating a legacy JSF application page-by-page.) In some cases, a deeper level of integration can be achieved by configuring special flow services that are "aware" of a particular component library, and these will be noted in the examples to follow.

Rich Faces Integration

To use the Rich Faces component library with Spring Faces, the following filter configuration is needed in web.xml (in addition to the typical Spring Faces configuration):

 
<filter> 
    <display-name>RichFaces Filter</display-name> 
    <filter-name>richfaces</filter-name> 
    <filter-class>org.ajax4jsf.Filter</filter-class> 
</filter> 

<filter-mapping> 
    <filter-name>richfaces</filter-name> 
    <servlet-name>Spring Web MVC Dispatcher Servlet</servlet-name>
    <dispatcher>REQUEST</dispatcher>
    <dispatcher>FORWARD</dispatcher>
    <dispatcher>INCLUDE</dispatcher>
</filter-mapping>
            

For deeper integration (including the ability to have a view with combined use of the Spring Faces Ajax components and Rich Faces Ajax components), configure the RichFacesAjaxHandler on your FlowController:

 
<bean id="flowController" class="org.springframework.webflow.mvc.servlet.FlowController">
    <property name="flowExecutor" ref="flowExecutor" />
    <property name="ajaxHandler">
        <bean class="org.springframework.faces.richfaces.RichFacesAjaxHandler"/>
    </property>
</bean>
            

RichFaces Ajax components can be used in conjunction with the render tag to render partial fragments on an Ajax request. Instead of embedding the ids of the components to be re-rendered directly in the view template (as you traditionally do with Rich Faces), you can bind the reRender attribute of a RichFaces Ajax component to a special flowRenderFragments EL variable. For example, in your view template you can have a fragment that you would potentially like to re-render in response to a particular event:

<h:form id="hotels">
    <a4j:outputPanel id="searchResultsFragment">
        <h:outputText id="noHotelsText" value="No Hotels Found" rendered="#{hotels.rowCount == 0}"/>
        <h:dataTable id="hotels" styleClass="summary" value="#{hotels}" var="hotel" rendered="#{hotels.rowCount > 0}">
            <h:column>
                <f:facet name="header">Name</f:facet>
                #{hotel.name}
            </h:column>
            <h:column>
                <f:facet name="header">Address</f:facet>
                #{hotel.address}
            </h:column>
        </h:dataTable>
    </a4j:outputPanel>
</h:form>
            

then a RichFaces Ajax commandLink to fire the event:

<a4j:commandLink id="nextPageLink" value="More Results" action="next" reRender="#{flowRenderFragments}" />
            

and then in your flow definition a transition to handle the event:

<transition on="next">
    <evaluate expression="searchCriteria.nextPage()" />
    <render fragments="hotels:searchResultsFragment" />
</transition>
            

Apache MyFaces Trinidad Integration

The Apache MyFaces Trinidad library has been tested with the Spring Faces integration and proven to fit in nicely. Deeper integration to allow the Trinidad components and Spring Faces components to play well together has not yet been attempted, but Trinidad provides a pretty thorough solution on its own when used in conjunction with the Spring Faces integration layer.

NOTE - An AjaxHandler implementation for Trinidad is not currently provided out-of-the-box with Spring Faces. In order to fully integrate with Trinidad's PPR functionality, a custom implementation should be provided. An community-provided partial example can be found here: SWF-1160

Typical Trinidad + Spring Faces configuration is as follows in web.xml (in addition to the typical Spring Faces configuration):

<context-param>
    <param-name>javax.faces.STATE_SAVING_METHOD</param-name>
    <param-value>server</param-value>
</context-param>

<context-param>
    <param-name>
        org.apache.myfaces.trinidad.CHANGE_PERSISTENCE
    </param-name>
    <param-value>session</param-value>
</context-param>

<context-param>
    <param-name>
        org.apache.myfaces.trinidad.ENABLE_QUIRKS_MODE
    </param-name>
    <param-value>false</param-value>
</context-param>

<filter>
    <filter-name>Trinidad Filter</filter-name>
    <filter-class>
        org.apache.myfaces.trinidad.webapp.TrinidadFilter
    </filter-class>
</filter>

<filter-mapping>
    <filter-name>Trinidad Filter</filter-name>
    <servlet-name>Spring MVC Dispatcher Servlet</servlet-name>
</filter-mapping>

<servlet>
    <servlet-name>Trinidad Resource Servlet</servlet-name>
    <servlet-class>
        org.apache.myfaces.trinidad.webapp.ResourceServlet
    </servlet-class>
</servlet>

<servlet-mapping>
    <servlet-name>resources</servlet-name>
    <url-pattern>/adf/*</url-pattern>
</servlet-mapping>

            
libspring-webflow-2.0-java-2.0.9.RELEASE.orig/docs/spring-webflow-reference/html/ch04s06.html0000644000000000000000000001005511360615630026052 0ustar 4.6. Binding to a model

4.6. Binding to a model

Use the model attribute to declare a model object the view binds to. This attribute is typically used in conjunction with views that render data controls, such as forms. It enables form data binding and validation behaviors to be driven from metadata on your model object.

The following example declares an enterBookingDetails state manipulates the booking model:

<view-state id="enterBookingDetails" model="booking">
	    

The model may be an object in any accessible scope, such as flowScope or viewScope. Specifying a model triggers the following behavior when a view event occurs:

  1. View-to-model binding. On view postback, user input values are bound to model object properties for you.

  2. Model validation. After binding, if the model object requires validation that validation logic will be invoked.

For a flow event to be generated that can drive a view state transition, model binding must complete successfully. If model binding fails, the view is re-rendered to allow the user to revise their edits.

libspring-webflow-2.0-java-2.0.9.RELEASE.orig/docs/spring-webflow-reference/html/ch02s02.html0000644000000000000000000000604711360615630026052 0ustar 2.2. What is a flow?

2.2. What is a flow?

A flow encapsulates a reusable sequence of steps that can execute in different contexts. Below is a Garrett Information Architecture diagram illustrating a reference to a flow that encapsulates the steps of a hotel booking process:

Site Map illustrating a reference to a flow

libspring-webflow-2.0-java-2.0.9.RELEASE.orig/docs/spring-webflow-reference/html/ch01s07.html0000644000000000000000000002266011360615630026055 0ustar 1.7. How to access nightly builds

1.7. How to access nightly builds

Nightly snapshots of Web Flow development branches are available using Maven, and distribution zips are also available for download. These snapshot builds are useful for testing out fixes you depend on in advance of the next release, and provide a convenient way for you to provide feedback about whether a fix meets your needs.

If using Maven, you may obtain snapshots from either the SpringSource-managed Maven Central-compatible repository or the SpringSource Enterprise Bundle Repository. Use the Maven Central-compatible snapshot repository when your project obtains its other open source dependencies from Maven Central. Use the Spring Source Enterprise Bundle Snapshot Repository when you wish to run Web Flow in an OSGi environment.

Accessing snapshots from the Maven-central compatible repository

Add the following repository your pom:

<repository>
    <id>org.springsource.maven.snapshot</id>
    <name>SpringSource Maven Central-compatible Snapshot Repository</name>
    <url>http://maven.springframework.org/snapshot</url>
</repository>
			

Then declare the following dependencies:

<dependency>
    <groupId>org.springframework.webflow</groupId>
    <artifactId>spring-binding</artifactId>
    <version>x.y.z.BUILD-SNAPSHOT</version>
</dependency> 

<dependency>
    <groupId>org.springframework.webflow</groupId>
    <artifactId>spring-js</artifactId>
    <version>x.y.z.BUILD-SNAPSHOT</version>
</dependency> 

<dependency>
    <groupId>org.springframework.webflow</groupId>
    <artifactId>spring-webflow</artifactId>
    <version>x.y.z.BUILD-SNAPSHOT</version>
</dependency>
			

And if using JavaServerFaces:

<dependency>
    <groupId>org.springframework.webflow</groupId>
    <artifactId>spring-faces</artifactId>
    <version>x.y.z.BUILD-SNAPSHOT</version>
</dependency>
			

Accessing snapshots from the SpringSource Enterprise Bundle Repository

Add the following repository your pom:

<repository>
    <id>com.springsource.repository.bundles.snapshot</id>
    <name>SpringSource Enterprise Bundle Snapshot Repository</name>
    <url>http://repository.springsource.com/maven/bundles/snapshot</url>
</repository>
			

Then declare the following dependencies:

<dependency>
    <groupId>org.springframework.webflow</groupId>
    <artifactId>org.springframework.binding</artifactId>
    <version>x.y.z.BUILD-SNAPSHOT</version>
</dependency> 

<dependency>
    <groupId>org.springframework.webflow</groupId>
    <artifactId>org.springframework.js</artifactId>
    <version>x.y.z.BUILD-SNAPSHOT</version>
</dependency> 

<dependency>
    <groupId>org.springframework.webflow</groupId>
    <artifactId>org.springframework.webflow</artifactId>
    <version>x.y.z.BUILD-SNAPSHOT</version>
</dependency>
			

And if using JavaServerFaces:

<dependency>
    <groupId>org.springframework.webflow</groupId>
    <artifactId>org.springframework.faces</artifactId>
    <version>x.y.z.BUILD-SNAPSHOT</version>
</dependency>
			

Accessing snapshot distribution archives

Get the snapshot zip with the most recent CI build number from the Web Flow snapshot download area.

libspring-webflow-2.0-java-2.0.9.RELEASE.orig/docs/spring-webflow-reference/html/ch12s07.html0000644000000000000000000005031311360615630026053 0ustar 12.7. Handling JSF Events With Spring Web Flow

12.7. Handling JSF Events With Spring Web Flow

Spring Web Flow allows you to handle JSF action events in a decoupled way, requiring no direct dependencies in your Java code on JSF API's. In fact, these events can often be handled completely in the flow definiton language without requiring any custom Java action code at all. This allows for a more agile development process since the artifacts being manipulated in wiring up events (JSF view templates and SWF flow definitions) are instantly refreshable without requiring a build and re-deploy of the whole application.

Handling JSF In-page Action Events

A simple but common case in JSF is the need to signal an event that causes manipulation of the model in some way and then redisplays the same view to reflect the changed state of the model. The flow definition language has special support for this in the transition element.

A good example of this is a table of paged list results. Suppose you want to be able to load and display only a portion of a large result list, and allow the user to page through the results. The initial view-state definition to load and display the list would be:

 
<view-state id="reviewHotels">
    <on-render>
        <evaluate expression="bookingService.findHotels(searchCriteria)" 
                  result="viewScope.hotels" result-type="dataModel" />
    </on-render>
</view-state>
            

You construct a JSF DataTable that displays the current hotels list, and then place a "More Results" link below the table:

 
<h:commandLink id="nextPageLink" value="More Results" action="next"/>
            

This commandLink signals a "next" event from its action attribute. You can then handle the event by adding to the view-state definition:

 
<view-state id="reviewHotels">
    <on-render>
        <evaluate expression="bookingService.findHotels(searchCriteria)" 
            result="viewScope.hotels" result-type="dataModel" />
    </on-render>
    <transition on="next">
        <evaluate expression="searchCriteria.nextPage()" />
    </transition>
</view-state>
            

Here you handle the "next" event by incrementing the page count on the searchCriteria instance. The on-render action is then called again with the updated criteria, which causes the next page of results to be loaded into the DataModel. The same view is re-rendered since there was no to attribute on the transition element, and the changes in the model are reflected in the view.

Handling JSF Action Events

The next logical level beyond in-page events are events that require navigation to another view, with some manipulation of the model along the way. Achieving this with pure JSF would require adding a navigation rule to faces-config.xml and likely some intermediary Java code in a JSF managed bean (both tasks requiring a re-deploy). With the flow defintion language, you can handle such a case concisely in one place in a quite similar way to how in-page events are handled.

Continuing on with our use case of manipulating a paged list of results, suppose we want each row in the displayed DataTable to contain a link to a detail page for that row instance. You can add a column to the table containing the following commandLink component:

<h:commandLink id="viewHotelLink" value="View Hotel" action="select"/>
            

This raises the "select" event which you can then handle by adding another transition element to the existing view-state :

 
<view-state id="reviewHotels">
    <on-render>
        <evaluate expression="bookingService.findHotels(searchCriteria)" 
            result="viewScope.hotels" result-type="dataModel" />
    </on-render>
    <transition on="next">
        <evaluate expression="searchCriteria.nextPage()" />
    </transition>
    <transition on="select" to="reviewHotel">
            <set name="flowScope.hotel" value="hotels.selectedRow" />
    </transition>
</view-state>
            

Here the "select" event is handled by pushing the currently selected hotel instance from the DataTable into flow scope, so that it may be referenced by the "reviewHotel" view-state .

Performing Model Validation

JSF provides useful facilities for validating input at field-level before changes are applied to the model, but when you need to then perform more complex validation at the model-level after the updates have been applied, you are generally left with having to add more custom code to your JSF action methods in the managed bean. Validation of this sort is something that is generally a responsibility of the domain model itself, but it is difficult to get any error messages propagated back to the view without introducing an undesirable dependency on the JSF API in your domain layer.

With Spring Faces, you can utilize the generic and low-level MessageContext in your business code and any messages added there will then be available to the FacesContext at render time.

For example, suppose you have a view where the user enters the necessary details to complete a hotel booking, and you need to ensure the Check In and Check Out dates adhere to a given set of business rules. You can invoke such model-level validation from a transition element:

 
<view-state id="enterBookingDetails">
    <transition on="proceed" to="reviewBooking">
        <evaluate expression="booking.validateEnterBookingDetails(messageContext)" />
    </transition>
</view-state>
            

Here the "proceed" event is handled by invoking a model-level validation method on the booking instance, passing the generic MessageContext instance so that messages may be recorded. The messages can then be displayed along with any other JSF messages with the h:messages component,

Handling Ajax Events

Spring Faces provides some special UICommand components that go beyond the standard JSF components by adding the ability to do Ajax-based partial view updates. These components degrade gracefully so that the flow will still be fully functional by falling back to full page refreshes if a user with a less capable browser views the page.

[Note]Note
Though the core JSF support in Spring Faces is JSF 1.1-compatible, the Spring Faces Ajax components require JSF 1.2.

Revisiting the earlier example with the paged table, you can change the "More Results" link to use an Ajax request by replacing the standard commandButton with the Spring Faces version (note that the Spring Faces command components use Ajax by default, but they can alternately be forced to use a normal form submit by setting ajaxEnabled="false" on the component):

            
<sf:commandLink id="nextPageLink" value="More Results" action="next" />
            

This event is handled just as in the non-Ajax case with the transition element, but now you will add a special render action that specifies which portions of the component tree need to be re-rendered:

<view-state id="reviewHotels">
    <on-render>
        <evaluate expression="bookingService.findHotels(searchCriteria)" 
                  result="viewScope.hotels" result-type="dataModel" />
    </on-render>
    <transition on="next">
        <evaluate expression="searchCriteria.nextPage()" />
        <render fragments="hotels:searchResultsFragment" />
    </transition>
</view-state>
            

The fragments="hotels:searchResultsFragment" is an instruction that will be interpreted at render time, such that only the component with the JSF clientId "hotels:searchResultsFragment" will be rendered and returned to the client. This fragment will then be automatically replaced in the page. The fragments attribute can be a comma-delimited list of ids, with each id representing the root node of a subtree (meaning the root node and all of its children) to be rendered. If the "next" event is fired in a non-Ajax request (i.e., if JavaScript is disabled on the client), the render action will be ignored and the full page will be rendered as normal.

In addition to the Spring Faces commandLink component, there is a corresponding commandButton component with the same functionality. There is also a special ajaxEvent component that will raise a JSF action even in response to any client-side DOM event. See the Spring Faces tag library docs for full details.

An additional built-in feature when using the Spring Faces Ajax components is the ability to have the response rendered inside a rich modal popup widget by setting popup="true" on a view-state .

<view-state id="changeSearchCriteria" view="enterSearchCriteria.xhtml" popup="true">
    <on-entry>
        <render fragments="hotelSearchFragment" />
    </on-entry>
    <transition on="search" to="reviewHotels">
        <evaluate expression="searchCriteria.resetPage()"/>
    </transition>
</view-state>
            

If the "changeSearchCriteria" view-state is reached as the result of an Ajax-request, the result will be rendered into a rich popup. If JavaScript is unavailable, the request will be processed with a full browser refresh, and the "changeSearchCriteria" view will be rendered as normal.

libspring-webflow-2.0-java-2.0.9.RELEASE.orig/docs/spring-webflow-reference/html/ch10.html0000644000000000000000000000577211360615630025530 0ustar 10. Spring MVC Integration

10. Spring MVC Integration

10.1. Introduction

This chapter shows how to integrate Web Flow into a Spring MVC web application. The booking-mvc sample application is a good reference for Spring MVC with Web Flow. This application is a simplified travel site that allows users to search for and book hotel rooms.

libspring-webflow-2.0-java-2.0.9.RELEASE.orig/docs/spring-webflow-reference/html/ch10s03.html0000644000000000000000000001524011360615630026045 0ustar 10.3. Dispatching to flows

10.3. Dispatching to flows

The DispatcherServlet maps requests for application resources to handlers. A flow is one type of handler.

Registering the FlowHandlerAdapter

The first step to dispatching requests to flows is to enable flow handling within Spring MVC. To this, install the FlowHandlerAdapter:

<!-- Enables FlowHandler URL mapping -->
<bean class="org.springframework.webflow.mvc.servlet.FlowHandlerAdapter">
    <property name="flowExecutor" ref="flowExecutor" />
</bean>
			

Defining flow mappings

Once flow handling is enabled, the next step is to map specific application resources to your flows. The simplest way to do this is to define a FlowHandlerMapping:

<!-- Maps request paths to flows in the flowRegistry;
     e.g. a path of /hotels/booking looks for a flow with id "hotels/booking" -->		
<bean class="org.springframework.webflow.mvc.servlet.FlowHandlerMapping">
    <property name="flowRegistry" ref="flowRegistry"/>
    <property name="order" value="0"/>
</bean>
			

Configuring this mapping allows the Dispatcher to map application resource paths to flows in a flow registry. For example, accessing the resource path /hotels/booking would result in a registry query for the flow with id hotels/booking. If a flow is found with that id, that flow will handle the request. If no flow is found, the next handler mapping in the Dispatcher's ordered chain will be queried or a "noHandlerFound" response will be returned.

Flow handling workflow

When a valid flow mapping is found, the FlowHandlerAdapter figures out whether to start a new execution of that flow or resume an existing execution based on information present the HTTP request. There are a number of defaults related to starting and resuming flow executions the adapter employs:

  • HTTP request parameters are made available in the input map of all starting flow executions.

  • When a flow execution ends without sending a final response, the default handler will attempt to start a new execution in the same request.

  • Unhandled exceptions are propagated to the Dispatcher unless the exception is a NoSuchFlowExecutionException. The default handler will attempt to recover from a NoSuchFlowExecutionException by starting over a new execution.

Consult the API documentation for FlowHandlerAdapter for more information. You may override these defaults by subclassing or by implementing your own FlowHandler, discussed in the next section.

libspring-webflow-2.0-java-2.0.9.RELEASE.orig/docs/spring-webflow-reference/html/ch12.html0000644000000000000000000000635311360615630025526 0ustar 12. JSF Integration

12. JSF Integration

12.1. Introduction

Spring Faces is Spring's JSF integration module that simplifies using JSF with Spring. It lets you use the JSF UI Component Model with Spring MVC and Spring Web Flow controllers.

Spring Faces also includes a small Facelets component library that provides Ajax and client-side validation capabilities. This component library builds on Spring Javascript, a Javascript abstraction framework that integrates Dojo as the underlying UI toolkit.

libspring-webflow-2.0-java-2.0.9.RELEASE.orig/docs/spring-webflow-reference/html/ch08s04.html0000644000000000000000000000600511360615630026054 0ustar 8.4. Abstract flows

8.4. Abstract flows

Often parent flows are not designed to be executed directly. In order to protect these flows from running, they can be marked as abstract. If an abstract flow attempts to run, a FlowBuilderException will be thrown.

<flow abstract="true">
		
libspring-webflow-2.0-java-2.0.9.RELEASE.orig/docs/spring-webflow-reference/html/ch09s02.html0000644000000000000000000000722711360615630026062 0ustar 9.2. webflow-config.xsd

9.2. webflow-config.xsd

Web Flow provides a Spring schema that allows you to configure the system. To use this schema, include it in one of your infrastructure-layer beans files:

<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xmlns:webflow="http://www.springframework.org/schema/webflow-config"
       xsi:schemaLocation="
           http://www.springframework.org/schema/beans
           http://www.springframework.org/schema/beans/spring-beans-2.5.xsd
           http://www.springframework.org/schema/webflow-config
           http://www.springframework.org/schema/webflow-config/spring-webflow-config-2.0.xsd">		

    <!-- Setup Web Flow here -->
	
</beans>
		
libspring-webflow-2.0-java-2.0.9.RELEASE.orig/docs/spring-webflow-reference/html/ch04s04.html0000644000000000000000000001451511360615630026055 0ustar 4.4. View scope

4.4. View scope

A view-state allocates a new viewScope when it enters. This scope may be referenced within the view-state to assign variables that should live for the duration of the state. This scope is useful for manipulating objects over a series of requests from the same view, often Ajax requests. A view-state destroys its viewScope when it exits.

Allocating view variables

Use the var tag to declare a view variable. Like a flow variable, any @Autowired references are automatically restored when the view state resumes.

<var name="searchCriteria" class="com.mycompany.myapp.hotels.SearchCriteria" />
			

Assigning a viewScope variable

Use the on-render tag to assign a variable from an action result before the view renders:

<on-render>
    <evaluate expression="bookingService.findHotels(searchCriteria)" result="viewScope.hotels" />
</on-render>
			

Manipulating objects in view scope

Objects in view scope are often manipulated over a series of requests from the same view. The following example pages through a search results list. The list is updated in view scope before each render. Asynchronous event handlers modify the current data page, then request re-rendering of the search results fragment.

<view-state id="searchResults">
    <on-render>
        <evaluate expression="bookingService.findHotels(searchCriteria)"
                  result="viewScope.hotels" />
    </on-render>
    <transition on="next">
        <evaluate expression="searchCriteria.nextPage()" />
        <render fragments="searchResultsFragment" />            
    </transition>
    <transition on="previous">
        <evaluate expression="searchCriteria.previousPage()" />
        <render fragments="searchResultsFragment" />          
    </transition>
</view-state>
			
libspring-webflow-2.0-java-2.0.9.RELEASE.orig/docs/spring-webflow-reference/html/ch12s05.html0000644000000000000000000000675411360615630026063 0ustar 12.5. Configuring faces-config.xml

12.5. Configuring faces-config.xml

The only configuration needed in faces-config.xml is specific to the use of Facelets. If you are using JSP and not using the Spring Faces components, you do not need to add anything specific to Spring Faces to your faces-config.xml

<faces-config>
    <application>
        <!-- Enables Facelets -->
        <view-handler>com.sun.facelets.FaceletViewHandler</view-handler>  
    </application>
</faces-config>
        
libspring-webflow-2.0-java-2.0.9.RELEASE.orig/docs/spring-webflow-reference/html/ch02s08.html0000644000000000000000000000665311360615630026063 0ustar 2.8. Variables

2.8. Variables

A flow may declare one or more instance variables. These variables are allocated when the flow starts. Any @Autowired transient references the variable holds are also rewired when the flow resumes.

var

Use the var element to declare a flow variable:

<var name="searchCriteria" class="com.mycompany.myapp.hotels.search.SearchCriteria"/>
			

Make sure your variable's class implements java.io.Serializable, as the instance state is saved between flow requests.

libspring-webflow-2.0-java-2.0.9.RELEASE.orig/docs/spring-webflow-reference/html/ch08s03.html0000644000000000000000000001063711360615630026061 0ustar 8.3. Types of Flow Inheritance

8.3. Types of Flow Inheritance

Flow level inheritance

Flow level inheritance is defined by the parent attribute on the flow element. The attribute contains a comma separated list of flow identifiers to inherit from. The child flow will inherit from each parent in the order it is listed adding elements and content to the resulting flow. The resulting flow from the first merge will be considered the child in the second merge, and so on.

<flow parent="common-transitions, common-states">
			

State level inheritance

State level inheritance is similar to flow level inheritance, except only one state inherits from the parent, instead of the entire flow.

Unlike flow inheritance, only a single parent is allowed. Additionally, the identifier of the flow state to inherit from must also be defined. The identifiers for the flow and the state within that flow are separated by a #.

The parent and child states must be of the same type. For instance a view-state cannot inherit from an end-state, only another view-state.

<view-state id="child-state" parent="parent-flow#parent-view-state">
			
libspring-webflow-2.0-java-2.0.9.RELEASE.orig/docs/spring-webflow-reference/html/ch04s11.html0000644000000000000000000000720511360615630026051 0ustar 4.11. Suppressing validation

4.11. Suppressing validation

Use the validate attribute to suppress model validation for particular view events:

<view-state id="chooseAmenities" model="booking">
    <transition on="proceed" to="reviewBooking">
    <transition on="back" to="enterBookingDetails" validate="false" />
</view-state>
		

In this example, data binding will still occur on back but validation will be suppressed.

libspring-webflow-2.0-java-2.0.9.RELEASE.orig/docs/spring-webflow-reference/html/ch04s15.html0000644000000000000000000001006011360615630026046 0ustar 4.15. View backtracking

4.15. View backtracking

By default, when you exit a view state and transition to a new view state, you can go back to the previous state using the browser back button. These view state history policies are configurable on a per-transition basis by using the history attribute.

Discarding history

Set the history attribute to discard to prevent backtracking to a view:

<transition on="cancel" to="bookingCancelled" history="discard">
			

Invalidating history

Set the history attribute to invalidate to prevent backtracking to a view as well all previously displayed views:

<transition on="confirm" to="bookingConfirmed" history="invalidate">
			
libspring-webflow-2.0-java-2.0.9.RELEASE.orig/docs/spring-webflow-reference/html/ch02s06.html0000644000000000000000000002033311360615630026050 0ustar 2.6. Actions

2.6. Actions

Most flows need to express more than just view navigation logic. Typically they also need to invoke business services of the application or other actions.

Within a flow, there are several points where you can execute actions. These points are:

  • On flow start

  • On state entry

  • On view render

  • On transition execution

  • On state exit

  • On flow end

Actions are defined using a concise expression language. Spring Web Flow uses the Unified EL by default. The next few sections will cover the essential language elements for defining actions.

evaluate

The action element you will use most often is the evaluate element. Use the evaluate element to evaluate an expression at a point within your flow. With this single tag you can invoke methods on Spring beans or any other flow variable. For example:

<evaluate expression="entityManager.persist(booking)" />		
			

Assigning an evaluate result

If the expression returns a value, that value can be saved in the flow's data model called flowScope:

<evaluate expression="bookingService.findHotels(searchCriteria)" result="flowScope.hotels" />
				

Converting an evaluate result

If the expression returns a value that may need to be converted, specify the desired type using the result-type attribute:

<evaluate expression="bookingService.findHotels(searchCriteria)" result="flowScope.hotels"
          result-type="dataModel"/>
				

Checkpoint: flow actions

Now review the sample booking flow with actions added:

<flow xmlns="http://www.springframework.org/schema/webflow"
      xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
      xsi:schemaLocation="http://www.springframework.org/schema/webflow
                          http://www.springframework.org/schema/webflow/spring-webflow-2.0.xsd">

    <input name="hotelId" />

    <on-start>
        <evaluate expression="bookingService.createBooking(hotelId, currentUser.name)" 
                  result="flowScope.booking" />
    </on-start>

    <view-state id="enterBookingDetails">
        <transition on="submit" to="reviewBooking" />
    </view-state>
	
    <view-state id="reviewBooking">
        <transition on="confirm" to="bookingConfirmed" />
        <transition on="revise" to="enterBookingDetails" />
        <transition on="cancel" to="bookingCancelled" />
    </view-state>
	
    <end-state id="bookingConfirmed" />

    <end-state id="bookingCancelled" />
		
</flow>	
			

This flow now creates a Booking object in flow scope when it starts. The id of the hotel to book is obtained from a flow input attribute.

libspring-webflow-2.0-java-2.0.9.RELEASE.orig/docs/spring-webflow-reference/html/ch01s05.html0000644000000000000000000001176311360615630026055 0ustar 1.5. How to access Web Flow artifacts from Maven Central

1.5. How to access Web Flow artifacts from Maven Central

Each jar in the Web Flow distribution is available in the Maven Central Repository. This allows you to easily integrate Web Flow into your application if you are already using Maven as the build system for your web development project.

To access Web Flow jars from Maven Central, declare the following dependencies in your pom:

<dependency>
    <groupId>org.springframework.webflow</groupId>
    <artifactId>spring-binding</artifactId>
    <version>2.0.9.RELEASE</version>
</dependency> 

<dependency>
    <groupId>org.springframework.webflow</groupId>
    <artifactId>spring-js</artifactId>
    <version>2.0.9.RELEASE</version>
</dependency> 

<dependency>
    <groupId>org.springframework.webflow</groupId>
    <artifactId>spring-webflow</artifactId>
    <version>2.0.9.RELEASE</version>
</dependency>

		

And if using JavaServerFaces:

<dependency>
    <groupId>org.springframework.webflow</groupId>
    <artifactId>spring-faces</artifactId>
    <version>2.0.9.RELEASE</version>
</dependency> 

		
libspring-webflow-2.0-java-2.0.9.RELEASE.orig/docs/spring-webflow-reference/html/ch06.html0000644000000000000000000000723411360615630025530 0ustar 6. Flow Managed Persistence

6. Flow Managed Persistence

6.1. Introduction

Most applications access data in some way. Many modify data shared by multiple users and therefore require transactional data access properties. They often transform relational data sets into domain objects to support application processing. Web Flow offers "flow managed persistence" where a flow can create, commit, and close a object persistence context for you. Web Flow integrates both Hibernate and JPA object persistence technologies.

Apart from flow-managed persistence, there is the pattern of fully encapsulating PersistenceContext management within the service layer of your application. In that case, the web layer does not get involved with persistence, instead it works entirely with detached objects that are passed to and returned by your service layer. This chapter will focus on the flow-managed persistence, exploring how and when to use this feature.

libspring-webflow-2.0-java-2.0.9.RELEASE.orig/docs/spring-webflow-reference/html/ch08s02.html0000644000000000000000000000616411360615630026060 0ustar 8.2. Is flow inheritance like Java inheritance?

8.2. Is flow inheritance like Java inheritance?

Flow inheritance is similar to Java inheritance in that elements defined in a parent are exposed via the child, however, there are key differences.

A child flow cannot override an element from a parent flow. Similar elements between the parent and child flows will be merged. Unique elements in the parent flow will be added to the child.

A child flow can inherit from multiple parent flows. Java inheritance is limited to a single class.

libspring-webflow-2.0-java-2.0.9.RELEASE.orig/docs/spring-webflow-reference/html/ch04s13.html0000644000000000000000000001727611360615630026064 0ustar 4.13. Working with messages

4.13. Working with messages

Spring Web Flow's MessageContext is an API for recording messages during the course of flow executions. Plain text messages can be added to the context, as well as internationalized messages resolved by a Spring MessageSource. Messages are renderable by views and automatically survive flow execution redirects. Three distinct message severities are provided: info, warning, and error. In addition, a convenient MessageBuilder exists for fluently constructing messages.

Adding plain text messages

MessageContext context = ...
MessageBuilder builder = new MessageBuilder();
context.addMessage(builder.error().source("checkinDate")
    .defaultText("Check in date must be a future date").build());
context.addMessage(builder.warn().source("smoking")
    .defaultText("Smoking is bad for your health").build());
context.addMessage(builder.info()
    .defaultText("We have processed your reservation - thank you and enjoy your stay").build());
			

Adding internationalized messages

MessageContext context = ...
MessageBuilder builder = new MessageBuilder();
context.addMessage(builder.error().source("checkinDate").code("checkinDate.notFuture").build());
context.addMessage(builder.warn().source("smoking").code("notHealthy")
    .resolvableArg("smoking").build());			
context.addMessage(builder.info().code("reservationConfirmation").build());
			

Using message bundles

Internationalized messages are defined in message bundles accessed by a Spring MessageSource. To create a flow-specific message bundle, simply define messages.properties file(s) in your flow's directory. Create a default messages.properties file and a .properties file for each additional Locale you need to support.

#messages.properties
checkinDate=Check in date must be a future date
notHealthy={0} is bad for your health
reservationConfirmation=We have processed your reservation - thank you and enjoy your stay
			

From within a view or a flow, you may also access message resources using the resourceBundle EL variable:

<h:outputText value="#{resourceBundle.reservationConfirmation}" />
			

Understanding system generated messages

There are several places where Web Flow itself will generate messages to display to the user. One important place this occurs is during view-to-model data binding. When a binding error occurs, such as a type conversion error, Web Flow will map that error to a message retrieved from your resource bundle automatically. To lookup the message to display, Web Flow tries resource keys that contain the binding error code and target property name.

As an example, consider a binding to a checkinDate property of a Booking object. Suppose the user typed in a alphabetic string. In this case, a type conversion error will be raised. Web Flow will map the 'typeMismatch' error code to a message by first querying your resource bundle for a message with the following key:

booking.checkinDate.typeMismatch
			

The first part of the key is the model class's short name. The second part of the key is the property name. The third part is the error code. This allows for the lookup of a unique message to display to the user when a binding fails on a model property. Such a message might say:

booking.checkinDate.typeMismatch=The check in date must be in the format yyyy-mm-dd.
			

If no such resource key can be found of that form, a more generic key will be tried. This key is simply the error code. The field name of the property is provided as a message argument.

typeMismatch=The {0} field is of the wrong type.
			
libspring-webflow-2.0-java-2.0.9.RELEASE.orig/docs/spring-webflow-reference/html/ch12s08.html0000644000000000000000000002117011360615630026053 0ustar 12.8. Enhancing The User Experience With Rich Web Forms

12.8. Enhancing The User Experience With Rich Web Forms

JSF and Web Flow combine to provide an extensive server-side validation model for your web application, but excessive roundtrips to the server to execute this validation and return error messages can be a tedious experience for your users. Spring Faces provides a number of client-side rich validation controls that can enhance the user experience by applying simple validations that give immediate feedback. Some simple examples are illustrated below. See the Spring Faces taglib docs for a complete tag reference.

Validating a Text Field

Simple client-side text validation can be applied with the clientTextValidator component:

 
<sf:clientTextValidator required="true">
    <h:inputText id="creditCardName" value="#{booking.creditCardName}" required="true"/>
</sf:clientTextValidator>
            

This will apply client-side required validation to the child inputText component, giving the user a clear indicator if the field is left blank.

Validating a Numeric Field

Simple client-side numeric validation can be applied with the clientNumberValidator component:

 
<sf:clientTextValidator required="true" regExp="[0-9]{16}" 
                        invalidMessage="A 16-digit credit card number is required.">
    <h:inputText id="creditCard" value="#{booking.creditCard}" required="true"/>
</sf:clientTextValidator>
            

This will apply client-side validation to the child inputText component, giving the user a clear indicator if the field is left blank, is not numeric, or does not match the given regular expression.

Validating a Date Field

Simple client-side date validation with a rich calendar popup can be applied with the clientDateValidator component:

 
<sf:clientDateValidator required="true" >
    <h:inputText id="checkinDate" value="#{booking.checkinDate}" required="true">
        <f:convertDateTime pattern="yyyy-MM-dd" timeZone="EST"/>
    </h:inputText>
</sf:clientDateValidator>
            

This will apply client-side validation to the child inputText component, giving the user a clear indicator if the field is left blank or is not a valid date.

Preventing an Invalid Form Submission

The validateAllOnClick component can be used to intercept the "onclick" event of a child component and suppress the event if all client-side validations do not pass.

 
<sf:validateAllOnClick>
    <sf:commandButton id="proceed" action="proceed" processIds="*" value="Proceed"/>&#160;
</sf:validateAllOnClick>
            

This will prevent the form from being submitted when the user clicks the "proceed" button if the form is invalid. When the validations are executed, the user is given clear and immediate indicators of the problems that need to be corrected.

libspring-webflow-2.0-java-2.0.9.RELEASE.orig/docs/spring-webflow-reference/html/ch15s02.html0000644000000000000000000001573011360615630026055 0ustar 15.2. Flow Definition Language

15.2. Flow Definition Language

The core concepts behind the flow definition language have not changed between Web Flow 1 and 2. However, some of the element and attribute names have changed. These changes allow for the language to be both more concise and expressive. A complete list of mapping changes is available as an appendix.

Flow Definition Updater Tool

An automated tool is available to aid in the conversion of existing 1.x flows to the new 2.x style. The tool will convert all the old tag names to their new equivalents, if needed. While the tool will make a best effort attempt at conversion, there is not a one-to-one mapping for all version 1 concepts. If the tool was unable to convert a portion of the flow, it will be marked with a WARNING comment in the resulting flow.

The conversion tool requires spring-webflow.jar, spring-core.jar and an XSLT 1.0 engine. Saxon 6.5.5 is recommended.

The tool can be run from the command line with the following command. Required libraries must be available on the classpath. The source must be a single flow to convert. The resulting converted flow will be sent to standard output.

java org.springframework.webflow.upgrade.WebFlowUpgrader flow-to-upgrade.xml
			

Flow Definition Updater Tool Warnings

argument parameter-type no longer supported

Bean actions have been deprecated in favor of EL based evaluate expressions. The EL expression is able to accept method parameters directly, so there is no longer a need for the argument tag. A side effect of this change is that method arguments must be of the correct type before invoking the action.

inline-flow is no longer supported

Inline flows are no longer supported. The contents of the inline flow must be moved into a new top-level flow. The inline flow's content has been converted for your convenience.

mapping target-collection is no longer supported

Output mappings can no longer add an item to a collection. Only assignment is supported.

var bean is no longer supported

The var bean attribute is no longer needed. All spring beans can be resolved via EL.

var scope is no longer supported

The var element will place all variable into flow scope. Conversation scope was previously allowed.

EL Expressions

EL expressions are used heavily throughout the flow definition language. Many of the attributes that appear to be plain text are actually interpreted as EL. The standard EL delimiters (either ${} or #{}) are not necessary and will often cause an exception if they are included.

EL delimiters should be removed where necessary by the updater tool.

libspring-webflow-2.0-java-2.0.9.RELEASE.orig/docs/spring-webflow-reference/html/ivy.xml0000644000000000000000000000325611360615630025433 0ustar libspring-webflow-2.0-java-2.0.9.RELEASE.orig/docs/spring-webflow-reference/html/ch03s03.html0000644000000000000000000000556111360615630026054 0ustar 3.3. EL portability

3.3. EL portability

In general, you will find the Unified EL and OGNL have a very similar syntax. For basic variable resolution, property access, and method invocation the syntax is identical. We recommend adhering to Unified EL syntax whenever possible, and only relying on proprietary EL features when needed.

libspring-webflow-2.0-java-2.0.9.RELEASE.orig/docs/spring-webflow-reference/html/ch14s03.html0000644000000000000000000000626411360615630026057 0ustar 14.3. Specifying the path to the flow to test

14.3. Specifying the path to the flow to test

At a minimum, you must override getResource(FlowDefinitionResourceFactory) to return the path to the flow you wish to test:

@Override
protected FlowDefinitionResource getResource(FlowDefinitionResourceFactory resourceFactory) {
    return resourceFactory.createFileResource("src/main/webapp/WEB-INF/hotels/booking/booking.xml");
}
		
libspring-webflow-2.0-java-2.0.9.RELEASE.orig/docs/spring-webflow-reference/html/ch14s02.html0000644000000000000000000000577211360615630026061 0ustar 14.2. Extending AbstractXmlFlowExecutionTests

14.2. Extending AbstractXmlFlowExecutionTests

To test the execution of a XML-based flow definition, extend AbstractXmlFlowExecutionTests:

public class BookingFlowExecutionTests extends AbstractXmlFlowExecutionTests {

}
		
libspring-webflow-2.0-java-2.0.9.RELEASE.orig/docs/spring-webflow-reference/html/ch02.html0000644000000000000000000000567211360615630025530 0ustar 2. Defining Flows

2. Defining Flows

2.1. Introduction

This chapter begins the Users Section. It shows how to implement flows using the flow definition language. By the end of this chapter you should have a good understanding of language constructs, and be capable of authoring a flow definition.

libspring-webflow-2.0-java-2.0.9.RELEASE.orig/docs/spring-webflow-reference/html/ch04.html0000644000000000000000000000545111360615630025525 0ustar 4. Rendering views

4. Rendering views

4.1. Introduction

This chapter shows you how to use the view-state element to render views within a flow.

libspring-webflow-2.0-java-2.0.9.RELEASE.orig/docs/spring-webflow-reference/html/ch05.html0000644000000000000000000000606511360615630025530 0ustar 5. Executing actions

5. Executing actions

5.1. Introduction

This chapter shows you how to use the action-state element to control the execution of an action at a point within a flow. It will also show how to use the decision-state element to make a flow routing decision. Finally, several examples of invoking actions from the various points possible within a flow will be discussed.

libspring-webflow-2.0-java-2.0.9.RELEASE.orig/docs/spring-webflow-reference/html/ch11s05.html0000644000000000000000000002362411360615630026055 0ustar 11.5. Handling Ajax Requests

11.5. Handling Ajax Requests

Spring Javascript's client-side Ajax response handling is built upon the notion of receiving "fragments" back from the server. These fragments are just standard HTML that is meant to replace portions of the existing page. The key piece needed on the server is a way to determine which pieces of a full response need to be pulled out for partial rendering.

In order to be able to render partial fragments of a full response, the full response must be built using a templating technology that allows the use of composition for constructing the response, and for the member parts of the composition to be referenced and rendered individually. Spring Javascript provides some simple Spring MVC extensions that make use of Tiles to achieve this. The same technique could theoretically be used with any templating system supporting composition.

Spring Javascript's Ajax remoting functionality is built upon the notion that the core handling code for an Ajax request should not differ from a standard browser request, thus no special knowledge of an Ajax request is needed directly in the code and the same hanlder can be used for both styles of request.

Providing a Library-Specific AjaxHandler

The key interface for integrating various Ajax libraries with the Ajax-aware behavior of Web Flow (such as not redirecting for a partial page update) is org.springframework.js.AjaxHandler. A SpringJavascriptAjaxHandler is configured by default that is able to detect an Ajax request submitted via the Spring JS client-side API and can respond appropriately in the case where a redirect is required. In order to integrate a different Ajax library (be it a pure JavaScript library, or a higher-level abstraction such as an Ajax-capable JSF component library), a custom AjaxHandler can be injected into the FlowHandlerAdapter or FlowController.

Handling Ajax Requests with Spring MVC Controllers

In order to handle Ajax requests with Spring MVC controllers, all that is needed is the configuration of the provided Spring MVC extensions in your Spring application context for rendering the partial response (note that these extensions require the use of Tiles for templating):

<bean id="tilesViewResolver" class="org.springframework.js.ajax.AjaxUrlBasedViewResolver">
    <property name="viewClass" value="org.springframework.webflow.mvc.view.FlowAjaxTilesView"/>
</bean>
            

This configures the AjaxUrlBasedViewResolver which in turn interprets Ajax requests and creates FlowAjaxTilesView objects to handle rendering of the appropriate fragments. Note that FlowAjaxTilesView is capable of handling the rendering for both Web Flow and pure Spring MVC requests. The fragments correspond to individual attributes of a Tiles view definition. For example, take the following Tiles view definition:

<definition name="hotels/index" extends="standardLayout">
    <put-attribute name="body" value="index.body" />
</definition>

<definition name="index.body" template="/WEB-INF/hotels/index.jsp">
    <put-attribute name="hotelSearchForm" value="/WEB-INF/hotels/hotelSearchForm.jsp" />
    <put-attribute name="bookingsTable" value="/WEB-INF/hotels/bookingsTable.jsp" />
</definition>
            

An Ajax request could specify the "body", "hotelSearchForm" or "bookingsTable" to be rendered as fragments in the request.

Handling Ajax Requests with Spring MVC + Spring Web Flow

Spring Web Flow handles the optional rendering of fragments directly in the flow definition language through use of the render element. The benefit of this approach is that the selection of fragments is completely decoupled from client-side code, such that no special parameters need to be passed with the request the way they currently must be with the pure Spring MVC controller approach. For example, if you wanted to render the "hotelSearchForm" fragment from the previous example Tiles view into a rich Javascript popup:

<view-state id="changeSearchCriteria" view="enterSearchCriteria.xhtml" popup="true">
    <on-entry>
        <render fragments="hotelSearchForm" />
    </on-entry>
    <transition on="search" to="reviewHotels">
        <evaluate expression="searchCriteria.resetPage()"/>
    </transition>
</view-state>                
            
libspring-webflow-2.0-java-2.0.9.RELEASE.orig/docs/javadoc-api/0000755000000000000000000000000011360615512020404 5ustar libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/0000755000000000000000000000000011360615646017137 5ustar libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-reference/0000755000000000000000000000000011360615644024036 5ustar libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-reference/.project0000644000000000000000000000033111360615642025500 0ustar spring-webflow-reference libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-reference/src/0000755000000000000000000000000011360615646024627 5ustar libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-reference/src/spring-mvc.xml0000644000000000000000000003775011360615644027450 0ustar Spring MVC Integration Introduction This chapter shows how to integrate Web Flow into a Spring MVC web application. The booking-mvc sample application is a good reference for Spring MVC with Web Flow. This application is a simplified travel site that allows users to search for and book hotel rooms. Configuring web.xml The first step to using Spring MVC is to configure the DispatcherServlet in web.xml. You typically do this once per web application. The example below maps all requests that begin with /spring/ to the DispatcherServlet. An init-param is used to provide the contextConfigLocation. This is the configuration file for the web application. Spring MVC Dispatcher Servlet org.springframework.web.servlet.DispatcherServlet contextConfigLocation /WEB-INF/web-application-config.xml Spring MVC Dispatcher Servlet /spring/* ]]> Dispatching to flows The DispatcherServlet maps requests for application resources to handlers. A flow is one type of handler. Registering the FlowHandlerAdapter The first step to dispatching requests to flows is to enable flow handling within Spring MVC. To this, install the FlowHandlerAdapter: ]]> Defining flow mappings Once flow handling is enabled, the next step is to map specific application resources to your flows. The simplest way to do this is to define a FlowHandlerMapping: ]]> Configuring this mapping allows the Dispatcher to map application resource paths to flows in a flow registry. For example, accessing the resource path /hotels/booking would result in a registry query for the flow with id hotels/booking. If a flow is found with that id, that flow will handle the request. If no flow is found, the next handler mapping in the Dispatcher's ordered chain will be queried or a "noHandlerFound" response will be returned. Flow handling workflow When a valid flow mapping is found, the FlowHandlerAdapter figures out whether to start a new execution of that flow or resume an existing execution based on information present the HTTP request. There are a number of defaults related to starting and resuming flow executions the adapter employs: HTTP request parameters are made available in the input map of all starting flow executions. When a flow execution ends without sending a final response, the default handler will attempt to start a new execution in the same request. Unhandled exceptions are propagated to the Dispatcher unless the exception is a NoSuchFlowExecutionException. The default handler will attempt to recover from a NoSuchFlowExecutionException by starting over a new execution. Consult the API documentation for FlowHandlerAdapter for more information. You may override these defaults by subclassing or by implementing your own FlowHandler, discussed in the next section. Implementing custom FlowHandlers FlowHandler is the extension point that can be used to customize how flows are executed in a HTTP servlet environment. A FlowHandler is used by the FlowHandlerAdapter and is responsible for: Returning the id of a flow definition to execute Creating the input to pass new executions of that flow as they are started Handling outcomes returned by executions of that flow as they end Handling any exceptions thrown by executions of that flow as they occur These responsibilities are illustrated in the definition of the org.springframework.mvc.servlet.FlowHandler interface: public interface FlowHandler { public String getFlowId(); public MutableAttributeMap createExecutionInputMap(HttpServletRequest request); public String handleExecutionOutcome(FlowExecutionOutcome outcome, HttpServletRequest request, HttpServletResponse response); public String handleException(FlowException e, HttpServletRequest request, HttpServletResponse response); } To implement a FlowHandler, subclass AbstractFlowHandler. All these operations are optional, and if not implemented the defaults will apply. You only need to override the methods that you need. Specifically: Override getFlowId(HttpServletRequest) when the id of your flow cannot be directly derived from the HTTP request. By default, the id of the flow to execute is derived from the pathInfo portion of the request URI. For example, http://localhost/app/hotels/booking?hotelId=1 results in a flow id of hotels/booking by default. Override createExecutionInputMap(HttpServletRequest) when you need fine-grained control over extracting flow input parameters from the HttpServletRequest. By default, all request parameters are treated as flow input parameters. Override handleExecutionOutcome when you need to handle specific flow execution outcomes in a custom manner. The default behavior sends a redirect to the ended flow's URL to restart a new execution of the flow. Override handleException when you need fine-grained control over unhandled flow exceptions. The default behavior attempts to restart the flow when a client attempts to access an ended or expired flow execution. Any other exception is rethrown to the Spring MVC ExceptionResolver infrastructure by default. Example FlowHandler A common interaction pattern between Spring MVC And Web Flow is for a Flow to redirect to a @Controller when it ends. FlowHandlers allow this to be done without coupling the flow definition itself with a specific controller URL. An example FlowHandler that redirects to a Spring MVC Controller is shown below: Since this handler only needs to handle flow execution outcomes in a custom manner, nothing else is overridden. The bookingConfirmed outcome will result in a redirect to show the new booking. Any other outcome will redirect back to the hotels index page. Deploying a custom FlowHandler To install a custom FlowHandler, simply deploy it as a bean. The bean name must match the id of the flow the handler should apply to. ]]> With this configuration, accessing the resource /hotels/booking will launch the hotels/booking flow using the custom BookingFlowHandler. When the booking flow ends, the FlowHandler will process the flow execution outcome and redirect to the appropriate controller. FlowHandler Redirects A FlowHandler handling a FlowExecutionOutcome or FlowException returns a String to indicate the resource to redirect to after handling. In the previous example, the BookingFlowHandler redirects to the booking/show resource URI for bookingConfirmed outcomes, and the hotels/index resource URI for all other outcomes. By default, returned resource locations are relative to the current servlet mapping. This allows for a flow handler to redirect to other Controllers in the application using relative paths. In addition, explicit redirect prefixes are supported for cases where more control is needed. The explicit redirect prefixes supported are: servletRelative: - redirect to a resource relative to the current servlet contextRelative: - redirect to a resource relative to the current web application context path serverRelative: - redirect to a resource relative to the server root http:// or https:// - redirect to a fully-qualified resource URI These same redirect prefixes are also supported within a flow definition when using the externalRedirect: directive in conjunction with a view-state or end-state; for example, view="externalRedirect:http://springframework.org" View Resolution Web Flow 2 maps selected view identifiers to files located within the flow's working directory unless otherwise specified. For existing Spring MVC + Web Flow applications, an external ViewResolver is likely already handling this mapping for you. Therefore, to continue using that resolver and to avoid having to change how your existing flow views are packaged, configure Web Flow as follows: ]]> The MvcViewFactoryCreator is the factory that allows you to configure how the Spring MVC view system is used inside Spring Web Flow. Use it to configure existing ViewResolvers, as well as other services such as a custom MessageCodesResolver. You may also enable data binding use Spring MVC's native BeanWrapper by setting the useSpringBinding flag to true. This is an alternative to using OGNL or the Unified EL for view-to-model data binding. See the JavaDoc API of this class for more information. Signaling an event from a View When a flow enters a view-state it pauses, redirects the user to its execution URL, and waits for a user event to resume. Events are generally signaled by activating buttons, links, or other user interface commands. How events are decoded server-side is specific to the view technology in use. This section shows how to trigger events from HTML-based views generated by templating engines such as JSP, Velocity, or Freemarker. Using a named HTML button to signal an event The example below shows two buttons on the same form that signal proceed and cancel events when clicked, respectively. ]]> When a button is pressed Web Flow finds a request parameter name beginning with _eventId_ and treats the remaining substring as the event id. So in this example, submitting _eventId_proceed becomes proceed. This style should be considered when there are several different events that can be signaled from the same form. Using a hidden HTML form parameter to signal an event The example below shows a form that signals the proceed event when submitted: ]]> Here, Web Flow simply detects the special _eventId parameter and uses its value as the event id. This style should only be considered when there is one event that can be signaled on the form. Using a HTML link to signal an event The example below shows a link that signals the cancel event when activated: Cancel]]> Firing an event results in a HTTP request being sent back to the server. On the server-side, the flow handles decoding the event from within its current view-state. How this decoding process works is specific to the view implementation. Recall a Spring MVC view implementation simply looks for a request parameter named _eventId. If no _eventId parameter is found, the view will look for a parameter that starts with _eventId_ and will use the remaining substring as the event id. If neither cases exist, no flow event is triggered. ././@LongLink0000000000000000000000000000014600000000000011566 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-reference/src/flow-security.xmllibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-reference/src/flow-security.xm0000644000000000000000000002057011360615634030012 0ustar Securing Flows Introduction Security is an important concept for any application. End users should not be able to access any portion of a site simply by guessing the URL. Areas of a site that are sensitive must ensure that only authorized requests are processed. Spring Security is a proven security platform that can integrate with your application at multiple levels. This section will focus on securing flow execution. How do I secure a flow? Securing flow execution is a three step process: Configure Spring Security with authentication and authorization rules Annotate the flow definition with the secured element to define the security rules Add the SecurityFlowExecutionListener to process the security rules. Each of these steps must be completed or else flow security rules will not be applied. The secured element The secured element designates that its containing element should apply the authorization check before fully entering. This may not occur more then once per stage of the flow execution that is secured. Three phases of flow execution can be secured: flows, states and transitions. In each case the syntax for the secured element is identical. The secured element is located inside the element it is securing. For example, to secure a state the secured element occurs directly inside that state: ... ]]> Security attributes The attributes attribute is a comma separated list of Spring Security authorization attributes. Often, these are specific security roles. The attributes are compared against the user's granted attributes by a Spring Security access decision manager. ]]> By default, a role based access decision manager is used to determine if the user is allowed access. This will need to be overridden if your application is not using authorization roles. Matching type There are two types of matching available: any and all. Any, allows access if at least one of the required security attributes is granted to the user. All, allows access only if each of the required security attributes are granted to the user. ]]> This attribute is optional. If not defined, the default value is any. The match attribute will only be respected if the default access decision manager is used. The SecurityFlowExecutionListener Defining security rules in the flow by themselves will not protect the flow execution. A SecurityFlowExecutionListener must also be defined in the webflow configuration and applied to the flow executor. ]]> If access is denied to a portion of the application an AccessDeniedException will be thrown. This exception will later be caught by Spring Security and used to prompt the user to authenticate. It is important that this exception be allowed to travel up the execution stack uninhibited, otherwise the end user may not be prompted to authenticate. Custom Access Decision Managers If your application is using authorities that are not role based, you will need to configure a custom AccessDecisionManager. You can override the default decision manager by setting the accessDecisionManager property on the security listener. Please consult the Spring Security reference documentation to learn more about decision managers. ]]> Configuring Spring Security Spring Security has robust configuration options available. As every application and environment has its own security requirements, the Spring Security reference documentation is the best place to learn the available options. Both the booking-faces and booking-mvc sample applications are configured to use Spring Security. Configuration is needed at both the Spring and web.xml levels. Spring configuration The Spring configuration defines http specifics (such as protected URLs and login/logout mechanics) and the authentication-provider. For the sample applications, a local authentication provider is configured. ]]> web.xml Configuration In the web.xml file, a filter is defined to intercept all requests. This filter will listen for login/logout requests and process them accordingly. It will also catch AccesDeniedExceptions and redirect the user to the login page. springSecurityFilterChain org.springframework.web.filter.DelegatingFilterProxy springSecurityFilterChain /* ]]> ././@LongLink0000000000000000000000000000014500000000000011565 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-reference/src/system-setup.xmllibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-reference/src/system-setup.xml0000644000000000000000000003036411360615632030034 0ustar System Setup Introduction This chapter shows you how to setup the Web Flow system for use in any web environment. webflow-config.xsd Web Flow provides a Spring schema that allows you to configure the system. To use this schema, include it in one of your infrastructure-layer beans files: ]]> Basic system configuration The next section shows the minimal configuration required to set up the Web Flow system in your application. FlowRegistry Register your flows in a FlowRegistry: ]]> FlowExecutor Deploy a FlowExecutor, the central service for executing flows: ]]> See the Spring MVC and Spring Faces sections of this guide on how to integrate the Web Flow system with the MVC and JSF environment, respectively. flow-registry options This section explores flow-registry configuration options. Specifying flow locations Use the location element to specify paths to flow definitions to register. By default, flows will be assigned registry identifiers equal to their filenames minus the file extension, unless a registry bath path is defined. ]]> Assigning custom flow identifiers Specify an id to assign a custom registry identifier to a flow: ]]> Assigning flow meta-attributes Use the flow-definition-attributes element to assign custom meta-attributes to a registered flow: ]]> Registering flows using a location pattern Use the flow-location-patterns element to register flows that match a specific resource location pattern: ]]> Flow location base path Use the base-path attribute to define a base location for all flows in the application. All flow locations are then relative to the base path. The base path can be a resource path such as '/WEB-INF' or a location on the classpath like 'classpath:org/springframework/webflow/samples'. ]]> With a base path defined, the algorithm that assigns flow identifiers changes slightly. Flows will now be assigned registry identifiers equal to the the path segment between their base path and file name. For example, if a flow definition is located at '/WEB-INF/hotels/booking/booking-flow.xml' and the base path is '/WEB-INF' the remaining path to this flow is 'hotels/booking' which becomes the flow id. Directory per flow definition Recall it is a best practice to package each flow definition in a unique directory. This improves modularity, allowing dependent resources to be packaged with the flow definition. It also prevents two flows from having the same identifiers when using the convention. If no base path is not specified or if the flow definition is directly on the base path, flow id assignment from the filename (minus the extension) is used. For example, if a flow definition file is 'booking.xml', the flow identifier is simply 'booking'. Location patterns are particularly powerful when combined with a registry base path. Instead of the flow identifiers becoming '*-flow', they will be based on the directory path. For example: ]]> In the above example, suppose you had flows located in /user/login, /user/registration, /hotels/booking, and /flights/booking directories within WEB-INF, you'd end up with flow ids of user/login, user/registration, hotels/booking, and flights/booking, respectively. Configuring FlowRegistry hierarchies Use the parent attribute to link two flow registries together in a hierarchy. When the child registry is queried, if it cannot find the requested flow it will delegate to its parent. ]]> Configuring custom FlowBuilder services Use the flow-builder-services attribute to customize the services and settings used to build flows in a flow-registry. If no flow-builder-services tag is specified, the default service implementations are used. When the tag is defined, you only need to reference the services you want to customize. ]]> The configurable services are the conversion-service, expression-parser, and view-factory-creator. These services are configured by referencing custom beans you define. For example: ]]> conversion-service Use the conversion-service attribute to customize the ConversionService used by the Web Flow system. Converters are used to convert from one type to another when required during flow execution. The default ConversionService registers converters for your basic object types such as numbers, classes, and enums. expression-parser Use the expression-parser attribute to customize the ExpressionParser used by the Web Flow system. The default ExpressionParser uses the Unified EL if available on the classpath, otherwise OGNL is used. view-factory-creator Use the view-factory-creator attribute to customize the ViewFactoryCreator used by the Web Flow system. The default ViewFactoryCreator produces Spring MVC ViewFactories capable of rendering JSP, Velocity, and Freemarker views. The configurable settings are development. These settings are global configuration attributes that can be applied during the flow construction process. development Set this to true to switch on flow development mode. Development mode switches on hot-reloading of flow definition changes, including changes to dependent flow resources such as message bundles. flow-executor options This section explores flow-executor configuration options. Attaching flow execution listeners Use the flow-execution-listeners element to register listeners that observe the lifecycle of flow executions: ]]> You may also configure a listener to observe only certain flows: ]]> Tuning FlowExecution persistence Use the flow-execution-repository element to tune flow execution persistence settings: ]]> max-executions Tune the max-executions attribute to place a cap on the number of flow executions that can be created per user session. max-execution-snapshots Tune the max-execution-snapshots attribute to place a cap on the number of history snapshots that can be taken per flow execution. To disable snapshotting, set this value to 0. To enable an unlimited number of snapshots, set this value to -1. libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-reference/src/spring-js.xml0000644000000000000000000003350111360615644027265 0ustar Spring JavaScript Quick Reference Introduction Spring Javascript (spring-js) is a lightweight abstraction over common JavaScript toolkits such as Dojo. It aims to provide a common client-side programming model for progressively enhancing a web page with rich widget behavior and Ajax remoting. Use of the Spring JS API is demonstrated in the the Spring MVC + Web Flow version of the Spring Travel reference application. In addition, the JSF components provided as part of the Spring Faces library build on Spring.js. Serving Javascript Resources Spring JS provides a generic ResourceServlet to serve web resources such as JavaScript and CSS files from jar files, as well as the webapp root directory. This servlet provides a convenient way to serve Spring.js files to your pages. To deploy this servlet, declare the following in web.xml: Resource Servlet org.springframework.js.resource.ResourceServlet Resource Servlet /resources/* ]]> Including Spring Javascript in a Page Spring JS is designed such that an implementation of its API can be built for any of the popular Javascript toolkits. The initial implementation of Spring.js builds on the Dojo toolkit. Using Spring Javascript in a page requires including the underlying toolkit as normal, the Spring.js base interface file, and the Spring-(library implementation).js file for the underlying toolkit. As an example, the following includes obtain the Dojo implementation of Spring.js using the ResourceServlet: "> ]]> When using the widget system of an underlying library, typically you must also include some CSS resources to obtain the desired look and feel. For the booking-mvc reference application, Dojo's tundra.css is included: " />]]> Spring Javascript Decorations A central concept in Spring Javascript is the notion of applying decorations to existing DOM nodes. This technique is used to progressively enhance a web page such that the page will still be functional in a less capable browser. The addDecoration method is used to apply decorations. The following example illustrates enhancing a Spring MVC <form:input> tag with rich suggestion behavior: ]]> The ElementDecoration is used to apply rich widget behavior to an existing DOM node. This decoration type does not aim to completely hide the underlying toolkit, so the toolkit's native widget type and attributes are used directly. This approach allows you to use a common decoration model to integrate any widget from the underlying toolkit in a consistent manner. See the booking-mvc reference application for more examples of applying decorations to do things from suggestions to client-side validation. When using the ElementDecoration to apply widgets that have rich validation behavior, a common need is to prevent the form from being submitted to the server until validation passes. This can be done with the ValidateAllDecoration: ]]> This decorates the "Proceed" button with a special onclick event handler that fires the client side validators and does not allow the form to submit until they pass successfully. An AjaxEventDecoration applies a client-side event listener that fires a remote Ajax request to the server. It also auto-registers a callback function to link in the response: Previous ]]> This decorates the onclick event of the "Previous Results" link with an Ajax call, passing along a special parameter that specifies the fragment to be re-rendered in the response. Note that this link would still be fully functional if Javascript was unavailable in the client. (See the section on Handling Ajax Requests for details on how this request is handled on the server.) It is also possible to apply more than one decoration to an element. The following example shows a button being decorated with Ajax and validate-all submit suppression: ]]> It is also possible to apply a decoration to multiple elements in a single statement using Dojo's query API. The following example decorates a set of checkbox elements as Dojo Checkbox widgets: ]]> Handling Ajax Requests Spring Javascript's client-side Ajax response handling is built upon the notion of receiving "fragments" back from the server. These fragments are just standard HTML that is meant to replace portions of the existing page. The key piece needed on the server is a way to determine which pieces of a full response need to be pulled out for partial rendering. In order to be able to render partial fragments of a full response, the full response must be built using a templating technology that allows the use of composition for constructing the response, and for the member parts of the composition to be referenced and rendered individually. Spring Javascript provides some simple Spring MVC extensions that make use of Tiles to achieve this. The same technique could theoretically be used with any templating system supporting composition. Spring Javascript's Ajax remoting functionality is built upon the notion that the core handling code for an Ajax request should not differ from a standard browser request, thus no special knowledge of an Ajax request is needed directly in the code and the same hanlder can be used for both styles of request. Providing a Library-Specific AjaxHandler The key interface for integrating various Ajax libraries with the Ajax-aware behavior of Web Flow (such as not redirecting for a partial page update) is org.springframework.js.AjaxHandler. A SpringJavascriptAjaxHandler is configured by default that is able to detect an Ajax request submitted via the Spring JS client-side API and can respond appropriately in the case where a redirect is required. In order to integrate a different Ajax library (be it a pure JavaScript library, or a higher-level abstraction such as an Ajax-capable JSF component library), a custom AjaxHandler can be injected into the FlowHandlerAdapter or FlowController. Handling Ajax Requests with Spring MVC Controllers In order to handle Ajax requests with Spring MVC controllers, all that is needed is the configuration of the provided Spring MVC extensions in your Spring application context for rendering the partial response (note that these extensions require the use of Tiles for templating): ]]> This configures the AjaxUrlBasedViewResolver which in turn interprets Ajax requests and creates FlowAjaxTilesView objects to handle rendering of the appropriate fragments. Note that FlowAjaxTilesView is capable of handling the rendering for both Web Flow and pure Spring MVC requests. The fragments correspond to individual attributes of a Tiles view definition. For example, take the following Tiles view definition: ]]> An Ajax request could specify the "body", "hotelSearchForm" or "bookingsTable" to be rendered as fragments in the request. Handling Ajax Requests with Spring MVC + Spring Web Flow Spring Web Flow handles the optional rendering of fragments directly in the flow definition language through use of the render element. The benefit of this approach is that the selection of fragments is completely decoupled from client-side code, such that no special parameters need to be passed with the request the way they currently must be with the pure Spring MVC controller approach. For example, if you wanted to render the "hotelSearchForm" fragment from the previous example Tiles view into a rich Javascript popup: ]]> ././@LongLink0000000000000000000000000000014600000000000011566 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-reference/src/upgrade-guide.xmllibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-reference/src/upgrade-guide.xm0000644000000000000000000003175511360615632027725 0ustar Upgrading from 1.0 Introduction This chapter shows you how to upgrade existing Web Flow 1 application to Web Flow 2. Flow Definition Language The core concepts behind the flow definition language have not changed between Web Flow 1 and 2. However, some of the element and attribute names have changed. These changes allow for the language to be both more concise and expressive. A complete list of mapping changes is available as an appendix. Flow Definition Updater Tool An automated tool is available to aid in the conversion of existing 1.x flows to the new 2.x style. The tool will convert all the old tag names to their new equivalents, if needed. While the tool will make a best effort attempt at conversion, there is not a one-to-one mapping for all version 1 concepts. If the tool was unable to convert a portion of the flow, it will be marked with a WARNING comment in the resulting flow. The conversion tool requires spring-webflow.jar, spring-core.jar and an XSLT 1.0 engine. Saxon 6.5.5 is recommended. The tool can be run from the command line with the following command. Required libraries must be available on the classpath. The source must be a single flow to convert. The resulting converted flow will be sent to standard output. java org.springframework.webflow.upgrade.WebFlowUpgrader flow-to-upgrade.xml Flow Definition Updater Tool Warnings argument parameter-type no longer supported Bean actions have been deprecated in favor of EL based evaluate expressions. The EL expression is able to accept method parameters directly, so there is no longer a need for the argument tag. A side effect of this change is that method arguments must be of the correct type before invoking the action. inline-flow is no longer supported Inline flows are no longer supported. The contents of the inline flow must be moved into a new top-level flow. The inline flow's content has been converted for your convenience. mapping target-collection is no longer supported Output mappings can no longer add an item to a collection. Only assignment is supported. var bean is no longer supported The var bean attribute is no longer needed. All spring beans can be resolved via EL. var scope is no longer supported The var element will place all variable into flow scope. Conversation scope was previously allowed. EL Expressions EL expressions are used heavily throughout the flow definition language. Many of the attributes that appear to be plain text are actually interpreted as EL. The standard EL delimiters (either ${} or #{}) are not necessary and will often cause an exception if they are included. EL delimiters should be removed where necessary by the updater tool. Web Flow Configuration In Web Flow 1 there were two options available for configuring Web Flow, one using standard spring bean XML and the other using the webflow-config-1.0 schema. The schema configuration option simplifies the configuration process by keeping long internal class names hidden and enabling contextual auto-complete. The schema configuration option is the only way to configure Web Flow 2. Web Flow Bean Configuration The FactoryBean bean XML configuration method used in Web Flow 1 is no longer supported. The schema configuration method should be used instead. In particular beans defining FlowExecutorFactoryBean and XmlFlowRegistryFactoryBean should be updated. Continue reading Web Flow Schema Configuration for details. Web Flow Schema Configuration The webflow-config configuration schema has also changed slightly from version 1 to 2. The simplest way to update your application is modify the version of the schema to 2.0 then fix any errors in a schema aware XML editor. The most common change is add 'flow-' to the beginning of the elements defined by the schema. ]]> flow-executor The flow executor is the core Web Flow configuration element. This element replaces previous FlowExecutorFactoryBean bean definitions. ]]> flow-execution-listeners Flow execution listeners are also defined in the flow executor. Listeners are defined using standard bean definitions and added by reference. ]]> flow-registry The flow-registry contains a set of flow-locations. Every flow definition used by Web Flow must be added to the registry. This element replaces previous XmlFlowRegistryFactoryBean bean definitions. ]]> Flow Controller The package name for flow controllers has changed from org.springframework.webflow.executor.mvc.FlowController and is now org.springframework.webflow.mvc.servlet.FlowController for Servlet MVC requests. The portlet flow controller org.springframework.webflow.executor.mvc.PortletFlowController has been replaced by a flow handler adapter available at org.springframework.webflow.mvc.portlet.FlowHandlerAdapter. They will need to be updated in the bean definitions. Flow URL Handler The default URL handler has changed in Web Flow 2. The flow identifier is now derived from the URL rather then passed explicitly. In order to maintain comparability with existing views and URL structures a WebFlow1FlowUrlHandler is available. ]]> View Resolution Web Flow 2 by default will both select and render views. View were previously selected by Web Flow 1 and then rendered by an external view resolver. In order for version 1 flows to work in Web Flow 2 the default view resolver must be overridden. A common use case is to use Apache Tiles for view resolution. The following configuration will replace the default view resolver with a Tiles view resolver. The tilesViewResolver in this example can be replaced with any other view resolver. ... ]]> New Web Flow Concepts Automatic Model Binding Web Flow 1 required Spring MVC based flows to manually call FormAction methods, notably: setupForm, bindAndValidate to process form views. Web Flow 2 now provides automatic model setup and binding using the model attribute for view-states. Please see the Binding to a Model section for details. OGNL vs EL Web Flow 1 used OGNL exclusively for expressions within the flow definitions. Web Flow 2 adds support for Unified EL. United EL is used when it is available, OGNL will continue to be used when a Unified EL implementation is not available. Please see the Expression Language chapter for details. Flash Scope Flash scope in Web Flow 1 lived across the current request and into the next request. This was conceptually similar to Web Flow 2's view scope concept, but the semantics were not as well defined. In Web Flow 2, flash scope is cleared after every view render. This makes flashScope semantics in Web Flow consistent with other web frameworks. Spring Faces Web Flow 2 offers significantly improved integration with JavaServerFaces. Please see the JSF Integration chapter for details. External Redirects External redirects in Web Flow 1 were always considered context relative. In Web Flow 2, if the redirect URL begins with a slash, it is considered servlet-relative instead of context-relative. URLs without a leading slash are still context relative. libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-reference/src/el.xml0000644000000000000000000002770211360615640025753 0ustar Expression Language (EL) Introduction Web Flow uses EL to access its data model and invoke actions. This chapter will familiarize you with the EL syntax, and special EL variables you can reference from your flow definition. Supported EL implementations Unified EL Web Flow attempts to use the Unified EL by default. jboss-el is currently the default EL implementation. When found in your classpath along with the el-api, it will be used automatically. You can find the JBoss EL jar in the SpringSource Bundle Repository. The el-api dependency is typically provided by your web container. Tomcat 6 includes it, for example. OGNL OGNL is the other EL supported by Web Flow 2. OGNL is the EL most familiar to Web Flow version 1.0 users. To use ognl, simply include ognl in your classpath instead of jboss-el. Please refer to the OGNL language guide for specifics on its EL syntax. EL portability In general, you will find the Unified EL and OGNL have a very similar syntax. For basic variable resolution, property access, and method invocation the syntax is identical. We recommend adhering to Unified EL syntax whenever possible, and only relying on proprietary EL features when needed. EL usage EL is used for many things within a flow, including: Accessing data provided by the client, such as flow input attributes and request parameters. Accessing internal data structures such as flowScope. Invoking methods on Spring beans. Resolving constructs such as state transition criteria, subflow ids, and view names. Views rendered by flows typically access flow data structures using EL as well. Expression types There are basically two types of expressions in Web Flow. Standard eval expressions The first, and most common, type of expression, is the standard eval expression. Such expressions are dynamically evaluated by the EL and should not be enclosed in delimiters like ${} or #{}. For example: ]]> The expression above is a standard expression that invokes the nextPage method on the searchCriteria variable when evaluated. Attempting to enclose this expression in special eval delimiters like ${} or #{} will result in an IllegalArgumentException. We view use of special eval delimiters as redundant in this context, as the only acceptable value for the expression attribute is a single eval expression string. Template expressions The second type of expression is a "template" expression. Such expressions allow a mixing of literal text with one or more eval blocks. Each eval block is explictly delimited with the ${} delimiters. For example: ]]> The expression above is a template expression. The result of evaluation will be a string that concatenates the literal text error- with the result of evaluating externalContext.locale. As you can see, explicit delimiters are necessary here to demarcate eval blocks within the template. See the Web Flow XML schema for a complete listing of the XML attributes that accept standard expressions and template expressions. Special EL variables There are several implicit variables you may reference from within a flow. These variables are discussed in this section. flowScope Use flowScope to assign a flow variable. Flow scope gets allocated when a flow starts and destroyed when the flow ends. With the default implementation, any objects stored in flow scope need to be Serializable. ]]> viewScope Use viewScope to assign a view variable. View scope gets allocated when a view-state enters and destroyed when the state exits. View scope is only referenceable from within a view-state. With the default implementation, any objects stored in view scope need to be Serializable. ]]> requestScope Use requestScope to assign a request variable. Request scope gets allocated when a flow is called and destroyed when the flow returns. ]]> flashScope Use flashScope to assign a flash variable. Flash scope gets allocated when a flow starts, cleared after every view render, and destroyed when the flow ends. With the default implementation, any objects stored in flash scope need to be Serializable. ]]> conversationScope Use conversationScope to assign a conversation variable. Conversation scope gets allocated when a top-level flow starts and destroyed when the top-level flow ends. Conversation scope is shared by a top-level flow and all of its subflows. With the default implementation, conversation scoped objects are stored in the HTTP session and should generally be Serializable to account for typical session replication. ]]> requestParameters Use requestParameters to access a client request parameter: ]]> currentEvent Use currentEvent to access attributes of the current Event: ]]> currentUser Use currentUser to access the authenticated Principal: ]]> messageContext Use messageContext to access a context for retrieving and creating flow execution messages, including error and success messages. See the MessageContext Javadocs for more information. ]]> resourceBundle Use resourceBundle to access a message resource. ]]> flowRequestContext Use flowRequestContext to access the RequestContext API, which is a representation of the current flow request. See the API Javadocs for more information. flowExecutionContext Use flowExecutionContext to access the FlowExecutionContext API, which is a representation of the current flow state. See the API Javadocs for more information. flowExecutionUrl Use flowExecutionUrl to access the context-relative URI for the current flow execution view-state. externalContext Use externalContext to access the client environment, including user session attributes. See the ExternalContext API JavaDocs for more information. ]]> Scope searching algorithm When assigning a variable in one of the flow scopes, referencing that scope is required. For example: ]]> When simply accessing a variable in one of the scopes, referencing the scope is optional. For example: ]]> If no scope is specified, like in the use of booking above, a scope searching algorithm will be employed. The algorithm will look in request, flash, view, flow, and conversation scope for the variable. If no such variable is found, an EvaluationException will be thrown. ././@LongLink0000000000000000000000000000016100000000000011563 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-reference/src/flow-managed-persistence.xmllibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-reference/src/flow-managed-per0000644000000000000000000001033311360615646027677 0ustar Flow Managed Persistence Introduction Most applications access data in some way. Many modify data shared by multiple users and therefore require transactional data access properties. They often transform relational data sets into domain objects to support application processing. Web Flow offers "flow managed persistence" where a flow can create, commit, and close a object persistence context for you. Web Flow integrates both Hibernate and JPA object persistence technologies. Apart from flow-managed persistence, there is the pattern of fully encapsulating PersistenceContext management within the service layer of your application. In that case, the web layer does not get involved with persistence, instead it works entirely with detached objects that are passed to and returned by your service layer. This chapter will focus on the flow-managed persistence, exploring how and when to use this feature. FlowScoped PersistenceContext This pattern creates a PersistenceContext in flowScope on flow startup, uses that context for data access during the course of flow execution, and commits changes made to persistent entities at the end. This pattern provides isolation of intermediate edits by only committing changes to the database at the end of flow execution. This pattern is often used in conjunction with an optimistic locking strategy to protect the integrity of data modified in parallel by multiple users. To support saving and restarting the progress of a flow over an extended period of time, a durable store for flow state must be used. If a save and restart capability is not required, standard HTTP session-based storage of flow state is sufficient. In that case, session expiration or termination before commit could potentially result in changes being lost. To use the FlowScoped PersistenceContext pattern, first mark your flow as a persistence-context: ]]> Then configure the correct FlowExecutionListener to apply this pattern to your flow. If using Hibernate, register the HibernateFlowExecutionListener. If using JPA, register the JpaFlowExecutionListener. ]]> To trigger a commit at the end, annotate your end-state with the commit attribute: ]]> That is it. When your flow starts, the listener will handle allocating a new EntityManager in flowScope. Reference this EntityManager at anytime from within your flow by using the special persistenceContext variable. In addition, any data access that occurs using a Spring managed data access object will use this EntityManager automatically. Such data access operations should always execute non transactionally or in read-only transactions to maintain isolation of intermediate edits. libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-reference/src/actions.xml0000644000000000000000000004270711360615632027016 0ustar Executing actions Introduction This chapter shows you how to use the action-state element to control the execution of an action at a point within a flow. It will also show how to use the decision-state element to make a flow routing decision. Finally, several examples of invoking actions from the various points possible within a flow will be discussed. Defining action states Use the action-state element when you wish to invoke an action, then transition to another state based on the action's outcome: ]]> The full example below illustrates a interview flow that uses the action-state above to determine if more answers are needed to complete the interview: ]]> Defining decision states Use the decision-state element as an alternative to the action-state to make a routing decision using a convenient if/else syntax. The example below shows the moreAnswersNeeded state above now implemented as a decision state instead of an action-state: ]]> Action outcome event mappings Actions often invoke methods on plain Java objects. When called from action-states and decision-states, these method return values can be used to drive state transitions. Since transitions are triggered by events, a method return value must first be mapped to an Event object. The following table describes how common return value types are mapped to Event objects: Action method return value to event id mappings Method return type Mapped Event identifier expression java.lang.String the String value java.lang.Boolean yes (for true), no (for false) java.lang.Enum the Enum name any other type success
This is illustrated in the example action state below, which invokes a method that returns a boolean value: ]]>
Action implementations While writing action code as POJO logic is the most common, there are several other action implementation options. Sometimes you need to write action code that needs access to the flow context. You can always invoke a POJO and pass it the flowRequestContext as an EL variable. Alternatively, you may implement the Action interface or extend from the MultiAction base class. These options provide stronger type safety when you have a natural coupling between your action code and Spring Web Flow APIs. Examples of each of these approaches are shown below. Invoking a POJO action ]]> Invoking a custom Action implementation ]]> Invoking a MultiAction implementation ]]> Action exceptions Actions often invoke services that encapsulate complex business logic. These services may throw business exceptions that the action code should handle. Handling a business exception with a POJO action The following example invokes an action that catches a business exception, adds a error message to the context, and returns a result event identifier. The result is treated as a flow event which the calling flow can then respond to. ]]> Handling a business exception with a MultiAction The following example is functionally equivlant to the last, but implemented as a MultiAction instead of a POJO action. The MultiAction requires its action methods to be of the signature Event ${methodName}(RequestContext), providing stronger type safety, while a POJO action allows for more freedom. ]]> Other Action execution examples on-start The following example shows an action that creates a new Booking object by invoking a method on a service: ]]> on-entry The following example shows a state entry action that sets the special fragments variable that causes the view-state to render a partial fragment of its view: ]]> on-exit The following example shows a state exit action that releases a lock on a record being edited: ]]> on-end The following example shows the equivalent object locking behavior using flow start and end actions: ]]> on-render The following example shows a render action that loads a list of hotels to display before the view is rendered: ]]> on-transition The following example shows a transition action adds a subflow outcome event attribute to a collection: ]]> Named actions The following example shows how to execute a chain of actions in an action-state. The name of each action becomes a qualifier for the action's result event. ]]> In this example, the flow will transition to showResults when thingTwo completes successfully. Streaming actions Sometimes an Action needs to stream a custom response back to the client. An example might be a flow that renders a PDF document when handling a print event. This can be achieved by having the action stream the content then record "Response Complete" status on the ExternalContext. The responseComplete flag tells the pausing view-state not to render the response because another object has taken care of it. ]]> In this example, when the print event is raised the flow will call the printBoardingPassAction. The action will render the PDF then mark the response as complete. Handling File Uploads Another common task is to use Web Flow to handle multipart file uploads in combination with Spring MVC's MultipartResolver. Once the resolver is set up correctly as described here and the submitting HTML form is configured with enctype="multipart/form-data", you can easily handle the file upload in a transition action. Given a form such as: Select file: ]]> and a backing object for handling the upload such as: you can process the upload using a transition action as in the following example: ]]> The MultipartFile will be bound to the FileUploadHandler bean as part of the normal form binding process so that it will be available to process during the execution of the transition action.
././@LongLink0000000000000000000000000000016700000000000011571 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-reference/src/flow-definition-field-mappings.xmllibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-reference/src/flow-definition-0000644000000000000000000005570311360615642027732 0ustar Flow Definition Language 1.0 to 2.0 Mappings The flow definition language has changed since the 1.0 release. This is a listing of the language elements in the 1.0 release, and how they map to elements in the 2.0 release. While most of the changes are semantic, there are a few structural changes. Please see the upgrade guide for more details about changes between Web Flow 1.0 and 2.0. Mappings SWF 1.0 SWF 2.0 Comments action * use <evaluate /> bean * name * method * action-state action-state id id * parent argument * use <evaluate expression="func(arg1, arg2, ...)"/> expression parameter-type attribute attribute name name type type value value attribute-mapper * input and output elements can be in flows or subflows directly bean * now subflow-attribute-mapper attribute on subflow-state bean-action * use <evaluate /> bean * name * method * decision-state decision-state id id * parent end-actions on-end end-state end-state id id view view * parent * commit entry-actions on-entry evaluate-action evaluate expression expression name * use <evaluate ...> <attribute name=â€name†value="..." /> </evaluate> * result * result-type evaluation-result * use <evaluate result="..." /> name * scope * exception-handler exception-handler bean bean exit-actions on-exit flow flow * start-state * parent * abstract global-transitions global-transitions if if test test then then else else import bean-import resource resource inline-flow * convert to new top-level flow id * input-attribute input name name scope * prefix name with scope <input name="flowScope.foo" /> required required * type * value input-mapper * inputs can be in flows and subflows directly mapping input or output source name or value name when in flow element, value when in subflow-state element target name or value value when in flow element, name when in subflow-state element target-collection * no longer supported from * detected automatically to type required required method-argument * use <evaluate expression="func(arg1, arg2, ...)"/> method-result * use <evaluate result="..." /> name * scope * output-attribute output name name scope * prefix name with scope <output name="flowScope.foo" /> required required * type * value output-mapper * output can be in flows and subflows directly render-actions on-render set set attribute name scope * prefix name with scope <set name="flowScope.foo" /> value value name * use <set ...> <attribute name=â€name†value="..." /> </set> * type start-actions on-start start-state * now <flow start-state="...">, or defaults to the first state in the flow idref * subflow-state subflow-state id id flow subflow * parent * subflow-attribute-mapper transition transition on on on-exception on-exception to to * bind value value var var name name class class scope * always flow scope bean * all Spring beans can be resolved with EL view-state view-state id id view view * parent * redirect * popup * model * history * persistence-context * render * fragments * secured * attributes * match
libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-reference/src/overview.xml0000644000000000000000000003252311360615632027217 0ustar Preface Many web applications require the same sequence of steps to execute in different contexts. Often these sequences are merely components of a larger task the user is trying to accomplish. Such a reusable sequence is called a flow. Consider a typical shopping cart application. User registration, login, and cart checkout are all examples of flows that can be invoked from several places in this type of application. Spring Web Flow is the module of Spring for implementing flows. The Web Flow engine plugs into the Spring Web MVC platform and provides declarative flow definition language. This reference guide shows you how to use and extend Spring Web Flow. Introduction What this guide covers This guide covers all aspects of Spring Web Flow. It covers implementing flows in end-user applications and working with the feature set. It also covers extending the framework and the overall architectural model. What Web Flow requires to run Java 1.4 or higher Spring 2.5.6 or higher Where to get support Professional from-the-source support on Spring Web Flow is available from SpringSource, the company behind Spring, and Ervacon, operated by Web Flow project co-founder Erwin Vervaet Where to follow development You can help make Web Flow best serve the needs of the Spring community by interacting with developers at the Spring Community Forums. Report bugs and influence the Web Flow project roadmap using the Spring Issue Tracker. Subscribe to the Spring Community Portal for the latest Spring news and announcements. Visit the Web Flow Project Home for more resources on the project. How to access Web Flow artifacts from Maven Central Each jar in the Web Flow distribution is available in the Maven Central Repository. This allows you to easily integrate Web Flow into your application if you are already using Maven as the build system for your web development project. To access Web Flow jars from Maven Central, declare the following dependencies in your pom: org.springframework.webflow spring-binding 2.0.9.RELEASE org.springframework.webflow spring-js 2.0.9.RELEASE org.springframework.webflow spring-webflow 2.0.9.RELEASE ]]> And if using JavaServerFaces: org.springframework.webflow spring-faces 2.0.9.RELEASE ]]> How to access Web Flow artifacts from the SpringSource Bundle Repository Each jar in the Web Flow distribution is also available in the SpringSource Enterprise Bundle Repository. Use this repository when you wish to run Spring Web Flow in an OSGi environment such as the SpringSource dm Server. All jars obtained from the SpringSource Bundle Repository are OSGi-ready. Accessing Web Flow bundles with Maven To access bundles using Maven, add the following repositories to your Maven pom: com.springsource.repository.bundles.release SpringSource Enterprise Bundle Repository - SpringSource Releases http://repository.springsource.com/maven/bundles/release com.springsource.repository.bundles.external SpringSource Enterprise Bundle Repository - External Releases http://repository.springsource.com/maven/bundles/external ]]> Then declare the following dependencies: org.springframework.webflow org.springframework.binding 2.0.9.RELEASE org.springframework.webflow org.springframework.js 2.0.9.RELEASE org.springframework.webflow org.springframework.webflow 2.0.9.RELEASE ]]> And if using JavaServerFaces: org.springframework.webflow org.springframework.faces 2.0.9.RELEASE ]]> Note the Web Flow artifacts in the SpringSource Bundle Repository are indexed under different ids because their transitive dependencies are different than the Maven Central artifacts. The difference is the transitive jars such as commons-logging have been patched by SpringSource to add the metadata required to make them OSGi-compatible. Accessing Web Flow bundles with Ivy To access bundles using Ivy, add the following repositories to your Ivy config: ]]> Then declare the following dependencies: runtime" /> ]]> And if using JavaServerFaces: runtime" />]]> Accessing the dm Server Web Flow library A dm Server library for Web Flow is also available if you are deploying to a dm Server environment. Import this library in your MANIFEST.mf to automatically import all Web Flow bundles. To access the library, add the following repository: com.springsource.repository.libraries.release SpringSource Enterprise Bundle Repository - SpringSource Library Releases http://repository.springsource.com/maven/libraries/release ]]> And declare the following dependency: org.springframework.webflow org.springframework.webflow-library libd 2.0.9.RELEASE ]]> How to access nightly builds Nightly snapshots of Web Flow development branches are available using Maven, and distribution zips are also available for download. These snapshot builds are useful for testing out fixes you depend on in advance of the next release, and provide a convenient way for you to provide feedback about whether a fix meets your needs. If using Maven, you may obtain snapshots from either the SpringSource-managed Maven Central-compatible repository or the SpringSource Enterprise Bundle Repository. Use the Maven Central-compatible snapshot repository when your project obtains its other open source dependencies from Maven Central. Use the Spring Source Enterprise Bundle Snapshot Repository when you wish to run Web Flow in an OSGi environment. Accessing snapshots from the Maven-central compatible repository Add the following repository your pom: org.springsource.maven.snapshot SpringSource Maven Central-compatible Snapshot Repository http://maven.springframework.org/snapshot ]]> Then declare the following dependencies: org.springframework.webflow spring-binding x.y.z.BUILD-SNAPSHOT org.springframework.webflow spring-js x.y.z.BUILD-SNAPSHOT org.springframework.webflow spring-webflow x.y.z.BUILD-SNAPSHOT ]]> And if using JavaServerFaces: org.springframework.webflow spring-faces x.y.z.BUILD-SNAPSHOT ]]> Accessing snapshots from the SpringSource Enterprise Bundle Repository Add the following repository your pom: com.springsource.repository.bundles.snapshot SpringSource Enterprise Bundle Snapshot Repository http://repository.springsource.com/maven/bundles/snapshot ]]> Then declare the following dependencies: org.springframework.webflow org.springframework.binding x.y.z.BUILD-SNAPSHOT org.springframework.webflow org.springframework.js x.y.z.BUILD-SNAPSHOT org.springframework.webflow org.springframework.webflow x.y.z.BUILD-SNAPSHOT ]]> And if using JavaServerFaces: org.springframework.webflow org.springframework.faces x.y.z.BUILD-SNAPSHOT ]]> Accessing snapshot distribution archives Get the snapshot zip with the most recent CI build number from the Web Flow snapshot download area. ././@LongLink0000000000000000000000000000015100000000000011562 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-reference/src/flow-inheritance.xmllibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-reference/src/flow-inheritance0000644000000000000000000001560511360615640030011 0ustar Flow Inheritance Introduction Flow inheritance allows one flow to inherit the configuration of another flow. Inheritance can occur at both the flow and state levels. A common use case is for a parent flow to define global transitions and exception handlers, then each child flow can inherit those settings. In order for a parent flow to be found, it must be added to the flow-registry just like any other flow. Is flow inheritance like Java inheritance? Flow inheritance is similar to Java inheritance in that elements defined in a parent are exposed via the child, however, there are key differences. A child flow cannot override an element from a parent flow. Similar elements between the parent and child flows will be merged. Unique elements in the parent flow will be added to the child. A child flow can inherit from multiple parent flows. Java inheritance is limited to a single class. Types of Flow Inheritance Flow level inheritance Flow level inheritance is defined by the parent attribute on the flow element. The attribute contains a comma separated list of flow identifiers to inherit from. The child flow will inherit from each parent in the order it is listed adding elements and content to the resulting flow. The resulting flow from the first merge will be considered the child in the second merge, and so on. ]]> State level inheritance State level inheritance is similar to flow level inheritance, except only one state inherits from the parent, instead of the entire flow. Unlike flow inheritance, only a single parent is allowed. Additionally, the identifier of the flow state to inherit from must also be defined. The identifiers for the flow and the state within that flow are separated by a #. The parent and child states must be of the same type. For instance a view-state cannot inherit from an end-state, only another view-state. ]]> Abstract flows Often parent flows are not designed to be executed directly. In order to protect these flows from running, they can be marked as abstract. If an abstract flow attempts to run, a FlowBuilderException will be thrown. ]]> Inheritance Algorithm When a child flow inherits from it's parent, essentially what happens is that the parent and child are merged together to create a new flow. There are rules for every element in the Web Flow definition language that govern how that particular element is merged. There are two types of elements: mergeable and non-mergeable. Mergeable elements will always attempt to merge together if the elements are similar. Non-mergeable elements in a parent or child flow will always be contained in the resulting flow intact. They will not be modified as part of the merge process. Paths to external resources in the parent flow should be absolute. Relative paths will break when the two flows are merged unless the parent and child flow are in the same directory. Once merged, all relative paths in the parent flow will become relative to the child flow. Mergeable Elements If the elements are of the same type and their keyed attribute are identical, the content of the parent element will be merged with the child element. The merge algorithm will continue to merge each sub-element of the merging parent and child. Otherwise the parent element is added as a new element to the child. In most cases, elements from a parent flow that are added will be added after elements in the child flow. Exceptions to this rule include action elements (evaluate, render and set) which will be added at the beginning. This allows for the results of parent actions to be used by child actions. Mergeable elements are: action-state: id attribute: name decision-state: id end-state: id flow: always merges if: test on-end: always merges on-entry: always merges on-exit: always merges on-render: always merges on-start: always merges input: name output: name secured: attributes subflow-state: id transition: on and on-exception view-state: id Non-mergeable Elements Non-mergeable elements are: bean-import evaluate exception-handler persistence-context render set var ././@LongLink0000000000000000000000000000016100000000000011563 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-reference/src/spring-webflow-reference.xmllibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-reference/src/spring-webflow-r0000644000000000000000000000434411360615640027755 0ustar ]> Spring Web Flow Reference Guide Spring Web Flow Spring Web Flow Version 2.0.9 Keith Donald Erwin Vervaet Jeremy Grelle Scott Andrews Rossen Stoyanchev Copies of this document may be made for your own use and for distribution to others, provided that you do not charge any fee for such copies and further provided that each copy contains this Copyright Notice, whether distributed in print or electronically. &overview; &defining-flows; ⪙ &views; &actions; &flow-managed-persistence; &flow-security; &flow-inheritance; &system-setup; &spring-mvc; &spring-js; &spring-faces; &portlet; &testing; &upgrade-guide; &flow-definition-field-mappings; libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-reference/src/views.xml0000644000000000000000000007661111360615636026520 0ustar Rendering views Introduction This chapter shows you how to use the view-state element to render views within a flow. Defining view states Use the view-state element to define a step of the flow that renders a view and waits for a user event to resume: ]]> By convention, a view-state maps its id to a view template in the directory where the flow is located. For example, the state above might render /WEB-INF/hotels/booking/enterBookingDetails.xhtml if the flow itself was located in the /WEB-INF/hotels/booking directory. Below is a sample directory structure showing views and other resources like message bundles co-located with their flow definition: Flow Packaging Specifying view identifiers Use the view attribute to specify the id of the view to render explicitly. Flow relative view ids The view id may be a relative path to view resource in the flow's working directory: ]]> Absolute view ids The view id may be a absolute path to a view resource in the webapp root directory: ]]> Logical view ids With some view frameworks, such as Spring MVC's view framework, the view id may also be a logical identifier resolved by the framework: ]]> See the Spring MVC integration section for more information on how to integrate with the MVC ViewResolver infrastructure. View scope A view-state allocates a new viewScope when it enters. This scope may be referenced within the view-state to assign variables that should live for the duration of the state. This scope is useful for manipulating objects over a series of requests from the same view, often Ajax requests. A view-state destroys its viewScope when it exits. Allocating view variables Use the var tag to declare a view variable. Like a flow variable, any @Autowired references are automatically restored when the view state resumes. ]]> Assigning a viewScope variable Use the on-render tag to assign a variable from an action result before the view renders: ]]> Manipulating objects in view scope Objects in view scope are often manipulated over a series of requests from the same view. The following example pages through a search results list. The list is updated in view scope before each render. Asynchronous event handlers modify the current data page, then request re-rendering of the search results fragment. ]]> Executing render actions Use the on-render element to execute one or more actions before view rendering. Render actions are executed on the initial render as well as any subsequent refreshes, including any partial re-renderings of the view. ]]> Binding to a model Use the model attribute to declare a model object the view binds to. This attribute is typically used in conjunction with views that render data controls, such as forms. It enables form data binding and validation behaviors to be driven from metadata on your model object. The following example declares an enterBookingDetails state manipulates the booking model: ]]> The model may be an object in any accessible scope, such as flowScope or viewScope. Specifying a model triggers the following behavior when a view event occurs: View-to-model binding. On view postback, user input values are bound to model object properties for you. Model validation. After binding, if the model object requires validation that validation logic will be invoked. For a flow event to be generated that can drive a view state transition, model binding must complete successfully. If model binding fails, the view is re-rendered to allow the user to revise their edits. Performing type conversion When a model binding occurs during view postback, the binding system will attempt to convert the input value to the type of the target model property if necessary. Default Converters are registered for common types such as Numbers, primitives, enums, and Dates and are applied automatically. Users also have the ability to register their own converters for user-defined types, and to override the default Converters. Implementing a Converter To implement your own Converter, implement the org.springframework.binding.convert.converters.TwoWayConverter interface. A convenient StringToObject base class has been provided to simplify the implementation of this interface for converters that convert from a user input String to a user-defined Object and back. Simply extend from this class and override these two methods: protected abstract Object toObject(String string, Class targetClass) throws Exception; protected abstract String toString(Object object) throws Exception; toObject(String, Class) should convert from the input string to your object's type, and toString(Object) should do the reverse. The following example shows a Converter that converts from String to a MonetaryAmount for working with currency values: public class StringToMonetaryAmount extends StringToObject { public StringToMonetaryAmount() { super(MonetaryAmount.class); } @Override protected Object toObject(String string, Class targetClass) { return MonetaryAmount.valueOf(string); } @Override protected String toString(Object object) { MonetaryAmount amount = (MonetaryAmount) object; return amount.toString(); } } Review the pre-built converters in the org.springframework.binding.convert.converters package to see more examples of Converter implementations. Registering a Converter To install your own Converter or override any of the default Converters, extend from org.springframework.binding.convert.service.DefaultConversionService and override the addDefaultConverters() method. Use the addConverter(Converter) method to register the primary Converter to use to convert between two types, such as a String and a MonetaryAmount. Optionally use the addConverter(String, Converter) method to register alternate converters for the same type pair; for example, to support formatting a java.util.Date as a String in several different ways. Each alternate Converter is indexed by a unique converterId that can be referenced when configuring a model binding. When no converter id is referenced explicitly by a binding, the primary Converter between the two types is always used. The ConversionService is the object Web Flow consults at runtime to lookup conversion executors to convert from one type to another. There is generally one ConversionService per application. See the System Setup section for documentation on how to configure an extended ConversionService implementation that registers custom Converters to apply application-wide. Also consult the Convert API documentation for more information. Suppressing binding Use the bind attribute to suppress model binding and validation for particular view events. The following example suppresses binding when the cancel event occurs: ]]> Specifying bindings explicitly Use the binder element to configure the exact set of model bindings usable by the view. This is particularly useful in a Spring MVC environment for restricting the set of "allowed fields" per view. ]]> If the binder element is not specified, all public properties of the model are eligible for binding by the view. With the binder element specified, only the explicitly configured bindings are allowed. Each binding may also apply a converter to format the model property value for display in a custom manner. If no converter is specified, the default converter for the model property's type will be used. ]]> In the example above, the shortDate converter is bound to the checkinDate and checkoutDate properties. Custom converters may be registered with the application's ConversionService. Each binding may also apply a required check that will generate a validation error if the user provided value is null on form postback: ]]> In the example above, all of the bindings are required. If one or more blank input values are bound, validation errors will be generated and the view will re-render with those errors. Validating a model Model validation is driven by constraints specified against a model object. Web Flow supports enforcing such constraints programatically. Programmatic validation There are two ways to perform model validation programatically. The first is to implement validation logic in your model object. The second is to implement an external Validator. Both ways provide you with a ValidationContext to record error messages and access information about the current user. Implementing a model validate method Defining validation logic in your model object is the simplest way to validate its state. Once such logic is structured according to Web Flow conventions, Web Flow will automatically invoke that logic during the view-state postback lifecycle. Web Flow conventions have you structure model validation logic by view-state, allowing you to easily validate the subset of model properties that are editable on that view. To do this, simply create a public method with the name validate${state}, where ${state} is the id of your view-state where you want validation to run. For example: In the example above, when a transition is triggered in a enterBookingDetails view-state that is editing a Booking model, Web Flow will invoke the validateEnterBookingDetails(ValidationContext) method automatically unless validation has been suppressed for that transition. An example of such a view-state is shown below: ]]> Any number of validation methods are defined. Generally, a flow edits a model over a series of views. In that case, a validate method would be defined for each view-state where validation needs to run. Implementing a Validator The second way is to define a separate object, called a Validator, which validates your model object. To do this, first create a class whose name has the pattern ${model}Validator, where ${model} is the capitialized form of the model expression, such as booking. Then define a public method with the name validate${state}, where ${state} is the id of your view-state, such as enterBookingDetails. The class should then be deployed as a Spring bean. Any number of validation methods can be defined. For example: In the example above, when a transition is triggered in a enterBookingDetails view-state that is editing a Booking model, Web Flow will invoke the validateEnterBookingDetails(Booking, ValidationContext) method automatically unless validation has been suppressed for that transition. A Validator can also accept a Spring MVC Errors object, which is required for invoking existing Spring Validators. Validators must be registered as Spring beans employing the naming convention ${model}Validator to be detected and invoked automatically. In the example above, Spring 2.5 classpath-scanning would detect the @Component and automatically register it as a bean with the name bookingValidator. Then, anytime the booking model needs to be validated, this bookingValidator instance would be invoked for you. ValidationContext A ValidationContext allows you to obtain a MessageContext to record messages during validation. It also exposes information about the current user, such as the signaled userEvent and the current user's Principal identity. This information can be used to customize validation logic based on what button or link was activated in the UI, or who is authenticated. See the API Javadocs for ValidationContext for more information. Suppressing validation Use the validate attribute to suppress model validation for particular view events: ]]> In this example, data binding will still occur on back but validation will be suppressed. Executing view transitions Define one or more transition elements to handle user events that may occur on the view. A transition may take the user to another view, or it may simply execute an action and re-render the current view. A transition may also request the rendering of parts of a view called "fragments" when handling an Ajax event. Finally, "global" transitions that are shared across all views may also be defined. Implementing view transitions is illustrated in the following sections. Transition actions A view-state transition can execute one or more actions before executing. These actions may return an error result to prevent the transition from exiting the current view-state. If an error result occurs, the view will re-render and should display an appropriate message to the user. If the transition action invokes a plain Java method, the invoked method may return false to prevent the transition from executing. This technique can be used to handle exceptions thrown by service-layer methods. The example below invokes an action that calls a service and handles an exceptional situation: ]]> When there is more than one action defined on a transition, if one returns an error result the remaining actions in the set will not be executed. If you need to ensure one transition action's result cannot impact the execution of another, define a single transition action that invokes a method that encapsulates all the action logic. Global transitions Use the flow's global-transitions element to create transitions that apply across all views. Global-transitions are often used to handle global menu links that are part of the layout. ]]> Event handlers From a view-state, transitions without targets can also be defined. Such transitions are called "event handlers": ]]> These event handlers do not change the state of the flow. They simply execute their actions and re-render the current view or one or more fragments of the current view. Rendering fragments Use the render element within a transition to request partial re-rendering of the current view after handling the event: ]]> The fragments attribute should reference the id(s) of the view element(s) you wish to re-render. Specify multiple elements to re-render by separating them with a comma delimiter. Such partial rendering is often used with events signaled by Ajax to update a specific zone of the view. Working with messages Spring Web Flow's MessageContext is an API for recording messages during the course of flow executions. Plain text messages can be added to the context, as well as internationalized messages resolved by a Spring MessageSource. Messages are renderable by views and automatically survive flow execution redirects. Three distinct message severities are provided: info, warning, and error. In addition, a convenient MessageBuilder exists for fluently constructing messages. Adding plain text messages Adding internationalized messages Using message bundles Internationalized messages are defined in message bundles accessed by a Spring MessageSource. To create a flow-specific message bundle, simply define messages.properties file(s) in your flow's directory. Create a default messages.properties file and a .properties file for each additional Locale you need to support. From within a view or a flow, you may also access message resources using the resourceBundle EL variable: ]]> Understanding system generated messages There are several places where Web Flow itself will generate messages to display to the user. One important place this occurs is during view-to-model data binding. When a binding error occurs, such as a type conversion error, Web Flow will map that error to a message retrieved from your resource bundle automatically. To lookup the message to display, Web Flow tries resource keys that contain the binding error code and target property name. As an example, consider a binding to a checkinDate property of a Booking object. Suppose the user typed in a alphabetic string. In this case, a type conversion error will be raised. Web Flow will map the 'typeMismatch' error code to a message by first querying your resource bundle for a message with the following key: booking.checkinDate.typeMismatch The first part of the key is the model class's short name. The second part of the key is the property name. The third part is the error code. This allows for the lookup of a unique message to display to the user when a binding fails on a model property. Such a message might say: booking.checkinDate.typeMismatch=The check in date must be in the format yyyy-mm-dd. If no such resource key can be found of that form, a more generic key will be tried. This key is simply the error code. The field name of the property is provided as a message argument. typeMismatch=The {0} field is of the wrong type. Displaying popups Use the popup attribute to render a view in a modal popup dialog: ]]> When using Web Flow with the Spring Javascript, no client side code is necessary for the popup to display. Web Flow will send a response to the client requesting a redirect to the view from a popup, and the client will honor the request. View backtracking By default, when you exit a view state and transition to a new view state, you can go back to the previous state using the browser back button. These view state history policies are configurable on a per-transition basis by using the history attribute. Discarding history Set the history attribute to discard to prevent backtracking to a view: ]]> Invalidating history Set the history attribute to invalidate to prevent backtracking to a view as well all previously displayed views: ]]> ././@LongLink0000000000000000000000000000014700000000000011567 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-reference/src/defining-flows.xmllibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-reference/src/defining-flows.x0000644000000000000000000004504611360615636027743 0ustar Defining Flows Introduction This chapter begins the Users Section. It shows how to implement flows using the flow definition language. By the end of this chapter you should have a good understanding of language constructs, and be capable of authoring a flow definition. What is a flow? A flow encapsulates a reusable sequence of steps that can execute in different contexts. Below is a Garrett Information Architecture diagram illustrating a reference to a flow that encapsulates the steps of a hotel booking process: Site Map illustrating a reference to a flow What is the makeup of a typical flow? In Spring Web Flow, a flow consists of a series of steps called "states". Entering a state typically results in a view being displayed to the user. On that view, user events occur that are handled by the state. These events can trigger transitions to other states which result in view navigations. The example below shows the structure of the book hotel flow referenced in the previous diagram: Flow diagram How are flows authored? Flows are authored by web application developers using a simple XML-based flow definition language. The next steps of this guide will walk you through the elements of this language. Essential language elements flow Every flow begins with the following root element: ]]> All states of the flow are defined within this element. The first state defined becomes the flow's starting point. view-state Use the view-state element to define a step of the flow that renders a view: ]]> By convention, a view-state maps its id to a view template in the directory where the flow is located. For example, the state above might render /WEB-INF/hotels/booking/enterBookingDetails.xhtml if the flow itself was located in the /WEB-INF/hotels/booking directory. transition Use the transition element to handle events that occur within a state: ]]> These transitions drive view navigations. end-state Use the end-state element to define a flow outcome: ]]> When a flow transitions to a end-state it terminates and the outcome is returned. Checkpoint: Essential language elements With the three elements view-state, transition, and end-state, you can quickly express your view navigation logic. Teams often do this before adding flow behaviors so they can focus on developing the user interface of the application with end users first. Below is a sample flow that implements its view navigation logic using these elements: ]]> Actions Most flows need to express more than just view navigation logic. Typically they also need to invoke business services of the application or other actions. Within a flow, there are several points where you can execute actions. These points are: On flow start On state entry On view render On transition execution On state exit On flow end Actions are defined using a concise expression language. Spring Web Flow uses the Unified EL by default. The next few sections will cover the essential language elements for defining actions. evaluate The action element you will use most often is the evaluate element. Use the evaluate element to evaluate an expression at a point within your flow. With this single tag you can invoke methods on Spring beans or any other flow variable. For example: ]]> Assigning an evaluate result If the expression returns a value, that value can be saved in the flow's data model called flowScope: ]]> Converting an evaluate result If the expression returns a value that may need to be converted, specify the desired type using the result-type attribute: ]]> Checkpoint: flow actions Now review the sample booking flow with actions added: ]]> This flow now creates a Booking object in flow scope when it starts. The id of the hotel to book is obtained from a flow input attribute. Input/Output Mapping Each flow has a well-defined input/output contract. Flows can be passed input attributes when they start, and can return output attributes when they end. In this respect, calling a flow is conceptually similar to calling a method with the following signature: inputAttributes);]]> ... where a FlowOutcome has the following signature: getOutputAttributes(); }]]> input Use the input element to declare a flow input attribute: ]]> Input values are saved in flow scope under the name of the attribute. For example, the input above would be saved under the name hotelId. Declaring an input type Use the type attribute to declare the input attribute's type: ]]> If an input value does not match the declared type, a type conversion will be attempted. Assigning an input value Use the value attribute to specify an expression to assign the input value to: ]]> If the expression's value type can be determined, that metadata will be used for type coersion if no type attribute is specified. Marking an input as required Use the required attribute to enforce the input is not null or empty: ]]> output Use the output element to declare a flow output attribute. Output attributes are declared within end-states that represent specific flow outcomes. ]]> Output values are obtained from flow scope under the name of the attribute. For example, the output above would be assigned the value of the bookingId variable. Specifying the source of an output value Use the value attribute to denote a specific output value expression: ]]> Checkpoint: input/output mapping Now review the sample booking flow with input/output mapping: ]]> The flow now accepts a hotelId input attribute and returns a bookingId output attribute when a new booking is confirmed. Variables A flow may declare one or more instance variables. These variables are allocated when the flow starts. Any @Autowired transient references the variable holds are also rewired when the flow resumes. var Use the var element to declare a flow variable: ]]> Make sure your variable's class implements java.io.Serializable, as the instance state is saved between flow requests. Calling subflows A flow may call another flow as a subflow. The flow will wait until the subflow returns, then respond to the subflow outcome. subflow-state Use the subflow-state element to call another flow as a subflow: ]]> The above example calls the createGuest flow, then waits for it to return. When the flow returns with a guestCreated outcome, the new guest is added to the booking's guest list. Passing a subflow input Use the input element to pass input to the subflow: ]]> Mapping subflow output Simply refer to a subflow output attribute by its name within a outcome transition: ]]> In the above example, guest is the name of an output attribute returned by the guestCreated outcome. Checkpoint: calling subflows Now review the sample booking flow calling a subflow: ]]> The flow now calls a createGuest subflow to add a new guest to the guest list. libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-reference/src/portlet.xml0000644000000000000000000002231711360615634027044 0ustar Portlet Integration Introduction This chapter shows how to use Web Flow in a Portlet environment. Web Flow has full support for JSR-168 portlets. The booking-portlet-mvc sample application is a good reference for using Web Flow within a portlet. This application is a simplified travel site that allows users to search for and book hotel rooms. Configuring web.xml and portlet.xml The configuration for a portlet depends on the portlet container used. The sample applications, included with Web Flow, are both configured to use Apache Pluto, the JSR-168 reference implementation. In general, the configuration requires adding a servlet mapping in the web.xml file to dispatch request to the portlet container. swf-booking-mvc org.apache.pluto.core.PortletServlet portlet-name swf-booking-mvc 1 swf-booking-mvc /PlutoInvoker/swf-booking-mvc ]]> The portlet.xml configuration is a standard portlet configuration. The portlet-class needs to be set along with a pair of init-params. Setting the expiration-cache to 0 is recommended to force Web Flow to always render a fresh view. ... org.springframework.web.portlet.DispatcherPortlet contextConfigLocation /WEB-INF/web-application-config.xml viewRendererUrl /WEB-INF/servlet/view 0 ... ]]> Configuring Spring Flow Handlers The only supported mechanism for bridging a portlet request to Web Flow is a FlowHandler. The PortletFlowController used in Web Flow 1.0 is no longer supported. The flow handler, similar to the servlet flow handler, provides hooks that can: select the flow to execute pass input parameters to the flow on initialization handle the flow execution outcome handle exceptions The AbstractFlowHandler class is an implementation of FlowHandler that provides default implementations for these hooks. In a portlet environment the targeted flow id can not be inferred from the URL and must be defined explicitly in the handler. Handler Mappings Spring Portlet MVC provides a rich set of methods to map portlet requests. Complete documentation is available in the Spring Reference Documentation. The booking-portlet-mvc sample application uses a PortletModeHandlerMapping to map portlet requests. The sample application only supports view mode, but support for other portlet modes is available. Other modes can be added and point to the same flow as view mode, or any other flow. ]]> Flow Handler Adapter A FlowHandlerAdapter converts the handler mappings to the flow handlers. The flow executor is required as a constructor argument. ]]> Portlet Views In order to facilitate view rendering, a ViewRendererServlet must be added to the web.xml file. This servlet is not invoked directly, but it used by Web Flow to render views in a portlet environment. ViewRendererServlet org.springframework.web.servlet.ViewRendererServlet ViewRendererServlet /WEB-INF/servlet/view ]]> Portlet Modes and Window States Window State The Portlet API defined three window states: normal, minimized and maximized. The portlet implementation must decide what to render for each of these window states. Web Flow exposes the string value of the window state under portletWindowState via the request map on the external context. Portlet Mode The Portlet API defined three portlet modes: view, edit and help. The portlet implementation must decide what to render for each of these modes. Web Flow exposes the string value of the portlet mode under portletMode via the request map on the external context. Issues in a Portlet Environment Redirects The Portlet API only allows redirects to be requested from an action request. Because views are rendered on the render request, views and view-states cannot trigger a redirect. The externalRedirect: view prefix is a convenience for Servlet based flows. An IllegalStateException is thrown if a redirect is requested from a render request. end-state redirects can be achieved by implementing FlowHandler.handleExecutionOutcome. This callback provides the ActionResponse object which supports redirects. Switching Portlet Modes The portlet container passes the execution key from the previous flow when switching to a new mode. Even if the mode is mapped to a different FlowHandler the flow execution will resume the previous execution. You may switch the mode programatically in your FlowHandler after ending a flow in an ActionRequest. One way to start a new flow is to create a URL targeting the mode without the execution key. Portlets and JSF Web Flow supports JSF as the view technology for a portlet. However, a jsf-portlet bridge (JSR-301) must be provided. At the time of this writing, no feature complete jsf-portlet bridge exists. Some of the existing bridge implementations may appear to work, however, side effect may occur. JSF portlets are considered experimental at this time. ././@LongLink0000000000000000000000000000014500000000000011565 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-reference/src/spring-faces.xmllibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-reference/src/spring-faces.xml0000644000000000000000000012403511360615634027734 0ustar JSF Integration Introduction Spring Faces is Spring's JSF integration module that simplifies using JSF with Spring. It lets you use the JSF UI Component Model with Spring MVC and Spring Web Flow controllers. Spring Faces also includes a small Facelets component library that provides Ajax and client-side validation capabilities. This component library builds on Spring Javascript, a Javascript abstraction framework that integrates Dojo as the underlying UI toolkit. Spring-centric Integration Approach Spring Faces combines the strengths of JSF, its UI component model, with the strengths of Spring, its controller and configuration model. This brings you all the strengths of JSF without any of the weaknesses. Spring Faces provides a powerful supplement to a number of the standard JSF facilities, including: managed bean facility scope management event handling navigation rules easy modularization and packaging of views cleaner URLs model-level validation client-side validation and UI enhancement Ajax partial page updates and full navigation progressive enhancement and graceful degradation Using these features will significantly reduce the amount of configuration required in faces-config.xml while providing a cleaner separation between the view and controller layer and better modularization of your application's functional responsibilities. These use of these features are outlined in the sections to follow. As the majority of these features build on the flow definition language of Spring Web Flow, it is assumed that you have an understanding of the foundations presented in Defining Flows . Configuring web.xml The first step to using Spring Faces is to route requests to the DispatcherServlet in the web.xml file. In this example, we map all URLs that begin with /spring/ to the servlet. The servlet needs to be configured. An init-param is used in the servlet to pass the contextConfigLocation . This is the location of the Spring configuration for your application. Spring MVC Dispatcher Servlet org.springframework.web.servlet.DispatcherServlet contextConfigLocation /WEB-INF/web-application-config.xml 1 Spring MVC Dispatcher Servlet /spring/* ]]> In order for JSF to bootstrap correctly, the FacesServlet must be configured in web.xml as it normally would even though you generally will not need to route requests through it at all when using Spring Faces. Faces Servlet javax.faces.webapp.FacesServlet 1 Faces Servlet *.faces ]]> When using the Spring Faces components, you also need to configure the Spring JavaScript ResourceServlet so that CSS and JavaScript resources may be output correctly by the components. This servlet must be mapped to /resources/* in order for the URL's rendered by the components to function correctly. Resource Servlet org.springframework.js.resource.ResourceServlet 0 Resource Servlet /resources/* ]]> The Spring Faces components require the use of Facelets instead of JSP, so the typical Facelets configuration must be added as well when using these components. javax.faces.DEFAULT_SUFFIX .xhtml ]]> For optimal page-loading performance, the Spring Faces component library includes a few special components: includeStyles and includeScripts. These components will eagerly load the neccessary CSS stylesheets and JavaScript files at the position they are placed in your JSF view template. In accordance with the recommendations of the Yahoo Performance Guildlines, these two tags should be placed in the head section of any page that uses the Spring Faces components. For example: Spring Faces: Hotel Booking Sample Application ... ]]> This shows the opening of a typical Facelets XHTML layout template that uses these components to force the loading of the needed CSS and JavaScript resources at the ideal position. The includeStyles component includes the necessary resources for the Dojo widget theme. By default, it includes the resources for the "tundra" theme. An alternate theme may be selected by setting the optional "theme" and "themePath" attributes on the includeStyles component. For example: ]]> will try to load a CSS stylesheet at "/styles/foobar/foobar.css" using the Spring JavaScript ResourceServlet. Configuring Web Flow to render JSF views The next step is to configure Web Flow to render JSF views. To do this, in your Spring Web Flow configuration include the faces namespace and link in the faces flow-builder-services : ]]> The faces:flow-builder-services tag also configures several other defaults appropriate for a JSF environment. Specifically, the Unified EL is configured as the default Expression Language. See the swf-booking-faces reference application in the distribution for a complete working example. Configuring faces-config.xml The only configuration needed in faces-config.xml is specific to the use of Facelets. If you are using JSP and not using the Spring Faces components, you do not need to add anything specific to Spring Faces to your faces-config.xml com.sun.facelets.FaceletViewHandler ]]> Replacing the JSF Managed Bean Facility Spring Faces allows you to completely replace the JSF managed bean facility with a combination of flow-managed variables and Spring managed beans. It gives you a good deal more control over the lifecycle of your managed objects with well-defined hooks for initialization and execution of your domain model. Additionally, since you are presumably already using Spring for your business layer, it reduces the conceptual overhead of having to maintain two different managed bean models. In doing pure JSF development, you will quickly find that request scope is not long-lived enough for storing conversational model objects that drive complex event-driven views. The only available option is to begin putting things into session scope, with the extra burden of needing to clean the objects up before progressing to another view or functional area of the application. What is really needed is a managed scope that is somewhere between request and session scope. Fortunately web flow provides such extended facilities. Using Flow Variables The easiest and most natural way to declare and manage the model is through the use of flow variables . You can declare these variables at the beginning of the flow: ]]> and then reference this variable in one of the flow's JSF view templates through EL: ]]> Note that you do not need to prefix the variable with its scope when referencing it from the template (though you can do so if you need to be more specific). As with standard JSF beans, all available scopes will be searched for a matching variable, so you could change the scope of the variable in your flow definition without having to modify the EL expressions that reference it. You can also define view instance variables that are scoped to the current view and get cleaned up automatically upon transitioning to another view. This is quite useful with JSF as views are often constructed to handle multiple in-page events across many requests before transitioning to another view. To define a view instance variable, you can use the var element inside a view-state definition: ]]> Using Scoped Spring Beans Though defining autowired flow instance variables provides nice modularization and readability, occasions may arise where you want to utilize the other capabilities of the Spring container such as AOP. In these cases, you can define a bean in your Spring ApplicationContext and give it a specific web flow scope: ]]> The major difference with this approach is that the bean will not be fully initialized until it is first accessed via an EL expression. This sort of lazy instantiation via EL is quite similar to how JSF managed beans are typically allocated. Manipulating The Model The need to initialize the model before view rendering (such as by loading persistent entities from a database) is quite common, but JSF by itself does not provide any convenient hooks for such initialization. The flow definition language provides a natural facility for this through its Actions . Spring Faces provides some extra conveniences for converting the outcome of an action into a JSF-specific data structure. For example: ]]> This will take the result of the bookingService.findBookings method an wrap it in a custom JSF DataModel so that the list can be used in a standard JSF DataTable component: 0}"> Name #{booking.hotel.name} Confirmation number #{booking.id} Action ]]> The custom DataModel provides some extra conveniences such as being serializable for storage beyond request scope and access to the currently selected row in EL expressions. For example, on postback from a view where the action event was fired by a component within a DataTable, you can take action on the selected row's model instance: ]]> Handling JSF Events With Spring Web Flow Spring Web Flow allows you to handle JSF action events in a decoupled way, requiring no direct dependencies in your Java code on JSF API's. In fact, these events can often be handled completely in the flow definiton language without requiring any custom Java action code at all. This allows for a more agile development process since the artifacts being manipulated in wiring up events (JSF view templates and SWF flow definitions) are instantly refreshable without requiring a build and re-deploy of the whole application. Handling JSF In-page Action Events A simple but common case in JSF is the need to signal an event that causes manipulation of the model in some way and then redisplays the same view to reflect the changed state of the model. The flow definition language has special support for this in the transition element. A good example of this is a table of paged list results. Suppose you want to be able to load and display only a portion of a large result list, and allow the user to page through the results. The initial view-state definition to load and display the list would be: ]]> You construct a JSF DataTable that displays the current hotels list, and then place a "More Results" link below the table: ]]> This commandLink signals a "next" event from its action attribute. You can then handle the event by adding to the view-state definition: ]]> Here you handle the "next" event by incrementing the page count on the searchCriteria instance. The on-render action is then called again with the updated criteria, which causes the next page of results to be loaded into the DataModel. The same view is re-rendered since there was no to attribute on the transition element, and the changes in the model are reflected in the view. Handling JSF Action Events The next logical level beyond in-page events are events that require navigation to another view, with some manipulation of the model along the way. Achieving this with pure JSF would require adding a navigation rule to faces-config.xml and likely some intermediary Java code in a JSF managed bean (both tasks requiring a re-deploy). With the flow defintion language, you can handle such a case concisely in one place in a quite similar way to how in-page events are handled. Continuing on with our use case of manipulating a paged list of results, suppose we want each row in the displayed DataTable to contain a link to a detail page for that row instance. You can add a column to the table containing the following commandLink component: ]]> This raises the "select" event which you can then handle by adding another transition element to the existing view-state : ]]> Here the "select" event is handled by pushing the currently selected hotel instance from the DataTable into flow scope, so that it may be referenced by the "reviewHotel" view-state . Performing Model Validation JSF provides useful facilities for validating input at field-level before changes are applied to the model, but when you need to then perform more complex validation at the model-level after the updates have been applied, you are generally left with having to add more custom code to your JSF action methods in the managed bean. Validation of this sort is something that is generally a responsibility of the domain model itself, but it is difficult to get any error messages propagated back to the view without introducing an undesirable dependency on the JSF API in your domain layer. With Spring Faces, you can utilize the generic and low-level MessageContext in your business code and any messages added there will then be available to the FacesContext at render time. For example, suppose you have a view where the user enters the necessary details to complete a hotel booking, and you need to ensure the Check In and Check Out dates adhere to a given set of business rules. You can invoke such model-level validation from a transition element: ]]> Here the "proceed" event is handled by invoking a model-level validation method on the booking instance, passing the generic MessageContext instance so that messages may be recorded. The messages can then be displayed along with any other JSF messages with the h:messages component, Handling Ajax Events Spring Faces provides some special UICommand components that go beyond the standard JSF components by adding the ability to do Ajax-based partial view updates. These components degrade gracefully so that the flow will still be fully functional by falling back to full page refreshes if a user with a less capable browser views the page. Though the core JSF support in Spring Faces is JSF 1.1-compatible, the Spring Faces Ajax components require JSF 1.2. Revisiting the earlier example with the paged table, you can change the "More Results" link to use an Ajax request by replacing the standard commandButton with the Spring Faces version (note that the Spring Faces command components use Ajax by default, but they can alternately be forced to use a normal form submit by setting ajaxEnabled="false" on the component): ]]> This event is handled just as in the non-Ajax case with the transition element, but now you will add a special render action that specifies which portions of the component tree need to be re-rendered: ]]> The fragments="hotels:searchResultsFragment" is an instruction that will be interpreted at render time, such that only the component with the JSF clientId "hotels:searchResultsFragment" will be rendered and returned to the client. This fragment will then be automatically replaced in the page. The fragments attribute can be a comma-delimited list of ids, with each id representing the root node of a subtree (meaning the root node and all of its children) to be rendered. If the "next" event is fired in a non-Ajax request (i.e., if JavaScript is disabled on the client), the render action will be ignored and the full page will be rendered as normal. In addition to the Spring Faces commandLink component, there is a corresponding commandButton component with the same functionality. There is also a special ajaxEvent component that will raise a JSF action even in response to any client-side DOM event. See the Spring Faces tag library docs for full details. An additional built-in feature when using the Spring Faces Ajax components is the ability to have the response rendered inside a rich modal popup widget by setting popup="true" on a view-state . ]]> If the "changeSearchCriteria" view-state is reached as the result of an Ajax-request, the result will be rendered into a rich popup. If JavaScript is unavailable, the request will be processed with a full browser refresh, and the "changeSearchCriteria" view will be rendered as normal. Enhancing The User Experience With Rich Web Forms JSF and Web Flow combine to provide an extensive server-side validation model for your web application, but excessive roundtrips to the server to execute this validation and return error messages can be a tedious experience for your users. Spring Faces provides a number of client-side rich validation controls that can enhance the user experience by applying simple validations that give immediate feedback. Some simple examples are illustrated below. See the Spring Faces taglib docs for a complete tag reference. Validating a Text Field Simple client-side text validation can be applied with the clientTextValidator component: ]]> This will apply client-side required validation to the child inputText component, giving the user a clear indicator if the field is left blank. Validating a Numeric Field Simple client-side numeric validation can be applied with the clientNumberValidator component: ]]> This will apply client-side validation to the child inputText component, giving the user a clear indicator if the field is left blank, is not numeric, or does not match the given regular expression. Validating a Date Field Simple client-side date validation with a rich calendar popup can be applied with the clientDateValidator component: ]]> This will apply client-side validation to the child inputText component, giving the user a clear indicator if the field is left blank or is not a valid date. Preventing an Invalid Form Submission The validateAllOnClick component can be used to intercept the "onclick" event of a child component and suppress the event if all client-side validations do not pass.   ]]> This will prevent the form from being submitted when the user clicks the "proceed" button if the form is invalid. When the validations are executed, the user is given clear and immediate indicators of the problems that need to be corrected. Third-Party Component Library Integration Spring Faces strives to be compatible with any third-party JSF component library. By honoring all of the standard semantics of the JSF specification within the SWF-driven JSF lifecycle, third-party libraries in general should "just work". The main thing to remember is that configuration in web.xml will change slightly since Spring Faces requests are not routed through the standard FacesServlet. Typically, anything that is traditionally mapped to the FacesServlet should be mapped to the Spring DispatcherServlet instead. (You can also map to both if for example you are migrating a legacy JSF application page-by-page.) In some cases, a deeper level of integration can be achieved by configuring special flow services that are "aware" of a particular component library, and these will be noted in the examples to follow. Rich Faces Integration To use the Rich Faces component library with Spring Faces, the following filter configuration is needed in web.xml (in addition to the typical Spring Faces configuration): RichFaces Filter richfaces org.ajax4jsf.Filter richfaces Spring Web MVC Dispatcher Servlet REQUEST FORWARD INCLUDE ]]> For deeper integration (including the ability to have a view with combined use of the Spring Faces Ajax components and Rich Faces Ajax components), configure the RichFacesAjaxHandler on your FlowController: ]]> RichFaces Ajax components can be used in conjunction with the render tag to render partial fragments on an Ajax request. Instead of embedding the ids of the components to be re-rendered directly in the view template (as you traditionally do with Rich Faces), you can bind the reRender attribute of a RichFaces Ajax component to a special flowRenderFragments EL variable. For example, in your view template you can have a fragment that you would potentially like to re-render in response to a particular event: Name #{hotel.name} Address #{hotel.address} ]]> then a RichFaces Ajax commandLink to fire the event: ]]> and then in your flow definition a transition to handle the event: ]]> Apache MyFaces Trinidad Integration The Apache MyFaces Trinidad library has been tested with the Spring Faces integration and proven to fit in nicely. Deeper integration to allow the Trinidad components and Spring Faces components to play well together has not yet been attempted, but Trinidad provides a pretty thorough solution on its own when used in conjunction with the Spring Faces integration layer. NOTE - An AjaxHandler implementation for Trinidad is not currently provided out-of-the-box with Spring Faces. In order to fully integrate with Trinidad's PPR functionality, a custom implementation should be provided. An community-provided partial example can be found here: SWF-1160 Typical Trinidad + Spring Faces configuration is as follows in web.xml (in addition to the typical Spring Faces configuration): javax.faces.STATE_SAVING_METHOD server org.apache.myfaces.trinidad.CHANGE_PERSISTENCE session org.apache.myfaces.trinidad.ENABLE_QUIRKS_MODE false Trinidad Filter org.apache.myfaces.trinidad.webapp.TrinidadFilter Trinidad Filter Spring MVC Dispatcher Servlet Trinidad Resource Servlet org.apache.myfaces.trinidad.webapp.ResourceServlet resources /adf/* ]]> libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-reference/src/testing.xml0000644000000000000000000001233011360615632027020 0ustar Testing flows Introduction This chapter shows you how to test flows. Extending AbstractXmlFlowExecutionTests To test the execution of a XML-based flow definition, extend AbstractXmlFlowExecutionTests: Specifying the path to the flow to test At a minimum, you must override getResource(FlowDefinitionResourceFactory) to return the path to the flow you wish to test: Registering flow dependencies If your flow has dependencies on externally managed services, also override configureFlowBuilderContext(MockFlowBuilderContext) to register stubs or mocks of those services: If your flow extends from another flow, or has states that extend other states, also override getModelResources(FlowDefinitionResourceFactory) to return the path to the parent flows. Testing flow startup Have your first test exercise the startup of your flow: Assertions generally verify the flow is in the correct state you expect. Testing flow event handling Define additional tests to exercise flow event handling behavior. You goal should be to exercise all paths through the flow. You can use the convenient setCurrentState(String) method to jump to the flow state where you wish to begin your test. Mocking a subflow To test calling a subflow, register a mock implementation of the subflow that asserts input was passed in correctly and returns the correct outcome for your test scenario. libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-reference/images/0000755000000000000000000000000011360615644025303 5ustar ././@LongLink0000000000000000000000000000015400000000000011565 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-reference/images/xdev-spring_logo.jpglibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-reference/images/xdev-spring_l0000644000000000000000000011100011360615644030000 0ustar ÿØÿàJFIFHHÿáñExifMM*bj(1r2‡i¤ÐHHAdobe Photoshop CS Windows2006:08:05 08:34:10 ÿÿ   I&(.»HHÿØÿàJFIFHHÿí Adobe_CMÿîAdobed€ÿÛ„            ÿÀ "ÿÝ ÿÄ?   3!1AQa"q2‘¡±B#$RÁb34r‚ÑC%’Sðáñcs5¢²ƒ&D“TdE£t6ÒUâeò³„ÃÓuãóF'”¤…´•ÄÔäô¥µÅÕåõVfv†–¦¶ÆÖæö7GWgw‡—§·Ç×ç÷5!1AQaq"2‘¡±B#ÁRÑð3$bár‚’CScs4ñ%¢²ƒ&5ÂÒD“T£dEU6teâò³„ÃÓuãóF”¤…´•ÄÔäô¥µÅÕåõVfv†–¦¶ÆÖæö'7GWgw‡—§·ÇÿÚ ?•6²»ç¸5§ÚâLh}²¯ØÓt#Ss–}wZÏHTç‚Û½]ØÙ,ÇÈfÖÕúKqr¿Uê8ïc2=)»íUÝëøùUŒz,}´œ?ÖÎFvç0–Ug§“‰ŠçŸçw±õÐÿ´}¡žž5?§ý2ÍŽb;ô+i°Çµ­qy4'MYïoùÌõkȪ×Ù]62ïM­.²§o`q×Òõa¬uµþ§¿bͲ÷ÛS«}UÔß°¶ë@¾Ág¬ìWØüm­{jô~Ù³Ìk?Ifû)³}vìVmÏ5 œÑ@ªšqìam’Kí47({Ýé6†2Ì—ú{=jŸêzž—è8%[‹¢©…­Û}¬ì㹿{ÿïÈ6–¹ƒÜ$翇(™¹¹¢j–Ýs>ÐÐòÃUgn7ªç¾›3œß^ì¿Gô^uzáP:…ù;j§Û̓ ¶¿uüÆäcß‹?ÎÙS±Ùê[½õ~‹Òôl®«öjR—¾ÿ÷ª¥«qe€ù­;›êã9úCâ^U­eùæªéôqæÐ=gØû굌È,õ1ÛsYüãêÌÄ£«Y‘•e¿á/Ñß]˜íôIÊʨ\붸ãÔÖ?êË]èz™žædYú½Œ¯ù›SgÊä$c¡®»ÿŠªi¿Vwº¹ðQo¡§e_k»—Õ‹[‰c­7ÙVElõ¯ªÿÐaz9gûUv?Ôõªý ~Š…9XÖRX t[aÉǧԷééº^]¶ÔñöFÖÜŒ<Ë©ý[׫×ÿ¤† ÷ŽºUI,ë¸Ñ —챤éªzòñ­£í ,£ÕäÛesƒêØû2¦Qe›ŸfnÚ/Ûo­ö¯¶}—Ñû"bé³&¢%_³žì‡Õc­°ºÜZ쾆Ðûj¢ïK;{1èõ=_´Uÿm8`•Ñ"Ž–Š{ª™²,ÃyÐþ–¯ú›[ÿRõÑ/;é½BÊ3>ÒÏOeO¦º\_4=GÛaß¿&¯§éÑè3è3Ó^„ǶÆ5ì;šðÒ;ƒ¨SòÒ4qñŸù©nÌ’I%ar’I$”¤’I%?ÿПdôÛö¯KËÕÛòÛê+˜¬¤_Còli$Yöìô jßµz>Ñvýþ—Ó±y*K&¥ól~_û¯ê¬®ŸÙa¤³–zžâvmõ'óçü/õ½è•~ʆ†ú¦+5ìßêOèO§úOµ} žŸé÷¯I/µ/ªdQÓë|Ñ‘ëZn÷6±Xhº-ßö¿±×[>׳í>—Û?Mý/Ñÿ•_dÜÿKÒ˜ý>ͼ÷õ¶ÿßו¤›ÒÿæA}6ßÙþ‹#Ðôw~Ž6lÝüÌÞ‹€zW¿pÅÏ'ÒñüéþRòÔ”SùNê}g'öVÇëᇲ#ó=_í} ꛽oæí<ÄlüîÁ¯2I,_U>Ÿú¿Ú™»ÓõÁnÛ¿þµ»Ýþb¯zvÝ7öÙ·þ•^p’—ªŸWèæFÏ@W½Æ½¿Kù~ŸýùwÿWz]m¹¤5³è¼Çº³«ï{~Šù¥%')üô·ê¨üßGꤗʩ-ïÕI/•RIOÕI/•RIOÿÙÿí ¼Photoshop 3.08BIM8BIM%F ò‰&¸VÚ°œ¡°§w8BIMíHH8BIM&?€8BIM x8BIM8BIMó 8BIM 8BIM' 8BIMõH/fflff/ff¡™š2Z5-8BIMøpÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿèÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿèÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿèÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿè8BIM@@8BIM8BIMUI xdev-spring_logo InullboundsObjcRct1Top longLeftlongBtomlongIRghtlong slicesVlLsObjcslicesliceIDlonggroupIDlongoriginenum ESliceOrigin autoGeneratedTypeenum ESliceTypeImg boundsObjcRct1Top longLeftlongBtomlongIRghtlong urlTEXTnullTEXTMsgeTEXTaltTagTEXTcellTextIsHTMLboolcellTextTEXT horzAlignenumESliceHorzAligndefault vertAlignenumESliceVertAligndefault bgColorTypeenumESliceBGColorTypeNone topOutsetlong leftOutsetlong bottomOutsetlong rightOutsetlong8BIM( ?ð8BIM8BIM8BIM × à)@»ÿØÿàJFIFHHÿí Adobe_CMÿîAdobed€ÿÛ„            ÿÀ "ÿÝ ÿÄ?   3!1AQa"q2‘¡±B#$RÁb34r‚ÑC%’Sðáñcs5¢²ƒ&D“TdE£t6ÒUâeò³„ÃÓuãóF'”¤…´•ÄÔäô¥µÅÕåõVfv†–¦¶ÆÖæö7GWgw‡—§·Ç×ç÷5!1AQaq"2‘¡±B#ÁRÑð3$bár‚’CScs4ñ%¢²ƒ&5ÂÒD“T£dEU6teâò³„ÃÓuãóF”¤…´•ÄÔäô¥µÅÕåõVfv†–¦¶ÆÖæö'7GWgw‡—§·ÇÿÚ ?•6²»ç¸5§ÚâLh}²¯ØÓt#Ss–}wZÏHTç‚Û½]ØÙ,ÇÈfÖÕúKqr¿Uê8ïc2=)»íUÝëøùUŒz,}´œ?ÖÎFvç0–Ug§“‰ŠçŸçw±õÐÿ´}¡žž5?§ý2ÍŽb;ô+i°Çµ­qy4'MYïoùÌõkȪ×Ù]62ïM­.²§o`q×Òõa¬uµþ§¿bͲ÷ÛS«}UÔß°¶ë@¾Ág¬ìWØüm­{jô~Ù³Ìk?Ifû)³}vìVmÏ5 œÑ@ªšqìam’Kí47({Ýé6†2Ì—ú{=jŸêzž—è8%[‹¢©…­Û}¬ì㹿{ÿïÈ6–¹ƒÜ$翇(™¹¹¢j–Ýs>ÐÐòÃUgn7ªç¾›3œß^ì¿Gô^uzáP:…ù;j§Û̓ ¶¿uüÆäcß‹?ÎÙS±Ùê[½õ~‹Òôl®«öjR—¾ÿ÷ª¥«qe€ù­;›êã9úCâ^U­eùæªéôqæÐ=gØû굌È,õ1ÛsYüãêÌÄ£«Y‘•e¿á/Ñß]˜íôIÊʨ\붸ãÔÖ?êË]èz™žædYú½Œ¯ù›SgÊä$c¡®»ÿŠªi¿Vwº¹ðQo¡§e_k»—Õ‹[‰c­7ÙVElõ¯ªÿÐaz9gûUv?Ôõªý ~Š…9XÖRX t[aÉǧԷééº^]¶ÔñöFÖÜŒ<Ë©ý[׫×ÿ¤† ÷ŽºUI,ë¸Ñ —챤éªzòñ­£í ,£ÕäÛesƒêØû2¦Qe›ŸfnÚ/Ûo­ö¯¶}—Ñû"bé³&¢%_³žì‡Õc­°ºÜZ쾆Ðûj¢ïK;{1èõ=_´Uÿm8`•Ñ"Ž–Š{ª™²,ÃyÐþ–¯ú›[ÿRõÑ/;é½BÊ3>ÒÏOeO¦º\_4=GÛaß¿&¯§éÑè3è3Ó^„ǶÆ5ì;šðÒ;ƒ¨SòÒ4qñŸù©nÌ’I%ar’I$”¤’I%?ÿПdôÛö¯KËÕÛòÛê+˜¬¤_Còli$Yöìô jßµz>Ñvýþ—Ó±y*K&¥ól~_û¯ê¬®ŸÙa¤³–zžâvmõ'óçü/õ½è•~ʆ†ú¦+5ìßêOèO§úOµ} žŸé÷¯I/µ/ªdQÓë|Ñ‘ëZn÷6±Xhº-ßö¿±×[>׳í>—Û?Mý/Ñÿ•_dÜÿKÒ˜ý>ͼ÷õ¶ÿßו¤›ÒÿæA}6ßÙþ‹#Ðôw~Ž6lÝüÌÞ‹€zW¿pÅÏ'ÒñüéþRòÔ”SùNê}g'öVÇëᇲ#ó=_í} ꛽oæí<ÄlüîÁ¯2I,_U>Ÿú¿Ú™»ÓõÁnÛ¿þµ»Ýþb¯zvÝ7öÙ·þ•^p’—ªŸWèæFÏ@W½Æ½¿Kù~ŸýùwÿWz]m¹¤5³è¼Çº³«ï{~Šù¥%')üô·ê¨üßGꤗʩ-ïÕI/•RIOÕI/•RIOÿÙ8BIM!SAdobe PhotoshopAdobe Photoshop CS8BIMÿá-http://ns.adobe.com/xap/1.0/ 4294967295 524 73 1 72/1 72/1 2 2006-08-05T08:34:10Z 2006-08-05T08:34:10Z 2006-08-05T08:34:10Z Adobe Photoshop CS Windows uuid:3f50d993-23b7-11db-9576-fa409a7502c7 adobe:docid:photoshop:3f50d992-23b7-11db-9576-fa409a7502c7 adobe:docid:photoshop:86772fa8-2454-11db-8c34-c59e0b1bd60f image/jpeg ÿîAdobed@ÿÛ„ÿÀI ÿÝBÿÄÌ     !1 AQ"aq2#3‘±B²s$4r³t´5u6 ðÁRÂ%v‚¡bĵÅ&¶7 !1A"Qaq2ð‘¡±ÁÑB#3árRb‚4’Cs³$Dñ²ÒSc5u6ÿÚ ?Ö1(@%+¶Ÿ¼ Zw =ß.¾WK¨TוjLæ%®Á{*QN†LGxm:cÓ¡È;ˆ5èÊ%ðÓp¼Õ¤€²šµ˜õS]DÄJ'¹ÉI3)¶ ‘U²žtT â'Ò+%Ò¢@7NšÛ#~¸cx8·íOg9`Ü1¥p;w̾íxªfù¦§žd)q³”Œ©€@=º3AÖ@Ì%ë-T¯l€9va8ºdf©ÍªáB<ª‹"e†¡E#¨  ”¨Ô½zi—Ó‚EH**õxY(Ç*Wë£ÆÊ¦dªIïE`1j)€ˆî …6ô ޤÅ)©#›%‚¢­Ñ¸ÌmÈŠ’‘§‘lC©ûì†R5}Çð2ñëí TB´ë¨Ïâ72m]Ù8j:ŽCF ´ä«¿#Ù¤•ÚÊænËq.øN—r%HÆAôi’h âŠèF€= mH„rÛê:šíTíÕ\¾!1;p$¥lK JYˆ–4SMTU!’%µo §éðˆ&`ñÓwlÕ 5Ȧ u8­´ÂDÍä~.ê‚ mKö`ñ1 ;F€+@÷ë\1è“*’FœÖ²1P#–ˆ8I@0ì&QqDjÒPÝ}š\ÏÓ¦¹!´¡Ç-ÚâFH£âC”D‹q*b4éÔwß>Ò4‚ 5¯žžlB«#";Èa"?µˆ¦=MðuîR¿¦Û<ƒI®£A€Q€¾jOt6òŠhQ XA¡öípßOv­u`Ò×%j*åôC˜ÇnÝG ê¸&í &P;=J'ªÕ ôk8¬º€ -ÌB¥FY_ú@–Ó«^Ú°wT)JQ% ZTGyëÜ’â1<}‰Lè…û˜w¢E”+q+Ú pî–¥8´¨j)88Ë™MHh[CŠR=¢œƒ‚Ä…EÒû—Ð7’§@*P1;eд¥zjâÝÅá¬2b{Öcy'‚ùP©‘är$†.ÅPQNئÜ|ð‰LWClúU?´zuÓ€—±Ît”¡¥qÁ,¸—SN 9#¤Pvóîƒe[9/mØ üÃîÔyjøÌ^¥J´ãRx €îSÅ;1“¢µL!A‡l yHõDˆþގŠ„)€¢aï 5K£v—ú••¶á®²8H;0?N#¸­nKsïO(8w– Ý[oÛ'e#ad =A7"Š¥\© ;þ>Ÿ8ëF¸alÀ¸ù¹OØŒ*âÖÕÁwkÓW0’jÝžÅrK˜]Å”·,ªqûE{ %ÐDNn›ë…­EE@ë¯PÿÛwT9öÛÇH]Ëù‘8Ï'!²´w¡àí<ö­·§nõÇ%³Ž\ÃãŸ×ã™]NשÖÌF„#B¡ЄhB4!F„#B¡ЄhB4!±fÑÊ­VpÝ•b°¹h¢©”çl¹‘Q¸¬ˆ˜STPXäܦÖRKâÒæƒCQÜrYzÂR4!F„#B¡ ÿÐÔµÚš¢P¡ÐåøŒNŸœ0í§¾•×Ê÷ó4Õiìå~­¢„Þ a¨t5B´üÚGéj$g025… ŒÓk Ω2-ˆ±JtVOµÜKqEL. €›h,‡@üñökeÛä×¢n¢À™J¡L1vÔJ P¨SSÂ…ÔûWµÍ2†£†šä‹ÍñÎâX‡Ç ¹´®løÆ Ê4| 4Ú*T‰n)PüšœMün¥ Œ"¾¡&a©¤—*܉dJížç‰™nÚ‚’€P¤ È`í€PÁáÓ¦²C\ÒQ™ê6€ŒátݺŒv©&ÐAÀ c*rCJAÚ™ú~ k7-Ó+Fš|¾Õ*¸EE)߯Ür((„¢{Q)…3PŸR=:×®™x[âŒ0R¢¦ðÉÈmpQí¾`vŠ )†Ú¦ ‡@ ?¹`”êjÉ/î(ùúyüÊ`S¨O*L>¤Â@ÙZ&n… Óâ¨uԨݦ  ¦ÍáSP—+²”+ù-¯S*„E4~ÑN “¶c&@($jQ*€Ð®­¡{KF++$dAœuUê%hC7$ ™PLÂqGã)F¢5Ó„´“†4BÙ6FX²‹&Wɦ° ™Ž°¤P¢& ¤ ¦m§uð bŒ 8#ëN#øu´Zº¥Ä·} XTÖdJªrù ‚6(S&³iz ~%0{½ºŸ£Ð?/”žÕ•nðÑ~ò^\V§g·ñ‹ƒð6Á7ÚTÞ4öiÇh2¹®¦ª}‹£522Å”F¯óiµ÷…4þÈš@GÜ:3chu!)óWæîÕ‰Dî Ú#ƒœÄÙEtÔ)OAúÂ`÷ê.¶ Ù¤pÍ+ÓP¼æÙIyÖCæ’ï,ŠÛOÛ&Ð!B‡/j†0FB”Ò%lnl‡NJ;ÚçD–—+yÒ’v’täîH)õ\C`¨tÌè ‡@¥4í¬Íl‘`j@L‚| ­ ÚÍR<âbá8+C Ý U>°ІÀ Ö½ujÓ2 ®ÏÅHh-šÍ´©Æ}°a®¾X–ÓÁj>R½=™N^”0©zÔ(a÷j :œÔNÓ —nH©qG9HÀPQO,c€J©Šbw‰®@>jêÖÆAÙZé B•É\· hÏ4 ™8ˆ!(­VO½pS‰‘w½"DhˆÓÙ«Ðã¤ùNIzBÌ|Ì{è‘TÂ+À¾B¦ïªÚGrÑ«ŠÅ1Á‹äIR”(5ŸQ\Þz Ö]SCصÒÍÛ»NÙºˆPMÉ—<ÀE*$]'…ò(»N%:‡jä…˜âÜ!¤,e B’‘PÖ+¥×gNLê<âó´B”Š‹¡4MÀÙtTÜ‘Û8Xª‡Cxt®¤W‰8,O6!G`—qdÖÚeÆ9Q¡Ê—ÐMý¶ªj¢ª` a2r& uW¨iñirH¥qÉ4\?F'Ûw˜ Æuˆ4I4ÐIÃE¶?D†17ª‘ŒºcáÓ­4ÌLoï$`rQ ¸dT†õqf¯“,NnîolÅΞ`·T³GŒÑ›R·‹,ŠpF~ª,P–š+t¹7d¼‘1Œb‘5"o÷7Û6͹_íö^µð l- –ë{šÝO æsbf©\ÖâàÍ8HÙºc§§ê=Þ;&ÈÈ­]4¯pdQF3|’ £8—9­hsˆiµ—_3øWìt£³Ìãh»ŒH#pεr^^¹dö¦ƒ³kÛ²OÕ %йL¼”ÛÆíR ˜Çp ]yêÃÛÿp½ÊÝ„±½Ï$›»ÆË ´Lâö‰Ah9G ­04èóì;’A¶ÞÅ%¼x¡Œ*N ;!©๑Ç\‘³ázå<˜Í(ùL¹-;s£ ØP)5‘U[nÝEeª=þ€#Xðvb$w‚ØW2i™A!}/ºtÞÕÑû^ÏÓ;4ºíìíÚÍG7¸ É!5¼¹újCk¤W*ÝnŸ{w5ËÇæ<ðáÀsçÛ°q“Á-Hr¶Ê*w ¹DÍÝ*ŒGpªíKƒÆ8ªÒ ™ŽmrÚYÙ:j ³6û™ÃríPï Rî8®ÜCéPugp÷ÆØfhò<§§ ƒBš¯c²ÚšàA@AÁ@ÜE©²…øÄáU: çÔó¬”籧ÂpÅÄSÄ@l³‚6®ðØ•Þ5èRƒQé×Zîílš»S°;Pv-Tš1è¹h`I`1ÁÇÛŽnÐL—^¥V´«Ù¤°ƒJ§)@¾jv'IÑŠ ˆlÀt(˜€˜Æ¡„(nÑœ9KP8-<ãF*"Ìæ"¦1D€ê½ã „TÄ ˆˆœ< MIa à›pâ–-bËÓ KöÀ¨ƒq0"S‚fß»ãÜPè¿&¦Û½àÓY&”Áh Hß.ÈŠà±—D®L®Ó¦qT 0L% ^ƒ©à¸ز¾Š1&Tšþ[´M„¸Þ ÇqŒ÷‰´ñé](j§b§V“¦-ÊÔDóFXCUÙ´ªž€CnnSÀ+ª=ê$.¦I@àB·V»ÖŠ˜†K»ÚìÓj„Wx©»iD@j¦Ñ/zë”_BÖI pÃâ©€ŸdÉèïÞ"Qø€¥.êà”ÛZüº¬n–´€ k÷,â!F/ÆRÑ®™‹¢©‡¡Š`T©˜@Hs J(4\XÜ6 ¸ekˆM–*TD™5y"‰ÒXŠ ¡‘@´T½±M3·„($Pj;«Ó¯†»”À²" AÅa¹© `dXÔ«@Q0t?Z;‰OŒ@@B£¸½(Õ>âÍ7&Í&\ÁQiT¢{®Œt–2e!\n ìS¸`=j#ׯ³OYºLMSE@ÑÉ¡A5Aqp¸=VØtŒuk°DåLL5 Pk­ºÒWâÂyhœΆs.¦"ænt R’‹ …Aˆî(Š^i©ñÉ!`þeVn_nÑbf;U¾!PLa©|LO²ü==ú—Î]^ëYP·iÅMDźàÕDŠm…+‚˜]‘A8˜TŠBZÓðê4Áæ<)ª¨ <âß|ÅN &¯|Žh‰è¶ÎÀ¬@ÚsÂ@J½­uÒÒâkÈR@¦%M¥‹$¢kƒs *†àTDLp!‰Sר˜@iMt±Ö£W‚@©à”ÓM#E³åÁ%ûäYTÛÐUØDɰü[7j'¨ÓÇQ´>'†áB7ߨ¨Ã þ=¸¤¸6tš©¿(ƒ€}ANÜèŽ&‘a¯Â Q÷jâÞYe„¼š9§ ¾*S|£Áb¤% !œ­¾?¢â%9HqèÃJ,PúUøGO’þV’(áB²pÓ ¥q¡Š1‘T”H€ø£Þ›¾*u8”E%ÀÔÛJ€êŽý“ŒÌ?ŸÚ| Bi툴‚ʵãl¬Y& ³PÜ‹Ù}À®åPU#(ÕÁŠc ¶¨j«½¬îeÌ z37XîpóA …Í™Ä|ªŸ±ë$hø§ãÜ2íΛ†(œDHS θ ¼:ôÕ4Ì4|y57íJn çö¯Ñ·²¹26g éqV^ÃX°Š ƒõªÃªZQ”)Ul§ÂFä¯Ò {oØN©;ïG ¢ê][†Úá9˜]Sÿ ðÆÞÕ¼ì×[Q5tx|8ê+¯®ä­Ñ¡ЄhB4!F„#B¡ЄhB4!F„#B¡ЄhB4!F„/ÿÒÑ¢JOZ…DCâê_ B†—䮾Y:¤­Iâ˜ðO‹ZO°ÆJå{Ê(à¾,âI†µÁ}µ·Ü]÷ï~IyǘÒÐh»SJÜ‚M°,åeÑ‘ÊÑEÑêísúžÚã{ݯM¶Ç ôê’GàtFÚZWr4u'ZÀeg¨M#={’gçïIìís0Ç–Ö{æ/né×e´òÇ'ml17ƒ˜T8ƒÝêc™ù{ Œ„JE»x¼s,pô©&u©Áío@ÞRÖÒöúÞìà/¢öW† ÀÒÚŸï;pR…­³Žç4÷Ñ^îTc‰>d¬uÇÛ§ø¶RùÂ6ÎFkw"Ý!Ö½K=3uÇÀ“°ÝÙb£æb £0P °2~ÜTPÊo)u¾¾öá½(Û7ÛLéaôš\â›ð2¨V¦‡Qq‰€Wëïfh,G )ÔŠ†Ãœ[ƒÆä#¶â‰À¥/›I D@vœ( q‹XY#FËíðPõi5QÓ³Øé†J¤"( ¢s äˆ9W¶ô¥L¢tÙ½HèÝí cÔÔFŽ ²à2Z —i5º­{”Šm¤‰÷À±ÊMÁ·,xI¨™êaÔ¦ú%§´tP }3™XmE pZUÚ¨ÂfI°¬&zÅЬW”þ§§”US@éHC¸Ø˜4‡02V‚qX¡¯½&!›ã¸;žâ^D ñõß…Ø¥¾}ýü(Þ]OW‰EA¡ä€E@ðàP6­¶(n·]½×•ý™•¡ô<Új5S¾•§zz&ê8Š®œÃ½8—È>O@CðrNø¹ð‡ð%¼k©õΖDB1¾ERJh’Ão%“Á½â-Á.Ô§ó ù6ÎŽëîý¨.¨©Þº»gé–fîÝ9‘膊—87·Fº¹º¨ ÿ´@­CE6Îví‘mP=¬°Öæ´úÇKå>i -Q"0] ÷—Lí®ØvôòOUŽ]tÑœErT‘]M®I²•(•R Cå×½êýÂ@ø‹Ü#Ékây+B®È@ÇY %ÑFÂÍG½Eb„SîÙ`Lª C( ”z @=úÑw)ß4Úåyq4úQ15qL‡i€ ×iAMë¹h¨” ÛѤ= ð ×ߨq;œ])Ÿ7ó($ …J±*ç(3IÊñÎwTí* ™"ˆÂpÜ4üzØcdsFæã«I§Á80 ÝLÂd †öÌ&eHÍ2 ¿"±…ÂBjRX´ÚZk1Ým„T¡ñ(oŒ6J…›l8tSK$o,)¨²âàH'ÜQ¨ xiJJõñÔmÁìiä• h¦KêÈÓJFËçdpǨÆÈ˜½´æôMà µ: ï%ÚB¨Ü *T!„@(!Ôu7¢ö£rÝE¾ôéÅèè׫ yùixö)‘5²>®žïâ¬÷8c½>}>‘À®2ÖUç ÜÛ“–,žAǧÅÖf —-ضÖÊÊ}þápX®#Ÿ.Þìjd“HŽƒá8Ä€Ò·þËtFÝKu¸º7¶ ·ÑÀ`q«[ÛÞ§›(]‚Lqÿ;úJr"ÙØµÏ#9„&névV”Æs±pí½hÊNÉ(“h¸§7-™-~G@šAÊ¥I5ä…‹@P@§X»‹X»µ^ß_L ŽÿpcÉ Õè_µÔøÑ YÛ¹ÔÔêü_"³œÅü‘ä¦ÎUåñ5ÿ5j‘Óú¦âbÜ@ÂöÏŸÓ#Ü6›ÖoÄ RyŠMqnºè÷ôžéuhÒ]C\s-­ZOy%Aš œAFÔ„e"VEKï*¯tê –:{á¢a ¦µÈsNy&òA .’g’XÉ•—˜‰”Õ:∓p‰D´¢¢mÞ5é§E8Ö•Y¯í éâQ¬Î"ÌIÉ{fÞ¯xOæ”)„ÄÛôwΦ.â2PAÉ[K:MꎒÝå{¦hN¥î eLU k¼T2ƒ×À)×\¯u·|3jhÅ:Ê´Å8Z¨s6Wì¶Š‚" >ðèZÔD7ÓÇÙ­]õæìªQÉz>Ed··p ju0Ñ>âœ7GÛá§ÛêÂÔ2C <¦ª¤dX‡‘$ˆB7‘H®¸ËƒÙ8Ÿ²¿:î tþž¼ýų«©¦‰°Nª¡MW«µ‰­vèƒsnPO°2«@ o/Qެ·P55íËŠÄ™-l‰$»²f!YÅ$ûå1–ÊPHûE›ª%¢>ÝF²{A婊ÒFiRðÏÈÖ4Jf}:€"eJ¦ñYPTMRv÷k·¯…5¶Ú—:µ­ë—zÁ¼‘ 3ň8¤2 &[´$*€wt0OÅ«6ˆ„b€Ò§çJÕCÞ¤gYÉâR9…¯•:€%8˜ýãÌz€À )P¯QÔÀ1®5X ¨*5,I•*¤謄B‡\È¿@ÿ‹¸&§ÉM4š+§WÒ²I%j™¬ð¬](&j ÎèÀ©JuEBª ¦*`")DÔññ ûµ´G µ¢ÅGÁ4EWë¤ÄÆ3rܪ S`¤¡JPûCh)¦€¬~šå‚*;Ô&Mgg2+NŠ9:ýV‡¸€t¯B¼zé©ÊÆìp L9ƒC€K9Ä¥¼Ä)ÄŠè•r6À6ùBˆ™z]‰…•ë©VŽk ­ â£0¼8Ÿ ¸%å##î 4ÓcC¢¡žÔË V¦*Än"b¯Ä=5kk%š(Nx|êS œjF íd˜¾IzRfNdqÆ?>Î^Ø‘ïÿgõ m‰ù÷’x¹ýĵ³dã+¾zÓRØ”¶2kTJ¤¢ïŸÊJ‰ )~ú}½é;Ž”¼¾Ûà¸}É k”€áBÒhÆ;E4æÔGhVæÎÜÛ0]§î%® ºÝ\pñóê¡~úŽhÆSã8‹ùq351ºŠ w…z¼™{ìï·  Ö±<É…hñóPñ-^þ7khÄà~Ï—‚¸’˨ܱʸ‘ïì¨ÔÆ“c(«P9@L˜›zuê¶à#AÔÃ_𜠄ÒhÑLB8—OŽótl«’! w–Ô©AQȸxªI±t`PÀT¼¼‚H˜êSáD õthz©Ý+×{w­%6Ëïøy;½B48ð%ÑSÁ…ØUu³\: ‘ Œà~8ˆqùª¿Bºú·DhB4!F„#B¡ЄhB4!F„#B¡ЄhB4!F„#B¡ ÿÓЧC´T¥ú}£‚ #³¦ïwˆP}ºùk(trãÚµR ÈàŸ¸6pƒ7ñW)zazƒ_ï¸ýpå‚e¬Ÿ”rœU­ v«plÚḶun[n`¤¹O6fÑRqRk6ó,Ý$‚Çö'´ÛÆÑÒc§o&È\Ç`<ß@ ×<4À«›9#1«G,œ‡þž<ºðòœmȸ?–vÆ‹Œí¯=g\3mÊB™4#Ù9ËÆà»“¹D jÐéÏÛ>§‚øî.íÄ5¨i%ŽøV¬?é‰-f\NP,ƒ—yC5Å~3òkOÙÿ¡/»>߸¯–ó¹ñÆ7„äoÍúI°—·lVÙXÀH3Qt°W¢ŠuPÍõ>á{qµ[lûÕ¡Žò&‘WR )Ü@¦TJçÈÀǶ„.ÞDÁðž[Y«”×%/ëÕÄùÆû2Ög´„³ÔJźeáñþ'±\2W”åÁZÇD ³ã(îMpL²d:¦{nö³¤7-ŽK«yç2ú€z²4Bí1´j 9œqì¢SlíÝ)5®ÁWŒÍÏI¬ù˜-œ ò—xôù=òv Éëöäµc#^)Ñ€Bâµ`“·ìø©é•»l\¹fý$U |d2«"ýŸ·ÞÜÎãµþÎàLì®jÕÔr rå=ë"ÖØ öÕh³Ëx¾$òçã/(¯ø»VÓMµñ’lKMœíÇvc¹¸¹S[S¶í¯/5 ЯŸÎEsÔŽøSfé`C¸*$îó}×Û6ž¤†Ïp¹md×Ô ¸¶‡M\uQ®©åÄŠÓ_jÖ¸5Ç—ìNþk/éïÅK ‡\˜¼óacŒ³æ a“íÜ_ Õ„ÿ&óûÉûz͸­…IíxÜqŠíK~׸€· ŠÊ ]­áÀŠÄé>ÑtlPíwm7ÓÓÔáPe”šÔžHÀÕ¤q ©Å<ë8(ÃCO¤ª›œyèÞ¼¶#y²§(-¬o‘q¥Õ/™¬HlzµÛxÚdl͘ÞÓ·e|ÉCAÆNKÅ»¸NõÌt…ÃA™ÑL\W~Ýt;ç³’ÂKˆ"Òu5¤9ÚªÚbó<Õ¡pÀPgU›hyCjó#àŽ ó=N;áh vÐŒð–>¿œŒÔºóÓR²ró{9Ž–MΆ!Å&é Ý3öÓ 5EîGLA¶> Kñié7Ìââ]R $öá€vÅÔT!­<ÃuÃ{ςٔ–W!.Û/ fxŒY{æn@Æ)jÀÙÍÒ6>™ºYZxÞÃsqË^²Vö@fÒ<\¸w%2±!š—rác·{QÒŸOÉue<Æà¼VP¤ %Úca Õ¦ƒSœkÄf–ËXLEÍ&½§îU«sÇÒã0å qǵ­>b¨Ë*O[ø–‘×½¯n4ºze¬%» îÃ…,ÆÕ—™x‘rí9 Y3;D¥*Ê&å§·>ÜÈöm³Y\¾áܾ³¤ÚŽ  W*‡SžByh|Tþü¸_`.@g^6Ü— gä± øö¨Ìˆ"ÙYhy‹bý³¤5IE‘BEͧr3;”Šc Ê5Âúó ÝÓ;ܶ6Î×pÒêP–+´ ü•tÖú@8‘Î<€==1Ö”ÎVuýž¹Ș‡W½·†m›å|WeØ{°2²wUÉ7rÉ΋ÙT‘"Hp»uÉõ$n :ì»7¶Á´X]o¶ïºÝ'Œ9ÌÖcŽ EhKAsœ+Cˆƒ€¥]5–ñ66Šš(´ !ˬçð͉ ÅnÄOތͲ«HG Oìö»¸÷,þ¹$²]ƒM- hsXÁMOÜ4à9±D~Ö2U!Ëþx+”—Ïy9™³NN–m’oËZj÷Å-eÒãŸcpÊ4·,i«¢5áò–Eº &›9¹–1΢I´Y$Ü»+¶¾Øt&Ûw<[“e—SJ8¶8ÛS¥µ[ˆ+ÀâRE­³ZâM~…áv>ÅÁä'ØZ¹‚æ·¸{Ç<‘–¥²ÌÃͲ¶ ´f– V‘Ò­4gpÌ[ÍÅÊ®Þ4E»DQU[A#Cj^×m›¯PÞEÓ™±@òêP°VŽˆüDPPšVM2ÍŽ•ÚOå¡ÂüîôêÊ9†ÍÅ3œGÏÖV1ÈÔ%›ÚrmÌÞMµÿ‰¦ÙÀE_7ˆ6\|ðˆ¸x^³h™üª&0"/N˜}šÛ¤:IÛ¶Í²ÈÆ¼†‡úäÈ+€qC+Ú)AßÅÆÃlN’Ã~?r´¹ú.+…ļxÇ~ßòó6…ªµ™p!}°‹lîê.5»Ðc+çT·¼ìs×D k‡‹b®Ù®ZÊdXœ'ÜOiìöŽ¥·´}ÓÆÎùYW†‚ñˆÔCjÖ¹í «Cˆ€pjKqµåW—+K/ƒØšOy”1Ö#¿ò=Û#;w[Å’ÍMÅ«#~ÙËãLUŠmå\[³’]åtä$,Ú:5pícÛ ÒböÛ‹ŽœÛ7k›¶Äç—I+ô™dhÔÝ Œ~S*áP㨙9)bÚ-p%Bøq•ø-êQvß|yãý«É¬ ±µÅñÅó”î8+’×¼š@ÈÂÅ(K­Œ3‰ñ<ìûUhŲE}ó¤èTH‰)&ÓÙl:ŽÖçlÚ,nmwFKe3zšˆ çn-ÌŠ††áZR¿m šX*/½yáé+Ž0´nÿó-͉5 ³~Çb¨×ÀäZ˯Šc¤å .kåœ(   æAd£äÊ%Y…%J ¯aöÇÛž˜•¶WL¹½¾p£ä/ôãÿ€‡v¸šç‘ hAoœå%æÎ;±ø‹Èkǰ·f¬Cjç|\úæ:Äö­ÔþaˆBʪF̈ôÌ•ˆÛ¸PZ¹M%@Ë$¢Šj^ë{wi°9³m:e+C›«Ú’ IãLÁ¦F‡I‹ynBܨ¦ÙFÑÜRâ…Ë~QÁæ ­!ž]¹CPâŸ6yn?eìi™í¿üÑ={ÌàWvŽKZe+&߆Ÿ¼R°o¥Ð´cœÎ‹+Noÿ$*-H£–áÝf‚k ˆÁغ3¦n·K›Ëó9Æ:Hy@©Ðp¨?b1HŽÚ¼µÍ4áŽJ½çžCâLeÎlƒˆq›0'peïza»¯¾Î½ìƒ“îÈ‚ì·ànø+ñ–7t•¢Îâ#ÈWíb‘™"©7éÊðFëÑÛ¦÷ QíŽý˜%¦?PêyæÁÚNœÛËCå¥qÀ}¼QÉMOeU†ä9°5ÓΛKÓ‡‚øß(†rBþ´²Eñ2ª7U© sÿ +5‘læÐVò†R?¤g NÍؘŠÂ¼I‡!J±äïÞÝì—ÛvËdæ]º@÷?PCM2neÕ®QbKH‰ÆÞzñ+Ó”¼•àÏ óŒï#ñ&[æž@Åï mg|­ÿšá;f&òn‚&ž´±Í¯kZ—Jª+n®°·r¬£Ç>^EPúò€¨R^‡èýM•Í“îæhç‘ÒÅx†5 Ðïc†)_µ‚1¤°¸ö“O™L9¬ _Œxüi»¯+§‹¢A[^NÜÈn"–É8S( ê]“«.îq DËE}ío=f“°H†!ÒGq×#ÆË)­õo·QXÁ½ì/s¶é0-u £8ñŒ­*(15E»²`g«-?Brñs p[•qºH•6"²àR\t§¶Ý1¹lÓÊù'~䨅KÀc#{®Ò\ðÒ."¢œ ”«k icsêuÓæ'ëT‚'’‡7w¹eGäþX“9Ø6ä¦#Ëí´â :_hƬŒ*‡i8º"-ÛrFåZ:é2‡[½çJ¹¶ÃÿCôe½œíÓ(¾c9d&•w 0r^ÆŸŠ¸§¿in#‘¢ºÇŽešÉ¦§™ÆlG¢¸ñg0iO»8Œ¡†›v…)«½ªÜÅÑûŒ©8™‰è…-^;þäÝôýãÕ·Æ+ï7sžÕ½ñ·퓨µ¥È`Êo-yå${6ñاbDìé)ŒÃp«,ÍÑÖ‘Ž~›F=S^•LNo°{w±n—W;ßQmr±ÇD¢RÊáOLE¤ë¯5]¨ZxCŠÊ)Ù'®Óé“ió}ê ÌÜ'šï«p¼]Ãù‡X¬¥&äÞ\Ȭo û¹üwðûã[qvû(ûÌj-\t““—ð¡½>ÅUÑúÿ¦ºVÎ&³c³tA­v¢é5—‡SNiZð¦4û½´:L--¡Æ¦¾p¢èŒL·“˜™E×lk(Š€`ÚJ!ÝGq(%T¦›®¼û+\Öixô*f Š!kákšô’³ÿ?ÓãÌ‘rùˆs_]ó­X·UÙ¢ãX¡ÅtådÜ$˜»âM´ë©A* ˆeT¤C˜ªéY&¸:2KÛ;¾m1¢Ñu3ª¨ð^¶²6(Æž1‹IæD½åà-{](¤Šyqºž½@`Ü NNÂõ9–܉R1Œb”¢!Áìw-òã¬mì /|Á  ñ?PÌö T:¸ÊÐ+šµ¿¹ÍȾ§ÖÖ=ˆQ›õ1w,ë7">lªk*Êä¸oþ÷ol½*DÞE¡íkš6@ uk$  €˜ýÓÜ»–5öºõ˜ŽdÓåÚ¦\p¦j1êçíë›zÛrˆ å£ G4leQ*§+fö@çD‚4îv¨€‡Mc¬/®m:?gž#ù†Î2|t1!g‚¨™‹Žx­¶‚»š0d.P"ñrPTÎg {­J²¢@Tô –A y×dêÍÖ}á°ºGh.ïíU™î8®‘úÀ¹CÖ–¼™“+Y.âv®wˆr&ºriNN´®äŒ`ññ×s÷îg¢Zúʲºü Ušì¸$} 9¹n D óÔ*§Ñì™b¥ÅÔÊ¡„ÁB¶ ˆZ¦t=̧Û˹K¨ÙÜú1ýë8ö¹W¾<áûü´È´† s>–JA/.eJám¢¹”ôˆ"à5ר÷­Âã®ìa|Ž1¨Å1þØL1ÿ˜Á™Ô˜¾¢œ+ëÏtTPÊ«þ^»d·(²Ê;âæ@‚$)Œ¢†= "au­5¾û±¼Ç¥šžK+S·>qà¥Þ¦¹;ŽØpûzœß?ùÉ…qûóEdÛ'Ýù—Ýø¢pEŠ·rc”Ôt¾JP#rìÖª÷4DÞ×*E“.›y·M¹ì–V[´ŽƒrdMsF¡ÁØŠžÝ$€k%Í/`k°u.äo¨'ã¸3szxð+ï$Fæ»öáä¿%okU¾8gs±k!°[8âÃ;黊>]+R=ªÊI®ŠÙÊ`EÎôê·¨’öÃ¥ö6Ûi^÷¿S#†N Éµ4OÏTÌl0éªÇÀÖë+2ÃgXäHåDS1V€(Ñ–…¢&Ý´B 5g޼Ô7Ü/¤”º¬$üV»#«­:2ô›gÉòàÝ8õŠp1“Ø®ÖâB™MÉL%Ý_oQÖ£¶DcÞ­….éR¡®¦Ó%»ÿQÅ‚\ˆóÒ'º(ïâíæ1NNìVÚ "_£òkÝ}_ºÿIéýº}ü†ÿåj»™úZr¢..L¹uàÎ+ñ~ñapÜÑ\gÉ™fö´² ýÞâyE-<¨ÎÊ1ó8P¥Z&Ö•¶]»EQ’tU>ó2DE"]üow÷×xé¿éï™…ØêàiAJaJ&µÈ(’Ì 8®­úo[°í=Pøg"›PLs);‰WŒù%vl¦¢¤0×ÃUÈ^M'WCq1WýÛÊfÅÄÌpÇê\`SÙwg-yˆ´´k7 ›A8YE ™„àL³wä8 fÝãׯ¿Vþéo»†ß¹ÌÈæ·QúÊÅôl´jè—½?p®J±9yÈìÑeLkÅ®2âi‰\Ãh`y arì#x)KÖjÃ:ÅLìÿ…Uµgˆ;G´íe¢­Ê’®P¼öžÚï{·Üw‹û§¶Ò!¤†žg’5ü ZæH¥(J~Èç¸ä¨Î$çgÿñ}›Ã¯Hì"¡_å N>Òq˜n¼åÉŒ»:&¸˜¥ú6= ªÝ€kz8)|ÂH5Š|Å«Š[®©úwc¶ÚâõËÅ ‹ÞüøsP¥j`xkX*ºë,»3zËevrC¶Wa`”9J#lª"47AgáÖ‡ï”o ·–!W€>ÕôÑÍ#5µæÕ«'è¥ék²(š,¼ÇÍÇHƒ´SVÿäáÎù£ÕSj@¿º·öof¹i"rÙkÛ„“}ÁHÿ—oËŠ¹¾6›ió®×un±jÕÒ¼uÈÈ,fåH7¦ykælɇɮyÿo[½þãÕÛÃ.œK³È¯n¶&m^]+±Â‹óÅÄ|Eä¸ëp;d»¥âÞ”T¤~Ê»7”Dhaùõ§õ×Rnu•¬,{„zÂL¤‡®’zé¼V#=ú}$ÐÀS#éÛ‹HB©¸ˆ\79 Q ¿F¯Hû‚Èîv­§ÔmA·aùÂ~àb³ž²€åìWý(ùÁþBåÜK‚îÜZçå5ñ%Ñ1iC²½ÂÑǧ²ânÃÁ9M©äY;¶n˜°IB¬ÝF*‘LqT ]¯sÞ ‡Lm»•‘?µô9p¥(0Ê”#¸Š%É'§\ܨ¹/eæÏXL§?lcîpòÒæŸ^>Jqhè¬Ér7"1ëËÎÌK½{*Ö6&1²‹ºxíd› ™Ç85̶¿qwmÒâK;Ë,ôq¥r .$Щ$€8¨M»{ΖT¹O½2«óÜ2.‘k‰sŠǼºÝÑÈx5`²Æmm™©r.ÝfEBÜ¿›Æ8]„J7ͦ*%•¬Þ‰êç?}ô.Hå:M{òù>Xµ¹üБN>BcëßÑüêÊyí<)žàøãéý0í’ç8㋽s‘>ý‰TŠ·ZE‹×‚±—x‚€%4õ2K¤»Sv[ûýË] ÜÎàN§˜üJŸ£Ó/sùweX?&8éëkh0Æ‹û†ió -Ƽh›¸¶Ü†ÁP–5«ŠñeÈí>ËÏß™Fø²m(¢‚³…!%ñLœÓm‚æöÏ{ÎÙ¬ŽÍ ø»H>aíÍ–¸UÏŸBKÚ>Õ'å¬Àý#Ý9Ýþ^b{Â\ˆGùC(ÀÎÊ ¢ëŠe$nÙÅUb§AUÔ¨:ÕzsumÇSGÓTñþ">ܼJ •Ÿ‰IKËÉçç;íì±#w¡Ê\ù.õY…{ŽfY]yvê·®P]ár»{ši´’ )õŠ ì†5 a hžæM¸C¹\EÜ®¿M~‘Š|çàx®žæGØ'ý:WÕ»v"X¹nOòÒÝ[D?*)¼U6sÜRRL×9£µµ‡®tÓ@Ià*“’n…±²f{xÑ~¹*[\é¨PãÛ¤Ÿz’ÀfufRcÓê-‘=3½vH-“LÏx™‹JôCo×€Züšˆpo7|u ¥ôÞ¦ÇÊOšD‹B[ý£ø®Bà¬;a>°Ⱥƒdº«1D{¦ìýM[ì8’¨ˆ˜Å®êT¾‡\s~ê Å›¤öâwpøª©n\ד^+·˜6øÁx Ð'šÆcÁ‰òÁ±ùï!†Õ¹žZVÝç|’ÕâÊVñ¼¬AI(­‘t(Ñì«>9&ŒÐÃÛXúîý8Ÿ¥_5àÔ Á¨?ËsdC­Év#WØ:h˜ûýCœ_°rÎ2·Yb/PŽÙ ­Û³†¶üé£ðîRÄ)?MEf°%•/.³{Yqû’/}³JQW)H–í³·Ý¢ñ»SÀÜ£Œ†´ŽÝø; °ú~pSŽð64]°”;(DÜPnNqÚŒÄtÄ*§i3%åº/¿Gaˆª*ER1LPxNöÿxnå·n‚FÉÈ£¤ÓÿeØÊ…¤î±ÊÙã]ãâ>_BºñòEs±Sh@4fÙ&¤)€¸9Jì %LÅú¥6š€+×U[†¹®~OO©½QÌ)RZ}03)˜ÜÓØªQÈÊØ$àC“ɪ©‘L Bãð(!ÔÇEë¸5Þíï©NÙ¿î/s--¯[ª0rF 4þxõTœIcel}7ùï¶s†—Œ;‡ˆ®«·šö2ÝQ¡ЄhB4!F„#B¡ЄhB4!F„#B¡ЄhB4!_ÿÕ„A(.ãÁ3ê¤tÌã@ÜBˆ6~ |Å܆‰uLŠÕê´–Ï9?Ï>5XïñòZ˜®K:Cgçwy^].x‹AÕ”ê×|”ªÒœÎ?¸ãÑi8DZN¼Û¨¶†î2(š½×Ûïs±mÓe”6?S]x×NŸ A‚²·º10ƒ•VÉÏ©†n¸.ÿNoOË»+ɬ¶@[ Þ‘s’ÄK†íÇP"2ÇŸžzàÊ,º¢Õ\Å0£Bí6àzϤof7Ól»kîÁ®·E‰=®hpi=ä'ýHGú-Õà«õñ;ÉÎkæyÓ•·’·¼ Rpv]¼Ê=¥¿dãËe©»­­›ЋI¼=»‘ˆ~Ùw(ª¨õ§uŸ¹&ý¾Œ3j4 ¦À(Ó\¹ôn®UØK=å®8zòÏ+`‘­»-¾sYðŒ”y sBIÅÏCqžê´î;fãa+q[·D$“–O™:nªK·p` †Çí¥ãÛÐó]¼ÐþåÕãø#p!XZšA^ÿ°*™…ýO¹sf$¯¸}Ãl“®8×QçÌ8ûÝ Ì[ÿx¤å7.,{vé¿®KFÐvã¹±DSf¬iĠЩlM:ùz·cÙ·Ûí!½¡F³žœhI W0=‹V éŒ$ž)ÅYÁ¸îNBå+vÙä6O¸æî;ÖéŽÍÉ\·6AŸ»ZÊ6~òí%¹qÚW ç¨ÊI‹´A¼ƒb‘Úˆ’(¤nsu×V÷ÛÔSÏsDÇ[%K]PEHkšp­EÄ Æ )œ±)Ç›=B¹{Êö=Ë|5àãkNÁ„“²q-çhbl· ~a¸IFQ°ÆòOs´¤<M™Â2!­በɉ·|Þz÷iܶ“c$äº=-§”N^l)Ã0(0Re¦3Z)# » à’M¤¾ÃÙÍuâS™Œ±³½½qÞ:/Êö)ˇDž¶®û=Ë÷í–ˆWt³5;XŠ"¦â‰8¿In[vÕ¿É4övó1 €%isAÔsy…4ãQBp5¾¦BKAI~Ló«˜|ÕP·¶iâ—mÛýš16«Ù‹qÎS·óM½nÜ O´·¸.<ÓxE¯³•œé¹\é år¢dES]©ºÓdß,E¼ñÂe sPê5À’~pªžûˆän“Dü¹}K9”¶!›À1\ôþ‘ãÕñ"…ÅzX³—7ÈFOM4”…‘JvEpäcgfãÞ[ÑË5vs™Ãa`ß¶r‚)fíý}²Úí¯±e­¤p kƒIzðŸ.Äz~Úc9R|g@æl‡Ìf¥ìL¿v_VÍ¿w¥· %bJµÆv”<Ñ¢ãÜÉ;”›“ݪáú‰yR#Ó¯:‡þŸ‰–w’d 9ïb@>4Æ€’IâT§Ê"hÕË牷ã÷?¹eq?”Þ•¸2Å»3j’ñÑÙˈ±K㻊וcúq9ÛŽ)ƒ̼„ŽòYÃ÷SnÑe°L£7 œä]ì=\[iu¶±ú²sy\Ü3¨Çé§qH9ù\ÕF­»‚3*fŒSró€Å9s$cxÅ:\-yÌ[Qw"*5/•2sÌctQL‚ Ô¿ 5æ¶Ø#Ø·[«x_ªHí'´T€~!P\D!‘à*›ŽòÎ?l{Ž-ÆY³zØl\»qNÙ¼Òe*nÆÚ÷U*áfg =¯ˆj)Ê"]PôÍõ–Ù½EygìÇ–P\ÜxÑ®a¨á;ANÚJÚêp@╜Žõ7æO1›AXùï‡Y—=ncîØÄùz'!bvHèùñäÃì÷1 ¯—ˆfb"¬{– £D fæ‰Nû¿{³nû4¶²Ånçȧ–¢•o6pÌ`¬å¹c˜ê´ÕÆÑ‚{j5YFÅš¤U b€íÚ@ íÜ"=}¿.¼‹¸ÏKéÿ(¸ª§º‡”à²c9¿Ÿx_q¥yàN;q—$äx÷óŽàr^g²²%ÓxZ¬§áÛò0vÛËK*ؑёkGµ\»ŠÔ^Qû¤ÅqEaH;§µ]U¶ôÜdIglnK‰õ\×@p´@áQËZ¹ØÐÐJµ±fÁ«·ŠªÎóvYä†Rs”/Ž9ñË]SWEÇ|¸ã¥—{ÙŒ²ÓxH7•—¹ïFW†FÈes8£ä”Tjfe:®×QR¨¢‚p›î_Qm;üm–(bl¢µ-LMI­;©™ÍbêfJ&ÅÊ>Uð¢ì¼.ÜK"ñ´òl[yc å‹eKËd¸TÛÈ6E¥ÅÞFD«6i.ñ$Õjñ:.TEpY#Dö˯À&µ.)©§{Ž'íE¥ÈŠ£ðªÝ;ÍþN« sÛ‹hþ“-¥—íšÚ6= ä5÷ž8Ô×4¿]ºi¤hRÞ?óëš|0µÙà®5ñbç¾Æì–QÊM¸2$œ ù`™<©›k1YÌÒ‰EÚHlÑé¡ÞL‰ WBûÓ](fŽÒÎͯ}C¥ÒïUÀ»V—;]4ƒJÑ€­*‘Íh4%-¼á™ÓÈëeÕø]Ä t·ß1ÁöÎ;ÉqxvjBnfqÅß%d/—ßÌ'>uåÁE¬³X¢´j‚@È U;·Ž·é+ޟ¶ØÈæ¶šÇÉ©:Ëu‚^+AB@“GÍ KBÙòߟÁæ©¡-ŽAñ…Œ†‡RذòÍŒ2ÄTÇÐ*ÊEIº‹µ. Låp ÁÈÅ‚^]Ük¶È¤²ÂŠi(¨©®‹¸û¡²uÔèÛs6š¿ËW|k‚Ëîð[…V¿ ò/˜\7°®lqcÅãlÝÇ|„àò—¿ye—#b©)Å<–‹bGÑvÔªâÜŠ±|“U&›…Û¬ªD1un›÷Ns²]zrXF‰¦ãÝòƉ†Ý“ob_dNaòk0Z38s`Ü!Ä [wväh¾>Z“з.HHÀ¨[·¾Bº®[¢ð’³ˆä¢ C6rÊ1Jy„7 ¶ãÖ›½•žÙmmm£œBÍ%ýÏq%ſݨorÃî#cHcCAìâ ’Ø TÇë[î v @ÄSÁMÀNCwÄ8€€‡³\ÆÇ}Ѻ ¨Í©UÜ&mù=›9Uê3”0´Ï'Öµ2Ààq­œ•«pÇ·˜.›8¸ò ÚÓtC"^fd®Ú k•ƒ~ÛDD¦ö}ëÜOßmð´9¢PÚaÇ´š“‰ãõ+I/5Æó-¦LÈÜ¢œâ=«éÖÕ{pœc·3yyÆÍ…øºžjV\¶#™sÜ Û§Çhݳ Ρ"S{÷©H »ƒ².Yõñþ„ld"¢¸ã\q¦t¥qÉd]·ÒÒâ¶U™ÞÛØK‚ FRPÓNœFËÅÊÆ(‹ÈÙ8Ék 프{ÔHª+¤r*Š…)Š`×4´ßæ‡t}ËA­Aú”ÎCõµ6.ïQnD] å9Ä.'r·&Ú‘¶¼.rÈÖnD·2\ì\A„R5Ö1ÉU¿›±2…Äz·»¼Ç2¢rõsÖ{FìØíem5ãž ~4p⺊@=F‚GjLæ+ï–\þÈ6…ñÈé(VVÆ3…<.!ÃöºÚÉÄxªSh‡°ìÆj¬‹8oݸYÓål‚'\È ‰©ên½†X?oš#€4Q­o`!ö&./†Ø¬Œ7©)8ÃŒn|†ø[Á ¼yìè» 0¯}âL»pÍæhhÛmŪº¹-Ëù :´´k÷§rŠm[°Üè‚ç(ÚôÏ]m¶[q€ÛÛ09 :u_AJ¾®5'&€U9 ËY4´ cüqU:Zí¹”º®U1¥ƒˆœ;W qÖ*ޏ!ñõ¬Dc°+Kb6è¹.ùöÌÜ‹Q]@s$íC.ª†Þ Ròþ¥ÜvÛýû÷vñ±­qÄ4Q¢‚™|sÍUÎöK#Î{•м}^¹BßÜ|TŠà§½.¬i+…ó“ÈIÙ²JÆK·¸$ÌNI åÔûy(Fk øçMÌÍMB‚){F×ÖÛl;pµÖÑÇJèc\Žx“^úÕZEvÁn†Ø?ñU¯ˆü±ÎœÉwFyÁœ`â¤æX¸efæmI<‰då9T1,uÀÒuŒÅ£‹[Ú¹’ÌV&Õ>vb„’’Žº.)Ì¥^ßÖö;måÌÚ#!Î̇rƒÁ¼Ùx×Å";Æ1î:*åžJó"ûa{eŽ6ñwÞîfîÌ€ì+þʺ/c%æ8[^NnŒ¥}1šHíÜÆX[‘éÌŠ@eÅ4ÀšäÞêõNnRG8´µeèu]+D®m Hsµ@T«V·(˜¿tW9  gxWþÝ"N‚N†½¿ÙÎ#SFÈZnê!³´¨|¡ø¹ ä\Gª--{ð©͊îù,máæãòÒ­6_oBg¬ÝCJUQÜRÔ´øˆaè!¦,7¯rÛ7») .a‘¯±í ŠöŒ1QÅ=i# š7°ó‡*Q«Tê4!F„#B¡ЄhB4!F„#B¡ЄhB4!F„#BÿÖZÛ ¨ª Óhí( €í÷ôðöëæ~æÃ¥Îjl…¼ä[¤qò8š†.ââî &ÛÖš×És[V¸… H«áÜ,Råî¨Å¹À¡@¢]z€{vˆÁ¤Cs;M=Có¥‰â£w5 íÔȊ⚤Oi@¦¥¡Pñê#óêm¤£÷QºsV׊K8¬Wþ¢Þ .b&pM»Šølß\3HÌÏâe8‹ŠVÇsò?xG=$¼Å–1Ãr’HÈE³\,ÔëÍ‘R»“ ‡®ºÜý½»_í_«O#"c#©þã@oЮã»m(@øeøÏjÍD8•ytÛÖÜSˉãû±¼lCH;n,ÓNÖ|æ2Šm øA6m’¤Ý*e €â_¹E{}pëWQ®qq À šàC°dgí` ‘¼c"”j¬O`HgfQ©]ûÙ0|À[œÝ[¼D@k×pP)á­(=í$‚ió&\Ð)CPUm艈—ŒÆ«' 3l—! VÒLŠ®™”¨í/šDà$(€Tß.3ÊçklŽ?Ø«Áß?Ñã[ná)>+3¦I* ªë“Èͤ$¨ì,{² °¢"PS¥u‰ö¸ÈÒjåŒ|½Ë*Û‡p•ñm/Ø…MDæâÉÙ¡ŒŠû¢fÊ(=ÓT;…8›ßM4é'ôõ]@PA S,k +h¬ã™8Z-:91[”’ ˜Y.B¢C3ñøiæÜLcoæ È-“K~)¼«&­RM7mVˆ~€ óQjÌVP” w ƒÖ¾ñÓ÷ä‰ ÀÔGa=OjÅií^ÎcؽLÆY£u„¡S§0ˆü"iìðÕ“%‘”-y68à´?uÇ¢S‘Ñ›ã! M´ˆšƒJ¿NÏ$Ž¡sÉ .¨È(Üzg(‚ÈåÞ8…j""%á§-¥,s(üÐO5J$Hxä½6Ój%!@@GáÚ"Ô~Nš·7¿Í)ªVªŠ°c¡·™“c‰L;ˆÐ=¢!Ö£^¾ý"I%1¸z¤ %a‚²6 hs¤Ú‘ìÇhêŠ"Q(í À;„jb޹‡P~äI%%v}«-qÈœg ªAº5¡‹°)TˆZ˜@wÃ§Ž´×ÏpÂO¬ê©~Z\¾AE& )G3¤]…©€:õ¯þÍd\Ü~kª™ ‘ޡן'm:Q(¶~n<Àñ•¹@â@îO¥Ó¨të­bÝ'·Ü!kæw¦ì3í¢(iž)%÷{G,ö*Õ3—hЧ‰Jb…xW¡zuñé­‹q•ñ^ëÖAÜj–‚&·+)5²µ4-I.-…ƒ Úº* @ÛL P*”5€AüzºŽWŒjœm(ÕDU ()ÆÚ(ˆPKù¢oÇ«å™ÌÁÔF4«”~e ˜ ZÑ(WqiñT(PÖ¾ß &<ñ8¢¸’FkIÒ5»¶EPR©‰Ž‘N5T !N€SxŽ¢_ºF~do"‹#2>5è R"’I™#‡ÂR‚Q ÛNQ¨âõ÷é³1–-EÄ’³õ¯9Hˆ‡&9ŽÁ¹ûÄ“9“¢`¥ Pj:a˜1Á¯8`›$‘– {7Ì­HÑ N!vö«R›óL$ñ ûôΧÆóÎHwýJðu\qJu¡£éT<«pó %(ì7r€tºu¶ÓßQÕôZjjÓôqO1Ü¡¡ØÑz°lÍ DÀÑ‹5À^Ñ:pí І ³X¸sÜÍD>”š¼ U¨*Øa¿º‘tí·)U 9`pLCíï¢@0†¢A{<5źÞ\k:Á£±áÇïJæ'U±X â=ƒòD¥¬[è %0Ô: a ø@Ô®’Üu`ëid­Ä4·OáøS—ü5T›©ŽoU™?¿â³•YS·•  ÉÝ’FVÀPn¨˜Ô:­„µ÷‰+«Ù4ú“ALÌߟҢz`ŸR«½š¹€.‹_I9HÛ žb‡SqíT’”A2ˆü)³‘Y%GƧxou5êÏûvê‘u¶n]'s'çÛ8Í9úOu$¹²ïJÝ:zçTRZ=ÕsqGÀýk§:ô¢Ù¡ЄhB4!F„#B¡ЄhB4!F„#B¡ЄhB4!¿ÿ×Q@²õ*ˆ‰N;kÐ¥÷P@iZt×ÍKòÛL‚Òâ󦨀…Ø&©ªJSáëAm<5¬¼8)g"­VH•ALÁN‚Q ÔKJP:tñ~¡1Á®ªÀâKT%ª»wP‡¡h""&-MZÐK_hêu5P°‰ÒÕ±ƒòL¥™ºQ>ïie2÷'V'-CÁ% SuñÛ©×2Dö´8Ò½©`ÐÐW@#ݑŭpŠ'å•MšªdÜ)*ÂA2‰¢Tœ§Ü¥>q¾$™ ¤ù›E ã VòV%£\³*ˆïr$jää •@ý¾)`7bøô7Ošˆø\ãÊòHÄU E&Ìœ«äÎDdÁßmC¨$2N]§¸; Qº¨˜S ý„¾ÀÓå¦Iq€íEFb,¤Dôr‹‹5ö]¤SMÄ#Õ…‹ä€¤Ý´ÍÖ1T0ÃOÁ¤H CP›Õ‰9¬è¥g¶…Èèä]6ë)p#ÝSQ#nDZV§© õ8ÓAi «³I uY¶¹ nd9Ûp‰™É5Ü(ÅÁO±?DÉ$Üâ&7j!Ô¡Ô4Û_¤¹œ jÕ3‡ÞRlÖn4v %š‘j¥Û^=c³”25«ý! nöu®a$Tæ–§¦Þâ* á7vI l‚â`0‘ $EÂ@1A>áËÔ}½zë^Þ-ÃecÂÃÉ}0Åx³nõL\·n³Ÿ.dŽª¨Aw1ç0P>  ÐDGKµ¸1´ÝŠFªÀ¥ä¤38ùwglÅ&é¹lš¬D S Ò0}Gü@­MPÖÇe;Þ^òQ‹•6äŒacò[9´How[Qr ½ ÷›3¤0@O±4Ì4ÿŠº"il3DN,}iÜïãTÄàpK˜w=•Ú©_ˆ í Ó·à5ê& ‡Ï§dÓ,n`ÄtnÌSBH½ÄEN¦- `­áˆ{€j4ù5ª;–GaU ’Þò´ŒNR¬¢b!C€˜ÕTz€Ò£òÐk]E•¾WQ$­Ê¢JeÕ„£A5F•©Ä|GÇR¢ysj‚I¥V°ô*¦)JS »­F½z D~MH!Îmk‚%Cç€÷?÷»”ê"j€Ô@½4¨ÜjÜ2I¦“TÁhJˆWhÐ@Ü%Ý´ÀÆöû+«x‰v5Á, * þ´PäPJ1U¨ü^ß j&¿.Ÿ.n%Ç ”'šÅ~P˜§Ú4§^»«P¥ÃÝ­'¨mËØ^°ÜB®ƒsÝE!ÞjÃøºü%ú?¹”íÓ#ÇõI·ˆ;7Rƒ¼Æ5FàSÖ€=šc…Z±^ €¦&:*ä•(¦¡ ùà`íÚ?íÓOµæ9/~e–€IÔpHi˜sÄËÈGˆQ4Ü(ªuüäÜÕí m5[½Ü¿¸²µ¸n&˜Ÿ™šÐ *ÔÛT(h˜HÐÕ÷ @­tå”ߘÒrPèNÉ%.6¢RœLP üh€ÒzW¨ëyÛ¥Ô[*Á¥¢€$¯ib˜w¤p!ê0 *Q¡‡åêÙã 4w ,3NM(—e]„GpãP:íèP£Ô¡©18Ó2–i¨^’©÷Rtå(€ÃQ=h>ÿ“Ji«ôÕ`‚Or† c¢ëÄÄø†•èp¥j.f‰"8bV(á’gÆ«¸„9„ UˆP¥ *S˜z€ôëO—U–bñÌ Q5§Î½:ÚÍ@0u²‚#Q¨, 'ê t¥|5†‡E)k›ƒ¾Ä—4Œj–ÒR`'U‰@HÅ ¦1VÝBAÜQê!AÖÇɦ‚ºJe팆 fõSÊS¦m¢oˆ6‰LP:‡Ñù}š¸·h¨cŽ5Ÿ½{˜{n© “´Ê¨”<*¦¶µÔ ‡QðÒi©Ž©çiùþA=&†–Ð'&;”ì®ÔåÜU™(DÇã1jÙcî)€âMq§MÁ­ ªmL°ÎÁÃêHõO¯½¬Dß°pÄÆ]±@Â;¶º ­P  "z’>]r-ŸpvÛºDçFXÿp?L{*“s®-ÿ¼ÜGܾ¢ŠáÁžE¨z“éÖUˆ˜ä'P\‚bRhë— fˆ§©.m\Ïë90®ñÛOÕ\Í%§˜ñNËÇÁnØÿƒg?¼-ÏëhjŸyÏàýŸ³ØÿjŸûå×å&¡Z~5æTBìûT?Z·ä lÖ>W|R¿Š¦Ü¤ú8Ãõó¬u?þf÷ý“~´ÅÆE!ã|þOû¬Gåw‚Œ|ðø„äÝG?èZ¬ÿ¨TöæTm?Þ¿ÛþÔWþ‘ðX…¼oâÖä?o—˽eÙ­cÞCç/èV ý/‚ÀÌ-×Ñüò†™XvnKEoä›ôÃWpyWÝö¯†_I/Öééä‚fÚÚ¦ü“ZÎóú¥µ[Ëgì‰óÿ‰®Isú’øýŠDy0{öƒþPÔ4ÓüŒø­c¶_Ò.ž“ôJOâwÁ-r/øˆŸÐüšÜì¿úV|ŸæwÅ)å Q[Õ?vWù&ü¤Óãõ‚S³*§ï?^O÷i×þ›>?bBcBþì‡òÔÿ“U¶ÿæ$BþI}›ÿèãüèis~´^)·fRŽOí“þYœ6ž‡7$IæÌ£K}¢ÿ®Sôõ)ž`£,“~ãÿÏ~˜k?þ D¾Aã÷¦‘ý¬¿ôQþ¶ÛZ—R–wØSLóÐë÷x?Õ¡ýg^x¾ýk¿ç*k2zÜ4ÿ6ÿ¸ÿ9®Þßò±ÿ²+P¨>]«{jˆ‘þüÓ[L;ý_ò7ìO³ÎWêÿü«ÿØwÿ¯Gké?Gÿü—KÿùÖßîXºU·ùkäoÔ [}F„#B¡ЄhB4!F„#B¡ЄhB4!F„#BÿÙ././@LongLink0000000000000000000000000000016600000000000011570 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-reference/images/hotels-site-bookhotel-flow.pnglibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-reference/images/hotels-site-b0000644000000000000000000003334211360615636027713 0ustar ‰PNG  IHDRƒk¼rªNiCCPICC Profilexœ•Wy8Ôo×?ß1Æ>ö±3–,ÙÆ¾ed'; cÆ2ÖiìK¨ÐO”´Q)ÒB) %[…JQ‰²ü²¦B"K‹æùCõ»®ç}Ÿ÷¹Þó×ç>×çœÏ¹ïs_×}^a‰€¨è8ºëv ¼·/žeØ< ‚$r,ÍÜÅÅþ£­¾à…*‰F‹üϼÿÕ°to_DB7±mbwHŒ£Å a @#Q4P¡»»jÀ†nâFÀmânÀ&Cã! _4… À2€1¡Ç’°*@¡Ä’£°GPjQQ1ž6P$Óèq<³ êíã‹ß,™²`ˆÀ¼ùÇ. Ps @\úŸÂ=aÀõ­ÿø–]÷,6DKN æ1cY€å(ÀF!ƒñ½‚ÁØ8À4ÐIާ'ü:/éøoëÍ=ÿ2&€RgrB‡1ïÁœb¹ÎÚÁ6Äþ‘c‰‹+Ä-Í£ÊkÈgÎï à.è…ó" SEh¢±bqâñI’©R™ø,é,™²åo9!F¡\±ZéÚÖFå.•ÕqµU»†Œ¦––‡vªN¹î#½u%C’Ñ™m£&R¦T³ÛœÄ]–7­ù¶ÓmúíÔí9|vrp®ÝÁíéöÈCÌ3ÒëžÖ7`gµßbÀÁÀÞ n²3åhð³Pö0sj|xmÄx´eL"íêî7±è8B|@B~âݤÙÞT“4Úž²ô®Œ‘̉½Óûæö/f-e¯ælü…Îå<È›'˜/qHñ°VÑóB›£;Žy÷=á’\D-Ž8qšz†Z^v–Tæ[îvξÂì¼Æ¥J…ª-eªñ—$.‹\¼Ê[ÃSËyùÚÏëëuË7æoN×ßêoxr»³±©©®ùêKwϵœ¼w¸õ`[VûÞŽ”NúýèÑ#»HÝÄ\ÏÄ£3žØõ õÎ<­–ÕçÚ/Õ?ÿ¼íEáË€Õo¯ ‘^«¾þúæápÁˆç¨ÄèÔXÍßô·ºo¿Ž7O¤NN®N5L§Í˜¿cz×3›ÿÞéχ‹æ¼ç…燊?y/ /|.\rZæZîù’µb¾ÂX½·–²®³¾øµæ[Äw¥ï3?*6Jý|ÃØÍ` ÐL|h³F…›•ƒ•mƒý+Ç'Î)®×Ø^îvž:Þ ¾ãüÙ‰‚¸]BÎÂDQ]1qu 5I])¼•´©Œ¾¬ªœÊù­ E%ÂV]e¢Šª·U=™«QªÙ õL{A—WO[ßÍ Åð¢Ñ 1«‰Žén³óY¢²e„Õ5ëu+Û<»! Ç4§~±¡® £çQ¯%_ÚÎ~kþú{[Id#JBðíå05jxøåˆQòÑ~1Å´WtþX÷¸ÂøG‰¬IɇS¤N¦}Üó)}%ãkæ·½?÷3gqfóçˆøK.—pÐ0Ï"ßöóaï¿#…”£áÇbŽÓNÐOÆEÓNE9Xâ]êrÖªL·\õœj…Êy¥ J•ŠUòåªe/É]–½"uU¼F´VäšðuÁ:¾Ü7¹ë±·¸¸nó6âš„›…ïˆÝÅ·(ÜSkÕi3h·èpêô½¿óÁö‡ø‡K]=Ý%=QÌ =žò ÷ÔÓ¨gÄ>‰¾ÕþÞç/_: È ¬¼ê,Šymþ†÷ÍèðÕ‘´Q›1Þ±á¿+Þ†«/N4N™ ›6š™wöÔûèVE>~˜»;ha×'µOß»>]ò_VZ^úrg%gÕeMxmd½â+õáÛú÷»?27¬~b>cDmöµÆ´ˆþÂü 3Ï2Ï:Ï6Æ>Ìñ’ó1W ¶–»Œ'7‘Âï @ä\Æõ ]Îñ%ˆ1‹ ŠWJÄKZIqKâ+¥£d e1²¯ä.mI—÷PPQdU|§ÔµµZùJœêN5 u5‚¸›Æšæ´V¿v›ÎuÝR½\ý’¡ƒÑ¶mxcŒñ¢É€é-³cæ T¢—¥µ•¾µüvaf›UÛ÷v¯í»«œŠs]’v„ºzº9¸y¨xJyá¼¹|P>_|ßïœð{³ë¥o@gà=RKP3ùå|pn=4 ̆ª.Á±9Õ}/¦–V±û$ý¯Ø¤¸°xÿ§D“$õdéTtêrÚÛ=OÓïe\É<¾7c_È~ç,íl\’³v`þ¯ÉÜ7ûòºò›];\]Pr$¯0ã(íå¸Ç ë“ÚErÅ‚§˜O}9=}f¨¤·ôÞÙ«e¥åÇÎeW¤¹@ªôªÚqѶÚè’Ìe¸ð~|5_ûéäçÂåÒ•ºµ™oø?Ó €Í·£ Pà=àZ P° È €«páp7¤£+Ù€Xü~?¬À ’  ¦à‘çá>L#ìˆ&â‡ü…4"ïQ(ÔaÔ#&V&¦<¦~´(š‚®C3˜™Ï3Ÿ`.³ YH,m¬Ò¬ûYgÙÙêØEÙ³Øç8¼8:859K¹X¸â¹&°ÎØneîbžXžq^Þ>e¾b~fþxþi7vA‚`9Ž—û*)ôVØGø™Èv‘6Ñm¢ bºbÍâ&â6}’Þ’ÓRt)>_ZRú¦Œ­Ì¸lªœ€\Ý—-KòE & “ŠùJJ3[O([*/«T©ú« «õ©ç¬4@£E3CËB›I»C'[×AOR¥¿`0hØats[¥ñq“lÓD³ps²Å.¢›¥•…µév33[3»íö.¾ŽÁN4çý.E;ê\{ÜÆ=O/GïDŸ ßA?î]†þä€ã¤e²Å?¸(¤7 CÝžÑÅíSNûD7Í‹û;A;17i$E5õ@ÚlºeFiæ÷}žû›²¥rÒ¼É5=x+ßï°xÁ@á©cA'dO~(®=^âx–¿lü\ÃùÂJÊE›KjW®~¯]¸þîÆTýXÃlãÊÎÙV§ö˜ÎŒå]Í=cOXžú¼ŸyÙ=ˆyMÎy+?‘65ðnëû='ì/-s¬Ä®M}³þq—ÁØüI;‚è‚Ã^8ðáCL(¤ @q¡lP9¨‡LlLÎLELãhet º‹Y˜9Œ¹ƒÅP1],J,¹,Y]XëÙ$Ù°}f÷eïæÐá¨àäãÜϹÊÊõëŒmçÖá¾Ì#Ësš—‡÷ïO¾¾%~*ÿ¸ÀNW‚N‚pÖ¸v!c¡Fa=áÛ"Z"µ¢¢×Ä4ÄÅMÄ;%ì%$$¤Òðløbé­Òm22s²9r’rM[<·¬Ê)) +f*)(=Ûš¤ŒWîV‰U•V}©–¥®¥>E(Ò°ÑØÐlЊ֖ÓÒ9¢ë¨‡Ó[ÕŸ0xlØ`tqÛiã\“ÓH³s/‹DKc+=kííÚ6º¶:vÆöÖ.޾N!ÎÉ.ù;ª\[ÝÝ×<%¼,¼£|Š}Ÿø1ï"ø{¬'M(6Áé!u¡3TÙpRDYäX´xL­r÷B¬f\rüýDl’grIÊtšîžœôç™R{#÷5eqe“rj|ËuíýeÙØœ„ùÛ¶ç{Z+(,Ô::z<ã¤LуSgÄJÚÏ’Ë9Î5¯¨ê®Î¼¬{e®¦ò¥NéÆB}MCr£}³ä¥–§­·Û“;fï;=¸ÛEè¾üHòñ±^ÌÓägËý>ÏŸ¾Ô(„!Ÿ×ׇÑ#£gÇÆÞÊûMš¼354½òN`Vù½Ù§®sÎóŽ vŸL5?ã—Ø—>-÷©]É_¥®Y¬ó¬}½ú-å»í¡£¥?; €Íy ؉1‘1t¼Ñòÿ9ìý7‹ŠŒÿ­ÁœÔ8[w€¾ºµ+XÀTt“3ð òÁ±Vn¿°~ÕÚv3±£Å¹¸€0â›æîX„N²sù…3£#€¦[Zýн@wõ9¤>"ÆÞ8¡àhßZS± n¿ù«’¥=ˆ 0)aD§M>J€–€2Ä@$ĨÐd  ¢od b!HI€‡H Ânˆ*P bÅÇC$C<ÐÁH@‡PÕ_ ÿSǦ€ÔÿƒA ÄP÷Ñ£n„$Ç$z†®Þ~þÛþb0DÿÉ´©ô{–Gk¢uÐhc´ ÚðhZTÑÚh}´9Úm„ÖA<»=÷'+ñOø?§€¡ÿV«*„ èÁ 0tˆ  îû'6gu @I @ëzjæ¿ß«¸à¤8b -™N ‹Ã›Óh‘ÁxbL->.˜®‚·&«©à5 €Ž$LT~T”E pHYs  šœ IDATxœíÝ}TT×Ý/ðßQ@gT Æ†Æ†$­3$¶½ézƒOâ ‚m¢‰ˆ16Œt5º@-ÉmQžµ’ šZ²2)qÕB^Ô±UP¯IÀñR2©ÉEò  W°:è3"3Ì˾lD"l˜ù~þ:3œ³ÏÞ‡3ßÙgŸ—‘c ”LtD0 ‰@<$ˆ‡$ñD ’ÄC€xH"I£ƒg³Ù.\(ú?0,ž{î9›Í6Ø…Ÿèjûœk×®%%%…‡‡3ÜñÞhéÒ¥ ,(++ øR8:Qmmm 3gÎܹs§èº ‹;wΜ9óñÇokkøRH¢‘séÒ¥¸¸¸9sælß¾]&Öï$“ɶoßwéÒ¥.5¬u¦¦¦ØØØçž{nË–-¢ë0ìòòòž{î¹ØØØ¦¦¦Ìq¢‘P__?þü7fddˆ® ÀyõÕWårylllEEEtttÿ3#‰†ÝéÓ§,X ÕjŸþyÑuQ“&MŠÿè£bbbú™SœauáÂ…Ù³g¿ûüå/E×@Œýû÷¯ZµêË/¿Œˆˆ¸Ý:::V¬X‘`³Ùººº*++c•••G%¢‚‚™L6yòd"š6mšV«‹‹«®®æËöy0Dâuvv.[¶Œ+'$$H’d·Ûår¹g†ˆˆˆ¦¦&Ï1vvv&&&~ÆXww÷­×ñbphêÿÏ’hx}Ÿ$ð&¸²F;$ˆ‡$ñD ’ÄC€xH"Iâ!‰@<$ˆ‡$ñD ’ÄC€xH"Iâ!‰@<$ˆ‡$ñD ’ÄC€xH"Iâù‰®ŒU2™ ?*y×I’ÄCÜ× ‰`ˆûðŸ}>ÀÈ»sùìÃ|öù #Gg ’ÄC€xH"IâÝ9‰>ûì³á¯Æhä³ y’ož¡1’äµ[Ø‹›&oÕþ›†£3Iâ!‰@<$ˆ‡$ñî|,ø¬S§N>úè£Ã¹çÙÏ+mÝDÔÝM÷ªÿãÑÈ,ÔúyÕÕÙs¼±û:MÇ«.ÿlάÀ;-×vîËÏÿÇħƒf<4gVä êjª=~9ügÑÿT]Ÿ3+lPËBÿÐ'‚Ûz饗fÏžýƒü`Ë–-&“ixVÒõIÚã >6jªÌVN*ªµ`¡³iq%ßÎçlþLJzçVÖø÷• ÔÔÔTVîû­J©^WÖ×ÊlEó¤·jm·þá²þ'›¶óûâv×`m0 †Ó˜ÞÂn·{Ù²e&Lˆß»w¯Ýnç½KM³ä«(¿îÆ‹ÒTJ.¬cŒ5ÎW©´¥uŒ1f©ËOU‘*Uk03f©NVå[k9’¯Òä6X ›³K¬ÌR²6umvšŠH•šßÐų֦©R×®MMÕ6t1}¾F•o¸¹jS.Qö‘ÆÕ…ÙDDªÔÒ:sCÉZ""JÓ[Õ…Ù¼k *»«Û¹y§ÁjÕkçn®bÌT’›JD¤J;b캛‚±1¾Ãô¯ÿ¦™fÿõ¯µZ­¢k1hc}Çâa¤P(ø÷VHHH@@À’%KØÝK¢ QòÚìì쵩"ÕsKˆT¥ fKÃaÑÎkI*Qv©Åa9œM”¼Óa©NN.¨ÓQIC³VÍ¥53KŠhmI‹¹A«¢ì#&cI*Q¶Ád:¬Õiª-LŸ¯QiõžuWæªTÚjÓ‘l¢ì:s—ñˆ–(µÎÚM´¶¤Îa©V‘¦Òäp´QñŵI›«Ì<‰ºê ˆÒ¬¡$T–»±-ØØßaúÑÓ†eœ(&&¦£££±±ñnèv»ó›ßÌŸ??88øÖ¿J’¤ÓéÖ¬Y3„’Gà‰”^ðÄ5?¿o÷“áhNòìŸÅý,¸ûZä•W¿µûóPz‡r·'ݯ z²P«ÉýôˇªjKRˆ=ùÇjÍ„·\ë¨tõC¥”Zb|æþ@ºF“h<‘Ó>UsäÏÜ£ ¤5š‡N~¹÷ÃÜjó¬PŬßmUm̺u½òÉSÉFgO¢ÔŸF¦"C+ ‹TQÇgø…Ì,3¼~N¿‡¡Ü@“zoÿ¢í›^tåþÖtâ¡ nA†2N´iÓ&I’¢¢¢¾ùæ"JOOOII‰‰‰Q(¨¨¨8sæŒÑhܳgOkkkTTTVVV\\\TTÔž={ˆèĉQQQž³VTTÄÄĤ§§K’”žžÎ߬­­U(’$-\¸ÏÀ ä3ÇÇÇ;N¾HFFFkkëµk×ÞxãA=ò5''Gà÷À(ç9:ó÷÷˜;wnQQ‘Åb)..Âns;ö«4oѯž|2)é™ôºüÒ—]µ]U÷÷Ì®O4ÕŸ¿á ¢i‰H“üáâ÷›¾SØ$?"¢ëvR—ìš<±ŸïZëÑ—>õ‹{.cPM³55}ÓÔd_Sð‡ûn¬Ùi;·_©z¬°òâtÕü´[ö»?¥¥®2–ή{L¶üà nA¿»wêt:"Òét‰‰‰Där¹Ôj5åååÉår"jnnæ%×××{¦ÓÒÒär¹R©dŒÅÅÅõ\//P.—/]º”ˆrrr, )•ÊÂÂB"R«Õ.—‹ˆxJ¥233“ˆŠ‹‹ù§B©Tvvv644‘Óé¼›Çïg[xôP©TD±eË–Ë—/÷úë]jš¥@EÙGŒŽ®®.‹©4[EÉ;ÿß‘l"m cÌÑF”o¨Ï&Ê­laŒ5”¤’ªÀb©NÖ8˜EK”\``Öª¤YZ33çk’+-Œ±GaG²I•[Ék(Íþöè,÷H—£Ëb1U¦¥ê-¬®@Ck0Ƙ¹:™R ]æ|"­ÞlÑkI³“1ÆŒ%DýwÎZJ×ò™é0QZÃÝØlŒï0ýë¿iƒn6ÏââbžDõõõ<c<8x6ñÐáÁa6›c<2:;;‰¨°°ÐS O"‡ÃÁãiUSSÃçdŒåååñpé™D|f|B§Ó1Æ\.×hKÓ;ÖÉ“'õzýíþz·’¨0¹Çcr®Áì`ÌTx³¢Ê.13fÖÞœCSRgf–êdM¾…±®ºDª#'’æþ¹gò5š|=³ÔåjˆˆT*"J«s0Caj•¥ÞiîªããÒD´¶¤Ž1VŸL”üÏó•7ª¦IN&ÒäëõÚ$m•Ùª×&m®bæj>^MD©ÕwcS06Æw˜þ KeffæäädffZ,¥RÉgÊ­Iäv»c<ƒxÇÇbùv€/ÅçQ*•J¥²¬¬Œ—Ãn¦›Ãáè™D.—‹‚åååñ žD£ÏîXߟÅd2™{ wYL&“Å1ˆŒG 40ƺJˆ´ý*;Ì&“¥ëÛÒ»ø´Ãb2™ü®[×Ýeji1™ïÚ‰3æÃ;̠lj"""ˆ(''göìÙ;vì7nÜ­ótttFÞ‘á«'¢‰'*•ÊÝ»w+•ÊÞ|ï½÷Þ_|a4ñ‹_<öØcD´aÆ–––uëÖÉår™ì¶õä…Ÿ9s†ˆ®\¹¢T*ñÓ@Þ!$44TÑc? Ì)–)¡´òñ™êEó&Ì\œ_™Úï ²Ÿ"44$ðÛÒù´_Hh¨Â¿xëºCï¹'TqÇ *al‡C©TòeyWÈÓ'òñ‰ÌÌLO†/[^^Nß=4c7ûD6›Ý<(ãš››{yúD¼+ä9Nljj"Œ”±Ñ4‡¥Åh\WJ¨±±U‡¤ÿ¦ ñ±LN§S&“õßUéuº—1öÞ{ï­\¹²³³sâĉž÷ßy猌 .=Ï»Ýn‡Ã1~üøÔçÖÕ>ûà+/ÞªÃò¤4??¿~bˆúºêdóæÍ+W®LKKëC½ÊüNÍd²ÆPŸ«€1dä˜1ær¹zÅçOÞ%>ûCãÅ[u´<=V’¤>cˆÐ£ðyC¹ÛÃétnÛ¶­¡¡añâÅ ßgõv»ýßÿþ·gœˆZ[[ëëoÜè5~}Éd2 |μ¼ðÀŸþù6oÞÌÇ€L&ÓñãÇ•JåóÏ?___/“ÉÖ¯_ÿÕW_9Ž¥K—†††Îš5‹ˆÜnwPPЫ¯¾ºhÑ¢%K–lÞ¼966–ˆöìÙ3sæÌ'N(•Ê3gÎð‘שּׁ¬èèè«W¯ö¬¿ ·çô´iÓ"""*++ßyç¿ýíoëׯl“`¸ :‰******bccwíÚÅkooçϹpáBUU•Z­^±bÅ¢££Ïž=ûòË/{ #"¹\Àß '¢{nÞ´AD&“é_ÿú×éÓ§OŸ>m±X<èv»ÛÛÛ;;;«ªª®_¿^VV¦P(x·(::š?eÙ@ííí½*Ì[¸p¡Á`8qâDXXXQQÑ`› ÃmÐIÔÜÜ<þ|v»ˆ¦OŸND/¾øâúõëM&“^¯×ëõ………¼÷Ñ+V¬Xñúë¯QEEEhhhŸ«èîîæü¹h’$ÉåòÄÄÄõë×'$$üᨨ¨Ðjµ[·nµÙlüŽ3£ÑHD­­­=WçI7>Š´k×®šš~' Œ*ƒ>‹ÿ /üýï÷œYÏËËS(ååå7ît¹\_ýµJ¥Z¹r¥Z­nooç1Áeggnß¾ˆš››ùMöýkoo?þü”)SøK“ɤP(æÏŸÿæ›o‘N§“ÉdjµúÖÓd2™L©TÞÿýüqtt´\.ooo÷\"£ÇÐï;ëîîž0a‚çóïv»{Þ8æyÉúº~Úívá*!»ÝÞóþëׯxÖèt:owå$1ƺººzVxdøì%³04^¼Uûoš×6{”ðÙ †Æ‹·êh¹ÛàvD ’ÄC€xH"Iâ!‰@<$ˆwç$:vìØÔcòÙ†Œ¼;_ÐéÅ}öï®4Ü‹·ž7M /Þª¸ÆF;$ˆ7”ßö "I’ðƒwÏnR$ ÿiƒ1Á‹_¼ŽÎ@¼;÷‰|¶î›­âÎI4†:á0Fáè ÄC€xH"Iâ!‰@<$ˆ‡$ñD ’ÄC€xH"Iâ!‰@<$ˆ‡$ñD ’ÄC€xH"Iâ!‰@<$ˆ‡$ñD ’¼ÖܹsM&“ç¥Édš;w®¸ê@Dàµ:::ÂÃà ƒL&3 ááámmm¢+}“c¢ëàÍ$ [X˜}ûö-[¶lܸq×®] v¹\|ðÁÓO?-º^>ªÿÏ>'à I$ÃáP(üePPÙl[+ŸÕÿgGgàµüýýSRRÆGDãÆ[ºt)bhÔB7[½zu`` ¾ôÒK¢«·…c‡á…£3ᢢ¢ŒFcdd¤Ñh]Ÿ†£3ðiAAA¢+ýÁ7öðBŸH¸«W¯N›6íÊ•+S§N]Ÿ†sg"!‰¸þ? ~#Yð&2™ !{×I’äv»E×B$ c It×I’$º b`ÄÄC€xH"Iâ!‰@<$ˆ‡$ñD ’ÄC€xH"Iâ!‰@<$ˆ‡$ñD ’ÄC€xH"Iâ!‰@<$ˆ‡$ñð{g0Lœg?¯4¶uQw7Ý«þG#C°PëçUWgÏyðÆ~é4¯ºü³9³°>ÛÅ/ÿûÃCìöЦ<ó¿°2"rÖ~ôamf~è¥KSÕ³B²žÛdª­º>gVØKðqèÁ0éú$íñ 5ÕG f+'ÕZ°ÐÙ´¸’oçs6ÿãC½s+kûòÝ 3fWQ„Z}ÿÙw›¤Î»8:¶Uª¬$ùÄ«_–žºàȽ9kI‹jd»¬ÿÇÉæ¡”D„$‚a•ÿƶ þðÚ¶ý¥©´_ßBDç>zK-I’¤Î+;KDd=ûÖrµ$IêåyµmD¥šìGtñÓ·ÔóþëœÓ_15˜ÈºwÝòu¯¤«%I½ü­s6"²~”—.IêåëÖ-_žwîÚ¹ßÏ^­­6¿»á…¤¤”mŸšw>õoC“í–Â{•c-Zù8}ÕxÕ?XâO¶³»–§¿’®–Þª:ùÊòôWÒIÒ¼¼]{ó–«%Iú¯²sDtñó¢EjI’¤E늚œ¶½ëSK©Tµ²¨Ë?@1ÉÿÖžÝõÊòu¯,RK’zù§M6Qÿˆ1€Ápòâ-|§¦Y 4DÉk³³³×¦jˆTGLÌa,!R•6˜- ‡UD;¬%©DÙ¥‡åp6QòN‡¥:9¹ N_@D% ]ÌZ5w–ÖÌ,*¢µ%-æ­Š²˜Œ%©DÙ“é°VC¤©¾X­"¾«W½ ¿µœÃk‰²º˜^›œ[m¶ò‰H[ZmjÓkˆr׫ ˆOè ‰Òf-‘¶²…9Œ¹DZ½¹«¡”ˆJêÌÖ*íÜÍU·4°ËP !Z«7™Žäª(»ò{oÕ1¬ÿ¦ym³G ŸÝ±x%çî<|¸´´¤ •(9¿Ú¯¡Üjþg½V“¼ýïRU[cŒuUk(µ®MŸLDD©%FƳV%Íú³™™ó5š#fÆ«+ÐPî§*Ê­63ÆX—^Ešj“^óÝ$r8Ž.}ï»z•SÝeÈ'U~»™Dz­jíaƳTk(×Äsè5”ÖÀsxi£áÈ‘Ã; ´¢|½™uÝXµU¯»¹ªw ëôÚäìJ3c¬«.ŸHkþ¾[u ë¿i8:ƒáb¿JóýêÉ'“’žI/¬Ë/}ùØUÛUÕxÏ áŠñDSýù"š6!ˆ4ÙÙÉ.~¿é;…Mò÷#"ºn'ÕxÉn É{l9zö²g@©íOþþú—¥¯Â{–ãï "ÃwJ™:]qc}šÉ~DÔ嘤ùq9DSÉyîJÕºÂÊîéªE©*ÛÍ‘%‡g¢W§L ¢ žyq†èvD0\Æ]j½ì´ÙlÖÖÿóþJ¾÷þŸ>eØXq‘ˆœçÞÝxôÇÑ?zŒŽª¹HDç>~û¨êÁ)ižÍ}í-ýñåwk‰ˆÈ~KÁ“~’M;öŸ&¢sŸì5Qà£ÿ;›–­üÓ9+ÑÙ½¹)yÁ#ô.üÖ*Þ:HíYÛU›gâÛ!sÛ•O)¹øƒ×^HúQ㇆@?r8®öX:¢W£úX'ô IÃe|½þ¸Ò„ “Â’ÿï3†Â%óÖ¦mœ!I’ÿÌêì’å³X¯/ücÜ I’f.n))^BDdï¢ßÕí,]úéMß³L¢©4/»î™£q’$ýê¯ýhòš—kÌŸ±qæ$I’¤‡Ÿ)1Î ¼§¯Â¿SŽ¿ÿxRݬ-MòÌ15°÷MòŽx1¹ô!I’¤UW’éå¬]Ö¾¨9úXò»V¢ID¡½â)™ˆHõ¶@O?~ƒa"I^»…‡Ü4kk«Í/0Tq3lÖV«-P2àC—¦O‹ŽÒœæÝo;·wÂÌó¶!äFImV…„*¾½.hð…߉³­Õ:A¡ô#›ÍèGä´9)ÐïÛônà`øìãµÍ%|vÇVÖÚ¢Iª•ªd¡ôh~eËïæÜ#¤ÃÁgw¯mö(á³;Ö°sZ/¶˜ý§Ì¸‹½ÑÀgw¯mö(á³; oÕþ›†kIâ!‰@<$ˆ‡$ñD ’ÄC€xH"Iâ!‰@<$ˆ‡$ñD ’ÄC€xH"Iâ!‰@<$ˆ‡$ñ¼êZ`$I’$I’èZxŸÝ¤H""·Û-º åÅ?Ýã5ptâ!‰@<$ˆ‡$ñD ’ÄC€xH"Iâ!‰@<$ˆ‡$ñD ’ÄC€xH"Iâ!‰@<$ˆ‡$ñD ’ÄC€xH"Iâ!‰@<$ˆ‡$ñD ’ÄC€xH"Iâ!‰@<$Ñð *//] ÁÊË˃‚‚ú™I4¼êêêRRRöíÛ'º"ÂìÛ·oÙ²euuuýÌã7bµñMO<ñ„Õj}þùçEW`¤½ÿþû7nüä“O"""ú™ I4ìÔjueeåã?nµZ322DW`äèt:­VûÙgŸEGG÷?'’h$<ðÀ'OžÔh4ííí¯¾úªèꌄ×^{mÇŽÇŒŒ¼ãÌH¢rß}÷:u*!!¡££#//Otu†×Æ:têÔ©ðððÌ/1Ɔ»NàÑÖÖöä“OÆÄÄüå/‘Épº`„Höó‘ãv»×¬Yóå—_~üñÇ …b€Ká?4Ò®]»¶páÂéÓ§ïÚµKt]|’h$%&&^»víàÁƒÁÁÁƒXŒÁˆ³Ùl‰‰‰Ã¶'ˆôÔSOÙl¶Á~(ð]Þ}¢ÑC ’ÄC€xH"Iâ!‰@<$ˆ‡$ñD ’ÄC€xH"Iâ!‰@<$ˆ‡$ñD ’ÄC€xH"Iâ!‰@<$ˆ‡$ñD ’¼ÖܹsM&“ç¥Édš;w®¸ê@Dàµ:::ÂÃà ƒL&3 ááámmm¢+}Ãï…ƒ×Ú·oß²eËÆwíÚµàà`—ËõÁ<ýôÓ¢ë}@×r8 …¢³³“¿ 2›Íbk}ÂÑx-ÿ”””qãÆѸqã–.]еDàÍV¯^HD/½ô’èêÀmáè ¼\TT”ÑhŒŒŒ4¢ë·…>x¹ŒŒŒ   ŒŒ Ñþ O^îêÕ«Ó¦M»råÊÔ©SE &.IDAT×n Iâù‰®ø ™Læƒ_{’$¹ÝnѵD0Bc¾™D¢«06`ÄÄC€xH"Iâ!‰@<$ŒÏ>ûLtðÍV®lñÐ'ñD ’ÄC€xH"Iâ!‰@<$ˆ‡$‚Qê£>:wÅa„!‰`”Ú°aáC‡ˆH’¤wÞygÈ‹ß*&&&**êûÖî*$ˆÑÒÒ%IRzz:eeeÅÄĸÝî(ж¶¶‡~xÚ´iü¯­­­žeãããSRRx |óÍ7Dtýúõ˜˜I’¢¢¢øœ|q"JOOç3+ŠTTTœ9sÆh4îÙ³‡ˆÞx㎎![¾ƒŒ8—ËEDqqq:ŽˆòòòÌf3©Õjþ>clòäɯ¿þzqq1)•ÊÎÎΞËQff&Ÿp8|¢°°O¸Ýn¾8cŒ—™——'—ˉ¨¹¹™ÏS__ït:‰è믿¹-€1Æ’hll$¢ÄÄIJ²2"’ËåŒ1OŽ8ÆXdd$"Òétžeùê333cõõõDT[[KDåååž’›››=‹+•J>3/ßår©Õj¥RÉK³Z­.—k¤Û·ÀõA˜ .èõú¼¼¼ÐÐP"òüÿ%{ŽÝæY?üá‰(((ˆˆx/é¾ûîó¼ãé%qáááDtýúõ[Ë ¾ -ï ãD ´´´ 6ÏôÃ@*•ª©©‰O»Ýî9sæðK{¹ÝQØ#<âr¹ŒFcXXØO~ò“ŸÿüçÑÑÑ[¶lù>Uzûí·=W`ÃCr¹œ_…H=žÛÚÚ …$I›6m"¢””"Š'¢¢¢"I’ ?ÁIDo¿ývffæ /¼°dÉ›ÍÆ ±Ûíü޶¬¬,þNJJ _–_’’’••åv»ããã%IZ¸p!c,<<|ÕªU’$I’dµZGpcî;AÔjµZ­NLLLLLŒ‹‹£›—J———ó‰ââb~3šÉdª©©!"‡ÃÁ'c‘‘‘N§ÓÓ…ÉËËknnæ%óBÜn·\./..®¯¯çw“x–•ËåjµÚl6ÇÅÅ-]º”Ï©Óét:\.·Ùlyyyiii7ŽBJ¥2''çøñãåååüî³ .x¾Õj5?^s»Ý™™™qqqÇ?~ü8Ï,žDŒ1›ÍV\\̳,33“ßçQVVvüøñ´´4Ïíieee‰‰‰üv37¼p~Ó™Ãá°X,¼>Œ1pÂ6OÂшÑÞÞ¾jÕªØØØ„„„… Qww7¿]ž‹ˆˆàŒ±ššš3f ƒÁ Óé<ƒGYYYÝÝÝK–,9vì˜ÅbyóÍ7- ]¸p¡ªªJ­V¯X±âÀÑÑÑgÏž}ùå—ùRr¹ÜßߟOó¢üüüø¡bXXص¾ IÂxîSeŒÑôéÓÛÛÛù µ+Vðgƒðž}öY"Z³fMZZZFF†§„ŠŠ Ï`ÐÕ«W‰hÊ”)Dôâ‹/®_¿Þd2éõz½^_XXÈïPkoo÷,Ë3H¯×ÑÂ… †»½ÐÁ}2ðUr¹¼±±‘O{”<‘Ëåü¸I©T*•J>”ÃÿTVVÆnŽyF©9ƒÁÀ+//÷¼ãr¹ Ÿæ*jllT*•¼pþÏœ999õõõŒ±ææf>´#W6Âèâv»GŸ÷mØíö>o+ãݨž‹¸Ýn·Ûí¹Öó’õuqvÏ›×@$ˆ‡¯Iâ!‰@<$ˆ‡$ñD ’ÄC€xH"!ÇŽ]|³ÕC€k¬a„H’/îl¾Ùê!@ŸÄC€xH"Iâ!‰@ö±3–,ÙÆ¾ed'; cÆ2ÖiìK¨ÐO”´Q)ÒB) %[…JQ‰²ü²¦B"K‹æùCõ»®ç}Ÿ÷¹Þó×ç>×çœÏ¹ïs_×}^a‰€¨è8ºëv ¼·/žeØ< ‚$r,ÍÜÅÅþ£­¾à…*‰F‹üϼÿÕ°to_DB7±mbwHŒ£Å a @#Q4P¡»»jÀ†nâFÀmânÀ&Cã! _4… À2€1¡Ç’°*@¡Ä’£°GPjQQ1ž6P$Óèq<³ êíã‹ß,™²`ˆÀ¼ùÇ. Ps @\úŸÂ=aÀõ­ÿø–]÷,6DKN æ1cY€å(ÀF!ƒñ½‚ÁØ8À4ÐIާ'ü:/éøoëÍ=ÿ2&€RgrB‡1ïÁœb¹ÎÚÁ6Äþ‘c‰‹+Ä-Í£ÊkÈgÎï à.è…ó" SEh¢±bqâñI’©R™ø,é,™²åo9!F¡\±ZéÚÖFå.•ÕqµU»†Œ¦––‡vªN¹î#½u%C’Ñ™m£&R¦T³ÛœÄ]–7­ù¶ÓmúíÔí9|vrp®ÝÁíéöÈCÌ3ÒëžÖ7`gµßbÀÁÀÞ n²3åhð³Pö0sj|xmÄx´eL"íêî7±è8B|@B~âݤÙÞT“4Úž²ô®Œ‘̉½Óûæö/f-e¯ælü…Îå<È›'˜/qHñ°VÑóB›£;Žy÷=á’\D-Ž8qšz†Z^v–Tæ[îvξÂì¼Æ¥J…ª-eªñ—$.‹\¼Ê[ÃSËyùÚÏëëuË7æoN×ßêoxr»³±©©®ùêKwϵœ¼w¸õ`[VûÞŽ”NúýèÑ#»HÝÄ\ÏÄ£3žØõ õÎ<­–ÕçÚ/Õ?ÿ¼íEáË€Õo¯ ‘^«¾þúæápÁˆç¨ÄèÔXÍßô·ºo¿Ž7O¤NN®N5L§Í˜¿cz×3›ÿÞéχ‹æ¼ç…燊?y/ /|.\rZæZîù’µb¾ÂX½·–²®³¾øµæ[Äw¥ï3?*6Jý|ÃØÍ` ÐL|h³F…›•ƒ•mƒý+Ç'Î)®×Ø^îvž:Þ ¾ãüÙ‰‚¸]BÎÂDQ]1qu 5I])¼•´©Œ¾¬ªœÊù­ E%ÂV]e¢Šª·U=™«QªÙ õL{A—WO[ßÍ Åð¢Ñ 1«‰Žén³óY¢²e„Õ5ëu+Û<»! Ç4§~±¡® £çQ¯%_ÚÎ~kþú{[Id#JBðíå05jxøåˆQòÑ~1Å´WtþX÷¸ÂøG‰¬IɇS¤N¦}Üó)}%ãkæ·½?÷3gqfóçˆøK.—pÐ0Ï"ßöóaï¿#…”£áÇbŽÓNÐOÆEÓNE9Xâ]êrÖªL·\õœj…Êy¥ J•ŠUòåªe/É]–½"uU¼F´VäšðuÁ:¾Ü7¹ë±·¸¸nó6âš„›…ïˆÝÅ·(ÜSkÕi3h·èpêô½¿óÁö‡ø‡K]=Ý%=QÌ =žò ÷ÔÓ¨gÄ>‰¾ÕþÞç/_: È ¬¼ê,Šymþ†÷ÍèðÕ‘´Q›1Þ±á¿+Þ†«/N4N™ ›6š™wöÔûèVE>~˜»;ha×'µOß»>]ò_VZ^úrg%gÕeMxmd½â+õáÛú÷»?27¬~b>cDmöµÆ´ˆþÂü 3Ï2Ï:Ï6Æ>Ìñ’ó1W ¶–»Œ'7‘Âï @ä\Æõ ]Îñ%ˆ1‹ ŠWJÄKZIqKâ+¥£d e1²¯ä.mI—÷PPQdU|§ÔµµZùJœêN5 u5‚¸›Æšæ´V¿v›ÎuÝR½\ý’¡ƒÑ¶mxcŒñ¢É€é-³cæ T¢—¥µ•¾µüvaf›UÛ÷v¯í»«œŠs]’v„ºzº9¸y¨xJyá¼¹|P>_|ßïœð{³ë¥o@gà=RKP3ùå|pn=4 ̆ª.Á±9Õ}/¦–V±û$ý¯Ø¤¸°xÿ§D“$õdéTtêrÚÛ=OÓïe\É<¾7c_È~ç,íl\’³v`þ¯ÉÜ7ûòºò›];\]Pr$¯0ã(íå¸Ç ë“ÚErÅ‚§˜O}9=}f¨¤·ôÞÙ«e¥åÇÎeW¤¹@ªôªÚqѶÚè’Ìe¸ð~|5_ûéäçÂåÒ•ºµ™oø?Ó €Í·£ Pà=àZ P° È €«páp7¤£+Ù€Xü~?¬À ’  ¦à‘çá>L#ìˆ&â‡ü…4"ïQ(ÔaÔ#&V&¦<¦~´(š‚®C3˜™Ï3Ÿ`.³ YH,m¬Ò¬ûYgÙÙêØEÙ³Øç8¼8:859K¹X¸â¹&°ÎØneîbžXžq^Þ>e¾b~fþxþi7vA‚`9Ž—û*)ôVØGø™Èv‘6Ñm¢ bºbÍâ&â6}’Þ’ÓRt)>_ZRú¦Œ­Ì¸lªœ€\Ý—-KòE & “ŠùJJ3[O([*/«T©ú« «õ©ç¬4@£E3CËB›I»C'[×AOR¥¿`0hØats[¥ñq“lÓD³ps²Å.¢›¥•…µév33[3»íö.¾ŽÁN4çý.E;ê\{ÜÆ=O/GïDŸ ßA?î]†þä€ã¤e²Å?¸(¤7 CÝžÑÅíSNûD7Í‹û;A;17i$E5õ@ÚlºeFiæ÷}žû›²¥rÒ¼É5=x+ßï°xÁ@á©cA'dO~(®=^âx–¿lü\ÃùÂJÊE›KjW®~¯]¸þîÆTýXÃlãÊÎÙV§ö˜ÎŒå]Í=cOXžú¼ŸyÙ=ˆyMÎy+?‘65ðnëû='ì/-s¬Ä®M}³þq—ÁØüI;‚è‚Ã^8ðáCL(¤ @q¡lP9¨‡LlLÎLELãhet º‹Y˜9Œ¹ƒÅP1],J,¹,Y]XëÙ$Ù°}f÷eïæÐá¨àäãÜϹÊÊõëŒmçÖá¾Ì#Ësš—‡÷ïO¾¾%~*ÿ¸ÀNW‚N‚pÖ¸v!c¡Fa=áÛ"Z"µ¢¢×Ä4ÄÅMÄ;%ì%$$¤Òðløbé­Òm22s²9r’rM[<·¬Ê)) +f*)(=Ûš¤ŒWîV‰U•V}©–¥®¥>E(Ò°ÑØÐlЊ֖ÓÒ9¢ë¨‡Ó[ÕŸ0xlØ`tqÛiã\“ÓH³s/‹DKc+=kííÚ6º¶:vÆöÖ.޾N!ÎÉ.ù;ª\[ÝÝ×<%¼,¼£|Š}Ÿø1ï"ø{¬'M(6Áé!u¡3TÙpRDYäX´xL­r÷B¬f\rüýDl’grIÊtšîžœôç™R{#÷5eqe“rj|ËuíýeÙØœ„ùÛ¶ç{Z+(,Ô::z<ã¤LуSgÄJÚÏ’Ë9Î5¯¨ê®Î¼¬{e®¦ò¥NéÆB}MCr£}³ä¥–§­·Û“;fï;=¸ÛEè¾üHòñ±^ÌÓägËý>ÏŸ¾Ô(„!Ÿ×ׇÑ#£gÇÆÞÊûMš¼354½òN`Vù½Ù§®sÎóŽ vŸL5?ã—Ø—>-÷©]É_¥®Y¬ó¬}½ú-å»í¡£¥?; €Íy ؉1‘1t¼Ñòÿ9ìý7‹ŠŒÿ­ÁœÔ8[w€¾ºµ+XÀTt“3ð òÁ±Vn¿°~ÕÚv3±£Å¹¸€0â›æîX„N²sù…3£#€¦[Zýн@wõ9¤>"ÆÞ8¡àhßZS± n¿ù«’¥=ˆ 0)aD§M>J€–€2Ä@$ĨÐd  ¢od b!HI€‡H Ânˆ*P bÅÇC$C<ÐÁH@‡PÕ_ ÿSǦ€ÔÿƒA ÄP÷Ñ£n„$Ç$z†®Þ~þÛþb0DÿÉ´©ô{–Gk¢uÐhc´ ÚðhZTÑÚh}´9Úm„ÖA<»=÷'+ñOø?§€¡ÿV«*„ èÁ 0tˆ  îû'6gu @I @ëzjæ¿ß«¸à¤8b -™N ‹Ã›Óh‘ÁxbL->.˜®‚·&«©à5 €Ž$LT~T”E pHYs  šœ IDATxœíÝtSUÚ/ðçФMÓ6[•Áˆ z=8íëXG(D w qP¹ ¬³Ð™Û:â’2¢Ü^µõU߬ë-«Ã8SÖ è‹U¤eIU@K‹­áÊA ÅBSKQ’’Є’¤I³ï¡1‚4m³IšäûùGÎÉ>;ÏÞ=_ÏINN"0Æ3&ÔD € € € € € € € € €6|n·{Û¶m¡.àªØ¶m›Ûín(b‡û4Œ±Ç{ìûï¿w8ñññWc$¡Ò××—ŸŸÿÑG½ù曂 }ÃaŸÚ­\¹òÛo¿Ý¾};R‘'>>~ÇŽ:îé§Ÿֆà Riiiccã|˜˜8¬ ÂEbbbCCÃ'Ÿ|RZZ:ô­†qjWYYùÖ[o577§¤¤ ¿<€°‘’’òñÇÏœ9355uÅŠCÙd¨AÚ´iÓºuëöïߟžž@…á!==}Ïž=3fÌHIIY¶l™ßöC ÒöíÛKJJššš&Nœhabâĉ{öìÉÍÍMNN^´hÑàýi÷îÝ?þøîÝ»oºé&N„‡›nºéÃ?œ3gŽB¡˜3gÎ -¿·š'%%ét:‹ juvvN›6íüùóƒ´ñ$Aðß ²ùM>"À‚À‡ Æ®®.ïâ‘#GÇÐ7·Ûíß}÷Ý \.×Úµk‹ŠŠöìÙãYóÝwßÙíö‘U p5pRUUÕúõ뽋¢(vtt\ÞlÆ k×®½|ýÉ“'ËÊʮԹÛ펋‹;sæÌC=ôÐCMž<™ˆvïÞÝÕÕu¥‚CäryFF†w155Õó1¼_|Q¥Ri4ÍfóòåËŸ}öÙ®®.‡Ã1yòdAV­ZEDcÇŽU(D´jÕ*O{«Õêí­­­ˆ^{íµ¼¼<³ÙüÀ0Æ.\¸à툖.]*¬Y³Ünwà#®aúûrr¹|ùòåMMMžÅsçÎÑÎ;KKKûûû8žžÎ[²d M˜0A„Ý»wßwß}ãÆûõ¯MDF£ñoûclçÎ7ÜpƒÙlöô6eÊ"¡°°ðÉ'Ÿ|íµ×ˆèèÑ£wÜq‡·Ã¢¢"…BÁ{ñų²²¾úê«À0,ŽH½½½¹¹¹«W¯^±bÅêÕ«=+ÿð‡?´¶¶Ž3fÆŒ©©©F£ñW¿úÕÍ7ßìr¹ˆÈf³}öÙg‹/þâ‹/<íccc‰hÕªU·ÜrËÙ³g¬oÌÆXss³ÕjEQ©TzòtHDï¼óΔ)Söïß?iҤÇ>"€áâpD"¢üüü3fxþššêù‡\.÷6ÉdžxNÛ:;;;6}úô™3gzÖ+•JƒÁP^^~Ë-·LŸ>Ý{Tñ¼Á——7cÆŒ·ÞzKß76<Î;×ÛÛ{ðàA¹\^__ÏeDÃÂçíïÞÞÞKÖ,^¼Øó„Ùl>wî\RR’§çòÇ?þñ™gž1 Z­ÖÓ~Ïž=åå寽öšÝn÷=ªœ:ujΜ9žkaž7½wpxŸ4555??ÿ™gžÉËË[³f — ß{hý¶©¨¨xá…¼‹©©©íííN§ÓûõõõŒ±ÖÖV"jooß½{·÷¡þþþ¶¶¶ââbßöUUU¾ýççç{ª¨¨`Œ=÷Üsß|ó·C“Éäm`0†zs0ÀùMÁÕýˆÃላ‹3fŒ7´žÛwÝn·Ûíö¼.òuáÂ…øøøË×»\®¾¾¾„„„Kîþõvèy®±cÇŽ¬N€ÁùM>kà>k |~C6y~æ9ÔUDAÜnw¨«è ’÷' £K~R1zàÔ€ € € € € € € € € € € € € € € € € € € € € € € € € € €ƒèýîo¾\æcïl®ýúº9g®úÞ¥ `^]Æ#Mi÷f]ï»Ò~úÐoù ÓAéÓæ.}ð.ÅO604ýÆcr’§Wœö}Øujû­‹ì›îÞ8b¤gûíöÏNP\óg(mF§¯¾úŠˆärùŸþô'­Vëû(ÇqY4eD妋K]5eÕm6æ4hJT"”Õ™cÌ©©)‰ˆÄâê&cº­%…e%"©µKCy‘XØÐf±h+I,(T‘X¹WÏœm…Dåšî™ikIqƒÞöãæ©´¤öpm1j-Ì ©Q©ÊëtÌç‰|¹µt«ty%…ïÞ28¿ãŠä 1Æ>œ””DD111r¹<33³¢¢¢»»›ñ—E[àÙ‹K*ëš$cŒu••Ôél6}¹H[uÌ¢IÕdp:»öФÒX˜T­"R×iÛ¾©- *ÑY,šJ‰5F©šHU§ëjk*'*3X4"©´—íïÞÍmÖƒ³o/7ÙÚJˆŠkuNC‘X§3Yô{UD[Ûlޖƃå³K^^ Ga½· Âï¸"ùÔŽˆî¸ãŽóçÏ3¦¿¿¿···£££´´tüøñœŸF‘µÙiÐ4l½Ñ֢ΦWœ6Ÿx—èÚ>}c£.ýw¢t¢‡ÙõÒ«NíŽnÙ&Q29{¨¸aìôæ—¶”iž™ªPÜõÄ{ÒU¬³G,þë©×ßx÷|½{Ò—öÓgs¹\®7¿QF”LcI–ž)Òu¿œ`>ÖB”Ó§ÿü3Ýù‘NtÛ~lï©öÒJ p$ÆXRR’Ûíö‘&Mšôâ‹/vwwó}–õ/½´ëÂ]ó–>»~3s¶K«ß>ø­D*ûÙŽãÇ;™O¬™}­ýÄŽIbNMÓéëÄ9…·K¾N™@DcÓhl\,Q¬â¿C”6NNDäryBôé±3®g3¯‹‹[wÈìÝü§\–ÎS$&žíè8Þñ}æÕ³¯M¸¤åÏUŠä :tˆˆúûûårùc=ÖÔÔÔÞÞ¾jÕª´´4¿Û‹Ó¤}^ý_'ìDD.sw7Ñu7Š*úT\TôÔSEwô4Ô°8{N’jëæWžZ86’%ŽˆˆDD qž¸úÝ"ê¨_>nö[ŽKz—eýµ„~tÝ +ѱwËV“zþ­ÊÍi '—C""š•ER¢¢¢§Š;¶m8jqþ´%ýl%¨ÀÏG­©S§Ñ{ï½çp8.”ë¸ 5…¢wJ *›œŒµÕ• ¬(ÖY˜ÓФö,©Ôj"U¥V[®ö¼…à4hŽ âVÉbÑ–«Ë4Œ1fÓªH­µ0æÔWx»WÕJ&Ƙwsf=¸pöë&Æ4•j"µÖb©+Q]쮸ÖâÓÒª-_XzðòJøÍCï-ƒó;.ùûUAðßfÔ¤xîã²›&)Æ]£¸ ã²šÍ®X¥R;°l4»”×(cÉn·ÇÊd¾›\V«-.A!»ò(»Õlµ“âå ׋ìv—§[»Ùh#…òJm«$ a½· Âï¸$à)RgÕï¸"ù5@Ð H H H H H H H H H H H H H H H H H H H H H H H H H HDï1 ‚ B¨«ˆ4Q;¥Ñ$·Ûê†*R¿™>’àÔ€ € € € € € € € € € € € € € € € € € € € € € € € € € €iôš={¶Á`ð. †Ù³g‡® ‚4zõôôdddH’4fÌI’222Ìfs¨‹‚ŸçÿgÂú§ºø÷ßÿá‡މ‰9þ|RRRÿæÍ›xàP×üîHÒèåt:•Jeoo¯gQ.—›L¦øøøÐVüîH8µ½âââ–.]CD111K–,AŠF-iT{üñÇe2Éd²?ÿùÏ¡.®§v£ÝäÉ“õz}ff¦^¯u-Ñ §vaoùòår¹|ùòå¡.ƒ#ÒhwöìÙñãÇwww§¥¥…º–è…wí¸x=üîHÑû«æcÆŒAƸ!Œ~.ž£è c AâN„P—x³€ € € € € € € € € € € € € € € € € € € € € € €ƒèý^;ž\ÆOÞy{Ï×=×Þ|çïÔy7*™Uû‘OZÒrg^ïíÃeü|và—úâÓoº=ëÆkFPâ±æ/“ïιð«G¤À™ÿ>7ý¾†ž¬œétxõ”q²Ò›­á¾:]¾+N–ÌŸÿQKKKSKÓG5ÙSÒ_j6¿[k}ná1»}Ó½ÂGìÔ?ù3”6£Ö Ås—ECD{M—šªËÚlŒ955%DDbAÎÄëÒÔ¨E""uqÞɘM*)(.)Õ•Z‹®®@$"*¬Üka–jµXP\@DbA¥ÞƘE£VU;žMW­¢2 cÌ ©Q©ÊëtŒ1“T;ÐI“1©¦¤ZkaŒY¤šâj‰1Óë³¾½¹˜ˆˆ µ§T[&‰•{õ|æ1æ{Ë üŽ A œ©¦€ˆH]XRS×ÔecŒ1ÃÞ¢ɦß[NT sšÊ‰Ê›º˜S_FT®51›VE¤.¯k;ýM!QqÎbШˆªuÆj‰e ]†¶J•ì50‹FM… Z­F£iÚ»µ€¨¤AÏ DbÎdÑïUmm3V‹TP«g6]!Q¥dÑ–«Ë4&ƘES®*Óx‚Ôdl+!*®Õ9m’ЍVo³µÕ©$§™ó½e~Ç…SæÀ)—mvæ<¹gß¾Ö«s%q¯A÷ÙTðGýçDé"IF›òÏz©å„ôÖ?¥O‰î'"§“¨dó GÞØHå–…SDïµé,ãbëΪÊŸwý5¤ú_*ñË“¯ü&ŽhcEÙ™d"²´×ÕN›`<ö_D9}úÏ?£¾‘Nt;§‰´å¥¿Î GWê S2RÃ@uq>•ÊÒ3Eêùå„ØØ®›ˆúëÚÚGçê u™²`OYäÁk¤@ÙOÔ¯|iÏÔ»æ=»þ0³ÕKÿ¾ý«3Ç%q¼½£ãxG‡ã‰ê57'žŸ$®¬iê»N¼¿@´;‰ˆ’U×&xºS<ÿU¤gŒK`”–¬”9$R9¤ªÜµcÇŽ;v|¢­+¤ u’¥ó‰‰g;:Žw|ŸùDõìk•þ£«é¥Ƕ¬œ6)ýŸG¬D4öŠ%»(vje—®nmY™3)ý ¼h ‚8Óëϯ®?a%"rYMí4A¡ü3Tý[QÑSE‹ïhx¼Îbïþ„ÔÛ6¿²láMí[$Y\,ÑY;)&Ý%JZŒDÔ±¾ãrÙÍ“-A1N©ð¾àp™æX…R!‹X´&(•²X²Û]2YìO7·Úœq Åð^¬ØÍF)”J™wÑd£q×_#èÓêŒS^Ö§÷ÙÍÆÓ6R\b˜cLXï-ƒÀO_)HੳŠ_5 € € € € € € € € € € € € € € € € € € € € € €ƒèý}AAu‘&j§4zƒäv»C]ÂDêW.FœÚp€ p€ p€ p€ p€ p€ p€ p€ p€ p€ p€ p€ p€ p€ p€ p€ p€ p€ p€ p]Ar:{÷î}î¹çJKK…¥¥¥Þ£p= |áÑ(©gðõcÇŽ}ûí·ýü"‘ÿo¨ ëo±ñ-¾¿¿ÿþûï?~üø›o¾9sæÌÐ6tá5ÿN§óÔ©S“'Ou!œùý+DÑ×qét:¥R©ÓéÆŒ‰®ãp0ÅÅÅE^І"Šv©o¾ùfÓ¦MÁLÑþýûƒö\£Ðƒ>¸sçÎPW$QtjÇ ò÷€ ‚Ðßß`tÃwþW­Zõå—_†ºüþ¢èˆä›"—Ë5kÖ,A,Xà™ M›6 ‚ T*F#F¥R)ÂÚµk‰héÒ¥žofÝ´i“^¯7 ,P*•z½þøñãž×Ù{öìñt¾jÕ*AfÍš‚AŽ&·ÝvÛÉ“'C]E°0†ÒfÔòàÀßõUUU¹¹¹Œ±üüüŠŠŠ––"r:žx6ܽ{·Ýn'"ƒÁššÚßßÏ{á…Z[[O:åi`³Ù< , ™L¦mÛ¶QoooEEy¶â2„p”ššêøðûWˆ– ]2Šúúz"ªªª2 Œ±§Ÿ~:77·¹¹¹¹¹™ˆ:;;½íM&“Óéœ4i’oÚÛÛ—,Y“$‰ˆ<¦¦¦¶¶¶æææ¶¶¶zŸtÄAš5kÖ™3g¼•Ÿ9sfÖ¬Y#ë ç7QtjçkÁ‚’$íß¿?==}Ó¦M---&L$I’¤ªª*ARSS=-SRRbbb.ïáæ›o&"N—ššêÙðå—_¾îºë$IЧÃÚˆõôôdddx‚*IRFF†Ùl¤C¸ºÏâhFW8"åççK’ÄkiiÉÍÍ­ªªòaœN'¹\."²Ûíž =§v&“ɳØÞÞÞÞÞþôÓO3Æ ƒ·çI“&:ujÉ’%ž‡ÚÛÛ)€#ÒöíÛ’’’ˆ()))!!áÝwßYW8¿)ˆ– ÝsÏ=¾ë[[[‰ÈsØimmu»ÝÞCP}}=c¬¦¦Æ³è XUU•÷=¾AbŒú¶ôDÑËív¬ò¾¾>¹\îíG.—;ŽÏC¨ôôô„º>ü¦ ŠÞþ¾cÌf³%$$xßÍs8ñññÞEÏyß¼v¹\111?ûºçûãÕm‡Ã1vìØ‹/,,ü׿þÕßßóè£þãÿ°Ãà ëÇ—ßDoF¿C‡åææöööÊåò¦¦¦¬¬¬PW4la=ÿ¾¤0.žˆ&Ož¬×ë333õz}¨k‰pŸ/\½èàÁƒ¡.a$–/_.—Ë—/_êBFÈûÊ3âEË)LGqöìÙñãÇwww§¥¥…º–¨†S»ðŒ¸bx:::n½õÖ .„ºÑ.11ñèÑ£™™™¡.d´ˆ–×H÷Üsß6ûöíËÎÎÞµk¯‹l×®]ÙÙÙûöí|J=AŒ ~§l(mF­¡ßØØ˜––ÖØØxUë‰$C™±°Þy|ù‚ÄR4R~ç-¬w_’ÿâ‘¢@ >{a½óøB~þ~$/¤(pƒÌ!îGF£]áÓßH/?“Òƒñû ‹ìùô›‚è½ +—Ëq%„/ÏU¸ÞÞÞPÂ>kwÑåב.\¸€ñ•™™yɵì蹎-G¤a=#vɬFÌ$㈠Ѥ0½)Üá~$Ÿá|š;È»va=®Q+Rg¯‘‚Aà Z‚4”û‘€;\GòiÎg½¸Žd¸Ž#‡ p-AÂu¤Àu$Ÿá|š‹ëHA©³Š×HÁ€ p-AÂu¤Àu$Ÿá|Ö‹ëHA†ëH0rѤP]G2ûüCúúOu m#×±æÏ.ßÅOŽx—]Ææ›}õÏpDsÄ`ÆüDÏu¤h Òo~ó›|dº Â#õf""ë‡E‚ Ó©?f&"™j²<èô'÷×w8d"¥$&\ì/!QEªx"²{ã‘é‚ L¤âˆ™N¼[òè§´B\qÈJÆÏ7Ý/‚poEý1"Š—M–Å…jøÑ¿tuÅM–ÿ?ÿ×p+™:_}}KÙÞu2׉SæO¬ÓÙTqk“§<ú‹¶ÊøŠù«Ót[ÜgeS¦=¥s¾AɽúæG¦Ý7¾®maæØ¿O¦Ç×üïo2‰ˆ.œù”’‰\ï>1mÅÄ:‹SõÙóÉ⣿pþ÷“%ôº­v¥hÿ0.g}δ9áÿ©'MûE›mj¨'!DxAÁûïСÎιóNê;_Ö-=ÿïoTÒF*·,œ*#*Ö–'—íËkßX¦±LUÈh^I¥˜¬i[?Ö²ñ¾i© –-¼‘ÈJ*˜7ÿ÷bR__||Ÿ´q˲K¶ˆËBE,Í{^£JøÏ6Z)RÏ/'˜Õåôé?ÿŒúrD:ÑÊ Y,–äääÐ=ðDxÜn÷• N®œ‹xïý çÝND Þò©PpüÜÃ$¦üxª•!i§”DÏ‚‹HLJˆu$SAIñ–W_ú°üþyדã,Ý9ѼÛeDD® *úˆˆÒâ<½8‰h|‚ìb–ÎS$&žíè8M”ùDõ­×&P褤¤DÆu$¿ðéêŠ#’~0Ú]v»Ýz¤þíOIÌœòo$m8`$"×GëW‹·ÝzËïèŸ;¾""׉½+¤´_f0‡Eýì+ëµå4¿`‹çM»sàÝ—“ˆHvm}úAËi":ñÑ~*NG.‡DD4!+‹¤„EEEO-vlÛpÔâ Á°£Pà_¦‚3.©ºÀg²Õµ’‰1¦­)¼¸B,‘,Œ™´ËTR+1fªT©›,Œ9uDe{W‹T®5]ìѦU‘Jca&mÍÀFªZ‰1¦©T©µK]‰êb÷ŵÆ´å Ëš)’£Kf5bv¿‰ðyŠ(Ù¸‹žyC.ò;ŠèÙ'x‰ªC.ºçž{ü¶‰ª=#@Cœ«žžžàÔsµùMA´|Önˆ:::n½õÖ .„ºÑ.11ñèÑ£™™™ƒ7‹˜_¢¡1;>´  Ñ$ܸɧED#c*8µ†h Rll,ŽHpõDK-ZôÃ?„ºŠèÂ3™L¡®"H¢å5ßÂ… §L™²nݺPÂß ç7´†lçÎ;wî´Z­¡.$H¢åÔÎëå—_Öëõn·;Ô…D²îî"­V›””êZ‚$ê‚d4gÏžŸ‘‘á]ÙÝÝ- ÀúÀן;wî‹/¾ÈÊʺâŸ!âà5€¸Ž þƒ$—Ë;;;ƒP ÀèÔÙÙ)—Ëoã?H;vìÈÊÊ:|ø0§ªÂÉádz³³ßÿýÁ›ùR^^ÞÆûÛß~ûí·œjß~ûí¼y󪫫çÌ™3xËØ¡t÷ûßÿ¾§§'//oÿþý'NäQ!Àh×ÙÙ™——÷ꫯ.Z´Èoã!‰ˆ–-[æÉRssszzz`Œvƒ!//ï/ù˲!БÇIDATeˆÒ~¨A"¢+Vœ;wnîܹûöíKIIa£^OOÏܹs—.]ºbÅŠ!nâçGÏ/W\\üå—_~üñlj‰‰Ã¯`´»páB^^^NNκu놾հƒÄ{ì±Ç¾ÿþûúúúøøøa 0ªõõõåççOœ8ñÍ7ßa[²ás»ÝÛ¶m»jc¥¯¿þÚív7Ã>"Àåð!$$$$$$$$þ?) ëk3zIEND®B`‚././@LongLink0000000000000000000000000000015700000000000011570 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-reference/images/flow-view-packaging.pnglibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-reference/images/flow-view-pac0000644000000000000000000004541311360615632027712 0ustar ‰PNG  IHDR1Ø ;CÁ^iCCPICC Profilexœ•Wy4Ôï÷¿ï1Æ>ö±3–,ÙÆ¾ed'; cÆ2ÖiìK¨ÐG”´Q)ÒB) %[…JQ‰²”5YZ4¿?ôésÎ÷w¾ßïùÞ¿^Ï=÷u_÷yîsÎó\^a‰€¨è8ºëv ¼·/žeØ< ‚$r,ÍÜÅÅþ­­¾à…*‰F‹,}[–y« Ãg¿Æg´üBôßóK÷öñ@T@ t›€@Ð&vÄ8Zä0Iº»+©lè&nlÐ&îl94ÀðES¨Ñ,sJp,«J,9 {¥CàiE2À3 ªÞ>¾øÍ’)k†hÌ›|áÒ5·Ä¥ÿñ)Ü&\ßúoÙ@pÏbC´4á´`c0–åXŽl2?*ŒóL#m‘äxzÂïóB^€ÿ¶ÞÜóocBP(u&'tóÌ)–ë¬lCìŸ8–¸Ø±BÜÒ<ª¼†|æüî‚^8!²0U„&+'/‘$™*•‰Ï’Î’9 {Pîð–ògÊ«•®mmTîRPW[%°kÈhjiyh§ê”ë>Ò[7P2$Ù6j"eJ5»mÁIÜeyÓšo;ݦßNÝþÃ'çÚÜ®‘n<Ä<#½îù`}vVû}õ' ì â&;SŽ? e3§Æ‡×FŒGñG[Æ$Ò®î~‹Ž#Ä$ä'ÞMšMáM5I£í)KïÊÉœØ;½onÿbÖRöjÎÆ_è\΃¼y‚ù‡k1/´9ºã˜çqßþ'ÉEÔâˆS§©g¨%á¥agIe¾ånçì+ÌÎk\PªT¨ÚrQ¦Iâ²ÈÁ«¼5<µœ×˜¯ýº¾^·|cþætýð­þ†'·;›šêš¯Þ¹t÷\ËÉ{‡[¶eµïíHé¤ß~ý0²‹ÔMìÁõL<ºñ8ã‰]¯PïÌÓúgY}®ýRýóÏÛ^¾ Pøþêñ`ÑéµêëooŒxŽJŒNÕ¼¥¿Ó}÷m¼y"uÒpruªa:mÆü=ÓûžÙüNy>¾øT4ç=/sNq½Æör·óÔñVðçÏHŒÀír&ŠˆêŠ©ˆ«K¨IêJ™à­¤MeôeUåT¶¨ÈoU (ª(¶ê*UìT½Õ¨êÉ„\RÍ­gÚ º¼zÚún)†YMtLw›Õ˜Ï•-#¬®Y¯ÛXÙæÙ 9h8¦9õ»ˆíumpG<=zø(ùÒvÞð[óרØJÚ Q‚o‡,‡©QÃÃ/G|Œ’ö‹)¦½¢óǺÇÆ?JdMrH>œò u2íÓžÏé+ß2¿ïýµŸ9‹3›?Gä€Ä_r¹„ƒ†yù¶‡œ{ø ,¤ ?sœv‚~2¦(º˜v*êtÈ™ÀïR—³VeºåªçT+TÎ+]PªT¬’¿(W-{Iî²ì©«â5¢µ"ׄ¯ ÖñÝà¾É]½ÅÕÀu›·×$Ü,|Gì.¾EážZ«N›A»E‡S§ïý¶?Ä?\êêé.é‰zdþXèñü“½§žF=#öIô­ö÷>¯x‘øÒi@f`åUÏ`ÉPÌkó7¼oF‡¯Ž¤ÚŒñŽ ¿­x>®6¾8Ñ8yd*lÚtFhfþýýÙS¢?Z}ùôqîîü¡…]ŸÕ>ÿXìúrtÉYiyé땜U—5ᵑõŠoÔï„ïë?îþÌܰú…ýõŒµÙÔÓ"ú+ógÌ<Ë<ë<Ûû0ÇKÎÇ\-ØZî2ž<ÞD> ¿ƒA[p×/tE8KÄO” Æ,6(^)/i%Å-5Н”Ž’1”ÅȾ’»´%]ÞCAE‘Uñ½R×ÖjåC*qª;Õ,ÔÕâlkšÓZýÚm:×uKõrõ H†FÛ¶á1Æ‹&¦·ÌŽ™'XP‰^–ÖVúÖòÛ…m˜mVm?ؽ¶ïvhp¬r*vÎuIÚêêéæànä¡â)å…óæòAù|õý°sÂïÍ®—þ½÷H-AÍä”óÁ¹!ôЀ0ªz¸hKÄJäTTô½˜ZZÅî“ô¿b“âÂâýœM’Ô“¥SRÑ©ËiïötípuAÉ‘¼ÂŒ£´c”ã'¬OjÉ žb>õõôô™¡’ÞÒ{g¯–•–;—]‘v>æ©Ò«jÇEÛj£K2—áòÈ•»W‹kèµÎ×Ô®c¯/ÔõÞ¸t3¯>æ–[ƒÎmÜíµÆ‘¦–æÒ;éwI-Ä{[Z™['Û:Û«:²:I÷ˆ>X}Ø×UÙ×Sò¨ýñÄÆSÑg}¾ýiÏK^t¿œ%>è<”÷úÉ0ÿHàhÓ[þwã_'÷Ncg.κ|äýôj¾öóÉ/…Ë¥+uk3ßñ?¥3›oF 8À{Àµ `@‘W àÂànHG W²±(øûý°/H‚*˜‚;DBœ‡û0°#šˆòÒˆ|@I Ïü ス̂f!±´±J³îgesd«ceÏbŸãðâèàÔä,åbáŠçšÀ:c[¸•¹‹yXxbyÆy]x[ø”ùŠù™ùãù§ÜÚ ‚å8>\6î›P¤Ð;aág"ÛEÚD·‰6ˆéŠ5‹›ˆwHØHôIzKNKÑ¥ø|iIé›2¶2㲩rru[\¶,É)˜(L*æ+(Íl=¡l©¼¬R¥ê¯&¬Ö§žK°ÒÍ - m&íl]=I}”þ‚Á a‡ÑÍm•ÆÇM²MÍÂÍÉ»ˆn–6VÖ¦ÛÍlÌlÍì¶Û»8ø:;Ñœ÷»í¨síq÷@<¼½}*|ý¸wú“Žv–É ÿà¢Þ0 u{xnDoO´gL9í3Ý<6/îm‚vbnÒHŠjê´ÙtËŒÒÌû<÷7eKå¤x“kzðV¾ßañ‚ÂSÇ‚NÈžüX\{:½Äñ,Ùø¹†ó…•”‹6—Ô®\ýQ»pýý©ú±†ÙÆ•;œ-²­Ní1Ê»š{Æž°<%ôy??ò²{óš8œ7:òN~"mjàýÖ{>M.Ø-^ZæX‰]›únýó.ƒ±ù“v9І½p:ᇘ QH2€âBÙ rP™Ø˜œ™Š˜ÆÑÊèt³0ss3‹¡bºX”XrY>±º°Ö³I²`ûÂîËÞÍ¡ÃQÁÉǹŸs•+”ë ÖÛέÃ}™G–ç4/ïÞ_| |KüTþq¯á¬qíBÆBÂz·E´DjE5D¯‰iˆ5Š›ˆwJØK HH.H¥áÙðÅÒ[¥ÛdñcÞEð÷ 8XOš Pl‚ÓCêBg¨²á¤ˆ²È±hñ˜Zåî…X͸äøû‰Ø$Ïä’”é4Ý=9éÏ3¥öFîkÊâÊ&åÔøžëxðF¾í¡‚êBÿc"ÇŸœÜ_¬wjåLCit™bùlÅõ ‰UfÕü—Þ_¹[sâZB]ÐMû[º·5šÔîh··z·S:Íht‰öp>Úx²þt¡ïÃó¯/r¼Öõz›:^1ùb=«ý1b®~aí‹ñòÞ•çëJßé?_þé?<€3„ATBÌ#8„ˆÄ"UÈJå*B1É3Å1=D‹£ÑÌúÌåvL*fž%Œe‚5uŒmÛ{û4•c‘3‘“Á•‹Åa+¸Õ¹[yvðLóîáà«åwäŸ(ÔÁå mš¾ $*': vXÜF‘h“L—²À£ñ]ÒGdvÊ*Ê®Èun9)¡@TÄ)~Qz²õ¢ò^?U5u&õiBFf‘Ö^í'ÝmzúzƆfF¶Û¼ŒI&¦ fûÍOX\$Þ´ì°°þdƒ¶¶Ó±wwˆu<êTï<¼ãªíà^àÑã…x›ûdøvù îrðOh \R"S(UÁ³¡òa‘Ôæt¤{Ô¹è¯4ûÝUtFœO|S¢HRbòóTí´²tLFXfß>íýeÙØœ„ùÛ¶ç{Z+(,Ô::z<ã¤LуSgÄJÚÏ’Ë9Î5¯¨ê®Î¼¬{e®¦ò¥NéÆB}MCr£}³ä¥–§­·Û“;fï;=¸ÛEè¾üHòñ±^ÌÓägËý>ÏŸ¾Ô(„!Ÿ×ׇÑ#£gÇÆÞÉûMš¼354½ò^`VùƒÙG§O®sÎóŽ vŸM5¿à—Ø—>/÷­]É_¥®Y¬ó¬}»ú=å‡íO¡Ÿ£¥¿: €Íy ؉1‘1t¼Ñò¿ wÿ«EEÆÿ­ÁœÔ8[w€¾ºµ+XÀTt“3ð òÁ±Vn¿±~ÕÚv“‹ØÑâ\Ü@ñM s÷,B'Ù¹üƙёN€@S‚-­~s/Ðã]=@©ˆ±wNd(8Úão­©Ø·¿ãW)$K{@aRˆN›ñ(p"XÈ‘t B$ˆ<¼<Tˆ…8 A<$" »!¨@`ˆý͇H†x ƒ5€¡ ª¿þ¿Ž'L¨ÿ!‚ ˆ  î£GÝI(ŽI6ô #\!| üüïhû?ŠÁý'Ó¦zÐßk´)[aÿù‰üϦqÍÂÜaÚròHnØU·»·^‚ѵï {&>ˆsû6AÓ (θAƨ×[@ „ü±Çb2êÍ…Ô´•03™7-Ç®Ÿü~EÜßÀÜg6›Íæ¾>sŸY÷•ƱÍ¿½ý3§éBN~yvÙÞhÞô¯›Ñµ–ï9Ôa0˲ߔGóÇÂÔ½o‡²Í à&”íI·ÇÔ},_Ù”W¶>Œæò;¹¥¶%⌂7â%·aÜ„™†ó<ÙÞÞ~êÔ©o¾ùƵé’%Kžz꩘˜×E4,à>€»ÜáàO2ì >ùcŽ›0úƒ0H8ñ‘³Áñ@àw{&I‹…óìóP«?3¶ ©¶XÙžQ¶9žZ¯ë™Mo+ X,€»Vfåm’†ñ`lTl¯:úeüÙm:aFᜓ111†µ©¿¿?kBÀ-À|uŒÍ|Û¥w³„>Uº£ ‘òìda"¶=•¥¢_—¬ áéÏWïxï¿ ›%Óº¯øëG_MĩҊ&3º&ûµuÑÖd¼øIuEM³ˆMÍýUJ‡éQ—jzÍB“²^[/åЗß):ñŒ¤¾Ê¡kÐaTPt|}ýuÿ˜A¦çl“AûR4— X)À ‰’ ®ûŠ1ð»^XÜQ½÷<@æºÊ–𒔞©ûØveCj^YJ™# 6æ³F’’’ìo“’’ÆX‹už¬÷ÐÚ—×Ãlyy€îÂIENÎN埜œU¶W‘ž-tºÔÀ }JbnmÕ>´2\¸T*6w´ö ’ ’Ä<h¿îã†E„…/²v¢`hù¤›Œ_tKï ¸v± ˆ]ͽyÕ ÀÂÞÌ]p†aèþ~`ÀÜÏ0Œ» /ì±HôÖ5u0v~®…Dº”’¸YQTT¤P(EOr!ËS¤„ðÀh(™ñè}N§Ó›<ù¸³·×'W¬X¡Ñh®^½ºxñâ+V¸kfÅpÃRðøÚ—Ÿ±Î–ÁøÉ±ÓË3·m q˜È‹z4²N{cE$ê1 êülàÉ ³®Wk* !·,})ôœ.Ï­1ˆË( 9ÌÃÉ‚õΜ®$RÂ5”+jËŠ–»6ÍÒ×q¦®º|UTìl…$WYA±ƒ6mÛ¸£T™S Y»ÂFí` oÞÐQµ#¿ IeŠõdº$Œu}²««ëÀ›6mZ¶lÙ¸+ªÜ¼Ü5˜ùÚ¿Úý“‘c×3Hvsì:yÚD3Šg'†áp8´ÉÈpø<ʱ x< ŒÉd¡xè*È;ø²R±Œ1Ñž­ÝÉœü¨Lz½™ËNu=„¹ÇX÷ñ‡‡‡{²¢Ì}ÿ%:tkrÚŠç0¹p8ÏÞ†ÃãqÚBƒ¶0àð»²'=*žPDæ<Âd˜žûxÜ2t Ÿ&Ÿ8d»Y%ùÅH<Þ|7ç1´ÉäÇãq<^æ6ç$@˜ ìç] ‚ä$à[œ$| ’“‚o1žé‚ø s™Û›“ííínË»Üp‡}Ó­cÒéÍB!¹ÆBðÛ{-D¥Rùûû§¥¥QSâÈôL¿F {4EÅjˆå…² rSa|nïM>ÂlÆß'ûúúΜ9ÓÞÞž””´bÅ ëíoìLÞWÝ…Æ?–×õ€$·¬ ‚gÒ¨ßVk´†'.×ÈÓ® /Ö AîÓa"žy^РÔ\þùº1î´'xóÏ7Ž9¢ÑhRSSƒƒƒ¹\®k›Éû t-;ËëB×d¿‘´Ìl4r)@÷¥Z£•ïRÉøýF†Ø"ÎL§F€± ws­0m`2O¾Hš0wðöy׫W¯8p <<<33Óué¤}ÚöV 4}]4à‰DÀ ÔŠ·®=ÿüY{d²x¢Ф OñöõÉÅ‹oÚ´éÅ_d]:ì+0׿[ióX_þ‚¨•‚( Nê-õ±2:¨×U%™É’ÓjeÞ;- kÄÀõï”KÐQ#`î¾b¼>¬(ýÃÁ¯‹u•-ßš8~<àÊM‹mhàÏ%Jïý–,\¸pÜï“6_ÁÁã6_ÇHbGº¦±3+e­ë…0( _{É ˆK‘þð•²éj?`tŽŒ*èbÆb7P¶AºyaE¢©®©ûõ”0«Fàù¥üˆÍŠDÛÔnÍëÏV¤„PÀŠX4œüärDbHwÓ½ˆ{*„ToÆÇ9èáy×Éû D²ÂÌWªòêrËK¯·)K¬ ²žæ´KÄ‘é×@ô/…EÅ¥95ò­ä¤+Á|ëú$¦è+`hÍP#5ŒÉDÛn"“ÂscÒÌ\¹g€à)·wžtçMƒ)ù F;Àâ ˜‹À4žPHY `†Ô4ûª¯€@˜vfHNsR«E ø$' ß‚ä$à[œ$| _¼Û‹xsâ˜> ³ïÍ“ .ܰaC^^Þ²eËX\a÷ ¼{Èæ°¿¦‰kÛ€ØÕñÑÜ›WÍ,Jî4Ži:Ï7¨4øÃj-€öë>nXDXXð"ŠƨíþÎ/.Ež$@ÇÕ~§õ2 CÛuÌÄ‚.øòËVÍHà]{07˜-ž!ܨ_ÞáÜ÷nKN4¨wæäp%‘®¡\Q[¦X_˜eÙ÷žZEÅnL­91` ’f]+®(ÖT@BnYwZ¬Á°_¦Æ*ÕÅ­jËä«$À$Ì |ëú$¦èð†6Ñàñ(0&“…âQ“‰æñ(ª Êϯ,S¬ã´d¤Óä(`…6éûÍ~\ßñË*k0Û™]žO°»8<`´åùŠ‹¶e‚ÛVñ\[¿ŸG+OH¹¬œ5H˜íÌšæÛé`h“ÁØÏX ‘ ‰pÇ™!9I ÌH­à[œ$| ’“‚oAr’@ð-ˆg€@ð-ˆgàŽ05cÒéÍBò¼ƒÙ‰oÝÇ3Ï@§"O¥$¼©H·ÞøÆè4ÛvªùI¹Ek ÈSi‡ ž\O®u¾ ˆ›ðæžt>úòî¼Ò+qY{2¥nGIwå©bòÊ6£ÈSaM^Á:ëÓ,Õ{ ‹¤œÎQ[LÈU¤GŒôf˜ª·æ7;ÜM˜ûfúðç¦îcùÊ{Ñ&Ý£)*V@,/,‘{îf³Å3Ð Í­=ƒ8ºþz ðl‹âä¿xP@[àGq±v…~~ý_z¶°èÁX@Y3@÷ʼn‹Z;1V]? X¬O–„¶Ay2V™8ú~ÔÑ[µ×lêé¼mR üà‡ïÏ–V6/ ^›©ómeF6§{¿X}wjž"%¬ó˜BUüË÷ÊIiå,Ãçx¬ž²²2F3R!ÁŠÕ3àþåÖ30ÌG§­÷úhO6÷ †Óšƒî¥x|>ŸÏ£XÿÏÞP |ŸÏ·CÿúA›8N&†öäg=žì ¨Q¾¯s‰;lqÔ!æ°@–G$ ¹÷ÒGÍ‚„ÜDÛìgª-VeeXï-¤/Ö Áš§ÃD<ó¼ÍeÚ“qf³Æ3@¼fÍÝ §zÒ£Nuäv|ÐÐôïå}Küûo‰Óþe½» úrK³Y÷²ÜŒsåž6Ƨ[°HC’½ígï—Vþ±ú±¢ô¥ö8ü­¾æG?åý0À"5^ä•cô­k´‘…¶ÝÎÚ·šè$¥<¡ikMü0–àn[u(m`2ÓN•0„™Ž·Ï»Z=ááá™™™®Kmž@ý»•k_ͶþLg⟯|uø¨õmÔÊÈ#ô9÷BW$JTŸvëî9¡‰Ü°+èÚyûRIdă!üÀ¸ßãö 'Ò&ó¡µYs9-%„¢µ-{öŸ±ýÚÓ´ðÉÿ¶ù ÇNF¿à¸­Ÿí¬Rµ<¹‹G9¤‡?àg}îº#Ã'ña¦êÕ…é¶Œ¥»ÿPÙ*Ë~ÓúÍÛØY«jêMÈz¤¿§ëŠ7¿¹hZ 8?"ž0ë˜MžÚOñ³Xn¥Rˆó^¡zx+}B6æ|bºPßpO+vœEq'ÚS6ÇQâ2~??°Xüï¾qìg¡!Šß´æL~UéŸÄÀ’á->º*-Åu‹¬V>€Ö÷•½‚5o &¯×+‹;ª÷žhÀ\WÙ^ò´¸rÓpÊü¹$CgÞû]¸pá¸Þ:›gààq›g`‚˜-ˆYõ$Úšù|`¿„B}}½´im±Àâ³=]YÛr¬×~öÐiöíT×wšâ"x°ѧQX¾ÁñÖ½’ýùöò^ˆí者í¨rX •èÏjE\–Ì^š’¸Y‘hÛ^íÖ¼þlEJ¬ˆEÃÉO.G$†t7}Ћ¸§BH1×lcöx€–˜•±è®¶¨@­•ŠVkHT¦Xïò‹¬?U§”ÿÊþRôpr¨º´á¬6"Q⺠ð÷ýÑñ£_ÉŒÛYùÛ¶ìÓµn3„³žCe,€õܘè_ 3ŠŠKsjä…[ÉI×Ù‡o]Ÿ„<¾ÀŒIo0säžÙÉÜó øSpxB!9dµÌšæÛé |Š’“œÔj¾ÉIÁ· 9I ø$' ßÂïÌ"žÂ\Æçrrnx`h”óóX‚ŒQ¯·€ùcß)`2êÍ…¤Zd†â[×B&ïº[‘§ Í-KàѾ“«¸‘º­ % O*òþþÔÓ«ÿ}” mÄN Ľ¼ùå¡K.LM8ÀèZË÷ê0˜eÙoʇo=g ÂÔ½o‡²Íz»!7¡lOºýŽQæò;¹¥¶k¸g¼/!·̹bÅ FsõêÕÅ‹¯X±bìÆSð ?9vzyæ¶­q!c\—†>(@kÔƒK—D  Y¶ÒVBíì"(Z>áJR³W³žÒ¼p0uÕ嫚 bg+$¹Ê‚Š5´iÛÆ¥Êœ:HÈÚ5zÒu°Ð7oè¨Ú‘_eÛ £Á×ñÆõÉ®®®lÚ´iÙ²eã6žžIÀ˜ôz3—/ds fÞ¸'888<<ܫΉ9ᘞPDæ¼9oÝÇãâ ÌfHNsR«E ø$' ß‚ä$à[œ$| Ÿ«ižFˆ¯€0™9ÙÞÞ>QŸú´ù Ý©ãËžy*È›ðT>À¤õ:#(¾O$ø"3ãZÈDŸ;2¾Ó…œüòì²½Ñ^¹bï¹|€5Hk5 …Úz‹“8!«0]Êq$ø,3cž´ú öïßïáó¹¦à+pã'€`üfÓ„Çòö`Gƒº7.ko¦ÔtùX~éÑ®4iÅ$ø,3#'­ôõõ9s¦½½}ÜçXÚ|îqï+€îBãËëz@’[VaßÓ£..Õôš„&e½¶^ÊI£~[­Ñ°qX"è9_[ZÑdB×d¿¶.š­×TPt|}ýuÿ¤‚ßüC)Õ§–ÜC¹ |–™”“VnܸqäÈFc}Þ3—Ëum3y_®egy]èšì7’–™F.e+nøE¥åþ\BwVoWíZ#0~©Öhå»T2~¿‘¡@çi)®hÊ(TÅ .)ò•Çc•ë¸.mœ_>à.÷Rö‘üò9M2víº|–™z-äêÕ«8tèëR›¯ÀÜs_ý”k_Ͷ¾6”ýmÃkqáAßY_žtê¨moBÓ×Eó(J(zÀ#G³Ÿ«®û´€…øA¡€ZñVí×(kS—ˆ¶½@kMù¾uZ@×G³ôš6˜ÖÃïIJŒ2.PõÇjã.Hð]fjN.^¼xÓ¦M/¾ø"ëÒa_¹þÝJ›¯ÀúöD­DIpâPÇh©ŠõàÁØY›»£ô[~ÄSOÄp­åÌTÈ몒ÌdÉiµ2ï†5į^»*15/oۺж6Îø®‡0ãM‡Z YoÈã奻äÜÞæ¿tÙƒfæåäÂ… 7lØ——·lÙ2ÖWØ}ï²ù ì¯ñÄ<tÔ4vÒ`Œº£CÆ\»ØÄ®ŽæÞ¼j`cÔvç—"ÏN ãj?X"’˜Çí×}ܰˆ°°àE‡¥Í(†¡ížfbA—|ùek¶ÞE± >ÌLú>èáy×Éû D²ÂÌWªòêrËV €¥' Ô;sr¸’H ×P®¨ýý¯ý•¥ Ö~ YOóúz›S"YaÖµâŠbM%$ä–¥q]Ú8à±|€5öËÔX¥º¸U b™|•„Xƒßev^ŸÄ} m¢Šçòm¡M4x< ŒÉd¡x`L&šC9ª[]#¶:ÙÚL´Ißoöã øŽÃg |’™1Oºó¦Á”|ŠÇz‡€=αç+‡çÜÔ5âºB¶6ÓÅR.+g |’™1ONÄW@ðyæXN>ÏÌ;ïJ ÌnHN¾ÉIÁ· 9I ø3ãZÈä žÂLdÖæä$=Œ®åxgØ3ñSµ LÈNà©@€1êõP!ß6õf „B‡{s“Ñ`¶ø§ÀÌdv^ ™¼g`º¬ž­ÇsLÝûv(Û¬w rÊö¤ó˜Ëïä–Ú®´BœQðF¼„˜j ò› ¶ ¼°@Ds†áëód{{û©S§¬ž'–,YâîþžÉ{8~ü<šÜ.å–Ææ)׳>[Ò3;ÇSm±²-<£ls<´^×OÀ]+³ò6IÃx06*¶Wý2~‹  žÚZ²F$¤ ¯ÞºãÏŸ~+[æÁÎ|_Ïɘ˜FúÈßßßí wSð ø®½ñpe]/ Ë(ÇKè.ÛSÞ` ˆÌÚš%áä¿•öMʼӡ©%¯§œev¦Á*Àôœm2r_ЧŒz£Ÿ@(G$•ZŸÄÌ].Àß®™8¶¥ðÀÿ{Ý Á—ñõœ––¶ÿþ¾¾QK LKKs×eòž€CMåùÌÂ’ÀŽ÷•U§Rãå|fgyƒ,³P'<_­¨ØYQ¸wKÂË™õ;+£åÛ^xð^ž®%ßI& ^«yÀ™ñôM#`Påçp¹0›š”µe½td]:My“!Vþ„5Ýi­¦¢úì•‹ ܤ²‰»ˆà³Ì€œ ŠŠŠ:sæŒc0**jŒ›gPÿnåÚW³­?SÁ™øç+_>j[ÉÊÈ#ô9õ5ò]q"Ð7Åü€žö³€,5.€4íA³ªMK§ˆïâ?¾‡Ç£´gm2NÐZ`q {N[®=ÿüÙ”#²KÒ£…¦Ëù¥ïu$J¥|0vŸÜ®¬‰LÍÛ,ÙöQü@ÚÑ÷ÚóÕUM從2•¼Ï ÈIÉÉÉííí7nܰ¾]¸parròí‡=¨÷Í30ŒÕ3`«Õ:Ô±¥VKðãÀúd€eà°`Ô'eÇG§Ûd˪Õ~÷9”wR!¯«JZ›©•Mç2T[â]¿«ú·Ø£ƒbi¤/$J‚ºî+F)Ÿoê>¶]ÙšW–âxHLñ% ƒÿ\IDAT!|IHX ±£´®Õ˜âT¢IðqfÆ=IIIö·IIIc—5OÚ3`Å2úí½±ÍwtÿµÁ€Ð¨` Ô]wý7ûÁ&°3-V^Øc‘è­kê`ìü\ ‰t)Œö€²‘ÞgÑét:½Éºëº=ú¯.ôBÀ›t ̘²+Vh4š«W¯.^¼xÅŠc7ž¼gõ œ Ämß–ª¶7€`c^„àÞU2qEåÎÖú5eEëœdéKm뱸šðX ´iÛÆ¥Êœ:ëzv…Q€éæ U;ò«@T¦XÏ£¿ýc±rxêÍÚ•DŠ&g3éúdWW×6mÚ´lÙ²qOÉ3À ›|€¦iø _Ùw– Œôœ«cÒëÍ\¾7öG†6ú-ðs¼µ€0ƒ˜1ó$€àààðððàà`OOÉ3À ›|€¢¨±XLU€ÃŠÏÌ8ïJ ÌHN¾ÉIÁ· 9I ø3éZÈ‚ø Þ„ää8Ü_ÁtéœWK„3r-d,Àµ;}ak^ùKe{¥“Z!Ì æÊ<黾÷ÝGE¨ÐÜÜm‹&ûkO„3ˆ¹’“wÄWpñ“ꊚf3›šû«”‹¯€‚›à0Æc»‹>¿ç¥ÂŸž8xlUQ.ßrù¢ú˜ ÷<Ú„ÐÓZ[ZÙdW,¦è…O¾žâ8¡¡Á b®ä$¼î+ `h8}+wW ·»¡T­jŽR&r¿põ±I ‚€ârè–ÝÛ¾O(y]Ê¡;ÿaøÎÌ0o訪¼áhBеW6É2 _|(à³C õ9Ö'1¡ÁÌ`夗}4¸Ùò ­ŽUkznÒ=],¾°ƒÄ ÐûÁž­.nמt¡ãz9 ]LßµŸ±®„<¼òQµ†-û<† î,sëúdrròÂ… ío=ö˜ëß­´ù ¬¯a_AÔJA”'u8M’jøžeÀö?_»Ä¸B¡æ®N- gœMÜ-„ýï«Ù¹pÚŽ?àúWØ%è(40w_10uÛ®¬IÍ+Û’âð¥‘âKB¤ñé¿^#¾X×Ê:5&ÁÜÊIoú (Z>éfcçÀÒ{X}쀵êWodËP¥(Ðô0N+w2!%÷šÇ4ç TüGC„3‡9÷IzÍW çtyn@\FLÈØ|¬ (ÀLs¢åEò"uñ[ ÷œý{‹ A’R˜eÙ÷žZEÅnL­91à”´Dh0ƒ˜‹×'½ã+`†ÃáÐ&#Ãá2°ù ؃Ád¢y< À…ê‚òó+Ëë&Ÿ$DhpG™só$¼å+àp8(ž‹5ŽUGàÖQàŒ¶<_qÑöF°qÛª)ÍZDhpG™‹óä4à{¾†6ŒýŒbÑäg[‚@r’@ð-æÖyWÁ÷!9I øsñÏ¢ùø¿²Æžù^ Á—!9é=˜¡ùO&mu v7æ6ÿW’–;äØÕ{0 ˧½ `‘Øò»)”0!9é=,ƒœ¡!X_ƒCCCC‚€Eþ‹D–?ê\tŒ®åX‹Ë­u3ÅîS‡Ñ:vŠ} M»ÆYƒlz^oth˘Œz½ÞèzsðŒƒ»z†Ã xä¹×V=óÖÿý·ö|öïŸøö<àRÃ^–>ôÕª†ªìUñA“» ÀµûÔ|“Àá†ÃÙ«žr¿çÒƒîZ…²Iký™+ËÞ#ØL³Kz@rÒ{ Xü ½ô\Â{63CCŸm鹄ÁÁ! Û•~óLÃ& =ŒˆÜ¸ë1Úâ`-Yc5!Ì*éÉIïqkà ˜—#O{ïÃæw~ GžÆ bÏI>ã+П¯ÞQq1s×q"Ž©»q‡ò﹪-!Öõ<ûÓãê¸k²sùŸ¿[Õj€XVP g­töPzÀpï Eö» avIÈ÷IïqËÂa‡˜Á!fÖ©ò¥çì‘[öœ´ú ²v•l“ËÚêTÍZ:ÍÎò†¨Ì½{•YÒï+vVôìAÀÁWðØ«r)f›¯€±ú ί-,ÉÛ©©:e]KqeÓC™…*UQòý0\U)”n”Çj+wþé²¾»\YžùBgx=üãå’’Ì8ª¡¼ôL`zII®¤WsªkŒšÊñ¥üü)³F•“³uß±ó¶ ±a¶¢Ûóswמ·~¤µšwvï.ÈÙÞŒ¤ßÌpéÉIï1Àø gà5! ~*ì{¥gß}=ûî{¨ç·8›àÚËæ+ Cd«cž›tO»]M@IÓ^ £MËl¾‚ª+q»n|AÂà`±µ®zÄWÀá?¼òQ—5ŽlsI‚ ­t‡òû¸ÌÍq¢áõp3‹¶D…QE ¿Y/ —.çNÃAXXj¡J¥Ü•÷\OCÅÛ—íñ„ì’={ö–mK½Øô^‡°IRÓ3æ¦r‡–3’“Þc€ñcÁ âOUu2ÓŸ…‹¯€­ŸOù ˜[4Pw9Žkíã·ÀÞl\ûˆG҇áDañ¿LhO}i²EYL³Iz@rÒ{ 0fphpï}ؼêñfpž'½î¼¯€Ñ<¬>yA0šwvjD ·mìmVU¶ê&ùAx&=@›LÀô|ö©u?Ï avIfôàg ñžwm<¸{Þ< zø7ñû ,ߟ>¥¡ñpÌ#êŽÐmÊÄ WT*ÂZ*㳬€?pËu+& =05ìÈo²?‹eÛ6DØL³Kz@jµ¼Ç¿–×¼°q­õgë¹D46û ¦mÒ÷›áÇòGÂÕ„0‹¤džôƒƒóUæÍÃ0(ÈY;n¯ì+˜:OH± ÁÕ„0‹¤dž¼£_Á’“‚oAλ¾ÉIÁ· çx¼GýÛñ¬ñµ¿iñòH¾ ÉI¯’”óW§HwcnýÛñ$- vȱ«÷° ͳ×4Û_ …,}ÀÝJ˜ƒœôfþàÐÓËêøéÒ¨šÝOßézÀ°2†Í`:·â¡ÁÕ“Q¯×ëGßpìVŒ@Ž]½ÇÀà| ƒ…o•˜ošnêý׋ª.ŠÙb]záëÕ^Ý©ÈSY«÷’¸—7¿!ôøBä´ˆ `Ãù q’‰ßž`ß4Xl.˜Ô9ùÙofF»Ü}1ž‹XÌåwrK‡k ÄoÄKxSŒ@rÒ{ Î ÛvðfÐa)ãÑ-éì0—‹rKcó”ëÃ<º—…â2 Ò_ݧ¨<øÑcŠôO74M∓üâAþú7'÷—W*.`WiœÈåOÃØûeß´…ÅfàÚ:1/÷õhCwx,F`u ܵ2+o“4Œc£b{ÕÑ/ã·ÈÆ#œôÌ|†j:Ûñ_Æ®|£ç{ã[¿IýUñá?¾`]ÊÚ«ç|miE“]“ýÚºhíêŸü·Ò^ I™w:4µäõK—#÷ÿLRWÓ,Ë}S¾4x÷½B‰8ø€×Å4ðãEÄ‹–ôå(Žüµ+.=bôÎ.kvܯ×b—jzÍB“²^[/åÐ×l›•I£~[­ÑHÊ+[æ8oÒu‡H}c]œÛЗß):ñŒ¤¾j”ÌÁއbvG$•Z= üÐåüíš à)F 9é=n1ó˜Á¡U+F&%fphßÿLg‡¬KYúèZŠ+š2 Uñ‚KŠ|åñXåºEV?ÀÌÂ’ÀŽ÷•U§Rãå /gÖ﬌–o{áÁ{yº–|–.;êïÊ-,Y"äW(àoõûn´¶"®`c„ÕQ Ë,”Ç ÏW+*vVîÝÄÄ %¯K9t§M\–èZŠ+›d™…/>ðÙ!…úœca£½PL’˜ P}zÁø´ÎigŸqÜ/£Òr. ¡;«·«Žv­‘FØ öÒ}©Öhå»T2~¿‘qžZ¯_é½e±@÷ŸÎmó÷†‹5ß“»«„ÛÝPªV5G)%NÝÇ#Ø\.Ìf„&emY/Y‹NSÞdˆ•?aý;Ak5Õg¯\¼hà&•#s<Þã3ß2‘ò÷ ·ƒľƒ">DÆWz+~Ò[ñ“'tÞÕ3 moÐZS¾ï@ÐõѬ~ÿ.>ðã{x<Ê]—Ì¢ÍA#…|qpph$páì9í8Àç]s¹ã~#ŠY‚ÏŽU×}Ú ÀÂzF‡ ¨oÕ~qrw·®k‹Ìa¼L·¸:»OæìT/MÍÛ,³¹…Æ#yÒ{ ÎÄ•ÜßÀ 2‘‚aÏ€­VëPGòãNh@¿zm Å²jµ_ íë³ èñºpýFµˆ•>‘–¸Ô¿ ´ò£ðÔ ‹ ´Ú®N--ržLÆ,phl_wOK³A¼&œ‹¯Gî°_ÆÎÚíª&YFöSá‹Ïµ+TÈ몒֦†CjeÓ¹ Õ–x–¼doã,spŸÅ&Ftt Ôu_1Jù|S÷±íʆԼ²ÇciŠ/ áKBÂ¥u­Æ”û8™'½Ç3Ÿúò;uÓßßýÓ¹ÒíÿvÜ.’˜Çí×}ܰˆ°°àEÔ𯘓Ô]wý7ûÇè2ª9Ð××K{¾¾dü½-.( ÿæuš6uÝÕŠâ6H^XÆ2r‡ýºv± ˆ]ͽyÕÌòcÔvç—"ÏN ãj?% îÛ°ÉF¯×#1»ÑP6 2ãÑû,:N§·¹¾Æ#yÒ{X˜yƒCˆÿr}D²Â¬kÅÅšJHÈ-K_ÊV×Ϲw•L\Q¹³µ~MYѺqºÐZ©hÀ•¤f¯‰¼*.p ŽL*([/á<—ٯݜ,hPïÌÉáJ"%\C¹¢¶¬h¹Ó¦-×Û”¥ ÖHBÖÓ|ŒH£¬ê–6Xd#x,F`s ˜nÞÐQµ#¿ IeŠõ¼±ÅCoñ¿¶¥þ½çÇ×Ð ýŸ¥¢[ß5¤¹¨Jô—\{O‹¹¿¿ßlgýf³y¤g]\·â܃58úûÍÖÚoÏÞþç~φá8ò‘ý²˜mk³Œ±o×·X†††®ÈÎ~¯ÝÀ񮆱={{‡Ùõt¿Ü¿ÿzïõñ×c1®_¿~ÝàºdžôÌàüÊÝ/CCC˜7o0TòVµG==³P”ÃD5 ဈ \¶8²_öEœ1ì&žóˆ5Û¶7›„æ…òÙÚXhІ¥çdpu °7s+F 5Íwßó L;¾ .`Lú^-¹m2ùMAb4½œ$| rÞ•@ð-HN¾9Çã=þ\*e?»í¼—GBðeHNz•Õ¯}îénÌýs©”¤%Á9võ–ÁyÖG¦ ÿ€‹B—?în %ÌAÈ<é=,ƒó‡ð§šÖ>cÿ÷× £éÿü.cAÀ"K—?öŠG~^à<‹n; Mƒr¾‘%Èõz (Çg˜Œz³BÇ댌Éh0[ü„üI[ÙINzÁy ƒMë±>˜C`a÷ ´]p¾ýœà“ðº=ÀsHNz«gàßk?°˜oYÌfú‡ný@ߢÍ»ûü”<s GÿÀ¤Dðº=ÀsHNzfà ɟ}xàt£38Äî°ZžýéquƒÜ5Ù¹üÏß­j5@,+(K( K¡½K„éQ;ì»±x°rÇqº”ê;ù "ø,â75þlvûª~ÔààØn³ p&2`¯Û<‡ä¤÷°Öjª?ç:O*ÞØÀ>O2æï U ·¤äæÑÒÊòRIRVI wßÕ©®Tùâ/-\—B{–Ò{?§‚ýeF6€«âÀu壯éRªïä7`°vä~ÆfW°¯JHò\²Ù&4àáq{Íà9$'½Ç­Áy–A¤?ó=²8øç+_>Ú[ñj¼8›à|¿+4¸™E["ø0=…Ö¿Y/å^ÎE¿ßˆ… ´XÜGc™­ˆþÚóϯ‘…#eõ#Ž(fÉÍ3Ǫ¿ÕÙ öGlÀÃ+UkÏV>zœÙò ­ŽUkznÒû øà .€4íA³ªMK‰Y:j»\6=zUpô W=OlÀ$!»$=ZhºÜ˜_ú^G¢TÊc÷ÉíÊšHg{€è{íùꪦòÆ_O ™Ä¶HNz[ÌüÁAÔüedž,Þòôxž”Màg/Ò·ÿ!wQ P|ç"z—²ú~—‚}76V>zœl¥ú#~÷â׎ã©FyìLtÀ€ížC®OzÁyÌàÐsIÒŸ¯‰{é¹Ç³2¦¸B×Â|×"z׈kÁ>« À“•;VñSª¸¸v_•àà˜Ð§1 ïÚ<‡Ì“ÞÃb™78„ºÎ›é[ýýôþö¼‘2n/«€í9‹… ë\DO»”Õ<ìR°¯XÏbð`å#UüË×R}zÔà9nÄ,1ž]ÁÑ«Pj[äÉ€ð¶=Às¦\VMð”¯Å[õ‡ÿë©g`lœ ó] í]".ûnmã¯|hhh"¥úNâ‚1:ާJåU˜è€'Ê”ížCæIï188ïÀ›)Žžÿ­lš†õ:æ»–Ë»Dœ öǰŒ¿r+—ê;¯Ð}Çñ£¼ ð™²=ÀsHMóÅg<S·LºTß§jü}’“‚oAλ¾ÉIÁ· çx¼‡»‡1“§!9éU’rþêénÌ­;ž¤%Á9võ–¡yV·€ãkAÀ¢¥¸›B s’“ÞÃÂÌrz-Xä°è§K£jv?}§8)]˱—gùÜ9šv kГQ¯×ë'ÿ˜»i‚»zÁù ß*1ß4ÝÔû¯U´{.|½zz63‰º{ºS‘§Ò’¸—7¿!ôøz!}µª¡*{U|}s“-ü˜Ô9ùÙofFOøæí x¬[ê>–¯l®)eõ°µ¼ýœôVÏ€aÛþ@ À :,.ÏÀ¤êîi .³ mñÕ}ŠÊƒ=¦H¿ŽŸ‚©ÀÞ91/÷9ß¿î {¦Î·• ,ÖâVokËÛ9võÌ|†j<óա㟗½÷×וG™Á¡Ì]UÌàÐXž‚Ý'«srrÔF=çk·æääääì>v¾¶hkõ½µmg­¢¨¶ôµ]³ÞÛ=ªqOeÁÖc—Môç«s¶îÓÒ˜Ö}Eê6# Þ}¯P [”œœœœœœ‚wÎëlt¬ÁaŒÇvo-RŸgì /¿SðNKkcQNNNNŽºÅ:£§Õ:ª­EE»M£w¸£îðWhÀ¤Q+¬›ªí6Ù?Š“-ÕÖ=Úרét4JEÇ˾;~0Õ«Œ²2nY‘Tjù¡Ë¸rÍä®åí‡ä¤÷¸ÅÌc‡V­ˆØ˜ôЫ/>¥È}–Ú÷?Ó­9yË­gàb]ýå–lXÊ·–Ò?W¨Ú[–w«¡ü¸6`y$Õü¾†À\þ°IûÀÀìXwïÐXz·ùã3æ|c3Ìmmß1`.ië æSÀßêV*òš—·1ÂêˆÊ,Ü»W™%ý¾bgEÀŠË¡[vooøþ±WåRŽ}VIBåùµ…%y#5U§Œ£k)®lz(³P¥*J¾†+F§=¾~¥·Ïb±ëö*ßL¼²5ßÊÚU²M.k«S5k]¿úï ÐYûVT$O¤á|¨hõÑØòÏóm¡…£OŒ87â*Ö#7¼ºúòŽòúš¶ŽÐg )ôÑ@¬ô‰Ä°Ä¥þ¥•…§²8Ü‹¸B¡H«íêÔÒ"‰Ó÷HÁÀþËìÆià‚‹¸QŒb\oÀõïzbqGõÞó ˜ë*[ÂKRBx®Þw-ÝlyÚ 9é=¬Ž¬ Wÿ¯ÎdúÆhø{ß½÷üï'´IÌã¨QÝÇ•Ç6€’¥É*ªz!É[4Nc*ô)‰¹®U+Ë . ›•­fAö#A@ôõõÒF¿¯/ÿ{cE]ÍÇ)ë"øv'À½\– , A­úÕ²C;Ê~…¥²Qs%œNŒ%÷uŽ-M¼ÏXQ¡ ÝÉþ‚ÈՉѶ³;ŒQ{É ˆK‘þð•²éj?À6,K ëïü¢;© †±Ø‡Ãa †$nV$Z;е[óú³)!”“7œ‘ÇÞòöCrÒ{X˜yƒCˆÿrB½Fý¸”Ò§Gð„1+#¡¹"[FîÂÖ8êÑÈ:í‘|p¨Ç$¨[ð³eI ø$' ß‚œãâ x“ÿx€q·íÞmémIB„4B $z“^ R¤Y(J³"éJÁ‚ŠÒ;Ò¤7$$ôƦn¶ß2ï‡]R7aw ï?ç—/\îÎÎÎçxÍÜÙy%{]d}ZÉ—Ié&5\Rrž,þ~Yj^ZX󠨉ú{øüïâïaÆ£“·Î¼zìVÊ]^:Mp«ˆ„m×*¡É•&å.|ª<&¢š¸/t·Ú FŽçœx{Þñ¯5\ˆ¿ºéÈöËñ× 2)„`^ÌŒªoR„CˆçZ’°Ë+Ù—”»ÐÀ>õršŒaD€(/(øªÿxÄÿváÀŽ?œ‰»­ y€Ï‚^»`âG˧|ŒaXO阜[ObX®ëé4¡¥ûâ&þÏŠíúïèÍS+v¯¹XÅ ’>C% ŒaÁ¤VLùÄìÊ?X¾ÇTNñ. ðîbØ?ÇD"€Ü¢¼Beqqy ÃÀÀp©½XæéÒL,Õcéx„°ç,K$ )k{¥g BJPÿ;,ÇbNà¸%ŸåxžG|ý]EH‚¨­#lEY‘Z§.Q•ÕßšHH·òlÑ ü%e§,ùiÅoçöË€€ZR}0´sǽ_øÒ2 ·>C†ctvÉOÐÒãã¿v–ùëÑýWŽÜIŽË(Ê{ZªP—£ „');GG©½«—ŸÜoXäK1݆‰kq¹+_üê1¬^Ž—GÈ^,ñóðܱo·ÖÑ²Š•Y‡\M¸¹ò÷õŠR…½Ô~nÌŒþ½k¬–'yi‡¯¸œpãi‰ãØ®m»-¿@@ àØÍSöo*×i]ìgx«_»ž•]ݳþø•£õw!D„‡£{ÿÐ!QýÃ|‚­Â¢e®&\ßåØƒ'óË ËµªBe†ÕGª´ñ»¶æ¤íöwÇ©_m-(ÈZµ"hÕƒ»Øûñ4%4¾uiН \„Uã}xž×û¹½çã2íïß«ÇÖìÝp5ñ¯U ( À ¨:Ü<<,<Õ®U»­ó6v lWµ±+ÞØ}ð; …õ:5<ÚÇÃwòKãfyÝÍÁÅì»Eå%]ߘh!èõ^-Z_[sÒË¥™ñÏܽðõ-'âÎÔJ`ÀpŒá›…Ûg}=­ 3úÝþùO’€‚NïÜþêš“î®ÆÏŽ[ù毶?¿«ÏE‘´t`û^ï¾2»gxK†ôðõ“«~[såá dÐB@’€á€õ!ª]‹ð;›.Ù¢ÿʵªy›?üîø÷b™9êÅ —û|ýö—fÁ—SòKFáf§±š¤#Ža‚tÅ‘ÀÛÍnP£#O¥UÏÿöã͇·ÇP"I¯âàM'Bq 7Ç­xóâWÇäNî¯)!ˆh Å–Yz”‘—¶tÛâ=¬|céÈþfÖd~ú“¼ ÙA-ÉNO¸ûø—K³ìÂÜ¿[²ûü^V«¡(!Tj2õ…Wg}=1óQ~ΰw ¡èIVrRVJþ¬ë* –cŽ\þõÏ}ó_™]ñæýô‡ëöo¡¨r=´N®ŸÿæÀ‰u…ùG®ŸÌÍO¯ õù¥ê²WW¼‘ô\ðÃtlçnÎTå•üÆòå2ÌF²¼&µà 7»β^YÅ;“ó—!ÄØ6æsÓcÀhÝaØ‚Ñskƒ¯†8Iú¶ë9ºûˆç€ïaö9ERÑÁ‘»?ÜþÓÂ펮ÀèŸÑ_’»®ýtö·z³$< ór¿±WÖ^õÆÒ¯Jš«%8†ÛKì¦ôÿ뢩= ¾ÂÅ4¨cßY£Þ©T¤ 1+årÂúfÍ ûdÒ¢%bÿlW»†D)0©@‚,,Ê+ÇË 7‹‹ò+Ù­zlßWc¢7ðÍã/ãiÖûß~ ¼^ñxN(µŸØwLÿÑ<¼6Ú–™ž–ï$Àñ¢òb3#Éäð6t ÈüÒ}NÒ.ÒŒåÕ Vq¼ÆªFB}ƒ#C¢@Sþ¬QœáØ-û¿é0»w̧¯­?¸õìÝ‹éYÿÀ¼ºÚ;ï<*Š“ÿ$?£.Ë+–96i1Žÿ ¥éÎ2'Z@W⬊é‹ÏHª¤H9ÎõYtHdÿÑLTŸž°ùèëHm‚ŒOK`X†ªžwgy ² ‚2mœ-tD*ÊN8­ÔÄå•üîå<ÙòFÄBѲ‰ ‡?¾¯V•šÖN€HRV^rèü¾Cg£ìœ\훹4 ó îвMtpds7/g;§¿cj#Ûï@<À€ ó‹ Ž­kèÑ3Üïß)έË]Óô¥ªRST<çïá+Šÿüm>ºC[ªx~Ì[ ™É¹Åù>nÞÕ=°fV:ëçxUaù9Wiß§eÇ0 #²K~p³" ­ˆ!ú´íñóÂío~5C¡ÈZbAœ0f¥ƒ>· 377íÖý+ß)ñ ‰ÖiÀШ;µÞ®ž ‘ÏNŽ)‹Ëµ*'©C-ü1ƒ#_‚ÿ˜ðˆg9®ª»ßÌɽQZ®©ä³9¯Ÿ¨ÈÏ[d0\­,:tíDÇA‹ú«!êëF«®(7!厇a”Ö]X~ÚÚv†wxú«cÃûŒ&I4JSyÑÄPB Å¦?’Hx¿}ß71±c»½7ðtÜ…ÆœBž7iÕVA¼ÜÑþ{R=€k¯œFÁßé¸óyY©F’ ˆ0ÿPà8Kz·÷ÊCuZA&j‹c”­&˜Ô³œRF‡ñȾ8†w úvîúï~M„ÉÖ`ðü_ÉqÄW§d^I¸ù <)±‹z±ð×Ú/*BIœ()}z¥¾ŽMøKÌzd0Ö3òÈNbïî読]ÜV¿Ðâs×Oì»RMaxØ üŸÅÖ!E*ž× I¼‘z&—· ÍÊè1á-Ú+íH*»0—a ¢Â:eë‰4e SÇù¸{ן6ýJÏðn$-1…k8Îëu»Îíy¾ãHRAXŠ?^û,ÌAA )¡m}]³³¾JÔ" ]<&ðÖ†sœŠáË…”[E…Gz€¿1{¦ÑiJÕÊʵˆ")ó$AææÄ§'Ößà­”»ÛmR`Òé:Ík½GÓ/Ô)UàãæÝ¶ExÕBžÃ—ýX!@jî“üÂüzL(^ƒÆ«sÛ(BÑ­×_?YõY3‡1R:Äz/Cˆ¹JÙ:¯7»0÷ÀåÃ\-U—=÷e†c—ýòÕãŒD ž%rXÆÇÍ‹4Ë•TQ‰bôg“î<¾_Wƒ²S'¯š^V^b£·wõÝ}¼hB „cºŽ«D†M[7oýÁ­J²öû–ÙwùHÿFeæ§AYÿVØfà­AkKù1†ó<÷åÞƒ#_ªØH‹ã´§ãkI¹ ØÆ?M+#îñý˜¥2Ò€¶ îЧm÷®¡:‡DVlÒ©T{zí·Ïm9ºãÔ“•\RÐ-,ºn#Hzßoþ°ÅãçO~i¼c•ªtŽçö]>²h{ìã¬G@KÁ¸Ïà{}Ф`ï@xeRßW×Úš“ûÄ”Ì$)^=wýœŸÎþ:8r@¨O‡“»‹sæÓ¬¤ì”c×Ož¹uª¿Š þH’ÂC€Ãʵª’òÒæn^9©Ö«@úVüÕïOÿ:sÈÔÊ@XÖ/Gô“J—ˆcÖš–åÊŸm’@$a‡Y–ÓC-û嫌ÇÀÎ ÝMºu7þêZ©ƒ£ÄNî"ó vØ#ž Ë+.¸•—Wœ´êjÛ™ Ú¿°ûÖ«$ÅÊâw¿™¿zÿ7ƒ"Ã|ƒE´(13ùæ£Û é À²&ð€VÓ2°Ýü—gÁ‹)®.ŸŒ{Ú—Ó+ £òöÛ·ã¯H*¤„BJ ÑkY­xÌÖxWg׫ᯅÜ÷Þ“xcGêò"e‰¿‡Ï%Þ:_þöÕ1N2GÓ7vžŽã’r?¶Æ~" £# lÑ7@À )¹…ù¶£*ˆcB/Ç×0ŒD–"फÎÍrJ“'Šx{‘¥ÌŽaK^[ÑhÊc¡zÝGN }dx—?¾<úÎÐ7êG^wà¼ÑsÀ ¶JˆcA­léú{ìÏãzŽ4‹¡j¥ 8nùaVJ&}Àó –Êjl–¨Àâ±úwgVUåÍk£VB‹ü`óŠwV¹;»ƒZ  Œ+¡âe@U&IgzGJ‹7‘*އùÕ‰¿ÐæAmý[ƒ±†€¢.?¼áîè&qrÛ’}u;åÞ¥ת>s‘õ±·E¼…¢Çr}Ë•àÌ7øÆÝKuퟫWÿ|yéá'{µéVÅ&’r‡‘¥ê¿,ó" †+aØÀH£ñ ý%BëöãH„âq=Gë9ªHYœ˜õèZâ­GÙ©ù%…Ê£n¦ÒYæØ¢™DË6ƒ#}ܽ)‹¬±…郧 ë<èØ?Žß:]PT çX‰@èéêÕ5$jhçÍ]½êiÁÓYþõÌ•kölPtRàí3ü,>Ã4@î»qÆ—›nQ1©~ï•9ÍÝ*¿ë­“²Ùçnÿ â²`ôœç6(wòØ0cŦCߪõ©HúÞ˳<ê®óó—ûÆŽŸ?ÿåY%ê²ôüL£Ç#pÜ_î+I$ö0yõ;œFiª%e˜ˆ–mküºšçe)r:Íí—›Ÿtš/¦/×êµËv.Ú¦b ½¶S›îgW¨z¢™-ŠK«e²ñ燆<¯7:|¯ ”Çz:NhWšåXcM%I$a©É›¼úíŽî0ª¢×†¶ßr¹zÐÃë ‘ÐjzY£×Ösî›ÍŸ5Ââ¹'»5bg*$!óQÔì>*M¹Iy©ËÖ¾ûõÜÓª2¸5‰ioWÏÑCL&ñ§ãÎ÷ ï‘t4I¥d”¨J«y-¤³½8²tBˆ1‚+xºÊú7V(G$-Ò¡åà³ÌéÄm4d¾ëù,M ­_;S!î\¦*U˜ÀÇì]½ûGô®‘>0“™3ÃÁÅ8„¢ 7qœèÞM³A(ÊŠj_ …á˜À2&{æ 䣤+4É‹ Ë_wøâÊÓ·ÃK½ƒ¼kVý˜Á_‹f~‹Ç¿Œ0\Sª¸rwBïÑÕ/VðwȬ‚ ü œ¶¼¨„G‘ ¹ÜaLÓ¼þ÷…áØ…;–.úö )SFñ„HòÁËï`µ¸_ó‰áYÃÞì5´*Ò?œÙýRûž^Þ-+KB,žs³w©½QJ@:c`y]>Bˆmîü†€tnšÝÿ²¨´êÃ×Oô[0|åO+Lt Q´ê±½G×8ɳ>ü HÁÆ™+år_`ÙøÔ{÷Ó掘^o´p-胛·ª½£Üò2Ž×¸ÈúÉ^nšàÿ¬”ªÊíø´Û»†<æÂís U‚Ï kîôÅdóç+×YÒ¼Õö÷6I¥ .ßrüûI}Çøú‡YA„ SP‡Ú„*Ë—#°ˆS䑞¦¼[z|dó)X+565Ý^ %ªÒaK',ß±änÒ- ˆj‡R² Ž«ßúÜÛÕÓ:üÀ Ž}øp»ØE~òâÁ”Ü'Ÿ¾¶x,qž“9{¼Òm¸E­Kåyö¼ÓWyÄâ8(_BSžÿ‘±–ФUGà?¸Wퟗ?ï]¾tã$HíW+ác'ÖÏ^ór×:/zFFþyÑw¤@8kÓ }F÷Œêz‹ÁÐkc¢×y@¥{È!]ý&!!&Àm³´Çg¬‡Fõ‚µÔe`ÐŽìׄ?–c+·V™&u¹„–l·±þ¦Eçß¹ùÇÔU3>›Û§]÷ði]´šrx.¥dÐ9:¹ßÜp¶…ܯV|T—>NcHÃë®DˆEÀ¸Í÷vžò_î½—üva¿A§éÚiÞÈ/\%s£K–"§÷Âá©I·A$À1@R]Ûöø|òâîaëÿ¬¥÷/ÜOKøä§åkÞZvôÆ©9kgƒH\ŸöB ºu³×ÎaæJ…¼Ò=I¹‹ê9!¸Ï÷všÜ¤]^y˜‘´b÷êøŒGB°­ذNûµïeÉ%Ç©¤¢–±âŽþS“s'g¥«•4%ðoæìÕRBÛx‚Ó£ìÔø'´ŒÁÝÁ¹M@w[ŽUÕô ™‚¼[V$»4zmRVŠŸGskOWy’—®Ök[û@bV2Ã2ÁÞ”õw€1“”™’ù4›¦>>-šùÙÊ ÄÌG XŽ õ õ ª³¨ Ù$wRï7½hàTí¯ÙjjDFA¶ÙO”¿z>!ìBbx¿s -Ï'„$æ~¨còPcKaYÑÔ5³ðN Р#@'xùó)ÇYÛ”ž1,ܹL:Lnl¢ ÅÄð_.쳡W[}‘°jïÆŠ'?žÙ ‘°vÿfk›j3³;1ØõjÂÍáKÆC/t#/Ü¿bm#·Rîõù`(ô  @ÐCÜ'}õ¶¢¬ÐÚvr sG.›½D  ÐCóéÄüâ³/Ûxë_»€Öß}°iÌg“•ÊâÊ &:MDx—çomîf†.),ÿ39 B| &!–CZ©0ÄÏõmW»‡’ݵrÇî!í}ÃN,MÍK¿Ÿøánõîªå¿­]±õc°sˆúš·›ç¤;7n™ðùT±ýÀ}¬j*»0pÈRäT<)./tÖç™Xžãtš‘K'äg&·ŠnèÕÂZã0jɸŒ”‡Ám;z¶à)þê¿~óÖÀ×\B¬H;1,óúÚ9'Oïñ Þy0øã7O8ò£Ö ;»ËŒJnˆ^9zó”}Œ7ôÃ'è-îøN¯"e‰y ¤.Ó(Âñïsrƒ¼[Ÿý²jý¡­§ãÎ+ÊŠ\ìœlàM.?¼^ž: Û°É}ÇŸˆ„ôÊ©±.^-î>‰¯ªÉþqAÀñŸLXðÞÈ·íDR«Ý>–9vó”ÔÃ+vüüŠýbAÞ-tècí§ã΃VÓu¨“ÌQQV¤(+r”9 é<xîüý+µßoè­»ƒ#û_~`òªé)îüzvOLçÁ‚:TãYErÞ–+#pB,‡t.’ÑanöCÜí†Zu˜©Í²rj¬Z«:~ýäÜO§ƒƒXîêÙ¾eÛÅtjaU;%ªRP±íZW}è,s õ ¾M¥Óü[èã‘xJ¿±¶}üiYa©ZéfïR©¶%’_üH|Ç©ŸwÛc<2Çp¥V<¤å§7>þ :¸ã‰Ï÷½¹nöŸ—Ž Z4òçvŒ¨ô„ÊSJí·@´ÀÓIÚÃIÒÙIÒ³i#ºmâé"?»ëFÒí¿Râî¦Þ?yûܱs{®&þuiõ‰Pkîu¡HP¬ªyŽB¡²!·r¯¾qÛQãœ3Ž0Ljë‚R€cËs ËRdƒ A ¾¹«——K³g‡‘"’ ±®]@øß‚?ûýô·v.[·kù ùÃ/m<ÛõÙ6Gi—PÏu€áaK‘À—Äeÿ–’ˆ Šˆ Š0š›±+ÞØ·÷Ç;©÷¬Â_°w áêtö¯3y%òg÷(¸u6ññOwïr_«ú#I€‡ª ÙÀ˜Ô´ â,s û%§%^N¸Þ+¼kCúî €züºðÛª‡–p¼ùõÙh·Þ‹…¢µÓ¿èÚº³¢0ÏûÙõÉ øŠ¾ð¯Ê·Ïíüãçûv í$¡Å—^¿zh°–ÿëØ®O‡^§Ní‹ùôµÅcßoí|ìæ©¥?­à•Ê÷f¼-Xç*u Z¸çâˆmä~8Ž?ÌH ðz|pcÀkﮜùÖº9ŸOù¸KH”F¯Ýyê焌Gß¼³Êx׫…òJ·á+~[¿÷]8ŽÏ1ÝßÃ’‰eu5úéß…ö}$Ø@g|  ô‘B4ô[4RQj5¹•’ó$lZè‚A?;l 3ôA7bâW3µzõT¢~êºÙЀÞbèïý ¿#t§VíÙhmS¡oEC_ÙÓR…ÍC¤ÑkǯœúJñ.0Ðz  ~;õžµM¹þ‡Ã°fЃ—ð.xoñø/§Õõ2±dÉ’ÿ÷IžÎÁ‘-‚Y©€öppiߪýÇ“/™°Ð¡ê%¶–‰“ÌqLg¹Ú uI;†E/{cÙ‚WfٰLJÀ‰}|Zñ!ŠäNr'w¹½sŸ}Ûø[wÀð½'eÙľc”^5EC¢^ò÷ Rêµ´DnïÒ¥m÷¯çmˆj[yƒA WÀð®ÃDR;=˸;8{عtëÔ³³nKþ­Iš¤ÑLÓ4É¿(ÿ7€•.cK\òIEND®B`‚ libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-reference/images/logo.jpg0000644000000000000000000010734411360615632026753 0ustar ÿØÿàJFIFÿíDPhotoshop 3.08BIMí8BIMó8BIM' 8BIMõH/fflff/ff¡™š2Z5-8BIM8BIM PHUT5DPHUT48BIMÿþ'File written by Adobe Photoshop¨ 4.0ÿîAdobed@ÿÛ„ÿÀå1ÿÝ'ÿÄ¢     u!"1A2# QBa$3Rqb‘%C¡±ð&4r ÁÑ5'áS6‚ñ’¢DTsEF7Gc(UVW²ÂÒâòdƒt“„e£³ÃÓã)8fóu*9:HIJXYZghijvwxyz…†‡ˆ‰Š”•–—˜™š¤¥¦§¨©ª´µ¶·¸¹ºÄÅÆÇÈÉÊÔÕÖרÙÚäåæçèéêôõö÷øùúm!1"AQ2aqB#‘R¡b3 ±$ÁÑCrðá‚4%’ScDñ¢²&5T6Ed' sƒ“FtÂÒâòUeuV7„…£³ÃÓãó)”¤´ÄÔäô•¥µÅÕåõ(GWf8v†–¦¶ÆÖæögw‡—§·Ç×ç÷HXhxˆ˜¨¸ÈØèø9IYiy‰™©¹ÉÙéù*:JZjzŠšªºÊÚêúÿÚ ?ßãߺ÷^÷î½×½û¯uï~ëÝ{ߺ÷^÷î½×½û¯uï~ëÝ{ߺ÷^÷î½×½û¯uï~ëÝ{ߺ÷^÷î½×½û¯uï~ëÝ{ߺ÷^÷î½×½û¯uï~ëÝ{ߺ÷^÷î½×½û¯uï~ëÝ{ߺ÷^÷î½×½û¯uï~ëÝ{ߺ÷^÷î½×½û¯uï~ëÝ{ߺ÷^÷î½×½û¯uï~ëÝ{ߺ÷^÷î½×½û¯uÿÐßãߺ÷^÷î½×½û¯uï~ëÝ{ߺ÷^÷î½×½û¯uï~ëÝ{ߺ÷^÷î½×½û¯uï~ëÝ{ߺ÷^÷î½×½û¯tZ;›æoÄŸŽô5Yóù)Ò=SOI²Ì›ß²¶žµ„$¬‘Sck2‰‘­ª ,!†)%'€§ßº÷Uy¾áIÊgUOC‡ù'•íšØÊ¤4ý+Ôý¡Ù‹WPÀK fkI‚s~>âhQ¿ x÷¢B‚Ìh£Ìõ¢@&ƒ v»þíðž9*áÁü`þcÛªz6•_Åjl;HagV6÷쥽Q‘¡™\ì’÷™¹km2®ãÌ66å â\DšHâSŠç^ ŸvÚ­K‹ÊÞ2¼uH‹O¶¤S®x¯øRïÆ\Í*ÕQ|þg,ÍkÑËÐ]7twú )Ÿäˆe'›sͯìŸýr=»Ð$þ¾ì¾óúëj~ß'‹˜¹~pZöÍÔ ÑŸð7YhÿáM`«ðï‰_ÌϬ(U´ÉÞ¿Z£Ó«[VìŽÃÞm"Xóhç§»[ûííÜž¯=ìÒËè—¶Ì`”žžMëgév¶fô¡ÿt0møR‡ògÜõ´øŒ§Ë—ë|ôí¥ð½±ÒùײÒ6­%k2ùþ±§Ûè?¨ýù õ6ÅV×v—ˆ%´ºŽXš2°ýªHézI£Tr+/¨ ÿƒ«3诛?¾NÅ¿>Jô¯p=Jy £Ø‡¶³¹GM!‰8zZó•M*y #óíGWèÐû÷^ëÞý׺÷¿uî½ïÝ{¯{÷^ëÞý׺÷¿uî½ïÝ{¯{÷^ëÞý׺÷¿uî½ïÝ{¯{÷^ëÞý׺÷¿uî½ïÝ{¯{÷^ëÿÑßãߺ÷^÷î½×½û¯uï~ëÝ{ߺ÷^÷î½×½û¯uï~ëÝ{ߺ÷^÷î½×½û¯uï~ëÝÏ”ß5¾+ü)Ù3oÿ”ß°ú‡<ÔQnlÌçó…DÚiöæÙ¦5ƒ?S+ÀÈ‹KM-äx>ý×º× ¾¿áIÝ—ÙY·—Ä<þäÆJÕt”ß!¾R½_Yõí•^ò[o®hŒÛûp@$e–j–B²2©ãîq÷Oy '~fæ[x'èA¼I xIVA‚ƒëÐo|æî]åÔfÝwHÒAøÔçå¡jG:uT¡Û?Ìså2Ô7ÊoŸ}µ#P%¬êOOOÑgö.$òáëj6üso|å>¦]3Ë”†UP@UÆ(óWßknˆÍ&r„“0=²Ý¾…#?è1ÙÁÅâ*qîþüÛ&¸ö=•œƒ‡™¨?Þ§þ7ùz;[áÏÆý­_ühu~tnF‘j'Ý]÷=¹êêÃûÚŒîñŸ5’z½@~ç0`¼sæ?¼÷¼|ÂΙ¾‚Üþ DXiöH—öÉÔc¹û±Îû™jn¿Oü0¨J¶Ëÿƺ1”˜¬]²Pã¨hÑÙ–š–;±ff¢Ý™Éú“îÞ9·šy…ÚM÷˜¯oµO4’g×¹ˆ¯@›Ýçwܘ¶á¹Ï3^ù³ù“Óµ%$Õ•TÔTqyj«*!¤¥… !š¢¦U†•‘¤•‚H<Ÿd/$ŽK<„“æI=!Q$Ò* ´Œ@âN~ÀÙt[/ "EÊÕGÙªÅo+TVˆýQG1Ž&4TŽì°®•Ib5³’™˜ŸåM§ïï&Í*Ëmîü¤yNÿR§í‰ùz?·çe¶`ɼLßéαû½sØÝ3óã(§—á‡ó ùÖxÌxf¥ëÙÏ'{ue^™%– Y°ý‡j³LºÖ"ÔrDⲕv2{žùWï±ÍVFÞoå›[ØÒ@Z ˜æ„ƒ®,`QQAÈç¡nßî…üZq±ŽT,„£ŸšþÀ:B,LûðÜÅöÓ,8ª²ÊG¨" ˜è\¬®¡ÑCÀŒƒùõcÝêÝ{ߺ÷^÷î½×½û¯uï~ëÝ{ߺ÷^÷î½×½û¯uï~ëÝ{ߺ÷^÷î½×½û¯uï~ëÝ{ߺ÷_ÿÒßãߺ÷^÷î½×½û¯uï~ëÝ{ߺ÷^÷î½×½û¯uï~ëÝ{ߺ÷^÷î½ÐwÛ=¹Ö×[«·;›~í^±ë-‘AOuï뙢ÀíÌ$õ”ØÚ3[’¯–(ENK)[%$ ZzºÊˆ …$šTF÷^ëQÿ–¿ð îûù?>_¬¿•†Ç›¯zÞWY/›Ù¶ç¦Jú _5gJuV^ž*¬±u”µ6K*"ÀVDVãÜYîG¼\í}›KÌ[mÈ­cµŠ;šc¶ "Ÿâr25tæŽwØ9JûÕnˆí‰(Ò7¦+Ú>mLp¯©ÿñË”ÞÏÜ=ë»w—É~ù¯fªÌvçugrÇ6kåšz‰o㲓Ôaö¥$/RÑÃ> pª©ÔAcÏqþõœÿÎF{^ÜÛ#Ti…«;®~9¨44"0 úuœÑï1ï…àÛ[èl EÖB?¥&?éh:1*ªŠ4XÑxTUGÖÁTñ†i¦¸‘渕¤™K1$’|É9ê&wy]¤‘ËHNI5'ó=wí®«×E•EØ…K’ÿy÷î½P8ž§Óâ²µq$ô˜¬\jñÏKެ©ô±FÑ4‡£Ý«™7™±¼ašå?‘¨ý™é{Òÿ5š?òíJ 3¹²Ì—ã †«cö5e&3äþÏÛñ±‰åÚ}’±¬{Ëø>:R~Jž©§:ôM¥z{i÷Àåc[m³žm¿uo'Jø¢­jìkS_Šðᵊ’u:–v?qöëѪ}=ή1“œú¯—ý£­Ž¾4ÿ‡ßÌGVz7>'´6ô wÿ@v=*lÞíëúÔZ²›9²kç5UÔtnÚZ»õt@• *³i÷—Ö—v·öÐÞXܤ֒(dt`ÊÀð*ÀGØz‘ã’9‘e‰ÃF ƒPGÈŽ¬gÚŽ¯×½û¯uï~ëÝ{ߺ÷^÷î½×½û¯uï~ëÝ{ߺ÷^÷î½×½û¯uï~ëÝ{ߺ÷_ÿÓßãߺ÷^÷î½×½û¯uï~ëÝ{ߺ÷^÷î½×½û¯uï~ëÝ{ߺ÷^÷î½Õÿ¢ùþE?9òÙÿÞ>aü~ý׺՗â˜Uø»ñ½QUýu•E¥ß¯¶ó; îìK©&çß½Þžku}ÈyægeßoÔ$«u*ªŠðUP€¬ çI$“›ù ÈåˆÜ.©­™À¾@ ä:âŽIåH ŠYç’þ8 æžM*Y´C¼¥T“`l?qÙ I¢úôUg`ˆ¤¹ò§ö ô'aº‡wåZ¶0tþGI$¯‘e©P±yXèé¼±I! "nmaÊ w+hþ.ß.´ÿ›£û^ZÜîñPD•¡Õ“Ȉ®8>… _HmÚm•¯ÈåÀ©,)"ÐS “ã/4 L¨ *ÁQݽ-ÍÈÚ 7YŽ#EQ_´ÓóÇB ~S²J‰žC§#áõÏØ 8ãž„\VÎÚø] ÁãéæJu¥5&%ª–ã'Ï<¡žg‘¢VfnY…Ï´2]\K]r±­+ÙÑå¾Ù·ÚÓÀ´@ÁiZT‘ó''†zRÅ]@Š€°TŽ0±®§nªéPYûs휱Ï—¨¥Gìè÷ìœ!Û›_Š`ëQ(š°I¤H+jÙªª‘Ê\ Ó^M‘@¹·µ'‚­p?Ëþõ.mVŸCamnA­þ˜äþÂiöÒ«Sª?íϽtaSë×µ7ú£þÜû÷^©õëÚ›ýQÿn}û¯Túõ‰â†BLÃ!6»CqôÏ}ìꈲ; ¿º%6Ðì³”¥*ôrM“Ž7ñÜtn¾ªZ¿$eY­f7÷1{cïw<ûYv‡fÜ û)`d´˜–…ÇžœÖ6þ’PúÔc£‹šw]‚AôÓkµ®cj•?gðŸ˜èê|Kþw=Óñ7pmÿÍ¦Š—)²25”[s®¿˜ÇÄIÉÌ–ÑGŒ ï­«Ž†¢}¸'*¢\´ öÒ»–>Z_}>öŸß>M÷^Ím¸únaD¬¶’$_SÀ•>k‘æS·/s^ÙÌ輺6â>Ïâ1û:Ú³oîìÁâ7>ÖÍb·ÛÏãé2Ø<ö¾—+‡Ìbë¡JŠ,Ž3%C,ôuÔUpH¯±»#©=Í úx÷î½×½û¯uï~ëÝ{ߺ÷^÷î½×½û¯uï~ëÝ{ߺ÷^÷î½×½û¯uÿÔßãߺ÷^÷î½×½û¯uï~ëÝ{ߺ÷^÷î½×½û¯uï~ëÝ{ߺ÷^÷î½Õÿ¢ÿíÅ_9òÙ¿ø0¾>û÷^ë]O„=>[â¿Æ,¶z¹i±ÕºZ²šŠ¼•UTÓõÎÔ©„ÏP@JTš TyQ€ ûáo¼;’Çî§¹±Âµsâ <úɇçþ°Ï~凹æ¾e¹¼—L ¸Ü0UâA™ˆ©ò¨$2ŸGó ·0›zž:lF:š‘c³yDjõRIáHyj\žicŒk\ÿSî&–yfbÒ9?àýZØÚY ŽÚP<üëJTž5 g×§Ïmt¯¯{÷^ëÞý׺ú§¹ÍçF’Òâ’\ÅJ9 7ÚJK årÂÅO Š×ãÛ‘ –ôèë—­Þé` qÕÏû^ñ¢1é^Ž·z”º÷¿uî½ïÝ{¯{÷^ëÞý׺÷¿uî½ïÝ{¯{÷^ë E<IMW U4ò£¤Î‹$l’+#‚¬‘ȸæÇß Ô©$qÍE2ŒŠEFqÐc¸zŸ”6'ýÂU“}1)’É0‚Zšú¢´hÄh"î÷>ÕÅy"aû—ùôÜyJÂê¯f| ¾YCÃËËðâMOEÓ²zukðY}³¾6Æ/xlÌÕ,ÔZJÚòØLË*¼5ôSÇ!‡\Q–:‡í‹@û<Ú÷{­¾òÛqÚïd·Ü"`ÈèÅ]Xp Ž·›>ï²J· Jš¬‘×iZeMH<ÑIøóÞÿ&ÿ“žmòÝ-G»~J/*ì³ä»âí^B£9Ù¿¨ªä’\¦õøó“¯yjrw¬ÍW·¥“Äñ)ñp޽ ö'ïUm¿½Ÿ){•:A½$7†‹ç€Y¼£”ð „cƇ&Oå>KÃß½¸Kž /“z7ÏëqŒß'º7æNm>ùøïØ8^ÇëMáJeÇæ1¹ÇWÂr;{qbä+_·÷6vñVPÕ$sÀÿPU•›7Á )ªž¥>9:=ï¯uï~ëÝ{ߺ÷^÷î½×½û¯uï~ëÝ{ߺ÷^÷î½×½û¯uÿÕßãߺ÷^÷î½×½û¯uï~ëÝ{ߺ÷^÷î½×½û¯uï~ëÝ{ߺ÷^÷î½Õÿ¢ÿíÅ_9òÙ¿ø0¾>û÷^ê”>ÿÙüGÿÅcèOýõ{Sß}áÿ§·î—þ,{—ý¦ÍÖ2oÿò]Þ¿ç®oú¸ÝÏqÏE={ߺ÷^÷î½×½û¯th:XlÖ\êóVäc •t¬útœ4múÇ–Zö >‡Æ¾ßJã’zòŒ ¶×W?œ/䢸ûKýƒ¡ãݺõï~ëÝq©xè©$ÈWM>/óÙ…D48øåµu[ÃKãûN=Þ¦º-mayn›‚"—sç…PXã8{åçÑFퟟŸ º7î“´~PtþÛ­£mbbÝty¼¬’ M 56×C4ÈÇÔ¾Q` þžå.[ö;ݾlKYönC¿6s²'ƒ¥k¨ÈU”UH\šzôúÚܸ&;wjz^Š•Oó£øw”¨Z§Û&;ç"ìDpõOǽý¸1ó(!VH348úúY#‘È…µÉ·Ö_Ú>åÞòßNs]¶ÊØ­u™üS\v”@4$Ö¾TóéXÚ/ÈR">¬)ñŸÌ7¿7hÖÿÊ7ùïÚy,`©¦ëÚm»ÈÂâMü]3Ƥª±Æ«÷çr ·?íA½< ÏóÖ:T»Á´Èæzyo˜_=Doò?þ`G ™šZ†™%¤·ŠŸÇ ¥ô^üþ¯ðöúýÃy·éä/îÝõuí¥¼Ú)Ž=ګdž8|ú¡Øo|UÓ<^3†Õ\ðò§?>›r?>þLmu2ïßäíüÇvu"s%\›/Ÿ‰cþÔŠ¸<}KȪúrmǶà çjÓÀÚ«ÿ<óÿÐ}\ì7bt'ì=#Çó˜øÃ·êMqõOËž†ªìoŽ=ƒMÔ*Í—l]i î\j_ø–ó÷(÷zÁã]¢ãl¿CZŸÁ¦”¦$ MsÃ…3ǤÇg¿¿Mh?¤3ùtbú¯ù”ü ›`|¨êм¤’ø 9]µ›ŽM(m=&] ‚wÓv˜Àƒk{‰ù‹î÷ï'+ýCî<‰w%¬I­¥‚“F­r§Q hšSפit€—¶p§?gG_WA›¢jü5~7=ŒeÒõøZúÞ1ÕÖå³=]+/Ôä{ˆnínöù–ßp´–ÞàŠ„•7§¨W ÔùÓ¤äqV"øè)Ý]QÈ¡ªÛ¢,Mrëg¥bÆ‚¨G joö®ÒF.MÐëbßoCxˉ{—×Ï ~ëÊv×*eÛ©ÿÃø[øMG$õXKŠùü³{×=ò×á.£1‚ܲ*þ-CQì^ùÁR*¶G}u„<ãö¿qc1ïå‚jxÂd8ŽE!Š{Ï»—Þqö3cÉàß™6!-¯’Öäábœœ´^Jç1ð5\ƒ.XæË½–áv.c¨€6””þþ$È£y+޶æøcó7¢~xô>Õùñÿt.wjnÚ5…­AE»6í¢TLþÄßXÞmýÕ·« Š¢žU¬$Œ¼nŽzM‘ËK†‰€!¨ Š‚ÁdÄu1+”‚¤TçѬ÷~·×½û¯uï~ëÝ{ߺ÷^÷î½×½û¯uï~ëÝ{ߺ÷_ÿÖßãߺ÷^÷î½×½û¯uï~ëÝ{ߺ÷^÷î½×½û¯uï~ëÝ{ߺ÷^÷î½Õÿ¢ÿíÅ_9òÙ¿ø0¾>û÷^ê”>ÿÙüGÿÅcèOýõ{Sß}áÿ§·î—þ,{—ý¦ÍÖ2oÿò]Þ¿ç®oú¸ÝÏqÏE={ߺ÷^÷î½×½û¯twz¿%ÇÛðÁ–¦šJóãUf‘rVÂÌc¹wÓ æìý,žÕZÐPóÿ—©S`„Á´Ù©e-þôKäGEoä×óø•ñ>X°Ý™Ù´ynÀ®0½U×ÐK½»7TËAII€Á-dé%GÜ [†`Oéàûš=½öÝr^Þm——dƒgs›«b„á®®éMN… t"·²¹º¯ƒTyœ^=û+üè~u¬SüSø…¶þtöa¥\y|ɬ–vÖb'ª0Ræ°}[Ž«rHÏL4l) ŽMÔœÚä/¹(mQÁwÏÛÔÛžà ±Ša¶X’¦£Ä•t† §Î˜=C±F(n%$ú ÛÇ£o²á7ÓöU6åþaßÌäçÉÌÌÒ ¼ŽÀëœù騆eˆÂ”Sa·q屈ŒE¦š™M¬9-–³íÏ"rt0AË<§cf±T¤K­KTšHÀÉšŸÅçNEgk|8Wå_ðõhý ü™ÿ•ïÆÁG7W|*èèsvî}ã´é»sUÕ†.ryúÛŠ¦Jã!Ô$][• aìkÒž¬kom]¯´hF3ií¼ØÆ®8ý½‡ÇahW@!-I§¦§ zx¿¿uû¯uï~ëÝ{ߺ÷M¹l6?C.3;ŠÆæ±³ÿžÇå¨ir43pGîÒVE4pÄr§ƒïÝ{¢ÞßÊ‹ùnü•‚ª>åø[ñ÷uTÖDñÍ—¤ëÜ6ÕÜ ‘¸6„8ÇÝÄ¢S1u°±°ߺ÷UA¿ÿá4}?´k*wGÁ˜_*þî¨ôÔã°T{⣶:¬VÓI$Ô>ÎÞ2­m<—ÐâÒʼ¨<† ó%ò—5Ã=¿1òåìrFQŒ±#1C^ÐôÖOòé‰mmç–9¯Š6úë?ç±ðv:ºÎÉé.°þd]?‡Ž¦i÷¿Çš¹v§vÃŽ‚1RjòwûL†j¾:t}b•ªãÖP×Kâ×=ýÊý¹ßÒêë”.§Ù·6©TSâÛT! žw"–£3+ãAžŠ§Øàz˜$*}8ö:÷J2o‡?)s-ÕyMÙéÎ㢪0VtÏx⪺ã±198§ŽšJZ%ÍÓÒCS1–_ Ž/blaO?ýÚ=ÙöàÏy&ÏûËeDfk›0d@Š ³IýHÀ©P:ŠštÝùê ðoà×8eâ3JƒJŠð?o­(î ',y_ž¶ÖW~u¦å“?Ìß{|…Âwg_E SÚ{ÿÄ÷vÌ£w™%ŒÊ²ɩ§ßºÏÞ&âÆóoö»n]ì¤ Êg®¸$à-¥-ŸœFNb=‡´ ¹kq¿Ùf]›q×.ÙP"š•ÑSEGô Â¢Avüiù%Ó¿.ºC¯¾Ct.ð¡Þý_ÙX83{{3FtO kÅ_†Ìнªpû‡]”µÔsªÍMQ#.zIÔ™ÐëïÝ{¯{÷^ëÞý׺÷¿uî½ïÝ{¯{÷^ëÞý׺ÿ×ßãߺ÷^÷î½×½û¯uï~ëÝ{ߺ÷^÷î½×½û¯uï~ëÝ{ߺ÷^÷î½Õÿ¢ÿíÅ_9òÙ¿ø0¾>û÷^ê”>ÿÙüGÿÅcèOýõ{Sß}áÿ§·î—þ,{—ý¦ÍÖ2oÿò]Þ¿ç®oú¸ÝÏqÏE={ߺ÷^÷î½Ñrùò³¤þ/mès]©ºâ¤ÉäœSm‘†Œæ7ÖïÈH²x(6æÙ¤/‘®–gN½$b50¸÷!ûyíg;{¡º.ÙÊ[;Ì þ¤Ì Á¨Ì’¤qøEXùѮղî;ÌÂrÃÍŽ~ÓþN= ÝñCù¶ÿ4<ÝŸ9-wò¼øaUÄÁFN2ß-;WoÅI„sQA·å•)6Z+C=cÇ"4{õÚº!rÁºs)½s8¡×2§„é£,Pš«Š–å Xi:‡SæÓ°CakiíâMj¿Ñª€*åçù޶ø9ü¾|†<×OtýçíÊ”Š]ÅßÝ·9ìŽåÜY ”Ÿq‘“wn©“ÓÏH²ñ±ÑƤ‘cÉ9Rª¨ªŠ (ppä:?( Õ¢{ß[ëÞý׺÷¿uî½ïÝ{¯{÷^ëÞý׺÷¿uî½ïÝ{¯{÷^ëÞý׺÷¿uîˆwÌÿå›ð“çîÞl7ÉΈÚ{Ë1ƒ„ìl]9ÚÝ©µê£jw§­ÛÝ…û-ÇG53ÒFR9&šŸÓcƒî½Ö¼}£üµ?š?òÍJ½Ëðß°+¿˜ßÄÜeæÉümíê˜)>Hìý¼­‚¦—`îÏN;°Ì 2¤xªäQa ßýÓû¶{yîbK|¶ƒj暆[ËU Úƒ¬±©%K3í½ÈtÓ¢«½¢Öè5+‘L S#…)þ£Ñ<ø7ü˺Cà¯sOÝ]A¹ò{{âgtoˆþb w¾/)µ»Kà‡xnýV/n|ŒÙÛ/;IŽÈUõ>n¤Ço3C ´”uñýÇ‘µÄZYä}£}Ø9OdÙy—yŽõkŽKši3f»øü-ý\1©­J¾›{H¡º”<Ë«"´Ó¨èÉ!4‚NIõ½î5ˆÜ˜|VáÛù:Ö ;Ž¢Ëᳺ¨kq¹L^Fž:º …e;ÉUe,Ë$r#t`A±ö+égN~ý׺÷¿uî½ïÝ{¯{÷^ëÞý׺÷¿uî¿ÿÐßãߺ÷^÷î½×½û¯uï~ëÝ{ߺ÷^÷î½×½û¯uï~ëÝ{ߺ÷^÷î½Õÿ¢ÿíÅ_9òÙ¿ø0¾>û÷^ê”>ÿÙüGÿÅcèOýõ{Sß}áÿ§·î—þ,{—ý¦ÍÖ2oÿò]Þ¿ç®oú¸ÝÏqÏE=uôää“À}I'€¿uîˆ^säyüœîZ߇ßËW¯iûþ`“°»J¿ÉG|} ¨›ìïÔ¨Øê¼¥,¬Z:8žFgM!e}Q{Íaþé›Ç= NhçÕ–Ã”É ? ÅÒñóÌQˆÔÙÒ?R,ò5Æä#½ÝEcÄ/qÿ>¯Ï‰òõëb/åÅü‡úáæ~›äÈ\ÜŸ1~käüUÙŽóìúÉàöMsQŠwÅôöÎÉ­F?iãh¼’,5m®ÐÞƒô{ê.rÎÁÊ;M¶ÇË{T6{\B‹j|Ë,Ç͘–>g©šÒÎÖ¶³c…x)ÿ~g«âö{Òž½ïÝ{¯{÷^ëÞý׺÷¿uî½ïÝ{¯{÷^ëÞý׺÷¿uîƒ×î~±èì.ØÜ©»h¶Ž+zvUôÆÔžª—'_>³»¯`:Ǭö–6ƒE‘ÈO[¸÷žç£§iD_mCNÒÖVIOEMSQº÷B¿uî½ïÝ{¯{÷^ëÞý׺÷¿uî©óù˜%/ˆ̧ _ŸÝ˜ôEò.—QŽÚ¿#úÖ†‡¾ †hçŽL&ù¥HâÇöNÎÈCU,xì —ÉO+"H€}׺­oå¿þoÿ,>íØÉ×çÖÏËïî³ÝÕ[æŸàoÌ ¥÷ùŽºÍàövÜÎïªÞݹ ùVÚ¨¥Û8:‰ð”Õn*i¤#XþÞ_~ëÝmYïÝ{¯{÷^ëÞý׺÷¿uî½ïÝ{¯{÷^ëÿÑßãߺ÷^÷î½×@†”‚n<‚à‚=û¯uß¿uî½ïÝ{¯{÷^ëÞý׺÷¿uî½ïÝ{¯{÷^ê€ÿáQö⯜¿ùlßü_}û¯uJ ÿìŒþ#ÿâ±ô'þú½©ï‚¾ðÿÓÛ÷Kÿ=ËþÓfë7ÿù.ï_ó×7ý\nŒ­MM55EeeD””KSUUS,pSSSAK=EDò²E Ä…Ø…U“oqäqÉ4‘Åe¥b¨’I  ’N'¢  ª*Ç¢CÔ½sòKùËv¦{¡þ%n ÏM|/ÙÙ†Ûÿ#þgÓÑÍfå†|y®µèW—Å[9^ kQ„P«vXî¯ÒﻇÝR ©vþ{÷2ÁdÝ;d¶²qT‹Íd¸S†`¬fª§-Rê`åIX[žñg⑞ è\yŸAÀyõº'Ã_„¿þôÆ¢¾3uî;clìbC6RºÉYº÷¦m"ñÔn}ñ¹$¯Ü›†µ‹4“Ìt©r±¤ié÷ŸÀ€u(tl=ï¯uï~ëÝ{ߺ÷Pry*,67!—ÉÔ%&7CW’ÈUI5 UUÔI¤3h†™6Ù¹¸‚ÎÞ{»©–;X‘ÝUAff>A@$Ÿ :Ñ OÑ'Û0ê7×aíM´6Ž'%çÊ¥ßÉ\—ííÌûCÊÞ-ܳˆÌP-OÔ´B' ¤|(ÒjbU;Y¨-qÕ¤ßOwnÑO@t0*À0 *UHlŽ£Íï/z×^÷î½×½û¯uï~ëÝD¯¯¡ÅÐÖdòu”˜ìn:’¢¿!¯¨†Ž†‚†Ž¨«¬¬«¨xééi)iãg’GeDE,ÄO¿uî¾sÌù«f˜¿óÁþT;_©kògá?F2΂Ù]O—‚\ź»Km|†é*ÅíƒC?ÛãóXìLš|^ÞªhšZZ)«Z?¯ŸËî‹`Þ6»­×qÙ-ï£}ÚÒ(dš jÑ%Á”B_Èxž šEkE©'èßïÝuï~ëÝ{ߺ÷^÷î½×½û¯uï~ëÝ5åñt[‡ •ÂdE`Çf±Ù EwØdrXjóE§š†¤ÐåñT|]SA+ªig†¢"H¤G ÃÝ{©TpÍMK4õsWÍ)ÖÔG ueQP´±AI÷2…¼ž(⌹%Q…ëÝJ÷î½×½û¯uï~ëÝ{ߺ÷^÷î½×ÿÒßãߺ÷^÷î½Ö"¤ëND¥¥I§„5 ¤o È’ÕYàŽS%@(ŒÈΗФFå}׺ÏïÝ{¬5ÒÂóHE”¢"kŠ6ši]b§§‰¦’(Œõ3ºÇ,5;~}û¯uŸßº÷^÷î½×½û¯uï~ëÝ{ߺ÷Tÿ ‹ÿ·|åÿËfÿàÂøûïÝ{ªNøRéÉO#*"|aègwvˆ‹Õ;U™Ý˜…UU$ð¾ {À ÷sÝIæ=ËþÓfë7ïù.ï_ó×7ý\n½GÒ½«üé;û9ñ˦ó™Íƒð3¨s°Pü®ù ‚i)jûK-I2Ë7Hu~Ut,¢°FS!Y 2Å,×ýµ9é÷Zû¶G°Ácî?>X¾H¡ìíœbÝHªÍ"ŸôfP³¿êMä¾QËï¹Åþ2EcCøGñüGËÓíëx®ˆèŽ¥øÏÔû+¤:;da:ó¬zÿ KƒÛ_J”´t”´Ñª4ó²-nB±ÔÉQQ+<ÓÊʼn>óש;¤ŸË¼Ç|íÿ‹"³Ÿðô;ƒä†#¥{+#ÑxLŒUt™>Õ¤ÚYY¶=$”y)`ÆÖ¼»… ñÁRëO<šRS¡›ÞǪÕÒiǪ1ømò£>ll®¬ØÝóÇå‡Çæ3ÔyNºÌ|蔫ØkÚû›/µ²˜ —{uÿeüiîYò[»lnÌ\Y"Éõþ6ûTÓILôPÇ%X×Ó2šqG:¾dÐýŸê¨ôêçwÏß„!»pûÇå¯Çœo`å—¾05ݵ²†heÚ:Éš‡rà¢ÌK–ÂM >>ieûˆcÃHåPj÷­ éÕüxMPq§BUwÉ¿¸Ì>ÈÜ9}!AìÜuFc­³u¯°é±=…‰¤¤š¾«'±²3g’vãé¨iäšI±ïQDŒä…ûÐRxÕŒ‘Ž.?oD϶{wâˇø§_µ¿˜ßÛ;rwŽo·¶GYv·^G´~af°49}­º~;nš|œùßOC•¤¬Ãc&§ÈÅ4AC¤Œ»wÙì·ÍºãkÝ!gÛå uèA£”e-ü2FN™”pTVm»­ÆÕõ„È·‘ƒ¤”GÒH u¬¯Äޤj:À-g>Y.ŽY½ÿ„ÌwïÄž Ý}?g`¡ß[µ÷>Ò‚ WTPSï,6>¾Ÿ5ˆŠ8¨*& W"†I*+0olØ6M”8Ù¶[KEaŸâ­=|5Zþ}$yÖI¦–YK\;ÌÄ–fcRYKMI$’MNOF?s÷—Mlε îMÓÚ{Õz=¿_…ìZý×…fçi7i¤]§.p ÆÆçNê’¾Æ-$“>AçiÄŒê ¨šž´Ò"(f`¤g[|¶ø»Ü[—³:§ä/Mö&ðÎíÌÖîÄíMØ›[pnZݹ¶²´x-É•ÉÔe ¹šÈAI½D«ÊŒ@÷âÉydÁ4èÃ{×WëÞý׺ÓWùáÿ3½ÑòŸîå]ð‹w¾?jÑO/ί‘ûv¡ç§Û[l5êº`d©%Jy÷>|^¥\ø“ü ¯™Ïº†=í÷“döw•'ÝnŠÍ¿Î¬–vÕ¡–J|mæ°ÇÅÚ™øW'ºöÔêïæ3ü„vÉÅA…Û_çgNbñT4AÈ‹º¦™Â©ž®¦BÒK!y“õ÷î±§îKÌ[¿6ožõóýxÓî×rí’HçÌŸÞ8ÉTQTy_R~ë?z÷¿uî½ïÝ{¯{÷^ëÞý׺Å4Ë+²Ê᥂±E$Ϫy£X¤jÌ"ŒÉ©ÚÚQf!A#Ý{¬¾ý׺Á2ªÞ¤A樂–- ¨ds’ÓÂò¼J¿pÐ'Õ *–ý׺ê'2EÂÎŠÍ †&’& jŠC ’Âd½-¥Ùn8$sïÝ{®LªÖVPÂêàqª6WVþ€«€Gø~ëÝr÷î½×½û¯uï~ëÝ{ߺ÷^÷î½Õÿ¢ÿíÅ_9òÙ¿ø0¾>û÷^ëVÔ]ÉóÛdü,þYs•[;¸>(üzÜ?-ûË«ƒ ºN£¬6hÉcᮈŠj]ñ»¨çôÐþú  ªM8íO° ̾ó{•î8XêØmùŸsú(\vÜJ—Ó”üQDð×W!z‹öNWœÃ¼o7ñÖÕ/&ðÔðf7qj"~ξŸ>)tŸÂŽƒëïÿ¶6Ñë~»ÃÁÇÀ¡%Êæò²»£sä‚$٭ϸ+CTVÕÉê’W° Šª¹ùÔ¡ÑŽ÷î½Ñ{ù]Wߘώ}½šø¹C‹Ìü„Û»B³tu6ØÍÿ \>÷ÝÛ^z}ÃG×™Jœ»ÃAŽÇö$XÙ0rÖ4½d ñË‘¤‹±Jç‡U}ZN“ž¨ïùŒu57ó/øÝ²[iüù ÑÿÌךël‡CövëëL¦ÄÜ_{»ð¹ îîÍü¶ÚñKÖùþ¬ÙXÚjê¹èñYÌ´ÙÈ„"2oÓXc‰zaκR6ñ+éŠ|Ï zyŒW¦þìZ.£þz_οtugköˆÉ|{þ_xŠíÛÕG‘ì© ÉPôÎvZ³›ÄíH2;‡'`µ¥¤½)ÃŽqWSOã‡^éP)þ®=WXŽGÔ y|‡—Ïþ/¢‡Ò>ItFÉþYø=ûñ—~e0xOæëòç.{¦¶žÖÃváÇÇÚÚ½•·úã®÷ ^##[³¢ËíѺñ¹šÌnßš¼PO5L°‰$¥×'ª3Cþ¬ÿŸ­Û´°®§ªÐ$õmßÌï¨7vïþYØþŒè ݸð}QüÍúßåGnÉÔ]yO& hì¼~Þî;°7âb¢Ž¯qg7dÅ[U4uY\œÓÔÔ²HÂG5z}…(¼ mGíÿWÚ˜êηßxæÍüÏûówt/fÍÔ}©ñKã6Àë}ñ?[Ue±½ƒ—êŒd/gm » ÅQ‘«z¦Ü¸èbŠxa¦ËQwFÜù ñ[xüRÜÛN‡¿è0[[Ý;°7äÛƒ(:‹-éz:œ…>w->[=ˆ©¨ÈÉïTÿ.žŽ•5ÿe?Îxüúºïuéîµ1þp¿Îƒuî­×º¿—_ò×ÜÔÙ>ß«Š|É”yV»güwÛuA©sj婌”™ŽÓ­§g…L,ËcÅå¶Ÿuû³î×,{GËso{ìá¯on¤x³ÉL*%ãs…1ƒÛcÉTq„û÷^럿uî½ïÝ{¬kér–²­,,ÖW@P ˆ¹$–?ïÝ{¬žý׺÷¿uî½ïÝ{¯{÷^ëÿÔßãߺ÷^÷î½×½û¯tw_l`z`î®ë쥦ú·hïûܻަ‡qäëvO_l½«™ÝYíŒÃí<åÍî1‡¢³(‘¨æz¸å Hik=׺›Ó]ÕÔß!ºßlvÿGöÖí³Þxè2›kyìì­>_ ”¤¨‰&]BÞJj¨–@%§™c¨ý2"0#ߺ÷B‡¿uî½ïÝ{¯{÷^ëÞý׺÷¿uþ­³7Wc%Ï—{±pY ѽ·ææø‘³6vÙÄC÷9]ź·GÍŽxM½‚ÆS‚¾|†_-] <)qªIüû÷^èHþH¿Êãn+¯†»?¯sÔY/‘‡Û[¿äŽòŠ¢,œ•{â<%=-.ÅÃåÄ0½VÌë:&þŒ°T•bz‹6‘ ÀçÉþ}{«Ž÷¾½×½û¯uï~ëÝ{ߺ÷Do©>ÒuÌ/”1pý±º3[§åµ?Pbû#dg6öØ;K „è½½™ÚÝ}G±ê1t˜ÝÅŒ­‹›•rõy%¬”ëX¡6 ºà.›€ìõî?웣Éï]9×½û¯uï~ëÝO• ±ÿ"÷¿Uw>ÊïãøÉò¥q›×mì.æéŠÍŸW]6ÇìvÛÓß{²¶žúë®ÀØùü–ÑÅWýµ~0ÔÑä1´õ•ò+—Ø?.¨É¨‚ N½AÑ{_â­e÷Os|ˆìáß9ì;/¿þBg6ÄØí™­Áíœcín»êþ¶Ø¸:ÍÃ_VðÐã š¶²­ç®¨ª”FÉâk.´±…%ªK3þ¬uªÇóþw}¹óû+»~&ÿ+ýÁ”뿎)][µ»ËçQ¢« ÊnüDII›Ù¿á©Jj¨éó!Z3d$ÒÓ“â0Æìí® ¯z½ýåOgvÉ#¸u¼æÉ°Y£ U? ÌGöQ$žæAš‚7Ó=)°:eÒlŽ¿Å}• HÕ™\T†¯9¹3Ý«3›ƒ)-êryJÙYärlX€÷î¸ûϼÿÌþäs ×2sNàÓ^Èh«Â8’¸Ž$à¨>YëÝ\¿¿uî½ïÝ{¯{÷^ëÞý׺‹YCC‘…)òtµÐGUC]”ðÕB•غê|ž2±#«’¤Š¢ × ñ$ˆC(#Ý{©^ý׺÷¿uî½ïÝ{¯{÷^ëÞý׺÷¿uî½ïÝ{¯{÷^ëÞý׺ªÿæ'üâ>ÿ-|Òw÷›{wfVŽgØ¿:­)÷oso<‹Ò<ØÚîõ,úvÆ.ºsü›ÓÄ©(xÖb4ŸtžêîÖÆÚkËÛ˜á´u;»E‰fb2@ëOŸ”]ÿó—ù·î(²ß0rÕßþ$Pf-²¾õ¶v¾’]É,^S¾÷,-NæÉšI^ˆ…‚b±Ã ïÝ`G½|« ¹.ùsÚv[›ò ½û ïÓ)þÕ©ÂF­T5+Ð…¶¶ÎÞÙ¸^×Ú˜\nÞÛØZH¨1XlM$TXúHWJE<*¨¿Õ,ìK1$“ïÝs{tÝw-óp»Ý·‹énw)ܼ’ÈÅØñ$œýž@`PŸ=û¤{ߺ÷D»?íéŸÈÏÿû¨ÿø"~.û÷]ûàÙÿ©_ýäzú{{÷]ëÞý׺÷¿uî½ïÝ{¯{÷^ëÞý׺÷¿uî½ïÝ{¯{÷^ëÞý׺÷¿uî½ïÝ{¯{÷^ëÿÖßãߺ÷^÷î½×½û¯uï~ëÝýýнUò¦û û»ic÷¿Wv†ÚÈmmÝ·r( Ucëâ*µ4sé2Pe±µ*hꣴ´Õ1$¨C(>ý׺ÑæwÅ|‡T÷Áþ_ßÌNZîÉÚ»?nÅ‹þ]ÿ1rO··¦ôê½³¸*sX=…“ìJ7‚·ß\™±•J%òe1”“ª¸BþÑ_ýx…À‚èI*@%Æ0Š TÐÔqŸï}î‡%­—¹|ƒ¾µYB±ÞØÈ¢H1#2Ï šƒWðåhŒrèôSAûãïÎOæÍüº!Å`°{–—ùžüVÃ}…>Áí­ÁO¶>Tl­·HøLq¥Ùݵ⟿?†c)* på¢þ‰jy ­÷‹iÃr¦ Å_ÌüFžT=Áx€+Ñg·?{Ooù¸AeÍ÷&òج­ªÑÏwÃs@#‚|u‰A`ŠîsÕô|8ÿ…ÿ.–ù{÷FHáݯþ›—üG1ÙÁU‰F4ø‡ãÀâÒ¡ªcHÁÓÐìç¬~ëÞý׺÷¿uî½ïÝ{¢ÝŸöôÏägÿ‹ýÔü?}û®‹ýÀ¿ðlÿÔ¯þò=}=½û®Œuï~ëÝ{ߺ÷^÷î½×½û¯uï~ëÝ{ߺ÷^÷î½×½û¯uï~ëÝ{ߺ÷^÷î½×½û¯uÿ×ßãߺ÷^÷î½×½û¯uï~ëÝ{ߺ÷DÛçwÁžŽþa?·?ǾòÅÔ ÉIsdïŒ!Š—{õWabC˶;beÙL˜ÍÀ­!€EU’ CE#~é©¡†æmî"Y-äR¬¬++ 2²š‚¤ ‚ Z^ÇSßßûê«áÍ(©£ìúX'­é~Þ‚žj-ò›®h$Qo-_5©è·í5"¬y¼+;URÔ†:t’šûl¶ÝTx‡EÒŒ0óùQ\Ó©ë—xÏ»ÍÏ·wwåÉ–Ï/$N奈ÍbìxÄÛ±4ÍLÙÉZ#¸µÙýп#ðCÚ½m³û †òBsøzyrت™hå¥PåbÊãªRž¡•d‚e±TX*î»,¢&v@I#5Fò$P1P)Ã@Ü›î_;ò4¢nPæ‹«4ÔXÄ­ªf%íä µš2E ‚.µèo•¿¦Ž§ùüýùñ÷ ISAQIÓ…‹¿ºÅBš¶7bI\øØ*b¼m$S<ˆ„iärgoÌ™¥Õ¾*ržB˜Xç>z†<±œµå¾¾íŠßž9Jˆë™¬ÜÄáiДº;W‰D´8\dùõ÷ó°þpý´ þ|sù·ékj)*÷—ÇÍÈô–ÿªÇ/©òÕûG°©sûrzæŽ5ÕÓÆÄ…Iömó·Ï xú× ŠSÔü?gwËŽ:ȾZûÑ{9ÌbÞ99…öëÉ+úw‘#ç—Y`ä¨Df£ßûs³zÖ®•ÛõAV›÷cmØ¢–&á½eAR9÷n:2ç ü¨³‘¬´_Ì‹á*à3':{oH/ϪþîÆÌ‡üA÷î½ÔœŸózþTø˜šZ¯æKð^UQr1Ÿ*zK5)ýL8më_3Ÿð O¿uî€ëÿ þL›)æÍÿ0•ÈÙ“eE½»WÐ +]{´·<“³[ßߺ÷Ev¢¾MDò|{éoœ?+«ª(0ÍÔ?·>3odfždŠ)jwdVl¦ÇPYõ4Æ–Bª.SÞ‰ ¬ìh€TŸ O è¯sÞöm– .·ÞÖÒÙ,óJ‘($–vP©=¾Ãþ{¿Í?·ÆOñùuõGÇLd”J˜Ýÿòï¹dÞY_5O™Ed=qՔ؊Š:šDUaU]DzÈJŸeónÛ|5 r¬Ô­º¿*Š€~Dž:‡yï'ìß-ø‰'7Çyt°K4{\{D±§ H 2ù@5èˆö~Òþa/¤|Ýþc}¿¸¶}}M,Õ]!ñ–Šã¯TKI Z$ÃååÚÂ=˺hd,×z¹f½Ù‰ú”Üs"R–¶äµ8¾(kžÐME<õ ùc8ïÍ¿}’VH9“¨ÅF™¯Ÿ®koãú‘“• w)zGâWÇOŽ”ÍPõFÖÚÕóCO nã4–ݹ1K$òÃ&Oufd¯ÏWL%©v,ó’Ìn~‚Ä7[•åÙocáŸÂ0´­@§<‰©ùõŠí︾à¼Ë̼Ïpöÿ£> °µaJ>“M-/‰%«štc=¡ê4è욥Ÿp$ Où È[yei*IR $¦O­ïÇäù~"–ÏãrGØ(?ÂAÍÙÃ\*¹ûNÁNƒïgõï~ëÝ{ߺ÷^÷î½ÑîÏûzgò3ÿÅþê?þŸ‹¾ý×Eþà_ø6êWÿy¾žÞý×F:÷¿uî½ïÝ{¯{÷^ëÞý׺÷¿uî½ïÝ{¯{÷^ëÞý׺÷¿uî½ïÝ{¯{÷^ëÞý׺ÿÐßãߺ÷^÷î½×½û¯uï~ëÝ{ߺ÷^÷î½Ñ$ùñð ã÷óè¼—H÷Π55O÷ƒ­»+nºc»§·õ*_¾ºûpªýÎ/+E2'žFšºaH+ài‘Ǧn-­ï-æµ»%µ‘ º0 ¬¬(U”ÔF"„u¥×cmÿ‘¿Ë¯¹±Ÿ>s²¹Úé±ÿþ]â)&ÆuOÈl4cM+3^ìivGqÑR¸!‰ª‘>æOÜ€ºMXe­£œ}ªתª«y(P(¶ €áЦÞyÛjŠ86¾qÝm P¬WsÆ  Hp §%ñ+â®eòÿ¾?e${ë“!Ó]uY)-õ>J¹#êÿßÝ—p¿FW’Tå‰õGÈ‚ŸFÉîǺHU—Üú ÿÑÂìØe¡")Ö Ãÿ‰˜¦WÆ|_øñA"›¬´-ÖðL ï,{md¸?Nx÷i7+ù\È×nú#ò @?!óãÕ¤÷kÝ9X»û“¿Tú_Ý(ý‚Pä:ðeÖÛh"íξØû}c°EÂm<( @‚‚‚¶ÿt…øá{7ûÛŸ¢ë¯pùþùJ^óÎñ2!ïn\ɤ=-•UQUBª¨ ªª,ªª,€8Òt$’I5'®ýû¯uï~ëÝ{ߺ÷^÷î½Ñ[ÎäN[1È\”¨©s¥TaM¢¦VUà2ÓÆ ýnGÔû’­ ú[X-üÕE~Þ-üÉè!u/q,žDãì˦jzO×½û¯uï~ëÝ{ߺ÷D»?íéŸÈÏÿû¨ÿø"¾.û÷]ûàÙÿ©_ýäzú{{÷]ëÞý׺÷¿uî½ïÝ{¯{÷^ëÞý׺÷¿uî½ïÝ{¯{÷^ëÞý׺÷¿uî½ïÝ{¯{÷^ëÿÑßãߺ÷^÷î½×½û¯uï~ëÝ{ߺ÷^÷î½×½û¯tüšø¿Ñ1:kvôÈî¹ÀvWo:_S¦Õ-lAÎ;pmìœF<–ÜÜøYßËE‘£–ºi9G}׈®´¦ù‰ðkåWòˆÈÖg+?¿-¿—‘«¶ ·ñøé³½éñ§#¹ðøèš]ã±q16ˆw*1ÿ”Ç•TW{_#¬,÷ÃókÝó?·i—1±-%®ÞáŽIC…‚R~ÈØäé90ºó²¶ÞúÛ˜½ë׳¹6ÆjªñùŒ|u¸êÄ ²x“Ë%^)t7VÜ{½Å¥¥òRâqB#"¼hxË®lï;.÷ËÖϾmóZnpµ9«>GˆÎâ§ùSçÕÅÄG‹S¬ãt`[é^?¬KÿC@/í£ËÛÀãgÿCÿ?u¿/ãë³¹ð@_ø‚qý"¨'ý°†çÞ¿«ûÇü¡÷¤ÿ º÷ñõÀî¬ü¯ÿ¶¦¬ÿêvþ®o?ò‡ÿOú ¯xðÿøÍÐ Ù}‡·§Í¦7ø›ñ&¸Íe¾æ­VwpËNK)§1m¤ƒaÍÈ×aå]Ö?Û ršük€ ñ­N*(Fk€GºÎ²Iq½QV§öJ|¿ŸA]FýÁBáb•`¨o$êˆ $h"ªJy5/‘cõúØI,î2).cC^Ôý½¡‡ó¯Ë¢ž“U=‹\ú>ÓKµy>âIj‹~:<hÜÞú¯qô·&ðò­²êñî½4€¿mkª¿Ë¯t•¬ÜYºôñÕdj=2#GŠhäI@WYR™!Y•”ZÌŸê}[í[u«j†ÑCTš±p ±4ü©ü‡^é—Ù‡^ë‹2¢³³TVwf *ª‚ÌÌM‚ª¨¹'€=é™UK3£‰<:~ÖÒêþæ ;i&¼•‚¤h¥ÝØà*ª‚ÌÄà =Öó[ù¦-zŸ‹rwNâ_Ë~°íûßiPjë¾±Ù;cº:?un ì×ad¤Çìꌦ3´ë§þK[Q’¨h|4ðM9ñûóám{%¼ví¨Gª§ÈêÓÃÖ”ÿ7]`ûŸ{GÎ^ÚlÜÛ»s…šZͼ}!ŠÜµfmÅÍZ`”/õ ¥5[XS@~¡~ÃfO^÷î½×½û¯uï~ëÝ{ߺ÷^÷î½×½û¯uï~ëÝ{ߺ÷^÷î½×½û¯uï~ëÝ{ߺ÷_ÿÓßãߺ÷^÷î½×½û¯uï~ëÝ{ߺ÷^÷î½×½û¯uï~ëÝ{ߺ÷^÷î½Ñtù3ñ'ãÌ~¸Éu?ÉžžÙ=Á±²Q°þ»°ôõµÊ›O–QW–¥{Uü{Ÿ!¼?–—Èú~ËØÐ4õñCåÞJ¿,ÑÀÕVOC×ÝñEÛ† É^yžÔMô$•Eiu&tàj:‚=ÌûºûoîcK}}¶ýþÕ?Uj7v$±i’š&$’K8ñ€R¥·OÈ×СºóçAöŸÃë Mþä»?WSf^™d.vßoa¤«Ù9G©HõCÕ[Z ÔåC*[”?X7Ïs¿rùvK›ŽXhw­­0ðÊÃpjha‘»žƒ ÈÌhiшۛ§lïU>sin,èÂÕ(jl¾ÞËPf±• T00×c§©¦“ÒAᵃqÖ+î[^ç³ÝIc»íÓÚÞ§å£qö«€GìéûÞúC×½û¯uï~ëÝ{ߺ÷L{‹9O·qU)Ç‘“LtôâDêjd:c‰ Ÿ åœ€ÅcV`¦ÖöªÎÕï.À9'Ð'üƒæGMË ‰ žŠ…eeNBªzÚÉž¢ª¦C$Ó=µ;è ˆ ª *¨DZƑ"Ç€€`tJÌX–cRzîýk¯{÷^ê-mu2’¢¿%YI ¤¦ª®®©†’Žš$RÏ-EMCÇ1ª©%™€{nY¡ Í"ªz“N޶[æi¿kåÍšæûpb(ÆÒ6M:AÒ+æÔ>‚™Ù»›¾wY럇=Ù?.û 掓íºSY×øz™£w‰÷glÕÀ»F¡nîµ2p° o9šÒ*­ªׂÿœþÏϬ¾ö÷îKÏ{óÁyÏ[„;>ÖhLjD÷lšTøQ`仳©Á‹«Íø»ÿ ÀïN÷— ½?™¿rÑlý†Æ:·øñ¯)_CÊSýÌÓ&;·û‚iNOr )ÌI=&:zFÓpÊÅ Þî——äøòŸøF~^i©ë?½·öGÛŸk Oê¾ÂŸ½4Ñîæý[—õýFþÌ4‰cCAU&¤íÑ?:Kã\á:— :¿fu/]mønÖÙ*82F±µ]`¤‰&ÉdfTJš†–y,59°ö_ÔµÐÇïÝ{¯{÷^ëÞý׺÷¿uî½ïÝ{¯{÷^ëÞý׺÷¿uî½ïÝ{¯{÷^ëÞý׺÷¿uî½ïÝ{¯ÿÔßãߺ÷^÷î½×½û¯uï~ëÝ{ߺ÷^÷î½×½û¯uï~ëÝ{ߺ÷^÷î½×½û¯uï~ëÝ#÷Ï^lÐÛµÛC²ö>Ðì=§“¡Émñ¶°Û³oWÄêQã­Â稫ñµQ²xØ}û¯uE}õÿ ´þ]½™¬Þ½CÙß»±f3n_Œ[ã'·öåDÒ¼²ù*z»rɸºæ%™‰Xú"opÁ‚²ì3/ÂHè‹}å~[æ{f´æ=†ÒúÜ©ZOI@j’ÊJœà©‚U·Ø?ȧù¯õ#K'Çß–ß~Omºˆ§Áü‘Ù{㨷þFšg »—­ Ý»r«0`‘QZh¨é›@-ê%™å¸qÏXïÍ?thwÿÔÚí.ö‹ŠÄiK!5&­À›Ö”FA@(©%'tt—óEéÚ,‚÷òÎï}á¡XÌ9‹Y=Ýûw"L)PðÀ»Ó¼¡µ#<‘ ÅLîê‚.®‹¬å1Ô/½}Åf[k‰9wÜ5{ÁMÜÚ”C‘]sE4Œ´ZDRÑAÔ ¶äÎàØBWíÿ†ß̤"€3ÏQÚßûsoÒÃj×3TÐârð´ jÌ„r Ü1üú‰÷¹·¼¶uúx¶»¿ù¥uOú¿=")?˜¯ÄJÉ$€vue d'LÔ݇Ø[f¶'¸ ɵ±']Øp ¿âþíõò=GÝGßrÚO& ¿[cOås_åÐ=½þv|rÜ‚ yìÚbŽoá8êM½»ëꥅ´ff¢ÛµZª€ˆLJN€€MÙ„»vç´XÛÿ¹ÎÔ-ÚÜ})A_\ñùò}Ñýû¹¹XÛ”àHŒÞÙéhY‹×ìR:Áˆï½½ºËSõï^|‡ìü·ž`ÁuïÆ®öÜYJÕ›Ì ôA6= ðÄÑ(?¾üŠP8ÔUSs>Ú¼Fû”Ž„V?rx®”µÍæÍlCI.%bA­Hð­ä¥(H©"• Äì~…þbÄ"¦¿–ÊܳÖÏ8ü¿kãögDm2šYª&Éf7Îä9Q€´rÐ ì,¤(tóXá ŸæÍþ@?ËÔ£±ýÂ%4~d÷W"©mlZ£Ïõ%•hxPøGìèõuWò!þmÈèý­ØŸ¾mš¨ã.ÞL÷ÈϤ…äS+R=D[oaÓå!PT,±TS‘ê IJ®9‹rž¡d¯ôGùMOìê{å?º²üµáËy´\n×kø¯%,µ­káB!ˆúQ•ºµ.Žÿ„È|ÚùŠÝò§|w7ÎÛK:Öš.åÜ£ou\ÚN³Œê-‡ükÑÑ ´pÈj4}5qìšI¥˜êšVfõ$Ÿðõ‘{FÁ±rý·Ñì-¥§ð[Ã)þóªÿ.¯ÿ¬ú—«ºckc¶GQõÞÊë=Ÿ‰§JlvÚØ»kµð´§Ñc ÃÒRSê'–b¥˜òI<ûo£n„/~ëÝ{ߺ÷^÷î½×½û¯uï~ëÝ{ߺ÷^÷î½×½û¯uï~ëÝ{ߺ÷^÷î½×½û¯uï~ëÝ{ߺ÷^÷î½×ÿÕßãߺ÷^÷î½×½û¯uï~ëÝ{ߺ÷^÷î½×½û¯uï~ëÝ{ߺ÷^÷î½×½û¯uï~ëÝ{ߺ÷^÷î½×½û¯uï~ëÝ{ߺ÷MY\=¦Îa±Yšq{A•ÇRdaúÚ*ÈfAÏý׺ƒG³¶Ž:žZL~ÕÛt4“¨Y©hðxÊjy”\…–iR9x ý}û¯t÷KIKEt´TÔô”±±SRÃ<‚I"8bT&üïÝ{©ý׺÷¿uî½ïÝ{¯{÷^ëÞý׺÷¿uî½ïÝ{¯{÷^ëÞý׺÷¿uî½ïÝ{¯{÷^ëÞý׺÷¿uî½ïÝ{¯{÷^ëÞý׺÷¿uî½ïÝ{¯ÿÖßãߺ÷IÝÙ»vÎÄÛ¹MÛ¼sxí·¶p¥N_9–¨JLn6žIâ¦Yë*d´pCç»YF«’>ýÑfñ¼í\¿¶]ï;ÝüV»T Id`¨ŠHZ³RNsП5~$Èë"z‘ävTDMçˆgwbUUj fbläŸ~ê;_}}›f ¾ælʼn æ:“ûz3‘È“G±0xåE’7GGPÈÃüMýû©UY]UÐÕH¨?#Ñg©ùŸñ>Ž¢z:ÏSKWK4´ÕTµ;¿E5DÑOðK2Ë ÐÊ¥]V~ê,—ß/g –Hf÷'gI‘вµÌa•¡PAÁ ô*õÏou‡nÑdr]a¾öÎüÇâja£ÉV팥>Z–ŠªxÚXiê'¥g&x¶›ÞÜû÷BþYç>Sç8.n¹O˜m7 hX+´,ЬEB’µ+N=2ö/È‘ê<­³ûKdì<¾K¹\~?tgh±U˜æ©žVSGW$fh>æ–D,·³)ߺAÌÞãò&]ÁaÍ|Ýa·^ˈ‰<Ë2j+©CQ©H¨órë®þéNÝÉWáúô6^ýÉâèFK%Eµ³”yyèhx©Vª­iAOQ2¢–¶¢x½½ÖùgÜ^Dç;«‹.SæËÆîõºÛʲJ…ÔÚI $€+Äðëa|…èî¦ËS`{3µvFÅÌÖQ.F“¹óÔXŠªš’HVªž:¹#3C剖ë{Ï¿uNd÷'y:ò-¿š¹¾Ão¾tÖ©<Ë2F ŠŠ‚*:A³±ñþò3¨¿ô4ÃÿõG¿tÿ_f¿ð¦ì¿öUý×¿ÙØøÿyÔ_úaÿú£ßº÷úûû5ÿ…7eÿ²¨¿è.Ÿ¶OÊŽƒì½ó‹ë¾·ì·¿÷&O žÜ-ÑÈÒæ©1˜Í¿6"ž®\½],Ì”2UMšˆS¡¦Ñ!O¿ta±{¹íß4ó§-r¿4Zî;¤¶òÍKgYV8á1†22žÂÆU8µøOFIä–V HÒHç舊YØÿ‚¨¿¿u#3*+;š('ä:,³|Òø™O4´õ!úš à‘áž ·Ž&)¡š&)$RÆó«Ç$n¤2"ÇߺŠßß?gcwŽOr¶e‘I˜Á`‚ ¨ ñcÿgcâ?ýägQèi‡ÿê~ê¿ëïì×þÝ—þÊ¢ÿ º|Ûÿ-~/XœÈ ÈdêRšwþÚ‚®®F¾˜h ªÈA%dÄ):"à ÚÞýÒý»ÞOi÷k”³ÛýÇÙdºcEO¬€3E à±ù-OË£`He` ° ‚¸ Ž#ߺ’:bÜÛ£nìÌ5^âÝyœ~ßÁPÍn[)P”´‹,‹ mQQ!Ä­+…¹ \û)Þ÷ÝŸ–öÛç~Ü¡´Ú¡¦¹e`¨• Ìp$ ž™¹¹·´…î.¦Xà^,MûOAû4ßçöu¿þ…8Ïúÿî<ÿ_fð¦ì¿öUýÑWõ›—ÿèñoþö:÷û4ßçöu¿þ…8ÏúÿïßëïìÏþÝ—þÊ£ÿ º÷õ›—ÿèñoþö:ƒ”ùkñ¿ŒÈdÛ¸¶5rã誫M/=A_“¬°¼ßk¢†o-]mFF¼»?>Òß}མ°²¼¾oq¶¹D13èŠt’GÒ¥´Æ€ÕÝ©EQňR^iå裒C»BÚA4VšyæOèÀÑÕE]GK[a e4Q\EQÍu€m...y÷.ÛN—Vö÷QWÑ…xÑ€"¿:Qƒ¢¸à@?· Ãu÷·MìLÔûsyv^ÎÛÚh©çŸ›ÍÑã룆®%žšcDˆæ)âpU…Áÿ\`mÿÝ_mùWs—fæNvÛ¬wTUfŠi’7 à2,A£Pxt[u½íS5½Þã s€ V`r0zUlÝû²û.gcnl6ëÄÁTôRäpu±WÑ¥\h’INj -•E$Åùö}Ë|ÙË\áe&åÊÛݵþÞ®Pɉ8•Ô¸¨TytªÒúÎþ35•ÊK4ªšŠúW¥w±Jº÷¿uî½ïÝ{ ;ü•莯¬›½û?lb2´ÞAU‡§©Ÿ7™¤h-fO”ÉÒJméI"Vs‚}ÅÜÛïWµ\s-—3óͽúWT*Í4ÉN!áe• e𞉯¹‹dÛ\Çy¹F’Ž*¦j¨b?1Ò'ógâÎãªZ<p`éæfDžÆnm­Ky*–¯Üø`‘Б$E’7 ‡ ý„tü7¾Ðëü@ÏïmÇ‰ÚØCW ñ\ÕdT4"®¥ejzv©˜¬I$ÂÒ "Û{)æ.håÞQÛÆíÌûͽ†Ùâ*x³8DÖÕ*¥Ž44¯SL]ÞÚXEãÞ\,PÖš˜ÐTðè;Åü’è,ÞJƒ‡í탓Êå*éè1Øú-Ç©¬­­«•a¦¥¦‚)ZI§žW ª$Ÿ`ûz}¦Üïm6í»Ü=¦{ùäXã.#gwrUT–b@yô_0ìsH‘EºÀÒ±à’NÔô1W×Rc(k2Y ˆé(1ô•ÕµS1SRRBõ5µŽ˜á†6f?€=È×wVö6·7·sí!ØðT@Y˜ü€ŸèÝÝ#G’F¢($Ÿ@2O@wû4ßçöu¿þ…8Ïúÿî.ÿ_fð¦ì¿öUýÑ/õ›—ÿèñoþö:¶–óÚ›ó›ƒfn ^æÂI<Ô±åpÕqÖÐÉQO§Ïu0–Ú"à5‰±ãØû—ù—`æ½¹w~ZÝà¾ÚË•ÂáвÓP 0H¨­:3µ¼µ¾ˆOg:É i©MEGô‹Ý]ñÓ;7S¶÷fìͳž¢Jy*±¬å|ÕÓÇUK$”õ$'§•]M¬Aöß½ÖöÛ•·9ö^cç}¶ËvŒ)h¦#‘C¨e%XƒFR>`ô’ë{Ú,¦k{½Æçª³EEF¨éC²;3¯»&…NÁÞ ßOŠ–2U Œ(h¦ªI$§†¢ZvtŽYR`¤ÞÂÿ‘ìß–9ß”yÖ+¹¹K˜­7mÙVF‚E‘Q˜¡ŠÔ@&œiÓö{†â$k´•T€Ji^§KŸbž–õï~ëÝÿ×ßãߺ÷X憈e§¨Š9àž7†x&E–¡•JI±¸d’9ˆe ‚ ¿uWD‘94l Š‚ à‚8Ž´ðù1°²Ÿ þkd&ÚôÓãöw`mþÛë:wŒ%»rlÄ;ŸŒ4n¯EŠ«§—!(AjGàû÷\O÷S—nýŒ÷Úåö›p¶Ö;Œ;ˆ"ˆa2 âAƒU•­Î2clu·Õß›kwì ¿Ùx¬„Cin-©ŽÞty*‡Ž8áÁd±QfR¢­ÕÞ8M=·˜j>2¬Óߺì¾ÑÌ;^õË»w4Ú\Ü×6ir®HDñ‰1©JžìàƒéÖ˜]Ù¸7'È®ÜïþîÁ`g›oÅ›¯Þù‰© ñC·ö~Ctâ6v×›!ä`Z²WËã¡”(òI+É.…E§ºá·=î[§¹œåî7>íûs6Ú'{© Šmžâ;h ×ñ$*ÔË1gÒ6›äþLݳC¹ºvõ4ïMs¬7…FJž+õ[c{‰2T•r!:ê%§ÏÒd"‘ÀÒ‘˜Ø‘uп¸÷8Áºûw¼òt…þÓz\‚Ð]UÕˆâH™fRF˜Áâ*V¿goSe÷ÏVt–9à—û‡¯ß;’EEybÊî—\vÒ‘®¥Ä⥨t^+¢&åE½ÔI÷ìçH¯7þQä;fSôP=Üæ•"Iû"JñcœÄJ„ð¶/€½ Mñûã/_mʬTXýå¹±±o}ý1…cÈM¸·$k_Eô+´»s%>8'*†™ˆ¹f'ÝfÝ×ÛȽ¸ö«–öÉm{ÝÜBêìÒŽfœkçaŒ¤4à4Ä’kÇù᢫ñÞBŠd]ÁØÈ®TkT“´ÑZÚ‚»F¤¡*? ÷ïò£÷G¶A¨\ÞŠý©m_ÛAûDËáÇòÐÿfÓ¨çíOôÕýÀðnìÎÕþþŽ?½Z¿„Qâjþÿø§÷óméûâš|_ntxï­µX{¨;ÙºÇúòrdœÝý{ýݦö[ è¾£û5µøŸWštbŸ® oü1ŸþþÁ?ÿKžýÔ¿ÿþuŸû¥ÿßG£)ñ ùmg>#wÍdRödíü†ÄÝûk0’mÙ•øŠúêí³W‡zZïNêLµ=bPÔ‰[]9§1§ Ou){-÷^Ü=™÷ ßš!æäÝ6Ù6û˜$Ûéž7w£*>¢àH¬õ¡B «¶Ú=û¬ÆëL”ûu7?Î>åÚ©P¸ÕÜ¿ s¸3Z” Q¾svš)+M(š˜T´RU™Y<‘™ Á`Mýû®û·¶ÛßÞxÚQºæIbÕ¦º|[%´ÕuP¶¢*+ê+^¬ïþÏÿ‹ÿ`Ÿÿ¥Ï~ë+¿àÿγÿt¿ûèôW~[+lÿƦËvýqá7ö oV`ésXÊÝ¥6ÊËžÌS`éŸÜÛªŸ*ðÖ×ÀÒFdÄI"#«ÝDÞò}Ò·j9:ó-ùÞ Ço¶x–Tksk'êʱ)Œx÷ ! êJÕNMÁr“mo½ïÕý¥×»«!“Ìmþ®ËìÿîU~NYjM?uÒî6¯ÛUR¡cA‡ŸoGš^³Wwí; <>žOøãu­GÇ~›ÿO}©…ë?ï÷SøÅj³øßðã¿oü#U“ñÿ þ)‡ó}ÇÛh¿Ü.W³ZÇŠ^Ï{oþ»ù¶òOúˆ¦Áñôø14”ðüXk«Nšø‚•­±ã`Ú?~npíßQák uiÕM*O KÆž½XÏü4çýÿßý…Ÿþ‘ýæOü?ùÖî—ÿ}‡ÿë_ÿIÏú£ÿ]zƒ”þTY|nB|GwÓäò°ÑUKÇUõÓbékë£…Þ’Ž£$›ï"ÔTÎaÆ Ú´5¬R_}Áo!²¼—o÷='¿X˜ÇíþÈáIDiô†5f /á¾k¥©N©/¶,r4[Èi@4- Ÿ OˆiSçCOCÕÂa©¥¢Äb¨ç '¤ÆÐÓLµ(– X¢+C¡±üûè¶Û–»u…´ x±ÂŠi‘UPóK©H¢Fø‚ûTµüÕ•Fþê‡ ¡ÛhgžÃS*f¢(¥¾¥T¹ ~.¯¾i}ý[9¨5ºq_²aOÙSûOQ¹¿îvÖ|ü&ÿuaSâ¿PUPpù–!@³î¼û»X[ÔîÄ“ù&þóîÀª¾Ãûv>šcù›©Éý§'çÐó“@³µSøþ>ÝÏs×B~½ïÝ{ª²þ`ÿ+7]šn˜ëœŒ¸ÅšÄ&OxnZ¤ƒ'…ÄW;ÇA†ÃÔDUè²YH¢ygH–vŒFCK­0GïyïÞïÉÆmy2õ­÷››q-åʲÒ#†)$ y ‘”ÐC>¥9ó™ç°Ó´mò¸t¬Ž0UOSäOxJq¨*ßÿ—þçî½¹IØ»ûrϲvžq¯MMD2;£pÓ»2î+$Š“Œ«bZ dóÍR£X‰chåxÙ_ºFùîfÍoÎ<Ù½¾ÙË÷@¼ ©â]\)?Úd$Q1©Fmo ‚dv r÷"Üïé¸_\m_*«¸þ,áAò&¤ñ¥$Ào¯å]‡z™úÛ³2ßÇ`‚I)qÛ΂†lnF¡C§“)††Ž|RÈl<ŸmU¤ýVljoš~áÛpÛ§—’ùÞã÷ª¡+ähc‘³E2¢޴ôô=½öΛoÜ_Ç@(O¥V…~Ú‰÷Ç‘ñ3´æØûͲÔÛ2Ÿp¾°v>AÌñaçóý­VàÂÇj…§¯¡ 'ÕJDY(C½ž÷sœþïüù'+ó)¸NZKÃáe!Ô!mZZâÜD¯‰XŽ‹”ÀÆêØ7ÝÕ÷3ey¨Y‰4Ëü&´,¼hGÜ8õÁ f°øí¶rX<¬¹·º0Õ°·Žz\†+-HÑ>†³£¤ÔójGµÃǾ¿î{vÕÌû%î×w;-õ³Fë†Y"•(iÄTÔò#©æh ¼¶’T=¼¨AóX›­n6vGâËbgKxúó~U`3uƒU´òÉ>·/ Nÿ+ÚùcYã–NWê8½Ê—WžÀûÿd»©:6}Õ ˆøíe Êþ;Y|høq\Ž#ì^NWæˆÄü-ç*ÇÕª[óFÔ?.¶5ß›×°v&éßÙIñ;_nä÷ Å$[UÅAE%T4ôò. ò×È«V¾§‘@½ýöSšù›oå>Ußy²ùÁÛìlä¸4? Sš— *Òµ,)Ǭ€¾¼ŠÆÊæúCúQF_í ­ÛÀ}½jŸ” ÜÛš“söUF1›&ë‚—5”¦„CަÜ;±s™ºJQ™Dðâ*ÜÔ"TPÄM\¾µÞ÷»}ïf²'okõY¥QHÖâëÇ™#µîJ@  ²êÆ9RâånwôŒ 1¾¦þ2ßgŸÖÂ;—|nÙôjÐ.Sa5VÆËSÃ¥J eŸPb¾°*°5”Åœðó,–ú:÷÷Nç~lö_—mà ¿ÚKXÊ£ðލZœ{ xÉ<ÃÓxä}Áo¹zÑ1âÁXإʟÍHûMz¬¿æ½*;Gä_íÈ#&Ì¢ÃìjiQZlŽéÎU%}u:IÃÈñÕä £ÐxI {~¢N}ï9–nz÷¦×”¶X¼gÛb†Æ0¢­%ÔìÔ$‡’8tðN'¨ëŸ/ræ±·]F±Šy»‘ûH_´®×¦ú×Ô=e³º÷T¹‰Q¡íN4=tÖ&³ç¯ó›sfé%­ÚyõìmÃGXï"Ru–Èš™0 ã"ÊíV>†p¡5>Ÿå}Ö¹"Îo¼?ÞY÷[øL›<ûƒÞÌ­S¦ÆÔ¨†­M c@>¾ÿòGöÓþzoã–ýŸ‰ûGùfúºzߊ•{ž°§- ɈÞÝe·é?½ÒbÎXš ÝŸÆåL¦‘éuH#ñ0°RHk{¬wö{fûÏ_ò”“ûA5ÚòŸÕÈŽêÆñÂÇâv\L’WIާN“äjF·klæ©KÙ/Wß²oêþ¤¤ï®‹ªÞ4ÿߎ¶Ü4‚Ž›¶6„ô•9øÊïžÎØÛoÅS_˜ªízþÊ£ÛŠÌb޶£•ÍÕfh©#j§T”†žÌd‘Þê&÷_Ú¼vͲI¾{…y¸n¼¿kFyp{å‡È3G$­*¨Ôk BTêe6ãü¤»_¥wGJdúÛ¯6Œ»}lšš\¯bÑÖWœ½Fð¬Ì£ÒSox3OHõ0U oÛ½7ÇCR:K'ºÌ¿¹·8r.íÈ—|¯Ë[1°æ Y/UŸÄ7--Un„¥T°m zGEAUev±þäÿ™CÚ¿ø÷ÏþóO`ÏqÿéÞsçý)oí^²Ûwÿ’Vçÿ<òÇZÌô=oäû+IÑRVÇÙI—lCãòXlMP¤Rùm¹úªÏ÷'ù¨ÿÊîîÿÐÿ©û$÷–?Õ¿ü¤îö_µÛOC£÷3øåÿœ°Ð}YÄJ çŒè£Eرe!ßPç{0îµÌ¿›'&rnÔÞ³×ÔUT’:¶«šC*ÌŽñLŽ6de'3þï6¼Ëeí//ÛsŒs¯4­Þåõ^1¬†sº^´ŒÍRY:ƒ©*à†BT‚dUKÈö+T¿ /CͯW^4„’|ëÆ£ˆÇFWÜÕЋªJþjßñþu7þ9ïýÜÁï˜ß_ùZùþ•óÿÕåê÷;ýÍÚÿæ“LJVð‹þÉc¨?íK—ÿÞ§=ï0>ì_ôâ=»ÿžií*~‡¼›ÿ*ÎÓþ‘¿ãíѪ÷<ô&ëÞý׺ֻç”(~Uö‘Éù žm¯= ¿è|klͼ”~Shš ¾’+v¹÷ŽlW±ûõÏfúµfµd'èíÂiò I§â \׬yçus>çây”#ìðÖŸæûzØs­ªðÕÝw°ë6é€à*vnÙ› )t}ºâŸ DÔ qÒéP ZÞûÉSí·\Ê—6Ý/¶ÛtÓO„aO (€Pã‡SÖÞн…‹ÛÓÀ0¦špÓ¤Sùtµö&égZäÿ0ª¬WÊ=çüÀÓÓâv¥.~Zr¬²g!ÀQ DŽŒÊóÓã42ZÅ2Œ5)÷Æ¿½ôû\þús/îÒ†T·µYÊð3¬ Z‘‚ˆèT©È=cÿ>4-Ì·ž 5@Ôþ £ù@~Êu}%JŸ¦zŽ Ás—‡¬v YS/2”{W•ÆCe»š ×às﫞ØÇ{¶ÞÞŸ“ûÁv;-xø‚Ö õùê­z›¶a"íRÍý¨¶‹WÛ¡küú©¯æ‰ÕÂ÷nÌî,u1Z=ÓGýÐÜ’Æ F¹ì,RUa*gm µNOe„rG8œûôrÐs-ûg-¯ãúK’)`Ôƒ? °Àó‹½ÉÚü+«MÚ5ì”xoþ™r§í+Qö'H®ØùJwÁþ²ëá_åÝùLÏ÷+x)ž¥°]f˜Êê*š@‘ß1nF‘ÏîIëw!ˆ óÿ¾Ç˜þëü‘Ê"ïW1OsôWÕom:3b¤ÌÍ‹ÜË(î!ˆGºs/ÕòfÝa®·lþžºa¡ÿ¦¬f¾d7ôhú{âúf~eöŒØådz±u}›EäŽAP¹ÈÄû°–8êqºE`UûɆ–ÔÅçOn}Œ]Ëòô–cúǾ@û’TBq¦Kµ¢Š @ 4ƒIÔÚ„»O-‰¹[SøÝÊ™‡®¬Çæ¡ÞŽ8Ôü ùCÒ¹þÓÅnyÄX ¦ÄÌnªz9æX}Ѱhkr”øÊU”]*³™jâ²ÝÞX¢]-a§þéþíÚûg»så†ù.¦}ªk¥F`¥®¬åX–¼hŒ«Œ–XÅ |¾¦Ï>çË~ƒ@Îiß,ù²êhIø±r]×òc'Ú©NJS‘ìLÝTÅš:­çž®ª8 þO4¦eÉÍQ_ÜÔ<±ý,ÿÝK•¯}Ì÷²÷žwáãG¶¼›„ìkF¼ÛÀ­jkâ™'\ñƒ$ð6ä‹)7Žb“r¹–ecë#§ùÕ‡ú^¶÷Öî§N½ïÝ{¯{÷^ëÿÑßãߺ÷^÷î½ÐsÛÝs…íÞ®ßÝe¸4®'|m\ÎÞ©¨`  ’¾ŽXèò‘_Q‰­ñÔÄOH”Ÿ~è3Μ³cÎ|§Ì\«¹PYßÙË à.¤,ƒúQ¶—_é(ëG 6¾F=Ý&ËòãÛ-ã}¯çZèWÙÉœO”d¥1Ó®<Ô‹ùÛJýFÃߺàKm7+¼¶Å®3x.¼ ë½~u𠳬ÐiÏ·‘êN¼Ãõ/Wì³À•|VÇÚx=·MPªªkÛA =NNP¾“S•«Y*e#õI+Ï¿uß~Må«.Nå>\å]¸ƒgag ßÇ¡iô¤j»z³Ö³ÿÍïª(6Ê$ÞX©)V›·v–3u×PDê³Ñî C>ØÊÊÔÊ %.N ]5H’äËU%EÀÓsî¹a÷Ñäûn]÷iwËFAõd—€åfްHtù,‚4}_‰ÚOLžoä©Ô¸¼g\vouÏ-V{unH¶9"™&ªÃ`vÍ-&_ “¬nM,™ì¦bx¤ÌtȶWõ{©ûî)ɶ–œ±Í|÷#Fû…åд@-P*ÈàÐö™d‘IVÓ0Ãfï½û¬öꈞбñޜ˳Ý2À]|Í xý *Ç}f4yµ`?#ߺç¿ßåÓ÷W¶‘ë!¸½4®hØN4ŒüÇDwâ/ó)ÎüNê™ú·ÔØëO6ëÌn“˜­Ýµ˜I–L½&*‘¨Å,Š€bÃò]µ‘an}Ô ìÇÞpöw”$å+^N†þ6¼’ãÅk†ˆÖEt鸠ðë]Y¯ th¿áð÷oýãÆÝÿщ’ÿìOߺ–àøÞ?ðš[ÙkÿÛ?CÆ?æ¾¾Lüê.žN³Àl,&ãÉo*­É§ÏÔîJÜ–?Ö;ß=C‹¦Z¬>11 çqÔ“¼È^FXe_~9cS[kÀ+æ~–\ŸP‡!9šÎ§ðIÿn¶4÷Ù>²¯{÷^ëÞý׺¤oæ«,g°:¦"£ÙÙ©^ êdHåÍ¢Å#¥õ*JиRE˜£[è}óïèèy»£t>‡¨oÜÒ>»kÏ„ßñîý1üÄ3];Ö;K­iz·ƒjÑÕÒG–ŸuUÐMZ*²uÙ##ÒGƒªHJ5iK áoù·°¿¶ß|=ÏÛžGåþJƒ‘`ºŠÂ6A+]#½#Ú9úm§mµÛ—mWX‹‘Z’xi>¾½ ð뛋þ|¾ÿCZïþÇ=Ž?àùÞðšÛÙcÿÛ?F?ëŸqÿFtÿœ‡þ€èÒüHùs¹~LoáC_¶1ÛG µö¦:®,m{åå¬ÊWeå†Jé«ç¡¡–8â¤cHUtܳ1bT,í÷|ûÂo~öóO1ZÝìíûeŽßˆÑÌ¥åyˆ.ddB@ ­X’HÒ&ånj¸æ+Û´’Ùb†( :ªÅ¸Ô动1üìø‘îª NÊëÈ#—±6Î,ãëð@G o ËSO4ÌÑÆ¹ìSÍ/€HmSøµH,ûÔ}Þï=Ì´ƒy> Üãc‡$Y’ʪØ‘ågf¥¨¦ΨÄwpøíÞSÜŸdb—’÷—ë6{g`-.üH.-ZµdŽB¥£BjLRDê¬j*Ú€[77îü¸­·Ü[ø!þÍ꬇ÌJò Ðð¦j2o¿æ™¿sxzš …ÖøM‘©àþ7”Üo*ª&’ãî±Ô‡·h¦%>¸Ž¦0ܲ0ãÜ‘Í_~ÞlÜöé­9S’ív»ÇB¾<·ñŸÅxñ†‡ˆ²-rTŒto{î]ôÑ4v;zC!Ô[Ä#æ”ûA.ƒ¿Š¿7÷|ïz~ÎíJ<½_¿÷“-”ÜqT Ÿdä%­5µt+XR¦¯’©ÔkkØÙK$eä,c{ ÷zæÏuùžwçËkˆùCê>¦Ynx»Œ…õ²&º3Ç#WÆœöYP³’P¿–9Vû{¼]ËsGõ³=k1­HÉüMÈ<6UTUDUDE ˆ *ª¨²ª¨°UP,ú{낪ª…P@:x`pè¼|¯ëš.ÐèÇÛ•OOU& £rák*dXb£Ím•9šyØ‚*¿µji\ƒhgp÷¿¼›mÏ^ÒóžÍ;"Ï«\Âìhkaã!-øCé1±òGnˆ9ŸoMËbÜ-Ø€Á ©>LÃ>U¥Èžµ¼ê]’½‘ÙÛ bIR”Pn½Õ…ÂÖUÉ4P}µetI_4rJBˆè¼†$úÉ U–ß}¿å‘Î|ñÊ|¨óâ¿¿†rBéÜ A5Y¨¢¤Ž±ók³ýá¹XÙ¢Ë*©<( ÉûiZzœu¶.:Ž“Ct´T4ÐQÑÓBºb§¥¦‰a§‚%þÌpÄT~÷ß«kx,íà´µˆ%´H¨Š0TUÈ.²cEˆ =à:Öwæw^Qõ¯ÈÞÅÃc^‹ËäbÝøø az·\+™©ÇɨÂ!S2D‚ÿäÂ6þÕ‡¾ò|ŸmÉ^òóŽÛdÉô7 ¸ÕºQ3FGáÑ#8Eÿ}è>tëÍö ·sá dxnÞ Ë_q*iò§Vëü¹úæƒfü{ Ýôµ9ŽÊËä7F¦žU˜ÁCŽ©Ÿ‡ÄÉ$lɪ‰(f’Áãš®DnVás~M´å¿h-7Åd}Çz¸’âFR”šb$vw#м®­‘A*rߦÃÈ Ëpå‰@ª¿• ù#£íï,:uï~ëÝ{ߺ÷_ÿÒßãߺ÷^÷î½Ô ®+Ædp™¼uc ˜ ¬ÅeñZ:|†3+ŒÈSÉI_ŽÈÐUÇ5-uu,ÏÐʱ±V=û¤÷v–›…¥Õ…ý¬sØÏG$r(xäÁWGF]IVV0$Aèÿe?âÏýãW@è›ë¯þÇ=û úÏ{Iÿ„·—?î[eÿZz1X¬f ŽÂa1Ô|6‚ˆÄb¨éñøÌV3O%;AI4´44°¤PÃ,qF¡T÷î‡Ö––›}¥­……¬pXÁÇq¨HãTDEQ@UU(è1Ý_º}ç*÷>÷é.¢Þ[— ´É_¸wW[lÝÜ­J:hh¨Ö¯-—ÂÖWÔ­%Žé^ÇÊÇì>Ÿêíùœ†Ž,|Yç×ûOteb ‚Ie††<Žs]V”pËQ#,AÂ+;.O¿tß9‘9žñweä­§p¿T%¹³·ž@€’<±»’´“Lž’?ì§üYÿ¼jèý}uÿØç¿tMþ³ÞÒá-åÏû–ÙÖž½þÊÅŸûÆ®€ÿÑ7×_ýŽ{÷^ÿYïi?ð–òçýËl¿ëOYq?¾=í½ß³÷æÏé޺؛³cd²¹<kblí»³kó[c9´²4yI6ö7ÙllØ­Á9O­uŽU{÷W³öŸÛm¯zÙ9‡dä³oÞ6ùdx¥´¶†Ù«,ÛºÈaDñÇ3v=@p®2½òGÑÉ Ñ¤±J±HªñÉ©WŽD`UÑÔA}û©•]YAB(AÈ ñyƒÐ~(|ZbY¾5ô 3YNuÙ$“rI;rä“ïÝG‡Ùÿi $û[Ë•ÿ¥m—ýië¯öSþ,ÿÞ5tþ‰¾ºÿìsߺ×úÏ{Iÿ„·—?î[eÿZz~Ûß:iW&SjtoOmœœlGoužÊÂ×#ÄI’¯„¦¨VŒ±*C\Ç¿ta¶ûkíÎÍp.öŽ@Ù-.<66±8#‡rD§Yèa÷î†Ý2î ··wn*£º°]Í„«hZ«¸1T9œUKSÊ“ÀÕüŒ4“43Æ®…éuXe›¾Ë³ó„ÛVý´Û_mrZˆ’h›I º£‘Y–ŠƒB3=½½ÔMÔ $'в†SLŠ‚éAÐÝ‹­¤Éc:cª1Ù}L5” ºÚ•´U”Ò,ÔõT•Tøx禩§•$ˆÊÈÀA–¾Ô{[auo{cí¶Á ä.¯‰·Ú#£©ªº2ÂYHXA½!M“e‰ÒHö‹U‘MAF#-A½ þÇÝuï~ëÝ{ߺ÷A¾á龡ݹjœöëê¾·ÜÙÊÅjó[‡cíŒÖZ©i`Ž–™jr9,]MdëOM Fœè‹°fïíÇ·œÁ¸M»oü‡²ßn’5Å•´Ò°U º¤’&vÒ *Ôš(`‹çÚ6«©Z{­²ÞI*Í3 ’ 4.™Ùwøÿÿ>3§ôYl¯þ²{,ÿYïi?ð–òçýËl¿ëOLþàØ¿èËiÿ8cÿ z÷û.ÿÿçÆtïþ‹-•ÿÖO~ÿYïi?ð–òçýËl¿ëO^ýÁ±Ñ–ÓþpÇÿ@ôñ´ú{¬¶à­Ü»emÍ™ÉaâÂdbÚ¸|v߯×QÁXk©ä©Æâ©©h䬆f`&Ñä(ÚXÆ;·\‘Ê›½Î÷Êܳe¶ÞMl!ZünŠúÔ´q*¡pI£ÓU ;k´íÖ3½Å•œpÈɤèP €j*_Ÿ„¯c^ŒzEnÞ¶ëÍüŠ›ßbí Ü#¢…·&ÜÄf¥§F ÚϤ¨š•†²U£ee&àƒì3Ì—ÉüتœÑÊÛvâ 76ñLTü-"1S“B¤r=#ºÛ¬/…/l¢—ý:+Sì$~]%°ú7kÕŒ†¨zç^Œ­u>ÏÁØ ƒOW-•ÜØŸ-Èý²§Ú?kv+w´ûy³Av C­¤ÖŸÂå /ûR+Šð&ƒbÙm›\Uº¿¨kùT~] ÞäNz÷¿uî™óÛ{º±5x уÃîL@B+ð¹ìecZ)ª!«§xì„u" ºxåMhÚdEabÛ¶Ñ´ïÛ}ÆÓ¾mv÷»TÔñ!ž4š'ÒÁ×\r+#iuVŒ¡†@=5<]Dð\Â’@ÜU€e45 Ð€~Þƒañã †^éàAÖ{(G ‚0—`±ìÿ´€‚=­åÊÿÒ¶Ëþ´ô]û‡bÿ£-§üáþèa÷"ômÐW“讑Ídk²ùžœê¼¶['W=~K)“ëÝ¥_‘ÈWUHÓUVWVÕb%©««©™ËÉ$ŒÎìI$“ì}íg¶;åÖã¹{q°ÜnÈÏ$²íö’I#±«;»BY݉%™‰$š“^‹$Ùvi¤yfÚmZV$’bBI libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-reference/ivy.xml0000644000000000000000000000145611360615644025375 0ustar libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/0000755000000000000000000000000011360615646022104 5ustar libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/template.mf0000644000000000000000000000271711360615646024252 0ustar Bundle-SymbolicName: org.springframework.webflow Bundle-Name: Spring Web Flow Bundle-Vendor: SpringSource Bundle-ManifestVersion: 2 Import-Template: org.springframework.binding.*;version="[2.0.9, 2.0.10)", org.springframework.js.*;version="[2.0.9, 2.0.10)", org.springframework.*;version="[2.5.6.SEC01, 3.1.0)", org.springframework.orm.*;version="[2.5.6.SEC01, 3.1.0)";resolution:=optional, org.springframework.transaction.*;version="[2.5.6.SEC01, 3.1.0)";resolution:=optional, org.springframework.web.portlet.*;version="[2.5.6.SEC01, 3.1.0)";resolution:=optional, org.springframework.security.*;version="[2.0.0, 3.0.0)";resolution:=optional, org.apache.commons.logging;version="[1.1.1, 2.0.0)", javax.servlet;version="[2.4.0, 3.0.0)", javax.servlet.http;version="[2.4.0, 3.0.0)", javax.el;version="[1.0.0, 2.0.0)";resolution:=optional, edu.emory.mathcs.backport.java.util.concurrent.*;version="[3.0.0, 4.0.0)";resolution:=optional, javax.persistence;version="[1.0.0, 2.0.0)";resolution:=optional, javax.portlet;version="[1.0.0, 2.0.0)";resolution:=optional, ognl;version="[2.6.9, 3.0.0)";resolution:=optional, junit.framework;resolution:=optional;version="[3.8.2, 4.0.0)", org.hibernate;resolution:=optional;version="[3.2.6.ga, 4.0.0)", org.hibernate.classic;resolution:=optional;version="[3.2.6.ga, 4.0.0)", org.w3c.dom;version="0", org.xml.sax;version="0", javax.xml.parsers;version="0", javax.xml.transform;version="0", javax.xml.transform.stream;version="0" libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/.project0000644000000000000000000000056511360615640023553 0ustar spring-webflow org.eclipse.jdt.core.javabuilder org.eclipse.jdt.core.javanature libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/0000755000000000000000000000000011360615632022666 5ustar libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/0000755000000000000000000000000011360615632023612 5ustar libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/resources/0000755000000000000000000000000011360615632025624 5ustar libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/resources/META-INF/0000755000000000000000000000000011360615642026765 5ustar ././@LongLink0000000000000000000000000000016100000000000011563 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/resources/META-INF/spring.schemaslibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/resources/META-INF/sp0000644000000000000000000000022411360615632027327 0ustar http\://www.springframework.org/schema/webflow-config/spring-webflow-config-2.0.xsd=org/springframework/webflow/config/spring-webflow-config-2.0.xsd././@LongLink0000000000000000000000000000016200000000000011564 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/resources/META-INF/spring.handlerslibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/resources/META-INF/sp0000644000000000000000000000016611360615642027335 0ustar http\://www.springframework.org/schema/webflow-config=org.springframework.webflow.config.WebFlowConfigNamespaceHandlerlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/0000755000000000000000000000000011360615632024533 5ustar libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/0000755000000000000000000000000011360615632025322 5ustar ././@LongLink0000000000000000000000000000015100000000000011562 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframework/libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframew0000755000000000000000000000000011360615632027747 5ustar ././@LongLink0000000000000000000000000000016100000000000011563 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframework/webflow/libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframew0000755000000000000000000000000011360615634027751 5ustar ././@LongLink0000000000000000000000000000017100000000000011564 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframework/webflow/upgrade/libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframew0000755000000000000000000000000011360615646027754 5ustar ././@LongLink0000000000000000000000000000021500000000000011563 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframework/webflow/upgrade/WebFlowUpgrader.javalibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframew0000644000000000000000000000634211360615642027757 0ustar /* * Copyright 2004-2008 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.springframework.webflow.upgrade; import java.io.IOException; import java.io.StringWriter; import javax.xml.transform.Result; import javax.xml.transform.Source; import javax.xml.transform.Transformer; import javax.xml.transform.TransformerConfigurationException; import javax.xml.transform.TransformerException; import javax.xml.transform.TransformerFactory; import javax.xml.transform.stream.StreamResult; import javax.xml.transform.stream.StreamSource; import org.springframework.core.io.ClassPathResource; import org.springframework.core.io.FileSystemResource; import org.springframework.core.io.Resource; import com.sun.org.apache.xml.internal.serializer.OutputPropertiesFactory; /** * Converts Web Flow 1 flow definitions to the version 2 syntax. To use, invoke as a Java application, passing the * file-system path to the flow definition you wish to convert as a program argument. The converted flow definition is * printed to standard out. * * This class requires a XSLT transformer to run. Saxon is recommended to preserve flow definition formatting and line * breaks. * * @author Scott Andrews */ public class WebFlowUpgrader { private static final String XSL_NAME = "spring-webflow-1.0-to-2.0.xsl"; private Transformer transformer; public static void main(String[] args) { if (args.length < 1) { System.err.println("The file path to the flow to convert is required"); System.exit(-1); } WebFlowUpgrader converter = new WebFlowUpgrader(); String result = converter.convert(new FileSystemResource(args[0])); System.out.println(result); } public String convert(Resource flowResource) { StringWriter output = new StringWriter(); try { Source source = new StreamSource(flowResource.getInputStream()); Result result = new StreamResult(output); transform(source, result); } catch (TransformerException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } return output.toString(); } public synchronized void transform(Source source, Result result) throws TransformerConfigurationException, TransformerException, IOException { getTransformer().transform(source, result); } private Transformer getTransformer() throws TransformerConfigurationException, IOException { if (transformer == null) { Resource xslResource = new ClassPathResource(XSL_NAME, getClass()); TransformerFactory factory = TransformerFactory.newInstance(); Source source = new StreamSource(xslResource.getInputStream()); transformer = factory.newTransformer(source); transformer.setOutputProperty(OutputPropertiesFactory.S_KEY_INDENT_AMOUNT, "4"); } return transformer; } } ././@LongLink0000000000000000000000000000022600000000000011565 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframework/webflow/upgrade/spring-webflow-1.0-to-2.0.xsllibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframew0000644000000000000000000006145311360615646027767 0ustar "> ]> Scope ${ } http://www.springframework.org/schema/webflow http://www.springframework.org/schema/webflow/spring-webflow-2.0.xsd . name &stripEl; WARNING: parameter-type is no longer supported. Use <set name="temp" value=" " type=" " /> to convert the type before the evaluate action. . ( &stripEl; , ) . request . name &stripEl; . request . name &stripEl; WARNING: inline-flow is no longer supported. Create a new top level flow. &stripEl; . &stripEl; &stripEl; &stripEl; &stripEl; &stripEl; &stripEl; &stripEl; WARNING: target-collection is no longer supported. This will overwrite the entire collection. &stripEl; . &stripEl; . &stripEl; &stripEl; name WARNING: the bean attribute is no longer supported WARNING: variables are always set into flow scope ././@LongLink0000000000000000000000000000020500000000000011562 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframework/webflow/upgrade/package.htmllibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframew0000644000000000000000000000020611360615632027747 0ustar

A migration tool to convert Web Flow version 1 flow definitions to the version 2 format.

././@LongLink0000000000000000000000000000017000000000000011563 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframework/webflow/action/libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframew0000755000000000000000000000000011360615646027754 5ustar ././@LongLink0000000000000000000000000000020700000000000011564 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframework/webflow/action/FormAction.javalibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframew0000644000000000000000000012425311360615636027764 0ustar /* * Copyright 2004-2008 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.springframework.webflow.action; import org.springframework.beans.MutablePropertyValues; import org.springframework.beans.PropertyEditorRegistrar; import org.springframework.beans.PropertyEditorRegistry; import org.springframework.beans.factory.InitializingBean; import org.springframework.beans.propertyeditors.PropertiesEditor; import org.springframework.core.style.StylerUtils; import org.springframework.core.style.ToStringCreator; import org.springframework.util.Assert; import org.springframework.util.ClassUtils; import org.springframework.util.StringUtils; import org.springframework.validation.BindingResult; import org.springframework.validation.DataBinder; import org.springframework.validation.Errors; import org.springframework.validation.MessageCodesResolver; import org.springframework.validation.Validator; import org.springframework.web.bind.WebDataBinder; import org.springframework.webflow.execution.Event; import org.springframework.webflow.execution.RequestContext; import org.springframework.webflow.execution.ScopeType; /** * Multi-action that implements common logic dealing with input forms. This class uses the Spring Web data binding code * to do binding and validation. *

* Several action execution methods are provided: *

    *
  • {@link #setupForm(RequestContext)} - Prepares the form object for display on a form, * {@link #createFormObject(RequestContext) creating it} and an associated {@link Errors errors} if necessary, then * caching them in the configured {@link #getFormObjectScope() form object scope} and * {@link #getFormErrorsScope() form errors scope}, respectively. Also * {@link #registerPropertyEditors(PropertyEditorRegistry) installs} any custom property editors for formatting form * object field values. This action method will return the "success" event unless an exception is thrown.
  • *
  • {@link #bindAndValidate(RequestContext)} - Binds all incoming request parameters to the form object and then * validates the form object using a {@link #setValidator(Validator) registered validator}. This action method will * return the "success" event if there are no binding or validation errors, otherwise it will return the "error" event. *
  • *
  • {@link #bind(RequestContext)} - Binds all incoming request parameters to the form object. No additional * validation is performed. This action method will return the "success" event if there are no binding errors, otherwise * it will return the "error" event.
  • *
  • {@link #validate(RequestContext)} - Validates the form object using a registered validator. No data binding is * performed. This action method will return the "success" event if there are no validation errors, otherwise it will * return the "error" event.
  • *
  • {@link #resetForm(RequestContext)} - Resets the form by reloading the backing form object and reinstalling any * custom property editors. Returns "success" on completion, an exception is thrown when a failure occurs.
  • *
*

* Since this is a multi-action a subclass could add any number of additional action execution methods, e.g. * "setupReferenceData(RequestContext)", or "processSubmit(RequestContext)". *

* Using this action, it becomes very easy to implement form preparation and submission logic in your flow. One way to * do this follows: *

    *
  1. Create a view state to display the form. In a render action of that state, invoke * {@link #setupForm(RequestContext) setupForm} to prepare the new form for display.
  2. *
  3. On a matching "submit" transition execute an action that invokes * {@link #bindAndValidate(RequestContext) bindAndValidate} to bind incoming request parameters to the form object and * validate the form object.
  4. *
  5. If there are binding or validation errors, the transition will not be allowed and the view state will * automatically be re-entered. *
  6. If binding and validation are successful go to an action state called "processSubmit" (or any other appropriate * name). This will invoke an action method called "processSubmit" you must provide on a subclass to process form * submission, e.g. interacting with the business logic.
  7. *
  8. If business processing is ok, continue to a view state to display the success view.
  9. *
*

* Here is an example implementation of such a form flow: * *

 *     <view-state id="displayCriteria">
 *         <on-render>
 *             <evaluate expression="formAction.setupForm"/>
 *         </on-render>
 *         <transition on="search" to="executeSearch">
 *             <evaluate expression="formAction.bindAndValidate"/>
 *         </transition>
 *     </view-state>
 * 
* *

* When you need additional flexibility consider splitting the view state above acting as a single logical form state * into multiple states. For example, you could have one action state handle form setup, a view state trigger form * display, another action state handle data binding and validation, and another process form submission. This would be * a bit more verbose but would also give you more control over how you respond to specific results of fine-grained * actions that occur within the flow. *

* Subclassing hooks: *

    *
  • A important hook is {@link #createFormObject(RequestContext) createFormObject}. You may override this to * customize where the backing form object instance comes from (e.g instantiated transiently in memory or loaded from a * database).
  • *
  • An optional hook method provided by this class is {@link #initBinder(RequestContext, DataBinder) initBinder}. * This is called after a new data binder is created. *
  • Another optional hook method is {@link #registerPropertyEditors(PropertyEditorRegistry)}. By overriding it you * can register any required property editors for your form. Instead of overriding this method, consider setting an * explicit {@link org.springframework.beans.PropertyEditorRegistrar} strategy as a more reusable way to encapsulate * custom PropertyEditor installation logic.
  • *
  • Override {@link #validationEnabled(RequestContext)} to dynamically decide whether or not to do validation based * on data available in the request context. *
*

* Note that this action does not provide a referenceData() hook method similar to that of Spring MVC's * SimpleFormController. If you wish to expose reference data to populate form drop downs you can define * a custom action method in your FormAction subclass that does just that. Simply invoke it as either a chained action * as part of the setupForm state, or as a fine grained state definition itself. *

* For example, you might create this method in your subclass: * *

 * public Event setupReferenceData(RequestContext context) throws Exception {
 * 	MutableAttributeMap requestScope = context.getRequestScope();
 * 	requestScope.put("refData", lookupService.getSupportingFormData());
 * 	return success();
 * }
 * 
* * ... and then invoke it like this: * *
 *     <view-state id="displayCriteria">
 *         <on-render>
 *             <evaluate expression="formAction.setupForm"/>
 *             <evaluate expression="formAction.setupReferenceData"/>
 *         </on-render>
 *         ...
 *     </view-state>
 * 
* * This style of calling multiple action methods in a chain (Chain of Responsibility) is preferred to overriding a * single action method. In general, action method overriding is discouraged. *

* When it comes to validating submitted input data using a registered {@link org.springframework.validation.Validator}, * this class offers the following options: *

    *
  • If you don't want validation at all, just call {@link #bind(RequestContext)} instead of * {@link #bindAndValidate(RequestContext)} or don't register a validator.
  • *
  • If you want piecemeal validation, e.g. in a multi-page wizard, call {@link #bindAndValidate(RequestContext)} or * {@link #validate(RequestContext)} and specify a {@link #VALIDATOR_METHOD_ATTRIBUTE validatorMethod} action execution * attribute. This will invoke the identified custom validator method on the validator. The validator method signature * should follow the following pattern: * *
     *     public void ${validateMethodName}(${formObjectClass}, Errors)
     * 
    * * For instance, having a action definition like this: * *
     *     <evaluate expression="formAction.bindAndValidate">
     *         <attribute name="validatorMethod" value="validateSearchCriteria"/>
     *     </evaluate>
     * 
    * * Would result in the public void validateSearchCriteria(SearchCriteria, Errors) method of the registered * validator being called if the form object class would be SearchCriteria.
  • *
  • If you want to do full validation using the * {@link org.springframework.validation.Validator#validate(java.lang.Object, org.springframework.validation.Errors) validate} * method of the registered validator, call {@link #bindAndValidate(RequestContext)} or * {@link #validate(RequestContext)} without specifying a "validatorMethod" action execution attribute.
  • *
* *

* FormAction configurable properties
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
namedefaultdescription
formObjectNameformObjectThe name of the form object. The form object will be set in the configured scope using this name.
formObjectClassnullThe form object class for this action. An instance of this class will get populated and validated. Required when * using a validator.
formObjectScope{@link org.springframework.webflow.execution.ScopeType#FLOW flow}The scope in which the form object will be put. If put in flow scope the object will be cached and reused over * the life of the flow, preserving previous values. Request scope will cause a new fresh form object instance to be * created on each request into the flow execution.
formErrorsScope{@link org.springframework.webflow.execution.ScopeType#FLASH flash}The scope in which the form object errors instance will be put. If put in flash scope form errors will be cached * until the next user event is signaled.
propertyEditorRegistrarnullThe strategy used to register custom property editors with the data binder. This is an alternative to overriding * the {@link #registerPropertyEditors(PropertyEditorRegistry)} hook method.
validatornullThe validator for this action. The validator must support the specified form object class.
messageCodesResolvernullSet the strategy to use for resolving errors into message codes.
* * @see org.springframework.beans.PropertyEditorRegistrar * @see org.springframework.validation.DataBinder * @see ScopeType * * @author Erwin Vervaet * @author Keith Donald */ public class FormAction extends MultiAction implements InitializingBean { /** * The default form object name ("formObject"). */ public static final String DEFAULT_FORM_OBJECT_NAME = "formObject"; /** * Optional attribute that identifies the method that should be invoked on the configured validator instance, to * support piecemeal wizard page validation ("validatorMethod"). */ public static final String VALIDATOR_METHOD_ATTRIBUTE = "validatorMethod"; /** * The name the form object should be exposed under. Default is {@link #DEFAULT_FORM_OBJECT_NAME}. */ private String formObjectName = DEFAULT_FORM_OBJECT_NAME; /** * The type of form object, typically an instantiable class. Required if {@link #createFormObject(RequestContext)} * is not overridden or when a validator is used. */ private Class formObjectClass; /** * The scope in which the form object should be exposed. Default is {@link ScopeType#FLOW}. */ private ScopeType formObjectScope = ScopeType.FLOW; /** * The scope in which the form object errors holder should be exposed. Default is {@link ScopeType#FLASH}. */ private ScopeType formErrorsScope = ScopeType.FLASH; /** * A centralized service for property editor registration, for applying type conversion during form object data * binding. Can be used as an alternative to overriding {@link #registerPropertyEditors(PropertyEditorRegistry)}. */ private PropertyEditorRegistrar propertyEditorRegistrar; /** * A validator for the form's form object. */ private Validator validator; /** * Strategy for resolving error message codes. */ private MessageCodesResolver messageCodesResolver; /** * A cache for dispatched validator methods. */ private DispatchMethodInvoker validateMethodInvoker; /** * Bean-style default constructor; creates a initially unconfigured FormAction instance relying on default property * values. Clients invoking this constructor directly must set the formObjectClass property or override * {@link #createFormObject(RequestContext)}. * @see #setFormObjectClass(Class) */ public FormAction() { } /** * Creates a new form action that manages instance(s) of the specified form object class. * @param formObjectClass the class of the form object (must be instantiable) */ public FormAction(Class formObjectClass) { setFormObjectClass(formObjectClass); } /** * Return the name of the form object in the configured scope. */ public String getFormObjectName() { return formObjectName; } /** * Set the name of the form object in the configured scope. The form object will be included in the configured scope * under this name. */ public void setFormObjectName(String formObjectName) { this.formObjectName = formObjectName; } /** * Return the form object class for this action. */ public Class getFormObjectClass() { return formObjectClass; } /** * Set the form object class for this action. An instance of this class will get populated and validated. This is a * required property if you register a validator with the form action ({@link #setValidator(Validator)})! *

* If no form object name is set at the moment this method is called, a form object name will be automatically * generated based on the provided form object class using * {@link ClassUtils#getShortNameAsProperty(java.lang.Class)}. */ public void setFormObjectClass(Class formObjectClass) { this.formObjectClass = formObjectClass; // generate a default form object name if ((getFormObjectName() == null || getFormObjectName() == DEFAULT_FORM_OBJECT_NAME) && formObjectClass != null) { setFormObjectName(ClassUtils.getShortNameAsProperty(formObjectClass)); } } /** * Get the scope in which the form object will be placed. */ public ScopeType getFormObjectScope() { return formObjectScope; } /** * Set the scope in which the form object will be placed. The default if not set is * {@link ScopeType#FLOW flow scope}. */ public void setFormObjectScope(ScopeType scopeType) { this.formObjectScope = scopeType; } /** * Get the scope in which the Errors object will be placed. */ public ScopeType getFormErrorsScope() { return formErrorsScope; } /** * Set the scope in which the Errors object will be placed. The default if not set is * {@link ScopeType#FLASH flash scope}. */ public void setFormErrorsScope(ScopeType errorsScope) { this.formErrorsScope = errorsScope; } /** * Get the property editor registration strategy for this action's data binders. */ public PropertyEditorRegistrar getPropertyEditorRegistrar() { return propertyEditorRegistrar; } /** * Set a property editor registration strategy for this action's data binders. This is an alternative to overriding * the {@link #registerPropertyEditors(PropertyEditorRegistry)} method. */ public void setPropertyEditorRegistrar(PropertyEditorRegistrar propertyEditorRegistrar) { this.propertyEditorRegistrar = propertyEditorRegistrar; } /** * Returns the validator for this action. */ public Validator getValidator() { return validator; } /** * Set the validator for this action. When setting a validator, you must also set the * {@link #setFormObjectClass(Class) form object class}. The validator must support the specified form object * class. */ public void setValidator(Validator validator) { this.validator = validator; } /** * Return the strategy to use for resolving errors into message codes. */ public MessageCodesResolver getMessageCodesResolver() { return messageCodesResolver; } /** * Set the strategy to use for resolving errors into message codes. Applies the given strategy to all data binders * used by this action. *

* Default is null, i.e. using the default strategy of the data binder. * @see #createBinder(RequestContext, Object) * @see org.springframework.validation.DataBinder#setMessageCodesResolver(org.springframework.validation.MessageCodesResolver) */ public void setMessageCodesResolver(MessageCodesResolver messageCodesResolver) { this.messageCodesResolver = messageCodesResolver; } protected void initAction() { if (getValidator() != null) { if (getFormObjectClass() != null && !getValidator().supports(getFormObjectClass())) { throw new IllegalArgumentException("Validator [" + getValidator() + "] does not support form object class [" + getFormObjectClass() + "]"); } // signature: public void ${validateMethodName}(${formObjectClass}, Errors) validateMethodInvoker = new DispatchMethodInvoker(getValidator(), new Class[] { getFormObjectClass(), Errors.class }); } } // action methods /** * Prepares a form object for display in a new form, creating it and caching it in the {@link #getFormObjectScope()} * if necessary. Also installs custom property editors for formatting form object values in UI controls such as text * fields. *

* A new form object instance will only be created (or more generally acquired) with a call to * {@link #createFormObject(RequestContext)}, if the form object does not yet exist in the configured * {@link #getFormObjectScope() scope}. If you want to reset the form handling machinery, including creation or * loading of a fresh form object instance, call {@link #resetForm(RequestContext)} instead. *

* NOTE: This action method is not designed to be overridden and might become final in a future * version of Spring Web Flow. If you need to execute custom form setup logic have your flow call this method along * with your own custom methods as part of a single action chain. * @param context the action execution context, for accessing and setting data in "flow scope" or "request scope" * @return "success" when binding and validation is successful * @throws Exception an unrecoverable exception occurs, either checked or unchecked * @see #createFormObject(RequestContext) */ public Event setupForm(RequestContext context) throws Exception { if (logger.isDebugEnabled()) { logger.debug("Executing setupForm"); } // retrieve the form object, creating it if necessary Object formObject = getFormObject(context); ensureFormErrorsExposed(context, formObject); return success(); } /** * Bind incoming request parameters to allowed fields of the form object and then validate the bound form object if * a validator is configured. *

* NOTE: This action method is not designed to be overridden and might become final in a future * version of Spring Web Flow. If you need to execute custom bind and validate logic have your flow call this method * along with your own custom methods as part of a single action chain. Alternatively, override the * {@link #doBind(RequestContext, DataBinder)} or {@link #doValidate(RequestContext, Object, Errors)} hooks. * @param context the action execution context, for accessing and setting data in "flow scope" or "request scope" * @return "success" when binding and validation is successful, "error" if there were binding and/or validation * errors * @throws Exception an unrecoverable exception occurred, either checked or unchecked */ public Event bindAndValidate(RequestContext context) throws Exception { if (logger.isDebugEnabled()) { logger.debug("Executing bind"); } Object formObject = getFormObject(context); DataBinder binder = createBinder(context, formObject); doBind(context, binder); if (getValidator() != null && validationEnabled(context)) { if (logger.isDebugEnabled()) { logger.debug("Executing validation"); } doValidate(context, formObject, binder.getBindingResult()); } else { if (logger.isDebugEnabled()) { if (getValidator() == null) { logger.debug("No validator is configured, no validation will occur after binding"); } else { logger.debug("Validation was disabled for this bindAndValidate request"); } } } putFormErrors(context, binder.getBindingResult()); return binder.getBindingResult().hasErrors() ? error() : success(); } /** * Bind incoming request parameters to allowed fields of the form object. *

* NOTE: This action method is not designed to be overridden and might become final in a future * version of Spring Web Flow. If you need to execute custom data binding logic have your flow call this method * along with your own custom methods as part of a single action chain. Alternatively, override the * {@link #doBind(RequestContext, DataBinder)} hook. * @param context the action execution context, for accessing and setting data in "flow scope" or "request scope" * @return "success" if there are no binding errors, "error" otherwise * @throws Exception an unrecoverable exception occured, either checked or unchecked */ public Event bind(RequestContext context) throws Exception { if (logger.isDebugEnabled()) { logger.debug("Executing bind"); } Object formObject = getFormObject(context); DataBinder binder = createBinder(context, formObject); doBind(context, binder); putFormErrors(context, binder.getBindingResult()); return binder.getBindingResult().hasErrors() ? error() : success(); } /** * Validate the form object by invoking the validator if configured. *

* NOTE: This action method is not designed to be overridden and might become final in a future * version of Spring Web Flow. If you need to execute custom validation logic have your flow call this method along * with your own custom methods as part of a single action chain. Alternatively, override the * {@link #doValidate(RequestContext, Object, Errors)} hook. * @param context the action execution context, for accessing and setting data in "flow scope" or "request scope" * @return "success" if there are no validation errors, "error" otherwise * @throws Exception an unrecoverable exception occured, either checked or unchecked * @see #getValidator() */ public Event validate(RequestContext context) throws Exception { if (getValidator() != null && validationEnabled(context)) { if (logger.isDebugEnabled()) { logger.debug("Executing validation"); } Object formObject = getFormObject(context); Errors errors = getFormErrors(context); doValidate(context, formObject, errors); return errors.hasErrors() ? error() : success(); } else { if (logger.isDebugEnabled()) { if (getValidator() == null) { logger.debug("No validator is configured, no validation will occur"); } else { logger.debug("Validation was disabled for this request"); } } return success(); } } /** * Resets the form by clearing out the form object in the specified scope and recreating it. *

* NOTE: This action method is not designed to be overridden and might become final in a future * version of Spring Web Flow. If you need to execute custom reset logic have your flow call this method along with * your own custom methods as part of a single action chain. * @param context the request context * @return "success" if the reset action completed successfully * @throws Exception if an exception occured * @see #createFormObject(RequestContext) */ public Event resetForm(RequestContext context) throws Exception { Object formObject = initFormObject(context); initFormErrors(context, formObject); return success(); } // internal helpers /** * Create the new form object and put it in the configured {@link #getFormObjectScope() scope}. * @param context the flow execution request context * @return the new form object * @throws Exception an exception occured creating the form object */ private Object initFormObject(RequestContext context) throws Exception { if (logger.isDebugEnabled()) { logger.debug("Creating new form object with name '" + getFormObjectName() + "'"); } Object formObject = createFormObject(context); putFormObject(context, formObject); return formObject; } /** * Put given form object in the configured scope of given context. */ private void putFormObject(RequestContext context, Object formObject) { if (logger.isDebugEnabled()) { logger.debug("Putting form object of type [" + formObject.getClass() + "] in scope " + getFormObjectScope() + " with name '" + getFormObjectName() + "'"); } getFormObjectAccessor(context).putFormObject(formObject, getFormObjectName(), getFormObjectScope()); } /** * Initialize a new form object {@link Errors errors} instance in the configured {@link #getFormErrorsScope() scope}. * This method also registers any {@link PropertiesEditor property editors} used to format form object property * values. * @param context the current flow execution request context * @param formObject the form object for which errors will be tracked */ private Errors initFormErrors(RequestContext context, Object formObject) throws Exception { if (logger.isDebugEnabled()) { logger.debug("Creating new form errors for object with name '" + getFormObjectName() + "'"); } Errors errors = createBinder(context, formObject).getBindingResult(); putFormErrors(context, errors); return errors; } /** * Put given errors instance in the configured scope of given context. */ private void putFormErrors(RequestContext context, Errors errors) { if (logger.isDebugEnabled()) { logger.debug("Putting form errors instance in scope " + getFormErrorsScope()); } getFormObjectAccessor(context).putFormErrors(errors, getFormErrorsScope()); } /** * Make sure a valid Errors instance for given form object is exposed in given context. */ private void ensureFormErrorsExposed(RequestContext context, Object formObject) throws Exception { if (!formErrorsExposed(context)) { // initialize and expose a fresh errors instance to the flow with // editors applied initFormErrors(context, formObject); } else { // trying to reuse an existing errors instance if (formErrorsValid(context, formObject)) { // reapply property editors against the existing errors instance reinstallPropertyEditors(context); } else { // the existing errors instance seems to be invalid // initialize a new errors instance, but copy over error information if (logger.isInfoEnabled()) { logger.info("Fixing inconsistent Errors instance: initializing a new Errors instance " + "wrapping from object '" + formObject + "' in scope '" + getFormErrorsScope() + "' and copying over all existing error information."); } Errors invalidExistingErrors = getFormObjectAccessor(context).getFormErrors(getFormObjectName(), getFormErrorsScope()); Errors newErrors = initFormErrors(context, formObject); newErrors.addAllErrors(invalidExistingErrors); } } } /** * Check if there is an Errors instance available in given context for given form object. */ private boolean formErrorsExposed(RequestContext context) { return getFormObjectAccessor(context).getFormErrors(getFormObjectName(), getFormErrorsScope()) != null; } /** * Check if the Errors instance available in given context is valid for given form object. */ private boolean formErrorsValid(RequestContext context, Object formObject) { Errors errors = getFormObjectAccessor(context).getFormErrors(getFormObjectName(), getFormErrorsScope()); if (errors instanceof BindingResult) { BindingResult be = (BindingResult) errors; if (be.getTarget() != formObject) { if (logger.isInfoEnabled()) { logger.info("Inconsistency detected: the Errors instance in '" + getFormErrorsScope() + "' does NOT wrap the current form object '" + formObject + "' of class " + formObject.getClass() + "; instead this Errors instance unexpectedly wraps the target object '" + be.getTarget() + "' of class: " + be.getTarget().getClass() + "."); } return false; } else { return true; } } else { return true; } } /** * Re-registers property editors against the current form errors instance. * @param context the flow execution request context */ private void reinstallPropertyEditors(RequestContext context) { BindingResult errors = (BindingResult) getFormObjectAccessor(context).getFormErrors(getFormObjectName(), getFormErrorsScope()); registerPropertyEditors(context, errors.getPropertyEditorRegistry()); } /** * Invoke specified validator method on the validator registered with this action. The validator method for * piecemeal validation should have the following signature: * *

	 *     public void ${validateMethodName}(${formObjectClass}, Errors)
	 * 
* * @param validatorMethod the name of the validator method to invoke * @param formObject the form object * @param errors possible binding errors * @throws Exception when an unrecoverable exception occurs */ private void invokeValidatorMethod(String validatorMethod, Object formObject, Errors errors) throws Exception { if (logger.isDebugEnabled()) { logger.debug("Invoking piecemeal validator method '" + validatorMethod + "(" + getFormObjectClass() + ", Errors)'"); } getValidateMethodInvoker().invoke(validatorMethod, new Object[] { formObject, errors }); } // accessible helpers (subclasses could override if necessary) /** * Convenience method that returns the form object for this form action. If not found in the configured scope, a new * form object will be created by a call to {@link #createFormObject(RequestContext)} and exposed in the configured * {@link #getFormObjectScope() scope}. *

* The returned form object will become the * {@link FormObjectAccessor#setCurrentFormObject(Object, ScopeType) current} form object. * @param context the flow execution request context * @return the form object * @throws Exception when an unrecoverable exception occurs */ protected Object getFormObject(RequestContext context) throws Exception { FormObjectAccessor accessor = getFormObjectAccessor(context); Object formObject = accessor.getFormObject(getFormObjectName(), getFormObjectScope()); if (formObject == null) { formObject = initFormObject(context); } else { if (logger.isDebugEnabled()) { logger.debug("Found existing form object with name '" + getFormObjectName() + "' of type [" + formObject.getClass() + "] in scope " + getFormObjectScope()); } accessor.setCurrentFormObject(formObject, getFormObjectScope()); } return formObject; } /** * Convenience method that returns the form object errors for this form action. If not found in the configured * scope, a new form object errors will be created, initialized, and exposed in the confgured * {@link #getFormErrorsScope() scope}. *

* Keep in mind that an Errors instance wraps a form object, so a form object will also be created if required (see * {@link #getFormObject(RequestContext)}). * @param context the flow request context * @return the form errors * @throws Exception when an unrecoverable exception occurs */ protected Errors getFormErrors(RequestContext context) throws Exception { Object formObject = getFormObject(context); ensureFormErrorsExposed(context, formObject); return getFormObjectAccessor(context).getFormErrors(getFormObjectName(), getFormErrorsScope()); } /** * Create a new binder instance for the given form object and request context. Can be overridden to plug in custom * DataBinder subclasses. *

* Default implementation creates a standard WebDataBinder, and invokes * {@link #initBinder(RequestContext, DataBinder)} and {@link #registerPropertyEditors(PropertyEditorRegistry)}. * @param context the action execution context, for accessing and setting data in "flow scope" or "request scope" * @param formObject the form object to bind onto * @return the new binder instance * @throws Exception when an unrecoverable exception occurs * @see WebDataBinder * @see #initBinder(RequestContext, DataBinder) * @see #setMessageCodesResolver(MessageCodesResolver) */ protected DataBinder createBinder(RequestContext context, Object formObject) throws Exception { DataBinder binder = new WebDataBinder(formObject, getFormObjectName()); if (getMessageCodesResolver() != null) { binder.setMessageCodesResolver(getMessageCodesResolver()); } initBinder(context, binder); registerPropertyEditors(context, binder); return binder; } /** * Bind allowed parameters in the external context request parameter map to the form object using given binder. * @param context the action execution context, for accessing and setting data in "flow scope" or "request scope" * @param binder the data binder to use * @throws Exception when an unrecoverable exception occurs */ protected void doBind(RequestContext context, DataBinder binder) throws Exception { if (logger.isDebugEnabled()) { logger.debug("Binding allowed request parameters in " + StylerUtils.style(context.getExternalContext().getRequestParameterMap()) + " to form object with name '" + binder.getObjectName() + "', pre-bind formObject toString = " + binder.getTarget()); if (binder.getAllowedFields() != null && binder.getAllowedFields().length > 0) { logger.debug("(Allowed fields are " + StylerUtils.style(binder.getAllowedFields()) + ")"); } else { logger.debug("(Any field is allowed)"); } } binder.bind(new MutablePropertyValues(context.getRequestParameters().asMap())); if (logger.isDebugEnabled()) { logger.debug("Binding completed for form object with name '" + binder.getObjectName() + "', post-bind formObject toString = " + binder.getTarget()); logger.debug("There are [" + binder.getBindingResult().getErrorCount() + "] errors, details: " + binder.getBindingResult().getAllErrors()); } } /** * Validate given form object using a registered validator. If a "validatorMethod" action property is specified for * the currently executing action, the identified validator method will be invoked. When no such property is found, * the defualt validate() method is invoked. * @param context the action execution context, for accessing and setting data in "flow scope" or "request scope" * @param formObject the form object * @param errors the errors instance to record validation errors in * @throws Exception when an unrecoverable exception occurs */ protected void doValidate(RequestContext context, Object formObject, Errors errors) throws Exception { Assert.notNull(getValidator(), "The validator must not be null when attempting validation -- programmer error"); String validatorMethodName = context.getAttributes().getString(VALIDATOR_METHOD_ATTRIBUTE); if (StringUtils.hasText(validatorMethodName)) { if (logger.isDebugEnabled()) { logger.debug("Invoking validation method '" + validatorMethodName + "' on validator " + getValidator()); } invokeValidatorMethod(validatorMethodName, formObject, errors); } else { if (logger.isDebugEnabled()) { logger.debug("Invoking validator " + getValidator()); } getValidator().validate(formObject, errors); } if (logger.isDebugEnabled()) { logger.debug("Validation completed for form object"); logger.debug("There are [" + errors.getErrorCount() + "] errors, details: " + errors.getAllErrors()); } } /** * Returns a dispatcher to invoke validation methods. Subclasses could override this to return a custom dispatcher. */ protected DispatchMethodInvoker getValidateMethodInvoker() { return validateMethodInvoker; } /** * Factory method that returns a new form object accessor for accessing form objects in the provided request * context. * @param context the flow request context * @return the accessor */ protected FormObjectAccessor getFormObjectAccessor(RequestContext context) { return new FormObjectAccessor(context); } // common subclassing hook methods /** * Create the backing form object instance that should be managed by this {@link FormAction form action}. By * default, will attempt to instantiate a new form object instance of type {@link #getFormObjectClass()} transiently * in memory. *

* Subclasses should override if they need to load the form object from a specific location or resource such as a * database or filesystem. *

* Subclasses should override if they need to customize how a transient form object is assembled during creation. * @param context the action execution context for accessing flow data * @return the form object * @throws IllegalStateException if the {@link #getFormObjectClass()} property is not set and this method has not * been overridden * @throws Exception when an unrecoverable exception occurs */ protected Object createFormObject(RequestContext context) throws Exception { if (getFormObjectClass() == null) { throw new IllegalStateException("Cannot create form object without formObjectClass property being set -- " + "either set formObjectClass or override createFormObject"); } if (logger.isDebugEnabled()) { logger.debug("Creating new instance of form object class [" + getFormObjectClass() + "]"); } return getFormObjectClass().newInstance(); } /** * Initialize a new binder instance. This hook allows customization of binder settings such as the * {@link DataBinder#getAllowedFields() allowed fields}, {@link DataBinder#getRequiredFields() required fields} and * {@link DataBinder#initDirectFieldAccess() direct field access}. Called by * {@link #createBinder(RequestContext, Object)}. *

* Note that registration of custom property editors should be done in * {@link #registerPropertyEditors(PropertyEditorRegistry)}, not here! This method will only be called when a * new data binder is created. * @param context the action execution context, for accessing and setting data in "flow scope" or "request scope" * @param binder new binder instance * @see #createBinder(RequestContext, Object) */ protected void initBinder(RequestContext context, DataBinder binder) { } /** * Register custom editors to perform type conversion on fields of your form object during data binding and form * display. This method is called on form errors initialization and * {@link #initBinder(RequestContext, DataBinder) data binder} initialization. *

* Property editors give you full control over how objects are transformed to and from a formatted String form for * display on a user interface such as a HTML page. *

* This default implementation will call the {@link #registerPropertyEditors(PropertyEditorRegistry) simpler form} * of the method not taking a RequestContext parameter. * @param context the action execution context, for accessing and setting data in "flow scope" or "request scope" * @param registry the property editor registry to register editors in * @see #registerPropertyEditors(PropertyEditorRegistry) */ protected void registerPropertyEditors(RequestContext context, PropertyEditorRegistry registry) { registerPropertyEditors(registry); } /** * Register custom editors to perform type conversion on fields of your form object during data binding and form * display. This method is called on form errors initialization and * {@link #initBinder(RequestContext, DataBinder) data binder} initialization. *

* Property editors give you full control over how objects are transformed to and from a formatted String form for * display on a user interface such as a HTML page. *

* This default implementation will simply call registerCustomEditors on the * {@link #getPropertyEditorRegistrar() propertyEditorRegistrar} object that has been set for the action, if any. * @param registry the property editor registry to register editors in */ protected void registerPropertyEditors(PropertyEditorRegistry registry) { if (getPropertyEditorRegistrar() != null) { if (logger.isDebugEnabled()) { logger.debug("Registering custom property editors using configured registrar"); } getPropertyEditorRegistrar().registerCustomEditors(registry); } else { if (logger.isDebugEnabled()) { logger.debug("No property editor registrar set, no custom editors to register"); } } } /** * Return whether validation should be performed given the state of the flow request context. Default implementation * always returns true. * @param context the request context, for accessing and setting data in "flow scope" or "request scope" * @return whether or not validation is enabled */ protected boolean validationEnabled(RequestContext context) { return true; } public String toString() { return new ToStringCreator(this).append("formObjectName", formObjectName).append("formObjectClass", formObjectClass).append("formObjectScope", formObjectScope).toString(); } }././@LongLink0000000000000000000000000000022000000000000011557 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframework/webflow/action/ActionResultExposer.javalibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframew0000644000000000000000000000655311360615636027766 0ustar /* * Copyright 2004-2008 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.springframework.webflow.action; import java.io.Serializable; import org.springframework.binding.convert.ConversionService; import org.springframework.binding.expression.Expression; import org.springframework.core.style.ToStringCreator; import org.springframework.util.Assert; import org.springframework.webflow.execution.RequestContext; /** * Specifies how an action result value should be exposed to an executing flow. The return value is exposed as an * attribute in a configured scope. * * @see EvaluateAction * * @author Keith Donald */ public class ActionResultExposer implements Serializable { /** * The expression to set the result to. */ private Expression resultExpression; /** * The desired type to expose the result as */ private Class expectedResultType; /** * The {@link ConversionService} to use to convert the result to the desired type */ private ConversionService conversionService; /** * Creates a action result exposer * @param resultExpression the result expression * @param expectedResultType the expected result type */ public ActionResultExposer(Expression resultExpression, Class expectedResultType, ConversionService conversionService) { Assert.notNull(resultExpression, "The result expression is required"); if (expectedResultType != null) { Assert.notNull(conversionService, "A conversionService is required with an expectedResultType"); } this.resultExpression = resultExpression; this.expectedResultType = expectedResultType; this.conversionService = conversionService; } /** * Returns name of the attribute to index the return value with. */ public Expression getNameExpression() { return resultExpression; } /** * Returns the desired result type to be exposed */ public Class getExpectedResultType() { return expectedResultType; } /** * Expose given bean method return value in given flow execution request context. * @param result the return value * @param context the request context */ public void exposeResult(Object result, RequestContext context) { resultExpression.setValue(context, applyTypeConversionIfNecessary(result)); } /** * Apply type conversion on the supplied value if necessary. * @param value the raw value to be converted */ private Object applyTypeConversionIfNecessary(Object value) { if (value == null || expectedResultType == null) { return value; } else { return conversionService.getConversionExecutor(value.getClass(), expectedResultType).execute(value); } } public String toString() { return new ToStringCreator(this).append("result", resultExpression).append("resultType", expectedResultType) .toString(); } }././@LongLink0000000000000000000000000000022300000000000011562 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframework/webflow/action/ExternalRedirectAction.javalibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframew0000644000000000000000000000311111360615642027746 0ustar /* * Copyright 2004-2008 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.springframework.webflow.action; import org.springframework.binding.expression.Expression; import org.springframework.util.Assert; import org.springframework.webflow.execution.Event; import org.springframework.webflow.execution.RequestContext; /** * An action that sends an external redirect when executed. * * @author Keith Donald */ public class ExternalRedirectAction extends AbstractAction { private Expression resourceUri; /** * Creates a new external redirect action * @param resourceUri an expression for the resource Uri to redirect to */ public ExternalRedirectAction(Expression resourceUri) { Assert.notNull(resourceUri, "The URI of the resource to redirect to is required"); this.resourceUri = resourceUri; } protected Event doExecute(RequestContext context) throws Exception { String resourceUri = (String) this.resourceUri.getValue(context); context.getExternalContext().requestExternalRedirect(resourceUri); return success(); } } ././@LongLink0000000000000000000000000000023100000000000011561 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframework/webflow/action/FlowDefinitionRedirectAction.javalibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframew0000644000000000000000000000567011360615634027763 0ustar /* * Copyright 2004-2008 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.springframework.webflow.action; import org.springframework.binding.expression.Expression; import org.springframework.util.Assert; import org.springframework.util.StringUtils; import org.springframework.webflow.core.collection.LocalAttributeMap; import org.springframework.webflow.execution.Event; import org.springframework.webflow.execution.RequestContext; /** * An action that sends a flow definition redirect when executed. * * @author Keith Donald */ public class FlowDefinitionRedirectAction extends AbstractAction { private Expression expression; /** * Creates a new flow definition redirect action. * @param expression a encoded flow redirect expression */ public FlowDefinitionRedirectAction(Expression expression) { Assert.notNull(expression, "The flow definition redirect expression is required"); this.expression = expression; } protected Event doExecute(RequestContext context) throws Exception { String encodedRedirect = (String) expression.getValue(context); if (encodedRedirect == null) { throw new IllegalStateException( "Flow definition redirect expression evaluated to [null], the expression was " + expression); } // the encoded FlowDefinitionRedirect should look something like // "flowDefinitionId?param0=value0¶m1=value1" // now parse that and build a corresponding view selection int index = encodedRedirect.indexOf('?'); String flowDefinitionId; LocalAttributeMap executionInput = null; if (index != -1) { flowDefinitionId = encodedRedirect.substring(0, index); String[] parameters = StringUtils.delimitedListToStringArray(encodedRedirect.substring(index + 1), "&"); executionInput = new LocalAttributeMap(parameters.length, 1); for (int i = 0; i < parameters.length; i++) { String nameAndValue = parameters[i]; index = nameAndValue.indexOf('='); if (index != -1) { executionInput.put(nameAndValue.substring(0, index), nameAndValue.substring(index + 1)); } else { executionInput.put(nameAndValue, ""); } } } else { flowDefinitionId = encodedRedirect; } if (!StringUtils.hasText(flowDefinitionId)) { // equivalent to restart flowDefinitionId = context.getFlowExecutionContext().getDefinition().getId(); } context.getExternalContext().requestFlowDefinitionRedirect(flowDefinitionId, executionInput); return success(); } }././@LongLink0000000000000000000000000000021700000000000011565 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframework/webflow/action/ResultEventFactory.javalibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframew0000644000000000000000000000252311360615640027752 0ustar /* * Copyright 2004-2008 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.springframework.webflow.action; import org.springframework.webflow.execution.Event; import org.springframework.webflow.execution.RequestContext; /** * A strategy for creating an {@link Event} object from an arbitrary object such as an expression evaluation result or * bean method return value. * * @author Keith Donald */ public interface ResultEventFactory { /** * Create an event instance from the result object. * @param source the source of the event * @param resultObject the result object, typically the return value of a bean method * @param context a flow execution request context * @return the event */ public Event createResultEvent(Object source, Object resultObject, RequestContext context); }././@LongLink0000000000000000000000000000021700000000000011565 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframework/webflow/action/FormObjectAccessor.javalibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframew0000644000000000000000000001772711360615632027767 0ustar /* * Copyright 2004-2008 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.springframework.webflow.action; import org.springframework.validation.BindingResult; import org.springframework.validation.Errors; import org.springframework.webflow.execution.RequestContext; import org.springframework.webflow.execution.ScopeType; /** * Convenience helper that encapsulates logic on how to retrieve and expose form objects and associated errors to and * from a flow execution request context. *

* Note: The form object available under the well known attribute name will be the last ("current") form object * set in the request context. The same is true for the associated errors object. This implies that special care should * be taken when accessing the form object using this alias if there are multiple form objects available in the flow * execution request context! * * @see org.springframework.webflow.execution.RequestContext * @see org.springframework.validation.Errors * * @author Keith Donald * @author Erwin Vervaet */ public class FormObjectAccessor { /** * The form object instance is aliased under this attribute name in the flow context by the default form setup and * bind and validate actions. *

* Note that if you would have multiple form objects in the request context, the last one that was used would be * available using this alias! *

* We need to keep track of the 'current form object' using this attribute to be able to deal with the limitations * of some clients that can only deal with a single form backing object, e.g. Struts when using the Struts * FlowAction. */ private static final String CURRENT_FORM_OBJECT_ATTRIBUTE = "currentFormObject"; /** * The errors prefix. */ private static final String ERRORS_PREFIX = BindingResult.MODEL_KEY_PREFIX; /** * The wrapped request context. */ private RequestContext context; /** * Creates a form object accessor that wraps the given context. * @param context the flow execution request context */ public FormObjectAccessor(RequestContext context) { this.context = context; } /** * Returns the current form object name. * @return the current form object name */ public static String getCurrentFormObjectName() { return CURRENT_FORM_OBJECT_ATTRIBUTE; } /** * Returns the current form object errors attribute name. * @return the current form object errors attribute name */ public static String getCurrentFormErrorsName() { return ERRORS_PREFIX + getCurrentFormObjectName(); } /** * Gets the form object from the context, using the well-known attribute name. Will try all scopes. * @return the form object, or null if not found */ public Object getCurrentFormObject() { Object formObject = getCurrentFormObject(ScopeType.REQUEST); if (formObject != null) { return formObject; } formObject = getCurrentFormObject(ScopeType.FLASH); if (formObject != null) { return formObject; } formObject = getCurrentFormObject(ScopeType.FLOW); if (formObject != null) { return formObject; } return getCurrentFormObject(ScopeType.CONVERSATION); } /** * Gets the form object from the context, using the well-known attribute name. * @param scopeType the scope to obtain the form object from * @return the form object, or null if not found */ public Object getCurrentFormObject(ScopeType scopeType) { return getFormObject(getCurrentFormObjectName(), scopeType); } /** * Expose given form object using the well known alias in the specified scope. * @param formObject the form object * @param scopeType the scope in which to expose the form object */ public void setCurrentFormObject(Object formObject, ScopeType scopeType) { // don't call setFormObject since that would cause infinite recursion! scopeType.getScope(context).put(getCurrentFormObjectName(), formObject); } /** * Gets the form object from the context, using the specified name. * @param formObjectName the name of the form object in the context * @param scopeType the scope to obtain the form object from * @return the form object, or null if not found */ public Object getFormObject(String formObjectName, ScopeType scopeType) { return scopeType.getScope(context).get(formObjectName); } /** * Gets the form object from the context, using the specified name. * @param formObjectName the name of the form in the context * @param formObjectClass the class of the form object, which will be verified * @param scopeType the scope to obtain the form object from * @return the form object, or null if not found */ public Object getFormObject(String formObjectName, Class formObjectClass, ScopeType scopeType) { return scopeType.getScope(context).get(formObjectName, formObjectClass); } /** * Expose given form object using given name in specified scope. Given object will become the current form * object. * @param formObject the form object * @param formObjectName the name of the form object * @param scopeType the scope in which to expose the form object */ public void putFormObject(Object formObject, String formObjectName, ScopeType scopeType) { scopeType.getScope(context).put(formObjectName, formObject); setCurrentFormObject(formObject, scopeType); } /** * Gets the form object Errors tracker from the context, using the form object name. This method will * search all scopes. * @return the form object Errors tracker, or null if not found */ public Errors getCurrentFormErrors() { Errors errors = getCurrentFormErrors(ScopeType.REQUEST); if (errors != null) { return errors; } errors = getCurrentFormErrors(ScopeType.FLASH); if (errors != null) { return errors; } errors = getCurrentFormErrors(ScopeType.FLOW); if (errors != null) { return errors; } return getCurrentFormErrors(ScopeType.CONVERSATION); } /** * Gets the form object Errors tracker from the context, using the form object name. * @param scopeType the scope to obtain the errors from * @return the form object Errors tracker, or null if not found */ public Errors getCurrentFormErrors(ScopeType scopeType) { return getFormErrors(getCurrentFormObjectName(), scopeType); } /** * Expose given errors instance using the well known alias in the specified scope. * @param errors the errors instance * @param scopeType the scope in which to expose the errors instance */ public void setCurrentFormErrors(Errors errors, ScopeType scopeType) { scopeType.getScope(context).put(getCurrentFormErrorsName(), errors); } /** * Gets the form object Errors tracker from the context, using the specified form object name. * @param formObjectName the name of the Errors object, which will be prefixed with * {@link BindingResult#MODEL_KEY_PREFIX} * @param scopeType the scope to obtain the errors from * @return the form object errors instance, or null if not found */ public Errors getFormErrors(String formObjectName, ScopeType scopeType) { return (Errors) scopeType.getScope(context).get(ERRORS_PREFIX + formObjectName, Errors.class); } /** * Expose given errors instance in the specified scope. Given errors instance will become the current form * errors instance. * @param errors the errors object * @param scopeType the scope to expose the errors in */ public void putFormErrors(Errors errors, ScopeType scopeType) { scopeType.getScope(context).put(ERRORS_PREFIX + errors.getObjectName(), errors); setCurrentFormErrors(errors, scopeType); } }././@LongLink0000000000000000000000000000020600000000000011563 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframework/webflow/action/SetAction.javalibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframew0000644000000000000000000000667611360615634027772 0ustar /* * Copyright 2004-2008 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.springframework.webflow.action; import org.springframework.binding.convert.ConversionService; import org.springframework.binding.expression.Expression; import org.springframework.core.style.ToStringCreator; import org.springframework.util.Assert; import org.springframework.webflow.execution.Event; import org.springframework.webflow.execution.RequestContext; import org.springframework.webflow.execution.ScopeType; /** * An action that sets an attribute in a {@link ScopeType scope} when executed. Always returns the "success" event. * * @author Keith Donald */ public class SetAction extends AbstractAction { /** * The expression for setting the scoped attribute value. */ private Expression nameExpression; /** * The expression for resolving the scoped attribute value. */ private Expression valueExpression; /** * The expected value type. */ private Class expectedType; /** * The service to perform the type conversion if the actual value type does not match the expected. */ private ConversionService conversionService; /** * Creates a new set attribute action. * @param nameExpression the name of the property to set (required) * @param valueExpression the expression to obtain the new property value (required) * @param expectedType the expected value type * @param conversionService the service to perform the type conversion if the actual value type does not match the * expected */ public SetAction(Expression nameExpression, Expression valueExpression, Class expectedType, ConversionService conversionService) { Assert.notNull(nameExpression, "The name expression is required"); Assert.notNull(valueExpression, "The value expression is required"); if (expectedType != null) { Assert.notNull(conversionService, "The conversion service is required if the expectedType is provided"); } this.nameExpression = nameExpression; this.valueExpression = valueExpression; this.expectedType = expectedType; this.conversionService = conversionService; } protected Event doExecute(RequestContext context) throws Exception { Object value = valueExpression.getValue(context); nameExpression.setValue(context, applyTypeConversionIfNecessary(value)); return success(); } /** * Apply type conversion on the supplied value if necessary. * @param value the raw value to be converted */ private Object applyTypeConversionIfNecessary(Object value) { if (value == null || expectedType == null) { return value; } else { return conversionService.getConversionExecutor(value.getClass(), expectedType).execute(value); } } public String toString() { return new ToStringCreator(this).append("name", nameExpression).append("value", valueExpression).append("type", expectedType).toString(); } }././@LongLink0000000000000000000000000000022000000000000011557 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframework/webflow/action/SuccessEventFactory.javalibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframew0000644000000000000000000000220611360615632027751 0ustar /* * Copyright 2004-2008 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.springframework.webflow.action; import org.springframework.webflow.execution.Event; import org.springframework.webflow.execution.RequestContext; /** * Default implementation of the resultObject-to-event mapping interface. Always returns the "success" event. * * @author Keith Donald */ public class SuccessEventFactory extends EventFactorySupport implements ResultEventFactory { public Event createResultEvent(Object source, Object resultObject, RequestContext context) { return success(source, resultObject); } }././@LongLink0000000000000000000000000000022700000000000011566 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframework/webflow/action/ResultEventFactorySelector.javalibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframew0000644000000000000000000000504111360615642027752 0ustar /* * Copyright 2004-2008 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.springframework.webflow.action; import java.lang.reflect.Method; /** * Helper that selects the {@link ResultEventFactory} to use for a particular result object. * * @see EvaluateAction * * @author Keith Donald */ public class ResultEventFactorySelector { /** * The event factory instance for mapping a return value to a success event. */ private SuccessEventFactory successEventFactory = new SuccessEventFactory(); /** * The event factory instance for mapping a result object to an event, using the type of the result object as the * mapping criteria. */ private ResultObjectBasedEventFactory resultObjectBasedEventFactory = new ResultObjectBasedEventFactory(); /** * Select the appropriate result event factory for attempts to invoke the given method. * @param method the method * @return the result event factory */ public ResultEventFactory forMethod(Method method) { return forType(method.getReturnType()); } /** * Select the appropriate result event factory for the given result. * @param result the result * @return the result event factory */ public ResultEventFactory forResult(Object result) { if (result == null) { return successEventFactory; } else { return forType(result.getClass()); } } /** * Select the appropriate result event factory for given result type. This implementation returns * {@link ResultObjectBasedEventFactory} if the type is * {@link ResultObjectBasedEventFactory#isMappedValueType(Class) mapped} by that result event factory, otherwise * {@link SuccessEventFactory} is returned. * @param resultType the result type * @return the result event factory */ protected ResultEventFactory forType(Class resultType) { if (resultObjectBasedEventFactory.isMappedValueType(resultType)) { return resultObjectBasedEventFactory; } else { return successEventFactory; } } }././@LongLink0000000000000000000000000000022000000000000011557 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframework/webflow/action/EventFactorySupport.javalibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframew0000644000000000000000000001572511360615636027767 0ustar /* * Copyright 2004-2008 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.springframework.webflow.action; import org.springframework.webflow.core.collection.AttributeMap; import org.springframework.webflow.core.collection.CollectionUtils; import org.springframework.webflow.execution.Event; /** * A convenience support class assisting in the creation of {@link Event} objects. *

* This class can be used as a simple utility class when you need to create common event objects. Alternatively you * could extend it as a base support class when creating custom event factories. * * @author Keith Donald * @author Erwin Vervaet */ public class EventFactorySupport { /** * The default 'success' result event identifier ("success"). */ private static final String SUCCESS_EVENT_ID = "success"; /** * The default 'error' result event identifier ("error"). */ private static final String ERROR_EVENT_ID = "error"; /** * The default 'yes' result event identifier ("yes"). */ private static final String YES_EVENT_ID = "yes"; /** * The default 'no' result event identifier ("no"). */ private static final String NO_EVENT_ID = "no"; /** * The default 'null' result event identifier ("null"). */ private static final String NULL_EVENT_ID = "null"; /** * The default 'exception' event attribute name ("exception"). */ private static final String EXCEPTION_ATTRIBUTE_NAME = "exception"; /** * The default 'result' event attribute name ("result"). */ private static final String RESULT_ATTRIBUTE_NAME = "result"; /** * The success event identifier. */ private String successEventId = SUCCESS_EVENT_ID; /** * The error event identifier. */ private String errorEventId = ERROR_EVENT_ID; /** * The yes event identifier. */ private String yesEventId = YES_EVENT_ID; /** * The no event identifier. */ private String noEventId = NO_EVENT_ID; /** * The null event identifier. */ private String nullEventId = NULL_EVENT_ID; /** * The exception event attribute name. */ private String exceptionAttributeName = EXCEPTION_ATTRIBUTE_NAME; /** * The result event attribute name. */ private String resultAttributeName = RESULT_ATTRIBUTE_NAME; public String getSuccessEventId() { return successEventId; } public void setSuccessEventId(String successEventId) { this.successEventId = successEventId; } public String getErrorEventId() { return errorEventId; } public void setErrorEventId(String errorEventId) { this.errorEventId = errorEventId; } public String getYesEventId() { return yesEventId; } public void setYesEventId(String yesEventId) { this.yesEventId = yesEventId; } public String getNoEventId() { return noEventId; } public void setNoEventId(String noEventId) { this.noEventId = noEventId; } public String getNullEventId() { return nullEventId; } public void setNullEventId(String nullEventId) { this.nullEventId = nullEventId; } public String getExceptionAttributeName() { return exceptionAttributeName; } public void setExceptionAttributeName(String exceptionAttributeName) { this.exceptionAttributeName = exceptionAttributeName; } public String getResultAttributeName() { return resultAttributeName; } public void setResultAttributeName(String resultAttributeName) { this.resultAttributeName = resultAttributeName; } /** * Returns a "success" event. * @param source the source of the event */ public Event success(Object source) { return event(source, getSuccessEventId()); } /** * Returns a "success" event with the provided result object as an attribute. The result object is identified by the * attribute name {@link #getResultAttributeName()}. * @param source the source of the event * @param result the action success result */ public Event success(Object source, Object result) { return event(source, getSuccessEventId(), getResultAttributeName(), result); } /** * Returns an "error" event. * @param source the source of the event */ public Event error(Object source) { return event(source, getErrorEventId()); } /** * Returns an "error" event caused by the provided exception. * @param source the source of the event * @param e the exception that caused the error event, to be put as an event attribute under the name * {@link #getExceptionAttributeName()} */ public Event error(Object source, Exception e) { return event(source, getErrorEventId(), getExceptionAttributeName(), e); } /** * Returns a "yes" event. * @param source the source of the event */ public Event yes(Object source) { return event(source, getYesEventId()); } /** * Returns a "no" result event. * @param source the source of the event */ public Event no(Object source) { return event(source, getNoEventId()); } /** * Returns an event to communicate an occurrence of a boolean expression. * @param source the source of the event * @param booleanResult the boolean * @return yes or no */ public Event event(Object source, boolean booleanResult) { if (booleanResult) { return yes(source); } else { return no(source); } } /** * Returns a event with the specified identifier. * @param source the source of the event * @param eventId the result event identifier * @return the event */ public Event event(Object source, String eventId) { return new Event(source, eventId, null); } /** * Returns a event with the specified identifier and the specified set of attributes. * @param source the source of the event * @param eventId the result event identifier * @param attributes the event payload attributes * @return the event */ public Event event(Object source, String eventId, AttributeMap attributes) { return new Event(source, eventId, attributes); } /** * Returns a result event with the specified identifier and a single attribute. * @param source the source of the event * @param eventId the result id * @param attributeName the attribute name * @param attributeValue the attribute value * @return the event */ public Event event(Object source, String eventId, String attributeName, Object attributeValue) { return new Event(source, eventId, CollectionUtils.singleEntryMap(attributeName, attributeValue)); } }././@LongLink0000000000000000000000000000021400000000000011562 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframework/webflow/action/CompositeAction.javalibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframew0000644000000000000000000000750011360615646027760 0ustar /* * Copyright 2004-2008 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.springframework.webflow.action; import java.util.ArrayList; import java.util.List; import org.springframework.core.style.ToStringCreator; import org.springframework.util.Assert; import org.springframework.webflow.core.collection.LocalAttributeMap; import org.springframework.webflow.core.collection.MutableAttributeMap; import org.springframework.webflow.execution.Action; import org.springframework.webflow.execution.Event; import org.springframework.webflow.execution.RequestContext; /** * An action that will execute an ordered chain of other actions when executed. *

* The event id of the last not-null result returned by the executed actions will be used as the result event id of the * composite action. Lacking that, the action will return the "success" event. *

* The resulting event will have an "actionResults" event attribute with a list of all events returned by the executed * actions, including the null events. This allows you to relate an executed action and its result event by their index * in the list. *

* This is the classic GoF composite design pattern. * * @author Keith Donald */ public class CompositeAction extends AbstractAction { /** * The resulting event whill have an attribute of this name which holds a list of all events returned by the * executed actions. ("actionResults") */ public static final String ACTION_RESULTS_ATTRIBUTE_NAME = "actionResults"; /** * The actions to execute. */ private Action[] actions; /** * Should execution stop if one action returns an error event? */ private boolean stopOnError; /** * Create a composite action composed of given actions. * @param actions the actions */ public CompositeAction(Action[] actions) { Assert.notEmpty(actions, "At least one action is required"); this.actions = actions; } /** * Returns the actions contained by this composite action. * @return the actions */ protected Action[] getActions() { return actions; } /** * Returns the stop on error flag. */ public boolean isStopOnError() { return stopOnError; } /** * Sets the stop on error flag. This determines whether or not execution should stop with the first action that * returns an error event. In the error case, the composite action will also return the "error" event. */ public void setStopOnError(boolean stopOnError) { this.stopOnError = stopOnError; } public Event doExecute(RequestContext context) throws Exception { Action[] actions = getActions(); String eventId = getEventFactorySupport().getSuccessEventId(); MutableAttributeMap eventAttributes = new LocalAttributeMap(); List actionResults = new ArrayList(actions.length); for (int i = 0; i < actions.length; i++) { Event result = actions[i].execute(context); actionResults.add(result); if (result != null) { eventId = result.getId(); if (isStopOnError() && result.getId().equals(getEventFactorySupport().getErrorEventId())) { break; } } } eventAttributes.put(ACTION_RESULTS_ATTRIBUTE_NAME, actionResults); return new Event(this, eventId, eventAttributes); } public String toString() { return new ToStringCreator(this).append("actions", getActions()).append("stopOnError", isStopOnError()) .toString(); } }././@LongLink0000000000000000000000000000022200000000000011561 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframework/webflow/action/DispatchMethodInvoker.javalibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframew0000644000000000000000000001046211360615640027753 0ustar /* * Copyright 2004-2008 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.springframework.webflow.action; import java.lang.reflect.InvocationTargetException; import java.lang.reflect.Method; import java.util.Map; import org.springframework.binding.method.InvalidMethodKeyException; import org.springframework.binding.method.MethodKey; import org.springframework.util.Assert; import org.springframework.util.CachingMapDecorator; /** * Invoker and cache for dispatch methods that all share the same target object. The dispatch methods typically share * the same form, but multiple exist per target object, and they only differ in name. * * @author Keith Donald * @author Ben Hale */ class DispatchMethodInvoker { /** * The target object to dispatch to. */ private Object target; /** * The parameter types describing the dispatch method signature. */ private Class[] parameterTypes; /** * The resolved method cache. */ private Map methodCache = new CachingMapDecorator() { public Object create(Object key) { String methodName = (String) key; try { return new MethodKey(target.getClass(), methodName, parameterTypes).getMethod(); } catch (InvalidMethodKeyException e) { throw new MethodLookupException("Unable to resolve dispatch method " + e.getMethodKey() + "'; make sure the method name is correct and such a method is defined on targetClass " + target.getClass().getName(), e); } } }; /** * Creates a dispatch method invoker. * @param target the target to dispatch to * @param parameterTypes the parameter types defining the argument signature of the dispatch methods */ public DispatchMethodInvoker(Object target, Class[] parameterTypes) { Assert.notNull(target, "The target of a dispatch method invocation is required"); this.target = target; this.parameterTypes = parameterTypes; } /** * Returns the target object method calls are dispatched to. */ public Object getTarget() { return target; } /** * Returns the parameter types defining the argument signature of the dispatch methods. */ public Class[] getParameterTypes() { return parameterTypes; } /** * Dispatch a call with given arguments to named dispatcher method. * @param methodName the name of the method to invoke * @param arguments the arguments to pass to the method * @return the result of the method invokation * @throws MethodLookupException when the method cannot be resolved * @throws Exception when the invoked method throws an exception */ public Object invoke(String methodName, Object[] arguments) throws MethodLookupException, Exception { try { Method dispatchMethod = getDispatchMethod(methodName); return dispatchMethod.invoke(target, arguments); } catch (InvocationTargetException e) { // the invoked method threw an exception; have it propagate to the caller Throwable t = e.getTargetException(); if (t instanceof Exception) { throw (Exception) e.getTargetException(); } else { throw (Error) e.getTargetException(); } } } /** * Get a handle to the method of the specified name, with the signature defined by the configured parameter types * and return type. * @param methodName the method name * @return the method * @throws MethodLookupException when the method cannot be resolved */ private Method getDispatchMethod(String methodName) throws MethodLookupException { return (Method) methodCache.get(methodName); } /** * Thrown when a dispatch method could not be resolved. */ public static class MethodLookupException extends RuntimeException { /** * Create a new method lookup exception. * @param msg a descriptive message * @param ex the underlying cause of this exception */ public MethodLookupException(String msg, Throwable ex) { super(msg, ex); } } }././@LongLink0000000000000000000000000000022500000000000011564 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframework/webflow/action/ViewFactoryActionAdapter.javalibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframew0000644000000000000000000000267211360615642027761 0ustar /* * Copyright 2004-2008 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.springframework.webflow.action; import org.springframework.webflow.execution.Event; import org.springframework.webflow.execution.RequestContext; import org.springframework.webflow.execution.ViewFactory; /** * Simple adapter that adapts a view factory render cycle to the action interface. * @author Keith Donald */ public class ViewFactoryActionAdapter extends AbstractAction { private ViewFactory viewFactory; /** * Creates a new view factory action adapter * @param viewFactory the view factory to adapt to the Action interface. */ public ViewFactoryActionAdapter(ViewFactory viewFactory) { this.viewFactory = viewFactory; } protected Event doExecute(RequestContext context) throws Exception { if (viewFactory != null) { viewFactory.getView(context).render(); } return new Event(this, "success"); } }././@LongLink0000000000000000000000000000020400000000000011561 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframework/webflow/action/package.htmllibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframew0000644000000000000000000000057311360615644027761 0ustar

Common action implementations invokable by flow definitions.

When implementing custom actions, consider subclassing {@link org.springframework.webflow.action.AbstractAction}. Alternatively, you could also subclass {@link org.springframework.webflow.action.MultiAction} to bundle several action execution methods in a single class.

././@LongLink0000000000000000000000000000023500000000000011565 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframework/webflow/action/DefaultMultiActionMethodResolver.javalibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframew0000644000000000000000000000345311360615640027755 0ustar /* * Copyright 2004-2008 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.springframework.webflow.action; import org.springframework.webflow.action.MultiAction.MethodResolver; import org.springframework.webflow.execution.RequestContext; /** * Default method resolver used by the MultiAction class. It uses the following algorithm to calculate a method name: *
    *
  1. If the currently executing action has a "method" property defined, use the value as method name.
  2. *
  3. Else use the name of the current state of the flow execution as a method name.
  4. *
* * @see org.springframework.webflow.action.MultiAction * * @author Erwin Vervaet */ public class DefaultMultiActionMethodResolver implements MethodResolver { public String resolveMethod(RequestContext context) { // implementation note: not using AnnotatedAction.METHOD_ATTRIBUTE since // that resides in the engine subsystem String method = context.getAttributes().getString("method"); if (method == null) { if (context.getCurrentState() != null) { // default to the state id method = context.getCurrentState().getId(); } else { throw new IllegalStateException("Unable to resolve action method; no 'method' context attribute set"); } } return method; } }././@LongLink0000000000000000000000000000021300000000000011561 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframework/webflow/action/EvaluateAction.javalibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframew0000644000000000000000000001041711360615636027760 0ustar /* * Copyright 2004-2008 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.springframework.webflow.action; import org.springframework.binding.expression.Expression; import org.springframework.core.style.ToStringCreator; import org.springframework.util.Assert; import org.springframework.webflow.execution.Action; import org.springframework.webflow.execution.ActionExecutor; import org.springframework.webflow.execution.Event; import org.springframework.webflow.execution.RequestContext; /** * An action that evaluates an expression and optionally exposes its result. *

* Delegates to a {@link ResultEventFactory} to determine how to map the evaluation result to an action outcome * {@link Event}. * * @see Expression * @see ActionResultExposer * @see ResultEventFactory * * @author Keith Donald * @author Jeremy Grelle */ public class EvaluateAction extends AbstractAction { /** * The expression to evaluate when this action is invoked. Required. */ private Expression expression; /** * The helper that will expose the expression evaluation result. Optional. */ private ActionResultExposer evaluationResultExposer; /** * The selector for the factory that will create the action result event callers can respond to. */ private ResultEventFactory resultEventFactory; /** * Create a new evaluate action. * @param expression the expression to evaluate (required) * @param evaluationResultExposer the strategy for how the expression result will be exposed to the flow (optional) */ public EvaluateAction(Expression expression, ActionResultExposer evaluationResultExposer) { init(expression, evaluationResultExposer, null); } /** * Create a new evaluate action. * @param expression the expression to evaluate (required) * @param evaluationResultExposer the strategy for how the expression result will be exposed to the flow (optional) * @param resultEventFactory the factory that will map the evaluation result to a Web Flow event (optional) */ public EvaluateAction(Expression expression, ActionResultExposer evaluationResultExposer, ResultEventFactory resultEventFactory) { init(expression, evaluationResultExposer, resultEventFactory); } protected Event doExecute(RequestContext context) throws Exception { Object result = expression.getValue(context); if (result instanceof Action) { return ActionExecutor.execute((Action) result, context); } else { if (evaluationResultExposer != null) { evaluationResultExposer.exposeResult(result, context); } return resultEventFactory.createResultEvent(this, result, context); } } public String toString() { return new ToStringCreator(this).append("expression", expression).append("resultExposer", evaluationResultExposer).toString(); } // internal helpers private void init(Expression expression, ActionResultExposer evaluationResultExposer, ResultEventFactory resultEventFactory) { Assert.notNull(expression, "The expression this action should evaluate is required"); this.expression = expression; this.evaluationResultExposer = evaluationResultExposer; this.resultEventFactory = resultEventFactory != null ? resultEventFactory : new DefaultResultEventFactory(); } /** * Default implementation that uses the ResultEventFactorySelector helper. * @author Keith Donald */ private class DefaultResultEventFactory implements ResultEventFactory { private ResultEventFactorySelector selector = new ResultEventFactorySelector(); public Event createResultEvent(Object source, Object resultObject, RequestContext context) { return selector.forResult(resultObject).createResultEvent(source, resultObject, context); } } }././@LongLink0000000000000000000000000000021100000000000011557 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframework/webflow/action/RenderAction.javalibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframew0000644000000000000000000000436211360615632027756 0ustar /* * Copyright 2004-2008 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.springframework.webflow.action; import org.springframework.binding.expression.Expression; import org.springframework.core.style.ToStringCreator; import org.springframework.webflow.execution.Event; import org.springframework.webflow.execution.RequestContext; import org.springframework.webflow.execution.View; /** * An action that sets a special attribute that views use to render partial views called "fragments", instead of the * entire view. * * @author Keith Donald */ public class RenderAction extends AbstractAction { /** * The expression for setting the scoped attribute value. */ private Expression[] fragmentExpressions; /** * Creates a new render action. * @param fragmentExpressions the set of expressions to resolve the view fragments to render */ public RenderAction(Expression[] fragmentExpressions) { if (fragmentExpressions == null || fragmentExpressions.length == 0) { throw new IllegalArgumentException( "You must provide at least one fragment expression to this render action"); } this.fragmentExpressions = fragmentExpressions; } protected Event doExecute(RequestContext context) throws Exception { String[] fragments = new String[fragmentExpressions.length]; for (int i = 0; i < fragmentExpressions.length; i++) { Expression exp = fragmentExpressions[i]; fragments[i] = (String) exp.getValue(context); } context.getFlashScope().put(View.RENDER_FRAGMENTS_ATTRIBUTE, fragments); return success(); } public String toString() { return new ToStringCreator(this).append("fragments", fragmentExpressions).toString(); } }././@LongLink0000000000000000000000000000023200000000000011562 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframework/webflow/action/ResultObjectBasedEventFactory.javalibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframew0000644000000000000000000001161411360615634027756 0ustar /* * Copyright 2004-2008 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.springframework.webflow.action; import org.springframework.core.JdkVersion; import org.springframework.core.enums.LabeledEnum; import org.springframework.util.StringUtils; import org.springframework.webflow.execution.Event; import org.springframework.webflow.execution.RequestContext; /** * Result object-to-event adapter interface that tries to do a sensible conversion of the result object into a web flow * event. It uses the following conversion table: * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
Result object typeEvent idRemarks
null{@link org.springframework.webflow.action.EventFactorySupport#getNullEventId()} 
{@link java.lang.Boolean} or boolean{@link org.springframework.webflow.action.EventFactorySupport#getYesEventId()}/ * {@link org.springframework.webflow.action.EventFactorySupport#getNoEventId()} 
{@link org.springframework.core.enums.LabeledEnum}{@link org.springframework.core.enums.LabeledEnum#getLabel()}The result object will included in the event as an attribute named "result".
{@link java.lang.Enum}{@link java.lang.Enum#name()}The result object will included in the event as an attribute named "result".
{@link java.lang.String}The string. 
{@link org.springframework.webflow.execution.Event}The resulting event object. 
* * @author Keith Donald * @author Erwin Vervaet */ public class ResultObjectBasedEventFactory extends EventFactorySupport implements ResultEventFactory { public Event createResultEvent(Object source, Object resultObject, RequestContext context) { if (resultObject == null) { // this handles the case where the declared result return type is mapped // by this class but the value is null return event(source, getNullEventId()); } else if (isBoolean(resultObject.getClass())) { return event(source, ((Boolean) resultObject).booleanValue()); } else if (isLabeledEnum(resultObject.getClass())) { String resultId = ((LabeledEnum) resultObject).getLabel(); return event(source, resultId, getResultAttributeName(), resultObject); } else if (isJdk5Enum(resultObject.getClass())) { String eventId = EnumUtils.getEnumName(resultObject); return event(source, eventId, getResultAttributeName(), resultObject); } else if (isString(resultObject.getClass())) { String resultString = (String) resultObject; if (StringUtils.hasText(resultString)) { return event(source, resultString); } else { // treat an empty string as the null event return event(source, getNullEventId()); } } else if (isEvent(resultObject.getClass())) { return (Event) resultObject; } else { throw new IllegalArgumentException("Cannot deal with result object '" + resultObject + "' of type '" + resultObject.getClass() + "'"); } } /** * Check whether or not given type is mapped to a corresponding event using special mapping rules. */ public boolean isMappedValueType(Class type) { return isBoolean(type) || isLabeledEnum(type) || isJdk5Enum(type) || isString(type) || isEvent(type); } // internal helpers to determine the 'type' of a class private boolean isBoolean(Class type) { return Boolean.class.equals(type) || boolean.class.equals(type); } private boolean isLabeledEnum(Class type) { return LabeledEnum.class.isAssignableFrom(type); } private boolean isJdk5Enum(Class type) { if (JdkVersion.getMajorJavaVersion() >= JdkVersion.JAVA_15) { return EnumUtils.isEnum(type); } else { return false; } } private boolean isString(Class type) { return String.class.equals(type); } private boolean isEvent(Class type) { return Event.class.isAssignableFrom(type); } /** * Simple helper class with Java 5 specific code factored out to keep the containing class JDK 1.3 compatible. */ private static class EnumUtils { public static String getEnumName(Object enumValue) { return ((java.lang.Enum) enumValue).name(); } public static boolean isEnum(Class type) { return java.lang.Enum.class.isAssignableFrom(type); } } }././@LongLink0000000000000000000000000000021000000000000011556 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframework/webflow/action/MultiAction.javalibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframew0000644000000000000000000001210211360615636027751 0ustar /* * Copyright 2004-2008 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.springframework.webflow.action; import org.springframework.util.Assert; import org.springframework.webflow.execution.Event; import org.springframework.webflow.execution.RequestContext; /** * Action implementation that bundles two or more action execution methods into a single class. Action execution methods * defined by subclasses must adhere to the following signature: * *

 *     public Event ${method}(RequestContext context) throws Exception;
 * 
* * When this action is invoked, by default the id of the calling action state state is treated as the * action execution method name. Alternatively, the execution method name may be explicitly specified as a attribute of * the calling action state. *

* For example, the following action state definition: * *

 *     <action-state id="search">
 *         <evaluate expression="searchAction.executeSearch"/>
 *         <transition on="success" to="results"/>
 *     </action-state>
 * 
* * ... when entered, executes the method: * *
 * public Event search(RequestContext context) throws Exception;
 * 
* *

* One use of the MultiAction is to centralize all command logic for a flow in one place. Another use is to centralize * form setup and submit logic in one place, or CRUD (create/read/update/delete) operations for a single domain object * in one place. * * @see MultiAction.MethodResolver * @see org.springframework.webflow.action.DefaultMultiActionMethodResolver * * @author Keith Donald * @author Erwin Vervaet */ public class MultiAction extends AbstractAction { /** * A cache for dispatched action execute methods. The default signature is * public Event ${method}(RequestContext context) throws Exception;. */ private DispatchMethodInvoker methodInvoker; /** * The action method resolver strategy. */ private MethodResolver methodResolver = new DefaultMultiActionMethodResolver(); /** * Protected default constructor; not invokable for direct MultiAction instantiation. Intended for use by * subclasses. *

* Sets the target to this multi action instance. * @see #setTarget(Object) */ protected MultiAction() { setTarget(this); } /** * Constructs a multi action that invokes methods on the specified target object. Note: invokable methods on the * target must conform to the multi action method signature: * *

	 *       public Event ${method}(RequestContext context) throws Exception;
	 * 
* * @param target the target of this multi action's invocations */ public MultiAction(Object target) { setTarget(target); } /** * Sets the target of this multi action's invocations. * @param target the target */ protected final void setTarget(Object target) { methodInvoker = new DispatchMethodInvoker(target, new Class[] { RequestContext.class }); } /** * Get the strategy used to resolve action execution method names. */ public MethodResolver getMethodResolver() { return methodResolver; } /** * Set the strategy used to resolve action execution method names. Allows full control over the method resolution * algorithm. Defaults to {@link DefaultMultiActionMethodResolver}. */ public void setMethodResolver(MethodResolver methodResolver) { this.methodResolver = methodResolver; } protected final Event doExecute(RequestContext context) throws Exception { String method = getMethodResolver().resolveMethod(context); Object obj = methodInvoker.invoke(method, new Object[] { context }); if (obj != null) { Assert.isInstanceOf(Event.class, obj, "The '" + method + "' action execution method on target object '" + methodInvoker.getTarget() + "' did not return an Event object but '" + obj + "' of type " + obj.getClass().getName() + " -- " + "Programmer error; make sure the method signature conforms to " + "'public Event ${method}(RequestContext context) throws Exception;'."); } return (Event) obj; } /** * Strategy interface used by the MultiAction to map a request context to the name of an action execution method. * * @author Keith Donald * @author Erwin Vervaet */ public interface MethodResolver { /** * Resolve a method name from given flow execution request context. * @param context the flow execution request context * @return the name of the method that should handle action execution */ public String resolveMethod(RequestContext context); } }././@LongLink0000000000000000000000000000021300000000000011561 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframework/webflow/action/AbstractAction.javalibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframew0000644000000000000000000002103611360615632027753 0ustar /* * Copyright 2004-2008 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.springframework.webflow.action; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.springframework.beans.factory.BeanInitializationException; import org.springframework.beans.factory.InitializingBean; import org.springframework.util.ClassUtils; import org.springframework.webflow.core.collection.AttributeMap; import org.springframework.webflow.execution.Action; import org.springframework.webflow.execution.Event; import org.springframework.webflow.execution.RequestContext; /** * Base action that provides assistance commonly needed by action implementations. This includes: *
    *
  • Implementing {@link InitializingBean} to receive an init callback when deployed within a Spring bean factory. *
  • Exposing convenient event factory methods to create common result {@link Event} objects such as "success" and * "error". *
  • A hook for inserting action pre and post execution logic. *
* * @author Keith Donald * @author Erwin Vervaet */ public abstract class AbstractAction implements Action, InitializingBean { /** * Logger, usable in subclasses. */ protected final Log logger = LogFactory.getLog(getClass()); /** * Returns the helper delegate for creating action execution result events. * @return the event factory support */ public EventFactorySupport getEventFactorySupport() { return new EventFactorySupport(); } public void afterPropertiesSet() throws Exception { try { initAction(); } catch (Exception ex) { throw new BeanInitializationException("Initialization of this Action failed: " + ex.getMessage(), ex); } } /** * Action initializing callback, may be overridden by subclasses to perform custom initialization logic. *

* Keep in mind that this hook will only be invoked when this action is deployed in a Spring application context * since it uses the Spring {@link InitializingBean} mechanism to trigger action initialisation. */ protected void initAction() throws Exception { } /** * Returns a "success" result event. */ protected Event success() { return getEventFactorySupport().success(this); } /** * Returns a "success" result event with the provided result object as a parameter. * @param result the action success result */ protected Event success(Object result) { return getEventFactorySupport().success(this, result); } /** * Returns an "error" result event. */ protected Event error() { return getEventFactorySupport().error(this); } /** * Returns an "error" result event caused by the provided exception. * @param e the exception that caused the error event, to be configured as an event attribute */ protected Event error(Exception e) { return getEventFactorySupport().error(this, e); } /** * Returns a "yes" result event. */ protected Event yes() { return getEventFactorySupport().yes(this); } /** * Returns a "no" result event. */ protected Event no() { return getEventFactorySupport().no(this); } /** * Returns yes() if the boolean result is true, no() if false. * @param booleanResult the boolean * @return yes or no */ protected Event result(boolean booleanResult) { return getEventFactorySupport().event(this, booleanResult); } /** * Returns a result event for this action with the specified identifier. Typically called as part of return, for * example: * *

	 *     protected Event doExecute(RequestContext context) {
	 *         // do some work
	 *         if (some condition) {
	 *             return result("success");
	 *         } else {
	 *             return result("error");
	 *         }
	 *     }
	 * 
* * Consider calling the error() or success() factory methods for returning common results. * @param eventId the result event identifier * @return the action result event */ protected Event result(String eventId) { return getEventFactorySupport().event(this, eventId); } /** * Returns a result event for this action with the specified identifier and the specified set of attributes. * Typically called as part of return, for example: * *
	 *     protected Event doExecute(RequestContext context) {
	 *         // do some work
	 *         AttributeMap resultAttributes = new AttributeMap();
	 *         resultAttributes.put("name", "value");
	 *         if (some condition) {
	 *             return result("success", resultAttributes);
	 *         } else {
	 *             return result("error", resultAttributes);
	 *         }
	 *     }
	 * 
* * Consider calling the error() or success() factory methods for returning common results. * @param eventId the result event identifier * @param resultAttributes the event attributes * @return the action result event */ protected Event result(String eventId, AttributeMap resultAttributes) { return getEventFactorySupport().event(this, eventId, resultAttributes); } /** * Returns a result event for this action with the specified identifier and a single attribute. * @param eventId the result id * @param resultAttributeName the attribute name * @param resultAttributeValue the attribute value * @return the action result event */ protected Event result(String eventId, String resultAttributeName, Object resultAttributeValue) { return getEventFactorySupport().event(this, eventId, resultAttributeName, resultAttributeValue); } public final Event execute(RequestContext context) throws Exception { Event result = doPreExecute(context); if (result == null) { result = doExecute(context); doPostExecute(context); } else { if (logger.isInfoEnabled()) { logger.info("Action execution disallowed; pre-execution result is '" + result.getId() + "'"); } } return result; } // subclassing hooks /** * Internal helper to return the name of this action for logging purposes. Defaults to the short class name. * @see ClassUtils#getShortName(java.lang.Class) */ protected String getActionNameForLogging() { return ClassUtils.getShortName(getClass()); } /** * Pre-action-execution hook, subclasses may override. If this method returns a non-null event, the * doExecute() method will not be called and the returned event will be used to select a * transition to trigger in the calling action state. If this method returns null, * doExecute() will be called to obtain an action result event. *

* This implementation just returns null. * @param context the action execution context, for accessing and setting data in "flow scope" or "request scope" * @return the non-null action result, in which case the doExecute() will not be * called, or null if the doExecute() method should be called to obtain the action * result * @throws Exception an unrecoverable exception occured, either checked or unchecked */ protected Event doPreExecute(RequestContext context) throws Exception { return null; } /** * Template hook method subclasses should override to encapsulate their specific action execution logic. * @param context the action execution context, for accessing and setting data in "flow scope" or "request scope" * @return the action result event * @throws Exception an unrecoverable exception occured, either checked or unchecked */ protected abstract Event doExecute(RequestContext context) throws Exception; /** * Post-action execution hook, subclasses may override. Will only be called if doExecute() was * called, e.g. when doPreExecute() returned null. *

* This implementation does nothing. * @param context the action execution context, for accessing and setting data in "flow scope" or "request scope" * @throws Exception an unrecoverable exception occured, either checked or unchecked */ protected void doPostExecute(RequestContext context) throws Exception { } }././@LongLink0000000000000000000000000000017200000000000011565 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframework/webflow/executor/libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframew0000755000000000000000000000000011360615644027752 5ustar ././@LongLink0000000000000000000000000000021300000000000011561 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframework/webflow/executor/FlowExecutor.javalibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframew0000644000000000000000000000415211360615634027755 0ustar /* * Copyright 2004-2008 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.springframework.webflow.executor; import org.springframework.webflow.context.ExternalContext; import org.springframework.webflow.core.FlowException; import org.springframework.webflow.core.collection.MutableAttributeMap; /** * The central facade and entry-point service interface into the Spring Web Flow system for driving the executions of * flow definitions. This interface defines a coarse-grained system boundary suitable for invocation by most * clients. *

* Implementations of this interface abstract away much of the internal complexity of the web flow execution subsystem, * which consists of launching and resuming managed flow executions. * * @author Keith Donald */ public interface FlowExecutor { /** * Launch a new execution of the flow with the provided id. * @param flowId the flow definition identifier; should be unique among all top-level flow definitions (required). * @param input input to pass to the new execution on startup (optional) * @param context access to the calling environment (required) */ public FlowExecutionResult launchExecution(String flowId, MutableAttributeMap input, ExternalContext context) throws FlowException; /** * Resume the flow execution with the provided execution key. * @param flowExecutionKey the key of a paused execution of the flow definition * @param context access to the calling environment */ public FlowExecutionResult resumeExecution(String flowExecutionKey, ExternalContext context) throws FlowException; }././@LongLink0000000000000000000000000000021700000000000011565 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframework/webflow/executor/FlowExecutorImpl.javalibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframew0000644000000000000000000001637711360615640027766 0ustar /* * Copyright 2004-2008 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.springframework.webflow.executor; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.springframework.util.Assert; import org.springframework.webflow.context.ExternalContext; import org.springframework.webflow.context.ExternalContextHolder; import org.springframework.webflow.core.FlowException; import org.springframework.webflow.core.collection.MutableAttributeMap; import org.springframework.webflow.definition.FlowDefinition; import org.springframework.webflow.definition.registry.FlowDefinitionLocator; import org.springframework.webflow.execution.FlowExecution; import org.springframework.webflow.execution.FlowExecutionFactory; import org.springframework.webflow.execution.FlowExecutionKey; import org.springframework.webflow.execution.repository.FlowExecutionLock; import org.springframework.webflow.execution.repository.FlowExecutionRepository; /** * The default implementation of the central facade for driving the execution of flows within an application. *

* This object is responsible for creating and launching new flow executions as requested by clients, as well as * resuming existing, paused executions (that were waiting to be resumed in response to a user event). *

* This object is a facade or entry point into the Spring Web Flow execution system and makes the overall system easier * to use. The name executor was chosen as executors drive executions. *

* Commonly used configurable properties
* * * * * * * * * * * * * * * * * * * * * *
namedescriptiondefault
definitionLocatorThe service locator responsible for loading flow definitions to execute.None
executionFactoryThe factory responsible for creating new flow executions.None
executionRepositoryThe repository responsible for managing flow execution persistence.None
*

* * @see FlowDefinitionLocator * @see FlowExecutionFactory * @see FlowExecutionRepository * * @author Keith Donald * @author Erwin Vervaet * @author Colin Sampaleanu */ public class FlowExecutorImpl implements FlowExecutor { private static final Log logger = LogFactory.getLog(FlowExecutorImpl.class); /** * The locator to access flow definitions registered in a central registry. */ private FlowDefinitionLocator definitionLocator; /** * The abstract factory for creating a new execution of a flow definition. */ private FlowExecutionFactory executionFactory; /** * The repository used to save, update, and load existing flow executions to/from a persistent store. */ private FlowExecutionRepository executionRepository; /** * Create a new flow executor. * @param definitionLocator the locator for accessing flow definitions to execute * @param executionFactory the factory for creating executions of flow definitions * @param executionRepository the repository for persisting paused flow executions */ public FlowExecutorImpl(FlowDefinitionLocator definitionLocator, FlowExecutionFactory executionFactory, FlowExecutionRepository executionRepository) { Assert.notNull(definitionLocator, "The locator for accessing flow definitions is required"); Assert.notNull(executionFactory, "The execution factory for creating new flow executions is required"); Assert.notNull(executionRepository, "The repository for persisting flow executions is required"); this.definitionLocator = definitionLocator; this.executionFactory = executionFactory; this.executionRepository = executionRepository; } /** * Returns the locator to load flow definitions to execute. */ public FlowDefinitionLocator getDefinitionLocator() { return definitionLocator; } /** * Returns the abstract factory used to create new executions of a flow. */ public FlowExecutionFactory getExecutionFactory() { return executionFactory; } /** * Returns the repository used to save, update, and load existing flow executions to/from a persistent store. */ public FlowExecutionRepository getExecutionRepository() { return executionRepository; } public FlowExecutionResult launchExecution(String flowId, MutableAttributeMap input, ExternalContext context) throws FlowException { try { if (logger.isDebugEnabled()) { logger.debug("Launching new execution of flow '" + flowId + "' with input " + input); } ExternalContextHolder.setExternalContext(context); FlowDefinition flowDefinition = definitionLocator.getFlowDefinition(flowId); FlowExecution flowExecution = executionFactory.createFlowExecution(flowDefinition); flowExecution.start(input, context); if (!flowExecution.hasEnded()) { FlowExecutionLock lock = executionRepository.getLock(flowExecution.getKey()); lock.lock(); try { executionRepository.putFlowExecution(flowExecution); } finally { lock.unlock(); } return createPausedResult(flowExecution); } else { return createEndResult(flowExecution); } } finally { ExternalContextHolder.setExternalContext(null); } } public FlowExecutionResult resumeExecution(String flowExecutionKey, ExternalContext context) throws FlowException { try { if (logger.isDebugEnabled()) { logger.debug("Resuming flow execution with key '" + flowExecutionKey); } ExternalContextHolder.setExternalContext(context); FlowExecutionKey key = executionRepository.parseFlowExecutionKey(flowExecutionKey); FlowExecutionLock lock = executionRepository.getLock(key); lock.lock(); try { FlowExecution flowExecution = executionRepository.getFlowExecution(key); flowExecution.resume(context); if (!flowExecution.hasEnded()) { executionRepository.putFlowExecution(flowExecution); return createPausedResult(flowExecution); } else { executionRepository.removeFlowExecution(flowExecution); return createEndResult(flowExecution); } } finally { lock.unlock(); } } finally { ExternalContextHolder.setExternalContext(null); } } private FlowExecutionResult createEndResult(FlowExecution flowExecution) { return FlowExecutionResult.createEndedResult(flowExecution.getDefinition().getId(), flowExecution.getOutcome()); } private FlowExecutionResult createPausedResult(FlowExecution flowExecution) { return FlowExecutionResult.createPausedResult(flowExecution.getDefinition().getId(), flowExecution.getKey() .toString()); } }././@LongLink0000000000000000000000000000020600000000000011563 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframework/webflow/executor/package.htmllibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframew0000644000000000000000000000061711360615642027756 0ustar

High-level executors for driving the execution of flow definitions.

The central concept defined by this package is the {@link org.springframework.webflow.executor.FlowExecutor}, representing a facade or entry-point for driving the execution of flows. This interface acts as the system boundary into Spring Web Flow most calling systems interact with.

././@LongLink0000000000000000000000000000022200000000000011561 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframework/webflow/executor/FlowExecutionResult.javalibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframew0000644000000000000000000000557111360615644027764 0ustar /* * Copyright 2004-2008 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.springframework.webflow.executor; import org.springframework.webflow.execution.FlowExecutionOutcome; /** * A value object providing information about the result of a flow execution request. * * @author Keith Donald */ public class FlowExecutionResult { private String flowId; private String flowExecutionKey; private FlowExecutionOutcome outcome; private FlowExecutionResult(String flowId, String flowExecutionKey, FlowExecutionOutcome outcome) { this.flowId = flowId; this.flowExecutionKey = flowExecutionKey; this.outcome = outcome; } /** * Factory method that creates a paused result, indicating the flow is now in a wait state after handling the * request. * @param flowId the flow id * @param flowExecutionKey the flow execution key * @return the result */ public static FlowExecutionResult createPausedResult(String flowId, String flowExecutionKey) { return new FlowExecutionResult(flowId, flowExecutionKey, null); } /** * Factory method that creates a ended result, indicating the flow terminated after handling the request. * @param flowId the flow id * @param outcome the ending execution outcome * @return the result */ public static FlowExecutionResult createEndedResult(String flowId, FlowExecutionOutcome outcome) { return new FlowExecutionResult(flowId, null, outcome); } /** * Returns the flow definition that completed execution. * @return the flow id */ public String getFlowId() { return flowId; } /** * Returns true if the flow execution paused and is now in a wait state. * @return true if paused, false if not */ public boolean isPaused() { return flowExecutionKey != null; } /** * Returns the key needed to resume the flow execution when a paused result. * @see #isPaused() * @return the key of the paused flow execution */ public String getPausedKey() { return flowExecutionKey; } /** * Returns true if the flow execution ended. * @return true if ended, false if not */ public boolean isEnded() { return flowExecutionKey == null; } /** * Returns the flow execution outcome when an ended result. * @see #isEnded() * @return the ended outcome, or null if this is not an ended result */ public FlowExecutionOutcome getOutcome() { return outcome; } } ././@LongLink0000000000000000000000000000016600000000000011570 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframework/webflow/core/libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframew0000755000000000000000000000000011360615644027752 5ustar ././@LongLink0000000000000000000000000000021000000000000011556 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframework/webflow/core/FlowException.javalibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframew0000644000000000000000000000237711360615636027766 0ustar /* * Copyright 2004-2008 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.springframework.webflow.core; /** * Root class for exceptions thrown by the Spring Web Flow system. All other exceptions within the system should be * assignable to this class. * * @author Keith Donald * @author Erwin Vervaet */ public abstract class FlowException extends RuntimeException { /** * Creates a new flow exception. * @param msg the message * @param cause the cause */ public FlowException(String msg, Throwable cause) { super(msg, cause); } /** * Creates a new flow exception. * @param msg the message */ public FlowException(String msg) { super(msg); } }././@LongLink0000000000000000000000000000021200000000000011560 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframework/webflow/core/AnnotatedObject.javalibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframew0000644000000000000000000000472211360615644027761 0ustar /* * Copyright 2004-2008 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.springframework.webflow.core; import org.springframework.webflow.core.collection.LocalAttributeMap; import org.springframework.webflow.core.collection.MutableAttributeMap; /** * A base class for all objects in the web flow system that support annotation using arbitrary properties. Mainly used * to ensure consistent configuration of properties for all annotated objects. * * @author Erwin Vervaet * @author Keith Donald */ public abstract class AnnotatedObject implements Annotated { /** * The caption property name ("caption"). A caption is also known as a "short description" and may be used in a GUI * tooltip. */ public static final String CAPTION_PROPERTY = "caption"; /** * The long description property name ("description"). A description provides additional, free-form detail about * this object and might be shown in a GUI text area. */ public static final String DESCRIPTION_PROPERTY = "description"; /** * Additional properties further describing this object. The properties set in this map may be arbitrary. */ private LocalAttributeMap attributes = new LocalAttributeMap(); // implementing Annotated public String getCaption() { return attributes.getString(CAPTION_PROPERTY); } public String getDescription() { return attributes.getString(DESCRIPTION_PROPERTY); } public MutableAttributeMap getAttributes() { return attributes; } // mutators /** * Sets the short description (suitable for display in a tooltip). * @param caption the caption */ public void setCaption(String caption) { attributes.put(CAPTION_PROPERTY, caption); } /** * Sets the long description. * @param description the long description */ public void setDescription(String description) { attributes.put(DESCRIPTION_PROPERTY, description); } }././@LongLink0000000000000000000000000000020200000000000011557 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframework/webflow/core/package.htmllibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframew0000644000000000000000000000015011360615632027745 0ustar

Foundational, generic types usable by all other packages.

././@LongLink0000000000000000000000000000020400000000000011561 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframework/webflow/core/Annotated.javalibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframew0000644000000000000000000000302011360615640027743 0ustar /* * Copyright 2004-2008 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.springframework.webflow.core; import org.springframework.webflow.core.collection.MutableAttributeMap; /** * An interface to be implemented by objects that are annotated with attributes they wish to expose to clients. * * @author Keith Donald * @author Erwin Vervaet */ public interface Annotated { /** * Returns a short summary of this object, suitable for display as an icon caption or tool tip. * @return the caption */ public String getCaption(); /** * Returns a longer, more detailed description of this object. * @return the description */ public String getDescription(); /** * Returns a attribute map containing the attributes annotating this object. These attributes provide descriptive * characteristics or properties that may affect object behavior. * @return the attribute map */ public MutableAttributeMap getAttributes(); }././@LongLink0000000000000000000000000000020100000000000011556 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframework/webflow/core/collection/libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframew0000755000000000000000000000000011360615644027752 5ustar ././@LongLink0000000000000000000000000000022200000000000011561 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframework/webflow/core/collection/ParameterMap.javalibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframew0000644000000000000000000002703311360615642027757 0ustar /* * Copyright 2004-2008 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.springframework.webflow.core.collection; import org.springframework.binding.collection.MapAdaptable; import org.springframework.binding.convert.ConversionExecutionException; import org.springframework.web.multipart.MultipartFile; /** * An interface for accessing parameters in a backing map. Parameters are immutable and have string keys and string * values. *

* The accessor methods offered by this class taking a target type argument only need to support conversions to well * know types like String, Number subclasses, Boolean and so on. * * @author Keith Donald */ public interface ParameterMap extends MapAdaptable { /** * Is this parameter map empty, with a size of 0? * @return true if empty, false if not */ public boolean isEmpty(); /** * Returns the number of parameters in this map. * @return the parameter count */ public int size(); /** * Does the parameter with the provided name exist in this map? * @param parameterName the parameter name * @return true if so, false otherwise */ public boolean contains(String parameterName); /** * Get a parameter value, returning null if no value is found. * @param parameterName the parameter name * @return the parameter value */ public String get(String parameterName); /** * Get a parameter value, returning the defaultValue if no value is found. * @param parameterName the parameter name * @param defaultValue the default * @return the parameter value */ public String get(String parameterName, String defaultValue); /** * Get a multi-valued parameter value, returning null if no value is found. If the parameter is * single valued an array with a single element is returned. * @param parameterName the parameter name * @return the parameter value array */ public String[] getArray(String parameterName); /** * Get a multi-valued parameter value, converting each value to the target type or returning null if * no value is found. * @param parameterName the parameter name * @param targetElementType the target type of the array's elements * @return the converterd parameter value array * @throws ConversionExecutionException when the value could not be converted */ public Object[] getArray(String parameterName, Class targetElementType) throws ConversionExecutionException; /** * Get a parameter value, converting it from String to the target type. * @param parameterName the name of the parameter * @param targetType the target type of the parameter value * @return the converted parameter value, or null if not found * @throws ConversionExecutionException when the value could not be converted */ public Object get(String parameterName, Class targetType) throws ConversionExecutionException; /** * Get a parameter value, converting it from String to the target type or returning the defaultValue * if not found. * @param parameterName name of the parameter to get * @param targetType the target type of the parameter value * @param defaultValue the default value * @return the converted parameter value, or the default if not found * @throws ConversionExecutionException when a value could not be converted */ public Object get(String parameterName, Class targetType, Object defaultValue) throws ConversionExecutionException; /** * Get the value of a required parameter. * @param parameterName the name of the parameter * @return the parameter value * @throws IllegalArgumentException when the parameter is not found */ public String getRequired(String parameterName) throws IllegalArgumentException; /** * Get a required multi-valued parameter value. * @param parameterName the name of the parameter * @return the parameter value * @throws IllegalArgumentException when the parameter is not found */ public String[] getRequiredArray(String parameterName) throws IllegalArgumentException; /** * Get a required multi-valued parameter value, converting each value to the target type. * @param parameterName the name of the parameter * @return the parameter value * @throws IllegalArgumentException when the parameter is not found * @throws ConversionExecutionException when a value could not be converted */ public Object[] getRequiredArray(String parameterName, Class targetElementType) throws IllegalArgumentException, ConversionExecutionException; /** * Get the value of a required parameter and convert it to the target type. * @param parameterName the name of the parameter * @param targetType the target type of the parameter value * @return the converted parameter value * @throws IllegalArgumentException when the parameter is not found * @throws ConversionExecutionException when the value could not be converted */ public Object getRequired(String parameterName, Class targetType) throws IllegalArgumentException, ConversionExecutionException; /** * Returns a number parameter value in the map that is of the specified type, returning null if no * value was found. * @param parameterName the parameter name * @param targetType the target number type * @return the number parameter value * @throws ConversionExecutionException when the value could not be converted */ public Number getNumber(String parameterName, Class targetType) throws ConversionExecutionException; /** * Returns a number parameter value in the map of the specified type, returning the defaultValue if no value was * found. * @param parameterName the parameter name * @param defaultValue the default * @return the number parameter value * @throws ConversionExecutionException when the value could not be converted */ public Number getNumber(String parameterName, Class targetType, Number defaultValue) throws ConversionExecutionException; /** * Returns a number parameter value in the map, throwing an exception if the parameter is not present or could not * be converted. * @param parameterName the parameter name * @return the number parameter value * @throws IllegalArgumentException if the parameter is not present * @throws ConversionExecutionException when the value could not be converted */ public Number getRequiredNumber(String parameterName, Class targetType) throws IllegalArgumentException, ConversionExecutionException; /** * Returns an integer parameter value in the map, returning null if no value was found. * @param parameterName the parameter name * @return the integer parameter value * @throws ConversionExecutionException when the value could not be converted */ public Integer getInteger(String parameterName) throws ConversionExecutionException; /** * Returns an integer parameter value in the map, returning the defaultValue if no value was found. * @param parameterName the parameter name * @param defaultValue the default * @return the integer parameter value * @throws ConversionExecutionException when the value could not be converted */ public Integer getInteger(String parameterName, Integer defaultValue) throws ConversionExecutionException; /** * Returns an integer parameter value in the map, throwing an exception if the parameter is not present or could not * be converted. * @param parameterName the parameter name * @return the integer parameter value * @throws IllegalArgumentException if the parameter is not present * @throws ConversionExecutionException when the value could not be converted */ public Integer getRequiredInteger(String parameterName) throws IllegalArgumentException, ConversionExecutionException; /** * Returns a long parameter value in the map, returning null if no value was found. * @param parameterName the parameter name * @return the long parameter value * @throws ConversionExecutionException when the value could not be converted */ public Long getLong(String parameterName) throws ConversionExecutionException; /** * Returns a long parameter value in the map, returning the defaultValue if no value was found. * @param parameterName the parameter name * @param defaultValue the default * @return the long parameter value * @throws ConversionExecutionException when the value could not be converted */ public Long getLong(String parameterName, Long defaultValue) throws ConversionExecutionException; /** * Returns a long parameter value in the map, throwing an exception if the parameter is not present or could not be * converted. * @param parameterName the parameter name * @return the long parameter value * @throws IllegalArgumentException if the parameter is not present * @throws ConversionExecutionException when the value could not be converted */ public Long getRequiredLong(String parameterName) throws IllegalArgumentException, ConversionExecutionException; /** * Returns a boolean parameter value in the map, returning null if no value was found. * @param parameterName the parameter name * @return the long parameter value * @throws ConversionExecutionException when the value could not be converted */ public Boolean getBoolean(String parameterName) throws ConversionExecutionException; /** * Returns a boolean parameter value in the map, returning the defaultValue if no value was found. * @param parameterName the parameter name * @param defaultValue the default * @return the boolean parameter value * @throws ConversionExecutionException when the value could not be converted */ public Boolean getBoolean(String parameterName, Boolean defaultValue) throws ConversionExecutionException; /** * Returns a boolean parameter value in the map, throwing an exception if the parameter is not present or could not * be converted. * @param parameterName the parameter name * @return the boolean parameter value * @throws IllegalArgumentException if the parameter is not present * @throws ConversionExecutionException when the value could not be converted */ public Boolean getRequiredBoolean(String parameterName) throws IllegalArgumentException, ConversionExecutionException; /** * Get a multi-part file parameter value, returning null if no value is found. * @param parameterName the parameter name * @return the multipart file */ public MultipartFile getMultipartFile(String parameterName); /** * Get the value of a required multipart file parameter. * @param parameterName the name of the parameter * @return the parameter value * @throws IllegalArgumentException when the parameter is not found */ public MultipartFile getRequiredMultipartFile(String parameterName); /** * Adapts this parameter map to an {@link AttributeMap}. * @return the underlying map as a unmodifiable attribute map */ public AttributeMap asAttributeMap(); }././@LongLink0000000000000000000000000000022700000000000011566 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframework/webflow/core/collection/LocalAttributeMap.javalibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframew0000644000000000000000000002442411360615634027761 0ustar /* * Copyright 2004-2008 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.springframework.webflow.core.collection; import java.io.IOException; import java.io.ObjectInputStream; import java.io.ObjectOutputStream; import java.io.Serializable; import java.util.Collection; import java.util.HashMap; import java.util.Iterator; import java.util.Map; import org.springframework.binding.collection.MapAccessor; import org.springframework.core.style.StylerUtils; import org.springframework.util.Assert; /** * A generic, mutable attribute map with string keys. * * @author Keith Donald */ public class LocalAttributeMap implements MutableAttributeMap, Serializable { /** * The backing map storing the attributes. */ private Map attributes; /** * A helper for accessing attributes. Marked transient and restored on deserialization. */ private transient MapAccessor attributeAccessor; /** * Creates a new attribute map, initially empty. */ public LocalAttributeMap() { initAttributes(createTargetMap()); } /** * Creates a new attribute map, initially empty. * @param size the initial size * @param loadFactor the load factor */ public LocalAttributeMap(int size, int loadFactor) { initAttributes(createTargetMap(size, loadFactor)); } /** * Creates a new attribute map with a single entry. */ public LocalAttributeMap(String attributeName, Object attributeValue) { initAttributes(createTargetMap(1, 1)); put(attributeName, attributeValue); } /** * Creates a new attribute map wrapping the specified map. */ public LocalAttributeMap(Map map) { Assert.notNull(map, "The target map is required"); initAttributes(map); } // implementing attribute map public Map asMap() { return attributeAccessor.asMap(); } public int size() { return attributes.size(); } public Object get(String attributeName) { return attributes.get(attributeName); } public boolean isEmpty() { return attributes.isEmpty(); } public boolean contains(String attributeName) { return attributes.containsKey(attributeName); } public boolean contains(String attributeName, Class requiredType) throws IllegalArgumentException { return attributeAccessor.containsKey(attributeName, requiredType); } public Object get(String attributeName, Object defaultValue) { return attributeAccessor.get(attributeName, defaultValue); } public Object get(String attributeName, Class requiredType) throws IllegalArgumentException { return attributeAccessor.get(attributeName, requiredType); } public Object get(String attributeName, Class requiredType, Object defaultValue) throws IllegalStateException { return attributeAccessor.get(attributeName, requiredType, defaultValue); } public Object getRequired(String attributeName) throws IllegalArgumentException { return attributeAccessor.getRequired(attributeName); } public Object getRequired(String attributeName, Class requiredType) throws IllegalArgumentException { return attributeAccessor.getRequired(attributeName, requiredType); } public String getString(String attributeName) throws IllegalArgumentException { return attributeAccessor.getString(attributeName); } public String getString(String attributeName, String defaultValue) throws IllegalArgumentException { return attributeAccessor.getString(attributeName, defaultValue); } public String getRequiredString(String attributeName) throws IllegalArgumentException { return attributeAccessor.getRequiredString(attributeName); } public Collection getCollection(String attributeName) throws IllegalArgumentException { return attributeAccessor.getCollection(attributeName); } public Collection getCollection(String attributeName, Class requiredType) throws IllegalArgumentException { return attributeAccessor.getCollection(attributeName, requiredType); } public Collection getRequiredCollection(String attributeName) throws IllegalArgumentException { return attributeAccessor.getRequiredCollection(attributeName); } public Collection getRequiredCollection(String attributeName, Class requiredType) throws IllegalArgumentException { return attributeAccessor.getRequiredCollection(attributeName, requiredType); } public Object[] getArray(String attributeName, Class requiredType) throws IllegalArgumentException { return attributeAccessor.getArray(attributeName, requiredType); } public Object[] getRequiredArray(String attributeName, Class requiredType) throws IllegalArgumentException { return attributeAccessor.getRequiredArray(attributeName, requiredType); } public Number getNumber(String attributeName, Class requiredType) throws IllegalArgumentException { return attributeAccessor.getNumber(attributeName, requiredType); } public Number getNumber(String attributeName, Class requiredType, Number defaultValue) throws IllegalArgumentException { return attributeAccessor.getNumber(attributeName, requiredType, defaultValue); } public Number getRequiredNumber(String attributeName, Class requiredType) throws IllegalArgumentException { return attributeAccessor.getRequiredNumber(attributeName, requiredType); } public Integer getInteger(String attributeName) throws IllegalArgumentException { return attributeAccessor.getInteger(attributeName); } public Integer getInteger(String attributeName, Integer defaultValue) throws IllegalArgumentException { return attributeAccessor.getInteger(attributeName, defaultValue); } public Integer getRequiredInteger(String attributeName) throws IllegalArgumentException { return attributeAccessor.getRequiredInteger(attributeName); } public Long getLong(String attributeName) throws IllegalArgumentException { return attributeAccessor.getLong(attributeName); } public Long getLong(String attributeName, Long defaultValue) throws IllegalArgumentException { return attributeAccessor.getLong(attributeName, defaultValue); } public Long getRequiredLong(String attributeName) throws IllegalArgumentException { return attributeAccessor.getRequiredLong(attributeName); } public Boolean getBoolean(String attributeName) throws IllegalArgumentException { return attributeAccessor.getBoolean(attributeName); } public Boolean getBoolean(String attributeName, Boolean defaultValue) throws IllegalArgumentException { return attributeAccessor.getBoolean(attributeName, defaultValue); } public Boolean getRequiredBoolean(String attributeName) throws IllegalArgumentException { return attributeAccessor.getRequiredBoolean(attributeName); } public AttributeMap union(AttributeMap attributes) { if (attributes == null) { return new LocalAttributeMap(getMapInternal()); } else { Map map = createTargetMap(); map.putAll(getMapInternal()); map.putAll(attributes.asMap()); return new LocalAttributeMap(map); } } // implementing MutableAttributeMap public Object put(String attributeName, Object attributeValue) { return getMapInternal().put(attributeName, attributeValue); } public MutableAttributeMap putAll(AttributeMap attributes) { if (attributes == null) { return this; } getMapInternal().putAll(attributes.asMap()); return this; } public MutableAttributeMap removeAll(MutableAttributeMap attributes) { if (attributes == null) { return this; } Iterator it = attributes.asMap().keySet().iterator(); Map internal = getMapInternal(); while (it.hasNext()) { internal.remove(it.next()); } return this; } public Object remove(String attributeName) { return getMapInternal().remove(attributeName); } public Object extract(String attributeName) { Map map = getMapInternal(); if (map.containsKey(attributeName)) { Object value = map.get(attributeName); map.remove(attributeName); return value; } else { return null; } } public MutableAttributeMap clear() throws UnsupportedOperationException { getMapInternal().clear(); return this; } public MutableAttributeMap replaceWith(AttributeMap attributes) throws UnsupportedOperationException { clear(); putAll(attributes); return this; } // helpers for subclasses /** * Initializes this attribute map. * @param attributes the attributes */ protected void initAttributes(Map attributes) { this.attributes = attributes; attributeAccessor = new MapAccessor(this.attributes); } /** * Returns the wrapped, modifiable map implementation. */ protected Map getMapInternal() { return attributes; } // helpers /** * Factory method that returns the target map storing the data in this attribute map. * @return the target map */ protected Map createTargetMap() { return new HashMap(); } /** * Factory method that returns the target map storing the data in this attribute map. * @param size the initial size of the map * @param loadFactor the load factor * @return the target map */ protected Map createTargetMap(int size, int loadFactor) { return new HashMap(size, loadFactor); } public boolean equals(Object o) { if (!(o instanceof LocalAttributeMap)) { return false; } LocalAttributeMap other = (LocalAttributeMap) o; return getMapInternal().equals(other.getMapInternal()); } public int hashCode() { return getMapInternal().hashCode(); } // custom serialization private void writeObject(ObjectOutputStream out) throws IOException { out.defaultWriteObject(); } private void readObject(ObjectInputStream in) throws IOException, ClassNotFoundException { in.defaultReadObject(); attributeAccessor = new MapAccessor(attributes); } public String toString() { return StylerUtils.style(attributes); } }././@LongLink0000000000000000000000000000023600000000000011566 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframework/webflow/core/collection/AttributeMapBindingEvent.javalibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframew0000644000000000000000000000336711360615640027761 0ustar /* * Copyright 2004-2008 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.springframework.webflow.core.collection; import java.util.EventObject; /** * Holder for information about the binding or unbinding event in an {@link AttributeMap}. * * @see AttributeMapBindingListener * * @author Ben Hale */ public class AttributeMapBindingEvent extends EventObject { private String attributeName; private Object attributeValue; /** * Creates an event for map binding that contains information about the event. * @param source the source map that this attribute was bound in * @param attributeName the name that this attribute was bound with * @param attributeValue the attribute */ public AttributeMapBindingEvent(AttributeMap source, String attributeName, Object attributeValue) { super(source); this.source = source; this.attributeName = attributeName; this.attributeValue = attributeValue; } /** * Returns the name the attribute was bound with. */ public String getAttributeName() { return attributeName; } /** * Returns the value of the attribute. */ public Object getAttributeValue() { return attributeValue; } }././@LongLink0000000000000000000000000000023000000000000011560 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframework/webflow/core/collection/SharedAttributeMap.javalibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframew0000644000000000000000000000206111360615636027754 0ustar /* * Copyright 2004-2008 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.springframework.webflow.core.collection; /** * An interface to be implemented by mutable attribute maps accessed by multiple threads that need to be synchronized. * * @author Keith Donald */ public interface SharedAttributeMap extends MutableAttributeMap { /** * Returns the shared map's mutex, which may be synchronized on to block access to the map by other threads. */ public Object getMutex(); }././@LongLink0000000000000000000000000000021500000000000011563 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframework/webflow/core/collection/package.htmllibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframew0000644000000000000000000000064711360615634027762 0ustar

Core element collection types used within Spring Web Flow.

This packages defines two primary collection flavors:

  1. AttributeMap - for accessing 'attributes' that have string keys and object values.
  2. ParameterMap - for accessing 'parameters' that have string keys and string values.

Each map is java.util.Map adaptable.

././@LongLink0000000000000000000000000000023500000000000011565 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframework/webflow/core/collection/LocalSharedAttributeMap.javalibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframew0000644000000000000000000000277011360615640027756 0ustar /* * Copyright 2004-2008 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.springframework.webflow.core.collection; import org.springframework.binding.collection.SharedMap; /** * An attribute map that exposes a mutex that application code can synchronize on. This class wraps another shared map * in an attribute map. *

* The mutex can be used to serialize concurrent access to the shared map's contents by multiple threads. * * @author Keith Donald */ public class LocalSharedAttributeMap extends LocalAttributeMap implements SharedAttributeMap { /** * Creates a new shared attribute map. * @param sharedMap the shared map */ public LocalSharedAttributeMap(SharedMap sharedMap) { super(sharedMap); } public Object getMutex() { return getSharedMap().getMutex(); } /** * Returns the wrapped shared map. */ protected SharedMap getSharedMap() { return (SharedMap) getMapInternal(); } }././@LongLink0000000000000000000000000000024100000000000011562 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframework/webflow/core/collection/AttributeMapBindingListener.javalibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframew0000644000000000000000000000262311360615642027755 0ustar /* * Copyright 2004-2008 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.springframework.webflow.core.collection; /** * Causes an object to be notified when it is bound or unbound from an {@link AttributeMap}. *

* Note that this is an optional feature and not all {@link AttributeMap} implementations support it. * * @see AttributeMap * * @author Ben Hale */ public interface AttributeMapBindingListener { /** * Called when the implementing instance is bound into an AttributeMap. * @param event information about the binding event */ void valueBound(AttributeMapBindingEvent event); /** * Called when the implementing instance is unbound from an AttributeMap. * @param event information about the unbinding event */ void valueUnbound(AttributeMapBindingEvent event); }././@LongLink0000000000000000000000000000023100000000000011561 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframework/webflow/core/collection/MutableAttributeMap.javalibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframew0000644000000000000000000000612211360615634027754 0ustar /* * Copyright 2004-2008 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.springframework.webflow.core.collection; /** * An interface for accessing and modifying attributes in a backing map with string keys. *

* Implementations can optionally support {@link AttributeMapBindingListener listeners} that will be notified when * they're bound in or unbound from the map. * * @author Keith Donald */ public interface MutableAttributeMap extends AttributeMap { /** * Put the attribute into this map. *

* If the attribute value is an {@link AttributeMapBindingListener} this map will publish * {@link AttributeMapBindingEvent binding events} such as on "bind" and "unbind" if supported. *

* Note: not all MutableAttributeMap implementations support this. * @param attributeName the attribute name * @param attributeValue the attribute value * @return the previous value of the attribute, or null of there was no previous value */ public Object put(String attributeName, Object attributeValue); /** * Put all the attributes into this map. * @param attributes the attributes to put into this map * @return this, to support call chaining */ public MutableAttributeMap putAll(AttributeMap attributes); /** * Remove all attributes in the map provided from this map. * @param attributes the attributes to remove from this map * @return this, to support call chaining */ public MutableAttributeMap removeAll(MutableAttributeMap attributes); /** * Remove an attribute from this map. * @param attributeName the name of the attribute to remove * @return previous value associated with specified attribute name, or null if there was no mapping for * the name */ public Object remove(String attributeName); /** * Extract an attribute from this map, getting it and removing it in a single operation. * @param attributeName the attribute name * @return the value of the attribute, or null of there was no value */ public Object extract(String attributeName); /** * Remove all attributes in this map. * @return this, to support call chaining */ public MutableAttributeMap clear(); /** * Replace the contents of this attribute map with the contents of the provided collection. * @param attributes the attribute collection * @return this, to support call chaining */ public MutableAttributeMap replaceWith(AttributeMap attributes) throws UnsupportedOperationException; }././@LongLink0000000000000000000000000000022500000000000011564 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframework/webflow/core/collection/CollectionUtils.javalibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframew0000644000000000000000000000742211360615636027762 0ustar /* * Copyright 2004-2008 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.springframework.webflow.core.collection; import java.io.Serializable; import java.util.Collections; import java.util.Enumeration; import java.util.Iterator; import java.util.List; /** * A utility class for working with attribute and parameter collections used by Spring Web FLow. * * @author Keith Donald * @author Erwin Vervaet */ public class CollectionUtils { /** * The shared, singleton empty iterator instance. */ public static final Iterator EMPTY_ITERATOR = new EmptyIterator(); /** * The shared, singleton empty attribute map instance. */ public static final AttributeMap EMPTY_ATTRIBUTE_MAP = new LocalAttributeMap(Collections.EMPTY_MAP); /** * Private constructor to avoid instantiation. */ private CollectionUtils() { } /** * Factory method that adapts an enumeration to an iterator. * @param enumeration the enumeration * @return the iterator */ public static Iterator toIterator(Enumeration enumeration) { return new EnumerationIterator(enumeration); } /** * Factory method that returns a unmodifiable attribute map with a single entry. * @param attributeName the attribute name * @param attributeValue the attribute value * @return the unmodifiable map with a single element */ public static AttributeMap singleEntryMap(String attributeName, Object attributeValue) { return new LocalAttributeMap(attributeName, attributeValue); } /** * Add all given objects to given target list. No duplicates will be added. The contains() method of the given * target list will be used to determine whether or not an object is already in the list. * @param target the collection to which to objects will be added * @param objects the objects to add * @return whether or not the target collection changed */ public static boolean addAllNoDuplicates(List target, Object[] objects) { if (objects == null || objects.length == 0) { return false; } else { boolean changed = false; for (int i = 0; i < objects.length; i++) { if (!target.contains(objects[i])) { target.add(objects[i]); changed = true; } } return changed; } } /** * Iterator iterating over no elements (hasNext() always returns false). */ private static class EmptyIterator implements Iterator, Serializable { private EmptyIterator() { } public boolean hasNext() { return false; } public Object next() { throw new UnsupportedOperationException("There are no elements"); } public void remove() { throw new UnsupportedOperationException("There are no elements"); } } /** * Iterator wrapping an Enumeration. */ private static class EnumerationIterator implements Iterator { private Enumeration enumeration; public EnumerationIterator(Enumeration enumeration) { this.enumeration = enumeration; } public boolean hasNext() { return enumeration.hasMoreElements(); } public Object next() { return enumeration.nextElement(); } public void remove() throws UnsupportedOperationException { throw new UnsupportedOperationException("Not supported"); } } }././@LongLink0000000000000000000000000000022700000000000011566 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframework/webflow/core/collection/LocalParameterMap.javalibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframew0000644000000000000000000002621311360615632027755 0ustar /* * Copyright 2004-2008 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.springframework.webflow.core.collection; import java.io.IOException; import java.io.ObjectInputStream; import java.io.ObjectOutputStream; import java.io.Serializable; import java.lang.reflect.Array; import java.util.ArrayList; import java.util.Collections; import java.util.List; import java.util.Map; import org.springframework.binding.collection.MapAccessor; import org.springframework.binding.convert.ConversionExecutionException; import org.springframework.binding.convert.ConversionExecutor; import org.springframework.binding.convert.ConversionService; import org.springframework.binding.convert.service.DefaultConversionService; import org.springframework.core.style.StylerUtils; import org.springframework.util.Assert; import org.springframework.web.multipart.MultipartFile; /** * An immutable parameter map storing String-keyed, String-valued parameters in a backing {@link Map} implementation. * This base provides convenient operations for accessing parameters in a typed-manner. * * @author Keith Donald */ public class LocalParameterMap implements ParameterMap, Serializable { private static final DefaultConversionService DEFAULT_CONVERSION_SERVICE = new DefaultConversionService(); /** * The backing map storing the parameters. */ private Map parameters; /** * A helper for accessing parameters. Marked transient and restored on deserialization. */ private transient MapAccessor parameterAccessor; /** * A helper for converting string parameter values. Marked transient and restored on deserialization. */ private transient ConversionService conversionService; /** * Creates a new parameter map from the provided map. *

* It is expected that the contents of the backing map adhere to the parameter map contract; that is, map entries * have string keys, string values, and remain unmodifiable. * @param parameters the contents of this parameter map */ public LocalParameterMap(Map parameters) { this(parameters, DEFAULT_CONVERSION_SERVICE); } /** * Creates a new parameter map from the provided map. *

* It is expected that the contents of the backing map adhere to the parameter map contract; that is, map entries * have string keys, string values, and remain unmodifiable. * @param parameters the contents of this parameter map * @param conversionService a helper for performing type conversion of map entry values */ public LocalParameterMap(Map parameters, ConversionService conversionService) { initParameters(parameters); this.conversionService = conversionService; } public boolean equals(Object o) { if (!(o instanceof LocalParameterMap)) { return false; } LocalParameterMap other = (LocalParameterMap) o; return parameters.equals(other.parameters); } public int hashCode() { return parameters.hashCode(); } public Map asMap() { return Collections.unmodifiableMap(parameterAccessor.asMap()); } public boolean isEmpty() { return parameters.isEmpty(); } public int size() { return parameters.size(); } public boolean contains(String parameterName) { return parameters.containsKey(parameterName); } public String get(String parameterName) { return get(parameterName, (String) null); } public String get(String parameterName, String defaultValue) { if (!parameters.containsKey(parameterName)) { return defaultValue; } Object value = parameters.get(parameterName); if (value.getClass().isArray()) { parameterAccessor.assertKeyValueInstanceOf(parameterName, value, String[].class); String[] array = (String[]) value; if (array.length == 0) { return null; } else { Object first = ((String[]) value)[0]; parameterAccessor.assertKeyValueInstanceOf(parameterName, first, String.class); return (String) first; } } else { parameterAccessor.assertKeyValueInstanceOf(parameterName, value, String.class); return (String) value; } } public String[] getArray(String parameterName) { if (!parameters.containsKey(parameterName)) { return null; } Object value = parameters.get(parameterName); if (value.getClass().isArray()) { parameterAccessor.assertKeyValueInstanceOf(parameterName, value, String[].class); return (String[]) value; } else { parameterAccessor.assertKeyValueInstanceOf(parameterName, value, String.class); return new String[] { (String) value }; } } public Object[] getArray(String parameterName, Class targetElementType) throws ConversionExecutionException { String[] parameters = getArray(parameterName); return parameters != null ? convert(parameters, targetElementType) : null; } public Object get(String parameterName, Class targetType) throws ConversionExecutionException { return get(parameterName, targetType, null); } public Object get(String parameterName, Class targetType, Object defaultValue) throws ConversionExecutionException { if (defaultValue != null) { assertAssignableTo(targetType, defaultValue.getClass()); } String parameter = get(parameterName); return parameter != null ? convert(parameter, targetType) : defaultValue; } public String getRequired(String parameterName) throws IllegalArgumentException { parameterAccessor.assertContainsKey(parameterName); return get(parameterName); } public String[] getRequiredArray(String parameterName) throws IllegalArgumentException { parameterAccessor.assertContainsKey(parameterName); return getArray(parameterName); } public Object[] getRequiredArray(String parameterName, Class targetElementType) throws IllegalArgumentException, ConversionExecutionException { String[] parameters = getRequiredArray(parameterName); return convert(parameters, targetElementType); } public Object getRequired(String parameterName, Class targetType) throws IllegalArgumentException, ConversionExecutionException { return convert(getRequired(parameterName), targetType); } public Number getNumber(String parameterName, Class targetType) throws ConversionExecutionException { assertAssignableTo(Number.class, targetType); return (Number) get(parameterName, targetType); } public Number getNumber(String parameterName, Class targetType, Number defaultValue) throws ConversionExecutionException { assertAssignableTo(Number.class, targetType); return (Number) get(parameterName, targetType, defaultValue); } public Number getRequiredNumber(String parameterName, Class targetType) throws IllegalArgumentException, ConversionExecutionException { assertAssignableTo(Number.class, targetType); return (Number) getRequired(parameterName, targetType); } public Integer getInteger(String parameterName) throws ConversionExecutionException { return (Integer) get(parameterName, Integer.class); } public Integer getInteger(String parameterName, Integer defaultValue) throws ConversionExecutionException { return (Integer) get(parameterName, Integer.class, defaultValue); } public Integer getRequiredInteger(String parameterName) throws IllegalArgumentException, ConversionExecutionException { return (Integer) getRequired(parameterName, Integer.class); } public Long getLong(String parameterName) throws ConversionExecutionException { return (Long) get(parameterName, Long.class); } public Long getLong(String parameterName, Long defaultValue) throws ConversionExecutionException { return (Long) get(parameterName, Long.class, defaultValue); } public Long getRequiredLong(String parameterName) throws IllegalArgumentException, ConversionExecutionException { return (Long) getRequired(parameterName, Long.class); } public Boolean getBoolean(String parameterName) throws ConversionExecutionException { return (Boolean) get(parameterName, Boolean.class); } public Boolean getBoolean(String parameterName, Boolean defaultValue) throws ConversionExecutionException { return (Boolean) get(parameterName, Boolean.class, defaultValue); } public Boolean getRequiredBoolean(String parameterName) throws IllegalArgumentException, ConversionExecutionException { return (Boolean) getRequired(parameterName, Boolean.class); } public MultipartFile getMultipartFile(String parameterName) { return (MultipartFile) parameterAccessor.get(parameterName, MultipartFile.class); } public MultipartFile getRequiredMultipartFile(String parameterName) throws IllegalArgumentException { return (MultipartFile) parameterAccessor.getRequired(parameterName, MultipartFile.class); } public AttributeMap asAttributeMap() { return new LocalAttributeMap(getMapInternal()); } /** * Initializes this parameter map. * @param parameters the parameters */ protected void initParameters(Map parameters) { this.parameters = parameters; parameterAccessor = new MapAccessor(this.parameters); } /** * Returns the wrapped, modifiable map implementation. */ protected Map getMapInternal() { return parameters; } // internal helpers /** * Convert given String parameter to specified target type. */ private Object convert(String parameter, Class targetType) throws ConversionExecutionException { return conversionService.getConversionExecutor(String.class, targetType).execute(parameter); } /** * Convert given array of String parameters to specified target type and return the resulting array. */ private Object[] convert(String[] parameters, Class targetElementType) throws ConversionExecutionException { List list = new ArrayList(parameters.length); ConversionExecutor converter = conversionService.getConversionExecutor(String.class, targetElementType); for (int i = 0; i < parameters.length; i++) { list.add(converter.execute(parameters[i])); } return list.toArray((Object[]) Array.newInstance(targetElementType, parameters.length)); } /** * Make sure clazz is assignable from requiredType. */ private void assertAssignableTo(Class clazz, Class requiredType) { Assert.isTrue(clazz.isAssignableFrom(requiredType), "The provided required type must be assignable to [" + clazz + "]"); } // custom serialization private void writeObject(ObjectOutputStream out) throws IOException { out.defaultWriteObject(); } private void readObject(ObjectInputStream in) throws IOException, ClassNotFoundException { in.defaultReadObject(); parameterAccessor = new MapAccessor(parameters); conversionService = DEFAULT_CONVERSION_SERVICE; } public String toString() { return StylerUtils.style(parameters); } }././@LongLink0000000000000000000000000000022200000000000011561 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframework/webflow/core/collection/AttributeMap.javalibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframew0000644000000000000000000003265711360615644027771 0ustar /* * Copyright 2004-2008 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.springframework.webflow.core.collection; import java.util.Collection; import org.springframework.binding.collection.MapAdaptable; /** * An immutable interface for accessing attributes in a backing map with string keys. *

* Implementations can optionally support {@link AttributeMapBindingListener listeners} that will be notified when * they're bound in or unbound from the map. * * @author Keith Donald */ public interface AttributeMap extends MapAdaptable { /** * Get an attribute value out of this map, returning null if not found. * @param attributeName the attribute name * @return the attribute value */ public Object get(String attributeName); /** * Returns the size of this map. * @return the number of entries in the map */ public int size(); /** * Is this attribute map empty with a size of 0? * @return true if empty, false if not */ public boolean isEmpty(); /** * Does the attribute with the provided name exist in this map? * @param attributeName the attribute name * @return true if so, false otherwise */ public boolean contains(String attributeName); /** * Does the attribute with the provided name exist in this map and is its value of the specified required type? * @param attributeName the attribute name * @param requiredType the required class of the attribute value * @return true if so, false otherwise * @throws IllegalArgumentException when the value is not of the required type */ public boolean contains(String attributeName, Class requiredType) throws IllegalArgumentException; /** * Get an attribute value, returning the default value if no value is found. * @param attributeName the name of the attribute * @param defaultValue the default value * @return the attribute value, falling back to the default if no such attribute exists */ public Object get(String attributeName, Object defaultValue); /** * Get an attribute value, asserting the value is of the required type. * @param attributeName the name of the attribute * @param requiredType the required type of the attribute value * @return the attribute value, or null if not found * @throws IllegalArgumentException when the value is not of the required type */ public Object get(String attributeName, Class requiredType) throws IllegalArgumentException; /** * Get an attribute value, asserting the value is of the required type and returning the default value if not found. * @param attributeName the name of the attribute * @param requiredType the value required type * @param defaultValue the default value * @return the attribute value, or the default if not found * @throws IllegalArgumentException when the value (if found) is not of the required type */ public Object get(String attributeName, Class requiredType, Object defaultValue) throws IllegalStateException; /** * Get the value of a required attribute, throwing an exception of no attribute is found. * @param attributeName the name of the attribute * @return the attribute value * @throws IllegalArgumentException when the attribute is not found */ public Object getRequired(String attributeName) throws IllegalArgumentException; /** * Get the value of a required attribute and make sure it is of the required type. * @param attributeName name of the attribute to get * @param requiredType the required type of the attribute value * @return the attribute value * @throws IllegalArgumentException when the attribute is not found or not of the required type */ public Object getRequired(String attributeName, Class requiredType) throws IllegalArgumentException; /** * Returns a string attribute value in the map, returning null if no value was found. * @param attributeName the attribute name * @return the string attribute value * @throws IllegalArgumentException if the attribute is present but not a string */ public String getString(String attributeName) throws IllegalArgumentException; /** * Returns a string attribute value in the map, returning the default value if no value was found. * @param attributeName the attribute name * @param defaultValue the default * @return the string attribute value * @throws IllegalArgumentException if the attribute is present but not a string */ public String getString(String attributeName, String defaultValue) throws IllegalArgumentException; /** * Returns a string attribute value in the map, throwing an exception if the attribute is not present and of the * correct type. * @param attributeName the attribute name * @return the string attribute value * @throws IllegalArgumentException if the attribute is not present or present but not a string */ public String getRequiredString(String attributeName) throws IllegalArgumentException; /** * Returns a collection attribute value in the map. * @param attributeName the attribute name * @return the collection attribute value * @throws IllegalArgumentException if the attribute is present but not a collection */ public Collection getCollection(String attributeName) throws IllegalArgumentException; /** * Returns a collection attribute value in the map and make sure it is of the required type. * @param attributeName the attribute name * @param requiredType the required type of the attribute value * @return the collection attribute value * @throws IllegalArgumentException if the attribute is present but not a collection of the required type */ public Collection getCollection(String attributeName, Class requiredType) throws IllegalArgumentException; /** * Returns a collection attribute value in the map, throwing an exception if the attribute is not present or not a * collection. * @param attributeName the attribute name * @return the collection attribute value * @throws IllegalArgumentException if the attribute is not present or is present but not a collection */ public Collection getRequiredCollection(String attributeName) throws IllegalArgumentException; /** * Returns a collection attribute value in the map, throwing an exception if the attribute is not present or not a * collection of the required type. * @param attributeName the attribute name * @param requiredType the required collection type * @return the collection attribute value * @throws IllegalArgumentException if the attribute is not present or is present but not a collection of the * required type */ public Collection getRequiredCollection(String attributeName, Class requiredType) throws IllegalArgumentException; /** * Returns an array attribute value in the map and makes sure it is of the required type. * @param attributeName the attribute name * @param requiredType the required type of the attribute value * @return the array attribute value * @throws IllegalArgumentException if the attribute is present but not an array of the required type */ public Object[] getArray(String attributeName, Class requiredType) throws IllegalArgumentException; /** * Returns an array attribute value in the map, throwing an exception if the attribute is not present or not an * array of the required type. * @param attributeName the attribute name * @param requiredType the required array type * @return the collection attribute value * @throws IllegalArgumentException if the attribute is not present or is present but not a array of the required * type */ public Object[] getRequiredArray(String attributeName, Class requiredType) throws IllegalArgumentException; /** * Returns a number attribute value in the map that is of the specified type, returning null if no * value was found. * @param attributeName the attribute name * @param requiredType the required number type * @return the number attribute value * @throws IllegalArgumentException if the attribute is present but not a number of the required type */ public Number getNumber(String attributeName, Class requiredType) throws IllegalArgumentException; /** * Returns a number attribute value in the map of the specified type, returning the default value if no value was * found. * @param attributeName the attribute name * @param defaultValue the default * @return the number attribute value * @throws IllegalArgumentException if the attribute is present but not a number of the required type */ public Number getNumber(String attributeName, Class requiredType, Number defaultValue) throws IllegalArgumentException; /** * Returns a number attribute value in the map, throwing an exception if the attribute is not present and of the * correct type. * @param attributeName the attribute name * @return the number attribute value * @throws IllegalArgumentException if the attribute is not present or present but not a number of the required type */ public Number getRequiredNumber(String attributeName, Class requiredType) throws IllegalArgumentException; /** * Returns an integer attribute value in the map, returning null if no value was found. * @param attributeName the attribute name * @return the integer attribute value * @throws IllegalArgumentException if the attribute is present but not an integer */ public Integer getInteger(String attributeName) throws IllegalArgumentException; /** * Returns an integer attribute value in the map, returning the default value if no value was found. * @param attributeName the attribute name * @param defaultValue the default * @return the integer attribute value * @throws IllegalArgumentException if the attribute is present but not an integer */ public Integer getInteger(String attributeName, Integer defaultValue) throws IllegalArgumentException; /** * Returns an integer attribute value in the map, throwing an exception if the attribute is not present and of the * correct type. * @param attributeName the attribute name * @return the integer attribute value * @throws IllegalArgumentException if the attribute is not present or present but not an integer */ public Integer getRequiredInteger(String attributeName) throws IllegalArgumentException; /** * Returns a long attribute value in the map, returning null if no value was found. * @param attributeName the attribute name * @return the long attribute value * @throws IllegalArgumentException if the attribute is present but not a long */ public Long getLong(String attributeName) throws IllegalArgumentException; /** * Returns a long attribute value in the map, returning the default value if no value was found. * @param attributeName the attribute name * @param defaultValue the default * @return the long attribute value * @throws IllegalArgumentException if the attribute is present but not a long */ public Long getLong(String attributeName, Long defaultValue) throws IllegalArgumentException; /** * Returns a long attribute value in the map, throwing an exception if the attribute is not present and of the * correct type. * @param attributeName the attribute name * @return the long attribute value * @throws IllegalArgumentException if the attribute is not present or present but not a long */ public Long getRequiredLong(String attributeName) throws IllegalArgumentException; /** * Returns a boolean attribute value in the map, returning null if no value was found. * @param attributeName the attribute name * @return the long attribute value * @throws IllegalArgumentException if the attribute is present but not a boolean */ public Boolean getBoolean(String attributeName) throws IllegalArgumentException; /** * Returns a boolean attribute value in the map, returning the default value if no value was found. * @param attributeName the attribute name * @param defaultValue the default * @return the boolean attribute value * @throws IllegalArgumentException if the attribute is present but not a boolean */ public Boolean getBoolean(String attributeName, Boolean defaultValue) throws IllegalArgumentException; /** * Returns a boolean attribute value in the map, throwing an exception if the attribute is not present and of the * correct type. * @param attributeName the attribute name * @return the boolean attribute value * @throws IllegalArgumentException if the attribute is not present or present but is not a boolean */ public Boolean getRequiredBoolean(String attributeName) throws IllegalArgumentException; /** * Returns a new attribute map containing the union of this map with the provided map. * @param attributes the map to combine with this map * @return a new, combined map */ public AttributeMap union(AttributeMap attributes); }././@LongLink0000000000000000000000000000017400000000000011567 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframework/webflow/validation/libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframew0000755000000000000000000000000011360615640027746 5ustar ././@LongLink0000000000000000000000000000023400000000000011564 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframework/webflow/validation/WebFlowMessageCodesResolver.javalibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframew0000644000000000000000000001077311360615632027761 0ustar package org.springframework.webflow.validation; import java.util.ArrayList; import java.util.Iterator; import java.util.List; import org.springframework.util.StringUtils; import org.springframework.validation.DefaultMessageCodesResolver; import org.springframework.validation.MessageCodesResolver; /** * Message Codes Resolver that implements the default Web Flow 2.x algorithm. The default algorithm differs from the * Spring MVC {@link DefaultMessageCodesResolver} by appending the errorCode last instead of first. For * example: myBean.myProperty.required instead of required.myBean.myProperty. * * Specifically: *

* Will create two message codes for an object error, in the following order: *

    *
  • 1.: objectName.errorCode *
  • 2.: errorCode *
* *

* Will create four message codes for a field error, in the following order: *

    *
  • 1.: object name.field.rrorCode *
  • 2.: field.errorCode *
  • 3.: fieldType.errorCode *
  • 4.: errorCode *
* *

* For example, in case of code "typeMismatch", object name "user", field "age" of type Integer: *

    *
  • 1. try "user.age.typeMismatch" *
  • 2. try "age.typeMismatch" *
  • 3. try "java.lang.Integer.typeMismatch" *
  • 4. try "typeMismatch" *
* * @author Keith Donald */ public class WebFlowMessageCodesResolver implements MessageCodesResolver { /** * The separator that this implementation uses when resolving message codes. */ public static final String CODE_SEPARATOR = "."; private String prefix = ""; /** * Specify a prefix to be applied to any code built by this resolver. *

* Default is none. Specify, for example, "validation." to get error codes like "validation.name.typeMismatch". */ public void setPrefix(String prefix) { this.prefix = (prefix != null ? prefix : ""); } /** * Return the prefix to be applied to any code built by this resolver. *

* Returns an empty String in case of no prefix. */ protected String getPrefix() { return this.prefix; } public String[] resolveMessageCodes(String errorCode, String objectName) { return new String[] { postProcessMessageCode(objectName + CODE_SEPARATOR + errorCode), postProcessMessageCode(errorCode) }; } /** * Build the code list for the given code and field: an object/field-specific code, a field-specific code, a plain * error code. *

* Arrays, Lists and Maps are resolved both for specific elements and the whole collection. *

* See the {@link DefaultMessageCodesResolver class level Javadoc} for details on the generated codes. * @return the list of codes */ public String[] resolveMessageCodes(String errorCode, String objectName, String field, Class fieldType) { List codeList = new ArrayList(); List fieldList = new ArrayList(); buildFieldList(field, fieldList); for (Iterator it = fieldList.iterator(); it.hasNext();) { String fieldInList = (String) it.next(); codeList .add(postProcessMessageCode(objectName + CODE_SEPARATOR + fieldInList + CODE_SEPARATOR + errorCode)); } int dotIndex = field.lastIndexOf('.'); if (dotIndex != -1) { buildFieldList(field.substring(dotIndex + 1), fieldList); } for (Iterator it = fieldList.iterator(); it.hasNext();) { String fieldInList = (String) it.next(); codeList.add(postProcessMessageCode(fieldInList + CODE_SEPARATOR + errorCode)); } if (fieldType != null) { codeList.add(postProcessMessageCode(fieldType.getName() + CODE_SEPARATOR + errorCode)); } codeList.add(postProcessMessageCode(errorCode)); return StringUtils.toStringArray(codeList); } /** * Add both keyed and non-keyed entries for the supplied field to the supplied field list. */ protected void buildFieldList(String field, List fieldList) { fieldList.add(field); String plainField = field; int keyIndex = plainField.lastIndexOf('['); while (keyIndex != -1) { int endKeyIndex = plainField.indexOf(']', keyIndex); if (endKeyIndex != -1) { plainField = plainField.substring(0, keyIndex) + plainField.substring(endKeyIndex + 1); fieldList.add(plainField); keyIndex = plainField.lastIndexOf('['); } else { keyIndex = -1; } } } /** * Post-process the given message code, built by this resolver. *

* The default implementation applies the specified prefix, if any. * @param code the message code as built by this resolver * @return the final message code to be returned * @see #setPrefix */ protected String postProcessMessageCode(String code) { return getPrefix() + code; } } ././@LongLink0000000000000000000000000000023100000000000011561 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframework/webflow/validation/DefaultValidationContext.javalibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframew0000644000000000000000000000364611360615634027764 0ustar package org.springframework.webflow.validation; import java.security.Principal; import java.util.List; import org.springframework.binding.mapping.MappingResult; import org.springframework.binding.mapping.MappingResults; import org.springframework.binding.mapping.MappingResultsCriteria; import org.springframework.binding.message.MessageContext; import org.springframework.binding.validation.ValidationContext; import org.springframework.webflow.execution.RequestContext; public class DefaultValidationContext implements ValidationContext { private RequestContext requestContext; private String eventId; private MappingResults mappingResults; public DefaultValidationContext(RequestContext requestContext, String eventId, MappingResults mappingResults) { this.requestContext = requestContext; this.eventId = eventId; this.mappingResults = mappingResults; } public MessageContext getMessageContext() { return requestContext.getMessageContext(); } public String getUserEvent() { return eventId; } public Principal getUserPrincipal() { return requestContext.getExternalContext().getCurrentUser(); } public Object getUserValue(String property) { MappingResult result = getMappingResult(property); return result != null ? result.getOriginalValue() : null; } private MappingResult getMappingResult(String property) { if (mappingResults != null) { List results = mappingResults.getResults(new PropertyMappingResult(property)); if (!results.isEmpty()) { return (MappingResult) results.get(0); } } return null; } private static class PropertyMappingResult implements MappingResultsCriteria { private String property; public PropertyMappingResult(String property) { this.property = property; } public boolean test(MappingResult result) { if (property.equals(result.getMapping().getTargetExpression().getExpressionString())) { return true; } else { return false; } } } }././@LongLink0000000000000000000000000000022100000000000011560 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframework/webflow/validation/ValidationHelper.javalibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframew0000644000000000000000000002676111360615640027764 0ustar /* * Copyright 2008 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.springframework.webflow.validation; import java.lang.reflect.Method; import java.util.ArrayList; import java.util.Iterator; import java.util.List; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.springframework.aop.support.AopUtils; import org.springframework.beans.factory.BeanFactory; import org.springframework.binding.expression.ExpressionParser; import org.springframework.binding.mapping.MappingResults; import org.springframework.binding.message.MessageContext; import org.springframework.binding.message.MessageContextErrors; import org.springframework.binding.validation.ValidationContext; import org.springframework.util.Assert; import org.springframework.util.ClassUtils; import org.springframework.util.ReflectionUtils; import org.springframework.util.StringUtils; import org.springframework.validation.Errors; import org.springframework.validation.MessageCodesResolver; import org.springframework.validation.Validator; import org.springframework.webflow.execution.RequestContext; /** * A helper class the encapsulates conventions to invoke validation logic. * * @author Scott Andrews * @author Canny Duck * @author Jeremy Grelle */ public class ValidationHelper { private static final Log logger = LogFactory.getLog(ValidationHelper.class); private final Object model; private final RequestContext requestContext; private final String eventId; private final String modelName; private final ExpressionParser expressionParser; private final MessageCodesResolver messageCodesResolver; private final MappingResults mappingResults; /** * Create a throwaway validation helper object. Validation is invoked by the {@link #validate()} method. *

* Validation methods invoked include a validation method on the model object or a validator bean. The method name * on either object is in the form of validate[viewStateId]. A ValidationContext is passed in the method signature * along with the model object for validator beans. A MessageContext can be substituted for the ValidationContext. *

* For example: model.validateEnterBookingDetails(VaticationContext) or * context.getBean("modelValidator").validateEnterBookingDetails(model, VaticationContext) * * @param model the object to validate * @param requestContext the context for the request * @param eventId the event triggering validation * @param modelName the name of the model object * @param expressionParser the expression parser * @param mappingResults object mapping results */ public ValidationHelper(Object model, RequestContext requestContext, String eventId, String modelName, ExpressionParser expressionParser, MessageCodesResolver messageCodesResolver, MappingResults mappingResults) { Assert.notNull(model, "The model to validate is required"); Assert.notNull(requestContext, "The request context for the validator is required"); this.model = model; this.requestContext = requestContext; this.eventId = eventId; this.modelName = modelName; this.expressionParser = expressionParser; this.messageCodesResolver = messageCodesResolver; this.mappingResults = mappingResults; } /** * Invoke the validators available by convention. */ public void validate() { invokeModelValidationMethod(model); Object validator = getModelValidator(); if (validator != null) { invokeModelValidator(model, validator); } } private void invokeModelValidationMethod(Object model) { invokeValidateMethodForCurrentState(model); invokeDefaultValidateMethod(model); } private boolean invokeValidateMethodForCurrentState(Object model) { String methodName = "validate" + StringUtils.capitalize(requestContext.getCurrentState().getId()); // preferred Method validateMethod = ReflectionUtils.findMethod(model.getClass(), methodName, new Class[] { ValidationContext.class }); if (validateMethod != null) { if (logger.isDebugEnabled()) { logger.debug("Invoking current state model validation method '" + methodName + "(ValidationContext)'"); } ReflectionUtils.invokeMethod(validateMethod, model, new Object[] { new DefaultValidationContext( requestContext, eventId, mappingResults) }); return true; } // web flow 2.0.3 or < compatibility only validateMethod = ReflectionUtils.findMethod(model.getClass(), methodName, new Class[] { MessageContext.class }); if (validateMethod != null) { ReflectionUtils.invokeMethod(validateMethod, model, new Object[] { requestContext.getMessageContext() }); return true; } // mvc 2 compatibility only validateMethod = ReflectionUtils.findMethod(model.getClass(), methodName, new Class[] { Errors.class }); if (validateMethod != null) { MessageContextErrors errors = new MessageContextErrors(requestContext.getMessageContext(), modelName, model, expressionParser, messageCodesResolver, mappingResults); if (logger.isDebugEnabled()) { logger.debug("Invoking current state model validation method '" + methodName + "(Errors)'"); } ReflectionUtils.invokeMethod(validateMethod, model, new Object[] { errors }); return true; } return false; } private boolean invokeDefaultValidateMethod(Object model) { // preferred Method validateMethod = ReflectionUtils.findMethod(model.getClass(), "validate", new Class[] { ValidationContext.class }); if (validateMethod != null) { if (logger.isDebugEnabled()) { logger.debug("Invoking default model validation method 'validate(ValidationContext)'"); } ReflectionUtils.invokeMethod(validateMethod, model, new Object[] { new DefaultValidationContext( requestContext, eventId, mappingResults) }); return true; } // mvc 2 compatibility only validateMethod = ReflectionUtils.findMethod(model.getClass(), "validate", new Class[] { Errors.class }); if (validateMethod != null) { if (logger.isDebugEnabled()) { logger.debug("Invoking default model validation method 'validate(Errors)'"); } MessageContextErrors errors = new MessageContextErrors(requestContext.getMessageContext(), modelName, model, expressionParser, messageCodesResolver, mappingResults); ReflectionUtils.invokeMethod(validateMethod, model, new Object[] { errors }); return true; } return false; } private Object getModelValidator() { BeanFactory beanFactory = requestContext.getActiveFlow().getApplicationContext(); if (beanFactory != null && StringUtils.hasText(modelName)) { String validatorName = modelName + "Validator"; if (beanFactory.containsBean(validatorName)) { return beanFactory.getBean(validatorName); } } return null; } private void invokeModelValidator(Object model, Object validator) { invokeValidatorValidateMethodForCurrentState(model, validator); invokeValidatorDefaultValidateMethod(model, validator); } private boolean invokeValidatorValidateMethodForCurrentState(Object model, Object validator) { String methodName = "validate" + StringUtils.capitalize(requestContext.getCurrentState().getId()); // preferred Method validateMethod = findValidationMethod(model, validator, methodName, ValidationContext.class); if (validateMethod != null) { if (logger.isDebugEnabled()) { logger.debug("Invoking current state validator method '" + ClassUtils.getShortName(validator.getClass()) + "." + methodName + "(" + ClassUtils.getShortName(model.getClass()) + ", ValidationContext)'"); } ReflectionUtils.invokeMethod(validateMethod, validator, new Object[] { model, new DefaultValidationContext(requestContext, eventId, mappingResults) }); return true; } // mvc 2 compatibility only validateMethod = findValidationMethod(model, validator, methodName, Errors.class); if (validateMethod != null) { if (logger.isDebugEnabled()) { logger.debug("Invoking current state validator method '" + ClassUtils.getShortName(validator.getClass()) + "." + methodName + "(" + ClassUtils.getShortName(model.getClass()) + ", Errors)'"); } MessageContextErrors errors = new MessageContextErrors(requestContext.getMessageContext(), modelName, model, expressionParser, messageCodesResolver, mappingResults); ReflectionUtils.invokeMethod(validateMethod, validator, new Object[] { model, errors }); return true; } // web flow 2.0.0 to 2.0.3 compatibility only [to remove in web flow 3] validateMethod = findValidationMethod(model, validator, methodName, MessageContext.class); if (validateMethod != null) { ReflectionUtils.invokeMethod(validateMethod, validator, new Object[] { model, requestContext.getMessageContext() }); return true; } return false; } private boolean invokeValidatorDefaultValidateMethod(Object model, Object validator) { if (validator instanceof Validator) { // supports existing validators if (logger.isDebugEnabled()) { logger.debug("Invoking Spring Validator '" + ClassUtils.getShortName(validator.getClass()) + "'"); } MessageContextErrors errors = new MessageContextErrors(requestContext.getMessageContext(), modelName, model, expressionParser, messageCodesResolver, mappingResults); ((Validator) validator).validate(model, errors); return true; } // preferred Method validateMethod = findValidationMethod(model, validator, "validate", ValidationContext.class); if (validateMethod != null) { if (logger.isDebugEnabled()) { logger.debug("Invoking default validator method '" + ClassUtils.getShortName(validator.getClass()) + ".validate(" + ClassUtils.getShortName(model.getClass()) + ", ValidationContext)'"); } ReflectionUtils.invokeMethod(validateMethod, validator, new Object[] { model, new DefaultValidationContext(requestContext, eventId, mappingResults) }); return true; } // mvc 2 compatibility only validateMethod = findValidationMethod(model, validator, "validate", Errors.class); if (validateMethod != null) { if (logger.isDebugEnabled()) { logger.debug("Invoking default validator method '" + ClassUtils.getShortName(validator.getClass()) + ".validate(" + ClassUtils.getShortName(model.getClass()) + ", Errors)'"); } MessageContextErrors errors = new MessageContextErrors(requestContext.getMessageContext(), modelName, model, expressionParser, messageCodesResolver, mappingResults); ReflectionUtils.invokeMethod(validateMethod, validator, new Object[] { model, errors }); return true; } return false; } private Method findValidationMethod(Object model, Object validator, String methodName, Class context) { Class modelClass = AopUtils.getTargetClass(model); List modelSearchClasses = new ArrayList(); while (modelClass != null) { modelSearchClasses.add(modelClass); modelClass = modelClass.getSuperclass(); } for (Iterator iterator = modelSearchClasses.iterator(); iterator.hasNext();) { Class searchClass = (Class) iterator.next(); Method method = ReflectionUtils.findMethod(validator.getClass(), methodName, new Class[] { searchClass, context }); if (method != null) { return method; } } return null; } } ././@LongLink0000000000000000000000000000017400000000000011567 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframework/webflow/definition/libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframew0000755000000000000000000000000011360615640027746 5ustar ././@LongLink0000000000000000000000000000022500000000000011564 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframework/webflow/definition/TransitionDefinition.javalibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframew0000644000000000000000000000265311360615636027763 0ustar /* * Copyright 2004-2008 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.springframework.webflow.definition; import org.springframework.webflow.core.Annotated; /** * A transition takes a flow from one state to another. * * @author Keith Donald * @author Erwin Vervaet */ public interface TransitionDefinition extends Annotated { /** * The identifier of this transition. This id value should be unique among all other transitions in a set. * @return the transition identifier */ public String getId(); /** * Returns an identification of the target state of this transition. This could be an actual static state id or * something more dynamic, like a string representation of an expression evaluating the target state id at flow * execution time. * @return the target state identifier */ public String getTargetStateId(); }././@LongLink0000000000000000000000000000021700000000000011565 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframework/webflow/definition/FlowDefinition.javalibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframew0000644000000000000000000000711211360615632027752 0ustar /* * Copyright 2004-2008 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.springframework.webflow.definition; import org.springframework.context.ApplicationContext; import org.springframework.webflow.core.Annotated; /** * The definition of a flow, a program that when executed carries out a task on behalf of a single client. *

* A flow definition is a reusable, self-contained controller module that defines a blue print for an executable user * task. Flows typically orchestrate controlled navigations or dialogs within web applications to guide users through * fulfillment of a business process/goal that takes place over a series of steps, modeled as states. *

* Structurally a flow definition is composed of a set of states. A {@link StateDefinition state} is a point in a flow * where a behavior is executed; for example, showing a view, executing an action, spawning a subflow, or terminating * the flow. Different types of states execute different behaviors in a polymorphic fashion. Most states are * {@link TransitionableStateDefinition transitionable states}, meaning they can respond to events by taking the flow * from one state to another. *

* Each flow has exactly one {@link #getStartState() start state} which defines the starting point of the program. *

* This interface exposes the flow's identifier, states, and other definitional attributes. It is suitable for * introspection by tools as well as user-code at flow execution time. *

* Flow definitions may be annotated with attributes. * * @author Keith Donald * @author Erwin Vervaet */ public interface FlowDefinition extends Annotated { /** * Returns the unique id of this flow. * @return the flow id */ public String getId(); /** * Return this flow's starting point. * @return the start state */ public StateDefinition getStartState(); /** * Returns the state definition with the specified id. * @param id the state id * @return the state definition * @throws IllegalArgumentException if a state with this id does not exist */ public StateDefinition getState(String id) throws IllegalArgumentException; /** * Returns the outcomes that are possible for this flow to reach. * @return the possible outcomes */ public String[] getPossibleOutcomes(); /** * Returns the class loader used by this flow definition to load classes. * @return the class loader */ public ClassLoader getClassLoader(); /** * Returns a reference to application context hosting application objects and services used by this flow definition. * @return the application context */ public ApplicationContext getApplicationContext(); /** * Returns true if this flow definition is currently in development (running in development mode). * @return the development flag */ public boolean inDevelopment(); /** * Destroy this flow definition, releasing any resources. After the flow is destroyed it cannot be started again. */ public void destroy(); }././@LongLink0000000000000000000000000000021000000000000011556 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframework/webflow/definition/package.htmllibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframew0000644000000000000000000000107311360615632027752 0ustar

Core, stable abstractions for representing flow definitions.

Each flow has an indentifier and is composed of one or more states, one of which is the start state. States may be transitionable, if so they define one or more transitions that lead to other states.

With these types a client can introspect a flow definition to reason on its attributes and traverse its structure, perhaps to display a visual diagram. Note that the types defined in this package do not capture the behavioral characteristics of a flow.

././@LongLink0000000000000000000000000000022000000000000011557 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframework/webflow/definition/StateDefinition.javalibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframew0000644000000000000000000000300211360615640027743 0ustar /* * Copyright 2004-2008 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.springframework.webflow.definition; import org.springframework.webflow.core.Annotated; /** * A step within a {@link FlowDefinition flow definition} where behavior is executed. *

* States have identifiers that are local to their containing flow definitions. They may also be annotated with * attributes. * * @author Keith Donald * @author Erwin Vervaet */ public interface StateDefinition extends Annotated { /** * Returns the flow definition this state belongs to. * @return the owning flow definition */ public FlowDefinition getOwner(); /** * Returns this state's identifier, locally unique to is containing flow definition. * @return the state identifier */ public String getId(); /** * Returns true if this state is a view state. * @return true if a view state, false otherwise */ public boolean isViewState(); }././@LongLink0000000000000000000000000000020500000000000011562 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframework/webflow/definition/registry/libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframew0000755000000000000000000000000011360615644027752 5ustar ././@LongLink0000000000000000000000000000023600000000000011566 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframework/webflow/definition/registry/FlowDefinitionHolder.javalibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframew0000644000000000000000000000545411360615634027763 0ustar /* * Copyright 2004-2008 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.springframework.webflow.definition.registry; import org.springframework.webflow.definition.FlowDefinition; /** * A holder holding a reference to a Flow definition. Provides a layer of indirection, enabling things like * "hot-reloadable" flow definitions. * * @see FlowDefinitionRegistry#registerFlowDefinition(FlowDefinitionHolder) * * @author Keith Donald */ public interface FlowDefinitionHolder { /** * Returns the id of the flow definition held by this holder. This is a lightweight method * callers may call to obtain the id of the flow without triggering full flow definition assembly (which may be an * expensive operation). */ public String getFlowDefinitionId(); /** * Returns a descriptive string that identifies the source of this FlowDefinition. This is also a lightweight method * callers may call to obtain the logical resource where the flow definition resides without triggering flow * definition assembly. Used for informational purposes. * @return the flow definition resource string */ public String getFlowDefinitionResourceString(); /** * Returns the flow definition held by this holder. Calling this method the first time may trigger flow assembly * (which may be expensive). * @throws FlowDefinitionConstructionException if there is a problem constructing the target flow definition */ public FlowDefinition getFlowDefinition() throws FlowDefinitionConstructionException; /** * Refresh the flow definition held by this holder. Calling this method typically triggers flow re-assembly, which * may include a refresh from an externalized resource such as a file. * @throws FlowDefinitionConstructionException if there is a problem constructing the target flow definition */ public void refresh() throws FlowDefinitionConstructionException; /** * Indicates that the system is being shutdown and any resources flow resources should be released. After this * method is called, calls to {@link #getFlowDefinition()} are undefined. Should only be called once. May be a no-op * if the held flow was never constructed to begin with. */ public void destroy(); }././@LongLink0000000000000000000000000000025500000000000011567 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframework/webflow/definition/registry/FlowDefinitionConstructionException.javalibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframew0000644000000000000000000000327411360615644027762 0ustar /* * Copyright 2004-2008 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.springframework.webflow.definition.registry; import org.springframework.webflow.core.FlowException; /** * Thrown when a flow definition was found during a lookup operation but could not be constructed. * * @author Keith Donald * @author Erwin Vervaet */ public class FlowDefinitionConstructionException extends FlowException { /** * The id of the flow that could not be constructed. */ private String flowDefinitionId; /** * Creates an exception indicating a flow definition could not be constructed. * @param flowDefinitionId the flow definition identifier * @param cause the underlying cause of the exception */ public FlowDefinitionConstructionException(String flowDefinitionId, Throwable cause) { super("An exception occurred constructing the flow '" + flowDefinitionId + "'", cause); this.flowDefinitionId = flowDefinitionId; } /** * Returns the id of the flow definition that could not be constructed. * @return the flow id */ public String getFlowDefinitionId() { return flowDefinitionId; } }././@LongLink0000000000000000000000000000024000000000000011561 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframework/webflow/definition/registry/FlowDefinitionRegistry.javalibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframew0000644000000000000000000000566511360615644027770 0ustar /* * Copyright 2004-2008 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.springframework.webflow.definition.registry; import org.springframework.webflow.definition.FlowDefinition; /** * A container of flow definitions. Extends {@link FlowDefinitionLocator} for accessing registered Flow definitions for * execution at runtime. *

* Flow definition registries can be configured with a "parent" registry to provide a hook into a larger flow definition * registry hierarchy. * * @author Keith Donald */ public interface FlowDefinitionRegistry extends FlowDefinitionLocator { /** * Returns the number of flow definitions registered in this registry. * @return the flow definition count */ public int getFlowDefinitionCount(); /** * Returns the ids of the flows registered in this registry. * @return the flow definition ids */ public String[] getFlowDefinitionIds(); /** * Returns this registry's parent registry. * @return the parent flow definition registry, or null if no parent is set */ public FlowDefinitionRegistry getParent(); /** * Does this registry contain a flow with the given id? More specifically, is {@link #getFlowDefinition(String)} * able to obtain a flow definition instance for the given id? Will ask the parent registry if the flow cannot be * found in this instance. * @param flowId the id of the flow to query * @return whether a flow definition with the given id is registered */ public boolean containsFlowDefinition(String flowId); /** * Sets this registry's parent registry. When asked by a client to locate a flow definition this registry will query * it's parent if it cannot fulfill the lookup request itself. * @param parent the parent flow definition registry, may be null */ public void setParent(FlowDefinitionRegistry parent); /** * Register a flow definition in this registry. Registers a "holder", not the Flow definition itself. This allows * the actual Flow definition to be loaded lazily only when needed, and also rebuilt at runtime when its underlying * resource changes without re-deploy. * @param definitionHolder a holder holding the flow definition to register */ public void registerFlowDefinition(FlowDefinitionHolder definitionHolder); /** * Register a flow definition in this registry. * @param definition the actual flow definition */ public void registerFlowDefinition(FlowDefinition definition); }././@LongLink0000000000000000000000000000022100000000000011560 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframework/webflow/definition/registry/package.htmllibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframew0000644000000000000000000000020711360615640027747 0ustar

The flow definition registry subsystem for managing collections of executable flow definitions.

././@LongLink0000000000000000000000000000023700000000000011567 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframework/webflow/definition/registry/FlowDefinitionLocator.javalibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframew0000644000000000000000000000311011360615640027743 0ustar /* * Copyright 2004-2008 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.springframework.webflow.definition.registry; import org.springframework.webflow.definition.FlowDefinition; /** * A runtime service locator interface for retrieving flow definitions by id. Flow locators are needed * by flow executors at runtime to retrieve fully-configured flow definitions to support launching new flow executions. * * @author Keith Donald * @author Erwin Vervaet */ public interface FlowDefinitionLocator { /** * Lookup the flow definition with the specified id. * @param id the flow definition identifier * @return the flow definition * @throws NoSuchFlowDefinitionException when the flow definition with the specified id does not exist * @throws FlowDefinitionConstructionException if there is a problem constructing the identified flow definition */ public FlowDefinition getFlowDefinition(String id) throws NoSuchFlowDefinitionException, FlowDefinitionConstructionException; }././@LongLink0000000000000000000000000000024400000000000011565 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframework/webflow/definition/registry/FlowDefinitionRegistryImpl.javalibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframew0000644000000000000000000001010711360615640027747 0ustar /* * Copyright 2004-2008 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.springframework.webflow.definition.registry; import java.util.Iterator; import java.util.Map; import java.util.TreeMap; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.springframework.core.style.ToStringCreator; import org.springframework.util.Assert; import org.springframework.webflow.definition.FlowDefinition; /** * A generic registry implementation for housing one or more flow definitions. * * @author Keith Donald * @author Scott Andrews */ public class FlowDefinitionRegistryImpl implements FlowDefinitionRegistry { private static final Log logger = LogFactory.getLog(FlowDefinitionRegistryImpl.class); /** * The map of loaded Flow definitions maintained in this registry. */ private Map flowDefinitions; /** * An optional parent flow definition registry. */ private FlowDefinitionRegistry parent; public FlowDefinitionRegistryImpl() { flowDefinitions = new TreeMap(); } // implementing FlowDefinitionLocator public FlowDefinition getFlowDefinition(String id) throws NoSuchFlowDefinitionException, FlowDefinitionConstructionException { Assert.hasText(id, "An id is required to lookup a FlowDefinition"); try { if (logger.isDebugEnabled()) { logger.debug("Getting FlowDefinition with id '" + id + "'"); } return getFlowDefinitionHolder(id).getFlowDefinition(); } catch (NoSuchFlowDefinitionException e) { if (parent != null) { // try parent return parent.getFlowDefinition(id); } throw e; } } // implementing FlowDefinitionRegistry public boolean containsFlowDefinition(String flowId) { boolean containsFlow = flowDefinitions.containsKey(flowId); if (!containsFlow && parent != null) { containsFlow = parent.containsFlowDefinition(flowId); } return containsFlow; } public int getFlowDefinitionCount() { return flowDefinitions.size(); } public String[] getFlowDefinitionIds() { return (String[]) flowDefinitions.keySet().toArray(new String[flowDefinitions.size()]); } public FlowDefinitionRegistry getParent() { return parent; } public void setParent(FlowDefinitionRegistry parent) { this.parent = parent; } public void registerFlowDefinition(FlowDefinitionHolder definitionHolder) { Assert.notNull(definitionHolder, "The holder of the flow definition to register is required"); if (logger.isDebugEnabled()) { logger.debug("Registering flow definition '" + definitionHolder.getFlowDefinitionResourceString() + "' under id '" + definitionHolder.getFlowDefinitionId() + "'"); } flowDefinitions.put(definitionHolder.getFlowDefinitionId(), definitionHolder); } public void registerFlowDefinition(FlowDefinition definition) { registerFlowDefinition(new StaticFlowDefinitionHolder(definition)); } public void destroy() { Iterator it = flowDefinitions.values().iterator(); while (it.hasNext()) { FlowDefinitionHolder holder = (FlowDefinitionHolder) it.next(); holder.destroy(); } } // internal helpers /** * Returns the identified flow definition holder. Throws an exception if it cannot be found. */ private FlowDefinitionHolder getFlowDefinitionHolder(String id) throws NoSuchFlowDefinitionException { FlowDefinitionHolder holder = (FlowDefinitionHolder) flowDefinitions.get(id); if (holder == null) { throw new NoSuchFlowDefinitionException(id); } return holder; } public String toString() { return new ToStringCreator(this).append("flowIds", getFlowDefinitionIds()).append("parent", parent).toString(); } }././@LongLink0000000000000000000000000000024400000000000011565 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframework/webflow/definition/registry/StaticFlowDefinitionHolder.javalibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframew0000644000000000000000000000416311360615634027757 0ustar /* * Copyright 2004-2008 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.springframework.webflow.definition.registry; import org.springframework.core.style.ToStringCreator; import org.springframework.webflow.definition.FlowDefinition; /** * A simple flow definition holder that just holds a constant singleton reference to a flow definition. * @author Keith Donald */ class StaticFlowDefinitionHolder implements FlowDefinitionHolder { /** * The held flow definition. */ private final FlowDefinition flowDefinition; /** * Creates the static flow definition holder. * @param flowDefinition the flow to hold */ public StaticFlowDefinitionHolder(FlowDefinition flowDefinition) { this.flowDefinition = flowDefinition; } public String getFlowDefinitionId() { return flowDefinition.getId(); } public String getFlowDefinitionResourceString() { return flowDefinition.getClass().getName(); } public FlowDefinition getFlowDefinition() throws FlowDefinitionConstructionException { return flowDefinition; } public void refresh() throws FlowDefinitionConstructionException { // nothing to do } public void destroy() { flowDefinition.destroy(); } public boolean equals(Object o) { if (!(o instanceof StaticFlowDefinitionHolder)) { return false; } StaticFlowDefinitionHolder other = (StaticFlowDefinitionHolder) o; return flowDefinition.equals(other.flowDefinition); } public int hashCode() { return flowDefinition.hashCode(); } public String toString() { return new ToStringCreator(this).append("flowDefinition", flowDefinition).toString(); } }././@LongLink0000000000000000000000000000024700000000000011570 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframework/webflow/definition/registry/NoSuchFlowDefinitionException.javalibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframew0000644000000000000000000000303511360615632027752 0ustar /* * Copyright 2004-2008 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.springframework.webflow.definition.registry; import org.springframework.webflow.core.FlowException; /** * Thrown when no flow definition was found during a lookup operation by a flow locator. * * @author Keith Donald * @author Erwin Vervaet */ public class NoSuchFlowDefinitionException extends FlowException { /** * The id of the flow definition that could not be located. */ private String flowDefinitionId; /** * Creates an exception indicating a flow definition could not be found. * @param flowDefinitionId the flow definition id */ public NoSuchFlowDefinitionException(String flowDefinitionId) { super("No flow definition '" + flowDefinitionId + "' found"); this.flowDefinitionId = flowDefinitionId; } /** * Returns the id of the flow definition that could not be found. */ public String getFlowDefinitionId() { return flowDefinitionId; } }././@LongLink0000000000000000000000000000023600000000000011566 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframework/webflow/definition/TransitionableStateDefinition.javalibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframew0000644000000000000000000000242211360615634027753 0ustar /* * Copyright 2004-2008 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.springframework.webflow.definition; /** * A state that can transition to another state. * * @author Keith Donald * @author Erwin Vervaet */ public interface TransitionableStateDefinition extends StateDefinition { /** * Returns the available transitions out of this state. * @return the available state transitions */ public TransitionDefinition[] getTransitions(); /** * Returns the transition that matches the event with the provided id. * @param eventId the event id * @return the transition that matches, or null if no match is found. */ public TransitionDefinition getTransition(String eventId); }././@LongLink0000000000000000000000000000016500000000000011567 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframework/webflow/mvc/libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframew0000755000000000000000000000000011360615632027747 5ustar ././@LongLink0000000000000000000000000000017500000000000011570 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframework/webflow/mvc/portlet/libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframew0000755000000000000000000000000011360615642027750 5ustar ././@LongLink0000000000000000000000000000021500000000000011563 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframework/webflow/mvc/portlet/FlowHandler.javalibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframew0000644000000000000000000000665011360615636027764 0ustar /* * Copyright 2004-2008 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.springframework.webflow.mvc.portlet; import javax.portlet.ActionRequest; import javax.portlet.ActionResponse; import javax.portlet.PortletModeException; import javax.portlet.RenderRequest; import javax.portlet.RenderResponse; import org.springframework.webflow.core.FlowException; import org.springframework.webflow.core.collection.MutableAttributeMap; import org.springframework.webflow.execution.FlowExecutionOutcome; /** * A controller helper used for customizing access to a single flow definition in a Portlet environment. This * helper is used to: *
    *
  1. Launch executions of that flow with data in the execution input map *
  2. Handle outcomes reached by that flow in a custom manner *
  3. Handle unhandled exceptions dealing with that flow in a custom manner *
* Such a handler can be visually thought of as a "flow reference" on a Garrett IA diagram. It holds a reference to the * flow id to launch, how to provision its input, how to process its outcomes, and how to handle uncaught exceptions. * * @author Keith Donald */ public interface FlowHandler { /** * Returns the id of the flow handled by this handler. Used by a Controller to load the flow definition. * @return the flow id */ public String getFlowId(); /** * Creates the flow execution input map to pass to a new instance of the flow being started. Used by a Controller to * launch the flow execution with the correct input. * @param request the current request * @return the input map */ public MutableAttributeMap createExecutionInputMap(RenderRequest request); /** * Handles a specific flow execution outcome. Used to change portlet modes after the flow ends. * @param outcome the outcome that was reached * @param request the current action request * @param response the current action response * @return whether this outcome was handled, or whether the caller should handle it * @throws PortletModeException if this handler tries to change the portlet mode to something invalid */ public boolean handleExecutionOutcome(FlowExecutionOutcome outcome, ActionRequest request, ActionResponse response) throws PortletModeException; /** * Handles a flow exception that was not handled by the Web Flow system. Used by a Controller to handle a specific * type of exception dealing with this flow in a custom manner. * @param e the unhandled exception originating from Spring Web Flow. May be thrown by the flow execution itself or * the flow executor system if no execution could be restored. * @param request the current request * @param response the current response * @return the name of a specific error view to render, or null if the exception should be handled by * the caller */ public String handleException(FlowException e, RenderRequest request, RenderResponse response); } ././@LongLink0000000000000000000000000000022500000000000011564 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframework/webflow/mvc/portlet/AbstractFlowHandler.javalibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframew0000644000000000000000000000317311360615632027755 0ustar /* * Copyright 2004-2008 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.springframework.webflow.mvc.portlet; import javax.portlet.ActionRequest; import javax.portlet.ActionResponse; import javax.portlet.RenderRequest; import javax.portlet.RenderResponse; import org.springframework.webflow.core.FlowException; import org.springframework.webflow.core.collection.MutableAttributeMap; import org.springframework.webflow.execution.FlowExecutionOutcome; /** * Trivial flow handler base class that simply returns null for all operations. Subclasses should extend and override * which operations they need. * * @author Keith Donald */ public class AbstractFlowHandler implements FlowHandler { public String getFlowId() { return null; } public MutableAttributeMap createExecutionInputMap(RenderRequest request) { return null; } public boolean handleExecutionOutcome(FlowExecutionOutcome outcome, ActionRequest request, ActionResponse response) { return false; } public String handleException(FlowException e, RenderRequest request, RenderResponse response) { return null; } } ././@LongLink0000000000000000000000000000022400000000000011563 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframework/webflow/mvc/portlet/FlowHandlerAdapter.javalibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframew0000644000000000000000000002231011360615642027750 0ustar /* * Copyright 2004-2008 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.springframework.webflow.mvc.portlet; import java.io.IOException; import java.util.Iterator; import java.util.Map; import javax.portlet.ActionRequest; import javax.portlet.ActionResponse; import javax.portlet.PortletModeException; import javax.portlet.PortletRequest; import javax.portlet.PortletResponse; import javax.portlet.PortletSession; import javax.portlet.RenderRequest; import javax.portlet.RenderResponse; import org.springframework.beans.factory.InitializingBean; import org.springframework.util.Assert; import org.springframework.web.portlet.HandlerAdapter; import org.springframework.web.portlet.ModelAndView; import org.springframework.web.portlet.handler.PortletContentGenerator; import org.springframework.webflow.context.portlet.DefaultFlowUrlHandler; import org.springframework.webflow.context.portlet.FlowUrlHandler; import org.springframework.webflow.context.portlet.PortletExternalContext; import org.springframework.webflow.core.FlowException; import org.springframework.webflow.core.collection.LocalAttributeMap; import org.springframework.webflow.core.collection.MutableAttributeMap; import org.springframework.webflow.execution.FlowExecutionOutcome; import org.springframework.webflow.execution.repository.NoSuchFlowExecutionException; import org.springframework.webflow.executor.FlowExecutionResult; import org.springframework.webflow.executor.FlowExecutor; /** * A custom MVC HandlerAdapter that encapsulates the generic workflow associated with executing flows in a Portlet * environment. Delegates to mapped {@link FlowHandler flow handlers} to manage the interaction with executions of * specific flow definitions. * * @author Keith Donald * @author Scott Andrews */ public class FlowHandlerAdapter extends PortletContentGenerator implements HandlerAdapter, InitializingBean { private static final String ACTION_REQUEST_FLOW_EXCEPTION_ATTRIBUTE = "actionRequestFlowException"; private FlowExecutor flowExecutor; private FlowUrlHandler flowUrlHandler; /** * Creates a new flow handler adapter. * @see #setFlowExecutor(FlowExecutor) * @see #setFlowUrlHandler(FlowUrlHandler) * @see #afterPropertiesSet() */ public FlowHandlerAdapter() { // prevent caching of flow pages by default setCacheSeconds(0); } /** * Returns the central service for executing flows. Required. */ public FlowExecutor getFlowExecutor() { return flowExecutor; } /** * Sets the central service for executing flows. Required. * @param flowExecutor */ public void setFlowExecutor(FlowExecutor flowExecutor) { this.flowExecutor = flowExecutor; } /** * Returns the flow url handler. */ public FlowUrlHandler getFlowUrlHandler() { return flowUrlHandler; } /** * Sets the flow url handler * @param urlHandler the flow url handler */ public void setFlowUrlHandler(FlowUrlHandler urlHandler) { this.flowUrlHandler = urlHandler; } public void afterPropertiesSet() throws Exception { Assert.notNull(flowExecutor, "The FlowExecutor to execute flows is required"); if (flowUrlHandler == null) { flowUrlHandler = new DefaultFlowUrlHandler(); } } public boolean supports(Object handler) { return handler instanceof FlowHandler; } public ModelAndView handleRender(RenderRequest request, RenderResponse response, Object handler) throws Exception { FlowHandler flowHandler = (FlowHandler) handler; checkAndPrepare(request, response); populateConveniencePortletProperties(request); PortletSession session = request.getPortletSession(false); if (session != null) { FlowException e = (FlowException) session.getAttribute(ACTION_REQUEST_FLOW_EXCEPTION_ATTRIBUTE); if (e != null) { session.removeAttribute(ACTION_REQUEST_FLOW_EXCEPTION_ATTRIBUTE); return handleException(e, flowHandler, request, response); } } String flowExecutionKey = flowUrlHandler.getFlowExecutionKey(request); if (flowExecutionKey != null) { return resumeFlow(flowExecutionKey, flowHandler, request, response); } else { return startFlow(flowHandler, request, response); } } public void handleAction(ActionRequest request, ActionResponse response, Object handler) throws Exception { FlowHandler flowHandler = (FlowHandler) handler; populateConveniencePortletProperties(request); String flowExecutionKey = flowUrlHandler.getFlowExecutionKey(request); PortletExternalContext context = createPortletExternalContext(request, response); try { FlowExecutionResult result = flowExecutor.resumeExecution(flowExecutionKey, context); if (result.isPaused()) { flowUrlHandler.setFlowExecutionRenderParameter(result.getPausedKey(), response); } else if (result.isEnded()) { handleFlowExecutionOutcome(result.getOutcome(), flowHandler, request, response); } else { throw new IllegalStateException("Execution result should have been one of [paused] or [ended]"); } } catch (FlowException e) { request.getPortletSession().setAttribute(ACTION_REQUEST_FLOW_EXCEPTION_ATTRIBUTE, e); } } // subclassing hooks protected void populateConveniencePortletProperties(PortletRequest request) { request.setAttribute("portletMode", request.getPortletMode().toString()); request.setAttribute("portletWindowState", request.getWindowState().toString()); } protected PortletExternalContext createPortletExternalContext(PortletRequest request, PortletResponse response) { return new PortletExternalContext(getPortletContext(), request, response); } protected MutableAttributeMap defaultCreateFlowExecutionInputMap(PortletRequest request) { Map parameterMap = request.getParameterMap(); if (parameterMap.size() == 0) { return null; } LocalAttributeMap inputMap = new LocalAttributeMap(); Iterator it = parameterMap.entrySet().iterator(); while (it.hasNext()) { Map.Entry entry = (Map.Entry) it.next(); String name = (String) entry.getKey(); String[] values = (String[]) entry.getValue(); if (values.length == 1) { inputMap.put(name, values[0]); } else { inputMap.put(name, values); } } return inputMap; } protected void defaultHandleExecutionOutcome(FlowExecutionOutcome outcome, FlowHandler flowHandler, ActionRequest request, ActionResponse response) throws PortletModeException { } protected ModelAndView defaultHandleException(FlowHandler flowHandler, FlowException e, RenderRequest request, RenderResponse response) { if (e instanceof NoSuchFlowExecutionException) { if (logger.isDebugEnabled()) { logger.debug("Restarting a new execution of previously ended flow '" + flowHandler.getFlowId() + "'"); } // by default, attempt to restart the flow startFlow(flowHandler, null, request, response); return null; } else { throw e; } } // helpers private ModelAndView handleException(FlowException e, FlowHandler flowHandler, RenderRequest request, RenderResponse response) { String viewName = flowHandler.handleException(e, request, response); if (viewName != null) { return new ModelAndView(viewName); } else { return defaultHandleException(flowHandler, e, request, response); } } private void handleFlowExecutionOutcome(FlowExecutionOutcome outcome, FlowHandler flowHandler, ActionRequest request, ActionResponse response) throws PortletModeException { boolean handled = flowHandler.handleExecutionOutcome(outcome, request, response); if (!handled) { defaultHandleExecutionOutcome(outcome, flowHandler, request, response); } } private ModelAndView startFlow(FlowHandler flowHandler, RenderRequest request, RenderResponse response) { MutableAttributeMap input = flowHandler.createExecutionInputMap(request); if (input == null) { input = defaultCreateFlowExecutionInputMap(request); } return startFlow(flowHandler, input, request, response); } private ModelAndView startFlow(FlowHandler flowHandler, MutableAttributeMap input, RenderRequest request, RenderResponse response) { PortletExternalContext context = createPortletExternalContext(request, response); try { FlowExecutionResult result = flowExecutor.launchExecution(flowHandler.getFlowId(), input, context); if (result.isPaused()) { flowUrlHandler.setFlowExecutionInSession(result.getPausedKey(), request); } return null; } catch (FlowException e) { return handleException(e, flowHandler, request, response); } } private ModelAndView resumeFlow(String flowExecutionKey, FlowHandler flowHandler, RenderRequest request, RenderResponse response) throws IOException { PortletExternalContext context = createPortletExternalContext(request, response); try { flowExecutor.resumeExecution(flowExecutionKey, context); return null; } catch (FlowException e) { return handleException(e, flowHandler, request, response); } } }././@LongLink0000000000000000000000000000022700000000000011566 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframework/webflow/mvc/portlet/PortletMvcViewFactory.javalibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframew0000644000000000000000000000441111360615640027750 0ustar /* * Copyright 2004-2008 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.springframework.webflow.mvc.portlet; import org.springframework.binding.convert.ConversionService; import org.springframework.binding.expression.Expression; import org.springframework.binding.expression.ExpressionParser; import org.springframework.validation.MessageCodesResolver; import org.springframework.web.servlet.View; import org.springframework.webflow.engine.builder.BinderConfiguration; import org.springframework.webflow.execution.RequestContext; import org.springframework.webflow.mvc.view.AbstractMvcView; import org.springframework.webflow.mvc.view.AbstractMvcViewFactory; import org.springframework.webflow.mvc.view.FlowViewResolver; /** * Creates Portlet MVC views. * * @author Keith Donald * @author Scott Andrews */ public class PortletMvcViewFactory extends AbstractMvcViewFactory { /** * Creates a new portlet-based MVC view factory. * @param viewId the id of the view as an expression * @param viewResolver the resolver to resolve the View implementation * @param expressionParser the expression parser * @param conversionService the conversion service * @param binderConfiguration the model binding configuration * @param messageCodesResolver */ public PortletMvcViewFactory(Expression viewId, FlowViewResolver viewResolver, ExpressionParser expressionParser, ConversionService conversionService, BinderConfiguration binderConfiguration, MessageCodesResolver messageCodesResolver) { super(viewId, viewResolver, expressionParser, conversionService, binderConfiguration, messageCodesResolver); } protected AbstractMvcView createMvcView(View view, RequestContext context) { return new PortletMvcView(view, context); } }././@LongLink0000000000000000000000000000021100000000000011557 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframework/webflow/mvc/portlet/package.htmllibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframew0000644000000000000000000000020611360615632027747 0ustar

The integration between Web Flow and Spring Portlet MVC, Spring's portlet application platform.

././@LongLink0000000000000000000000000000022000000000000011557 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframework/webflow/mvc/portlet/PortletMvcView.javalibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframew0000644000000000000000000000531011360615632027750 0ustar /* * Copyright 2004-2008 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.springframework.webflow.mvc.portlet; import java.util.Map; import javax.portlet.PortletContext; import javax.portlet.RenderRequest; import javax.portlet.RenderResponse; import org.springframework.web.portlet.DispatcherPortlet; import org.springframework.web.servlet.View; import org.springframework.web.servlet.ViewRendererServlet; import org.springframework.webflow.context.ExternalContext; import org.springframework.webflow.execution.RequestContext; import org.springframework.webflow.mvc.view.AbstractMvcView; /** * The Spring Web Portlet MVC view implementation. * * @author Keith Donald * @author Scott Andrews */ public class PortletMvcView extends AbstractMvcView { /** * Creates a new Portlet MVC view. * @param view the view to render * @param context the current flow request context */ public PortletMvcView(org.springframework.web.servlet.View view, RequestContext context) { super(view, context); } protected void doRender(Map model) throws Exception { RequestContext context = getRequestContext(); ExternalContext externalContext = context.getExternalContext(); View view = getView(); PortletContext portletContext = (PortletContext) externalContext.getNativeContext(); RenderRequest request = (RenderRequest) externalContext.getNativeRequest(); RenderResponse response = (RenderResponse) externalContext.getNativeResponse(); if (response.getContentType() == null) { // No Portlet content type specified yet -> use the view-determined type. // (The Portlet spec requires the content type to be set on the RenderResponse) String contentType = view.getContentType(); if (contentType != null) { response.setContentType(contentType); } } request.setAttribute(ViewRendererServlet.VIEW_ATTRIBUTE, view); request.setAttribute(ViewRendererServlet.MODEL_ATTRIBUTE, model); request.setAttribute(org.springframework.web.servlet.support.RequestContext.WEB_APPLICATION_CONTEXT_ATTRIBUTE, context.getActiveFlow().getApplicationContext()); portletContext.getRequestDispatcher(DispatcherPortlet.DEFAULT_VIEW_RENDERER_URL).include(request, response); } }././@LongLink0000000000000000000000000000017500000000000011570 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframework/webflow/mvc/builder/libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframew0000755000000000000000000000000011360615644027752 5ustar ././@LongLink0000000000000000000000000000023400000000000011564 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframework/webflow/mvc/builder/DelegatingFlowViewResolver.javalibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframew0000644000000000000000000000414611360615642027757 0ustar /* * Copyright 2004-2008 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.springframework.webflow.mvc.builder; import java.util.Collections; import java.util.Iterator; import java.util.List; import org.springframework.web.servlet.View; import org.springframework.web.servlet.ViewResolver; import org.springframework.webflow.execution.RequestContext; import org.springframework.webflow.mvc.view.FlowViewResolver; /** * Delegates to a configured view resolver chain to resolve the Spring MVC view implementation to render. * * @see ViewResolver * * @author Keith Donald */ public class DelegatingFlowViewResolver implements FlowViewResolver { private List viewResolvers; /** * Creates a new flow view resolver. * @param viewResolvers the Spring MVC view resolver chain to delegate to */ public DelegatingFlowViewResolver(List viewResolvers) { this.viewResolvers = viewResolvers != null ? viewResolvers : Collections.EMPTY_LIST; } public View resolveView(String viewId, RequestContext context) { for (Iterator it = viewResolvers.iterator(); it.hasNext();) { ViewResolver viewResolver = (ViewResolver) it.next(); try { View view = viewResolver.resolveViewName(viewId, context.getExternalContext().getLocale()); if (view != null) { return view; } } catch (Exception e) { IllegalStateException ise = new IllegalStateException("Exception resolving view with name '" + viewId + "'"); ise.initCause(e); throw ise; } } return null; } public String getViewIdByConvention(String viewStateId) { return viewStateId; } }././@LongLink0000000000000000000000000000022000000000000011557 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframework/webflow/mvc/builder/MvcEnvironment.javalibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframew0000644000000000000000000000443711360615644027764 0ustar /* * Copyright 2004-2008 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.springframework.webflow.mvc.builder; import org.springframework.context.ApplicationContext; import org.springframework.core.enums.StaticLabeledEnum; import org.springframework.util.ClassUtils; import org.springframework.web.context.WebApplicationContext; import org.springframework.web.portlet.context.ConfigurablePortletApplicationContext; /** * Supported Spring Web MVC environments. * * @author Keith Donald */ public class MvcEnvironment extends StaticLabeledEnum { /** * Spring Web Servlet MVC. */ public static final MvcEnvironment SERVLET = new MvcEnvironment(0, "servlet"); /** * Spring Web Portlet MVC. */ public static final MvcEnvironment PORTLET = new MvcEnvironment(1, "portlet"); private MvcEnvironment(int code, String label) { super(code, label); } /** * Calculates the web environment from the state of the provided application context. * @param applicationContext the application context * @return the web environment the context is running in, or null if not running in a web environment */ public static MvcEnvironment environmentFor(ApplicationContext applicationContext) { if (ClassUtils.isPresent("javax.portlet.PortletContext") && isPortletApplicationContext(applicationContext)) { return MvcEnvironment.PORTLET; } else if (applicationContext instanceof WebApplicationContext) { return MvcEnvironment.SERVLET; } else { return null; } } private static boolean isPortletApplicationContext(ApplicationContext applicationContext) { return ClassUtils.isPresent("org.springframework.web.portlet.context.ConfigurablePortletApplicationContext") && applicationContext instanceof ConfigurablePortletApplicationContext; } } ././@LongLink0000000000000000000000000000022700000000000011566 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframework/webflow/mvc/builder/MvcViewFactoryCreator.javalibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframew0000644000000000000000000002153211360615642027755 0ustar /* * Copyright 2004-2008 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.springframework.webflow.mvc.builder; import java.util.List; import org.springframework.beans.BeanWrapper; import org.springframework.binding.convert.ConversionService; import org.springframework.binding.expression.Expression; import org.springframework.binding.expression.ExpressionParser; import org.springframework.binding.expression.beanwrapper.BeanWrapperExpressionParser; import org.springframework.context.ApplicationContext; import org.springframework.context.ApplicationContextAware; import org.springframework.util.StringUtils; import org.springframework.validation.DefaultMessageCodesResolver; import org.springframework.validation.MessageCodesResolver; import org.springframework.web.servlet.View; import org.springframework.web.servlet.ViewResolver; import org.springframework.webflow.engine.builder.BinderConfiguration; import org.springframework.webflow.engine.builder.ViewFactoryCreator; import org.springframework.webflow.execution.ViewFactory; import org.springframework.webflow.mvc.portlet.PortletMvcViewFactory; import org.springframework.webflow.mvc.servlet.ServletMvcViewFactory; import org.springframework.webflow.mvc.view.AbstractMvcViewFactory; import org.springframework.webflow.mvc.view.FlowViewResolver; import org.springframework.webflow.validation.WebFlowMessageCodesResolver; /** * Returns {@link ViewFactory view factories} that create native Spring MVC-based views. Used by a FlowBuilder to * configure a flow's view states with Spring MVC-based view factories. *

* This implementation detects whether it is running in a Servlet or Portlet MVC environment, and returns instances of * the default view factory implementation for that environment. *

* By default, this implementation creates view factories that resolve their views by loading flow-relative resources, * such as .jsp templates located in a flow working directory. This class also supports rendering views resolved by * pre-existing Spring MVC {@link ViewResolver view resolvers}. * * @see ServletMvcViewFactory * @see PortletMvcViewFactory * @see FlowResourceFlowViewResolver * @see DelegatingFlowViewResolver * * @author Keith Donald * @author Scott Andrews */ public class MvcViewFactoryCreator implements ViewFactoryCreator, ApplicationContextAware { private MvcEnvironment environment; private FlowViewResolver flowViewResolver = new FlowResourceFlowViewResolver(); private boolean useSpringBeanBinding; private String eventIdParameterName; private String fieldMarkerPrefix; private MessageCodesResolver messageCodesResolver = new WebFlowMessageCodesResolver(); /** * Create a new Spring MVC View Factory Creator. * @see #setDefaultViewSuffix(String) * @see #setEventIdParameterName(String) * @see #setFieldMarkerPrefix(String) * @see #setUseSpringBeanBinding(boolean) * @see #setFlowViewResolver(FlowViewResolver) * @see #setViewResolvers(List) * @see #setMessageCodesResolver(MessageCodesResolver) */ public MvcViewFactoryCreator() { } /** * Configure an {@link FlowResourceFlowViewResolver} capable of resolving view resources by applying the specified * default resource suffix. Default is .jsp. * @param defaultViewSuffix the default view suffix */ public void setDefaultViewSuffix(String defaultViewSuffix) { FlowResourceFlowViewResolver internalResourceResolver = new FlowResourceFlowViewResolver(); internalResourceResolver.setDefaultViewSuffix(defaultViewSuffix); this.flowViewResolver = internalResourceResolver; } /** * Sets the name of the request parameter to use to lookup user events signaled by views created in this factory. If * not specified, the default is _eventId * @param eventIdParameterName the event id parameter name */ public void setEventIdParameterName(String eventIdParameterName) { this.eventIdParameterName = eventIdParameterName; } /** * Specify a prefix that can be used for parameters that mark potentially empty fields, having "prefix + field" as * name. Such a marker parameter is checked by existence: You can send any value for it, for example "visible". This * is particularly useful for HTML checkboxes and select options. *

* Default is "_", for "_FIELD" parameters (e.g. "_subscribeToNewsletter"). Set this to null if you want to turn off * the empty field check completely. *

* HTML checkboxes only send a value when they're checked, so it is not possible to detect that a formerly checked * box has just been unchecked, at least not with standard HTML means. *

* This auto-reset mechanism addresses this deficiency, provided that a marker parameter is sent for each checkbox * field, like "_subscribeToNewsletter" for a "subscribeToNewsletter" field. As the marker parameter is sent in any * case, the data binder can detect an empty field and automatically reset its value. */ public void setFieldMarkerPrefix(String fieldMarkerPrefix) { this.fieldMarkerPrefix = fieldMarkerPrefix; } /** * Sets whether to use data binding with Spring's {@link BeanWrapper} should be enabled. Set to 'true' to enable. * 'false', disabled, is the default. With this enabled, the same binding system used by Spring MVC 2.x is also used * in a Web Flow environment. * @param useSpringBeanBinding the Spring bean binding flag */ public void setUseSpringBeanBinding(boolean useSpringBeanBinding) { this.useSpringBeanBinding = useSpringBeanBinding; } /** * Set to fully customize how the flow system resolves Spring MVC {@link View} objects. * @param flowViewResolver the flow view resolver */ public void setFlowViewResolver(FlowViewResolver flowViewResolver) { this.flowViewResolver = flowViewResolver; } /** * Sets the chain of Spring MVC {@link ViewResolver view resolvers} to delegate to resolve views selected by flows. * Allows for reuse of existing View Resolvers configured in a Spring application context. If multiple resolvers are * to be used, the resolvers should be ordered in the manner they should be applied. * @param viewResolvers the view resolver list */ public void setViewResolvers(List viewResolvers) { this.flowViewResolver = new DelegatingFlowViewResolver(viewResolvers); } /** * Sets the message codes resolver strategy to use to resolve bind and validation error message codes. If not set, * {@link WebFlowMessageCodesResolver} is the default. Plug in a {@link DefaultMessageCodesResolver} to resolve * message codes consistently between Spring MVC Controllers and Web Flow. * @param messageCodesResolver the message codes resolver */ public void setMessageCodesResolver(MessageCodesResolver messageCodesResolver) { this.messageCodesResolver = messageCodesResolver; } // implementing ApplicationContextAware public void setApplicationContext(ApplicationContext applicationContext) { environment = MvcEnvironment.environmentFor(applicationContext); } public ViewFactory createViewFactory(Expression viewId, ExpressionParser expressionParser, ConversionService conversionService, BinderConfiguration binderConfiguration) { if (useSpringBeanBinding) { expressionParser = new BeanWrapperExpressionParser(conversionService); } AbstractMvcViewFactory viewFactory = createMvcViewFactory(viewId, expressionParser, conversionService, binderConfiguration); if (StringUtils.hasText(eventIdParameterName)) { viewFactory.setEventIdParameterName(eventIdParameterName); } if (StringUtils.hasText(fieldMarkerPrefix)) { viewFactory.setFieldMarkerPrefix(fieldMarkerPrefix); } return viewFactory; } private AbstractMvcViewFactory createMvcViewFactory(Expression viewId, ExpressionParser expressionParser, ConversionService conversionService, BinderConfiguration binderConfiguration) { if (environment == MvcEnvironment.SERVLET) { return new ServletMvcViewFactory(viewId, flowViewResolver, expressionParser, conversionService, binderConfiguration, messageCodesResolver); } else if (environment == MvcEnvironment.PORTLET) { return new PortletMvcViewFactory(viewId, flowViewResolver, expressionParser, conversionService, binderConfiguration, messageCodesResolver); } else { throw new IllegalStateException("Web MVC Environment " + environment + " not supported "); } } public String getViewIdByConvention(String viewStateId) { return flowViewResolver.getViewIdByConvention(viewStateId); } }././@LongLink0000000000000000000000000000021100000000000011557 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframework/webflow/mvc/builder/package.htmllibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframew0000644000000000000000000000020111360615632027742 0ustar

Support for configuring Spring MVC-based ViewFactory implementations when building a Flow.

././@LongLink0000000000000000000000000000023600000000000011566 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframework/webflow/mvc/builder/FlowResourceFlowViewResolver.javalibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframew0000644000000000000000000000715311360615632027757 0ustar /* * Copyright 2004-2008 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.springframework.webflow.mvc.builder; import org.springframework.context.ApplicationContext; import org.springframework.core.io.ContextResource; import org.springframework.core.io.Resource; import org.springframework.util.ClassUtils; import org.springframework.web.servlet.View; import org.springframework.web.servlet.view.InternalResourceView; import org.springframework.web.servlet.view.JstlView; import org.springframework.webflow.execution.RequestContext; import org.springframework.webflow.mvc.view.FlowViewResolver; /** * Creates Spring-MVC Internal Resource view to render a flow-relative view resource such as a JSP template. * * @see JstlView * @see InternalResourceView * * @author Keith Donald */ public class FlowResourceFlowViewResolver implements FlowViewResolver { private static final boolean JSTL_PRESENT = ClassUtils.isPresent("javax.servlet.jsp.jstl.fmt.LocalizationContext"); private String defaultViewSuffix = ".jsp"; /** * Returns the default view suffix when selecting views by convention. Default is .jsp. * @return the default view suffix */ public String getDefaultViewSuffix() { return defaultViewSuffix; } /** * Sets the default suffix for view templates when selecting views by convention. Default is .jsp. Respected when a * {@link FlowResourceFlowViewResolver} is configured. * @param defaultViewSuffix the default view suffix */ public void setDefaultViewSuffix(String defaultViewSuffix) { this.defaultViewSuffix = defaultViewSuffix; } public View resolveView(String viewId, RequestContext context) { if (viewId.startsWith("/")) { return getViewInternal(viewId, context, context.getActiveFlow().getApplicationContext()); } else { ApplicationContext flowContext = context.getActiveFlow().getApplicationContext(); if (flowContext == null) { throw new IllegalStateException("A Flow ApplicationContext is required to resolve Flow View Resources"); } Resource viewResource = flowContext.getResource(viewId); if (!(viewResource instanceof ContextResource)) { throw new IllegalStateException( "A ContextResource is required to get relative view paths within this context"); } return getViewInternal(((ContextResource) viewResource).getPathWithinContext(), context, flowContext); } } public String getViewIdByConvention(String viewStateId) { return viewStateId + defaultViewSuffix; } // internal helpers private View getViewInternal(String viewPath, RequestContext context, ApplicationContext flowContext) { if (viewPath.endsWith(".jsp") || viewPath.endsWith(".jspx")) { if (JSTL_PRESENT) { JstlView view = new JstlView(viewPath); view.setApplicationContext(flowContext); return view; } else { InternalResourceView view = new InternalResourceView(viewPath); view.setApplicationContext(flowContext); return view; } } else { throw new IllegalArgumentException("Unsupported view type " + viewPath + " only types supported by this FlowViewResolver implementation are [.jsp] and [.jspx]"); } } }././@LongLink0000000000000000000000000000017500000000000011570 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframework/webflow/mvc/servlet/libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframew0000755000000000000000000000000011360615646027754 5ustar ././@LongLink0000000000000000000000000000022400000000000011563 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframework/webflow/mvc/servlet/MvcExternalContext.javalibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframew0000644000000000000000000000241411360615634027754 0ustar package org.springframework.webflow.mvc.servlet; import java.util.Locale; import javax.servlet.ServletContext; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.springframework.web.servlet.support.RequestContextUtils; import org.springframework.webflow.context.servlet.FlowUrlHandler; import org.springframework.webflow.context.servlet.ServletExternalContext; /** * Spring MVC external context implementation. Is a {@link ServletExternalContext}, but overrides operations to plug in * specific functionality available in a Spring MVC Environment. * * @author Keith Donald */ public class MvcExternalContext extends ServletExternalContext { /** * Create a new external context wrapping given servlet HTTP request and response and given servlet context. * @param context the servlet context * @param request the http servlet request * @param response the http servlet response * @param flowUrlHandler the flow url handler */ public MvcExternalContext(ServletContext context, HttpServletRequest request, HttpServletResponse response, FlowUrlHandler flowUrlHandler) { super(context, request, response, flowUrlHandler); } public Locale getLocale() { return RequestContextUtils.getLocale(getRequest()); } } ././@LongLink0000000000000000000000000000022000000000000011557 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframework/webflow/mvc/servlet/ServletMvcView.javalibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframew0000644000000000000000000000361611360615636027763 0ustar /* * Copyright 2004-2008 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.springframework.webflow.mvc.servlet; import java.util.Map; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.springframework.webflow.context.ExternalContext; import org.springframework.webflow.execution.RequestContext; import org.springframework.webflow.mvc.view.AbstractMvcView; /** * The Spring Web Servlet MVC view implementation. * * @author Keith Donald */ public class ServletMvcView extends AbstractMvcView { /** * Creates a new Servlet MVC view. * @param view the view to render * @param context the current flow request context. */ public ServletMvcView(org.springframework.web.servlet.View view, RequestContext context) { super(view, context); } protected void doRender(Map model) throws Exception { RequestContext context = getRequestContext(); ExternalContext externalContext = context.getExternalContext(); HttpServletRequest request = (HttpServletRequest) externalContext.getNativeRequest(); HttpServletResponse response = (HttpServletResponse) externalContext.getNativeResponse(); request.setAttribute(org.springframework.web.servlet.support.RequestContext.WEB_APPLICATION_CONTEXT_ATTRIBUTE, context.getActiveFlow().getApplicationContext()); getView().render(model, request, response); } }././@LongLink0000000000000000000000000000021500000000000011563 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframework/webflow/mvc/servlet/FlowHandler.javalibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframew0000644000000000000000000001024511360615644027756 0ustar /* * Copyright 2004-2008 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.springframework.webflow.mvc.servlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.springframework.webflow.core.FlowException; import org.springframework.webflow.core.collection.MutableAttributeMap; import org.springframework.webflow.execution.FlowExecutionOutcome; /** * A controller helper used for customizing access to a single flow definition in a Servlet enviroment. This * helper is used to: *
    *
  1. Launch executions of that flow with data in the execution input map *
  2. Handle outcomes reached by that flow in a custom manner *
  3. Handle unhandled exceptions dealing with that flow in a custom manner. *
* Such a handler can be visually thought of as a "flow reference" on a Garrett IA diagram. It holds a reference to the * flow id to launch, how to provision its input, how to process its outcomes, and how to handle uncaught exceptions. * * @author Keith Donald */ public interface FlowHandler { /** * Returns the id of the flow handled by this handler. Used by a Controller to load the flow definition. Optional. * @return the flow id, or null if the flow id should be determined by the caller */ public String getFlowId(); /** * Creates the flow execution input map to pass to a new instance of the flow being started. Used by a Controller to * launch the flow execution with the correct input. * @param request the current request * @return the input map, or null if the contents of the input map should be determined by the caller */ public MutableAttributeMap createExecutionInputMap(HttpServletRequest request); /** * Handles a specific flow execution outcome. Used by a Controller to get the location of the resource to redirect * to after the outcome is handled. *

* The following prefixes are supported for qualifying the returned location string: *

    *
  • servletRelative: - the location is relative to the current servlet
  • *
  • contextRelative: - the location is relative to the current web application
  • *
  • serverRelative: - the location is relative to the server root
  • *
* If the returned location is a path with no prefix, for example "/hotels/index", it is treated as relative to the * current servlet by default. Fully qualified URLs beginning with http:// or https:// may also be returned. *

* For servlet-relative, context-relative, and server-relative URLs, a leading slash is optional. * * @param outcome the outcome that was reached * @param request the current request * @param response the current response * @return the location of the new resource to redirect to, or null if the execution outcome was not handled and * should be handled by the caller */ public String handleExecutionOutcome(FlowExecutionOutcome outcome, HttpServletRequest request, HttpServletResponse response); /** * Handles a flow exception that was not handled by the Web Flow system. Used by a Controller to handle a specific * type of exception dealing with this flow in a custom manner. * @param e the unhandled exception originating from Spring Web Flow. May be thrown by the flow execution itself or * the flow executor system if no execution could be restored. * @param request the current request * @param response the current response * @return the location of the error resource to redirect to, or null if the execution outcome was not handled and * should be handled by the caller */ public String handleException(FlowException e, HttpServletRequest request, HttpServletResponse response); } ././@LongLink0000000000000000000000000000022400000000000011563 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframework/webflow/mvc/servlet/FlowHandlerMapping.javalibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframew0000644000000000000000000001207111360615646027757 0ustar /* * Copyright 2004-2008 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.springframework.webflow.mvc.servlet; import javax.servlet.ServletContext; import javax.servlet.http.HttpServletRequest; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.springframework.util.Assert; import org.springframework.web.servlet.handler.AbstractHandlerMapping; import org.springframework.webflow.context.servlet.DefaultFlowUrlHandler; import org.springframework.webflow.context.servlet.FlowUrlHandler; import org.springframework.webflow.definition.FlowDefinition; import org.springframework.webflow.definition.registry.FlowDefinitionRegistry; /** * Implementation of {@link org.springframework.web.servlet.HandlerMapping} that follows a simple convention for * creating URL path mappings from the ids of registered {@link FlowDefinition flow definitions}. * * This implementation returns a FlowHandler that invokes a flow if the current request path matches the id of a flow in * the configured {@link FlowDefinitionRegistry}. Alternatively, a custom {@link FlowHandler} may also be registered * with in containing ApplicationContext with that id and it will be returned. This allows for more control over the * invocation of a flow from Spring MVC environment. * * Null is returned in the case of no flow id match, allowing the next handler mapping in the chain to execute. * * @author Keith Donald */ public class FlowHandlerMapping extends AbstractHandlerMapping { private static final Log logger = LogFactory.getLog(FlowHandlerMapping.class); private FlowDefinitionRegistry flowRegistry; private FlowUrlHandler flowUrlHandler; /** * Returns the registry of flows to query when this mapping is tested. * @return the flow definition registry */ public FlowDefinitionRegistry getFlowRegistry() { return flowRegistry; } /** * Sets the registry of flows to query when this mapping is tested. Optional. If not set, this handler mapping will * look in the containing application context for a bean with id flowRegistry. * @param flowRegistry the flow definition registry */ public void setFlowRegistry(FlowDefinitionRegistry flowRegistry) { this.flowRegistry = flowRegistry; } /** * Returns the configured flow url handler. */ public FlowUrlHandler getFlowUrlHandler() { return flowUrlHandler; } /** * Sets the flow URL handler, which allows customization for how the flow id is determined for each request tested * by this mapping. Defaults to a {@link DefaultFlowUrlHandler}. * @param flowUrlHandler the flow URL handler */ public void setFlowUrlHandler(FlowUrlHandler flowUrlHandler) { this.flowUrlHandler = flowUrlHandler; } protected void initServletContext(ServletContext servletContext) { Assert.notNull(flowRegistry, "The FlowRegistry to query when mapping requests is required"); if (flowUrlHandler == null) { flowUrlHandler = new DefaultFlowUrlHandler(); } } protected Object getHandlerInternal(HttpServletRequest request) throws Exception { String flowId = flowUrlHandler.getFlowId(request); if (flowId == null) { return null; } if (getApplicationContext().containsBean(flowId)) { Object handler = getApplicationContext().getBean(flowId); if (handler instanceof FlowHandler) { if (logger.isDebugEnabled()) { logger.debug("Mapping request with URI '" + request.getRequestURI() + "' to flow with id '" + flowId + "'; custom FlowHandler " + handler + " will manage flow execution"); } return handler; } } if (flowRegistry.containsFlowDefinition(flowId)) { if (logger.isDebugEnabled()) { logger.debug("Mapping request with URI '" + request.getRequestURI() + "' to flow with id '" + flowId + "'"); } return createDefaultFlowHandler(flowId); } if (logger.isDebugEnabled()) { logger.debug("No flow mapping found for request with URI '" + request.getRequestURI() + "'"); } return null; } /** * Factory method that returns the default flow handler for the flow with the given id. Subclasses may override to * return their own custom default FlowHandler. * @param flowId the id of the flow to handle invocation of * @return the default flow handler */ protected FlowHandler createDefaultFlowHandler(String flowId) { return new DefaultFlowHandler(flowId); } private static class DefaultFlowHandler extends AbstractFlowHandler { private String flowId; public DefaultFlowHandler(String flowId) { this.flowId = flowId; } public String getFlowId() { return flowId; } } }././@LongLink0000000000000000000000000000022500000000000011564 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframework/webflow/mvc/servlet/AbstractFlowHandler.javalibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframew0000644000000000000000000000334611360615636027763 0ustar /* * Copyright 2004-2008 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.springframework.webflow.mvc.servlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.springframework.core.style.ToStringCreator; import org.springframework.webflow.core.FlowException; import org.springframework.webflow.core.collection.MutableAttributeMap; import org.springframework.webflow.execution.FlowExecutionOutcome; /** * Trivial flow handler base class that simply returns null for all operations. Subclasses should extend and override * which operations they need. * * @author Keith Donald */ public class AbstractFlowHandler implements FlowHandler { public String getFlowId() { return null; } public MutableAttributeMap createExecutionInputMap(HttpServletRequest request) { return null; } public String handleExecutionOutcome(FlowExecutionOutcome outcome, HttpServletRequest request, HttpServletResponse response) { return null; } public String handleException(FlowException e, HttpServletRequest request, HttpServletResponse response) { return null; } public String toString() { return new ToStringCreator(this).toString(); } } ././@LongLink0000000000000000000000000000022400000000000011563 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframework/webflow/mvc/servlet/FlowHandlerAdapter.javalibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframew0000644000000000000000000004270011360615636027760 0ustar /* * Copyright 2004-2008 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.springframework.webflow.mvc.servlet; import java.io.IOException; import java.util.Iterator; import java.util.Map; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.springframework.beans.factory.InitializingBean; import org.springframework.js.ajax.AjaxHandler; import org.springframework.js.ajax.SpringJavascriptAjaxHandler; import org.springframework.util.Assert; import org.springframework.web.servlet.HandlerAdapter; import org.springframework.web.servlet.ModelAndView; import org.springframework.web.servlet.support.WebContentGenerator; import org.springframework.webflow.context.servlet.DefaultFlowUrlHandler; import org.springframework.webflow.context.servlet.FlowUrlHandler; import org.springframework.webflow.context.servlet.ServletExternalContext; import org.springframework.webflow.core.FlowException; import org.springframework.webflow.core.collection.LocalAttributeMap; import org.springframework.webflow.core.collection.MutableAttributeMap; import org.springframework.webflow.execution.FlowExecutionOutcome; import org.springframework.webflow.execution.repository.NoSuchFlowExecutionException; import org.springframework.webflow.executor.FlowExecutionResult; import org.springframework.webflow.executor.FlowExecutor; /** * A custom MVC HandlerAdapter that encapsulates the generic workflow associated with executing flows in a Servlet * environment. Delegates to mapped {@link FlowHandler flow handlers} to manage the interaction with executions of * specific flow definitions. * * @author Keith Donald */ public class FlowHandlerAdapter extends WebContentGenerator implements HandlerAdapter, InitializingBean { private static final Log logger = LogFactory.getLog(FlowHandlerAdapter.class); private static final String REFERER_FLOW_EXECUTION_ATTRIBUTE = "refererExecution"; private static final String SERVLET_RELATIVE_LOCATION_PREFIX = "servletRelative:"; private static final String CONTEXT_RELATIVE_LOCATION_PREFIX = "contextRelative:"; private static final String SERVER_RELATIVE_LOCATION_PREFIX = "serverRelative:"; /** * The entry point into Spring Web Flow. */ private FlowExecutor flowExecutor; /** * A strategy for extracting flow arguments and generating flow urls. */ private FlowUrlHandler flowUrlHandler; /** * The representation of an Ajax client service capable of interacting with web flow. */ private AjaxHandler ajaxHandler; private boolean redirectHttp10Compatible = true; /** * Creates a new flow handler adapter. * @see #setFlowExecutor(FlowExecutor) * @see #setFlowUrlHandler(FlowUrlHandler) * @see #setAjaxHandler(AjaxHandler) * @see #afterPropertiesSet() */ public FlowHandlerAdapter() { // prevent caching of flow pages by default setCacheSeconds(0); } /** * Returns the central service for executing flows. Required. */ public FlowExecutor getFlowExecutor() { return flowExecutor; } /** * Sets the central service for executing flows. Required. * @param flowExecutor */ public void setFlowExecutor(FlowExecutor flowExecutor) { this.flowExecutor = flowExecutor; } /** * Returns the flow url handler. */ public FlowUrlHandler getFlowUrlHandler() { return flowUrlHandler; } /** * Sets the flow url handler * @param flowUrlHandler the flow url handler */ public void setFlowUrlHandler(FlowUrlHandler flowUrlHandler) { this.flowUrlHandler = flowUrlHandler; } /** * Returns the configured Ajax handler. */ public AjaxHandler getAjaxHandler() { return ajaxHandler; } /** * Sets the configured Ajax handler. * @param ajaxHandler the ajax handler */ public void setAjaxHandler(AjaxHandler ajaxHandler) { this.ajaxHandler = ajaxHandler; } /** * Whether redirect sent by this handler adapter should be compatible with HTTP 1.0 clients. * @return true if so, false otherwise */ public boolean getRedirectHttp10Compatible() { return redirectHttp10Compatible; } /** * Set whether redirects sent by this handler adapter should be compatible with HTTP 1.0 clients. *

* By default, this will enforce a redirect HTTP status code of 302 by delegating to * HttpServletResponse.sendRedirect. Setting this to false will send HTTP status code 303, which is the * correct code for HTTP 1.1 clients, but not understood by HTTP 1.0 clients. *

* Many HTTP 1.1 clients treat 302 just like 303, not making any difference. However, some clients depend on 303 * when redirecting after a POST request; turn this flag off in such a scenario. * @see javax.servlet.http.HttpServletResponse#sendRedirect */ public void setRedirectHttp10Compatible(boolean redirectHttp10Compatible) { this.redirectHttp10Compatible = redirectHttp10Compatible; } public void afterPropertiesSet() throws Exception { Assert.notNull(flowExecutor, "The FlowExecutor to execute flows is required"); if (flowUrlHandler == null) { flowUrlHandler = new DefaultFlowUrlHandler(); } if (ajaxHandler == null) { ajaxHandler = new SpringJavascriptAjaxHandler(); } } public boolean supports(Object handler) { return handler instanceof FlowHandler; } public ModelAndView handle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception { FlowHandler flowHandler = (FlowHandler) handler; checkAndPrepare(request, response, false); String flowExecutionKey = flowUrlHandler.getFlowExecutionKey(request); if (flowExecutionKey != null) { try { ServletExternalContext context = createServletExternalContext(request, response); FlowExecutionResult result = flowExecutor.resumeExecution(flowExecutionKey, context); handleFlowExecutionResult(result, context, request, response, flowHandler); } catch (FlowException e) { handleFlowException(e, request, response, flowHandler); } } else { try { String flowId = getFlowId(flowHandler, request); MutableAttributeMap input = getInputMap(flowHandler, request); ServletExternalContext context = createServletExternalContext(request, response); FlowExecutionResult result = flowExecutor.launchExecution(flowId, input, context); handleFlowExecutionResult(result, context, request, response, flowHandler); } catch (FlowException e) { handleFlowException(e, request, response, flowHandler); } } return null; } public long getLastModified(HttpServletRequest request, Object handler) { return -1; } // subclassing hooks /** * Creates the servlet external context for the current HTTP servlet request. * @param request the current request * @param response the current response */ protected ServletExternalContext createServletExternalContext(HttpServletRequest request, HttpServletResponse response) { ServletExternalContext context = new MvcExternalContext(getServletContext(), request, response, flowUrlHandler); context.setAjaxRequest(ajaxHandler.isAjaxRequest(request, response)); return context; } /** * The default algorithm to determine the id of the flow to launch from the current request. Only called if * {@link FlowHandler#getFlowId()} returns null. This implementation delegates to the configured * {@link FlowUrlHandler#getFlowId(HttpServletRequest)}. Subclasses may override. * @param request the current request */ protected String defaultGetFlowId(HttpServletRequest request) { return flowUrlHandler.getFlowId(request); } /** * The default algorithm to create the flow execution input map. Only called if * {@link FlowHandler#createExecutionInputMap(HttpServletRequest)} returns null. This implementation exposes all * current request parameters as flow execution input attributes. Subclasses may override. * @param request the current request */ protected MutableAttributeMap defaultCreateFlowExecutionInputMap(HttpServletRequest request) { Map parameterMap = request.getParameterMap(); if (parameterMap.size() == 0) { return null; } LocalAttributeMap inputMap = new LocalAttributeMap(parameterMap.size(), 1); Iterator it = parameterMap.entrySet().iterator(); while (it.hasNext()) { Map.Entry entry = (Map.Entry) it.next(); String name = (String) entry.getKey(); String[] values = (String[]) entry.getValue(); if (values.length == 1) { inputMap.put(name, values[0]); } else { inputMap.put(name, values); } } return inputMap; } /** * The default algorithm for handling a flow execution outcome. Only called if * {@link FlowHandler#handleExecutionOutcome(FlowExecutionOutcome, HttpServletRequest, HttpServletResponse)} returns * null. This implementation attempts to start a new execution of the ended flow. Any flow execution output is * passed as input to the new execution. Subclasses may override. * @param flowId the id of the ended flow * @param outcome the flow execution outcome * @param context ServletExternalContext the completed ServletExternalContext * @param request the current request * @param response the current response */ protected void defaultHandleExecutionOutcome(String flowId, FlowExecutionOutcome outcome, ServletExternalContext context, HttpServletRequest request, HttpServletResponse response) throws IOException { if (!context.isResponseComplete()) { // by default, just start the flow over passing the output as input if (logger.isDebugEnabled()) { logger.debug("Ended flow '" + flowId + "' did not commit a response; " + "attempting to start a new flow execution as a default outcome handler"); } String flowUrl = flowUrlHandler.createFlowDefinitionUrl(flowId, outcome.getOutput(), request); sendRedirect(flowUrl, request, response); } } /** * The default algorithm for handling a {@link FlowException} now handled by the Web Flow system. Only called if * {@link FlowHandler#handleException(FlowException, HttpServletRequest, HttpServletResponse)} returns null. This * implementation rethrows the exception unless it is a {@link NoSuchFlowExecutionException}. If the exception is a * NoSuchFlowExecutionException, this implementation attempts to start a new execution of the ended or expired flow. * Subclasses may override. * @param flowId the id of the ended flow * @param e the flow exception * @param request the current request * @param response the current response */ protected void defaultHandleException(String flowId, FlowException e, HttpServletRequest request, HttpServletResponse response) throws IOException { if (e instanceof NoSuchFlowExecutionException && flowId != null) { if (!response.isCommitted()) { if (logger.isDebugEnabled()) { logger.debug("Restarting a new execution of previously ended flow '" + flowId + "'"); } // by default, attempt to restart the flow String flowUrl = flowUrlHandler.createFlowDefinitionUrl(flowId, null, request); sendRedirect(flowUrl, request, response); } } else { throw e; } } /** * Sends a redirect to the requested url using {@link HttpServletResponse#sendRedirect(String)}.Called to actually * perform flow execution redirects, flow definition redirects, and external redirects. Subclasses may override to * customize general Web Flow system redirect behavior. * @param url the url to redirect to * @param request the current request * @param response the current response * @throws IOException an exception occurred */ protected void sendRedirect(String url, HttpServletRequest request, HttpServletResponse response) throws IOException { if (ajaxHandler.isAjaxRequest(request, response)) { ajaxHandler.sendAjaxRedirect(url, request, response, false); } else { if (redirectHttp10Compatible) { // Always send status code 302. response.sendRedirect(response.encodeRedirectURL(url)); } else { // Correct HTTP status code is 303, in particular for POST requests. response.setStatus(303); response.setHeader("Location", response.encodeRedirectURL(url)); } } } // internal helpers private void handleFlowExecutionResult(FlowExecutionResult result, ServletExternalContext context, HttpServletRequest request, HttpServletResponse response, FlowHandler handler) throws IOException { if (result.isPaused()) { if (context.getFlowExecutionRedirectRequested()) { sendFlowExecutionRedirect(result, context, request, response); } else if (context.getFlowDefinitionRedirectRequested()) { sendFlowDefinitionRedirect(result, context, request, response); } else if (context.getExternalRedirectRequested()) { sendExternalRedirect(context.getExternalRedirectUrl(), request, response); } } else if (result.isEnded()) { if (context.getFlowDefinitionRedirectRequested()) { sendFlowDefinitionRedirect(result, context, request, response); } else if (context.getExternalRedirectRequested()) { sendExternalRedirect(context.getExternalRedirectUrl(), request, response); } else { String location = handler.handleExecutionOutcome(result.getOutcome(), request, response); if (location != null) { sendExternalRedirect(location, request, response); } else { defaultHandleExecutionOutcome(result.getFlowId(), result.getOutcome(), context, request, response); } } } else { throw new IllegalStateException("Execution result should have been one of [paused] or [ended]"); } } private void sendFlowExecutionRedirect(FlowExecutionResult result, ServletExternalContext context, HttpServletRequest request, HttpServletResponse response) throws IOException { String url = flowUrlHandler.createFlowExecutionUrl(result.getFlowId(), result.getPausedKey(), request); if (logger.isDebugEnabled()) { logger.debug("Sending flow execution redirect to '" + url + "'"); } if (context.isAjaxRequest()) { ajaxHandler.sendAjaxRedirect(url, request, response, context.getRedirectInPopup()); } else { sendRedirect(url, request, response); } } private void sendFlowDefinitionRedirect(FlowExecutionResult result, ServletExternalContext context, HttpServletRequest request, HttpServletResponse response) throws IOException { String flowId = context.getFlowRedirectFlowId(); MutableAttributeMap input = context.getFlowRedirectFlowInput(); if (result.isPaused()) { input.put(REFERER_FLOW_EXECUTION_ATTRIBUTE, result.getPausedKey()); } String url = flowUrlHandler.createFlowDefinitionUrl(flowId, input, request); if (logger.isDebugEnabled()) { logger.debug("Sending flow definition redirect to '" + url + "'"); } sendRedirect(url, request, response); } private void sendExternalRedirect(String location, HttpServletRequest request, HttpServletResponse response) throws IOException { if (logger.isDebugEnabled()) { logger.debug("Sending external redirect to '" + location + "'"); } if (location.startsWith(SERVLET_RELATIVE_LOCATION_PREFIX)) { sendServletRelativeRedirect(location.substring(SERVLET_RELATIVE_LOCATION_PREFIX.length()), request, response); } else if (location.startsWith(CONTEXT_RELATIVE_LOCATION_PREFIX)) { StringBuffer url = new StringBuffer(request.getContextPath()); String contextRelativeUrl = location.substring(CONTEXT_RELATIVE_LOCATION_PREFIX.length()); if (!contextRelativeUrl.startsWith("/")) { url.append('/'); } url.append(contextRelativeUrl); sendRedirect(url.toString(), request, response); } else if (location.startsWith(SERVER_RELATIVE_LOCATION_PREFIX)) { String url = location.substring(SERVER_RELATIVE_LOCATION_PREFIX.length()); if (!url.startsWith("/")) { url = "/" + url; } sendRedirect(url, request, response); } else if (location.startsWith("http://") || location.startsWith("https://")) { sendRedirect(location, request, response); } else { sendServletRelativeRedirect(location, request, response); } } private void sendServletRelativeRedirect(String location, HttpServletRequest request, HttpServletResponse response) throws IOException { StringBuffer url = new StringBuffer(request.getContextPath()); url.append(request.getServletPath()); if (!location.startsWith("/")) { url.append('/'); } url.append(location); sendRedirect(url.toString(), request, response); } private void handleFlowException(FlowException e, HttpServletRequest request, HttpServletResponse response, FlowHandler handler) throws IOException { String location = handler.handleException(e, request, response); if (location != null) { sendExternalRedirect(location, request, response); } else { defaultHandleException(getFlowId(handler, request), e, request, response); } } private String getFlowId(FlowHandler handler, HttpServletRequest request) { String flowId = handler.getFlowId(); if (flowId != null) { return flowId; } else { return defaultGetFlowId(request); } } private MutableAttributeMap getInputMap(FlowHandler handler, HttpServletRequest request) { MutableAttributeMap input = handler.createExecutionInputMap(request); if (input != null) { return input; } else { return defaultCreateFlowExecutionInputMap(request); } } } ././@LongLink0000000000000000000000000000022700000000000011566 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframework/webflow/mvc/servlet/ServletMvcViewFactory.javalibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframew0000644000000000000000000000432111360615644027754 0ustar /* * Copyright 2004-2008 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.springframework.webflow.mvc.servlet; import org.springframework.binding.convert.ConversionService; import org.springframework.binding.expression.Expression; import org.springframework.binding.expression.ExpressionParser; import org.springframework.validation.MessageCodesResolver; import org.springframework.web.servlet.View; import org.springframework.webflow.engine.builder.BinderConfiguration; import org.springframework.webflow.execution.RequestContext; import org.springframework.webflow.mvc.view.AbstractMvcView; import org.springframework.webflow.mvc.view.AbstractMvcViewFactory; import org.springframework.webflow.mvc.view.FlowViewResolver; /** * Creates Servlet MVC views. * * @author Keith Donald */ public class ServletMvcViewFactory extends AbstractMvcViewFactory { /** * Creates a new servlet-based MVC view factory. * @param viewId the id of the view as an expression * @param viewResolver the resolver to resolve the View implementation * @param expressionParser the expression parser * @param conversionService the conversion service * @param binderConfiguration the model binding configuration */ public ServletMvcViewFactory(Expression viewId, FlowViewResolver viewResolver, ExpressionParser expressionParser, ConversionService conversionService, BinderConfiguration binderConfiguration, MessageCodesResolver messageCodesResolver) { super(viewId, viewResolver, expressionParser, conversionService, binderConfiguration, messageCodesResolver); } protected AbstractMvcView createMvcView(View view, RequestContext context) { return new ServletMvcView(view, context); } } ././@LongLink0000000000000000000000000000021100000000000011557 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframework/webflow/mvc/servlet/package.htmllibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframew0000644000000000000000000000017211360615632027751 0ustar

The integration between Web Flow and Spring MVC, Spring's web application platform.

././@LongLink0000000000000000000000000000022000000000000011557 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframework/webflow/mvc/servlet/FlowController.javalibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframew0000644000000000000000000001523011360615644027755 0ustar /* * Copyright 2004-2008 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.springframework.webflow.mvc.servlet; import java.util.HashMap; import java.util.Map; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.springframework.beans.BeansException; import org.springframework.beans.factory.InitializingBean; import org.springframework.context.ApplicationContext; import org.springframework.context.ApplicationContextAware; import org.springframework.js.ajax.AjaxHandler; import org.springframework.web.servlet.ModelAndView; import org.springframework.web.servlet.mvc.Controller; import org.springframework.webflow.context.servlet.FilenameFlowUrlHandler; import org.springframework.webflow.context.servlet.FlowUrlHandler; import org.springframework.webflow.executor.FlowExecutor; /** * The adapter between the Spring MVC Controller layer and the Spring Web Flow engine. This controller allows Spring Web * Flow to run embedded as a Controller within a DispatcherServlet, the key piece of the Spring Web MVC platform. It is * expected a DispatcherServlet HandlerMapping will care for mapping all requests for flows to this controller for * handling. * * @author Keith Donald */ public class FlowController implements Controller, ApplicationContextAware, InitializingBean { private FlowHandlerAdapter flowHandlerAdapter; private Map flowHandlers = new HashMap(); private boolean customFlowHandlerAdapterSet; /** * Creates a new flow controller. * @see #setFlowExecutor(FlowExecutor) * @see #setFlowUrlHandler(FlowUrlHandler) * @see #setAjaxHandler(AjaxHandler) * @see #setFlowHandlerAdapter(FlowHandlerAdapter) * @see #afterPropertiesSet() */ public FlowController() { flowHandlerAdapter = new FlowHandlerAdapter(); flowHandlerAdapter.setFlowUrlHandler(new FilenameFlowUrlHandler()); } /** * Returns the central service for executing flows. Required. */ public FlowExecutor getFlowExecutor() { return flowHandlerAdapter.getFlowExecutor(); } /** * Sets the central service for executing flows. Required. * @param flowExecutor */ public void setFlowExecutor(FlowExecutor flowExecutor) { flowHandlerAdapter.setFlowExecutor(flowExecutor); } /** * Returns the configured flow url handler. */ public FlowUrlHandler getFlowUrlHandler() { return flowHandlerAdapter.getFlowUrlHandler(); } /** * Sets the configured flow url handler. * @param urlHandler the flow url handler. */ public void setFlowUrlHandler(FlowUrlHandler urlHandler) { flowHandlerAdapter.setFlowUrlHandler(urlHandler); } /** * Returns the configured Ajax handler. */ public AjaxHandler getAjaxHandler() { return flowHandlerAdapter.getAjaxHandler(); } /** * Sets the configured Ajax handler. * @param ajaxHandler the ajax handler */ public void setAjaxHandler(AjaxHandler ajaxHandler) { flowHandlerAdapter.setAjaxHandler(ajaxHandler); } /** * Set whether redirects sent by this controller should be compatible with HTTP 1.0 clients. *

* By default, this will enforce a redirect HTTP status code of 302 by delegating to * HttpServletResponse.sendRedirect. Setting this to false will send HTTP status code 303, which is the * correct code for HTTP 1.1 clients, but not understood by HTTP 1.0 clients. *

* Many HTTP 1.1 clients treat 302 just like 303, not making any difference. However, some clients depend on 303 * when redirecting after a POST request; turn this flag off in such a scenario. * @see javax.servlet.http.HttpServletResponse#sendRedirect */ public void setRedirectHttp10Compatible(boolean redirectHttp10Compatible) { flowHandlerAdapter.setRedirectHttp10Compatible(redirectHttp10Compatible); } /** * Sets the custom flow handles for managing the access to flows in a custom manner. * @param flowHandlers the flow handler map */ public void setFlowHandlers(Map flowHandlers) { this.flowHandlers = flowHandlers; } /** * Registers a flow handler this controller should delegate to to customize the control logic associated with * managing the execution of a specific flow. * @param flowHandler the handler */ public void registerFlowHandler(FlowHandler flowHandler) { flowHandlers.put(flowHandler.getFlowId(), flowHandler); } /** * Returns the flow handler adapter which this Controller uses internally to carry out handler workflow. */ public FlowHandlerAdapter getFlowHandlerAdapter() { return flowHandlerAdapter; } /** * Sets the flow handler adapter which this Controller uses internally to carry out handler workflow. Call this * instead of the convenience accesors to completely customize flow controller workflow. * @param flowHandlerAdapter the flow handler adapter */ public void setFlowHandlerAdapter(FlowHandlerAdapter flowHandlerAdapter) { this.flowHandlerAdapter = flowHandlerAdapter; customFlowHandlerAdapterSet = true; } public void setApplicationContext(ApplicationContext applicationContext) throws BeansException { if (!customFlowHandlerAdapterSet) { flowHandlerAdapter.setApplicationContext(applicationContext); } } public void afterPropertiesSet() throws Exception { if (!customFlowHandlerAdapterSet) { flowHandlerAdapter.afterPropertiesSet(); } } // subclassing hooks public ModelAndView handleRequest(HttpServletRequest request, HttpServletResponse response) throws Exception { FlowHandler handler = getFlowHandler(request); return flowHandlerAdapter.handle(request, response, handler); } // internal helpers private FlowHandler getFlowHandler(HttpServletRequest request) { FlowUrlHandler urlHandler = flowHandlerAdapter.getFlowUrlHandler(); String flowId = urlHandler.getFlowId(request); return getFlowHandler(flowId); } private FlowHandler getFlowHandler(String flowId) { FlowHandler handler = (FlowHandler) flowHandlers.get(flowId); if (handler == null) { handler = new DefaultFlowHandler(flowId); } return handler; } private static class DefaultFlowHandler extends AbstractFlowHandler { private String flowId; public DefaultFlowHandler(String flowId) { this.flowId = flowId; } public String getFlowId() { return flowId; } } }././@LongLink0000000000000000000000000000017200000000000011565 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframework/webflow/mvc/view/libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframew0000755000000000000000000000000011360615642027750 5ustar ././@LongLink0000000000000000000000000000021300000000000011561 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframework/webflow/mvc/view/BindingModel.javalibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframew0000644000000000000000000002674311360615642027766 0ustar /* * Copyright 2004-2008 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.springframework.webflow.mvc.view; import java.beans.PropertyEditor; import java.util.ArrayList; import java.util.Collection; import java.util.Collections; import java.util.List; import java.util.Map; import org.springframework.beans.PropertyEditorRegistry; import org.springframework.binding.convert.ConversionExecutor; import org.springframework.binding.convert.ConversionService; import org.springframework.binding.expression.Expression; import org.springframework.binding.expression.ExpressionParser; import org.springframework.binding.expression.support.FluentParserContext; import org.springframework.binding.mapping.MappingResult; import org.springframework.binding.mapping.MappingResults; import org.springframework.binding.mapping.MappingResultsCriteria; import org.springframework.binding.message.Message; import org.springframework.binding.message.MessageContext; import org.springframework.binding.message.MessageCriteria; import org.springframework.binding.message.Severity; import org.springframework.util.Assert; import org.springframework.validation.AbstractErrors; import org.springframework.validation.BindingResult; import org.springframework.validation.Errors; import org.springframework.validation.FieldError; import org.springframework.validation.ObjectError; import org.springframework.webflow.engine.builder.BinderConfiguration; import org.springframework.webflow.engine.builder.BinderConfiguration.Binding; /** * Makes the properties of the "model" object available to Spring views during rendering. Also makes data binding (aka * mapping) results available after a form postback attempt. Also makes error messages available to the view. * * This class is a Spring Errors adapter, basically, for use with spring form and bind tags. * * @see AbstractMvcView * * @author Keith Donald * @author Jeremy Grelle */ public class BindingModel extends AbstractErrors implements BindingResult { private String objectName; private Object boundObject; private ExpressionParser expressionParser; private ConversionService conversionService; private MappingResults mappingResults; private MessageContext messageContext; private BinderConfiguration binderConfiguration; /** * Creates a new Spring Binding model. * @param objectName the name of the bound model object * @param boundObject the bound model object * @param expressionParser the expression parser used to access model object properties * @param conversionService the registry used to access converters for formatting properties * @param messageContext the message context containing flow messages to display */ public BindingModel(String objectName, Object boundObject, ExpressionParser expressionParser, ConversionService conversionService, MessageContext messageContext) { Assert.hasText(objectName, "The object name is required"); Assert.notNull(boundObject, "The bound object instance is required"); this.objectName = objectName; this.boundObject = boundObject; this.expressionParser = expressionParser; this.conversionService = conversionService; this.messageContext = messageContext; } /** * Sets the results of a data mapping attempt onto the bound model object from the view. * @see AbstractMvcView#processUserEvent() * @param results */ public void setMappingResults(MappingResults results) { this.mappingResults = results; } public void setBinderConfiguration(BinderConfiguration binderConfiguration) { this.binderConfiguration = binderConfiguration; } // implementing Errors public List getAllErrors() { return toErrors(messageContext.getMessagesByCriteria(ERRORS_ANY_SOURCE)); } public List getGlobalErrors() { return toErrors(messageContext.getMessagesByCriteria(ERRORS_NULL_SOURCE)); } public List getFieldErrors(String field) { field = fixedField(field); MessageCriteria messageCriteria; if (field.endsWith("*")) { String prefix = field.substring(0, field.length() - 1); messageCriteria = new FieldPrefixErrorMessage(prefix); } else { messageCriteria = new FieldErrorMessage(field); } return toErrors(messageContext.getMessagesByCriteria(messageCriteria)); } public Class getFieldType(String field) { return parseFieldExpression(fixedField(field)).getValueType(boundObject); } public Object getFieldValue(String field) { field = fixedField(field); if (mappingResults != null) { List results = mappingResults.getResults(new FieldErrorResult(field)); if (!results.isEmpty()) { MappingResult fieldError = (MappingResult) results.get(0); return fieldError.getOriginalValue(); } } return getFormattedValue(parseFieldExpression(field)); } // not typically used by mvc views, but implemented to be on the safe side public List getFieldErrors() { return toErrors(messageContext.getMessagesByCriteria(ERRORS_FIELD_SOURCE)); } public String getObjectName() { return objectName; } // never expected to be called by mvc views public void addAllErrors(Errors errors) { throw new UnsupportedOperationException("Should not be called during view rendering"); } public void reject(String errorCode, Object[] errorArgs, String defaultMessage) { throw new UnsupportedOperationException("Should not be called during view rendering"); } public void rejectValue(String field, String errorCode, Object[] errorArgs, String defaultMessage) { throw new UnsupportedOperationException("Should not be called during view rendering"); } // implementing BindingResult public Object getTarget() { return boundObject; } public Object getRawFieldValue(String field) { return parseFieldExpression(fixedField(field)).getValue(boundObject); } public PropertyEditor findEditor(String field, Class valueType) { if (conversionService != null) { String converterId = null; if (field != null) { field = fixedField(field); if (binderConfiguration != null) { Binding binding = binderConfiguration.getBinding(field); if (binding != null) { converterId = binding.getConverter(); } } if (valueType == null) { valueType = parseFieldExpression(field).getValueType(boundObject); } } if (valueType != null) { return new ConversionExecutorPropertyEditor(conversionService, valueType, converterId); } else { return null; } } else { return null; } } // never expected to be called by mvc views public void addError(ObjectError error) { throw new UnsupportedOperationException("Should not be called during view rendering"); } public Map getModel() { throw new UnsupportedOperationException("Should not be called during view rendering"); } public PropertyEditorRegistry getPropertyEditorRegistry() { throw new UnsupportedOperationException("Should not be called during view rendering"); } public String[] getSuppressedFields() { throw new UnsupportedOperationException("Should not be called during view rendering"); } public void recordSuppressedField(String field) { throw new UnsupportedOperationException("Should not be called during view rendering"); } public String[] resolveMessageCodes(String errorCode, String field) { throw new UnsupportedOperationException("Should not be called during view rendering"); } // internal helpers private Expression parseFieldExpression(String field) { return expressionParser.parseExpression(field, new FluentParserContext().evaluate(boundObject.getClass())); } private Object getFormattedValue(Expression fieldExpression) { ConversionExecutor converter = getConverter(fieldExpression); if (converter != null) { return converter.execute(fieldExpression.getValue(boundObject)); } else { return fieldExpression.getValue(boundObject); } } private ConversionExecutor getConverter(Expression fieldExpression) { if (conversionService != null) { Class valueType = fieldExpression.getValueType(boundObject); // special handling for array, collection, map types // necessary as getFieldValue is called by form tags for non-formattable properties, too // TODO - investigate how to improve this in Spring MVC if (valueType == null || valueType.isArray() || Collection.class.isAssignableFrom(valueType) || Map.class.isAssignableFrom(valueType)) { return null; } if (binderConfiguration != null) { Binding binding = binderConfiguration.getBinding(fieldExpression.getExpressionString()); if (binding != null) { String converterId = binding.getConverter(); if (converterId != null) { return conversionService.getConversionExecutor(converterId, valueType, String.class); } } } return conversionService.getConversionExecutor(valueType, String.class); } else { return null; } } private List toErrors(Message[] messages) { if (messages == null || messages.length == 0) { return Collections.EMPTY_LIST; } ArrayList errors = new ArrayList(messages.length); for (int i = 0; i < messages.length; i++) { Message message = messages[i]; if (message.getSource() == null) { errors.add(new ObjectError(objectName, message.getText())); } else { errors.add(new FieldError(objectName, (String) message.getSource(), message.getText())); } } return Collections.unmodifiableList(errors); } private static class FieldErrorResult implements MappingResultsCriteria { private String field; public FieldErrorResult(String field) { this.field = field; } public boolean test(MappingResult result) { if (result.isError() && field.equals(result.getMapping().getTargetExpression().getExpressionString())) { return true; } else { return false; } } } private static final MessageCriteria ERRORS_ANY_SOURCE = new MessageCriteria() { public boolean test(Message message) { return message.getSeverity() == Severity.ERROR; } }; private static final MessageCriteria ERRORS_NULL_SOURCE = new MessageCriteria() { public boolean test(Message message) { return message.getSource() == null && message.getSeverity() == Severity.ERROR; } }; private static final MessageCriteria ERRORS_FIELD_SOURCE = new MessageCriteria() { public boolean test(Message message) { return message.getSeverity() == Severity.ERROR && message.getSource() instanceof String; } }; private static class FieldErrorMessage implements MessageCriteria { private String field; public FieldErrorMessage(String field) { Assert.hasText(field, "The field name is required"); this.field = field; } public boolean test(Message message) { return message.getSeverity() == Severity.ERROR && field.equals(message.getSource()); } } private static class FieldPrefixErrorMessage implements MessageCriteria { private String fieldPrefix; public FieldPrefixErrorMessage(String fieldPrefix) { Assert.hasText(fieldPrefix, "The fieldPrefix is required"); this.fieldPrefix = fieldPrefix; } public boolean test(Message message) { return message.getSeverity() == Severity.ERROR && message.getSource() instanceof String && ((String) message.getSource()).startsWith(fieldPrefix); } } }././@LongLink0000000000000000000000000000021700000000000011565 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframework/webflow/mvc/view/FlowViewResolver.javalibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframew0000644000000000000000000000310311360615640027745 0ustar /* * Copyright 2004-2008 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.springframework.webflow.mvc.view; import org.springframework.web.servlet.View; import org.springframework.web.servlet.ViewResolver; import org.springframework.webflow.execution.RequestContext; /** * A Web Flow flavor of the familiar Spring MVC View Resolver interface. Allows resolving a Spring MVC {@link View view} * from the state of an executing flow. * * @author Keith Donald * @see ViewResolver */ public interface FlowViewResolver { /** * Resolve the Spring MVC view with the provided id. * @param viewId the view id, typically treated as a Spring MVC view name * @param context the current flow request * @return the resolved Spring MVC view */ public View resolveView(String viewId, RequestContext context); /** * Get the default id of the view to render in the provided view state by convention. * @param viewStateId the view state id * @return the default view id */ public String getViewIdByConvention(String viewStateId); }././@LongLink0000000000000000000000000000022000000000000011557 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframework/webflow/mvc/view/FlowAjaxTilesView.javalibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframew0000644000000000000000000000414511360615632027755 0ustar /* * Copyright 2004-2008 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.springframework.webflow.mvc.view; import java.util.Map; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.springframework.js.ajax.SpringJavascriptAjaxHandler; import org.springframework.js.ajax.tiles2.AjaxTilesView; import org.springframework.webflow.execution.RequestContext; import org.springframework.webflow.execution.RequestContextHolder; import org.springframework.webflow.execution.View; /** * Tiles view implementation that is able to handle partial rendering for Spring Javascript Ajax requests. * *

* This implementation uses the {@link SpringJavascriptAjaxHandler} by default to determine whether the current request * is an Ajax request. On an Ajax request for an active flow execution, the fragments set by a {@code } action * will be respected, otherwise the parent {@link AjaxTilesView}'s resolution algorithm will be applied. *

* * @author Jeremy Grelle */ public class FlowAjaxTilesView extends AjaxTilesView { protected String[] getRenderFragments(Map model, HttpServletRequest request, HttpServletResponse response) { RequestContext context = RequestContextHolder.getRequestContext(); if (context == null) { return super.getRenderFragments(model, request, response); } else { String[] fragments = (String[]) context.getFlashScope().get(View.RENDER_FRAGMENTS_ATTRIBUTE); if (fragments == null) { return super.getRenderFragments(model, request, response); } return fragments; } } }././@LongLink0000000000000000000000000000020600000000000011563 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframework/webflow/mvc/view/package.htmllibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframew0000644000000000000000000000014411360615634027752 0ustar

Support for rendering Spring MVC-based Views within Web Flow.

././@LongLink0000000000000000000000000000022400000000000011563 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframework/webflow/mvc/view/ViewActionStateHolder.javalibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframew0000644000000000000000000000332111360615632027750 0ustar /* * Copyright 2004-2008 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.springframework.webflow.mvc.view; import java.io.Serializable; import org.springframework.binding.mapping.MappingResults; import org.springframework.core.style.ToStringCreator; /** * Holder class for passing Spring MVC view action state through a redirect. * * @author Scott Andrews */ public class ViewActionStateHolder implements Serializable { public static final String KEY = "webflowViewActionStateHolder"; private String eventId; private boolean userEventProcessed; private transient MappingResults mappingResults; public ViewActionStateHolder(String eventId, boolean userEventProcessed, MappingResults mappingResults) { this.eventId = eventId; this.userEventProcessed = userEventProcessed; this.mappingResults = mappingResults; } public String getEventId() { return eventId; } public boolean getUserEventProcessed() { return userEventProcessed; } public MappingResults getMappingResults() { return mappingResults; } public String toString() { return new ToStringCreator(this).append("eventId", eventId).append("mappingResults", mappingResults).toString(); } }././@LongLink0000000000000000000000000000023700000000000011567 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframework/webflow/mvc/view/ConversionExecutorPropertyEditor.javalibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframew0000644000000000000000000000351511360615632027755 0ustar /* * Copyright 2004-2007 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.springframework.webflow.mvc.view; import java.beans.PropertyEditorSupport; import org.springframework.binding.convert.ConversionService; import org.springframework.util.Assert; import org.springframework.util.StringUtils; class ConversionExecutorPropertyEditor extends PropertyEditorSupport { private ConversionService conversionService; private Class fieldType; private String converterId; public ConversionExecutorPropertyEditor(ConversionService conversionService, Class fieldType, String converterId) { Assert.notNull(fieldType, "The field type is required"); this.conversionService = conversionService; this.fieldType = fieldType; this.converterId = converterId; } public String getAsText() { if (StringUtils.hasText(converterId)) { return (String) conversionService.executeConversion(converterId, getValue(), String.class); } else { return (String) conversionService.executeConversion(getValue(), String.class); } } public void setAsText(String text) throws IllegalArgumentException { if (StringUtils.hasText(converterId)) { setValue(conversionService.executeConversion(converterId, text, fieldType)); } else { setValue(conversionService.executeConversion(text, fieldType)); } } }././@LongLink0000000000000000000000000000022500000000000011564 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframework/webflow/mvc/view/AbstractMvcViewFactory.javalibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframew0000644000000000000000000000767011360615632027763 0ustar /* * Copyright 2004-2008 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.springframework.webflow.mvc.view; import org.springframework.binding.convert.ConversionService; import org.springframework.binding.expression.Expression; import org.springframework.binding.expression.ExpressionParser; import org.springframework.util.StringUtils; import org.springframework.validation.MessageCodesResolver; import org.springframework.webflow.engine.builder.BinderConfiguration; import org.springframework.webflow.execution.RequestContext; import org.springframework.webflow.execution.View; import org.springframework.webflow.execution.ViewFactory; /** * Base class for mvc view factories. * * @author Keith Donald */ public abstract class AbstractMvcViewFactory implements ViewFactory { private Expression viewId; private FlowViewResolver viewResolver; private ExpressionParser expressionParser; private ConversionService conversionService; private BinderConfiguration binderConfiguration; private String eventIdParameterName; private String fieldMarkerPrefix; private MessageCodesResolver messageCodesResolver; /** * Creates a new MVC view factory. * @param viewId the id of the view as an expression * @param viewResolver the resolver to resolve the View implementation * @param expressionParser the expression parser * @param conversionService the conversion service * @param binderConfiguration the model binding configuration */ public AbstractMvcViewFactory(Expression viewId, FlowViewResolver viewResolver, ExpressionParser expressionParser, ConversionService conversionService, BinderConfiguration binderConfiguration, MessageCodesResolver messageCodesResolver) { this.viewId = viewId; this.viewResolver = viewResolver; this.expressionParser = expressionParser; this.conversionService = conversionService; this.binderConfiguration = binderConfiguration; this.messageCodesResolver = messageCodesResolver; } public void setEventIdParameterName(String eventIdParameterName) { this.eventIdParameterName = eventIdParameterName; } public void setFieldMarkerPrefix(String fieldMarkerPrefix) { this.fieldMarkerPrefix = fieldMarkerPrefix; } public View getView(RequestContext context) { String viewId = (String) this.viewId.getValue(context); org.springframework.web.servlet.View view = viewResolver.resolveView(viewId, context); AbstractMvcView mvcView = createMvcView(view, context); mvcView.setExpressionParser(expressionParser); mvcView.setConversionService(conversionService); mvcView.setBinderConfiguration(binderConfiguration); mvcView.setMessageCodesResolver(messageCodesResolver); if (StringUtils.hasText(eventIdParameterName)) { mvcView.setEventIdParameterName(eventIdParameterName); } if (StringUtils.hasText(fieldMarkerPrefix)) { mvcView.setFieldMarkerPrefix(fieldMarkerPrefix); } ViewActionStateHolder stateHolder = (ViewActionStateHolder) context.getFlashScope().get( View.USER_EVENT_STATE_ATTRIBUTE); if (stateHolder != null) { mvcView.restoreState(stateHolder); } return mvcView; } /** * Abstract factory method subclasses should implement to return the concrete MVC view implementation. * @param view the actual resolved view implementation * @param context the current request context * @return the mvc view */ protected abstract AbstractMvcView createMvcView(org.springframework.web.servlet.View view, RequestContext context); }././@LongLink0000000000000000000000000000021600000000000011564 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframework/webflow/mvc/view/AbstractMvcView.javalibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframew0000644000000000000000000005154411360615632027762 0ustar /* * Copyright 2004-2008 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.springframework.webflow.mvc.view; import java.io.IOException; import java.io.Serializable; import java.lang.reflect.Array; import java.util.HashMap; import java.util.Iterator; import java.util.List; import java.util.Map; import java.util.Set; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.springframework.binding.convert.ConversionExecutor; import org.springframework.binding.convert.ConversionService; import org.springframework.binding.expression.EvaluationException; import org.springframework.binding.expression.Expression; import org.springframework.binding.expression.ExpressionParser; import org.springframework.binding.expression.ParserContext; import org.springframework.binding.expression.support.FluentParserContext; import org.springframework.binding.expression.support.StaticExpression; import org.springframework.binding.mapping.MappingResult; import org.springframework.binding.mapping.MappingResults; import org.springframework.binding.mapping.MappingResultsCriteria; import org.springframework.binding.mapping.impl.DefaultMapper; import org.springframework.binding.mapping.impl.DefaultMapping; import org.springframework.binding.message.MessageBuilder; import org.springframework.binding.message.MessageResolver; import org.springframework.core.style.ToStringCreator; import org.springframework.util.Assert; import org.springframework.validation.BindingResult; import org.springframework.validation.MessageCodesResolver; import org.springframework.web.util.WebUtils; import org.springframework.webflow.core.collection.AttributeMap; import org.springframework.webflow.core.collection.ParameterMap; import org.springframework.webflow.definition.TransitionDefinition; import org.springframework.webflow.engine.builder.BinderConfiguration; import org.springframework.webflow.engine.builder.BinderConfiguration.Binding; import org.springframework.webflow.execution.Event; import org.springframework.webflow.execution.FlowExecutionKey; import org.springframework.webflow.execution.RequestContext; import org.springframework.webflow.execution.View; import org.springframework.webflow.validation.ValidationHelper; /** * Base view implementation for the Spring Web MVC Servlet and Spring Web MVC Portlet frameworks. * * @author Keith Donald */ public abstract class AbstractMvcView implements View { private static final Log logger = LogFactory.getLog(AbstractMvcView.class); private static final MappingResultsCriteria PROPERTY_NOT_FOUND_ERROR = new PropertyNotFoundError(); private static final MappingResultsCriteria MAPPING_ERROR = new MappingError(); private org.springframework.web.servlet.View view; private RequestContext requestContext; private ExpressionParser expressionParser; private ConversionService conversionService; private String fieldMarkerPrefix = "_"; private String eventIdParameterName = "_eventId"; private String eventId; private MappingResults mappingResults; private BinderConfiguration binderConfiguration; private MessageCodesResolver messageCodesResolver; private boolean userEventProcessed; /** * Creates a new MVC view. * @param view the Spring MVC view to render * @param requestContext the current flow request context */ public AbstractMvcView(org.springframework.web.servlet.View view, RequestContext requestContext) { this.view = view; this.requestContext = requestContext; } /** * Sets the expression parser to use to parse model expressions. * @param expressionParser the expression parser */ public void setExpressionParser(ExpressionParser expressionParser) { this.expressionParser = expressionParser; } /** * Sets the service to use to expose formatters for field values. * @param conversionService the conversion service */ public void setConversionService(ConversionService conversionService) { this.conversionService = conversionService; } /** * Sets the configuration describing how this view should bind to its model to access data for rendering. * @param binderConfiguration the model binder configuration */ public void setBinderConfiguration(BinderConfiguration binderConfiguration) { this.binderConfiguration = binderConfiguration; } /** * Set the message codes resolver to use to resolve bind and validation failure message codes. * @param messageCodesResolver the binding error message code resolver to use */ public void setMessageCodesResolver(MessageCodesResolver messageCodesResolver) { this.messageCodesResolver = messageCodesResolver; } /** * Specify a prefix that can be used for parameters that mark potentially empty fields, having "prefix + field" as * name. Such a marker parameter is checked by existence: You can send any value for it, for example "visible". This * is particularly useful for HTML checkboxes and select options. *

* Default is "_", for "_FIELD" parameters (e.g. "_subscribeToNewsletter"). Set this to null if you want to turn off * the empty field check completely. *

* HTML checkboxes only send a value when they're checked, so it is not possible to detect that a formerly checked * box has just been unchecked, at least not with standard HTML means. *

* This auto-reset mechanism addresses this deficiency, provided that a marker parameter is sent for each checkbox * field, like "_subscribeToNewsletter" for a "subscribeToNewsletter" field. As the marker parameter is sent in any * case, the data binder can detect an empty field and automatically reset its value. */ public void setFieldMarkerPrefix(String fieldMarkerPrefix) { this.fieldMarkerPrefix = fieldMarkerPrefix; } /** * Sets the name of the request parameter to use to lookup user events signaled by this view. If not specified, the * default is _eventId * @param eventIdParameterName the event id parameter name */ public void setEventIdParameterName(String eventIdParameterName) { this.eventIdParameterName = eventIdParameterName; } public void render() throws IOException { Map model = new HashMap(); model.putAll(flowScopes()); exposeBindingModel(model); model.put("flowRequestContext", requestContext); FlowExecutionKey key = requestContext.getFlowExecutionContext().getKey(); if (key != null) { model.put("flowExecutionKey", requestContext.getFlowExecutionContext().getKey().toString()); model.put("flowExecutionUrl", requestContext.getFlowExecutionUrl()); } model.put("currentUser", requestContext.getExternalContext().getCurrentUser()); try { if (logger.isDebugEnabled()) { logger.debug("Rendering MVC [" + view + "] with model map [" + model + "]"); } doRender(model); } catch (IOException e) { throw e; } catch (Exception e) { IllegalStateException ise = new IllegalStateException("Exception occurred rendering view " + view); ise.initCause(e); throw ise; } } public boolean userEventQueued() { return !userEventProcessed && getEventId() != null; } public void processUserEvent() { String eventId = getEventId(); if (eventId == null) { return; } if (logger.isDebugEnabled()) { logger.debug("Processing user event '" + eventId + "'"); } Object model = getModelObject(); if (model != null) { if (logger.isDebugEnabled()) { logger.debug("Resolved model " + model); } TransitionDefinition transition = requestContext.getMatchingTransition(eventId); if (shouldBind(model, transition)) { mappingResults = bind(model); if (hasErrors(mappingResults)) { if (logger.isDebugEnabled()) { logger.debug("Model binding resulted in errors; adding error messages to context"); } addErrorMessages(mappingResults); } if (shouldValidate(model, transition)) { validate(model); } } } else { if (logger.isDebugEnabled()) { logger.debug("No model to bind to; done processing user event"); } } userEventProcessed = true; } public Serializable getUserEventState() { return new ViewActionStateHolder(eventId, userEventProcessed, mappingResults); } public boolean hasFlowEvent() { return userEventProcessed && !requestContext.getMessageContext().hasErrorMessages(); } public Event getFlowEvent() { if (!hasFlowEvent()) { return null; } return new Event(this, getEventId(), requestContext.getRequestParameters().asAttributeMap()); } public void saveState() { } public String toString() { return new ToStringCreator(this).append("view", view).toString(); } // subclassing hooks /** * Returns the current flow request context. * @return the flow request context */ protected RequestContext getRequestContext() { return requestContext; } /** * Returns the Spring MVC view to render * @return the view */ protected org.springframework.web.servlet.View getView() { return view; } /** * Template method subclasses should override to execute the view rendering logic. * @param model the view model data * @throws Exception an exception occurred rendering the view */ protected abstract void doRender(Map model) throws Exception; /** * Returns the id of the user event being processed. * @return the user event */ protected String getEventId() { if (eventId == null) { eventId = determineEventId(requestContext); } return this.eventId; } /** * Determines if model data binding should be invoked given the Transition that matched the current user event being * processed. Returns true unless the bind attribute of the Transition has been set to false. * Subclasses may override. * @param model the model data binding would be performed on * @param transition the matched transition * @return true if binding should occur, false if not */ protected boolean shouldBind(Object model, TransitionDefinition transition) { if (transition == null) { return true; } return transition.getAttributes().getBoolean("bind", Boolean.TRUE).booleanValue(); } /** * Returns the results of binding to the view's model, if model binding has occurred. * @return the binding (mapping) results */ protected MappingResults getMappingResults() { return mappingResults; } /** * Obtain the user event from the current flow request. The default implementation returns the value of the request * parameter with name {@link #setEventIdParameterName(String) eventIdParameterName}. Subclasses may override. * @param context the current flow request context * @return the user event that occurred */ protected String determineEventId(RequestContext context) { return WebUtils.findParameterValue(context.getRequestParameters().asMap(), eventIdParameterName); } // package private /** * Restores the internal state of this view from the provided state holder. * @see AbstractMvcViewFactory#getView(RequestContext) */ void restoreState(ViewActionStateHolder stateHolder) { eventId = stateHolder.getEventId(); userEventProcessed = stateHolder.getUserEventProcessed(); mappingResults = stateHolder.getMappingResults(); } /** * Determines if model validation should execute given the Transition that matched the current user event being * processed. Returns true unless the validate attribute of the Transition has been set to false, or * model data binding errors occurred and the global validateOnBindingErrors flag is set to false. * Subclasses may override. * @param model the model data binding would be performed on * @param transition the matched transition * @return true if binding should occur, false if not */ private boolean shouldValidate(Object model, TransitionDefinition transition) { Boolean validateAttribute = getValidateAttribute(transition); if (validateAttribute != null) { return validateAttribute.booleanValue(); } else { AttributeMap flowExecutionAttributes = requestContext.getFlowExecutionContext().getAttributes(); Boolean validateOnBindingErrors = flowExecutionAttributes.getBoolean("validateOnBindingErrors"); if (validateOnBindingErrors != null) { if (!validateOnBindingErrors.booleanValue() && mappingResults.hasErrorResults()) { return false; } } return true; } } // internal helpers private Map flowScopes() { if (requestContext.getCurrentState().isViewState()) { return requestContext.getConversationScope().union(requestContext.getFlowScope()).union( requestContext.getViewScope()).union(requestContext.getFlashScope()).union( requestContext.getRequestScope()).asMap(); } else { return requestContext.getConversationScope().union(requestContext.getFlowScope()).union( requestContext.getFlashScope()).union(requestContext.getRequestScope()).asMap(); } } private void exposeBindingModel(Map model) { Object modelObject = getModelObject(); if (modelObject != null) { BindingModel bindingModel = new BindingModel(getModelExpression().getExpressionString(), modelObject, expressionParser, conversionService, requestContext.getMessageContext()); bindingModel.setBinderConfiguration(binderConfiguration); bindingModel.setMappingResults(mappingResults); model.put(BindingResult.MODEL_KEY_PREFIX + getModelExpression().getExpressionString(), bindingModel); } } private Object getModelObject() { Expression model = getModelExpression(); if (model != null) { try { return model.getValue(requestContext); } catch (EvaluationException e) { return null; } } else { return null; } } private Expression getModelExpression() { return (Expression) requestContext.getCurrentState().getAttributes().get("model"); } private MappingResults bind(Object model) { if (logger.isDebugEnabled()) { logger.debug("Binding to model"); } DefaultMapper mapper = new DefaultMapper(); ParameterMap requestParameters = requestContext.getRequestParameters(); if (binderConfiguration != null) { addModelBindings(mapper, requestParameters.asMap().keySet(), model); } else { addDefaultMappings(mapper, requestParameters.asMap().keySet(), model); } return mapper.map(requestParameters, model); } private void addModelBindings(DefaultMapper mapper, Set parameterNames, Object model) { Iterator it = binderConfiguration.getBindings().iterator(); while (it.hasNext()) { Binding binding = (Binding) it.next(); String parameterName = binding.getProperty(); if (parameterNames.contains(parameterName)) { addMapping(mapper, binding, model); } else { if (fieldMarkerPrefix != null && parameterNames.contains(fieldMarkerPrefix + parameterName)) { addEmptyValueMapping(mapper, parameterName, model); } } } } private void addMapping(DefaultMapper mapper, Binding binding, Object model) { Expression source = new RequestParameterExpression(binding.getProperty()); ParserContext parserContext = new FluentParserContext().evaluate(model.getClass()); Expression target = expressionParser.parseExpression(binding.getProperty(), parserContext); DefaultMapping mapping = new DefaultMapping(source, target); mapping.setRequired(binding.getRequired()); if (binding.getConverter() != null) { Assert.notNull(conversionService, "A ConversionService must be configured to use resolve custom converters to use during binding"); ConversionExecutor conversionExecutor = conversionService.getConversionExecutor(binding.getConverter(), String.class, target.getValueType(model)); mapping.setTypeConverter(conversionExecutor); } if (logger.isDebugEnabled()) { logger.debug("Adding mapping for parameter '" + binding.getProperty() + "'"); } mapper.addMapping(mapping); } private void addDefaultMappings(DefaultMapper mapper, Set parameterNames, Object model) { for (Iterator it = parameterNames.iterator(); it.hasNext();) { String parameterName = (String) it.next(); if (fieldMarkerPrefix != null && parameterName.startsWith(fieldMarkerPrefix)) { String field = parameterName.substring(fieldMarkerPrefix.length()); if (!parameterNames.contains(field)) { addEmptyValueMapping(mapper, field, model); } } else { addDefaultMapping(mapper, parameterName, model); } } } private void addEmptyValueMapping(DefaultMapper mapper, String field, Object model) { ParserContext parserContext = new FluentParserContext().evaluate(model.getClass()); Expression target = expressionParser.parseExpression(field, parserContext); try { Class propertyType = target.getValueType(model); Expression source = new StaticExpression(getEmptyValue(propertyType)); DefaultMapping mapping = new DefaultMapping(source, target); if (logger.isDebugEnabled()) { logger.debug("Adding empty value mapping for parameter '" + field + "'"); } mapper.addMapping(mapping); } catch (EvaluationException e) { } } private Object getEmptyValue(Class fieldType) { if (fieldType != null && boolean.class.equals(fieldType) || Boolean.class.equals(fieldType)) { // Special handling of boolean property. return Boolean.FALSE; } else if (fieldType != null && fieldType.isArray()) { // Special handling of array property. return Array.newInstance(fieldType.getComponentType(), 0); } else { // Default value: try null. return null; } } private void addDefaultMapping(DefaultMapper mapper, String parameter, Object model) { Expression source = new RequestParameterExpression(parameter); ParserContext parserContext = new FluentParserContext().evaluate(model.getClass()); Expression target = expressionParser.parseExpression(parameter, parserContext); DefaultMapping mapping = new DefaultMapping(source, target); if (logger.isDebugEnabled()) { logger.debug("Adding default mapping for parameter '" + parameter + "'"); } mapper.addMapping(mapping); } private boolean hasErrors(MappingResults results) { return results.hasErrorResults() && !onlyPropertyNotFoundErrorsPresent(results); } private boolean onlyPropertyNotFoundErrorsPresent(MappingResults results) { return results.getResults(PROPERTY_NOT_FOUND_ERROR).size() == mappingResults.getErrorResults().size(); } private void addErrorMessages(MappingResults results) { List errors = results.getResults(MAPPING_ERROR); for (Iterator it = errors.iterator(); it.hasNext();) { MappingResult error = (MappingResult) it.next(); requestContext.getMessageContext().addMessage(createMessageResolver(error)); } } private MessageResolver createMessageResolver(MappingResult error) { String model = getModelExpression().getExpressionString(); String field = error.getMapping().getTargetExpression().getExpressionString(); Class fieldType = error.getMapping().getTargetExpression().getValueType(getModelObject()); String[] messageCodes = messageCodesResolver.resolveMessageCodes(error.getCode(), model, field, fieldType); return new MessageBuilder().error().source(field).codes(messageCodes).resolvableArg(field).defaultText( error.getCode() + " on " + field).build(); } private Boolean getValidateAttribute(TransitionDefinition transition) { if (transition != null) { return transition.getAttributes().getBoolean("validate"); } else { return null; } } private void validate(Object model) { if (logger.isDebugEnabled()) { logger.debug("Validating model"); } new ValidationHelper(model, requestContext, eventId, getModelExpression().getExpressionString(), expressionParser, messageCodesResolver, mappingResults).validate(); } private static class PropertyNotFoundError implements MappingResultsCriteria { public boolean test(MappingResult result) { return result.isError() && "propertyNotFound".equals(result.getCode()); } } private static class MappingError implements MappingResultsCriteria { public boolean test(MappingResult result) { return result.isError() && !PROPERTY_NOT_FOUND_ERROR.test(result); } } private static class RequestParameterExpression implements Expression { private String parameterName; public RequestParameterExpression(String parameterName) { this.parameterName = parameterName; } public String getExpressionString() { return parameterName; } public Object getValue(Object context) throws EvaluationException { ParameterMap parameters = (ParameterMap) context; return parameters.asMap().get(parameterName); } public Class getValueType(Object context) { return String.class; } public void setValue(Object context, Object value) throws EvaluationException { throw new UnsupportedOperationException("Setting request parameters is not allowed"); } public String toString() { return "parameter:'" + parameterName + "'"; } } }././@LongLink0000000000000000000000000000017400000000000011567 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframework/webflow/expression/libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframew0000755000000000000000000000000011360615634027751 5ustar ././@LongLink0000000000000000000000000000017700000000000011572 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframework/webflow/expression/el/libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframew0000755000000000000000000000000011360615644027752 5ustar ././@LongLink0000000000000000000000000000024200000000000011563 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframework/webflow/expression/el/ImplicitFlowVariableELResolver.javalibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframew0000644000000000000000000001372511360615634027763 0ustar /* * Copyright 2004-2008 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.springframework.webflow.expression.el; import java.util.HashMap; import java.util.Iterator; import java.util.Map; import javax.el.BeanELResolver; import javax.el.ELContext; import javax.el.ELResolver; import javax.el.PropertyNotWritableException; import org.springframework.binding.expression.el.DefaultELContext; import org.springframework.webflow.execution.RequestContext; import org.springframework.webflow.execution.RequestContextHolder; /** * Resolves "implicit" or well-known flow variables; for example "flowScope" in an expression like #{flowScope.foo}. The * list of implicit flow variables consists of: * *

 * requestParameters
 * requestScope
 * flashScope
 * viewScope
 * flowScope
 * conversationScope
 * messageContext
 * externalContext
 * flowExecutionContext
 * flowExecutionUrl
 * currentUser
 * currentEvent
 * 
* * @author Keith Donald * @author Jeremy Grelle */ public class ImplicitFlowVariableELResolver extends ELResolver { private RequestContext requestContext; public ImplicitFlowVariableELResolver() { } public ImplicitFlowVariableELResolver(RequestContext requestContext) { this.requestContext = requestContext; } public Class getCommonPropertyType(ELContext context, Object base) { if (base == null) { return Object.class; } else { return null; } } public Iterator getFeatureDescriptors(ELContext context, Object base) { return null; } public Class getType(ELContext context, Object base, Object property) { RequestContext requestContext = getRequestContext(); if (base != null || requestContext == null) { return null; } if (ImplicitVariables.matches(property)) { context.setPropertyResolved(true); return ImplicitVariables.value(context, requestContext, property).getClass(); } else { return null; } } public Object getValue(ELContext context, Object base, Object property) { RequestContext requestContext = getRequestContext(); if (base != null || requestContext == null) { return null; } if (ImplicitVariables.matches(property)) { context.setPropertyResolved(true); return ImplicitVariables.value(context, requestContext, property); } else { return null; } } public boolean isReadOnly(ELContext context, Object base, Object property) { RequestContext requestContext = getRequestContext(); if (base != null || requestContext == null) { return false; } if (ImplicitVariables.matches(property)) { context.setPropertyResolved(true); return true; } else { return false; } } public void setValue(ELContext context, Object base, Object property, Object value) { RequestContext requestContext = getRequestContext(); if (base != null || requestContext == null) { return; } if (ImplicitVariables.matches(property)) { context.setPropertyResolved(true); throw new PropertyNotWritableException("The implicit flow variable " + property + " is not writable."); } } protected RequestContext getRequestContext() { return requestContext != null ? requestContext : RequestContextHolder.getRequestContext(); } private static final class ImplicitVariables { private static final Map vars = new HashMap(); private static final PropertyResolver requestContextResolver = new PropertyResolver() { protected Object doResolve(ELContext elContext, RequestContext requestContext, Object property) { return elContext.getELResolver().getValue(elContext, requestContext, property); } }; private static final PropertyResolver externalContextResolver = new PropertyResolver() { protected Object doResolve(ELContext elContext, RequestContext requestContext, Object property) { return elContext.getELResolver().getValue(elContext, requestContext.getExternalContext(), property); } }; private static final PropertyResolver currentEventResolver = new PropertyResolver() { protected Object doResolve(ELContext elContext, RequestContext requestContext, Object property) { return requestContext.getCurrentEvent(); } }; static { vars.put("requestParameters", requestContextResolver); vars.put("requestScope", requestContextResolver); vars.put("flashScope", requestContextResolver); vars.put("viewScope", requestContextResolver); vars.put("flowScope", requestContextResolver); vars.put("conversationScope", requestContextResolver); vars.put("messageContext", requestContextResolver); vars.put("externalContext", requestContextResolver); vars.put("flowExecutionContext", requestContextResolver); vars.put("flowExecutionUrl", requestContextResolver); vars.put("currentUser", externalContextResolver); vars.put("currentEvent", currentEventResolver); } public static boolean matches(Object property) { return vars.containsKey(property); } public static Object value(ELContext elContext, RequestContext requestContext, Object property) { PropertyResolver resolver = (PropertyResolver) vars.get(property); return resolver.resolve(requestContext, property); } } private static abstract class PropertyResolver { private static final BeanELResolver elPropertyResolver = new BeanELResolver(); public Object resolve(RequestContext context, Object property) { ELContext elContext = new DefaultELContext(elPropertyResolver, null, null); return doResolve(elContext, context, property); } protected abstract Object doResolve(ELContext elContext, RequestContext requestContext, Object property); } } ././@LongLink0000000000000000000000000000023200000000000011562 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframework/webflow/expression/el/ActionMethodELResolver.javalibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframew0000644000000000000000000000511011360615634027750 0ustar /* * Copyright 2004-2008 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.springframework.webflow.expression.el; import java.util.Iterator; import javax.el.ELContext; import javax.el.ELResolver; import javax.el.PropertyNotWritableException; import org.springframework.webflow.execution.Action; import org.springframework.webflow.execution.AnnotatedAction; /** * Resolves the method to invoke on a resolved Web Flow Action instance. The resolved Action is usually a * {@link org.springframework.webflow.action.MultiAction}. Returns an AnnotatedAction wrapper around the target Action * configured with the appropriate method dispatching rules. * * @see org.springframework.webflow.action.EvaluateAction * * @author Keith Donald */ public class ActionMethodELResolver extends ELResolver { public Class getCommonPropertyType(ELContext elContext, Object base) { if (base instanceof Action) { return String.class; } else { return null; } } public Iterator getFeatureDescriptors(ELContext elContext, Object base) { return null; } public Class getType(ELContext elContext, Object base, Object property) { if (base instanceof Action) { elContext.setPropertyResolved(true); return Action.class; } else { return null; } } public Object getValue(ELContext elContext, Object base, Object property) { if (base instanceof Action) { Action action = (Action) base; elContext.setPropertyResolved(true); AnnotatedAction annotated = new AnnotatedAction(action); annotated.setMethod(property.toString()); return annotated; } else { return null; } } public boolean isReadOnly(ELContext elContext, Object base, Object property) { if (base instanceof Action) { elContext.setPropertyResolved(true); return true; } else { return false; } } public void setValue(ELContext elContext, Object base, Object property, Object value) { if (base instanceof Action) { elContext.setPropertyResolved(true); throw new PropertyNotWritableException("The Action cannot be set with an expression."); } } }././@LongLink0000000000000000000000000000021300000000000011561 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframework/webflow/expression/el/package.htmllibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframew0000644000000000000000000000012411360615636027752 0ustar

Web Flow integration with the Unified EL API.

././@LongLink0000000000000000000000000000023500000000000011565 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframework/webflow/expression/el/WebFlowELExpressionParser.javalibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframew0000644000000000000000000000545511360615634027764 0ustar /* * Copyright 2004-2008 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.springframework.webflow.expression.el; import java.util.ArrayList; import java.util.List; import javax.el.ELContext; import javax.el.ELResolver; import javax.el.ExpressionFactory; import javax.el.FunctionMapper; import javax.el.VariableMapper; import org.springframework.binding.expression.el.DefaultELResolver; import org.springframework.binding.expression.el.ELContextFactory; import org.springframework.binding.expression.el.ELExpressionParser; import org.springframework.webflow.execution.RequestContext; /** * Allows for Unified EL expressions in a FlowDefinition. * * @author Jeremy Grelle */ public class WebFlowELExpressionParser extends ELExpressionParser { /** * Creates a new Web Flow EL expression parser. * @param expressionFactory the underlying EL expression factory (EL provider specific) */ public WebFlowELExpressionParser(ExpressionFactory expressionFactory) { super(expressionFactory); putContextFactory(RequestContext.class, new RequestContextELContextFactory()); } /** * Configures EL context instances for evaluating against a Web Flow request context. * @author Keith Donald */ private static class RequestContextELContextFactory implements ELContextFactory { public ELContext getELContext(Object target) { RequestContext context = (RequestContext) target; List customResolvers = new ArrayList(); customResolvers.add(new RequestContextELResolver(context)); customResolvers.add(new FlowResourceELResolver(context)); customResolvers.add(new ImplicitFlowVariableELResolver(context)); customResolvers.add(new ScopeSearchingELResolver(context)); customResolvers.add(new SpringBeanWebFlowELResolver(context)); customResolvers.add(new ActionMethodELResolver()); ELResolver resolver = new DefaultELResolver(customResolvers); return new WebFlowELContext(resolver); } } private static class WebFlowELContext extends ELContext { private ELResolver resolver; public WebFlowELContext(ELResolver resolver) { this.resolver = resolver; } public ELResolver getELResolver() { return resolver; } public FunctionMapper getFunctionMapper() { return null; } public VariableMapper getVariableMapper() { return null; } } }././@LongLink0000000000000000000000000000023400000000000011564 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframework/webflow/expression/el/ScopeSearchingELResolver.javalibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframew0000644000000000000000000001454211360615642027760 0ustar /* * Copyright 2004-2008 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.springframework.webflow.expression.el; import java.util.Iterator; import javax.el.ELContext; import javax.el.ELResolver; import org.springframework.webflow.execution.RequestContext; import org.springframework.webflow.execution.RequestContextHolder; /** * Custom EL resolver that searches the current request context for variables to resolve. The search algorithm looks in * request scope first, then flash scope, then view scope, then flow scope, then conversation scope. * * Suitable for use along side other variable resolvers to support EL binding expressions like "#{bean.property}" where * "bean" could be a property in any supported scope. * * @author Jeremy Grelle */ public class ScopeSearchingELResolver extends ELResolver { private RequestContext requestContext; public ScopeSearchingELResolver() { } public ScopeSearchingELResolver(RequestContext requestContext) { this.requestContext = requestContext; } public Class getCommonPropertyType(ELContext elContext, Object base) { if (base == null) { return Object.class; } else { return null; } } public Iterator getFeatureDescriptors(ELContext elContext, Object base) { return null; } public Class getType(ELContext elContext, Object base, Object property) { RequestContext requestContext = getRequestContext(); if (base != null || requestContext == null) { return null; } String attributeName = property.toString(); if (requestContext.getRequestScope().contains(attributeName)) { elContext.setPropertyResolved(true); return requestContext.getRequestScope().get(attributeName).getClass(); } else if (requestContext.getFlashScope().contains(attributeName)) { elContext.setPropertyResolved(true); return requestContext.getFlashScope().get(attributeName).getClass(); } else if (requestContext.inViewState() && requestContext.getViewScope().contains(attributeName)) { elContext.setPropertyResolved(true); return requestContext.getViewScope().get(attributeName).getClass(); } else if (requestContext.getFlowScope().contains(attributeName)) { elContext.setPropertyResolved(true); return requestContext.getFlowScope().get(attributeName).getClass(); } else if (requestContext.getConversationScope().contains(attributeName)) { elContext.setPropertyResolved(true); return requestContext.getConversationScope().get(attributeName).getClass(); } else { return null; } } public Object getValue(ELContext elContext, Object base, Object property) { RequestContext requestContext = getRequestContext(); if (base != null || requestContext == null) { return null; } String attributeName = property.toString(); if (requestContext.getRequestScope().contains(attributeName)) { elContext.setPropertyResolved(true); return requestContext.getRequestScope().get(attributeName); } else if (requestContext.getFlashScope().contains(attributeName)) { elContext.setPropertyResolved(true); return requestContext.getFlashScope().get(attributeName); } else if (requestContext.inViewState() && requestContext.getViewScope().contains(attributeName)) { elContext.setPropertyResolved(true); return requestContext.getViewScope().get(attributeName); } else if (requestContext.getFlowScope().contains(attributeName)) { elContext.setPropertyResolved(true); return requestContext.getFlowScope().get(attributeName); } else if (requestContext.getConversationScope().contains(attributeName)) { elContext.setPropertyResolved(true); return requestContext.getConversationScope().get(attributeName); } else { return null; } } public boolean isReadOnly(ELContext elContext, Object base, Object property) { RequestContext requestContext = getRequestContext(); if (base != null || requestContext == null) { return false; } String attributeName = property.toString(); if (requestContext.getRequestScope().contains(attributeName)) { elContext.setPropertyResolved(true); return false; } else if (requestContext.getFlashScope().contains(attributeName)) { elContext.setPropertyResolved(true); return false; } else if (requestContext.inViewState() && requestContext.getViewScope().contains(attributeName)) { elContext.setPropertyResolved(true); return false; } else if (requestContext.getFlowScope().contains(attributeName)) { elContext.setPropertyResolved(true); return false; } else if (requestContext.getConversationScope().contains(attributeName)) { elContext.setPropertyResolved(true); return false; } else { return false; } } public void setValue(ELContext elContext, Object base, Object property, Object value) { RequestContext requestContext = getRequestContext(); if (base != null || requestContext == null) { return; } String attributeName = property.toString(); if (requestContext.getRequestScope().contains(attributeName)) { elContext.setPropertyResolved(true); requestContext.getRequestScope().put(attributeName, value); } else if (requestContext.getFlashScope().contains(attributeName)) { elContext.setPropertyResolved(true); requestContext.getFlashScope().put(attributeName, value); } else if (requestContext.inViewState() && requestContext.getViewScope().contains(attributeName)) { elContext.setPropertyResolved(true); requestContext.getViewScope().put(attributeName, value); } else if (requestContext.getFlowScope().contains(attributeName)) { elContext.setPropertyResolved(true); requestContext.getFlowScope().put(attributeName, value); } else if (requestContext.getConversationScope().contains(attributeName)) { elContext.setPropertyResolved(true); requestContext.getConversationScope().put(attributeName, value); } } protected RequestContext getRequestContext() { return requestContext != null ? requestContext : RequestContextHolder.getRequestContext(); } }././@LongLink0000000000000000000000000000023200000000000011562 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframework/webflow/expression/el/FlowResourceELResolver.javalibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframew0000644000000000000000000000741311360615636027762 0ustar package org.springframework.webflow.expression.el; import java.util.Iterator; import java.util.Locale; import javax.el.ELContext; import javax.el.ELResolver; import javax.el.PropertyNotWritableException; import org.springframework.context.MessageSource; import org.springframework.webflow.execution.RequestContext; import org.springframework.webflow.execution.RequestContextHolder; /** * Custom EL resolver that resolves the messages from the active flow's {@link MessageSource}. The message source is * indexed under the key resourceBundle. To access a message, specify its key e.g. * resourceBundle.myMessage. * * @author Jeremy Grelle */ public class FlowResourceELResolver extends ELResolver { static final String RESOURCE_BUNDLE_KEY = "resourceBundle"; private RequestContext requestContext; public FlowResourceELResolver() { } public FlowResourceELResolver(RequestContext requestContext) { this.requestContext = requestContext; } public Class getCommonPropertyType(ELContext context, Object base) { if (base == null) { return MessageSource.class; } else if (base instanceof MessageSource) { return String.class; } else { return null; } } public Iterator getFeatureDescriptors(ELContext context, Object base) { return null; } public Class getType(ELContext context, Object base, Object property) { RequestContext requestContext = getRequestContext(); if (requestContext == null) { return null; } if (base == null && RESOURCE_BUNDLE_KEY.equals(property)) { context.setPropertyResolved(true); return MessageSource.class; } else if (base instanceof MessageSource) { MessageSource messageSource = (MessageSource) base; String message = messageSource.getMessage(property.toString(), null, null, getLocale()); if (message != null) { context.setPropertyResolved(true); return String.class; } } return null; } public Object getValue(ELContext context, Object base, Object property) { RequestContext requestContext = getRequestContext(); if (requestContext == null) { return null; } if (base == null && RESOURCE_BUNDLE_KEY.equals(property)) { context.setPropertyResolved(true); return getMessageSource(); } else if (base instanceof MessageSource) { MessageSource messageSource = (MessageSource) base; String message = messageSource.getMessage(property.toString(), null, null, getLocale()); if (message != null) { context.setPropertyResolved(true); return message; } } return null; } public boolean isReadOnly(ELContext context, Object base, Object property) { RequestContext requestContext = getRequestContext(); if (requestContext == null) { return false; } if (base == null && RESOURCE_BUNDLE_KEY.equals(property)) { context.setPropertyResolved(true); return true; } else if (base instanceof MessageSource) { context.setPropertyResolved(true); return true; } return false; } public void setValue(ELContext context, Object base, Object property, Object value) { RequestContext requestContext = getRequestContext(); if (requestContext == null) { return; } if (base == null && RESOURCE_BUNDLE_KEY.equals(property)) { throw new PropertyNotWritableException("The '" + RESOURCE_BUNDLE_KEY + "' implicit variable is not writable."); } else if (base instanceof MessageSource) { throw new PropertyNotWritableException("The flow's MessageSource is not writable."); } } protected Locale getLocale() { return getRequestContext().getExternalContext().getLocale(); } protected MessageSource getMessageSource() { return getRequestContext().getActiveFlow().getApplicationContext(); } protected RequestContext getRequestContext() { return requestContext != null ? requestContext : RequestContextHolder.getRequestContext(); } } ././@LongLink0000000000000000000000000000023700000000000011567 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframework/webflow/expression/el/SpringBeanWebFlowELResolver.javalibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframew0000644000000000000000000000366511360615632027763 0ustar /* * Copyright 2004-2008 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.springframework.webflow.expression.el; import javax.el.ELContext; import org.springframework.beans.factory.BeanFactory; import org.springframework.beans.factory.access.el.SpringBeanELResolver; import org.springframework.beans.factory.support.StaticListableBeanFactory; import org.springframework.webflow.execution.RequestContext; import org.springframework.webflow.execution.RequestContextHolder; /** * EL resolver for resolving Spring Beans accessible by a flow's bean factory. * @author Jeremy Grelle */ public class SpringBeanWebFlowELResolver extends SpringBeanELResolver { private static final BeanFactory EMPTY_BEAN_FACTORY = new StaticListableBeanFactory(); private RequestContext requestContext; public SpringBeanWebFlowELResolver() { } public SpringBeanWebFlowELResolver(RequestContext context) { this.requestContext = context; } protected BeanFactory getBeanFactory(ELContext elContext) { RequestContext requestContext = getRequestContext(); if (requestContext == null) { return EMPTY_BEAN_FACTORY; } BeanFactory beanFactory = requestContext.getActiveFlow().getApplicationContext(); return beanFactory != null ? beanFactory : EMPTY_BEAN_FACTORY; } protected RequestContext getRequestContext() { return requestContext != null ? requestContext : RequestContextHolder.getRequestContext(); } } ././@LongLink0000000000000000000000000000023400000000000011564 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframework/webflow/expression/el/RequestContextELResolver.javalibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframew0000644000000000000000000000572111360615644027761 0ustar /* * Copyright 2004-2008 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.springframework.webflow.expression.el; import java.util.Iterator; import javax.el.ELContext; import javax.el.ELResolver; import javax.el.PropertyNotWritableException; import org.springframework.webflow.execution.RequestContext; import org.springframework.webflow.execution.RequestContextHolder; /** * Custom EL resolver that resolves the current RequestContext under the variable {@link #REQUEST_CONTEXT_VARIABLE_NAME}. * Allows for accessing any property of the RequestContext instance. For example: * "#{flowRequestContext.conversationScope.myProperty}". * * @author Jeremy Grelle */ public class RequestContextELResolver extends ELResolver { /** * Name of the request context variable. */ public static final String REQUEST_CONTEXT_VARIABLE_NAME = "flowRequestContext"; private RequestContext context; public RequestContextELResolver() { } public RequestContextELResolver(RequestContext context) { this.context = context; } public Class getCommonPropertyType(ELContext elContext, Object base) { if (base == null) { return RequestContext.class; } return null; } public Iterator getFeatureDescriptors(ELContext elContext, Object base) { return null; } public Class getType(ELContext elContext, Object base, Object property) { if (base == null && REQUEST_CONTEXT_VARIABLE_NAME.equals(property)) { elContext.setPropertyResolved(true); return RequestContext.class; } else { return null; } } public Object getValue(ELContext elContext, Object base, Object property) { if (base == null && REQUEST_CONTEXT_VARIABLE_NAME.equals(property)) { elContext.setPropertyResolved(true); return getRequestContext(); } else { return null; } } public boolean isReadOnly(ELContext elContext, Object base, Object property) { if (base == null && REQUEST_CONTEXT_VARIABLE_NAME.equals(property)) { elContext.setPropertyResolved(true); return true; } else { return false; } } public void setValue(ELContext elContext, Object base, Object property, Object value) { if (base == null && REQUEST_CONTEXT_VARIABLE_NAME.equals(property)) { elContext.setPropertyResolved(true); throw new PropertyNotWritableException("The RequestContext cannot be set with an expression."); } } protected RequestContext getRequestContext() { return context != null ? context : RequestContextHolder.getRequestContext(); } }././@LongLink0000000000000000000000000000021000000000000011556 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframework/webflow/expression/package.htmllibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframew0000644000000000000000000000020411360615634027747 0ustar

Expression language integration. Contains Web Flow specific ExpressionParser implementations.

././@LongLink0000000000000000000000000000023400000000000011564 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframework/webflow/expression/WebFlowOgnlExpressionParser.javalibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframew0000644000000000000000000001750011360615632027754 0ustar /* * Copyright 2004-2008 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.springframework.webflow.expression; import java.util.Map; import ognl.ObjectPropertyAccessor; import ognl.Ognl; import ognl.OgnlException; import ognl.PropertyAccessor; import org.springframework.beans.factory.BeanFactory; import org.springframework.beans.factory.support.StaticListableBeanFactory; import org.springframework.binding.collection.MapAdaptable; import org.springframework.binding.expression.ognl.OgnlExpressionParser; import org.springframework.context.MessageSource; import org.springframework.webflow.context.ExternalContext; import org.springframework.webflow.context.ExternalContextHolder; import org.springframework.webflow.core.collection.MutableAttributeMap; import org.springframework.webflow.execution.Action; import org.springframework.webflow.execution.AnnotatedAction; import org.springframework.webflow.execution.RequestContext; /** * An extension of {@link OgnlExpressionParser} that registers Web Flow-specific PropertyAccessors. * * @author Keith Donald */ public class WebFlowOgnlExpressionParser extends OgnlExpressionParser { /** * Creates a Web Flow OGNL Expression Parser. */ public WebFlowOgnlExpressionParser() { addPropertyAccessor(MapAdaptable.class, new MapAdaptablePropertyAccessor()); addPropertyAccessor(MutableAttributeMap.class, new MutableAttributeMapPropertyAccessor()); addPropertyAccessor(MessageSource.class, new MessageSourcePropertyAccessor()); addPropertyAccessor(RequestContext.class, new RequestContextPropertyAccessor(new ObjectPropertyAccessor())); addPropertyAccessor(Action.class, new ActionPropertyAccessor()); } /** * Resolves Map Adaptable properties. */ private static class MapAdaptablePropertyAccessor implements PropertyAccessor { public Object getProperty(Map context, Object target, Object name) throws OgnlException { return ((MapAdaptable) target).asMap().get(name); } public void setProperty(Map context, Object target, Object name, Object value) throws OgnlException { throw new UnsupportedOperationException( "Cannot mutate immutable attribute collections; operation disallowed"); } } /** * Resolves Mutable Attribute Map properties, also capable of setting properties. */ private static class MutableAttributeMapPropertyAccessor extends MapAdaptablePropertyAccessor { public void setProperty(Map context, Object target, Object name, Object value) throws OgnlException { ((MutableAttributeMap) target).put((String) name, value); } } /** * Resolves RequestContext properties. Supports several implicit variables and scope searching routines. */ private static class RequestContextPropertyAccessor implements PropertyAccessor { private static final BeanFactory EMPTY_BEAN_FACTORY = new StaticListableBeanFactory(); private PropertyAccessor delegate; public RequestContextPropertyAccessor(PropertyAccessor delegate) { this.delegate = delegate; } public Object getProperty(Map context, Object target, Object name) throws OgnlException { String property = name.toString(); RequestContext requestContext = (RequestContext) target; if (property.equals("flowRequestContext")) { return requestContext; } if (property.equals("currentUser")) { return requestContext.getExternalContext().getCurrentUser(); } if (property.equals("resourceBundle")) { return requestContext.getActiveFlow().getApplicationContext(); } if (requestContext.getRequestScope().contains(property)) { return requestContext.getRequestScope().get(property); } else if (requestContext.getFlashScope().contains(property)) { return requestContext.getFlashScope().get(property); } else if (requestContext.inViewState() && requestContext.getViewScope().contains(property)) { return requestContext.getViewScope().get(property); } else if (requestContext.getFlowScope().contains(property)) { return requestContext.getFlowScope().get(property); } else if (requestContext.getConversationScope().contains(property)) { return requestContext.getConversationScope().get(property); } BeanFactory bf = getBeanFactory(requestContext); if (bf.containsBean(property)) { return bf.getBean(property); } return delegate.getProperty(context, target, name); } public void setProperty(Map context, Object target, Object name, Object value) throws OgnlException { String property = name.toString(); RequestContext requestContext = (RequestContext) target; if (property.equals("flowRequestContext")) { throw new OgnlException("The 'flowRequestContext' variable is not writeable"); } if (property.equals("currentUser")) { throw new OgnlException("The 'currentUser' variable is not writeable"); } if (property.equals("resourceBundle")) { throw new OgnlException("The 'resourceBundle' variable is not writeable"); } if (requestContext.getRequestScope().contains(property)) { requestContext.getRequestScope().put(property, value); } else if (requestContext.getFlashScope().contains(property)) { requestContext.getFlashScope().put(property, value); } else if (requestContext.inViewState() && requestContext.getViewScope().contains(property)) { requestContext.getViewScope().put(property, value); } else if (requestContext.getFlowScope().contains(property)) { requestContext.getFlowScope().put(property, value); } else if (requestContext.getConversationScope().contains(property)) { requestContext.getConversationScope().put(property, value); } else { delegate.setProperty(context, target, name, value); } } private BeanFactory getBeanFactory(RequestContext requestContext) { BeanFactory beanFactory = requestContext.getActiveFlow().getApplicationContext(); return beanFactory != null ? beanFactory : EMPTY_BEAN_FACTORY; } } /** * Resolves multi action methods. */ private static class ActionPropertyAccessor implements PropertyAccessor { public Object getProperty(Map context, Object target, Object name) throws OgnlException { Action action = (Action) target; AnnotatedAction annotated = new AnnotatedAction(action); annotated.setMethod(name.toString()); return annotated; } public void setProperty(Map context, Object target, Object name, Object value) throws OgnlException { throw new OgnlException("Cannot set properties on a Action instance - operation not allowed"); } } /** * Resolves messages. */ private static class MessageSourcePropertyAccessor implements PropertyAccessor { public Object getProperty(Map context, Object target, Object name) throws OgnlException { MessageSource messageSource = (MessageSource) target; ExternalContext externalContext; Object root = Ognl.getRoot(context); if (root instanceof RequestContext) { externalContext = ((RequestContext) root).getExternalContext(); } else { externalContext = ExternalContextHolder.getExternalContext(); } if (externalContext != null) { return messageSource.getMessage(name.toString(), null, null, externalContext.getLocale()); } else { return messageSource.getMessage(name.toString(), null, null, null); } } public void setProperty(Map context, Object target, Object name, Object value) throws OgnlException { throw new OgnlException("Cannot set properties on a MessageSource instance - operation not allowed"); } } }././@LongLink0000000000000000000000000000023700000000000011567 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframework/webflow/expression/DefaultExpressionParserFactory.javalibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframew0000644000000000000000000001142211360615632027751 0ustar /* * Copyright 2004-2008 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.springframework.webflow.expression; import javax.el.ExpressionFactory; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.springframework.binding.convert.ConversionService; import org.springframework.binding.expression.ExpressionParser; import org.springframework.binding.expression.el.DefaultExpressionFactoryUtils; import org.springframework.util.ClassUtils; import org.springframework.webflow.expression.el.WebFlowELExpressionParser; /** * Static factory that returns the default {@link ExpressionParser} used by Spring Web Flow. Marked final with a private * constructor to prevent subclassing. *

* This factory employs the following algorithm when the returned ExpressionParser instance is used for the first time: *

    *
  • If a Unified EL implementation is configured for the VM, make a {@link WebFlowELExpressionParser} the default. *
  • If no Unified EL implementation is configured and OGNL is configured, make a {@link WebFlowOgnlExpressionParser} * the default. *
  • If neither Unified EL or OGNL are configured, throw an IllegalStateException with a nice error message. *
* * @author Keith Donald * @author Erwin Vervaet */ public final class DefaultExpressionParserFactory { private static final Log logger = LogFactory.getLog(DefaultExpressionParserFactory.class); /** * The singleton instance of the default expression parser. */ private static ExpressionParser INSTANCE; // static factory - not instantiable private DefaultExpressionParserFactory() { } /** * Returns the default expression parser for Spring Web Flow. The returned instance is a cached thread-safe object. * @return the expression parser */ public static synchronized ExpressionParser getExpressionParser() { return getDefaultExpressionParser(); } /** * Returns the default expression parser for Spring Web Flow configured with the provided ConversionService for type * conversion. The returned instance is a thread-safe object. * @param conversionService the conversionService * @return the expression parser */ public static synchronized ExpressionParser getExpressionParser(final ConversionService conversionService) { return createDefaultExpressionParser(conversionService); } /** * Returns the default expression parser, creating it if necessary. * @return the default expression parser */ private static synchronized ExpressionParser getDefaultExpressionParser() { if (INSTANCE == null) { INSTANCE = createDefaultExpressionParser(null); if (logger.isDebugEnabled()) { logger.debug("Initialized shared default Web Flow ExpressionParser " + INSTANCE); } } return INSTANCE; } /** * Create the default expression parser. This implementation tries EL first, then OGNL if EL is not configured. * @return the default Web Flow expression parser */ private static ExpressionParser createDefaultExpressionParser(ConversionService conversionService) throws IllegalStateException { try { ExpressionFactory elFactory = DefaultExpressionFactoryUtils.createExpressionFactory(); WebFlowELExpressionParser expressionParser = new WebFlowELExpressionParser(elFactory); if (conversionService != null) { expressionParser.setConversionService(conversionService); } return expressionParser; } catch (Exception e) { try { ClassUtils.forName("ognl.Ognl", DefaultExpressionParserFactory.class.getClassLoader()); WebFlowOgnlExpressionParser expressionParser = new WebFlowOgnlExpressionParser(); if (conversionService != null) { expressionParser.setConversionService(conversionService); } return expressionParser; } catch (ClassNotFoundException ex) { IllegalStateException ise = new IllegalStateException( "Unable to create the default expression parser for Spring Web Flow: Neither a Unified EL implementation or OGNL could be found."); ise.initCause(ex); throw ise; } catch (NoClassDefFoundError ex) { IllegalStateException ise = new IllegalStateException( "Unable to create the default expression parser for Spring Web Flow: Neither a Unified EL implementation or OGNL could be found."); ise.initCause(ex); throw ise; } } } }././@LongLink0000000000000000000000000000017600000000000011571 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframework/webflow/conversation/libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframew0000755000000000000000000000000011360615644027752 5ustar ././@LongLink0000000000000000000000000000023400000000000011564 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframework/webflow/conversation/ConversationLockException.javalibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframew0000644000000000000000000000120211360615636027750 0ustar package org.springframework.webflow.conversation; /** * An exception occurred within the conversation locking system. * * @author Keith Donald */ public abstract class ConversationLockException extends ConversationException { /** * Creates a new lock exception. * @param msg the Exception message */ public ConversationLockException(String msg) { super(msg); } /** * Creates a new lock exception. * @param msg the Exception message * @param cause the root cause of this Exception */ public ConversationLockException(String msg, Throwable cause) { super(msg, cause); } } ././@LongLink0000000000000000000000000000023100000000000011561 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframework/webflow/conversation/ConversationParameters.javalibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframew0000644000000000000000000000371411360615640027755 0ustar /* * Copyright 2004-2008 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.springframework.webflow.conversation; import java.io.Serializable; import org.springframework.core.style.ToStringCreator; /** * Simple parameter object for clumping together input needed to begin a new conversation. * * @author Keith Donald */ public class ConversationParameters implements Serializable { /** * The conversation name. */ private String name; /** * The conversation caption. */ private String caption; /** * The conversation description. */ private String description; /** * Creates new conversation input parameters. * @param name the name of the conversation * @param caption a short description * @param description a long description */ public ConversationParameters(String name, String caption, String description) { this.name = name; this.caption = caption; this.description = description; } /** * Returns the name of the conversation. * @return the conversation name */ public String getName() { return name; } /** * Returns the short description. * @return the conversation caption */ public String getCaption() { return caption; } /** * Returns the long description. * @return the description. */ public String getDescription() { return description; } public String toString() { return new ToStringCreator(this).append("name", name).toString(); } }././@LongLink0000000000000000000000000000022600000000000011565 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframework/webflow/conversation/ConversationManager.javalibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframew0000644000000000000000000000550511360615642027757 0ustar /* * Copyright 2004-2008 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.springframework.webflow.conversation; /** * A service for managing conversations. This interface is the entry point into the conversation subsystem. * * @author Keith Donald * @author Erwin Vervaet */ public interface ConversationManager { /** * Begin a new conversation. * @param conversationParameters descriptive conversation parameters * @return a service interface allowing access to the conversation context * @throws ConversationException an exception occured */ public Conversation beginConversation(ConversationParameters conversationParameters) throws ConversationException; /** * Get the conversation with the provided id. *

* Implementors should take care to manage conversation identity correctly. Although it is not strictly required to * return the same (==) Conversation object every time this method is called with a particular conversation id in a * single execution thread, callers will expect to recieve an object that allows them to manipulate the identified * conversation. In other words, the following is legal ConversationManager client code: * *

	 * 	ConversationManager manager = ...;
	 * 	ConversationId id = ...;
	 * 	Conversation conv = manager.getConversation(id);
	 *  conv.lock();
	 *  try {
	 *  	Conversation localReference = manager.getConversation(id);
	 *  	// no need to lock since conversation 'id' is already locked
	 *  	// even though possibly conv != localReference
	 *  	localReference.putAttribute("foo", "bar");
	 *  	Object foo = conv.getAttribute("foo");
	 * 	}
	 * 	finally {
	 * 		conv.unlock();
	 * 	}
	 * 
* * @param id the conversation id * @return the conversation * @throws NoSuchConversationException the id provided was invalid */ public Conversation getConversation(ConversationId id) throws ConversationException; /** * Parse the string-encoded conversationId into its object form. Essentially, the reverse of * {@link ConversationId#toString()}. * @param encodedId the encoded id * @return the parsed conversation id * @throws ConversationException an exception occured parsing the id */ public ConversationId parseConversationId(String encodedId) throws ConversationException; }././@LongLink0000000000000000000000000000020300000000000011560 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframework/webflow/conversation/impl/libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframew0000755000000000000000000000000011360615640027746 5ustar ././@LongLink0000000000000000000000000000025100000000000011563 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframework/webflow/conversation/impl/SessionBindingConversationManager.javalibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframew0000644000000000000000000001352211360615632027754 0ustar /* * Copyright 2004-2008 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.springframework.webflow.conversation.impl; import org.springframework.webflow.context.ExternalContextHolder; import org.springframework.webflow.conversation.Conversation; import org.springframework.webflow.conversation.ConversationException; import org.springframework.webflow.conversation.ConversationId; import org.springframework.webflow.conversation.ConversationManager; import org.springframework.webflow.conversation.ConversationParameters; import org.springframework.webflow.core.collection.SharedAttributeMap; /** * Simple implementation of a conversation manager that stores conversations in the session attribute map. *

* Using the {@link #setMaxConversations(int) maxConversations} property, you can limit the number of concurrently * active conversations allowed in a single session. If the maximum is exceeded, the conversation manager will * automatically end the oldest conversation. The default is 5, which should be fine for most situations. Set it to -1 * for no limit. Setting maxConversations to 1 allows easy resource cleanup in situations where there should only be one * active conversation per session. * * @author Erwin Vervaet */ public class SessionBindingConversationManager implements ConversationManager { /** * The name of the session attribute that will hold the conversation container used by this conversation manager. * * To support multiple independent conversation containers in the same web application, for example, for use with * multiple flow executors each configured with their own session-binding conversation manager, set this field's * value to something unique. * @see #setSessionKey(String) */ private String sessionKey = "webflowConversationContainer"; /** * The maximum number of active conversations allowed in a session. The default is 5. This is high enough for most * practical situations and low enough to avoid excessive resource usage or easy denial of service attacks. */ private int maxConversations = 5; /** * The factory for creating conversation lock objects. */ private ConversationLockFactory conversationLockFactory = new ConversationLockFactory(); /** * Returns the key this conversation manager uses to store conversation data in the session. * @return the session key */ public String getSessionKey() { return sessionKey; } /** * Sets the key this conversation manager uses to store conversation data in the session. If multiple session * binding conversation managers are used in the same web application to back independent flow executors, this value * should be unique among them. * @param sessionKey the session key */ public void setSessionKey(String sessionKey) { this.sessionKey = sessionKey; } /** * Returns the maximum number of allowed concurrent conversations. The default is 5. */ public int getMaxConversations() { return maxConversations; } /** * Set the maximum number of allowed concurrent conversations. Set to -1 for no limit. The default is 5. */ public void setMaxConversations(int maxConversations) { this.maxConversations = maxConversations; } /** * Returns the time period that can elapse before a timeout occurs on an attempt to acquire a conversation lock. The * default is 30 seconds. */ public int getLockTimeoutSeconds() { return conversationLockFactory.getTimeoutSeconds(); } /** * Sets the time period that can elapse before a timeout occurs on an attempt to acquire a conversation lock. The * default is 30 seconds. * @param timeoutSeconds the timeout period in seconds */ public void setLockTimeoutSeconds(int timeoutSeconds) { conversationLockFactory.setTimeoutSeconds(timeoutSeconds); } // implementing conversation manager public Conversation beginConversation(ConversationParameters conversationParameters) throws ConversationException { return getConversationContainer().createConversation(conversationParameters, conversationLockFactory); } public Conversation getConversation(ConversationId id) throws ConversationException { return getConversationContainer().getConversation(id); } public ConversationId parseConversationId(String encodedId) throws ConversationException { try { return new SimpleConversationId(Integer.valueOf(encodedId)); } catch (NumberFormatException e) { throw new BadlyFormattedConversationIdException(encodedId, e); } } // hooks for subclassing protected ConversationContainer createConversationContainer() { return new ConversationContainer(maxConversations, sessionKey); } // internal helpers /** * Obtain the conversation container from the session. Create a new empty container and add it to the session if no * existing container can be found. */ private ConversationContainer getConversationContainer() { SharedAttributeMap sessionMap = ExternalContextHolder.getExternalContext().getSessionMap(); synchronized (sessionMap.getMutex()) { ConversationContainer container = (ConversationContainer) sessionMap.get(sessionKey); if (container == null) { container = createConversationContainer(); sessionMap.put(sessionKey, container); } return container; } } }././@LongLink0000000000000000000000000000023000000000000011560 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframework/webflow/conversation/impl/ConversationLock.javalibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframew0000644000000000000000000000240111360615634027750 0ustar /* * Copyright 2004-2008 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.springframework.webflow.conversation.impl; import java.io.Serializable; import org.springframework.webflow.conversation.ConversationLockException; /** * A normalized interface for conversation locks, used to obtain exclusive access to a conversation. * * @author Keith Donald */ public interface ConversationLock extends Serializable { /** * Acquire the conversation lock. * @throws ConversationLockException if an exception is thrown attempting to acquire this lock */ public void lock() throws ConversationLockException; /** * Release the conversation lock. */ public void unlock(); }././@LongLink0000000000000000000000000000024500000000000011566 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframework/webflow/conversation/impl/JdkConcurrentConversationLock.javalibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframew0000644000000000000000000000322111360615632027747 0ustar /* * Copyright 2004-2008 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.springframework.webflow.conversation.impl; import java.util.concurrent.TimeUnit; import java.util.concurrent.locks.Lock; import java.util.concurrent.locks.ReentrantLock; import org.springframework.webflow.conversation.ConversationLockException; /** * A conversation lock that relies on a {@link ReentrantLock} within Java 5's util.concurrent.locks * package. * * @author Keith Donald */ class JdkConcurrentConversationLock implements ConversationLock { private Lock lock = new ReentrantLock(); private int timeoutSeconds; public JdkConcurrentConversationLock(int timeoutSeconds) { this.timeoutSeconds = timeoutSeconds; } public void lock() throws ConversationLockException { try { boolean acquired = lock.tryLock(timeoutSeconds, TimeUnit.SECONDS); if (!acquired) { throw new LockTimeoutException(timeoutSeconds); } } catch (InterruptedException e) { throw new LockInterruptedException(e); } } public void unlock() { lock.unlock(); } }././@LongLink0000000000000000000000000000025500000000000011567 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframework/webflow/conversation/impl/BadlyFormattedConversationIdException.javalibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframew0000644000000000000000000000236111360615636027757 0ustar /* * Copyright 2004-2008 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.springframework.webflow.conversation.impl; import org.springframework.webflow.conversation.ConversationException; /** * Thrown if a conversation id could not be parsed. * * @author Keith Donald */ public class BadlyFormattedConversationIdException extends ConversationException { /** * Creates a new badly formatted conversation id exception. * @param encodedId the badly formatted id * @param parseException the cause */ public BadlyFormattedConversationIdException(String encodedId, Throwable parseException) { super("Unable to parse string-encoded conversationId + '" + encodedId + "'", parseException); } } ././@LongLink0000000000000000000000000000023400000000000011564 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframework/webflow/conversation/impl/SimpleConversationId.javalibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframew0000644000000000000000000000272411360615640027755 0ustar /* * Copyright 2004-2008 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.springframework.webflow.conversation.impl; import java.io.Serializable; import org.springframework.webflow.conversation.ConversationId; import org.springframework.webflow.conversation.ConversationManager; /** * An id that uniquely identifies a conversation managed by a {@link ConversationManager}. * * @author Ben Hale */ public class SimpleConversationId extends ConversationId { /** * The id value. */ private Serializable id; /** * Creates a new simple conversation id. * @param id the id value */ public SimpleConversationId(Serializable id) { this.id = id; } public boolean equals(Object o) { if (!(o instanceof SimpleConversationId)) { return false; } return id.equals(((SimpleConversationId) o).id); } public int hashCode() { return id.hashCode(); } public String toString() { return id.toString(); } }././@LongLink0000000000000000000000000000021700000000000011565 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframework/webflow/conversation/impl/package.htmllibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframew0000644000000000000000000000022511360615634027752 0ustar

Conversation manager implementations.

This package depends on the root conversation package.

././@LongLink0000000000000000000000000000024000000000000011561 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframework/webflow/conversation/impl/LockInterruptedException.javalibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframew0000644000000000000000000000253511360615640027755 0ustar /* * Copyright 2004-2008 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.springframework.webflow.conversation.impl; import org.springframework.webflow.conversation.ConversationLockException; /** * Exception indicating that some {@link Thread} was {@link Thread#interrupt() interrupted} during * processing and as such processing was halted. *

* Only used to wrap the checked {@link InterruptedException java.lang.InterruptedException}. */ public class LockInterruptedException extends ConversationLockException { /** * Creates a new SystemInterruptedException. * @param cause the root cause of this Exception */ public LockInterruptedException(InterruptedException cause) { super("Unable to acquire conversation lock - thread interrupted", cause); } }././@LongLink0000000000000000000000000000023500000000000011565 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframework/webflow/conversation/impl/ContainedConversation.javalibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframew0000644000000000000000000000741611360615632027761 0ustar /* * Copyright 2004-2008 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.springframework.webflow.conversation.impl; import java.io.Serializable; import java.util.HashMap; import java.util.Map; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.springframework.webflow.context.ExternalContextHolder; import org.springframework.webflow.conversation.Conversation; import org.springframework.webflow.conversation.ConversationId; import org.springframework.webflow.core.collection.SharedAttributeMap; /** * Internal {@link Conversation} implementation used by the conversation container. *

* This is an internal helper class of the {@link SessionBindingConversationManager}. * * @author Erwin Vervaet */ class ContainedConversation implements Conversation, Serializable { private static final Log logger = LogFactory.getLog(SessionBindingConversationManager.class); private ConversationContainer container; private ConversationId id; private ConversationLock lock; private Map attributes; /** * Create a new contained conversation. * @param container the container containing the conversation * @param id the unique id assigned to the conversation * @param lock the conversation lock */ public ContainedConversation(ConversationContainer container, ConversationId id, ConversationLock lock) { this.container = container; this.id = id; this.lock = lock; this.attributes = new HashMap(); } public ConversationId getId() { return id; } public void lock() { if (logger.isDebugEnabled()) { logger.debug("Locking conversation " + id); } lock.lock(); } public Object getAttribute(Object name) { return attributes.get(name); } public void putAttribute(Object name, Object value) { if (logger.isDebugEnabled()) { logger.debug("Putting conversation attribute '" + name + "' with value " + value); } attributes.put(name, value); } public void removeAttribute(Object name) { if (logger.isDebugEnabled()) { logger.debug("Removing conversation attribute '" + name + "'"); } attributes.remove(name); } public void end() { if (logger.isDebugEnabled()) { logger.debug("Ending conversation " + id); } container.removeConversation(getId()); } public void unlock() { if (logger.isDebugEnabled()) { logger.debug("Unlocking conversation " + id); } lock.unlock(); // re-bind the conversation container in the session // this is required to make session replication work correctly in // a clustered environment // we do this after releasing the lock since we're no longer // manipulating the contents of the conversation SharedAttributeMap sessionMap = ExternalContextHolder.getExternalContext().getSessionMap(); synchronized (sessionMap.getMutex()) { sessionMap.put(container.getSessionKey(), container); } } public String toString() { return getId().toString(); } // id based equality public boolean equals(Object obj) { if (!(obj instanceof ContainedConversation)) { return false; } return id.equals(((ContainedConversation) obj).id); } public int hashCode() { return id.hashCode(); } }././@LongLink0000000000000000000000000000023700000000000011567 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframework/webflow/conversation/impl/ConversationLockFactory.javalibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframew0000644000000000000000000000527011360615640027754 0ustar /* * Copyright 2004-2008 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.springframework.webflow.conversation.impl; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.springframework.core.JdkVersion; /** * Simple utility class for creating conversation lock instances based on the current execution environment. * * @author Keith Donald * @author Rob Harrop */ class ConversationLockFactory { private static final Log logger = LogFactory.getLog(ConversationLockFactory.class); private static boolean backportConcurrentPresent; static { try { Class.forName("edu.emory.mathcs.backport.java.util.concurrent.locks.ReentrantLock"); backportConcurrentPresent = true; } catch (ClassNotFoundException ex) { backportConcurrentPresent = false; } } private int timeoutSeconds = 30; /** * Returns the period of time that can elapse before a lock attempt times out for locks created by this factory. */ public int getTimeoutSeconds() { return timeoutSeconds; } /** * Sets the period of time that can elapse before a lock attempt times out for locks created by this factory. * @param timeoutSeconds the timeout period in seconds */ public void setTimeoutSeconds(int timeoutSeconds) { this.timeoutSeconds = timeoutSeconds; } /** * When running on Java 1.5+, returns a jdk5 concurrent lock. When running on older JDKs with the * 'backport-util-concurrent' package available, returns a backport concurrent lock. In all other cases a "no-op" * lock is returned. */ public ConversationLock createLock() { if (JdkVersion.getMajorJavaVersion() >= JdkVersion.JAVA_15) { return new JdkConcurrentConversationLock(timeoutSeconds); } else if (backportConcurrentPresent) { return new JdkBackportConcurrentConversationLock(timeoutSeconds); } else { logger.warn("Unable to enable conversation locking. Switch to Java 5 or above, " + "or put the 'backport-util-concurrent' package on the classpath " + "to enable locking in your Java 1.4 environment."); return NoOpConversationLock.INSTANCE; } } }././@LongLink0000000000000000000000000000023400000000000011564 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframework/webflow/conversation/impl/NoOpConversationLock.javalibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframew0000644000000000000000000000256511360615640027760 0ustar /* * Copyright 2004-2008 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.springframework.webflow.conversation.impl; import java.io.ObjectStreamException; /** * A singleton lock that doesn't do anything. For use when conversations don't require or choose not to implement * locking. * * @author Keith Donald */ class NoOpConversationLock implements ConversationLock { /** * The singleton instance. */ public static final NoOpConversationLock INSTANCE = new NoOpConversationLock(); /** * Private constructor to avoid instantiation. */ private NoOpConversationLock() { } public void lock() { // no-op } public void unlock() { // no-op } // resolve the singleton instance private Object readResolve() throws ObjectStreamException { return INSTANCE; } }././@LongLink0000000000000000000000000000023500000000000011565 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframework/webflow/conversation/impl/ConversationContainer.javalibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframew0000644000000000000000000001170311360615636027757 0ustar /* * Copyright 2004-2008 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.springframework.webflow.conversation.impl; import java.io.Serializable; import java.util.ArrayList; import java.util.Iterator; import java.util.List; import org.springframework.core.JdkVersion; import org.springframework.webflow.conversation.Conversation; import org.springframework.webflow.conversation.ConversationId; import org.springframework.webflow.conversation.ConversationParameters; import org.springframework.webflow.conversation.NoSuchConversationException; /** * Container for conversations that is stored in the session. When the session expires this container will go with it, * implicitly expiring all contained conversations. *

* This is an internal helper class of the {@link SessionBindingConversationManager}. * * @author Erwin Vervaet */ class ConversationContainer implements Serializable { /** * Maximum number of conversations in this container. -1 for unlimited. */ private int maxConversations; /** * The key of this conversation container in the session. */ private String sessionKey; /** * The contained conversations. A list of {@link ContainedConversation} objects. */ private List conversations; /** * The sequence for unique conversation identifiers within this container. */ private int conversationIdSequence; /** * Create a new conversation container. * @param maxConversations the maximum number of allowed concurrent conversations, -1 for unlimited * @param sessionKey the key of this conversation container in the session */ public ConversationContainer(int maxConversations, String sessionKey) { this.maxConversations = maxConversations; this.sessionKey = sessionKey; this.conversations = new ArrayList(); } /** * Returns the key of this conversation container in the session. For package level use only. */ String getSessionKey() { return sessionKey; } /** * Returns the current size of the conversation container: the number of conversations contained within it. */ public int size() { return conversations.size(); } /** * Create a new conversation based on given parameters and add it to the container. * @param parameters descriptive conversation parameters * @param lockFactory the lock factory to use to create the conversation lock * @return the created conversation */ public synchronized Conversation createConversation(ConversationParameters parameters, ConversationLockFactory lockFactory) { ContainedConversation conversation = new ContainedConversation(this, nextId(), lockFactory.createLock()); conversation.putAttribute("name", parameters.getName()); conversation.putAttribute("caption", parameters.getCaption()); conversation.putAttribute("description", parameters.getDescription()); conversations.add(conversation); if (maxExceeded()) { // end oldest conversation ((Conversation) conversations.get(0)).end(); } return conversation; } private ConversationId nextId() { if (JdkVersion.isAtLeastJava15()) { return new SimpleConversationId(Integer.valueOf(++conversationIdSequence)); } else { return new SimpleConversationId(new Integer(++conversationIdSequence)); } } /** * Return the identified conversation. * @param id the id to lookup * @return the conversation * @throws NoSuchConversationException if the conversation cannot be found */ public synchronized Conversation getConversation(ConversationId id) throws NoSuchConversationException { for (Iterator it = conversations.iterator(); it.hasNext();) { ContainedConversation conversation = (ContainedConversation) it.next(); if (conversation.getId().equals(id)) { return conversation; } } throw new NoSuchConversationException(id); } /** * Remove identified conversation from this container. */ public synchronized void removeConversation(ConversationId id) { for (Iterator it = conversations.iterator(); it.hasNext();) { ContainedConversation conversation = (ContainedConversation) it.next(); if (conversation.getId().equals(id)) { it.remove(); break; } } } /** * Has the maximum number of allowed concurrent conversations in the session been exceeded? */ private boolean maxExceeded() { return maxConversations > 0 && conversations.size() > maxConversations; } }././@LongLink0000000000000000000000000000025500000000000011567 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframework/webflow/conversation/impl/JdkBackportConcurrentConversationLock.javalibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframew0000644000000000000000000000337211360615632027756 0ustar /* * Copyright 2004-2008 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.springframework.webflow.conversation.impl; import org.springframework.webflow.conversation.ConversationLockException; import edu.emory.mathcs.backport.java.util.concurrent.TimeUnit; import edu.emory.mathcs.backport.java.util.concurrent.locks.Lock; import edu.emory.mathcs.backport.java.util.concurrent.locks.ReentrantLock; /** * A conversation lock that relies on backport-concurrent. For use on JDK 1.4 * * @author Keith Donald * @author Rob Harrop */ class JdkBackportConcurrentConversationLock implements ConversationLock { private Lock lock = new ReentrantLock(); private int timeoutSeconds; public JdkBackportConcurrentConversationLock(int timeoutSeconds) { this.timeoutSeconds = timeoutSeconds; } public void lock() throws ConversationLockException { try { boolean acquired = lock.tryLock(timeoutSeconds, TimeUnit.SECONDS); if (!acquired) { throw new LockTimeoutException(timeoutSeconds); } } catch (InterruptedException e) { throw new LockInterruptedException(e); } } /** * Releases the lock. */ public void unlock() { lock.unlock(); } }././@LongLink0000000000000000000000000000023400000000000011564 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframework/webflow/conversation/impl/LockTimeoutException.javalibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframew0000644000000000000000000000205611360615640027753 0ustar /* * Copyright 2004-2008 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.springframework.webflow.conversation.impl; import org.springframework.webflow.conversation.ConversationLockException; /** * Thrown when a lock could not be acquired after a timeout period. * * @author Keith Donald */ public class LockTimeoutException extends ConversationLockException { public LockTimeoutException(int timeoutSeconds) { super("Unable to acquire conversation lock after " + timeoutSeconds + " seconds"); } } ././@LongLink0000000000000000000000000000023600000000000011566 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframework/webflow/conversation/NoSuchConversationException.javalibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframew0000644000000000000000000000313511360615632027753 0ustar /* * Copyright 2004-2008 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.springframework.webflow.conversation; /** * Thrown when no logical conversation exists with the specified conversationId. This might occur if the * conversation ended, expired, or was otherwise invalidated, but a client view still references it. * * @author Keith Donald */ public class NoSuchConversationException extends ConversationException { /** * The unique conversation identifier that was invalid. */ private ConversationId conversationId; /** * Create a new conversation lookup exception. * @param conversationId the conversation id */ public NoSuchConversationException(ConversationId conversationId) { super("No conversation could be found with id '" + conversationId + "' -- perhaps this conversation has ended? "); this.conversationId = conversationId; } /** * Returns the conversation id that was not found. */ public ConversationId getConversationId() { return conversationId; } }././@LongLink0000000000000000000000000000021200000000000011560 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframework/webflow/conversation/package.htmllibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframew0000644000000000000000000000107511360615632027754 0ustar

The conversation subsystem for beginning and ending conversations that manage the state of user interactions.

The central concept defined by this package is the {@link org.springframework.webflow.conversation.ConversationManager}, representing a service interface for managing conversations.

This package serves as a portable conversation management abstraction and does not depend on the Spring Web Flow engine. It is used by the flow execution repository subsystem to store conversation related state.

././@LongLink0000000000000000000000000000023000000000000011560 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframework/webflow/conversation/ConversationException.javalibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframew0000644000000000000000000000240611360615632027753 0ustar /* * Copyright 2004-2008 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.springframework.webflow.conversation; /** * The root of the conversation service exception hierarchy. * * @author Keith Donald */ public abstract class ConversationException extends RuntimeException { /** * Creates a conversation service exception. * @param message a descriptive message */ public ConversationException(String message) { super(message); } /** * Creates a conversation service exception. * @param message a descriptive message * @param cause the root cause of the problem */ public ConversationException(String message, Throwable cause) { super(message, cause); } }././@LongLink0000000000000000000000000000022100000000000011560 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframework/webflow/conversation/ConversationId.javalibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframew0000644000000000000000000000216411360615644027757 0ustar /* * Copyright 2004-2008 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.springframework.webflow.conversation; import java.io.Serializable; /** * An id that uniquely identifies a conversation managed by a {@link ConversationManager}. * * @author Ben Hale * @author Keith Donald */ public abstract class ConversationId implements Serializable { /** * Subclasses should override toString to return a parseable string form of the key. * @see java.lang.Object#toString() * @see ConversationManager#parseConversationId(String) */ public abstract String toString(); }././@LongLink0000000000000000000000000000021700000000000011565 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframework/webflow/conversation/Conversation.javalibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframew0000644000000000000000000000712611360615632027757 0ustar /* * Copyright 2004-2008 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.springframework.webflow.conversation; /** * A service interface for working with state associated with a single logical user interaction called a "conversation" * in the scope of a single request. Conversation objects are not thread safe and should not be shared among multiple * threads. *

* A conversation provides a "task" context that is begun and eventually ends. Between the beginning and the end * attributes can be placed in and read from a conversation's context. *

* A conversation needs to be {@link #lock() locked} to obtain exclusive access to it before it can be manipulated. Once * manipulation is finished, you need to {@link #unlock() unlock} the conversation. So code interacting with a * conversation always looks like this: * *

 * Conversation conv = ...;
 * conv.lock();
 * try {
 *    // work with the Conversation object, calling methods like
 *    // getAttribute(), putAttribute() and end()
 * }
 * finally {
 *    conv.unlock();
 * }
 * 
* *

* Note that the attributes associated with a conversation are not "conversation scope" as defined for a flow execution. * They can be any attributes, possibly technical in nature, associated with the conversation. * * @author Keith Donald * @author Erwin Vervaet */ public interface Conversation { /** * Returns the unique id assigned to this conversation. This id remains the same throughout the life of the * conversation. This method can be safely called without owning the lock of this conversation. * @return the conversation id */ public ConversationId getId(); /** * Lock this conversation. May block until the lock is available, if someone else has acquired the lock. * @throws ConversationLockException if the lock could not be acquired */ public void lock() throws ConversationLockException; /** * Returns the conversation attribute with the specified name. You need to acquire the lock on this conversation * before calling this method. * @param name the attribute name * @return the attribute value */ public Object getAttribute(Object name); /** * Puts a conversation attribute into this context. You need to acquire the lock on this conversation before calling * this method. * @param name the attribute name * @param value the attribute value */ public void putAttribute(Object name, Object value); /** * Removes a conversation attribute. You need to acquire the lock on this conversation before calling this method. * @param name the attribute name */ public void removeAttribute(Object name); /** * Ends this conversation. This method should only be called once to terminate the conversation and cleanup any * allocated resources. You need to aquire the lock on this conversation before calling this method. */ public void end(); /** * Unlock this conversation, making it available to others for manipulation. */ public void unlock(); }././@LongLink0000000000000000000000000000017500000000000011570 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframework/webflow/persistence/libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframew0000755000000000000000000000000011360615646027754 5ustar ././@LongLink0000000000000000000000000000024000000000000011561 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframework/webflow/persistence/HibernateFlowExecutionListener.javalibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframew0000644000000000000000000001773211360615632027763 0ustar /* * Copyright 2004-2008 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.springframework.webflow.persistence; import org.hibernate.FlushMode; import org.hibernate.Interceptor; import org.hibernate.Session; import org.hibernate.SessionFactory; import org.springframework.orm.hibernate3.SessionHolder; import org.springframework.transaction.PlatformTransactionManager; import org.springframework.transaction.TransactionStatus; import org.springframework.transaction.support.TransactionCallbackWithoutResult; import org.springframework.transaction.support.TransactionSynchronizationManager; import org.springframework.transaction.support.TransactionTemplate; import org.springframework.webflow.core.collection.AttributeMap; import org.springframework.webflow.core.collection.MutableAttributeMap; import org.springframework.webflow.definition.FlowDefinition; import org.springframework.webflow.execution.FlowExecutionException; import org.springframework.webflow.execution.FlowExecutionListener; import org.springframework.webflow.execution.FlowExecutionListenerAdapter; import org.springframework.webflow.execution.FlowSession; import org.springframework.webflow.execution.RequestContext; /** * A {@link FlowExecutionListener} that implements the Flow Managed Persistence Context (FMPC) pattern using the native * Hibernate API. *

* The general pattern is as follows: *

    *
  • When a flow execution starts, create a new Hibernate Session and bind it to flow scope under the name * {@link #PERSISTENCE_CONTEXT_ATTRIBUTE}. *
  • Before processing a flow execution request, expose the conversationally-bound session as the "current session" * for the current thread. *
  • When an existing flow pauses, unbind the session from the current thread. *
  • When an existing flow ends, commit the changes made to the session in a transaction if the ending state is a * commit state. Then, unbind the context and close it. *
* * The general data access pattern implemented here is: *
    *
  • Create a new persistence context when a new flow execution with the 'persistenceContext' attribute starts *
  • Load some objects into this persistence context *
  • Perform edits to those objects over a series of requests into the flow *
  • On successful flow completion, commit and flush those edits to the database, applying a version check if * necessary. *
* *

* Note: All data access except for the final commit will, by default, be non-transactional. However, a flow may call * into a transactional service layer to fetch objects during the conversation in the context of a read-only system * transaction. In that case, the session's flush mode will be set to Manual and no intermediate changes will be * flushed. *

* Care should be taken to prevent premature commits of flow data while the flow is in progress. You would generally not * want intermediate flushing to happen, as the nature of a flow implies a transient, isolated resource that can be * canceled before it ends. Generally, the only time a read-write transaction should be started is upon successful * completion of the conversation, triggered by reaching a 'commit' end state. * * @author Keith Donald * @author Juergen Hoeller * @author Ben Hale */ public class HibernateFlowExecutionListener extends FlowExecutionListenerAdapter { /** * The name of the attribute the flow {@link Session persistence context} is indexed under. */ public static final String PERSISTENCE_CONTEXT_ATTRIBUTE = "persistenceContext"; private SessionFactory sessionFactory; private TransactionTemplate transactionTemplate; private Interceptor entityInterceptor; /** * Create a new Hibernate Flow Execution Listener using giving Hibernate session factory and transaction manager. * @param sessionFactory the session factory to use * @param transactionManager the transaction manager to drive transactions */ public HibernateFlowExecutionListener(SessionFactory sessionFactory, PlatformTransactionManager transactionManager) { this.sessionFactory = sessionFactory; this.transactionTemplate = new TransactionTemplate(transactionManager); } /** * Sets the entity interceptor to attach to sessions opened by this listener. * @param entityInterceptor the entity interceptor */ public void setEntityInterceptor(Interceptor entityInterceptor) { this.entityInterceptor = entityInterceptor; } public void sessionStarting(RequestContext context, FlowSession session, MutableAttributeMap input) { if (!session.isRoot()) { FlowSession parent = session.getParent(); if (isPersistenceContext(parent.getDefinition())) { unbind(getHibernateSession(parent)); } } if (isPersistenceContext(session.getDefinition())) { Session hibernateSession = createSession(context); session.getScope().put(PERSISTENCE_CONTEXT_ATTRIBUTE, hibernateSession); bind(hibernateSession); } } public void paused(RequestContext context) { if (isPersistenceContext(context.getActiveFlow())) { Session session = getHibernateSession(context.getFlowExecutionContext().getActiveSession()); unbind(session); session.disconnect(); } } public void resuming(RequestContext context) { if (isPersistenceContext(context.getActiveFlow())) { bind(getHibernateSession(context.getFlowExecutionContext().getActiveSession())); } } public void sessionEnding(RequestContext context, FlowSession session, String outcome, MutableAttributeMap output) { if (isPersistenceContext(session.getDefinition())) { final Session hibernateSession = getHibernateSession(session); Boolean commitStatus = session.getState().getAttributes().getBoolean("commit"); if (Boolean.TRUE.equals(commitStatus)) { transactionTemplate.execute(new TransactionCallbackWithoutResult() { protected void doInTransactionWithoutResult(TransactionStatus status) { sessionFactory.getCurrentSession(); // nothing to do; a flush will happen on commit automatically as this is a read-write // transaction } }); } unbind(hibernateSession); hibernateSession.close(); } } public void sessionEnded(RequestContext context, FlowSession session, String outcome, AttributeMap output) { if (!session.isRoot()) { FlowSession parent = session.getParent(); if (isPersistenceContext(parent.getDefinition())) { bind(getHibernateSession(parent)); } } } public void exceptionThrown(RequestContext context, FlowExecutionException exception) { if (context.getFlowExecutionContext().isActive()) { if (isPersistenceContext(context.getActiveFlow())) { unbind(getHibernateSession(context.getFlowExecutionContext().getActiveSession())); } } } // internal helpers private boolean isPersistenceContext(FlowDefinition flow) { return flow.getAttributes().contains(PERSISTENCE_CONTEXT_ATTRIBUTE); } private Session createSession(RequestContext context) { Session session = (entityInterceptor != null ? sessionFactory.openSession(entityInterceptor) : sessionFactory .openSession()); session.setFlushMode(FlushMode.MANUAL); return session; } private Session getHibernateSession(FlowSession session) { return (Session) session.getScope().get(PERSISTENCE_CONTEXT_ATTRIBUTE); } private void bind(Session session) { TransactionSynchronizationManager.bindResource(sessionFactory, new SessionHolder(session)); } private void unbind(Session session) { if (TransactionSynchronizationManager.hasResource(sessionFactory)) { TransactionSynchronizationManager.unbindResource(sessionFactory); } } }././@LongLink0000000000000000000000000000021100000000000011557 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframework/webflow/persistence/package.htmllibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframew0000644000000000000000000000012711360615640027750 0ustar

Flow-managed persistence with Hibernate and JPA.

././@LongLink0000000000000000000000000000023200000000000011562 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframework/webflow/persistence/JpaFlowExecutionListener.javalibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframew0000644000000000000000000001670111360615646027763 0ustar /* * Copyright 2004-2008 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.springframework.webflow.persistence; import javax.persistence.EntityManager; import javax.persistence.EntityManagerFactory; import org.springframework.orm.jpa.EntityManagerHolder; import org.springframework.transaction.PlatformTransactionManager; import org.springframework.transaction.TransactionStatus; import org.springframework.transaction.support.TransactionCallbackWithoutResult; import org.springframework.transaction.support.TransactionSynchronizationManager; import org.springframework.transaction.support.TransactionTemplate; import org.springframework.webflow.core.collection.AttributeMap; import org.springframework.webflow.core.collection.MutableAttributeMap; import org.springframework.webflow.definition.FlowDefinition; import org.springframework.webflow.execution.FlowExecutionException; import org.springframework.webflow.execution.FlowExecutionListener; import org.springframework.webflow.execution.FlowExecutionListenerAdapter; import org.springframework.webflow.execution.FlowSession; import org.springframework.webflow.execution.RequestContext; /** * A {@link FlowExecutionListener} that implements the Flow Managed Persistence Context (FMPC) pattern using the * standard Java Persistence API (JPA). *

* This implementation uses standard JPA APIs. The general pattern is as follows: *

    *
  • When a flow execution starts, create a new JPA persistence context and bind it to flow scope under the name * {@link #PERSISTENCE_CONTEXT_ATTRIBUTE}. *
  • Before processing a flow execution request, expose the flow-scoped persistence context as the "current" * persistence context for the current thread. *
  • When an existing flow pauses, unbind the persistence context from the current thread. *
  • When an existing flow ends, commit the changes made to the persistence context in a transaction if the ending * state is a commit state. Then, unbind the context and close it. *
* * The general data access pattern implemented here is: *
    *
  • Create a new persistence context when a new flow execution with the 'persistenceContext' attribute starts *
  • Load some objects into this persistence context *
  • Perform edits to those objects over a series of requests into the flow *
  • On successful conversation completion, commit and flush those edits to the database, applying a version check if * necessary. *
* *

* Note: All data access except for the final commit will, by default, be non-transactional. However, a flow may call * into a transactional service layer to fetch objects during the conversation in the context of a read-only system * transaction if the underlying JPA Transaction Manager supports this. Spring's JPA TransactionManager does support * this when working with a Hibernate JPA provider, for example. In that case, Spring will handle setting the FlushMode * to MANUAL to ensure any in-progress changes to managed persistent entities are not flushed, while reads of new * objects occur transactionally. *

* Care should be taken to prevent premature commits of flow data while the flow is in progress. You would generally not * want intermediate flushing to happen, as the nature of a flow implies a transient, isolated resource that can be * canceled before it ends. Generally, the only time a read-write transaction should be started is upon successful * completion of the flow, triggered by reaching a 'commit' end state. * * @author Keith Donald * @author Juergen Hoeller */ public class JpaFlowExecutionListener extends FlowExecutionListenerAdapter { /** * The name of the attribute the flow {@link EntityManager persistence context} is indexed under. */ public static final String PERSISTENCE_CONTEXT_ATTRIBUTE = "persistenceContext"; private EntityManagerFactory entityManagerFactory; private TransactionTemplate transactionTemplate; /** * Create a new JPA flow execution listener using given JPA Entity Manager factory. * @param entityManagerFactory the entity manager factory to use */ public JpaFlowExecutionListener(EntityManagerFactory entityManagerFactory, PlatformTransactionManager transactionManager) { this.entityManagerFactory = entityManagerFactory; this.transactionTemplate = new TransactionTemplate(transactionManager); } public void sessionStarting(RequestContext context, FlowSession session, MutableAttributeMap input) { if (!session.isRoot()) { FlowSession parent = session.getParent(); if (isPersistenceContext(parent.getDefinition())) { unbind(getEntityManager(parent)); } } if (isPersistenceContext(session.getDefinition())) { EntityManager em = entityManagerFactory.createEntityManager(); session.getScope().put(PERSISTENCE_CONTEXT_ATTRIBUTE, em); bind(em); } } public void paused(RequestContext context) { if (isPersistenceContext(context.getActiveFlow())) { unbind(getEntityManager(context.getFlowExecutionContext().getActiveSession())); } } public void resuming(RequestContext context) { if (isPersistenceContext(context.getActiveFlow())) { bind(getEntityManager(context.getFlowExecutionContext().getActiveSession())); } } public void sessionEnding(RequestContext context, FlowSession session, String outcome, MutableAttributeMap output) { if (isPersistenceContext(session.getDefinition())) { final EntityManager em = getEntityManager(session); Boolean commitStatus = session.getState().getAttributes().getBoolean("commit"); if (Boolean.TRUE.equals(commitStatus)) { transactionTemplate.execute(new TransactionCallbackWithoutResult() { protected void doInTransactionWithoutResult(TransactionStatus status) { em.joinTransaction(); } }); } unbind(em); em.close(); } } public void sessionEnded(RequestContext context, FlowSession session, String outcome, AttributeMap output) { if (!session.isRoot()) { FlowSession parent = session.getParent(); if (isPersistenceContext(parent.getDefinition())) { bind(getEntityManager(parent)); } } } public void exceptionThrown(RequestContext context, FlowExecutionException exception) { if (context.getFlowExecutionContext().isActive()) { if (isPersistenceContext(context.getActiveFlow())) { unbind(getEntityManager(context.getFlowExecutionContext().getActiveSession())); } } } // internal helpers private boolean isPersistenceContext(FlowDefinition flow) { return flow.getAttributes().contains(PERSISTENCE_CONTEXT_ATTRIBUTE); } private EntityManager getEntityManager(FlowSession session) { return (EntityManager) session.getScope().get(PERSISTENCE_CONTEXT_ATTRIBUTE); } private void bind(EntityManager em) { TransactionSynchronizationManager.bindResource(entityManagerFactory, new EntityManagerHolder(em)); } private void unbind(EntityManager em) { if (TransactionSynchronizationManager.hasResource(entityManagerFactory)) { TransactionSynchronizationManager.unbindResource(entityManagerFactory); } } } ././@LongLink0000000000000000000000000000016600000000000011570 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframework/webflow/test/libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframew0000755000000000000000000000000011360615646027754 5ustar ././@LongLink0000000000000000000000000000022100000000000011560 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframework/webflow/test/MockViewFactoryCreator.javalibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframew0000644000000000000000000000747411360615646027772 0ustar /* * Copyright 2004-2008 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.springframework.webflow.test; import java.io.IOException; import java.io.Serializable; import org.springframework.binding.convert.ConversionService; import org.springframework.binding.expression.Expression; import org.springframework.binding.expression.ExpressionParser; import org.springframework.core.style.ToStringCreator; import org.springframework.webflow.engine.builder.BinderConfiguration; import org.springframework.webflow.engine.builder.ViewFactoryCreator; import org.springframework.webflow.execution.Event; import org.springframework.webflow.execution.RequestContext; import org.springframework.webflow.execution.View; import org.springframework.webflow.execution.ViewFactory; /** * A view factory creator that returns view factories that produce Mock View implementations that can be used to assert * that the correct view id was selected as part of a flow execution test. * * @author Keith Donald */ class MockViewFactoryCreator implements ViewFactoryCreator { public ViewFactory createViewFactory(Expression viewId, ExpressionParser expressionParser, ConversionService conversionService, BinderConfiguration binderConfiguration) { return new MockViewFactory(viewId); } public String getViewIdByConvention(String viewStateId) { return viewStateId; } /** * Returns a Mock View implementation that simply holds the evaluated view identifier. * @author Keith Donald */ static class MockViewFactory implements ViewFactory { private Expression viewId; /** * Creates a new mock view factory * @param viewId the view id expression */ public MockViewFactory(Expression viewId) { this.viewId = viewId; } public View getView(RequestContext context) { String viewId = (String) this.viewId.getValue(context); return new MockView(viewId, context); } } /** * A Mock view implementation that simply holds a reference to a identifier for a view that should be rendered. * Useful to assert that the right view was selected as part of a flow execution test, without actually exercising * any real rendering logic. * * @author Keith Donald */ static class MockView implements View { /** * The id of the view that would have been rendered. */ private String viewId; private RequestContext context; public MockView(String viewId, RequestContext context) { this.viewId = viewId; this.context = context; } /** * Returns the id of the view that would have been rendered. * @return the view id */ public String getViewId() { return viewId; } public void render() throws IOException { context.getExternalContext().getResponseWriter().write(viewId); } public boolean userEventQueued() { return hasFlowEvent(); } public void processUserEvent() { // TODO - implement me as appropriate for a test environment } public Serializable getUserEventState() { return null; } public boolean hasFlowEvent() { return context.getRequestParameters().contains("_eventId"); } public Event getFlowEvent() { return new Event(this, context.getRequestParameters().get("_eventId")); } public void saveState() { } public String toString() { return new ToStringCreator(this).append("viewId", viewId).toString(); } } }././@LongLink0000000000000000000000000000023100000000000011561 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframework/webflow/test/TestFlowBuilderServicesFactory.javalibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframew0000644000000000000000000000222611360615640027752 0ustar package org.springframework.webflow.test; import org.springframework.binding.convert.service.DefaultConversionService; import org.springframework.context.support.StaticApplicationContext; import org.springframework.webflow.engine.builder.support.FlowBuilderServices; import org.springframework.webflow.expression.DefaultExpressionParserFactory; /** * Factory that encapsulates configuration of default flow builder services for a test environment. * @author Keith Donald */ public class TestFlowBuilderServicesFactory { private TestFlowBuilderServicesFactory() { } public static FlowBuilderServices getServices() { FlowBuilderServices services = new FlowBuilderServices(); services.setViewFactoryCreator(new MockViewFactoryCreator()); services.setConversionService(new DefaultConversionService()); services.setExpressionParser(DefaultExpressionParserFactory.getExpressionParser()); services.setApplicationContext(createTestApplicationContext()); return services; } private static StaticApplicationContext createTestApplicationContext() { StaticApplicationContext context = new StaticApplicationContext(); context.refresh(); return context; } }././@LongLink0000000000000000000000000000022300000000000011562 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframework/webflow/test/MockFlowExecutionContext.javalibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframew0000644000000000000000000001172511360615632027757 0ustar /* * Copyright 2004-2008 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.springframework.webflow.test; import org.springframework.webflow.core.collection.AttributeMap; import org.springframework.webflow.core.collection.LocalAttributeMap; import org.springframework.webflow.core.collection.MutableAttributeMap; import org.springframework.webflow.definition.FlowDefinition; import org.springframework.webflow.engine.Flow; import org.springframework.webflow.execution.FlowExecutionContext; import org.springframework.webflow.execution.FlowExecutionKey; import org.springframework.webflow.execution.FlowExecutionOutcome; import org.springframework.webflow.execution.FlowSession; /** * A stub implementation of the flow execution context interface. * * @see FlowExecutionContext * * @author Keith Donald */ public class MockFlowExecutionContext implements FlowExecutionContext { private boolean started; private FlowExecutionKey key; private FlowDefinition flow; private FlowSession activeSession; private MutableAttributeMap flashScope = new LocalAttributeMap(); private MutableAttributeMap conversationScope = new LocalAttributeMap(); private MutableAttributeMap attributes = new LocalAttributeMap(); private FlowExecutionOutcome outcome; /** * Creates a new mock flow execution context -- automatically installs a root flow definition and active flow * session. */ public MockFlowExecutionContext() { setActiveSession(new MockFlowSession()); this.flow = activeSession.getDefinition(); } /** * Creates a new mock flow execution context for the specified root flow definition. */ public MockFlowExecutionContext(Flow flow) { this(new MockFlowSession(flow)); } /** * Creates a new mock flow execution context for the specified active flow session. */ public MockFlowExecutionContext(FlowSession flowSession) { setActiveSession(flowSession); this.flow = flowSession.getDefinition(); } public FlowExecutionKey getKey() { return key; } public String getCaption() { return flow.getCaption(); } // implementing flow execution context public FlowDefinition getDefinition() { return flow; } public boolean hasStarted() { return started; } public boolean isActive() { return activeSession != null; } public boolean hasEnded() { return hasStarted() && !isActive(); } public FlowSession getActiveSession() throws IllegalStateException { if (activeSession == null) { throw new IllegalStateException("No flow session is active"); } return activeSession; } public MutableAttributeMap getFlashScope() { return flashScope; } public MutableAttributeMap getConversationScope() { return conversationScope; } public AttributeMap getAttributes() { return attributes; } public FlowExecutionOutcome getOutcome() { return outcome; } // convenience mock accessors public Flow getDefinitionInternal() { return (Flow) getDefinition(); } // mutators /** * Sets the top-level flow definition. */ public void setFlow(FlowDefinition rootFlow) { this.flow = rootFlow; } /** * Sets the flow execution key */ public void setKey(FlowExecutionKey key) { this.key = key; } /** * Sets the mock session to be the active session. */ public void setActiveSession(FlowSession activeSession) { this.activeSession = activeSession; if (!started && activeSession != null) { started = true; } } /** * Sets the flow execution flash scope. */ public void setFlashScope(MutableAttributeMap scope) { this.flashScope = scope; } /** * Sets the flow execution conversation scope. */ public void setConversationScope(MutableAttributeMap scope) { this.conversationScope = scope; } /** * Sets the result of this flow ending. * @param outcome the ended outcome */ public void setOutcome(FlowExecutionOutcome outcome) { this.outcome = outcome; } // convenience accessors /** * Returns the mock active flow session. */ public MockFlowSession getMockActiveSession() { return (MockFlowSession) activeSession; } /** * Returns the mutable execution attribute map. * @return the execution attribute map */ public MutableAttributeMap getAttributeMap() { return attributes; } /** * Puts a execution attribute into the context. * @param attributeName the attribute name * @param attributeValue the attribute value */ public void putAttribute(String attributeName, Object attributeValue) { attributes.put(attributeName, attributeValue); } }././@LongLink0000000000000000000000000000022400000000000011563 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframework/webflow/test/GeneratedFlowExecutionKey.javalibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframew0000644000000000000000000000305211360615636027755 0ustar /* * Copyright 2004-2008 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.springframework.webflow.test; import org.springframework.webflow.execution.FlowExecutionKey; /** * A simple flow execution key implementation. New instances of this class get their values from a sequence encapsulated * as a static private variable of this class. * * @author Keith Donald */ public class GeneratedFlowExecutionKey extends FlowExecutionKey { private static int nextKey = 1; private int value; /** * Creates a new mock flow execution key. */ public GeneratedFlowExecutionKey() { this.value = nextKey(); } public boolean equals(Object o) { if (!(o instanceof GeneratedFlowExecutionKey)) { return false; } GeneratedFlowExecutionKey key = (GeneratedFlowExecutionKey) o; return value == key.value; } public int hashCode() { return value * 29; } public String toString() { return String.valueOf(value); } private static int nextKey() { int key = nextKey; nextKey++; return key; } }././@LongLink0000000000000000000000000000022100000000000011560 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframework/webflow/test/MockFlowBuilderContext.javalibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframew0000644000000000000000000000622611360615634027761 0ustar /* * Copyright 2004-2008 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.springframework.webflow.test; import org.springframework.beans.factory.config.ConfigurableBeanFactory; import org.springframework.context.ConfigurableApplicationContext; import org.springframework.webflow.core.collection.AttributeMap; import org.springframework.webflow.core.collection.CollectionUtils; import org.springframework.webflow.definition.registry.FlowDefinitionRegistryImpl; import org.springframework.webflow.engine.Flow; import org.springframework.webflow.engine.builder.support.FlowBuilderContextImpl; /** * A stub flow service locator implementation suitable for a test environment. *

* Allows programmatic registration of subflows needed by a flow execution being tested, see * {@link #registerSubflow(Flow)}. Subflows registered are typically stubs that verify parent flow input and output * scenarios. *

* Also supports programmatic registration of additional custom services needed by a flow (such as Actions) managed in a * backing Spring {@link ConfigurableBeanFactory}. See the {@link #registerBean(String, Object)} method. Beans * registered are typically mocks or stubs of business services invoked by the flow. * * @author Keith Donald */ public class MockFlowBuilderContext extends FlowBuilderContextImpl { /** * Creates a new mock flow service locator. */ public MockFlowBuilderContext(String flowId) { this(flowId, CollectionUtils.EMPTY_ATTRIBUTE_MAP); } /** * Creates a new mock flow service locator. */ public MockFlowBuilderContext(String flowId, AttributeMap attributes) { super(flowId, attributes, new FlowDefinitionRegistryImpl(), TestFlowBuilderServicesFactory.getServices()); } /** * Register a subflow definition in the backing flow registry, typically to support a flow execution test. For test * scenarios, the subflow is often a stub used to verify parent flow input and output mapping behavior. * @param subflow the subflow */ public void registerSubflow(Flow subflow) { ((FlowDefinitionRegistryImpl) getFlowDefinitionLocator()).registerFlowDefinition(subflow); } /** * Register a bean in the backing bean factory, typically to support a flow execution test. For test scenarios, if * the bean is a service invoked by a bean invoking action it is often a stub or dynamic mock implementation of the * service's business interface. * @param beanName the bean name * @param bean the singleton instance */ public void registerBean(String beanName, Object bean) { ((ConfigurableApplicationContext) getApplicationContext()).getBeanFactory().registerSingleton(beanName, bean); } }././@LongLink0000000000000000000000000000021500000000000011563 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframework/webflow/test/MockRequestContext.javalibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframew0000644000000000000000000002532211360615642027756 0ustar /* * Copyright 2004-2008 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.springframework.webflow.test; import org.springframework.binding.message.DefaultMessageContext; import org.springframework.binding.message.MessageContext; import org.springframework.web.multipart.MultipartFile; import org.springframework.webflow.context.ExternalContext; import org.springframework.webflow.core.collection.AttributeMap; import org.springframework.webflow.core.collection.LocalAttributeMap; import org.springframework.webflow.core.collection.MutableAttributeMap; import org.springframework.webflow.core.collection.ParameterMap; import org.springframework.webflow.definition.FlowDefinition; import org.springframework.webflow.definition.StateDefinition; import org.springframework.webflow.definition.TransitionDefinition; import org.springframework.webflow.engine.Flow; import org.springframework.webflow.engine.Transition; import org.springframework.webflow.engine.TransitionableState; import org.springframework.webflow.execution.Event; import org.springframework.webflow.execution.FlowExecutionContext; import org.springframework.webflow.execution.FlowSession; import org.springframework.webflow.execution.RequestContext; import org.springframework.webflow.execution.View; /** * Mock implementation of the RequestContext interface to facilitate standalone flow artifact (e.g. action) * unit tests. * * @see org.springframework.webflow.execution.RequestContext * @see org.springframework.webflow.execution.Action * * @author Keith Donald * @author Erwin Vervaet */ public class MockRequestContext implements RequestContext { private FlowExecutionContext flowExecutionContext; private ExternalContext externalContext; private MessageContext messageContext; private MutableAttributeMap requestScope = new LocalAttributeMap(); private MutableAttributeMap attributes = new LocalAttributeMap(); private Event currentEvent; private Transition currentTransition; private View currentView; /** * Convenience constructor that creates a new mock request context with the following defaults: *

    *
  • A mock flow execution context with a active session of flow "mockFlow" in state "mockState". *
  • A mock external context with no request parameters set. *
* To add request parameters to this request, use the {@link #putRequestParameter(String, String)} method. */ public MockRequestContext() { this(new MockFlowExecutionContext()); } /** * Convenience constructor that creates a new mock request context with the following defaults: *
    *
  • A mock flow execution context with an active session for the specified flow. *
  • A mock external context with no request parameters set. *
* To add request parameters to this request, use the {@link #putRequestParameter(String, String)} method. * @param flow the flow definition */ public MockRequestContext(Flow flow) { this(new MockFlowExecutionContext(flow)); } /** * Convenience constructor that creates a new mock request context with the following defaults: *
    *
  • A mock flow execution context with a active session of flow "mockFlow" in state "mockState". *
  • A mock external context with the provided parameters set. *
*/ public MockRequestContext(ParameterMap requestParameterMap) { this.flowExecutionContext = new MockFlowExecutionContext(); this.externalContext = new MockExternalContext(requestParameterMap); this.messageContext = new DefaultMessageContext(); } /** * Creates a new mock request context with the provided flow execution context. To add request parameters to this * request, use the {@link #putRequestParameter(String, String)} method. * @param flowExecutionContext the flow execution context */ public MockRequestContext(FlowExecutionContext flowExecutionContext) { this.flowExecutionContext = flowExecutionContext; this.externalContext = new MockExternalContext(); this.messageContext = new DefaultMessageContext(); } // implementing RequestContext public FlowDefinition getActiveFlow() { return getFlowExecutionContext().getActiveSession().getDefinition(); } public StateDefinition getCurrentState() { return getFlowExecutionContext().getActiveSession().getState(); } public TransitionDefinition getMatchingTransition(String eventId) throws IllegalStateException { TransitionableState state = (TransitionableState) getFlowExecutionContext().getActiveSession().getState(); TransitionDefinition transition = state.getTransition(eventId); if (transition == null) { transition = getRootFlow().getGlobalTransition(eventId); } return transition; } public boolean inViewState() { return getFlowExecutionContext().isActive() && getCurrentState() != null && getCurrentState().isViewState(); } public MutableAttributeMap getRequestScope() { return requestScope; } public MutableAttributeMap getFlashScope() { return getMockFlowExecutionContext().getFlashScope(); } public MutableAttributeMap getViewScope() throws IllegalStateException { return getMockFlowExecutionContext().getActiveSession().getViewScope(); } public MutableAttributeMap getFlowScope() { return getFlowExecutionContext().getActiveSession().getScope(); } public MutableAttributeMap getConversationScope() { return getMockFlowExecutionContext().getConversationScope(); } public ParameterMap getRequestParameters() { return externalContext.getRequestParameterMap(); } public MessageContext getMessageContext() { return messageContext; } public ExternalContext getExternalContext() { return externalContext; } public FlowExecutionContext getFlowExecutionContext() { return flowExecutionContext; } public Event getCurrentEvent() { return currentEvent; } public TransitionDefinition getCurrentTransition() { return currentTransition; } public View getCurrentView() { return currentView; } public MutableAttributeMap getAttributes() { return attributes; } public String getFlowExecutionUrl() { if (flowExecutionContext.getKey() == null) { throw new IllegalStateException( "Flow execution key not yet assigned; unable to build the flow execution url"); } else { String flowDefinitionId = flowExecutionContext.getDefinition().getId(); return externalContext.getFlowExecutionUrl(flowDefinitionId, flowExecutionContext.getKey().toString()); } } public void sendFlowExecutionRedirect() { if (flowExecutionContext.getKey() == null) { throw new IllegalStateException( "Flow execution key not yet assigned; unable to send a flow execution redirect request"); } else { externalContext.requestFlowExecutionRedirect(); } } // mutators for configuring the mock /** * Sets the active flow session of the executing flow associated with this request. This will influence * {@link #getActiveFlow()} and {@link #getCurrentState()}, as well as {@link #getFlowScope()} and * {@link #getFlashScope()}. */ public void setActiveSession(FlowSession flowSession) { getMockFlowExecutionContext().setActiveSession(flowSession); } /** * Sets the external context. */ public void setExternalContext(ExternalContext externalContext) { this.externalContext = externalContext; } /** * Sets the flow execution context. */ public void setFlowExecutionContext(FlowExecutionContext flowExecutionContext) { this.flowExecutionContext = flowExecutionContext; } /** * Set the current event being processed by this flow. * @param event the current event */ public void setCurrentEvent(Event event) { this.currentEvent = event; } /** * Set the current transition executing in this request context. * @param transition the current transition to set */ public void setCurrentTransition(Transition transition) { this.currentTransition = transition; } /** * Set the current view in this request context. * @param currentView the current view */ public void setCurrentView(View currentView) { this.currentView = currentView; } /** * Set a request context attribute. * @param attributeName the attribute name * @param attributeValue the attribute value */ public void setAttribute(String attributeName, Object attributeValue) { attributes.put(attributeName, attributeValue); } /** * Remove a request context attribute. * @param attributeName the attribute name */ public void removeAttribute(String attributeName) { attributes.remove(attributeName); } /** * Adds a request parameter to the configured external context. * @param parameterName the parameter name * @param parameterValue the parameter value */ public void putRequestParameter(String parameterName, String parameterValue) { getMockExternalContext().putRequestParameter(parameterName, parameterValue); } /** * Adds a multi-valued request parameter to the configured external context. * @param parameterName the parameter name * @param parameterValues the parameter values */ public void putRequestParameter(String parameterName, String[] parameterValues) { getMockExternalContext().putRequestParameter(parameterName, parameterValues); } /** * Puts a MultipartFile request parameter into the mock parameter map. * @param parameterName the parameter name * @param parameterValue the parameter value */ public void putRequestParameter(String parameterName, MultipartFile parameterValue) { getMockExternalContext().putRequestParameter(parameterName, parameterValue); } // convenience accessors /** * Returns the root flow definition for this request context. Assumes a {@link Flow} implementation. */ public Flow getRootFlow() { return getMockFlowExecutionContext().getDefinitionInternal(); } /** * Returns the contained mutable context {@link AttributeMap attribute map} allowing setting of mock context * attributes. * @return the attribute map */ public MutableAttributeMap getAttributeMap() { return attributes; } /** * Returns the flow execution context as a {@link MockFlowExecutionContext}. */ public MockFlowExecutionContext getMockFlowExecutionContext() { return (MockFlowExecutionContext) flowExecutionContext; } /** * Returns the external context as a {@link MockExternalContext}. */ public MockExternalContext getMockExternalContext() { return (MockExternalContext) externalContext; } }././@LongLink0000000000000000000000000000022600000000000011565 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframework/webflow/test/MockFlowExecutionKeyFactory.javalibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframew0000644000000000000000000000275311360615640027757 0ustar /* * Copyright 2004-2008 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.springframework.webflow.test; import org.springframework.webflow.execution.FlowExecution; import org.springframework.webflow.execution.FlowExecutionKey; import org.springframework.webflow.execution.FlowExecutionKeyFactory; /** * Trivial flow execution key factory implementation that returns a mock flow execution key each time. The mock key * returned is unique: its value is the result of incrementing a sequence managed in static memory. * * @author Keith Donald */ public class MockFlowExecutionKeyFactory implements FlowExecutionKeyFactory { public FlowExecutionKey getKey(FlowExecution execution) { return new GeneratedFlowExecutionKey(); } public void removeAllFlowExecutionSnapshots(FlowExecution execution) { } public void removeFlowExecutionSnapshot(FlowExecution execution) { } public void updateFlowExecutionSnapshot(FlowExecution execution) { } } ././@LongLink0000000000000000000000000000021700000000000011565 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframework/webflow/test/MockFlowExecutionKey.javalibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframew0000644000000000000000000000264111360615636027760 0ustar /* * Copyright 2004-2008 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.springframework.webflow.test; import org.springframework.webflow.execution.FlowExecutionKey; /** * A simple flow execution key implementation. New instances of this class get their values from a sequence encapsulated * as a static private variable of this class. * * @author Keith Donald */ public class MockFlowExecutionKey extends FlowExecutionKey { private String value; /** * Creates a new mock flow execution key. */ public MockFlowExecutionKey(String value) { this.value = value; } public boolean equals(Object o) { if (!(o instanceof MockFlowExecutionKey)) { return false; } MockFlowExecutionKey key = (MockFlowExecutionKey) o; return value.equals(key.value); } public int hashCode() { return value.hashCode(); } public String toString() { return value; } }././@LongLink0000000000000000000000000000020200000000000011557 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframework/webflow/test/package.htmllibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframew0000644000000000000000000000162711360615632027757 0ustar

Support for testing flows and their associated artifacts.

When you want to unit test one of your flows the {@link org.springframework.webflow.test.execution.AbstractFlowExecutionTests} and its associated subclasses provide a base you can extend.

When unit testing flow artifacts such as actions in isolation, the {@link org.springframework.webflow.test.MockRequestContext} is of particular interest.

All mock implementations provided by this package are NOT intended to be used for anything but standalone unit tests. They are simple state holders, stub implementations, at least if you follow Martin Fowler's reasoning. These classes are called Mocks to be consistent with the naming convention in the rest of the Spring framework (e.g. MockHttpServletRequest, ...).

././@LongLink0000000000000000000000000000020000000000000011555 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframework/webflow/test/execution/libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframew0000755000000000000000000000000011360615646027754 5ustar ././@LongLink0000000000000000000000000000023700000000000011567 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframework/webflow/test/execution/AbstractFlowExecutionTests.javalibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframew0000644000000000000000000003603411360615644027762 0ustar /* * Copyright 2004-2008 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.springframework.webflow.test.execution; import junit.framework.TestCase; import org.springframework.util.Assert; import org.springframework.webflow.context.ExternalContext; import org.springframework.webflow.core.collection.MutableAttributeMap; import org.springframework.webflow.definition.FlowDefinition; import org.springframework.webflow.engine.impl.FlowExecutionImpl; import org.springframework.webflow.engine.impl.FlowExecutionImplFactory; import org.springframework.webflow.execution.FlowExecution; import org.springframework.webflow.execution.FlowExecutionException; import org.springframework.webflow.execution.FlowExecutionFactory; import org.springframework.webflow.execution.FlowExecutionOutcome; import org.springframework.webflow.test.MockExternalContext; /** * Base class for tests that verify a flow executes as expected. Flow execution tests authored by subclasses should test * that a flow responds to all supported transition criteria correctly, transitioning to the correct states and * producing the expected results on the occurrence of external events. *

* A typical flow execution test case will test: *

    *
  • That the flow execution starts as expected (see {@link #startFlow(MutableAttributeMap, ExternalContext)}). *
  • That a state executes the appropriate transition when an event is signaled. A test case should be authored for * each logical event that can occur, where an event triggers a transition representing a path through the flow. The * goal should be to exercise all state transitions (see the {@link #resumeFlow(ExternalContext)} variants and the * {@link #setCurrentState(String)} for more information). *
  • That given a transition that leads to an interactive state type (such as a view state or an end state), the view * selected matches what was expected and the current state of the flow matches what is expected. *
*

* A flow execution test can effectively automate and validate the orchestration required to drive an end-to-end * business task that spans several steps involving the user to complete. Such tests are a good way to test your system * top-down starting at the web-tier and pushing through all the way to the DB without having to deploy to a servlet or * portlet container. In addition, they can be used to effectively test a flow's execution (the web layer) standalone, * typically with a mock service layer. * * @author Keith Donald */ public abstract class AbstractFlowExecutionTests extends TestCase { /** * The factory that will create the flow execution to test. */ private FlowExecutionFactory flowExecutionFactory; /** * The flow execution running the flow when the test is active (runtime object). */ private FlowExecution flowExecution; /** * The outcome that was reached when the flow ends; initially null. */ private FlowExecutionOutcome flowExecutionOutcome; /** * Constructs a default flow execution test. * @see #setName(String) */ public AbstractFlowExecutionTests() { super(); } /** * Constructs a flow execution test with given name. * @param name the name of the test */ public AbstractFlowExecutionTests(String name) { super(name); } /** * Gets the factory that will create the flow execution to test. This method will create the factory if it is not * already set. * @return the flow execution factory * @see #createFlowExecutionFactory() */ protected FlowExecutionFactory getFlowExecutionFactory() { if (flowExecutionFactory == null) { flowExecutionFactory = createFlowExecutionFactory(); } return flowExecutionFactory; } /** * Start the flow execution to be tested. * @param context the external context providing information about the caller's environment, used by the flow * execution during the start operation * @throws FlowExecutionException if an exception was thrown while starting the flow execution */ protected void startFlow(ExternalContext context) throws FlowExecutionException { startFlow(null, context); } /** * Start the flow execution to be tested. * @param input input to pass the flow * @param context the external context providing information about the caller's environment, used by the flow * execution during the start operation * @throws FlowExecutionException if an exception was thrown while starting the flow execution */ protected void startFlow(MutableAttributeMap input, ExternalContext context) throws FlowExecutionException { flowExecution = getFlowExecutionFactory().createFlowExecution(getFlowDefinition()); flowExecution.start(input, context); if (flowExecution.hasEnded()) { flowExecutionOutcome = flowExecution.getOutcome(); } } /** * Resume the flow execution to be tested. * @param context the external context providing information about the caller's environment, used by the flow * execution during the start operation * @throws FlowExecutionException if an exception was thrown while starting the flow execution */ protected void resumeFlow(ExternalContext context) throws FlowExecutionException { Assert.state(flowExecution != null, "The flow execution to test is [null]; " + "you must start the flow execution before you can resume it!"); flowExecution.resume(context); if (flowExecution.hasEnded()) { flowExecutionOutcome = flowExecution.getOutcome(); } } /** * Sets the current state of the flow execution being tested. If the execution has not been started, it will be * created and activated. * @param stateId the state id */ protected void setCurrentState(String stateId) { if (flowExecution == null) { flowExecution = getFlowExecutionFactory().createFlowExecution(getFlowDefinition()); } ((FlowExecutionImpl) flowExecution).setCurrentState(stateId); } // convenience accessors /** * Returns the flow execution being tested. * @return the flow execution * @throws IllegalStateException the execution has not been started */ protected FlowExecution getFlowExecution() throws IllegalStateException { return flowExecution; } /** * Returns the flow execution outcome that was reached. * @return the flow execution outcome, or null if the flow execution has not ended */ protected FlowExecutionOutcome getFlowExecutionOutcome() { return flowExecutionOutcome; } /** * Returns view scope. * @return view scope */ protected MutableAttributeMap getViewScope() throws IllegalStateException { return getFlowExecution().getActiveSession().getViewScope(); } /** * Returns flow scope. * @return flow scope */ protected MutableAttributeMap getFlowScope() throws IllegalStateException { return getFlowExecution().getActiveSession().getScope(); } /** * Returns conversation scope. * @return conversation scope */ protected MutableAttributeMap getConversationScope() throws IllegalStateException { return getFlowExecution().getConversationScope(); } /** * Returns the attribute in view scope. View-scoped attributes are local to the current view state and are cleared * when the view state exits. * @param attributeName the name of the attribute * @return the attribute value */ protected Object getViewAttribute(String attributeName) { return getFlowExecution().getActiveSession().getViewScope().get(attributeName); } /** * Returns the required attribute in view scope; asserts the attribute is present. View-scoped attributes are local * to the current view state and are cleared when the view state exits. * @param attributeName the name of the attribute * @return the attribute value * @throws IllegalStateException if the attribute was not present */ protected Object getRequiredViewAttribute(String attributeName) throws IllegalStateException { return getFlowExecution().getActiveSession().getViewScope().getRequired(attributeName); } /** * Returns the required attribute in view scope; asserts the attribute is present and of the correct type. * View-scoped attributes are local to the current view state and are cleared when the view state exits. * @param attributeName the name of the attribute * @return the attribute value * @throws IllegalStateException if the attribute was not present or was of the wrong type */ protected Object getRequiredViewAttribute(String attributeName, Class requiredType) throws IllegalStateException { return getFlowExecution().getActiveSession().getViewScope().getRequired(attributeName, requiredType); } /** * Returns the attribute in flow scope. Flow-scoped attributes are local to the active flow session. * @param attributeName the name of the attribute * @return the attribute value */ protected Object getFlowAttribute(String attributeName) { return getFlowExecution().getActiveSession().getScope().get(attributeName); } /** * Returns the required attribute in flow scope; asserts the attribute is present. Flow-scoped attributes are local * to the active flow session. * @param attributeName the name of the attribute * @return the attribute value * @throws IllegalStateException if the attribute was not present */ protected Object getRequiredFlowAttribute(String attributeName) throws IllegalStateException { return getFlowExecution().getActiveSession().getScope().getRequired(attributeName); } /** * Returns the required attribute in flow scope; asserts the attribute is present and of the correct type. * Flow-scoped attributes are local to the active flow session. * @param attributeName the name of the attribute * @return the attribute value * @throws IllegalStateException if the attribute was not present or was of the wrong type */ protected Object getRequiredFlowAttribute(String attributeName, Class requiredType) throws IllegalStateException { return getFlowExecution().getActiveSession().getScope().getRequired(attributeName, requiredType); } /** * Returns the attribute in conversation scope. Conversation-scoped attributes are shared by all flow sessions. * @param attributeName the name of the attribute * @return the attribute value */ protected Object getConversationAttribute(String attributeName) { return getFlowExecution().getConversationScope().get(attributeName); } /** * Returns the required attribute in conversation scope; asserts the attribute is present. Conversation-scoped * attributes are shared by all flow sessions. * @param attributeName the name of the attribute * @return the attribute value * @throws IllegalStateException if the attribute was not present */ protected Object getRequiredConversationAttribute(String attributeName) throws IllegalStateException { return getFlowExecution().getConversationScope().getRequired(attributeName); } /** * Returns the required attribute in conversation scope; asserts the attribute is present and of the required type. * Conversation-scoped attributes are shared by all flow sessions. * @param attributeName the name of the attribute * @return the attribute value * @throws IllegalStateException if the attribute was not present or not of the required type */ protected Object getRequiredConversationAttribute(String attributeName, Class requiredType) throws IllegalStateException { return getFlowExecution().getConversationScope().getRequired(attributeName, requiredType); } // assert helpers /** * Assert that the entire flow execution is active; that is, it has not ended and has been started. */ protected void assertFlowExecutionActive() { assertTrue("The flow execution is not active but it should be", getFlowExecution().isActive()); } /** * Assert that the active flow session is for the flow with the provided id. * @param expectedActiveFlowId the flow id that should have a session active in the tested flow execution */ protected void assertActiveFlowEquals(String expectedActiveFlowId) { assertEquals("The active flow id '" + getFlowExecution().getActiveSession().getDefinition().getId() + "' does not equal the expected active flow id '" + expectedActiveFlowId + "'", expectedActiveFlowId, getFlowExecution().getActiveSession().getDefinition().getId()); } /** * Assert that the flow execution has ended; that is, it is no longer active. */ protected void assertFlowExecutionEnded() { assertTrue("The flow execution is still active but it should have ended", getFlowExecution().hasEnded()); } /** * Assert that the flow execution has ended with the outcome specified. * @param outcome the name of the flow execution outcome */ protected void assertFlowExecutionOutcomeEquals(String outcome) { assertNotNull("There has been no flow execution outcome", flowExecutionOutcome); assertEquals("The flow execution outcome is wrong", outcome, flowExecutionOutcome.getId()); } /** * Assert that the current state of the flow execution equals the provided state id. * @param expectedCurrentStateId the expected current state */ protected void assertCurrentStateEquals(String expectedCurrentStateId) { assertEquals("The current state '" + getFlowExecution().getActiveSession().getState().getId() + "' does not equal the expected state '" + expectedCurrentStateId + "'", expectedCurrentStateId, getFlowExecution().getActiveSession().getState().getId()); } /** * Assert that the response written to the mock context equals the response provided. * @param response the expected response * @param context the mock external context that was written to */ protected void assertResponseWrittenEquals(String response, MockExternalContext context) { assertEquals(response, context.getMockResponseWriter().getBuffer().toString()); } /** * Factory method to create the flow execution factory. Subclasses could override this if they want to use a custom * flow execution factory or custom configuration of the flow execution factory, registering flow execution * listeners for instance. The default implementation just returns a {@link FlowExecutionImplFactory} instance. * @return the flow execution factory */ protected FlowExecutionFactory createFlowExecutionFactory() { return new FlowExecutionImplFactory(); } /** * Directly update the flow execution used by the test by setting it to given flow execution. Use this if you have * somehow manipulated the flow execution being tested and want to continue the test with another flow execution. * @param flowExecution the flow execution to use */ protected void updateFlowExecution(FlowExecution flowExecution) { this.flowExecution = flowExecution; } /** * Returns the flow definition to be tested. Subclasses must implement. * @return the flow definition */ protected abstract FlowDefinition getFlowDefinition(); }././@LongLink0000000000000000000000000000025300000000000011565 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframework/webflow/test/execution/AbstractExternalizedFlowExecutionTests.javalibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframew0000644000000000000000000002033211360615640027750 0ustar /* * Copyright 2004-2008 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.springframework.webflow.test.execution; import org.springframework.core.io.DefaultResourceLoader; import org.springframework.core.io.ResourceLoader; import org.springframework.webflow.config.FlowDefinitionResource; import org.springframework.webflow.config.FlowDefinitionResourceFactory; import org.springframework.webflow.core.collection.AttributeMap; import org.springframework.webflow.definition.FlowDefinition; import org.springframework.webflow.definition.registry.FlowDefinitionRegistry; import org.springframework.webflow.engine.Flow; import org.springframework.webflow.engine.builder.FlowAssembler; import org.springframework.webflow.engine.builder.FlowBuilder; import org.springframework.webflow.engine.builder.support.FlowBuilderServices; import org.springframework.webflow.engine.impl.FlowExecutionImplFactory; import org.springframework.webflow.execution.FlowExecutionListener; import org.springframework.webflow.execution.factory.StaticFlowExecutionListenerLoader; import org.springframework.webflow.test.MockFlowBuilderContext; /** * Base class for flow integration tests that verify an externalized flow definition executes as expected. Supports * caching of the flow definition built from an externalized resource to speed up test execution. * * @author Keith Donald * @author Scott Andrews */ public abstract class AbstractExternalizedFlowExecutionTests extends AbstractFlowExecutionTests { /** * The cached flow definition. */ private static Flow cachedFlowDefinition; /** * The flag indicating if the flow definition built from an externalized resource as part of this test should be * cached. */ private boolean cacheFlowDefinition; /** * A helper for constructing paths to flow definition resources in the filesystem, classpath, or other location. */ private FlowDefinitionResourceFactory resourceFactory; /** * Private flow builder context object. */ private MockFlowBuilderContext flowBuilderContext; /** * Constructs a default externalized flow execution test. * @see #setName(String) */ public AbstractExternalizedFlowExecutionTests() { init(); } /** * Constructs an externalized flow execution test with given name. * @param name the name of the test */ public AbstractExternalizedFlowExecutionTests(String name) { super(name); init(); } /** * Returns if flow definition caching is turned on. */ protected boolean isCacheFlowDefinition() { return cacheFlowDefinition; } /** * Sets the flag indicating if the flow definition built from an externalized resource as part of this test should * be cached. Default is false. */ protected void setCacheFlowDefinition(boolean cacheFlowDefinition) { this.cacheFlowDefinition = cacheFlowDefinition; } /** * Sets system attributes to be associated with the flow execution the next time one is started. by this test. * Useful for assigning attributes that influence flow execution behavior. * @param executionAttributes the system attributes to assign */ protected void setFlowExecutionAttributes(AttributeMap executionAttributes) { getFlowExecutionImplFactory().setExecutionAttributes(executionAttributes); } /** * Set a single listener to be attached to the flow execution the next time one is started by this test. Useful for * attaching a listener that does test assertions during the execution of the flow. * @param executionListener the listener to attach */ protected void setFlowExecutionListener(FlowExecutionListener executionListener) { getFlowExecutionImplFactory().setExecutionListenerLoader( new StaticFlowExecutionListenerLoader(executionListener)); } /** * Set the listeners to be attached to the flow execution the next time one is started. by this test. Useful for * attaching listeners that do test assertions during the execution of the flow. * @param executionListeners the listeners to attach */ protected void setFlowExecutionListeners(FlowExecutionListener[] executionListeners) { getFlowExecutionImplFactory().setExecutionListenerLoader( new StaticFlowExecutionListenerLoader(executionListeners)); } /** * Returns the factory used to create pointers to externalized flow definition resources. * @return the resource factory */ protected FlowDefinitionResourceFactory getResourceFactory() { return resourceFactory; } /** * Returns the {@link ResourceLoader} used by the {@link FlowDefinitionResourceFactory} to load flow resources from * a path. Subclasses may override to customize the resource loader used. * @see #getResourceFactory() * @return the resource loader */ protected ResourceLoader createResourceLoader() { return new DefaultResourceLoader(); } protected final FlowDefinition getFlowDefinition() { if (isCacheFlowDefinition() && cachedFlowDefinition != null) { return cachedFlowDefinition; } Flow flow = buildFlow(); if (isCacheFlowDefinition()) { cachedFlowDefinition = flow; } return flow; } /** * Returns the flow definition being tested as a {@link Flow} implementation. Useful if you need to do specific * assertions against the configuration of the implementation. */ protected final Flow getFlow() { return (Flow) getFlowDefinition(); } /** * Factory method to assemble a flow definition from a resource. Called by {@link #getFlowDefinition()} to create * the "main" flow to test. May also be called by subclasses to create subflow definitions whose executions should * also be exercised by this test. * @return the built flow definition, ready for execution */ protected final Flow buildFlow() { FlowDefinitionResource resource = getResource(getResourceFactory()); flowBuilderContext = new MockFlowBuilderContext(resource.getId(), resource.getAttributes()); configureFlowBuilderContext(flowBuilderContext); FlowBuilder builder = createFlowBuilder(resource); FlowAssembler assembler = new FlowAssembler(builder, flowBuilderContext); return assembler.assembleFlow(); } /** * Subclasses may override this hook to customize the builder context for the flow being tested. Useful for * registering mock subflows or other {@link FlowBuilderServices flow builder services}. By default, this method * does nothing. * @param builderContext the mock flow builder context to configure */ protected void configureFlowBuilderContext(MockFlowBuilderContext builderContext) { } /** * Returns a reference to the flow definition registry used by the flow being tested to load subflows. Allows late * registration of dependent subflows on a per test-case basis. This is an alternative to registering such subflows * upfront in {@link #configureFlowBuilderContext(MockFlowBuilderContext)}. * @return the flow definition registry */ protected FlowDefinitionRegistry getFlowDefinitionRegistry() { return (FlowDefinitionRegistry) flowBuilderContext.getFlowDefinitionLocator(); } /** * Get the resource defining the flow to be tested. * @param resourceFactory a helper for constructing the resource to be tested * @return the flow definition resource */ protected abstract FlowDefinitionResource getResource(FlowDefinitionResourceFactory resourceFactory); /** * Create the flow builder to build the flow at the specified resource location. * @param resource the resource location of the flow definition * @return the flow builder that can build the flow definition */ protected abstract FlowBuilder createFlowBuilder(FlowDefinitionResource resource); // internal helpers private void init() { resourceFactory = new FlowDefinitionResourceFactory(createResourceLoader()); } private FlowExecutionImplFactory getFlowExecutionImplFactory() { return (FlowExecutionImplFactory) getFlowExecutionFactory(); } }././@LongLink0000000000000000000000000000021400000000000011562 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframework/webflow/test/execution/package.htmllibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframew0000644000000000000000000000014611360615646027757 0ustar

Support for testing the execution of a flow definition.

././@LongLink0000000000000000000000000000024200000000000011563 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframework/webflow/test/execution/AbstractXmlFlowExecutionTests.javalibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframew0000644000000000000000000001144411360615632027755 0ustar /* * Copyright 2004-2008 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.springframework.webflow.test.execution; import org.springframework.beans.factory.config.ConfigurableBeanFactory; import org.springframework.webflow.config.FlowDefinitionResource; import org.springframework.webflow.config.FlowDefinitionResourceFactory; import org.springframework.webflow.engine.builder.FlowBuilder; import org.springframework.webflow.engine.builder.model.FlowModelFlowBuilder; import org.springframework.webflow.engine.model.builder.DefaultFlowModelHolder; import org.springframework.webflow.engine.model.builder.FlowModelBuilder; import org.springframework.webflow.engine.model.builder.xml.XmlFlowModelBuilder; import org.springframework.webflow.engine.model.registry.FlowModelHolder; import org.springframework.webflow.engine.model.registry.FlowModelRegistry; import org.springframework.webflow.engine.model.registry.FlowModelRegistryImpl; /** * Base class for flow integration tests that verify an XML flow definition executes as expected. *

* Example usage: * *

 * public class SearchFlowExecutionTests extends AbstractXmlFlowExecutionTests {
 * 
 * 	protected FlowDefinitionResource getResource(FlowDefinitionResourceFactory resourceFactory) {
 * 		return resourceFactory.createClassPathResource("search-flow.xml", getClass());
 * 	}
 * 
 * 	public void testStartFlow() {
 * 		ExternalContext context = new MockExternalContext();
 * 		startFlow(context);
 * 		assertCurrentStateEquals("enterSearchCriteria");
 * 	}
 * 
 * 	protected void configureFlowBuilderContext(MockFlowBuilderContext builderContext) {
 * 		builderContext.registerBean("searchService", new TestSearchService());
 * 	}
 * 
 * }
 * 
* * @author Keith Donald * @author Erwin Vervaet * @author Scott Andrews */ public abstract class AbstractXmlFlowExecutionTests extends AbstractExternalizedFlowExecutionTests { private FlowModelRegistry flowModelRegistry = new FlowModelRegistryImpl(); /** * Constructs a default XML flow execution test. * @see #setName(String) */ public AbstractXmlFlowExecutionTests() { super(); } /** * Constructs an XML flow execution test with given name. * @param name the name of the test */ public AbstractXmlFlowExecutionTests(String name) { super(name); } protected final FlowBuilder createFlowBuilder(FlowDefinitionResource resource) { registerDependentFlowModels(); FlowModelBuilder modelBuilder = new XmlFlowModelBuilder(resource.getPath(), flowModelRegistry); FlowModelHolder modelHolder = new DefaultFlowModelHolder(modelBuilder); flowModelRegistry.registerFlowModel(resource.getId(), modelHolder); return new FlowModelFlowBuilder(modelHolder) { protected void registerFlowBeans(ConfigurableBeanFactory flowBeanFactory) { registerMockFlowBeans(flowBeanFactory); } }; } /** * Template method subclasses may override to return pointers to "flow model resources" needed to build the * definition of the flow being tested. Typically overridden when the flow being tested extends from another flow. * Default returns null, assuming no inheritance. * @param resourceFactory the resource factory * @return the flow definition model resources */ protected FlowDefinitionResource[] getModelResources(FlowDefinitionResourceFactory resourceFactory) { return null; } /** * Template method subclasses may override to register mock implementations of services used locally by the flow * being tested. By default, this method does nothing. * @param flowBeanFactory the local flow bean factory, you may register mock services with it using * {@link ConfigurableBeanFactory#registerSingleton(String, Object)} */ protected void registerMockFlowBeans(ConfigurableBeanFactory flowBeanFactory) { } // internal helpers private void registerDependentFlowModels() { FlowDefinitionResource[] modelResources = getModelResources(getResourceFactory()); if (modelResources != null) { for (int i = 0; i < modelResources.length; i++) { FlowDefinitionResource modelResource = modelResources[i]; FlowModelBuilder modelBuilder = new XmlFlowModelBuilder(modelResource.getPath(), flowModelRegistry); flowModelRegistry.registerFlowModel(modelResource.getId(), new DefaultFlowModelHolder(modelBuilder)); } } } }././@LongLink0000000000000000000000000000022400000000000011563 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframework/webflow/test/MockRequestControlContext.javalibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframew0000644000000000000000000001063111360615634027754 0ustar /* * Copyright 2004-2008 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.springframework.webflow.test; import org.springframework.webflow.core.collection.MutableAttributeMap; import org.springframework.webflow.engine.Flow; import org.springframework.webflow.engine.RequestControlContext; import org.springframework.webflow.engine.State; import org.springframework.webflow.engine.Transition; import org.springframework.webflow.engine.TransitionableState; import org.springframework.webflow.execution.Event; import org.springframework.webflow.execution.FlowExecutionContext; import org.springframework.webflow.execution.FlowExecutionKey; import org.springframework.webflow.execution.View; /** * Mock implementation of the {@link RequestControlContext} interface to facilitate standalone Flow and State unit * tests. * * @see org.springframework.webflow.execution.RequestContext * @see org.springframework.webflow.execution.FlowSession * @see org.springframework.webflow.engine.State * * @author Keith Donald */ public class MockRequestControlContext extends MockRequestContext implements RequestControlContext { /** * Creates a new mock request control context. */ public MockRequestControlContext() { } /** * Creates a new mock request control context for controlling a mock execution of the provided flow definition. * @param flow the flow definition */ public MockRequestControlContext(Flow flow) { super(flow); } /** * Creates a new mock request control context for controlling a flow execution. * @param flowExecutionContext the flow execution context */ public MockRequestControlContext(FlowExecutionContext flowExecutionContext) { super(flowExecutionContext); } // implementing RequestControlContext public void setCurrentState(State state) { getMockFlowExecutionContext().getMockActiveSession().setState(state); } public FlowExecutionKey assignFlowExecutionKey() { GeneratedFlowExecutionKey key = new GeneratedFlowExecutionKey(); getMockFlowExecutionContext().setKey(key); return key; } public void viewRendering(View view) { } public void viewRendered(View view) { } public boolean handleEvent(Event event) { setCurrentEvent(event); return ((Flow) getActiveFlow()).handleEvent(this); } public boolean execute(Transition transition) { return transition.execute((TransitionableState) getCurrentState(), this); } public void removeAllFlowExecutionSnapshots() { } public void removeCurrentFlowExecutionSnapshot() { } public void updateCurrentFlowExecutionSnapshot() { } public void start(Flow flow, MutableAttributeMap input) throws IllegalStateException { MockFlowSession session = new MockFlowSession(flow, input); if (getFlowExecutionContext().isActive()) { session.setParent(getFlowExecutionContext().getActiveSession()); } getMockFlowExecutionContext().setActiveSession(session); flow.start(this, input); } public void endActiveFlowSession(String outcome, MutableAttributeMap output) throws IllegalStateException { MockFlowSession endingSession = getMockFlowExecutionContext().getMockActiveSession(); endingSession.getDefinitionInternal().end(this, outcome, output); getMockFlowExecutionContext().setActiveSession(endingSession.getParent()); if (!getMockFlowExecutionContext().hasEnded()) { handleEvent(new Event(endingSession.getState(), outcome, output)); } } public boolean getRedirectOnPause() { if (!getExternalContext().isResponseAllowed()) { return true; } Boolean redirectOnPause = getMockFlowExecutionContext().getAttributes().getBoolean("alwaysRedirectOnPause"); return redirectOnPause != null ? redirectOnPause.booleanValue() : false; } // implementation specific accessors for testing public void setAlwaysRedirectOnPause(boolean alwaysRedirectOnPause) { getMockFlowExecutionContext().getAttributeMap().put("alwaysRedirectOnPause", Boolean.valueOf(alwaysRedirectOnPause)); } }././@LongLink0000000000000000000000000000021600000000000011564 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframework/webflow/test/MockExternalContext.javalibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframew0000644000000000000000000003132411360615632027754 0ustar /* * Copyright 2004-2008 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.springframework.webflow.test; import java.io.StringWriter; import java.io.Writer; import java.security.Principal; import java.util.HashMap; import java.util.Locale; import org.springframework.binding.collection.SharedMapDecorator; import org.springframework.web.multipart.MultipartFile; import org.springframework.webflow.context.ExternalContext; import org.springframework.webflow.core.collection.LocalAttributeMap; import org.springframework.webflow.core.collection.LocalSharedAttributeMap; import org.springframework.webflow.core.collection.MutableAttributeMap; import org.springframework.webflow.core.collection.ParameterMap; import org.springframework.webflow.core.collection.SharedAttributeMap; /** * Mock implementation of the {@link ExternalContext} interface. * @see ExternalContext * @author Keith Donald */ public class MockExternalContext implements ExternalContext { private String contextPath; private ParameterMap requestParameterMap = new MockParameterMap(); private MutableAttributeMap requestMap = new LocalAttributeMap(); private SharedAttributeMap sessionMap = new LocalSharedAttributeMap(new SharedMapDecorator(new HashMap())); private SharedAttributeMap globalSessionMap = sessionMap; private SharedAttributeMap applicationMap = new LocalSharedAttributeMap(new SharedMapDecorator(new HashMap())); private Object nativeContext = new Object(); private Object nativeRequest = new Object(); private Object nativeResponse = new Object(); private Principal currentUser; private Locale locale; private StringWriter responseWriter = new StringWriter(); private boolean ajaxRequest; private Boolean responseAllowed; private boolean responseComplete; private boolean flowExecutionRedirectRequested; private String flowDefinitionRedirectFlowId; private MutableAttributeMap flowDefinitionRedirectFlowInput; private String externalRedirectUrl; private boolean redirectInPopup; /** * Creates a mock external context with an empty request parameter map. Allows for bean style usage. */ public MockExternalContext() { } /** * Creates a mock external context with the specified parameters in the request parameter map. All other properties * of the external context can be set using the appropriate setter. * @param requestParameterMap the request parameters */ public MockExternalContext(ParameterMap requestParameterMap) { if (requestParameterMap != null) { this.requestParameterMap = requestParameterMap; } } // implementing external context public String getContextPath() { return contextPath; } public ParameterMap getRequestParameterMap() { return requestParameterMap; } public MutableAttributeMap getRequestMap() { return requestMap; } public SharedAttributeMap getSessionMap() { return sessionMap; } public SharedAttributeMap getGlobalSessionMap() { return globalSessionMap; } public SharedAttributeMap getApplicationMap() { return applicationMap; } public Principal getCurrentUser() { return currentUser; } public Locale getLocale() { return locale; } public Object getNativeContext() { return nativeContext; } public Object getNativeRequest() { return nativeRequest; } public Object getNativeResponse() { return nativeResponse; } public boolean isAjaxRequest() { return ajaxRequest; } public String getFlowExecutionUrl(String flowId, String flowExecutionKey) { return "/" + flowId + "?execution=" + flowExecutionKey; } public Writer getResponseWriter() { assertResponseAllowed(); return responseWriter; } public boolean isResponseAllowed() { if (responseAllowed != null) { return responseAllowed.booleanValue(); } else { return !responseComplete; } } public boolean isResponseComplete() { return responseComplete; } public void recordResponseComplete() { responseComplete = true; } public boolean isResponseCompleteFlowExecutionRedirect() { return flowExecutionRedirectRequested; } public void requestFlowExecutionRedirect() throws IllegalStateException { flowExecutionRedirectRequested = true; recordResponseComplete(); } public void requestFlowDefinitionRedirect(String flowId, MutableAttributeMap input) throws IllegalStateException { flowDefinitionRedirectFlowId = flowId; flowDefinitionRedirectFlowInput = input; recordResponseComplete(); } public void requestExternalRedirect(String uri) throws IllegalStateException { externalRedirectUrl = uri; recordResponseComplete(); } public void requestRedirectInPopup() throws IllegalStateException { if (isRedirectRequested()) { redirectInPopup = true; } else { throw new IllegalStateException( "Only call requestRedirectInPopup after a redirect has been requested by calling requestFlowExecutionRedirect, requestFlowDefinitionRedirect, or requestExternalRedirect"); } } /** * Set the context path of the application. * @param contextPath the context path */ public void setContextPath(String contextPath) { this.contextPath = contextPath; } /** * Set the request parameter map. * @see ExternalContext#getRequestParameterMap() */ public void setRequestParameterMap(ParameterMap requestParameterMap) { this.requestParameterMap = requestParameterMap; } /** * Set the request attribute map. * @see ExternalContext#getRequestMap() */ public void setRequestMap(MutableAttributeMap requestMap) { this.requestMap = requestMap; } /** * Set the session attribute map. * @see ExternalContext#getSessionMap() */ public void setSessionMap(SharedAttributeMap sessionMap) { this.sessionMap = sessionMap; } /** * Set the global session attribute map. By default the session attribute map and the global session attribute map * are one and the same. * @see ExternalContext#getGlobalSessionMap() */ public void setGlobalSessionMap(SharedAttributeMap globalSessionMap) { this.globalSessionMap = globalSessionMap; } /** * Set the application attribute map. * @see ExternalContext#getApplicationMap() */ public void setApplicationMap(SharedAttributeMap applicationMap) { this.applicationMap = applicationMap; } /** * Set the native context object. * @param nativeContext the native context */ public void setNativeContext(Object nativeContext) { this.nativeContext = nativeContext; } /** * Set the native request object. * @param nativeRequest the native request object */ public void setNativeRequest(Object nativeRequest) { this.nativeRequest = nativeRequest; } /** * Set the native response object. * @param nativeResponse the native response object */ public void setNativeResponse(Object nativeResponse) { this.nativeResponse = nativeResponse; } /** * Sets the current user principal. * @param currentUser the current user */ public void setCurrentUser(Principal currentUser) { this.currentUser = currentUser; } /** * Convenience method that sets the current user principal as a string. * @param currentUser the current user name */ public void setCurrentUser(String currentUser) { this.currentUser = new MockPrincipal(currentUser); } /** * Sets the client locale. * @param locale the locale */ public void setLocale(Locale locale) { this.locale = locale; } // convenience helpers /** * Returns the request parameter map as a {@link MockParameterMap} for convenient access in a unit test. * @see #getRequestParameterMap() */ public MockParameterMap getMockRequestParameterMap() { return (MockParameterMap) requestParameterMap; } /** * Puts a request parameter into the mock parameter map. * @param parameterName the parameter name * @param parameterValue the parameter value */ public void putRequestParameter(String parameterName, String parameterValue) { getMockRequestParameterMap().put(parameterName, parameterValue); } /** * Puts a multi-valued request parameter into the mock parameter map. * @param parameterName the parameter name * @param parameterValues the parameter values */ public void putRequestParameter(String parameterName, String[] parameterValues) { getMockRequestParameterMap().put(parameterName, parameterValues); } /** * Puts a MultipartFile request parameter into the mock parameter map. * @param parameterName the parameter name * @param parameterValue the parameter value */ public void putRequestParameter(String parameterName, MultipartFile parameterValue) { getMockRequestParameterMap().put(parameterName, parameterValue); } /** * Sets the id of the event that should be signaled by this context. For use when resuming a flow. This method * depends on a MockViewFactory being configured for parsing the event id on a resume operation. * @param eventId the id of the event to signal */ public void setEventId(String eventId) { putRequestParameter("_eventId", eventId); } /** * Set whether this request is an ajax request. * @param ajaxRequest true or false */ public void setAjaxRequest(boolean ajaxRequest) { this.ajaxRequest = ajaxRequest; } /** * Set the response allows flag to a value for testing. * @param responseAllowed true or false */ public void setResponseAllowed(boolean responseAllowed) { this.responseAllowed = Boolean.valueOf(responseAllowed); } /** * Returns the implementation of this mock context's response writer. * @return the underlying string writer to use for asserting a specific response was written */ public StringWriter getMockResponseWriter() { return responseWriter; } /** * Returns the flag indicating if a flow execution redirect response has been requested by the flow. */ public boolean getFlowExecutionRedirectRequested() { return flowExecutionRedirectRequested; } /** * Returns the flag indicating if a flow definition redirect response has been requested by the flow. */ public boolean getFlowDefinitionRedirectRequested() { return flowDefinitionRedirectFlowId != null; } /** * Returns the id of the flow definition to redirect to. Only set when {@link #getFlowDefinitionRedirectRequested()} * returns true. */ public String getFlowRedirectFlowId() { return flowDefinitionRedirectFlowId; } /** * Returns the input to pass the flow definition through the redirect. Only set when * {@link #getFlowDefinitionRedirectRequested()} returns true. */ public MutableAttributeMap getFlowRedirectFlowInput() { return flowDefinitionRedirectFlowInput; } /** * Returns the flag indicating if an external redirect response has been requested by the flow. */ public boolean getExternalRedirectRequested() { return externalRedirectUrl != null; } /** * Returns the URL to redirect to. Only set if {@link #getExternalRedirectRequested()} returns true. */ public String getExternalRedirectUrl() { return externalRedirectUrl; } /** * If a redirect response has been requested, indicates if the redirect should be issued from a popup dialog. */ public boolean getRedirectInPopup() { return redirectInPopup; } // internal helpers private void assertResponseAllowed() throws IllegalStateException { if (!isResponseAllowed()) { if (getFlowExecutionRedirectRequested()) { throw new IllegalStateException( "A response is not allowed because a redirect has already been requested on this ExternalContext"); } if (getFlowDefinitionRedirectRequested()) { throw new IllegalStateException( "A response is not allowed because a flowRedirect has already been requested on this ExternalContext"); } if (getExternalRedirectRequested()) { throw new IllegalStateException( "A response is not allowed because an externalRedirect has already been requested on this ExternalContext"); } if (responseComplete) { throw new IllegalStateException( "A response is not allowed because one has already been completed on this ExternalContext"); } else { throw new IllegalStateException("A response is not allowed"); } } } public boolean isRedirectRequested() { return getFlowExecutionRedirectRequested() || getFlowDefinitionRedirectRequested() || getExternalRedirectRequested(); } private class MockPrincipal implements Principal { private String name; private MockPrincipal(String name) { this.name = name; } public String getName() { return name; } } }././@LongLink0000000000000000000000000000021300000000000011561 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframework/webflow/test/MockParameterMap.javalibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframew0000644000000000000000000000432311360615632027753 0ustar /* * Copyright 2004-2008 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.springframework.webflow.test; import java.util.HashMap; import org.springframework.web.multipart.MultipartFile; import org.springframework.webflow.core.collection.LocalParameterMap; import org.springframework.webflow.core.collection.ParameterMap; /** * A extension of parameter map that allows for mutation of parameters. Useful as a stub for testing. * * @see ParameterMap * * @author Keith Donald */ public class MockParameterMap extends LocalParameterMap { /** * Creates a new parameter map, initially empty. */ public MockParameterMap() { super(new HashMap()); } /** * Add a new parameter to this map. * @param parameterName the parameter name * @param parameterValue the parameter value * @return this, to support call chaining */ public MockParameterMap put(String parameterName, String parameterValue) { getMapInternal().put(parameterName, parameterValue); return this; } /** * Add a new multi-valued parameter to this map. * @param parameterName the parameter name * @param parameterValues the parameter values * @return this, to support call chaining */ public MockParameterMap put(String parameterName, String[] parameterValues) { getMapInternal().put(parameterName, parameterValues); return this; } /** * Add a new multi-part file parameter to this map. * @param parameterName the parameter name * @param parameterValues the parameter values * @return this, to support call chaining */ public MockParameterMap put(String parameterName, MultipartFile parameterValues) { getMapInternal().put(parameterName, parameterValues); return this; } }././@LongLink0000000000000000000000000000020500000000000011562 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframework/webflow/test/MockAction.javalibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframew0000644000000000000000000000561111360615636027760 0ustar /* * Copyright 2004-2008 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.springframework.webflow.test; import org.springframework.webflow.core.collection.AttributeMap; import org.springframework.webflow.execution.Action; import org.springframework.webflow.execution.Event; import org.springframework.webflow.execution.RequestContext; import org.springframework.webflow.test.execution.AbstractExternalizedFlowExecutionTests; import org.springframework.webflow.test.execution.AbstractXmlFlowExecutionTests; /** * A trivial stub action implementation that can be parameterized to return a particular action execution result. Useful * for simulating different action results a flow should be capable of responding to. * * Instances of this class can be conveniently installed in the bean factory that hosts the Web Flow action * implementations in a test environment by overriding registerMockServices on * {@link AbstractExternalizedFlowExecutionTests}. If you are using a XML-based flow definition with a flow-local * context to host your actions, consider overriding registerLocalMockServices on * {@link AbstractXmlFlowExecutionTests} to install mock instances. * * @author Keith Donald */ public class MockAction implements Action { private String resultEventId; private AttributeMap resultAttributes; /** * Constructs a new mock action that returns the default success execution result. */ public MockAction() { setResultEventId("success"); } /** * Constructs a new mock action that returns the provided execution result. * @param resultEventId the execution result identifier that will be returned */ public MockAction(String resultEventId) { setResultEventId(resultEventId); } /** * Sets the event identifier this mock action will use as its execution outcome. * @param resultEventId the action execution result identifier */ public void setResultEventId(String resultEventId) { this.resultEventId = resultEventId; } /** * Sets attributes to associate with a returned action execution outcome. * @param resultAttributes the action execution result attributes */ public void setResultAttributes(AttributeMap resultAttributes) { this.resultAttributes = resultAttributes; } public Event execute(RequestContext context) { return new Event(this, resultEventId, resultAttributes); } } ././@LongLink0000000000000000000000000000021200000000000011560 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframework/webflow/test/MockFlowSession.javalibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframew0000644000000000000000000001112511360615634027753 0ustar /* * Copyright 2004-2008 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.springframework.webflow.test; import org.springframework.webflow.core.collection.AttributeMap; import org.springframework.webflow.core.collection.LocalAttributeMap; import org.springframework.webflow.core.collection.MutableAttributeMap; import org.springframework.webflow.definition.FlowDefinition; import org.springframework.webflow.definition.StateDefinition; import org.springframework.webflow.engine.Flow; import org.springframework.webflow.engine.RequestControlContext; import org.springframework.webflow.engine.State; import org.springframework.webflow.engine.TransitionableState; import org.springframework.webflow.execution.FlowExecutionException; import org.springframework.webflow.execution.FlowSession; /** * Mock implementation of the {@link FlowSession} interface. * * @see FlowSession * * @author Erwin Vervaet */ public class MockFlowSession implements FlowSession { private static final String FLOW_VIEW_MAP_ATTRIBUTE = "flowViewMap"; private Flow definition; private State state; private MutableAttributeMap scope = new LocalAttributeMap(); private FlowSession parent; /** * Creates a new mock flow session that sets a flow with id "mockFlow" as the 'active flow' in state "mockState". */ public MockFlowSession() { setDefinition(new Flow("mockFlow")); State state = new TransitionableState(definition, "mockState") { protected void doEnter(RequestControlContext context) throws FlowExecutionException { // nothing to do } }; setState(state); } /** * Creates a new mock session in a created state for the specified flow definition. */ public MockFlowSession(Flow flow) { setDefinition(flow); } /** * Creates a new mock session for the specified flow definition. * @param flow the flow definition for the session * @param input initial contents of 'flow scope' */ public MockFlowSession(Flow flow, AttributeMap input) { setDefinition(flow); scope.putAll(input); } // implementing FlowSession public FlowDefinition getDefinition() { return definition; } public StateDefinition getState() { return state; } public MutableAttributeMap getScope() { return scope; } public MutableAttributeMap getViewScope() throws IllegalStateException { if (state == null) { throw new IllegalStateException("The current state of this flow '" + definition.getId() + "' is [null] - cannot access view scope"); } if (!state.isViewState()) { throw new IllegalStateException("The current state '" + state.getId() + "' of this flow '" + definition.getId() + "' is not a view state - view scope not accessible"); } return (MutableAttributeMap) scope.get(FLOW_VIEW_MAP_ATTRIBUTE); } public FlowSession getParent() { return parent; } public boolean isRoot() { return parent == null; } // mutators /** * Set the flow associated with this flow session. */ public void setDefinition(Flow flow) { this.definition = flow; } /** * Set the currently active state. */ public void setState(State state) { if (this.state != null && this.state.isViewState()) { destroyViewScope(); } this.state = state; if (this.state != null && this.state.isViewState()) { initViewScope(); } } /** * Set the scope data maintained by this flow session. This will be the flow scope data of the ongoing flow * execution. */ public void setScope(MutableAttributeMap scope) { this.scope = scope; } /** * Set the parent flow session of this flow session in the ongoing flow execution. */ public void setParent(FlowSession parent) { this.parent = parent; } // convenience accessors /** * Returns the flow definition of this session. */ public Flow getDefinitionInternal() { return definition; } /** * Returns the current state of this session. */ public State getStateInternal() { return state; } // internal helpers private void initViewScope() { scope.put(FLOW_VIEW_MAP_ATTRIBUTE, new LocalAttributeMap()); } private void destroyViewScope() { scope.remove(FLOW_VIEW_MAP_ATTRIBUTE); } }././@LongLink0000000000000000000000000000017300000000000011566 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframework/webflow/execution/libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframew0000755000000000000000000000000011360615644027752 5ustar ././@LongLink0000000000000000000000000000022000000000000011557 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframework/webflow/execution/FlowExecutionKey.javalibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframew0000644000000000000000000000236311360615640027754 0ustar /* * Copyright 2004-2008 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.springframework.webflow.execution; import java.io.Serializable; import org.springframework.webflow.execution.repository.FlowExecutionRepository; /** * A key that uniquely identifies a flow execution in a managed {@link FlowExecutionRepository}. Serves as a flow * execution's persistent identity. *

* This class is abstract. The repository subsystem encapsulates the structure of concrete key implementations. * * @author Keith Donald */ public abstract class FlowExecutionKey implements Serializable { public abstract boolean equals(Object o); public abstract int hashCode(); public abstract String toString(); }././@LongLink0000000000000000000000000000020400000000000011561 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframework/webflow/execution/View.javalibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframew0000644000000000000000000000620011360615636027753 0ustar /* * Copyright 2004-2008 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.springframework.webflow.execution; import java.io.IOException; import java.io.Serializable; import org.springframework.webflow.engine.ViewState; /** * Allows a client to participate in flow execution. Encapsulates behavior to send the client an appropriate response * and handle the resulting event once the client responds. * * @author Keith Donald * @author Jeremy Grelle * @see ViewFactory */ public interface View { /** * Well-known attribute name for storing a render fragments value. */ public static final String RENDER_FRAGMENTS_ATTRIBUTE = "flowRenderFragments"; /** * Well-known attribute name for storing the results of processing a user event */ public static final String USER_EVENT_STATE_ATTRIBUTE = "viewUserEventState"; /** * Render this view's content. * @throws IOException if an IO Exception occured rendering the view */ public void render() throws IOException; /** * True if there is a user event queued this view should process. * @return true if a user event is queued, false if not */ public boolean userEventQueued(); /** * Process the queued user event. Should only be called when {@link #userEventQueued()} returns true. After calling * this method, a flow event may be raised that should be handled in the Web Flow system. * @see #hasFlowEvent() */ public void processUserEvent(); /** * True if a call to {@link #processUserEvent()} raised a flow event the current state should handle. Call * {@link #getFlowEvent()} to access the Event. * @return true if yes, false otherwise */ public boolean hasFlowEvent(); /** * Get the flow event the current state should handle. Returns an Event object when {@link #hasFlowEvent()} returns * true. Returns null otherwise. * @return the event, or null if there is no event for the flow system to handle */ public Event getFlowEvent(); /** * A memento holding the results of processing a user event. Used to allow transient view state such as binding and * validation errors to survive a flow execution redirect. * @return the serializable user event state object, or null if no event state needs managing * @see #processUserEvent() */ public Serializable getUserEventState(); /** * Saves any state associated with this view out to view scope. Called when exiting a {@link ViewState} to allow for * any changes applied after postback processing to be captured and reflected when going back. Can be a no-op for * views that store no view state. */ public void saveState(); } ././@LongLink0000000000000000000000000000021600000000000011564 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframework/webflow/execution/ActionExecutor.javalibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframew0000644000000000000000000000500611360615632027752 0ustar /* * Copyright 2004-2008 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.springframework.webflow.execution; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; /** * A simple static helper that performs action execution that encapsulates common logging and exception handling logic. * This is an internal helper class that is not normally used by application code. * * @author Keith Donald * @author Erwin Vervaet */ public class ActionExecutor { private static final Log logger = LogFactory.getLog(ActionExecutor.class); /** * Private constructor to avoid instantiation. */ private ActionExecutor() { } /** * Execute the given action. * @param action the action to execute * @param context the flow execution request context * @return result of action execution * @throws ActionExecutionException if the action threw an exception while executing, the orginal exception is * available as the cause if this exception */ public static Event execute(Action action, RequestContext context) throws ActionExecutionException { try { if (logger.isDebugEnabled()) { logger.debug("Executing " + getTargetAction(action)); } Event event = action.execute(context); if (logger.isDebugEnabled()) { logger.debug("Finished executing " + getTargetAction(action) + "; result = " + event); } return event; } catch (ActionExecutionException e) { throw e; } catch (Exception e) { // wrap the exception as an ActionExecutionException throw new ActionExecutionException(context.getActiveFlow().getId(), context.getCurrentState() != null ? context.getCurrentState().getId() : null, action, context .getAttributes(), e); } } private static Action getTargetAction(Action action) { if (action instanceof AnnotatedAction) { return getTargetAction(((AnnotatedAction) action).getTargetAction()); } else { return action; } } }././@LongLink0000000000000000000000000000021600000000000011564 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframework/webflow/execution/RequestContext.javalibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframew0000644000000000000000000002307111360615632027754 0ustar /* * Copyright 2004-2008 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.springframework.webflow.execution; import org.springframework.binding.message.MessageContext; import org.springframework.webflow.context.ExternalContext; import org.springframework.webflow.core.collection.MutableAttributeMap; import org.springframework.webflow.core.collection.ParameterMap; import org.springframework.webflow.definition.FlowDefinition; import org.springframework.webflow.definition.StateDefinition; import org.springframework.webflow.definition.TransitionDefinition; /** * A context for a single request to manipulate a flow execution. Allows Web Flow users to access contextual information * about the executing request, as well as the governing {@link #getFlowExecutionContext() active flow execution}. *

* The term request is used to describe a single call (thread) into the flow system by an external actor to * manipulate exactly one flow execution. *

* A new instance of this object is typically created when one of the core operations supported by a flow execution is * invoked, either start to launch the flow execution, signalEvent to resume the flow * execution, or refresh to reconstitute the flow execution's last view selection for purposes of reissuing * a user response. *

* Once created this context object is passed around throughout flow execution request processing where it may be * accessed and reasoned upon by SWF-internal artifacts such as states, user-implemented action code, and state * transition criteria. *

* When a call into a flow execution returns this object goes out of scope and is disposed of automatically. Thus a * request context is an internal artifact used within a FlowExecution: this object is not exposed to external client * code, e.g. a view implementation (JSP). *

* The {@link #getRequestScope() requestScope} property may be used as a store for arbitrary data that should exist for * the life of this object. *

* The web flow system will ensure that a RequestContext object is local to the current thread. It can be safely * manipulated without needing to worry about concurrent access. *

* Note: this request context is in no way linked to an HTTP or Portlet request. It uses the familiar "request" naming * convention to indicate a single call to manipulate a runtime execution of a flow definition. * * @author Keith Donald * @author Erwin Vervaet */ public interface RequestContext { /** * Returns the definition of the flow that is currently executing. * @return the flow definition for the active session * @throws IllegalStateException if the flow execution is not active * @see FlowExecutionContext#isActive() */ public FlowDefinition getActiveFlow() throws IllegalStateException; /** * Returns the current state of the executing flow. Returns null if the active flow's start state has * not yet been entered. * @return the current state, or null if in the process of starting * @throws IllegalStateException if this flow execution is not active * @see FlowExecutionContext#isActive() */ public StateDefinition getCurrentState() throws IllegalStateException; /** * Returns the transition that would execute on the occurrence of the given event. * @param eventId the id of the user event * @return the transition that would trigger, or null if no transition matches * @throws IllegalStateException if this flow execution is not active * @see FlowExecutionContext#isActive() */ public TransitionDefinition getMatchingTransition(String eventId) throws IllegalStateException; /** * Returns true if the flow is currently active and in a view state. When in a view state {@link #getViewScope()}, * can be safely called. * @see #getViewScope() * @return true if in a view state, false if not */ public boolean inViewState(); /** * Returns a mutable map for accessing and/or setting attributes in request scope. Request scoped attributes * exist for the duration of this request only. * @return the request scope */ public MutableAttributeMap getRequestScope(); /** * Returns a mutable map for accessing and/or setting attributes in flash scope. Flash scoped attributes exist * until the next event is signaled in the flow execution. * @return the flash scope */ public MutableAttributeMap getFlashScope(); /** * Returns a mutable map for accessing and/or setting attributes in view scope. View scoped attributes exist for * the life of the current view state. * @return the view scope * @see #inViewState() * @throws IllegalStateException if this flow is not in a view-state or the flow execution is not active * @see FlowExecutionContext#isActive() */ public MutableAttributeMap getViewScope() throws IllegalStateException; /** * Returns a mutable map for accessing and/or setting attributes in flow scope. Flow scoped attributes exist for * the life of the active flow session. * @return the flow scope * @see FlowSession * @throws IllegalStateException if the flow execution is not active * @see FlowExecutionContext#isActive() */ public MutableAttributeMap getFlowScope() throws IllegalStateException; /** * Returns a mutable accessor for accessing and/or setting attributes in conversation scope. Conversation scoped * attributes exist for the life of the executing flow and are shared across all flow sessions. * @return the conversation scope * @see FlowExecutionContext */ public MutableAttributeMap getConversationScope(); /** * Returns the immutable input parameters associated with this request into Spring Web Flow. The map returned is * immutable and cannot be changed. *

* This is typically a convenient shortcut for accessing the {@link ExternalContext#getRequestParameterMap()} * directly. * @see #getExternalContext() */ public ParameterMap getRequestParameters(); /** * Returns the external client context that originated (or triggered) this request. *

* Acting as a facade, the returned context object provides a single point of access to the calling client's * environment. It provides normalized access to attributes of the client environment without tying you to specific * constructs within that environment. *

* In addition, this context may be downcastable to a specific context type for a specific client environment, such * as Servlets or Portlets. Such downcasting will give you full access to a native HttpServletRequest, for example. * With that said, for portability reasons you should avoid coupling your flow artifacts to a specific deployment * environment when possible. * @return the originating external context, the one that triggered the current execution request */ public ExternalContext getExternalContext(); /** * Returns the message context of this request. Useful for recording messages during the course of flow execution * for display to the client. * @return the message context */ public MessageContext getMessageContext(); /** * Returns contextual information about the flow execution itself. Information in this context typically spans more * than one request. * @return the flow execution context */ public FlowExecutionContext getFlowExecutionContext(); /** * Returns the current event being processed by this flow. The event may or may not have caused a state transition * to happen. * @return the current event, or null if no event has been signaled yet */ public Event getCurrentEvent(); /** * Returns the current transition executing in this request. * @return the current transition, or null if no transition has occurred yet */ public TransitionDefinition getCurrentTransition(); /** * Returns the current view in use; if not null, the view returned is about to be rendered, is rendering, is * processing a user event, or has finished user event processing and the current ViewState is exiting due to a * state transition. Returns null if the flow is not in a view state. * @return the current view, or null if the flow is not in a view state */ public View getCurrentView(); /** * Returns a context map for accessing attributes about the state of the current request. These attributes may be * used to influence flow execution behavior. * @return the current attributes of this request, or empty if none are set */ public MutableAttributeMap getAttributes(); /** * Returns the URL of this flow execution. Needed by response writers that write out the URL of this flow execution * to allow calling back this execution in a subsequent request. * @throws IllegalStateException if the flow execution has not yet had its key assigned * @return the flow execution URL */ public String getFlowExecutionUrl() throws IllegalStateException; }././@LongLink0000000000000000000000000000022700000000000011566 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframework/webflow/execution/FlowExecutionKeyFactory.javalibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframew0000644000000000000000000000405211360615632027752 0ustar /* * Copyright 2004-2008 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.springframework.webflow.execution; /** * A factory for creating flow execution keys. Used to generate a persistent identity for a flow execution that needs to * be persisted. * * @author Keith Donald */ public interface FlowExecutionKeyFactory { /** * Get the key to assign to the flow execution. This factory simply generates the key to assign, it does not * actually perform the key assignment. * @param execution the flow execution * @return the key to assign to the flow execution */ public FlowExecutionKey getKey(FlowExecution execution); /** * Capture the current state of the flow execution by updating its snapshot in storage. Does nothing if the no key * has been assigned or no snapshot has already been taken. * @param execution the flow execution */ public void updateFlowExecutionSnapshot(FlowExecution execution); /** * Remove the snapshot that was used to restore this flow execution, discarding it for future use. Does nothing if * the no key been assigned or no snapshot has been taken. * @param execution the flow execution */ public void removeFlowExecutionSnapshot(FlowExecution execution); /** * Remove all snapshots associated with the flow execution from storage, invalidating all history. Does nothing if * no key has been assigned or no snapshots have been taken. * @param execution the flow execution */ public void removeAllFlowExecutionSnapshots(FlowExecution execution); } ././@LongLink0000000000000000000000000000022400000000000011563 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframework/webflow/execution/FlowExecutionOutcome.javalibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframew0000644000000000000000000000337111360615644027760 0ustar /* * Copyright 2004-2008 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.springframework.webflow.execution; import org.springframework.core.style.ToStringCreator; import org.springframework.webflow.core.collection.AttributeMap; import org.springframework.webflow.core.collection.CollectionUtils; /** * An outcome returned by a flow execution when it ends. * * @author Keith Donald */ public class FlowExecutionOutcome { private String id; private AttributeMap output; /** * Creates a new flow execution outcome * @param id the outcome id * @param output the output returned by the execution */ public FlowExecutionOutcome(String id, AttributeMap output) { super(); this.id = id; this.output = (output != null ? output : CollectionUtils.EMPTY_ATTRIBUTE_MAP); } /** * Return the outcome identifier. * @return the outcome that was reached by the flow execution */ public String getId() { return id; } /** * Returns the output returned by the flow execution. * @return the output that was returned */ public AttributeMap getOutput() { return output; } public String toString() { return new ToStringCreator(this).append("id", id).append("output", output).toString(); } } ././@LongLink0000000000000000000000000000021500000000000011563 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframework/webflow/execution/FlowExecution.javalibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframew0000644000000000000000000000452411360615644027761 0ustar /* * Copyright 2004-2008 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.springframework.webflow.execution; import org.springframework.webflow.context.ExternalContext; import org.springframework.webflow.core.collection.MutableAttributeMap; /** * An execution of a flow definition. This is the central interface for manipulating a instance of a flow definition. * * @author Keith Donald * @author Erwin Vervaet */ public interface FlowExecution extends FlowExecutionContext { /** * Start this flow execution. This method should only be called once. *

* When this method returns, execution status is either "paused" or "ended". If ended, the flow execution cannot be * used again. If "paused", the flow execution may be {@link #resume(ExternalContext) resumed}. * @param input flow execution input * @param context the external context representing the calling environment * @throws FlowExecutionException if an exception was thrown within a state of the flow execution during request * processing */ public void start(MutableAttributeMap input, ExternalContext context) throws FlowExecutionException; /** * Resume this flow execution. May be called when the flow execution is paused. * * When this method returns, execution status is either "paused" or "ended". If ended, the flow execution cannot be * used again. If "paused", the flow execution may be resumed again. * @param context the external context, representing the calling environment, where something happened this flow * execution should respond to * @throws FlowExecutionException if an exception was thrown within a state of the resumed flow execution during * event processing */ public void resume(ExternalContext context) throws FlowExecutionException; }././@LongLink0000000000000000000000000000022600000000000011565 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframework/webflow/execution/FlowExecutionException.javalibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframew0000644000000000000000000000521311360615640027751 0ustar /* * Copyright 2004-2008 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.springframework.webflow.execution; import org.springframework.webflow.core.FlowException; /** * Base class for exceptions that occur within a flow while it is executing. Can be used directly, but you are * encouraged to create a specific subclass for a particular use case. *

* Execution exceptions occur at runtime when the flow is executing requests on behalf of a client. They signal that an * execution problem occurred: e.g. action execution failed or no transition matched the current request context. * * @author Keith Donald * @author Erwin Vervaet */ public class FlowExecutionException extends FlowException { /** * The id of the flow definition in which the exception occurred. */ private String flowId; /** * The state of the flow where the exception occurred (optional). */ private String stateId; /** * Creates a new flow execution exception. * @param flowId the flow where the exception occurred * @param stateId the state where the exception occurred * @param message a descriptive message */ public FlowExecutionException(String flowId, String stateId, String message) { super(message); this.stateId = stateId; this.flowId = flowId; } /** * Creates a new flow execution exception. * @param flowId the flow where the exception occured * @param stateId the state where the exception occured * @param message a descriptive message * @param cause the root cause */ public FlowExecutionException(String flowId, String stateId, String message, Throwable cause) { super(message, cause); this.stateId = stateId; this.flowId = flowId; } /** * Returns the id of the flow definition that was executing when this exception occured. */ public String getFlowId() { return flowId; } /** * Returns the id of the state definition where the exception occured. Could be null if no state was active at the * time when the exception was thrown. */ public String getStateId() { return stateId; } }././@LongLink0000000000000000000000000000020300000000000011560 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframework/webflow/execution/factory/libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframew0000755000000000000000000000000011360615644027752 5ustar ././@LongLink0000000000000000000000000000024500000000000011566 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframework/webflow/execution/factory/FlowExecutionListenerCriteria.javalibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframew0000644000000000000000000000305111360615632027750 0ustar /* * Copyright 2004-2008 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.springframework.webflow.execution.factory; import org.springframework.webflow.definition.FlowDefinition; /** * Strategy interface that determines if a flow execution listener should attach to executions of a specific flow * definition. *

* This selection strategy is typically used by the {@link FlowExecutionListenerLoader} to determine which listeners * should apply to which flow definitions. * * @see org.springframework.webflow.execution.FlowExecutionListener * @see org.springframework.webflow.execution.factory.FlowExecutionListenerLoader * * @author Keith Donald * @author Erwin Vervaet */ public interface FlowExecutionListenerCriteria { /** * Do the listeners guarded by this criteria object apply to the provided flow definition? * @param definition the flow definition * @return true if yes, false if no */ public boolean appliesTo(FlowDefinition definition); }././@LongLink0000000000000000000000000000025600000000000011570 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframework/webflow/execution/factory/ConditionalFlowExecutionListenerHolder.javalibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframew0000644000000000000000000000551611360615632027760 0ustar /* * Copyright 2004-2008 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.springframework.webflow.execution.factory; import java.util.Iterator; import java.util.LinkedHashSet; import java.util.Set; import org.springframework.util.Assert; import org.springframework.webflow.definition.FlowDefinition; import org.springframework.webflow.execution.FlowExecutionListener; /** * A holder that holds a listener plus a set of criteria defining the flows in which that listener applies. *

* This is an internal helper class used by the {@link ConditionalFlowExecutionListenerLoader}. * * @see ConditionalFlowExecutionListenerLoader * * @author Keith Donald */ class ConditionalFlowExecutionListenerHolder { /** * The held listener. */ private FlowExecutionListener listener; /** * The listener criteria set. */ private Set criteriaSet = new LinkedHashSet(3); /** * Create a new conditional flow execution listener holder. * @param listener the listener to hold */ public ConditionalFlowExecutionListenerHolder(FlowExecutionListener listener) { Assert.notNull(listener, "The listener is required"); this.listener = listener; } /** * Returns the held listener. */ public FlowExecutionListener getListener() { return listener; } /** * Add given criteria. */ public void add(FlowExecutionListenerCriteria criteria) { criteriaSet.add(criteria); } /** * Remove given criteria. If not present, does nothing. */ public void remove(FlowExecutionListenerCriteria criteria) { criteriaSet.remove(criteria); } /** * Are there any criteria registered? */ public boolean isCriteriaSetEmpty() { return criteriaSet.isEmpty(); } /** * Determines if the listener held by this holder applies to the specified flow definition. Will do a logical OR * between the registered criteria. * @param flowDefinition the flow * @return true if yes, false otherwise */ public boolean listenerAppliesTo(FlowDefinition flowDefinition) { Iterator it = criteriaSet.iterator(); while (it.hasNext()) { FlowExecutionListenerCriteria criteria = (FlowExecutionListenerCriteria) it.next(); if (criteria.appliesTo(flowDefinition)) { return true; } } return false; } }././@LongLink0000000000000000000000000000024300000000000011564 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframework/webflow/execution/factory/FlowExecutionListenerLoader.javalibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframew0000644000000000000000000000266111360615644027761 0ustar /* * Copyright 2004-2008 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.springframework.webflow.execution.factory; import org.springframework.webflow.definition.FlowDefinition; import org.springframework.webflow.execution.FlowExecutionFactory; import org.springframework.webflow.execution.FlowExecutionListener; /** * A strategy interface for loading the set of FlowExecutionListener's that should apply to executions of a given flow * definition. Typically used by a {@link FlowExecutionFactory} as part of execution creation. * * @author Keith Donald */ public interface FlowExecutionListenerLoader { /** * Get the flow execution listeners that apply to the given flow definition. * @param flowDefinition the flow definition * @return the listeners that apply */ public FlowExecutionListener[] getListeners(FlowDefinition flowDefinition); }././@LongLink0000000000000000000000000000025400000000000011566 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframework/webflow/execution/factory/FlowExecutionListenerCriteriaFactory.javalibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframew0000644000000000000000000000716511360615642027763 0ustar /* * Copyright 2004-2008 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.springframework.webflow.execution.factory; import org.springframework.core.style.StylerUtils; import org.springframework.core.style.ToStringCreator; import org.springframework.util.Assert; import org.springframework.util.StringUtils; import org.springframework.webflow.definition.FlowDefinition; /** * Static factory for creating commonly used flow execution listener criteria. * * @see FlowExecutionListenerCriteria * * @author Keith Donald * @author Erwin Vervaet */ public class FlowExecutionListenerCriteriaFactory { private static final WildcardFlowExecutionListenerCriteria WILDCARD_INSTANCE = new WildcardFlowExecutionListenerCriteria(); public FlowExecutionListenerCriteria getListenerCriteria(String encodedCriteria) { if ("*".equals(encodedCriteria)) { return allFlows(); } else { String[] flowIds = StringUtils.commaDelimitedListToStringArray(encodedCriteria); for (int i = 0; i < flowIds.length; i++) { flowIds[i] = flowIds[i].trim(); } return flows(flowIds); } } /** * Returns a wild card criteria that matches all flows. */ public FlowExecutionListenerCriteria allFlows() { return WILDCARD_INSTANCE; } /** * Returns a criteria that just matches a flow with the specified id. * @param flowId the flow id to match */ public FlowExecutionListenerCriteria flow(String flowId) { return new FlowIdFlowExecutionListenerCriteria(new String[] { flowId }); } /** * Returns a criteria that just matches a flow if it is identified by one of the specified ids. * @param flowIds the flow ids to match */ public FlowExecutionListenerCriteria flows(String[] flowIds) { return new FlowIdFlowExecutionListenerCriteria(flowIds); } /** * A flow execution listener criteria implementation that matches for all flows. */ private static class WildcardFlowExecutionListenerCriteria implements FlowExecutionListenerCriteria { public boolean appliesTo(FlowDefinition definition) { return true; } public String toString() { return "*"; } } /** * A flow execution listener criteria implementation that matches flows with a specified id. */ private static class FlowIdFlowExecutionListenerCriteria implements FlowExecutionListenerCriteria { /** * The flow ids that apply for this criteria. */ private String[] flowIds; /** * Create a new flow id matching flow execution listener criteria implementation. * @param flowIds the flow ids to match */ public FlowIdFlowExecutionListenerCriteria(String[] flowIds) { Assert.notEmpty(flowIds, "The flow id array is required"); this.flowIds = flowIds; } public boolean appliesTo(FlowDefinition definition) { for (int i = 0; i < flowIds.length; i++) { if (flowIds[i].equals(definition.getId())) { return true; } } return false; } public String toString() { return new ToStringCreator(this).append("flowIds", StylerUtils.style(flowIds)).toString(); } } }././@LongLink0000000000000000000000000000025600000000000011570 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframework/webflow/execution/factory/ConditionalFlowExecutionListenerLoader.javalibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframew0000644000000000000000000001065611360615644027764 0ustar /* * Copyright 2004-2008 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.springframework.webflow.execution.factory; import java.util.Iterator; import java.util.LinkedList; import java.util.List; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.springframework.core.style.StylerUtils; import org.springframework.util.Assert; import org.springframework.webflow.definition.FlowDefinition; import org.springframework.webflow.execution.FlowExecutionListener; /** * A flow execution listener loader that stores listeners in a list-backed data structure and allows for configuration * of which listeners should apply to which flow definitions. For trivial listener loading, see * {@link StaticFlowExecutionListenerLoader}. * * @see FlowExecutionListenerCriteria * @see StaticFlowExecutionListenerLoader * * @author Keith Donald */ public class ConditionalFlowExecutionListenerLoader implements FlowExecutionListenerLoader { private final Log logger = LogFactory.getLog(ConditionalFlowExecutionListenerLoader.class); /** * The list of flow execution listeners containing {@link ConditionalFlowExecutionListenerHolder} objects. The list * determines the conditions in which a single flow execution listener applies. */ private List listeners = new LinkedList(); /** * Add a listener that will listen to executions to flows matching the specified criteria. * @param listener the listener * @param criteria the listener criteria */ public void addListener(FlowExecutionListener listener, FlowExecutionListenerCriteria criteria) { if (listener == null) { throw new IllegalArgumentException("The flow execution listener cannot be null"); } if (logger.isDebugEnabled()) { logger.debug("Adding flow execution listener " + listener + " with criteria " + criteria); } ConditionalFlowExecutionListenerHolder conditional = getHolder(listener); if (conditional == null) { conditional = new ConditionalFlowExecutionListenerHolder(listener); listeners.add(conditional); } if (criteria == null) { criteria = new FlowExecutionListenerCriteriaFactory().allFlows(); } conditional.add(criteria); } /** * Returns the array of flow execution listeners for specified flow. * @param flowDefinition the flow definition associated with the execution to be listened to * @return the flow execution listeners that apply */ public FlowExecutionListener[] getListeners(FlowDefinition flowDefinition) { Assert.notNull(flowDefinition, "The Flow to load listeners for cannot be null"); List listenersToAttach = new LinkedList(); for (Iterator it = listeners.iterator(); it.hasNext();) { ConditionalFlowExecutionListenerHolder listenerHolder = (ConditionalFlowExecutionListenerHolder) it.next(); if (listenerHolder.listenerAppliesTo(flowDefinition)) { listenersToAttach.add(listenerHolder.getListener()); } } if (logger.isDebugEnabled()) { logger.debug("Loaded [" + listenersToAttach.size() + "] of possible " + listeners.size() + " listeners for this execution request for flow '" + flowDefinition.getId() + "', the listeners to attach are " + StylerUtils.style(listenersToAttach)); } return (FlowExecutionListener[]) listenersToAttach.toArray(new FlowExecutionListener[listenersToAttach.size()]); } // internal helpers /** * Lookup the listener criteria holder for the listener provided. * @param listener the listener * @return the holder, or null if not found */ private ConditionalFlowExecutionListenerHolder getHolder(FlowExecutionListener listener) { Iterator it = listeners.iterator(); while (it.hasNext()) { ConditionalFlowExecutionListenerHolder next = (ConditionalFlowExecutionListenerHolder) it.next(); if (next.getListener().equals(listener)) { return next; } } return null; } }././@LongLink0000000000000000000000000000021700000000000011565 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframework/webflow/execution/factory/package.htmllibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframew0000644000000000000000000000045711360615636027763 0ustar

Supporting types often used by flow execution factory implementations. In particular, this package provides a number of classes allowing the registration of flow execution listeners with a flow execution during its construction by a flow execution factory.

././@LongLink0000000000000000000000000000025100000000000011563 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframework/webflow/execution/factory/StaticFlowExecutionListenerLoader.javalibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframew0000644000000000000000000000516211360615634027757 0ustar /* * Copyright 2004-2008 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.springframework.webflow.execution.factory; import org.springframework.util.Assert; import org.springframework.webflow.definition.FlowDefinition; import org.springframework.webflow.execution.FlowExecutionListener; /** * A simple flow execution listener loader that simply returns a static listener array on each invocation. For more * elaborate needs see the {@link ConditionalFlowExecutionListenerLoader}. * * @see ConditionalFlowExecutionListenerLoader * * @author Keith Donald */ public final class StaticFlowExecutionListenerLoader implements FlowExecutionListenerLoader { /** * A shared listener loader instance that returns am empty listener array on each invocation. */ public static final FlowExecutionListenerLoader EMPTY_INSTANCE = new StaticFlowExecutionListenerLoader(); /** * The listener array to return when {@link #getListeners(FlowDefinition)} is invoked. */ private final FlowExecutionListener[] listeners; /** * Creates a new flow execution listener loader that returns the provided listener on each invocation. * @param listener the listener */ public StaticFlowExecutionListenerLoader(FlowExecutionListener listener) { this(new FlowExecutionListener[] { listener }); } /** * Creates a new flow execution listener loader that returns the provided listener array on each invocation. Clients * should not attempt to modify the passed in array as no deep copy is made. * @param listeners the listener array. */ public StaticFlowExecutionListenerLoader(FlowExecutionListener[] listeners) { Assert.notNull(listeners, "The flow execution listener array is required"); this.listeners = listeners; } /** * Creates a new flow execution listener loader that returns an empty listener array on each invocation. */ private StaticFlowExecutionListenerLoader() { this(new FlowExecutionListener[0]); } public FlowExecutionListener[] getListeners(FlowDefinition flowDefinition) { return listeners; } }././@LongLink0000000000000000000000000000021300000000000011561 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframework/webflow/execution/FlowSession.javalibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframew0000644000000000000000000000554411360615632027761 0ustar /* * Copyright 2004-2008 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.springframework.webflow.execution; import org.springframework.webflow.core.collection.MutableAttributeMap; import org.springframework.webflow.definition.FlowDefinition; import org.springframework.webflow.definition.StateDefinition; /** * A single, local instantiation of a {@link FlowDefinition flow definition} launched within an overall flow execution. *

* This object maintains all instance state including session status within exactly one governing FlowExecution, as well * as the current flow state. This object also acts as the local "flow scope" data model. Data in * {@link #getScope() flow scope} lives for the life of this object and is cleaned up automatically when this object is * destroyed. Destruction happens when this session enters an end state. *

* Note that a flow session is in no way linked to an HTTP session. It just uses the familiar "session" naming * convention to denote a stateful object. * * @see FlowDefinition * @see FlowExecution * * @author Keith Donald * @author Erwin Vervaet */ public interface FlowSession { /** * Returns the flow definition backing this session. */ public FlowDefinition getDefinition(); /** * Returns the current state of this flow session. This value changes as the flow executes. */ public StateDefinition getState(); /** * Return this session's local attributes; the basis for "flow scope" (flow session scope). * @return the flow scope attributes */ public MutableAttributeMap getScope(); /** * Returns a mutable map for data held in "view scope". Attributes in this map are cleared out when the current view * state exits. * @return view scope * @throws IllegalStateException if this flow session is not currently in a view state */ public MutableAttributeMap getViewScope() throws IllegalStateException; /** * Returns the parent flow session in the current flow execution, or null if there is no parent flow * session. */ public FlowSession getParent(); /** * Returns whether this flow session is the root flow session in the ongoing flow execution. The root flow session * does not have a parent flow session. */ public boolean isRoot(); }././@LongLink0000000000000000000000000000021300000000000011561 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframework/webflow/execution/ViewFactory.javalibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframew0000644000000000000000000000221211360615632027746 0ustar /* * Copyright 2004-2008 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.springframework.webflow.execution; /** * A factory for a view that allows the client to participate in flow execution. Encapsulates creation and restoration * of the view implementation, including any application of request values to determine what user event was signaled. * * @author Keith Donald */ public interface ViewFactory { /** * Get the view to render for this request. * @param context the flow execution request context. * @return the view to render */ public View getView(RequestContext context); }././@LongLink0000000000000000000000000000023000000000000011560 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframework/webflow/execution/ActionExecutionException.javalibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframew0000644000000000000000000000461611360615632027760 0ustar /* * Copyright 2004-2008 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.springframework.webflow.execution; import org.springframework.webflow.core.collection.AttributeMap; /** * Thrown if an unhandled exception occurs when an action is executed. Typically wraps another exception noting the root * cause failure. The root cause may be checked or unchecked. * * @see org.springframework.webflow.execution.Action * * @author Keith Donald * @author Erwin Vervaet */ public class ActionExecutionException extends FlowExecutionException { /** * Create a new action execution exception. * @param flowId the current flow * @param stateId the current state (may be null) * @param action the action that generated an unrecoverable exception * @param executionAttributes action execution properties that may have contributed to this failure * @param cause the underlying cause */ public ActionExecutionException(String flowId, String stateId, Action action, AttributeMap executionAttributes, Throwable cause) { super(flowId, stateId, "Exception thrown executing " + action + " in state '" + stateId + "' of flow '" + flowId + "' -- action execution attributes were '" + executionAttributes + "'", cause); } /** * Create a new action execution exception. * @param flowId the current flow * @param stateId the current state (may be null) * @param action the action that generated an unrecoverable exception * @param executionAttributes action execution properties that may have contributed to this failure * @param message a descriptive message * @param cause the underlying cause */ public ActionExecutionException(String flowId, String stateId, Action action, AttributeMap executionAttributes, String message, Throwable cause) { super(flowId, stateId, message, cause); } }././@LongLink0000000000000000000000000000023400000000000011564 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframework/webflow/execution/FlowExecutionListenerAdapter.javalibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframew0000644000000000000000000000551411360615634027760 0ustar /* * Copyright 2004-2008 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.springframework.webflow.execution; import org.springframework.webflow.core.collection.AttributeMap; import org.springframework.webflow.core.collection.MutableAttributeMap; import org.springframework.webflow.definition.FlowDefinition; import org.springframework.webflow.definition.StateDefinition; import org.springframework.webflow.definition.TransitionDefinition; /** * An abstract adapter class for listeners (observers) of flow execution lifecycle events. The methods in this class are * empty. This class exists as convenience for creating listener objects; subclass it and override what you need. * * @author Erwin Vervaet * @author Keith Donald * @author Scott Andrews */ public abstract class FlowExecutionListenerAdapter implements FlowExecutionListener { public void requestSubmitted(RequestContext context) { } public void requestProcessed(RequestContext context) { } public void sessionCreating(RequestContext context, FlowDefinition definition) { } public void sessionStarting(RequestContext context, FlowSession session, MutableAttributeMap input) { } public void sessionStarted(RequestContext context, FlowSession session) { } public void eventSignaled(RequestContext context, Event event) { } public void transitionExecuting(RequestContext context, TransitionDefinition transition) { } public void stateEntering(RequestContext context, StateDefinition state) throws EnterStateVetoException { } public void viewRendered(RequestContext context, View view, StateDefinition viewState) { } public void viewRendering(RequestContext context, View view, StateDefinition viewState) { } public void stateEntered(RequestContext context, StateDefinition previousState, StateDefinition newState) { } public void paused(RequestContext context) { } public void resuming(RequestContext context) { } public void sessionEnding(RequestContext context, FlowSession session, String outcome, MutableAttributeMap output) { } public void sessionEnded(RequestContext context, FlowSession session, String outcome, AttributeMap output) { } public void exceptionThrown(RequestContext context, FlowExecutionException exception) { } }././@LongLink0000000000000000000000000000021100000000000011557 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframework/webflow/execution/ScopeType.javalibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframew0000644000000000000000000001050111360615632027746 0ustar /* * Copyright 2004-2008 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.springframework.webflow.execution; import org.springframework.core.enums.StaticLabeledEnum; import org.springframework.webflow.core.collection.MutableAttributeMap; import org.springframework.webflow.definition.FlowDefinition; /** * An enumeration of the core scope types of Spring Web Flow. Provides easy access to each scope by type using * {@link #getScope(RequestContext)}. *

* A "scope" defines a data structure for storing custom user attributes within a flow execution. Different scope types * have different semantics in terms of how long attributes placed in those scope maps remain valid. * * @author Keith Donald * @author Erwin Vervaet */ public abstract class ScopeType extends StaticLabeledEnum { /** * The "request" scope type. Attributes placed in request scope exist for the life of the current request into the * flow execution. When the request ends any attributes in request scope go out of scope. */ public static final ScopeType REQUEST = new ScopeType(0, "Request") { public MutableAttributeMap getScope(RequestContext context) { return context.getRequestScope(); } }; /** * The "flash" scope type. Attributes placed in flash scope exist through the life of the current request and * until the next view rendering. After the view renders, flash scope is cleared. *

* Flash scope is typically used to store messages that should be preserved until after the next view renders. */ public static final ScopeType FLASH = new ScopeType(1, "Flash") { public MutableAttributeMap getScope(RequestContext context) { return context.getFlashScope(); } }; /** * The "view" scope type. Attributes placed in view scope exist through the life of the current view state and * until the view state exits in a subsequent request. *

* View scope is typically used to store view model objects manipulated over a series of Ajax requests. */ public static final ScopeType VIEW = new ScopeType(1, "View") { public MutableAttributeMap getScope(RequestContext context) { return context.getViewScope(); } }; /** * The "flow" scope type. Attributes placed in flow scope exist through the life of an executing flow session, * representing an instance a single {@link FlowDefinition flow definition}. When the flow session ends any data in * flow scope goes out of scope. */ public static final ScopeType FLOW = new ScopeType(2, "Flow") { public MutableAttributeMap getScope(RequestContext context) { return context.getFlowScope(); } }; /** * The "conversation" scope type. Attributes placed in conversation scope are shared by all flow sessions started * within a flow execution and live for the life of the entire flow execution (representing a single logical user * conversation). When the governing execution ends, any data in conversation scope goes out of scope. */ public static final ScopeType CONVERSATION = new ScopeType(3, "Conversation") { public MutableAttributeMap getScope(RequestContext context) { return context.getConversationScope(); } }; /** * Private constructor because this is a typesafe enum! */ private ScopeType(int code, String label) { super(code, label); } public Class getType() { // force ScopeType as type return ScopeType.class; } /** * Accessor that returns the mutable attribute map for this scope type for a given flow execution request context. * @param context the context representing an executing request * @return the scope map of this type for that request, allowing attributes to be accessed and set */ public abstract MutableAttributeMap getScope(RequestContext context); }././@LongLink0000000000000000000000000000020700000000000011564 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframework/webflow/execution/package.htmllibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframew0000644000000000000000000000165411360615642027760 0ustar

Core, stable abstractions for representing runtime executions of flow definitions.

The central concept defined by this package is the {@link org.springframework.webflow.execution.FlowExecution} interface, which represents a single instance of a top-level flow definition.

The following classes and interfaces are of particular interest:

  • {@link org.springframework.webflow.execution.FlowExecutionFactory} - An abstract factory for creating new flow executions.
  • {@link org.springframework.webflow.execution.repository.FlowExecutionRepository} - A DAO for persisting and restoring existing flow executions.
  • {@link org.springframework.webflow.execution.FlowExecutionListener} - An observer interface to be implemented by objects that are interested in flow execution lifecycle events.

This package depends on the definition package.

././@LongLink0000000000000000000000000000020500000000000011562 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframework/webflow/execution/Event.javalibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframew0000644000000000000000000000707111360615636027762 0ustar /* * Copyright 2004-2008 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.springframework.webflow.execution; import java.util.EventObject; import org.springframework.util.Assert; import org.springframework.webflow.core.collection.AttributeMap; import org.springframework.webflow.core.collection.CollectionUtils; /** * Signals the occurrence of something an active flow execution should respond to. Each event has a string id that * provides a key for identifying what happened: e.g "coinInserted", or "pinDropped". Events may have attributes that * provide arbitrary payload data, e.g. "coin.amount=25", or "pinDropSpeed=25ms". *

* As an example, a "submit" event might signal that a Submit button was pressed in a web browser. A "success" event * might signal an action executed successfully. A "finish" event might signal a subflow ended normally. *

* Why is this not an interface? A specific design choice. An event is not a strategy that defines a generic type or * role--it is essentially an immutable value object. It is expected that specializations of this base class be "Events" * and not part of some other inheritance hierarchy. * * @author Keith Donald * @author Erwin Vervaet * @author Colin Sampaleanu */ public class Event extends EventObject { /** * The event identifier. */ private final String id; /** * The time the event occurred. */ private final long timestamp = System.currentTimeMillis(); /** * Additional event attributes that form this event's payload. */ private final AttributeMap attributes; /** * Create a new event with the specified id and no payload. * @param source the source of the event (required) * @param id the event identifier (required) */ public Event(Object source, String id) { this(source, id, null); } /** * Create a new event with the specified id and payload attributes. * @param source the source of the event (required) * @param id the event identifier (required) * @param attributes additional event attributes */ public Event(Object source, String id, AttributeMap attributes) { super(source); Assert.hasText(id, "The event id is required: please set this event's id to a non-blank string identifier"); this.id = id; this.attributes = attributes != null ? attributes : CollectionUtils.EMPTY_ATTRIBUTE_MAP; } /** * Returns the event identifier. * @return the event id */ public String getId() { return id; } /** * Returns the time at which the event occurred, represented as the number of milliseconds since January 1, 1970, * 00:00:00 GMT. * @return the timestamp */ public long getTimestamp() { return timestamp; } /** * Returns an unmodifiable map storing the attributes of this event. Never returns null. * @return the event attributes (payload) */ public AttributeMap getAttributes() { return attributes; } public String toString() { return getId(); } }././@LongLink0000000000000000000000000000022700000000000011566 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframework/webflow/execution/EnterStateVetoException.javalibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframew0000644000000000000000000000627311360615632027761 0ustar /* * Copyright 2004-2008 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.springframework.webflow.execution; import org.springframework.webflow.definition.StateDefinition; /** * Exception thrown to veto the entering of a state of a flow. Typically thrown by {@link FlowExecutionListener} objects * that apply security or other runtime constraint checks to flow executions. * * @author Keith Donald * @author Erwin Vervaet */ public class EnterStateVetoException extends FlowExecutionException { /** * The state whose entering was vetoed. */ private String vetoedStateId; /** * Create a new enter state veto exception. * @param flowId the active flow * @param sourceStateId the current state when the veto operation occured * @param vetoedStateId the state for which entering is vetoed * @param message a descriptive message */ public EnterStateVetoException(String flowId, String sourceStateId, String vetoedStateId, String message) { super(flowId, sourceStateId, message); this.vetoedStateId = vetoedStateId; } /** * Create a new enter state veto exception. * @param flowId the active flow * @param sourceStateId the current state when the veto operation occured * @param vetoedStateId the state for which entering is vetoed * @param message a descriptive message * @param cause the underlying cause */ public EnterStateVetoException(String flowId, String sourceStateId, String vetoedStateId, String message, Throwable cause) { super(flowId, sourceStateId, message, cause); this.vetoedStateId = vetoedStateId; } /** * Create a new enter state veto exception. * @param context the flow execution request context * @param vetoedState the state for which entering is vetoed * @param message a descriptive message */ public EnterStateVetoException(RequestContext context, StateDefinition vetoedState, String message) { this(context.getActiveFlow().getId(), context.getCurrentState().getId(), vetoedState.getId(), message); } /** * Create a new enter state veto exception. * @param context the flow execution request context * @param vetoedState the state for which entering is vetoed * @param message a descriptive message * @param cause the underlying cause */ public EnterStateVetoException(RequestContext context, StateDefinition vetoedState, String message, Throwable cause) { this(context.getActiveFlow().getId(), context.getCurrentState().getId(), vetoedState.getId(), message, cause); } /** * Returns the state for which entering was vetoed. */ public String getVetoedStateId() { return vetoedStateId; } }././@LongLink0000000000000000000000000000022400000000000011563 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframework/webflow/execution/FlowExecutionFactory.javalibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframew0000644000000000000000000000534111360615640027753 0ustar /* * Copyright 2004-2008 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.springframework.webflow.execution; import org.springframework.webflow.core.collection.MutableAttributeMap; import org.springframework.webflow.definition.FlowDefinition; import org.springframework.webflow.definition.registry.FlowDefinitionLocator; /** * An abstract factory for creating flow executions. A flow execution represents a runtime, top-level instance of a flow * definition. *

* This factory provides encapsulation of the flow execution implementation type, as well as its construction and * assembly process. *

* Flow execution factories are responsible for registering {@link FlowExecutionListener listeners} with the constructed * flow execution. * * @see FlowExecution * @see FlowDefinition * @see FlowExecutionListener * * @author Keith Donald */ public interface FlowExecutionFactory { /** * Create a new flow execution product for the given flow definition. * @param flowDefinition the flow definition * @return the new flow execution, fully initialized and awaiting to be started */ public FlowExecution createFlowExecution(FlowDefinition flowDefinition); /** * Restore the transient state of the flow execution. * @param flowExecution the flow execution, newly deserialized and needing restoration * @param flowDefinition the root flow definition for the execution, typically not part of the serialized form * @param flowExecutionKey the flow execution key, typically not part of the serialized form * @param conversationScope the execution's conversation scope, which is typically not part of the serialized form * since it could be shared by multiple physical flow execution copies all sharing the same logical * conversation * @param subflowDefinitionLocator for locating the definitions of any subflows started by the execution * @return the restored flow execution */ public FlowExecution restoreFlowExecution(FlowExecution flowExecution, FlowDefinition flowDefinition, FlowExecutionKey flowExecutionKey, MutableAttributeMap conversationScope, FlowDefinitionLocator subflowDefinitionLocator); }././@LongLink0000000000000000000000000000020600000000000011563 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframework/webflow/execution/repository/libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframew0000755000000000000000000000000011360615644027752 5ustar ././@LongLink0000000000000000000000000000024200000000000011563 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframework/webflow/execution/repository/FlowExecutionRepository.javalibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframew0000644000000000000000000001036511360615636027762 0ustar /* * Copyright 2004-2008 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.springframework.webflow.execution.repository; import org.springframework.webflow.execution.FlowExecution; import org.springframework.webflow.execution.FlowExecutionKey; /** * Central subsystem interface responsible for the saving and restoring of flow executions, where each flow execution * represents a state of an active flow definition. *

* Flow execution repositories are responsible for managing the storage, restoration and removal of flow executions * launched by clients of the Spring Web Flow system. *

* When placed in a repository a {@link FlowExecution} object representing the state of a flow at a point in time is * indexed under a unique {@link FlowExecutionKey}. * * @see FlowExecution * @see FlowExecutionKey * * @author Erwin Vervaet * @author Keith Donald */ public interface FlowExecutionRepository { /** * Parse the string-encoded flow execution key into its object form. Essentially, the reverse of * {@link FlowExecutionKey#toString()}. * @param encodedKey the string encoded key * @return the parsed flow execution key, the persistent identifier for exactly one flow execution */ public FlowExecutionKey parseFlowExecutionKey(String encodedKey) throws FlowExecutionRepositoryException; /** * Return the lock for the flow execution, allowing for the lock to be acquired or released. Caution: care should be * made not to allow for a deadlock situation. If you acquire a lock make sure you release it when you are done. The * general pattern for safely doing work against a locked conversation follows: * *

	 * FlowExecutionLock lock = repository.getLock(key);
	 * lock.lock();
	 * try {
	 * 	FlowExecution execution = repository.getFlowExecution(key);
	 * 	// do work
	 * } finally {
	 * 	lock.unlock();
	 * }
	 * 
* * @param key the identifier of the flow execution to lock * @return the lock * @throws FlowExecutionRepositoryException a problem occurred accessing the lock object */ public FlowExecutionLock getLock(FlowExecutionKey key) throws FlowExecutionRepositoryException; /** * Return the FlowExecution indexed by the provided key. The returned flow execution represents the * restored state of an executing flow from a point in time. This should be called to resume a persistent flow * execution. Before calling this method, you should acquire the lock for the keyed flow execution. * @param key the flow execution key * @return the flow execution, fully hydrated and ready to resume * @throws FlowExecutionRepositoryException if no flow execution was indexed with the key provided */ public FlowExecution getFlowExecution(FlowExecutionKey key) throws FlowExecutionRepositoryException; /** * Place the FlowExecution in this repository under the provided key. This should be called to save * or update the persistent state of an active (but paused) flow execution. Before calling this method, you should * acquire the lock for the keyed flow execution. * @param flowExecution the flow execution * @throws FlowExecutionRepositoryException the flow execution could not be stored */ public void putFlowExecution(FlowExecution flowExecution) throws FlowExecutionRepositoryException; /** * Remove the flow execution from the repository. This should be called when the flow execution ends (is no longer * active). Before calling this method, you should acquire the lock for the keyed flow execution. * @param flowExecution the flow execution * @throws FlowExecutionRepositoryException the flow execution could not be removed. */ public void removeFlowExecution(FlowExecution flowExecution) throws FlowExecutionRepositoryException; }././@LongLink0000000000000000000000000000024700000000000011570 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframework/webflow/execution/repository/NoSuchFlowExecutionException.javalibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframew0000644000000000000000000000322511360615636027757 0ustar /* * Copyright 2004-2008 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.springframework.webflow.execution.repository; import org.springframework.webflow.execution.FlowExecutionKey; /** * Thrown when the flow execution with the persistent identifier provided could not be found. This could occur if the * execution has been removed from the repository and a client still has a handle to the key. * * @author Keith Donald * @author Erwin Vervaet */ public class NoSuchFlowExecutionException extends FlowExecutionAccessException { /** * Creates a new no such flow execution exception. * @param flowExecutionKey the key of the execution that could not be found * @param cause the root cause of the failure */ public NoSuchFlowExecutionException(FlowExecutionKey flowExecutionKey, Exception cause) { super(flowExecutionKey, "No flow execution could be found with key '" + flowExecutionKey + "' -- perhaps this executing flow has ended or expired? " + "This could happen if your users are relying on browser history " + "(typically via the back button) that references ended flows.", cause); } }././@LongLink0000000000000000000000000000021700000000000011565 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframework/webflow/execution/repository/snapshot/libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframew0000755000000000000000000000000011360615646027754 5ustar ././@LongLink0000000000000000000000000000026000000000000011563 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframework/webflow/execution/repository/snapshot/FlowExecutionSnapshotFactory.javalibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframew0000644000000000000000000000431111360615636027754 0ustar /* * Copyright 2004-2008 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.springframework.webflow.execution.repository.snapshot; import org.springframework.webflow.core.collection.MutableAttributeMap; import org.springframework.webflow.execution.FlowExecution; import org.springframework.webflow.execution.FlowExecutionKey; import org.springframework.webflow.execution.FlowExecutionKeyFactory; import org.springframework.webflow.execution.repository.FlowExecutionRestorationFailureException; /** * A factory for creating different {@link FlowExecutionSnapshot} implementations. * * @author Keith Donald * @author Erwin Vervaet */ public interface FlowExecutionSnapshotFactory { /** * Takes a snapshot of the flow execution. * @param flowExecution the flow execution * @return the new snapshot * @throws SnapshotCreationException if the snapshot could not be created */ public FlowExecutionSnapshot createSnapshot(FlowExecution flowExecution) throws SnapshotCreationException; /** * Restores a flow execution from a previously taken snapshot. * @param snapshot the previously taken snapshot * @param flowId the id of the root flow definition * @param key the flow execution key * @param conversationScope conversation scope * @param keyFactory factory for creating new snapshot keys * @return the restored flow execution * @throws FlowExecutionRestorationFailureException if flow execution restoration fails */ public FlowExecution restoreExecution(FlowExecutionSnapshot snapshot, String flowId, FlowExecutionKey key, MutableAttributeMap conversationScope, FlowExecutionKeyFactory keyFactory) throws FlowExecutionRestorationFailureException; }././@LongLink0000000000000000000000000000026300000000000011566 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframework/webflow/execution/repository/snapshot/SerializedFlowExecutionSnapshot.javalibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframew0000644000000000000000000002201311360615632027747 0ustar /* * Copyright 2004-2008 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.springframework.webflow.execution.repository.snapshot; import java.io.ByteArrayInputStream; import java.io.ByteArrayOutputStream; import java.io.Externalizable; import java.io.IOException; import java.io.InputStream; import java.io.NotSerializableException; import java.io.ObjectInput; import java.io.ObjectInputStream; import java.io.ObjectOutput; import java.io.ObjectOutputStream; import java.io.ObjectStreamClass; import java.lang.reflect.Modifier; import java.lang.reflect.Proxy; import java.util.Arrays; import java.util.zip.GZIPInputStream; import java.util.zip.GZIPOutputStream; import org.springframework.util.ClassUtils; import org.springframework.util.FileCopyUtils; import org.springframework.webflow.execution.FlowExecution; /** * A snapshot implementation that is based on standard Java serialization, created by a * {@link SerializedFlowExecutionSnapshotFactory}. * * @see SerializedFlowExecutionSnapshotFactory * * @author Keith Donald * @author Erwin Vervaet */ public class SerializedFlowExecutionSnapshot extends FlowExecutionSnapshot implements Externalizable { private byte[] flowExecutionData; private boolean compressed; /** * Default constructor necessary for {@link Externalizable} custom serialization semantics. Should not be called by * application code. */ public SerializedFlowExecutionSnapshot() { } /** * Creates a new serialized flow execution snapshot. * @param flowExecution the flow execution * @param compress whether or not to apply compression during snapshotting */ public SerializedFlowExecutionSnapshot(FlowExecution flowExecution, boolean compress) throws SnapshotCreationException { try { flowExecutionData = serialize(flowExecution); if (compress) { flowExecutionData = compress(flowExecutionData); } } catch (NotSerializableException e) { throw new SnapshotCreationException(flowExecution, "Could not serialize flow execution; " + "make sure all objects stored in flow or flash scope are serializable", e); } catch (IOException e) { throw new SnapshotCreationException(flowExecution, "IOException thrown serializing flow execution -- this should not happen!", e); } this.compressed = compress; } /** * Returns whether or not the flow execution data in this snapshot is compressed. */ public boolean isCompressed() { return compressed; } /** * Unmarshal the flow execution from this snapshot's data. * @param classLoader the classloader to use to resolve types during execution deserialization * @return the unmarashalled flow execution * @throws SnapshotUnmarshalException */ public FlowExecution unmarshal(ClassLoader classLoader) throws SnapshotUnmarshalException { try { return deserialize(getFlowExecutionData(), classLoader); } catch (IOException e) { throw new SnapshotUnmarshalException( "IOException thrown deserializing the flow execution stored in this snapshot -- this should not happen!", e); } catch (ClassNotFoundException e) { throw new SnapshotUnmarshalException( "ClassNotFoundException thrown deserializing the flow execution stored in this snapshot -- " + "This should not happen! Make sure there are no classloader issues. " + "For example, perhaps the Web Flow system is being loaded by a classloader " + "that is a parent of the classloader loading application classes?", e); } } public boolean equals(Object o) { if (!(o instanceof SerializedFlowExecutionSnapshot)) { return false; } SerializedFlowExecutionSnapshot c = (SerializedFlowExecutionSnapshot) o; return Arrays.equals(flowExecutionData, c.flowExecutionData); } public int hashCode() { int hashCode = 0; for (int i = 0; i < flowExecutionData.length; i++) { hashCode += flowExecutionData[i]; } return hashCode; } // implementing Externalizable for custom serialization public void writeExternal(ObjectOutput out) throws IOException { // write out length first out.writeInt(flowExecutionData.length); // write out contents out.write(flowExecutionData); out.writeBoolean(compressed); } public void readExternal(ObjectInput in) throws IOException, ClassNotFoundException { // read length of data array int length = in.readInt(); flowExecutionData = new byte[length]; // read in contents in full in.readFully(flowExecutionData); compressed = in.readBoolean(); } // subclassing hooks /** * Return the flow execution data in its raw byte[] form. Will decompress if necessary. * @return the byte array * @throws IOException a problem occured with decompression */ protected byte[] getFlowExecutionData() throws IOException { if (isCompressed()) { return decompress(flowExecutionData); } else { return flowExecutionData; } } /** * Internal helper method to serialize given flow execution. Override if a custom serialization method is used. * @param flowExecution flow execution to serialize * @return serialized flow flow execution data * @throws IOException when something goes wrong during during serialization */ protected byte[] serialize(FlowExecution flowExecution) throws IOException { ByteArrayOutputStream baos = new ByteArrayOutputStream(1024); ObjectOutputStream oos = new ObjectOutputStream(baos); try { oos.writeObject(flowExecution); oos.flush(); return baos.toByteArray(); } finally { oos.close(); } } /** * Internal helper method to deserialize given flow execution data. Override if a custom serialization method is * used. * @param data serialized flow flow execution data * @param classLoader the class loader to use to resolve classes during deserialization * @return deserialized flow execution * @throws IOException when something goes wrong during deserialization * @throws ClassNotFoundException when required classes cannot be loaded */ protected FlowExecution deserialize(byte[] data, ClassLoader classLoader) throws IOException, ClassNotFoundException { ObjectInputStream ois = new ConfigurableObjectInputStream(new ByteArrayInputStream(data), classLoader); try { return (FlowExecution) ois.readObject(); } finally { ois.close(); } } /** * Internal helper method to compress given flow execution data using GZIP compression. Override if custom * compression is desired. */ protected byte[] compress(byte[] dataToCompress) throws IOException { ByteArrayOutputStream baos = new ByteArrayOutputStream(); GZIPOutputStream gzipos = new GZIPOutputStream(baos); try { gzipos.write(dataToCompress); gzipos.flush(); } finally { gzipos.close(); } return baos.toByteArray(); } /** * Internal helper method to decompress given flow execution data using GZIP decompression. Override if custom * decompression is desired. */ protected byte[] decompress(byte[] dataToDecompress) throws IOException { GZIPInputStream gzipin = new GZIPInputStream(new ByteArrayInputStream(dataToDecompress)); ByteArrayOutputStream baos = new ByteArrayOutputStream(); try { FileCopyUtils.copy(gzipin, baos); } finally { gzipin.close(); } return baos.toByteArray(); } private static class ConfigurableObjectInputStream extends ObjectInputStream { private final ClassLoader classLoader; public ConfigurableObjectInputStream(InputStream in, ClassLoader classLoader) throws IOException { super(in); this.classLoader = classLoader; } protected Class resolveClass(ObjectStreamClass desc) throws IOException, ClassNotFoundException { return ClassUtils.forName(desc.getName(), classLoader); } protected Class resolveProxyClass(String[] interfaces) throws IOException, ClassNotFoundException { ClassLoader nonPublicLoader = null; boolean hasNonPublicInterface = false; // define proxy in class loader of non-public interface(s), if any Class[] classObjs = new Class[interfaces.length]; for (int i = 0; i < interfaces.length; i++) { Class cl = ClassUtils.forName(interfaces[i], classLoader); if ((cl.getModifiers() & Modifier.PUBLIC) == 0) { if (hasNonPublicInterface) { if (nonPublicLoader != cl.getClassLoader()) { throw new IllegalAccessError("Conflicting non-public interface class loaders"); } } else { nonPublicLoader = cl.getClassLoader(); hasNonPublicInterface = true; } } classObjs[i] = cl; } try { return Proxy.getProxyClass(hasNonPublicInterface ? nonPublicLoader : classLoader, classObjs); } catch (IllegalArgumentException e) { throw new ClassNotFoundException(null, e); } } } }././@LongLink0000000000000000000000000000025100000000000011563 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframework/webflow/execution/repository/snapshot/FlowExecutionSnapshot.javalibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframew0000644000000000000000000000174511360615632027760 0ustar /* * Copyright 2004-2008 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.springframework.webflow.execution.repository.snapshot; import java.io.Serializable; /** * A snapshot that can be used to restore a FlowExecution using a {@link FlowExecutionSnapshotFactory}. * * @see FlowExecutionSnapshotFactory * * @author Erwin Vervaet * @author Keith Donald */ public abstract class FlowExecutionSnapshot implements Serializable { }././@LongLink0000000000000000000000000000023300000000000011563 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframework/webflow/execution/repository/snapshot/package.htmllibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframew0000644000000000000000000000017311360615646027757 0ustar

Support for repositories that take flow execution snapshots to support backtracking.

././@LongLink0000000000000000000000000000025500000000000011567 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframework/webflow/execution/repository/snapshot/SnapshotNotFoundException.javalibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframew0000644000000000000000000000315611360615632027756 0ustar /* * Copyright 2004-2008 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.springframework.webflow.execution.repository.snapshot; import java.io.Serializable; import org.springframework.webflow.execution.repository.FlowExecutionRepositoryException; /** * Thrown when a flow execution snapshot cannot be found This usually occurs when the client references a snapshot that * has since been removed. * * @author Keith Donald * @author Erwin Vervaet */ public class SnapshotNotFoundException extends FlowExecutionRepositoryException { private Serializable snapshotId; /** * Creates a snapshot not found exception. * @param snapshotId the snapshot id that could not be found */ public SnapshotNotFoundException(Serializable snapshotId) { super("No flow execution snapshot could be found with id '" + snapshotId + "'; perhaps the snapshot has been removed? "); this.snapshotId = snapshotId; } /** * The id of the snapshot that was not found. */ public Serializable getSnapshotId() { return snapshotId; } }././@LongLink0000000000000000000000000000026600000000000011571 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframework/webflow/execution/repository/snapshot/SimpleFlowExecutionSnapshotFactory.javalibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframew0000644000000000000000000000715511360615634027763 0ustar /* * Copyright 2004-2008 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.springframework.webflow.execution.repository.snapshot; import org.springframework.util.Assert; import org.springframework.webflow.core.collection.MutableAttributeMap; import org.springframework.webflow.definition.FlowDefinition; import org.springframework.webflow.definition.registry.FlowDefinitionLocator; import org.springframework.webflow.execution.FlowExecution; import org.springframework.webflow.execution.FlowExecutionFactory; import org.springframework.webflow.execution.FlowExecutionKey; import org.springframework.webflow.execution.FlowExecutionKeyFactory; import org.springframework.webflow.execution.repository.FlowExecutionRestorationFailureException; /** * A factory that creates new flow execution snapshot instances that simply wraps an underlying * {@link FlowExecution flow execution} instance. * * Note: this class is generally only suitable for use with a repository that has maxSnapshots set to 1, since no actual * copies of the execution data are made by this factory. This class exists to support the use case where taking copies * of flow execution state is not needed. * * @author Keith Donald */ public class SimpleFlowExecutionSnapshotFactory implements FlowExecutionSnapshotFactory { private FlowExecutionFactory flowExecutionFactory; private FlowDefinitionLocator flowDefinitionLocator; /** * Creates a new simple flow execution snapshot factory * @param flowDefinitionLocator the flow definition locator * @param flowExecutionFactory the flow execution factory */ public SimpleFlowExecutionSnapshotFactory(FlowExecutionFactory flowExecutionFactory, FlowDefinitionLocator flowDefinitionLocator) { Assert.notNull(flowExecutionFactory, "The FlowExecutionFactory to restore transient flow state is required"); Assert.notNull(flowDefinitionLocator, "The FlowDefinitionLocator to restore FlowDefinitions is required"); this.flowExecutionFactory = flowExecutionFactory; this.flowDefinitionLocator = flowDefinitionLocator; } public FlowExecutionSnapshot createSnapshot(FlowExecution flowExecution) throws SnapshotCreationException { return new SimpleFlowExecutionSnapshot(flowExecution); } public FlowExecution restoreExecution(FlowExecutionSnapshot snapshot, String flowId, FlowExecutionKey key, MutableAttributeMap conversationScope, FlowExecutionKeyFactory keyFactory) throws FlowExecutionRestorationFailureException { SimpleFlowExecutionSnapshot snapshotImpl = (SimpleFlowExecutionSnapshot) snapshot; FlowDefinition def = flowDefinitionLocator.getFlowDefinition(flowId); FlowExecution execution = snapshotImpl.getFlowExecution(); flowExecutionFactory.restoreFlowExecution(execution, def, key, conversationScope, flowDefinitionLocator); return execution; } private static class SimpleFlowExecutionSnapshot extends FlowExecutionSnapshot { private FlowExecution flowExecution; public SimpleFlowExecutionSnapshot(FlowExecution flowExecution) { this.flowExecution = flowExecution; } public FlowExecution getFlowExecution() { return flowExecution; } } }././@LongLink0000000000000000000000000000027200000000000011566 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframework/webflow/execution/repository/snapshot/SerializedFlowExecutionSnapshotFactory.javalibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframew0000644000000000000000000000676011360615636027766 0ustar /* * Copyright 2004-2008 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.springframework.webflow.execution.repository.snapshot; import org.springframework.util.Assert; import org.springframework.webflow.core.collection.MutableAttributeMap; import org.springframework.webflow.definition.FlowDefinition; import org.springframework.webflow.definition.registry.FlowDefinitionLocator; import org.springframework.webflow.execution.FlowExecution; import org.springframework.webflow.execution.FlowExecutionFactory; import org.springframework.webflow.execution.FlowExecutionKey; import org.springframework.webflow.execution.FlowExecutionKeyFactory; import org.springframework.webflow.execution.repository.FlowExecutionRestorationFailureException; /** * A factory that creates new instances of flow execution snapshots based on standard Java serialization. * * @author Keith Donald * @author Erwin Vervaet */ public class SerializedFlowExecutionSnapshotFactory implements FlowExecutionSnapshotFactory { private FlowExecutionFactory flowExecutionFactory; private FlowDefinitionLocator flowDefinitionLocator; private boolean compress = true; /** * Creates a new serialized flow execution snapshot factory * @param flowDefinitionLocator the flow definition locator * @param flowExecutionFactory the flow execution factory */ public SerializedFlowExecutionSnapshotFactory(FlowExecutionFactory flowExecutionFactory, FlowDefinitionLocator flowDefinitionLocator) { Assert.notNull(flowExecutionFactory, "The FlowExecutionFactory to restore transient flow state is required"); Assert.notNull(flowDefinitionLocator, "The FlowDefinitionLocator to restore FlowDefinitions is required"); this.flowExecutionFactory = flowExecutionFactory; this.flowDefinitionLocator = flowDefinitionLocator; } /** * Returns whether or not the snapshots should be compressed. */ public boolean getCompress() { return compress; } /** * Set whether or not the snapshots should be compressed. */ public void setCompress(boolean compress) { this.compress = compress; } public FlowExecutionSnapshot createSnapshot(FlowExecution flowExecution) throws SnapshotCreationException { return new SerializedFlowExecutionSnapshot(flowExecution, compress); } public FlowExecution restoreExecution(FlowExecutionSnapshot snapshot, String flowId, FlowExecutionKey key, MutableAttributeMap conversationScope, FlowExecutionKeyFactory keyFactory) throws FlowExecutionRestorationFailureException { SerializedFlowExecutionSnapshot snapshotImpl = (SerializedFlowExecutionSnapshot) snapshot; FlowDefinition def = flowDefinitionLocator.getFlowDefinition(flowId); FlowExecution execution; try { execution = snapshotImpl.unmarshal(def.getClassLoader()); } catch (SnapshotUnmarshalException e) { throw new FlowExecutionRestorationFailureException(key, e); } flowExecutionFactory.restoreFlowExecution(execution, def, key, conversationScope, flowDefinitionLocator); return execution; } }././@LongLink0000000000000000000000000000027700000000000011573 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframework/webflow/execution/repository/snapshot/AbstractSnapshottingFlowExecutionRepository.javalibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframew0000644000000000000000000000742111360615642027756 0ustar /* * Copyright 2004-2008 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.springframework.webflow.execution.repository.snapshot; import java.io.Serializable; import org.springframework.util.Assert; import org.springframework.webflow.conversation.Conversation; import org.springframework.webflow.conversation.ConversationManager; import org.springframework.webflow.core.collection.MutableAttributeMap; import org.springframework.webflow.execution.FlowExecution; import org.springframework.webflow.execution.FlowExecutionKey; import org.springframework.webflow.execution.repository.support.AbstractFlowExecutionRepository; import org.springframework.webflow.execution.repository.support.CompositeFlowExecutionKey; /** * Base class for repositories that take flow execution snapshots using a {@link FlowExecutionSnapshotFactory}. * * @author Keith Donald */ public abstract class AbstractSnapshottingFlowExecutionRepository extends AbstractFlowExecutionRepository { /** * The factory to use to take flow execution snapshots. */ private FlowExecutionSnapshotFactory snapshotFactory; /** * Creates a new snapshotting flow execution repository. * @param conversationManager the conversation manager * @param snapshotFactory the execution snapshot factory */ public AbstractSnapshottingFlowExecutionRepository(ConversationManager conversationManager, FlowExecutionSnapshotFactory snapshotFactory) { super(conversationManager); Assert.notNull(snapshotFactory, "The flow execution snapshot factory is required"); this.snapshotFactory = snapshotFactory; } /** * Returns the configured flow execution snapshot factory. * @return the snapshot factory */ public FlowExecutionSnapshotFactory getSnapshotFactory() { return snapshotFactory; } /** * Returns the snapshotId portion of the flow execution key. * @param key the execution key */ protected Serializable getSnapshotId(FlowExecutionKey key) { return ((CompositeFlowExecutionKey) key).getSnapshotId(); } /** * Take a new flow execution snapshot. * @param flowExecution the execution to snapshot * @return the snapshot */ protected FlowExecutionSnapshot snapshot(FlowExecution flowExecution) { return snapshotFactory.createSnapshot(flowExecution); } /** * Restore a flow execution from a snapshot. * @param snapshot the snapshot * @param key the flow execution snapshot key * @param conversation the governing conversation * @return the restored flow execution */ protected FlowExecution restoreFlowExecution(FlowExecutionSnapshot snapshot, FlowExecutionKey key, Conversation conversation) { MutableAttributeMap conversationScope = (MutableAttributeMap) conversation.getAttribute("scope"); String flowId = (String) conversation.getAttribute("name"); return snapshotFactory.restoreExecution(snapshot, flowId, key, conversationScope, this); } /** * Puts the value of conversation scope in the conversation object. * @param flowExecution the flow execution holding a reference to conversation scope * @param conversation the conversation where conversation scope is stored */ protected void putConversationScope(FlowExecution flowExecution, Conversation conversation) { conversation.putAttribute("scope", flowExecution.getConversationScope()); } }././@LongLink0000000000000000000000000000025500000000000011567 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframework/webflow/execution/repository/snapshot/SnapshotCreationException.javalibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframew0000644000000000000000000000320711360615640027752 0ustar /* * Copyright 2004-2008 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.springframework.webflow.execution.repository.snapshot; import org.springframework.webflow.execution.FlowExecution; import org.springframework.webflow.execution.repository.FlowExecutionRepositoryException; /** * Thrown when a continuation snapshot could not be taken of flow execution state. * * @author Keith Donald */ public class SnapshotCreationException extends FlowExecutionRepositoryException { /** * The flow execution that could not be snapshotted. */ private FlowExecution flowExecution; /** * Creates a new snapshot creation exception. * @param flowExecution the flow execution * @param message a descriptive message * @param cause the cause */ public SnapshotCreationException(FlowExecution flowExecution, String message, Throwable cause) { super(message, cause); this.flowExecution = flowExecution; } /** * Returns the flow execution that could not be snapshotted. */ public FlowExecution getFlowExecution() { return flowExecution; } }././@LongLink0000000000000000000000000000025600000000000011570 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframework/webflow/execution/repository/snapshot/SnapshotUnmarshalException.javalibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframew0000644000000000000000000000254411360615640027755 0ustar /* * Copyright 2004-2008 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.springframework.webflow.execution.repository.snapshot; import org.springframework.webflow.execution.FlowExecution; import org.springframework.webflow.execution.repository.FlowExecutionRepositoryException; /** * Thrown when a FlowExecutionContinuation could not be deserialized into a FlowExecution. * * @see FlowExecutionSnapshot * @see FlowExecution * * @author Keith Donald */ public class SnapshotUnmarshalException extends FlowExecutionRepositoryException { /** * Creates a new flow execution unmarshalling exception. * @param message the exception message * @param cause the cause */ public SnapshotUnmarshalException(String message, Throwable cause) { super(message, cause); } }././@LongLink0000000000000000000000000000026700000000000011572 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframework/webflow/execution/repository/PermissionDeniedFlowExecutionAccessException.javalibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframew0000644000000000000000000000265411360615634027762 0ustar /* * Copyright 2004-2008 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.springframework.webflow.execution.repository; import org.springframework.webflow.execution.FlowExecutionKey; /** * Thrown when access to a flow execution was denied by a repository. * * @author Keith Donald * @author Erwin Vervaet */ public class PermissionDeniedFlowExecutionAccessException extends FlowExecutionAccessException { /** * Creates a new flow execution restoration exception. * @param flowExecutionKey the key of the execution that could not be accessed * @param cause the root cause of the access failure */ public PermissionDeniedFlowExecutionAccessException(FlowExecutionKey flowExecutionKey, Exception cause) { super(flowExecutionKey, "Unable to restore flow execution with key '" + flowExecutionKey + "' -- permission denied.", cause); } }././@LongLink0000000000000000000000000000026200000000000011565 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframework/webflow/execution/repository/BadlyFormattedFlowExecutionKeyException.javalibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframew0000644000000000000000000000445511360615640027760 0ustar /* * Copyright 2004-2008 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.springframework.webflow.execution.repository; /** * Thrown when an encoded flow execution key is badly formatted and could not be parsed. * * @author Keith Donald * @author Erwin Vervaet */ public class BadlyFormattedFlowExecutionKeyException extends FlowExecutionRepositoryException { /** * The string encoded flow execution key that was invalid. */ private String invalidKey; /** * The format the string key should have been in. Could just be a description of that format. */ private String format; /** * Creates a bad execution key format exception. * @param invalidKey the invalid key * @param format the format the key should have been in */ public BadlyFormattedFlowExecutionKeyException(String invalidKey, String format) { super("Badly formatted flow execution key '" + invalidKey + "', the expected format is '" + format + "'"); this.invalidKey = invalidKey; this.format = format; } /** * Creates a bad execution key format exception. * @param invalidKey the invalid key * @param format the format the key should have been in * @param cause the cause */ public BadlyFormattedFlowExecutionKeyException(String invalidKey, String format, Throwable cause) { super("Badly formatted flow execution key '" + invalidKey + "', the expected format is '" + format + "'", cause); this.invalidKey = invalidKey; this.format = format; } /** * Returns the string key of the flow execution that could not be parsed. */ public String getInvalidKey() { return invalidKey; } /** * Returns the format the key should have been in. */ public String getFormat() { return format; } }././@LongLink0000000000000000000000000000024700000000000011570 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframework/webflow/execution/repository/FlowExecutionAccessException.javalibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframew0000644000000000000000000000401611360615632027752 0ustar /* * Copyright 2004-2008 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.springframework.webflow.execution.repository; import org.springframework.webflow.execution.FlowExecutionKey; /** * Base class for exceptions that indicate a flow execution could not be accessed within a repository. * * @author Keith Donald * @author Erwin Vervaet */ public abstract class FlowExecutionAccessException extends FlowExecutionRepositoryException { /** * The key of the execution that could not be accessed. */ private FlowExecutionKey flowExecutionKey; /** * Creates a new flow execution access exception. * @param flowExecutionKey the key of the execution that could not be accessed * @param message a descriptive message */ public FlowExecutionAccessException(FlowExecutionKey flowExecutionKey, String message) { this(flowExecutionKey, message, null); } /** * Creates a new flow execution access exception. * @param flowExecutionKey the key of the execution that could not be accessed * @param message a descriptive message * @param cause the root cause of the access failure */ public FlowExecutionAccessException(FlowExecutionKey flowExecutionKey, String message, Exception cause) { super(message, cause); this.flowExecutionKey = flowExecutionKey; } /** * Returns key of the flow execution that could not be accessed. */ public FlowExecutionKey getFlowExecutionKey() { return flowExecutionKey; } }././@LongLink0000000000000000000000000000021300000000000011561 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframework/webflow/execution/repository/impl/libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframew0000755000000000000000000000000011360615644027752 5ustar ././@LongLink0000000000000000000000000000026000000000000011563 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframework/webflow/execution/repository/impl/SimpleFlowExecutionSnapshotGroup.javalibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframew0000644000000000000000000001010211360615636027747 0ustar /* * Copyright 2004-2008 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.springframework.webflow.execution.repository.impl; import java.io.Serializable; import java.util.HashMap; import java.util.LinkedList; import java.util.Map; import org.springframework.core.JdkVersion; import org.springframework.webflow.execution.repository.snapshot.FlowExecutionSnapshot; import org.springframework.webflow.execution.repository.snapshot.SnapshotNotFoundException; /** * A group of flow execution snapshots. Simple typed data structure backed by a map and linked list. Supports expelling * the oldest snapshot if the maximum size is met. * * @author Keith Donald */ class SimpleFlowExecutionSnapshotGroup implements FlowExecutionSnapshotGroup, Serializable { /** * The snapshot map; the key is a snapshot id, and the value is a {@link FlowExecutionSnapshot} object. */ private Map snapshots = new HashMap(); /** * An ordered list of snapshot ids. Each snapshot id represents an pointer to a {@link FlowExecutionSnapshot} in the * map. The first element is the oldest snapshot and the last is the youngest. */ private LinkedList snapshotIds = new LinkedList(); /** * The maximum number of snapshots allowed in this group. -1 indicates no max limit. */ private int maxSnapshots = -1; /** * The snapshot id sequence ensuring unique snapshot ids within this group; snapshot ids start at 1. */ private int snapshotIdSequence = 1; /** * Returns the maximum number of snapshots allowed in this group. */ public int getMaxSnapshots() { return maxSnapshots; } /** * Sets the maximum number of snapshots allowed in this group. * @param maxSnapshots them max number of snapshots */ public void setMaxSnapshots(int maxSnapshots) { this.maxSnapshots = maxSnapshots; } public FlowExecutionSnapshot getSnapshot(Serializable snapshotId) throws SnapshotNotFoundException { FlowExecutionSnapshot snapshot = (FlowExecutionSnapshot) snapshots.get(snapshotId); if (snapshot == null) { throw new SnapshotNotFoundException(snapshotId); } return snapshot; } public void addSnapshot(Serializable snapshotId, FlowExecutionSnapshot snapshot) { snapshots.put(snapshotId, snapshot); if (snapshotIds.contains(snapshotId)) { snapshotIds.remove(snapshotId); } snapshotIds.add(snapshotId); if (maxExceeded()) { removeOldestSnapshot(); } } public void updateSnapshot(Serializable snapshotId, FlowExecutionSnapshot snapshot) { if (!snapshots.containsKey(snapshotId)) { return; } snapshots.put(snapshotId, snapshot); } public void removeSnapshot(Serializable snapshotId) { snapshots.remove(snapshotId); snapshotIds.remove(snapshotId); } public void removeAllSnapshots() { snapshots.clear(); snapshotIds.clear(); } public int getSnapshotCount() { return snapshotIds.size(); } public Serializable nextSnapshotId() { Integer nextSnapshotId; if (JdkVersion.isAtLeastJava15()) { nextSnapshotId = Integer.valueOf(snapshotIdSequence); } else { nextSnapshotId = new Integer(snapshotIdSequence); } snapshotIdSequence++; return nextSnapshotId; } /** * Has the maximum number of snapshots in this group been exceeded? */ private boolean maxExceeded() { return maxSnapshots > 0 && snapshotIds.size() > maxSnapshots; } /** * Remove the olders snapshot from this group. */ private void removeOldestSnapshot() { snapshots.remove(snapshotIds.removeFirst()); } }././@LongLink0000000000000000000000000000025600000000000011570 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframework/webflow/execution/repository/impl/DefaultFlowExecutionRepository.javalibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframew0000644000000000000000000001633111360615644027760 0ustar /* * Copyright 2004-2008 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.springframework.webflow.execution.repository.impl; import java.io.Serializable; import org.springframework.webflow.conversation.Conversation; import org.springframework.webflow.conversation.ConversationManager; import org.springframework.webflow.execution.FlowExecution; import org.springframework.webflow.execution.FlowExecutionKey; import org.springframework.webflow.execution.repository.FlowExecutionRestorationFailureException; import org.springframework.webflow.execution.repository.snapshot.AbstractSnapshottingFlowExecutionRepository; import org.springframework.webflow.execution.repository.snapshot.FlowExecutionSnapshot; import org.springframework.webflow.execution.repository.snapshot.FlowExecutionSnapshotFactory; import org.springframework.webflow.execution.repository.snapshot.SnapshotNotFoundException; /** * The default flow execution repository implementation. Takes one to {@link #getMaxSnapshots() max} flow * execution snapshots, where each snapshot represents a copy of a {@link FlowExecution} taken at a point in time. *

* The set of active flow executions are managed by a {@link ConversationManager} implementation, which this repository * delegates to. *

* This repository is responsible for: *

    *
  • Beginning a new {@link Conversation} when a {@link FlowExecution} is assigned a persistent key. Each conversation * is assigned a unique conversation id which forms one part of the flow execution key. *
  • Taking {@link FlowExecutionSnapshot execution snapshots} to persist flow execution state. A snapshot is a copy of * the execution created at a point in time that can be restored and continued. Snapshotting supports users going * back in their browser to continue their flow execution from a previoius point. *
  • Ending conversations when flow executions end. *
*

* This repository implementation also provides support for execution invalidation after completion, where once a * logical flow execution completes, it and all of its snapshots are removed. This cleans up memory and prevents the * possibility of duplicate submission after completion. * * @author Keith Donald */ public class DefaultFlowExecutionRepository extends AbstractSnapshottingFlowExecutionRepository { /** * The conversation attribute that stores the group of flow execution snapshots. */ private static final String SNAPSHOT_GROUP_ATTRIBUTE = "flowExecutionSnapshotGroup"; /** * The maximum number of snapshots that can be taken per execution. The default is 30, which is generally high * enough not to interfere with the user experience of normal users using the back button, but low enough to avoid * excessive resource usage or denial of service attacks. */ private int maxSnapshots = 30; /** * Create a new default flow execution repository using the given state restorer, conversation manager, and snapshot * factory. * @param conversationManager the conversation manager to use * @param snapshotFactory the flow execution snapshot factory to use */ public DefaultFlowExecutionRepository(ConversationManager conversationManager, FlowExecutionSnapshotFactory snapshotFactory) { super(conversationManager, snapshotFactory); } /** * Returns the max number of snapshots allowed per flow execution by this repository. */ public int getMaxSnapshots() { return maxSnapshots; } /** * Sets the maximum number of snapshots allowed per flow execution by this repository. Use -1 for unlimited. The * default is 30. */ public void setMaxSnapshots(int maxSnapshots) { this.maxSnapshots = maxSnapshots; } // supporting flow execution key factory impl protected Serializable nextSnapshotId(Serializable executionId) { return getSnapshotGroup(getConversation(executionId)).nextSnapshotId(); } // implementing flow execution repository public FlowExecution getFlowExecution(FlowExecutionKey key) { if (logger.isDebugEnabled()) { logger.debug("Getting flow execution with key '" + key + "'"); } Conversation conversation = getConversation(key); FlowExecutionSnapshot snapshot; try { snapshot = getSnapshotGroup(conversation).getSnapshot(getSnapshotId(key)); } catch (SnapshotNotFoundException e) { throw new FlowExecutionRestorationFailureException(key, e); } return restoreFlowExecution(snapshot, key, conversation); } public void putFlowExecution(FlowExecution flowExecution) { assertKeySet(flowExecution); if (logger.isDebugEnabled()) { logger.debug("Putting flow execution '" + flowExecution + "' into repository"); } FlowExecutionKey key = flowExecution.getKey(); Conversation conversation = getConversation(key); FlowExecutionSnapshotGroup snapshotGroup = getSnapshotGroup(conversation); FlowExecutionSnapshot snapshot = snapshot(flowExecution); if (logger.isDebugEnabled()) { logger.debug("Adding snapshot to group with id " + getSnapshotId(key)); } snapshotGroup.addSnapshot(getSnapshotId(key), snapshot); putConversationScope(flowExecution, conversation); } // implementing flow execution key factory public void updateFlowExecutionSnapshot(FlowExecution execution) { FlowExecutionKey key = execution.getKey(); if (key == null) { return; } Conversation conversation = getConversation(key); getSnapshotGroup(conversation).updateSnapshot(getSnapshotId(key), snapshot(execution)); } public void removeFlowExecutionSnapshot(FlowExecution execution) { FlowExecutionKey key = execution.getKey(); if (key == null) { return; } Conversation conversation = getConversation(key); getSnapshotGroup(conversation).removeSnapshot(getSnapshotId(key)); } public void removeAllFlowExecutionSnapshots(FlowExecution execution) { FlowExecutionKey key = execution.getKey(); if (key == null) { return; } Conversation conversation = getConversation(execution.getKey()); getSnapshotGroup(conversation).removeAllSnapshots(); } // hooks for subclassing protected FlowExecutionSnapshotGroup createFlowExecutionSnapshotGroup() { SimpleFlowExecutionSnapshotGroup group = new SimpleFlowExecutionSnapshotGroup(); group.setMaxSnapshots(maxSnapshots); return group; } /** * Returns the snapshot group associated with the governing conversation. * @param conversation the conversation where the snapshot group is stored * @return the snapshot group */ protected FlowExecutionSnapshotGroup getSnapshotGroup(Conversation conversation) { FlowExecutionSnapshotGroup group = (FlowExecutionSnapshotGroup) conversation .getAttribute(SNAPSHOT_GROUP_ATTRIBUTE); if (group == null) { group = createFlowExecutionSnapshotGroup(); conversation.putAttribute(SNAPSHOT_GROUP_ATTRIBUTE, group); } return group; } }././@LongLink0000000000000000000000000000022700000000000011566 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframework/webflow/execution/repository/impl/package.htmllibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframew0000644000000000000000000000020111360615632027742 0ustar

Contains the concrete flow execution repository implementations provided by the framework.

././@LongLink0000000000000000000000000000025200000000000011564 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframework/webflow/execution/repository/impl/FlowExecutionSnapshotGroup.javalibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframew0000644000000000000000000000373311360615632027757 0ustar package org.springframework.webflow.execution.repository.impl; import java.io.Serializable; import org.springframework.webflow.execution.repository.snapshot.FlowExecutionSnapshot; import org.springframework.webflow.execution.repository.snapshot.SnapshotNotFoundException; /** * A group of flow execution snapshots. A SPI interface that encapsulates the storage management for a group of flow * execution snapshots. * * @author Keith Donald */ public interface FlowExecutionSnapshotGroup { /** * Returns the snapshot with the provided id, or null if no such snapshot exists with that * id. * @param snapshotId the snapshot id * @return the continuation * @throws SnapshotNotFoundException if the id does not match a continuation in this group */ public FlowExecutionSnapshot getSnapshot(Serializable snapshotId) throws SnapshotNotFoundException; /** * Add a flow execution snapshot with given id to this group. * @param snapshotId the snapshot id * @param snapshot the snapshot */ public void addSnapshot(Serializable snapshotId, FlowExecutionSnapshot snapshot); /** * Update the snapshot with the given id. Does nothing if no snapshot has been added with the id provided. * @param snapshotId the snapshot id * @param snapshot the new snapshot */ public void updateSnapshot(Serializable snapshotId, FlowExecutionSnapshot snapshot); /** * Remove the snapshot with the given id. Does nothing if no snapshot has been added with the id provided. * @param snapshotId the continuation id */ public void removeSnapshot(Serializable snapshotId); /** * Remove all snapshots in this group. Does nothing if no snapshots have been added to this group. */ public void removeAllSnapshots(); /** * Returns the count of snapshots in this group. */ public int getSnapshotCount(); /** * Gets the next snapshot id for new snapshot to add to this group. * @return the next snapshot id */ public Serializable nextSnapshotId(); }././@LongLink0000000000000000000000000000023400000000000011564 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframework/webflow/execution/repository/FlowExecutionLock.javalibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframew0000644000000000000000000000221311360615634027751 0ustar /* * Copyright 2004-2008 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.springframework.webflow.execution.repository; /** * A pessmistic lock to obtain exclusive rights to a flow execution. Used to prevent conflicts when multiple requests to * manipulate a flow execution arrive from different threads concurrently. * * @author Keith Donald */ public interface FlowExecutionLock { /** * Acquire the flow execution lock. This method will block until the lock becomes available for acquisition. */ public void lock(); /** * Release the flow execution lock. */ public void unlock(); }././@LongLink0000000000000000000000000000022200000000000011561 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframework/webflow/execution/repository/package.htmllibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframew0000644000000000000000000000067011360615634027756 0ustar

The flow execution repository subsystem for saving and restoring managed flow executions.

The central concept defined by this package is the {@link org.springframework.webflow.execution.repository.FlowExecutionRepository}, representing a persistent store for one or more FlowExecution objects that capture the state of user conversations in a form that can be restored on subsequent requests.

././@LongLink0000000000000000000000000000021600000000000011564 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframework/webflow/execution/repository/support/libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframew0000755000000000000000000000000011360615644027752 5ustar ././@LongLink0000000000000000000000000000026600000000000011571 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframework/webflow/execution/repository/support/ConversationBackedFlowExecutionLock.javalibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframew0000644000000000000000000000357611360615634027766 0ustar /* * Copyright 2004-2008 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.springframework.webflow.execution.repository.support; import org.springframework.webflow.conversation.Conversation; import org.springframework.webflow.conversation.ConversationManager; import org.springframework.webflow.execution.repository.FlowExecutionLock; /** * A flow execution lock that locks a conversation managed by a {@link ConversationManager}. *

* This implementation ensures multiple threads cannot manipulate the same conversation at the same time. The locked * conversation is the sole gateway to a flow execution, and a lock on it prevents access to any associated execution. * * @see ConversationManager * @see Conversation * @see Conversation#lock() * @see Conversation#unlock() * * @author Keith Donald */ class ConversationBackedFlowExecutionLock implements FlowExecutionLock { /** * The conversation to lock. */ private Conversation conversation; /** * Creates a new conversation-backed flow execution lock. * @param conversation the conversation to lock */ public ConversationBackedFlowExecutionLock(Conversation conversation) { this.conversation = conversation; } public void lock() { conversation.lock(); } public void unlock() { conversation.unlock(); } }././@LongLink0000000000000000000000000000025400000000000011566 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframework/webflow/execution/repository/support/CompositeFlowExecutionKey.javalibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframew0000644000000000000000000000774111360615634027764 0ustar /* * Copyright 2004-2008 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.springframework.webflow.execution.repository.support; import java.io.Serializable; import org.springframework.util.Assert; import org.springframework.webflow.execution.FlowExecution; import org.springframework.webflow.execution.FlowExecutionKey; import org.springframework.webflow.execution.repository.BadlyFormattedFlowExecutionKeyException; /** * A flow execution key that consists of two parts: *

    *
  1. A executionId, identifying a logical {@link FlowExecution} that is running. *
  2. A snapshotId, identifying a physical flow execution snapshot that can be restored. *
* @author Keith Donald */ public class CompositeFlowExecutionKey extends FlowExecutionKey { private static final String EXECUTION_ID_PREFIX = "e"; private static final String SNAPSHOT_ID_PREFIX = "s"; private static final String FORMAT = EXECUTION_ID_PREFIX + "" + SNAPSHOT_ID_PREFIX + ""; private Serializable executionId; private Serializable snapshotId; /** * Create a new composite flow execution key given the composing parts. * @param executionId the execution id * @param snapshotId the snapshot id */ public CompositeFlowExecutionKey(Serializable executionId, Serializable snapshotId) { Assert.notNull(executionId, "The execution id is required"); Assert.notNull(snapshotId, "The snapshot id is required"); this.executionId = executionId; this.snapshotId = snapshotId; } /** * Returns the execution id part of this key. */ public Serializable getExecutionId() { return executionId; } /** * Returns the snapshot id part of this key. */ public Serializable getSnapshotId() { return snapshotId; } public boolean equals(Object obj) { if (!(obj instanceof CompositeFlowExecutionKey)) { return false; } CompositeFlowExecutionKey other = (CompositeFlowExecutionKey) obj; return executionId.equals(other.executionId) && snapshotId.equals(other.snapshotId); } public int hashCode() { return executionId.hashCode() + snapshotId.hashCode(); } public String toString() { return new StringBuffer().append(EXECUTION_ID_PREFIX).append(executionId).append(SNAPSHOT_ID_PREFIX).append( snapshotId).toString(); } // static helpers /** * Returns a string description of the format of this key. */ public static String getFormat() { return FORMAT; } /** * Helper that splits the string-form of an instance of this class into its "parts" so the parts can be easily * parsed. * @param encodedKey the string-encoded composite flow execution key * @return the composite key parts as a String array (executionId = 0, snapshotId = 1) */ public static String[] keyParts(String encodedKey) throws BadlyFormattedFlowExecutionKeyException { if (!encodedKey.startsWith(EXECUTION_ID_PREFIX)) { throw new BadlyFormattedFlowExecutionKeyException(encodedKey, FORMAT); } int snapshotStart = encodedKey.indexOf(SNAPSHOT_ID_PREFIX, EXECUTION_ID_PREFIX.length()); if (snapshotStart == -1) { throw new BadlyFormattedFlowExecutionKeyException(encodedKey, FORMAT); } String executionId = encodedKey.substring(EXECUTION_ID_PREFIX.length(), snapshotStart); String snapshotId = encodedKey.substring(snapshotStart + SNAPSHOT_ID_PREFIX.length()); return new String[] { executionId, snapshotId }; } }././@LongLink0000000000000000000000000000023200000000000011562 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframework/webflow/execution/repository/support/package.htmllibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframew0000644000000000000000000000025411360615632027752 0ustar General purpose implementation assistance for flow execution repositories. Supports the other repository packages within the framework. ././@LongLink0000000000000000000000000000026200000000000011565 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframework/webflow/execution/repository/support/AbstractFlowExecutionRepository.javalibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframew0000644000000000000000000002307211360615644027760 0ustar /* * Copyright 2004-2008 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.springframework.webflow.execution.repository.support; import java.io.Serializable; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.springframework.util.Assert; import org.springframework.util.StringUtils; import org.springframework.webflow.conversation.Conversation; import org.springframework.webflow.conversation.ConversationException; import org.springframework.webflow.conversation.ConversationId; import org.springframework.webflow.conversation.ConversationManager; import org.springframework.webflow.conversation.ConversationParameters; import org.springframework.webflow.conversation.NoSuchConversationException; import org.springframework.webflow.definition.FlowDefinition; import org.springframework.webflow.execution.FlowExecution; import org.springframework.webflow.execution.FlowExecutionFactory; import org.springframework.webflow.execution.FlowExecutionKey; import org.springframework.webflow.execution.FlowExecutionKeyFactory; import org.springframework.webflow.execution.repository.BadlyFormattedFlowExecutionKeyException; import org.springframework.webflow.execution.repository.FlowExecutionLock; import org.springframework.webflow.execution.repository.FlowExecutionRepository; import org.springframework.webflow.execution.repository.FlowExecutionRepositoryException; import org.springframework.webflow.execution.repository.NoSuchFlowExecutionException; /** * Abstract base class for flow execution repository implementations. Does not make any assumptions about the storage * medium used to store active flow executions. Mandates the use of a {@link FlowExecutionStateRestorer}, used to * rehydrate a flow execution after it has been obtained from storage from resume. *

* The configured {@link FlowExecutionStateRestorer} should be compatible with the chosen {@link FlowExecution} * implementation and its {@link FlowExecutionFactory}. * * @author Keith Donald * @author Erwin Vervaet */ public abstract class AbstractFlowExecutionRepository implements FlowExecutionRepository, FlowExecutionKeyFactory { /** * Logger, usable in subclasses */ protected final Log logger = LogFactory.getLog(getClass()); private ConversationManager conversationManager; private boolean alwaysGenerateNewNextKey = true; /** * Constructor for use in subclasses. * @param conversationManager the conversation manager to use */ protected AbstractFlowExecutionRepository(ConversationManager conversationManager) { Assert.notNull(conversationManager, "The conversation manager is required"); this.conversationManager = conversationManager; } /** * The conversation service to delegate to for managing conversations initiated by this repository. */ public ConversationManager getConversationManager() { return conversationManager; } /** * The flag indicating if a new {@link FlowExecutionKey} should always be generated before each put call. */ public boolean getAlwaysGenerateNewNextKey() { return alwaysGenerateNewNextKey; } /** * Sets the flag indicating if a new {@link FlowExecutionKey} should always be generated before each put call. By * setting this to false a FlowExecution can remain identified by the same key throughout its life. */ public void setAlwaysGenerateNewNextKey(boolean alwaysGenerateNewNextKey) { this.alwaysGenerateNewNextKey = alwaysGenerateNewNextKey; } // implementing flow execution key factory public FlowExecutionKey getKey(FlowExecution execution) { CompositeFlowExecutionKey key = (CompositeFlowExecutionKey) execution.getKey(); if (key == null) { Conversation conversation = beginConversation(execution); ConversationId executionId = conversation.getId(); return new CompositeFlowExecutionKey(executionId, nextSnapshotId(executionId)); } else { if (alwaysGenerateNewNextKey) { return new CompositeFlowExecutionKey(key.getExecutionId(), nextSnapshotId(key.getExecutionId())); } else { return execution.getKey(); } } } // implementing flow execution repository public FlowExecutionKey parseFlowExecutionKey(String encodedKey) throws FlowExecutionRepositoryException { if (!StringUtils.hasText(encodedKey)) { throw new BadlyFormattedFlowExecutionKeyException(encodedKey, "The string-encoded flow execution key is required"); } String[] keyParts = CompositeFlowExecutionKey.keyParts(encodedKey); Serializable executionId = parseExecutionId(keyParts[0], encodedKey); Serializable snapshotId = parseSnapshotId(keyParts[1], encodedKey); return new CompositeFlowExecutionKey(executionId, snapshotId); } public FlowExecutionLock getLock(FlowExecutionKey key) throws FlowExecutionRepositoryException { return new ConversationBackedFlowExecutionLock(getConversation(key)); } public void removeFlowExecution(FlowExecution flowExecution) throws FlowExecutionRepositoryException { assertKeySet(flowExecution); if (logger.isDebugEnabled()) { logger.debug("Removing flow execution '" + flowExecution + "' from repository"); } endConversation(flowExecution); } // abstract repository methods to be overridden by subclasses /** * The next snapshot id to use for a {@link FlowExecution} instance. Called when {@link #getKey(FlowExecution) * getting a flow execution key}. * @return the id of the flow execution */ protected abstract Serializable nextSnapshotId(Serializable executionId); public abstract FlowExecution getFlowExecution(FlowExecutionKey key) throws FlowExecutionRepositoryException; public abstract void putFlowExecution(FlowExecution flowExecution) throws FlowExecutionRepositoryException; // hooks for use in subclasses /** * Factory method that maps a new flow execution to a descriptive {@link ConversationParameters conversation * parameters} object. * @param flowExecution the new flow execution * @return the conversation parameters object to pass to the conversation manager when the conversation is started */ protected ConversationParameters createConversationParameters(FlowExecution flowExecution) { FlowDefinition flow = flowExecution.getDefinition(); return new ConversationParameters(flow.getId(), flow.getCaption(), flow.getDescription()); } /** * Returns the conversation governing the {@link FlowExecution} with the provided key. * @param key the flow execution key * @return the governing conversation * @throws NoSuchFlowExecutionException when the conversation for identified flow execution cannot be found */ protected Conversation getConversation(FlowExecutionKey key) throws NoSuchFlowExecutionException { try { return getConversation(((CompositeFlowExecutionKey) key).getExecutionId()); } catch (NoSuchConversationException e) { throw new NoSuchFlowExecutionException(key, e); } } /** * Returns the conversation governing the logical flow execution with the given execution id. * @param executionId the flow execution id * @return the governing conversation * @throws NoSuchConversationException when the conversation for identified flow execution cannot be found */ protected Conversation getConversation(Serializable executionId) throws NoSuchConversationException { return conversationManager.getConversation((ConversationId) executionId); } /** * Assert that a flow execution key has been assigned to the execution. * @param execution the flow execution * @throws IllegalStateException if a key has not yet been assigned as expected */ protected void assertKeySet(FlowExecution execution) throws IllegalStateException { if (execution.getKey() == null) { throw new IllegalStateException( "The key for the flow execution is null; make sure the key is assigned first. Execution Details = " + execution); } } // internal helpers private Conversation beginConversation(FlowExecution execution) { ConversationParameters parameters = createConversationParameters(execution); Conversation conversation = conversationManager.beginConversation(parameters); return conversation; } private ConversationId parseExecutionId(String encodedId, String encodedKey) throws BadlyFormattedFlowExecutionKeyException { try { return conversationManager.parseConversationId(encodedId); } catch (ConversationException e) { throw new BadlyFormattedFlowExecutionKeyException(encodedKey, CompositeFlowExecutionKey.getFormat(), e); } } private Serializable parseSnapshotId(String encodedId, String encodedKey) throws BadlyFormattedFlowExecutionKeyException { try { return Integer.valueOf(encodedId); } catch (NumberFormatException e) { throw new BadlyFormattedFlowExecutionKeyException(encodedKey, CompositeFlowExecutionKey.getFormat(), e); } } private Conversation endConversation(FlowExecution flowExecution) { Conversation conversation = getConversation(flowExecution.getKey()); conversation.end(); return conversation; } }././@LongLink0000000000000000000000000000025500000000000011567 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframework/webflow/execution/repository/support/FlowExecutionStateRestorer.javalibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframew0000644000000000000000000000420711360615636027760 0ustar /* * Copyright 2004-2008 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.springframework.webflow.execution.repository.support; import org.springframework.webflow.core.collection.MutableAttributeMap; import org.springframework.webflow.definition.FlowDefinition; import org.springframework.webflow.definition.registry.FlowDefinitionLocator; import org.springframework.webflow.execution.FlowExecution; import org.springframework.webflow.execution.FlowExecutionKey; /** * A strategy used by repositories to restore transient flow execution state during execution restoration. * * @author Keith Donald */ public interface FlowExecutionStateRestorer { /** * Restore the transient state of the flow execution. * @param execution the flow execution, newly deserialized and needing restoration * @param definition the root flow definition for the execution, typically not part of the serialized form * @param key the flow execution key, typically not part of the serialized form * @param conversationScope the execution's conversation scope, which is typically not part of the serialized form * since it could be shared by multiple physical flow execution copies all sharing the same logical * conversation * @param subflowDefinitionLocator for locating the definitions of any subflows started by the execution * @return the restored flow execution */ public FlowExecution restoreState(FlowExecution execution, FlowDefinition definition, FlowExecutionKey key, MutableAttributeMap conversationScope, FlowDefinitionLocator subflowDefinitionLocator); }././@LongLink0000000000000000000000000000025300000000000011565 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframework/webflow/execution/repository/FlowExecutionRepositoryException.javalibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframew0000644000000000000000000000272511360615642027760 0ustar /* * Copyright 2004-2008 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.springframework.webflow.execution.repository; import org.springframework.webflow.core.FlowException; /** * The root of the {@link FlowExecutionRepository} exception hierarchy. Indicates a problem occured either saving, * restoring, or invalidating a managed flow execution. * * @author Erwin Vervaet * @author Keith Donald */ public abstract class FlowExecutionRepositoryException extends FlowException { /** * Creates a new flow execution repository exception. * @param message a descriptive message */ public FlowExecutionRepositoryException(String message) { super(message); } /** * Creates a new flow execution repository exception. * @param message a descriptive message * @param cause the root cause of the problem */ public FlowExecutionRepositoryException(String message, Throwable cause) { super(message, cause); } }././@LongLink0000000000000000000000000000026300000000000011566 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframework/webflow/execution/repository/FlowExecutionRestorationFailureException.javalibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframew0000644000000000000000000000270511360615644027760 0ustar /* * Copyright 2004-2008 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.springframework.webflow.execution.repository; import org.springframework.webflow.execution.FlowExecutionKey; /** * Thrown when the flow execution with the persistent identifier provided could not be restored. * * @author Keith Donald * @author Erwin Vervaet */ public class FlowExecutionRestorationFailureException extends FlowExecutionAccessException { /** * Creates a new flow execution restoration failure exception. * @param flowExecutionKey the key of the execution that could not be restored * @param cause the root cause of the restoration failure */ public FlowExecutionRestorationFailureException(FlowExecutionKey flowExecutionKey, Exception cause) { super(flowExecutionKey, "A problem occurred restoring the flow execution with key '" + flowExecutionKey + "'", cause); } }././@LongLink0000000000000000000000000000022500000000000011564 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframework/webflow/execution/FlowExecutionListener.javalibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframew0000644000000000000000000001777311360615632027770 0ustar /* * Copyright 2004-2008 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.springframework.webflow.execution; import org.springframework.webflow.core.collection.AttributeMap; import org.springframework.webflow.core.collection.MutableAttributeMap; import org.springframework.webflow.definition.FlowDefinition; import org.springframework.webflow.definition.StateDefinition; import org.springframework.webflow.definition.TransitionDefinition; import org.springframework.webflow.engine.FlowExecutionExceptionHandler; /** * Interface to be implemented by objects that wish to listen and respond to the lifecycle of * {@link FlowExecution flow executions}. *

* An 'observer' that is very aspect like, allowing you to insert 'cross cutting' behavior at well-defined points within * one or more well-defined flow execution lifecycles. *

* For example, one custom listener may apply security checks at the flow execution level, preventing a flow from * starting or a state from entering if the current user does not have the necessary permissions. Another listener may * track flow execution navigation history to support bread crumbs. Another may perform auditing, or setup and tear down * connections to a transactional resource. *

* Note that flow execution listeners are registered with a flow execution when that execution is created by a * {@link FlowExecutionFactory factory} or restored by a * {@link org.springframework.webflow.execution.repository.FlowExecutionRepository}. Typically a listener will not be * registered with a flow execution at runtime, when the flow execution is already active. * * @see FlowDefinition * @see StateDefinition * @see FlowExecution * @see RequestContext * @see Event * * @author Keith Donald * @author Erwin Vervaet * @author Scott Andrews */ public interface FlowExecutionListener { /** * Called when any client request is submitted to manipulate this flow execution. This call happens before request * processing. * @param context the current flow request context */ public void requestSubmitted(RequestContext context); /** * Called when a client request has completed processing. * @param context the source of the event */ public void requestProcessed(RequestContext context); /** * Called to indicate a new flow definition session is about to be created. Called before the session is created. An * exception may be thrown from this method to veto the start operation. Any type of runtime exception can be used * for this purpose. * @param context the current flow request context * @param definition the flow for which a new session is starting */ public void sessionCreating(RequestContext context, FlowDefinition definition); /** * Called after a new flow session has been created but before it starts. Useful for setting arbitrary attributes in * the session before the flow starts. * @param context the current flow request context * @param session the session that was created * @param input a mutable input map - attributes placed in this map are eligible for input mapping by the flow * definition at startup */ public void sessionStarting(RequestContext context, FlowSession session, MutableAttributeMap input); /** * Called after a new flow session has started. At this point the flow's start state has been entered and any other * startup behaviors have been executed. * @param context the current flow request context * @param session the session that was started */ public void sessionStarted(RequestContext context, FlowSession session); /** * Called when an event is signaled in the current state, but prior to any state transition. * @param context the current flow request context * @param event the event that occurred */ public void eventSignaled(RequestContext context, Event event); /** * Called when a transition is matched but before the transition occurs. * @param context the current flow request context * @param transition the proposed transition */ public void transitionExecuting(RequestContext context, TransitionDefinition transition); /** * Called when a state transitions, after the transition is matched but before the transition occurs. * @param context the current flow request context * @param state the proposed state to transition to * @throws EnterStateVetoException when entering the state is not allowed */ public void stateEntering(RequestContext context, StateDefinition state) throws EnterStateVetoException; /** * Called when a state transitions, after the transition occurred. * @param context the current flow request context * @param previousState from state of the transition * @param state to state of the transition */ public void stateEntered(RequestContext context, StateDefinition previousState, StateDefinition state); /** * Called when a view is about to render in a view-state, before any render actions are executed. * @param context the current flow request context * @param view the view that is about to render * @param viewState the current view state */ public void viewRendering(RequestContext context, View view, StateDefinition viewState); /** * Called after a view has completed rendering. * @param context the current flow request context * @param view the view that rendered * @param viewState the current view state */ public void viewRendered(RequestContext context, View view, StateDefinition viewState); /** * Called when a flow execution is paused, for instance when it is waiting for user input (after event processing). * @param context the current flow request context */ public void paused(RequestContext context); /** * Called after a flow execution is successfully reactivated after pause (but before event processing). * @param context the current flow request context */ public void resuming(RequestContext context); /** * Called when the active flow execution session has been asked to end but before it has ended. * @param context the current flow request context * @param session the current active session that is ending * @param outcome the outcome reached by the ending session, generally the id of the terminating end-state * @param output the flow output produced by the ending session, this map may be modified by this listener to affect * the output returned */ public void sessionEnding(RequestContext context, FlowSession session, String outcome, MutableAttributeMap output); /** * Called when a flow execution session ends. If the ended session was the root session of the flow execution, the * entire flow execution also ends. * @param context the current flow request context * @param session ending flow session * @param outcome the outcome reached by the ended session, generally the id of the terminating end-state * @param output the flow output returned by the ending session */ public void sessionEnded(RequestContext context, FlowSession session, String outcome, AttributeMap output); /** * Called when an exception is thrown during a flow execution, before the exception is handled by any registered * {@link FlowExecutionExceptionHandler handler}. * @param context the current flow request context * @param exception the exception that occurred */ public void exceptionThrown(RequestContext context, FlowExecutionException exception); }././@LongLink0000000000000000000000000000021700000000000011565 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframework/webflow/execution/AnnotatedAction.javalibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframew0000644000000000000000000001374511360615642027764 0ustar /* * Copyright 2004-2008 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.springframework.webflow.execution; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.springframework.core.style.ToStringCreator; import org.springframework.util.Assert; import org.springframework.util.StringUtils; import org.springframework.webflow.core.AnnotatedObject; /** * An action proxy/decorator that stores arbitrary properties about a target Action implementation for * use within a specific Action execution context, for example an ActionState definition, a * TransitionCriteria definition, or in a test environment. *

* An annotated action is an action that wraps another action (referred to as the target action), setting up the * target action's execution attributes before invoking {@link Action#execute}. * * @author Keith Donald * @author Erwin Vervaet */ public class AnnotatedAction extends AnnotatedObject implements Action { private static final Log logger = LogFactory.getLog(AnnotatedAction.class); // well known attributes /** * The action name attribute ("name"). *

* The name attribute is often used as a qualifier for an action's result event, and is typically used to allow the * flow to respond to a specific action's outcome within a larger action execution chain. */ public static final String NAME_ATTRIBUTE = "name"; /** * The action execution method attribute ("method"). *

* The method property is a hint about what method should be invoked. */ public static final String METHOD_ATTRIBUTE = "method"; /** * The target action to execute. */ private Action targetAction; /** * Creates a new annotated action object for the specified action. No contextual properties are provided. * @param targetAction the action */ public AnnotatedAction(Action targetAction) { setTargetAction(targetAction); } /** * Returns the wrapped target action. * @return the action */ public Action getTargetAction() { return targetAction; } /** * Set the target action wrapped by this decorator. */ public void setTargetAction(Action targetAction) { Assert.notNull(targetAction, "The targetAction to annotate is required"); this.targetAction = targetAction; } /** * Returns the name of a named action, or null if the action is unnamed. Used when mapping action * result events to transitions. * @see #isNamed() * @see #postProcessResult(Event) */ public String getName() { return getAttributes().getString(NAME_ATTRIBUTE); } /** * Sets the name of a named action. This is optional and can be null. * @param name the action name */ public void setName(String name) { getAttributes().put(NAME_ATTRIBUTE, name); } /** * Returns whether or not the wrapped target action is a named action. * @see #getName() * @see #setName(String) */ public boolean isNamed() { return StringUtils.hasText(getName()); } /** * Returns the name of the action method to invoke when the target action is executed. */ public String getMethod() { return getAttributes().getString(METHOD_ATTRIBUTE); } /** * Sets the name of the action method to invoke when the target action is executed. * @param method the action method name */ public void setMethod(String method) { getAttributes().put(METHOD_ATTRIBUTE, method); } /** * Set an attribute on this annotated object. * @param attributeName the name of the attribute to set * @param attributeValue the value of the attribute * @return this object, to support call chaining */ public AnnotatedAction putAttribute(String attributeName, Object attributeValue) { getAttributes().put(attributeName, attributeValue); return this; } public Event execute(RequestContext context) throws Exception { try { if (logger.isDebugEnabled()) { logger.debug("Putting action execution attributes " + getAttributes()); } context.getAttributes().putAll(getAttributes()); Event result = getTargetAction().execute(context); return postProcessResult(result); } finally { if (logger.isDebugEnabled()) { logger.debug("Clearing action execution attributes " + getAttributes()); } context.getAttributes().removeAll(getAttributes()); } } /** * Get the event id to be used as grounds for a transition in the containing state, based on given result returned * from action execution. *

* If the wrapped action is named, the name will be used as a qualifier for the event (e.g. "myAction.success"). * @param resultEvent the action result event */ protected Event postProcessResult(Event resultEvent) { if (resultEvent == null) { return null; } if (isNamed()) { // qualify result event id with action name for a named action String qualifiedId = getName() + "." + resultEvent.getId(); if (logger.isDebugEnabled()) { logger.debug("Qualifying action result '" + resultEvent.getId() + "'; qualified result = '" + qualifiedId + "'"); } resultEvent = new Event(resultEvent.getSource(), qualifiedId, resultEvent.getAttributes()); } return resultEvent; } public String toString() { return new ToStringCreator(this).append("targetAction", getTargetAction()) .append("attributes", getAttributes()).toString(); } }././@LongLink0000000000000000000000000000022400000000000011563 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframework/webflow/execution/RequestContextHolder.javalibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframew0000644000000000000000000000367711360615644027771 0ustar /* * Copyright 2004-2008 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.springframework.webflow.execution; import org.springframework.core.NamedThreadLocal; /** * Simple holder class that associates a {@link RequestContext} instance with the current thread. The RequestContext * will not be inherited by any child threads spawned by the current thread. *

* Used as a central holder for the current RequestContext in Spring Web Flow, wherever necessary. Often used by * integration artifacts needing access to the current flow execution. * * @see RequestContext * * @author Jeremy Grelle */ public class RequestContextHolder { private static final ThreadLocal requestContextHolder = new NamedThreadLocal("Flow RequestContext"); /** * Associate the given RequestContext with the current thread. * @param requestContext the current RequestContext, or null to reset the thread-bound context */ public static void setRequestContext(RequestContext requestContext) { requestContextHolder.set(requestContext); } /** * Return the RequestContext associated with the current thread, if any. * @return the current RequestContext * @throws IllegalStateException if no RequestContext is bound to this thread */ public static RequestContext getRequestContext() { return (RequestContext) requestContextHolder.get(); } // not instantiable private RequestContextHolder() { } } ././@LongLink0000000000000000000000000000022400000000000011563 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframework/webflow/execution/FlowExecutionContext.javalibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframew0000644000000000000000000001162611360615634027761 0ustar /* * Copyright 2004-2008 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.springframework.webflow.execution; import org.springframework.webflow.core.collection.AttributeMap; import org.springframework.webflow.core.collection.MutableAttributeMap; import org.springframework.webflow.definition.FlowDefinition; /** * Provides contextual information about a flow execution. A flow execution is an runnable instance of a * {@link FlowDefinition}. It is the central Spring Web Flow construct for carrying out a conversation with a client. * This immutable interface provides access to runtime information about the conversation, such as it's * {@link #isActive() status} and {@link #getActiveSession() current state}. *

* An object implementing this interface is also traversable from a execution request context (see * {@link org.springframework.webflow.execution.RequestContext#getFlowExecutionContext()}). *

* This interface provides information that may span more than one request in a thread safe manner. The * {@link RequestContext} interface defines a request specific control interface for manipulating exactly one * flow execution locally from exactly one request. * * @see FlowDefinition * @see FlowSession * @see RequestContext * * @author Keith Donald * @author Erwin Vervaet */ public interface FlowExecutionContext { /** * Returns the key assigned to this flow execution. The flow execution key is the flow execution's persistent * identity. * @return the flow execution key; may be null if a key has not yet been assigned. */ public FlowExecutionKey getKey(); /** * Returns the root flow definition associated with this executing flow. *

* A call to this method always returns the same flow definition -- the top-level "root" -- no matter what flow may * actually be active (for example, if subflows have been spawned). * @return the root flow definition */ public FlowDefinition getDefinition(); /** * Returns a flag indicating if this execution has been started. A flow execution that has started and is active is * currently in progress. A flow execution that has started and is not active has ended. * @see #isActive() * @return true if started, false if not started */ public boolean hasStarted(); /** * Is the flow execution active? A flow execution is active once it has an {@link #getActiveSession() active * session} and remains active until it has ended. * @return true if active, false if the flow execution has terminated or has not yet been started */ public boolean isActive(); /** * Returns a flag indicating if this execution has ended. A flow execution that has ended has been started but is no * longer active. * @see #hasStarted() * @see #isActive() * @return true if ended, false if not started or still active */ public boolean hasEnded(); /** * Returns the outcome reached by this execution, or null if this execution has not yet ended. * @return the outcome, or null if this execution has not yet ended */ public FlowExecutionOutcome getOutcome(); /** * Returns the active flow session of this flow execution. The active flow session is the currently executing * session. It may be the "root flow" session, or it may be a subflow session if this flow execution has spawned a * subflow. * @return the active flow session * @throws IllegalStateException if this flow execution is not active * @see #isActive() */ public FlowSession getActiveSession() throws IllegalStateException; /** * Returns a mutable map for data held in "flash scope". Attributes in this map are cleared out on the next view * rendering. Flash attributes survive flow execution refresh operations. * @return flash scope */ public MutableAttributeMap getFlashScope(); /** * Returns a mutable map for data held in "conversation scope". Conversation scope is a data structure that exists * for the life of this flow execution and is accessible to all flow sessions. * @return conversation scope */ public MutableAttributeMap getConversationScope(); /** * Returns runtime execution attributes that may influence the behavior of flow artifacts, such as states and * actions. * @return execution attributes */ public AttributeMap getAttributes(); }././@LongLink0000000000000000000000000000020600000000000011563 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframework/webflow/execution/Action.javalibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframew0000644000000000000000000001501211360615632027750 0ustar /* * Copyright 2004-2008 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.springframework.webflow.execution; /** * A command that executes a behavior and returns a logical execution result a calling flow execution can respond to. *

* Actions typically delegate down to the application (or service) layer to perform business operations. They often * retrieve data to support response rendering. They act as a bridge between a SWF web-tier and your middle-tier * business logic layer. *

* When an action completes execution it signals a result event describing the outcome of that execution (for example, * "success", "error", "yes", "no", "tryAgain", etc). In addition to providing a logical outcome the flow can respond * to, a result event may have payload associated with it, for example a "success" return value or an "error" error * code. The result event is typically used as grounds for a state transition out of the current state of the calling * Flow. *

* Action implementations are often application-scoped singletons instantiated and managed by a web-tier Spring * application context to take advantage of Spring's externalized configuration and dependency injection capabilities * (which is a form of Inversion of Control [IoC]). Actions may also be stateful prototypes, storing conversational * state as instance variables. Action instance definitions may also be locally scoped to a specific flow definition * (see use of the "import" element of the root XML flow definition element.) *

* Note: Actions are directly instantiatable for use in a standalone test environment and can be parameterized with * mocks or stubs, as they are simple POJOs. Action proxies may also be generated at runtime for delegating to POJO * business operations that have no dependency on the Spring Web Flow API. *

* Note: if an Action is a singleton managed in application scope, take care not to store and/or modify caller-specific * state in a unsafe manner. The Action {@link #execute(RequestContext)} method runs in an independently executing * thread on each invocation so make sure you deal only with local data or internal, thread-safe services. *

* Note: an Action is not a controller like a Spring MVC controller or a Struts action is a controller. Flow actions are * commands. Such commands do not select views, they execute arbitrary behavioral logic and then return an * logical execution result. The flow that invokes an Action is responsible for responding to the execution result to * decide what to do next. In Spring Web Flow, the flow is the controller. * * @author Keith Donald * @author Erwin Vervaet */ public interface Action { /** * Execute this action. Action execution will occur in the context of a request associated with an active flow * execution. *

* Action invocation is typically triggered in a production environment by a state within a flow carrying out the * execution of a flow definition. The result of action execution, a logical outcome event, can be used as grounds * for a transition out of the calling state. *

* Note: The {@link RequestContext} argument to this method provides access to data about the active flow execution * in the context of the currently executing thread. Among other things, this allows this action to access * {@link RequestContext#getRequestScope() data} set by other actions, as well as set its own attributes it wishes * to expose in a given scope. *

* Some notes about actions and their usage of the attribute scope types: *

    *
  • Attributes set in {@link RequestContext#getRequestScope() request scope} exist for the life of the currently * executing request only. *
  • Attributes set in {@link RequestContext#getFlashScope() flash scope} exist until the next external user * event is signaled. That time includes the current request plus any redirect or additional refreshes to the next * view. *
  • Attributes set in {@link RequestContext#getFlowScope() flow scope} exist for the life of the flow session * and will be cleaned up automatically when the flow session ends. *
  • Attributes set in {@link RequestContext#getConversationScope() conversation scope} exist for the life of the * entire flow execution representing a single logical "conversation" with a user. *
*

* All attributes present in any scope are typically exposed in a model for access by a view when an "interactive" * state type such as a view state is entered. *

* Note: flow scope should generally not be used as a general purpose cache, but rather as a context for data needed * locally by other states of the flow this action participates in. For example, it would be inappropriate to stuff * large collections of objects (like those returned to support a search results view) into flow scope. Instead, put * such result collections in request scope, and ensure you execute this action again each time you wish to view * those results. 2nd level caches managed outside of SWF are more general cache solutions. *

* Note: as flow scoped attributes are eligible for serialization they should be Serializable. * * @param context the action execution context, for accessing and setting data in a {@link ScopeType scope type}, * as well as obtaining other flow contextual information (e.g. request context attributes and flow execution * context information) * @return a logical result outcome, used as grounds for a transition in the calling flow (e.g. "success", "error", * "yes", "no", * ...) * @throws Exception a exception occurred during action execution, either checked or unchecked; note, any * recoverable exceptions should be caught within this method and an appropriate result outcome returned * or be handled by the current state of the calling flow execution. */ public Event execute(RequestContext context) throws Exception; }././@LongLink0000000000000000000000000000017200000000000011565 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframework/webflow/security/libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframew0000755000000000000000000000000011360615642027750 5ustar ././@LongLink0000000000000000000000000000023400000000000011564 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframework/webflow/security/SecurityFlowExecutionListener.javalibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframew0000644000000000000000000001161211360615642027753 0ustar /* * Copyright 2004-2008 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.springframework.webflow.security; import java.util.ArrayList; import java.util.Iterator; import java.util.List; import org.springframework.security.AccessDecisionManager; import org.springframework.security.Authentication; import org.springframework.security.ConfigAttributeDefinition; import org.springframework.security.SecurityConfig; import org.springframework.security.context.SecurityContextHolder; import org.springframework.security.vote.AbstractAccessDecisionManager; import org.springframework.security.vote.AffirmativeBased; import org.springframework.security.vote.RoleVoter; import org.springframework.security.vote.UnanimousBased; import org.springframework.webflow.definition.FlowDefinition; import org.springframework.webflow.definition.StateDefinition; import org.springframework.webflow.definition.TransitionDefinition; import org.springframework.webflow.execution.EnterStateVetoException; import org.springframework.webflow.execution.FlowExecutionListenerAdapter; import org.springframework.webflow.execution.RequestContext; /** * Flow security integration with Spring Security * * @author Scott Andrews */ public class SecurityFlowExecutionListener extends FlowExecutionListenerAdapter { private AccessDecisionManager accessDecisionManager; /** * Get the access decision manager that makes flow authorization decisions. * @return the decision manager */ public AccessDecisionManager getAccessDecisionManager() { return accessDecisionManager; } /** * Set the access decision manager that makes flow authorization decisions. * @param accessDecisionManager the decision manager to user */ public void setAccessDecisionManager(AccessDecisionManager accessDecisionManager) { this.accessDecisionManager = accessDecisionManager; } public void sessionCreating(RequestContext context, FlowDefinition definition) { SecurityRule rule = (SecurityRule) definition.getAttributes().get(SecurityRule.SECURITY_ATTRIBUTE_NAME); if (rule != null) { decide(rule, definition); } } public void stateEntering(RequestContext context, StateDefinition state) throws EnterStateVetoException { SecurityRule rule = (SecurityRule) state.getAttributes().get(SecurityRule.SECURITY_ATTRIBUTE_NAME); if (rule != null) { decide(rule, state); } } public void transitionExecuting(RequestContext context, TransitionDefinition transition) { SecurityRule rule = (SecurityRule) transition.getAttributes().get(SecurityRule.SECURITY_ATTRIBUTE_NAME); if (rule != null) { decide(rule, transition); } } /** * Performs a Spring Security authorization decision. Decision will use the provided AccessDecisionManager. If no * AccessDecisionManager is provided a role based manager will be selected according to the comparison type of the * rule. * @param rule the rule to base the decision * @param object the execution listener phase */ protected void decide(SecurityRule rule, Object object) { Authentication authentication = SecurityContextHolder.getContext().getAuthentication(); ConfigAttributeDefinition config = new ConfigAttributeDefinition(getConfigAttributes(rule)); if (accessDecisionManager != null) { accessDecisionManager.decide(authentication, object, config); } else { AbstractAccessDecisionManager abstractAccessDecisionManager; List voters = new ArrayList(); voters.add(new RoleVoter()); if (rule.getComparisonType() == SecurityRule.COMPARISON_ANY) { abstractAccessDecisionManager = new AffirmativeBased(); } else if (rule.getComparisonType() == SecurityRule.COMPARISON_ALL) { abstractAccessDecisionManager = new UnanimousBased(); } else { throw new IllegalStateException("Unknown SecurityRule match type: " + rule.getComparisonType()); } abstractAccessDecisionManager.setDecisionVoters(voters); abstractAccessDecisionManager.decide(authentication, object, config); } } /** * Convert SecurityRule into a form understood by Spring Security * @param rule the rule to convert * @return list of ConfigAttributes for Spring Security */ protected List getConfigAttributes(SecurityRule rule) { List configAttributes = new ArrayList(); Iterator attributeIt = rule.getAttributes().iterator(); while (attributeIt.hasNext()) { configAttributes.add(new SecurityConfig((String) attributeIt.next())); } return configAttributes; } } ././@LongLink0000000000000000000000000000020600000000000011563 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframework/webflow/security/package.htmllibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframew0000644000000000000000000000013011360615632027743 0ustar

Support for securing flows using Spring Security.

././@LongLink0000000000000000000000000000021300000000000011561 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframework/webflow/security/SecurityRule.javalibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframew0000644000000000000000000000566211360615634027764 0ustar /* * Copyright 2004-2008 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.springframework.webflow.security; import java.util.Arrays; import java.util.Collection; import java.util.HashSet; import java.util.Iterator; /** * Encapsulates the rules for comparing security attributes * * @author Scott Andrews */ public class SecurityRule { /** * Attribute name for the location of the security rule */ public static final String SECURITY_ATTRIBUTE_NAME = "secured"; /** * Compare method where any attribute authorization allows access */ public static final short COMPARISON_ANY = 1; /** * Compare method where all attribute authorization allows access */ public static final short COMPARISON_ALL = 2; private Collection attributes; private short comparisonType = COMPARISON_ANY; /** * Convert attributes to comma separated String * @param attributes the attributes to convert * @return comma separated String */ public static String securityAttributesToCommaDelimitedList(Collection attributes) { StringBuffer attrs = new StringBuffer(); Iterator attributeIt = attributes.iterator(); while (attributeIt.hasNext()) { if (attrs.length() != 0) { attrs.append(", "); } attrs.append(attributeIt.next()); } return attrs.toString(); } /** * Convert attributes from comma separated String to Collection * @param attributes the attributes to convert * @return comma parsed Collection */ public static Collection commaDelimitedListToSecurityAttributes(String attributes) { Collection attrs = new HashSet(); Iterator attributeIt = Arrays.asList(attributes.split(",")).iterator(); while (attributeIt.hasNext()) { String attribute = ((String) attributeIt.next()).trim(); if (!"".equals(attribute)) { attrs.add(attribute); } } return attrs; } /** * Gets security attributes * @return security attributes */ public Collection getAttributes() { return attributes; } /** * Sets security attributes * @param attributes security attributes */ public void setAttributes(Collection attributes) { this.attributes = attributes; } /** * Gets comparison type * @return comparison type */ public short getComparisonType() { return comparisonType; } /** * Sets comparison type * @param comparisonType comparison type */ public void setComparisonType(short comparisonType) { this.comparisonType = comparisonType; } } ././@LongLink0000000000000000000000000000016700000000000011571 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframework/webflow/scope/libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframew0000755000000000000000000000000011360615642027750 5ustar ././@LongLink0000000000000000000000000000021500000000000011563 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframework/webflow/scope/ConversationScope.javalibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframew0000644000000000000000000000202511360615632027750 0ustar /* * Copyright 2004-2008 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.springframework.webflow.scope; import org.springframework.beans.factory.config.Scope; import org.springframework.webflow.core.collection.MutableAttributeMap; /** * Conversation {@link Scope scope} implementation. * @author Ben Hale */ public class ConversationScope extends AbstractWebFlowScope { protected MutableAttributeMap getScope() { return getRequiredRequestContext().getConversationScope(); } } ././@LongLink0000000000000000000000000000020500000000000011562 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframework/webflow/scope/FlowScope.javalibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframew0000644000000000000000000000177511360615632027763 0ustar /* * Copyright 2004-2008 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.springframework.webflow.scope; import org.springframework.beans.factory.config.Scope; import org.springframework.webflow.core.collection.MutableAttributeMap; /** * Flow {@link Scope scope} implementation. * @author Ben Hale */ public class FlowScope extends AbstractWebFlowScope { protected MutableAttributeMap getScope() { return getRequiredRequestContext().getFlowScope(); } } ././@LongLink0000000000000000000000000000021000000000000011556 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframework/webflow/scope/RequestScope.javalibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframew0000644000000000000000000000200511360615634027750 0ustar /* * Copyright 2004-2008 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.springframework.webflow.scope; import org.springframework.beans.factory.config.Scope; import org.springframework.webflow.core.collection.MutableAttributeMap; /** * Request {@link Scope scope} implementation. * @author Ben Hale */ public class RequestScope extends AbstractWebFlowScope { protected MutableAttributeMap getScope() { return getRequiredRequestContext().getRequestScope(); } }././@LongLink0000000000000000000000000000022000000000000011557 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframework/webflow/scope/AbstractWebFlowScope.javalibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframew0000644000000000000000000000647711360615632027767 0ustar /* * Copyright 2004-2008 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.springframework.webflow.scope; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.springframework.beans.factory.ObjectFactory; import org.springframework.beans.factory.config.Scope; import org.springframework.webflow.core.collection.MutableAttributeMap; import org.springframework.webflow.execution.RequestContext; import org.springframework.webflow.execution.RequestContextHolder; /** * Base class for {@link Scope} implementations that access a Web Flow scope from the current request. * * @author Keith Donald */ public abstract class AbstractWebFlowScope implements Scope { /** * Logger, usable by subclasses. */ protected final Log logger = LogFactory.getLog(getClass()); public Object get(String name, ObjectFactory objectFactory) { MutableAttributeMap scope = getScope(); Object scopedObject = scope.get(name); if (scopedObject == null) { if (logger.isDebugEnabled()) { logger.debug("No scoped instance '" + name + "' found; creating new instance"); } scopedObject = objectFactory.getObject(); scope.put(name, scopedObject); } else { if (logger.isDebugEnabled()) { logger.debug("Returning scoped instance '" + name + "'"); } } return scopedObject; } public Object remove(String name) { return getScope().remove(name); } /** * Template method that returns the target scope map. * @throws IllegalStateException if the scope could not be accessed */ protected abstract MutableAttributeMap getScope() throws IllegalStateException; /** * Always returns null as most Spring Web Flow scopes do not have obvious conversation ids. * Subclasses should override this method where conversation ids can be intelligently returned. * @return always returns null */ public String getConversationId() { return null; } /** * Will not register a destruction callback as Spring Web Flow does not support destruction of scoped beans. * Subclasses should override this method where where destruction can adequately be accomplished. * @param name the name of the bean to register the callback for * @param callback the callback to execute */ public void registerDestructionCallback(String name, Runnable callback) { logger.warn("Destruction callback for '" + name + "' was not registered. Spring Web Flow does not " + "support destruction of scoped beans."); } protected RequestContext getRequiredRequestContext() { RequestContext context = RequestContextHolder.getRequestContext(); if (context == null) { throw new IllegalStateException( "No request context bound to this thread; to access flow-scoped beans you must be running in a flow execution request"); } return context; } }././@LongLink0000000000000000000000000000020300000000000011560 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframework/webflow/scope/package.htmllibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframew0000644000000000000000000000017411360615636027757 0ustar Web Flow custom bean scopes allowing access to scoped-beans from a Spring ApplicationContext. ././@LongLink0000000000000000000000000000020600000000000011563 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframework/webflow/scope/FlashScope.javalibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframew0000644000000000000000000000200011360615640027740 0ustar /* * Copyright 2004-2008 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.springframework.webflow.scope; import org.springframework.beans.factory.config.Scope; import org.springframework.webflow.core.collection.MutableAttributeMap; /** * Flash {@link Scope scope} implementation. * @author Ben Hale */ public class FlashScope extends AbstractWebFlowScope { protected MutableAttributeMap getScope() { return getRequiredRequestContext().getFlashScope(); } } ././@LongLink0000000000000000000000000000021200000000000011560 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframework/webflow/scope/ScopeRegistrar.javalibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframew0000644000000000000000000000352011360615634027753 0ustar /* * Copyright 2004-2008 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.springframework.webflow.scope; import org.springframework.beans.BeansException; import org.springframework.beans.factory.config.BeanFactoryPostProcessor; import org.springframework.beans.factory.config.ConfigurableListableBeanFactory; import org.springframework.beans.factory.config.Scope; import org.springframework.core.Ordered; import org.springframework.webflow.execution.ScopeType; /** * Registers the Spring Web Flow bean scopes with a {@link ConfigurableListableBeanFactory}. * * @author Ben Hale * @see Scope */ public class ScopeRegistrar implements BeanFactoryPostProcessor, Ordered { public void postProcessBeanFactory(ConfigurableListableBeanFactory beanFactory) throws BeansException { beanFactory.registerScope(ScopeType.REQUEST.getLabel().toLowerCase(), new RequestScope()); beanFactory.registerScope(ScopeType.FLASH.getLabel().toLowerCase(), new FlashScope()); beanFactory.registerScope(ScopeType.VIEW.getLabel().toLowerCase(), new ViewScope()); beanFactory.registerScope(ScopeType.FLOW.getLabel().toLowerCase(), new FlowScope()); beanFactory.registerScope(ScopeType.CONVERSATION.getLabel().toLowerCase(), new ConversationScope()); } public int getOrder() { return Ordered.LOWEST_PRECEDENCE; } } ././@LongLink0000000000000000000000000000020500000000000011562 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframework/webflow/scope/ViewScope.javalibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframew0000644000000000000000000000200111360615642027743 0ustar /* * Copyright 2004-2008 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.springframework.webflow.scope; import org.springframework.beans.factory.config.Scope; import org.springframework.webflow.core.collection.MutableAttributeMap; /** * View {@link Scope scope} implementation. * @author Keith Donald */ public class ViewScope extends AbstractWebFlowScope { protected MutableAttributeMap getScope() { return getRequiredRequestContext().getViewScope(); } } ././@LongLink0000000000000000000000000000017000000000000011563 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframework/webflow/config/libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframew0000755000000000000000000000000011360615644027752 5ustar ././@LongLink0000000000000000000000000000022300000000000011562 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframework/webflow/config/FlowDefinitionResource.javalibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframew0000644000000000000000000000415611360615632027757 0ustar /* * Copyright 2004-2008 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.springframework.webflow.config; import org.springframework.core.io.Resource; import org.springframework.webflow.core.collection.AttributeMap; /** * An abstract representation of an externalized flow definition resource. Holds the data necessary to build a flow * definition from an external file, and register the flow definition in a flow definition registry. * * Flow definition resources are created by a {@link FlowDefinitionResourceFactory}. * * @author Keith Donald * @see FlowDefinitionResource */ public class FlowDefinitionResource { private String id; private Resource path; private AttributeMap attributes; /** * Creates a new flow definition resource * @param flowId the flow id * @param path the location of the resource * @param attributes meta-attributes describing the flow resource */ public FlowDefinitionResource(String flowId, Resource path, AttributeMap attributes) { this.id = flowId; this.path = path; this.attributes = attributes; } /** * Returns the identifier to be assigned to the flow definition. * @return the flow definition identifier */ public String getId() { return id; } /** * Returns the path to the flow definition resource. * @return the path location */ public Resource getPath() { return path; } /** * Returns attributes to assign the flow definition. * @return flow definition attributes */ public AttributeMap getAttributes() { return attributes; } public String toString() { return path.toString(); } } ././@LongLink0000000000000000000000000000021400000000000011562 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframework/webflow/config/FlowBuilderInfo.javalibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframew0000644000000000000000000000365711360615636027770 0ustar /* * Copyright 2004-2008 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.springframework.webflow.config; import java.util.Collections; import java.util.Set; import org.springframework.util.Assert; import org.springframework.util.ClassUtils; import org.springframework.util.StringUtils; /** * A low-level pointer to a flow definition that will be registered in a flow registry and built by a concrete flow * builder implementation class. * * @author Keith Donald */ class FlowBuilderInfo { /** * The id to assign to the flow definition. */ private String id; /** * The fully-qualified flow builder implementation class. */ private String className; /** * Attributes to assign to the flow definition. */ private Set attributes; public FlowBuilderInfo(String id, String className, Set attributes) { Assert.hasText(className, "The fully-qualified FlowBuilder class name is required"); this.className = className; setId(id); this.attributes = (attributes != null ? attributes : Collections.EMPTY_SET); } private void setId(String id) { if (StringUtils.hasText(id)) { this.id = id; } else { this.id = StringUtils.uncapitalize(StringUtils.delete(ClassUtils.getShortName(className), "FlowBuilder")); } } public String getId() { return id; } public String getClassName() { return className; } public Set getAttributes() { return attributes; } } ././@LongLink0000000000000000000000000000023200000000000011562 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframework/webflow/config/FlowDefinitionResourceFactory.javalibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframew0000644000000000000000000002233311360615636027760 0ustar /* * Copyright 2004-2008 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.springframework.webflow.config; import java.io.File; import java.io.IOException; import org.springframework.core.io.ClassPathResource; import org.springframework.core.io.ContextResource; import org.springframework.core.io.DefaultResourceLoader; import org.springframework.core.io.FileSystemResource; import org.springframework.core.io.Resource; import org.springframework.core.io.ResourceLoader; import org.springframework.core.io.UrlResource; import org.springframework.core.io.support.ResourcePatternResolver; import org.springframework.util.Assert; import org.springframework.util.StringUtils; import org.springframework.webflow.core.collection.AttributeMap; /** * A factory for creating flow definition resources that serve as pointers to external Flow definition files. * * @author Keith Donald * @author Scott Andrews */ public class FlowDefinitionResourceFactory { private static final String CLASSPATH_SCHEME = "classpath:"; private static final String CLASSPATH_STAR_SCHEME = "classpath*:"; private static final String SLASH = "/"; private ResourceLoader resourceLoader; private String basePath; /** * Creates a new flow definition resource factory using a default resource loader. */ public FlowDefinitionResourceFactory() { this.resourceLoader = new DefaultResourceLoader(); } /** * Creates a new flow definition resource factory using the specified resource loader. * @param resourceLoader the resource loader */ public FlowDefinitionResourceFactory(ResourceLoader resourceLoader) { Assert.notNull(resourceLoader, "The resource loader cannot be null"); this.resourceLoader = resourceLoader; } /** * Sets the base removed from the flow path when determining the default flow id. *

* '/WEB-INF' by default * @param basePath the flow's base path */ public void setBasePath(String basePath) { this.basePath = basePath; } /** * Create a flow definition resource from the path location provided. * @param path the encoded {@link Resource} path. * @return the flow definition resource */ public FlowDefinitionResource createResource(String path) { return createResource(path, null, null); } /** * Create a flow definition resource from the path location provided. The returned resource will be configured with * the provided attributes. * @param path the encoded {@link Resource} path. * @param attributes the flow definition meta attributes to configure * @return the flow definition resource */ public FlowDefinitionResource createResource(String path, AttributeMap attributes) { return createResource(path, attributes, null); } /** * Create a flow definition resource from the path location provided. The returned resource will be configured with * the provided attributes and flow id. * @param path the encoded {@link Resource} path. * @param attributes the flow definition meta attributes to configure * @param flowId the flow definition id to configure * @return the flow definition resource */ public FlowDefinitionResource createResource(String path, AttributeMap attributes, String flowId) { Resource resource; if (basePath == null) { resource = resourceLoader.getResource(path); } else { try { String basePath = this.basePath; if (!basePath.endsWith(SLASH)) { // the basePath must end with a slash to create a relative resource basePath = basePath + SLASH; } resource = resourceLoader.getResource(basePath).createRelative(path); } catch (IOException e) { throw new IllegalStateException("The base path cannot be resolved from '" + basePath + "': " + e.getMessage()); } } if (flowId == null || flowId.length() == 0) { flowId = getFlowId(resource); } return new FlowDefinitionResource(flowId, resource, attributes); } /** * Create an array of flow definition resources from the path pattern location provided. * @param pattern the encoded {@link Resource} path pattern. * @param attributes meta attributes to apply to each flow definition resource * @return the flow definition resources */ public FlowDefinitionResource[] createResources(String pattern, AttributeMap attributes) throws IOException { if (resourceLoader instanceof ResourcePatternResolver) { ResourcePatternResolver resolver = (ResourcePatternResolver) resourceLoader; Resource[] resources; if (basePath == null) { resources = resolver.getResources(pattern); } else { if (basePath.endsWith(SLASH) || pattern.startsWith(SLASH)) { resources = resolver.getResources(basePath + pattern); } else { resources = resolver.getResources(basePath + SLASH + pattern); } } FlowDefinitionResource[] flowResources = new FlowDefinitionResource[resources.length]; for (int i = 0; i < resources.length; i++) { Resource resource = resources[i]; flowResources[i] = new FlowDefinitionResource(getFlowId(resource), resource, attributes); } return flowResources; } else { throw new IllegalStateException( "Cannot create flow definition resources from patterns without a ResourceLoader configured that is a ResourcePatternResolver"); } } /** * Create a file-based based resource from the file path provided. * @param path the {@link FileSystemResource} path * @return the file-based flow definition resource */ public FlowDefinitionResource createFileResource(String path) { Resource resource = new FileSystemResource(new File(path)); return new FlowDefinitionResource(getFlowId(resource), resource, null); } /** * Create a classpath-based resource from the path provided. * @param path the {@link ClassPathResource} path * @param clazz to specify if the path should be relative to another class * @return the classpath-based flow definition resource */ public FlowDefinitionResource createClassPathResource(String path, Class clazz) { Resource resource = new ClassPathResource(path, clazz); return new FlowDefinitionResource(getFlowId(resource), resource, null); } // subclassing hooks /** * Obtains the flow id from the flow resource. By default, the flow id becomes the portion of the path between the * basePath and the filename. If no directory structure is available then the filename without the extension is * used. Subclasses may override. *

* For example, '${basePath}/booking.xml' becomes 'booking' and '${basePath}/hotels/booking/booking.xml' becomes * 'hotels/booking' * @param flowResource the flow resource * @return the flow id */ protected String getFlowId(Resource flowResource) { if (basePath == null) { return getFlowIdFromFileName(flowResource); } String basePath = removeClasspathScheme(this.basePath); String filePath; if (flowResource instanceof ContextResource) { filePath = ((ContextResource) flowResource).getPathWithinContext(); } else if (flowResource instanceof ClassPathResource) { filePath = ((ClassPathResource) flowResource).getPath(); } else if (flowResource instanceof FileSystemResource) { filePath = truncateFilePath(((FileSystemResource) flowResource).getPath(), basePath); } else if (flowResource instanceof UrlResource) { try { filePath = truncateFilePath(((UrlResource) flowResource).getURL().getPath(), basePath); } catch (IOException e) { throw new IllegalArgumentException("Unable to obtain path: " + e.getMessage()); } } else { // default to the filename return getFlowIdFromFileName(flowResource); } int beginIndex = 0; int endIndex = filePath.length(); if (filePath.startsWith(basePath)) { beginIndex = basePath.length(); } else if (filePath.startsWith(SLASH + basePath)) { beginIndex = basePath.length() + 1; } if (filePath.startsWith(SLASH, beginIndex)) { // ignore a leading slash beginIndex++; } if (filePath.lastIndexOf(SLASH) >= beginIndex) { // ignore the filename endIndex = filePath.lastIndexOf(SLASH); } else { // there is no path info, default to the filename return getFlowIdFromFileName(flowResource); } return filePath.substring(beginIndex, endIndex); } private String getFlowIdFromFileName(Resource flowResource) { return StringUtils.stripFilenameExtension(flowResource.getFilename()); } private String truncateFilePath(String filePath, String basePath) { int basePathIndex = filePath.lastIndexOf(basePath); if (basePathIndex != -1) { return filePath.substring(basePathIndex); } else { return filePath; } } private String removeClasspathScheme(String basePath) { if (basePath.startsWith(CLASSPATH_SCHEME)) { return basePath.substring(CLASSPATH_SCHEME.length()); } else if (basePath.startsWith(CLASSPATH_STAR_SCHEME)) { return basePath.substring(CLASSPATH_STAR_SCHEME.length()); } else { return basePath; } } } ././@LongLink0000000000000000000000000000022000000000000011557 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframework/webflow/config/DefaultFlowRegistry.javalibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframew0000644000000000000000000000325311360615636027760 0ustar /* * Copyright 2004-2007 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.springframework.webflow.config; import org.springframework.webflow.definition.registry.FlowDefinitionRegistry; import org.springframework.webflow.definition.registry.FlowDefinitionRegistryImpl; import org.springframework.webflow.engine.model.registry.FlowModelRegistry; import org.springframework.webflow.engine.model.registry.FlowModelRegistryImpl; /** * Flow registry implementation created by FlowRegistryFactoryBean. * @author Keith Donald */ class DefaultFlowRegistry extends FlowDefinitionRegistryImpl { private FlowModelRegistry flowModelRegistry = new FlowModelRegistryImpl(); public FlowModelRegistry getFlowModelRegistry() { return flowModelRegistry; } public void setParent(FlowDefinitionRegistry parent) { super.setParent(parent); if (parent instanceof DefaultFlowRegistry) { DefaultFlowRegistry parentFlowRegistry = (DefaultFlowRegistry) parent; // link so a flow in the child registry that extends from a flow in the parent registry can find its parent flowModelRegistry.setParent(parentFlowRegistry.getFlowModelRegistry()); } } }././@LongLink0000000000000000000000000000024300000000000011564 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframework/webflow/config/FlowExecutionListenerLoaderFactoryBean.javalibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframew0000644000000000000000000000612711360615636027763 0ustar /* * Copyright 2004-2008 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.springframework.webflow.config; import java.util.Iterator; import java.util.Map; import org.springframework.beans.factory.FactoryBean; import org.springframework.beans.factory.InitializingBean; import org.springframework.webflow.execution.FlowExecutionListener; import org.springframework.webflow.execution.factory.ConditionalFlowExecutionListenerLoader; import org.springframework.webflow.execution.factory.FlowExecutionListenerCriteriaFactory; import org.springframework.webflow.execution.factory.FlowExecutionListenerLoader; /** * A factory for a flow execution listener loader. Is a Spring FactoryBean, for provision by the flow execution listener * loader bean definition parser. Is package-private, as people should not be using this class directly, but rather * through the higher-level webflow-config Spring 2.x configuration namespace. * * @author Keith Donald */ class FlowExecutionListenerLoaderFactoryBean implements FactoryBean, InitializingBean { /** * The configured execution listeners and the criteria determining when they apply. */ private Map listenersWithCriteria; /** * The listener loader created by this factory. Is conditional, allowing listeners to apply to flow executions * selectively based on some criteria expression. */ private ConditionalFlowExecutionListenerLoader listenerLoader; /** * A helper factory for converting string-encoded listener criteria to a FlowExecutionListenerCriteria object. */ private FlowExecutionListenerCriteriaFactory listenerCriteriaFactory = new FlowExecutionListenerCriteriaFactory(); /** * Sets the listeners eligible for loading, and the criteria for when they should be loaded. * @param listenersWithCriteria the listener-to-criteria map */ public void setListeners(Map listenersWithCriteria) { this.listenersWithCriteria = listenersWithCriteria; } public void afterPropertiesSet() { listenerLoader = new ConditionalFlowExecutionListenerLoader(); Iterator it = listenersWithCriteria.entrySet().iterator(); while (it.hasNext()) { Map.Entry entry = (Map.Entry) it.next(); FlowExecutionListener listener = (FlowExecutionListener) entry.getKey(); String criteria = (String) entry.getValue(); listenerLoader.addListener(listener, listenerCriteriaFactory.getListenerCriteria(criteria)); } } public Object getObject() throws Exception { return listenerLoader; } public Class getObjectType() { return FlowExecutionListenerLoader.class; } public boolean isSingleton() { return true; } } ././@LongLink0000000000000000000000000000022100000000000011560 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframework/webflow/config/FlowElementAttribute.javalibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframew0000644000000000000000000000303011360615640027744 0ustar /* * Copyright 2004-2008 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.springframework.webflow.config; import org.springframework.util.Assert; /** * A low-level definition of a attribute describing a flow artifact. * * @author Keith Donald */ class FlowElementAttribute { /** * The name of the attribute. */ private String name; /** * The value of the attribute before type-conversion. */ private String value; /** * The attribute type, optional, but necessary for type conversion. */ private String type; public FlowElementAttribute(String name, String value, String type) { Assert.hasText(name, "The name is required"); Assert.hasText(value, "The value is required"); this.name = name; this.value = value; this.type = type; } public String getName() { return name; } public String getValue() { return value; } public String getType() { return type; } public boolean needsTypeConversion() { return type != null && type.length() > 0; } }././@LongLink0000000000000000000000000000023500000000000011565 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframework/webflow/config/FlowExecutorBeanDefinitionParser.javalibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframew0000644000000000000000000001155511360615640027757 0ustar /* * Copyright 2004-2008 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.springframework.webflow.config; import java.util.HashSet; import java.util.Iterator; import java.util.List; import java.util.Set; import org.springframework.beans.factory.support.BeanDefinitionBuilder; import org.springframework.beans.factory.xml.AbstractSingleBeanDefinitionParser; import org.springframework.beans.factory.xml.BeanDefinitionParser; import org.springframework.beans.factory.xml.ParserContext; import org.springframework.util.StringUtils; import org.springframework.util.xml.DomUtils; import org.w3c.dom.Element; /** * {@link BeanDefinitionParser} for the <flow-executor> tag. * * @author Keith Donald */ class FlowExecutorBeanDefinitionParser extends AbstractSingleBeanDefinitionParser { private static final String FLOW_EXECUTOR_FACTORY_BEAN_CLASS_NAME = "org.springframework.webflow.config.FlowExecutorFactoryBean"; protected String getBeanClassName(Element element) { return FLOW_EXECUTOR_FACTORY_BEAN_CLASS_NAME; } protected void doParse(Element element, ParserContext parserContext, BeanDefinitionBuilder definitionBuilder) { definitionBuilder.addPropertyReference("flowDefinitionLocator", getFlowRegistry(element, parserContext)); addFlowExecutionRepositoryProperties(element, definitionBuilder, parserContext); definitionBuilder.addPropertyValue("flowExecutionAttributes", parseFlowExecutionAttributes(element)); addFlowExecutionListenerLoader(element, parserContext, definitionBuilder); } private String getFlowRegistry(Element element, ParserContext parserContext) { String registry = element.getAttribute("flow-registry"); if (!StringUtils.hasText(registry)) { return "flowRegistry"; } else { return registry; } } private void addFlowExecutionRepositoryProperties(Element element, BeanDefinitionBuilder definitionBuilder, ParserContext parserContext) { Element repositoryElement = DomUtils.getChildElementByTagName(element, "flow-execution-repository"); if (repositoryElement != null) { addMaxExecutions(repositoryElement, definitionBuilder, parserContext); addMaxSnapshots(repositoryElement, definitionBuilder, parserContext); } } private void addMaxExecutions(Element element, BeanDefinitionBuilder definitionBuilder, ParserContext parserContext) { String maxConversations = element.getAttribute("max-executions"); if (StringUtils.hasText(maxConversations)) { definitionBuilder.addPropertyValue("maxFlowExecutions", maxConversations); } } private void addMaxSnapshots(Element element, BeanDefinitionBuilder definitionBuilder, ParserContext parserContext) { String maxSnapshots = element.getAttribute("max-execution-snapshots"); if (StringUtils.hasText(maxSnapshots)) { definitionBuilder.addPropertyValue("maxFlowExecutionSnapshots", maxSnapshots); } } private Set parseFlowExecutionAttributes(Element element) { Element executionAttributesElement = DomUtils.getChildElementByTagName(element, "flow-execution-attributes"); if (executionAttributesElement != null) { HashSet attributes = new HashSet(); Element redirectElement = DomUtils.getChildElementByTagName(executionAttributesElement, "always-redirect-on-pause"); if (redirectElement != null) { String value = redirectElement.getAttribute("value"); attributes.add(new FlowElementAttribute("alwaysRedirectOnPause", value, "boolean")); } List attributeElements = DomUtils.getChildElementsByTagName(executionAttributesElement, "attribute"); for (Iterator it = attributeElements.iterator(); it.hasNext();) { Element attributeElement = (Element) it.next(); String name = attributeElement.getAttribute("name"); String value = attributeElement.getAttribute("value"); String type = attributeElement.getAttribute("type"); attributes.add(new FlowElementAttribute(name, value, type)); } return attributes; } else { return null; } } private void addFlowExecutionListenerLoader(Element element, ParserContext parserContext, BeanDefinitionBuilder definitionBuilder) { Element listenersElement = DomUtils.getChildElementByTagName(element, "flow-execution-listeners"); if (listenersElement != null) { definitionBuilder.addPropertyValue("flowExecutionListenerLoader", parserContext.getDelegate() .parseCustomElement(listenersElement, definitionBuilder.getBeanDefinition())); } } }././@LongLink0000000000000000000000000000023200000000000011562 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframework/webflow/config/WebFlowConfigNamespaceHandler.javalibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframew0000644000000000000000000000262711360615636027764 0ustar /* * Copyright 2004-2008 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.springframework.webflow.config; import org.springframework.beans.factory.xml.NamespaceHandlerSupport; /** * NamespaceHandler for the webflow-config namespace. * * @author Keith Donald * @author Ben Hale * @author Jeremy Grelle */ public class WebFlowConfigNamespaceHandler extends NamespaceHandlerSupport { public void init() { registerBeanDefinitionParser("flow-executor", new FlowExecutorBeanDefinitionParser()); registerBeanDefinitionParser("flow-execution-listeners", new FlowExecutionListenerLoaderBeanDefinitionParser()); registerBeanDefinitionParser("flow-registry", new FlowRegistryBeanDefinitionParser()); registerBeanDefinitionParser("flow-builder-services", new FlowBuilderServicesBeanDefinitionParser()); } }././@LongLink0000000000000000000000000000022400000000000011563 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframework/webflow/config/FlowExecutorFactoryBean.javalibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframew0000644000000000000000000002375011360615642027761 0ustar /* * Copyright 2004-2008 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.springframework.webflow.config; import java.util.Iterator; import java.util.Set; import org.springframework.beans.BeansException; import org.springframework.beans.factory.BeanClassLoaderAware; import org.springframework.beans.factory.FactoryBean; import org.springframework.beans.factory.InitializingBean; import org.springframework.binding.convert.ConversionExecutor; import org.springframework.binding.convert.ConversionService; import org.springframework.binding.convert.service.DefaultConversionService; import org.springframework.context.ApplicationContext; import org.springframework.context.ApplicationContextAware; import org.springframework.util.Assert; import org.springframework.util.ClassUtils; import org.springframework.webflow.conversation.ConversationManager; import org.springframework.webflow.conversation.impl.SessionBindingConversationManager; import org.springframework.webflow.core.collection.AttributeMap; import org.springframework.webflow.core.collection.LocalAttributeMap; import org.springframework.webflow.core.collection.MutableAttributeMap; import org.springframework.webflow.definition.registry.FlowDefinitionLocator; import org.springframework.webflow.definition.registry.FlowDefinitionRegistry; import org.springframework.webflow.engine.impl.FlowExecutionImplFactory; import org.springframework.webflow.execution.FlowExecutionFactory; import org.springframework.webflow.execution.factory.FlowExecutionListenerLoader; import org.springframework.webflow.execution.repository.FlowExecutionRepository; import org.springframework.webflow.execution.repository.impl.DefaultFlowExecutionRepository; import org.springframework.webflow.execution.repository.snapshot.FlowExecutionSnapshotFactory; import org.springframework.webflow.execution.repository.snapshot.SerializedFlowExecutionSnapshotFactory; import org.springframework.webflow.execution.repository.snapshot.SimpleFlowExecutionSnapshotFactory; import org.springframework.webflow.executor.FlowExecutor; import org.springframework.webflow.executor.FlowExecutorImpl; import org.springframework.webflow.mvc.builder.MvcEnvironment; /** * This factory encapsulates the construction and assembly of a {@link FlowExecutor}, including the provision of its * {@link FlowExecutionRepository} strategy. As a FactoryBean, this class has been designed for use as a * Spring managed bean. *

* The definition locator property is required, all other properties are optional. * * @author Keith Donald * @author Erwin Vervaet */ class FlowExecutorFactoryBean implements FactoryBean, ApplicationContextAware, BeanClassLoaderAware, InitializingBean { private static final String ALWAYS_REDIRECT_ON_PAUSE = "alwaysRedirectOnPause"; private FlowDefinitionLocator flowDefinitionLocator; private Integer maxFlowExecutions; private Integer maxFlowExecutionSnapshots; private Set flowExecutionAttributes; private FlowExecutionListenerLoader flowExecutionListenerLoader; private ConversionService conversionService; private FlowExecutor flowExecutor; private MvcEnvironment environment; private ClassLoader classLoader; /** * Sets the flow definition locator that will locate flow definitions needed for execution. Typically also a * {@link FlowDefinitionRegistry}. Required. * @param flowDefinitionLocator the flow definition locator (registry) */ public void setFlowDefinitionLocator(FlowDefinitionLocator flowDefinitionLocator) { this.flowDefinitionLocator = flowDefinitionLocator; } /** * Set the maximum number of allowed flow executions allowed per user. */ public void setMaxFlowExecutions(int maxFlowExecutions) { this.maxFlowExecutions = new Integer(maxFlowExecutions); } /** * Set the maximum number of history snapshots allowed per flow execution. */ public void setMaxFlowExecutionSnapshots(int maxFlowExecutionSnapshots) { this.maxFlowExecutionSnapshots = new Integer(maxFlowExecutionSnapshots); } /** * Sets the system attributes that apply to flow executions launched by the executor created by this factory. * Execution attributes may affect flow execution behavior. * @param flowExecutionAttributes the flow execution system attributes */ public void setFlowExecutionAttributes(Set flowExecutionAttributes) { this.flowExecutionAttributes = flowExecutionAttributes; } /** * Sets the strategy for loading the listeners that will observe executions of a flow definition. Allows full * control over what listeners should apply to executions of a flow definition launched by the executor created by * this factory. */ public void setFlowExecutionListenerLoader(FlowExecutionListenerLoader flowExecutionListenerLoader) { this.flowExecutionListenerLoader = flowExecutionListenerLoader; } // implementing ApplicationContextAware public void setApplicationContext(ApplicationContext applicationContext) throws BeansException { environment = MvcEnvironment.environmentFor(applicationContext); } // implement BeanClassLoaderAware public void setBeanClassLoader(ClassLoader classLoader) { this.classLoader = classLoader; } // implementing InitializingBean public void afterPropertiesSet() throws Exception { Assert.notNull(flowDefinitionLocator, "The flow definition locator property is required"); if (conversionService == null) { conversionService = new DefaultConversionService(); } MutableAttributeMap executionAttributes = createFlowExecutionAttributes(); FlowExecutionImplFactory executionFactory = createFlowExecutionFactory(executionAttributes); DefaultFlowExecutionRepository executionRepository = createFlowExecutionRepository(executionFactory); executionFactory.setExecutionKeyFactory(executionRepository); flowExecutor = new FlowExecutorImpl(flowDefinitionLocator, executionFactory, executionRepository); } // implementing FactoryBean public Class getObjectType() { return FlowExecutor.class; } public boolean isSingleton() { return true; } public Object getObject() throws Exception { return flowExecutor; } private MutableAttributeMap createFlowExecutionAttributes() { LocalAttributeMap executionAttributes = new LocalAttributeMap(); if (flowExecutionAttributes != null) { for (Iterator it = flowExecutionAttributes.iterator(); it.hasNext();) { FlowElementAttribute attribute = (FlowElementAttribute) it.next(); executionAttributes.put(attribute.getName(), getConvertedValue(attribute)); } } putDefaultFlowExecutionAttributes(executionAttributes); return executionAttributes; } private void putDefaultFlowExecutionAttributes(LocalAttributeMap executionAttributes) { if (!executionAttributes.contains(ALWAYS_REDIRECT_ON_PAUSE)) { if (environment == MvcEnvironment.PORTLET) { executionAttributes.put(ALWAYS_REDIRECT_ON_PAUSE, Boolean.FALSE); } else { executionAttributes.put(ALWAYS_REDIRECT_ON_PAUSE, Boolean.TRUE); } } } private DefaultFlowExecutionRepository createFlowExecutionRepository(FlowExecutionFactory executionFactory) { ConversationManager conversationManager = createConversationManager(); FlowExecutionSnapshotFactory snapshotFactory = createFlowExecutionSnapshotFactory(executionFactory); DefaultFlowExecutionRepository rep = new DefaultFlowExecutionRepository(conversationManager, snapshotFactory); if (maxFlowExecutionSnapshots != null) { rep.setMaxSnapshots(maxFlowExecutionSnapshots.intValue()); } return rep; } private ConversationManager createConversationManager() { SessionBindingConversationManager conversationManager = new SessionBindingConversationManager(); if (maxFlowExecutions != null) { conversationManager.setMaxConversations(maxFlowExecutions.intValue()); } return conversationManager; } private FlowExecutionSnapshotFactory createFlowExecutionSnapshotFactory(FlowExecutionFactory executionFactory) { if (maxFlowExecutionSnapshots != null && maxFlowExecutionSnapshots.intValue() == 0) { maxFlowExecutionSnapshots = new Integer(1); return new SimpleFlowExecutionSnapshotFactory(executionFactory, flowDefinitionLocator); } else { return new SerializedFlowExecutionSnapshotFactory(executionFactory, flowDefinitionLocator); } } private FlowExecutionImplFactory createFlowExecutionFactory(AttributeMap executionAttributes) { FlowExecutionImplFactory executionFactory = new FlowExecutionImplFactory(); executionFactory.setExecutionAttributes(executionAttributes); if (flowExecutionListenerLoader != null) { executionFactory.setExecutionListenerLoader(flowExecutionListenerLoader); } return executionFactory; } // utility methods private Object getConvertedValue(FlowElementAttribute attribute) { if (attribute.needsTypeConversion()) { Class targetType = fromStringToClass(attribute.getType()); ConversionExecutor converter = conversionService.getConversionExecutor(String.class, targetType); return converter.execute(attribute.getValue()); } else { return attribute.getValue(); } } private Class fromStringToClass(String name) { Class clazz = conversionService.getClassForAlias(name); if (clazz != null) { return clazz; } else { try { return ClassUtils.forName(name, classLoader); } catch (ClassNotFoundException e) { throw new IllegalArgumentException("Unable to load class '" + name + "'"); } } } }././@LongLink0000000000000000000000000000021100000000000011557 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframework/webflow/config/FlowLocation.javalibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframew0000644000000000000000000000305311360615636027756 0ustar /* * Copyright 2004-2008 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.springframework.webflow.config; import java.util.Collections; import java.util.Set; import org.springframework.util.Assert; /** * A low-level pointer to a flow definition that will be registered in a registry and built from an external file * resource. * * @author Keith Donald */ class FlowLocation { /** * The id to assign to the flow definition. */ private String id; /** * The string-encoded path to the flow definition file resource. */ private String path; /** * Attributes to assign to the flow definition. */ private Set attributes; public FlowLocation(String id, String path, Set attributes) { Assert.hasText(path, "The path is required"); this.id = id; this.path = path; this.attributes = (attributes != null ? attributes : Collections.EMPTY_SET); } public String getId() { return id; } public String getPath() { return path; } public Set getAttributes() { return attributes; } } ././@LongLink0000000000000000000000000000020400000000000011561 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframework/webflow/config/package.htmllibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframew0000644000000000000000000000056711360615642027762 0ustar

High-level flow system configuration support within a Spring environment.

This is the highest-layer package in the framework, responsible for providing a clean interface for configuring Spring Web Flow.

This package also defines a Spring custom XML namespace for configuring the Spring Web Flow engine.

././@LongLink0000000000000000000000000000022400000000000011563 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframework/webflow/config/FlowRegistryFactoryBean.javalibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframew0000644000000000000000000002546311360615644027766 0ustar /* * Copyright 2004-2008 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.springframework.webflow.config; import java.io.IOException; import java.util.Collections; import java.util.Iterator; import java.util.Set; import org.springframework.beans.factory.BeanClassLoaderAware; import org.springframework.beans.factory.DisposableBean; import org.springframework.beans.factory.FactoryBean; import org.springframework.beans.factory.InitializingBean; import org.springframework.binding.convert.ConversionExecutor; import org.springframework.core.io.Resource; import org.springframework.util.ClassUtils; import org.springframework.webflow.core.collection.AttributeMap; import org.springframework.webflow.core.collection.LocalAttributeMap; import org.springframework.webflow.core.collection.MutableAttributeMap; import org.springframework.webflow.definition.FlowDefinition; import org.springframework.webflow.definition.registry.FlowDefinitionConstructionException; import org.springframework.webflow.definition.registry.FlowDefinitionHolder; import org.springframework.webflow.definition.registry.FlowDefinitionRegistry; import org.springframework.webflow.engine.builder.DefaultFlowHolder; import org.springframework.webflow.engine.builder.FlowAssembler; import org.springframework.webflow.engine.builder.FlowBuilder; import org.springframework.webflow.engine.builder.FlowBuilderContext; import org.springframework.webflow.engine.builder.model.FlowModelFlowBuilder; import org.springframework.webflow.engine.builder.support.FlowBuilderContextImpl; import org.springframework.webflow.engine.builder.support.FlowBuilderServices; import org.springframework.webflow.engine.model.builder.DefaultFlowModelHolder; import org.springframework.webflow.engine.model.builder.FlowModelBuilder; import org.springframework.webflow.engine.model.builder.xml.XmlFlowModelBuilder; import org.springframework.webflow.engine.model.registry.FlowModelHolder; /** * A factory for a flow definition registry. Is a Spring FactoryBean, for provision by the flow definition registry bean * definition parser. Is package-private, as people should not be using this class directly, but rather through the * higher-level webflow-config Spring 2.x configuration namespace. * * @author Keith Donald * @author Jeremy Grelle * @author Scott Andrews */ class FlowRegistryFactoryBean implements FactoryBean, BeanClassLoaderAware, InitializingBean, DisposableBean { private FlowLocation[] flowLocations; private String[] flowLocationPatterns; private FlowBuilderInfo[] flowBuilders; private FlowBuilderServices flowBuilderServices; private FlowDefinitionRegistry parent; private String basePath; private ClassLoader classLoader; /** * The definition registry produced by this factory bean. */ private DefaultFlowRegistry flowRegistry; /** * A helper for creating abstract representation of externalized flow definition resources. */ private FlowDefinitionResourceFactory flowResourceFactory; /** * Flow definitions defined in external files that should be registered in the registry produced by this factory * bean. */ public void setFlowLocations(FlowLocation[] flowLocations) { this.flowLocations = flowLocations; } /** * Resolvable path patterns to flows to register in the registry produced by this factory bean. */ public void setFlowLocationPatterns(String[] flowLocationPatterns) { this.flowLocationPatterns = flowLocationPatterns; } /** * Java {@link FlowBuilder flow builder} classes that should be registered in the registry produced by this factory * bean. */ public void setFlowBuilders(FlowBuilderInfo[] flowBuilders) { this.flowBuilders = flowBuilders; } /** * The holder for services needed to build flow definitions registered in this registry. */ public void setFlowBuilderServices(FlowBuilderServices flowBuilderServices) { this.flowBuilderServices = flowBuilderServices; } /** * Base path used when determining the default flow id */ public void setBasePath(String basePath) { this.basePath = basePath; } /** * The parent of the registry created by this factory bean. */ public void setParent(FlowDefinitionRegistry parent) { this.parent = parent; } // implement BeanClassLoaderAware public void setBeanClassLoader(ClassLoader classLoader) { this.classLoader = classLoader; } public void afterPropertiesSet() throws Exception { flowResourceFactory = new FlowDefinitionResourceFactory(flowBuilderServices.getApplicationContext()); if (basePath != null) { flowResourceFactory.setBasePath(basePath); } flowRegistry = new DefaultFlowRegistry(); flowRegistry.setParent(parent); registerFlowLocations(); registerFlowLocationPatterns(); registerFlowBuilders(); } public Object getObject() throws Exception { return flowRegistry; } public Class getObjectType() { return FlowDefinitionRegistry.class; } public boolean isSingleton() { return true; } // implement DisposableBean public void destroy() throws Exception { flowRegistry.destroy(); } private void registerFlowLocations() { if (flowLocations != null) { for (int i = 0; i < flowLocations.length; i++) { FlowLocation location = flowLocations[i]; flowRegistry.registerFlowDefinition(createFlowDefinitionHolder(createResource(location))); } } } private void registerFlowLocationPatterns() { if (flowLocationPatterns != null) { for (int i = 0; i < flowLocationPatterns.length; i++) { String pattern = flowLocationPatterns[i]; FlowDefinitionResource[] resources; AttributeMap attributes = getFlowAttributes(Collections.EMPTY_SET); try { resources = flowResourceFactory.createResources(pattern, attributes); } catch (IOException e) { IllegalStateException ise = new IllegalStateException( "An I/O Exception occurred resolving the flow location pattern '" + pattern + "'"); ise.initCause(e); throw ise; } for (int j = 0; j < resources.length; j++) { flowRegistry.registerFlowDefinition(createFlowDefinitionHolder(resources[j])); } } } } private void registerFlowBuilders() { if (flowBuilders != null) { for (int i = 0; i < flowBuilders.length; i++) { FlowBuilderInfo builderInfo = flowBuilders[i]; flowRegistry.registerFlowDefinition(buildFlowDefinition(builderInfo)); } } } private FlowDefinitionHolder createFlowDefinitionHolder(FlowDefinitionResource flowResource) { FlowBuilder builder = createFlowBuilder(flowResource); FlowBuilderContext builderContext = new FlowBuilderContextImpl(flowResource.getId(), flowResource .getAttributes(), flowRegistry, flowBuilderServices); FlowAssembler assembler = new FlowAssembler(builder, builderContext); return new DefaultFlowHolder(assembler); } private FlowDefinitionResource createResource(FlowLocation location) { AttributeMap flowAttributes = getFlowAttributes(location.getAttributes()); return flowResourceFactory.createResource(location.getPath(), flowAttributes, location.getId()); } private AttributeMap getFlowAttributes(Set attributes) { MutableAttributeMap flowAttributes = null; if (flowBuilderServices.getDevelopment()) { flowAttributes = new LocalAttributeMap(1 + attributes.size(), 1); flowAttributes.put("development", Boolean.TRUE); } if (!attributes.isEmpty()) { if (flowAttributes == null) { flowAttributes = new LocalAttributeMap(attributes.size(), 1); } for (Iterator it = attributes.iterator(); it.hasNext();) { FlowElementAttribute attribute = (FlowElementAttribute) it.next(); flowAttributes.put(attribute.getName(), getConvertedValue(attribute)); } } return flowAttributes; } private FlowBuilder createFlowBuilder(FlowDefinitionResource resource) { return new FlowModelFlowBuilder(createFlowModelHolder(resource)); } private FlowModelHolder createFlowModelHolder(FlowDefinitionResource resource) { FlowModelHolder modelHolder = new DefaultFlowModelHolder(createFlowModelBuilder(resource)); // register the flow model holder with the backing flow model registry - this is needed to support flow model // merging during the flow build process flowRegistry.getFlowModelRegistry().registerFlowModel(resource.getId(), modelHolder); return modelHolder; } private FlowModelBuilder createFlowModelBuilder(FlowDefinitionResource resource) { if (isXml(resource.getPath())) { return new XmlFlowModelBuilder(resource.getPath(), flowRegistry.getFlowModelRegistry()); } else { throw new IllegalArgumentException(resource + " is not a supported resource type; supported types are [.xml]"); } } private boolean isXml(Resource flowResource) { return flowResource.getFilename().endsWith(".xml"); } private Object getConvertedValue(FlowElementAttribute attribute) { if (attribute.needsTypeConversion()) { Class targetType = fromStringToClass(attribute.getType()); ConversionExecutor converter = flowBuilderServices.getConversionService().getConversionExecutor( String.class, targetType); return converter.execute(attribute.getValue()); } else { return attribute.getValue(); } } private Class fromStringToClass(String name) { Class clazz = flowBuilderServices.getConversionService().getClassForAlias(name); if (clazz != null) { return clazz; } else { return loadClass(name); } } private Class loadClass(String name) { try { return ClassUtils.forName(name, classLoader); } catch (ClassNotFoundException e) { throw new IllegalArgumentException("Unable to load class '" + name + "'"); } } private FlowDefinition buildFlowDefinition(FlowBuilderInfo builderInfo) { try { Class flowBuilderClass = loadClass(builderInfo.getClassName()); FlowBuilder builder = (FlowBuilder) flowBuilderClass.newInstance(); AttributeMap flowAttributes = getFlowAttributes(builderInfo.getAttributes()); FlowBuilderContext builderContext = new FlowBuilderContextImpl(builderInfo.getId(), flowAttributes, flowRegistry, flowBuilderServices); FlowAssembler assembler = new FlowAssembler(builder, builderContext); return assembler.assembleFlow(); } catch (IllegalArgumentException e) { throw new FlowDefinitionConstructionException(builderInfo.getId(), e); } catch (InstantiationException e) { throw new FlowDefinitionConstructionException(builderInfo.getId(), e); } catch (IllegalAccessException e) { throw new FlowDefinitionConstructionException(builderInfo.getId(), e); } } }././@LongLink0000000000000000000000000000023500000000000011565 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframework/webflow/config/FlowRegistryBeanDefinitionParser.javalibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframew0000644000000000000000000002050711360615644027760 0ustar /* * Copyright 2004-2008 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.springframework.webflow.config; import java.util.ArrayList; import java.util.Collections; import java.util.HashSet; import java.util.Iterator; import java.util.List; import java.util.Set; import org.springframework.beans.factory.config.BeanDefinition; import org.springframework.beans.factory.parsing.BeanComponentDefinition; import org.springframework.beans.factory.parsing.CompositeComponentDefinition; import org.springframework.beans.factory.support.BeanDefinitionBuilder; import org.springframework.beans.factory.xml.AbstractSingleBeanDefinitionParser; import org.springframework.beans.factory.xml.BeanDefinitionParser; import org.springframework.beans.factory.xml.ParserContext; import org.springframework.util.StringUtils; import org.springframework.util.xml.DomUtils; import org.w3c.dom.Element; /** * {@link BeanDefinitionParser} for the flow <flow-registry> tag. * * @author Keith Donald * @author Scott Andrews */ class FlowRegistryBeanDefinitionParser extends AbstractSingleBeanDefinitionParser { // --------------------------- Full qualified class names ----------------------- // private static final String DEFAULT_CONVERSION_SERVICE_CLASS_NAME = "org.springframework.binding.convert.service.DefaultConversionService"; private static final String DEFAULT_EXPRESSION_PARSER_FACTORY_CLASS_NAME = "org.springframework.webflow.expression.DefaultExpressionParserFactory"; private static final String FLOW_BUILDER_SERVICES_CLASS_NAME = "org.springframework.webflow.engine.builder.support.FlowBuilderServices"; private static final String FLOW_REGISTRY_FACTORY_BEAN_CLASS_NAME = "org.springframework.webflow.config.FlowRegistryFactoryBean"; private static final String MVC_VIEW_FACTORY_CREATOR_CLASS_NAME = "org.springframework.webflow.mvc.builder.MvcViewFactoryCreator"; protected String getBeanClassName(Element element) { return FLOW_REGISTRY_FACTORY_BEAN_CLASS_NAME; } protected void doParse(Element element, ParserContext parserContext, BeanDefinitionBuilder definitionBuilder) { CompositeComponentDefinition componentDefinition = new CompositeComponentDefinition(element.getLocalName(), parserContext.extractSource(element)); parserContext.pushContainingComponent(componentDefinition); parseFlowBuilderServices(element, parserContext, definitionBuilder); String parent = element.getAttribute("parent"); if (StringUtils.hasText(parent)) { definitionBuilder.addPropertyReference("parent", parent); } String basePath = element.getAttribute("base-path"); if (StringUtils.hasText(basePath)) { definitionBuilder.addPropertyValue("basePath", basePath); } definitionBuilder.addPropertyValue("flowLocations", parseLocations(element)); definitionBuilder.addPropertyValue("flowLocationPatterns", parseLocationPatterns(element)); definitionBuilder.addPropertyValue("flowBuilders", parseFlowBuilders(element)); parserContext.popAndRegisterContainingComponent(); } private List parseLocations(Element element) { List locationElements = DomUtils.getChildElementsByTagName(element, "flow-location"); if (locationElements.isEmpty()) { return Collections.EMPTY_LIST; } List locations = new ArrayList(locationElements.size()); for (Iterator it = locationElements.iterator(); it.hasNext();) { Element locationElement = (Element) it.next(); String id = locationElement.getAttribute("id"); String path = locationElement.getAttribute("path"); locations.add(new FlowLocation(id, path, parseAttributes(locationElement))); } return locations; } private List parseLocationPatterns(Element element) { List locationPatternElements = DomUtils.getChildElementsByTagName(element, "flow-location-pattern"); if (locationPatternElements.isEmpty()) { return Collections.EMPTY_LIST; } List locationPatterns = new ArrayList(locationPatternElements.size()); for (Iterator it = locationPatternElements.iterator(); it.hasNext();) { Element locationPatternElement = (Element) it.next(); String value = locationPatternElement.getAttribute("value"); locationPatterns.add(value); } return locationPatterns; } private Set parseAttributes(Element element) { Element definitionAttributesElement = DomUtils.getChildElementByTagName(element, "flow-definition-attributes"); if (definitionAttributesElement != null) { List attributeElements = DomUtils.getChildElementsByTagName(definitionAttributesElement, "attribute"); HashSet attributes = new HashSet(attributeElements.size()); for (Iterator it = attributeElements.iterator(); it.hasNext();) { Element attributeElement = (Element) it.next(); String name = attributeElement.getAttribute("name"); String value = attributeElement.getAttribute("value"); String type = attributeElement.getAttribute("type"); attributes.add(new FlowElementAttribute(name, value, type)); } return attributes; } else { return null; } } private List parseFlowBuilders(Element element) { List builderElements = DomUtils.getChildElementsByTagName(element, "flow-builder"); if (builderElements.isEmpty()) { return Collections.EMPTY_LIST; } List builders = new ArrayList(builderElements.size()); for (Iterator it = builderElements.iterator(); it.hasNext();) { Element builderElement = (Element) it.next(); String id = builderElement.getAttribute("id"); String className = builderElement.getAttribute("class"); builders.add(new FlowBuilderInfo(id, className, parseAttributes(builderElement))); } return builders; } private void parseFlowBuilderServices(Element element, ParserContext context, BeanDefinitionBuilder definitionBuilder) { String flowBuilderServices = element.getAttribute("flow-builder-services"); if (!StringUtils.hasText(flowBuilderServices)) { BeanDefinitionBuilder flowBuilderServicesBuilder = BeanDefinitionBuilder .genericBeanDefinition(FLOW_BUILDER_SERVICES_CLASS_NAME); BeanDefinitionBuilder conversionServiceBuilder = BeanDefinitionBuilder .genericBeanDefinition(DEFAULT_CONVERSION_SERVICE_CLASS_NAME); String conversionService = registerInfrastructureComponent(element, context, conversionServiceBuilder); flowBuilderServicesBuilder.addPropertyReference("conversionService", conversionService); BeanDefinitionBuilder expressionParserBuilder = BeanDefinitionBuilder .genericBeanDefinition(DEFAULT_EXPRESSION_PARSER_FACTORY_CLASS_NAME); expressionParserBuilder.setFactoryMethod("getExpressionParser"); expressionParserBuilder.addConstructorArgReference(conversionService); String expressionParser = registerInfrastructureComponent(element, context, expressionParserBuilder); flowBuilderServicesBuilder.addPropertyReference("expressionParser", expressionParser); BeanDefinitionBuilder viewFactoryCreatorBuilder = BeanDefinitionBuilder .genericBeanDefinition(MVC_VIEW_FACTORY_CREATOR_CLASS_NAME); String viewFactoryCreator = registerInfrastructureComponent(element, context, viewFactoryCreatorBuilder); flowBuilderServicesBuilder.addPropertyReference("viewFactoryCreator", viewFactoryCreator); flowBuilderServices = registerInfrastructureComponent(element, context, flowBuilderServicesBuilder); } definitionBuilder.addPropertyReference("flowBuilderServices", flowBuilderServices); } private String registerInfrastructureComponent(Element element, ParserContext context, BeanDefinitionBuilder viewFactoryCreatorBuilder) { String beanName = context.getReaderContext().generateBeanName(viewFactoryCreatorBuilder.getRawBeanDefinition()); viewFactoryCreatorBuilder.getRawBeanDefinition().setSource(context.extractSource(element)); viewFactoryCreatorBuilder.getRawBeanDefinition().setRole(BeanDefinition.ROLE_INFRASTRUCTURE); context.registerBeanComponent(new BeanComponentDefinition(viewFactoryCreatorBuilder.getBeanDefinition(), beanName)); return beanName; } }././@LongLink0000000000000000000000000000025400000000000011566 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframework/webflow/config/FlowExecutionListenerLoaderBeanDefinitionParser.javalibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframew0000644000000000000000000000520011360615644027751 0ustar /* * Copyright 2004-2008 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.springframework.webflow.config; import java.util.Iterator; import java.util.List; import java.util.Map; import org.springframework.beans.factory.config.RuntimeBeanReference; import org.springframework.beans.factory.support.BeanDefinitionBuilder; import org.springframework.beans.factory.support.ManagedMap; import org.springframework.beans.factory.xml.AbstractSingleBeanDefinitionParser; import org.springframework.beans.factory.xml.BeanDefinitionParser; import org.springframework.util.xml.DomUtils; import org.w3c.dom.Element; /** * {@link BeanDefinitionParser} for the <flow-execution-listeners> tag. * * @author Ben Hale */ class FlowExecutionListenerLoaderBeanDefinitionParser extends AbstractSingleBeanDefinitionParser { private static final String FLOW_EXECUTION_LISTENER_LOADER_FACTORY_BEAN_CLASS_NAME = "org.springframework.webflow.config.FlowExecutionListenerLoaderFactoryBean"; protected String getBeanClassName(Element element) { return FLOW_EXECUTION_LISTENER_LOADER_FACTORY_BEAN_CLASS_NAME; } protected void doParse(Element element, BeanDefinitionBuilder definitionBuilder) { List listenerElements = DomUtils.getChildElementsByTagName(element, "listener"); definitionBuilder.addPropertyValue("listeners", parseListenersWithCriteria(listenerElements)); } /** * Creates a map of listeners with their associated criteria. * @param listeners the list of listener elements from the bean definition * @return a map containing keys that are references to given listeners and values of string that represent the * criteria */ private Map parseListenersWithCriteria(List listeners) { Map listenersWithCriteria = new ManagedMap(listeners.size()); for (Iterator i = listeners.iterator(); i.hasNext();) { Element listenerElement = (Element) i.next(); RuntimeBeanReference ref = new RuntimeBeanReference(listenerElement.getAttribute("ref")); String criteria = listenerElement.getAttribute("criteria"); listenersWithCriteria.put(ref, criteria); } return listenersWithCriteria; } }././@LongLink0000000000000000000000000000024400000000000011565 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframework/webflow/config/FlowBuilderServicesBeanDefinitionParser.javalibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframew0000644000000000000000000001516311360615632027757 0ustar /* * Copyright 2004-2008 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.springframework.webflow.config; import org.springframework.beans.factory.config.BeanDefinition; import org.springframework.beans.factory.config.RuntimeBeanReference; import org.springframework.beans.factory.parsing.BeanComponentDefinition; import org.springframework.beans.factory.parsing.CompositeComponentDefinition; import org.springframework.beans.factory.support.BeanDefinitionBuilder; import org.springframework.beans.factory.xml.AbstractSingleBeanDefinitionParser; import org.springframework.beans.factory.xml.BeanDefinitionParser; import org.springframework.beans.factory.xml.ParserContext; import org.springframework.util.StringUtils; import org.w3c.dom.Element; /** * {@link BeanDefinitionParser} for the <flow-builder-services> tag. * * @author Jeremy Grelle */ class FlowBuilderServicesBeanDefinitionParser extends AbstractSingleBeanDefinitionParser { // --------------------------- Full qualified class names ----------------------- // private static final String DEFAULT_EXPRESSION_PARSER_FACTORY_CLASS_NAME = "org.springframework.webflow.expression.DefaultExpressionParserFactory"; private static final String DEFAULT_CONVERSION_SERVICE_CLASS_NAME = "org.springframework.binding.convert.service.DefaultConversionService"; private static final String FLOW_BUILDER_SERVICES_CLASS_NAME = "org.springframework.webflow.engine.builder.support.FlowBuilderServices"; private static final String MVC_VIEW_FACTORY_CREATOR_CLASS_NAME = "org.springframework.webflow.mvc.builder.MvcViewFactoryCreator"; // --------------------------- XML Config Attributes ----------------------- // private static final String CONVERSION_SERVICE_ATTR = "conversion-service"; private static final String DEVELOPMENT_ATTR = "development"; private static final String EXPRESSION_PARSER_ATTR = "expression-parser"; private static final String VIEW_FACTORY_CREATOR_ATTR = "view-factory-creator"; // --------------------------- Bean Configuration Properties --------------------- // private static final String CONVERSION_SERVICE_PROPERTY = "conversionService"; private static final String DEVELOPMENT_PROPERTY = "development"; private static final String EXPRESSION_PARSER_PROPERTY = "expressionParser"; private static final String VIEW_FACTORY_CREATOR_PROPERTY = "viewFactoryCreator"; protected String getBeanClassName(Element element) { return FLOW_BUILDER_SERVICES_CLASS_NAME; } protected void doParse(Element element, ParserContext parserContext, BeanDefinitionBuilder builder) { CompositeComponentDefinition componentDefinition = new CompositeComponentDefinition(element.getLocalName(), parserContext.extractSource(element)); parserContext.pushContainingComponent(componentDefinition); parseConversionService(element, parserContext, builder); parseExpressionParser(element, parserContext, builder); parseViewFactoryCreator(element, parserContext, builder); parseDevelopment(element, builder); parserContext.popAndRegisterContainingComponent(); } private void parseConversionService(Element element, ParserContext context, BeanDefinitionBuilder definitionBuilder) { String conversionService = element.getAttribute(CONVERSION_SERVICE_ATTR); if (!StringUtils.hasText(conversionService)) { BeanDefinitionBuilder conversionServiceBuilder = BeanDefinitionBuilder .genericBeanDefinition(DEFAULT_CONVERSION_SERVICE_CLASS_NAME); conversionService = registerInfrastructureComponent(element, context, conversionServiceBuilder); } definitionBuilder.addPropertyReference(CONVERSION_SERVICE_PROPERTY, conversionService); } private void parseExpressionParser(Element element, ParserContext context, BeanDefinitionBuilder definitionBuilder) { String expressionParser = element.getAttribute(EXPRESSION_PARSER_ATTR); if (!StringUtils.hasText(expressionParser)) { String conversionService = getConversionService(definitionBuilder); BeanDefinitionBuilder expressionParserBuilder = BeanDefinitionBuilder .genericBeanDefinition(DEFAULT_EXPRESSION_PARSER_FACTORY_CLASS_NAME); expressionParserBuilder.setFactoryMethod("getExpressionParser"); expressionParserBuilder.addConstructorArgReference(conversionService); expressionParser = registerInfrastructureComponent(element, context, expressionParserBuilder); } definitionBuilder.addPropertyReference(EXPRESSION_PARSER_PROPERTY, expressionParser); } private void parseViewFactoryCreator(Element element, ParserContext context, BeanDefinitionBuilder definitionBuilder) { String viewFactoryCreator = element.getAttribute(VIEW_FACTORY_CREATOR_ATTR); if (!StringUtils.hasText(viewFactoryCreator)) { BeanDefinitionBuilder viewFactoryCreatorBuilder = BeanDefinitionBuilder .genericBeanDefinition(MVC_VIEW_FACTORY_CREATOR_CLASS_NAME); viewFactoryCreator = registerInfrastructureComponent(element, context, viewFactoryCreatorBuilder); } definitionBuilder.addPropertyReference(VIEW_FACTORY_CREATOR_PROPERTY, viewFactoryCreator); } private void parseDevelopment(Element element, BeanDefinitionBuilder definitionBuilder) { String development = element.getAttribute(DEVELOPMENT_ATTR); if (StringUtils.hasText(development)) { definitionBuilder.addPropertyValue(DEVELOPMENT_PROPERTY, development); } } private String getConversionService(BeanDefinitionBuilder definitionBuilder) { RuntimeBeanReference conversionServiceReference = (RuntimeBeanReference) definitionBuilder.getBeanDefinition() .getPropertyValues().getPropertyValue(CONVERSION_SERVICE_PROPERTY).getValue(); return conversionServiceReference.getBeanName(); } private String registerInfrastructureComponent(Element element, ParserContext context, BeanDefinitionBuilder componentBuilder) { String beanName = context.getReaderContext().generateBeanName(componentBuilder.getRawBeanDefinition()); componentBuilder.getRawBeanDefinition().setSource(context.extractSource(element)); componentBuilder.getRawBeanDefinition().setRole(BeanDefinition.ROLE_INFRASTRUCTURE); context.registerBeanComponent(new BeanComponentDefinition(componentBuilder.getBeanDefinition(), beanName)); return beanName; } }././@LongLink0000000000000000000000000000022500000000000011564 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframework/webflow/config/spring-webflow-config-2.0.xsdlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframew0000644000000000000000000003472411360615644027766 0ustar A XML-based DSL for configuring the Spring Web Flow 2.0 system. ]]> Each flow definition registered in this registry is assigned a unique identifier. By default, this identifier is the name of the externalized resource minus its file extension. For example, a registry containing flow definitions built from the files "orderitem-flow.xml" and "shipping-flow.xml" would index those definitions by "orderitem-flow" and "shipping-flow" by default. ]]> ././@LongLink0000000000000000000000000000017000000000000011563 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframework/webflow/engine/libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframew0000755000000000000000000000000011360615646027754 5ustar ././@LongLink0000000000000000000000000000021700000000000011565 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframework/webflow/engine/TransitionCriteria.javalibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframew0000644000000000000000000000256611360615644027765 0ustar /* * Copyright 2004-2008 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.springframework.webflow.engine; import org.springframework.webflow.execution.RequestContext; /** * Strategy interface encapsulating criteria that determine whether or not a transition should execute given a flow * execution request context. * * @see org.springframework.webflow.engine.Transition * @see org.springframework.webflow.execution.RequestContext * * @author Keith Donald * @author Erwin Vervaet */ public interface TransitionCriteria { /** * Check if the transition should fire based on the given flow execution request context. * @param context the flow execution request context * @return true if the transition should fire, false otherwise */ public boolean test(RequestContext context); }././@LongLink0000000000000000000000000000022000000000000011557 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframework/webflow/engine/TargetStateResolver.javalibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframew0000644000000000000000000000274611360615640027761 0ustar /* * Copyright 2004-2008 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.springframework.webflow.engine; import org.springframework.webflow.execution.RequestContext; /** * A strategy for calculating the target state of a transition. This facilitates dynamic transition target state * resolution that takes into account runtime contextual information. * * @author Keith Donald */ public interface TargetStateResolver { /** * Resolve the target state of the transition from the source state in the current request context. Should never * return null. * @param transition the transition * @param sourceState the source state of the transition, could be null * @param context the current request context * @return the transition's target state - may be null if no state change should occur */ public State resolveTargetState(Transition transition, State sourceState, RequestContext context); }././@LongLink0000000000000000000000000000023200000000000011562 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframework/webflow/engine/FlowAttributeMappingException.javalibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframew0000644000000000000000000000300711360615632027751 0ustar /* * Copyright 2004-2008 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.springframework.webflow.engine; import org.springframework.binding.mapping.MappingResults; import org.springframework.webflow.execution.FlowExecutionException; /** * Base class for attribute mapping failures. * * @author Keith Donald */ public class FlowAttributeMappingException extends FlowExecutionException { private MappingResults results; /** * Creates a new attrbute mapping exception * @param flowId the flow id * @param stateId the state id * @param results the mapping results with errors * @param message the messge */ public FlowAttributeMappingException(String flowId, String stateId, MappingResults results, String message) { super(flowId, stateId, message); this.results = results; } /** * Returns the maping results containing errors that triggred this exception. * @return the results */ public MappingResults getMappingResults() { return results; } } ././@LongLink0000000000000000000000000000020600000000000011563 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframework/webflow/engine/ViewState.javalibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframew0000644000000000000000000002320611360615636027760 0ustar /* * Copyright 2004-2008 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.springframework.webflow.engine; import java.io.IOException; import java.util.Iterator; import java.util.LinkedHashMap; import java.util.Map; import org.springframework.core.style.ToStringCreator; import org.springframework.util.Assert; import org.springframework.webflow.context.ExternalContext; import org.springframework.webflow.definition.TransitionDefinition; import org.springframework.webflow.execution.Event; import org.springframework.webflow.execution.FlowExecutionException; import org.springframework.webflow.execution.RequestContext; import org.springframework.webflow.execution.View; import org.springframework.webflow.execution.ViewFactory; /** * A view state is a state that issues a response to the user, for example, for soliciting form input. To accomplish * this, a ViewState delegates to a {@link ViewFactory}. * * @see ViewFactory * * @author Keith Donald * @author Erwin Vervaet */ public class ViewState extends TransitionableState { /** * The list of actions to be executed before the view is rendered. */ private ActionList renderActionList = new ActionList(); /** * A factory for creating and restoring the view rendered by this view state. */ private ViewFactory viewFactory; /** * The set of view variables created by this view state. */ private Map variables = new LinkedHashMap(); /** * Whether or not a redirect should occur before the view is rendered. */ private Boolean redirect; /** * Whether or not the view should render as a popup. */ private boolean popup; /** * Create a new view state. * @param flow the owning flow * @param id the state identifier (must be unique to the flow) * @param viewFactory the view factory * @throws IllegalArgumentException when this state cannot be added to given flow, e.g. because the id is not unique */ public ViewState(Flow flow, String id, ViewFactory viewFactory) throws IllegalArgumentException { super(flow, id); Assert.notNull(viewFactory, "The view factory is required"); this.viewFactory = viewFactory; } // implementing StateDefinition public boolean isViewState() { return true; } /** * Adds a view variable. * @param variable the variable */ public void addVariable(ViewVariable variable) { variables.put(variable.getName(), variable); } /** * Adds a set of view variables. * @param variables the variables */ public void addVariables(ViewVariable[] variables) { for (int i = 0; i < variables.length; i++) { addVariable(variables[i]); } } /** * Returns the view variable with the given name. * @param name the name of the variable */ public ViewVariable getVariable(String name) { return (ViewVariable) variables.get(name); } /** * Returns the configured view variables. */ public ViewVariable[] getVariables() { return (ViewVariable[]) variables.values().toArray(new ViewVariable[variables.size()]); } /** * Returns whether this view state should request a flow execution redirect when entered. */ public boolean getRedirect() { return redirect.booleanValue(); } /** * Sets whether this view state should requests a flow execution redirect when entered. * @param redirect the redirect flag */ public void setRedirect(Boolean redirect) { this.redirect = redirect; } /** * Returns whether this view state should render as a popup. */ public boolean getPopup() { return popup; } /** * Sets whether this view state should render as a popup. * @param popup the popup flag */ public void setPopup(boolean popup) { this.popup = popup; } /** * Returns the view factory. */ public ViewFactory getViewFactory() { return viewFactory; } /** * Returns the list of actions executable by this view state on entry and on refresh. The returned list is mutable. * @return the state action list */ public ActionList getRenderActionList() { return renderActionList; } protected void doPreEntryActions(RequestControlContext context) throws FlowExecutionException { createVariables(context); } protected void doEnter(RequestControlContext context) throws FlowExecutionException { context.assignFlowExecutionKey(); ExternalContext externalContext = context.getExternalContext(); if (externalContext.isResponseComplete()) { if (!externalContext.isResponseCompleteFlowExecutionRedirect()) { clearFlash(context); } } else { if (shouldRedirect(context)) { context.getExternalContext().requestFlowExecutionRedirect(); if (popup) { context.getExternalContext().requestRedirectInPopup(); } } else { View view = viewFactory.getView(context); context.setCurrentView(view); render(context, view); } } } public void resume(RequestControlContext context) { restoreVariables(context); View view = viewFactory.getView(context); context.setCurrentView(view); if (view.userEventQueued()) { boolean stateExited = handleEvent(view, context); if (!stateExited) { ExternalContext externalContext = context.getExternalContext(); if (externalContext.isResponseComplete()) { if (externalContext.isResponseCompleteFlowExecutionRedirect()) { context.getFlashScope().put(View.USER_EVENT_STATE_ATTRIBUTE, view.getUserEventState()); } else { clearFlash(context); } } else { if (externalContext.isAjaxRequest()) { render(context, view); } else { if (shouldRedirect(context)) { context.getFlashScope().put(View.USER_EVENT_STATE_ATTRIBUTE, view.getUserEventState()); externalContext.requestFlowExecutionRedirect(); } else { render(context, view); } } } } } else { refresh(view, context); } } private boolean handleEvent(View view, RequestControlContext context) { view.processUserEvent(); if (view.hasFlowEvent()) { Event event = view.getFlowEvent(); if (logger.isDebugEnabled()) { logger.debug("Event '" + event.getId() + "' returned from view " + view); } return context.handleEvent(event); } else { return false; } } private void refresh(View view, RequestControlContext context) { ExternalContext externalContext = context.getExternalContext(); if (externalContext.isResponseComplete()) { clearFlash(context); } else { render(context, view); } } public void exit(RequestControlContext context) { super.exit(context); updateHistory(context); destroyVariables(context); context.setCurrentView(null); } // internal helpers private void createVariables(RequestContext context) { Iterator it = variables.values().iterator(); while (it.hasNext()) { ViewVariable variable = (ViewVariable) it.next(); if (logger.isDebugEnabled()) { logger.debug("Creating " + variable); } variable.create(context); } } private boolean shouldRedirect(RequestControlContext context) { if (redirect != null) { return redirect.booleanValue(); } else { return context.getRedirectOnPause(); } } private void render(RequestControlContext context, View view) throws ViewRenderingException { if (logger.isDebugEnabled()) { logger.debug("Rendering + " + view); logger.debug(" Flash scope = " + context.getFlashScope()); logger.debug(" Messages = " + context.getMessageContext()); } context.viewRendering(view); renderActionList.execute(context); try { view.render(); } catch (IOException e) { throw new ViewRenderingException(getOwner().getId(), getId(), view, e); } clearFlash(context); context.getExternalContext().recordResponseComplete(); context.viewRendered(view); } private void clearFlash(RequestContext context) { context.getFlashScope().clear(); context.getMessageContext().clearMessages(); } private void restoreVariables(RequestContext context) { Iterator it = variables.values().iterator(); while (it.hasNext()) { ViewVariable variable = (ViewVariable) it.next(); if (logger.isDebugEnabled()) { logger.debug("Restoring " + variable); } variable.restore(context); } } private void updateHistory(RequestControlContext context) { TransitionDefinition transition = context.getCurrentTransition(); History history = (History) transition.getAttributes().get("history"); if (history == null || history == History.PRESERVE) { View currentView = context.getCurrentView(); if (currentView != null && shouldRedirect(context)) { currentView.saveState(); } context.updateCurrentFlowExecutionSnapshot(); } else if (history == History.DISCARD) { context.removeCurrentFlowExecutionSnapshot(); } else if (history == History.INVALIDATE) { context.removeAllFlowExecutionSnapshots(); } } private void destroyVariables(RequestContext context) { Iterator it = variables.values().iterator(); while (it.hasNext()) { ViewVariable variable = (ViewVariable) it.next(); if (logger.isDebugEnabled()) { logger.debug("Destroying " + variable); } variable.destroy(context); } } protected void appendToString(ToStringCreator creator) { super.appendToString(creator); creator.append("viewFactory", viewFactory).append("variables", variables).append("redirect", redirect).append( "popup", popup); } }././@LongLink0000000000000000000000000000022200000000000011561 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframework/webflow/engine/RequestControlContext.javalibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframew0000644000000000000000000001524711360615632027762 0ustar /* * Copyright 2004-2008 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.springframework.webflow.engine; import org.springframework.webflow.core.collection.MutableAttributeMap; import org.springframework.webflow.execution.Event; import org.springframework.webflow.execution.FlowExecutionContext; import org.springframework.webflow.execution.FlowExecutionException; import org.springframework.webflow.execution.FlowExecutionKey; import org.springframework.webflow.execution.RequestContext; import org.springframework.webflow.execution.View; /** * Mutable control interface used to manipulate an ongoing flow execution in the context of one client request. * Primarily used internally by the various flow artifacts when they are invoked. *

* This interface acts as a facade for core definition constructs such as the central Flow and * State classes, abstracting away details about the runtime execution machine. *

* Note this type is not the same as the {@link FlowExecutionContext}. Objects of this type are request specific: * they provide a control interface for manipulating exactly one flow execution locally from exactly one request. A * FlowExecutionContext provides information about a single flow execution (conversation), and it's scope * is not local to a specific request (or thread). * * @see org.springframework.webflow.engine.Flow * @see org.springframework.webflow.engine.State * @see org.springframework.webflow.execution.FlowExecution * @see FlowExecutionContext * * @author Keith Donald * @author Erwin Vervaet */ public interface RequestControlContext extends RequestContext { /** * Record the current state that has entered in the executing flow. This method will be called as part of entering a * new state by the State type itself. * @param state the current state * @see State#enter(RequestControlContext) */ public void setCurrentState(State state); /** * Assign the ongoing flow execution its flow execution key. This method will be called before a state is about to * render a view and pause the flow execution. */ public FlowExecutionKey assignFlowExecutionKey(); /** * Sets the current view. * @param view the current view, or null to mark the current view as null */ public void setCurrentView(View view); /** * Called when the current view is about to be rendered in the current view state. * @param view the view to be rendered */ public void viewRendering(View view); /** * Called when the current view has completed rendering in the current view state. * @param view the view that rendered */ public void viewRendered(View view); /** * Signals the occurrence of an event in the current state of this flow execution request context. This method * should be called by clients that report internal event occurrences, such as action states. The * onEvent() method of the flow involved in the flow execution will be called. * @param event the event that occurred * @return a boolean indicating if handling this event caused the current state to exit and a new state to enter * @throws FlowExecutionException if an exception was thrown within a state of the flow during execution of this * signalEvent operation * @see Flow#handleEvent(RequestControlContext) */ public boolean handleEvent(Event event) throws FlowExecutionException; /** * Execute this transition out of the current source state. Allows for privileged execution of an arbitrary * transition. * @param transition the transition * @see Transition#execute(State, RequestControlContext) */ public boolean execute(Transition transition); /** * Record the transition executing in the flow. This method will be called as part of executing a transition from * one state to another. * @param transition the transition being executed * @see Transition#execute(State, RequestControlContext) */ public void setCurrentTransition(Transition transition); /** * Update the current flow execution snapshot to save the current state. */ public void updateCurrentFlowExecutionSnapshot(); /** * Remove the current flow execution snapshot to invalidate the current state. */ public void removeCurrentFlowExecutionSnapshot(); /** * Remove all flow execution snapshots associated with the ongoing conversation. Invalidates previous states. */ public void removeAllFlowExecutionSnapshots(); /** * Spawn a new flow session and activate it in the currently executing flow. Also transitions the spawned flow to * its start state. This method should be called by clients that wish to spawn new flows, such as subflow states. *

* This will start a new flow session in the current flow execution, which is already active. * @param flow the flow to start, its start() method will be called * @param input initial contents of the newly created flow session (may be null, e.g. empty) * @throws FlowExecutionException if an exception was thrown within a state of the flow during execution of this * start operation * @see Flow#start(RequestControlContext, MutableAttributeMap) */ public void start(Flow flow, MutableAttributeMap input) throws FlowExecutionException; /** * End the active flow session of the current flow execution. This method should be called by clients that terminate * flows, such as end states. The end() method of the flow involved in the flow execution will be * called. * @param outcome the logical outcome the ending session should return * @param output output the ending session should return * @throws IllegalStateException when the flow execution is not active * @see Flow#end(RequestControlContext, String, MutableAttributeMap) */ public void endActiveFlowSession(String outcome, MutableAttributeMap output) throws IllegalStateException; /** * Returns true if the 'redirect on pause' flow execution attribute is set to true, false otherwise. * @return true or false */ public boolean getRedirectOnPause(); }././@LongLink0000000000000000000000000000020200000000000011557 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframework/webflow/engine/State.javalibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframew0000644000000000000000000002045711360615632027761 0ustar /* * Copyright 2004-2008 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.springframework.webflow.engine; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.springframework.core.style.ToStringCreator; import org.springframework.util.Assert; import org.springframework.webflow.core.AnnotatedObject; import org.springframework.webflow.definition.FlowDefinition; import org.springframework.webflow.definition.StateDefinition; import org.springframework.webflow.execution.FlowExecutionException; /** * A point in a flow where something happens. What happens is determined by a state's type. Standard types of states * include action states, view states, subflow states, and end states. *

* Each state is associated with exactly one owning flow definition. Specializations of this class capture all the * configuration information needed for a specific kind of state. *

* Subclasses should implement the doEnter method to execute the processing that should occur when this * state is entered, acting on its configuration information. The ability to plug-in custom state types that execute * different behaviors is the classic GoF state pattern. *

* Equality: Two states are equal if they have the same id and are part of the same flow. * * @see org.springframework.webflow.engine.TransitionableState * @see org.springframework.webflow.engine.ActionState * @see org.springframework.webflow.engine.ViewState * @see org.springframework.webflow.engine.SubflowState * @see org.springframework.webflow.engine.EndState * @see org.springframework.webflow.engine.DecisionState * * @author Keith Donald * @author Erwin Vervaet */ public abstract class State extends AnnotatedObject implements StateDefinition { /** * Logger, for use in subclasses. */ protected final Log logger = LogFactory.getLog(getClass()); /** * The state's owning flow. */ private Flow flow; /** * The state identifier, unique to the owning flow. */ private String id; /** * The list of actions to invoke when this state is entered. */ private ActionList entryActionList = new ActionList(); /** * The set of exception handlers for this state. */ private FlowExecutionExceptionHandlerSet exceptionHandlerSet = new FlowExecutionExceptionHandlerSet(); /** * Creates a state for the provided flow identified by the provided id. The id must * be locally unique to the owning flow. The state will be automatically added to the flow. * @param flow the owning flow * @param id the state identifier (must be unique to the flow) * @throws IllegalArgumentException if this state cannot be added to the flow, for instance when the provided id is * not unique in the owning flow * @see #getEntryActionList() * @see #getExceptionHandlerSet() */ protected State(Flow flow, String id) throws IllegalArgumentException { setId(id); setFlow(flow); } // implementing StateDefinition public FlowDefinition getOwner() { return flow; } public String getId() { return id; } public boolean isViewState() { return false; } // implementation specific /** * Returns the owning flow. */ public Flow getFlow() { return flow; } /** * Set the owning flow. * @throws IllegalArgumentException if this state cannot be added to the flow */ private void setFlow(Flow flow) throws IllegalArgumentException { Assert.hasText(getId(), "The id of the state should be set before adding the state to a flow"); Assert.notNull(flow, "The owning flow is required"); this.flow = flow; flow.add(this); } /** * Set the state identifier, unique to the owning flow. * @param id the state identifier */ private void setId(String id) { Assert.hasText(id, "This state must have a valid identifier"); this.id = id; } /** * Returns the list of actions executed by this state when it is entered. The returned list is mutable. * @return the state entry action list */ public ActionList getEntryActionList() { return entryActionList; } /** * Returns a mutable set of exception handlers, allowing manipulation of how exceptions are handled when thrown * within this state. *

* Exception handlers are invoked when an exception occurs when this state is entered, and can execute custom * exception handling logic as well as select an error view to display. * @return the state exception handler set */ public FlowExecutionExceptionHandlerSet getExceptionHandlerSet() { return exceptionHandlerSet; } /** * Returns a flag indicating if this state is the start state of its owning flow. * @return true if the flow is the start state, false otherwise */ public boolean isStartState() { return flow.getStartState() == this; } // id and flow based equality public boolean equals(Object o) { if (!(o instanceof State)) { return false; } State other = (State) o; return id.equals(other.id) && flow.equals(other.flow); } public int hashCode() { return id.hashCode() + flow.hashCode(); } // behavioral methods /** * Enter this state in the provided flow control context. This implementation just calls the * {@link #doEnter(RequestControlContext)} hook method, which should be implemented by subclasses, after executing * the entry actions. * @param context the control context for the currently executing flow, used by this state to manipulate the flow * execution * @throws FlowExecutionException if an exception occurs in this state */ public final void enter(RequestControlContext context) throws FlowExecutionException { if (logger.isDebugEnabled()) { logger.debug("Entering state '" + getId() + "' of flow '" + getFlow().getId() + "'"); } context.setCurrentState(this); doPreEntryActions(context); entryActionList.execute(context); doEnter(context); } /** * Hook method to execute before running state entry actions upon state entry. Does nothing by default. Subclasses * may override. * @param context the request control context * @throws FlowExecutionException if an exception occurs */ protected void doPreEntryActions(RequestControlContext context) throws FlowExecutionException { } /** * Hook method to execute custom behavior as a result of entering this state. By implementing this method subclasses * specialize the behavior of the state. * @param context the control context for the currently executing flow, used by this state to manipulate the flow * execution * @throws FlowExecutionException if an exception occurs in this state */ protected abstract void doEnter(RequestControlContext context) throws FlowExecutionException; /** * Handle an exception that occurred in this state during the context of the current flow execution request. * @param exception the exception that occurred * @param context the flow execution control context */ public boolean handleException(FlowExecutionException exception, RequestControlContext context) { return getExceptionHandlerSet().handleException(exception, context); } public String toString() { ToStringCreator creator = new ToStringCreator(this).append("id", getId()).append("flow", flow.getId()).append( "entryActionList", entryActionList).append("exceptionHandlerSet", exceptionHandlerSet); appendToString(creator); return creator.toString(); } /** * Subclasses may override this hook method to print their internal state to a string. This default implementation * does nothing. * @param creator the toString creator, to print properties to string * @see #toString() */ protected void appendToString(ToStringCreator creator) { } }././@LongLink0000000000000000000000000000023200000000000011562 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframework/webflow/engine/NoMatchingTransitionException.javalibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframew0000644000000000000000000000455111360615644027761 0ustar /* * Copyright 2004-2008 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.springframework.webflow.engine; import org.springframework.webflow.execution.Event; import org.springframework.webflow.execution.FlowExecutionException; /** * Thrown when no transition can be matched given the occurence of an event in the context of a flow execution request. *

* Typically this happens because there is no "handler" transition for the last event that occured. * * @author Keith Donald * @author Erwin Vervaet */ public class NoMatchingTransitionException extends FlowExecutionException { /** * The event that occurred that could not be matched to a Transition. */ private Event event; /** * Create a new no matching transition exception. * @param flowId the current flow * @param stateId the state that could not be transitioned out of * @param event the event that occured that could not be matched to a transition * @param message the message */ public NoMatchingTransitionException(String flowId, String stateId, Event event, String message) { super(flowId, stateId, message); this.event = event; } /** * Create a new no matching transition exception. * @param flowId the current flow * @param stateId the state that could not be transitioned out of * @param event the event that occured that could not be matched to a transition * @param message the message * @param cause the underlying cause */ public NoMatchingTransitionException(String flowId, String stateId, Event event, String message, Throwable cause) { super(flowId, stateId, message, cause); this.event = event; } /** * Returns the event for the current request that did not trigger any supported transition. */ public Event getEvent() { return event; } }././@LongLink0000000000000000000000000000020700000000000011564 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframework/webflow/engine/ActionList.javalibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframew0000644000000000000000000001153311360615642027755 0ustar /* * Copyright 2004-2008 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.springframework.webflow.engine; import java.util.Arrays; import java.util.Iterator; import java.util.LinkedList; import java.util.List; import org.springframework.core.style.StylerUtils; import org.springframework.webflow.execution.Action; import org.springframework.webflow.execution.ActionExecutor; import org.springframework.webflow.execution.AnnotatedAction; import org.springframework.webflow.execution.RequestContext; /** * An ordered, typed list of actions, mainly for use internally by flow artifacts that can execute groups of actions. * * @see Flow#getStartActionList() * @see Flow#getEndActionList() * @see State#getEntryActionList() * @see ActionState#getActionList() * @see TransitionableState#getExitActionList() * @see ViewState#getRenderActionList() * * @author Keith Donald */ public class ActionList { /** * The lists of actions. */ private List actions = new LinkedList(); /** * Add an action to this list. * @param action the action to add * @return true if this list's contents changed as a result of the add operation */ public boolean add(Action action) { return actions.add(action); } /** * Add a collection of actions to this list. * @param actions the actions to add * @return true if this list's contents changed as a result of the add operation */ public boolean addAll(Action[] actions) { if (actions == null) { return false; } return this.actions.addAll(Arrays.asList(actions)); } /** * Tests if the action is in this list. * @param action the action * @return true if the action is contained in this list, false otherwise */ public boolean contains(Action action) { return actions.contains(action); } /** * Remove the action instance from this list. * @param action the action to add * @return true if this list's contents changed as a result of the remove operation */ public boolean remove(Action action) { return actions.remove(action); } /** * Returns the size of this action list. * @return the action list size. */ public int size() { return actions.size(); } /** * Returns the action in this list at the provided index. * @param index the action index * @return the action the action */ public Action get(int index) throws IndexOutOfBoundsException { return (Action) actions.get(index); } /** * Returns the action in this list at the provided index, exposing it as an annotated action. This allows clients to * access specific properties about a target action instance if they exist. * @return the action, as an annotated action */ public AnnotatedAction getAnnotated(int index) throws IndexOutOfBoundsException { Action action = get(index); if (action instanceof AnnotatedAction) { return (AnnotatedAction) action; } else { // wrap the action; no annotations will be available return new AnnotatedAction(action); } } /** * Returns an iterator over this action list. */ public Iterator iterator() { return actions.iterator(); } /** * Convert this list to a typed action array. * @return the action list, as a typed array */ public Action[] toArray() { return (Action[]) actions.toArray(new Action[actions.size()]); } /** * Returns the list of actions in this list as a typed annotated action array. This is a convenience method allowing * clients to access properties about an action if they exist. * @return the annotated action list, as a typed array */ public AnnotatedAction[] toAnnotatedArray() { AnnotatedAction[] annotatedActions = new AnnotatedAction[actions.size()]; for (int i = 0; i < size(); i++) { annotatedActions[i] = getAnnotated(i); } return annotatedActions; } /** * Executes the actions contained within this action list. Simply iterates over each action and calls execute. * Action result events are ignored. * @param context the action execution request context */ public void execute(RequestContext context) { Iterator it = actions.iterator(); while (it.hasNext()) { ActionExecutor.execute((Action) it.next(), context); } } public String toString() { return StylerUtils.style(actions); } }././@LongLink0000000000000000000000000000020000000000000011555 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframework/webflow/engine/builder/libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframew0000755000000000000000000000000011360615646027754 5ustar ././@LongLink0000000000000000000000000000022600000000000011565 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframework/webflow/engine/builder/DefaultFlowHolder.javalibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframew0000644000000000000000000001002211360615636027750 0ustar /* * Copyright 2004-2008 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.springframework.webflow.engine.builder; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.springframework.core.style.ToStringCreator; import org.springframework.util.Assert; import org.springframework.webflow.definition.FlowDefinition; import org.springframework.webflow.definition.registry.FlowDefinitionConstructionException; import org.springframework.webflow.definition.registry.FlowDefinitionHolder; /** * A flow definition holder that can detect changes on an underlying flow definition resource and refresh that resource * automatically. *

* This class is thread-safe. *

* Note that this {@link FlowDefinition} holder uses a {@link FlowAssembler}. This class bridges the abstract * world of {@link FlowDefinition flow definitions} with the concrete world of flow implementations. * * @see FlowAssembler * @see FlowDefinition * * @author Keith Donald */ public class DefaultFlowHolder implements FlowDefinitionHolder { private static final Log logger = LogFactory.getLog(DefaultFlowHolder.class); /** * The flow definition assembled by this assembler, initially null. */ private FlowDefinition flowDefinition; /** * The flow assembler. */ private FlowAssembler assembler; /** * A flag indicating whether or not this holder is in the middle of the assembly process. */ private boolean assembling; /** * Creates a new refreshable flow definition holder that uses the configured assembler (GOF director) to drive flow * assembly, on initial use and on any resource change or refresh. * @param assembler the flow assembler to use */ public DefaultFlowHolder(FlowAssembler assembler) { Assert.notNull(assembler, "The FlowAssembler is required"); this.assembler = assembler; } public String getFlowDefinitionId() { return assembler.getFlowBuilderContext().getFlowId(); } public String getFlowDefinitionResourceString() { return assembler.getFlowBuilder().getFlowResourceString(); } public synchronized FlowDefinition getFlowDefinition() throws FlowDefinitionConstructionException { if (assembling) { // must return early assembly result for when a flow calls itself recursively return getFlowBuilder().getFlow(); } if (flowDefinition == null) { logger.debug("Assembling the flow for the first time"); assembleFlow(); } else { if (flowDefinition.inDevelopment() && getFlowBuilder().hasFlowChanged()) { logger.debug("The flow under development has changed; reassembling..."); assembleFlow(); } } return flowDefinition; } public synchronized void refresh() throws FlowDefinitionConstructionException { assembleFlow(); } public void destroy() { if (flowDefinition != null) { flowDefinition.destroy(); } } // internal helpers private void assembleFlow() throws FlowDefinitionConstructionException { try { assembling = true; flowDefinition = assembler.assembleFlow(); } catch (FlowBuilderException e) { throw new FlowDefinitionConstructionException(assembler.getFlowBuilderContext().getFlowId(), e); } finally { assembling = false; } } private FlowBuilder getFlowBuilder() { return assembler.getFlowBuilder(); } public String toString() { return new ToStringCreator(this).append("flowBuilder", assembler.getFlowBuilder()).toString(); } }././@LongLink0000000000000000000000000000023000000000000011560 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframework/webflow/engine/builder/FlowArtifactFactory.javalibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframew0000644000000000000000000003125311360615634027757 0ustar /* * Copyright 2004-2008 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.springframework.webflow.engine.builder; import org.springframework.binding.expression.Expression; import org.springframework.binding.mapping.Mapper; import org.springframework.webflow.core.collection.AttributeMap; import org.springframework.webflow.engine.ActionState; import org.springframework.webflow.engine.DecisionState; import org.springframework.webflow.engine.EndState; import org.springframework.webflow.engine.Flow; import org.springframework.webflow.engine.FlowExecutionExceptionHandler; import org.springframework.webflow.engine.State; import org.springframework.webflow.engine.SubflowAttributeMapper; import org.springframework.webflow.engine.SubflowState; import org.springframework.webflow.engine.TargetStateResolver; import org.springframework.webflow.engine.Transition; import org.springframework.webflow.engine.TransitionCriteria; import org.springframework.webflow.engine.TransitionableState; import org.springframework.webflow.engine.ViewState; import org.springframework.webflow.engine.ViewVariable; import org.springframework.webflow.execution.Action; import org.springframework.webflow.execution.ViewFactory; /** * A factory for core web flow elements such as {@link Flow flows}, {@link State states}, and * {@link Transition transitions}. *

* This factory encapsulates the construction of each Flow implementation as well as each core artifact type. Subclasses * may customize how the core elements are created. * * @author Keith Donald * @author Erwin Vervaet */ public class FlowArtifactFactory { /** * Factory method that creates a new {@link Flow} definition object. *

* Note this method does not return a fully configured Flow instance, it only encapsulates the selection of * implementation. A {@link FlowAssembler} delegating to a calling {@link FlowBuilder} is expected to assemble the * Flow fully before returning it to external clients. * @param id the flow identifier, should be unique to all flows in an application (required) * @param attributes attributes to assign to the Flow, which may also be used to affect flow construction; may be * null * @return the initial flow instance, ready for assembly by a FlowBuilder */ public Flow createFlow(String id, AttributeMap attributes) { return Flow.create(id, attributes); } /** * Factory method that creates a new view state, a state where a user is allowed to participate in the flow. This * method is an atomic operation that returns a fully initialized state. It encapsulates the selection of the view * state implementation as well as the state assembly. * @param id the identifier to assign to the state, must be unique to its owning flow (required) * @param flow the flow that will own (contain) this state (required) * @param entryActions any state entry actions; may be null * @param viewFactory the state view factory strategy * @param redirect whether to send a flow execution redirect before rendering * @param popup whether to display the view in a popup window * @param renderActions any 'render actions' to execute on entry and refresh; may be null * @param transitions any transitions (paths) out of this state; may be null * @param exceptionHandlers any exception handlers; may be null * @param exitActions any state exit actions; may be null * @param attributes attributes to assign to the State, which may also be used to affect state construction; may be * null * @return the fully initialized view state instance */ public State createViewState(String id, Flow flow, ViewVariable[] variables, Action[] entryActions, ViewFactory viewFactory, Boolean redirect, boolean popup, Action[] renderActions, Transition[] transitions, FlowExecutionExceptionHandler[] exceptionHandlers, Action[] exitActions, AttributeMap attributes) { ViewState viewState = new ViewState(flow, id, viewFactory); viewState.addVariables(variables); viewState.setRedirect(redirect); viewState.setPopup(popup); viewState.getRenderActionList().addAll(renderActions); configureCommonProperties(viewState, entryActions, transitions, exceptionHandlers, exitActions, attributes); return viewState; } /** * Factory method that creates a new action state, a state where a system action is executed. This method is an * atomic operation that returns a fully initialized state. It encapsulates the selection of the action state * implementation as well as the state assembly. * @param id the identifier to assign to the state, must be unique to its owning flow (required) * @param flow the flow that will own (contain) this state (required) * @param entryActions any state entry actions; may be null * @param actions the actions to execute when the state is entered (required) * @param transitions any transitions (paths) out of this state; may be null * @param exceptionHandlers any exception handlers; may be null * @param exitActions any state exit actions; may be null * @param attributes attributes to assign to the State, which may also be used to affect state construction; may be * null * @return the fully initialized action state instance */ public State createActionState(String id, Flow flow, Action[] entryActions, Action[] actions, Transition[] transitions, FlowExecutionExceptionHandler[] exceptionHandlers, Action[] exitActions, AttributeMap attributes) { ActionState actionState = new ActionState(flow, id); actionState.getActionList().addAll(actions); configureCommonProperties(actionState, entryActions, transitions, exceptionHandlers, exitActions, attributes); return actionState; } /** * Factory method that creates a new decision state, a state where a flow routing decision is made. This method is * an atomic operation that returns a fully initialized state. It encapsulates the selection of the decision state * implementation as well as the state assembly. * @param id the identifier to assign to the state, must be unique to its owning flow (required) * @param flow the flow that will own (contain) this state (required) * @param entryActions any state entry actions; may be null * @param transitions any transitions (paths) out of this state * @param exceptionHandlers any exception handlers; may be null * @param exitActions any state exit actions; may be null * @param attributes attributes to assign to the State, which may also be used to affect state construction; may be * null * @return the fully initialized decision state instance */ public State createDecisionState(String id, Flow flow, Action[] entryActions, Transition[] transitions, FlowExecutionExceptionHandler[] exceptionHandlers, Action[] exitActions, AttributeMap attributes) { DecisionState decisionState = new DecisionState(flow, id); configureCommonProperties(decisionState, entryActions, transitions, exceptionHandlers, exitActions, attributes); return decisionState; } /** * Factory method that creates a new subflow state, a state where a parent flow spawns another flow as a subflow. * This method is an atomic operation that returns a fully initialized state. It encapsulates the selection of the * subflow state implementation as well as the state assembly. * @param id the identifier to assign to the state, must be unique to its owning flow (required) * @param flow the flow that will own (contain) this state (required) * @param entryActions any state entry actions; may be null * @param subflow the subflow definition (required) * @param attributeMapper the subflow input and output attribute mapper; may be null * @param transitions any transitions (paths) out of this state * @param exceptionHandlers any exception handlers; may be null * @param exitActions any state exit actions; may be null * @param attributes attributes to assign to the State, which may also be used to affect state construction; may be * null * @return the fully initialized subflow state instance */ public State createSubflowState(String id, Flow flow, Action[] entryActions, Expression subflow, SubflowAttributeMapper attributeMapper, Transition[] transitions, FlowExecutionExceptionHandler[] exceptionHandlers, Action[] exitActions, AttributeMap attributes) { SubflowState subflowState = new SubflowState(flow, id, subflow); if (attributeMapper != null) { subflowState.setAttributeMapper(attributeMapper); } configureCommonProperties(subflowState, entryActions, transitions, exceptionHandlers, exitActions, attributes); return subflowState; } /** * Factory method that creates a new end state, a state where an executing flow session terminates. This method is * an atomic operation that returns a fully initialized state. It encapsulates the selection of the end state * implementation as well as the state assembly. * @param id the identifier to assign to the state, must be unique to its owning flow (required) * @param flow the flow that will own (contain) this state (required) * @param entryActions any state entry actions; may be null * @param finalResponseAction the state response renderer; may be null * @param outputMapper the state output mapper; may be null * @param exceptionHandlers any exception handlers; may be null * @param attributes attributes to assign to the State, which may also be used to affect state construction; may be * null * @return the fully initialized subflow state instance */ public State createEndState(String id, Flow flow, Action[] entryActions, Action finalResponseAction, Mapper outputMapper, FlowExecutionExceptionHandler[] exceptionHandlers, AttributeMap attributes) { EndState endState = new EndState(flow, id); if (finalResponseAction != null) { endState.setFinalResponseAction(finalResponseAction); } if (outputMapper != null) { endState.setOutputMapper(outputMapper); } configureCommonProperties(endState, entryActions, exceptionHandlers, attributes); return endState; } /** * Factory method that creates a new transition, a path from one step in a flow to another. This method is an atomic * operation that returns a fully initialized transition. It encapsulates the selection of the transition * implementation as well as the transition assembly. * @param targetStateResolver the resolver of the target state of the transition (required) * @param matchingCriteria the criteria that matches the transition; may be null * @param executionCriteria the criteria that governs execution of the transition after match; may be null * @param attributes attributes to assign to the transition, which may also be used to affect transition * construction; may be null * @return the fully initialized transition instance */ public Transition createTransition(TargetStateResolver targetStateResolver, TransitionCriteria matchingCriteria, TransitionCriteria executionCriteria, AttributeMap attributes) { Transition transition = new Transition(targetStateResolver); if (matchingCriteria != null) { transition.setMatchingCriteria(matchingCriteria); } if (executionCriteria != null) { transition.setExecutionCriteria(executionCriteria); } transition.getAttributes().putAll(attributes); return transition; } // internal helpers /** * Configure common properties for a transitionable state. */ private void configureCommonProperties(TransitionableState state, Action[] entryActions, Transition[] transitions, FlowExecutionExceptionHandler[] exceptionHandlers, Action[] exitActions, AttributeMap attributes) { configureCommonProperties(state, entryActions, exceptionHandlers, attributes); state.getTransitionSet().addAll(transitions); state.getExitActionList().addAll(exitActions); } /** * Configure common properties for a state. */ private void configureCommonProperties(State state, Action[] entryActions, FlowExecutionExceptionHandler[] exceptionHandlers, AttributeMap attributes) { state.getEntryActionList().addAll(entryActions); state.getExceptionHandlerSet().addAll(exceptionHandlers); state.getAttributes().putAll(attributes); } }././@LongLink0000000000000000000000000000022200000000000011561 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframework/webflow/engine/builder/FlowAssembler.javalibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframew0000644000000000000000000000763711360615644027771 0ustar /* * Copyright 2004-2008 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.springframework.webflow.engine.builder; import org.springframework.util.Assert; import org.springframework.webflow.engine.Flow; /** * A director for assembling flows, delegating to a {@link FlowBuilder} to construct a flow. This class encapsulates the * algorithm for using a FlowBuilder to assemble a Flow properly. It acts as the director in the classic GoF builder * pattern. *

* Flow assemblers may be used in a standalone, programmatic fashion as follows: * *

 *     FlowBuilder builder = ...;
 *     FlowBuilder context = ...;
 *     Flow flow = new FlowAssembler(builder, builderContext).assembleFlow();
 * 
* * @see org.springframework.webflow.engine.builder.FlowBuilder * * @author Keith Donald * @author Erwin Vervaet */ public class FlowAssembler { /** * The flow builder strategy used to construct the flow from its component parts. */ private FlowBuilder flowBuilder; /** * Context needed to initialize the builder so it can perform a build operation. */ private FlowBuilderContext flowBuilderContext; /** * Create a new flow assembler that will direct Flow assembly using the specified builder strategy. * @param flowBuilder the builder the factory will use to build flows * @param flowBuilderContext context to influence the build process */ public FlowAssembler(FlowBuilder flowBuilder, FlowBuilderContext flowBuilderContext) { Assert.notNull(flowBuilder, "A flow builder is required for flow assembly"); Assert.notNull(flowBuilderContext, "A flow builder context is required for flow assembly"); this.flowBuilder = flowBuilder; this.flowBuilderContext = flowBuilderContext; } /** * Returns the flow builder strategy used to construct the flow from its component parts. */ public FlowBuilder getFlowBuilder() { return flowBuilder; } /** * Returns the flow builder context. * @return flow builder context */ public FlowBuilderContext getFlowBuilderContext() { return flowBuilderContext; } /** * Assembles the flow, directing the construction process by delegating to the configured FlowBuilder. Every call to * this method will assemble the Flow instance. *

* This will drive the flow construction process as described in the {@link FlowBuilder} JavaDoc, starting with * builder initialization using {@link FlowBuilder#init(FlowBuilderContext)} and finishing by cleaning up the * builder with a call to {@link FlowBuilder#dispose()}. * @return the constructed flow * @throws FlowBuilderException when flow assembly fails */ public Flow assembleFlow() throws FlowBuilderException { try { flowBuilder.init(flowBuilderContext); directAssembly(); return flowBuilder.getFlow(); } finally { flowBuilder.dispose(); } } /** * Build all parts of the flow by directing flow assembly by the flow builder. * @throws FlowBuilderException when flow assembly fails */ protected void directAssembly() throws FlowBuilderException { flowBuilder.buildVariables(); flowBuilder.buildInputMapper(); flowBuilder.buildStartActions(); flowBuilder.buildStates(); flowBuilder.buildGlobalTransitions(); flowBuilder.buildEndActions(); flowBuilder.buildOutputMapper(); flowBuilder.buildExceptionHandlers(); } }././@LongLink0000000000000000000000000000023100000000000011561 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframework/webflow/engine/builder/FlowBuilderException.javalibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframew0000644000000000000000000000251511360615632027754 0ustar /* * Copyright 2004-2008 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.springframework.webflow.engine.builder; import org.springframework.webflow.core.FlowException; /** * Exception thrown to indicate a problem while building a flow. * * @see FlowBuilder * * @author Erwin Vervaet */ public class FlowBuilderException extends FlowException { /** * Create a new flow builder exception. * @param message descriptive message */ public FlowBuilderException(String message) { super(message); } /** * Create a new flow builder exception. * @param message descriptive message * @param cause the underlying cause of this exception */ public FlowBuilderException(String message, Throwable cause) { super(message, cause); } }././@LongLink0000000000000000000000000000022700000000000011566 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframework/webflow/engine/builder/ViewFactoryCreator.javalibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframew0000644000000000000000000000407511360615634027761 0ustar /* * Copyright 2004-2008 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.springframework.webflow.engine.builder; import org.springframework.binding.convert.ConversionService; import org.springframework.binding.expression.Expression; import org.springframework.binding.expression.ExpressionParser; import org.springframework.webflow.execution.View; import org.springframework.webflow.execution.ViewFactory; /** * A factory for ViewFactory objects. This is an SPI interface and conceals specific types of view factories from the * flow builder infrastructure. */ public interface ViewFactoryCreator { /** * Create a view factory capable of creating {@link View} objects that can render the view template with the * provided identifier. * @param viewId an expression that resolves the id of the view to render * @param expressionParser an optional expression parser to use to resolve view expressions * @param conversionService an optional conversion service to use to format text values * @param binderConfiguration information on how the rendered view binds to a model that provides its data * @return the view factory */ public ViewFactory createViewFactory(Expression viewId, ExpressionParser expressionParser, ConversionService conversionService, BinderConfiguration binderConfiguration); /** * Get the default id of the view to render in the provided view state by convention. * @param viewStateId the view state id * @return the default view id */ public String getViewIdByConvention(String viewStateId); }././@LongLink0000000000000000000000000000022000000000000011557 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframework/webflow/engine/builder/FlowBuilder.javalibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframew0000644000000000000000000001410511360615642027753 0ustar /* * Copyright 2004-2008 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.springframework.webflow.engine.builder; import org.springframework.webflow.engine.Flow; /** * Builder interface used to build a flow definition. The process of building a flow consists of the following steps: *

    *
  1. Initialize this builder, creating the initial flow definition, by calling {@link #init(FlowBuilderContext)}. *
  2. Call {@link #buildVariables()} to create any variables of the flow and add them to the flow definition. *
  3. Call {@link #buildInputMapper()} to create and set the input mapper for the flow. *
  4. Call {@link #buildStartActions()} to create and add any start actions to the flow. *
  5. Call {@link #buildStates()} to create the states of the flow and add them to the flow definition. *
  6. Call {@link #buildGlobalTransitions()} to create any transitions shared by all states of the flow and add them to * the flow definition. *
  7. Call {@link #buildEndActions()} to create and add any end actions to the flow. *
  8. Call {@link #buildOutputMapper()} to create and set the output mapper for the flow. *
  9. Call {@link #buildExceptionHandlers()} to create the exception handlers of the flow and add them to the flow * definition. *
  10. Call {@link #getFlow()} to return the fully-built {@link Flow} definition. *
  11. Dispose this builder, releasing any resources allocated during the building process by calling {@link #dispose()}. *
*

* Implementations should encapsulate flow construction logic, either for a specific kind of flow, for example, an * OrderFlowBuilder built in Java code, or a generic flow builder strategy, like the * XmlFlowBuilder, for building flows from an XML-definition. *

* Flow builders are used by the {@link FlowAssembler}, which acts as an assembler (director). Flow Builders may be * reused, however, exercise caution when doing this as these objects are not thread safe. Also, for each use be sure to * call init, followed by the build* methods, getFlow, and dispose completely in that order. *

* This is a good example of the classic GoF builder pattern. * * @see Flow * @see FlowBuilderContext * @see FlowAssembler * * @author Keith Donald * @author Erwin Vervaet */ public interface FlowBuilder { /** * Initialize this builder. This could cause the builder to open a stream to an externalized resource representing * the flow definition, for example. * @param context the flow builder context * @throws FlowBuilderException an exception occurred building the flow */ public void init(FlowBuilderContext context) throws FlowBuilderException; /** * Builds any variables initialized by the flow when it starts. * @throws FlowBuilderException an exception occurred building the flow */ public void buildVariables() throws FlowBuilderException; /** * Builds the input mapper responsible for mapping flow input on start. * @throws FlowBuilderException an exception occurred building the flow */ public void buildInputMapper() throws FlowBuilderException; /** * Builds any start actions to execute when the flow starts. * @throws FlowBuilderException an exception occurred building the flow */ public void buildStartActions() throws FlowBuilderException; /** * Builds the states of the flow. * @throws FlowBuilderException an exception occurred building the flow */ public void buildStates() throws FlowBuilderException; /** * Builds any transitions shared by all states of the flow. * @throws FlowBuilderException an exception occurred building the flow */ public void buildGlobalTransitions() throws FlowBuilderException; /** * Builds any end actions to execute when the flow ends. * @throws FlowBuilderException an exception occurred building the flow */ public void buildEndActions() throws FlowBuilderException; /** * Builds the output mapper responsible for mapping flow output on end. * @throws FlowBuilderException an exception occurred building the flow */ public void buildOutputMapper() throws FlowBuilderException; /** * Creates and adds all exception handlers to the flow built by this builder. * @throws FlowBuilderException an exception occurred building this flow */ public void buildExceptionHandlers() throws FlowBuilderException; /** * Get the fully constructed and configured Flow object. Called by the builder's assembler (director) after * assembly. When this method is called by the assembler, it is expected flow construction has completed and the * returned flow is fully configured and ready for use. * @throws FlowBuilderException an exception occurred building this flow */ public Flow getFlow() throws FlowBuilderException; /** * Shutdown the builder, releasing any resources it holds. A new flow construction process should start with another * call to the {@link #init(FlowBuilderContext)} method. * @throws FlowBuilderException an exception occurred building this flow */ public void dispose() throws FlowBuilderException; /** * As the underlying flow managed by this builder changed since the last build occurred? * @return true if changed, false if not */ public boolean hasFlowChanged(); /** * Returns a string describing the location of the flow resource; the logical location where the source code can be * found. Used for informational purposes. * @return the flow resource string */ public String getFlowResourceString(); }././@LongLink0000000000000000000000000000023000000000000011560 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframework/webflow/engine/builder/BinderConfiguration.javalibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframew0000644000000000000000000000560511360615634027761 0ustar package org.springframework.webflow.engine.builder; import java.util.Iterator; import java.util.LinkedHashSet; import java.util.Set; import org.springframework.core.style.ToStringCreator; import org.springframework.util.Assert; /** * Contains the information needed to bind model to a view. This information consists of one or more {@link Binding * bindings} that connect properties of the model to UI elements of the view. * * @see ViewFactoryCreator * * @author Keith Donald */ public class BinderConfiguration { private Set bindings = new LinkedHashSet(); /** * Adds a new binding to this binding configuration. * @param binding the binding */ public void addBinding(Binding binding) { bindings.add(binding); } /** * Returns the set of bindings associated with this binding configuration. */ public Set getBindings() { return bindings; } /** * Gets the binding with the specified name, or returns null if no such binding is found. * @param name the name of the binding. * @return the binding */ public Binding getBinding(String name) { Iterator it = bindings.iterator(); while (it.hasNext()) { Binding binding = (Binding) it.next(); if (name.equals(binding.getProperty())) { return binding; } } return null; } /** * A binding that provides the information needed to connect an element of the view to a property of the model. * * @author Keith Donald */ public static final class Binding { private String property; private String converter; private boolean required; /** * Creates a new view binding * @param property the model property to bind to * @param converter the id of a custom converter to apply type conversion during binding * @param required whether this binding is required */ public Binding(String property, String converter, boolean required) { Assert.hasText(property, "The property is required"); this.property = property; this.converter = converter; this.required = required; } public boolean equals(Object object) { if (!(object instanceof Binding)) { return false; } Binding binding = (Binding) object; return property.equals(binding.property); } public int hashCode() { return property.hashCode(); } /** * The name of the bound property. * @return the property */ public String getProperty() { return property; } /** * The id of the custom converter to use to convert bound property values. * @return the converter id, or null */ public String getConverter() { return converter; } /** * Whether a non-empty value is required for each binding attempt. * @return the required status */ public boolean getRequired() { return required; } public String toString() { return new ToStringCreator(this).append("property", property).append("converter", converter).append( "required", required).toString(); } } }././@LongLink0000000000000000000000000000021400000000000011562 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframework/webflow/engine/builder/package.htmllibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframew0000644000000000000000000000062311360615636027756 0ustar

The FlowBuilder subsystem for building and assembling executable flow definitions.

You construct a Flow using a {@link org.springframework.webflow.engine.builder.FlowBuilder} implementation. This is done generally by using a {@link org.springframework.webflow.engine.builder.FlowAssembler}. This package is based on the classic GoF Builder design pattern.

././@LongLink0000000000000000000000000000022700000000000011566 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframework/webflow/engine/builder/FlowBuilderContext.javalibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframew0000644000000000000000000000502311360615646027756 0ustar /* * Copyright 2004-2008 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.springframework.webflow.engine.builder; import org.springframework.binding.convert.ConversionService; import org.springframework.binding.expression.ExpressionParser; import org.springframework.context.ApplicationContext; import org.springframework.webflow.core.collection.AttributeMap; import org.springframework.webflow.definition.registry.FlowDefinitionLocator; /** * Provides services needed to a direct a flow builder through building a flow definition. * @author Keith Donald */ public interface FlowBuilderContext { /** * Returns an externally configured flow definition identifier to assign to the flow being built. * @return the flow id */ public String getFlowId(); /** * Returns externally configured attributes to assign to the flow definition being built. * @return the flow attributes */ public AttributeMap getFlowAttributes(); /** * Returns the locator for locating dependent flows (subflows). * @return the flow definition locator */ public FlowDefinitionLocator getFlowDefinitionLocator(); /** * Returns the factory for core flow artifacts such as Flow and State. * @return the flow artifact factory */ public FlowArtifactFactory getFlowArtifactFactory(); /** * Returns a generic type conversion service for converting between types, typically from string to a rich value * object. * @return the generic conversion service */ public ConversionService getConversionService(); /** * Returns the view factory creator for configuring a ViewFactory per view state * @return the view factory creator */ public ViewFactoryCreator getViewFactoryCreator(); /** * Returns the expression parser for parsing expression strings. * @return the expression parser */ public ExpressionParser getExpressionParser(); /** * Returns the application context hosting the flow system. * @return the application context */ public ApplicationContext getApplicationContext(); }././@LongLink0000000000000000000000000000021000000000000011556 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframework/webflow/engine/builder/support/libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframew0000755000000000000000000000000011360615642027750 5ustar ././@LongLink0000000000000000000000000000024500000000000011566 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframework/webflow/engine/builder/support/TextToTransitionCriteria.javalibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframew0000644000000000000000000000754711360615636027772 0ustar /* * Copyright 2004-2008 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.springframework.webflow.engine.builder.support; import org.springframework.binding.convert.ConversionExecutionException; import org.springframework.binding.convert.converters.Converter; import org.springframework.binding.expression.Expression; import org.springframework.binding.expression.ExpressionParser; import org.springframework.binding.expression.support.FluentParserContext; import org.springframework.util.StringUtils; import org.springframework.webflow.engine.TransitionCriteria; import org.springframework.webflow.engine.WildcardTransitionCriteria; import org.springframework.webflow.engine.builder.FlowBuilderContext; import org.springframework.webflow.engine.support.DefaultTransitionCriteria; import org.springframework.webflow.execution.RequestContext; /** * Converter that takes an encoded string representation and produces a corresponding TransitionCriteria * object. *

* This converter supports the following encoded forms: *

    *
  • "*" - will result in a TransitionCriteria object that matches on everything.
  • *
  • "eventId" - will result in a TransitionCriteria object that matches given event id.
  • *
  • "${...}" - will result in a TransitionCriteria object that evaluates given condition, expressed as an * expression.
  • *
* * @see org.springframework.webflow.engine.TransitionCriteria * * @author Keith Donald * @author Erwin Vervaet */ class TextToTransitionCriteria implements Converter { /** * Context for flow builder services. */ private FlowBuilderContext flowBuilderContext; /** * Create a new converter that converts strings to transition criteria objects. Custom transition criteria will be * looked up using given service locator. */ public TextToTransitionCriteria(FlowBuilderContext flowBuilderContext) { this.flowBuilderContext = flowBuilderContext; } public Class getSourceClass() { return String.class; } public Class getTargetClass() { return TransitionCriteria.class; } public Object convertSourceToTargetClass(Object source, Class targetClass) throws Exception { String encodedCriteria = (String) source; ExpressionParser parser = flowBuilderContext.getExpressionParser(); if (!StringUtils.hasText(encodedCriteria) || WildcardTransitionCriteria.WILDCARD_EVENT_ID.equals(encodedCriteria)) { return WildcardTransitionCriteria.INSTANCE; } else { return createBooleanExpressionTransitionCriteria(encodedCriteria, parser); } } /** * Hook method subclasses can override to return a specialized expression evaluating transition criteria * implementation. * @param encodedCriteria the encoded transition criteria expression * @param parser the parser that should parse the expression * @return the transition criteria object * @throws ConversionExecutionException when something goes wrong */ protected TransitionCriteria createBooleanExpressionTransitionCriteria(String encodedCriteria, ExpressionParser parser) throws ConversionExecutionException { Expression expression = parser.parseExpression(encodedCriteria, new FluentParserContext().template().evaluate( RequestContext.class)); return new DefaultTransitionCriteria(expression); } }././@LongLink0000000000000000000000000000024000000000000011561 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframework/webflow/engine/builder/support/FlowBuilderServices.javalibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframew0000644000000000000000000001131011360615642027746 0ustar /* * Copyright 2004-2008 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.springframework.webflow.engine.builder.support; import org.springframework.beans.BeansException; import org.springframework.beans.factory.InitializingBean; import org.springframework.binding.convert.ConversionService; import org.springframework.binding.expression.ExpressionParser; import org.springframework.context.ApplicationContext; import org.springframework.context.ApplicationContextAware; import org.springframework.util.Assert; import org.springframework.webflow.engine.Flow; import org.springframework.webflow.engine.State; import org.springframework.webflow.engine.builder.FlowArtifactFactory; import org.springframework.webflow.engine.builder.FlowBuilderContext; import org.springframework.webflow.engine.builder.ViewFactoryCreator; /** * A simple holder for configuring the services used by flow builders. These services are exposed to a builder in a * {@link FlowBuilderContext}. * * Note this class does not attempt to default any service implementations other than the {@link FlowArtifactFactory}, * which is more like builder helper objects than a service. It is expected clients inject non-null references to * concrete service implementations appropriate for their environment. * * @see FlowBuilderContextImpl * * @author Keith Donald */ public class FlowBuilderServices implements ApplicationContextAware, InitializingBean { /** * The factory encapsulating the creation of central Flow artifacts such as {@link Flow flows} and {@link State * states}. */ private FlowArtifactFactory flowArtifactFactory = new FlowArtifactFactory(); /** * The view factory creator for creating views to render during flow execution. The default is null and * this service must be configured externally. */ private ViewFactoryCreator viewFactoryCreator; /** * The conversion service for converting from one object type to another. */ private ConversionService conversionService; /** * The parser for parsing expression strings into expression objects. The default is Web Flow's default expression * parser implementation. */ private ExpressionParser expressionParser; /** * The Spring application context that provides access to the services of the application. */ private ApplicationContext applicationContext; /** * Whether or not the flow system is in development mode. In development mode, flows auto-refresh on change. */ private boolean development; public FlowArtifactFactory getFlowArtifactFactory() { return flowArtifactFactory; } public void setFlowArtifactFactory(FlowArtifactFactory flowArtifactFactory) { this.flowArtifactFactory = flowArtifactFactory; } public ViewFactoryCreator getViewFactoryCreator() { return viewFactoryCreator; } public void setViewFactoryCreator(ViewFactoryCreator viewFactoryCreator) { this.viewFactoryCreator = viewFactoryCreator; } public ConversionService getConversionService() { return conversionService; } public void setConversionService(ConversionService conversionService) { this.conversionService = conversionService; } public ExpressionParser getExpressionParser() { return expressionParser; } public void setExpressionParser(ExpressionParser expressionParser) { this.expressionParser = expressionParser; } public boolean getDevelopment() { return development; } public void setDevelopment(boolean development) { this.development = development; } public ApplicationContext getApplicationContext() { return applicationContext; } // implementing ApplicationContextAware public void setApplicationContext(ApplicationContext applicationContext) throws BeansException { this.applicationContext = applicationContext; } // implementing InitializingBean public void afterPropertiesSet() throws Exception { Assert.notNull(flowArtifactFactory, "The FlowArtifactFactory is required"); Assert.notNull(viewFactoryCreator, "The ViewFactoryCreator is required"); Assert.notNull(conversionService, "The type ConversionService is required"); Assert.notNull(expressionParser, "The expressionParser is required"); Assert.notNull(applicationContext, "The ApplicationContext is required"); } }././@LongLink0000000000000000000000000000022400000000000011563 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframework/webflow/engine/builder/support/package.htmllibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframew0000644000000000000000000000012611360615634027752 0ustar

Support classes for implementing FlowBuilders.

././@LongLink0000000000000000000000000000024300000000000011564 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframework/webflow/engine/builder/support/FlowBuilderContextImpl.javalibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframew0000644000000000000000000001422411360615632027754 0ustar /* * Copyright 2004-2008 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.springframework.webflow.engine.builder.support; import java.util.Set; import org.springframework.binding.convert.ConversionException; import org.springframework.binding.convert.ConversionExecutionException; import org.springframework.binding.convert.ConversionExecutor; import org.springframework.binding.convert.ConversionExecutorNotFoundException; import org.springframework.binding.convert.ConversionService; import org.springframework.binding.convert.service.GenericConversionService; import org.springframework.binding.expression.ExpressionParser; import org.springframework.context.ApplicationContext; import org.springframework.util.Assert; import org.springframework.webflow.core.collection.AttributeMap; import org.springframework.webflow.core.collection.CollectionUtils; import org.springframework.webflow.definition.registry.FlowDefinitionLocator; import org.springframework.webflow.engine.builder.FlowArtifactFactory; import org.springframework.webflow.engine.builder.FlowBuilderContext; import org.springframework.webflow.engine.builder.ViewFactoryCreator; /** * Generic implementation of a flow builder context, suitable for use by most flow assembly systems. * @author Keith Donald */ public class FlowBuilderContextImpl implements FlowBuilderContext { private String flowId; private AttributeMap flowAttributes; private FlowDefinitionLocator flowDefinitionLocator; private FlowBuilderServices flowBuilderServices; private ConversionService conversionService; /** * Creates a new flow builder context. * @param flowId the id to assign the flow being built * @param flowAttributes attributes to assign the flow being built * @param flowDefinitionLocator a locator to find dependent subflows * @param flowBuilderServices a parameter object providing access to additional services needed by the flow builder */ public FlowBuilderContextImpl(String flowId, AttributeMap flowAttributes, FlowDefinitionLocator flowDefinitionLocator, FlowBuilderServices flowBuilderServices) { Assert.hasText(flowId, "The flow id is required"); Assert.notNull(flowDefinitionLocator, "The flow definition locator is required"); Assert.notNull(flowBuilderServices, "The flow builder services holder is required"); this.flowId = flowId; initFlowAttributes(flowAttributes); this.flowDefinitionLocator = flowDefinitionLocator; this.flowBuilderServices = flowBuilderServices; this.conversionService = createConversionService(); } public FlowBuilderServices getFlowBuilderServices() { return flowBuilderServices; } // implementing flow builder context public String getFlowId() { return flowId; } public AttributeMap getFlowAttributes() { return flowAttributes; } public FlowArtifactFactory getFlowArtifactFactory() { return flowBuilderServices.getFlowArtifactFactory(); } public FlowDefinitionLocator getFlowDefinitionLocator() { return flowDefinitionLocator; } public ConversionService getConversionService() { return conversionService; } public ViewFactoryCreator getViewFactoryCreator() { return flowBuilderServices.getViewFactoryCreator(); } public ExpressionParser getExpressionParser() { return flowBuilderServices.getExpressionParser(); } public ApplicationContext getApplicationContext() { return flowBuilderServices.getApplicationContext(); } /** * Factory method that creates the conversion service the flow builder will use. Subclasses may override. The * default implementation registers Web Flow-specific converters thought to be useful for most builder * implementations, setting the externally-provided builder services conversion service as its parent. * @return the flow builder conversion service */ protected ConversionService createConversionService() { GenericConversionService service = new GenericConversionService(); service.addConverter(new TextToTransitionCriteria(this)); service.addConverter(new TextToTargetStateResolver(this)); service.setParent(new ParentConversionServiceProxy()); return service; } private void initFlowAttributes(AttributeMap flowAttributes) { if (flowAttributes != null) { this.flowAttributes = flowAttributes; } else { this.flowAttributes = CollectionUtils.EMPTY_ATTRIBUTE_MAP; } } /** * A little proxy that refreshes the externally configured conversion service reference on each invocation. */ private class ParentConversionServiceProxy implements ConversionService { public Object executeConversion(Object source, Class targetClass) throws ConversionException { return getFlowBuilderServices().getConversionService().executeConversion(source, targetClass); } public Object executeConversion(String converterId, Object source, Class targetClass) { return getFlowBuilderServices().getConversionService().executeConversion(converterId, source, targetClass); } public ConversionExecutor getConversionExecutor(Class sourceClass, Class targetClass) throws ConversionExecutionException { return getFlowBuilderServices().getConversionService().getConversionExecutor(sourceClass, targetClass); } public Set getConversionExecutors(Class sourceClass) { return getFlowBuilderServices().getConversionService().getConversionExecutors(sourceClass); } public ConversionExecutor getConversionExecutor(String id, Class sourceClass, Class targetClass) throws ConversionExecutorNotFoundException { return getFlowBuilderServices().getConversionService().getConversionExecutor(id, sourceClass, targetClass); } public Class getClassForAlias(String name) { return getFlowBuilderServices().getConversionService().getClassForAlias(name); } } }././@LongLink0000000000000000000000000000024600000000000011567 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframework/webflow/engine/builder/support/TextToTargetStateResolver.javalibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframew0000644000000000000000000000604111360615642027753 0ustar /* * Copyright 2004-2008 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.springframework.webflow.engine.builder.support; import org.springframework.binding.convert.converters.Converter; import org.springframework.binding.expression.Expression; import org.springframework.binding.expression.ExpressionParser; import org.springframework.binding.expression.support.FluentParserContext; import org.springframework.util.StringUtils; import org.springframework.webflow.engine.TargetStateResolver; import org.springframework.webflow.engine.builder.FlowBuilderContext; import org.springframework.webflow.engine.support.DefaultTargetStateResolver; import org.springframework.webflow.execution.RequestContext; /** * Converter that takes an encoded string representation and produces a corresponding {@link TargetStateResolver} * object. *

* This converter supports the following encoded forms: *

    *
  • "stateId" - will result in a TargetStateResolver that always resolves the same state.
  • *
  • "${stateIdExpression} - will result in a TargetStateResolver that resolves the target state by evaluating an * expression against the request context. The resolved value can be a target state identifier or a custom * TargetStateResolver to delegate to.
  • *
* * @author Keith Donald * @author Erwin Vervaet */ class TextToTargetStateResolver implements Converter { /** * Context for flow builder services. */ private FlowBuilderContext flowBuilderContext; /** * Create a new converter that converts strings to transition target state resolver objects. The given conversion * service will be used to do all necessary internal conversion (e.g. parsing expression strings). */ public TextToTargetStateResolver(FlowBuilderContext flowBuilderContext) { this.flowBuilderContext = flowBuilderContext; } public Class getSourceClass() { return String.class; } public Class getTargetClass() { return TargetStateResolver.class; } public Object convertSourceToTargetClass(Object source, Class targetClass) throws Exception { String targetStateId = (String) source; if (!StringUtils.hasText(targetStateId)) { return null; } ExpressionParser parser = flowBuilderContext.getExpressionParser(); Expression expression = parser.parseExpression(targetStateId, new FluentParserContext().template().evaluate( RequestContext.class).expectResult(String.class)); return new DefaultTargetStateResolver(expression); } }././@LongLink0000000000000000000000000000024000000000000011561 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframework/webflow/engine/builder/support/AbstractFlowBuilder.javalibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframew0000644000000000000000000000704611360615636027764 0ustar /* * Copyright 2004-2008 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.springframework.webflow.engine.builder.support; import org.springframework.webflow.core.collection.AttributeMap; import org.springframework.webflow.engine.Flow; import org.springframework.webflow.engine.builder.FlowBuilder; import org.springframework.webflow.engine.builder.FlowBuilderContext; import org.springframework.webflow.engine.builder.FlowBuilderException; /** * Abstract base implementation of a flow builder defining common functionality needed by most concrete flow builder * implementations. This class implements all optional parts of the FlowBuilder process as no-op methods. Subclasses are * only required to implement {@link #buildStates()}. * * @author Keith Donald * @author Erwin Vervaet */ public abstract class AbstractFlowBuilder implements FlowBuilder { /** * The Flow built by this builder. */ private Flow flow; /** * The flow builder context providing access to services needed to build the flow. */ private FlowBuilderContext context; public void init(FlowBuilderContext context) throws FlowBuilderException { this.context = context; doInit(); flow = createFlow(); } /** * Flow builder initialization hook. Does nothing by default. May be overridden by subclasses. */ protected void doInit() { } /** * Factory method that initially creates the flow implementation during flow builder initialization. Simply * delegates to the configured flow artifact factory by default. * @return the flow instance, initially created but not yet built */ protected Flow createFlow() { String id = getContext().getFlowId(); AttributeMap attributes = getContext().getFlowAttributes(); return getContext().getFlowArtifactFactory().createFlow(id, attributes); } /** * Returns this flow builder's context. * @return the flow builder context */ protected FlowBuilderContext getContext() { return context; } public void buildVariables() throws FlowBuilderException { } public void buildInputMapper() throws FlowBuilderException { } public void buildStartActions() throws FlowBuilderException { } public abstract void buildStates() throws FlowBuilderException; public void buildGlobalTransitions() throws FlowBuilderException { } public void buildEndActions() throws FlowBuilderException { } public void buildOutputMapper() throws FlowBuilderException { } public void buildExceptionHandlers() throws FlowBuilderException { } public Flow getFlow() throws FlowBuilderException { return flow; } public void dispose() throws FlowBuilderException { flow = null; doDispose(); } public boolean hasFlowChanged() { return false; } public String getFlowResourceString() { return getClass().getName(); } /** * Flow builder destruction hook. Does nothing by default. May be overridden by subclasses. */ protected void doDispose() { } }././@LongLink0000000000000000000000000000020600000000000011563 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframework/webflow/engine/builder/model/libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframew0000755000000000000000000000000011360615640027746 5ustar ././@LongLink0000000000000000000000000000024200000000000011563 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframework/webflow/engine/builder/model/LocalFlowBuilderContext.javalibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframew0000644000000000000000000000673611360615632027765 0ustar /* * Copyright 2004-2008 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.springframework.webflow.engine.builder.model; import org.springframework.binding.convert.ConversionService; import org.springframework.binding.expression.ExpressionParser; import org.springframework.context.ApplicationContext; import org.springframework.context.support.GenericApplicationContext; import org.springframework.webflow.core.collection.AttributeMap; import org.springframework.webflow.definition.registry.FlowDefinitionLocator; import org.springframework.webflow.engine.builder.FlowArtifactFactory; import org.springframework.webflow.engine.builder.FlowBuilderContext; import org.springframework.webflow.engine.builder.ViewFactoryCreator; /** * A builder context that delegates to a flow-local bean factory for builder services. Such builder services override * the services of the external "parent" context. * @author Keith Donald */ class LocalFlowBuilderContext implements FlowBuilderContext { private FlowBuilderContext parent; private ApplicationContext localFlowContext; public LocalFlowBuilderContext(FlowBuilderContext parent, GenericApplicationContext localFlowContext) { this.parent = parent; this.localFlowContext = localFlowContext; } public ApplicationContext getApplicationContext() { return localFlowContext; } public String getFlowId() { return parent.getFlowId(); } public AttributeMap getFlowAttributes() { return parent.getFlowAttributes(); } public FlowDefinitionLocator getFlowDefinitionLocator() { if (localFlowContext.containsLocalBean("flowRegistry")) { return (FlowDefinitionLocator) localFlowContext.getBean("flowRegistry", FlowDefinitionLocator.class); } else { return parent.getFlowDefinitionLocator(); } } public FlowArtifactFactory getFlowArtifactFactory() { if (localFlowContext.containsLocalBean("flowArtifactFactory")) { return (FlowArtifactFactory) localFlowContext.getBean("flowArtifactFactory", FlowArtifactFactory.class); } else { return parent.getFlowArtifactFactory(); } } public ConversionService getConversionService() { if (localFlowContext.containsLocalBean("conversionService")) { return (ConversionService) localFlowContext.getBean("conversionService", ConversionService.class); } else { return parent.getConversionService(); } } public ViewFactoryCreator getViewFactoryCreator() { if (localFlowContext.containsLocalBean("viewFactoryCreator")) { return (ViewFactoryCreator) localFlowContext.getBean("viewFactoryCreator", ViewFactoryCreator.class); } else { return parent.getViewFactoryCreator(); } } public ExpressionParser getExpressionParser() { if (localFlowContext.containsLocalBean("expressionParser")) { return (ExpressionParser) localFlowContext.getBean("expressionParser", ExpressionParser.class); } else { return parent.getExpressionParser(); } } }././@LongLink0000000000000000000000000000023700000000000011567 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframework/webflow/engine/builder/model/FlowModelFlowBuilder.javalibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframew0000644000000000000000000012454411360615636027767 0ustar /* * Copyright 2004-2008 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.springframework.webflow.engine.builder.model; import java.io.IOException; import java.util.ArrayList; import java.util.Arrays; import java.util.Iterator; import java.util.List; import org.springframework.beans.factory.config.ConfigurableBeanFactory; import org.springframework.beans.factory.support.BeanDefinitionBuilder; import org.springframework.beans.factory.xml.XmlBeanDefinitionReader; import org.springframework.binding.convert.ConversionExecutionException; import org.springframework.binding.convert.ConversionExecutor; import org.springframework.binding.convert.service.RuntimeBindingConversionExecutor; import org.springframework.binding.expression.Expression; import org.springframework.binding.expression.ExpressionParser; import org.springframework.binding.expression.ParserContext; import org.springframework.binding.expression.support.FluentParserContext; import org.springframework.binding.mapping.Mapper; import org.springframework.binding.mapping.impl.DefaultMapper; import org.springframework.binding.mapping.impl.DefaultMapping; import org.springframework.context.ApplicationContext; import org.springframework.context.annotation.AnnotationConfigUtils; import org.springframework.context.support.AbstractApplicationContext; import org.springframework.context.support.GenericApplicationContext; import org.springframework.context.support.ReloadableResourceBundleMessageSource; import org.springframework.core.JdkVersion; import org.springframework.core.io.Resource; import org.springframework.core.style.ToStringCreator; import org.springframework.util.Assert; import org.springframework.util.ClassUtils; import org.springframework.util.StringUtils; import org.springframework.web.context.WebApplicationContext; import org.springframework.web.context.request.RequestScope; import org.springframework.web.context.support.GenericWebApplicationContext; import org.springframework.webflow.action.ActionResultExposer; import org.springframework.webflow.action.EvaluateAction; import org.springframework.webflow.action.ExternalRedirectAction; import org.springframework.webflow.action.FlowDefinitionRedirectAction; import org.springframework.webflow.action.RenderAction; import org.springframework.webflow.action.SetAction; import org.springframework.webflow.action.ViewFactoryActionAdapter; import org.springframework.webflow.core.collection.AttributeMap; import org.springframework.webflow.core.collection.LocalAttributeMap; import org.springframework.webflow.core.collection.MutableAttributeMap; import org.springframework.webflow.engine.Flow; import org.springframework.webflow.engine.FlowExecutionExceptionHandler; import org.springframework.webflow.engine.FlowVariable; import org.springframework.webflow.engine.History; import org.springframework.webflow.engine.SubflowAttributeMapper; import org.springframework.webflow.engine.TargetStateResolver; import org.springframework.webflow.engine.Transition; import org.springframework.webflow.engine.TransitionCriteria; import org.springframework.webflow.engine.VariableValueFactory; import org.springframework.webflow.engine.ViewVariable; import org.springframework.webflow.engine.builder.BinderConfiguration; import org.springframework.webflow.engine.builder.FlowBuilderContext; import org.springframework.webflow.engine.builder.FlowBuilderException; import org.springframework.webflow.engine.builder.BinderConfiguration.Binding; import org.springframework.webflow.engine.builder.support.AbstractFlowBuilder; import org.springframework.webflow.engine.model.AbstractActionModel; import org.springframework.webflow.engine.model.AbstractMappingModel; import org.springframework.webflow.engine.model.AbstractStateModel; import org.springframework.webflow.engine.model.ActionStateModel; import org.springframework.webflow.engine.model.AttributeModel; import org.springframework.webflow.engine.model.BeanImportModel; import org.springframework.webflow.engine.model.BinderModel; import org.springframework.webflow.engine.model.BindingModel; import org.springframework.webflow.engine.model.DecisionStateModel; import org.springframework.webflow.engine.model.EndStateModel; import org.springframework.webflow.engine.model.EvaluateModel; import org.springframework.webflow.engine.model.ExceptionHandlerModel; import org.springframework.webflow.engine.model.FlowModel; import org.springframework.webflow.engine.model.IfModel; import org.springframework.webflow.engine.model.InputModel; import org.springframework.webflow.engine.model.OutputModel; import org.springframework.webflow.engine.model.PersistenceContextModel; import org.springframework.webflow.engine.model.RenderModel; import org.springframework.webflow.engine.model.SecuredModel; import org.springframework.webflow.engine.model.SetModel; import org.springframework.webflow.engine.model.SubflowStateModel; import org.springframework.webflow.engine.model.TransitionModel; import org.springframework.webflow.engine.model.VarModel; import org.springframework.webflow.engine.model.ViewStateModel; import org.springframework.webflow.engine.model.builder.FlowModelBuilderException; import org.springframework.webflow.engine.model.registry.FlowModelHolder; import org.springframework.webflow.engine.support.ActionExecutingViewFactory; import org.springframework.webflow.engine.support.BeanFactoryVariableValueFactory; import org.springframework.webflow.engine.support.DefaultTransitionCriteria; import org.springframework.webflow.engine.support.GenericSubflowAttributeMapper; import org.springframework.webflow.engine.support.TransitionCriteriaChain; import org.springframework.webflow.engine.support.TransitionExecutingFlowExecutionExceptionHandler; import org.springframework.webflow.execution.Action; import org.springframework.webflow.execution.AnnotatedAction; import org.springframework.webflow.execution.RequestContext; import org.springframework.webflow.execution.ViewFactory; import org.springframework.webflow.scope.ConversationScope; import org.springframework.webflow.scope.FlashScope; import org.springframework.webflow.scope.FlowScope; import org.springframework.webflow.scope.ViewScope; import org.springframework.webflow.security.SecurityRule; /** * Builds a runtime {@link Flow} definition object from a {@link FlowModel}. * * @author Keith Donald */ public class FlowModelFlowBuilder extends AbstractFlowBuilder { private FlowModelHolder flowModelHolder; private FlowModel flowModel; private LocalFlowBuilderContext localFlowBuilderContext; /** * Creates a flow builder that can build a {@link Flow} from a {@link FlowModel}. * @param flowModelHolder the flow model holder */ public FlowModelFlowBuilder(FlowModelHolder flowModelHolder) { Assert.notNull(flowModelHolder, "The FlowModelHolder is required"); this.flowModelHolder = flowModelHolder; } /** * Initialize this builder. This could cause the builder to open a stream to an externalized resource representing * the flow definition, for example. * @throws FlowBuilderException an exception occurred building the flow */ protected void doInit() throws FlowBuilderException { try { flowModel = flowModelHolder.getFlowModel(); initLocalFlowContext(); } catch (FlowModelBuilderException e) { throw new FlowBuilderException("Unable to get the model for this flow", e); } if ("true".equals(flowModel.getAbstract())) { throw new FlowBuilderException("Abstract flow models cannot be instantiated."); } } protected Flow createFlow() { String flowId = getContext().getFlowId(); AttributeMap flowAttributes = parseFlowMetaAttributes(flowModel); flowAttributes = getContext().getFlowAttributes().union(flowAttributes); Flow flow = getLocalContext().getFlowArtifactFactory().createFlow(flowId, flowAttributes); flow.setApplicationContext(getLocalContext().getApplicationContext()); return flow; } /** * Builds any variables initialized by the flow when it starts. * @throws FlowBuilderException an exception occurred building the flow */ public void buildVariables() throws FlowBuilderException { if (flowModel.getVars() != null) { for (Iterator it = flowModel.getVars().iterator(); it.hasNext();) { getFlow().addVariable(parseFlowVariable((VarModel) it.next())); } } } /** * Builds the input mapper responsible for mapping flow input on start. * @throws FlowBuilderException an exception occurred building the flow */ public void buildInputMapper() throws FlowBuilderException { getFlow().setInputMapper(parseFlowInputMapper(flowModel.getInputs())); } /** * Builds any start actions to execute when the flow starts. * @throws FlowBuilderException an exception occurred building the flow */ public void buildStartActions() throws FlowBuilderException { getFlow().getStartActionList().addAll(parseActions(flowModel.getOnStartActions())); } /** * Builds the states of the flow. * @throws FlowBuilderException an exception occurred building the flow */ public void buildStates() throws FlowBuilderException { if (flowModel.getStates() == null) { throw new FlowBuilderException("At least one state is required to build a Flow"); } for (Iterator it = flowModel.getStates().iterator(); it.hasNext();) { AbstractStateModel state = (AbstractStateModel) it.next(); if (state instanceof ActionStateModel) { parseAndAddActionState((ActionStateModel) state, getFlow()); } else if (state instanceof ViewStateModel) { parseAndAddViewState((ViewStateModel) state, getFlow()); } else if (state instanceof DecisionStateModel) { parseAndAddDecisionState((DecisionStateModel) state, getFlow()); } else if (state instanceof SubflowStateModel) { parseAndAddSubflowState((SubflowStateModel) state, getFlow()); } else if (state instanceof EndStateModel) { parseAndAddEndState((EndStateModel) state, getFlow()); } } if (flowModel.getStartStateId() != null) { getFlow().setStartState(flowModel.getStartStateId()); } } /** * Builds any transitions shared by all states of the flow. * @throws FlowBuilderException an exception occurred building the flow */ public void buildGlobalTransitions() throws FlowBuilderException { getFlow().getGlobalTransitionSet().addAll(parseTransitions(flowModel.getGlobalTransitions())); } /** * Builds any end actions to execute when the flow ends. * @throws FlowBuilderException an exception occurred building the flow */ public void buildEndActions() throws FlowBuilderException { getFlow().getEndActionList().addAll(parseActions(flowModel.getOnEndActions())); } /** * Builds the output mapper responsible for mapping flow output on end. * @throws FlowBuilderException an exception occurred building the flow */ public void buildOutputMapper() throws FlowBuilderException { if (flowModel.getOutputs() != null) { getFlow().setOutputMapper(parseFlowOutputMapper(flowModel.getOutputs())); } } /** * Creates and adds all exception handlers to the flow built by this builder. * @throws FlowBuilderException an exception occurred building this flow */ public void buildExceptionHandlers() throws FlowBuilderException { getFlow().getExceptionHandlerSet().addAll( parseExceptionHandlers(flowModel.getExceptionHandlers(), flowModel.getGlobalTransitions())); } public boolean hasFlowChanged() { return flowModelHolder.hasFlowModelChanged(); } public String getFlowResourceString() { return flowModelHolder.getFlowModelResource().getDescription(); } /** * Shutdown the builder, releasing any resources it holds. A new flow construction process should start with another * call to the {@link #init(FlowBuilderContext)} method. * @throws FlowBuilderException an exception occurred building this flow */ protected void doDispose() throws FlowBuilderException { flowModel = null; setLocalContext(null); } // subclassing hooks protected FlowModel getFlowModel() { return flowModel; } protected LocalFlowBuilderContext getLocalContext() { return localFlowBuilderContext; } protected void setLocalContext(LocalFlowBuilderContext localFlowBuilderContext) { this.localFlowBuilderContext = localFlowBuilderContext; } /** * Register beans in the bean factory local to the flow definition being built. *

* Subclasses may override this method to customize the population of the bean factory local to the flow definition * being built; for example, to register mock implementations of services in a test environment. * @param beanFactory the bean factory; register local beans with it using * {@link ConfigurableBeanFactory#registerSingleton(String, Object)} */ protected void registerFlowBeans(ConfigurableBeanFactory beanFactory) { } // internal helpers private void initLocalFlowContext() { Resource[] contextResources = parseContextResources(getFlowModel().getBeanImports()); GenericApplicationContext flowContext = createFlowApplicationContext(contextResources); setLocalContext(new LocalFlowBuilderContext(getContext(), flowContext)); } private Resource[] parseContextResources(List beanImports) { if (beanImports != null && !beanImports.isEmpty()) { Resource flowResource = flowModelHolder.getFlowModelResource(); List resources = new ArrayList(beanImports.size()); for (Iterator it = getFlowModel().getBeanImports().iterator(); it.hasNext();) { BeanImportModel beanImport = (BeanImportModel) it.next(); try { resources.add(flowResource.createRelative(beanImport.getResource())); } catch (IOException e) { throw new FlowBuilderException("Could not access flow-relative artifact resource '" + beanImport.getResource() + "'", e); } } return (Resource[]) resources.toArray(new Resource[resources.size()]); } else { return new Resource[0]; } } private GenericApplicationContext createFlowApplicationContext(Resource[] resources) { ApplicationContext parent = getContext().getApplicationContext(); GenericApplicationContext flowContext; if (parent instanceof WebApplicationContext) { GenericWebApplicationContext webContext = new GenericWebApplicationContext(); webContext.setServletContext(((WebApplicationContext) parent).getServletContext()); flowContext = webContext; } else { flowContext = new GenericApplicationContext(); } flowContext.setDisplayName("Flow ApplicationContext [" + getContext().getFlowId() + "]"); flowContext.setParent(parent); flowContext.getBeanFactory().registerScope("request", new RequestScope()); flowContext.getBeanFactory().registerScope("flash", new FlashScope()); flowContext.getBeanFactory().registerScope("view", new ViewScope()); flowContext.getBeanFactory().registerScope("flow", new FlowScope()); flowContext.getBeanFactory().registerScope("conversation", new ConversationScope()); Resource flowResource = flowModelHolder.getFlowModelResource(); flowContext.setResourceLoader(new FlowRelativeResourceLoader(flowResource)); if (JdkVersion.isAtLeastJava15()) { AnnotationConfigUtils.registerAnnotationConfigProcessors(flowContext); } new XmlBeanDefinitionReader(flowContext).loadBeanDefinitions(resources); registerFlowBeans(flowContext.getBeanFactory()); registerMessageSource(flowContext, flowResource); flowContext.refresh(); return flowContext; } private boolean isFlowInDevelopment() { return getContext().getFlowAttributes().getBoolean("development", Boolean.FALSE).booleanValue(); } private void registerMessageSource(GenericApplicationContext flowContext, Resource flowResource) { boolean localMessageSourcePresent = flowContext .containsLocalBean(AbstractApplicationContext.MESSAGE_SOURCE_BEAN_NAME); if (!localMessageSourcePresent) { Resource messageBundle; try { messageBundle = flowResource.createRelative("messages.properties"); } catch (IOException e) { messageBundle = null; } if (messageBundle != null && messageBundle.exists()) { BeanDefinitionBuilder builder = BeanDefinitionBuilder .rootBeanDefinition(ReloadableResourceBundleMessageSource.class); builder.addPropertyValue("basename", "messages"); if (isFlowInDevelopment()) { builder.addPropertyValue("cacheSeconds", "0"); } flowContext.registerBeanDefinition(AbstractApplicationContext.MESSAGE_SOURCE_BEAN_NAME, builder .getBeanDefinition()); } } } private AttributeMap parseFlowMetaAttributes(FlowModel flow) { MutableAttributeMap flowAttributes = parseMetaAttributes(flow.getAttributes()); parseAndPutPersistenceContext(flow.getPersistenceContext(), flowAttributes); parseAndPutSecured(flow.getSecured(), flowAttributes); return flowAttributes; } private FlowVariable parseFlowVariable(VarModel var) { Class clazz = toClass(var.getClassName()); VariableValueFactory valueFactory = new BeanFactoryVariableValueFactory(clazz, getFlow() .getApplicationContext().getAutowireCapableBeanFactory()); return new FlowVariable(var.getName(), valueFactory); } private Mapper parseFlowInputMapper(List inputs) { if (inputs != null && !inputs.isEmpty()) { DefaultMapper inputMapper = new DefaultMapper(); for (Iterator it = inputs.iterator(); it.hasNext();) { inputMapper.addMapping(parseFlowInputMapping((InputModel) it.next())); } return inputMapper; } else { return null; } } private DefaultMapping parseFlowInputMapping(InputModel input) { ExpressionParser parser = getLocalContext().getExpressionParser(); String name = input.getName(); String value = null; if (StringUtils.hasText(input.getValue())) { value = input.getValue(); } else { value = "flowScope." + name; } Expression source = parser.parseExpression(name, new FluentParserContext().evaluate(MutableAttributeMap.class)); Expression target = parser.parseExpression(value, new FluentParserContext().evaluate(RequestContext.class)); DefaultMapping mapping = new DefaultMapping(source, target); parseAndSetMappingConversionExecutor(input, mapping); parseAndSetMappingRequired(input, mapping); return mapping; } private Mapper parseSubflowInputMapper(List inputs) { if (inputs != null && !inputs.isEmpty()) { DefaultMapper inputMapper = new DefaultMapper(); for (Iterator it = inputs.iterator(); it.hasNext();) { inputMapper.addMapping(parseSubflowInputMapping((InputModel) it.next())); } return inputMapper; } else { return null; } } private DefaultMapping parseSubflowInputMapping(InputModel input) { ExpressionParser parser = getLocalContext().getExpressionParser(); String name = input.getName(); String value = null; if (StringUtils.hasText(input.getValue())) { value = input.getValue(); } else { value = name; } Expression source = parser.parseExpression(value, new FluentParserContext().evaluate(RequestContext.class)); Expression target = parser.parseExpression(name, new FluentParserContext().evaluate(MutableAttributeMap.class)); DefaultMapping mapping = new DefaultMapping(source, target); parseAndSetMappingConversionExecutor(input, mapping); parseAndSetMappingRequired(input, mapping); return mapping; } private Mapper parseFlowOutputMapper(List outputs) { if (outputs != null && !outputs.isEmpty()) { DefaultMapper outputMapper = new DefaultMapper(); for (Iterator it = outputs.iterator(); it.hasNext();) { outputMapper.addMapping(parseFlowOutputMapping((OutputModel) it.next())); } return outputMapper; } else { return null; } } private DefaultMapping parseFlowOutputMapping(OutputModel output) { ExpressionParser parser = getLocalContext().getExpressionParser(); String name = output.getName(); String value = null; if (StringUtils.hasText(output.getValue())) { value = output.getValue(); } else { value = name; } Expression source = parser.parseExpression(value, new FluentParserContext().evaluate(RequestContext.class)); Expression target = parser.parseExpression(name, new FluentParserContext().evaluate(MutableAttributeMap.class)); DefaultMapping mapping = new DefaultMapping(source, target); parseAndSetMappingConversionExecutor(output, mapping); parseAndSetMappingRequired(output, mapping); return mapping; } private Mapper parseSubflowOutputMapper(List outputs) { if (outputs != null && !outputs.isEmpty()) { DefaultMapper outputMapper = new DefaultMapper(); for (Iterator it = outputs.iterator(); it.hasNext();) { outputMapper.addMapping(parseSubflowOutputMapping((OutputModel) it.next())); } return outputMapper; } else { return null; } } private DefaultMapping parseSubflowOutputMapping(OutputModel output) { ExpressionParser parser = getLocalContext().getExpressionParser(); String name = output.getName(); String value = null; if (StringUtils.hasText(output.getValue())) { value = output.getValue(); } else { value = "flowScope." + name; } Expression source = parser.parseExpression(name, new FluentParserContext().evaluate(MutableAttributeMap.class)); Expression target = parser.parseExpression(value, new FluentParserContext().evaluate(RequestContext.class)); DefaultMapping mapping = new DefaultMapping(source, target); parseAndSetMappingConversionExecutor(output, mapping); parseAndSetMappingRequired(output, mapping); return mapping; } private void parseAndSetMappingConversionExecutor(AbstractMappingModel mappingModel, DefaultMapping mapping) { if (StringUtils.hasText(mappingModel.getType())) { Class type = toClass(mappingModel.getType()); ConversionExecutor typeConverter = new RuntimeBindingConversionExecutor(type, getLocalContext() .getConversionService()); mapping.setTypeConverter(typeConverter); } } private void parseAndSetMappingRequired(AbstractMappingModel mappingModel, DefaultMapping mapping) { if (StringUtils.hasText(mappingModel.getRequired())) { boolean required = ((Boolean) fromStringTo(Boolean.class).execute(mappingModel.getRequired())) .booleanValue(); mapping.setRequired(required); } } private void parseAndAddViewState(ViewStateModel state, Flow flow) { ViewFactory viewFactory = parseViewFactory(state.getView(), state.getId(), false, state.getBinder()); Boolean redirect = null; if (StringUtils.hasText(state.getRedirect())) { redirect = (Boolean) fromStringTo(Boolean.class).execute(state.getRedirect()); } boolean popup = false; if (StringUtils.hasText(state.getPopup())) { popup = ((Boolean) fromStringTo(Boolean.class).execute(state.getPopup())).booleanValue(); } MutableAttributeMap attributes = parseMetaAttributes(state.getAttributes()); if (state.getModel() != null) { attributes.put("model", getLocalContext().getExpressionParser().parseExpression(state.getModel(), new FluentParserContext().evaluate(RequestContext.class))); } parseAndPutSecured(state.getSecured(), attributes); getLocalContext().getFlowArtifactFactory().createViewState(state.getId(), flow, parseViewVariables(state.getVars()), parseActions(state.getOnEntryActions()), viewFactory, redirect, popup, parseActions(state.getOnRenderActions()), parseTransitions(state.getTransitions()), parseExceptionHandlers(state.getExceptionHandlers(), state.getTransitions()), parseActions(state.getOnExitActions()), attributes); } private void parseAndAddActionState(ActionStateModel state, Flow flow) { MutableAttributeMap attributes = parseMetaAttributes(state.getAttributes()); parseAndPutSecured(state.getSecured(), attributes); getLocalContext().getFlowArtifactFactory().createActionState(state.getId(), flow, parseActions(state.getOnEntryActions()), parseActions(state.getActions()), parseTransitions(state.getTransitions()), parseExceptionHandlers(state.getExceptionHandlers(), state.getTransitions()), parseActions(state.getOnExitActions()), attributes); } private void parseAndAddDecisionState(DecisionStateModel state, Flow flow) { MutableAttributeMap attributes = parseMetaAttributes(state.getAttributes()); parseAndPutSecured(state.getSecured(), attributes); getLocalContext().getFlowArtifactFactory().createDecisionState(state.getId(), flow, parseActions(state.getOnEntryActions()), parseIfs(state.getIfs()), parseExceptionHandlers(state.getExceptionHandlers(), null), parseActions(state.getOnExitActions()), attributes); } private void parseAndAddSubflowState(SubflowStateModel state, Flow flow) { MutableAttributeMap attributes = parseMetaAttributes(state.getAttributes()); parseAndPutSecured(state.getSecured(), attributes); getLocalContext().getFlowArtifactFactory().createSubflowState(state.getId(), flow, parseActions(state.getOnEntryActions()), parseSubflowExpression(state.getSubflow()), parseSubflowAttributeMapper(state), parseTransitions(state.getTransitions()), parseExceptionHandlers(state.getExceptionHandlers(), state.getTransitions()), parseActions(state.getOnExitActions()), attributes); } private void parseAndAddEndState(EndStateModel state, Flow flow) { MutableAttributeMap attributes = parseMetaAttributes(state.getAttributes()); if (StringUtils.hasText(state.getCommit())) { attributes.put("commit", fromStringTo(Boolean.class).execute(state.getCommit())); } parseAndPutSecured(state.getSecured(), attributes); Action finalResponseAction; ViewFactory viewFactory = parseViewFactory(state.getView(), state.getId(), true, null); if (viewFactory != null) { finalResponseAction = new ViewFactoryActionAdapter(viewFactory); } else { finalResponseAction = null; } getLocalContext().getFlowArtifactFactory().createEndState(state.getId(), flow, parseActions(state.getOnEntryActions()), finalResponseAction, parseFlowOutputMapper(state.getOutputs()), parseExceptionHandlers(state.getExceptionHandlers(), null), attributes); } private ViewFactory parseViewFactory(String view, String stateId, boolean endState, BinderModel binderModel) { if (!StringUtils.hasText(view)) { if (endState) { return null; } else { view = getLocalContext().getViewFactoryCreator().getViewIdByConvention(stateId); Expression viewId = getLocalContext().getExpressionParser().parseExpression(view, new FluentParserContext().template().evaluate(RequestContext.class).expectResult(String.class)); return createViewFactory(viewId, binderModel); } } else if (view.startsWith("externalRedirect:")) { String encodedUrl = view.substring("externalRedirect:".length()); Expression externalUrl = getLocalContext().getExpressionParser().parseExpression(encodedUrl, new FluentParserContext().template().evaluate(RequestContext.class).expectResult(String.class)); return new ActionExecutingViewFactory(new ExternalRedirectAction(externalUrl)); } else if (view.startsWith("flowRedirect:")) { String flowRedirect = view.substring("flowRedirect:".length()); Expression expression = getLocalContext().getExpressionParser().parseExpression(flowRedirect, new FluentParserContext().template().evaluate(RequestContext.class).expectResult(String.class)); return new ActionExecutingViewFactory(new FlowDefinitionRedirectAction(expression)); } else { Expression viewId = getLocalContext().getExpressionParser().parseExpression(view, new FluentParserContext().template().evaluate(RequestContext.class).expectResult(String.class)); return createViewFactory(viewId, binderModel); } } private ViewFactory createViewFactory(Expression viewId, BinderModel binderModel) { BinderConfiguration binderConfiguration = createBinderConfiguration(binderModel); return getLocalContext().getViewFactoryCreator().createViewFactory(viewId, getLocalContext().getExpressionParser(), getLocalContext().getConversionService(), binderConfiguration); } private BinderConfiguration createBinderConfiguration(BinderModel binderModel) { if (binderModel != null && binderModel.getBindings() != null) { BinderConfiguration binderConfiguration = new BinderConfiguration(); List bindings = binderModel.getBindings(); for (Iterator it = bindings.iterator(); it.hasNext();) { BindingModel bindingModel = (BindingModel) it.next(); boolean required; if (StringUtils.hasText(bindingModel.getRequired())) { required = ((Boolean) fromStringTo(Boolean.class).execute(bindingModel.getRequired())) .booleanValue(); } else { required = false; } Binding binding = new Binding(bindingModel.getProperty(), bindingModel.getConverter(), required); binderConfiguration.addBinding(binding); } return binderConfiguration; } else { return null; } } private ViewVariable[] parseViewVariables(List vars) { if (vars != null && !vars.isEmpty()) { List variables = new ArrayList(vars.size()); for (Iterator it = vars.iterator(); it.hasNext();) { variables.add(parseViewVariable((VarModel) it.next())); } return (ViewVariable[]) variables.toArray(new ViewVariable[variables.size()]); } else { return new ViewVariable[0]; } } private ViewVariable parseViewVariable(VarModel var) { Class clazz = toClass(var.getClassName()); VariableValueFactory valueFactory = new BeanFactoryVariableValueFactory(clazz, getFlow() .getApplicationContext().getAutowireCapableBeanFactory()); return new ViewVariable(var.getName(), valueFactory); } private Transition[] parseIfs(List ifModels) { if (ifModels != null && !ifModels.isEmpty()) { List transitions = new ArrayList(ifModels.size()); for (Iterator it = ifModels.iterator(); it.hasNext();) { transitions.addAll(Arrays.asList(parseIf((IfModel) it.next()))); } return (Transition[]) transitions.toArray(new Transition[transitions.size()]); } else { return new Transition[0]; } } private Transition[] parseIf(IfModel ifModel) { Transition thenTransition = parseThen(ifModel); if (StringUtils.hasText(ifModel.getElse())) { Transition elseTransition = parseElse(ifModel); return new Transition[] { thenTransition, elseTransition }; } else { return new Transition[] { thenTransition }; } } private Transition parseThen(IfModel ifModel) { Expression test = getLocalContext().getExpressionParser().parseExpression(ifModel.getTest(), new FluentParserContext().evaluate(RequestContext.class).expectResult(Boolean.class)); TransitionCriteria matchingCriteria = new DefaultTransitionCriteria(test); TargetStateResolver targetStateResolver = (TargetStateResolver) fromStringTo(TargetStateResolver.class) .execute(ifModel.getThen()); return getLocalContext().getFlowArtifactFactory().createTransition(targetStateResolver, matchingCriteria, null, null); } private Transition parseElse(IfModel ifModel) { TargetStateResolver stateResolver = (TargetStateResolver) fromStringTo(TargetStateResolver.class).execute( ifModel.getElse()); return getLocalContext().getFlowArtifactFactory().createTransition(stateResolver, null, null, null); } private Expression parseSubflowExpression(String subflow) { Expression subflowId = getLocalContext().getExpressionParser().parseExpression(subflow, new FluentParserContext().template().evaluate(RequestContext.class).expectResult(String.class)); return new SubflowExpression(subflowId, getLocalContext().getFlowDefinitionLocator()); } private SubflowAttributeMapper parseSubflowAttributeMapper(SubflowStateModel state) { if (StringUtils.hasText(state.getSubflowAttributeMapper())) { String beanId = state.getSubflowAttributeMapper(); return (SubflowAttributeMapper) getLocalContext().getApplicationContext().getBean(beanId, SubflowAttributeMapper.class); } else { Mapper inputMapper = parseSubflowInputMapper(state.getInputs()); Mapper outputMapper = parseSubflowOutputMapper(state.getOutputs()); return new GenericSubflowAttributeMapper(inputMapper, outputMapper); } } private FlowExecutionExceptionHandler[] parseExceptionHandlers(List modelExceptionHandlers, List modelTransitions) { FlowExecutionExceptionHandler[] transitionExecutingHandlers = parseTransitionExecutingExceptionHandlers(modelTransitions); FlowExecutionExceptionHandler[] customHandlers = parseCustomExceptionHandlers(modelExceptionHandlers); FlowExecutionExceptionHandler[] exceptionHandlers = new FlowExecutionExceptionHandler[transitionExecutingHandlers.length + customHandlers.length]; System.arraycopy(transitionExecutingHandlers, 0, exceptionHandlers, 0, transitionExecutingHandlers.length); System.arraycopy(customHandlers, 0, exceptionHandlers, transitionExecutingHandlers.length, customHandlers.length); return exceptionHandlers; } private FlowExecutionExceptionHandler[] parseTransitionExecutingExceptionHandlers(List transitionModels) { if (transitionModels != null && !transitionModels.isEmpty()) { List exceptionHandlers = new ArrayList(transitionModels.size()); for (Iterator it = transitionModels.iterator(); it.hasNext();) { TransitionModel model = (TransitionModel) it.next(); if (StringUtils.hasText(model.getOnException())) { if (model.getSecured() != null) { throw new FlowBuilderException("Exception based transitions cannot be secured"); } exceptionHandlers.add(parseTransitionExecutingExceptionHandler(model)); } } return (FlowExecutionExceptionHandler[]) exceptionHandlers .toArray(new FlowExecutionExceptionHandler[exceptionHandlers.size()]); } else { return new FlowExecutionExceptionHandler[0]; } } private FlowExecutionExceptionHandler parseTransitionExecutingExceptionHandler(TransitionModel transition) { TransitionExecutingFlowExecutionExceptionHandler handler = new TransitionExecutingFlowExecutionExceptionHandler(); Class exceptionClass = toClass(transition.getOnException()); TargetStateResolver targetStateResolver = (TargetStateResolver) fromStringTo(TargetStateResolver.class) .execute(transition.getTo()); handler.add(exceptionClass, targetStateResolver); handler.getActionList().addAll(parseActions(transition.getActions())); return handler; } private FlowExecutionExceptionHandler[] parseCustomExceptionHandlers(List exceptionHandlerModels) { if (exceptionHandlerModels != null && !exceptionHandlerModels.isEmpty()) { List exceptionHandlers = new ArrayList(exceptionHandlerModels.size()); for (Iterator it = exceptionHandlerModels.iterator(); it.hasNext();) { exceptionHandlers.add(parseCustomExceptionHandler((ExceptionHandlerModel) it.next())); } return (FlowExecutionExceptionHandler[]) exceptionHandlers .toArray(new FlowExecutionExceptionHandler[exceptionHandlers.size()]); } else { return new FlowExecutionExceptionHandler[0]; } } private FlowExecutionExceptionHandler parseCustomExceptionHandler(ExceptionHandlerModel exceptionHandler) { return (FlowExecutionExceptionHandler) getLocalContext().getApplicationContext().getBean( exceptionHandler.getBean(), FlowExecutionExceptionHandler.class); } private Transition[] parseTransitions(List transitionModels) { if (transitionModels != null && !transitionModels.isEmpty()) { List transitions = new ArrayList(transitionModels.size()); if (transitionModels != null) { for (Iterator it = transitionModels.iterator(); it.hasNext();) { TransitionModel transition = (TransitionModel) it.next(); if (!StringUtils.hasText(transition.getOnException())) { transitions.add(parseTransition(transition)); } } } return (Transition[]) transitions.toArray(new Transition[transitions.size()]); } else { return new Transition[0]; } } private Transition parseTransition(TransitionModel transition) { TransitionCriteria matchingCriteria = (TransitionCriteria) fromStringTo(TransitionCriteria.class).execute( transition.getOn()); TargetStateResolver stateResolver = (TargetStateResolver) fromStringTo(TargetStateResolver.class).execute( transition.getTo()); TransitionCriteria executionCriteria = TransitionCriteriaChain.criteriaChainFor(parseActions(transition .getActions())); MutableAttributeMap attributes = parseMetaAttributes(transition.getAttributes()); if (StringUtils.hasText(transition.getBind())) { attributes.put("bind", fromStringTo(Boolean.class).execute(transition.getBind())); } if (StringUtils.hasText(transition.getValidate())) { attributes.put("validate", fromStringTo(Boolean.class).execute(transition.getValidate())); } if (StringUtils.hasText(transition.getHistory())) { attributes.put("history", fromStringTo(History.class).execute(transition.getHistory())); } parseAndPutSecured(transition.getSecured(), attributes); return getLocalContext().getFlowArtifactFactory().createTransition(stateResolver, matchingCriteria, executionCriteria, attributes); } private Action[] parseActions(List actionModels) { if (actionModels != null && !actionModels.isEmpty()) { List actions = new ArrayList(actionModels.size()); for (Iterator it = actionModels.iterator(); it.hasNext();) { AbstractActionModel actionModel = (AbstractActionModel) it.next(); Action action; if (actionModel instanceof EvaluateModel) { action = parseEvaluateAction((EvaluateModel) actionModel); } else if (actionModel instanceof RenderModel) { action = parseRenderAction((RenderModel) actionModel); } else if (actionModel instanceof SetModel) { action = parseSetAction((SetModel) actionModel); } else { action = null; } if (action != null) { AnnotatedAction annotatedAction = new AnnotatedAction(action); annotatedAction.getAttributes().putAll(parseMetaAttributes(actionModel.getAttributes())); actions.add(annotatedAction); } } return (Action[]) actions.toArray(new Action[actions.size()]); } else { return new Action[0]; } } private Action parseEvaluateAction(EvaluateModel evaluate) { String expressionString = evaluate.getExpression(); Expression expression = getLocalContext().getExpressionParser().parseExpression(expressionString, new FluentParserContext().evaluate(RequestContext.class)); return new EvaluateAction(expression, parseEvaluationActionResultExposer(evaluate)); } private ActionResultExposer parseEvaluationActionResultExposer(EvaluateModel evaluate) { if (StringUtils.hasText(evaluate.getResult())) { Expression resultExpression = getLocalContext().getExpressionParser().parseExpression(evaluate.getResult(), new FluentParserContext().evaluate(RequestContext.class)); Class expectedResultType = null; if (StringUtils.hasText(evaluate.getResultType())) { expectedResultType = toClass(evaluate.getResultType()); } return new ActionResultExposer(resultExpression, expectedResultType, getLocalContext() .getConversionService()); } else { return null; } } private Action parseRenderAction(RenderModel render) { String[] fragmentExpressionStrings = StringUtils.commaDelimitedListToStringArray(render.getFragments()); fragmentExpressionStrings = StringUtils.trimArrayElements(fragmentExpressionStrings); ParserContext context = new FluentParserContext().template().evaluate(RequestContext.class).expectResult( String.class); Expression[] fragments = new Expression[fragmentExpressionStrings.length]; for (int i = 0; i < fragmentExpressionStrings.length; i++) { String fragment = fragmentExpressionStrings[i]; fragments[i] = getLocalContext().getExpressionParser().parseExpression(fragment, context); } return new RenderAction(fragments); } private Action parseSetAction(SetModel set) { Expression nameExpression = getLocalContext().getExpressionParser().parseExpression(set.getName(), new FluentParserContext().evaluate(RequestContext.class)); Expression valueExpression = getLocalContext().getExpressionParser().parseExpression(set.getValue(), new FluentParserContext().evaluate(RequestContext.class)); Class expectedType = null; if (StringUtils.hasText(set.getType())) { expectedType = toClass(set.getType()); } return new SetAction(nameExpression, valueExpression, expectedType, getLocalContext().getConversionService()); } private MutableAttributeMap parseMetaAttributes(List attributeModels) { if (attributeModels != null && !attributeModels.isEmpty()) { LocalAttributeMap attributes = new LocalAttributeMap(); for (Iterator it = attributeModels.iterator(); it.hasNext();) { parseAndPutMetaAttribute((AttributeModel) it.next(), attributes); } return attributes; } else { return new LocalAttributeMap(); } } private void parseAndPutMetaAttribute(AttributeModel attribute, MutableAttributeMap attributes) { String name = attribute.getName(); String value = attribute.getValue(); attributes.put(name, parseAttributeValueIfNecessary(attribute, value)); } private Object parseAttributeValueIfNecessary(AttributeModel attribute, String stringValue) { if (StringUtils.hasText(attribute.getType())) { Class targetClass = toClass(attribute.getType()); return fromStringTo(targetClass).execute(stringValue); } else { return stringValue; } } private void parseAndPutPersistenceContext(PersistenceContextModel persistenceContext, MutableAttributeMap attributes) { if (persistenceContext != null) { attributes.put("persistenceContext", Boolean.TRUE); } } private void parseAndPutSecured(SecuredModel secured, MutableAttributeMap attributes) { if (secured != null) { SecurityRule rule = new SecurityRule(); rule.setAttributes(SecurityRule.commaDelimitedListToSecurityAttributes(secured.getAttributes())); String comparisonType = secured.getMatch(); if ("any".equals(comparisonType)) { rule.setComparisonType(SecurityRule.COMPARISON_ANY); } else if ("all".equals(comparisonType)) { rule.setComparisonType(SecurityRule.COMPARISON_ALL); } else { // default to any rule.setComparisonType(SecurityRule.COMPARISON_ANY); } attributes.put(SecurityRule.SECURITY_ATTRIBUTE_NAME, rule); } } private ConversionExecutor fromStringTo(Class targetType) throws ConversionExecutionException { return getLocalContext().getConversionService().getConversionExecutor(String.class, targetType); } private Class toClass(String name) { Class clazz = getLocalContext().getConversionService().getClassForAlias(name); if (clazz != null) { return clazz; } else { try { ClassLoader classLoader = getLocalContext().getApplicationContext().getClassLoader(); return ClassUtils.forName(name, classLoader); } catch (ClassNotFoundException e) { throw new IllegalArgumentException("Unable to load class '" + name + "'"); } } } public String toString() { return new ToStringCreator(this).append("flowModelResource", flowModelHolder.getFlowModelResource()).toString(); } }././@LongLink0000000000000000000000000000024500000000000011566 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframework/webflow/engine/builder/model/FlowRelativeResourceLoader.javalibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframew0000644000000000000000000000367211360615640027760 0ustar /* * Copyright 2004-2007 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.springframework.webflow.engine.builder.model; import java.io.IOException; import org.springframework.core.io.ClassPathResource; import org.springframework.core.io.Resource; import org.springframework.core.io.ResourceLoader; /** * A resource loader that loads other resources relative to a Flow definition resource. Allows for easy loading of * flow-relative resources using the standard {@link ResourceLoader} interface. * * @author Keith Donald */ class FlowRelativeResourceLoader implements ResourceLoader { private Resource flowResource; public FlowRelativeResourceLoader(Resource resource) { this.flowResource = resource; } public ClassLoader getClassLoader() { return flowResource.getClass().getClassLoader(); } public Resource getResource(String location) { if (location.startsWith(CLASSPATH_URL_PREFIX)) { return new ClassPathResource(location.substring(CLASSPATH_URL_PREFIX.length()), getClassLoader()); } else { return createFlowRelativeResource(location); } } private Resource createFlowRelativeResource(String location) { try { return flowResource.createRelative(location); } catch (IOException e) { IllegalArgumentException iae = new IllegalArgumentException( "Unable to access a flow relative resource at location '" + location + "'"); iae.initCause(e); throw iae; } } }././@LongLink0000000000000000000000000000022200000000000011561 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframework/webflow/engine/builder/model/package.htmllibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframew0000644000000000000000000000071011360615634027751 0ustar

Contains a FlowBuilder that builds {@link org.springframework.webflow.engine.Flow} instances from a {@link org.springframework.webflow.engine.model.FlowModel}.

A FLowModel is a generic Java-based configuration model of a Flow, independent of any external representation such as an XML file. Therefore, the FlowBuilder in this package may engineer Flows from models produced from different representations.

././@LongLink0000000000000000000000000000023400000000000011564 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframework/webflow/engine/builder/model/SubflowExpression.javalibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframew0000644000000000000000000000322611360615640027753 0ustar /* * Copyright 2004-2007 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.springframework.webflow.engine.builder.model; import org.springframework.binding.expression.EvaluationException; import org.springframework.binding.expression.Expression; import org.springframework.webflow.definition.registry.FlowDefinitionLocator; class SubflowExpression implements Expression { private Expression subflowId; private FlowDefinitionLocator flowDefinitionLocator; public SubflowExpression(Expression subflowId, FlowDefinitionLocator flowDefinitionLocator) { this.subflowId = subflowId; this.flowDefinitionLocator = flowDefinitionLocator; } public Object getValue(Object context) throws EvaluationException { String subflowId = (String) this.subflowId.getValue(context); return flowDefinitionLocator.getFlowDefinition(subflowId); } public void setValue(Object context, Object value) throws EvaluationException { throw new UnsupportedOperationException("Cannot set a subflow expression"); } public Class getValueType(Object context) { return null; } public String getExpressionString() { return null; } }././@LongLink0000000000000000000000000000022100000000000011560 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframework/webflow/engine/VariableValueFactory.javalibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframew0000644000000000000000000000260711360615632027756 0ustar /* * Copyright 2004-2008 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.springframework.webflow.engine; import org.springframework.webflow.execution.RequestContext; /** * A strategy that encapsulates the source of a flow variable value. * @author Keith Donald */ public interface VariableValueFactory { /** * Creates the variable's initial value. * @param context the currently executing flow request * @return the value */ public Object createInitialValue(RequestContext context); /** * Restore any references the variable's value needs to other objects. Such references may have been lost during * deserialization, for example, and need to be restored. * @param value the current variable value * @param context the currently executing flow request */ public void restoreReferences(Object value, RequestContext context); } ././@LongLink0000000000000000000000000000021000000000000011556 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframework/webflow/engine/ActionState.javalibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframew0000644000000000000000000001613511360615632027757 0ustar /* * Copyright 2004-2008 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.springframework.webflow.engine; import java.util.Iterator; import org.springframework.core.style.StylerUtils; import org.springframework.core.style.ToStringCreator; import org.springframework.webflow.execution.Action; import org.springframework.webflow.execution.ActionExecutor; import org.springframework.webflow.execution.Event; import org.springframework.webflow.execution.FlowExecutionException; import org.springframework.webflow.execution.RequestContext; /** * A transitionable state that executes one or more actions when entered. When the action(s) are executed this state * responds to their result(s) to decide what state to transition to next. *

* If more than one action is configured they are executed in an ordered chain until one returns a result event that * matches a state transition out of this state. This is a form of the Chain of Responsibility (CoR) pattern. *

* The result of an action's execution is typically the criteria for a transition out of this state. Additional * information in the current {@link RequestContext} may also be tested as part of custom transitional criteria, * allowing for sophisticated transition expressions that reason on contextual state. * * @see org.springframework.webflow.execution.Action * * @author Keith Donald * @author Erwin Vervaet */ public class ActionState extends TransitionableState { /** * The list of actions to be executed when this state is entered. */ private ActionList actionList = new ActionList(); /** * Creates a new action state. * @param flow the owning flow * @param id the state identifier (must be unique to the flow) * @throws IllegalArgumentException when this state cannot be added to given flow, e.g. beasue the id is not unique * @see #getActionList() */ public ActionState(Flow flow, String id) throws IllegalArgumentException { super(flow, id); } /** * Returns the list of actions executable by this action state. The returned list is mutable. * @return the state action list */ public ActionList getActionList() { return actionList; } /* * Overrides getRequiredTransition(RequestContext) to throw a local NoMatchingActionResultTransitionException if a * transition on the occurrence of an action result event cannot be matched. Used to facilitate an action invocation * chain.

Note that we cannot catch NoMatchingTransitionException since that could lead to unwanted situations * where we're catching an exception that's generated by another state, e.g. because of a configuration error! */ public Transition getRequiredTransition(RequestContext context) throws NoMatchingTransitionException { Transition transition = getTransitionSet().getTransition(context); if (transition == null) { throw new NoMatchingActionResultTransitionException(this, context.getCurrentEvent()); } return transition; } /** * Specialization of State's doEnter template method that executes behavior specific to this state * type in polymorphic fashion. *

* This implementation iterates over each configured Action instance and executes it. Execution * continues until an Action returns a result event that matches a transition in this request * context, or the set of all actions is exhausted. * @param context the control context for the currently executing flow, used by this state to manipulate the flow * execution * @throws FlowExecutionException if an exception occurs in this state */ protected void doEnter(RequestControlContext context) throws FlowExecutionException { int executionCount = 0; String[] eventIds = new String[actionList.size()]; Iterator it = actionList.iterator(); while (it.hasNext()) { Action action = (Action) it.next(); Event event = ActionExecutor.execute(action, context); if (event != null) { eventIds[executionCount] = event.getId(); try { context.handleEvent(event); return; } catch (NoMatchingActionResultTransitionException e) { if (logger.isDebugEnabled()) { logger.debug("Action execution [" + (executionCount + 1) + "] resulted in no matching transition on event '" + event.getId() + "'" + (it.hasNext() ? ": proceeding to the next action in the list" : ": action list exhausted")); } } } else { if (logger.isDebugEnabled()) { logger .debug("Action execution [" + (executionCount + 1) + "] returned a [null] event" + (it.hasNext() ? ": proceeding to the next action in the list" : ": action list exhausted")); } eventIds[executionCount] = null; } executionCount++; } if (executionCount > 0) { throw new NoMatchingTransitionException(getFlow().getId(), getId(), context.getCurrentEvent(), "No transition was matched on the event(s) signaled by the [" + executionCount + "] action(s) that executed in this action state '" + getId() + "' of flow '" + getFlow().getId() + "'; transitions must be defined to handle action result outcomes -- " + "possible flow configuration error? Note: the eventIds signaled were: '" + StylerUtils.style(eventIds) + "', while the supported set of transitional criteria for this action state is '" + StylerUtils.style(getTransitionSet().getTransitionCriterias()) + "'"); } else { throw new IllegalStateException( "No actions were executed, thus I cannot execute any state transition " + "-- programmer configuration error; make sure you add at least one action to this state's action list"); } } protected void appendToString(ToStringCreator creator) { creator.append("actionList", actionList); super.appendToString(creator); } /** * Local "no transition found" exception used to report that an action result could not be mapped to a state * transition. * @author Keith Donald * @author Erwin Vervaet */ private static class NoMatchingActionResultTransitionException extends NoMatchingTransitionException { /** * Creates a new exception. * @param state the action state * @param resultEvent the action result event */ public NoMatchingActionResultTransitionException(ActionState state, Event resultEvent) { super(state.getFlow().getId(), state.getId(), resultEvent, "Cannot find a transition matching an action result event; continuing with next action..."); } } }././@LongLink0000000000000000000000000000022300000000000011562 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframework/webflow/engine/ViewRenderingException.javalibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframew0000644000000000000000000000262511360615644027761 0ustar /* * Copyright 2004-2008 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.springframework.webflow.engine; import org.springframework.webflow.execution.FlowExecutionException; import org.springframework.webflow.execution.View; /** * Thrown if a IO exception was thrown during view rendering. * * @author Keith Donald */ public class ViewRenderingException extends FlowExecutionException { /** * Create a new action execution exception. * @param flowId the current flow * @param stateId the current state (may be null) * @param view the view that generated an unrecoverable exception * @param cause the underlying cause */ public ViewRenderingException(String flowId, String stateId, View view, Throwable cause) { super(flowId, stateId, "Exception thrown rendering " + view + " in state '" + stateId + "' of flow '" + flowId + "'", cause); } }././@LongLink0000000000000000000000000000021100000000000011557 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframework/webflow/engine/SubflowState.javalibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframew0000644000000000000000000001171111360615642027753 0ustar /* * Copyright 2004-2008 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.springframework.webflow.engine; import org.springframework.binding.expression.Expression; import org.springframework.core.style.ToStringCreator; import org.springframework.util.Assert; import org.springframework.webflow.core.collection.AttributeMap; import org.springframework.webflow.core.collection.LocalAttributeMap; import org.springframework.webflow.core.collection.MutableAttributeMap; import org.springframework.webflow.execution.FlowExecutionException; /** * A transitionable state that spawns a subflow when executed. When the subflow this state spawns ends, the ending * result is used as grounds for a state transition out of this state. *

* A subflow state may be configured to map input data from its flow -- acting as the parent flow -- down to the subflow * when the subflow is spawned. In addition, output data produced by the subflow may be mapped up to the parent flow * when the subflow ends and the parent flow resumes. See the {@link SubflowAttributeMapper} interface definition for * more information on how to do this. The logic for ending a subflow is located in the {@link EndState} implementation. * * @see org.springframework.webflow.engine.SubflowAttributeMapper * @see org.springframework.webflow.engine.EndState * * @author Keith Donald * @author Erwin Vervaet */ public class SubflowState extends TransitionableState { /** * The subflow that should be spawned when this subflow state is entered. */ private Expression subflow; /** * The attribute mapper that should map attributes from the parent flow down to the spawned subflow and visa versa. */ private SubflowAttributeMapper subflowAttributeMapper; /** * Create a new subflow state. * @param flow the owning flow * @param id the state identifier (must be unique to the flow) * @param subflow the subflow to spawn * @throws IllegalArgumentException when this state cannot be added to given flow, e.g. because the id is not unique * @see #setAttributeMapper(SubflowAttributeMapper) */ public SubflowState(Flow flow, String id, Expression subflow) throws IllegalArgumentException { super(flow, id); setSubflow(subflow); } /** * Set the subflow this state will call. */ private void setSubflow(Expression subflow) { Assert.notNull(subflow, "A subflow state must have a subflow; the subflow is required"); this.subflow = subflow; } /** * Set the attribute mapper used to map model data between the parent and child flow. */ public void setAttributeMapper(SubflowAttributeMapper attributeMapper) { this.subflowAttributeMapper = attributeMapper; } /** * Specialization of State's doEnter template method that executes behaviour specific to this state * type in polymorphic fashion. *

* Entering this state, creates the subflow input map and spawns the subflow in the current flow execution. * @param context the control context for the currently executing flow, used by this state to manipulate the flow * execution * @throws FlowExecutionException if an exception occurs in this state */ protected void doEnter(RequestControlContext context) throws FlowExecutionException { MutableAttributeMap flowInput; if (subflowAttributeMapper != null) { flowInput = subflowAttributeMapper.createSubflowInput(context); } else { flowInput = new LocalAttributeMap(); } Flow subflow = (Flow) this.subflow.getValue(context); if (logger.isDebugEnabled()) { logger.debug("Calling subflow '" + subflow.getId() + "' with input " + flowInput); } context.start(subflow, flowInput); } /** * Called on completion of the subflow to handle the subflow result event as determined by the end state reached by * the subflow. */ public boolean handleEvent(RequestControlContext context) { if (subflowAttributeMapper != null) { AttributeMap subflowOutput = context.getCurrentEvent().getAttributes(); if (logger.isDebugEnabled()) { logger.debug("Mapping subflow output " + subflowOutput); } subflowAttributeMapper.mapSubflowOutput(subflowOutput, context); } return super.handleEvent(context); } protected void appendToString(ToStringCreator creator) { creator.append("subflow", subflow).append("subflowAttributeMapper", subflowAttributeMapper); super.appendToString(creator); } }././@LongLink0000000000000000000000000000021100000000000011557 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframework/webflow/engine/FlowVariable.javalibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframew0000644000000000000000000000641511360615642027760 0ustar /* * Copyright 2004-2008 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.springframework.webflow.engine; import org.springframework.core.style.ToStringCreator; import org.springframework.util.Assert; import org.springframework.webflow.core.AnnotatedObject; import org.springframework.webflow.execution.RequestContext; /** * A value object that defines a specification for a flow variable. Such a variable is allocated when a flow starts and * destroyed when that flow ends. This class encapsulates information about the variable and the behavior necessary to * allocate the variable instance in flow scope. * * @author Keith Donald */ public class FlowVariable extends AnnotatedObject { /** * The variable name. */ private String name; /** * The value factory that provides this variable's value. */ private VariableValueFactory valueFactory; /** * Creates a new flow variable. * @param name the variable name */ public FlowVariable(String name, VariableValueFactory valueFactory) { Assert.hasText(name, "The variable name is required"); Assert.notNull(valueFactory, "The variable value factory is required"); this.name = name; this.valueFactory = valueFactory; } /** * Returns the name of this variable. */ public String getName() { return name; } // name and scope based equality public boolean equals(Object o) { if (!(o instanceof FlowVariable)) { return false; } FlowVariable other = (FlowVariable) o; return name.equals(other.name) && valueFactory.equals(other.valueFactory); } public int hashCode() { return name.hashCode() + valueFactory.hashCode(); } /** * Creates this flow variable. This method allocates the variable's value in the correct flow scope. * @param context the executing flow */ public void create(RequestContext context) { Object value = valueFactory.createInitialValue(context); context.getFlowScope().put(name, value); } /** * Restores this variable's dependencies. This method asks the variable's value factory to restore any references * the variable has to transient objects. * @param context the executing flow */ public void restore(RequestContext context) { Object value = context.getFlowScope().get(name); valueFactory.restoreReferences(value, context); } /** * Destroys this flow variable. This method removes the variable's value in the correct flow scope. * @param context the executing flow */ public Object destroy(RequestContext context) { return context.getFlowScope().remove(name); } public String toString() { return new ToStringCreator(this).append("name", name).append("valueFactory", valueFactory).toString(); } }././@LongLink0000000000000000000000000000020700000000000011564 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframework/webflow/engine/Transition.javalibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframew0000644000000000000000000002313111360615640027750 0ustar /* * Copyright 2004-2008 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.springframework.webflow.engine; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.springframework.core.style.ToStringCreator; import org.springframework.util.Assert; import org.springframework.webflow.core.AnnotatedObject; import org.springframework.webflow.definition.TransitionDefinition; import org.springframework.webflow.execution.Event; import org.springframework.webflow.execution.FlowExecutionException; import org.springframework.webflow.execution.RequestContext; /** * A path from one {@link TransitionableState state} to another {@link State state}. *

* When executed a transition takes a flow execution from its current state, called the source state, to another * state, called the target state. A transition may become eligible for execution on the occurrence of an * {@link Event} from within a transitionable source state. *

* When an event occurs within this transition's source TransitionableState the determination of the * eligibility of this transition is made by a TransitionCriteria object called the matching criteria. * If the matching criteria returns true this transition is marked eligible for execution for that event. *

* Determination as to whether an eligible transition should be allowed to execute is made by a * TransitionCriteria object called the execution criteria. If the execution criteria test fails * this transition will roll back and reenter its source state. If the execution criteria test succeeds this * transition will execute and take the flow to the transition's target state. *

* The target state of this transition is typically specified at configuration time in a static manner. If the target * state of this transition needs to be calculated in a dynamic fashion at runtime configure a * {@link TargetStateResolver} that supports such calculations. * * @see TransitionableState * @see TransitionCriteria * @see TargetStateResolver * * @author Keith Donald * @author Erwin Vervaet */ public class Transition extends AnnotatedObject implements TransitionDefinition { /** * Logger, for use in subclasses. */ protected final Log logger = LogFactory.getLog(Transition.class); /** * The criteria that determine whether or not this transition matches as eligible for execution when an event occurs * in the source state. */ private TransitionCriteria matchingCriteria; /** * The criteria that determine whether or not this transition, once matched, should complete execution or should * roll back. */ private TransitionCriteria executionCriteria = WildcardTransitionCriteria.INSTANCE; /** * The resolver responsible for calculating the target state of this transition. */ private TargetStateResolver targetStateResolver; /** * Create a new transition that always matches and always executes, but its execution does nothing by default. * @see #setMatchingCriteria(TransitionCriteria) * @see #setExecutionCriteria(TransitionCriteria) * @see #setTargetStateResolver(TargetStateResolver) */ public Transition() { this(WildcardTransitionCriteria.INSTANCE, null); } /** * Create a new transition that always matches and always executes, transitioning to the target state calculated by * the provided targetStateResolver. * @param targetStateResolver the resolver of the target state of this transition * @see #setMatchingCriteria(TransitionCriteria) * @see #setExecutionCriteria(TransitionCriteria) */ public Transition(TargetStateResolver targetStateResolver) { this(WildcardTransitionCriteria.INSTANCE, targetStateResolver); } /** * Create a new transition that matches on the specified criteria, transitioning to the target state calculated by * the provided targetStateResolver. * @param matchingCriteria the criteria for matching this transition * @param targetStateResolver the resolver of the target state of this transition * @see #setExecutionCriteria(TransitionCriteria) */ public Transition(TransitionCriteria matchingCriteria, TargetStateResolver targetStateResolver) { setMatchingCriteria(matchingCriteria); setTargetStateResolver(targetStateResolver); } // implementing transition definition public String getId() { return matchingCriteria.toString(); } public String getTargetStateId() { if (targetStateResolver != null) { return targetStateResolver.toString(); } else { return null; } } /** * Returns the criteria that determine whether or not this transition matches as eligible for execution. * @return the transition matching criteria */ public TransitionCriteria getMatchingCriteria() { return matchingCriteria; } /** * Set the criteria that determine whether or not this transition matches as eligible for execution. * @param matchingCriteria the transition matching criteria */ public void setMatchingCriteria(TransitionCriteria matchingCriteria) { Assert.notNull(matchingCriteria, "The criteria for matching this transition is required"); this.matchingCriteria = matchingCriteria; } /** * Returns the criteria that determine whether or not this transition, once matched, should complete execution or * should roll back. * @return the transition execution criteria */ public TransitionCriteria getExecutionCriteria() { return executionCriteria; } /** * Set the criteria that determine whether or not this transition, once matched, should complete execution or should * roll back. * @param executionCriteria the transition execution criteria */ public void setExecutionCriteria(TransitionCriteria executionCriteria) { this.executionCriteria = executionCriteria; } /** * Returns this transition's target state resolver. */ public TargetStateResolver getTargetStateResolver() { return targetStateResolver; } /** * Set this transition's target state resolver, to calculate what state to transition to when this transition is * executed. * @param targetStateResolver the target state resolver */ public void setTargetStateResolver(TargetStateResolver targetStateResolver) { this.targetStateResolver = targetStateResolver; } /** * Checks if this transition is eligible for execution given the state of the provided flow execution request * context. * @param context the flow execution request context * @return true if this transition should execute, false otherwise */ public boolean matches(RequestContext context) { return matchingCriteria.test(context); } /** * Checks if this transition can complete its execution or should be rolled back, given the state of the flow * execution request context. * @param context the flow execution request context * @return true if this transition can complete execution, false if it should roll back */ public boolean canExecute(RequestContext context) { if (executionCriteria != null) { return executionCriteria.test(context); } else { return false; } } /** * Execute this state transition. Should only be called if the {@link #matches(RequestContext)} method returns true * for the given context. * @param sourceState the source state to transition from, may be null if the current state is null * @param context the flow execution control context * @return a boolean indicating if executing this transition caused the current state to exit and a new state to * enter * @throws FlowExecutionException when transition execution fails */ public boolean execute(State sourceState, RequestControlContext context) throws FlowExecutionException { if (canExecute(context)) { if (logger.isDebugEnabled()) { logger.debug("Executing " + this); } context.setCurrentTransition(this); if (targetStateResolver != null) { State targetState = targetStateResolver.resolveTargetState(this, sourceState, context); if (targetState != null) { if (sourceState != null) { if (logger.isDebugEnabled()) { logger.debug("Exiting state '" + sourceState.getId() + "'"); } if (sourceState instanceof TransitionableState) { ((TransitionableState) sourceState).exit(context); } } targetState.enter(context); if (logger.isDebugEnabled()) { if (context.getFlowExecutionContext().isActive()) { logger.debug("Completed transition execution. As a result, the new state is '" + context.getCurrentState().getId() + "' in flow '" + context.getActiveFlow().getId() + "'"); } else { logger.debug("Completed transition execution. As a result, the flow execution has ended"); } } return true; } } } return false; } public String toString() { return new ToStringCreator(this).append("on", getMatchingCriteria()).append("to", getTargetStateResolver()) .toString(); } }././@LongLink0000000000000000000000000000017500000000000011570 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframework/webflow/engine/impl/libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframew0000755000000000000000000000000011360615646027754 5ustar ././@LongLink0000000000000000000000000000023300000000000011563 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframework/webflow/engine/impl/RequestControlContextImpl.javalibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframew0000644000000000000000000001742211360615634027761 0ustar /* * Copyright 2004-2008 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.springframework.webflow.engine.impl; import org.springframework.binding.message.MessageContext; import org.springframework.core.style.ToStringCreator; import org.springframework.webflow.context.ExternalContext; import org.springframework.webflow.core.collection.LocalAttributeMap; import org.springframework.webflow.core.collection.MutableAttributeMap; import org.springframework.webflow.core.collection.ParameterMap; import org.springframework.webflow.definition.FlowDefinition; import org.springframework.webflow.definition.StateDefinition; import org.springframework.webflow.definition.TransitionDefinition; import org.springframework.webflow.engine.Flow; import org.springframework.webflow.engine.RequestControlContext; import org.springframework.webflow.engine.State; import org.springframework.webflow.engine.Transition; import org.springframework.webflow.execution.Event; import org.springframework.webflow.execution.FlowExecutionContext; import org.springframework.webflow.execution.FlowExecutionException; import org.springframework.webflow.execution.FlowExecutionKey; import org.springframework.webflow.execution.View; /** * Default request control context implementation used internally by the web flow system. This class is closely coupled * with FlowExecutionImpl and FlowSessionImpl. The three classes work together to form a * complete flow execution implementation based on a finite state machine. * * @see FlowExecutionImpl * * @author Keith Donald * @author Erwin Vervaet */ class RequestControlContextImpl implements RequestControlContext { /** * The owning flow execution carrying out this request. */ private FlowExecutionImpl flowExecution; /** * A source context for the caller who initiated this request. */ private ExternalContext externalContext; /** * A source context for messages to record during this flow execution request. */ private MessageContext messageContext; /** * The request scope data map. Never null, initially empty. */ private LocalAttributeMap requestScope = new LocalAttributeMap(); /** * Holder for contextual properties describing the currently executing request; never null, initially empty. */ private LocalAttributeMap attributes = new LocalAttributeMap(); /** * The current event being processed by this flow; initially null. */ private Event currentEvent; /** * The last transition that executed in this request context; initially null. */ private Transition currentTransition; /** * The current view associated with this request context; initially null. */ private View currentView; /** * Create a new request context. * @param flowExecution the owning flow execution * @param externalContext the external context that originated the flow execution request * @param messageContext the message context for recording status or validation messages during the execution of * this request */ public RequestControlContextImpl(FlowExecutionImpl flowExecution, ExternalContext externalContext, MessageContext messageContext) { this.flowExecution = flowExecution; this.externalContext = externalContext; this.messageContext = messageContext; } // implementing RequestContext public FlowDefinition getActiveFlow() { return flowExecution.getActiveSession().getDefinition(); } public StateDefinition getCurrentState() { return flowExecution.getActiveSession().getState(); } public TransitionDefinition getMatchingTransition(String eventId) throws IllegalStateException { return flowExecution.getMatchingTransition(eventId); } public MutableAttributeMap getRequestScope() { return requestScope; } public MutableAttributeMap getFlashScope() { return flowExecution.getFlashScope(); } public boolean inViewState() { return flowExecution.isActive() && getCurrentState() != null && getCurrentState().isViewState(); } public MutableAttributeMap getViewScope() throws IllegalStateException { return flowExecution.getActiveSession().getViewScope(); } public MutableAttributeMap getFlowScope() { return flowExecution.getActiveSession().getScope(); } public MutableAttributeMap getConversationScope() { return flowExecution.getConversationScope(); } public ParameterMap getRequestParameters() { return externalContext.getRequestParameterMap(); } public ExternalContext getExternalContext() { return externalContext; } public MessageContext getMessageContext() { return messageContext; } public FlowExecutionContext getFlowExecutionContext() { return flowExecution; } public Event getCurrentEvent() { return currentEvent; } public TransitionDefinition getCurrentTransition() { return currentTransition; } public View getCurrentView() { return currentView; } public MutableAttributeMap getAttributes() { return attributes; } // implementing RequestControlContext public String getFlowExecutionUrl() { String key = flowExecution.getKey() != null ? flowExecution.getKey().toString() : null; if (key != null) { return externalContext.getFlowExecutionUrl(flowExecution.getDefinition().getId(), key); } else { return null; } } public void sendFlowExecutionRedirect() { externalContext.requestFlowExecutionRedirect(); } public void setCurrentState(State state) { flowExecution.setCurrentState(state, this); } public FlowExecutionKey assignFlowExecutionKey() { return flowExecution.assignKey(); } public void setCurrentView(View currentView) { this.currentView = currentView; } public void viewRendering(View view) { flowExecution.viewRendering(view, this); } public void viewRendered(View view) { flowExecution.viewRendered(view, this); } public boolean handleEvent(Event event) throws FlowExecutionException { this.currentEvent = event; return flowExecution.handleEvent(event, this); } public boolean execute(Transition transition) { return flowExecution.execute(transition, this); } public void setCurrentTransition(Transition transition) { this.currentTransition = transition; } public void updateCurrentFlowExecutionSnapshot() { flowExecution.updateCurrentFlowExecutionSnapshot(); } public void removeCurrentFlowExecutionSnapshot() { flowExecution.removeCurrentFlowExecutionSnapshot(); } public void removeAllFlowExecutionSnapshots() { flowExecution.removeAllFlowExecutionSnapshots(); } public void start(Flow flow, MutableAttributeMap input) throws FlowExecutionException { flowExecution.start(flow, input, this); } public void endActiveFlowSession(String outcome, MutableAttributeMap output) throws IllegalStateException { flowExecution.endActiveFlowSession(outcome, output, this); } public boolean getRedirectOnPause() { if (!getExternalContext().isResponseAllowed()) { return true; } Boolean redirectOnPause = flowExecution.getAttributes().getBoolean("alwaysRedirectOnPause"); return redirectOnPause != null ? redirectOnPause.booleanValue() : false; } public String toString() { return new ToStringCreator(this).append("externalContext", externalContext) .append("currentEvent", currentEvent).append("requestScope", requestScope).append("attributes", attributes).append("messageContext", messageContext).append("flowExecution", flowExecution) .toString(); } }././@LongLink0000000000000000000000000000023200000000000011562 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframework/webflow/engine/impl/FlowExecutionImplFactory.javalibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframew0000644000000000000000000001525511360615646027766 0ustar /* * Copyright 2004-2008 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.springframework.webflow.engine.impl; import java.util.Iterator; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.springframework.util.Assert; import org.springframework.webflow.core.collection.AttributeMap; import org.springframework.webflow.core.collection.CollectionUtils; import org.springframework.webflow.core.collection.LocalAttributeMap; import org.springframework.webflow.core.collection.MutableAttributeMap; import org.springframework.webflow.definition.FlowDefinition; import org.springframework.webflow.definition.registry.FlowDefinitionLocator; import org.springframework.webflow.engine.Flow; import org.springframework.webflow.execution.FlowExecution; import org.springframework.webflow.execution.FlowExecutionFactory; import org.springframework.webflow.execution.FlowExecutionKey; import org.springframework.webflow.execution.FlowExecutionKeyFactory; import org.springframework.webflow.execution.factory.FlowExecutionListenerLoader; import org.springframework.webflow.execution.factory.StaticFlowExecutionListenerLoader; /** * A factory for instances of the {@link FlowExecutionImpl default flow execution} implementation. * @author Keith Donald */ public class FlowExecutionImplFactory implements FlowExecutionFactory { private static final Log logger = LogFactory.getLog(FlowExecutionImplFactory.class); private AttributeMap executionAttributes = CollectionUtils.EMPTY_ATTRIBUTE_MAP; private FlowExecutionListenerLoader executionListenerLoader = StaticFlowExecutionListenerLoader.EMPTY_INSTANCE; private FlowExecutionKeyFactory executionKeyFactory = new SimpleFlowExecutionKeyFactory(); /** * Sets the attributes to apply to flow executions created by this factory. Execution attributes may affect flow * execution behavior. * @param executionAttributes flow execution system attributes */ public void setExecutionAttributes(AttributeMap executionAttributes) { this.executionAttributes = executionAttributes; } /** * Sets the strategy for loading listeners that should observe executions of a flow definition. Allows full control * over what listeners should apply for executions of a flow definition. */ public void setExecutionListenerLoader(FlowExecutionListenerLoader executionListenerLoader) { this.executionListenerLoader = executionListenerLoader; } /** * Sets the strategy for generating flow execution keys for persistent flow executions. */ public void setExecutionKeyFactory(FlowExecutionKeyFactory executionKeyFactory) { this.executionKeyFactory = executionKeyFactory; } public FlowExecution createFlowExecution(FlowDefinition flowDefinition) { Assert.isInstanceOf(Flow.class, flowDefinition, "FlowDefinition is of the wrong type: "); if (logger.isDebugEnabled()) { logger.debug("Creating new execution of '" + flowDefinition.getId() + "'"); } FlowExecutionImpl execution = new FlowExecutionImpl((Flow) flowDefinition); execution.setAttributes(executionAttributes); execution.setListeners(executionListenerLoader.getListeners(execution.getDefinition())); execution.setKeyFactory(executionKeyFactory); return execution; } public FlowExecution restoreFlowExecution(FlowExecution flowExecution, FlowDefinition flowDefinition, FlowExecutionKey flowExecutionKey, MutableAttributeMap conversationScope, FlowDefinitionLocator subflowDefinitionLocator) { Assert.isInstanceOf(FlowExecutionImpl.class, flowExecution, "FlowExecution is of the wrong type: "); Assert.isInstanceOf(Flow.class, flowDefinition, "FlowDefinition is of the wrong type: "); FlowExecutionImpl execution = (FlowExecutionImpl) flowExecution; Flow flow = (Flow) flowDefinition; execution.setFlow(flow); if (execution.hasSessions()) { FlowSessionImpl rootSession = execution.getRootSession(); rootSession.setFlow(flow); rootSession.setState(flow.getStateInstance(rootSession.getStateId())); if (execution.hasSubflowSessions()) { for (Iterator it = execution.getSubflowSessionIterator(); it.hasNext();) { FlowSessionImpl subflowSession = (FlowSessionImpl) it.next(); Flow subflowDef = (Flow) subflowDefinitionLocator.getFlowDefinition(subflowSession.getFlowId()); subflowSession.setFlow(subflowDef); subflowSession.setState(subflowDef.getStateInstance(subflowSession.getStateId())); } } } execution.setKey(flowExecutionKey); if (conversationScope == null) { conversationScope = new LocalAttributeMap(); } execution.setConversationScope(conversationScope); execution.setAttributes(executionAttributes); execution.setListeners(executionListenerLoader.getListeners(execution.getDefinition())); execution.setKeyFactory(executionKeyFactory); return execution; } /** * Simple key factory suitable for standalone usage and testing. Not expected to be used in a web environment. */ private static class SimpleFlowExecutionKeyFactory implements FlowExecutionKeyFactory { private int sequence; public FlowExecutionKey getKey(FlowExecution execution) { if (execution.getKey() == null) { return new SimpleFlowExecutionKey(nextSequence()); } else { // keep the same key return execution.getKey(); } } public void removeAllFlowExecutionSnapshots(FlowExecution execution) { } public void removeFlowExecutionSnapshot(FlowExecution execution) { } public void updateFlowExecutionSnapshot(FlowExecution execution) { } private synchronized int nextSequence() { return ++sequence; } private static class SimpleFlowExecutionKey extends FlowExecutionKey { private int value; public SimpleFlowExecutionKey(int value) { this.value = value; } public boolean equals(Object o) { if (!(o instanceof SimpleFlowExecutionKey)) { SimpleFlowExecutionKey key = (SimpleFlowExecutionKey) o; return value == key.value; } return false; } public int hashCode() { return value; } public String toString() { return String.valueOf(value); } } } }././@LongLink0000000000000000000000000000023000000000000011560 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframework/webflow/engine/impl/FlowExecutionListeners.javalibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframew0000644000000000000000000001620311360615640027752 0ustar /* * Copyright 2004-2008 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.springframework.webflow.engine.impl; import org.springframework.webflow.core.collection.AttributeMap; import org.springframework.webflow.core.collection.MutableAttributeMap; import org.springframework.webflow.definition.FlowDefinition; import org.springframework.webflow.definition.StateDefinition; import org.springframework.webflow.definition.TransitionDefinition; import org.springframework.webflow.execution.Event; import org.springframework.webflow.execution.FlowExecutionException; import org.springframework.webflow.execution.FlowExecutionListener; import org.springframework.webflow.execution.FlowSession; import org.springframework.webflow.execution.RequestContext; import org.springframework.webflow.execution.View; /** * A helper that aids in publishing events to an array of FlowExecutionListener objects. * * @see org.springframework.webflow.execution.FlowExecutionListener * * @author Keith Donald * @author Erwin Vervaet * @author Scott Andrews */ class FlowExecutionListeners { private FlowExecutionListener[] EMPTY_LISTENER_ARRAY = new FlowExecutionListener[0]; /** * The list of listeners that should receive event callbacks during managed flow executions. */ private FlowExecutionListener[] listeners; /** * Create a flow execution listener helper that wraps an empty listener array. */ public FlowExecutionListeners() { this(null); } /** * Create a flow execution listener helper that wraps the specified listener array. * @param listeners the listener array */ public FlowExecutionListeners(FlowExecutionListener[] listeners) { if (listeners != null) { this.listeners = listeners; } else { this.listeners = EMPTY_LISTENER_ARRAY; } } /** * Returns the wrapped listener array. * @return the listener array */ public FlowExecutionListener[] getArray() { return listeners; } /** * Returns the size of the listener array. */ public int size() { return listeners.length; } // methods to fire events to all listeners /** * Notify all interested listeners that a request was submitted to the flow execution. */ public void fireRequestSubmitted(RequestContext context) { for (int i = 0; i < listeners.length; i++) { listeners[i].requestSubmitted(context); } } /** * Notify all interested listeners that the flow execution finished processing a request. */ public void fireRequestProcessed(RequestContext context) { for (int i = 0; i < listeners.length; i++) { listeners[i].requestProcessed(context); } } /** * Notify all interested listeners that a flow execution session is starting (about to be created). */ public void fireSessionCreating(RequestContext context, FlowDefinition flow) { for (int i = 0; i < listeners.length; i++) { listeners[i].sessionCreating(context, flow); } } /** * Notify all interested listeners that a flow execution session has been activated (created, on the stack and about * to start). */ public void fireSessionStarting(RequestContext context, FlowSession session, MutableAttributeMap input) { for (int i = 0; i < listeners.length; i++) { listeners[i].sessionStarting(context, session, input); } } /** * Notify all interested listeners that a flow execution session has started (has entered its start state). */ public void fireSessionStarted(RequestContext context, FlowSession session) { for (int i = 0; i < listeners.length; i++) { listeners[i].sessionStarted(context, session); } } /** * Notify all interested listeners that an event was signaled in the flow execution. */ public void fireEventSignaled(RequestContext context, Event event) { for (int i = 0; i < listeners.length; i++) { listeners[i].eventSignaled(context, event); } } /** * Notify all interested listeners that a state is being entered in the flow execution. */ public void fireStateEntering(RequestContext context, StateDefinition nextState) { for (int i = 0; i < listeners.length; i++) { listeners[i].stateEntering(context, nextState); } } /** * Notify all interested listeners that a state was entered in the flow execution. */ public void fireStateEntered(RequestContext context, StateDefinition previousState) { for (int i = 0; i < listeners.length; i++) { listeners[i].stateEntered(context, previousState, context.getCurrentState()); } } /** * Notify all interested listeners that a flow execution view is rendering. */ public void fireViewRendering(RequestContext context, View view) { for (int i = 0; i < listeners.length; i++) { listeners[i].viewRendering(context, view, context.getCurrentState()); } } /** * Notify all interested listeners that a flow execution has rendered. */ public void fireViewRendered(RequestContext context, View view) { for (int i = 0; i < listeners.length; i++) { listeners[i].viewRendered(context, view, context.getCurrentState()); } } /** * Notify all interested listeners that a transition is being entered in the flow execution. */ public void fireTransitionExecuting(RequestContext context, TransitionDefinition transition) { for (int i = 0; i < listeners.length; i++) { listeners[i].transitionExecuting(context, transition); } } /** * Notify all interested listeners that a flow session was paused in the flow execution. */ public void firePaused(RequestContext context) { for (int i = 0; i < listeners.length; i++) { listeners[i].paused(context); } } /** * Notify all interested listeners that the flow execution was resumed. */ public void fireResuming(RequestContext context) { for (int i = 0; i < listeners.length; i++) { listeners[i].resuming(context); } } /** * Notify all interested listeners that the active flow execution session is ending. */ public void fireSessionEnding(RequestContext context, FlowSession session, String outcomeId, MutableAttributeMap output) { for (int i = 0; i < listeners.length; i++) { listeners[i].sessionEnding(context, session, outcomeId, output); } } /** * Notify all interested listeners that a flow execution session has ended. */ public void fireSessionEnded(RequestContext context, FlowSession session, String outcomeId, AttributeMap output) { for (int i = 0; i < listeners.length; i++) { listeners[i].sessionEnded(context, session, outcomeId, output); } } /** * Notify all interested listeners that a flow execution threw an exception. */ public void fireExceptionThrown(RequestContext context, FlowExecutionException exception) { for (int i = 0; i < listeners.length; i++) { listeners[i].exceptionThrown(context, exception); } } }././@LongLink0000000000000000000000000000021100000000000011557 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframework/webflow/engine/impl/package.htmllibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframew0000644000000000000000000000021211360615642027745 0ustar

The implementation of Spring Web Flow's flow execution engine, based on finite-state machine.

././@LongLink0000000000000000000000000000022100000000000011560 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframework/webflow/engine/impl/FlowSessionImpl.javalibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframew0000644000000000000000000001536711360615640027764 0ustar /* * Copyright 2004-2008 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.springframework.webflow.engine.impl; import java.io.Externalizable; import java.io.IOException; import java.io.ObjectInput; import java.io.ObjectOutput; import org.springframework.core.style.ToStringCreator; import org.springframework.util.Assert; import org.springframework.webflow.core.collection.LocalAttributeMap; import org.springframework.webflow.core.collection.MutableAttributeMap; import org.springframework.webflow.definition.FlowDefinition; import org.springframework.webflow.definition.StateDefinition; import org.springframework.webflow.engine.Flow; import org.springframework.webflow.engine.State; import org.springframework.webflow.execution.FlowSession; /** * Implementation of the FlowSession interfaced used internally by the FlowExecutionImpl. This class is * closely coupled with FlowExecutionImpl and RequestControlContextImpl. The three * classes work together to form a complete flow execution implementation. * * @author Keith Donald * @author Erwin Vervaet */ class FlowSessionImpl implements FlowSession, Externalizable { private static final String VIEW_SCOPE_ATTRIBUTE = "viewScope"; /** * The flow definition (a singleton). *

* Transient to support restoration by the {@link FlowExecutionImplFactory}. */ private transient Flow flow; /** * The current state of this flow session. *

* Transient to support restoration by the {@link FlowExecutionImplFactory}. */ private transient State state; /** * The session data model ("flow scope"). */ private MutableAttributeMap scope = new LocalAttributeMap(); /** * The parent session of this session (may be null if this is a root session.) */ private FlowSessionImpl parent; /** * Set so the transient {@link #flow} field can be restored by the {@link FlowExecutionImplFactory}. */ private String flowId; /** * Set so the transient {@link #state} field can be restored by the {@link FlowExecutionImplFactory}. */ private String stateId; /** * Default constructor required for externalizable serialization. Should NOT be called programmatically. */ public FlowSessionImpl() { } /** * Create a new flow session. * @param flow the flow definition associated with this flow session * @param parent this session's parent (may be null) */ public FlowSessionImpl(Flow flow, FlowSessionImpl parent) { Assert.notNull(flow, "The flow is required"); this.flow = flow; this.parent = parent; } // implementing FlowSession public FlowDefinition getDefinition() { return flow; } public StateDefinition getState() { return state; } public MutableAttributeMap getScope() { return scope; } public MutableAttributeMap getViewScope() throws IllegalStateException { if (state == null) { throw new IllegalStateException("The current state of this flow '" + flow.getId() + "' is [null] - cannot access view scope"); } if (!state.isViewState()) { throw new IllegalStateException("The current state '" + state.getId() + "' of this flow '" + flow.getId() + "' is not a view state - view scope not accessible"); } return (MutableAttributeMap) scope.get(VIEW_SCOPE_ATTRIBUTE); } public FlowSession getParent() { return parent; } public boolean isRoot() { return parent == null; } // public impl public void setCurrentState(State state) { if (this.state != null && this.state.isViewState()) { destroyViewScope(); } this.state = state; if (this.state.isViewState()) { initViewScope(); } } // custom serialization public void readExternal(ObjectInput in) throws IOException, ClassNotFoundException { flowId = (String) in.readObject(); stateId = (String) in.readObject(); scope = (MutableAttributeMap) in.readObject(); parent = (FlowSessionImpl) in.readObject(); } public void writeExternal(ObjectOutput out) throws IOException { out.writeObject(flow.getId()); out.writeObject(state != null ? state.getId() : null); out.writeObject(scope); out.writeObject(parent); } // package-private Flow getFlow() { return flow; } // package private setters used by FlowExecutionImplFactory for setting/updating internal state /** * Restores the definition of this flow session. * @param flow the flow sessions definition * @see FlowExecutionImplStateRestorer */ void setFlow(Flow flow) { Assert.notNull(flow, "The flow is required"); this.flow = flow; } /** * Set the current state of this flow session. * @param state the state that is currently active in this flow session * @see FlowExecutionImpl#setCurrentState(State) * @see FlowExecutionImplStateRestorer */ void setState(State state) { Assert.notNull(state, "The state is required"); Assert.isTrue(flow == state.getOwner(), "The state does not belong to the flow associated with this flow session"); this.state = state; } /** * Returns the de-serialized id indicating the flow id of this session. */ String getFlowId() { if (flow == null) { return flowId; } else { return flow.getId(); } } /** * Sets the de-serialized id indicating the flow id of this session. Used for testing only. * @param flowId the flow id */ void setFlowId(String flowId) { this.flowId = flowId; } /** * Returns the de-serialized id indicating the current state of this session. */ String getStateId() { if (state == null) { return stateId; } else { return state.getId(); } } /** * Sets the de-serialized id indicating the state of this session. Used for testing only. * @param stateId the state id */ void setStateId(String stateId) { this.stateId = stateId; } // internal helpers /** * Initialize the view scope data structure. */ private void initViewScope() { scope.put(VIEW_SCOPE_ATTRIBUTE, new LocalAttributeMap()); } /** * Destroy the view scope data structure. */ private void destroyViewScope() { scope.remove(VIEW_SCOPE_ATTRIBUTE); } public String toString() { if (flow != null) { return new ToStringCreator(this).append("flow", getFlowId()).append("state", getStateId()).append("scope", scope).toString(); } else { return "[Unhydrated session '" + flowId + "' in state '" + stateId + "']"; } } }././@LongLink0000000000000000000000000000022300000000000011562 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframework/webflow/engine/impl/FlowExecutionImpl.javalibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframew0000644000000000000000000005325511360615636027767 0ustar /* * Copyright 2004-2008 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.springframework.webflow.engine.impl; import java.io.Externalizable; import java.io.IOException; import java.io.ObjectInput; import java.io.ObjectOutput; import java.io.Serializable; import java.util.Iterator; import java.util.LinkedList; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.springframework.binding.message.DefaultMessageContext; import org.springframework.binding.message.MessageContext; import org.springframework.binding.message.StateManageableMessageContext; import org.springframework.context.MessageSource; import org.springframework.core.style.ToStringCreator; import org.springframework.util.Assert; import org.springframework.webflow.context.ExternalContext; import org.springframework.webflow.core.collection.AttributeMap; import org.springframework.webflow.core.collection.CollectionUtils; import org.springframework.webflow.core.collection.LocalAttributeMap; import org.springframework.webflow.core.collection.MutableAttributeMap; import org.springframework.webflow.definition.FlowDefinition; import org.springframework.webflow.definition.TransitionDefinition; import org.springframework.webflow.engine.Flow; import org.springframework.webflow.engine.RequestControlContext; import org.springframework.webflow.engine.State; import org.springframework.webflow.engine.Transition; import org.springframework.webflow.engine.TransitionableState; import org.springframework.webflow.execution.Event; import org.springframework.webflow.execution.FlowExecution; import org.springframework.webflow.execution.FlowExecutionException; import org.springframework.webflow.execution.FlowExecutionKey; import org.springframework.webflow.execution.FlowExecutionKeyFactory; import org.springframework.webflow.execution.FlowExecutionListener; import org.springframework.webflow.execution.FlowExecutionOutcome; import org.springframework.webflow.execution.FlowSession; import org.springframework.webflow.execution.RequestContext; import org.springframework.webflow.execution.RequestContextHolder; import org.springframework.webflow.execution.View; /** * Default implementation of FlowExecution that uses a stack-based data structure to manage spawned flow sessions. This * class is closely coupled with package-private FlowSessionImpl and RequestControlContextImpl * . The three classes work together to form a complete flow execution implementation based on a finite state machine. *

* This implementation of FlowExecution is serializable so it can be safely stored in an HTTP session or other * persistent store such as a file, database, or client-side form field. Once deserialized, the * {@link FlowExecutionImplFactory} is expected to be used to restore the execution to a usable state. * * @see FlowExecutionImplFactory * * @author Keith Donald * @author Erwin Vervaet * @author Jeremy Grelle */ public class FlowExecutionImpl implements FlowExecution, Externalizable { private static final Log logger = LogFactory.getLog(FlowExecutionImpl.class); private static final String FLASH_SCOPE_ATTRIBUTE = "flashScope"; /** * The execution's root flow; the top level flow that acts as the starting point for this flow execution. *

* Transient to support restoration by the {@link FlowExecutionImplFactory}. */ private transient Flow flow; /** * A enum tracking the status of this flow execution. */ private FlowExecutionStatus status; /** * The stack of active, currently executing flow sessions. As subflows are spawned, they are pushed onto the stack. * As they end, they are popped off the stack. */ private LinkedList flowSessions; /** * A thread-safe listener list, holding listeners monitoring the lifecycle of this flow execution. *

* Transient to support restoration by the {@link FlowExecutionImplFactory}. */ private transient FlowExecutionListeners listeners; /** * The factory for getting the key to assign this flow execution when needed for persistence. */ private transient FlowExecutionKeyFactory keyFactory; /** * The key assigned to this flow execution. May be null if a key has not been assigned. */ private transient FlowExecutionKey key; /** * A data structure for attributes shared by all flow sessions. *

* Transient to support restoration by the {@link FlowExecutionImplFactory}. */ private transient MutableAttributeMap conversationScope; /** * A data structure for runtime system execution attributes. *

* Transient to support restoration by the {@link FlowExecutionImplFactory}. */ private transient AttributeMap attributes; /** * The outcome reached by this flow execution when it ends. */ private transient FlowExecutionOutcome outcome; /** * Default constructor required for externalizable serialization. Should NOT be called programmatically. */ public FlowExecutionImpl() { } /** * Create a new flow execution executing the provided flow. Flow executions are normally created by a flow execution * factory. * @param flow the root flow of this flow execution */ public FlowExecutionImpl(Flow flow) { Assert.notNull(flow, "The flow definition is required"); this.flow = flow; status = FlowExecutionStatus.NOT_STARTED; listeners = new FlowExecutionListeners(); attributes = CollectionUtils.EMPTY_ATTRIBUTE_MAP; flowSessions = new LinkedList(); conversationScope = new LocalAttributeMap(); conversationScope.put(FLASH_SCOPE_ATTRIBUTE, new LocalAttributeMap()); } public String getCaption() { return "execution of '" + flow.getId() + "'"; } // implementing FlowExecutionContext public FlowExecutionKey getKey() { return key; } public FlowDefinition getDefinition() { return flow; } public boolean hasStarted() { return status == FlowExecutionStatus.ACTIVE || status == FlowExecutionStatus.ENDED; } public boolean isActive() { return status == FlowExecutionStatus.ACTIVE; } public boolean hasEnded() { return status == FlowExecutionStatus.ENDED; } public FlowExecutionOutcome getOutcome() { return outcome; } public FlowSession getActiveSession() { if (!isActive()) { if (status == FlowExecutionStatus.NOT_STARTED) { throw new IllegalStateException( "No active FlowSession to access; this FlowExecution has not been started"); } else { throw new IllegalStateException("No active FlowSession to access; this FlowExecution has ended"); } } return getActiveSessionInternal(); } public MutableAttributeMap getFlashScope() { return (MutableAttributeMap) conversationScope.get(FLASH_SCOPE_ATTRIBUTE); } public MutableAttributeMap getConversationScope() { return conversationScope; } public AttributeMap getAttributes() { return attributes; } // methods implementing FlowExecution public void start(MutableAttributeMap input, ExternalContext externalContext) throws FlowExecutionException, IllegalStateException { Assert.state(!hasStarted(), "This flow has already been started; you cannot call 'start()' more than once"); if (logger.isDebugEnabled()) { logger.debug("Starting in " + externalContext + " with input " + input); } MessageContext messageContext = createMessageContext(null); RequestControlContext requestContext = createRequestContext(externalContext, messageContext); RequestContextHolder.setRequestContext(requestContext); listeners.fireRequestSubmitted(requestContext); try { start(flow, input, requestContext); } catch (FlowExecutionException e) { handleException(e, requestContext); } catch (Exception e) { handleException(wrap(e), requestContext); } finally { saveFlashMessages(requestContext); if (isActive()) { try { listeners.firePaused(requestContext); } catch (Throwable e) { logger.error("FlowExecutionListener threw exception", e); } } try { listeners.fireRequestProcessed(requestContext); } catch (Throwable e) { logger.error("FlowExecutionListener threw exception", e); } RequestContextHolder.setRequestContext(null); } } public void resume(ExternalContext externalContext) throws FlowExecutionException, IllegalStateException { Assert .state(status == FlowExecutionStatus.ACTIVE, "This FlowExecution cannot be resumed because it is not active; it has either not been started or has ended"); if (logger.isDebugEnabled()) { logger.debug("Resuming in " + externalContext); } Flow activeFlow = getActiveSessionInternal().getFlow(); MessageContext messageContext = createMessageContext(activeFlow.getApplicationContext()); RequestControlContext requestContext = createRequestContext(externalContext, messageContext); RequestContextHolder.setRequestContext(requestContext); listeners.fireRequestSubmitted(requestContext); try { listeners.fireResuming(requestContext); activeFlow.resume(requestContext); } catch (FlowExecutionException e) { handleException(e, requestContext); } catch (Exception e) { handleException(wrap(e), requestContext); } finally { saveFlashMessages(requestContext); if (isActive()) { try { listeners.firePaused(requestContext); } catch (Throwable e) { logger.error("FlowExecutionListener threw exception", e); } } try { listeners.fireRequestProcessed(requestContext); } catch (Throwable e) { logger.error("FlowExecutionListener threw exception", e); } RequestContextHolder.setRequestContext(null); } } /** * Jump to a state of the currently active flow. If this execution has not been started, a new session will be * activated and its current state will be set. This is a implementation-internal method that bypasses the * {@link #start(MutableAttributeMap, ExternalContext)} operation and allows for jumping to an arbitrary flow state. * Useful for testing. * @param stateId the identifier of the state to jump to */ public void setCurrentState(String stateId) { FlowSessionImpl session; if (status == FlowExecutionStatus.NOT_STARTED) { session = activateSession(flow); status = FlowExecutionStatus.ACTIVE; } else { session = getActiveSessionInternal(); } State state = session.getFlow().getStateInstance(stateId); session.setCurrentState(state); } // custom serialization (implementation of Externalizable for optimized storage) public void readExternal(ObjectInput in) throws IOException, ClassNotFoundException { status = (FlowExecutionStatus) in.readObject(); flowSessions = (LinkedList) in.readObject(); } public void writeExternal(ObjectOutput out) throws IOException { out.writeObject(status); out.writeObject(flowSessions); } public String toString() { if (!isActive()) { if (!hasStarted()) { return "[Not yet started " + getCaption() + "]"; } else { return "[Ended " + getCaption() + "]"; } } else { if (flow != null) { return new ToStringCreator(this).append("flow", flow.getId()).append("flowSessions", flowSessions) .toString(); } else { return "[Unhydrated execution of '" + getRootSession().getFlowId() + "']"; } } } // subclassing hooks /** * Create a flow execution control context. * @param externalContext the external context triggering this request */ protected RequestControlContext createRequestContext(ExternalContext externalContext, MessageContext messageContext) { return new RequestControlContextImpl(this, externalContext, messageContext); } /** * Create a new flow session object. Subclasses can override this to return a special implementation if required. * @param flow the flow that should be associated with the flow session * @param parent the flow session that should be the parent of the newly created flow session (may be null) * @return the newly created flow session */ protected FlowSessionImpl createFlowSession(Flow flow, FlowSessionImpl parent) { return new FlowSessionImpl(flow, parent); } // package private request control context callbacks void start(Flow flow, MutableAttributeMap input, RequestControlContext context) { listeners.fireSessionCreating(context, flow); FlowSession session = activateSession(flow); if (session.isRoot()) { status = FlowExecutionStatus.ACTIVE; } if (input == null) { input = new LocalAttributeMap(); } StateManageableMessageContext messageContext = (StateManageableMessageContext) context.getMessageContext(); messageContext.setMessageSource(flow.getApplicationContext()); listeners.fireSessionStarting(context, session, input); flow.start(context, input); listeners.fireSessionStarted(context, session); } void setCurrentState(State newState, RequestContext context) { listeners.fireStateEntering(context, newState); FlowSessionImpl session = getActiveSessionInternal(); State previousState = (State) session.getState(); session.setCurrentState(newState); listeners.fireStateEntered(context, previousState); } public void viewRendering(View view, RequestContext context) { listeners.fireViewRendering(context, view); } public void viewRendered(View view, RequestContext context) { listeners.fireViewRendered(context, view); } boolean handleEvent(Event event, RequestControlContext context) { listeners.fireEventSignaled(context, event); return getActiveSessionInternal().getFlow().handleEvent(context); } boolean execute(Transition transition, RequestControlContext context) { listeners.fireTransitionExecuting(context, transition); return transition.execute((State) getActiveSession().getState(), context); } void endActiveFlowSession(String outcome, MutableAttributeMap output, RequestControlContext context) { FlowSessionImpl session = getActiveSessionInternal(); listeners.fireSessionEnding(context, session, outcome, output); session.getFlow().end(context, outcome, output); flowSessions.removeLast(); boolean executionEnded = flowSessions.isEmpty(); if (executionEnded) { // set the root flow execution outcome for external clients to use this.outcome = new FlowExecutionOutcome(outcome, output); status = FlowExecutionStatus.ENDED; } listeners.fireSessionEnded(context, session, outcome, output); if (!executionEnded) { // restore any variables that may have transient references getActiveSessionInternal().getFlow().restoreVariables(context); // treat the outcome as an event against the current state of the new active flow context.handleEvent(new Event(session.getState(), outcome, output)); } } FlowExecutionKey assignKey() { key = keyFactory.getKey(this); if (logger.isDebugEnabled()) { logger.debug("Assigned key " + key); } return key; } void updateCurrentFlowExecutionSnapshot() { keyFactory.updateFlowExecutionSnapshot(this); } void removeCurrentFlowExecutionSnapshot() { keyFactory.removeFlowExecutionSnapshot(this); } void removeAllFlowExecutionSnapshots() { keyFactory.removeAllFlowExecutionSnapshots(this); } TransitionDefinition getMatchingTransition(String eventId) { FlowSessionImpl session = getActiveSessionInternal(); if (session == null) { return null; } TransitionableState currentState = (TransitionableState) session.getState(); TransitionDefinition transition = currentState.getTransition(eventId); if (transition == null) { transition = session.getFlow().getGlobalTransition(eventId); } return transition; } // package private setters for restoring transient state used by FlowExecutionImplServicesConfigurer FlowExecutionListener[] getListeners() { return listeners.getArray(); } void setListeners(FlowExecutionListener[] listeners) { this.listeners = new FlowExecutionListeners(listeners); } void setAttributes(AttributeMap attributes) { this.attributes = attributes; } FlowExecutionKeyFactory getKeyFactory() { return keyFactory; } void setKeyFactory(FlowExecutionKeyFactory keyFactory) { this.keyFactory = keyFactory; } // Used by {@link FlowExecutionImplFactory} /** * Returns the list of flow session maintained by this flow execution. */ LinkedList getFlowSessions() { return flowSessions; } /** * Are there any flow sessions in this flow execution? */ boolean hasSessions() { return !flowSessions.isEmpty(); } /** * Are there any sessions for sub flows in this flow execution? */ boolean hasSubflowSessions() { return flowSessions.size() > 1; } /** * Returns the flow session for the root flow of this flow execution. */ FlowSessionImpl getRootSession() { return (FlowSessionImpl) flowSessions.getFirst(); } /** * Returns an iterator looping over the subflow sessions in this flow execution. */ Iterator getSubflowSessionIterator() { return flowSessions.listIterator(1); } /** * Restore the flow definition of this flow execution. */ void setFlow(Flow flow) { this.flow = flow; } /** * Restore conversation scope for this flow execution. */ void setConversationScope(MutableAttributeMap conversationScope) { this.conversationScope = conversationScope; } /** * Restore the flow execution key. */ void setKey(FlowExecutionKey key) { this.key = key; } // internal helpers private MessageContext createMessageContext(MessageSource messageSource) { StateManageableMessageContext messageContext = new DefaultMessageContext(messageSource); Serializable messagesMemento = (Serializable) getFlashScope().extract("messagesMemento"); if (messagesMemento != null) { messageContext.restoreMessages(messagesMemento); } return messageContext; } /** * Activate a new FlowSession for the flow definition. Creates the new flow session and pushes it onto * the stack. * @param flow the flow definition * @return the new flow session */ private FlowSessionImpl activateSession(Flow flow) { FlowSessionImpl parent = getActiveSessionInternal(); FlowSessionImpl session = createFlowSession(flow, parent); flowSessions.add(session); return session; } private FlowSessionImpl getActiveSessionInternal() { if (flowSessions.isEmpty()) { return null; } return (FlowSessionImpl) flowSessions.getLast(); } private void saveFlashMessages(RequestContext context) { StateManageableMessageContext messageContext = (StateManageableMessageContext) context.getMessageContext(); Serializable messagesMemento = messageContext.createMessagesMemento(); getFlashScope().put("messagesMemento", messagesMemento); } private FlowExecutionException wrap(Exception e) { if (isActive()) { FlowSession session = getActiveSession(); String flowId = session.getDefinition().getId(); String stateId = session.getState() != null ? session.getState().getId() : null; return new FlowExecutionException(flowId, stateId, "Exception thrown in state '" + stateId + "' of flow '" + flowId + "'", e); } else { return new FlowExecutionException(flow.getId(), null, "Exception thrown within inactive flow '" + flow.getId() + "'", e); } } /** * Handles an exception that occurred performing an operation on this flow execution. First tries the set of * exception handlers associated with the offending state, then the handlers at the flow level. * @param exception the exception that occurred * @param context the request control context the exception occurred in * @throws FlowExecutionException re-throws the exception if it was not handled at the state or flow level */ private void handleException(FlowExecutionException exception, RequestControlContext context) throws FlowExecutionException { listeners.fireExceptionThrown(context, exception); if (logger.isDebugEnabled()) { if (exception.getCause() != null) { logger.debug("Attempting to handle [" + exception + "] with root cause [" + getRootCause(exception) + "]"); } else { logger.debug("Attempting to handle [" + exception + "]"); } } if (!isActive()) { throw exception; } boolean handled = false; try { if (tryStateHandlers(exception, context) || tryFlowHandlers(exception, context)) { handled = true; } } catch (FlowExecutionException newException) { // exception handling itself resulted in a new FlowExecutionException, try to handle it handleException(newException, context); } if (!handled) { if (logger.isDebugEnabled()) { logger.debug("Rethrowing unhandled flow execution exception"); } throw exception; } } /** * Get the root cause of the given throwable. */ private Throwable getRootCause(Throwable e) { Throwable cause = e.getCause(); return cause == null ? e : getRootCause(cause); } /** * Try to handle given exception using execution exception handlers registered at the state level. Returns null if * no handler handled the exception. * @return true if the exception was handled */ private boolean tryStateHandlers(FlowExecutionException exception, RequestControlContext context) { if (exception.getStateId() != null) { State state = getActiveSessionInternal().getFlow().getStateInstance(exception.getStateId()); return state.handleException(exception, context); } else { return false; } } /** * Try to handle given exception using execution exception handlers registered at the flow level. Returns null if no * handler handled the exception. * @return true if the exception was handled */ private boolean tryFlowHandlers(FlowExecutionException exception, RequestControlContext context) { return getActiveSessionInternal().getFlow().handleException(exception, context); } }././@LongLink0000000000000000000000000000022500000000000011564 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframework/webflow/engine/impl/FlowExecutionStatus.javalibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframew0000644000000000000000000000163311360615646027761 0ustar package org.springframework.webflow.engine.impl; import org.springframework.core.enums.StaticLabeledEnum; /** * A enum used internally by {@link FlowExecutionImpl} to track its status. Flow Executions initially start out in * NOT_STARTED. After start is called, they are ACTIVE. After ending, their status is updated to ENDED. */ public class FlowExecutionStatus extends StaticLabeledEnum { /** * The flow execution has not yet started. */ public static final FlowExecutionStatus NOT_STARTED = new FlowExecutionStatus(0, "Not Started"); /** * The flow execution has started and a session is active. */ public static final FlowExecutionStatus ACTIVE = new FlowExecutionStatus(1, "Active"); /** * The flow execution has ended. */ public static final FlowExecutionStatus ENDED = new FlowExecutionStatus(2, "Ended"); private FlowExecutionStatus(int code, String label) { super(code, label); } } ././@LongLink0000000000000000000000000000021100000000000011557 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframework/webflow/engine/ViewVariable.javalibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframew0000644000000000000000000000550211360615632027753 0ustar /* * Copyright 2004-2008 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.springframework.webflow.engine; import org.springframework.webflow.core.AnnotatedObject; import org.springframework.webflow.execution.RequestContext; /** * A variable scoped to a particular view. Such a variable is allocated when a view-state is entered and destroyed when * that view-state exits. The flow scope map is used as the backing variable store. * * @author Keith Donald */ public class ViewVariable extends AnnotatedObject { private String name; private VariableValueFactory valueFactory; /** * Creates a new view variable. * @param name the name of the variable * @param valueFactory the source for the variable value */ public ViewVariable(String name, VariableValueFactory valueFactory) { this.name = name; this.valueFactory = valueFactory; } /** * Returns the name of this view variable. */ public String getName() { return name; } /** * Returns the source of the variable's initial value. */ public VariableValueFactory getValueFactory() { return valueFactory; } // name and scope based equality public boolean equals(Object o) { if (!(o instanceof ViewVariable)) { return false; } ViewVariable other = (ViewVariable) o; return name.equals(other.name) && valueFactory.equals(other.valueFactory); } public int hashCode() { return name.hashCode() + valueFactory.hashCode(); } /** * Creates this view variable. This method allocates the variable's value in flow scope. * @param context the executing flow */ public void create(RequestContext context) { Object value = valueFactory.createInitialValue(context); context.getViewScope().put(name, value); } /** * Restores this view variable's dependencies. This method asks the variable's value factory to restore any * references the variable has to transient objects. * @param context the executing flow */ public void restore(RequestContext context) { Object value = context.getViewScope().get(name); valueFactory.restoreReferences(value, context); } /** * Destroy this view variable. This method removes the variable's value in flow scope. * @param context the executing flow */ public Object destroy(RequestContext context) { return context.getViewScope().remove(name); } } ././@LongLink0000000000000000000000000000020100000000000011556 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframework/webflow/engine/Flow.javalibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframew0000644000000000000000000006106011360615632027754 0ustar /* * Copyright 2004-2008 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.springframework.webflow.engine; import java.util.ArrayList; import java.util.Iterator; import java.util.LinkedHashMap; import java.util.LinkedHashSet; import java.util.List; import java.util.Map; import java.util.Set; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.springframework.binding.mapping.Mapper; import org.springframework.binding.mapping.MappingResults; import org.springframework.context.ApplicationContext; import org.springframework.context.ConfigurableApplicationContext; import org.springframework.core.style.StylerUtils; import org.springframework.core.style.ToStringCreator; import org.springframework.util.Assert; import org.springframework.util.ClassUtils; import org.springframework.util.StringUtils; import org.springframework.webflow.core.AnnotatedObject; import org.springframework.webflow.core.collection.AttributeMap; import org.springframework.webflow.core.collection.MutableAttributeMap; import org.springframework.webflow.definition.FlowDefinition; import org.springframework.webflow.definition.StateDefinition; import org.springframework.webflow.definition.TransitionDefinition; import org.springframework.webflow.execution.FlowExecutionException; import org.springframework.webflow.execution.RequestContext; /** * A single flow definition. A Flow definition is a reusable, self-contained controller module that provides the blue * print for a user dialog or conversation. Flows typically drive controlled navigations within web applications to * guide users through fulfillment of a business process/goal that takes place over a series of steps, modeled as * states. *

* A simple Flow definition could do nothing more than execute an action and display a view all in one request. A more * elaborate Flow definition may be long-lived and execute across a series of requests, invoking many possible paths, * actions, and subflows. *

* Especially in Intranet applications there are often "controlled navigations" where the user is not free to do what he * or she wants but must follow the guidelines provided by the system to complete a process that is transactional in * nature (the quintessential example would be a 'checkout' flow of a shopping cart application). This is a typical use * case appropriate to model as a flow. *

* Structurally a Flow is composed of a set of states. A {@link State} is a point in a flow where a behavior is * executed; for example, showing a view, executing an action, spawning a subflow, or terminating the flow. Different * types of states execute different behaviors in a polymorphic fashion. *

* Each {@link TransitionableState} type has one or more transitions that when executed move a flow to another state. * These transitions define the supported paths through the flow. *

* A state transition is triggered by the occurrence of an event. An event is something that happens the flow should * respond to, for example a user input event like ("submit") or an action execution result event like ("success"). When * an event occurs in a state of a Flow that event drives a state transition that decides what to do next. *

* Each Flow has exactly one start state. A start state is simply a marker noting the state executions of this Flow * definition should start in. The first state added to the flow will become the start state by default. *

* Flow definitions may have one or more flow exception handlers. A {@link FlowExecutionExceptionHandler} can execute * custom behavior in response to a specific exception (or set of exceptions) that occur in a state of one of this * flow's executions. *

* Instances of this class are typically built by {@link org.springframework.webflow.engine.builder.FlowBuilder} * implementations but may also be directly instantiated. *

* This class and the rest of the Spring Web Flow (SWF) engine have been designed with minimal dependencies on other * libraries. Spring Web Flow is usable in a standalone fashion. The engine system is fully usable outside an HTTP * servlet environment, for example in portlets, tests, or standalone applications. One of the major architectural * benefits of Spring Web Flow is the ability to design reusable, high-level controller modules that may be executed in * any environment. *

* Note: flows are singleton definition objects so they should be thread-safe. You can think a flow definition as * analogous to a Java class, defining all the behavior of an application module. The core behaviors * {@link #start(RequestControlContext, MutableAttributeMap) start}, {@link #resume(RequestControlContext)}, * {@link #handleEvent(RequestControlContext) on event}, * {@link #end(RequestControlContext, String, MutableAttributeMap) end}, and * {@link #handleException(FlowExecutionException, RequestControlContext)}. Each method accepts a {@link RequestContext * request context} that allows for this flow to access execution state in a thread safe manner. A flow execution is * what models a running instance of this flow definition, somewhat analogous to a java object that is an instance of a * class. * * @see org.springframework.webflow.engine.State * @see org.springframework.webflow.engine.ActionState * @see org.springframework.webflow.engine.ViewState * @see org.springframework.webflow.engine.SubflowState * @see org.springframework.webflow.engine.EndState * @see org.springframework.webflow.engine.DecisionState * @see org.springframework.webflow.engine.Transition * @see org.springframework.webflow.engine.FlowExecutionExceptionHandler * * @author Keith Donald * @author Erwin Vervaet * @author Colin Sampaleanu * @author Jeremy Grelle */ public class Flow extends AnnotatedObject implements FlowDefinition { /** * Logger, can be used in subclasses. */ protected final Log logger = LogFactory.getLog(getClass()); /** * An assigned flow identifier uniquely identifying this flow among all other flows. */ private String id; /** * The set of state definitions for this flow. */ private Set states = new LinkedHashSet(9); /** * The default start state for this flow. */ private State startState; /** * The set of flow variables created by this flow. */ private Map variables = new LinkedHashMap(); /** * The mapper to map flow input attributes. */ private Mapper inputMapper; /** * The list of actions to execute when this flow starts. *

* Start actions should execute with care as during startup a flow session has not yet fully initialized and some * properties like its "currentState" have not yet been set. */ private ActionList startActionList = new ActionList(); /** * The set of global transitions that are shared by all states of this flow. */ private TransitionSet globalTransitionSet = new TransitionSet(); /** * The list of actions to execute when this flow ends. */ private ActionList endActionList = new ActionList(); /** * The mapper to map flow output attributes. */ private Mapper outputMapper; /** * The set of exception handlers for this flow. */ private FlowExecutionExceptionHandlerSet exceptionHandlerSet = new FlowExecutionExceptionHandlerSet(); /** * An optional application context hosting services needed by this flow. */ private ApplicationContext applicationContext; /** * Construct a new flow definition with the given id. The id should be unique among all flows. * @param id the flow identifier */ public Flow(String id) { Assert.hasText(id, "This flow must be uniquely identified"); this.id = id; } // convenient static factory methods /** * Create a new flow with the given id and attributes. * @param id the flow id * @param attributes the attributes * @return the flow */ public static Flow create(String id, AttributeMap attributes) { Flow flow = new Flow(id); flow.getAttributes().putAll(attributes); return flow; } // implementing FlowDefinition public String getId() { return id; } public StateDefinition getStartState() { if (startState == null) { throw new IllegalStateException("No start state has been set for this flow ('" + getId() + "') -- flow builder configuration error?"); } return startState; } public StateDefinition getState(String stateId) { return getStateInstance(stateId); } public String[] getPossibleOutcomes() { List possibleOutcomes = new ArrayList(); for (Iterator it = states.iterator(); it.hasNext();) { State state = (State) it.next(); if (state instanceof EndState) { possibleOutcomes.add(state.getId()); } } return (String[]) possibleOutcomes.toArray(new String[possibleOutcomes.size()]); } public ClassLoader getClassLoader() { if (applicationContext != null) { return applicationContext.getClassLoader(); } else { return ClassUtils.getDefaultClassLoader(); } } public ApplicationContext getApplicationContext() { return applicationContext; } public boolean inDevelopment() { return getAttributes().getBoolean("development", Boolean.FALSE).booleanValue(); } /** * Add given state definition to this flow definition. Marked protected, as this method is to be called by the * (privileged) state definition classes themselves during state construction as part of a FlowBuilder invocation. * @param state the state to add * @throws IllegalArgumentException when the state cannot be added to the flow; for instance if another state shares * the same id as the one provided or if given state already belongs to another flow */ protected void add(State state) throws IllegalArgumentException { if (this != state.getFlow() && state.getFlow() != null) { throw new IllegalArgumentException("State " + state + " cannot be added to this flow '" + getId() + "' -- it already belongs to a different flow: '" + state.getFlow().getId() + "'"); } if (this.states.contains(state) || this.containsState(state.getId())) { throw new IllegalArgumentException("This flow '" + getId() + "' already contains a state with id '" + state.getId() + "' -- state ids must be locally unique to the flow definition; " + "existing state-ids of this flow include: " + StylerUtils.style(getStateIds())); } boolean firstAdd = states.isEmpty(); states.add(state); if (firstAdd) { setStartState(state); } } /** * Returns the number of states defined in this flow. * @return the state count */ public int getStateCount() { return states.size(); } /** * Is a state with the provided id present in this flow? * @param stateId the state id * @return true if yes, false otherwise */ public boolean containsState(String stateId) { Iterator it = states.iterator(); while (it.hasNext()) { State state = (State) it.next(); if (state.getId().equals(stateId)) { return true; } } return false; } /** * Set the start state for this flow to the state with the provided stateId; a state must exist by the * provided stateId. * @param stateId the id of the new start state * @throws IllegalArgumentException when no state exists with the id you provided */ public void setStartState(String stateId) throws IllegalArgumentException { setStartState(getStateInstance(stateId)); } /** * Set the start state for this flow to the state provided; any state may be the start state. * @param state the new start state * @throws IllegalArgumentException given state has not been added to this flow */ public void setStartState(State state) throws IllegalArgumentException { if (!states.contains(state)) { throw new IllegalArgumentException("State '" + state + "' is not a state of flow '" + getId() + "'"); } startState = state; } /** * Return the TransitionableState with given stateId. * @param stateId id of the state to look up * @return the transitionable state * @throws IllegalArgumentException if the identified state cannot be found * @throws ClassCastException when the identified state is not transitionable */ public TransitionableState getTransitionableState(String stateId) throws IllegalArgumentException, ClassCastException { State state = getStateInstance(stateId); if (state != null && !(state instanceof TransitionableState)) { throw new ClassCastException("The state '" + stateId + "' of flow '" + getId() + "' must be transitionable"); } return (TransitionableState) state; } /** * Lookup the identified state instance of this flow. * @param stateId the state id * @return the state * @throws IllegalArgumentException if the identified state cannot be found */ public State getStateInstance(String stateId) throws IllegalArgumentException { if (!StringUtils.hasText(stateId)) { throw new IllegalArgumentException("The specified stateId is invalid: state identifiers must be non-blank"); } Iterator it = states.iterator(); while (it.hasNext()) { State state = (State) it.next(); if (state.getId().equals(stateId)) { return state; } } throw new IllegalArgumentException("Cannot find state with id '" + stateId + "' in flow '" + getId() + "' -- " + "Known state ids are '" + StylerUtils.style(getStateIds()) + "'"); } /** * Convenience accessor that returns an ordered array of the String ids for the state definitions * associated with this flow definition. * @return the state ids */ public String[] getStateIds() { String[] stateIds = new String[getStateCount()]; int i = 0; Iterator it = states.iterator(); while (it.hasNext()) { stateIds[i++] = ((State) it.next()).getId(); } return stateIds; } /** * Adds a flow variable. * @param variable the variable */ public void addVariable(FlowVariable variable) { variables.put(variable.getName(), variable); } /** * Adds flow variables. * @param variables the variables */ public void addVariables(FlowVariable[] variables) { if (variables == null) { return; } for (int i = 0; i < variables.length; i++) { addVariable(variables[i]); } } /** * Returns the flow variable with the given name. * @param name the name of the variable */ public FlowVariable getVariable(String name) { return (FlowVariable) variables.get(name); } /** * Returns the flow variables. */ public FlowVariable[] getVariables() { return (FlowVariable[]) variables.values().toArray(new FlowVariable[variables.size()]); } /** * Returns the configured flow input mapper, or null if none. * @return the input mapper */ public Mapper getInputMapper() { return inputMapper; } /** * Sets the mapper to map flow input attributes. * @param inputMapper the input mapper */ public void setInputMapper(Mapper inputMapper) { this.inputMapper = inputMapper; } /** * Returns the list of actions executed by this flow when an execution of the flow starts. The returned list * is mutable. * @return the start action list */ public ActionList getStartActionList() { return startActionList; } /** * Returns the list of actions executed by this flow when an execution of the flow ends. The returned list is * mutable. * @return the end action list */ public ActionList getEndActionList() { return endActionList; } /** * Returns the configured flow output mapper, or null if none. * @return the output mapper */ public Mapper getOutputMapper() { return outputMapper; } /** * Sets the mapper to map flow output attributes. * @param outputMapper the output mapper */ public void setOutputMapper(Mapper outputMapper) { this.outputMapper = outputMapper; } /** * Returns the set of exception handlers, allowing manipulation of how exceptions are handled when thrown during * flow execution. Exception handlers are invoked when an exception occurs at execution time and can execute custom * exception handling logic as well as select an error view to display. Exception handlers attached at the flow * level have an opportunity to handle exceptions that aren't handled at the state level. * @return the exception handler set */ public FlowExecutionExceptionHandlerSet getExceptionHandlerSet() { return exceptionHandlerSet; } /** * Returns the set of transitions eligible for execution by this flow if no state-level transition is matched. The * returned set is mutable. * @return the global transition set */ public TransitionSet getGlobalTransitionSet() { return globalTransitionSet; } /** * Returns the transition that matches the event with the provided id. * @param eventId the event id * @return the transition that matches, or null if no match is found. */ public TransitionDefinition getGlobalTransition(String eventId) { for (Iterator it = globalTransitionSet.iterator(); it.hasNext();) { Transition transition = (Transition) it.next(); if (transition.getId().equals(eventId)) { return transition; } } return null; } /** * Sets a reference to the application context hosting application objects needed by this flow. * @param applicationContext the application context */ public void setApplicationContext(ApplicationContext applicationContext) { this.applicationContext = applicationContext; } // id based equality public boolean equals(Object o) { if (!(o instanceof Flow)) { return false; } Flow other = (Flow) o; return id.equals(other.id); } public int hashCode() { return id.hashCode(); } // behavioral code, could be overridden in subclasses /** * Start a new session for this flow in its start state. This boils down to the following: *

    *
  1. Create (setup) all registered flow variables ({@link #addVariable(FlowVariable)}) in flow scope.
  2. *
  3. Map provided input data into the flow. Typically data will be mapped into flow scope using the registered * input mapper ({@link #setInputMapper(Mapper)}).
  4. *
  5. Execute all registered start actions ( {@link #getStartActionList()}).
  6. *
  7. Enter the configured start state ({@link #setStartState(State)})
  8. *
* @param context the flow execution control context * @param input eligible input into the session * @throws FlowExecutionException when an exception occurs starting the flow */ public void start(RequestControlContext context, MutableAttributeMap input) throws FlowExecutionException { assertStartStateSet(); createVariables(context); if (inputMapper != null) { MappingResults results = inputMapper.map(input, context); if (results != null && results.hasErrorResults()) { throw new FlowInputMappingException(getId(), results); } } startActionList.execute(context); startState.enter(context); } /** * Resume a paused session for this flow in its current view state. * @param context the flow execution control context * @throws FlowExecutionException when an exception occurs during the resume operation */ public void resume(RequestControlContext context) throws FlowExecutionException { restoreVariables(context); getCurrentViewState(context).resume(context); } /** * Handle the last event that occurred against an active session of this flow. * @param context the flow execution control context */ public boolean handleEvent(RequestControlContext context) { TransitionableState currentState = getCurrentTransitionableState(context); try { return currentState.handleEvent(context); } catch (NoMatchingTransitionException e) { // try the flow level transition set for a match Transition transition = globalTransitionSet.getTransition(context); if (transition != null) { return context.execute(transition); // return transition.execute(currentState, context); } else { // no matching global transition => let the original exception // propagate throw e; } } } /** * Inform this flow definition that an execution session of itself has ended. As a result, the flow will do the * following: *
    *
  1. Execute all registered end actions ({@link #getEndActionList()}).
  2. *
  3. Map data available in the flow execution control context into provided output map using a registered output * mapper ( {@link #setOutputMapper(Mapper)}).
  4. *
* @param context the flow execution control context * @param outcome the logical flow outcome that will be returned by the session, generally the id of the terminating * end state * @param output initial output produced by the session that is eligible for modification by this method * @throws FlowExecutionException when an exception occurs ending this flow */ public void end(RequestControlContext context, String outcome, MutableAttributeMap output) throws FlowExecutionException { endActionList.execute(context); if (outputMapper != null) { MappingResults results = outputMapper.map(context, output); if (results != null && results.hasErrorResults()) { throw new FlowOutputMappingException(getId(), results); } } } public void destroy() { if (applicationContext != null && applicationContext instanceof ConfigurableApplicationContext) { ((ConfigurableApplicationContext) applicationContext).close(); } } /** * Handle an exception that occurred during an execution of this flow. * @param exception the exception that occurred * @param context the flow execution control context */ public boolean handleException(FlowExecutionException exception, RequestControlContext context) throws FlowExecutionException { return getExceptionHandlerSet().handleException(exception, context); } // internal helpers private void assertStartStateSet() { if (startState == null) { throw new IllegalStateException("Unable to start flow '" + id + "'; the start state is not set -- flow builder configuration error?"); } } private void createVariables(RequestContext context) { Iterator it = variables.values().iterator(); while (it.hasNext()) { FlowVariable variable = (FlowVariable) it.next(); if (logger.isDebugEnabled()) { logger.debug("Creating " + variable); } variable.create(context); } } public void restoreVariables(RequestContext context) { Iterator it = variables.values().iterator(); while (it.hasNext()) { FlowVariable variable = (FlowVariable) it.next(); if (logger.isDebugEnabled()) { logger.debug("Restoring " + variable); } variable.restore(context); } } private ViewState getCurrentViewState(RequestControlContext context) { State currentState = (State) context.getCurrentState(); if (!(currentState instanceof ViewState)) { throw new IllegalStateException("You can only resume paused view states, and state " + context.getCurrentState() + " is not a view state - programmer error"); } return (ViewState) currentState; } private TransitionableState getCurrentTransitionableState(RequestControlContext context) { State currentState = (State) context.getCurrentState(); if (!(currentState instanceof TransitionableState)) { throw new IllegalStateException("You can only signal events in transitionable states, and state " + context.getCurrentState() + " is not transitionable - programmer error"); } return (TransitionableState) currentState; } public String toString() { return new ToStringCreator(this).append("id", id).append("states", states).append("startState", startState) .append("variables", variables).append("inputMapper", inputMapper).append("startActionList", startActionList).append("exceptionHandlerSet", exceptionHandlerSet).append( "globalTransitionSet", globalTransitionSet).append("endActionList", endActionList).append( "outputMapper", outputMapper).toString(); } }././@LongLink0000000000000000000000000000022300000000000011562 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframework/webflow/engine/SubflowAttributeMapper.javalibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframew0000644000000000000000000000315311360615632027753 0ustar /* * Copyright 2004-2008 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.springframework.webflow.engine; import org.springframework.webflow.core.collection.AttributeMap; import org.springframework.webflow.core.collection.MutableAttributeMap; import org.springframework.webflow.execution.RequestContext; /** * A strategy interface used by a subflow state to map subflow input and output attributes. * @author Keith Donald */ public interface SubflowAttributeMapper { /** * Create a map of attributes that should be passed as input to a subflow. * @param context the current request execution context * @return a map of attributes to pass as input */ public MutableAttributeMap createSubflowInput(RequestContext context); /** * Map output attributes of an ended subflow flow to the resuming parent flow. * @param output the output attributes returned by the ended subflow * @param context the current request execution context, which gives access to the parent flow scope */ public void mapSubflowOutput(AttributeMap output, RequestContext context); }././@LongLink0000000000000000000000000000022700000000000011566 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframework/webflow/engine/WildcardTransitionCriteria.javalibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframew0000644000000000000000000000352111360615632027752 0ustar /* * Copyright 2004-2008 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.springframework.webflow.engine; import java.io.ObjectStreamException; import java.io.Serializable; import org.springframework.webflow.execution.RequestContext; /** * Transition criteria that always returns true. * * @author Keith Donald */ public class WildcardTransitionCriteria implements TransitionCriteria, Serializable { /* * Implementation note: not located in webflow.execution.support package to avoid a cyclic dependency between * webflow.execution and webflow.execution.support. */ /** * Event id value ("*") that will cause the transition to match on any event. */ public static final String WILDCARD_EVENT_ID = "*"; /** * Shared instance of a TransitionCriteria that always returns true. */ public static final WildcardTransitionCriteria INSTANCE = new WildcardTransitionCriteria(); /** * Private constructor because this is a singleton. */ private WildcardTransitionCriteria() { } public boolean test(RequestContext context) { return true; } // resolve the singleton instance private Object readResolve() throws ObjectStreamException { return INSTANCE; } public String toString() { return WILDCARD_EVENT_ID; } }././@LongLink0000000000000000000000000000023500000000000011565 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframework/webflow/engine/FlowExecutionExceptionHandlerSet.javalibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframew0000644000000000000000000001034711360615646027763 0ustar /* * Copyright 2004-2008 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.springframework.webflow.engine; import java.util.Iterator; import java.util.LinkedList; import java.util.List; import org.springframework.core.style.StylerUtils; import org.springframework.webflow.core.collection.CollectionUtils; import org.springframework.webflow.execution.FlowExecutionException; /** * A typed set of state exception handlers, mainly for use internally by artifacts that can apply state exception * handling logic. * * @see FlowExecutionExceptionHandler * @see Flow#getExceptionHandlerSet() * @see State#getExceptionHandlerSet() * * @author Keith Donald */ public class FlowExecutionExceptionHandlerSet { /** * The set of exception handlers. */ private List exceptionHandlers = new LinkedList(); /** * Add a state exception handler to this set. * @param exceptionHandler the exception handler to add * @return true if this set's contents changed as a result of the add operation */ public boolean add(FlowExecutionExceptionHandler exceptionHandler) { if (contains(exceptionHandler)) { return false; } return exceptionHandlers.add(exceptionHandler); } /** * Add a collection of state exception handler instances to this set. * @param exceptionHandlers the exception handlers to add * @return true if this set's contents changed as a result of the add operation */ public boolean addAll(FlowExecutionExceptionHandler[] exceptionHandlers) { return CollectionUtils.addAllNoDuplicates(this.exceptionHandlers, exceptionHandlers); } /** * Tests if this state exception handler is in this set. * @param exceptionHandler the exception handler * @return true if the state exception handler is contained in this set, false otherwise */ public boolean contains(FlowExecutionExceptionHandler exceptionHandler) { return exceptionHandlers.contains(exceptionHandler); } /** * Remove the exception handler instance from this set. * @param exceptionHandler the exception handler to add * @return true if this set's contents changed as a result of the remove operation */ public boolean remove(FlowExecutionExceptionHandler exceptionHandler) { return exceptionHandlers.remove(exceptionHandler); } /** * Returns the size of this state exception handler set. * @return the exception handler set size */ public int size() { return exceptionHandlers.size(); } /** * Convert this list to a typed state exception handler array. * @return the exception handler list, as a typed array */ public FlowExecutionExceptionHandler[] toArray() { return (FlowExecutionExceptionHandler[]) exceptionHandlers .toArray(new FlowExecutionExceptionHandler[exceptionHandlers.size()]); } /** * Handle an exception that occurred during the context of the current flow execution request. *

* This implementation iterates over the ordered set of exception handler objects, delegating to each handler in the * set until one handles the exception that occurred. * @param exception the exception that occurred * @param context the flow execution control context * @return true if the exception was handled */ public boolean handleException(FlowExecutionException exception, RequestControlContext context) { Iterator it = exceptionHandlers.iterator(); while (it.hasNext()) { FlowExecutionExceptionHandler handler = (FlowExecutionExceptionHandler) it.next(); if (handler.canHandle(exception)) { handler.handle(exception, context); return true; } } return false; } public String toString() { return StylerUtils.style(exceptionHandlers); } }././@LongLink0000000000000000000000000000020400000000000011561 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframework/webflow/engine/package.htmllibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframew0000644000000000000000000000057011360615634027755 0ustar

The implementation of the web flow execution engine.

The engine implementation itself is located within the {@link org.springframework.webflow.engine.impl impl} package. Builders for assembling flow definitions executable by this engine are located within the {@link org.springframework.webflow.engine.builder builder} package.

././@LongLink0000000000000000000000000000021200000000000011560 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframework/webflow/engine/TransitionSet.javalibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframew0000644000000000000000000001051711360615642027756 0ustar /* * Copyright 2004-2008 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.springframework.webflow.engine; import java.util.Iterator; import java.util.LinkedList; import java.util.List; import org.springframework.core.style.StylerUtils; import org.springframework.webflow.core.collection.CollectionUtils; import org.springframework.webflow.execution.RequestContext; /** * A typed set of transitions for use internally by artifacts that can apply transition execution logic. * * @see TransitionableState#getTransitionSet() * @see Flow#getGlobalTransitionSet() * * @author Keith Donald */ public class TransitionSet { /** * The set of transitions. */ private List transitions = new LinkedList(); /** * Add a transition to this set. * @param transition the transition to add * @return true if this set's contents changed as a result of the add operation */ public boolean add(Transition transition) { if (contains(transition)) { return false; } return transitions.add(transition); } /** * Add a collection of transition instances to this set. * @param transitions the transitions to add * @return true if this set's contents changed as a result of the add operation */ public boolean addAll(Transition[] transitions) { return CollectionUtils.addAllNoDuplicates(this.transitions, transitions); } /** * Tests if this transition is in this set. * @param transition the transition * @return true if the transition is contained in this set, false otherwise */ public boolean contains(Transition transition) { return transitions.contains(transition); } /** * Remove the transition instance from this set. * @param transition the transition to remove * @return true if this list's contents changed as a result of the remove operation */ public boolean remove(Transition transition) { return transitions.remove(transition); } /** * Returns the size of this transition set. * @return the exception handler set size */ public int size() { return transitions.size(); } /** * Returns an iterator over this transition set. * @return an iterator */ public Iterator iterator() { return transitions.iterator(); } /** * Convert this set to a typed transition array. * @return the transition set as a typed array */ public Transition[] toArray() { return (Transition[]) transitions.toArray(new Transition[transitions.size()]); } /** * Returns a list of the supported transitional criteria used to match transitions in this state. * @return the list of transitional criteria */ public TransitionCriteria[] getTransitionCriterias() { TransitionCriteria[] criterias = new TransitionCriteria[transitions.size()]; int i = 0; Iterator it = transitions.iterator(); while (it.hasNext()) { criterias[i++] = ((Transition) it.next()).getMatchingCriteria(); } return criterias; } /** * Gets a transition for given flow execution request context. The first matching transition will be returned. * @param context a flow execution context * @return the transition, or null if no transition matches */ public Transition getTransition(RequestContext context) { Iterator it = transitions.iterator(); while (it.hasNext()) { Transition transition = (Transition) it.next(); if (transition.matches(context)) { return transition; } } return null; } /** * Returns whether or not this list has a transition that will fire for given flow execution request context. * @param context a flow execution context */ public boolean hasMatchingTransition(RequestContext context) { return getTransition(context) != null; } public String toString() { return StylerUtils.style(transitions); } }././@LongLink0000000000000000000000000000020000000000000011555 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframework/webflow/engine/support/libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframew0000755000000000000000000000000011360615646027754 5ustar ././@LongLink0000000000000000000000000000023500000000000011565 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframework/webflow/engine/support/ActionTransitionCriteria.javalibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframew0000644000000000000000000000600411360615646027756 0ustar /* * Copyright 2004-2008 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.springframework.webflow.engine.support; import org.springframework.webflow.engine.TransitionCriteria; import org.springframework.webflow.execution.Action; import org.springframework.webflow.execution.ActionExecutor; import org.springframework.webflow.execution.Event; import org.springframework.webflow.execution.RequestContext; /** * A transition criteria that will execute an action when tested and return true if the action's result * is equal to the 'trueEventId', false otherwise. *

* This effectively adapts an Action to a TransitionCriteria. * * @see org.springframework.webflow.execution.Action * @see org.springframework.webflow.engine.TransitionCriteria * * @author Keith Donald * @author Erwin Vervaet */ public class ActionTransitionCriteria implements TransitionCriteria { /** * The result event id that should map to a true return value. */ private String[] trueEventIds = new String[] { "success", "yes", "true" }; /** * The action to execute when the criteria is tested, annotated with usage attributes. */ private Action action; /** * Create action transition criteria delegating to the specified action. * @param action the action */ public ActionTransitionCriteria(Action action) { this.action = action; } /** * Returns the action result eventIds that should cause this criteria to return true (it will return * false otherwise). Defaults to "success". */ public String[] getTrueEventIds() { return trueEventIds; } /** * Sets the action result eventIds that should cause this precondition to return true (it will return * false otherwise). * @param trueEventIds the true result event IDs */ public void setTrueEventIds(String[] trueEventIds) { this.trueEventIds = trueEventIds; } /** * Returns the action wrapped by this object. * @return the action */ protected Action getAction() { return action; } public boolean test(RequestContext context) { Event result = ActionExecutor.execute(getAction(), context); return result != null && isTrueEvent(result.getId()); } private boolean isTrueEvent(String eventId) { for (int i = 0; i < trueEventIds.length; i++) { if (trueEventIds[i].equals(eventId)) { return true; } } return false; } }././@LongLink0000000000000000000000000000023600000000000011566 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframework/webflow/engine/support/DefaultTransitionCriteria.javalibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframew0000644000000000000000000000423511360615642027756 0ustar /* * Copyright 2004-2008 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.springframework.webflow.engine.support; import org.springframework.binding.expression.Expression; import org.springframework.util.Assert; import org.springframework.webflow.engine.TransitionCriteria; import org.springframework.webflow.execution.RequestContext; /** * Transition criteria that tests the value of an expression. The expression is used to express a condition that guards * transition execution in a web flow. Expressions will be evaluated against the request context. Boolean, string, and * custom TransitonCriteria evaluation results are supported. * * @author Keith Donald * @author Erwin Vervaet */ public class DefaultTransitionCriteria implements TransitionCriteria { /** * The expression evaluator to use. */ private Expression expression; /** * Create a new expression based transition criteria object. * @param expression the expression evaluator testing the criteria */ public DefaultTransitionCriteria(Expression expression) { Assert.notNull(expression, "The transition criteria expression to test is required"); this.expression = expression; } public boolean test(RequestContext context) { Object result = expression.getValue(context); if (result == null) { return false; } else if (result instanceof Boolean) { return ((Boolean) result).booleanValue(); } else { String eventId = String.valueOf(result); return context.getCurrentEvent().getId().equals(eventId); } } public String toString() { return expression.toString(); } }././@LongLink0000000000000000000000000000024400000000000011565 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframework/webflow/engine/support/BeanFactoryVariableValueFactory.javalibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframew0000644000000000000000000000410411360615636027754 0ustar /* * Copyright 2004-2008 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.springframework.webflow.engine.support; import org.springframework.beans.factory.config.AutowireCapableBeanFactory; import org.springframework.core.style.ToStringCreator; import org.springframework.webflow.engine.VariableValueFactory; import org.springframework.webflow.execution.RequestContext; /** * A bean-factory backed variable value factory. Relies on an autowire-capable bean factory to wire variable value * dependencies on value creation and restoration. * * @author Keith Donald */ public class BeanFactoryVariableValueFactory implements VariableValueFactory { /** * The class of variable value. Typically a Java bean. */ private Class type; /** * The backing bean factory that will create and restore variable instances. */ private AutowireCapableBeanFactory beanFactory; /** * Creates a new bean factory variable factory. * @param type the variable class * @param beanFactory the bean factory that will create and restore variable instances. */ public BeanFactoryVariableValueFactory(Class type, AutowireCapableBeanFactory beanFactory) { this.type = type; this.beanFactory = beanFactory; } public Object createInitialValue(RequestContext context) { return beanFactory.createBean(type); } public void restoreReferences(Object value, RequestContext context) { if (value != null) { beanFactory.autowireBean(value); } } public String toString() { return new ToStringCreator(this).append("type", type).toString(); } }././@LongLink0000000000000000000000000000023700000000000011567 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframework/webflow/engine/support/DefaultTargetStateResolver.javalibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframew0000644000000000000000000000473611360615632027763 0ustar /* * Copyright 2004-2008 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.springframework.webflow.engine.support; import org.springframework.binding.expression.Expression; import org.springframework.binding.expression.support.StaticExpression; import org.springframework.util.Assert; import org.springframework.webflow.engine.Flow; import org.springframework.webflow.engine.State; import org.springframework.webflow.engine.TargetStateResolver; import org.springframework.webflow.engine.Transition; import org.springframework.webflow.execution.RequestContext; /** * A transition target state resolver that evaluates an expression to resolve the target state. The default * implementation. * * @author Keith Donald */ public class DefaultTargetStateResolver implements TargetStateResolver { /** * The expression for the target state identifier. */ private Expression targetStateIdExpression; /** * Creates a new target state resolver that always returns the same target state id. * @param targetStateId a static target target state */ public DefaultTargetStateResolver(String targetStateId) { this(new StaticExpression(targetStateId)); } /** * Creates a new target state resolver. * @param targetStateIdExpression the target state expression */ public DefaultTargetStateResolver(Expression targetStateIdExpression) { Assert.notNull(targetStateIdExpression, "The target state id expression is required"); this.targetStateIdExpression = targetStateIdExpression; } public State resolveTargetState(Transition transition, State sourceState, RequestContext context) { String targetStateId = (String) targetStateIdExpression.getValue(context); if (targetStateId != null) { return ((Flow) context.getActiveFlow()).getStateInstance(targetStateId); } else { return null; } } public String toString() { return targetStateIdExpression.toString(); } }././@LongLink0000000000000000000000000000023700000000000011567 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframework/webflow/engine/support/ActionExecutingViewFactory.javalibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframew0000644000000000000000000000564611360615642027765 0ustar /* * Copyright 2004-2008 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.springframework.webflow.engine.support; import java.io.Serializable; import org.springframework.web.util.WebUtils; import org.springframework.webflow.execution.Action; import org.springframework.webflow.execution.ActionExecutor; import org.springframework.webflow.execution.Event; import org.springframework.webflow.execution.RequestContext; import org.springframework.webflow.execution.View; import org.springframework.webflow.execution.ViewFactory; /** * A view factory implementation that creates views that execute an action when rendered. Used mainly to encapsulate an * action that renders a response. Examples include flow redirect and external redirect actions. */ public class ActionExecutingViewFactory implements ViewFactory { /** * The action to execute. */ private Action action; /** * Create a new action invoking view factory * @param action the action to execute */ public ActionExecutingViewFactory(Action action) { this.action = action; } public Action getAction() { return action; } public View getView(RequestContext context) { return new ActionExecutingView(action, context); } private static class ActionExecutingView implements View { private Action action; private RequestContext requestContext; private String eventId; private boolean userEventProcessed; private ActionExecutingView(Action action, RequestContext requestContext) { this.action = action; this.requestContext = requestContext; } public void render() { if (action != null) { ActionExecutor.execute(action, requestContext); } } public boolean userEventQueued() { return getEventId() != null; } public void processUserEvent() { userEventProcessed = true; } public Serializable getUserEventState() { return null; } public boolean hasFlowEvent() { return userEventProcessed && getEventId() != null; } public Event getFlowEvent() { if (!hasFlowEvent()) { return null; } return new Event(this, eventId); } public void saveState() { } private String getEventId() { if (eventId == null) { eventId = determineEventId(requestContext); } return this.eventId; } protected String determineEventId(RequestContext context) { return WebUtils.findParameterValue(context.getRequestParameters().asMap(), "_eventId"); } } }././@LongLink0000000000000000000000000000024200000000000011563 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframework/webflow/engine/support/GenericSubflowAttributeMapper.javalibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframew0000644000000000000000000000576211360615642027764 0ustar /* * Copyright 2004-2008 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.springframework.webflow.engine.support; import java.io.Serializable; import org.springframework.binding.mapping.Mapper; import org.springframework.binding.mapping.MappingResults; import org.springframework.core.style.ToStringCreator; import org.springframework.webflow.core.collection.AttributeMap; import org.springframework.webflow.core.collection.LocalAttributeMap; import org.springframework.webflow.core.collection.MutableAttributeMap; import org.springframework.webflow.engine.FlowInputMappingException; import org.springframework.webflow.engine.FlowOutputMappingException; import org.springframework.webflow.engine.SubflowAttributeMapper; import org.springframework.webflow.execution.RequestContext; /** * Simple flow attribute mapper that holds an input and output mapper strategy. * * @author Keith Donald */ public final class GenericSubflowAttributeMapper implements SubflowAttributeMapper, Serializable { private final Mapper inputMapper; private final Mapper outputMapper; /** * Create a new flow attribute mapper using given mapping strategies. * @param inputMapper the input mapping strategy * @param outputMapper the output mapping strategy */ public GenericSubflowAttributeMapper(Mapper inputMapper, Mapper outputMapper) { this.inputMapper = inputMapper; this.outputMapper = outputMapper; } public MutableAttributeMap createSubflowInput(RequestContext context) { if (inputMapper != null) { LocalAttributeMap input = new LocalAttributeMap(); MappingResults results = inputMapper.map(context, input); if (results != null && results.hasErrorResults()) { throw new FlowInputMappingException(context.getActiveFlow().getId(), context.getCurrentState().getId(), results); } return input; } else { return new LocalAttributeMap(); } } public void mapSubflowOutput(AttributeMap output, RequestContext context) { if (outputMapper != null && output != null) { MappingResults results = outputMapper.map(output, context); if (results != null && results.hasErrorResults()) { throw new FlowOutputMappingException(context.getActiveFlow().getId(), context.getCurrentState().getId(), results); } } } public String toString() { return new ToStringCreator(this).append("inputMapper", inputMapper).append("outputMapper", outputMapper) .toString(); } }././@LongLink0000000000000000000000000000021400000000000011562 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframework/webflow/engine/support/package.htmllibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframew0000644000000000000000000000014011360615636027750 0ustar

Support implementations the engine uses internally.

././@LongLink0000000000000000000000000000023200000000000011562 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframework/webflow/engine/support/NotTransitionCriteria.javalibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframew0000644000000000000000000000313711360615640027754 0ustar /* * Copyright 2004-2008 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.springframework.webflow.engine.support; import org.springframework.util.Assert; import org.springframework.webflow.engine.TransitionCriteria; import org.springframework.webflow.execution.RequestContext; /** * Transition criteria that negates the result of the evaluation of another criteria object. * * @author Keith Donald */ public class NotTransitionCriteria implements TransitionCriteria { /** * The criteria to negate. */ private TransitionCriteria criteria; /** * Create a new transition criteria object that will negate the result of given criteria object. * @param criteria the criteria to negate */ public NotTransitionCriteria(TransitionCriteria criteria) { Assert.notNull(criteria, "The criteria object to negate is required"); this.criteria = criteria; } public boolean test(RequestContext context) { return !criteria.test(context); } public String toString() { return "[not(" + criteria + ")]"; } }././@LongLink0000000000000000000000000000023400000000000011564 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframework/webflow/engine/support/TransitionCriteriaChain.javalibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframew0000644000000000000000000000622311360615634027756 0ustar /* * Copyright 2004-2008 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.springframework.webflow.engine.support; import java.util.Arrays; import java.util.Iterator; import java.util.LinkedList; import java.util.List; import org.springframework.core.style.ToStringCreator; import org.springframework.webflow.engine.TransitionCriteria; import org.springframework.webflow.engine.WildcardTransitionCriteria; import org.springframework.webflow.execution.Action; import org.springframework.webflow.execution.RequestContext; /** * An ordered chain of TransitionCriteria. Iterates over each element in the chain, continues until one * returns false or the list is exhausted. So in effect it will do a logical AND between the contained criteria. * * @author Keith Donald */ public class TransitionCriteriaChain implements TransitionCriteria { /** * The ordered chain of TransitionCriteria objects. */ private List criteriaChain = new LinkedList(); /** * Creates an initially empty transition criteria chain. * @see #add(TransitionCriteria) */ public TransitionCriteriaChain() { } /** * Creates a transition criteria chain with the specified criteria. * @param criteria the criteria */ public TransitionCriteriaChain(TransitionCriteria[] criteria) { criteriaChain.addAll(Arrays.asList(criteria)); } /** * Add given criteria object to the end of the chain. * @param criteria the criteria * @return this object, so multiple criteria can be added in a single statement */ public TransitionCriteriaChain add(TransitionCriteria criteria) { this.criteriaChain.add(criteria); return this; } public boolean test(RequestContext context) { Iterator it = criteriaChain.iterator(); while (it.hasNext()) { TransitionCriteria criteria = (TransitionCriteria) it.next(); if (!criteria.test(context)) { return false; } } return true; } public String toString() { return new ToStringCreator(this).append("criteriaChain", criteriaChain).toString(); } // static helpers /** * Create a transition criteria chain chaining given list of actions. * @param actions the actions (and their execution properties) to chain together */ public static TransitionCriteria criteriaChainFor(Action[] actions) { if (actions == null || actions.length == 0) { return WildcardTransitionCriteria.INSTANCE; } TransitionCriteriaChain chain = new TransitionCriteriaChain(); for (int i = 0; i < actions.length; i++) { chain.add(new ActionTransitionCriteria(actions[i])); } return chain; } }././@LongLink0000000000000000000000000000026500000000000011570 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframework/webflow/engine/support/TransitionExecutingFlowExecutionExceptionHandler.javalibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframew0000644000000000000000000001702511360615632027756 0ustar /* * Copyright 2004-2008 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.springframework.webflow.engine.support; import java.util.HashMap; import java.util.Map; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.springframework.core.style.ToStringCreator; import org.springframework.util.Assert; import org.springframework.webflow.engine.ActionList; import org.springframework.webflow.engine.FlowExecutionExceptionHandler; import org.springframework.webflow.engine.RequestControlContext; import org.springframework.webflow.engine.TargetStateResolver; import org.springframework.webflow.engine.Transition; import org.springframework.webflow.execution.FlowExecutionException; import org.springframework.webflow.execution.RequestContext; /** * A flow execution exception handler that maps the occurrence of a specific type of exception to a transition to a new * {@link org.springframework.webflow.engine.State}. *

* The handled {@link FlowExecutionException} will be exposed in flash scope as * {@link #FLOW_EXECUTION_EXCEPTION_ATTRIBUTE}. The underlying root cause of that exception will be exposed in flash * scope as {@link #ROOT_CAUSE_EXCEPTION_ATTRIBUTE}. * * @author Keith Donald */ public class TransitionExecutingFlowExecutionExceptionHandler implements FlowExecutionExceptionHandler { private static final Log logger = LogFactory.getLog(TransitionExecutingFlowExecutionExceptionHandler.class); /** * The name of the attribute to expose a handled exception under in flash scope ("flowExecutionException"). */ public static final String FLOW_EXECUTION_EXCEPTION_ATTRIBUTE = "flowExecutionException"; /** * The name of the attribute to expose a root cause of a handled exception under in flash scope * ("rootCauseException"). */ public static final String ROOT_CAUSE_EXCEPTION_ATTRIBUTE = "rootCauseException"; /** * The exceptionType to targetStateResolver map. */ private Map exceptionTargetStateMappings = new HashMap(); /** * The list of actions to execute when this handler handles an exception. */ private ActionList actionList = new ActionList(); /** * Adds an exception-to-target state mapping to this handler. * @param exceptionClass the type of exception to map * @param targetStateId the id of the state to transition to if the specified type of exception is handled * @return this handler, to allow for adding multiple mappings in a single statement */ public TransitionExecutingFlowExecutionExceptionHandler add(Class exceptionClass, String targetStateId) { return add(exceptionClass, new DefaultTargetStateResolver(targetStateId)); } /** * Adds a exception-to-target state resolver mapping to this handler. * @param exceptionClass the type of exception to map * @param targetStateResolver the resolver to calculate the state to transition to if the specified type of * exception is handled * @return this handler, to allow for adding multiple mappings in a single statement */ public TransitionExecutingFlowExecutionExceptionHandler add(Class exceptionClass, TargetStateResolver targetStateResolver) { Assert.notNull(exceptionClass, "The exception class is required"); Assert.notNull(targetStateResolver, "The target state resolver is required"); exceptionTargetStateMappings.put(exceptionClass, targetStateResolver); return this; } /** * Returns the list of actions to execute when this handler handles an exception. The returned list is mutable. */ public ActionList getActionList() { return actionList; } public boolean canHandle(FlowExecutionException e) { return getTargetStateResolver(e) != null; } public void handle(FlowExecutionException exception, RequestControlContext context) { if (logger.isDebugEnabled()) { logger.debug("Handling flow execution exception " + exception, exception); } exposeException(context, exception, findRootCause(exception)); actionList.execute(context); context.execute(new Transition(getTargetStateResolver(exception))); } // helpers /** * Exposes the given flow exception and root cause in flash scope to make them available for response rendering. * Subclasses can override this if they want to expose the exceptions in a different way or do special processing * before the exceptions are exposed. * @param context the request control context * @param exception the exception being handled * @param rootCause root cause of the exception being handled (could be null) */ protected void exposeException(RequestContext context, FlowExecutionException exception, Throwable rootCause) { // note that all Throwables are Serializable so putting them in flash // scope should not be a problem context.getFlashScope().put(FLOW_EXECUTION_EXCEPTION_ATTRIBUTE, exception); if (logger.isDebugEnabled()) { logger.debug("Exposing flow execution exception root cause " + rootCause + " under attribute '" + ROOT_CAUSE_EXCEPTION_ATTRIBUTE + "'"); } context.getFlashScope().put(ROOT_CAUSE_EXCEPTION_ATTRIBUTE, rootCause); } /** * Find the mapped target state resolver for given exception. Returns null if no mapping can be found * for given exception. Will try all exceptions in the exception cause chain. */ protected TargetStateResolver getTargetStateResolver(Throwable e) { TargetStateResolver targetStateResolver; if (isRootCause(e)) { return findTargetStateResolver(e.getClass()); } else { targetStateResolver = (TargetStateResolver) exceptionTargetStateMappings.get(e.getClass()); if (targetStateResolver != null) { return targetStateResolver; } else { return getTargetStateResolver(e.getCause()); } } } /** * Check if given exception is the root of the exception cause chain. For use with JDK 1.4 or later. */ private boolean isRootCause(Throwable t) { return t.getCause() == null; } /** * Try to find a mapped target state resolver for given exception type. Will also try to lookup using the class * hierarchy of given exception type. * @param exceptionType the exception type to lookup * @return the target state id or null if not found */ private TargetStateResolver findTargetStateResolver(Class exceptionType) { while (exceptionType != null && exceptionType != Object.class) { if (exceptionTargetStateMappings.containsKey(exceptionType)) { return (TargetStateResolver) exceptionTargetStateMappings.get(exceptionType); } else { exceptionType = exceptionType.getSuperclass(); } } return null; } /** * Find the root cause of given throwable. For use on JDK 1.4 or later. */ private Throwable findRootCause(Throwable e) { Throwable cause = e.getCause(); if (cause == null) { return e; } else { return findRootCause(cause); } } public String toString() { return new ToStringCreator(this).append("exceptionHandlingMappings", exceptionTargetStateMappings).toString(); } }././@LongLink0000000000000000000000000000020400000000000011561 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframework/webflow/engine/History.javalibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframew0000644000000000000000000000274411360615636027764 0ustar /* * Copyright 2004-2008 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.springframework.webflow.engine; import org.springframework.core.enums.StaticLabeledEnum; /** * View state history policies. * * @see ViewState * @author Keith Donald */ public class History extends StaticLabeledEnum { /** * The history of the view state should be preserved when the view state exits to support back-tracking. */ public static final History PRESERVE = new History(0, "preserve"); /** * The history of the view state should be discarded when the view state exits to prevent back-tracking. */ public static final History DISCARD = new History(1, "discard"); /** * The history of the view state and all previous view state should be invalidated to completely restrict back * tracking. */ public static final History INVALIDATE = new History(2, "invalidate"); private History(int code, String label) { super(code, label); } } ././@LongLink0000000000000000000000000000022000000000000011557 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframework/webflow/engine/TransitionableState.javalibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframew0000644000000000000000000001144011360615632027751 0ustar /* * Copyright 2004-2008 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.springframework.webflow.engine; import java.util.Iterator; import org.springframework.core.style.StylerUtils; import org.springframework.core.style.ToStringCreator; import org.springframework.webflow.definition.TransitionDefinition; import org.springframework.webflow.definition.TransitionableStateDefinition; import org.springframework.webflow.execution.RequestContext; /** * Abstract superclass for states that can execute a transition in response to an event. * * @see org.springframework.webflow.engine.Transition * @see org.springframework.webflow.engine.TransitionCriteria * * @author Keith Donald * @author Erwin Vervaet */ public abstract class TransitionableState extends State implements TransitionableStateDefinition { /** * The set of possible transitions out of this state. */ private TransitionSet transitions = new TransitionSet(); /** * An actions to execute when exiting this state. */ private ActionList exitActionList = new ActionList(); /** * Create a new transitionable state. * @param flow the owning flow * @param id the state identifier (must be unique to the flow) * @throws IllegalArgumentException when this state cannot be added to given flow, for instance when the id is not * unique * @see State#State(Flow, String) * @see #getTransitionSet() */ protected TransitionableState(Flow flow, String id) throws IllegalArgumentException { super(flow, id); } // implementing TranstionableStateDefinition public TransitionDefinition[] getTransitions() { return getTransitionSet().toArray(); } public TransitionDefinition getTransition(String eventId) { for (Iterator it = transitions.iterator(); it.hasNext();) { Transition transition = (Transition) it.next(); if (transition.getId().equals(eventId)) { return transition; } } return null; } // impl /** * Returns the set of transitions. The returned set is mutable. */ public TransitionSet getTransitionSet() { return transitions; } /** * Get a transition in this state for given flow execution request context. Throws and exception when there is no * corresponding transition. * @throws NoMatchingTransitionException when a matching transition cannot be found */ public Transition getRequiredTransition(RequestContext context) throws NoMatchingTransitionException { Transition transition = getTransitionSet().getTransition(context); if (transition == null) { throw new NoMatchingTransitionException(getFlow().getId(), getId(), context.getCurrentEvent(), "No transition found on occurence of event '" + context.getCurrentEvent() + "' in state '" + getId() + "' of flow '" + getFlow().getId() + "' -- valid transitional criteria are " + StylerUtils.style(getTransitionSet().getTransitionCriterias()) + " -- likely programmer error, check the set of TransitionCriteria for this state"); } return transition; } /** * Returns the list of actions executed by this state when it is exited. The returned list is mutable. * @return the state exit action list */ public ActionList getExitActionList() { return exitActionList; } // behavioral methods /** * Inform this state definition that an event was signaled in it. The signaled event is the last event available in * given request context ({@link RequestContext#getCurrentEvent()}). * @param context the flow execution control context * @throws NoMatchingTransitionException when a matching transition cannot be found */ public boolean handleEvent(RequestControlContext context) throws NoMatchingTransitionException { return context.execute(getRequiredTransition(context)); } /** * Exit this state. This is typically called when a transition takes the flow out of this state into another state. * By default just executes any registered exit actions. * @param context the flow control context */ public void exit(RequestControlContext context) { exitActionList.execute(context); } protected void appendToString(ToStringCreator creator) { creator.append("transitions", transitions).append("exitActionList", exitActionList); } }././@LongLink0000000000000000000000000000023200000000000011562 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframework/webflow/engine/FlowExecutionExceptionHandler.javalibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframew0000644000000000000000000000564411360615644027765 0ustar /* * Copyright 2004-2008 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.springframework.webflow.engine; import org.springframework.webflow.engine.support.TransitionExecutingFlowExecutionExceptionHandler; import org.springframework.webflow.execution.FlowExecutionException; /** * A strategy for handling an exception that occurs at runtime during an active flow execution. * * Note: special care should be taken when implementing custom flow execution exception handlers. Exception handlers are * like Transitions in that they direct flow control when exceptions occur. They are more complex than Actions, which * can only execute behaviors and return results that drive flow control. For this reason, if implemented incorrectly, a * FlowExecutionHandler can leave a flow execution in an invalid state, which can render the flow execution unusable or * its future use undefined. For example, if an exception thrown at flow session startup gets routed to an exception * handler, the handler must take responsibility for ensuring the flow execution returns control to the caller in a * consistent state. Concretely, this means the exception handler must transition the flow to its start state. The * handler should not simply return leaving the flow with no current state set. * * Note: Because flow execution handlers are more difficult to implement correctly, consider catching exceptions in your * web flow action code and returning result events that drive standard transitions. Alternatively, consider use of the * existing {@link TransitionExecutingFlowExecutionExceptionHandler} which illustrates the proper way to implement an * exception handler. * * @author Keith Donald */ public interface FlowExecutionExceptionHandler { /** * Can this handler handle the given exception? * @param exception the exception that occurred * @return true if yes, false if no */ public boolean canHandle(FlowExecutionException exception); /** * Handle the exception in the context of the current request. An implementation is expected to transition the flow * to a state using {@link RequestControlContext#execute(Transition)}. * @param exception the exception that occurred * @param context the execution control context for this request */ public void handle(FlowExecutionException exception, RequestControlContext context); } ././@LongLink0000000000000000000000000000022600000000000011565 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframework/webflow/engine/FlowInputMappingException.javalibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframew0000644000000000000000000000336711360615632027762 0ustar /* * Copyright 2004-2008 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.springframework.webflow.engine; import org.springframework.binding.mapping.MappingResults; /** * Thrown when flow input mapping fails. * * @author Keith Donald */ public class FlowInputMappingException extends FlowAttributeMappingException { /** * Creates a new flow input mapping exception. * @param flowId the id of the flow where input mapping failed * @param results the mapping errors with errors */ public FlowInputMappingException(String flowId, MappingResults results) { super(flowId, null, results, "Errors occurred during input mapping on startup of the '" + flowId + "' flow; errors = " + results.getErrorResults()); } /** * Creates a new flow input mapping exception. * @param flowId the id of the flow where input mapping failed * @param stateId the state where input mapping failed * @param results the mapping errors with errors */ public FlowInputMappingException(String flowId, String stateId, MappingResults results) { super(flowId, stateId, results, "Errors occurred during input mapping in state '" + stateId + "' of flow '" + flowId + "'; errors = " + results.getErrorResults()); } } ././@LongLink0000000000000000000000000000020500000000000011562 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframework/webflow/engine/EndState.javalibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframew0000644000000000000000000001252111360615632027752 0ustar /* * Copyright 2004-2008 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.springframework.webflow.engine; import org.springframework.binding.mapping.Mapper; import org.springframework.binding.mapping.MappingResults; import org.springframework.core.style.ToStringCreator; import org.springframework.webflow.core.collection.LocalAttributeMap; import org.springframework.webflow.execution.Action; import org.springframework.webflow.execution.ActionExecutor; import org.springframework.webflow.execution.FlowExecutionException; import org.springframework.webflow.execution.FlowSession; import org.springframework.webflow.execution.RequestContext; /** * A state that ends a flow when entered. This state ends the active flow session of an ongoing flow execution. *

* If the ended session is the "root flow session" the entire flow execution ends, signaling the end of a logical * conversation. *

* If the terminated session was acting as a subflow, the flow execution continues and control is returned to the parent * flow session. In that case, this state returns an ending result event the resuming parent flow responds to. *

* An end state may be configured with a renderer to render a final response. This renderer will be invoked if the end * state terminates the entire flow execution. * * @see org.springframework.webflow.engine.SubflowState * * @author Keith Donald * @author Colin Sampaleanu * @author Erwin Vervaet */ public class EndState extends State { /** * The renderer that will render the final response when a flow execution terminates. */ private Action finalResponseAction; /** * The attribute mapper for mapping output attributes exposed by this end state when it is entered. */ private Mapper outputMapper; /** * Create a new end state with no associated view. * @param flow the owning flow * @param id the state identifier (must be unique to the flow) * @throws IllegalArgumentException when this state cannot be added to given flow, e.g. because the id is not unique * @see State#State(Flow, String) * @see #setFinalResponseAction(Action) * @see #setOutputMapper(Mapper) */ public EndState(Flow flow, String id) throws IllegalArgumentException { super(flow, id); } /** * Sets the renderer that will render the final flow execution response. */ public void setFinalResponseAction(Action finalResponseAction) { this.finalResponseAction = finalResponseAction; } /** * Sets the attribute mapper to use for mapping output attributes exposed by this end state when it is entered. */ public void setOutputMapper(Mapper outputMapper) { this.outputMapper = outputMapper; } /** * Specialization of State's doEnter template method that executes behavior specific to this state type * in polymorphic fashion. *

* This implementation pops the top (active) flow session off the execution stack, ending it, and resumes control in * the parent flow (if necessary). If the ended session is the root flow, a final response is rendered. * @param context the control context for the currently executing flow, used by this state to manipulate the flow * execution * @throws FlowExecutionException if an exception occurs in this state */ protected void doEnter(final RequestControlContext context) throws FlowExecutionException { FlowSession activeSession = context.getFlowExecutionContext().getActiveSession(); if (activeSession.isRoot()) { // entire flow execution is ending; issue the final response if (finalResponseAction != null && !context.getExternalContext().isResponseComplete()) { ActionExecutor.execute(finalResponseAction, context); context.getExternalContext().recordResponseComplete(); } context.endActiveFlowSession(getId(), createSessionOutput(context)); } else { // there is a parent flow that will resume (this flow is a subflow) LocalAttributeMap sessionOutput = createSessionOutput(context); context.endActiveFlowSession(getId(), sessionOutput); } } /** * Returns the subflow output map. This will invoke the output mapper (if any) to map data available in the flow * execution request context into a newly created empty map. */ protected LocalAttributeMap createSessionOutput(RequestContext context) { LocalAttributeMap output = new LocalAttributeMap(); if (outputMapper != null) { MappingResults results = outputMapper.map(context, output); if (results != null && results.hasErrorResults()) { throw new FlowOutputMappingException(getOwner().getId(), getId(), results); } } return output; } protected void appendToString(ToStringCreator creator) { creator.append("finalResponseAction", finalResponseAction).append("outputMapper", outputMapper); } }././@LongLink0000000000000000000000000000017600000000000011571 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframework/webflow/engine/model/libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframew0000755000000000000000000000000011360615644027752 5ustar ././@LongLink0000000000000000000000000000022700000000000011566 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframework/webflow/engine/model/AbstractMappingModel.javalibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframew0000644000000000000000000000422611360615632027755 0ustar /* * Copyright 2004-2008 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.springframework.webflow.engine.model; import org.springframework.util.StringUtils; /** * Model support for mappings. * * @author Scott Andrews */ public abstract class AbstractMappingModel extends AbstractModel { private String name; private String value; private String type; private String required; protected AbstractMappingModel fillCopy(AbstractMappingModel copy) { copy.setName(name); copy.setValue(value); copy.setType(type); copy.setRequired(required); return copy; } /** * @return the name */ public String getName() { return name; } /** * @param name the name to set */ public void setName(String name) { if (StringUtils.hasText(name)) { this.name = name; } else { this.name = null; } } /** * @return the value */ public String getValue() { return value; } /** * @param value the value to set */ public void setValue(String value) { if (StringUtils.hasText(value)) { this.value = value; } else { this.value = null; } } /** * @return the type */ public String getType() { return type; } /** * @param type the type to set */ public void setType(String type) { if (StringUtils.hasText(type)) { this.type = type; } else { this.type = null; } } /** * @return the required */ public String getRequired() { return required; } /** * @param required the required to set */ public void setRequired(String required) { if (StringUtils.hasText(required)) { this.required = required; } else { this.required = null; } } } ././@LongLink0000000000000000000000000000021600000000000011564 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframework/webflow/engine/model/RenderModel.javalibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframew0000644000000000000000000000307311360615640027753 0ustar /* * Copyright 2004-2008 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.springframework.webflow.engine.model; import org.springframework.util.StringUtils; /** * Model support for render actions. *

* Requests that the next view render a fragment of content. Multiple fragments may be specified using a comma * delimiter. * * @author Scott Andrews */ public class RenderModel extends AbstractActionModel { private String fragments; public Model createCopy() { RenderModel copy = new RenderModel(fragments); super.fillCopy(copy); return copy; } /** * Create a render action model * @param fragments the fragments to render */ public RenderModel(String fragments) { setFragments(fragments); } /** * @return the fragments */ public String getFragments() { return fragments; } /** * @param fragments the fragments to set */ public void setFragments(String fragments) { if (StringUtils.hasText(fragments)) { this.fragments = fragments; } else { this.fragments = null; } } } ././@LongLink0000000000000000000000000000021500000000000011563 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframework/webflow/engine/model/InputModel.javalibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframew0000644000000000000000000000326011360615644027755 0ustar /* * Copyright 2004-2008 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.springframework.webflow.engine.model; import org.springframework.util.ObjectUtils; /** * Model support for input mappings. *

* Maps a single input attribute into this flow or subflow. * * @author Scott Andrews */ public class InputModel extends AbstractMappingModel { /** * Create an input mapping model * @param name the name of the mapping variable * @param value the value to map */ public InputModel(String name, String value) { setName(name); setValue(value); } public boolean isMergeableWith(Model model) { if (!(model instanceof InputModel)) { return false; } InputModel input = (InputModel) model; return ObjectUtils.nullSafeEquals(getName(), input.getName()); } public void merge(Model model) { InputModel input = (InputModel) model; setValue(merge(getValue(), input.getValue())); setType(merge(getType(), input.getType())); setRequired(merge(getRequired(), input.getRequired())); } public Model createCopy() { InputModel copy = new InputModel(getName(), getValue()); super.fillCopy(copy); return copy; } } ././@LongLink0000000000000000000000000000022000000000000011557 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframework/webflow/engine/model/EvaluateModel.javalibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframew0000644000000000000000000000433611360615632027757 0ustar /* * Copyright 2004-2008 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.springframework.webflow.engine.model; import org.springframework.util.StringUtils; /** * Model support for evaluate actions. *

* Evaluates an expression against the flow request context. * * @author Scott Andrews */ public class EvaluateModel extends AbstractActionModel { private String expression; private String result; private String resultType; /** * Create an evaluate action model * @param expression the expression to evaluate */ public EvaluateModel(String expression) { setExpression(expression); } public Model createCopy() { EvaluateModel copy = new EvaluateModel(expression); super.fillCopy(copy); copy.setResult(result); copy.setResultType(resultType); return copy; } /** * @return the expression */ public String getExpression() { return expression; } /** * @param expression the expression to set */ public void setExpression(String expression) { if (StringUtils.hasText(expression)) { this.expression = expression; } else { this.expression = null; } } /** * @return the result */ public String getResult() { return result; } /** * @param result the result to set */ public void setResult(String result) { if (StringUtils.hasText(result)) { this.result = result; } else { this.result = null; } } /** * @return the result type */ public String getResultType() { return resultType; } /** * @param resultType the result type to set */ public void setResultType(String resultType) { if (StringUtils.hasText(resultType)) { this.resultType = resultType; } else { this.resultType = null; } } } ././@LongLink0000000000000000000000000000022100000000000011560 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframework/webflow/engine/model/ViewStateModel.javalibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframew0000644000000000000000000001060611360615634027756 0ustar /* * Copyright 2004-2008 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.springframework.webflow.engine.model; import java.util.LinkedList; import org.springframework.util.ObjectUtils; import org.springframework.util.StringUtils; /** * Model support for view states. * * @author Scott Andrews */ public class ViewStateModel extends AbstractTransitionableStateModel { private String view; private String redirect; private String popup; private String model; private LinkedList vars; private BinderModel binder; private LinkedList onRenderActions; /** * Create a view state model * @param id the identifier of the state */ public ViewStateModel(String id) { super(id); } public boolean isMergeableWith(Model model) { if (!(model instanceof ViewStateModel)) { return false; } ViewStateModel state = (ViewStateModel) model; return ObjectUtils.nullSafeEquals(getId(), state.getId()); } public void merge(Model model) { ViewStateModel state = (ViewStateModel) model; setParent(null); setAttributes(merge(getAttributes(), state.getAttributes())); setSecured((SecuredModel) merge(getSecured(), state.getSecured())); setOnEntryActions(merge(getOnEntryActions(), state.getOnEntryActions(), false)); setExceptionHandlers(merge(getExceptionHandlers(), state.getExceptionHandlers())); setTransitions(merge(getTransitions(), state.getTransitions())); setOnExitActions(merge(getOnExitActions(), state.getOnExitActions(), false)); setView(merge(getView(), state.getView())); setRedirect(merge(getRedirect(), state.getRedirect())); setPopup(merge(getPopup(), state.getPopup())); setModel(merge(getModel(), state.getModel())); setVars(merge(getVars(), state.getVars(), false)); setBinder((BinderModel) merge(getBinder(), state.getBinder())); setOnRenderActions(merge(getOnRenderActions(), state.getOnRenderActions(), false)); } public Model createCopy() { ViewStateModel copy = new ViewStateModel(getId()); super.fillCopy(copy); copy.setView(view); copy.setRedirect(redirect); copy.setPopup(popup); copy.setModel(model); copy.setVars(copyList(vars)); copy.setBinder((BinderModel) copy(binder)); copy.setOnRenderActions(copyList(onRenderActions)); return copy; } /** * @return the view */ public String getView() { return view; } /** * @param view the view to set */ public void setView(String view) { if (StringUtils.hasText(view)) { this.view = view; } else { this.view = null; } } /** * @return the redirect */ public String getRedirect() { return redirect; } /** * @param redirect the redirect to set */ public void setRedirect(String redirect) { if (StringUtils.hasText(redirect)) { this.redirect = redirect; } else { this.redirect = null; } } /** * @return the popup */ public String getPopup() { return popup; } /** * @param popup the popup to set */ public void setPopup(String popup) { if (StringUtils.hasText(popup)) { this.popup = popup; } else { this.popup = null; } } /** * @return the model */ public String getModel() { return model; } /** * @param model the model to set */ public void setModel(String model) { if (StringUtils.hasText(model)) { this.model = model; } else { this.model = null; } } /** * @return the vars */ public LinkedList getVars() { return vars; } /** * @param vars the vars to set */ public void setVars(LinkedList vars) { this.vars = vars; } public BinderModel getBinder() { return binder; } public void setBinder(BinderModel binder) { this.binder = binder; } /** * @return the on render actions */ public LinkedList getOnRenderActions() { return onRenderActions; } /** * @param onRenderActions the on render actions to set */ public void setOnRenderActions(LinkedList onRenderActions) { this.onRenderActions = onRenderActions; } } ././@LongLink0000000000000000000000000000021600000000000011564 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframework/webflow/engine/model/OutputModel.javalibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframew0000644000000000000000000000330511360615632027752 0ustar /* * Copyright 2004-2008 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.springframework.webflow.engine.model; import org.springframework.util.ObjectUtils; /** * Model support for output mappings. *

* Maps a single output attribute out of this flow or subflow. * * @author Scott Andrews */ public class OutputModel extends AbstractMappingModel { /** * Create an output mapping model * @param name the name of the mapping variable * @param value the value to map */ public OutputModel(String name, String value) { setName(name); setValue(value); } public boolean isMergeableWith(Model model) { if (!(model instanceof OutputModel)) { return false; } OutputModel output = (OutputModel) model; return ObjectUtils.nullSafeEquals(getName(), output.getName()); } public void merge(Model model) { OutputModel output = (OutputModel) model; setValue(merge(getValue(), output.getValue())); setType(merge(getType(), output.getType())); setRequired(merge(getRequired(), output.getRequired())); } public Model createCopy() { OutputModel copy = new OutputModel(getName(), getValue()); super.fillCopy(copy); return copy; } } ././@LongLink0000000000000000000000000000021200000000000011560 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframework/webflow/engine/model/IfModel.javalibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframew0000644000000000000000000000524311360615634027757 0ustar /* * Copyright 2004-2008 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.springframework.webflow.engine.model; import org.springframework.util.ObjectUtils; import org.springframework.util.StringUtils; /** * Model support for if elements. *

* Defines a boolean expression to evaluate a target state to transition to if that expression evaluates to true. * Optionally, this element may define an 'else' attribute to define a state to transition to if the expression * evaluates to false. * * @author Scott Andrews */ public class IfModel extends AbstractModel { private String test; private String then; private String elze; /** * Create an if model * @param test the boolean condition to test * @param then the state to transition to if the boolean expression evaluates to true */ public IfModel(String test, String then) { setTest(test); setThen(then); } public boolean isMergeableWith(Model model) { if (!(model instanceof IfModel)) { return false; } IfModel conditional = (IfModel) model; return ObjectUtils.nullSafeEquals(getTest(), conditional.getTest()); } public void merge(Model model) { IfModel conditional = (IfModel) model; setThen(merge(getThen(), conditional.getThen())); setElse(merge(getElse(), conditional.getElse())); } public Model createCopy() { IfModel copy = new IfModel(test, then); copy.setElse(elze); return copy; } /** * @return the test */ public String getTest() { return test; } /** * @param test the test to set */ public void setTest(String test) { if (StringUtils.hasText(test)) { this.test = test; } else { this.test = null; } } /** * @return the then */ public String getThen() { return then; } /** * @param then the then to set */ public void setThen(String then) { if (StringUtils.hasText(then)) { this.then = then; } else { this.then = null; } } /** * @return the else */ public String getElse() { return elze; } /** * @param elze the else to set */ public void setElse(String elze) { if (StringUtils.hasText(elze)) { this.elze = elze; } else { this.elze = null; } } } ././@LongLink0000000000000000000000000000021700000000000011565 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframework/webflow/engine/model/BindingModel.javalibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframew0000644000000000000000000000465111360615640027756 0ustar /* * Copyright 2004-2008 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.springframework.webflow.engine.model; import org.springframework.util.ObjectUtils; import org.springframework.util.StringUtils; /** * Model support for binding elements. * @author Scott Andrews */ public class BindingModel extends AbstractModel { private String property; private String converter; private String required; /** * Create a binding model * @param property the name of the bound property * @param converter the converter * @param required required status */ public BindingModel(String property, String converter, String required) { setProperty(property); setConverter(converter); setRequired(required); } public boolean isMergeableWith(Model model) { if (!(model instanceof BindingModel)) { return false; } BindingModel binding = (BindingModel) model; return ObjectUtils.nullSafeEquals(getProperty(), binding.getProperty()); } public void merge(Model model) { BindingModel binding = (BindingModel) model; setConverter(merge(getConverter(), binding.getConverter())); setRequired(merge(getRequired(), binding.getRequired())); } public Model createCopy() { return new BindingModel(property, converter, required); } public String getProperty() { return property; } public void setProperty(String property) { if (StringUtils.hasText(property)) { this.property = property; } else { this.property = null; } } public String getConverter() { return converter; } public void setConverter(String converter) { if (StringUtils.hasText(converter)) { this.converter = converter; } else { this.converter = null; } } public String getRequired() { return required; } public void setRequired(String required) { if (StringUtils.hasText(required)) { this.required = required; } else { this.required = null; } } } ././@LongLink0000000000000000000000000000022200000000000011561 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframework/webflow/engine/model/TransitionModel.javalibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframew0000644000000000000000000001204711360615632027755 0ustar /* * Copyright 2004-2008 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.springframework.webflow.engine.model; import java.util.LinkedList; import org.springframework.util.ObjectUtils; import org.springframework.util.StringUtils; /** * Model support for transitions. *

* A path from this state to another state triggered by an event. Transitions may execute one or more actions. All * transition actions must execute successfully for the transition itself to complete. If no transition target is * specified, the transition acts as a simple event handler and does not change the state of the flow. * * @author Scott Andrews */ public class TransitionModel extends AbstractModel { private String on; private String onException; private String to; private String bind; private String validate; private String history; private LinkedList attributes; private SecuredModel secured; private LinkedList actions; /** * Create a transition model */ public TransitionModel() { } public boolean isMergeableWith(Model model) { if (!(model instanceof TransitionModel)) { return false; } TransitionModel transition = (TransitionModel) model; return ObjectUtils.nullSafeEquals(getOn(), transition.getOn()) && ObjectUtils.nullSafeEquals(getOnException(), transition.getOnException()); } public void merge(Model model) { TransitionModel transition = (TransitionModel) model; setOnException(merge(getOnException(), transition.getOnException())); setTo(merge(getTo(), transition.getTo())); setBind(merge(getBind(), transition.getBind())); setValidate(merge(getValidate(), transition.getValidate())); setHistory(merge(getHistory(), transition.getHistory())); setAttributes(merge(getAttributes(), transition.getAttributes())); setSecured((SecuredModel) merge(getSecured(), transition.getSecured())); setActions(merge(getActions(), transition.getActions(), false)); } public Model createCopy() { TransitionModel copy = new TransitionModel(); copy.setOn(on); copy.setOnException(onException); copy.setTo(to); copy.setBind(bind); copy.setValidate(validate); copy.setHistory(history); copy.setAttributes(copyList(attributes)); copy.setSecured((SecuredModel) copy(secured)); copy.setActions(copyList(actions)); return copy; } /** * @return the on */ public String getOn() { return on; } /** * @param on the on to set */ public void setOn(String on) { if (StringUtils.hasText(on)) { this.on = on; } else { this.on = null; } } /** * @return the on exception */ public String getOnException() { return onException; } /** * @param onException the on exception to set */ public void setOnException(String onException) { if (StringUtils.hasText(onException)) { this.onException = onException; } else { this.onException = null; } } /** * @return the to */ public String getTo() { return to; } /** * @param to the to to set */ public void setTo(String to) { if (StringUtils.hasText(to)) { this.to = to; } else { this.to = null; } } /** * @return the bind */ public String getBind() { return bind; } /** * @param bind the bind to set */ public void setBind(String bind) { if (StringUtils.hasText(bind)) { this.bind = bind; } else { this.bind = null; } } /** * @return the validate */ public String getValidate() { return validate; } /** * @param validate the validate to set */ public void setValidate(String validate) { if (StringUtils.hasText(validate)) { this.validate = validate; } else { this.validate = null; } } /** * @return the history */ public String getHistory() { return history; } /** * @param history the history to set */ public void setHistory(String history) { if (StringUtils.hasText(history)) { this.history = history; } else { this.history = null; } } /** * @return the attributes */ public LinkedList getAttributes() { return attributes; } /** * @param attributes the attributes to set */ public void setAttributes(LinkedList attributes) { this.attributes = attributes; } /** * @return the secured */ public SecuredModel getSecured() { return secured; } /** * @param secured the secured to set */ public void setSecured(SecuredModel secured) { this.secured = secured; } /** * @return the actions */ public LinkedList getActions() { return actions; } /** * @param actions the actions to set */ public void setActions(LinkedList actions) { this.actions = actions; } } ././@LongLink0000000000000000000000000000020600000000000011563 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframework/webflow/engine/model/builder/libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframew0000755000000000000000000000000011360615646027754 5ustar ././@LongLink0000000000000000000000000000021200000000000011560 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframework/webflow/engine/model/builder/xml/libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframew0000755000000000000000000000000011360615644027752 5ustar ././@LongLink0000000000000000000000000000023500000000000011565 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframework/webflow/engine/model/builder/xml/DocumentLoader.javalibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframew0000644000000000000000000000305411360615636027757 0ustar /* * Copyright 2004-2008 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.springframework.webflow.engine.model.builder.xml; import java.io.IOException; import javax.xml.parsers.ParserConfigurationException; import org.springframework.core.io.Resource; import org.w3c.dom.Document; import org.xml.sax.SAXException; /** * A generic strategy interface encapsulating the logic to load an XML-based document. * * @author Keith Donald */ public interface DocumentLoader { /** * Load the XML-based document from the external resource. * @param resource the document resource * @return the loaded (parsed) document * @throws IOException an exception occured accessing the resource input stream * @throws ParserConfigurationException an exception occured building the document parser * @throws SAXException a error occured during document parsing */ public Document loadDocument(Resource resource) throws IOException, ParserConfigurationException, SAXException; }././@LongLink0000000000000000000000000000024200000000000011563 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframework/webflow/engine/model/builder/xml/XmlFlowModelBuilder.javalibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframew0000644000000000000000000005732611360615632027766 0ustar /* * Copyright 2004-2008 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.springframework.webflow.engine.model.builder.xml; import java.io.IOException; import java.util.Arrays; import java.util.Iterator; import java.util.LinkedList; import java.util.List; import javax.xml.parsers.ParserConfigurationException; import org.springframework.core.io.Resource; import org.springframework.core.style.ToStringCreator; import org.springframework.util.Assert; import org.springframework.util.StringUtils; import org.springframework.util.xml.DomUtils; import org.springframework.webflow.engine.model.AbstractActionModel; import org.springframework.webflow.engine.model.AbstractStateModel; import org.springframework.webflow.engine.model.ActionStateModel; import org.springframework.webflow.engine.model.AttributeModel; import org.springframework.webflow.engine.model.BeanImportModel; import org.springframework.webflow.engine.model.BinderModel; import org.springframework.webflow.engine.model.BindingModel; import org.springframework.webflow.engine.model.DecisionStateModel; import org.springframework.webflow.engine.model.EndStateModel; import org.springframework.webflow.engine.model.EvaluateModel; import org.springframework.webflow.engine.model.ExceptionHandlerModel; import org.springframework.webflow.engine.model.FlowModel; import org.springframework.webflow.engine.model.IfModel; import org.springframework.webflow.engine.model.InputModel; import org.springframework.webflow.engine.model.OutputModel; import org.springframework.webflow.engine.model.PersistenceContextModel; import org.springframework.webflow.engine.model.RenderModel; import org.springframework.webflow.engine.model.SecuredModel; import org.springframework.webflow.engine.model.SetModel; import org.springframework.webflow.engine.model.SubflowStateModel; import org.springframework.webflow.engine.model.TransitionModel; import org.springframework.webflow.engine.model.VarModel; import org.springframework.webflow.engine.model.ViewStateModel; import org.springframework.webflow.engine.model.builder.FlowModelBuilder; import org.springframework.webflow.engine.model.builder.FlowModelBuilderException; import org.springframework.webflow.engine.model.registry.FlowModelLocator; import org.springframework.webflow.engine.model.registry.NoSuchFlowModelException; import org.w3c.dom.Document; import org.w3c.dom.Element; import org.xml.sax.SAXException; /** * Builds a flow model from a XML-based flow definition resource. * * @author Keith Donald * @author Scott Andrews */ public class XmlFlowModelBuilder implements FlowModelBuilder { private Resource resource; private FlowModelLocator modelLocator; private DocumentLoader documentLoader = new DefaultDocumentLoader(); private Document document; private long lastModifiedTimestamp; private FlowModel flowModel; /** * Create a new XML flow model builder that will parse the XML document at the specified resource location and use * the provided locator to access parent flow models. * @param resource the path to the XML flow definition (required) */ public XmlFlowModelBuilder(Resource resource) { init(resource, null); } /** * Create a new XML flow model builder that will parse the XML document at the specified resource location and use * the provided locator to access parent flow models. * @param resource the path to the XML flow definition (required) * @param modelLocator a locator for parent flow models to support flow inheritance */ public XmlFlowModelBuilder(Resource resource, FlowModelLocator modelLocator) { init(resource, modelLocator); } /** * Sets the loader that will load the XML-based flow definition document. Optional, defaults to * {@link DefaultDocumentLoader}. * @param documentLoader the document loader */ public void setDocumentLoader(DocumentLoader documentLoader) { Assert.notNull(documentLoader, "The XML document loader is required"); this.documentLoader = documentLoader; } public void init() throws FlowModelBuilderException { try { document = documentLoader.loadDocument(resource); initLastModifiedTimestamp(); } catch (IOException e) { throw new FlowModelBuilderException("Could not access the XML flow definition at " + resource, e); } catch (ParserConfigurationException e) { throw new FlowModelBuilderException("Could not configure the parser to parse the XML flow definition at " + resource, e); } catch (SAXException e) { throw new FlowModelBuilderException("Could not parse the XML flow definition document at " + resource, e); } } public void build() throws FlowModelBuilderException { if (getDocumentElement() == null) { throw new FlowModelBuilderException( "The FlowModelBuilder must be initialized first -- called init() before calling build()"); } flowModel = parseFlow(getDocumentElement()); mergeFlows(); mergeStates(); } public FlowModel getFlowModel() throws FlowModelBuilderException { if (flowModel == null) { throw new FlowModelBuilderException( "The FlowModel must be built first -- called init() and build() before calling getFlowModel()"); } return flowModel; } public void dispose() throws FlowModelBuilderException { document = null; flowModel = null; } public Resource getFlowModelResource() { return resource; } public boolean hasFlowModelResourceChanged() { if (lastModifiedTimestamp == -1) { return false; } try { long lastModified = resource.lastModified(); if (lastModified > lastModifiedTimestamp) { return true; } else { return false; } } catch (IOException e) { return false; } } /** * Returns the DOM document parsed from the XML file. */ protected Document getDocument() { return document; } /** * Returns the root document element. */ protected Element getDocumentElement() { return document != null ? document.getDocumentElement() : null; } private void init(Resource resource, FlowModelLocator modelLocator) { Assert.notNull(resource, "The location of the XML-based flow definition is required"); this.resource = resource; this.modelLocator = modelLocator; } private void initLastModifiedTimestamp() { try { lastModifiedTimestamp = resource.lastModified(); } catch (IOException e) { lastModifiedTimestamp = -1; } } private FlowModel parseFlow(Element element) { FlowModel flow = new FlowModel(); flow.setAbstract(element.getAttribute("abstract")); flow.setParent(element.getAttribute("parent")); flow.setStartStateId(element.getAttribute("start-state")); flow.setAttributes(parseAttributes(element)); flow.setSecured(parseSecured(element)); flow.setPersistenceContext(parsePersistenceContext(element)); flow.setVars(parseVars(element)); flow.setInputs(parseInputs(element)); flow.setOnStartActions(parseOnStartActions(element)); flow.setStates(parseStates(element)); flow.setGlobalTransitions(parseGlobalTransitions(element)); flow.setOnEndActions(parseOnEndActions(element)); flow.setOutputs(parseOutputs(element)); flow.setExceptionHandlers(parseExceptionHandlers(element)); flow.setBeanImports(parseBeanImports(element)); return flow; } private LinkedList parseAttributes(Element element) { List attributeElements = DomUtils.getChildElementsByTagName(element, "attribute"); if (attributeElements.isEmpty()) { return null; } LinkedList attributes = new LinkedList(); for (Iterator it = attributeElements.iterator(); it.hasNext();) { attributes.add(parseAttribute((Element) it.next())); } return attributes; } private LinkedList parseVars(Element element) { List varElements = DomUtils.getChildElementsByTagName(element, "var"); if (varElements.isEmpty()) { return null; } LinkedList vars = new LinkedList(); for (Iterator it = varElements.iterator(); it.hasNext();) { vars.add(parseVar((Element) it.next())); } return vars; } private LinkedList parseInputs(Element element) { List inputElements = DomUtils.getChildElementsByTagName(element, "input"); if (inputElements.isEmpty()) { return null; } LinkedList inputs = new LinkedList(); for (Iterator it = inputElements.iterator(); it.hasNext();) { inputs.add(parseInput((Element) it.next())); } return inputs; } private LinkedList parseOutputs(Element element) { List outputElements = DomUtils.getChildElementsByTagName(element, "output"); if (outputElements.isEmpty()) { return null; } LinkedList outputs = new LinkedList(); for (Iterator it = outputElements.iterator(); it.hasNext();) { outputs.add(parseOutput((Element) it.next())); } return outputs; } private LinkedList parseActions(Element element) { List actionElements = DomUtils.getChildElementsByTagName(element, new String[] { "evaluate", "render", "set" }); if (actionElements.isEmpty()) { return null; } LinkedList actions = new LinkedList(); for (Iterator it = actionElements.iterator(); it.hasNext();) { actions.add(parseAction((Element) it.next())); } return actions; } private LinkedList parseStates(Element element) { List stateElements = DomUtils.getChildElementsByTagName(element, new String[] { "view-state", "action-state", "decision-state", "subflow-state", "end-state" }); if (stateElements.isEmpty()) { return null; } LinkedList states = new LinkedList(); for (Iterator it = stateElements.iterator(); it.hasNext();) { states.add(parseState((Element) it.next())); } return states; } private LinkedList parseTransitions(Element element) { List transitionElements = DomUtils.getChildElementsByTagName(element, "transition"); if (transitionElements.isEmpty()) { return null; } LinkedList transitions = new LinkedList(); for (Iterator it = transitionElements.iterator(); it.hasNext();) { transitions.add(parseTransition((Element) it.next())); } return transitions; } private LinkedList parseExceptionHandlers(Element element) { List exceptionHandlerElements = DomUtils.getChildElementsByTagName(element, "exception-handler"); if (exceptionHandlerElements.isEmpty()) { return null; } LinkedList exceptionHandlers = new LinkedList(); for (Iterator it = exceptionHandlerElements.iterator(); it.hasNext();) { exceptionHandlers.add(parseExceptionHandler((Element) it.next())); } return exceptionHandlers; } private LinkedList parseBeanImports(Element element) { List importElements = DomUtils.getChildElementsByTagName(element, "bean-import"); if (importElements.isEmpty()) { return null; } LinkedList beanImports = new LinkedList(); for (Iterator it = importElements.iterator(); it.hasNext();) { beanImports.add(parseBeanImport((Element) it.next())); } return beanImports; } private LinkedList parseIfs(Element element) { List ifElements = DomUtils.getChildElementsByTagName(element, "if"); if (ifElements.isEmpty()) { return null; } LinkedList ifs = new LinkedList(); for (Iterator it = ifElements.iterator(); it.hasNext();) { ifs.add(parseIf((Element) it.next())); } return ifs; } private AbstractActionModel parseAction(Element element) { if (DomUtils.nodeNameEquals(element, "evaluate")) { return parseEvaluate(element); } else if (DomUtils.nodeNameEquals(element, "render")) { return parseRender(element); } else if (DomUtils.nodeNameEquals(element, "set")) { return parseSet(element); } else { throw new FlowModelBuilderException("Unknown action element encountered '" + element.getLocalName() + "'"); } } private AbstractStateModel parseState(Element element) { if (DomUtils.nodeNameEquals(element, "view-state")) { return parseViewState(element); } else if (DomUtils.nodeNameEquals(element, "action-state")) { return parseActionState(element); } else if (DomUtils.nodeNameEquals(element, "decision-state")) { return parseDecisionState(element); } else if (DomUtils.nodeNameEquals(element, "subflow-state")) { return parseSubflowState(element); } else if (DomUtils.nodeNameEquals(element, "end-state")) { return parseEndState(element); } else { throw new FlowModelBuilderException("Unknown state element encountered '" + element.getLocalName() + "'"); } } private LinkedList parseGlobalTransitions(Element element) { element = DomUtils.getChildElementByTagName(element, "global-transitions"); if (element == null) { return null; } else { return parseTransitions(element); } } private AttributeModel parseAttribute(Element element) { AttributeModel attribute = new AttributeModel(element.getAttribute("name"), parseAttributeValue(element)); attribute.setType(element.getAttribute("type")); return attribute; } private String parseAttributeValue(Element element) { if (element.hasAttribute("value")) { return element.getAttribute("value"); } else { Element valueElement = DomUtils.getChildElementByTagName(element, "value"); if (valueElement != null) { return DomUtils.getTextValue(valueElement); } else { return null; } } } private SecuredModel parseSecured(Element element) { element = DomUtils.getChildElementByTagName(element, "secured"); if (element == null) { return null; } else { SecuredModel secured = new SecuredModel(element.getAttribute("attributes")); secured.setMatch(element.getAttribute("match")); return secured; } } private PersistenceContextModel parsePersistenceContext(Element element) { element = DomUtils.getChildElementByTagName(element, "persistence-context"); if (element == null) { return null; } else { return new PersistenceContextModel(); } } private VarModel parseVar(Element element) { return new VarModel(element.getAttribute("name"), element.getAttribute("class")); } private InputModel parseInput(Element element) { InputModel input = new InputModel(element.getAttribute("name"), element.getAttribute("value")); input.setType(element.getAttribute("type")); input.setRequired(element.getAttribute("required")); return input; } private OutputModel parseOutput(Element element) { OutputModel output = new OutputModel(element.getAttribute("name"), element.getAttribute("value")); output.setType(element.getAttribute("type")); output.setRequired(element.getAttribute("required")); return output; } private TransitionModel parseTransition(Element element) { TransitionModel transition = new TransitionModel(); transition.setOn(element.getAttribute("on")); transition.setTo(element.getAttribute("to")); transition.setOnException(element.getAttribute("on-exception")); transition.setBind(element.getAttribute("bind")); transition.setValidate(element.getAttribute("validate")); transition.setHistory(element.getAttribute("history")); transition.setAttributes(parseAttributes(element)); transition.setSecured(parseSecured(element)); transition.setActions(parseActions(element)); return transition; } private ExceptionHandlerModel parseExceptionHandler(Element element) { return new ExceptionHandlerModel(element.getAttribute("bean")); } private BeanImportModel parseBeanImport(Element element) { return new BeanImportModel(element.getAttribute("resource")); } private IfModel parseIf(Element element) { IfModel ifModel = new IfModel(element.getAttribute("test"), element.getAttribute("then")); ifModel.setElse(element.getAttribute("else")); return ifModel; } private LinkedList parseOnStartActions(Element element) { Element onStartElement = DomUtils.getChildElementByTagName(element, "on-start"); if (onStartElement != null) { return parseActions(onStartElement); } else { return null; } } private LinkedList parseOnEntryActions(Element element) { Element onEntryElement = DomUtils.getChildElementByTagName(element, "on-entry"); if (onEntryElement != null) { return parseActions(onEntryElement); } else { return null; } } private LinkedList parseOnRenderActions(Element element) { Element onRenderElement = DomUtils.getChildElementByTagName(element, "on-render"); if (onRenderElement != null) { return parseActions(onRenderElement); } else { return null; } } private BinderModel parseBinder(Element element) { Element binderElement = DomUtils.getChildElementByTagName(element, "binder"); if (binderElement != null) { BinderModel binder = new BinderModel(); binder.setBindings(parseBindings(binderElement)); return binder; } else { return null; } } private LinkedList parseBindings(Element element) { List bindingElements = DomUtils.getChildElementsByTagName(element, "binding"); if (bindingElements.isEmpty()) { return null; } LinkedList bindings = new LinkedList(); for (Iterator it = bindingElements.iterator(); it.hasNext();) { bindings.add(parseBinding((Element) it.next())); } return bindings; } private BindingModel parseBinding(Element element) { return new BindingModel(element.getAttribute("property"), element.getAttribute("converter"), element .getAttribute("required")); } private LinkedList parseOnExitActions(Element element) { Element onExitElement = DomUtils.getChildElementByTagName(element, "on-exit"); if (onExitElement != null) { return parseActions(onExitElement); } else { return null; } } private LinkedList parseOnEndActions(Element element) { Element onEndElement = DomUtils.getChildElementByTagName(element, "on-end"); if (onEndElement != null) { return parseActions(onEndElement); } else { return null; } } private EvaluateModel parseEvaluate(Element element) { EvaluateModel evaluate = new EvaluateModel(element.getAttribute("expression")); evaluate.setResult(element.getAttribute("result")); evaluate.setResultType(element.getAttribute("result-type")); evaluate.setAttributes(parseAttributes(element)); return evaluate; } private RenderModel parseRender(Element element) { RenderModel render = new RenderModel(element.getAttribute("fragments")); render.setAttributes(parseAttributes(element)); return render; } private SetModel parseSet(Element element) { SetModel set = new SetModel(element.getAttribute("name"), element.getAttribute("value")); set.setType(element.getAttribute("type")); set.setAttributes(parseAttributes(element)); return set; } private ActionStateModel parseActionState(Element element) { ActionStateModel state = new ActionStateModel(element.getAttribute("id")); state.setParent(element.getAttribute("parent")); state.setAttributes(parseAttributes(element)); state.setSecured(parseSecured(element)); state.setOnEntryActions(parseOnEntryActions(element)); state.setTransitions(parseTransitions(element)); state.setOnExitActions(parseOnExitActions(element)); state.setActions(parseActions(element)); state.setExceptionHandlers(parseExceptionHandlers(element)); return state; } private ViewStateModel parseViewState(Element element) { ViewStateModel state = new ViewStateModel(element.getAttribute("id")); state.setParent(element.getAttribute("parent")); state.setView(element.getAttribute("view")); state.setRedirect(element.getAttribute("redirect")); state.setPopup(element.getAttribute("popup")); state.setModel(element.getAttribute("model")); state.setVars(parseVars(element)); state.setBinder(parseBinder(element)); state.setOnRenderActions(parseOnRenderActions(element)); state.setAttributes(parseAttributes(element)); state.setSecured(parseSecured(element)); state.setOnEntryActions(parseOnEntryActions(element)); state.setExceptionHandlers(parseExceptionHandlers(element)); state.setTransitions(parseTransitions(element)); state.setOnExitActions(parseOnExitActions(element)); return state; } private DecisionStateModel parseDecisionState(Element element) { DecisionStateModel state = new DecisionStateModel(element.getAttribute("id")); state.setParent(element.getAttribute("parent")); state.setIfs(parseIfs(element)); state.setOnExitActions(parseOnExitActions(element)); state.setAttributes(parseAttributes(element)); state.setSecured(parseSecured(element)); state.setOnEntryActions(parseOnEntryActions(element)); state.setExceptionHandlers(parseExceptionHandlers(element)); return state; } private SubflowStateModel parseSubflowState(Element element) { SubflowStateModel state = new SubflowStateModel(element.getAttribute("id"), element.getAttribute("subflow")); state.setParent(element.getAttribute("parent")); state.setSubflowAttributeMapper(element.getAttribute("subflow-attribute-mapper")); state.setInputs(parseInputs(element)); state.setOutputs(parseOutputs(element)); state.setAttributes(parseAttributes(element)); state.setSecured(parseSecured(element)); state.setOnEntryActions(parseOnEntryActions(element)); state.setExceptionHandlers(parseExceptionHandlers(element)); state.setTransitions(parseTransitions(element)); state.setOnExitActions(parseOnExitActions(element)); return state; } private EndStateModel parseEndState(Element element) { EndStateModel state = new EndStateModel(element.getAttribute("id")); state.setParent(element.getAttribute("parent")); state.setView(element.getAttribute("view")); state.setCommit(element.getAttribute("commit")); state.setOutputs(parseOutputs(element)); state.setAttributes(parseAttributes(element)); state.setSecured(parseSecured(element)); state.setOnEntryActions(parseOnEntryActions(element)); state.setExceptionHandlers(parseExceptionHandlers(element)); return state; } private void mergeFlows() { if (flowModel.getParent() != null) { List parents = Arrays.asList(StringUtils.trimArrayElements(flowModel.getParent().split(","))); for (Iterator it = parents.iterator(); it.hasNext();) { String parentFlowId = (String) it.next(); if (StringUtils.hasText(parentFlowId)) { try { flowModel.merge(modelLocator.getFlowModel(parentFlowId)); } catch (NoSuchFlowModelException e) { throw new FlowModelBuilderException("Unable to find flow '" + parentFlowId + "' to inherit from", e); } } } } } private void mergeStates() { if (flowModel.getStates() == null) { return; } for (Iterator it = flowModel.getStates().iterator(); it.hasNext();) { AbstractStateModel childState = (AbstractStateModel) it.next(); String parent = childState.getParent(); if (childState.getParent() != null) { String flowId; String stateId; AbstractStateModel parentState = null; int hashIndex = parent.indexOf("#"); if (hashIndex == -1) { throw new FlowModelBuilderException("Invalid parent syntax '" + parent + "', should take form 'flowId#stateId'"); } flowId = parent.substring(0, hashIndex).trim(); stateId = parent.substring(hashIndex + 1).trim(); try { if (StringUtils.hasText(flowId)) { parentState = modelLocator.getFlowModel(flowId).getStateById(stateId); } else { parentState = flowModel.getStateById(stateId); } if (parentState == null) { throw new FlowModelBuilderException("Unable to find state '" + stateId + "' in flow '" + flowId + "'"); } childState.merge(parentState); } catch (NoSuchFlowModelException e) { throw new FlowModelBuilderException("Unable to find flow '" + flowId + "' to inherit from", e); } catch (ClassCastException e) { throw new FlowModelBuilderException("Parent state type '" + parentState.getClass().getName() + "' cannot be merged with state type '" + childState.getClass().getName() + "'", e); } } } } public String toString() { return new ToStringCreator(this).append("resource", resource).toString(); } }././@LongLink0000000000000000000000000000024000000000000011561 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframework/webflow/engine/model/builder/xml/spring-webflow-2.0.xsdlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframew0000644000000000000000000015014211360615644027757 0ustar This schema defines Spring Web Flow's XML-based flow definition language.
The root "flow" element in this document defines exactly one flow definition. A flow definition is a blueprint for a carrying out a conversation with a single user.
A flow is composed of one or more states that form the steps of the flow. Each state executes a behavior when entered. What behavior is executed is a function of the state's type. Core state types include view states, action states, subflow states, decision states, and end states.
A flow definition has exactly one start state. Events that occur within states drive state transitions. ]]>
A flow may also exhibit the following characteristics:

  • Be annotated with attributes that define descriptive properties that may affect flow execution. (See the <attribute/> element)
  • Be secured (See the <secured/> element)
  • Be a persistence context for managing persistent objects during the course of flow execution. (See the <persistence-context/> element)
  • Instantiate a set of instance variables when started. (See the <var/> element)
  • Map input provided by callers that start it (See the <input/> element)
  • Return output to callers that end it. (See the <output/> element)
  • Execute actions at start time and end time. (See the <on-start/> and <on-end/> elements)
  • Define transitions shared by all states. (See the <global-transitions/> element)
  • Handle exceptions thrown by during flow execution. (See the <exception-handler/> element)
  • Import one or more local bean definition files defining custom flow artifacts (such as actions, exception handlers, view factories, transition criteria, etc). (See the <bean-import/> element)
]]> The persistence context can be referenced from within this flow by the "entityManager" variable. ]]> . If inheriting from a state defined in another flow, the flowId prefix is required. If inheriting from a state defined in this flow, the flowId should not be specified. For example,
<action-state id="state" parent="myParentFlow#myParentState">
or
<action-state id="state" parent="#myLocalParentState">
]]>
Once paused, a view-state may be 'refreshed' by the user. A refresh causes the response to be reissued and then returns control back to the user.
A view state may be configured with one or more render-actions using the 'on-render' element. Render actions are executed immediately before the view is rendered.
A view state is a transitionable state. A view state transition is triggered by a user event. ]]>
. If inheriting from a state defined in another flow, the flowId prefix is required. If inheriting from a state defined in this flow, the flowId should not be specified. For example,
<view-state id="state" parent="myParentFlow#myParentState">
or
<view-state id="state" parent="#myLocalParentState">
]]>
priceForm.jsp Can also be an evaluatable expression:
	${flowScope.myViewExpression}
The externalRedirect: prefix may be used to redirect to an external location, typically to interface with an external system or controller. External redirect query parameters may be specified using ${expressions} that evaluate against the request context. The supported formats for an encoded externalRedirect expression are:
	externalRedirect:
	externalRedirect:contextRelative:
	externalRedirect:serverRelative:
	externalRedirect:
For example:
	externalRedirect:/hotels/index
	externalRedirect:http://someOtherSystem?orderId=${order.id}&callbackUrl=${flowExecutionUrl}
The flowRedirect: prefix may be used to redirect to another flow:
	flowRedirect:myOtherFlow?someData=${flowScope.data}
For exotic usages, you may plug in a custom ViewFactory bean you define:
	${myCustomViewFactory}
When this attribute is not specified, the view to render will be determined by convention. The default convention is to treat the id of this view state as the view identifier. ]]>
A decision state is a transitionable state. A decision state transition can be triggered by evaluating a boolean expression against the flow execution request context. To define transition expressions, use the 'if' element.
Examples:
A simple boolean expression test, using the convenient 'if' element:
    <decision-state id="requiresShipping">
	    <if test="sale.requiresShipping" then="enterShippingDetails" else="processSale"/>
    </decision-state>
]]>
The form is:
	<if test="criteriaExpression" then="trueStateId" else="falseStateId"/>
]]>
<if test="sale.requiresShipping" then="enterShippingDetails"/> ]]>
. If inheriting from a state defined in another flow, the flowId prefix is required. If inheriting from a state defined in this flow, the flowId should not be specified. For example,
<decision-state id="state" parent="myParentFlow#myParentState">
or
<decision-state id="state" parent="#myLocalParentState">
]]>
A subflow state is a transitionable state. A transition is triggered by the subflow outcome that was reached. ]]> . If inheriting from a state defined in another flow, the flowId prefix is required. If inheriting from a state defined in this flow, the flowId should not be specified. For example,
<subflow-state id="state" parent="myParentFlow#myParentState">
or
<subflow-state id="state" parent="#myLocalParentState">
]]>
An end state is not transitionable; there are never transitions out of an end state. When an end-state is entered, an instance of this flow is terminated.
When this flow terminates, if it was the "root" flow the entire execution is terminated. If this flow was a subflow, its parent flow resumes. ]]>
. If inheriting from a state defined in another flow, the flowId prefix is required. If inheriting from a state defined in this flow, the flowId should not be specified. For example,
<end-state id="state" parent="myParentFlow#myParentState">
or
<end-state id="state" parent="#myLocalParentState">
]]>
priceForm.jsp It can also be an evaluatable expression:
	${flowScope.myViewExpression}
The externalRedirect: prefix may be used to request a redirect to an external location, typically to interface with an external system or controller. External redirect query parameters may be specified using ${expressions} that evaluate against the request context. The supported formats for an encoded externalRedirect expression are:
	externalRedirect:
	externalRedirect:contextRelative:
	externalRedirect:serverRelative:
	externalRedirect:
For example:
	externalRedirect:/hotels/index
	externalRedirect:http://someOtherSystem?orderId=${order.id}
The flowRedirect: prefix may be used to redirect to another flow:
	flowRedirect:myOtherFlow?someData=${flowScope.data}
For exotic usages, you may plug in a custom ViewFactory bean you define:
	${myCustomViewFactory}

When this attribute is not specified, no final response will be issued. In this case, the caller is expected to handle this flow outcome. ]]>
For example:
    <bean-import resource="orderitem-flow-beans.xml"/>
... would look for 'orderitem-flow-beans.xml' in the same directory as this document. ]]>
Note: Cannot be used in conjunction with an exception based transition. ]]> <transition on="submit" to="state"/> ... which reads "on the occurrence of the 'submit' event, transition to 'state'"
Sophisticated transitional expressions are also supported when enclosed in a delimited expression:
	<transition on="${currentEvent.id == 'submit' &;amp;& flowScope.attribute == 'foo'}" to="state"/>
]]>
The value of this attribute must be a fully-qualified java.lang.Exception class name (e.g. example.booking.ItineraryExpiredException). Superclasses of the configured exception class match by default. Use this attribute or the 'on' attribute, not both.
Note: Cannot be used in conjunction with a secured element. ]]>
The value of this attribute may be a static state identifier (e.g. to="displayForm") or a dynamic expression (e.g. to="${flowScope.previousViewState}"). If no value is specified, this transition acts as a simple event handler and will not change the state of the flow. ]]>
Note: This element configures a meta-attribute. For the attribute to be enforced, the flow execution must be observed by a SecurityFlowExecutionListener. ]]> ././@LongLink0000000000000000000000000000022600000000000011565 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframework/webflow/engine/model/builder/xml/package.htmllibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframew0000644000000000000000000000050011360615642027745 0ustar

Defines the XmlFlowModelBuilder, for building FlowModels from XML-based resources.

This package also contains the definition of the XML-based flow definition language, defined within spring-webflow-2.0.xsd. See this schema for a detailed description of language elements.

././@LongLink0000000000000000000000000000024400000000000011565 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframework/webflow/engine/model/builder/xml/DefaultDocumentLoader.javalibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframew0000644000000000000000000001035311360615642027754 0ustar /* * Copyright 2004-2008 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.springframework.webflow.engine.model.builder.xml; import java.io.IOException; import java.io.InputStream; import javax.xml.parsers.DocumentBuilder; import javax.xml.parsers.DocumentBuilderFactory; import javax.xml.parsers.ParserConfigurationException; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.springframework.core.io.Resource; import org.springframework.util.xml.SimpleSaxErrorHandler; import org.w3c.dom.Document; import org.xml.sax.EntityResolver; import org.xml.sax.SAXException; /** * The default document loader strategy for XSD-based XML documents with validation enabled by default. *

* Note: full XSD support requires JDK 5.0 or a capable parser such as Xerces 2.0. JDK 1.4 or < do not fully support XSD * out of the box. To use this implementation on JDK 1.4 make sure Xerces is available in your classpath or disable XSD * validation by {@link #setValidating(boolean) setting the validating property to false}. * * @author Keith Donald */ public class DefaultDocumentLoader implements DocumentLoader { private static final Log logger = LogFactory.getLog(DefaultDocumentLoader.class); /** * JAXP attribute used to configure the schema language for validation. */ private static final String SCHEMA_LANGUAGE_ATTRIBUTE = "http://java.sun.com/xml/jaxp/properties/schemaLanguage"; /** * JAXP attribute value indicating the XSD schema language. */ private static final String XSD_SCHEMA_LANGUAGE = "http://www.w3.org/2001/XMLSchema"; /** * Flag indicating if the XML document parser will perform schema validation. */ private boolean validating = true; /** * The spring-webflow schema resolution strategy. */ private EntityResolver entityResolver = new WebFlowEntityResolver(); /** * Returns whether or not the XML parser will validate the document. */ public boolean isValidating() { return validating; } /** * Set if the XML parser should validate the document and thus enforce a schema. Defaults to true. */ public void setValidating(boolean validating) { this.validating = validating; } /** * Returns the SAX entity resolver used by the XML parser. */ public EntityResolver getEntityResolver() { return entityResolver; } /** * Set a SAX entity resolver to be used for parsing. Can be overridden for custom entity resolution, for example * relative to some specific base path. */ public void setEntityResolver(EntityResolver entityResolver) { this.entityResolver = entityResolver; } public Document loadDocument(Resource resource) throws IOException, ParserConfigurationException, SAXException { InputStream is = null; try { is = resource.getInputStream(); DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance(); factory.setValidating(isValidating()); factory.setNamespaceAware(true); try { factory.setAttribute(SCHEMA_LANGUAGE_ATTRIBUTE, XSD_SCHEMA_LANGUAGE); } catch (IllegalArgumentException ex) { throw new IllegalStateException("Unable to validate using XSD: Your JAXP provider [" + factory + "] does not support XML Schema. " + "Are you running on Java 1.4 or below with Apache Crimson? " + "If so you must upgrade to Apache Xerces (or Java 5 or >) for full XSD support."); } DocumentBuilder docBuilder = factory.newDocumentBuilder(); docBuilder.setErrorHandler(new SimpleSaxErrorHandler(logger)); docBuilder.setEntityResolver(getEntityResolver()); return docBuilder.parse(is); } finally { if (is != null) { is.close(); } } } }././@LongLink0000000000000000000000000000024400000000000011565 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframework/webflow/engine/model/builder/xml/WebFlowEntityResolver.javalibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframew0000644000000000000000000000453411360615640027756 0ustar /* * Copyright 2004-2008 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.springframework.webflow.engine.model.builder.xml; import java.io.IOException; import org.springframework.core.io.ClassPathResource; import org.springframework.core.io.Resource; import org.xml.sax.EntityResolver; import org.xml.sax.InputSource; import org.xml.sax.SAXException; /** * EntityResolver implementation for the Spring Web Flow 2.0 XML Schema. This will load the XSD from the classpath. *

* The xmlns of the XSD expected to be resolved: * *

 *     <?xml version="1.0" encoding="UTF-8"?>
 *     <flow xmlns="http://www.springframework.org/schema/webflow"
 *           xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 *           xsi:schemaLocation="http://www.springframework.org/schema/webflow
 *                               http://www.springframework.org/schema/webflow/spring-webflow-2.0.xsd">
 * 
* * @author Erwin Vervaet * @author Ben Hale */ class WebFlowEntityResolver implements EntityResolver { private static final String WEBFLOW_ELEMENT = "spring-webflow-2.0"; public InputSource resolveEntity(String publicId, String systemId) throws SAXException, IOException { if (systemId != null && systemId.indexOf(WEBFLOW_ELEMENT) > systemId.lastIndexOf("/")) { String filename = systemId.substring(systemId.indexOf(WEBFLOW_ELEMENT)); try { Resource resource = new ClassPathResource(filename, getClass()); InputSource source = new InputSource(resource.getInputStream()); source.setPublicId(publicId); source.setSystemId(systemId); return source; } catch (IOException ex) { // fall through below } } // let the parser handle it return null; } }././@LongLink0000000000000000000000000000024400000000000011565 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframework/webflow/engine/model/builder/FlowModelBuilderException.javalibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframew0000644000000000000000000000262311360615646027761 0ustar /* * Copyright 2004-2008 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.springframework.webflow.engine.model.builder; import org.springframework.webflow.core.FlowException; /** * Exception thrown to indicate a problem while building a flow model. * * @see FlowModelBuilder * * @author Erwin Vervaet * @author Scott Andrews */ public class FlowModelBuilderException extends FlowException { /** * Create a new flow model builder exception. * @param message descriptive message */ public FlowModelBuilderException(String message) { super(message); } /** * Create a new flow model builder exception. * @param message descriptive message * @param cause the underlying cause of this exception */ public FlowModelBuilderException(String message, Throwable cause) { super(message, cause); } }././@LongLink0000000000000000000000000000024100000000000011562 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframework/webflow/engine/model/builder/DefaultFlowModelHolder.javalibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframew0000644000000000000000000000602011360615644027752 0ustar /* * Copyright 2004-2008 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.springframework.webflow.engine.model.builder; import org.springframework.core.io.Resource; import org.springframework.core.style.ToStringCreator; import org.springframework.util.Assert; import org.springframework.webflow.engine.model.FlowModel; import org.springframework.webflow.engine.model.registry.FlowModelHolder; /** * A flow model holder that can detect changes on an underlying flow model resource and refresh that resource * automatically. *

* This class is thread-safe. *

* Note that this {@link FlowModel} holder uses a {@link FlowModelBuilder}. * * @see FlowModel * * @author Keith Donald * @author Scott Andrews */ public class DefaultFlowModelHolder implements FlowModelHolder { private FlowModel flowModel; private FlowModelBuilder flowModelBuilder; private boolean assembling; /** * Creates a new refreshable flow model holder that uses the configured assembler (GOF director) to drive flow * assembly, on initial use and on any resource change or refresh. * @param flowModelBuilder the flow model builder to use */ public DefaultFlowModelHolder(FlowModelBuilder flowModelBuilder) { Assert.notNull(flowModelBuilder, "The flow model builder is required"); this.flowModelBuilder = flowModelBuilder; } public synchronized FlowModel getFlowModel() { if (assembling) { // must return early assembly result for when a flow calls itself recursively return flowModelBuilder.getFlowModel(); } if (flowModel == null) { assembleFlowModel(); } else { if (flowModelBuilder.hasFlowModelResourceChanged()) { assembleFlowModel(); } } return flowModel; } public Resource getFlowModelResource() { return flowModelBuilder.getFlowModelResource(); } public boolean hasFlowModelChanged() { return flowModelBuilder.hasFlowModelResourceChanged(); } public synchronized void refresh() { assembleFlowModel(); } // internal helpers private void assembleFlowModel() throws FlowModelBuilderException { try { assembling = true; flowModelBuilder.init(); flowModelBuilder.build(); flowModel = flowModelBuilder.getFlowModel(); } finally { try { flowModelBuilder.dispose(); } finally { assembling = false; } } } public String toString() { return new ToStringCreator(this).append("flowModelBuilder", flowModelBuilder).toString(); } }././@LongLink0000000000000000000000000000022200000000000011561 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframework/webflow/engine/model/builder/package.htmllibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframew0000644000000000000000000000064711360615634027762 0ustar

The FlowModelBuilder subsystem for building FlowModels, a configuration model for a Flow instance.

You construct a FlowModel using a {@link org.springframework.webflow.engine.model.builder.FlowModelBuilder}. Implementations typically engineer a FlowModel from some external resource such as a file or database. This package is based on the classic GoF Builder design pattern.

././@LongLink0000000000000000000000000000023300000000000011563 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframework/webflow/engine/model/builder/FlowModelBuilder.javalibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframew0000644000000000000000000000667711360615634027773 0ustar /* * Copyright 2004-2008 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.springframework.webflow.engine.model.builder; import org.springframework.core.io.Resource; import org.springframework.webflow.engine.model.FlowModel; /** * Builder interface used to build a flow model. The process of building a flow model consists of the following steps: *
    *
  1. Initialize this builder by calling {@link #init()}. *
  2. Call {@link #build()} to create the flow model. *
  3. Call {@link #getFlowModel()} to return the fully-built {@link FlowModel} model. *
  4. Dispose this builder, releasing any resources allocated during the building process by calling {@link #dispose()}. *
*

* Implementations should encapsulate flow construction logic, either for a specific kind of flow, for example, an * XmlFlowModelBuilder, for building flows from an XML-definition. *

* This is a good example of the classic GoF builder pattern. * * @see FlowModel * * @author Keith Donald * @author Erwin Vervaet * @author Scott Andrews */ public interface FlowModelBuilder { /** * Initialize this builder. This could cause the builder to open a stream to an externalized resource representing * the flow definition, for example. * @throws FlowModelBuilderException an exception occurred building the flow */ public void init() throws FlowModelBuilderException; /** * Builds any variables initialized by the flow when it starts. * @throws FlowModelBuilderException an exception occurred building the flow */ public void build() throws FlowModelBuilderException; /** * Get the fully constructed flow model. Called by the builder's assembler (director) after assembly. When this * method is called by the assembler, it is expected flow construction has completed and the returned flow model is * ready for use. * @throws FlowModelBuilderException an exception occurred building this flow */ public FlowModel getFlowModel() throws FlowModelBuilderException; /** * Shutdown the builder, releasing any resources it holds. A new flow construction process should start with another * call to the {@link #init()} method. * @throws FlowModelBuilderException an exception occurred disposing this flow */ public void dispose() throws FlowModelBuilderException; /** * Get the underlying flow model resource accessed to build this flow model. Returns null if this builder does not * construct the flow model from a resource. * @return the flow model resource */ public Resource getFlowModelResource(); /** * Returns true if the underlying flow model resource has changed since the last call to {@link #init()}. Always * returns false if the flow model is not build from a resource. * @return true if the resource backing the flow model has changed */ public boolean hasFlowModelResourceChanged(); }././@LongLink0000000000000000000000000000022200000000000011561 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframework/webflow/engine/model/BeanImportModel.javalibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframew0000644000000000000000000000324411360615636027760 0ustar /* * Copyright 2004-2008 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.springframework.webflow.engine.model; import org.springframework.util.StringUtils; /** * Model support for bean imports. *

* Imports user-defined beans defined at a resource location. These beans become part of the flow's bean factory and are * resolvable using flow expressions. * * @author Scott Andrews */ public class BeanImportModel extends AbstractModel { private String resource; /** * Create a bean import model * @param resource the resource containing beans to import */ public BeanImportModel(String resource) { setResource(resource); } public boolean isMergeableWith(Model model) { return false; } public void merge(Model model) { } public Model createCopy() { return new BeanImportModel(resource); } /** * @return the resource */ public String getResource() { return resource; } /** * @param resource the resource to set */ public void setResource(String resource) { if (StringUtils.hasText(resource)) { this.resource = resource; } else { this.resource = null; } } } ././@LongLink0000000000000000000000000000024300000000000011564 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframework/webflow/engine/model/AbstractTransitionableStateModel.javalibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframew0000644000000000000000000000330111360615640027745 0ustar /* * Copyright 2004-2008 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.springframework.webflow.engine.model; import java.util.LinkedList; /** * Model support for transitionable states. * * @author Scott Andrews */ public abstract class AbstractTransitionableStateModel extends AbstractStateModel { private LinkedList transitions; private LinkedList onExitActions; public AbstractTransitionableStateModel(String id) { super(id); } protected void fillCopy(final AbstractTransitionableStateModel copy) { super.fillCopy(copy); copy.setTransitions(copyList(transitions)); copy.setOnExitActions(copyList(onExitActions)); } /** * @return the transitions */ public LinkedList getTransitions() { return transitions; } /** * @param transitions the transitions to set */ public void setTransitions(LinkedList transitions) { this.transitions = transitions; } /** * @return the on exit actions */ public LinkedList getOnExitActions() { return onExitActions; } /** * @param onExitActions the on exit actions to set */ public void setOnExitActions(LinkedList onExitActions) { this.onExitActions = onExitActions; } } ././@LongLink0000000000000000000000000000021600000000000011564 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframework/webflow/engine/model/BinderModel.javalibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframew0000644000000000000000000000252611360615640027755 0ustar /* * Copyright 2004-2008 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.springframework.webflow.engine.model; import java.util.LinkedList; /** * Model support for the view-state binder element. * @author Scott Andrews */ public class BinderModel extends AbstractModel { private LinkedList bindings; public LinkedList getBindings() { return bindings; } public void setBindings(LinkedList bindings) { this.bindings = bindings; } public boolean isMergeableWith(Model model) { return model instanceof BinderModel; } public void merge(Model model) { BinderModel binder = (BinderModel) model; setBindings(merge(getBindings(), binder.getBindings())); } public Model createCopy() { BinderModel copy = new BinderModel(); copy.setBindings(copyList(bindings)); return copy; } } ././@LongLink0000000000000000000000000000022100000000000011560 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframework/webflow/engine/model/AttributeModel.javalibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframew0000644000000000000000000000501511360615644027755 0ustar /* * Copyright 2004-2008 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.springframework.webflow.engine.model; import org.springframework.util.ObjectUtils; import org.springframework.util.StringUtils; /** * Model support for attributes. *

* A meta attribute describing or otherwise annotating it's holder. * * @author Scott Andrews */ public class AttributeModel extends AbstractModel { private String name; private String type; private String value; /** * Create an attribute model * @param name the name of the attribute * @param value the value of the attribute */ public AttributeModel(String name, String value) { setName(name); setValue(value); } public boolean isMergeableWith(Model model) { if (!(model instanceof AttributeModel)) { return false; } AttributeModel attribute = (AttributeModel) model; return ObjectUtils.nullSafeEquals(getName(), attribute.getName()); } public void merge(Model model) { AttributeModel attribute = (AttributeModel) model; setValue(merge(getValue(), attribute.getValue())); setType(merge(getType(), attribute.getType())); } public Model createCopy() { AttributeModel copy = new AttributeModel(name, value); copy.setType(type); return copy; } /** * @return the name */ public String getName() { return name; } /** * @param name the name to set */ public void setName(String name) { if (StringUtils.hasText(name)) { this.name = name; } else { this.name = null; } } /** * @return the type */ public String getType() { return type; } /** * @param type the type to set */ public void setType(String type) { if (StringUtils.hasText(type)) { this.type = type; } else { this.type = null; } } /** * @return the value */ public String getValue() { return value; } /** * @param value the value to set */ public void setValue(String value) { if (StringUtils.hasText(value)) { this.value = value; } else { this.value = null; } } } ././@LongLink0000000000000000000000000000021000000000000011556 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframework/webflow/engine/model/Model.javalibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframew0000644000000000000000000000260411360615642027754 0ustar /* * Copyright 2004-2008 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.springframework.webflow.engine.model; /** * Interface defining models. All models must be able to handle merging of their content with an eligible model. * * @author Scott Andrews */ public interface Model { /** * Determine if the model is able to be merged into the current model * * @param model the model to compare * * @return true if able to merge */ public boolean isMergeableWith(Model model); /** * Merge the model into the current model * * @param model the model to merge with */ public void merge(Model model); /** * Create a deep copy of this model. Needed when merging models and collections. * * @return a deep copy of this model */ public Model createCopy(); } ././@LongLink0000000000000000000000000000022500000000000011564 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframework/webflow/engine/model/DecisionStateModel.javalibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframew0000644000000000000000000000473111360615642027757 0ustar /* * Copyright 2004-2008 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.springframework.webflow.engine.model; import java.util.LinkedList; import org.springframework.util.ObjectUtils; /** * Model support for decision states. * @author Scott Andrews */ public class DecisionStateModel extends AbstractStateModel { private LinkedList ifs; private LinkedList onExitActions; /** * Create a decision state model * @param id the state identifier */ public DecisionStateModel(String id) { super(id); } public boolean isMergeableWith(Model model) { if (!(model instanceof DecisionStateModel)) { return false; } DecisionStateModel state = (DecisionStateModel) model; return ObjectUtils.nullSafeEquals(getId(), state.getId()); } public void merge(Model model) { DecisionStateModel state = (DecisionStateModel) model; setParent(null); setAttributes(merge(getAttributes(), state.getAttributes())); setSecured((SecuredModel) merge(getSecured(), state.getSecured())); setOnEntryActions(merge(getOnEntryActions(), state.getOnEntryActions(), false)); setExceptionHandlers(merge(getExceptionHandlers(), state.getExceptionHandlers())); setIfs(merge(getIfs(), state.getIfs())); setOnExitActions(merge(getOnExitActions(), state.getOnExitActions(), false)); } public Model createCopy() { DecisionStateModel copy = new DecisionStateModel(getId()); super.fillCopy(copy); copy.setIfs(copyList(ifs)); copy.setOnExitActions(copyList(onExitActions)); return copy; } /** * @return the ifs */ public LinkedList getIfs() { return ifs; } /** * @param ifs the ifs to set */ public void setIfs(LinkedList ifs) { this.ifs = ifs; } /** * @return the on exit actions */ public LinkedList getOnExitActions() { return onExitActions; } /** * @param onExitActions the on exit actions to set */ public void setOnExitActions(LinkedList onExitActions) { this.onExitActions = onExitActions; } } ././@LongLink0000000000000000000000000000021200000000000011560 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframework/webflow/engine/model/package.htmllibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframew0000644000000000000000000000052011360615634027750 0ustar

Defines a configuration model for Flow instances.

A FlowModel is a generic Java-based configuration model of a Flow, independent of any external flow representation such as an XML file. Flow Models can be merged together to facilitate reuse between flows that share a common structure.

././@LongLink0000000000000000000000000000022600000000000011565 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframework/webflow/engine/model/AbstractActionModel.javalibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframew0000644000000000000000000000275111360615636027762 0ustar /* * Copyright 2004-2008 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.springframework.webflow.engine.model; import java.util.LinkedList; /** * Model support for actions. * * @author Scott Andrews */ public abstract class AbstractActionModel extends AbstractModel { private LinkedList attributes; /** * Actions are not mergeable * @param model the model to test */ public boolean isMergeableWith(Model model) { return false; } /** * Actions are not mergeable * @param model the render action to merge into this render */ public void merge(Model model) { // not mergeable } protected void fillCopy(AbstractActionModel copy) { copy.setAttributes(copyList(attributes)); } /** * @return the attributes */ public LinkedList getAttributes() { return attributes; } /** * @param attributes the attributes to set */ public void setAttributes(LinkedList attributes) { this.attributes = attributes; } } ././@LongLink0000000000000000000000000000021700000000000011565 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframework/webflow/engine/model/SecuredModel.javalibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframew0000644000000000000000000000510611360615632027753 0ustar /* * Copyright 2004-2008 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.springframework.webflow.engine.model; import org.springframework.util.ObjectUtils; import org.springframework.util.StringUtils; import org.springframework.webflow.security.SecurityFlowExecutionListener; /** * Model support for secured elements. *

* Secures a flow, state or transition. The user invoking this element must meet the required attributes otherwise * access will be denied. *

* Warning: This model will only configure a security attribute in the definition. The flow execution must also * be secured with a SecurityFlowExecutionListener. * * @see SecurityFlowExecutionListener * @author Scott Andrews */ public class SecuredModel extends AbstractModel { private String attributes; private String match; /** * Create a security settings model * @param attributes the security attributes */ public SecuredModel(String attributes) { setAttributes(attributes); } public boolean isMergeableWith(Model model) { if (!(model instanceof SecuredModel)) { return false; } SecuredModel secured = (SecuredModel) model; return ObjectUtils.nullSafeEquals(getAttributes(), secured.getAttributes()); } public void merge(Model model) { SecuredModel secured = (SecuredModel) model; setMatch(merge(getMatch(), secured.getMatch())); } public Model createCopy() { SecuredModel copy = new SecuredModel(attributes); copy.setMatch(match); return copy; } /** * @return the attributes */ public String getAttributes() { return attributes; } /** * @param attributes the attributes to set */ public void setAttributes(String attributes) { if (StringUtils.hasText(attributes)) { this.attributes = attributes; } else { this.attributes = null; } } /** * @return the match */ public String getMatch() { return match; } /** * @param match the match to set */ public void setMatch(String match) { if (StringUtils.hasText(match)) { this.match = match; } else { this.match = null; } } } ././@LongLink0000000000000000000000000000022000000000000011557 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframework/webflow/engine/model/AbstractModel.javalibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframew0000644000000000000000000001066211360615634027760 0ustar /* * Copyright 2004-2008 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.springframework.webflow.engine.model; import java.util.Collections; import java.util.Iterator; import java.util.LinkedList; /** * Contains basic merge functions that can be utilized by other models. * * @author Scott Andrews */ public abstract class AbstractModel implements Model { /** * Merge two objects. If the child is null, the parent will be returned. Else the child will be returned. * @param child the child object to merge * @param parent the parent object to merge * @return the merged string */ protected Object merge(Object child, Object parent) { if (child == null) { return parent; } else { return child; } } /** * Merge two strings. If the child is null, the parent will be returned. Else the child will be returned. * @param child the child string to merge * @param parent the parent string to merge * @return the merged string */ protected String merge(String child, String parent) { return (String) merge((Object) child, (Object) parent); } /** * Merge two model elements. If the child is null, the parent will be returned. Else the parent element will be * merged into the child element with the result returned * @param child the child model element to merge * @param parent the parent model element to merge * @return the merged element model */ protected Model merge(Model child, Model parent) { if (child == null) { if (parent == null) { return null; } else { return parent.createCopy(); } } else if (parent == null) { return child; } else { child.merge(parent); return child; } } /** * Merge two lists. All child element will be in the merged list. All parent elements not in the child list will be * added. Mergeable elements in both lists will be merged according to that element merge rules. New items are added * to the end of the list * @param child the child list to merge * @param parent the parent list to merge * @return the merged list */ protected LinkedList merge(LinkedList child, LinkedList parent) { return merge(child, parent, true); } /** * Merge two lists. All child element will be in the merged list. All parent elements not in the child list will be * added. Mergeable elements in both lists will be merged according to that element merge rules. * @param child the child list to merge * @param parent the parent list to merge * @param addAtEnd if true new items will be added at the end of the list, otherwise the beginning * @return the merged list */ protected LinkedList merge(LinkedList child, LinkedList parent, boolean addAtEnd) { if (child == null) { if (parent == null) { return null; } else { return copyList(parent); } } else if (parent == null) { return child; } else { if (!addAtEnd) { parent = new LinkedList(parent); Collections.reverse(parent); } for (Iterator parentIt = parent.iterator(); parentIt.hasNext();) { Model parentElement = (Model) parentIt.next(); boolean matchFound = false; for (Iterator childIt = child.iterator(); !matchFound && childIt.hasNext();) { Model childElement = (Model) childIt.next(); if (childElement.isMergeableWith(parentElement)) { matchFound = true; childElement.merge(parentElement); } } if (!matchFound) { if (addAtEnd) { child.addLast(parentElement.createCopy()); } else { child.addFirst(parentElement.createCopy()); } } } return child; } } protected Model copy(Model model) { if (model == null) { return null; } return model.createCopy(); } protected LinkedList copyList(LinkedList list) { if (list == null) { return null; } LinkedList copy = new LinkedList(); for (Iterator it = list.iterator(); it.hasNext();) { Model model = (Model) it.next(); copy.add(model.createCopy()); } return copy; } } ././@LongLink0000000000000000000000000000022400000000000011563 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframework/webflow/engine/model/SubflowStateModel.javalibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframew0000644000000000000000000000737111360615632027761 0ustar /* * Copyright 2004-2008 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.springframework.webflow.engine.model; import java.util.LinkedList; import org.springframework.util.ObjectUtils; import org.springframework.util.StringUtils; /** * Model support for subflow states. * @author Scott Andrews */ public class SubflowStateModel extends AbstractTransitionableStateModel { private String subflow; private String subflowAttributeMapper; private LinkedList inputs; private LinkedList outputs; /** * Create a subflow state model * @param id the identifier of the state * @param subflow the identifier of the flow to launch as a subflow */ public SubflowStateModel(String id, String subflow) { super(id); setSubflow(subflow); } public boolean isMergeableWith(Model model) { if (!(model instanceof SubflowStateModel)) { return false; } SubflowStateModel state = (SubflowStateModel) model; return ObjectUtils.nullSafeEquals(getId(), state.getId()); } public void merge(Model model) { SubflowStateModel state = (SubflowStateModel) model; setParent(null); setAttributes(merge(getAttributes(), state.getAttributes())); setSecured((SecuredModel) merge(getSecured(), state.getSecured())); setOnEntryActions(merge(getOnEntryActions(), state.getOnEntryActions(), false)); setExceptionHandlers(merge(getExceptionHandlers(), state.getExceptionHandlers())); setTransitions(merge(getTransitions(), state.getTransitions())); setOnExitActions(merge(getOnExitActions(), state.getOnExitActions(), false)); setSubflow(merge(getSubflow(), state.getSubflow())); setSubflowAttributeMapper(merge(getSubflowAttributeMapper(), state.getSubflowAttributeMapper())); setInputs(merge(getInputs(), state.getInputs())); setOutputs(merge(getOutputs(), state.getOutputs())); } public Model createCopy() { SubflowStateModel copy = new SubflowStateModel(getId(), subflow); super.fillCopy(copy); copy.setSubflowAttributeMapper(subflowAttributeMapper); copy.setInputs(copyList(inputs)); copy.setOutputs(copyList(outputs)); return copy; } /** * @return the subflow */ public String getSubflow() { return subflow; } /** * @param subflow the subflow to set */ public void setSubflow(String subflow) { if (StringUtils.hasText(subflow)) { this.subflow = subflow; } else { this.subflow = null; } } /** * @return the subflow attribute mapper */ public String getSubflowAttributeMapper() { return subflowAttributeMapper; } /** * @param subflowAttributeMapper the subflow attribute mapper to set */ public void setSubflowAttributeMapper(String subflowAttributeMapper) { if (StringUtils.hasText(subflowAttributeMapper)) { this.subflowAttributeMapper = subflowAttributeMapper; } else { this.subflowAttributeMapper = null; } } /** * @return the input mappings */ public LinkedList getInputs() { return inputs; } /** * @param inputs the input mappings to set */ public void setInputs(LinkedList inputs) { this.inputs = inputs; } /** * @return the output mappings */ public LinkedList getOutputs() { return outputs; } /** * @param outputs the output mappings to set */ public void setOutputs(LinkedList outputs) { this.outputs = outputs; } } ././@LongLink0000000000000000000000000000020700000000000011564 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframework/webflow/engine/model/registry/libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframew0000755000000000000000000000000011360615636027753 5ustar ././@LongLink0000000000000000000000000000023500000000000011565 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframework/webflow/engine/model/registry/FlowModelRegistry.javalibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframew0000644000000000000000000000347011360615632027755 0ustar /* * Copyright 2004-2008 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.springframework.webflow.engine.model.registry; /** * A container of flow models. Extends {@link FlowModelLocator} for accessing registered Flow models for conversion to * flow definitions. *

* Flow model registries can be configured with a "parent" registry to provide a hook into a larger flow model registry * hierarchy. * * @author Keith Donald * @author Scott Andrews */ public interface FlowModelRegistry extends FlowModelLocator { /** * Sets this registry's parent registry. When asked by a client to locate a flow model this registry will query it's * parent if it cannot fulfill the lookup request itself. * @param parent the parent flow model registry, may be null */ public void setParent(FlowModelRegistry parent); /** * Register a flow model in this registry. Registers a "holder", not the Flow model itself. This allows the actual * Flow model to be loaded lazily only when needed, and also rebuilt at runtime when its underlying resource changes * without re-deploy. * @param id the id to register the flow model under * @param modelHolder a holder holding the flow model to register */ public void registerFlowModel(String id, FlowModelHolder modelHolder); }././@LongLink0000000000000000000000000000024400000000000011565 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframework/webflow/engine/model/registry/NoSuchFlowModelException.javalibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframew0000644000000000000000000000275111360615636027762 0ustar /* * Copyright 2004-2008 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.springframework.webflow.engine.model.registry; import org.springframework.webflow.core.FlowException; /** * Thrown when no flow model was found during a lookup operation by a flow locator. * * @author Keith Donald * @author Erwin Vervaet * @author Scott Andrews */ public class NoSuchFlowModelException extends FlowException { /** * The id of the flow model that could not be located. */ private String flowModelId; /** * Creates an exception indicating a flow model could not be found. * @param flowModelId the flow model id */ public NoSuchFlowModelException(String flowModelId) { super("No flow model '" + flowModelId + "' found"); this.flowModelId = flowModelId; } /** * Returns the id of the flow model that could not be found. */ public String getFlowModelId() { return flowModelId; } }././@LongLink0000000000000000000000000000023300000000000011563 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframework/webflow/engine/model/registry/FlowModelHolder.javalibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframew0000644000000000000000000000351711360615634027761 0ustar /* * Copyright 2004-2008 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.springframework.webflow.engine.model.registry; import org.springframework.core.io.Resource; import org.springframework.webflow.engine.model.FlowModel; /** * A holder holding a reference to a Flow model. Provides a layer of indirection, enabling things like "hot-reloadable" * flow models. * * @see FlowModelRegistry#registerFlowModel(String, FlowModelHolder) * * @author Keith Donald * @author Scott Andrews */ public interface FlowModelHolder { /** * Returns the flow model held by this holder. Calling this method the first time may trigger flow model assembly. */ public FlowModel getFlowModel(); /** * Has the underlying flow model changed since it was last accessed via a call to {@link #getFlowModel()}. * @return true if yes, false if not */ public boolean hasFlowModelChanged(); /** * Returns the underlying resource defining the flow model. * @return the flow model resource */ public Resource getFlowModelResource(); /** * Refresh the flow model held by this holder. Calling this method typically triggers flow re-assembly, which may * include a refresh from an externalized resource such as a file. */ public void refresh(); }././@LongLink0000000000000000000000000000022300000000000011562 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframework/webflow/engine/model/registry/package.htmllibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframew0000644000000000000000000000014711360615634027755 0ustar

The registry subsystem for managing collections of flow models.

././@LongLink0000000000000000000000000000024100000000000011562 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframework/webflow/engine/model/registry/FlowModelRegistryImpl.javalibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframew0000644000000000000000000000465311360615636027765 0ustar /* * Copyright 2004-2008 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.springframework.webflow.engine.model.registry; import java.util.Map; import java.util.TreeMap; import org.springframework.core.style.ToStringCreator; import org.springframework.util.Assert; import org.springframework.webflow.engine.model.FlowModel; /** * A generic registry implementation for housing one or more flow models. * * @author Keith Donald * @author Scott Andrews */ public class FlowModelRegistryImpl implements FlowModelRegistry { /** * The map of loaded Flow models maintained in this registry. */ private Map flowModels; /** * An optional parent flow model registry. */ private FlowModelRegistry parent; public FlowModelRegistryImpl() { flowModels = new TreeMap(); } // implementing FlowModelLocator public FlowModel getFlowModel(String id) throws NoSuchFlowModelException { try { return getFlowModelHolder(id).getFlowModel(); } catch (NoSuchFlowModelException e) { if (parent != null) { // try parent return parent.getFlowModel(id); } throw e; } } // implementing FlowModelRegistry public void setParent(FlowModelRegistry parent) { this.parent = parent; } public void registerFlowModel(String id, FlowModelHolder modelHolder) { Assert.notNull(modelHolder, "The holder of the flow model to register is required"); flowModels.put(id, modelHolder); } // internal helpers /** * Returns the identified flow model holder. Throws an exception if it cannot be found. */ private FlowModelHolder getFlowModelHolder(String id) throws NoSuchFlowModelException { FlowModelHolder holder = (FlowModelHolder) flowModels.get(id); if (holder == null) { throw new NoSuchFlowModelException(id); } return holder; } public String toString() { return new ToStringCreator(this).append("flowModels", flowModels).append("parent", parent).toString(); } }././@LongLink0000000000000000000000000000023400000000000011564 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframework/webflow/engine/model/registry/FlowModelLocator.javalibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframew0000644000000000000000000000257411360615634027763 0ustar /* * Copyright 2004-2008 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.springframework.webflow.engine.model.registry; import org.springframework.webflow.engine.model.FlowModel; /** * A runtime service locator interface for retrieving flow definitions by id. Flow locators are needed * by flow executors at runtime to retrieve flow models to support loading flow definitions. * * @author Keith Donald * @author Erwin Vervaet * @author Scott Andrews */ public interface FlowModelLocator { /** * Lookup the flow model with the specified id. * @param id the flow model identifier * @return the flow mode * @throws NoSuchFlowModelException when the flow model with the specified id does not exist */ public FlowModel getFlowModel(String id) throws NoSuchFlowModelException; }././@LongLink0000000000000000000000000000023200000000000011562 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframework/webflow/engine/model/PersistenceContextModel.javalibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframew0000644000000000000000000000275211360615644027762 0ustar /* * Copyright 2004-2008 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.springframework.webflow.engine.model; /** * Model support for persistence context elements. *

* Allocates a persistence context when this flow starts. The persistence context is closed when the flow ends. If the * flow ends by reaching a "commit" end-state, changes made to managed persistent entities during the course of flow * execution are flushed to the database in a transaction. *

* The persistence context can be referenced from within this flow by the "entityManager" variable. * * @author Scott Andrews */ public class PersistenceContextModel extends AbstractModel { /** * Create a persistence context model */ public PersistenceContextModel() { } public boolean isMergeableWith(Model model) { return false; } public void merge(Model model) { } public Model createCopy() { return new PersistenceContextModel(); } } ././@LongLink0000000000000000000000000000022000000000000011557 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframework/webflow/engine/model/EndStateModel.javalibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframew0000644000000000000000000000545111360615640027755 0ustar /* * Copyright 2004-2008 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.springframework.webflow.engine.model; import java.util.LinkedList; import org.springframework.util.ObjectUtils; import org.springframework.util.StringUtils; /** * Model support for end states. * @author Scott Andrews */ public class EndStateModel extends AbstractStateModel { private String view; private String commit; private LinkedList outputs; /** * Create an end state model * @param id the state identifier */ public EndStateModel(String id) { super(id); } public boolean isMergeableWith(Model model) { if (!(model instanceof EndStateModel)) { return false; } EndStateModel state = (EndStateModel) model; return ObjectUtils.nullSafeEquals(getId(), state.getId()); } public void merge(Model model) { EndStateModel state = (EndStateModel) model; setParent(null); setAttributes(merge(getAttributes(), state.getAttributes())); setSecured((SecuredModel) merge(getSecured(), state.getSecured())); setOnEntryActions(merge(getOnEntryActions(), state.getOnEntryActions(), false)); setExceptionHandlers(merge(getExceptionHandlers(), state.getExceptionHandlers())); setView(merge(getView(), state.getView())); setCommit(merge(getCommit(), state.getCommit())); setOutputs(merge(getOutputs(), state.getOutputs(), false)); } public Model createCopy() { EndStateModel copy = new EndStateModel(getId()); super.fillCopy(copy); copy.setView(view); copy.setCommit(commit); copy.setOutputs(outputs); return copy; } /** * @return the view */ public String getView() { return view; } /** * @param view the view factory to set */ public void setView(String view) { if (StringUtils.hasText(view)) { this.view = view; } else { this.view = null; } } /** * @return the commit */ public String getCommit() { return commit; } /** * @param commit the commit to set */ public void setCommit(String commit) { if (StringUtils.hasText(commit)) { this.commit = commit; } else { this.commit = null; } } /** * @return the outputs */ public LinkedList getOutputs() { return outputs; } /** * @param outputs the outputs to set */ public void setOutputs(LinkedList outputs) { this.outputs = outputs; } } ././@LongLink0000000000000000000000000000022500000000000011564 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframework/webflow/engine/model/AbstractStateModel.javalibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframew0000644000000000000000000000562011360615640027753 0ustar /* * Copyright 2004-2008 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.springframework.webflow.engine.model; import java.util.LinkedList; import org.springframework.util.StringUtils; /** * Model support for states. * * @author Scott Andrews */ public abstract class AbstractStateModel extends AbstractModel { private String id; private String parent; private LinkedList attributes; private SecuredModel secured; private LinkedList onEntryActions; private LinkedList exceptionHandlers; public AbstractStateModel(String id) { setId(id); } protected void fillCopy(AbstractStateModel copy) { copy.setParent(parent); copy.setAttributes(copyList(attributes)); copy.setSecured((SecuredModel) copy(secured)); copy.setOnEntryActions(copyList(onEntryActions)); copy.setExceptionHandlers(copyList(exceptionHandlers)); } /** * @return the id */ public String getId() { return id; } /** * @param id the id to set */ public void setId(String id) { if (StringUtils.hasText(id)) { this.id = id; } else { this.id = null; } } /** * @return the parent */ public String getParent() { return parent; } /** * @param parent the parent to set */ public void setParent(String parent) { if (StringUtils.hasText(parent)) { this.parent = parent; } else { this.parent = null; } } /** * @return the attributes */ public LinkedList getAttributes() { return attributes; } /** * @param attributes the attributes to set */ public void setAttributes(LinkedList attributes) { this.attributes = attributes; } /** * @return the secured */ public SecuredModel getSecured() { return secured; } /** * @param secured the secured to set */ public void setSecured(SecuredModel secured) { this.secured = secured; } /** * @return the on entry actions */ public LinkedList getOnEntryActions() { return onEntryActions; } /** * @param onEntryActions the on entry actions to set */ public void setOnEntryActions(LinkedList onEntryActions) { this.onEntryActions = onEntryActions; } /** * @return the exception handlers */ public LinkedList getExceptionHandlers() { return exceptionHandlers; } /** * @param exceptionHandlers the exception handlers to set */ public void setExceptionHandlers(LinkedList exceptionHandlers) { this.exceptionHandlers = exceptionHandlers; } } ././@LongLink0000000000000000000000000000021300000000000011561 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframework/webflow/engine/model/SetModel.javalibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframew0000644000000000000000000000407211360615632027754 0ustar /* * Copyright 2004-2008 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.springframework.webflow.engine.model; import org.springframework.util.StringUtils; /** * Model support for set actions. *

* Sets an attribute value in a scope. * * @author Scott Andrews */ public class SetModel extends AbstractActionModel { private String name; private String value; private String type; /** * Create a set action model * @param name the name of the property to set * @param value the value to set */ public SetModel(String name, String value) { setName(name); setValue(value); } public Model createCopy() { final SetModel copy = new SetModel(name, value); super.fillCopy(copy); copy.setType(type); return copy; } /** * @return the name */ public String getName() { return name; } /** * @param name the name to set */ public void setName(String name) { if (StringUtils.hasText(name)) { this.name = name; } else { this.name = null; } } /** * @return the value */ public String getValue() { return value; } /** * @param value the value to set */ public void setValue(String value) { if (StringUtils.hasText(value)) { this.value = value; } else { this.value = null; } } /** * @return the type */ public String getType() { return type; } /** * @param type the type to set */ public void setType(String type) { if (StringUtils.hasText(type)) { this.type = type; } else { this.type = null; } } } ././@LongLink0000000000000000000000000000023000000000000011560 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframework/webflow/engine/model/ExceptionHandlerModel.javalibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframew0000644000000000000000000000301711360615642027753 0ustar /* * Copyright 2004-2008 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.springframework.webflow.engine.model; import org.springframework.util.StringUtils; /** * Model support for exception handlers. *

* Handles exceptions that occur during flow execution. Exception handlers may be attached at the state or flow level. * * @author Scott Andrews */ public class ExceptionHandlerModel extends AbstractModel { private String bean; /** * Create an exception handler model * @param bean the name of the bean to handle exceptions */ public ExceptionHandlerModel(String bean) { setBean(bean); } public boolean isMergeableWith(Model model) { return false; } public void merge(Model model) { } public Model createCopy() { return new ExceptionHandlerModel(bean); } public String getBean() { return bean; } public void setBean(String bean) { if (StringUtils.hasText(bean)) { this.bean = bean; } else { this.bean = null; } } } ././@LongLink0000000000000000000000000000022300000000000011562 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframework/webflow/engine/model/ActionStateModel.javalibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframew0000644000000000000000000000436211360615636027762 0ustar /* * Copyright 2004-2008 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.springframework.webflow.engine.model; import java.util.LinkedList; import org.springframework.util.ObjectUtils; /** * Model support for action states. * @author Scott Andrews */ public class ActionStateModel extends AbstractTransitionableStateModel { private LinkedList actions; /** * Create an action state model * @param id the state identifier */ public ActionStateModel(String id) { super(id); } public boolean isMergeableWith(Model model) { if (!(model instanceof ActionStateModel)) { return false; } ActionStateModel state = (ActionStateModel) model; return ObjectUtils.nullSafeEquals(getId(), state.getId()); } public void merge(Model model) { ActionStateModel state = (ActionStateModel) model; setParent(null); setAttributes(merge(getAttributes(), state.getAttributes())); setSecured((SecuredModel) merge(getSecured(), state.getSecured())); setOnEntryActions(merge(getOnEntryActions(), state.getOnEntryActions(), false)); setExceptionHandlers(merge(getExceptionHandlers(), state.getExceptionHandlers())); setTransitions(merge(getTransitions(), state.getTransitions())); setOnExitActions(merge(getOnExitActions(), state.getOnExitActions(), false)); setActions(merge(getActions(), state.getActions(), false)); } public Model createCopy() { ActionStateModel copy = new ActionStateModel(getId()); super.fillCopy(copy); copy.setActions(copyList(actions)); return copy; } /** * @return the actions */ public LinkedList getActions() { return actions; } /** * @param actions the actions to set */ public void setActions(LinkedList actions) { this.actions = actions; } } ././@LongLink0000000000000000000000000000021300000000000011561 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframework/webflow/engine/model/VarModel.javalibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframew0000644000000000000000000000437611360615634027765 0ustar /* * Copyright 2004-2008 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.springframework.webflow.engine.model; import org.springframework.util.ObjectUtils; import org.springframework.util.StringUtils; /** * Model support for var elements. *

* An instance variable. Variables are created when the flow starts or state enters and destroyed when the flow or state * ends, respectively. * * @author Scott Andrews */ public class VarModel extends AbstractModel { private String name; private String className; /** * Create a variable model * @param name the name of the variable * @param className the class type of the variable */ public VarModel(String name, String className) { setName(name); setClassName(className); } public boolean isMergeableWith(Model model) { if (!(model instanceof VarModel)) { return false; } VarModel var = (VarModel) model; return ObjectUtils.nullSafeEquals(getName(), var.getName()); } public void merge(Model model) { VarModel var = (VarModel) model; setClassName(merge(getClassName(), var.getClassName())); } public Model createCopy() { return new VarModel(name, className); } /** * @return the name */ public String getName() { return name; } /** * @param name the name to set */ public void setName(String name) { if (StringUtils.hasText(name)) { this.name = name; } else { this.name = null; } } /** * @return the class name */ public String getClassName() { return className; } /** * @param className the class name to set */ public void setClassName(String className) { if (StringUtils.hasText(className)) { this.className = className; } else { this.className = null; } } } ././@LongLink0000000000000000000000000000021400000000000011562 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframework/webflow/engine/model/FlowModel.javalibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframew0000644000000000000000000002165711360615632027764 0ustar /* * Copyright 2004-2008 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.springframework.webflow.engine.model; import java.util.Iterator; import java.util.LinkedList; import org.springframework.util.StringUtils; /** * Model support for flows. *

* Defines exactly one flow definition. A flow is composed of one or more states that define the steps of a * conversation. One of those steps is the start state, which defines the conversation's starting point.
* A flow may also exhibit the following characteristics: *

    *
  • Be annotated with attributes that define descriptive properties that may affect flow execution. (See * {@link AttributeModel}) *
  • Be secured (See {@link SecuredModel}) *
  • Be a persistence context for managing persistent objects during the course of flow execution. (See * {@link PersistenceContextModel}) *
  • Instantiate a set of instance variables when started. (See {@link VarModel}) *
  • Map input provided by callers that start it (See {@link InputModel}) *
  • Return output to callers that end it. (See {@link OutputModel}) *
  • Execute actions at start time and end time. (See {@link EvaluateModel}, {@link RenderModel} and {@link SetModel}) *
  • Define transitions shared by all states. (See {@link TransitionModel}) *
  • Handle exceptions thrown by during flow execution. (See {@link ExceptionHandlerModel}) *
  • Import one or more local bean definition files defining custom flow artifacts (such as actions, exception * handlers, view factories, transition criteria, etc). (See {@link BeanImportModel}) *
* * @author Scott Andrews */ public class FlowModel extends AbstractModel { private String abztract; private String parent; private String startStateId; private LinkedList attributes; private SecuredModel secured; private PersistenceContextModel persistenceContext; private LinkedList vars; private LinkedList inputs; private LinkedList outputs; private LinkedList onStartActions; private LinkedList states; private LinkedList globalTransitions; private LinkedList onEndActions; private LinkedList exceptionHandlers; private LinkedList beanImports; /** * Create a flow model */ public FlowModel() { } public boolean isMergeableWith(Model model) { if ((model instanceof FlowModel)) { return true; } else { return false; } } public void merge(Model model) { FlowModel flow = (FlowModel) model; setParent(null); setStartStateId(merge(getStartStateId(), flow.getStartStateId())); setAttributes(merge(getAttributes(), flow.getAttributes())); setSecured((SecuredModel) merge(getSecured(), flow.getSecured())); setPersistenceContext((PersistenceContextModel) merge(getPersistenceContext(), flow.getPersistenceContext())); setVars(merge(getVars(), flow.getVars(), false)); setInputs(merge(getInputs(), flow.getInputs())); setOutputs(merge(getOutputs(), flow.getOutputs())); setOnStartActions(merge(getOnStartActions(), flow.getOnStartActions(), false)); setStates(merge(getStates(), flow.getStates())); setGlobalTransitions(merge(getGlobalTransitions(), flow.getGlobalTransitions())); setOnEndActions(merge(getOnEndActions(), flow.getOnEndActions(), false)); setExceptionHandlers(merge(getExceptionHandlers(), flow.getExceptionHandlers())); setBeanImports(merge(getBeanImports(), flow.getBeanImports())); } public Model createCopy() { FlowModel copy = new FlowModel(); copy.setAbstract(abztract); copy.setParent(parent); copy.setStartStateId(startStateId); copy.setAttributes(copyList(attributes)); copy.setSecured((SecuredModel) copy(secured)); copy.setPersistenceContext((PersistenceContextModel) copy(persistenceContext)); copy.setVars(copyList(vars)); copy.setInputs(copyList(inputs)); copy.setOutputs(copyList(outputs)); copy.setOnStartActions(copyList(onStartActions)); copy.setStates(copyList(states)); copy.setGlobalTransitions(copyList(globalTransitions)); copy.setOnEndActions(copyList(onEndActions)); copy.setExceptionHandlers(copyList(exceptionHandlers)); copy.setBeanImports(copyList(beanImports)); return copy; } /** * @return the abstract */ public String getAbstract() { return abztract; } /** * @param abztract the abstract to set */ public void setAbstract(String abztract) { if (StringUtils.hasText(abztract)) { this.abztract = abztract; } else { this.abztract = null; } } /** * @return the parent */ public String getParent() { return parent; } /** * @param parent the parent to set */ public void setParent(String parent) { if (StringUtils.hasText(parent)) { this.parent = parent; } else { this.parent = null; } } /** * @return the id of the flow's start state */ public String getStartStateId() { return startStateId; } /** * @param startStateId the id of the flow's start state to set */ public void setStartStateId(String startStateId) { if (StringUtils.hasText(startStateId)) { this.startStateId = startStateId; } else { this.startStateId = null; } } /** * @return the attributes */ public LinkedList getAttributes() { return attributes; } /** * @param attributes the attributes to set */ public void setAttributes(LinkedList attributes) { this.attributes = attributes; } /** * @return the secured */ public SecuredModel getSecured() { return secured; } /** * @param secured the secured to set */ public void setSecured(SecuredModel secured) { this.secured = secured; } /** * @return the persistence context */ public PersistenceContextModel getPersistenceContext() { return persistenceContext; } /** * @param persistenceContext the persistence context to set */ public void setPersistenceContext(PersistenceContextModel persistenceContext) { this.persistenceContext = persistenceContext; } /** * @return the vars */ public LinkedList getVars() { return vars; } /** * @param vars the vars to set */ public void setVars(LinkedList vars) { this.vars = vars; } /** * @return the input mappings */ public LinkedList getInputs() { return inputs; } /** * @param inputs the input mappings to set */ public void setInputs(LinkedList inputs) { this.inputs = inputs; } /** * @return the output mappings */ public LinkedList getOutputs() { return outputs; } /** * @param outputs the output mappings to set */ public void setOutputs(LinkedList outputs) { this.outputs = outputs; } /** * @return the on start actions */ public LinkedList getOnStartActions() { return onStartActions; } /** * @param onStartActions the on start actions to set */ public void setOnStartActions(LinkedList onStartActions) { this.onStartActions = onStartActions; } /** * @return the states */ public LinkedList getStates() { return states; } /** * Get the state model for an identifier * @param id the state identifier to find * @return the state or null if the identifier was not found */ public AbstractStateModel getStateById(String id) { if (states != null) { for (Iterator it = states.iterator(); it.hasNext();) { AbstractStateModel state = (AbstractStateModel) it.next(); if (id.equals(state.getId())) { return state; } } } return null; } /** * @param states the states to set */ public void setStates(LinkedList states) { this.states = states; } /** * @return the global transitions */ public LinkedList getGlobalTransitions() { return globalTransitions; } /** * @param globalTransitions the global transitions to set */ public void setGlobalTransitions(LinkedList globalTransitions) { this.globalTransitions = globalTransitions; } /** * @return the on end actions */ public LinkedList getOnEndActions() { return onEndActions; } /** * @param onEndActions the on end actions to set */ public void setOnEndActions(LinkedList onEndActions) { this.onEndActions = onEndActions; } /** * @return the exception handlers */ public LinkedList getExceptionHandlers() { return exceptionHandlers; } /** * @param exceptionHandlers the exception handlers to set */ public void setExceptionHandlers(LinkedList exceptionHandlers) { this.exceptionHandlers = exceptionHandlers; } /** * @return the bean imports */ public LinkedList getBeanImports() { return beanImports; } /** * @param beanImports the bean imports to set */ public void setBeanImports(LinkedList beanImports) { this.beanImports = beanImports; } } ././@LongLink0000000000000000000000000000021200000000000011560 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframework/webflow/engine/DecisionState.javalibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframew0000644000000000000000000000430711360615636027761 0ustar /* * Copyright 2004-2008 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.springframework.webflow.engine; import org.springframework.webflow.execution.FlowExecutionException; import org.springframework.webflow.execution.RequestContext; /** * A simple transitionable state that when entered will execute the first transition whose matching criteria evaluates * to true in the {@link RequestContext context} of the current request. *

* A decision state is a convenient, simple way to encapsulate reusable state transition logic in one place. * * @author Keith Donald */ public class DecisionState extends TransitionableState { /** * Creates a new decision state. * @param flow the owning flow * @param stateId the state identifier (must be unique to the flow) * @throws IllegalArgumentException when this state cannot be added to given flow, e.g. because the id is not unique */ public DecisionState(Flow flow, String stateId) throws IllegalArgumentException { super(flow, stateId); } /** * Specialization of State's doEnter template method that executes behavior specific to this state * type in polymorphic fashion. *

* Simply looks up the first transition that matches the state of the context and executes it. * @param context the control context for the currently executing flow, used by this state to manipulate the flow * execution * @throws FlowExecutionException if an exception occurs in this state */ protected void doEnter(RequestControlContext context) throws FlowExecutionException { getRequiredTransition(context).execute(this, context); } }././@LongLink0000000000000000000000000000022700000000000011566 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframework/webflow/engine/FlowOutputMappingException.javalibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframew0000644000000000000000000000341311360615632027752 0ustar /* * Copyright 2004-2008 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.springframework.webflow.engine; import org.springframework.binding.mapping.MappingResults; /** * Thrown when flow output mapping fails. * * @author Keith Donald */ public class FlowOutputMappingException extends FlowAttributeMappingException { /** * Creates a new flow output mapping exception. * @param flowId the id of the flow where output mapping failed * @param results the mapping errors with errors */ public FlowOutputMappingException(String flowId, MappingResults results) { super(flowId, null, results, "Errors occurred during output mapping on ending of the '" + flowId + "' flow; errors = " + results.getErrorResults()); } /** * Creates a new flow output mapping exception. * @param flowId the id of the flow where output mapping failed * @param stateId the id of the state where output mapping failed * @param results the mapping errors with errors */ public FlowOutputMappingException(String flowId, String stateId, MappingResults results) { super(flowId, stateId, results, "Errors occurred during output mapping in state '" + stateId + "' of flow '" + flowId + "'; errors = " + results.getErrorResults()); } } ././@LongLink0000000000000000000000000000017100000000000011564 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframework/webflow/context/libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframew0000755000000000000000000000000011360615644027752 5ustar ././@LongLink0000000000000000000000000000017500000000000011570 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframework/webflow/context/web/libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframew0000755000000000000000000000000011360615640027746 5ustar ././@LongLink0000000000000000000000000000023700000000000011567 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframework/webflow/context/web/HttpSessionMapBindingListener.javalibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframew0000644000000000000000000000476611360615634027770 0ustar /* * Copyright 2004-2008 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.springframework.webflow.context.web; import java.util.Map; import javax.servlet.http.HttpSessionBindingEvent; import javax.servlet.http.HttpSessionBindingListener; import org.springframework.webflow.core.collection.AttributeMapBindingEvent; import org.springframework.webflow.core.collection.AttributeMapBindingListener; import org.springframework.webflow.core.collection.LocalAttributeMap; /** * Helper class that adapts a generic {@link AttributeMapBindingListener} to a HTTP specific * {@link HttpSessionBindingListener}. Calls will be forwarded to the wrapped listener. * * @author Keith Donald */ public class HttpSessionMapBindingListener implements HttpSessionBindingListener { private AttributeMapBindingListener listener; private Map sessionMap; /** * Create a new wrapper for given listener. * @param listener the listener to wrap * @param sessionMap the session map containing the listener */ public HttpSessionMapBindingListener(AttributeMapBindingListener listener, Map sessionMap) { this.listener = listener; this.sessionMap = sessionMap; } /** * Returns the wrapped listener. */ public AttributeMapBindingListener getListener() { return listener; } /** * Returns the session map containing the listener. */ public Map getSessionMap() { return sessionMap; } public void valueBound(HttpSessionBindingEvent event) { listener.valueBound(getContextBindingEvent(event)); } public void valueUnbound(HttpSessionBindingEvent event) { listener.valueUnbound(getContextBindingEvent(event)); } /** * Create a attribute map binding event for given HTTP session binding event. */ private AttributeMapBindingEvent getContextBindingEvent(HttpSessionBindingEvent event) { return new AttributeMapBindingEvent(new LocalAttributeMap(sessionMap), event.getName(), listener); } }././@LongLink0000000000000000000000000000021100000000000011557 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframework/webflow/context/web/package.htmllibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframew0000644000000000000000000000015611360615640027752 0ustar Shared classes used by the Servlet and Portlet ExternalContext implementations. ././@LongLink0000000000000000000000000000020100000000000011556 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframework/webflow/context/portlet/libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframew0000755000000000000000000000000011360615644027752 5ustar ././@LongLink0000000000000000000000000000022700000000000011566 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframework/webflow/context/portlet/PortletSessionMap.javalibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframew0000644000000000000000000000631111360615636027756 0ustar /* * Copyright 2004-2008 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.springframework.webflow.context.portlet; import java.util.Iterator; import javax.portlet.PortletRequest; import javax.portlet.PortletSession; import org.springframework.binding.collection.SharedMap; import org.springframework.binding.collection.StringKeyedMapAdapter; import org.springframework.web.util.WebUtils; import org.springframework.webflow.context.web.HttpSessionMapBindingListener; import org.springframework.webflow.core.collection.AttributeMapBindingListener; import org.springframework.webflow.core.collection.CollectionUtils; /** * A Shared Map backed by the Portlet session, for accessing session scoped attributes. * * @author Keith Donald * @author Scott Andrews */ public class PortletSessionMap extends StringKeyedMapAdapter implements SharedMap { /** * The wrapped portlet request, providing access to the session. */ private PortletRequest request; /** * Create a map wrapping the session of given request. */ public PortletSessionMap(PortletRequest request) { this.request = request; } /** * Internal helper to get the portlet session associated with the wrapped request, or null if there is no such * session. *

* Note that this method will not force session creation. */ private PortletSession getSession() { return request.getPortletSession(false); } protected Object getAttribute(String key) { PortletSession session = getSession(); if (session == null) { return null; } Object value = session.getAttribute(key); if (value instanceof HttpSessionMapBindingListener) { // unwrap return ((HttpSessionMapBindingListener) value).getListener(); } else { return value; } } protected void setAttribute(String key, Object value) { // force session creation PortletSession session = request.getPortletSession(true); if (value instanceof AttributeMapBindingListener) { // wrap session.setAttribute(key, new HttpSessionMapBindingListener((AttributeMapBindingListener) value, this)); } else { session.setAttribute(key, value); } } protected void removeAttribute(String key) { PortletSession session = getSession(); if (session != null) { session.removeAttribute(key); } } protected Iterator getAttributeNames() { PortletSession session = getSession(); return session == null ? CollectionUtils.EMPTY_ITERATOR : CollectionUtils.toIterator(session .getAttributeNames()); } public Object getMutex() { // force session creation PortletSession session = request.getPortletSession(true); Object mutex = session.getAttribute(WebUtils.SESSION_MUTEX_ATTRIBUTE); return mutex != null ? mutex : session; } }././@LongLink0000000000000000000000000000022400000000000011563 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframework/webflow/context/portlet/FlowUrlHandler.javalibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframew0000644000000000000000000000412711360615644027760 0ustar /* * Copyright 2004-2008 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.springframework.webflow.context.portlet; import javax.portlet.ActionResponse; import javax.portlet.PortletRequest; import javax.portlet.RenderRequest; import javax.portlet.RenderResponse; /** * A interface for parsing and generating flow URLs. Encapsulates a specific flow URL format. * * @author Keith Donald * @author Scott Andrews */ public interface FlowUrlHandler { /** * Extract the flow execution from the request. * @param request the request * @return the flow execution key, or null if no flow execution key is present */ public String getFlowExecutionKey(PortletRequest request); /** * Set the flow execution key render parameter. * @param flowExecutionKey the key * @param response the action response */ public void setFlowExecutionRenderParameter(String flowExecutionKey, ActionResponse response); /** * Set the flow execution key into the portlet session. This should only be used when the portlet is started before * any action requests are made * @param flowExecutionKey the key * @param request the render request */ public void setFlowExecutionInSession(String flowExecutionKey, RenderRequest request); /** * Creates a flow execution URL suitable for use as an action URL. * @param flowId the flow id * @param flowExecutionKey the flow execution key * @param response the render response * @return the execution url */ public String createFlowExecutionUrl(String flowId, String flowExecutionKey, RenderResponse response); } ././@LongLink0000000000000000000000000000023400000000000011564 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframework/webflow/context/portlet/PortletExternalContext.javalibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframew0000644000000000000000000002612611360615640027757 0ustar /* * Copyright 2004-2008 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.springframework.webflow.context.portlet; import java.io.IOException; import java.io.Writer; import java.security.Principal; import java.util.Locale; import javax.portlet.ActionRequest; import javax.portlet.ActionResponse; import javax.portlet.PortletContext; import javax.portlet.PortletRequest; import javax.portlet.PortletResponse; import javax.portlet.RenderRequest; import javax.portlet.RenderResponse; import org.springframework.webflow.context.ExternalContext; import org.springframework.webflow.core.collection.LocalAttributeMap; import org.springframework.webflow.core.collection.LocalParameterMap; import org.springframework.webflow.core.collection.LocalSharedAttributeMap; import org.springframework.webflow.core.collection.MutableAttributeMap; import org.springframework.webflow.core.collection.ParameterMap; import org.springframework.webflow.core.collection.SharedAttributeMap; /** * Provides contextual information about an portlet environment that has interacted with Spring Web Flow. * * @author Keith Donald * @author Erwin Vervaet * @author Jeremy Grelle * @author Scott Andrews */ public class PortletExternalContext implements ExternalContext { protected static final short ACTION_PHASE = 1; protected static final short RENDER_PHASE = 2; /** * The context. */ private PortletContext context; /** * The request. */ private PortletRequest request; /** * The response. */ private PortletResponse response; /** * The portlet request phase: render or action */ private short requestPhase; /** * An accessor for the HTTP request parameter map. */ private ParameterMap requestParameterMap; /** * An accessor for the HTTP request attribute map. */ private MutableAttributeMap requestMap; /** * An accessor for the HTTP session map. */ private SharedAttributeMap sessionMap; /** * An accessor for the servlet context application map. */ private SharedAttributeMap applicationMap; /** * A flag indicating if the flow committed the response. Set to true by requesting an execution redirect, definition * redirect, external redirect, or by calling {@link ExternalContext#recordResponseComplete()} */ private boolean responseComplete; /** * A flag indicating if a flow execution redirect has been requested. */ private boolean flowExecutionRedirectRequested; /** * A string specifying the id of the flow to redirect to after request processing. If null, no flow definition * redirect has been requested. */ private String flowDefinitionRedirectFlowId; /** * Input to pass the flow definition upon redirecting. May be null. Never set unless * {@link #flowDefinitionRedirectFlowId} has been set. */ private MutableAttributeMap flowDefinitionRedirectFlowInput; /** * A string specifying an arbitrary */ private String externalRedirectUrl; /** * The strategy for generating flow execution urls. */ private FlowUrlHandler flowUrlHandler; /** * In the case where a redirect response is requested, this flag indicates if the redirect should be issued from a * popup dialog. */ private boolean redirectInPopup; /** * Create a new external context wrapping given portlet action request and response and given portlet context. * @param context the portal context * @param request the portlet request * @param response the portlet response */ public PortletExternalContext(PortletContext context, PortletRequest request, PortletResponse response) { init(context, request, response, new DefaultFlowUrlHandler()); } /** * Create a new external context wrapping given portlet action request and response and given portlet context. * @param context the portal context * @param request the portlet request * @param response the portlet response * @param flowUrlHandler the flow url handler */ public PortletExternalContext(PortletContext context, PortletRequest request, PortletResponse response, FlowUrlHandler flowUrlHandler) { init(context, request, response, flowUrlHandler); } // implementing external context public String getContextPath() { return request.getContextPath(); } public ParameterMap getRequestParameterMap() { return requestParameterMap; } public MutableAttributeMap getRequestMap() { return requestMap; } public SharedAttributeMap getSessionMap() { return sessionMap; } public SharedAttributeMap getGlobalSessionMap() { return getSessionMap(); } public SharedAttributeMap getApplicationMap() { return applicationMap; } public Principal getCurrentUser() { return request.getUserPrincipal(); } public Locale getLocale() { return request.getLocale(); } public Object getNativeContext() { return context; } public Object getNativeRequest() { return request; } public Object getNativeResponse() { return response; } public boolean isAjaxRequest() { return false; } public String getFlowExecutionUrl(String flowId, String flowExecutionKey) { if (!isRenderPhase()) { throw new IllegalStateException( "A flow execution action URL can only be obtained in a RenderRequest using a RenderResponse"); } return flowUrlHandler.createFlowExecutionUrl(flowId, flowExecutionKey, (RenderResponse) response); } public Writer getResponseWriter() throws IllegalStateException { assertResponseAllowed(); try { return ((RenderResponse) response).getWriter(); } catch (IOException e) { IllegalStateException ise = new IllegalStateException("Unable to access the response Writer"); ise.initCause(e); throw ise; } } public boolean isResponseAllowed() { return isRenderPhase() && !responseComplete; } public boolean isResponseComplete() { return responseComplete; } public void recordResponseComplete() { responseComplete = true; } public boolean isResponseCompleteFlowExecutionRedirect() { return flowExecutionRedirectRequested; } public void requestFlowExecutionRedirect() throws IllegalStateException { assertRedirectResponseAllowed(); flowExecutionRedirectRequested = true; recordResponseComplete(); } public void requestFlowDefinitionRedirect(String flowId, MutableAttributeMap input) throws IllegalStateException { assertRedirectResponseAllowed(); flowDefinitionRedirectFlowId = flowId; flowDefinitionRedirectFlowInput = input != null ? input : new LocalAttributeMap(); recordResponseComplete(); } public void requestExternalRedirect(String uri) throws IllegalStateException { assertRedirectResponseAllowed(); externalRedirectUrl = uri; recordResponseComplete(); } public void requestRedirectInPopup() throws IllegalStateException { if (isRedirectRequested()) { redirectInPopup = true; } else { throw new IllegalStateException( "Only call requestRedirectInPopup after a redirect has been requested by calling requestFlowExecutionRedirect, requestFlowDefinitionRedirect, or requestExternalRedirect"); } } // implementation specific methods /** * Returns the flag indicating if a flow execution redirect response has been requested by the flow. */ public boolean getFlowExecutionRedirectRequested() { return flowExecutionRedirectRequested; } /** * Returns the flag indicating if a flow definition redirect response has been requested by the flow. */ public boolean getFlowDefinitionRedirectRequested() { return flowDefinitionRedirectFlowId != null; } /** * Returns the id of the flow definition to redirect to. Only set when {@link #getFlowDefinitionRedirectRequested()} * returns true. */ public String getFlowRedirectFlowId() { return flowDefinitionRedirectFlowId; } /** * Returns the input to pass the flow definition through the redirect. Only set when * {@link #getFlowDefinitionRedirectRequested()} returns true. */ public MutableAttributeMap getFlowRedirectFlowInput() { return flowDefinitionRedirectFlowInput; } /** * Returns the flag indicating if an external redirect response has been requested by the flow. */ public boolean getExternalRedirectRequested() { return externalRedirectUrl != null; } /** * Returns the URL to redirect to. Only set if {@link #getExternalRedirectRequested()} returns true. */ public String getExternalRedirectUrl() { return externalRedirectUrl; } /** * If a redirect response has been requested, indicates if the redirect should be issued from a popup dialog. */ public boolean getRedirectInPopup() { return redirectInPopup; } /** * Returns true if the current request phase is the action phase */ public boolean isActionPhase() { return requestPhase == ACTION_PHASE; } /** * Returns true if the current request phase is the render phase */ public boolean isRenderPhase() { return requestPhase == RENDER_PHASE; } // private helpers private void init(PortletContext context, PortletRequest request, PortletResponse response, FlowUrlHandler flowUrlHandler) { this.context = context; this.request = request; this.response = response; this.requestParameterMap = new LocalParameterMap(new PortletRequestParameterMap(request)); this.requestMap = new LocalAttributeMap(new PortletRequestMap(request)); this.sessionMap = new LocalSharedAttributeMap(new PortletSessionMap(request)); this.applicationMap = new LocalSharedAttributeMap(new PortletContextMap(context)); this.flowUrlHandler = flowUrlHandler; if (request instanceof ActionRequest && response instanceof ActionResponse) { requestPhase = ACTION_PHASE; } else if (request instanceof RenderRequest && response instanceof RenderResponse) { requestPhase = RENDER_PHASE; } else { throw new IllegalArgumentException("Unknown portlet phase, expected: action or render"); } } private void assertResponseAllowed() throws IllegalStateException { if (!isRenderPhase()) { throw new IllegalStateException( "A response is not allowed because the current PortletRequest is not a RenderRequest"); } if (responseComplete) { throw new IllegalStateException( "A response is not allowed because recordResponseComplete() has already been called on this ExternalContext"); } } private void assertRedirectResponseAllowed() throws IllegalStateException { if (!isActionPhase()) { throw new IllegalStateException( "A redirect is not allowed because the current PortletRequest is not a ActionRequest"); } if (responseComplete) { throw new IllegalStateException( "A redirect is not allowed because a response has already been completed on this ExternalContext"); } } private boolean isRedirectRequested() { return getFlowExecutionRedirectRequested() || getFlowDefinitionRedirectRequested() || getExternalRedirectRequested(); } } ././@LongLink0000000000000000000000000000022700000000000011566 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframework/webflow/context/portlet/PortletContextMap.javalibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframew0000644000000000000000000000342011360615632027750 0ustar /* * Copyright 2004-2008 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.springframework.webflow.context.portlet; import java.util.Iterator; import javax.portlet.PortletContext; import org.springframework.binding.collection.SharedMap; import org.springframework.binding.collection.StringKeyedMapAdapter; import org.springframework.webflow.core.collection.CollectionUtils; /** * Map backed by the Portlet context for accessing application scoped attributes. * * @author Keith Donald * @author Scott Andrews */ public class PortletContextMap extends StringKeyedMapAdapter implements SharedMap { /** * The wrapped portlet context. */ private PortletContext context; /** * Create a map wrapping given portlet context. */ public PortletContextMap(PortletContext context) { this.context = context; } protected Object getAttribute(String key) { return context.getAttribute(key); } protected void setAttribute(String key, Object value) { context.setAttribute(key, value); } protected void removeAttribute(String key) { context.removeAttribute(key); } protected Iterator getAttributeNames() { return CollectionUtils.toIterator(context.getAttributeNames()); } public Object getMutex() { return context; } }././@LongLink0000000000000000000000000000022700000000000011566 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframework/webflow/context/portlet/PortletRequestMap.javalibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframew0000644000000000000000000000324711360615642027760 0ustar /* * Copyright 2004-2008 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.springframework.webflow.context.portlet; import java.util.Iterator; import javax.portlet.PortletRequest; import org.springframework.binding.collection.StringKeyedMapAdapter; import org.springframework.webflow.core.collection.CollectionUtils; /** * Map backed by the Portlet request attribute map for accessing request local attributes. * * @author Keith Donald * @author Scott Andrews */ public class PortletRequestMap extends StringKeyedMapAdapter { /** * The wrapped portlet request. */ private PortletRequest request; /** * Create a new map wrapping the attributes of given request. */ public PortletRequestMap(PortletRequest request) { this.request = request; } protected Object getAttribute(String key) { return request.getAttribute(key); } protected void setAttribute(String key, Object value) { request.setAttribute(key, value); } protected void removeAttribute(String key) { request.removeAttribute(key); } protected Iterator getAttributeNames() { return CollectionUtils.toIterator(request.getAttributeNames()); } }././@LongLink0000000000000000000000000000021500000000000011563 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframework/webflow/context/portlet/package.htmllibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframew0000644000000000000000000000017311360615634027754 0ustar Contains the PortletExternalContext implementation for calling into Web Flow from a Portlet. ././@LongLink0000000000000000000000000000024000000000000011561 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframework/webflow/context/portlet/PortletRequestParameterMap.javalibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframew0000644000000000000000000000563011360615634027757 0ustar /* * Copyright 2004-2008 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.springframework.webflow.context.portlet; import java.util.Iterator; import javax.portlet.PortletRequest; import org.springframework.binding.collection.CompositeIterator; import org.springframework.binding.collection.StringKeyedMapAdapter; import org.springframework.util.Assert; import org.springframework.web.portlet.multipart.MultipartActionRequest; import org.springframework.webflow.core.collection.CollectionUtils; /** * Map backed by the Portlet request parameter map for accessing request parameters. Also provides support for * multi-part requests, providing transparent access to the request "fileMap" as a request parameter entry. * * @author Keith Donald * @author Scott Andrews */ public class PortletRequestParameterMap extends StringKeyedMapAdapter { /** * The wrapped Portlet request. */ private PortletRequest request; /** * Create a new map wrapping the parameters of given request. */ public PortletRequestParameterMap(PortletRequest request) { Assert.notNull(request, "The portlet request is required"); this.request = request; } protected Object getAttribute(String key) { if (request instanceof MultipartActionRequest) { MultipartActionRequest multipartRequest = (MultipartActionRequest) request; Object data = multipartRequest.getFileMap().get(key); if (data != null) { return data; } } String[] parameters = request.getParameterValues(key); if (parameters == null) { return null; } else if (parameters.length == 1) { return parameters[0]; } else { return parameters; } } protected void setAttribute(String key, Object value) { throw new UnsupportedOperationException("PortletRequest parameter maps are immutable"); } protected void removeAttribute(String key) { throw new UnsupportedOperationException("PortletRequest parameter maps are immutable"); } protected Iterator getAttributeNames() { if (request instanceof MultipartActionRequest) { MultipartActionRequest multipartRequest = (MultipartActionRequest) request; CompositeIterator iterator = new CompositeIterator(); iterator.add(multipartRequest.getFileMap().keySet().iterator()); iterator.add(CollectionUtils.toIterator(request.getParameterNames())); return iterator; } else { return CollectionUtils.toIterator(request.getParameterNames()); } } }././@LongLink0000000000000000000000000000023300000000000011563 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframework/webflow/context/portlet/DefaultFlowUrlHandler.javalibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframew0000644000000000000000000000436211360615636027762 0ustar /* * Copyright 2004-2008 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.springframework.webflow.context.portlet; import javax.portlet.ActionRequest; import javax.portlet.ActionResponse; import javax.portlet.PortletRequest; import javax.portlet.PortletSession; import javax.portlet.PortletURL; import javax.portlet.RenderRequest; import javax.portlet.RenderResponse; /** * Default flow URL handler for SWF 2. * * @author Scott Andrews */ public class DefaultFlowUrlHandler implements FlowUrlHandler { private static final String EXECUTION_ATTRIBUTE = "execution"; public String getFlowExecutionKey(PortletRequest request) { String flowExecutionKey = request.getParameter(EXECUTION_ATTRIBUTE); PortletSession session = request.getPortletSession(false); if (session != null) { if (flowExecutionKey == null && request instanceof RenderRequest) { flowExecutionKey = (String) session.getAttribute(EXECUTION_ATTRIBUTE); } else if (flowExecutionKey != null && request instanceof ActionRequest) { session.removeAttribute(EXECUTION_ATTRIBUTE); } } return flowExecutionKey; } public void setFlowExecutionRenderParameter(String flowExecutionKey, ActionResponse response) { response.setRenderParameter(EXECUTION_ATTRIBUTE, flowExecutionKey); } public void setFlowExecutionInSession(String flowExecutionKey, RenderRequest request) { PortletSession session = request.getPortletSession(); session.setAttribute(EXECUTION_ATTRIBUTE, flowExecutionKey); } public String createFlowExecutionUrl(String flowId, String flowExecutionKey, RenderResponse response) { PortletURL url = response.createActionURL(); url.setParameter(EXECUTION_ATTRIBUTE, flowExecutionKey); return url.toString(); } } ././@LongLink0000000000000000000000000000020100000000000011556 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframework/webflow/context/servlet/libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframew0000755000000000000000000000000011360615646027754 5ustar ././@LongLink0000000000000000000000000000022400000000000011563 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframework/webflow/context/servlet/HttpSessionMap.javalibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframew0000644000000000000000000000622111360615634027754 0ustar /* * Copyright 2004-2008 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.springframework.webflow.context.servlet; import java.util.Iterator; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpSession; import org.springframework.binding.collection.SharedMap; import org.springframework.binding.collection.StringKeyedMapAdapter; import org.springframework.web.util.WebUtils; import org.springframework.webflow.context.web.HttpSessionMapBindingListener; import org.springframework.webflow.core.collection.AttributeMapBindingListener; import org.springframework.webflow.core.collection.CollectionUtils; /** * A Shared Map backed by the Servlet HTTP session, for accessing session scoped attributes. * * @author Keith Donald */ public class HttpSessionMap extends StringKeyedMapAdapter implements SharedMap { /** * The wrapped HTTP request, providing access to the session. */ private HttpServletRequest request; /** * Create a map wrapping the session of given request. */ public HttpSessionMap(HttpServletRequest request) { this.request = request; } /** * Internal helper to get the HTTP session associated with the wrapped request, or null if there is no such session. *

* Note that this method will not force session creation. */ private HttpSession getSession() { return request.getSession(false); } protected Object getAttribute(String key) { HttpSession session = getSession(); if (session == null) { return null; } Object value = session.getAttribute(key); if (value instanceof HttpSessionMapBindingListener) { // unwrap return ((HttpSessionMapBindingListener) value).getListener(); } else { return value; } } protected void setAttribute(String key, Object value) { // force session creation HttpSession session = request.getSession(true); if (value instanceof AttributeMapBindingListener) { // wrap session.setAttribute(key, new HttpSessionMapBindingListener((AttributeMapBindingListener) value, this)); } else { session.setAttribute(key, value); } } protected void removeAttribute(String key) { HttpSession session = getSession(); if (session != null) { session.removeAttribute(key); } } protected Iterator getAttributeNames() { HttpSession session = getSession(); return session == null ? CollectionUtils.EMPTY_ITERATOR : CollectionUtils.toIterator(session .getAttributeNames()); } public Object getMutex() { // force session creation HttpSession session = request.getSession(true); Object mutex = session.getAttribute(WebUtils.SESSION_MUTEX_ATTRIBUTE); return mutex != null ? mutex : session; } }././@LongLink0000000000000000000000000000023400000000000011564 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframework/webflow/context/servlet/WebFlow1FlowUrlHandler.javalibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframew0000644000000000000000000000610411360615640027751 0ustar /* * Copyright 2004-2008 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); you may not * use this file except in compliance with the License. You may obtain a copy of * the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the * License for the specific language governing permissions and limitations under * the License. */ package org.springframework.webflow.context.servlet; import java.io.UnsupportedEncodingException; import java.net.URLEncoder; import java.util.Iterator; import java.util.Map; import javax.servlet.http.HttpServletRequest; import org.springframework.webflow.core.collection.AttributeMap; /** * Flow URL handler that implements the default Web Flow 1.x URL format. Here for backwards compatibility. * * @author Keith Donald */ public class WebFlow1FlowUrlHandler implements FlowUrlHandler { private static final String DEFAULT_URL_ENCODING_SCHEME = "UTF-8"; private String urlEncodingScheme = DEFAULT_URL_ENCODING_SCHEME; public String getFlowExecutionKey(HttpServletRequest request) { return request.getParameter("_flowExecutionKey"); } public String getFlowId(HttpServletRequest request) { return request.getParameter("_flowId"); } public String createFlowExecutionUrl(String flowId, String flowExecutionKey, HttpServletRequest request) { StringBuffer url = new StringBuffer(); url.append(request.getRequestURI()); url.append('?'); appendQueryParameter(url, "_flowId", flowId); url.append('&'); appendQueryParameter(url, "_flowExecutionKey", flowExecutionKey); return url.toString(); } public String createFlowDefinitionUrl(String flowId, AttributeMap input, HttpServletRequest request) { StringBuffer url = new StringBuffer(); url.append(request.getRequestURI()); url.append('?'); appendQueryParameter(url, "_flowId", flowId); if (input != null && !input.isEmpty()) { url.append('&'); appendQueryParameters(url, input.asMap()); } return url.toString(); } private void appendQueryParameters(StringBuffer url, Map parameters) { Iterator entries = parameters.entrySet().iterator(); while (entries.hasNext()) { Map.Entry entry = (Map.Entry) entries.next(); appendQueryParameter(url, entry.getKey(), entry.getValue()); if (entries.hasNext()) { url.append('&'); } } } private void appendQueryParameter(StringBuffer url, Object key, Object value) { String encodedKey = encode(key); String encodedValue = encode(value); url.append(encodedKey).append('=').append(encodedValue); } private String encode(Object value) { return value != null ? urlEncode(String.valueOf(value)) : ""; } private String urlEncode(String value) { try { return URLEncoder.encode(String.valueOf(value), urlEncodingScheme); } catch (UnsupportedEncodingException e) { throw new IllegalArgumentException("Cannot url encode " + value); } } } ././@LongLink0000000000000000000000000000022400000000000011563 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframework/webflow/context/servlet/FlowUrlHandler.javalibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframew0000644000000000000000000000411011360615636027751 0ustar /* * Copyright 2004-2008 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); you may not * use this file except in compliance with the License. You may obtain a copy of * the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the * License for the specific language governing permissions and limitations under * the License. */ package org.springframework.webflow.context.servlet; import javax.servlet.http.HttpServletRequest; import org.springframework.webflow.core.collection.AttributeMap; /** * A interface for parsing and generating flow URLs. Encapsulates a specific flow URL format. * * @author Keith Donald */ public interface FlowUrlHandler { /** * Extract the flow execution from the request. * @param request the request * @return the flow execution key, or null if no flow execution key is present */ public String getFlowExecutionKey(HttpServletRequest request); /** * Extract the flow id from the request. * @param request the request * @return the flow id, or null if no flow id is present */ public String getFlowId(HttpServletRequest request); /** * Create a URL that when addressed will launch a new execution of a flow. * @param flowId the id of the flow definition * @param input the input to pass the new flow execution * @param request the current request * @return the flow definition url */ public String createFlowDefinitionUrl(String flowId, AttributeMap input, HttpServletRequest request); /** * Create a URL that when addressed will resume an existing execution of a flow. * @param flowExecutionKey the flow execution key that is paused and waiting to be resumed * @param request the current request * @return the flow execution url */ public String createFlowExecutionUrl(String flowId, String flowExecutionKey, HttpServletRequest request); } ././@LongLink0000000000000000000000000000023300000000000011563 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframework/webflow/context/servlet/HttpServletRequestMap.javalibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframew0000644000000000000000000000325111360615644027755 0ustar /* * Copyright 2004-2008 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.springframework.webflow.context.servlet; import java.util.Iterator; import javax.servlet.http.HttpServletRequest; import org.springframework.binding.collection.StringKeyedMapAdapter; import org.springframework.webflow.core.collection.CollectionUtils; /** * Map backed by the Servlet HTTP request attribute map for accessing request local attributes. * * @author Keith Donald */ public class HttpServletRequestMap extends StringKeyedMapAdapter { /** * The wrapped HTTP request. */ private HttpServletRequest request; /** * Create a new map wrapping the attributes of given request. */ public HttpServletRequestMap(HttpServletRequest request) { this.request = request; } protected Object getAttribute(String key) { return request.getAttribute(key); } protected void setAttribute(String key, Object value) { request.setAttribute(key, value); } protected void removeAttribute(String key) { request.removeAttribute(key); } protected Iterator getAttributeNames() { return CollectionUtils.toIterator(request.getAttributeNames()); } }././@LongLink0000000000000000000000000000024400000000000011565 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframework/webflow/context/servlet/HttpServletRequestParameterMap.javalibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframew0000644000000000000000000000570211360615632027755 0ustar /* * Copyright 2004-2008 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.springframework.webflow.context.servlet; import java.util.Iterator; import javax.servlet.http.HttpServletRequest; import org.springframework.binding.collection.CompositeIterator; import org.springframework.binding.collection.StringKeyedMapAdapter; import org.springframework.util.Assert; import org.springframework.web.multipart.MultipartHttpServletRequest; import org.springframework.webflow.core.collection.CollectionUtils; /** * Map backed by the Servlet HTTP request parameter map for accessing request parameters. Also provides support for * multi-part requests, providing transparent access to the request "fileMap" as a request parameter entry. * * @author Keith Donald */ public class HttpServletRequestParameterMap extends StringKeyedMapAdapter { /** * The wrapped HTTP request. */ private HttpServletRequest request; /** * Create a new map wrapping the parameters of given request. */ public HttpServletRequestParameterMap(HttpServletRequest request) { Assert.notNull(request, "The HTTP servlet request is required"); this.request = request; } protected Object getAttribute(String key) { if (request instanceof MultipartHttpServletRequest) { MultipartHttpServletRequest multipartRequest = (MultipartHttpServletRequest) request; Object data = multipartRequest.getFileMap().get(key); if (data != null) { return data; } } String[] parameters = request.getParameterValues(key); if (parameters == null) { return null; } else if (parameters.length == 1) { return parameters[0]; } else { return parameters; } } protected void setAttribute(String key, Object value) { throw new UnsupportedOperationException("HttpServletRequest parameter maps are immutable"); } protected void removeAttribute(String key) { throw new UnsupportedOperationException("HttpServletRequest parameter maps are immutable"); } protected Iterator getAttributeNames() { if (request instanceof MultipartHttpServletRequest) { MultipartHttpServletRequest multipartRequest = (MultipartHttpServletRequest) request; CompositeIterator iterator = new CompositeIterator(); iterator.add(multipartRequest.getFileMap().keySet().iterator()); iterator.add(CollectionUtils.toIterator(request.getParameterNames())); return iterator; } else { return CollectionUtils.toIterator(request.getParameterNames()); } } }././@LongLink0000000000000000000000000000023400000000000011564 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframework/webflow/context/servlet/ServletExternalContext.javalibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframew0000644000000000000000000002563611360615632027765 0ustar /* * Copyright 2004-2008 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.springframework.webflow.context.servlet; import java.io.IOException; import java.io.Writer; import java.security.Principal; import java.util.Locale; import javax.servlet.ServletContext; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.springframework.webflow.context.ExternalContext; import org.springframework.webflow.core.collection.LocalAttributeMap; import org.springframework.webflow.core.collection.LocalParameterMap; import org.springframework.webflow.core.collection.LocalSharedAttributeMap; import org.springframework.webflow.core.collection.MutableAttributeMap; import org.springframework.webflow.core.collection.ParameterMap; import org.springframework.webflow.core.collection.SharedAttributeMap; /** * Provides contextual information about an HTTP Servlet environment that has interacted with Spring Web Flow. * * @author Keith Donald * @author Erwin Vervaet * @author Jeremy Grelle */ public class ServletExternalContext implements ExternalContext { /** * The context. */ private ServletContext context; /** * The request. */ private HttpServletRequest request; /** * The response. */ private HttpServletResponse response; /** * An accessor for the HTTP request parameter map. */ private ParameterMap requestParameterMap; /** * An accessor for the HTTP request attribute map. */ private MutableAttributeMap requestMap; /** * An accessor for the HTTP session map. */ private SharedAttributeMap sessionMap; /** * An accessor for the servlet context application map. */ private SharedAttributeMap applicationMap; /** * A flag indicating if the flow committed the response. Set to true by requesting an execution redirect, definition * redirect, external redirect, or by calling {@link ExternalContext#recordResponseComplete()} */ private boolean responseComplete; /** * A flag indicating if a flow execution redirect has been requested. */ private boolean flowExecutionRedirectRequested; /** * A string specifying the id of the flow to redirect to after request processing. If null, no flow definition * redirect has been requested. */ private String flowDefinitionRedirectFlowId; /** * Input to pass the flow definition upon redirecting. May be null. Never set unless * {@link #flowDefinitionRedirectFlowId} has been set. */ private MutableAttributeMap flowDefinitionRedirectFlowInput; /** * A string specifying an arbitrary */ private String externalRedirectUrl; /** * The strategy for generating flow execution urls. */ private FlowUrlHandler flowUrlHandler; /** * Whether this external request context originated from an Ajax request or not. */ private boolean ajaxRequest; /** * In the case where a redirect response is requested, this flag indicates if the redirect should be issued from a * popup dialog. */ private boolean redirectInPopup; /** * Create a new external context wrapping given servlet HTTP request and response and given servlet context. * @param context the servlet context * @param request the http servlet request * @param response the http servlet response */ public ServletExternalContext(ServletContext context, HttpServletRequest request, HttpServletResponse response) { init(context, request, response, new DefaultFlowUrlHandler()); } /** * Create a new external context wrapping given servlet HTTP request and response and given servlet context. * @param context the servlet context * @param request the http servlet request * @param response the http servlet response * @param flowUrlHandler the flow url handler */ public ServletExternalContext(ServletContext context, HttpServletRequest request, HttpServletResponse response, FlowUrlHandler flowUrlHandler) { init(context, request, response, flowUrlHandler); } /** * Indicates if the current request from this client is an ajax request. This flag may effect the handling of * response writing within Spring Web Flow. * @param ajaxRequest the ajax request flag */ public void setAjaxRequest(boolean ajaxRequest) { this.ajaxRequest = ajaxRequest; } // implementing external context public String getContextPath() { return request.getContextPath(); } public ParameterMap getRequestParameterMap() { return requestParameterMap; } public MutableAttributeMap getRequestMap() { return requestMap; } public SharedAttributeMap getSessionMap() { return sessionMap; } public SharedAttributeMap getGlobalSessionMap() { return getSessionMap(); } public SharedAttributeMap getApplicationMap() { return applicationMap; } public Principal getCurrentUser() { return request.getUserPrincipal(); } public Locale getLocale() { return request.getLocale(); } public Object getNativeContext() { return context; } public Object getNativeRequest() { return request; } public Object getNativeResponse() { return response; } public boolean isAjaxRequest() { return ajaxRequest; } public String getFlowExecutionUrl(String flowId, String flowExecutionKey) { return response.encodeURL(flowUrlHandler.createFlowExecutionUrl(flowId, flowExecutionKey, request)); } public Writer getResponseWriter() throws IllegalStateException { assertResponseAllowed(); try { return response.getWriter(); } catch (IOException e) { IllegalStateException ise = new IllegalStateException("Unable to access the response Writer"); ise.initCause(e); throw ise; } } public boolean isResponseAllowed() { return !responseComplete; } public boolean isResponseComplete() { return responseComplete; } public void recordResponseComplete() { responseComplete = true; } public boolean isResponseCompleteFlowExecutionRedirect() { return flowExecutionRedirectRequested; } public void requestFlowExecutionRedirect() throws IllegalStateException { assertResponseAllowed(); flowExecutionRedirectRequested = true; recordResponseComplete(); } public void requestFlowDefinitionRedirect(String flowId, MutableAttributeMap input) throws IllegalStateException { assertResponseAllowed(); flowDefinitionRedirectFlowId = flowId; flowDefinitionRedirectFlowInput = input != null ? input : new LocalAttributeMap(); recordResponseComplete(); } public void requestExternalRedirect(String location) throws IllegalStateException { assertResponseAllowed(); externalRedirectUrl = location; recordResponseComplete(); } public void requestRedirectInPopup() throws IllegalStateException { if (isRedirectRequested()) { redirectInPopup = true; } else { throw new IllegalStateException( "Only call requestRedirectInPopup after a redirect has been requested by calling requestFlowExecutionRedirect, requestFlowDefinitionRedirect, or requestExternalRedirect"); } } // implementation specific methods /** * Returns the flag indicating if a flow execution redirect response has been requested by the flow. */ public boolean getFlowExecutionRedirectRequested() { return flowExecutionRedirectRequested; } /** * Returns the flag indicating if a flow definition redirect response has been requested by the flow. */ public boolean getFlowDefinitionRedirectRequested() { return flowDefinitionRedirectFlowId != null; } /** * Returns the id of the flow definition to redirect to. Only set when {@link #getFlowDefinitionRedirectRequested()} * returns true. */ public String getFlowRedirectFlowId() { return flowDefinitionRedirectFlowId; } /** * Returns the input to pass the flow definition through the redirect. Only set when * {@link #getFlowDefinitionRedirectRequested()} returns true. */ public MutableAttributeMap getFlowRedirectFlowInput() { return flowDefinitionRedirectFlowInput; } /** * Returns the flag indicating if an external redirect response has been requested by the flow. */ public boolean getExternalRedirectRequested() { return externalRedirectUrl != null; } /** * Returns the URL to redirect to. Only set if {@link #getExternalRedirectRequested()} returns true. */ public String getExternalRedirectUrl() { return externalRedirectUrl; } /** * If a redirect response has been requested, indicates if the redirect should be issued from a popup dialog. */ public boolean getRedirectInPopup() { return redirectInPopup; } // hooks for subclasses /** * Returns the servlet context. */ protected ServletContext getContext() { return context; } /** * Returns the underlying HttpServletRequest. */ protected HttpServletRequest getRequest() { return request; } /** * Returns the underlying HttpServletResponse. */ protected HttpServletResponse getResponse() { return response; } /** * Returns the configured flow url handler. */ protected FlowUrlHandler getFlowUrlHandler() { return flowUrlHandler; } // private helpers private void init(ServletContext context, HttpServletRequest request, HttpServletResponse response, FlowUrlHandler flowUrlHandler) { this.context = context; this.request = request; this.response = response; this.requestParameterMap = new LocalParameterMap(new HttpServletRequestParameterMap(request)); this.requestMap = new LocalAttributeMap(new HttpServletRequestMap(request)); this.sessionMap = new LocalSharedAttributeMap(new HttpSessionMap(request)); this.applicationMap = new LocalSharedAttributeMap(new HttpServletContextMap(context)); this.flowUrlHandler = flowUrlHandler; } private void assertResponseAllowed() throws IllegalStateException { if (!isResponseAllowed()) { if (getFlowExecutionRedirectRequested()) { throw new IllegalStateException( "A response is not allowed because a redirect has already been requested on this ExternalContext"); } if (getFlowDefinitionRedirectRequested()) { throw new IllegalStateException( "A response is not allowed because a flowRedirect has already been requested on this ExternalContext"); } if (getExternalRedirectRequested()) { throw new IllegalStateException( "A response is not allowed because an externalRedirect has already been requested on this ExternalContext"); } throw new IllegalStateException( "A response is not allowed because one has already been completed on this ExternalContext"); } } private boolean isRedirectRequested() { return getFlowExecutionRedirectRequested() || getFlowDefinitionRedirectRequested() || getExternalRedirectRequested(); } }././@LongLink0000000000000000000000000000021500000000000011563 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframework/webflow/context/servlet/package.htmllibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframew0000644000000000000000000000020711360615634027752 0ustar Contains the ServletExternalContext implementation for calling into Web Flow from a Servlet environment. ././@LongLink0000000000000000000000000000023300000000000011563 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframework/webflow/context/servlet/HttpServletContextMap.javalibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframew0000644000000000000000000000337711360615634027765 0ustar /* * Copyright 2004-2008 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.springframework.webflow.context.servlet; import java.util.Iterator; import javax.servlet.ServletContext; import org.springframework.binding.collection.SharedMap; import org.springframework.binding.collection.StringKeyedMapAdapter; import org.springframework.webflow.core.collection.CollectionUtils; /** * Map backed by the Servlet context for accessing application scoped attributes. * * @author Keith Donald */ public class HttpServletContextMap extends StringKeyedMapAdapter implements SharedMap { /** * The wrapped servlet context. */ private ServletContext context; /** * Create a map wrapping given servlet context. */ public HttpServletContextMap(ServletContext context) { this.context = context; } protected Object getAttribute(String key) { return context.getAttribute(key); } protected void setAttribute(String key, Object value) { context.setAttribute(key, value); } protected void removeAttribute(String key) { context.removeAttribute(key); } protected Iterator getAttributeNames() { return CollectionUtils.toIterator(context.getAttributeNames()); } public Object getMutex() { return context; } }././@LongLink0000000000000000000000000000023400000000000011564 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframework/webflow/context/servlet/FilenameFlowUrlHandler.javalibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframew0000644000000000000000000001114711360615646027762 0ustar /* * Copyright 2004-2008 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.springframework.webflow.context.servlet; import javax.servlet.http.HttpServletRequest; import org.springframework.util.StringUtils; import org.springframework.web.util.UrlPathHelper; import org.springframework.web.util.WebUtils; import org.springframework.webflow.core.collection.AttributeMap; import org.springframework.webflow.mvc.servlet.FlowController; /** * A file name based {@link FlowUrlHandler} implementation that is an alternative to the standard * {@link DefaultFlowUrlHandler}. Treats the filename of a request without the URL suffix and/or prefix as the flow id. * Used by the {@link FlowController} implementation as a default implementation to preserve compatibility with existing * Web Flow 2 applications. * *

* This implementation extracts the filename and removes the file extension from the request URL. The results will be * used as the flow Id that must be unique throughout the application. * * For example the URLs * *

 * 	http://someHost/someApp/someServlet/foo
 * 	http://someHost/someApp/someServlet/nestedPath/foo
 * 	http://someHost/someApp/someServlet/nestedPath/foo.html
 * 
* * will all treat the filename "foo" as the flow id. *

* * Note: Because this class only treats a filename as a flow id, clashes can result. For example: * *
 * http://localhost/springtravel/app/hotel/booking
 * http://localhost/springtravel/app/flight/booking
 * 
* * would both map the same flow id "booking", instead of "hotel/booking" and "flight/booking". This is an limitation of * this implementation. Consider using the standard {@link DefaultFlowUrlHandler} that uses the request URL prefix as * well to avoid these clashes. * * @author Agim Emruli * @author Jeremy Grelle * @author Nazaret Kazarian */ public class FilenameFlowUrlHandler extends DefaultFlowUrlHandler { private UrlPathHelper urlPathHelper; public FilenameFlowUrlHandler() { urlPathHelper = new UrlPathHelper(); } public String getFlowId(HttpServletRequest request) { return WebUtils.extractFilenameFromUrlPath(urlPathHelper.getLookupPathForRequest(request)); } /** * The flow definition URL for the given flowId will be inferred from the URL of the current request, re-using the * same path and file extension. * *

* Example - given a request originating at: * *

	 * http://someHost/someApp/someServlet/nestedPath/foo.html
	 * 
* * and a request for the flow id "bar", the new flow definition URL would be: * *
	 * http://someHost/someApp/someServlet/nestedPath/bar.html
	 * 
*/ public String createFlowDefinitionUrl(String flowId, AttributeMap input, HttpServletRequest request) { StringBuffer url = new StringBuffer(); String pathInfo = request.getPathInfo(); if (pathInfo != null) { url.append(request.getContextPath()); url.append(request.getServletPath()); // include the pathInfo part up until the filename url.append(pathInfo.substring(0, pathInfo.lastIndexOf("/") + 1)); url.append(flowId); int dotIndex = pathInfo.lastIndexOf('.'); if (dotIndex != -1) { url.append(pathInfo.substring(dotIndex)); } } else { String servletPath = request.getServletPath(); if (StringUtils.hasText(servletPath)) { url.append(request.getContextPath()); // include the servletPath part up to the filename int slashIndex = servletPath.lastIndexOf("/"); if (slashIndex != -1) { url.append(servletPath.substring(0, slashIndex)); } url.append('/'); url.append(flowId); int dotIndex = servletPath.lastIndexOf('.'); if (dotIndex != -1) { url.append(servletPath.substring(dotIndex)); } } else { // Leaving this for now, as DefaultFlowUrlHandler does the same thing, // but this should probably be an error case in the future. url.append('/'); url.append(flowId); } } if (input != null && !input.isEmpty()) { url.append('?'); appendQueryParameters(url, input.asMap(), getEncodingScheme(request)); } return url.toString(); } }././@LongLink0000000000000000000000000000023300000000000011563 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframework/webflow/context/servlet/DefaultFlowUrlHandler.javalibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframew0000644000000000000000000001522611360615642027760 0ustar /* * Copyright 2004-2008 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.springframework.webflow.context.servlet; import java.io.UnsupportedEncodingException; import java.net.URLEncoder; import java.util.Iterator; import java.util.Map; import javax.servlet.http.HttpServletRequest; import org.springframework.util.StringUtils; import org.springframework.web.util.WebUtils; import org.springframework.webflow.core.collection.AttributeMap; /** * The default FlowUrlHandler implementation for Spring Web Flow. *

* Expects URLs to launch flow to be of this pattern: *

* *
 * http://<host>/[app context path]/[app servlet path]/<flow path>
 * 
* * As an example, the URL http://localhost/springtravel/app/booking would map to flow "booking", while the * URL http://localhost/springtravel/app/hotels/booking would map to flow "hotels/booking". In both these * examples, /springtravel is the context path and /app is the servlet path. The flow id is treated as the path info * component of the request URL string. * * If the path info is null, the servletPath will be used as the flow id. Also, if the servlet path ends in an extension * it will be stripped when calculating the flow id. For example, a URL of * http://localhost/springtravel/hotels/booking.htm would still map to flow id "hotels/booking", assuming a * context path of /springtravel, a servlet path of /hotels/booking.htm (likely mapped with a servlet-mapping of *.htm), * and a path info of null. *

* Expects URLs to resume flows to be of this pattern: *

* *
 * http://<host>/[app context path]/[app servlet path]/<flow path>?execution=<flow execution key>
 * 
* * As an example, the URL http://localhost/springtravel/app/hotels/booking?execution=e1s1 would attempt to resume * execution "e1s1" of the "hotels/booking" flow. * * @author Keith Donald * @author Jeremy Grelle */ public class DefaultFlowUrlHandler implements FlowUrlHandler { private static final String FLOW_EXECUTION_KEY_PARAMETER = "execution"; private String encodingScheme; /** * Set the character encoding scheme for flow urls. Default is the request's encoding scheme (which is ISO-8859-1 if * not specified otherwise). */ public void setEncodingScheme(String encodingScheme) { this.encodingScheme = encodingScheme; } public String getFlowExecutionKey(HttpServletRequest request) { return request.getParameter(FLOW_EXECUTION_KEY_PARAMETER); } public String getFlowId(HttpServletRequest request) { String pathInfo = request.getPathInfo(); if (pathInfo != null) { return pathInfo.substring(1); } else { String servletPath = request.getServletPath(); if (StringUtils.hasText(servletPath)) { int dotIndex = servletPath.lastIndexOf('.'); if (dotIndex != -1) { return servletPath.substring(1, dotIndex); } else { return servletPath.substring(1); } } else { String contextPath = request.getContextPath(); if (StringUtils.hasText(contextPath)) { return request.getContextPath().substring(1); } else { return null; } } } } public String createFlowExecutionUrl(String flowId, String flowExecutionKey, HttpServletRequest request) { StringBuffer url = new StringBuffer(); url.append(request.getRequestURI()); url.append('?'); appendQueryParameter(url, FLOW_EXECUTION_KEY_PARAMETER, flowExecutionKey, getEncodingScheme(request)); return url.toString(); } /** * The flow definition URL for the given flow id will be built by appending the flow id to the base app context and * servlet paths. * *

* Example - given a request originating at: * *

	 * http://someHost/someApp/someServlet/nestedPath/foo
	 * 
* * and a request for the flow id "nestedPath/bar", the new flow definition URL would be: * *
	 * http://someHost/someApp/someServlet/nestedPath/bar
	 * 
*/ public String createFlowDefinitionUrl(String flowId, AttributeMap input, HttpServletRequest request) { StringBuffer url = new StringBuffer(); if (request.getPathInfo() != null) { url.append(request.getContextPath()); url.append(request.getServletPath()); url.append('/'); url.append(flowId); } else { String servletPath = request.getServletPath(); if (StringUtils.hasText(servletPath)) { url.append(request.getContextPath()); url.append('/'); url.append(flowId); int dotIndex = servletPath.lastIndexOf('.'); if (dotIndex != -1) { url.append(servletPath.substring(dotIndex)); } } else { url.append('/'); url.append(flowId); } } if (input != null && !input.isEmpty()) { url.append('?'); appendQueryParameters(url, input.asMap(), getEncodingScheme(request)); } return url.toString(); } protected String getEncodingScheme(HttpServletRequest request) { if (encodingScheme != null) { return encodingScheme; } else { String encodingScheme = request.getCharacterEncoding(); if (encodingScheme == null) { encodingScheme = WebUtils.DEFAULT_CHARACTER_ENCODING; } return encodingScheme; } } protected void appendQueryParameters(StringBuffer url, Map parameters, String encodingScheme) { Iterator entries = parameters.entrySet().iterator(); while (entries.hasNext()) { Map.Entry entry = (Map.Entry) entries.next(); appendQueryParameter(url, entry.getKey(), entry.getValue(), encodingScheme); if (entries.hasNext()) { url.append('&'); } } } // internal helpers private void appendQueryParameter(StringBuffer url, Object key, Object value, String encodingScheme) { String encodedKey = encode(key, encodingScheme); String encodedValue = encode(value, encodingScheme); url.append(encodedKey).append('=').append(encodedValue); } private String encode(Object value, String encodingScheme) { return value != null ? urlEncode(value.toString(), encodingScheme) : ""; } private String urlEncode(String value, String encodingScheme) { try { return URLEncoder.encode(value, encodingScheme); } catch (UnsupportedEncodingException e) { throw new IllegalArgumentException("Cannot url encode " + value); } } }././@LongLink0000000000000000000000000000022300000000000011562 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframework/webflow/context/ExternalContextHolder.javalibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframew0000644000000000000000000000367111360615644027763 0ustar /* * Copyright 2004-2008 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.springframework.webflow.context; import org.springframework.core.NamedThreadLocal; /** * Simple holder class that associates an {@link ExternalContext} instance with the current thread. The ExternalContext * will not be inherited by any child threads spawned by the current thread. *

* Used as a central holder for the current ExternalContext in Spring Web Flow, wherever necessary. Often used by * artifacts needing access to the current application session. * * @see ExternalContext * * @author Keith Donald */ public final class ExternalContextHolder { private static final ThreadLocal externalContextHolder = new NamedThreadLocal("Flow ExternalContext"); /** * Associate the given ExternalContext with the current thread. * @param externalContext the current ExternalContext, or null to reset the thread-bound context */ public static void setExternalContext(ExternalContext externalContext) { externalContextHolder.set(externalContext); } /** * Return the ExternalContext associated with the current thread, if any. * @return the current ExternalContext */ public static ExternalContext getExternalContext() { return (ExternalContext) externalContextHolder.get(); } // not instantiable private ExternalContextHolder() { } }././@LongLink0000000000000000000000000000020500000000000011562 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframework/webflow/context/package.htmllibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframew0000644000000000000000000000021511360615642027750 0ustar The external context subsystem for accessing the environment of a client that has called into Spring Web Flow. ././@LongLink0000000000000000000000000000021500000000000011563 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframework/webflow/context/ExternalContext.javalibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/org/springframew0000644000000000000000000002203311360615636027755 0ustar /* * Copyright 2004-2008 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.springframework.webflow.context; import java.io.Writer; import java.security.Principal; import java.util.Locale; import org.springframework.webflow.core.collection.MutableAttributeMap; import org.springframework.webflow.core.collection.ParameterMap; import org.springframework.webflow.core.collection.SharedAttributeMap; /** * A facade that provides normalized access to an external system that has called into the Spring Web Flow system. *

* This context object provides a normalized interface for internal web flow artifacts to use to reason on and * manipulate the state of an external actor calling into SWF to execute flows. It represents the context about a * single, external client request to manipulate a flow execution. *

* The design of this interface was inspired by JSF's own ExternalContext abstraction and shares the same name for * consistency. If a particular external client type does not support all methods defined by this interface, they can * just be implemented as returning an empty map or null. * * @author Keith Donald * @author Erwin Vervaet * @author Jeremy Grelle * @author Scott Andrews */ public interface ExternalContext { /** * Returns the logical path to the application hosting this external context. * @return the context path */ public String getContextPath(); /** * Provides access to the parameters associated with the user request that led to SWF being called. This map is * expected to be immutable and cannot be changed. * @return the immutable request parameter map */ public ParameterMap getRequestParameterMap(); /** * Provides access to the external request attribute map, providing a storage for data local to the current user * request and accessible to both internal and external SWF artifacts. * @return the mutable request attribute map */ public MutableAttributeMap getRequestMap(); /** * Provides access to the external session map, providing a storage for data local to the current user session and * accessible to both internal and external SWF artifacts. * @return the mutable session attribute map */ public SharedAttributeMap getSessionMap(); /** * Provides access to the global external session map, providing a storage for data globally accross the user * session and accessible to both internal and external SWF artifacts. *

* Note: most external context implementations do not distinguish between the concept of a "local" user session * scope and a "global" session scope. The Portlet world does, but not the Servlet for example. In those cases * calling this method returns the same map as calling {@link #getSessionMap()}. * @return the mutable global session attribute map */ public SharedAttributeMap getGlobalSessionMap(); /** * Provides access to the external application map, providing a storage for data local to the current user * application and accessible to both internal and external SWF artifacts. * @return the mutable application attribute map */ public SharedAttributeMap getApplicationMap(); /** * Returns true if the current request is an asynchronous Ajax request. * @return true if the current request is an Ajax request */ public boolean isAjaxRequest(); /** * Get a flow execution URL for the execution with the provided key. Typically used by response writers that write * out references to the flow execution to support postback on a subsequent request. The URL returned is encoded. * @param flowId the flow definition id * @param flowExecutionKey the flow execution key * @return the flow execution URL */ public String getFlowExecutionUrl(String flowId, String flowExecutionKey); /** * Provides access to the user's principal security object. * @return the user principal */ public Principal getCurrentUser(); /** * Returns the client locale. * @return the locale */ public Locale getLocale(); /** * Provides access to the context object for the current environment. * @return the environment specific context object */ public Object getNativeContext(); /** * Provides access to the request object for the current environment. * @return the environment specific request object. */ public Object getNativeRequest(); /** * Provides access to the response object for the current environment. * @return the environment specific response object. */ public Object getNativeResponse(); /** * Get a writer for writing out a response. * @return the writer * @throws IllegalStateException if the response has completed or is not allowed */ public Writer getResponseWriter() throws IllegalStateException; /** * Is a render response allowed to be written for this request? Always return false after a response has been * completed. May return false before that to indicate a response is not allowed to be completed. For example, in a * Portlet environment, render responses are only allowed in render requests. * @return true if yes, false otherwise */ public boolean isResponseAllowed(); /** * Request that a flow execution redirect be performed by the calling environment. Typically called from within a * flow execution to request a refresh operation, usually to support "refresh after event processing" behavior. * Calling this method also sets responseComplete status to true. * @see #isResponseComplete() * @throws IllegalStateException if the response has completed */ public void requestFlowExecutionRedirect() throws IllegalStateException; /** * Request that a flow definition redirect be performed by the calling environment. Typically called from within a * flow execution end state to request starting a new, independent execution of a flow in a chain-like manner. * Calling this method also sets responseComplete status to true. * @see #isResponseComplete() * @param flowId the id of the flow definition to redirect to * @param input input to pass the flow; this input is generally encoded the url to launch the flow * @throws IllegalStateException if the response has completed */ public void requestFlowDefinitionRedirect(String flowId, MutableAttributeMap input) throws IllegalStateException; /** * Request a redirect to an arbitrary resource location. May not be supported in some environments. Calling this * method also sets responseComplete status to true. * @see #isResponseComplete() * @param location the location of the resource to redirect to * @throws IllegalStateException if the response has completed */ public void requestExternalRedirect(String location) throws IllegalStateException; /** * Request that the current redirect requested be sent to the client in a manner that causes the client to issue the * redirect from a popup dialog. Only call this method after a redirect has been requested. * @see #requestFlowExecutionRedirect() * @see #requestFlowDefinitionRedirect(String, MutableAttributeMap) * @see #requestExternalRedirect(String) * @throws IllegalStateException if a redirect has not been requested */ public void requestRedirectInPopup() throws IllegalStateException; /** * Called by flow artifacts such as View states and end states to indicate they handled the response, typically by * writing out content to the response stream. Setting this flag allows this external context to know the response * was handled, and that it not need to take additional response handling action itself. */ public void recordResponseComplete(); /** * Has the response been completed? Response complete status can be achieved by: *

    *
  • Writing out the response and calling {@link #recordResponseComplete()}, or *
  • Calling one of the redirect request methods *
* @see #getResponseWriter() * @see #recordResponseComplete() * @see #requestFlowExecutionRedirect() * @see #requestFlowDefinitionRedirect(String, MutableAttributeMap) * @see #requestExternalRedirect(String) * @return true if yes, false otherwise */ public boolean isResponseComplete(); /** * Returns true if the response has been completed with flow execution redirect request. * @return true if a redirect response has been completed * @see #isResponseComplete() * @see #requestFlowExecutionRedirect() */ public boolean isResponseCompleteFlowExecutionRedirect(); }libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/main/java/overview.html0000644000000000000000000000722511360615632027275 0ustar


The public Java Documentation for Spring Web Flow, a framework for modeling and executing user interface flow.

Spring Web Flow's packages are partitioned across a set of logical layers. Higher layers depend on the layers directly beneath. Lower layers never depend on higher layers.

The layers of Spring Web Flow, from lowest to highest, are shown below:


Layer architecture diagram

The description, subsystems, and source packages of each layer are summarized below:

Execution Core Layer

Contains the central public Spring Web Flow API elements. This includes elements to model flow definitions as well as execute those flow definitions. As the "bottom layer", this layer defines key domain interfaces and is highly stable.

Subsystems

  1. {@link org.springframework.webflow.core Core}
  2. {@link org.springframework.webflow.definition Flow Definition}
  3. {@link org.springframework.webflow.definition.registry Flow Definition Registry}
  4. {@link org.springframework.webflow.context External Context}
  5. {@link org.springframework.webflow.conversation Conversation}
  6. {@link org.springframework.webflow.execution Flow Execution}
  7. {@link org.springframework.webflow.execution.repository Flow Execution Repository}
  8. {@link org.springframework.webflow.action Action}
  9. {@link org.springframework.webflow.util Util}

Executor Layer

Contains services called "flow executors" that drive the execution of flow definitions. This layer defines the core FlowExecutor service interface and implementation, as well as adaption code for executing flows in several specific environments. Support for Spring MVC, Struts, and Java Server Faces (JSF) environments is housed here. This layer depends on the stable Execution Core, but is not coupled to the more volatile Execution Engine implementation.

Subsystems

  1. {@link org.springframework.webflow.executor Core}
  2. {@link org.springframework.webflow.executor.mvc Spring MVC}
  3. {@link org.springframework.webflow.executor.struts Struts}
  4. {@link org.springframework.webflow.executor.jsf Java Server Faces (JSF)}

Execution Engine Layer

Contains concrete implementations of the stable Execution Engine abstractions. This layer defines the finite-state machine that carries out runtime flow execution. It also contains a builder subsystem for assembling flows from externalized resources such as XML files.

Subsystems

  1. {@link org.springframework.webflow.engine Engine Implementation}
  2. {@link org.springframework.webflow.engine.builder Flow Builder}

Test Layer

Contains support code for testing flow executions. Two types of support are provided: stubs for unit testing engine artifacts, and base classes for writing flow execution integration tests. This layer depends on the Execution Core and Execution Engine layers.

Subsystems

  1. {@link org.springframework.webflow.test Unit Test}
  2. {@link org.springframework.webflow.test.execution Execution Test}

System Configuration Layer

Subsystems

Contains support for configuring the flow executor engine using Spring. A Spring 2.0 config schema is provided. This is the top layer and depends on the Execution Core, Executor, and Execution Engine layers.

  1. {@link org.springframework.webflow.config Spring Configuration Support}
libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/test/0000755000000000000000000000000011360615634023647 5ustar libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/test/resources/0000755000000000000000000000000011360615634025661 5ustar libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/test/resources/log4j.xml0000644000000000000000000000214411360615634027423 0ustar libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/test/java/0000755000000000000000000000000011360615632024566 5ustar libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/test/java/org/0000755000000000000000000000000011360615632025355 5ustar ././@LongLink0000000000000000000000000000015100000000000011562 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/test/java/org/springframework/libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/test/java/org/springframew0000755000000000000000000000000011360615632030002 5ustar ././@LongLink0000000000000000000000000000016100000000000011563 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/test/java/org/springframework/webflow/libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/test/java/org/springframew0000755000000000000000000000000011360615644030005 5ustar ././@LongLink0000000000000000000000000000017100000000000011564 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/test/java/org/springframework/webflow/upgrade/libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/test/java/org/springframew0000755000000000000000000000000011360615644030005 5ustar ././@LongLink0000000000000000000000000000022200000000000011561 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/test/java/org/springframework/webflow/upgrade/WebFlowUpgraderTests.javalibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/test/java/org/springframew0000644000000000000000000000061111360615636030006 0ustar package org.springframework.webflow.upgrade; import junit.framework.TestCase; import org.springframework.core.io.ClassPathResource; public class WebFlowUpgraderTests extends TestCase { public void testConvertFlow1() { WebFlowUpgrader upgrader = new WebFlowUpgrader(); String result = upgrader.convert(new ClassPathResource("flow1.xml", getClass())); System.out.println(result); } } ././@LongLink0000000000000000000000000000020200000000000011557 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/test/java/org/springframework/webflow/upgrade/flow1.xmllibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/test/java/org/springframew0000644000000000000000000000217511360615644030014 0ustar ././@LongLink0000000000000000000000000000017000000000000011563 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/test/java/org/springframework/webflow/action/libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/test/java/org/springframew0000755000000000000000000000000011360615646030007 5ustar ././@LongLink0000000000000000000000000000022300000000000011562 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/test/java/org/springframework/webflow/action/FormActionBindingTests.javalibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/test/java/org/springframew0000644000000000000000000001015411360615646030012 0ustar /* * Copyright 2004-2008 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.springframework.webflow.action; import junit.framework.TestCase; import org.springframework.mock.web.MockHttpServletRequest; import org.springframework.mock.web.MockHttpServletResponse; import org.springframework.mock.web.MockServletContext; import org.springframework.validation.DataBinder; import org.springframework.validation.Errors; import org.springframework.webflow.context.servlet.ServletExternalContext; import org.springframework.webflow.execution.RequestContext; import org.springframework.webflow.execution.ScopeType; import org.springframework.webflow.test.MockRequestContext; /** * Unit test for the {@link FormAction} class, dealing with binding related issues. * * @author Erwin Vervaet */ public class FormActionBindingTests extends TestCase { public static class TestBean { private Long prop; public String otherProp; public Long getProp() { return prop; } public void setProp(Long prop) { this.prop = prop; } } public void testMessageCodesOnBindFailure() throws Exception { MockHttpServletRequest request = new MockHttpServletRequest(); request.setPathInfo("/fooFlow"); request.setMethod("POST"); request.addParameter("prop", "A"); MockHttpServletResponse response = new MockHttpServletResponse(); MockRequestContext context = new MockRequestContext(); context.setExternalContext(new ServletExternalContext(new MockServletContext(), request, response)); context.setAttribute("method", "bindAndValidate"); // use a FormAction to do the binding FormAction formAction = new FormAction(); formAction.setFormObjectClass(TestBean.class); formAction.setFormObjectName("formObject"); formAction.execute(context); Errors formActionErrors = new FormObjectAccessor(context).getCurrentFormErrors(formAction.getFormErrorsScope()); assertNotNull(formActionErrors); assertTrue(formActionErrors.hasErrors()); assertEquals(1, formActionErrors.getErrorCount()); assertEquals(0, formActionErrors.getGlobalErrorCount()); assertEquals(1, formActionErrors.getFieldErrorCount("prop")); } public void testFieldBinding() throws Exception { FormAction formAction = new FormAction() { protected Object createFormObject(RequestContext context) throws Exception { TestBean res = new TestBean(); res.setProp(new Long(-1)); res.otherProp = "initialValue"; return res; } protected void initBinder(RequestContext context, DataBinder binder) { binder.initDirectFieldAccess(); } }; formAction.setFormObjectName("formObject"); MockRequestContext context = new MockRequestContext(); context.setAttribute("method", "setupForm"); formAction.execute(context); Errors errors = new FormObjectAccessor(context).getFormErrors("formObject", ScopeType.FLASH); assertNotNull(errors); assertEquals(new Long(-1), errors.getFieldValue("prop")); // this fails because of SWF-193 assertEquals("initialValue", errors.getFieldValue("otherProp")); context.putRequestParameter("prop", "1"); context.putRequestParameter("otherProp", "value"); context.setAttribute("method", "bind"); formAction.execute(context); TestBean formObject = (TestBean) new FormObjectAccessor(context).getFormObject("formObject", ScopeType.FLOW); errors = new FormObjectAccessor(context).getFormErrors("formObject", ScopeType.FLASH); assertNotNull(formObject); assertEquals(new Long(1), formObject.getProp()); assertEquals(new Long(1), errors.getFieldValue("prop")); assertEquals("value", formObject.otherProp); assertEquals("value", errors.getFieldValue("otherProp")); } } ././@LongLink0000000000000000000000000000022000000000000011557 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/test/java/org/springframework/webflow/action/EvaluateActionTests.javalibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/test/java/org/springframew0000644000000000000000000000456611360615634030021 0ustar /* * Copyright 2004-2008 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.springframework.webflow.action; import junit.framework.TestCase; import org.springframework.binding.expression.support.StaticExpression; import org.springframework.webflow.execution.Event; import org.springframework.webflow.test.MockRequestContext; /** * Unit tests for {@link EvaluateAction}. * @author Jeremy Grelle */ public class EvaluateActionTests extends TestCase { public void testEvaluateExpressionNoResultExposer() throws Exception { EvaluateAction action = new EvaluateAction(new StaticExpression("bar"), null); MockRequestContext context = new MockRequestContext(); Event result = action.execute(context); assertEquals("bar", result.getId()); } public void testEvaluateExpressionEmptyStringResult() throws Exception { EvaluateAction action = new EvaluateAction(new StaticExpression(""), null); MockRequestContext context = new MockRequestContext(); Event result = action.execute(context); assertEquals("null", result.getId()); } public void testEvaluateExpressionNullResult() throws Exception { EvaluateAction action = new EvaluateAction(new StaticExpression(null), null); MockRequestContext context = new MockRequestContext(); Event result = action.execute(context); assertEquals("success", result.getId()); } public void testEvaluateExpressionResultExposer() throws Exception { StaticExpression resultExpression = new StaticExpression(""); EvaluateAction action = new EvaluateAction(new StaticExpression("bar"), new ActionResultExposer( resultExpression, null, null)); MockRequestContext context = new MockRequestContext(); Event result = action.execute(context); assertEquals("bar", result.getId()); assertEquals("bar", resultExpression.getValue(null)); } }././@LongLink0000000000000000000000000000022000000000000011557 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/test/java/org/springframework/webflow/action/AbstractActionTests.javalibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/test/java/org/springframew0000644000000000000000000001212611360615644030011 0ustar /* * Copyright 2004-2008 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.springframework.webflow.action; import junit.framework.TestCase; import org.springframework.beans.factory.BeanInitializationException; import org.springframework.webflow.core.collection.LocalAttributeMap; import org.springframework.webflow.execution.Event; import org.springframework.webflow.execution.RequestContext; import org.springframework.webflow.test.MockRequestContext; /** * Unit tests for {@link AbstractAction}. */ public class AbstractActionTests extends TestCase { private TestAbstractAction action = new TestAbstractAction(); public void testInitCallback() throws Exception { action.afterPropertiesSet(); assertTrue(action.initialized); } public void testInitCallbackWithException() throws Exception { action = new TestAbstractAction() { protected void initAction() { throw new IllegalStateException("Cannot initialize"); } }; try { action.afterPropertiesSet(); fail("Should've failed initialization"); } catch (BeanInitializationException e) { assertFalse(action.initialized); } } public void testNormalExecute() throws Exception { action = new TestAbstractAction() { protected Event doExecute(RequestContext context) throws Exception { return success(); } }; Event result = action.execute(new MockRequestContext()); assertEquals("success", result.getId()); assertTrue(result.getAttributes().size() == 0); } public void testExceptionalExecute() throws Exception { try { action.execute(new MockRequestContext()); fail("Should've failed execute"); } catch (IllegalStateException e) { } } public void testPreExecuteShortCircuit() throws Exception { action = new TestAbstractAction() { protected Event doPreExecute(RequestContext context) throws Exception { return success(); } }; Event result = action.execute(new MockRequestContext()); assertEquals("success", result.getId()); } public void testPostExecuteCalled() throws Exception { testNormalExecute(); assertTrue(action.postExecuteCalled); } public class TestAbstractAction extends AbstractAction { private boolean initialized; private boolean postExecuteCalled; protected void initAction() { initialized = true; } protected Event doExecute(RequestContext context) throws Exception { throw new IllegalStateException("Should not be called"); } protected void doPostExecute(RequestContext context) { postExecuteCalled = true; } } public void testSuccess() { Event event = action.success(); assertEquals(action.getEventFactorySupport().getSuccessEventId(), event.getId()); } public void testSuccessResult() { Object o = new Object(); Event event = action.success(o); assertEquals(action.getEventFactorySupport().getSuccessEventId(), event.getId()); assertSame(o, event.getAttributes().get(action.getEventFactorySupport().getResultAttributeName())); } public void testError() { Event event = action.error(); assertEquals(action.getEventFactorySupport().getErrorEventId(), event.getId()); } public void testErrorException() { IllegalArgumentException e = new IllegalArgumentException("woops"); Event event = action.error(e); assertEquals(action.getEventFactorySupport().getErrorEventId(), event.getId()); assertSame(e, event.getAttributes().get(action.getEventFactorySupport().getExceptionAttributeName())); } public void testYes() { Event event = action.yes(); assertEquals(action.getEventFactorySupport().getYesEventId(), event.getId()); } public void testNo() { Event event = action.no(); assertEquals(action.getEventFactorySupport().getNoEventId(), event.getId()); } public void testTrueResult() { Event event = action.result(true); assertEquals(action.getEventFactorySupport().getYesEventId(), event.getId()); } public void testFalseResult() { Event event = action.result(false); assertEquals(action.getEventFactorySupport().getNoEventId(), event.getId()); } public void testCustomResult() { Event event = action.result("custom"); assertEquals("custom", event.getId()); } public void testCustomResultObject() { Event event = action.result("custom", "result", "value"); assertEquals("custom", event.getId()); assertEquals("value", event.getAttributes().getString("result")); } public void testCustomResultCollection() { LocalAttributeMap collection = new LocalAttributeMap(); collection.put("result", "value"); Event event = action.result("custom", collection); assertEquals("custom", event.getId()); assertEquals("value", event.getAttributes().getString("result")); } }././@LongLink0000000000000000000000000000023000000000000011560 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/test/java/org/springframework/webflow/action/ExternalRedirectActionTests.javalibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/test/java/org/springframew0000644000000000000000000000145211360615632030006 0ustar package org.springframework.webflow.action; import junit.framework.TestCase; import org.springframework.binding.expression.support.StaticExpression; import org.springframework.webflow.test.MockRequestContext; public class ExternalRedirectActionTests extends TestCase { private ExternalRedirectAction action; public void testExecute() throws Exception { action = new ExternalRedirectAction(new StaticExpression("/wherever")); MockRequestContext context = new MockRequestContext(); action.execute(context); assertEquals("/wherever", context.getMockExternalContext().getExternalRedirectUrl()); } public void testExecuteWithNullResourceUri() throws Exception { try { action = new ExternalRedirectAction(null); fail("Should have failed"); } catch (IllegalArgumentException e) { } } } ././@LongLink0000000000000000000000000000023200000000000011562 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/test/java/org/springframework/webflow/action/ResultObjectEventFactoryTests.javalibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/test/java/org/springframew0000644000000000000000000000470111360615644030011 0ustar /* * Copyright 2004-2008 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.springframework.webflow.action; import junit.framework.TestCase; import org.springframework.core.enums.StaticLabeledEnum; import org.springframework.webflow.execution.Event; import org.springframework.webflow.test.MockRequestContext; /** * Unit tests for {@link ResultObjectBasedEventFactory}. */ public class ResultObjectEventFactoryTests extends TestCase { private MockRequestContext context = new MockRequestContext(); private ResultObjectBasedEventFactory factory = new ResultObjectBasedEventFactory(); public void testAlreadyAnEvent() { Event event = new Event(this, "event"); Event result = factory.createResultEvent(this, event, context); assertSame(event, result); } public void testMappedTypes() { assertTrue(factory.isMappedValueType(MyEnum.class)); assertTrue(factory.isMappedValueType(boolean.class)); assertTrue(factory.isMappedValueType(Boolean.class)); assertTrue(factory.isMappedValueType(String.class)); assertFalse(factory.isMappedValueType(Integer.class)); } public void testNullResult() { Event result = factory.createResultEvent(this, null, context); assertEquals("null", result.getId()); } public void testBooleanResult() { Event result = factory.createResultEvent(this, Boolean.TRUE, context); assertEquals("yes", result.getId()); result = factory.createResultEvent(this, Boolean.FALSE, context); assertEquals("no", result.getId()); } public void testLabeledEnumResult() { Event result = factory.createResultEvent(this, MyEnum.FOO, context); assertEquals("foo", result.getId()); } public void testOtherResult() { Event result = factory.createResultEvent(this, "hello", context); assertEquals("hello", result.getId()); } private static class MyEnum extends StaticLabeledEnum { public static final MyEnum FOO = new MyEnum(); private MyEnum() { super(1, "foo"); } } }././@LongLink0000000000000000000000000000021400000000000011562 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/test/java/org/springframework/webflow/action/TestMultiAction.javalibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/test/java/org/springframew0000644000000000000000000000237411360615632030012 0ustar /* * Copyright 2004-2008 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.springframework.webflow.action; import org.springframework.webflow.execution.Event; import org.springframework.webflow.execution.RequestContext; /** * Simple multi-action implementation used by the unit tests. * * @author Erwin Vervaet */ public class TestMultiAction extends MultiAction { int counter = 0; public Event increment(RequestContext context) throws Exception { counter++; return success(); } public Event decrement(RequestContext context) throws Exception { counter--; return success(); } public int getCounter() { return counter; } public void setCounter(int counter) { this.counter = counter; } }././@LongLink0000000000000000000000000000021600000000000011564 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/test/java/org/springframework/webflow/action/RenderActionTests.javalibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/test/java/org/springframew0000644000000000000000000000242411360615640030005 0ustar package org.springframework.webflow.action; import junit.framework.TestCase; import org.springframework.binding.expression.Expression; import org.springframework.binding.expression.support.StaticExpression; import org.springframework.webflow.execution.Event; import org.springframework.webflow.execution.View; import org.springframework.webflow.test.MockRequestContext; public class RenderActionTests extends TestCase { public void testRenderAction() throws Exception { StaticExpression name = new StaticExpression("frag1"); StaticExpression name2 = new StaticExpression("frag2"); RenderAction action = new RenderAction(new Expression[] { name, name2 }); MockRequestContext context = new MockRequestContext(); Event result = action.execute(context); assertEquals("success", result.getId()); String[] fragments = (String[]) context.getFlashScope().getArray(View.RENDER_FRAGMENTS_ATTRIBUTE, String[].class); assertEquals("frag1", fragments[0]); assertEquals("frag2", fragments[1]); } public void testIllegalNullArg() { try { new RenderAction(null); fail("iae"); } catch (IllegalArgumentException e) { } } public void testIllegalEmptyArg() { try { new RenderAction(new Expression[0]); fail("iae"); } catch (IllegalArgumentException e) { } } } ././@LongLink0000000000000000000000000000021400000000000011562 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/test/java/org/springframework/webflow/action/FormActionTests.javalibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/test/java/org/springframew0000644000000000000000000004420311360615632030007 0ustar /* * Copyright 2004-2008 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.springframework.webflow.action; import junit.framework.TestCase; import org.springframework.validation.BindException; import org.springframework.validation.BindingResult; import org.springframework.validation.Errors; import org.springframework.validation.ValidationUtils; import org.springframework.validation.Validator; import org.springframework.webflow.core.collection.LocalParameterMap; import org.springframework.webflow.execution.Event; import org.springframework.webflow.execution.RequestContext; import org.springframework.webflow.execution.ScopeType; import org.springframework.webflow.test.MockExternalContext; import org.springframework.webflow.test.MockParameterMap; import org.springframework.webflow.test.MockRequestContext; /** * Unit test for the {@link FormAction} class. * * @author Erwin Vervaet */ public class FormActionTests extends TestCase { private static class TestBean { private String prop; public TestBean() { } public TestBean(String prop) { this.prop = prop; } public String getProp() { return prop; } public void setProp(String prop) { this.prop = prop; } } private static class OtherTestBean { private String otherProp; public String getOtherProp() { return otherProp; } public void setOtherProp(String otherProp) { this.otherProp = otherProp; } } public static class TestBeanValidator implements Validator { private boolean invoked; public boolean getInvoked() { return invoked; } public boolean supports(Class clazz) { return TestBean.class.equals(clazz); } public void validate(Object formObject, Errors errors) { ValidationUtils.rejectIfEmptyOrWhitespace(errors, "prop", "Prop cannot be empty"); invoked = true; } public void validateTestBean(TestBean formObject, Errors errors) { ValidationUtils.rejectIfEmptyOrWhitespace(errors, "prop", "Prop cannot be empty"); invoked = true; } } private FormAction action; protected void setUp() throws Exception { action = createFormAction("test"); } public void testSetupForm() throws Exception { MockRequestContext context = new MockRequestContext(); // setupForm() should initialize the form object and the Errors // instance, but no bind & validate should happen since bindOnSetupForm // is not set assertEquals(action.getEventFactorySupport().getSuccessEventId(), action.setupForm(context).getId()); assertEquals(2, context.getRequestScope().size()); assertEquals(2, context.getFlowScope().size()); assertFalse(getErrors(context).hasErrors()); assertNull(getFormObject(context).getProp()); } protected LocalParameterMap parameters() { MockParameterMap map = new MockParameterMap(); map.put("prop", "value"); return map; } protected LocalParameterMap blankParameters() { MockParameterMap map = new MockParameterMap(); map.put("prop", ""); return map; } public void testSetupFormWithExistingFormObject() throws Exception { MockRequestContext context = new MockRequestContext(parameters()); assertEquals(action.getEventFactorySupport().getSuccessEventId(), action.setupForm(context).getId()); Errors errors = getErrors(context); errors.reject("dummy"); TestBean formObject = getFormObject(context); formObject.setProp("bla"); // setupForm() should leave the existing form object and Errors instance // untouched, at least when no bind & validate is done (bindOnSetupForm // == false) assertEquals(action.getEventFactorySupport().getSuccessEventId(), action.setupForm(context).getId()); assertEquals(2, context.getRequestScope().size()); assertEquals(2, context.getFlowScope().size()); assertSame(errors, getErrors(context)); assertSame(formObject, getFormObject(context)); assertTrue(getErrors(context).hasErrors()); assertEquals("bla", getFormObject(context).getProp()); } public void testBindAndValidate() throws Exception { MockRequestContext context = new MockRequestContext(parameters()); // bindAndValidate() should setup a new form object and errors instance // and do a bind & validate context.setAttribute("validatorMethod", "validateTestBean"); assertEquals(action.getEventFactorySupport().getSuccessEventId(), action.bindAndValidate(context).getId()); assertEquals(2, context.getRequestScope().size()); assertEquals(2, context.getFlowScope().size()); assertFalse(getErrors(context).hasErrors()); assertEquals("value", getFormObject(context).getProp()); } public void testBindAndValidateFailure() throws Exception { MockRequestContext context = new MockRequestContext(); // bindAndValidate() should setup a new form object and errors instance // and do a bind & validate, which fails because the provided value is // empty assertEquals(action.getEventFactorySupport().getErrorEventId(), action.bindAndValidate(context).getId()); assertEquals(2, context.getRequestScope().size()); assertEquals(2, context.getFlowScope().size()); assertTrue(getErrors(context).hasErrors()); assertNull(getFormObject(context).getProp()); } public void testBindAndValidateWithExistingFormObject() throws Exception { MockRequestContext context = new MockRequestContext(parameters()); assertEquals(action.getEventFactorySupport().getSuccessEventId(), action.setupForm(context).getId()); Errors errors = getErrors(context); errors.reject("dummy"); TestBean formObject = getFormObject(context); formObject.setProp("bla"); // bindAndValidate() should leave the existing form object untouched // but should setup a new Errors instance during bind & validate assertEquals(action.getEventFactorySupport().getSuccessEventId(), action.bindAndValidate(context).getId()); assertEquals(2, context.getRequestScope().size()); assertEquals(2, context.getFlowScope().size()); assertNotSame(errors, getErrors(context)); assertSame(formObject, getFormObject(context)); assertFalse(getErrors(context).hasErrors()); assertEquals("value", getFormObject(context).getProp()); } // this is what happens in a 'form state' public void testBindAndValidateFailureThenSetupForm() throws Exception { MockRequestContext context = new MockRequestContext(blankParameters()); // setup existing form object & errors assertEquals(action.getEventFactorySupport().getSuccessEventId(), action.setupForm(context).getId()); TestBean formObject = getFormObject(context); formObject.setProp("bla"); assertEquals(action.getEventFactorySupport().getErrorEventId(), action.bindAndValidate(context).getId()); assertEquals(2, context.getRequestScope().size()); assertEquals(2, context.getFlowScope().size()); assertSame(formObject, getFormObject(context)); assertTrue(getErrors(context).hasErrors()); assertEquals("", getFormObject(context).getProp()); Errors errors = getErrors(context); // the setupForm() should leave the form object and error info setup by // the // bind & validate untouched assertEquals(action.getEventFactorySupport().getSuccessEventId(), action.setupForm(context).getId()); assertEquals(2, context.getRequestScope().size()); assertEquals(2, context.getFlowScope().size()); assertSame(errors, getErrors(context)); assertSame(formObject, getFormObject(context)); assertTrue(getErrors(context).hasErrors()); assertEquals("", getFormObject(context).getProp()); } public void testMultipleFormObjectsInOneFlow() throws Exception { MockRequestContext context = new MockRequestContext(parameters()); FormAction otherAction = createFormAction("otherTest"); assertEquals(action.getEventFactorySupport().getSuccessEventId(), action.setupForm(context).getId()); assertEquals(action.getEventFactorySupport().getSuccessEventId(), otherAction.setupForm(context).getId()); assertEquals(3, context.getRequestScope().size()); assertEquals(3, context.getFlowScope().size()); assertNotSame(getErrors(context), getErrors(context, "otherTest")); assertNotSame(getFormObject(context), getFormObject(context, "otherTest")); assertFalse(getErrors(context).hasErrors()); assertFalse(getErrors(context, "otherTest").hasErrors()); assertNull(getFormObject(context).getProp()); assertNull(getFormObject(context, "otherTest").getProp()); assertEquals(action.getEventFactorySupport().getSuccessEventId(), action.bindAndValidate(context).getId()); assertEquals(3, context.getRequestScope().size()); assertEquals(3, context.getFlowScope().size()); assertNotSame(getErrors(context), getErrors(context, "otherTest")); assertNotSame(getFormObject(context), getFormObject(context, "otherTest")); assertFalse(getErrors(context).hasErrors()); assertFalse(getErrors(context, "otherTest").hasErrors()); assertEquals("value", getFormObject(context).getProp()); assertNull(getFormObject(context, "otherTest").getProp()); context.setExternalContext(new MockExternalContext(blankParameters())); assertEquals(action.getEventFactorySupport().getErrorEventId(), otherAction.bindAndValidate(context).getId()); assertEquals(3, context.getRequestScope().size()); assertEquals(3, context.getFlowScope().size()); assertNotSame(getErrors(context), getErrors(context, "otherTest")); assertNotSame(getFormObject(context), getFormObject(context, "otherTest")); assertFalse(getErrors(context).hasErrors()); assertTrue(getErrors(context, "otherTest").hasErrors()); assertEquals("value", getFormObject(context).getProp()); assertEquals("", getFormObject(context, "otherTest").getProp()); } public void testGetFormObject() throws Exception { MockRequestContext context = new MockRequestContext(parameters()); FormAction action = createFormAction("test"); TestBean formObject = (TestBean) action.getFormObject(context); assertNotNull(formObject); formObject = new TestBean(); TestBean testBean = formObject; new FormObjectAccessor(context).putFormObject(formObject, action.getFormObjectName(), action .getFormObjectScope()); formObject = (TestBean) action.getFormObject(context); assertSame(formObject, testBean); } public void testGetFormErrors() throws Exception { MockRequestContext context = new MockRequestContext(parameters()); FormAction action = createFormAction("test"); action.setupForm(context); Errors errors = action.getFormErrors(context); assertNotNull(errors); assertTrue(!errors.hasErrors()); errors = new BindException(getFormObject(context), "test"); Errors testErrors = errors; new FormObjectAccessor(context).putFormErrors(errors, action.getFormErrorsScope()); errors = action.getFormErrors(context); assertSame(errors, testErrors); } public void testFormObjectAccessUsingAlias() throws Exception { MockRequestContext context = new MockRequestContext(blankParameters()); FormAction otherAction = createFormAction("otherTest"); assertEquals(action.getEventFactorySupport().getSuccessEventId(), action.setupForm(context).getId()); assertSame(getFormObject(context), new FormObjectAccessor(context).getCurrentFormObject()); assertSame(getErrors(context), new FormObjectAccessor(context).getCurrentFormErrors()); assertEquals(action.getEventFactorySupport().getSuccessEventId(), otherAction.setupForm(context).getId()); assertSame(getFormObject(context, "otherTest"), new FormObjectAccessor(context).getCurrentFormObject()); assertSame(getErrors(context, "otherTest"), new FormObjectAccessor(context).getCurrentFormErrors()); assertEquals(action.getEventFactorySupport().getErrorEventId(), action.bindAndValidate(context).getId()); assertSame(getFormObject(context), new FormObjectAccessor(context).getCurrentFormObject()); assertSame(getErrors(context), new FormObjectAccessor(context).getCurrentFormErrors()); context.setExternalContext(new MockExternalContext(parameters())); assertEquals(action.getEventFactorySupport().getSuccessEventId(), otherAction.bindAndValidate(context).getId()); assertSame(getFormObject(context, "otherTest"), new FormObjectAccessor(context).getCurrentFormObject()); assertSame(getErrors(context, "otherTest"), new FormObjectAccessor(context).getCurrentFormErrors()); } // as reported in SWF-4 public void testInconsistentFormObjectAndErrors() throws Exception { MockRequestContext context = new MockRequestContext(parameters()); assertEquals(action.getEventFactorySupport().getSuccessEventId(), action.setupForm(context).getId()); Object formObject = getFormObject(context); BindingResult errors = (BindingResult) getErrors(context); assertTrue(formObject instanceof TestBean); assertTrue(errors.getTarget() instanceof TestBean); assertSame(formObject, errors.getTarget()); context = new MockRequestContext(); context.setCurrentEvent(new Event(this, "start")); OtherTestBean freshBean = new OtherTestBean(); context.getFlowScope().put("test", freshBean); context.getRequestScope().put(BindingResult.MODEL_KEY_PREFIX + "test", errors); FormAction otherAction = createFormAction("test"); otherAction.setFormObjectClass(OtherTestBean.class); assertEquals(action.getEventFactorySupport().getSuccessEventId(), otherAction.setupForm(context).getId()); formObject = context.getFlowScope().get("test"); errors = (BindingResult) getErrors(context); assertTrue(formObject instanceof OtherTestBean); assertSame(freshBean, formObject); assertTrue("Expected OtherTestBean, but was " + errors.getTarget().getClass(), errors.getTarget() instanceof OtherTestBean); assertSame(formObject, errors.getTarget()); } public void testMultipleFormObjects() throws Exception { MockRequestContext context = new MockRequestContext(parameters()); FormAction action1 = createFormAction("test1"); action1.setupForm(context); TestBean test1 = (TestBean) context.getFlowScope().get("test1"); assertNotNull(test1); assertSame(test1, new FormObjectAccessor(context).getCurrentFormObject()); FormAction action2 = createFormAction("test2"); action2.setupForm(context); TestBean test2 = (TestBean) context.getFlowScope().get("test2"); assertNotNull(test2); assertSame(test2, new FormObjectAccessor(context).getCurrentFormObject()); MockParameterMap parameters = new MockParameterMap(); parameters.put("prop", "12345"); context.setExternalContext(new MockExternalContext(parameters)); action1.bindAndValidate(context); TestBean test11 = (TestBean) context.getFlowScope().get("test1"); assertSame(test1, test11); assertEquals("12345", test1.getProp()); assertSame(test1, new FormObjectAccessor(context).getCurrentFormObject()); parameters = new MockParameterMap(); parameters.put("prop", "123456"); context.setExternalContext(new MockExternalContext(parameters)); action2.bindAndValidate(context); TestBean test22 = (TestBean) context.getFlowScope().get("test2"); assertSame(test22, test2); assertEquals("123456", test2.getProp()); assertSame(test2, new FormObjectAccessor(context).getCurrentFormObject()); } public void testFormObjectAndNoErrors() throws Exception { // this typically happens with mapping from parent flow to subflow MockRequestContext context = new MockRequestContext(parameters()); TestBean testBean = new TestBean(); testBean.setProp("bla"); context.getFlowScope().put("test", testBean); action.setupForm(context); // should have created a new empty errors instance, but left the form // object alone // since we didn't to bindOnSetupForm assertSame(testBean, getFormObject(context)); assertEquals("bla", getFormObject(context).getProp()); assertNotNull(getErrors(context)); assertSame(testBean, ((BindingResult) getErrors(context)).getTarget()); assertFalse(getErrors(context).hasErrors()); } public void testSetupFormThenBindAndValidate() throws Exception { FormAction action = createFormAction("testBean"); MockRequestContext context = new MockRequestContext(); Event result = action.setupForm(context); assertEquals("success", result.getId()); Object formObject = action.getFormObject(context); assertSame(formObject, action.getFormObject(context)); assertTrue(formObject instanceof TestBean); context.putRequestParameter("prop", "foo"); context.getAttributeMap().put("validatorMethod", "validateTestBean"); result = action.bindAndValidate(context); assertEquals("success", result.getId()); assertSame(formObject, action.getFormObject(context)); assertEquals(true, ((TestBeanValidator) action.getValidator()).invoked); } public void testFormActionWithValidatorAndNoFormActionClass() throws Exception { FormAction action = new FormAction() { protected Object createFormObject(RequestContext context) throws Exception { return new TestBean(); } }; action.setValidator(new TestBeanValidator()); action.initAction(); MockRequestContext context = new MockRequestContext(); Event result = action.setupForm(context); assertEquals("success", result.getId()); context.putRequestParameter("prop", "foo"); context.getAttributeMap().put("validatorMethod", "validateTestBean"); result = action.bindAndValidate(context); } // helpers private FormAction createFormAction(String formObjectName) { FormAction res = new FormAction(); res.setFormObjectName(formObjectName); res.setFormObjectClass(TestBean.class); res.setValidator(new TestBeanValidator()); res.setFormObjectScope(ScopeType.FLOW); res.setFormErrorsScope(ScopeType.REQUEST); res.initAction(); return res; } private Errors getErrors(RequestContext context) { return getErrors(context, "test"); } private Errors getErrors(RequestContext context, String formObjectName) { return new FormObjectAccessor(context).getFormErrors(formObjectName, ScopeType.REQUEST); } private TestBean getFormObject(RequestContext context) { return getFormObject(context, "test"); } private TestBean getFormObject(RequestContext context, String formObjectName) { return (TestBean) context.getFlowScope().get(formObjectName); } } ././@LongLink0000000000000000000000000000023700000000000011567 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/test/java/org/springframework/webflow/action/ResultObjectBasedEventFactoryTests.javalibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/test/java/org/springframew0000644000000000000000000000614411360615634030013 0ustar /* * Copyright 2004-2008 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.springframework.webflow.action; import java.util.Date; import junit.framework.TestCase; import org.springframework.core.enums.StaticLabeledEnum; import org.springframework.webflow.execution.Event; import org.springframework.webflow.test.MockRequestContext; /** * Test case for {@link ResultObjectBasedEventFactory}. * * @author Erwin Vervaet */ public class ResultObjectBasedEventFactoryTests extends TestCase { private ResultObjectBasedEventFactory factory = new ResultObjectBasedEventFactory(); public void testNull() { Event event = factory.createResultEvent(this, null, new MockRequestContext()); assertEquals(factory.getNullEventId(), event.getId()); } public void testBoolean() { Event event = factory.createResultEvent(this, Boolean.TRUE, new MockRequestContext()); assertEquals(factory.getYesEventId(), event.getId()); event = factory.createResultEvent(this, Boolean.FALSE, new MockRequestContext()); assertEquals(factory.getNoEventId(), event.getId()); } public void testLabeledEnum() { Event event = factory.createResultEvent(this, MyLabeledEnum.A, new MockRequestContext()); assertEquals("A", event.getId()); assertSame(MyLabeledEnum.A, event.getAttributes().get("result")); } public static class MyLabeledEnum extends StaticLabeledEnum { public static final MyLabeledEnum A = new MyLabeledEnum(0, "A"); public static final MyLabeledEnum B = new MyLabeledEnum(0, "B"); private MyLabeledEnum(int code, String label) { super(code, label); } public String toString() { return "MyLabeledEnum " + getLabel(); } } /* * public void testJava5Enum() { Event event = factory.createResultEvent(this, MyEnum.A, new MockRequestContext()); * assertEquals("A", event.getId()); assertSame(MyEnum.A, event.getAttributes().get("result")); } * * public static enum MyEnum { A, B; * * public String toString() { return "MyEnum " + name(); } } */ public void testString() { Event event = factory.createResultEvent(this, "foobar", new MockRequestContext()); assertEquals("foobar", event.getId()); } public void testEvent() { Event orig = new Event(this, "test"); Event event = factory.createResultEvent(this, orig, new MockRequestContext()); assertSame(orig, event); } public void testUnsupported() { try { factory.createResultEvent(this, new Date(), new MockRequestContext()); fail(); } catch (IllegalArgumentException e) { // expected } } } ././@LongLink0000000000000000000000000000022500000000000011564 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/test/java/org/springframework/webflow/action/EventFactorySupportTests.javalibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/test/java/org/springframew0000644000000000000000000000551511360615632030012 0ustar /* * Copyright 2004-2008 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.springframework.webflow.action; import junit.framework.TestCase; import org.springframework.webflow.action.EventFactorySupport; import org.springframework.webflow.execution.Event; /** * Unit tests for {@link EventFactorySupport}. */ public class EventFactorySupportTests extends TestCase { private EventFactorySupport support = new EventFactorySupport(); private Object source = new Object(); protected void setUp() throws Exception { } public void testSuccess() { Event e = support.success(source); assertEquals("success", e.getId()); assertSame(source, e.getSource()); } public void testSuccessWithResult() { Object result = new Object(); Event e = support.success(source, result); assertEquals("success", e.getId()); assertSame(source, e.getSource()); assertSame(result, e.getAttributes().get("result")); } public void testError() { Event e = support.error(source); assertEquals("error", e.getId()); assertSame(source, e.getSource()); } public void testErrorWithException() { Exception ex = new Exception(); Event e = support.error(source, ex); assertEquals("error", e.getId()); assertSame(source, e.getSource()); assertSame(ex, e.getAttributes().get("exception")); } public void testYes() { Event e = support.yes(source); assertEquals("yes", e.getId()); assertSame(source, e.getSource()); } public void testNo() { Event e = support.no(source); assertEquals("no", e.getId()); assertSame(source, e.getSource()); } public void testBooleanTrueEvent() { Event e = support.event(source, true); assertEquals("yes", e.getId()); assertSame(source, e.getSource()); } public void testBooleanFalseEvent() { Event e = support.event(source, false); assertEquals("no", e.getId()); assertSame(source, e.getSource()); } public void testEvent() { Event e = support.event(source, "no"); assertEquals("no", e.getId()); assertSame(source, e.getSource()); } public void testEventWithAttrs() { Event e = support.event(source, "no", "foo", "bar"); assertEquals("no", e.getId()); assertEquals("bar", e.getAttributes().get("foo")); assertSame(source, e.getSource()); } }././@LongLink0000000000000000000000000000022100000000000011560 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/test/java/org/springframework/webflow/action/CompositeActionTests.javalibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/test/java/org/springframew0000644000000000000000000000662411360615632030014 0ustar /* * Copyright 2004-2008 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.springframework.webflow.action; import junit.framework.TestCase; import org.easymock.EasyMock; import org.springframework.webflow.core.collection.LocalAttributeMap; import org.springframework.webflow.execution.Action; import org.springframework.webflow.execution.Event; import org.springframework.webflow.execution.RequestContext; import org.springframework.webflow.test.MockRequestContext; /** * Unit tests for the {@link CompositeAction} class. * * @author Ulrik Sandberg */ public class CompositeActionTests extends TestCase { private CompositeAction tested; private Action actionMock; protected void setUp() throws Exception { super.setUp(); actionMock = (Action) EasyMock.createMock(Action.class); Action[] actions = new Action[] { actionMock }; tested = new CompositeAction(actions); } public void testDoExecute() throws Exception { MockRequestContext mockRequestContext = new MockRequestContext(); LocalAttributeMap attributes = new LocalAttributeMap(); attributes.put("some key", "some value"); EasyMock.expect(actionMock.execute(mockRequestContext)).andReturn(new Event(this, "some event", attributes)); EasyMock.replay(new Object[] { actionMock }); Event result = tested.doExecute(mockRequestContext); EasyMock.verify(new Object[] { actionMock }); assertEquals("some event", result.getId()); assertEquals(1, result.getAttributes().size()); } public void testDoExecuteWithError() throws Exception { tested.setStopOnError(true); MockRequestContext mockRequestContext = new MockRequestContext(); EasyMock.expect(actionMock.execute(mockRequestContext)).andReturn(new Event(this, "error")); EasyMock.replay(new Object[] { actionMock }); Event result = tested.doExecute(mockRequestContext); EasyMock.verify(new Object[] { actionMock }); assertEquals("error", result.getId()); } public void testDoExecuteWithNullResult() throws Exception { tested.setStopOnError(true); MockRequestContext mockRequestContext = new MockRequestContext(); EasyMock.expect(actionMock.execute(mockRequestContext)).andReturn(null); EasyMock.replay(new Object[] { actionMock }); Event result = tested.doExecute(mockRequestContext); EasyMock.verify(new Object[] { actionMock }); assertEquals("Expecting success since no check is performed if null result,", "success", result.getId()); } public void testMultipleActions() throws Exception { CompositeAction ca = new CompositeAction(new Action[] { new Action() { public Event execute(RequestContext context) throws Exception { return new Event(this, "foo"); } }, new Action() { public Event execute(RequestContext context) throws Exception { return new Event(this, "bar"); } } }); assertEquals("Result of last executed action should be returned", "bar", ca.execute(new MockRequestContext()) .getId()); } }././@LongLink0000000000000000000000000000023600000000000011566 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/test/java/org/springframework/webflow/action/FlowDefinitionRedirectActionTests.javalibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/test/java/org/springframew0000644000000000000000000000250711360615634030012 0ustar package org.springframework.webflow.action; import junit.framework.TestCase; import org.springframework.binding.expression.Expression; import org.springframework.binding.expression.support.StaticExpression; import org.springframework.webflow.test.MockRequestContext; public class FlowDefinitionRedirectActionTests extends TestCase { private FlowDefinitionRedirectAction action; public void testExecute() throws Exception { Expression flowId = new StaticExpression("user?foo=bar"); action = new FlowDefinitionRedirectAction(flowId); MockRequestContext context = new MockRequestContext(); action.execute(context); assertEquals("user", context.getMockExternalContext().getFlowRedirectFlowId()); assertEquals("bar", context.getMockExternalContext().getFlowRedirectFlowInput().get("foo")); } public void testExecuteWithNullRequestFields() throws Exception { Expression flowId = new StaticExpression("user"); action = new FlowDefinitionRedirectAction(flowId); MockRequestContext context = new MockRequestContext(); action.execute(context); assertEquals("user", context.getMockExternalContext().getFlowRedirectFlowId()); } public void testExecuteWithNullFlowId() throws Exception { try { action = new FlowDefinitionRedirectAction(null); fail("Should have failed"); } catch (IllegalArgumentException e) { } } } ././@LongLink0000000000000000000000000000022500000000000011564 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/test/java/org/springframework/webflow/action/SuccessEventFactoryTests.javalibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/test/java/org/springframew0000644000000000000000000000240611360615634030010 0ustar /* * Copyright 2004-2008 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.springframework.webflow.action; import junit.framework.TestCase; import org.springframework.webflow.execution.Event; import org.springframework.webflow.test.MockRequestContext; /** * Unit tests for {@link SuccessEventFactory}. */ public class SuccessEventFactoryTests extends TestCase { private MockRequestContext context = new MockRequestContext(); private SuccessEventFactory factory = new SuccessEventFactory(); public void testDefaultAdaptionRules() { Event result = factory.createResultEvent(this, "result", context); assertEquals("success", result.getId()); assertEquals("result", result.getAttributes().getString("result")); } }././@LongLink0000000000000000000000000000022700000000000011566 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/test/java/org/springframework/webflow/action/DispatchMethodInvokerTests.javalibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/test/java/org/springframew0000644000000000000000000000466611360615632030020 0ustar /* * Copyright 2004-2008 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.springframework.webflow.action; import junit.framework.TestCase; public class DispatchMethodInvokerTests extends TestCase { private MockClass mockClass; protected void setUp() { mockClass = new MockClass(); } public void testInvokeWithExplicitParameters() throws Exception { DispatchMethodInvoker invoker = new DispatchMethodInvoker(mockClass, new Class[] { Object.class }); invoker.invoke("argumentMethod", new Object[] { "testValue" }); assertTrue("Method should have been called successfully", mockClass.getMethodCalled()); } public void testInvokeWithAssignableParameters() throws Exception { DispatchMethodInvoker invoker = new DispatchMethodInvoker(mockClass, new Class[] { String.class }); invoker.invoke("argumentMethod", new Object[] { "testValue" }); assertTrue("Method should have been called successfully", mockClass.getMethodCalled()); } public void testInvokeWithNoParameters() throws Exception { DispatchMethodInvoker invoker = new DispatchMethodInvoker(mockClass, new Class[0]); invoker.invoke("noArgumentMethod", new Object[0]); assertTrue("Method should have been called successfully", mockClass.getMethodCalled()); } public void testInvokeWithException() { DispatchMethodInvoker invoker = new DispatchMethodInvoker(mockClass, new Class[] { Object.class }); try { invoker.invoke("exceptionMethod", new Object[] { "testValue" }); fail("Should have thrown an exception"); } catch (Exception e) { } } private class MockClass { private boolean methodCalled = false; public boolean getMethodCalled() { return methodCalled; } public void argumentMethod(Object o) { methodCalled = true; } public void noArgumentMethod() { methodCalled = true; } public void exceptionMethod(Object o) throws Exception { throw new Exception("expected exception"); } } } ././@LongLink0000000000000000000000000000022500000000000011564 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/test/java/org/springframework/webflow/action/ActionResultExposerTests.javalibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/test/java/org/springframew0000644000000000000000000000350511360615632030007 0ustar package org.springframework.webflow.action; import junit.framework.TestCase; import org.springframework.binding.convert.service.DefaultConversionService; import org.springframework.binding.expression.support.StaticExpression; import org.springframework.webflow.test.MockRequestContext; public class ActionResultExposerTests extends TestCase { public void testEvaluateExpressionResult() throws Exception { StaticExpression resultExpression = new StaticExpression(""); ActionResultExposer exposer = new ActionResultExposer(resultExpression, null, null); MockRequestContext context = new MockRequestContext(); exposer.exposeResult("foo", context); assertEquals("foo", resultExpression.getValue(null)); } public void testEvaluateExpressionNullResult() throws Exception { StaticExpression resultExpression = new StaticExpression(""); ActionResultExposer exposer = new ActionResultExposer(resultExpression, null, null); MockRequestContext context = new MockRequestContext(); exposer.exposeResult(null, context); assertEquals(null, resultExpression.getValue(null)); } public void testEvaluateExpressionResultExposerWithTypeConversion() throws Exception { StaticExpression resultExpression = new StaticExpression(""); ActionResultExposer exposer = new ActionResultExposer(resultExpression, Integer.class, new DefaultConversionService()); MockRequestContext context = new MockRequestContext(); exposer.exposeResult("3", context); assertEquals(new Integer(3), resultExpression.getValue(null)); } public void testEvaluateExpressionResultExposerWithTypeConversionForgotArgument() throws Exception { StaticExpression resultExpression = new StaticExpression(""); try { new ActionResultExposer(resultExpression, Integer.class, null); fail("should have failed iae"); } catch (IllegalArgumentException e) { } } } ././@LongLink0000000000000000000000000000021300000000000011561 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/test/java/org/springframework/webflow/action/SetActionTests.javalibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/test/java/org/springframew0000644000000000000000000000225411360615646030014 0ustar package org.springframework.webflow.action; import junit.framework.TestCase; import org.springframework.binding.convert.service.DefaultConversionService; import org.springframework.binding.expression.support.StaticExpression; import org.springframework.webflow.execution.Event; import org.springframework.webflow.test.MockRequestContext; public class SetActionTests extends TestCase { public void testSetAction() throws Exception { StaticExpression name = new StaticExpression(""); SetAction action = new SetAction(name, new StaticExpression("bar"), null, null); MockRequestContext context = new MockRequestContext(); Event result = action.execute(context); assertEquals("success", result.getId()); assertEquals("bar", name.getValue(null)); } public void testSetActionWithTypeConversion() throws Exception { StaticExpression name = new StaticExpression(""); SetAction action = new SetAction(name, new StaticExpression("3"), Integer.class, new DefaultConversionService()); MockRequestContext context = new MockRequestContext(); Event result = action.execute(context); assertEquals("success", result.getId()); assertEquals(new Integer(3), name.getValue(null)); } } ././@LongLink0000000000000000000000000000021500000000000011563 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/test/java/org/springframework/webflow/action/MultiActionTests.javalibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/test/java/org/springframew0000644000000000000000000000606211360615632030010 0ustar /* * Copyright 2004-2008 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.springframework.webflow.action; import junit.framework.TestCase; import org.springframework.webflow.action.DispatchMethodInvoker.MethodLookupException; import org.springframework.webflow.action.MultiAction.MethodResolver; import org.springframework.webflow.engine.StubViewFactory; import org.springframework.webflow.engine.ViewState; import org.springframework.webflow.execution.AnnotatedAction; import org.springframework.webflow.execution.RequestContext; import org.springframework.webflow.test.MockFlowSession; import org.springframework.webflow.test.MockRequestContext; /** * Unit tests for {@link MultiAction}. */ public class MultiActionTests extends TestCase { private TestMultiAction action = new TestMultiAction(); private MockRequestContext context = new MockRequestContext(); public void testDispatchWithMethodSignature() throws Exception { context.getAttributeMap().put(AnnotatedAction.METHOD_ATTRIBUTE, "increment"); action.execute(context); assertEquals(1, action.counter); } public void testDispatchWithBogusMethodSignature() throws Exception { context.getAttributeMap().put(AnnotatedAction.METHOD_ATTRIBUTE, "bogus"); try { action.execute(context); fail("Should've failed with no such method"); } catch (MethodLookupException e) { } } public void testDispatchWithCurrentStateId() throws Exception { MockFlowSession session = context.getMockFlowExecutionContext().getMockActiveSession(); session.setState(new ViewState(session.getDefinitionInternal(), "increment", new StubViewFactory())); action.execute(context); assertEquals(1, action.counter); } public void testNoSuchMethodWithCurrentStateId() throws Exception { try { action.execute(context); fail("Should've failed with no such method"); } catch (MethodLookupException e) { } } public void testCannotResolveMethod() throws Exception { try { context.getMockFlowExecutionContext().getMockActiveSession().setState(null); action.execute(context); fail("Should've failed with illegal state"); } catch (IllegalStateException e) { } } public void testCustomMethodResolver() throws Exception { MethodResolver methodResolver = new MethodResolver() { public String resolveMethod(RequestContext context) { return "increment"; } }; action.setMethodResolver(methodResolver); action.execute(context); assertEquals(1, action.counter); } }././@LongLink0000000000000000000000000000017200000000000011565 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/test/java/org/springframework/webflow/executor/libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/test/java/org/springframew0000755000000000000000000000000011360615632030002 5ustar ././@LongLink0000000000000000000000000000022400000000000011563 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/test/java/org/springframework/webflow/executor/FlowExecutorImplTests.javalibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/test/java/org/springframew0000644000000000000000000001561211360615632030011 0ustar package org.springframework.webflow.executor; import junit.framework.TestCase; import org.easymock.EasyMock; import org.springframework.webflow.context.ExternalContextHolder; import org.springframework.webflow.core.collection.LocalAttributeMap; import org.springframework.webflow.core.collection.MutableAttributeMap; import org.springframework.webflow.definition.FlowDefinition; import org.springframework.webflow.definition.registry.FlowDefinitionLocator; import org.springframework.webflow.execution.FlowExecution; import org.springframework.webflow.execution.FlowExecutionFactory; import org.springframework.webflow.execution.FlowExecutionKey; import org.springframework.webflow.execution.FlowExecutionOutcome; import org.springframework.webflow.execution.repository.FlowExecutionLock; import org.springframework.webflow.execution.repository.FlowExecutionRepository; import org.springframework.webflow.test.GeneratedFlowExecutionKey; import org.springframework.webflow.test.MockExternalContext; import org.springframework.webflow.test.MockFlowExecutionKey; public class FlowExecutorImplTests extends TestCase { private FlowExecutor flowExecutor; // mocks private FlowDefinitionLocator locator; private FlowDefinition definition; private FlowExecutionFactory factory; private FlowExecution execution; private FlowExecutionRepository repository; private FlowExecutionLock lock; protected void setUp() { locator = (FlowDefinitionLocator) EasyMock.createMock(FlowDefinitionLocator.class); definition = (FlowDefinition) EasyMock.createMock(FlowDefinition.class); factory = (FlowExecutionFactory) EasyMock.createMock(FlowExecutionFactory.class); execution = (FlowExecution) EasyMock.createMock(FlowExecution.class); repository = (FlowExecutionRepository) EasyMock.createMock(FlowExecutionRepository.class); lock = (FlowExecutionLock) EasyMock.createMock(FlowExecutionLock.class); flowExecutor = new FlowExecutorImpl(locator, factory, repository); } public void testLaunchFlowExecution() { String flowId = "foo"; MutableAttributeMap input = null; MockExternalContext context = new MockExternalContext(); EasyMock.expect(locator.getFlowDefinition(flowId)).andReturn(definition); EasyMock.expect(factory.createFlowExecution(definition)).andReturn(execution); execution.start(input, context); execution.hasEnded(); EasyMock.expectLastCall().andReturn(Boolean.FALSE); MockFlowExecutionKey flowExecutionKey = new MockFlowExecutionKey("12345"); EasyMock.expect(execution.getKey()).andReturn(flowExecutionKey); EasyMock.expect(repository.getLock(flowExecutionKey)).andReturn(lock); lock.lock(); repository.putFlowExecution(execution); lock.unlock(); EasyMock.expect(execution.getDefinition()).andReturn(definition); EasyMock.expect(definition.getId()).andReturn("foo"); EasyMock.expect(execution.getKey()).andReturn(flowExecutionKey); replayMocks(); FlowExecutionResult result = flowExecutor.launchExecution("foo", null, context); assertTrue(result.isPaused()); assertEquals("12345", result.getPausedKey()); assertFalse(result.isEnded()); assertNull(result.getOutcome()); assertNull(ExternalContextHolder.getExternalContext()); verifyMocks(); } public void testLaunchFlowExecutionEndsAfterProcessing() { String flowId = "foo"; MutableAttributeMap input = null; MockExternalContext context = new MockExternalContext(); EasyMock.expect(locator.getFlowDefinition(flowId)).andReturn(definition); EasyMock.expect(factory.createFlowExecution(definition)).andReturn(execution); execution.start(input, context); execution.hasEnded(); EasyMock.expectLastCall().andReturn(Boolean.TRUE); EasyMock.expect(execution.getDefinition()).andReturn(definition); EasyMock.expect(definition.getId()).andReturn("foo"); EasyMock.expect(execution.getOutcome()).andReturn(new FlowExecutionOutcome("finish", null)); replayMocks(); FlowExecutionResult result = flowExecutor.launchExecution("foo", null, context); assertTrue(result.isEnded()); assertEquals("finish", result.getOutcome().getId()); assertTrue(result.getOutcome().getOutput().isEmpty()); assertFalse(result.isPaused()); assertNull(result.getPausedKey()); assertNull(ExternalContextHolder.getExternalContext()); verifyMocks(); } public void testResumeFlowExecution() { String flowExecutionKey = "12345"; MockExternalContext context = new MockExternalContext(); FlowExecutionKey key = new GeneratedFlowExecutionKey(); EasyMock.expect(repository.parseFlowExecutionKey(flowExecutionKey)).andReturn(key); EasyMock.expect(repository.getLock(key)).andReturn(lock); lock.lock(); EasyMock.expect(repository.getFlowExecution(key)).andReturn(execution); execution.resume(context); execution.hasEnded(); EasyMock.expectLastCall().andReturn(Boolean.FALSE); repository.putFlowExecution(execution); EasyMock.expect(execution.getDefinition()).andReturn(definition); EasyMock.expect(definition.getId()).andReturn("foo"); EasyMock.expect(execution.getKey()).andReturn(new MockFlowExecutionKey("12345")); lock.unlock(); replayMocks(); FlowExecutionResult result = flowExecutor.resumeExecution(flowExecutionKey, context); verifyMocks(); assertTrue(result.isPaused()); assertEquals("12345", result.getPausedKey()); assertFalse(result.isEnded()); assertNull(result.getOutcome()); assertNull(ExternalContextHolder.getExternalContext()); verifyMocks(); } public void testResumeFlowExecutionEndsAfterProcessing() { String flowExecutionKey = "12345"; MockExternalContext context = new MockExternalContext(); FlowExecutionKey key = new MockFlowExecutionKey("12345"); EasyMock.expect(repository.parseFlowExecutionKey(flowExecutionKey)).andReturn(key); EasyMock.expect(repository.getLock(key)).andReturn(lock); lock.lock(); EasyMock.expect(repository.getFlowExecution(key)).andReturn(execution); execution.resume(context); execution.hasEnded(); EasyMock.expectLastCall().andReturn(Boolean.TRUE); EasyMock.expect(execution.getDefinition()).andReturn(definition); EasyMock.expect(definition.getId()).andReturn("foo"); LocalAttributeMap output = new LocalAttributeMap(); output.put("foo", "bar"); EasyMock.expect(execution.getOutcome()).andReturn(new FlowExecutionOutcome("finish", output)); repository.removeFlowExecution(execution); lock.unlock(); replayMocks(); FlowExecutionResult result = flowExecutor.resumeExecution(flowExecutionKey, context); assertTrue(result.isEnded()); assertEquals("finish", result.getOutcome().getId()); assertEquals(output, result.getOutcome().getOutput()); assertFalse(result.isPaused()); assertNull(result.getPausedKey()); assertNull(ExternalContextHolder.getExternalContext()); verifyMocks(); } private void replayMocks() { EasyMock.replay(new Object[] { locator, definition, factory, execution, repository, lock }); } private void verifyMocks() { EasyMock.verify(new Object[] { locator, definition, factory, execution, repository, lock }); } } ././@LongLink0000000000000000000000000000016600000000000011570 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/test/java/org/springframework/webflow/core/libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/test/java/org/springframew0000755000000000000000000000000011360615634030004 5ustar ././@LongLink0000000000000000000000000000020100000000000011556 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/test/java/org/springframework/webflow/core/collection/libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/test/java/org/springframew0000755000000000000000000000000011360615644030005 5ustar ././@LongLink0000000000000000000000000000023200000000000011562 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/test/java/org/springframework/webflow/core/collection/CollectionUtilsTests.javalibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/test/java/org/springframew0000644000000000000000000000203111360615636030004 0ustar /* * Copyright 2004-2008 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.springframework.webflow.core.collection; import junit.framework.TestCase; /** * Unit tests for {@link CollectionUtils}. */ public class CollectionUtilsTests extends TestCase { public void testSingleEntryMap() { AttributeMap map1 = CollectionUtils.singleEntryMap("foo", "bar"); AttributeMap map2 = CollectionUtils.singleEntryMap("foo", "bar"); assertEquals(map1, map2); } } ././@LongLink0000000000000000000000000000023400000000000011564 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/test/java/org/springframework/webflow/core/collection/LocalParameterMapTests.javalibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/test/java/org/springframew0000644000000000000000000001630011360615634030006 0ustar /* * Copyright 2004-2008 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.springframework.webflow.core.collection; import java.util.HashMap; import java.util.Map; import junit.framework.TestCase; import org.easymock.EasyMock; import org.springframework.web.multipart.MultipartFile; /** * Unit tests for {@link LocalParameterMap}. */ public class LocalParameterMapTests extends TestCase { private LocalParameterMap parameterMap; public void setUp() { Map map = new HashMap(); map.put("string", "A string"); map.put("integer", "12345"); map.put("boolean", "true"); map.put("stringArray", new String[] { "1", "2", "3" }); map.put("emptyArray", new String[0]); map.put("multipartFile", EasyMock.createMock(MultipartFile.class)); parameterMap = new LocalParameterMap(map); } public void testSize() { assertTrue(!parameterMap.isEmpty()); assertEquals(6, parameterMap.size()); } public void testGet() { String value = parameterMap.get("string"); assertEquals("A string", value); } public void testGetNull() { String value = parameterMap.get("bogus"); assertNull(value); } public void testGetRequired() { String value = parameterMap.getRequired("string"); assertEquals("A string", value); } public void testGetRequiredWithConversion() { Integer value = (Integer) parameterMap.getRequired("integer", Integer.class); assertEquals(new Integer(12345), value); } public void testGetRequiredNotPresent() { try { parameterMap.getRequired("bogus"); } catch (IllegalArgumentException e) { } } public void testGetWithDefaultOption() { String value = parameterMap.get("string", "default"); assertEquals("A string", value); } public void testGetWithDefault() { String value = parameterMap.get("bogus", "default"); assertEquals("default", value); } public void testGetWithDefaultAndConversion() { Object value = parameterMap.get("bogus", Integer.class, new Integer(1)); assertEquals(new Integer(1), value); } public void testGetWithDefaultAndConversionNotAssignable() { try { parameterMap.get("bogus", Integer.class, "1"); fail("'1' isn't a integer"); } catch (IllegalArgumentException e) { } } public void testGetArray() { String[] value = parameterMap.getArray("stringArray"); assertEquals(3, value.length); } public void testGetEmptyArray() { String[] array = parameterMap.getArray("emptyArray"); assertEquals(0, array.length); } public void testGetArrayNull() { String[] value = parameterMap.getArray("bogus"); assertNull(value); } public void testGetArrayRequired() { String[] value = parameterMap.getRequiredArray("stringArray"); assertEquals(3, value.length); } public void getArrayWithConversion() { Integer[] values = (Integer[]) parameterMap.getArray("stringArray", Integer.class); assertEquals(new Integer(1), values[0]); assertEquals(new Integer(2), values[1]); assertEquals(new Integer(3), values[2]); } public void testGetRequiredArrayNotPresent() { try { parameterMap.getRequiredArray("bogus"); } catch (IllegalArgumentException e) { } } public void testGetSingleValueAsArray() { String[] value = parameterMap.getArray("string"); assertEquals(1, value.length); assertEquals("A string", value[0]); } public void testGetArrayAsSingleVaue() { String value = parameterMap.get("stringArray"); assertEquals("1", value); } public void testGetEmptyArrayAsSingleVaue() { String value = parameterMap.get("emptyArray"); assertEquals(null, value); } public void testGetConversion() { Integer i = parameterMap.getInteger("integer"); assertEquals(new Integer(12345), i); } public void testGetArrayConversion() { Integer[] i = (Integer[]) parameterMap.getArray("stringArray", Integer.class); assertEquals(i.length, 3); assertEquals(new Integer(1), i[0]); assertEquals(new Integer(2), i[1]); assertEquals(new Integer(3), i[2]); } public void getRequiredArrayWithConversion() { Integer[] values = (Integer[]) parameterMap.getRequiredArray("stringArray", Integer.class); assertEquals(new Integer(1), values[0]); assertEquals(new Integer(2), values[1]); assertEquals(new Integer(3), values[2]); } public void testGetNumber() { Integer value = (Integer) parameterMap.getNumber("integer", Integer.class); assertEquals(new Integer(12345), value); } public void testGetRequiredNumber() { Integer value = (Integer) parameterMap.getRequiredNumber("integer", Integer.class); assertEquals(new Integer(12345), value); } public void testGetNumberWithDefault() { Integer value = (Integer) parameterMap.getNumber("bogus", Integer.class, new Integer(12345)); assertEquals(new Integer(12345), value); } public void testGetInteger() { Integer value = parameterMap.getInteger("integer"); assertEquals(new Integer(12345), value); } public void testGetRequiredInteger() { Integer value = parameterMap.getRequiredInteger("integer"); assertEquals(new Integer(12345), value); } public void testGetIntegerWithDefault() { Integer value = parameterMap.getInteger("bogus", new Integer(12345)); assertEquals(new Integer(12345), value); } public void testGetLong() { Long value = parameterMap.getLong("integer"); assertEquals(new Long(12345), value); } public void testGetRequiredLong() { Long value = parameterMap.getRequiredLong("integer"); assertEquals(new Long(12345), value); } public void testGetLongWithDefault() { Long value = parameterMap.getLong("bogus", new Long(12345)); assertEquals(new Long(12345), value); } public void testGetBoolean() { Boolean value = parameterMap.getBoolean("boolean"); assertEquals(Boolean.TRUE, value); } public void testGetRequiredBoolean() { Boolean value = parameterMap.getRequiredBoolean("boolean"); assertEquals(Boolean.TRUE, value); } public void testGetBooleanWithDefault() { Boolean value = parameterMap.getBoolean("bogus", Boolean.TRUE); assertEquals(Boolean.TRUE, value); } public void testGetMultipart() { MultipartFile file = parameterMap.getMultipartFile("multipartFile"); assertNotNull(file); } public void testGetRequiredMultipart() { MultipartFile file = parameterMap.getRequiredMultipartFile("multipartFile"); assertNotNull(file); } public void testEquality() { LocalParameterMap map1 = new LocalParameterMap(new HashMap(parameterMap.asMap())); assertEquals(parameterMap, map1); } public void testAsAttributeMap() { AttributeMap map = parameterMap.asAttributeMap(); assertEquals(map.asMap(), parameterMap.asMap()); } }././@LongLink0000000000000000000000000000021600000000000011564 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/test/java/org/springframework/webflow/core/collection/TestBean.javalibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/test/java/org/springframew0000644000000000000000000000225711360615644030015 0ustar /* * Copyright 2004-2008 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.springframework.webflow.core.collection; import java.io.Serializable; /** * Test bean used in unit tests. */ public class TestBean implements Serializable { private int amount = 0; public int getAmount() { return amount; } public void setAmount(int amount) { this.amount = amount; } public boolean equals(Object o) { if (!(o instanceof TestBean)) { return false; } return amount == ((TestBean) o).amount; } public int hashCode() { return amount * 29; } public String toString() { return "[TestBean amount = " + amount + "]"; } }././@LongLink0000000000000000000000000000023400000000000011564 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/test/java/org/springframework/webflow/core/collection/LocalAttributeMapTests.javalibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/test/java/org/springframew0000644000000000000000000002126011360615634030007 0ustar /* * Copyright 2004-2008 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.springframework.webflow.core.collection; import java.math.BigDecimal; import java.util.LinkedList; import java.util.List; import java.util.Map; import junit.framework.TestCase; /** * Unit tests for {@link LocalAttributeMap}. */ public class LocalAttributeMapTests extends TestCase { private LocalAttributeMap attributeMap = new LocalAttributeMap(); public void setUp() { attributeMap.put("string", "A string"); attributeMap.put("integer", new Integer(12345)); attributeMap.put("boolean", Boolean.TRUE); attributeMap.put("long", new Long(12345)); attributeMap.put("double", new Double(12345)); attributeMap.put("float", new Float(12345)); attributeMap.put("bigDecimal", new BigDecimal("12345.67")); attributeMap.put("bean", new TestBean()); attributeMap.put("stringArray", new String[] { "1", "2", "3" }); attributeMap.put("collection", new LinkedList()); } public void testGet() { TestBean bean = (TestBean) attributeMap.get("bean"); assertNotNull(bean); } public void testGetNull() { TestBean bean = (TestBean) attributeMap.get("bogus"); assertNull(bean); } public void testGetRequiredType() { TestBean bean = (TestBean) attributeMap.get("bean", TestBean.class); assertNotNull(bean); } public void testGetWrongType() { try { attributeMap.get("bean", String.class); fail("Should've failed iae"); } catch (IllegalArgumentException e) { } } public void testGetWithDefaultOption() { TestBean d = new TestBean(); TestBean bean = (TestBean) attributeMap.get("bean", d); assertNotNull(bean); assertNotSame(bean, d); } public void testGetWithDefault() { TestBean d = new TestBean(); TestBean bean = (TestBean) attributeMap.get("bogus", d); assertSame(bean, d); } public void testGetRequired() { TestBean bean = (TestBean) attributeMap.getRequired("bean"); assertNotNull(bean); } public void testGetRequiredNotPresent() { try { attributeMap.getRequired("bogus"); fail("Should've failed iae"); } catch (IllegalArgumentException e) { } } public void testGetRequiredOfType() { TestBean bean = (TestBean) attributeMap.getRequired("bean", TestBean.class); assertNotNull(bean); } public void testGetRequiredWrongType() { try { attributeMap.getRequired("bean", String.class); fail("Should've failed iae"); } catch (IllegalArgumentException e) { } } public void testGetNumber() { BigDecimal bd = (BigDecimal) attributeMap.getNumber("bigDecimal", BigDecimal.class); assertEquals(new BigDecimal("12345.67"), bd); } public void testGetNumberWrongType() { try { attributeMap.getNumber("bigDecimal", Integer.class); fail("Should've failed iae"); } catch (IllegalArgumentException e) { } } public void testGetNumberWithDefaultOption() { BigDecimal d = new BigDecimal("1"); BigDecimal bd = (BigDecimal) attributeMap.getNumber("bigDecimal", BigDecimal.class, d); assertEquals(new BigDecimal("12345.67"), bd); assertNotSame(d, bd); } public void testGetNumberWithDefault() { BigDecimal d = new BigDecimal("1"); BigDecimal bd = (BigDecimal) attributeMap.getNumber("bogus", BigDecimal.class, d); assertEquals(d, bd); assertSame(d, bd); } public void testGetNumberRequired() { BigDecimal bd = (BigDecimal) attributeMap.getRequiredNumber("bigDecimal", BigDecimal.class); assertEquals(new BigDecimal("12345.67"), bd); } public void testGetNumberRequiredNotPresent() { try { attributeMap.getRequiredNumber("bogus", BigDecimal.class); fail("Should've failed iae"); } catch (IllegalArgumentException e) { } } public void testGetInteger() { Integer i = attributeMap.getInteger("integer"); assertEquals(new Integer(12345), i); } public void testGetIntegerNull() { Integer i = attributeMap.getInteger("bogus"); assertNull(i); } public void testGetIntegerRequired() { Integer i = attributeMap.getRequiredInteger("integer"); assertEquals(new Integer(12345), i); } public void testGetIntegerRequiredNotPresent() { try { attributeMap.getRequiredInteger("bogus"); fail("Should've failed iae"); } catch (IllegalArgumentException e) { } } public void testGetLong() { Long i = attributeMap.getLong("long"); assertEquals(new Long(12345), i); } public void testGetLongNull() { Long i = attributeMap.getLong("bogus"); assertNull(i); } public void testGetLongRequired() { Long i = attributeMap.getRequiredLong("long"); assertEquals(new Long(12345), i); } public void testGetLongRequiredNotPresent() { try { attributeMap.getRequiredLong("bogus"); fail("Should've failed iae"); } catch (IllegalArgumentException e) { } } public void testGetString() { String i = attributeMap.getString("string"); assertEquals("A string", i); } public void testGetStringNull() { String i = attributeMap.getString("bogus"); assertNull(i); } public void testGetStringRequired() { String i = attributeMap.getRequiredString("string"); assertEquals("A string", i); } public void testGetStringRequiredNotPresent() { try { attributeMap.getRequiredString("bogus"); fail("Should've failed iae"); } catch (IllegalArgumentException e) { } } public void testGetBoolean() { Boolean i = attributeMap.getBoolean("boolean"); assertEquals(Boolean.TRUE, i); } public void testGetBooleanNull() { Boolean i = attributeMap.getBoolean("bogus"); assertNull(i); } public void testGetBooleanRequired() { Boolean i = attributeMap.getRequiredBoolean("boolean"); assertEquals(Boolean.TRUE, i); } public void testGetBooleanRequiredNotPresent() { try { attributeMap.getRequiredBoolean("bogus"); fail("Should've failed iae"); } catch (IllegalArgumentException e) { } } public void testGetArray() { String[] i = (String[]) attributeMap.getArray("stringArray", String[].class); assertEquals(3, i.length); } public void testGetArrayNull() { String[] i = (String[]) attributeMap.getArray("A bogus array", String[].class); assertNull(i); } public void testGetArrayRequired() { String[] i = (String[]) attributeMap.getRequiredArray("stringArray", String[].class); assertEquals(3, i.length); } public void testGetArrayRequiredNotPresent() { try { attributeMap.getRequiredArray("A bogus array", String[].class); fail("Should've failed iae"); } catch (IllegalArgumentException e) { } } public void testGetCollection() { LinkedList i = (LinkedList) attributeMap.getCollection("collection", List.class); assertEquals(0, i.size()); } public void testGetCollectionNull() { LinkedList i = (LinkedList) attributeMap.getCollection("bogus", List.class); assertNull(i); } public void testGetCollectionRequired() { LinkedList i = (LinkedList) attributeMap.getRequiredCollection("collection", List.class); assertEquals(0, i.size()); } public void testGetCollectionRequiredNotPresent() { try { attributeMap.getRequiredCollection("A bogus collection"); fail("Should've failed iae"); } catch (IllegalArgumentException e) { } } public void testGetMap() { Map map = attributeMap.asMap(); assertEquals(10, map.size()); } public void testUnion() { LocalAttributeMap one = new LocalAttributeMap(); one.put("foo", "bar"); one.put("bar", "baz"); LocalAttributeMap two = new LocalAttributeMap(); two.put("cat", "coz"); two.put("bar", "boo"); AttributeMap three = one.union(two); assertEquals(3, three.size()); assertEquals("bar", three.get("foo")); assertEquals("coz", three.get("cat")); assertEquals("boo", three.get("bar")); } public void testEquality() { LocalAttributeMap map = new LocalAttributeMap(); map.put("foo", "bar"); LocalAttributeMap map2 = new LocalAttributeMap(); map2.put("foo", "bar"); assertEquals(map, map2); } public void testExtract() { assertEquals("A string", attributeMap.extract("string")); assertFalse(attributeMap.contains("string")); } }././@LongLink0000000000000000000000000000017400000000000011567 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/test/java/org/springframework/webflow/validation/libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/test/java/org/springframew0000755000000000000000000000000011360615644030005 5ustar ././@LongLink0000000000000000000000000000022600000000000011565 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/test/java/org/springframework/webflow/validation/ValidationHelperTests.javalibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/test/java/org/springframew0000644000000000000000000004212011360615632030003 0ustar /* * Copyright 2008 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.springframework.webflow.validation; import junit.framework.TestCase; import org.springframework.binding.message.MessageContext; import org.springframework.binding.validation.ValidationContext; import org.springframework.context.support.StaticApplicationContext; import org.springframework.validation.DefaultMessageCodesResolver; import org.springframework.validation.Errors; import org.springframework.validation.Validator; import org.springframework.webflow.engine.Flow; import org.springframework.webflow.engine.StubViewFactory; import org.springframework.webflow.engine.ViewState; import org.springframework.webflow.test.MockRequestControlContext; /** * Unit test for {@link ValidationHelper} */ public class ValidationHelperTests extends TestCase { private MockRequestControlContext requestContext; private String eventId; private String modelName; protected void setUp() throws Exception { requestContext = new MockRequestControlContext(); eventId = "userEvent"; modelName = "model"; } public void testValidateWithMessageContext() { Object model = new StubModelMessageContext(); ValidationHelper helper = new ValidationHelper(model, requestContext, eventId, modelName, null, null, null); helper.validate(); MessageContext messages = requestContext.getMessageContext(); assertEquals(1, messages.getAllMessages().length); assertEquals(1, messages.getMessagesBySource("messagecontext").length); assertEquals(0, messages.getMessagesBySource("validationcontext").length); } public void testValidateWithValidationContext() { Object model = new StubModelValidationContext(); ValidationHelper helper = new ValidationHelper(model, requestContext, eventId, modelName, null, new DefaultMessageCodesResolver(), null); helper.validate(); MessageContext messages = requestContext.getMessageContext(); assertEquals(1, messages.getAllMessages().length); assertEquals(1, messages.getMessagesBySource("validationcontext").length); } public void testValidateWithMessageContextForBeanValidator() { StaticApplicationContext applicationContext = new StaticApplicationContext(); applicationContext.registerSingleton("modelValidator", StubModelMessageContext.class); ((Flow) requestContext.getActiveFlow()).setApplicationContext(applicationContext); ValidationHelper helper = new ValidationHelper(new Object(), requestContext, eventId, modelName, null, new DefaultMessageCodesResolver(), null); helper.validate(); MessageContext messages = requestContext.getMessageContext(); assertEquals(1, messages.getAllMessages().length); assertEquals(1, messages.getMessagesBySource("messagecontext-external").length); } public void testValidateWithValidationContextForBeanValidator() { StaticApplicationContext applicationContext = new StaticApplicationContext(); applicationContext.registerSingleton("modelValidator", StubModelValidationContext.class); ((Flow) requestContext.getActiveFlow()).setApplicationContext(applicationContext); ValidationHelper helper = new ValidationHelper(new Object(), requestContext, eventId, modelName, null, new DefaultMessageCodesResolver(), null); helper.validate(); MessageContext messages = requestContext.getMessageContext(); assertEquals(1, messages.getAllMessages().length); assertEquals(1, messages.getMessagesBySource("validationcontext-external").length); } public void testValidateWithErrorsForBeanValidator() { StaticApplicationContext applicationContext = new StaticApplicationContext(); applicationContext.registerSingleton("modelValidator", StubModelErrors.class); ((Flow) requestContext.getActiveFlow()).setApplicationContext(applicationContext); ValidationHelper helper = new ValidationHelper(new Object(), requestContext, eventId, modelName, null, new DefaultMessageCodesResolver(), null); helper.validate(); MessageContext messages = requestContext.getMessageContext(); assertEquals(1, messages.getAllMessages().length); assertEquals(1, messages.getMessagesBySource("errors-external").length); } public void testValidateWithErrorsForBeanValidatorOverridden() { StaticApplicationContext applicationContext = new StaticApplicationContext(); applicationContext.registerSingleton("modelValidator", StubModelErrorsOverridden.class); ((Flow) requestContext.getActiveFlow()).setApplicationContext(applicationContext); ValidationHelper helper = new ValidationHelper(new Object(), requestContext, eventId, modelName, null, new DefaultMessageCodesResolver(), null); helper.validate(); MessageContext messages = requestContext.getMessageContext(); assertEquals(1, messages.getAllMessages().length); assertEquals(1, messages.getMessagesBySource("validationcontext-external").length); } public void testStateAndFallbackModelValidationMethodInvoked() { Model model = new Model(); ValidationHelper helper = new ValidationHelper(model, requestContext, eventId, modelName, null, new DefaultMessageCodesResolver(), null); ViewState state1 = new ViewState(requestContext.getRootFlow(), "state1", new StubViewFactory()); requestContext.setCurrentState(state1); helper.validate(); assertTrue(model.state1Invoked); assertTrue(model.fallbackInvoked); } public void testFallbackModelValidationMethodInvoked() { Model model = new Model(); ValidationHelper helper = new ValidationHelper(model, requestContext, eventId, modelName, null, new DefaultMessageCodesResolver(), null); ViewState state1 = new ViewState(requestContext.getRootFlow(), "state2", new StubViewFactory()); requestContext.setCurrentState(state1); helper.validate(); assertFalse(model.state1Invoked); assertTrue(model.fallbackInvoked); } public void testStateAndFallbackErrorsModelValidationMethodInvoked() { ErrorsModel model = new ErrorsModel(); ValidationHelper helper = new ValidationHelper(model, requestContext, eventId, modelName, null, new DefaultMessageCodesResolver(), null); ViewState state1 = new ViewState(requestContext.getRootFlow(), "state1", new StubViewFactory()); requestContext.setCurrentState(state1); helper.validate(); assertTrue(model.state1Invoked); assertTrue(model.fallbackInvoked); } public void testFallbackModelErrorsValidationMethodInvoked() { ErrorsModel model = new ErrorsModel(); ValidationHelper helper = new ValidationHelper(model, requestContext, eventId, modelName, null, new DefaultMessageCodesResolver(), null); ViewState state1 = new ViewState(requestContext.getRootFlow(), "state2", new StubViewFactory()); requestContext.setCurrentState(state1); helper.validate(); assertFalse(model.state1Invoked); assertTrue(model.fallbackInvoked); } public void testStateAndFallbackValidatorInvoked() { ModelValidator validator = new ModelValidator(); StaticApplicationContext applicationContext = new StaticApplicationContext(); applicationContext.getBeanFactory().registerSingleton("modelValidator", validator); requestContext.getRootFlow().setApplicationContext(applicationContext); Model model = new Model(); ValidationHelper helper = new ValidationHelper(model, requestContext, eventId, modelName, null, new DefaultMessageCodesResolver(), null); ViewState state1 = new ViewState(requestContext.getRootFlow(), "state1", new StubViewFactory()); requestContext.setCurrentState(state1); helper.validate(); assertTrue(validator.state1Invoked); assertTrue(validator.fallbackInvoked); } public void testStateAndFallbackValidatorInvokedForSubclass() { ModelValidator validator = new ModelValidator(); StaticApplicationContext applicationContext = new StaticApplicationContext(); applicationContext.getBeanFactory().registerSingleton("modelValidator", validator); requestContext.getRootFlow().setApplicationContext(applicationContext); ExtendedModel model = new ExtendedModel(); ValidationHelper helper = new ValidationHelper(model, requestContext, eventId, modelName, null, new DefaultMessageCodesResolver(), null); ViewState state1 = new ViewState(requestContext.getRootFlow(), "state1", new StubViewFactory()); requestContext.setCurrentState(state1); helper.validate(); assertTrue(validator.state1Invoked); assertTrue(validator.fallbackInvoked); } public void testFallbackValidatorInvoked() { ModelValidator validator = new ModelValidator(); StaticApplicationContext applicationContext = new StaticApplicationContext(); applicationContext.getBeanFactory().registerSingleton("modelValidator", validator); requestContext.getRootFlow().setApplicationContext(applicationContext); Model model = new Model(); ValidationHelper helper = new ValidationHelper(model, requestContext, eventId, modelName, null, new DefaultMessageCodesResolver(), null); ViewState state1 = new ViewState(requestContext.getRootFlow(), "state2", new StubViewFactory()); requestContext.setCurrentState(state1); helper.validate(); assertFalse(validator.state1Invoked); assertTrue(validator.fallbackInvoked); } public void testFallbackValidatorInvokedForSubclass() { ModelValidator validator = new ModelValidator(); StaticApplicationContext applicationContext = new StaticApplicationContext(); applicationContext.getBeanFactory().registerSingleton("modelValidator", validator); requestContext.getRootFlow().setApplicationContext(applicationContext); ExtendedModel model = new ExtendedModel(); ValidationHelper helper = new ValidationHelper(model, requestContext, eventId, modelName, null, new DefaultMessageCodesResolver(), null); ViewState state1 = new ViewState(requestContext.getRootFlow(), "state2", new StubViewFactory()); requestContext.setCurrentState(state1); helper.validate(); assertFalse(validator.state1Invoked); assertTrue(validator.fallbackInvoked); } public void testStateAndFallbackLegacyValidatorInvoked() { LegacyModelValidator validator = new LegacyModelValidator(); StaticApplicationContext applicationContext = new StaticApplicationContext(); applicationContext.getBeanFactory().registerSingleton("modelValidator", validator); requestContext.getRootFlow().setApplicationContext(applicationContext); Model model = new Model(); ValidationHelper helper = new ValidationHelper(model, requestContext, eventId, modelName, null, new DefaultMessageCodesResolver(), null); ViewState state1 = new ViewState(requestContext.getRootFlow(), "state1", new StubViewFactory()); requestContext.setCurrentState(state1); helper.validate(); assertTrue(validator.state1Invoked); assertTrue(validator.fallbackInvoked); } public void testStateAndFallbackLegacyValidatorInvokedForSubclass() { LegacyModelValidator validator = new LegacyModelValidator(); StaticApplicationContext applicationContext = new StaticApplicationContext(); applicationContext.getBeanFactory().registerSingleton("modelValidator", validator); requestContext.getRootFlow().setApplicationContext(applicationContext); ExtendedModel model = new ExtendedModel(); ValidationHelper helper = new ValidationHelper(model, requestContext, eventId, modelName, null, new DefaultMessageCodesResolver(), null); ViewState state1 = new ViewState(requestContext.getRootFlow(), "state1", new StubViewFactory()); requestContext.setCurrentState(state1); helper.validate(); assertTrue(validator.state1Invoked); assertTrue(validator.fallbackInvoked); } public void testFallbackLegacyValidatorInvoked() { LegacyModelValidator validator = new LegacyModelValidator(); StaticApplicationContext applicationContext = new StaticApplicationContext(); applicationContext.getBeanFactory().registerSingleton("modelValidator", validator); requestContext.getRootFlow().setApplicationContext(applicationContext); Model model = new Model(); ValidationHelper helper = new ValidationHelper(model, requestContext, eventId, modelName, null, new DefaultMessageCodesResolver(), null); ViewState state1 = new ViewState(requestContext.getRootFlow(), "state2", new StubViewFactory()); requestContext.setCurrentState(state1); helper.validate(); assertFalse(validator.state1Invoked); assertTrue(validator.fallbackInvoked); } public void testStateAndFallbackErrorsValidatorInvoked() { ErrorsModelValidator validator = new ErrorsModelValidator(); StaticApplicationContext applicationContext = new StaticApplicationContext(); applicationContext.getBeanFactory().registerSingleton("modelValidator", validator); requestContext.getRootFlow().setApplicationContext(applicationContext); Model model = new Model(); ValidationHelper helper = new ValidationHelper(model, requestContext, eventId, modelName, null, new DefaultMessageCodesResolver(), null); ViewState state1 = new ViewState(requestContext.getRootFlow(), "state1", new StubViewFactory()); requestContext.setCurrentState(state1); helper.validate(); assertTrue(validator.state1Invoked); assertTrue(validator.fallbackInvoked); } public void testStateAndFallbackErrorsValidatorInvokedForSubclass() { ErrorsModelValidator validator = new ErrorsModelValidator(); StaticApplicationContext applicationContext = new StaticApplicationContext(); applicationContext.getBeanFactory().registerSingleton("modelValidator", validator); requestContext.getRootFlow().setApplicationContext(applicationContext); ExtendedModel model = new ExtendedModel(); ValidationHelper helper = new ValidationHelper(model, requestContext, eventId, modelName, null, new DefaultMessageCodesResolver(), null); ViewState state1 = new ViewState(requestContext.getRootFlow(), "state1", new StubViewFactory()); requestContext.setCurrentState(state1); helper.validate(); assertTrue(validator.state1Invoked); assertTrue(validator.fallbackInvoked); } public void testFallbackErrorsValidatorInvoked() { ErrorsModelValidator validator = new ErrorsModelValidator(); StaticApplicationContext applicationContext = new StaticApplicationContext(); applicationContext.getBeanFactory().registerSingleton("modelValidator", validator); requestContext.getRootFlow().setApplicationContext(applicationContext); Model model = new Model(); ValidationHelper helper = new ValidationHelper(model, requestContext, eventId, modelName, null, new DefaultMessageCodesResolver(), null); ViewState state1 = new ViewState(requestContext.getRootFlow(), "state2", new StubViewFactory()); requestContext.setCurrentState(state1); helper.validate(); assertFalse(validator.state1Invoked); assertTrue(validator.fallbackInvoked); } public void testFallbackErrorsValidatorInvokedForSubclass() { ErrorsModelValidator validator = new ErrorsModelValidator(); StaticApplicationContext applicationContext = new StaticApplicationContext(); applicationContext.getBeanFactory().registerSingleton("modelValidator", validator); requestContext.getRootFlow().setApplicationContext(applicationContext); Model model = new Model(); ValidationHelper helper = new ValidationHelper(model, requestContext, eventId, modelName, null, new DefaultMessageCodesResolver(), null); ViewState state1 = new ViewState(requestContext.getRootFlow(), "state2", new StubViewFactory()); requestContext.setCurrentState(state1); helper.validate(); assertFalse(validator.state1Invoked); assertTrue(validator.fallbackInvoked); } public static class Model { private boolean state1Invoked; private boolean fallbackInvoked; public void validateState1(ValidationContext context) { state1Invoked = true; } public void validate(ValidationContext context) { fallbackInvoked = true; } } public static class ExtendedModel extends Model { } public static class ErrorsModel { private boolean state1Invoked; private boolean fallbackInvoked; public void validateState1(Errors errors) { state1Invoked = true; } public void validate(Errors errors) { fallbackInvoked = true; } } public static class LegacyModelValidator implements Validator { private boolean state1Invoked; private boolean fallbackInvoked; public void validateState1(Model model, Errors errors) { state1Invoked = true; } public void validate(Object object, Errors errors) { fallbackInvoked = true; } public boolean supports(Class clazz) { return true; } } public static class ModelValidator { private boolean state1Invoked; private boolean fallbackInvoked; public void validateState1(Model model, ValidationContext context) { state1Invoked = true; } public void validate(Model model, ValidationContext context) { fallbackInvoked = true; } } public static class ErrorsModelValidator { private boolean state1Invoked; private boolean fallbackInvoked; public void validateState1(Model model, Errors context) { state1Invoked = true; } public void validate(Model model, Errors context) { fallbackInvoked = true; } } } ././@LongLink0000000000000000000000000000023400000000000011564 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/test/java/org/springframework/webflow/validation/WebFlowMessageResolverTests.javalibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/test/java/org/springframew0000644000000000000000000000417211360615644030013 0ustar package org.springframework.webflow.validation; import junit.framework.TestCase; public class WebFlowMessageResolverTests extends TestCase { private WebFlowMessageCodesResolver messageCodesResolver = new WebFlowMessageCodesResolver(); public void testResolveObjectMessageCodes() { String[] codes = messageCodesResolver.resolveMessageCodes("required", "testBean"); assertEquals(2, codes.length); assertEquals("testBean.required", codes[0]); assertEquals("required", codes[1]); } public void testResolveObjectMessageCodesWithPrefix() { messageCodesResolver.setPrefix("validation."); String[] codes = messageCodesResolver.resolveMessageCodes("required", "testBean"); assertEquals(2, codes.length); assertEquals("validation.testBean.required", codes[0]); assertEquals("validation.required", codes[1]); } public void testResolveFieldMessageCodes() { String[] codes = messageCodesResolver.resolveMessageCodes("required", "testBean", "foo", String.class); assertEquals(4, codes.length); assertEquals("testBean.foo.required", codes[0]); assertEquals("foo.required", codes[1]); assertEquals("java.lang.String.required", codes[2]); assertEquals("required", codes[3]); } public void testResolveFieldMessageCodesKeyedField() { String[] codes = messageCodesResolver.resolveMessageCodes("required", "testBean", "foo[0]", String.class); assertEquals(6, codes.length); assertEquals("testBean.foo[0].required", codes[0]); assertEquals("testBean.foo.required", codes[1]); assertEquals("foo[0].required", codes[2]); assertEquals("foo.required", codes[3]); assertEquals("java.lang.String.required", codes[4]); assertEquals("required", codes[5]); } public void testResolveFieldMessageCodesWithPrefix() { messageCodesResolver.setPrefix("validation."); String[] codes = messageCodesResolver.resolveMessageCodes("required", "testBean", "foo", String.class); assertEquals(4, codes.length); assertEquals("validation.testBean.foo.required", codes[0]); assertEquals("validation.foo.required", codes[1]); assertEquals("validation.java.lang.String.required", codes[2]); assertEquals("validation.required", codes[3]); } } ././@LongLink0000000000000000000000000000023000000000000011560 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/test/java/org/springframework/webflow/validation/StubModelMessageContext.javalibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/test/java/org/springframew0000644000000000000000000000230011360615642030000 0ustar /* * Copyright 2008 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.springframework.webflow.validation; import org.springframework.binding.message.MessageBuilder; import org.springframework.binding.message.MessageContext; /** * Support class for {@link ValidationHelperTests} */ public class StubModelMessageContext { public void validateMockState(MessageContext context) { context.addMessage(new MessageBuilder().source("messagecontext").defaultText("").build()); } public void validateMockState(Object model, MessageContext context) { context.addMessage(new MessageBuilder().source("messagecontext-external").defaultText("").build()); } } ././@LongLink0000000000000000000000000000023300000000000011563 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/test/java/org/springframework/webflow/validation/StubModelValidationContext.javalibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/test/java/org/springframew0000644000000000000000000000240611360615636030012 0ustar /* * Copyright 2008 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.springframework.webflow.validation; import org.springframework.binding.message.MessageBuilder; import org.springframework.binding.validation.ValidationContext; /** * Support class for {@link ValidationHelperTest} */ public class StubModelValidationContext { public void validateMockState(ValidationContext context) { context.getMessageContext() .addMessage(new MessageBuilder().source("validationcontext").defaultText("").build()); } public void validateMockState(Object model, ValidationContext context) { context.getMessageContext().addMessage( new MessageBuilder().source("validationcontext-external").defaultText("").build()); } } ././@LongLink0000000000000000000000000000022000000000000011557 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/test/java/org/springframework/webflow/validation/StubModelErrors.javalibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/test/java/org/springframew0000644000000000000000000000163711360615636030017 0ustar /* * Copyright 2008 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.springframework.webflow.validation; import org.springframework.validation.Errors; /** * Support class for {@link ValidationHelperTest} */ public class StubModelErrors { public void validateMockState(Object model, Errors errors) { errors.rejectValue("errors-external", "test", "test"); } } ././@LongLink0000000000000000000000000000023200000000000011562 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/test/java/org/springframework/webflow/validation/StubModelErrorsOverridden.javalibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/test/java/org/springframew0000644000000000000000000000170311360615632030005 0ustar /* * Copyright 2008 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.springframework.webflow.validation; import org.springframework.validation.Errors; /** * Support class for {@link ValidationHelperTest} */ public class StubModelErrorsOverridden extends StubModelValidationContext { public void validateMockState(Object model, Errors errors) { errors.rejectValue("errors-context", "", ""); } } ././@LongLink0000000000000000000000000000017400000000000011567 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/test/java/org/springframework/webflow/definition/libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/test/java/org/springframew0000755000000000000000000000000011360615644030005 5ustar ././@LongLink0000000000000000000000000000020500000000000011562 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/test/java/org/springframework/webflow/definition/registry/libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/test/java/org/springframew0000755000000000000000000000000011360615644030005 5ustar ././@LongLink0000000000000000000000000000025100000000000011563 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/test/java/org/springframework/webflow/definition/registry/FlowDefinitionRegistryImplTests.javalibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/test/java/org/springframew0000644000000000000000000001346311360615644030016 0ustar /* * Copyright 2004-2008 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.springframework.webflow.definition.registry; import junit.framework.TestCase; import org.springframework.context.ApplicationContext; import org.springframework.webflow.core.collection.MutableAttributeMap; import org.springframework.webflow.definition.FlowDefinition; import org.springframework.webflow.definition.StateDefinition; /** * Unit tests for {@link FlowDefinitionRegistryImpl}. */ public class FlowDefinitionRegistryImplTests extends TestCase { private FlowDefinitionRegistryImpl registry = new FlowDefinitionRegistryImpl(); private FooFlow fooFlow; private BarFlow barFlow; protected void setUp() { fooFlow = new FooFlow(); barFlow = new BarFlow(); } public void testNoSuchFlowDefinition() { try { registry.getFlowDefinition("bogus"); fail("Should've bombed with NoSuchFlow"); } catch (NoSuchFlowDefinitionException e) { } } public void testNullFlowDefinitionId() { try { registry.getFlowDefinition(null); fail("Should have bombed with illegal argument"); } catch (IllegalArgumentException e) { } } public void testBlankFlowDefinitionId() { try { registry.getFlowDefinition(""); fail("Should have bombed with illegal argument"); } catch (IllegalArgumentException e) { } } public void testRegisterFlow() { registry.registerFlowDefinition(new StaticFlowDefinitionHolder(fooFlow)); assertTrue(registry.containsFlowDefinition("foo")); assertEquals(fooFlow, registry.getFlowDefinition("foo")); } public void testGetFlowIds() { registry.registerFlowDefinition(new StaticFlowDefinitionHolder(fooFlow)); registry.registerFlowDefinition(new StaticFlowDefinitionHolder(barFlow)); assertEquals("bar", registry.getFlowDefinitionIds()[0]); assertEquals("foo", registry.getFlowDefinitionIds()[1]); } public void testRegisterFlowSameIds() { registry.registerFlowDefinition(new StaticFlowDefinitionHolder(fooFlow)); FooFlow newFlow = new FooFlow(); registry.registerFlowDefinition(new StaticFlowDefinitionHolder(newFlow)); assertSame(newFlow, registry.getFlowDefinition("foo")); } public void testRegisterMultipleFlows() { registry.registerFlowDefinition(new StaticFlowDefinitionHolder(fooFlow)); registry.registerFlowDefinition(new StaticFlowDefinitionHolder(barFlow)); assertTrue(registry.containsFlowDefinition("foo")); assertTrue(registry.containsFlowDefinition("bar")); assertEquals(fooFlow, registry.getFlowDefinition("foo")); assertEquals(barFlow, registry.getFlowDefinition("bar")); } public void testParentHierarchy() { testRegisterMultipleFlows(); FlowDefinitionRegistryImpl child = new FlowDefinitionRegistryImpl(); child.setParent(registry); FooFlow fooFlow = new FooFlow(); child.registerFlowDefinition(new StaticFlowDefinitionHolder(fooFlow)); assertTrue(child.containsFlowDefinition("foo")); assertTrue(child.containsFlowDefinition("bar")); assertSame(fooFlow, child.getFlowDefinition("foo")); assertEquals(barFlow, child.getFlowDefinition("bar")); } public void testDestroy() { registry.registerFlowDefinition(new StaticFlowDefinitionHolder(fooFlow)); registry.registerFlowDefinition(new StaticFlowDefinitionHolder(barFlow)); assertEquals(fooFlow, registry.getFlowDefinition("foo")); assertEquals(barFlow, registry.getFlowDefinition("bar")); assertFalse(fooFlow.destroyed); assertFalse(barFlow.destroyed); registry.destroy(); assertTrue(fooFlow.destroyed); assertTrue(barFlow.destroyed); } private static class FooFlow implements FlowDefinition { private String id = "foo"; private boolean destroyed; public MutableAttributeMap getAttributes() { return null; } public String getCaption() { return null; } public String getDescription() { return null; } public String getId() { return id; } public StateDefinition getStartState() { return null; } public StateDefinition getState(String id) throws IllegalArgumentException { return null; } public String[] getPossibleOutcomes() { return null; } public ClassLoader getClassLoader() { return null; } public ApplicationContext getApplicationContext() { return null; } public boolean inDevelopment() { return false; } public void destroy() { destroyed = true; } } private static class BarFlow implements FlowDefinition { private String id = "bar"; private boolean destroyed; public MutableAttributeMap getAttributes() { return null; } public String getCaption() { return null; } public String getDescription() { return null; } public String getId() { return id; } public StateDefinition getStartState() { return null; } public StateDefinition getState(String id) throws IllegalArgumentException { return null; } public String[] getPossibleOutcomes() { return null; } public ClassLoader getClassLoader() { return null; } public ApplicationContext getApplicationContext() { return null; } public boolean inDevelopment() { return false; } public void destroy() { destroyed = true; } } }././@LongLink0000000000000000000000000000016500000000000011567 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/test/java/org/springframework/webflow/mvc/libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/test/java/org/springframew0000755000000000000000000000000011360615644030005 5ustar ././@LongLink0000000000000000000000000000017500000000000011570 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/test/java/org/springframework/webflow/mvc/portlet/libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/test/java/org/springframew0000755000000000000000000000000011360615646030007 5ustar ././@LongLink0000000000000000000000000000022500000000000011564 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/test/java/org/springframework/webflow/mvc/portlet/PortletMvcViewTests.javalibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/test/java/org/springframew0000644000000000000000000000645411360615644030020 0ustar package org.springframework.webflow.mvc.portlet; import javax.portlet.RenderRequest; import javax.portlet.RenderResponse; import junit.framework.TestCase; import org.easymock.EasyMock; import org.springframework.binding.expression.support.StaticExpression; import org.springframework.mock.web.MockHttpServletRequest; import org.springframework.mock.web.MockHttpServletResponse; import org.springframework.mock.web.MockServletContext; import org.springframework.mock.web.portlet.MockPortletContext; import org.springframework.mock.web.portlet.MockRenderRequest; import org.springframework.mock.web.portlet.MockRenderResponse; import org.springframework.web.servlet.ViewRendererServlet; import org.springframework.webflow.expression.DefaultExpressionParserFactory; import org.springframework.webflow.mvc.view.AbstractMvcView; import org.springframework.webflow.mvc.view.MvcViewTests.BindBean; import org.springframework.webflow.test.MockFlowExecutionKey; import org.springframework.webflow.test.MockRequestContext; import org.springframework.webflow.validation.WebFlowMessageCodesResolver; public class PortletMvcViewTests extends TestCase { public void testRender() throws Exception { RenderRequest request = new MockRenderRequest(); RenderResponse response = new MockRenderResponse(); MockRequestContext context = new MockRequestContext(); context.getMockExternalContext().setNativeContext(new MockPortletContext()); context.getMockExternalContext().setNativeRequest(request); context.getMockExternalContext().setNativeResponse(response); context.getMockFlowExecutionContext().setKey(new MockFlowExecutionKey("c1v1")); org.springframework.web.servlet.View mvcView = (org.springframework.web.servlet.View) EasyMock .createMock(org.springframework.web.servlet.View.class); AbstractMvcView view = new PortletMvcView(mvcView, context); view.render(); assertNotNull(request.getAttribute(ViewRendererServlet.VIEW_ATTRIBUTE)); assertNotNull(request.getAttribute(ViewRendererServlet.MODEL_ATTRIBUTE)); } public void testResumeEvent() throws Exception { MockRequestContext context = new MockRequestContext(); context.putRequestParameter("_eventId", "submit"); context.putRequestParameter("booleanProperty", "bogus"); context.putRequestParameter("_booleanProperty", "whatever"); BindBean bindBean = new BindBean(); StaticExpression modelObject = new StaticExpression(bindBean); modelObject.setExpressionString("bindBean"); context.getCurrentState().getAttributes().put("model", modelObject); context.getFlowScope().put("bindBean", bindBean); context.getMockExternalContext().setNativeContext(new MockServletContext()); context.getMockExternalContext().setNativeRequest(new MockHttpServletRequest()); context.getMockExternalContext().setNativeResponse(new MockHttpServletResponse()); context.getMockFlowExecutionContext().setKey(new MockFlowExecutionKey("c1v1")); org.springframework.web.servlet.View mvcView = (org.springframework.web.servlet.View) EasyMock .createMock(org.springframework.web.servlet.View.class); AbstractMvcView view = new PortletMvcView(mvcView, context); view.setExpressionParser(DefaultExpressionParserFactory.getExpressionParser()); view.setMessageCodesResolver(new WebFlowMessageCodesResolver()); view.processUserEvent(); assertEquals(true, bindBean.getBooleanProperty()); } } ././@LongLink0000000000000000000000000000023100000000000011561 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/test/java/org/springframework/webflow/mvc/portlet/FlowHandlerAdapterTests.javalibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/test/java/org/springframew0000644000000000000000000002225411360615646030016 0ustar package org.springframework.webflow.mvc.portlet; import javax.portlet.ActionRequest; import javax.portlet.ActionResponse; import javax.portlet.PortletRequest; import javax.portlet.PortletResponse; import javax.portlet.PortletSession; import javax.portlet.RenderRequest; import javax.portlet.RenderResponse; import junit.framework.TestCase; import org.easymock.EasyMock; import org.springframework.mock.web.portlet.MockActionRequest; import org.springframework.mock.web.portlet.MockActionResponse; import org.springframework.mock.web.portlet.MockPortletContext; import org.springframework.mock.web.portlet.MockRenderRequest; import org.springframework.mock.web.portlet.MockRenderResponse; import org.springframework.web.context.support.StaticWebApplicationContext; import org.springframework.web.portlet.ModelAndView; import org.springframework.webflow.context.portlet.PortletExternalContext; import org.springframework.webflow.core.FlowException; import org.springframework.webflow.core.collection.LocalAttributeMap; import org.springframework.webflow.core.collection.MutableAttributeMap; import org.springframework.webflow.execution.FlowExecutionOutcome; import org.springframework.webflow.execution.repository.NoSuchFlowExecutionException; import org.springframework.webflow.executor.FlowExecutionResult; import org.springframework.webflow.executor.FlowExecutor; import org.springframework.webflow.test.MockFlowExecutionKey; public class FlowHandlerAdapterTests extends TestCase { private FlowHandlerAdapter controller; private FlowExecutor flowExecutor; private MockPortletContext portletContext; private MockActionRequest actionRequest; private MockActionResponse actionResponse; private MockRenderRequest renderRequest; private MockRenderResponse renderResponse; private PortletExternalContext actionContext; private PortletExternalContext renderContext; private FlowHandler flowHandler; private LocalAttributeMap flowInput = null; private boolean handleException; private boolean handleExecutionOutcome; private boolean handleExecutionOutcomeCalled; protected void setUp() throws Exception { flowExecutor = (FlowExecutor) EasyMock.createMock(FlowExecutor.class); controller = new FlowHandlerAdapter() { protected PortletExternalContext createPortletExternalContext(PortletRequest request, PortletResponse response) { if (request instanceof ActionRequest) { return actionContext; } else { return renderContext; } } }; controller.setFlowExecutor(flowExecutor); controller.setApplicationContext(new StaticWebApplicationContext()); portletContext = new MockPortletContext(); controller.setPortletContext(portletContext); controller.afterPropertiesSet(); actionRequest = new MockActionRequest(); actionResponse = new MockActionResponse(); renderRequest = new MockRenderRequest(); renderResponse = new MockRenderResponse(); actionContext = new PortletExternalContext(portletContext, actionRequest, actionResponse, controller .getFlowUrlHandler()); renderContext = new PortletExternalContext(portletContext, renderRequest, renderResponse, controller .getFlowUrlHandler()); flowHandler = new FlowHandler() { public String getFlowId() { return "foo"; } public MutableAttributeMap createExecutionInputMap(RenderRequest request) { return null; } public boolean handleExecutionOutcome(FlowExecutionOutcome outcome, ActionRequest request, ActionResponse response) { handleExecutionOutcomeCalled = true; if (handleExecutionOutcome) { return true; } else { return false; } } public String handleException(FlowException e, RenderRequest request, RenderResponse response) { if (handleException) { return "error"; } else { return null; } } }; } public void testLaunchFlowRequest() throws Exception { renderRequest.setContextPath("/springtravel"); flowExecutor.launchExecution("foo", flowInput, renderContext); FlowExecutionResult result = FlowExecutionResult.createPausedResult("foo", "12345"); EasyMock.expectLastCall().andReturn(result); EasyMock.replay(new Object[] { flowExecutor }); ModelAndView mv = controller.handleRender(renderRequest, renderResponse, flowHandler); assertNull(mv); EasyMock.verify(new Object[] { flowExecutor }); } public void testResumeFlowActionRequest() throws Exception { actionRequest.setContextPath("/springtravel"); actionRequest.addParameter("execution", "12345"); flowExecutor.resumeExecution("12345", actionContext); FlowExecutionResult result = FlowExecutionResult.createPausedResult("foo", "123456"); EasyMock.expectLastCall().andReturn(result); EasyMock.replay(new Object[] { flowExecutor }); controller.handleAction(actionRequest, actionResponse, flowHandler); EasyMock.verify(new Object[] { flowExecutor }); } public void testResumeFlowRenderRequest() throws Exception { renderRequest.setContextPath("/springtravel"); renderRequest.addParameter("execution", "12345"); flowExecutor.resumeExecution("12345", renderContext); FlowExecutionResult result = FlowExecutionResult.createPausedResult("foo", "123456"); EasyMock.expectLastCall().andReturn(result); EasyMock.replay(new Object[] { flowExecutor }); controller.handleRender(renderRequest, renderResponse, flowHandler); EasyMock.verify(new Object[] { flowExecutor }); } public void testResumeFlowRenderRequestFromSession() throws Exception { renderRequest.setContextPath("/springtravel"); PortletSession session = renderRequest.getPortletSession(); session.setAttribute("execution", "12345"); flowExecutor.resumeExecution("12345", renderContext); FlowExecutionResult result = FlowExecutionResult.createPausedResult("foo", "123456"); EasyMock.expectLastCall().andReturn(result); EasyMock.replay(new Object[] { flowExecutor }); controller.handleRender(renderRequest, renderResponse, flowHandler); EasyMock.verify(new Object[] { flowExecutor }); } public void testDefaultHandleFlowException() throws Exception { PortletSession session = renderRequest.getPortletSession(); final FlowException flowException = new FlowException("Error") { }; session.setAttribute("actionRequestFlowException", flowException); try { controller.handleRender(renderRequest, renderResponse, flowHandler); fail("Should have thrown exception"); } catch (FlowException e) { assertEquals(flowException, e); } } public void testDefaultHandleNoSuchFlowExecutionException() throws Exception { actionRequest.setContextPath("/springtravel"); actionRequest.addParameter("execution", "12345"); flowExecutor.resumeExecution("12345", actionContext); FlowException flowException = new NoSuchFlowExecutionException(new MockFlowExecutionKey("12345"), null); EasyMock.expectLastCall().andThrow(flowException); EasyMock.replay(new Object[] { flowExecutor }); controller.handleAction(actionRequest, actionResponse, flowHandler); assertNotNull(actionRequest.getPortletSession().getAttribute("actionRequestFlowException")); EasyMock.verify(new Object[] { flowExecutor }); Exception e = (Exception) actionRequest.getPortletSession().getAttribute("actionRequestFlowException"); assertTrue(e instanceof NoSuchFlowExecutionException); } public void testHandleFlowOutcomeCustomFlowHandler() throws Exception { handleExecutionOutcome = true; actionRequest.setContextPath("/springtravel"); actionRequest.addParameter("execution", "12345"); LocalAttributeMap output = new LocalAttributeMap(); output.put("bar", "baz"); FlowExecutionOutcome outcome = new FlowExecutionOutcome("finish", output); flowExecutor.resumeExecution("12345", actionContext); EasyMock.expectLastCall().andReturn(FlowExecutionResult.createEndedResult("bar", outcome)); EasyMock.replay(new Object[] { flowExecutor }); controller.handleAction(actionRequest, actionResponse, flowHandler); assertTrue(handleExecutionOutcomeCalled); EasyMock.verify(new Object[] { flowExecutor }); } public void testHandleFlowExceptionCustomFlowHandler() throws Exception { handleException = true; final FlowException flowException = new FlowException("Error") { }; renderRequest.setContextPath("/springtravel"); flowExecutor.launchExecution("foo", flowInput, renderContext); EasyMock.expectLastCall().andThrow(flowException); EasyMock.replay(new Object[] { flowExecutor }); ModelAndView mv = controller.handleRender(renderRequest, renderResponse, flowHandler); assertNotNull(mv); assertEquals("error", mv.getViewName()); EasyMock.verify(new Object[] { flowExecutor }); } public void testHandleFlowExceptionFromSession() throws Exception { handleException = true; PortletSession session = renderRequest.getPortletSession(); final FlowException flowException = new FlowException("Error") { }; session.setAttribute("actionRequestFlowException", flowException); ModelAndView mv = controller.handleRender(renderRequest, renderResponse, flowHandler); assertEquals("error", mv.getViewName()); } public void testPopulateConveniencePortletProperties() { controller.populateConveniencePortletProperties(renderRequest); assertEquals(renderRequest.getPortletMode().toString(), renderRequest.getAttribute("portletMode")); assertEquals(renderRequest.getWindowState().toString(), renderRequest.getAttribute("portletWindowState")); } } ././@LongLink0000000000000000000000000000017500000000000011570 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/test/java/org/springframework/webflow/mvc/servlet/libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/test/java/org/springframew0000755000000000000000000000000011360615646030007 5ustar ././@LongLink0000000000000000000000000000023100000000000011561 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/test/java/org/springframework/webflow/mvc/servlet/FlowHandlerMappingTests.javalibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/test/java/org/springframew0000644000000000000000000001321411360615632030005 0ustar package org.springframework.webflow.mvc.servlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import junit.framework.TestCase; import org.springframework.context.ApplicationContext; import org.springframework.mock.web.MockHttpServletRequest; import org.springframework.mock.web.MockServletContext; import org.springframework.web.context.support.StaticWebApplicationContext; import org.springframework.web.servlet.HandlerExecutionChain; import org.springframework.webflow.core.FlowException; import org.springframework.webflow.core.collection.MutableAttributeMap; import org.springframework.webflow.definition.FlowDefinition; import org.springframework.webflow.definition.StateDefinition; import org.springframework.webflow.definition.registry.FlowDefinitionRegistryImpl; import org.springframework.webflow.execution.FlowExecutionOutcome; public class FlowHandlerMappingTests extends TestCase { private FlowHandlerMapping mapping = new FlowHandlerMapping(); public void setUp() { FlowDefinitionRegistryImpl registry = new FlowDefinitionRegistryImpl(); registry.registerFlowDefinition(new FlowDefinitionImpl()); registry.registerFlowDefinition(new FlowDefinitionImpl("foo/flow2")); StaticWebApplicationContext context = new StaticWebApplicationContext(); context.getBeanFactory().registerSingleton("foo/flow2", new CustomFlowHandler()); mapping.setFlowRegistry(registry); mapping.setServletContext(new MockServletContext()); mapping.setApplicationContext(context); } public void testGetHandler() throws Exception { MockHttpServletRequest request = new MockHttpServletRequest(); request.setContextPath("/springtravel"); request.setServletPath("/app"); request.setPathInfo("/flow"); request.setRequestURI("/springtravel/app/flow"); request.setMethod("GET"); HandlerExecutionChain chain = mapping.getHandler(request); FlowHandler handler = (FlowHandler) chain.getHandler(); assertEquals("flow", handler.getFlowId()); } public void testGetHandlerCustomFlowHandler() throws Exception { MockHttpServletRequest request = new MockHttpServletRequest(); request.setContextPath("/springtravel"); request.setServletPath("/app"); request.setPathInfo("/foo/flow2"); request.setRequestURI("/springtravel/app/foo/flow2"); request.setMethod("GET"); HandlerExecutionChain chain = mapping.getHandler(request); assertNotNull(chain); FlowHandler handler = (FlowHandler) chain.getHandler(); assertEquals("foo/flow2", handler.getFlowId()); assertTrue(handler instanceof CustomFlowHandler); } public void testGetHandlerNoHandler() throws Exception { MockHttpServletRequest request = new MockHttpServletRequest(); request.setContextPath("/springtravel"); request.setServletPath("/app"); request.setPathInfo("/bogus"); request.setRequestURI("/springtravel/app/bogus"); request.setMethod("GET"); HandlerExecutionChain chain = mapping.getHandler(request); assertNull(chain); } public void testGetHandlerNullFlowId() throws Exception { MockHttpServletRequest request = new MockHttpServletRequest(); HandlerExecutionChain chain = mapping.getHandler(request); assertNull(chain); } private static class FlowDefinitionImpl implements FlowDefinition { private String flowId = "flow"; public FlowDefinitionImpl() { } public FlowDefinitionImpl(String flowId) { super(); this.flowId = flowId; } public ApplicationContext getApplicationContext() { // TODO Auto-generated method stub throw new UnsupportedOperationException("Auto-generated method stub"); } public ClassLoader getClassLoader() { // TODO Auto-generated method stub throw new UnsupportedOperationException("Auto-generated method stub"); } public String getId() { return flowId; } public String[] getPossibleOutcomes() { // TODO Auto-generated method stub throw new UnsupportedOperationException("Auto-generated method stub"); } public StateDefinition getStartState() { // TODO Auto-generated method stub throw new UnsupportedOperationException("Auto-generated method stub"); } public StateDefinition getState(String id) throws IllegalArgumentException { // TODO Auto-generated method stub throw new UnsupportedOperationException("Auto-generated method stub"); } public boolean inDevelopment() { // TODO Auto-generated method stub throw new UnsupportedOperationException("Auto-generated method stub"); } public MutableAttributeMap getAttributes() { // TODO Auto-generated method stub throw new UnsupportedOperationException("Auto-generated method stub"); } public String getCaption() { // TODO Auto-generated method stub throw new UnsupportedOperationException("Auto-generated method stub"); } public String getDescription() { // TODO Auto-generated method stub throw new UnsupportedOperationException("Auto-generated method stub"); } public void destroy() { } } public static class CustomFlowHandler implements FlowHandler { public MutableAttributeMap createExecutionInputMap(HttpServletRequest request) { // TODO Auto-generated method stub throw new UnsupportedOperationException("Auto-generated method stub"); } public String getFlowId() { return "foo/flow2"; } public String handleException(FlowException e, HttpServletRequest request, HttpServletResponse response) { // TODO Auto-generated method stub throw new UnsupportedOperationException("Auto-generated method stub"); } public String handleExecutionOutcome(FlowExecutionOutcome outcome, HttpServletRequest request, HttpServletResponse response) { // TODO Auto-generated method stub throw new UnsupportedOperationException("Auto-generated method stub"); } } } ././@LongLink0000000000000000000000000000022500000000000011564 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/test/java/org/springframework/webflow/mvc/servlet/ServletMvcViewTests.javalibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/test/java/org/springframew0000644000000000000000000000645011360615646030016 0ustar package org.springframework.webflow.mvc.servlet; import java.security.Principal; import java.util.Calendar; import java.util.Date; import java.util.Map; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import junit.framework.TestCase; import org.springframework.mock.web.MockHttpServletRequest; import org.springframework.mock.web.MockHttpServletResponse; import org.springframework.mock.web.MockServletContext; import org.springframework.validation.BindingResult; import org.springframework.web.servlet.View; import org.springframework.webflow.mvc.view.AbstractMvcView; import org.springframework.webflow.test.MockFlowExecutionKey; import org.springframework.webflow.test.MockRequestContext; public class ServletMvcViewTests extends TestCase { private boolean renderCalled; private Map model; public void testRender() throws Exception { MockRequestContext context = new MockRequestContext(); context.getRequestScope().put("foo", "bar"); context.getFlowScope().put("bar", "baz"); context.getFlowScope().put("bindBean", new BindBean()); context.getConversationScope().put("baz", "boop"); context.getFlashScope().put("boop", "bing"); context.getMockExternalContext().setCurrentUser("Keith"); context.getMockExternalContext().setNativeContext(new MockServletContext()); context.getMockExternalContext().setNativeRequest(new MockHttpServletRequest()); context.getMockExternalContext().setNativeResponse(new MockHttpServletResponse()); context.getMockFlowExecutionContext().setKey(new MockFlowExecutionKey("c1v1")); org.springframework.web.servlet.View mvcView = new MockView(); AbstractMvcView view = new ServletMvcView(mvcView, context); view.render(); assertTrue(renderCalled); assertEquals("bar", model.get("foo")); assertEquals("baz", model.get("bar")); assertEquals("boop", model.get("baz")); assertEquals("bing", model.get("boop")); assertEquals("c1v1", model.get("flowExecutionKey")); assertEquals("Keith", ((Principal) model.get("currentUser")).getName()); assertEquals(context, model.get("flowRequestContext")); assertEquals("/mockFlow?execution=c1v1", model.get("flowExecutionUrl")); assertNull(model.get(BindingResult.MODEL_KEY_PREFIX + "bindBean")); } private class MockView implements View { public String getContentType() { return "text/html"; } public void render(Map model, HttpServletRequest request, HttpServletResponse response) throws Exception { renderCalled = true; ServletMvcViewTests.this.model = model; } } public static class BindBean { private String stringProperty; private Integer integerProperty = new Integer(3); private Date dateProperty; public BindBean() { Calendar cal = Calendar.getInstance(); cal.clear(); cal.set(Calendar.YEAR, 2008); dateProperty = cal.getTime(); } public String getStringProperty() { return stringProperty; } public void setStringProperty(String stringProperty) { this.stringProperty = stringProperty; } public Integer getIntegerProperty() { return integerProperty; } public void setIntegerProperty(Integer integerProperty) { this.integerProperty = integerProperty; } public Date getDateProperty() { return dateProperty; } public void setDateProperty(Date dateProperty) { this.dateProperty = dateProperty; } } } ././@LongLink0000000000000000000000000000023100000000000011561 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/test/java/org/springframework/webflow/mvc/servlet/FlowHandlerAdapterTests.javalibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/test/java/org/springframew0000644000000000000000000005211611360615634030013 0ustar package org.springframework.webflow.mvc.servlet; import java.util.HashMap; import java.util.Map; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import junit.framework.TestCase; import org.easymock.EasyMock; import org.springframework.mock.web.MockHttpServletRequest; import org.springframework.mock.web.MockHttpServletResponse; import org.springframework.mock.web.MockServletContext; import org.springframework.web.context.support.StaticWebApplicationContext; import org.springframework.web.servlet.ModelAndView; import org.springframework.webflow.context.servlet.ServletExternalContext; import org.springframework.webflow.core.FlowException; import org.springframework.webflow.core.collection.LocalAttributeMap; import org.springframework.webflow.core.collection.MutableAttributeMap; import org.springframework.webflow.execution.FlowExecutionOutcome; import org.springframework.webflow.execution.repository.NoSuchFlowExecutionException; import org.springframework.webflow.executor.FlowExecutionResult; import org.springframework.webflow.executor.FlowExecutor; import org.springframework.webflow.test.MockFlowExecutionKey; public class FlowHandlerAdapterTests extends TestCase { private FlowHandlerAdapter flowHandlerAdapter; private FlowExecutor flowExecutor; private MockHttpServletRequest request; private MockHttpServletResponse response; private ServletExternalContext context; private FlowHandler flowHandler; private LocalAttributeMap flowInput = new LocalAttributeMap(); private boolean handleException; private boolean handleExecutionOutcome; protected void setUp() throws Exception { flowExecutor = (FlowExecutor) EasyMock.createMock(FlowExecutor.class); flowHandlerAdapter = new FlowHandlerAdapter() { protected ServletExternalContext createServletExternalContext(HttpServletRequest request, HttpServletResponse response) { return context; } }; flowHandlerAdapter.setFlowExecutor(flowExecutor); MockServletContext servletContext = new MockServletContext(); StaticWebApplicationContext applicationContext = new StaticWebApplicationContext(); applicationContext.setServletContext(servletContext); flowHandlerAdapter.setApplicationContext(applicationContext); flowHandlerAdapter.afterPropertiesSet(); flowHandler = new FlowHandler() { public MutableAttributeMap createExecutionInputMap(HttpServletRequest request) { assertEquals(FlowHandlerAdapterTests.this.request, request); return flowInput; } public String getFlowId() { return "foo"; } public String handleExecutionOutcome(FlowExecutionOutcome outcome, HttpServletRequest request, HttpServletResponse response) { if (handleExecutionOutcome) { return "/home"; } else { return null; } } public String handleException(FlowException e, HttpServletRequest request, HttpServletResponse response) { if (handleException) { return "error"; } else { return null; } } }; request = new MockHttpServletRequest(); response = new MockHttpServletResponse(); context = new ServletExternalContext(servletContext, request, response, flowHandlerAdapter.getFlowUrlHandler()); } public void testLaunchFlowRequest() throws Exception { request.setContextPath("/springtravel"); request.setServletPath("/app"); request.setPathInfo("/whatever"); request.setRequestURI("/springtravel/app/whatever"); request.setMethod("GET"); flowExecutor.launchExecution("foo", flowInput, context); FlowExecutionResult result = FlowExecutionResult.createPausedResult("foo", "12345"); EasyMock.expectLastCall().andReturn(result); EasyMock.replay(new Object[] { flowExecutor }); flowHandlerAdapter.handle(request, response, flowHandler); EasyMock.verify(new Object[] { flowExecutor }); } public void testLaunchFlowRequestEndsAfterProcessing() throws Exception { request.setContextPath("/springtravel"); request.setServletPath("/app"); request.setPathInfo("/whatever"); request.setRequestURI("/springtravel/app/whatever"); request.setMethod("GET"); Map parameters = new HashMap(); request.setParameters(parameters); flowExecutor.launchExecution("foo", flowInput, context); LocalAttributeMap output = new LocalAttributeMap(); output.put("bar", "baz"); FlowExecutionOutcome outcome = new FlowExecutionOutcome("finish", output); FlowExecutionResult result = FlowExecutionResult.createEndedResult("foo", outcome); EasyMock.expectLastCall().andReturn(result); EasyMock.replay(new Object[] { flowExecutor }); flowHandlerAdapter.handle(request, response, flowHandler); assertEquals("/springtravel/app/foo?bar=baz", response.getRedirectedUrl()); EasyMock.verify(new Object[] { flowExecutor }); } public void testLaunchFlowRequestEndsAfterProcessingAjaxRequest() throws Exception { request.setContextPath("/springtravel"); request.setServletPath("/app"); request.setPathInfo("/whatever"); request.setRequestURI("/springtravel/app/whatever"); request.setMethod("GET"); Map parameters = new HashMap(); request.setParameters(parameters); context.setAjaxRequest(true); flowExecutor.launchExecution("foo", flowInput, context); LocalAttributeMap output = new LocalAttributeMap(); output.put("bar", "baz"); FlowExecutionOutcome outcome = new FlowExecutionOutcome("finish", output); FlowExecutionResult result = FlowExecutionResult.createEndedResult("foo", outcome); EasyMock.expectLastCall().andReturn(result); EasyMock.replay(new Object[] { flowExecutor }); request.addHeader("Accept", "text/html;type=ajax"); flowHandlerAdapter.handle(request, response, flowHandler); assertEquals("/springtravel/app/foo?bar=baz", response.getHeader("Spring-Redirect-URL")); EasyMock.verify(new Object[] { flowExecutor }); } public void testResumeFlowRequest() throws Exception { request.setContextPath("/springtravel"); request.setServletPath("/app"); request.setPathInfo("/foo"); request.setRequestURI("/springtravel/app/foo"); request.setMethod("POST"); request.addParameter("execution", "12345"); flowExecutor.resumeExecution("12345", context); FlowExecutionResult result = FlowExecutionResult.createPausedResult("foo", "123456"); EasyMock.expectLastCall().andReturn(result); EasyMock.replay(new Object[] { flowExecutor }); flowHandlerAdapter.handle(request, response, flowHandler); EasyMock.verify(new Object[] { flowExecutor }); } public void testResumeFlowRequestEndsAfterProcessing() throws Exception { request.setContextPath("/springtravel"); request.setServletPath("/app"); request.setPathInfo("/foo"); request.setRequestURI("/springtravel/app/foo"); request.setMethod("POST"); request.addParameter("execution", "12345"); Map parameters = new HashMap(); request.setParameters(parameters); flowExecutor.resumeExecution("12345", context); LocalAttributeMap output = new LocalAttributeMap(); output.put("bar", "baz"); FlowExecutionOutcome outcome = new FlowExecutionOutcome("finish", output); FlowExecutionResult result = FlowExecutionResult.createEndedResult("foo", outcome); EasyMock.expectLastCall().andReturn(result); EasyMock.replay(new Object[] { flowExecutor }); ModelAndView mv = flowHandlerAdapter.handle(request, response, flowHandler); assertNull(mv); assertEquals("/springtravel/app/foo?bar=baz", response.getRedirectedUrl()); EasyMock.verify(new Object[] { flowExecutor }); } public void testResumeFlowRequestEndsAfterProcessingFlowCommittedResponse() throws Exception { request.setContextPath("/springtravel"); request.setServletPath("/app"); request.setPathInfo("/foo"); request.setRequestURI("/springtravel/app/foo"); request.setMethod("POST"); request.addParameter("execution", "12345"); Map parameters = new HashMap(); request.setParameters(parameters); flowExecutor.resumeExecution("12345", context); LocalAttributeMap output = new LocalAttributeMap(); output.put("bar", "baz"); context.recordResponseComplete(); FlowExecutionOutcome outcome = new FlowExecutionOutcome("finish", output); FlowExecutionResult result = FlowExecutionResult.createEndedResult("foo", outcome); EasyMock.expectLastCall().andReturn(result); EasyMock.replay(new Object[] { flowExecutor }); ModelAndView mv = flowHandlerAdapter.handle(request, response, flowHandler); assertNull(mv); assertEquals(null, response.getRedirectedUrl()); EasyMock.verify(new Object[] { flowExecutor }); } public void testLaunchFlowWithExecutionRedirect() throws Exception { request.setContextPath("/springtravel"); request.setServletPath("/app"); request.setPathInfo("/foo"); request.setRequestURI("/springtravel/app/foo"); request.setMethod("GET"); context.requestFlowExecutionRedirect(); flowExecutor.launchExecution("foo", flowInput, context); FlowExecutionResult result = FlowExecutionResult.createPausedResult("foo", "12345"); EasyMock.expectLastCall().andReturn(result); EasyMock.replay(new Object[] { flowExecutor }); flowHandlerAdapter.handle(request, response, flowHandler); EasyMock.verify(new Object[] { flowExecutor }); assertEquals("/springtravel/app/foo?execution=12345", response.getRedirectedUrl()); EasyMock.verify(new Object[] { flowExecutor }); } public void testLaunchFlowWithDefinitionRedirect() throws Exception { request.setContextPath("/springtravel"); request.setServletPath("/app"); request.setPathInfo("/foo"); request.setRequestURI("/springtravel/app/foo"); request.setMethod("GET"); Map parameters = new HashMap(); request.setParameters(parameters); LocalAttributeMap input = new LocalAttributeMap(); input.put("baz", "boop"); context.requestFlowDefinitionRedirect("bar", input); flowExecutor.launchExecution("foo", flowInput, context); LocalAttributeMap output = new LocalAttributeMap(); output.put("bar", "baz"); FlowExecutionOutcome outcome = new FlowExecutionOutcome("finish", output); FlowExecutionResult result = FlowExecutionResult.createEndedResult("foo", outcome); EasyMock.expectLastCall().andReturn(result); EasyMock.replay(new Object[] { flowExecutor }); ModelAndView mv = flowHandlerAdapter.handle(request, response, flowHandler); assertNull(mv); EasyMock.verify(new Object[] { flowExecutor }); assertEquals("/springtravel/app/bar?baz=boop", response.getRedirectedUrl()); EasyMock.verify(new Object[] { flowExecutor }); } public void testLaunchFlowWithExternalHttpRedirect() throws Exception { request.setContextPath("/springtravel"); request.setServletPath("/app"); request.setPathInfo("/foo"); request.setRequestURI("/springtravel/app/foo"); request.setMethod("GET"); context.requestExternalRedirect("http://www.paypal.com"); flowExecutor.launchExecution("foo", flowInput, context); FlowExecutionResult result = FlowExecutionResult.createPausedResult("foo", "12345"); EasyMock.expectLastCall().andReturn(result); EasyMock.replay(new Object[] { flowExecutor }); flowHandlerAdapter.handle(request, response, flowHandler); EasyMock.verify(new Object[] { flowExecutor }); assertEquals("http://www.paypal.com", response.getRedirectedUrl()); EasyMock.verify(new Object[] { flowExecutor }); } public void testLaunchFlowWithExternalHttpsRedirect() throws Exception { request.setContextPath("/springtravel"); request.setServletPath("/app"); request.setPathInfo("/foo"); request.setRequestURI("/springtravel/app/foo"); request.setMethod("GET"); context.requestExternalRedirect("https://www.paypal.com"); flowExecutor.launchExecution("foo", flowInput, context); FlowExecutionResult result = FlowExecutionResult.createPausedResult("foo", "12345"); EasyMock.expectLastCall().andReturn(result); EasyMock.replay(new Object[] { flowExecutor }); flowHandlerAdapter.handle(request, response, flowHandler); EasyMock.verify(new Object[] { flowExecutor }); assertEquals("https://www.paypal.com", response.getRedirectedUrl()); EasyMock.verify(new Object[] { flowExecutor }); } public void testLaunchFlowWithExternalRedirectServletRelative() throws Exception { request.setContextPath("/springtravel"); request.setServletPath("/app"); request.setPathInfo("/foo"); request.setRequestURI("/springtravel/app/foo"); request.setMethod("GET"); context.requestExternalRedirect("servletRelative:bar"); flowExecutor.launchExecution("foo", flowInput, context); FlowExecutionResult result = FlowExecutionResult.createPausedResult("foo", "12345"); EasyMock.expectLastCall().andReturn(result); EasyMock.replay(new Object[] { flowExecutor }); flowHandlerAdapter.handle(request, response, flowHandler); EasyMock.verify(new Object[] { flowExecutor }); assertEquals("/springtravel/app/bar", response.getRedirectedUrl()); EasyMock.verify(new Object[] { flowExecutor }); } public void testLaunchFlowWithExternalRedirectServletRelativeWithSlash() throws Exception { request.setContextPath("/springtravel"); request.setServletPath("/app"); request.setPathInfo("/foo"); request.setRequestURI("/springtravel/app/foo"); request.setMethod("GET"); context.requestExternalRedirect("servletRelative:/bar"); flowExecutor.launchExecution("foo", flowInput, context); FlowExecutionResult result = FlowExecutionResult.createPausedResult("foo", "12345"); EasyMock.expectLastCall().andReturn(result); EasyMock.replay(new Object[] { flowExecutor }); flowHandlerAdapter.handle(request, response, flowHandler); EasyMock.verify(new Object[] { flowExecutor }); assertEquals("/springtravel/app/bar", response.getRedirectedUrl()); EasyMock.verify(new Object[] { flowExecutor }); } public void testLaunchFlowWithExternalRedirectContextRelative() throws Exception { request.setContextPath("/springtravel"); request.setServletPath("/app"); request.setPathInfo("/foo"); request.setRequestURI("/springtravel/app/foo"); request.setMethod("GET"); context.requestExternalRedirect("contextRelative:bar"); flowExecutor.launchExecution("foo", flowInput, context); FlowExecutionResult result = FlowExecutionResult.createPausedResult("foo", "12345"); EasyMock.expectLastCall().andReturn(result); EasyMock.replay(new Object[] { flowExecutor }); flowHandlerAdapter.handle(request, response, flowHandler); EasyMock.verify(new Object[] { flowExecutor }); assertEquals("/springtravel/bar", response.getRedirectedUrl()); EasyMock.verify(new Object[] { flowExecutor }); } public void testLaunchFlowWithExternalRedirectContextRelativeWithSlash() throws Exception { request.setContextPath("/springtravel"); request.setServletPath("/app"); request.setPathInfo("/foo"); request.setRequestURI("/springtravel/app/foo"); request.setMethod("GET"); context.requestExternalRedirect("contextRelative:/bar"); flowExecutor.launchExecution("foo", flowInput, context); FlowExecutionResult result = FlowExecutionResult.createPausedResult("foo", "12345"); EasyMock.expectLastCall().andReturn(result); EasyMock.replay(new Object[] { flowExecutor }); flowHandlerAdapter.handle(request, response, flowHandler); EasyMock.verify(new Object[] { flowExecutor }); assertEquals("/springtravel/bar", response.getRedirectedUrl()); EasyMock.verify(new Object[] { flowExecutor }); } public void testLaunchFlowWithExternalRedirectServerRelative() throws Exception { request.setContextPath("/springtravel"); request.setServletPath("/app"); request.setPathInfo("/foo"); request.setRequestURI("/springtravel/app/foo"); request.setMethod("GET"); context.requestExternalRedirect("serverRelative:bar"); flowExecutor.launchExecution("foo", flowInput, context); FlowExecutionResult result = FlowExecutionResult.createPausedResult("foo", "12345"); EasyMock.expectLastCall().andReturn(result); EasyMock.replay(new Object[] { flowExecutor }); flowHandlerAdapter.handle(request, response, flowHandler); EasyMock.verify(new Object[] { flowExecutor }); assertEquals("/bar", response.getRedirectedUrl()); EasyMock.verify(new Object[] { flowExecutor }); } public void testLaunchFlowWithExternalRedirectServerRelativeWithSlash() throws Exception { request.setContextPath("/springtravel"); request.setServletPath("/app"); request.setPathInfo("/foo"); request.setRequestURI("/springtravel/app/foo"); request.setMethod("GET"); context.requestExternalRedirect("serverRelative:/bar"); flowExecutor.launchExecution("foo", flowInput, context); FlowExecutionResult result = FlowExecutionResult.createPausedResult("foo", "12345"); EasyMock.expectLastCall().andReturn(result); EasyMock.replay(new Object[] { flowExecutor }); flowHandlerAdapter.handle(request, response, flowHandler); EasyMock.verify(new Object[] { flowExecutor }); assertEquals("/bar", response.getRedirectedUrl()); EasyMock.verify(new Object[] { flowExecutor }); } public void testLaunchFlowWithExternalRedirectNotHttp10Compatible() throws Exception { flowHandlerAdapter.setRedirectHttp10Compatible(false); request.setContextPath("/springtravel"); request.setServletPath("/app"); request.setPathInfo("/foo"); request.setRequestURI("/springtravel/app/foo"); request.setMethod("GET"); context.requestExternalRedirect("serverRelative:/bar"); flowExecutor.launchExecution("foo", flowInput, context); FlowExecutionResult result = FlowExecutionResult.createPausedResult("foo", "12345"); EasyMock.expectLastCall().andReturn(result); EasyMock.replay(new Object[] { flowExecutor }); flowHandlerAdapter.handle(request, response, flowHandler); EasyMock.verify(new Object[] { flowExecutor }); assertEquals(303, response.getStatus()); assertEquals("/bar", response.getHeader("Location")); EasyMock.verify(new Object[] { flowExecutor }); } public void testDefaultHandleFlowException() throws Exception { request.setContextPath("/springtravel"); request.setServletPath("/app"); request.setPathInfo("/foo"); request.setRequestURI("/springtravel/app/foo"); request.setMethod("GET"); Map parameters = new HashMap(); request.setParameters(parameters); flowExecutor.launchExecution("foo", flowInput, context); FlowException flowException = new FlowException("Error") { }; EasyMock.expectLastCall().andThrow(flowException); EasyMock.replay(new Object[] { flowExecutor }); try { flowHandlerAdapter.handle(request, response, flowHandler); fail("Should have thrown exception"); } catch (FlowException e) { assertEquals(flowException, e); } EasyMock.verify(new Object[] { flowExecutor }); } public void testDefaultHandleNoSuchFlowExecutionException() throws Exception { request.setContextPath("/springtravel"); request.setServletPath("/app"); request.setPathInfo("/foo"); request.setRequestURI("/springtravel/app/foo"); request.setMethod("GET"); request.addParameter("execution", "12345"); flowExecutor.resumeExecution("12345", context); FlowException flowException = new NoSuchFlowExecutionException(new MockFlowExecutionKey("12345"), null); EasyMock.expectLastCall().andThrow(flowException); EasyMock.replay(new Object[] { flowExecutor }); flowHandlerAdapter.handle(request, response, flowHandler); assertEquals("/springtravel/app/foo", response.getRedirectedUrl()); EasyMock.verify(new Object[] { flowExecutor }); } public void testDefaultHandleNoSuchFlowExecutionExceptionAjaxRequest() throws Exception { request.setContextPath("/springtravel"); request.setServletPath("/app"); request.setPathInfo("/foo"); request.setRequestURI("/springtravel/app/foo"); request.setMethod("GET"); request.addParameter("execution", "12345"); flowExecutor.resumeExecution("12345", context); FlowException flowException = new NoSuchFlowExecutionException(new MockFlowExecutionKey("12345"), null); EasyMock.expectLastCall().andThrow(flowException); EasyMock.replay(new Object[] { flowExecutor }); context.setAjaxRequest(true); request.addHeader("Accept", "text/html;type=ajax"); flowHandlerAdapter.handle(request, response, flowHandler); assertEquals("/springtravel/app/foo", response.getHeader("Spring-Redirect-URL")); EasyMock.verify(new Object[] { flowExecutor }); } public void testHandleFlowOutcomeCustomFlowHandler() throws Exception { handleExecutionOutcome = true; request.setContextPath("/springtravel"); request.setServletPath("/app"); request.setPathInfo("/foo"); request.setRequestURI("/springtravel/app/foo"); request.setMethod("GET"); flowExecutor.launchExecution("foo", flowInput, context); LocalAttributeMap output = new LocalAttributeMap(); output.put("bar", "baz"); FlowExecutionOutcome outcome = new FlowExecutionOutcome("finish", output); FlowExecutionResult result = FlowExecutionResult.createEndedResult("foo", outcome); EasyMock.expectLastCall().andReturn(result); EasyMock.replay(new Object[] { flowExecutor }); flowHandlerAdapter.handle(request, response, flowHandler); EasyMock.verify(new Object[] { flowExecutor }); } public void testHandleFlowExceptionCustomFlowHandler() throws Exception { handleException = true; final FlowException flowException = new FlowException("Error") { }; request.setContextPath("/springtravel"); request.setServletPath("/app"); request.setPathInfo("/foo"); request.setRequestURI("/springtravel/app/foo"); request.setMethod("GET"); flowExecutor.launchExecution("foo", flowInput, context); EasyMock.expectLastCall().andThrow(flowException); EasyMock.replay(new Object[] { flowExecutor }); flowHandlerAdapter.handle(request, response, flowHandler); EasyMock.verify(new Object[] { flowExecutor }); } } ././@LongLink0000000000000000000000000000022500000000000011564 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/test/java/org/springframework/webflow/mvc/servlet/FlowControllerTests.javalibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/test/java/org/springframew0000644000000000000000000003734411360615644030022 0ustar package org.springframework.webflow.mvc.servlet; import java.util.HashMap; import java.util.Map; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import junit.framework.TestCase; import org.easymock.EasyMock; import org.springframework.js.ajax.SpringJavascriptAjaxHandler; import org.springframework.mock.web.MockHttpServletRequest; import org.springframework.mock.web.MockHttpServletResponse; import org.springframework.mock.web.MockServletContext; import org.springframework.web.context.support.StaticWebApplicationContext; import org.springframework.web.servlet.ModelAndView; import org.springframework.webflow.context.servlet.ServletExternalContext; import org.springframework.webflow.core.FlowException; import org.springframework.webflow.core.collection.LocalAttributeMap; import org.springframework.webflow.core.collection.MutableAttributeMap; import org.springframework.webflow.execution.FlowExecutionOutcome; import org.springframework.webflow.execution.repository.NoSuchFlowExecutionException; import org.springframework.webflow.executor.FlowExecutionResult; import org.springframework.webflow.executor.FlowExecutor; import org.springframework.webflow.test.MockFlowExecutionKey; public class FlowControllerTests extends TestCase { private FlowController controller; private FlowExecutor executor; private MockHttpServletRequest request; private MockHttpServletResponse response; private ServletExternalContext context; protected void setUp() throws Exception { executor = (FlowExecutor) EasyMock.createMock(FlowExecutor.class); controller = new FlowController(); FlowHandlerAdapter handlerAdapter = new FlowHandlerAdapter() { protected ServletExternalContext createServletExternalContext(HttpServletRequest request, HttpServletResponse response) { return context; } }; handlerAdapter.setFlowExecutor(executor); StaticWebApplicationContext applicationContext = new StaticWebApplicationContext(); MockServletContext servletContext = new MockServletContext(); applicationContext.setServletContext(servletContext); handlerAdapter.setApplicationContext(applicationContext); handlerAdapter.afterPropertiesSet(); controller.setFlowHandlerAdapter(handlerAdapter); controller.setApplicationContext(new StaticWebApplicationContext()); controller.afterPropertiesSet(); request = new MockHttpServletRequest(); response = new MockHttpServletResponse(); context = new ServletExternalContext(servletContext, request, response, controller.getFlowUrlHandler()); } public void testLaunchFlowRequest() throws Exception { request.setContextPath("/springtravel"); request.setServletPath("/app"); request.setPathInfo("/foo"); request.setRequestURI("/springtravel/app/foo"); request.setMethod("GET"); executor.launchExecution("foo", null, context); FlowExecutionResult result = FlowExecutionResult.createPausedResult("foo", "12345"); EasyMock.expectLastCall().andReturn(result); EasyMock.replay(new Object[] { executor }); ModelAndView mv = controller.handleRequest(request, response); assertNull(mv); EasyMock.verify(new Object[] { executor }); } public void testLaunchFlowRequestEndsAfterProcessing() throws Exception { request.setContextPath("/springtravel"); request.setServletPath("/app"); request.setPathInfo("/foo"); request.setRequestURI("/springtravel/app/foo"); request.setMethod("GET"); executor.launchExecution("foo", null, context); LocalAttributeMap output = new LocalAttributeMap(); output.put("bar", "baz"); FlowExecutionOutcome outcome = new FlowExecutionOutcome("finish", output); FlowExecutionResult result = FlowExecutionResult.createEndedResult("foo", outcome); EasyMock.expectLastCall().andReturn(result); EasyMock.replay(new Object[] { executor }); ModelAndView mv = controller.handleRequest(request, response); assertNull(mv); assertEquals("/springtravel/app/foo?bar=baz", response.getRedirectedUrl()); EasyMock.verify(new Object[] { executor }); } public void testResumeFlowRequest() throws Exception { request.setContextPath("/springtravel"); request.setServletPath("/app"); request.setPathInfo("/foo"); request.setRequestURI("/springtravel/app/foo"); request.setMethod("POST"); request.addParameter("execution", "12345"); Map parameters = new HashMap(); request.setParameters(parameters); executor.resumeExecution("12345", context); FlowExecutionResult result = FlowExecutionResult.createPausedResult("foo", "123456"); EasyMock.expectLastCall().andReturn(result); EasyMock.replay(new Object[] { executor }); ModelAndView mv = controller.handleRequest(request, response); assertNull(mv); EasyMock.verify(new Object[] { executor }); } public void testResumeFlowRequestEndsAfterProcessing() throws Exception { request.setContextPath("/springtravel"); request.setServletPath("/app"); request.setPathInfo("/foo"); request.setRequestURI("/springtravel/app/foo"); request.setMethod("POST"); request.addParameter("execution", "12345"); Map parameters = new HashMap(); request.setParameters(parameters); executor.resumeExecution("12345", context); LocalAttributeMap output = new LocalAttributeMap(); output.put("bar", "baz"); FlowExecutionOutcome outcome = new FlowExecutionOutcome("finish", output); FlowExecutionResult result = FlowExecutionResult.createEndedResult("foo", outcome); EasyMock.expectLastCall().andReturn(result); EasyMock.replay(new Object[] { executor }); ModelAndView mv = controller.handleRequest(request, response); assertNull(mv); assertEquals("/springtravel/app/foo?bar=baz", response.getRedirectedUrl()); EasyMock.verify(new Object[] { executor }); } public void testLaunchFlowWithExecutionRedirect() throws Exception { request.setContextPath("/springtravel"); request.setServletPath("/app"); request.setPathInfo("/foo"); request.setRequestURI("/springtravel/app/foo"); request.setMethod("GET"); context.requestFlowExecutionRedirect(); executor.launchExecution("foo", null, context); FlowExecutionResult result = FlowExecutionResult.createPausedResult("foo", "12345"); EasyMock.expectLastCall().andReturn(result); EasyMock.replay(new Object[] { executor }); ModelAndView mv = controller.handleRequest(request, response); assertNull(mv); assertEquals("/springtravel/app/foo?execution=12345", response.getRedirectedUrl()); EasyMock.verify(new Object[] { executor }); } public void testLaunchFlowWithExecutionRedirectAjaxHeaderOpenInPopup() throws Exception { request.setContextPath("/springtravel"); request.setServletPath("/app"); request.setPathInfo("/foo"); request.setRequestURI("/springtravel/app/foo"); request.setMethod("GET"); request.addHeader("Accept", "text/html;type=ajax"); context.setAjaxRequest(true); context.requestFlowExecutionRedirect(); context.requestRedirectInPopup(); executor.launchExecution("foo", null, context); FlowExecutionResult result = FlowExecutionResult.createPausedResult("foo", "12345"); EasyMock.expectLastCall().andReturn(result); EasyMock.replay(new Object[] { executor }); ModelAndView mv = controller.handleRequest(request, response); assertNull(mv); assertEquals(null, response.getRedirectedUrl()); assertEquals("true", response.getHeader(SpringJavascriptAjaxHandler.POPUP_VIEW_HEADER)); assertEquals("/springtravel/app/foo?execution=12345", response .getHeader(SpringJavascriptAjaxHandler.REDIRECT_URL_HEADER)); EasyMock.verify(new Object[] { executor }); } public void testLaunchFlowWithExecutionRedirectAjaxParameter() throws Exception { request.setContextPath("/springtravel"); request.setServletPath("/app"); request.setPathInfo("/foo"); request.setRequestURI("/springtravel/app/foo"); request.setMethod("GET"); request.addParameter("ajaxSource", "this"); context.setAjaxRequest(true); context.requestFlowExecutionRedirect(); LocalAttributeMap inputMap = new LocalAttributeMap(); inputMap.put("ajaxSource", "this"); executor.launchExecution("foo", inputMap, context); FlowExecutionResult result = FlowExecutionResult.createPausedResult("foo", "12345"); EasyMock.expectLastCall().andReturn(result); EasyMock.replay(new Object[] { executor }); ModelAndView mv = controller.handleRequest(request, response); assertNull(mv); assertEquals(null, response.getRedirectedUrl()); assertEquals(null, response.getHeader(SpringJavascriptAjaxHandler.POPUP_VIEW_HEADER)); assertEquals("/springtravel/app/foo?execution=12345", response .getHeader(SpringJavascriptAjaxHandler.REDIRECT_URL_HEADER)); EasyMock.verify(new Object[] { executor }); } public void testLaunchFlowWithDefinitionRedirect() throws Exception { request.setContextPath("/springtravel"); request.setServletPath("/app"); request.setPathInfo("/foo"); request.setRequestURI("/springtravel/app/foo"); request.setMethod("GET"); LocalAttributeMap input = new LocalAttributeMap(); input.put("baz", "boop"); context.requestFlowDefinitionRedirect("bar", input); executor.launchExecution("foo", null, context); LocalAttributeMap output = new LocalAttributeMap(); output.put("bar", "baz"); FlowExecutionOutcome outcome = new FlowExecutionOutcome("finish", output); FlowExecutionResult result = FlowExecutionResult.createEndedResult("foo", outcome); EasyMock.expectLastCall().andReturn(result); EasyMock.replay(new Object[] { executor }); ModelAndView mv = controller.handleRequest(request, response); assertNull(mv); EasyMock.verify(new Object[] { executor }); assertEquals("/springtravel/app/bar?baz=boop", response.getRedirectedUrl()); EasyMock.verify(new Object[] { executor }); } public void testLaunchFlowWithExternalRedirect() throws Exception { request.setContextPath("/springtravel"); request.setServletPath("/app"); request.setPathInfo("/foo"); request.setRequestURI("/springtravel/app/foo"); request.setMethod("GET"); context.requestExternalRedirect("http://www.paypal.com"); executor.launchExecution("foo", null, context); FlowExecutionResult result = FlowExecutionResult.createPausedResult("foo", "12345"); EasyMock.expectLastCall().andReturn(result); EasyMock.replay(new Object[] { executor }); ModelAndView mv = controller.handleRequest(request, response); assertNull(mv); EasyMock.verify(new Object[] { executor }); assertEquals("http://www.paypal.com", response.getRedirectedUrl()); EasyMock.verify(new Object[] { executor }); } public void testDefaultHandleFlowException() throws Exception { request.setContextPath("/springtravel"); request.setServletPath("/app"); request.setPathInfo("/foo"); request.setRequestURI("/springtravel/app/foo"); request.setMethod("GET"); executor.launchExecution("foo", null, context); FlowException flowException = new FlowException("Error") { }; EasyMock.expectLastCall().andThrow(flowException); EasyMock.replay(new Object[] { executor }); try { controller.handleRequest(request, response); fail("Should have thrown exception"); } catch (FlowException e) { assertEquals(flowException, e); } EasyMock.verify(new Object[] { executor }); } public void testDefaultHandleNoSuchFlowExecutionException() throws Exception { request.setContextPath("/springtravel"); request.setServletPath("/app"); request.setPathInfo("/foo"); request.setRequestURI("/springtravel/app/foo"); request.setMethod("GET"); request.addParameter("execution", "12345"); executor.resumeExecution("12345", context); FlowException flowException = new NoSuchFlowExecutionException(new MockFlowExecutionKey("12345"), null); EasyMock.expectLastCall().andThrow(flowException); EasyMock.replay(new Object[] { executor }); ModelAndView mv = controller.handleRequest(request, response); assertNull(mv); assertEquals("/springtravel/app/foo", response.getRedirectedUrl()); EasyMock.verify(new Object[] { executor }); } public void testLaunchFlowWithCustomFlowHandler() throws Exception { final LocalAttributeMap input = new LocalAttributeMap(); input.put("bar", "boop"); controller.registerFlowHandler(new FlowHandler() { public String getFlowId() { return "foo"; } public MutableAttributeMap createExecutionInputMap(HttpServletRequest request) { return input; } public String handleExecutionOutcome(FlowExecutionOutcome outcome, HttpServletRequest request, HttpServletResponse response) { return null; } public String handleException(FlowException e, HttpServletRequest request, HttpServletResponse response) { return null; } }); request.setContextPath("/springtravel"); request.setServletPath("/app"); request.setPathInfo("/foo"); request.setRequestURI("/springtravel/app/foo"); request.setMethod("GET"); executor.launchExecution("foo", input, context); FlowExecutionResult result = FlowExecutionResult.createPausedResult("foo", "12345"); EasyMock.expectLastCall().andReturn(result); EasyMock.replay(new Object[] { executor }); ModelAndView mv = controller.handleRequest(request, response); assertNull(mv); EasyMock.verify(new Object[] { executor }); } public void testHandleFlowOutcomeCustomFlowHandler() throws Exception { final LocalAttributeMap input = new LocalAttributeMap(); input.put("bar", "boop"); controller.registerFlowHandler(new FlowHandler() { public String getFlowId() { return "foo"; } public MutableAttributeMap createExecutionInputMap(HttpServletRequest request) { return input; } public String handleExecutionOutcome(FlowExecutionOutcome outcome, HttpServletRequest request, HttpServletResponse response) { assertEquals("finish", outcome.getId()); assertEquals("baz", outcome.getOutput().get("bar")); assertEquals(FlowControllerTests.this.request, request); assertEquals(FlowControllerTests.this.response, response); return null; } public String handleException(FlowException e, HttpServletRequest request, HttpServletResponse response) { return null; } }); request.setContextPath("/springtravel"); request.setServletPath("/app"); request.setPathInfo("/foo"); request.setRequestURI("/springtravel/app/foo"); request.setMethod("GET"); executor.launchExecution("foo", input, context); LocalAttributeMap output = new LocalAttributeMap(); output.put("bar", "baz"); FlowExecutionOutcome outcome = new FlowExecutionOutcome("finish", output); FlowExecutionResult result = FlowExecutionResult.createEndedResult("foo", outcome); EasyMock.expectLastCall().andReturn(result); EasyMock.replay(new Object[] { executor }); ModelAndView mv = controller.handleRequest(request, response); assertNull(mv); assertEquals("/springtravel/app/foo?bar=baz", response.getRedirectedUrl()); EasyMock.verify(new Object[] { executor }); } public void testHandleFlowExceptionCustomFlowHandler() throws Exception { final FlowException flowException = new FlowException("Error") { }; controller.registerFlowHandler(new FlowHandler() { public String getFlowId() { return "foo"; } public MutableAttributeMap createExecutionInputMap(HttpServletRequest request) { return null; } public String handleExecutionOutcome(FlowExecutionOutcome outcome, HttpServletRequest request, HttpServletResponse response) { return null; } public String handleException(FlowException e, HttpServletRequest request, HttpServletResponse response) { assertEquals(flowException, e); return null; } }); request.setContextPath("/springtravel"); request.setServletPath("/app"); request.setPathInfo("/foo"); request.setRequestURI("/springtravel/app/foo"); request.setMethod("GET"); executor.launchExecution("foo", null, context); EasyMock.expectLastCall().andThrow(flowException); EasyMock.replay(new Object[] { executor }); try { controller.handleRequest(request, response); fail("Should have thrown exception"); } catch (FlowException e) { assertEquals(flowException, e); } EasyMock.verify(new Object[] { executor }); } } ././@LongLink0000000000000000000000000000017200000000000011565 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/test/java/org/springframework/webflow/mvc/view/libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/test/java/org/springframew0000755000000000000000000000000011360615644030005 5ustar ././@LongLink0000000000000000000000000000023000000000000011560 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/test/java/org/springframework/webflow/mvc/view/AbstractBindingModelTests.javalibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/test/java/org/springframew0000644000000000000000000001540111360615646030012 0ustar package org.springframework.webflow.mvc.view; import java.beans.PropertyEditor; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; import junit.framework.TestCase; import org.springframework.binding.convert.converters.StringToObject; import org.springframework.binding.convert.service.DefaultConversionService; import org.springframework.binding.expression.Expression; import org.springframework.binding.expression.ExpressionParser; import org.springframework.binding.mapping.Mapping; import org.springframework.binding.mapping.impl.DefaultMappingResults; import org.springframework.binding.mapping.results.TypeConversionError; import org.springframework.binding.message.DefaultMessageContext; import org.springframework.binding.message.MessageBuilder; import org.springframework.validation.FieldError; import org.springframework.webflow.TestBean; import org.springframework.webflow.engine.builder.BinderConfiguration; import org.springframework.webflow.engine.builder.BinderConfiguration.Binding; public abstract class AbstractBindingModelTests extends TestCase { BindingModel model; DefaultMessageContext messages; DefaultConversionService conversionService; TestBean testBean; ExpressionParser expressionParser; public void setUp() { testBean = new TestBean(); messages = new DefaultMessageContext(); conversionService = new DefaultConversionService(); expressionParser = getExpressionParser(); model = new BindingModel("testBean", testBean, expressionParser, conversionService, messages); } protected abstract ExpressionParser getExpressionParser(); public void testInitialState() { assertEquals(0, model.getErrorCount()); assertEquals(0, model.getFieldErrorCount()); assertEquals(0, model.getFieldErrorCount("datum1")); assertEquals(0, model.getGlobalErrorCount()); assertEquals(0, model.getAllErrors().size()); assertEquals(0, model.getFieldErrors().size()); assertNull(model.getFieldError("datum1")); assertEquals(String.class, model.getFieldType("datum1")); } public void testGetValue() { testBean.datum1 = "test"; assertEquals("test", model.getFieldValue("datum1")); } public void testGetConvertedValue() { testBean.datum2 = 3; assertEquals("3", model.getFieldValue("datum2")); } public void testGetRawValue() { testBean.datum2 = 3; assertEquals(new Integer(3), model.getRawFieldValue("datum2")); } public void testGetFieldValueNonStringNoConversionService() { model = new BindingModel("testBean", testBean, getExpressionParser(), null, messages); testBean.datum2 = 3; assertEquals(new Integer(3), model.getFieldValue("datum2")); } public void testGetFieldValueConvertedWithCustomConverter() { testBean.datum2 = 3; conversionService.addConverter("customConverter", new StringToObject(Integer.class) { protected Object toObject(String string, Class targetClass) throws Exception { return Integer.valueOf(string); } protected String toString(Object object) throws Exception { return "$" + object; } }); BinderConfiguration binder = new BinderConfiguration(); binder.addBinding(new Binding("datum2", "customConverter", true)); model.setBinderConfiguration(binder); assertEquals("$3", model.getFieldValue("datum2")); } public void testGetFieldValueError() { Map source = new HashMap(); source.put("datum2", "bogus"); List mappingResults = new ArrayList(); Mapping mapping = new Mapping() { public Expression getSourceExpression() { return expressionParser.parseExpression("datum2", null); } public Expression getTargetExpression() { return expressionParser.parseExpression("datum2", null); } public boolean isRequired() { return true; } }; mappingResults.add(new TypeConversionError(mapping, "bogus", null)); DefaultMappingResults results = new DefaultMappingResults(source, testBean, mappingResults); model.setMappingResults(results); assertEquals("bogus", model.getFieldValue("datum2")); // not offically an error until an actual error message is associated with field assertEquals(0, model.getErrorCount()); assertEquals(0, model.getFieldErrorCount()); } public void testGetFieldError() { messages.addMessage(new MessageBuilder().source("datum2").error().defaultText("Error").build()); assertEquals(1, model.getErrorCount()); assertEquals(1, model.getFieldErrorCount()); assertEquals(0, model.getGlobalErrorCount()); FieldError error = model.getFieldError("datum2"); assertEquals(null, error.getCode()); assertEquals(null, error.getCodes()); assertEquals(null, error.getArguments()); assertEquals("Error", error.getDefaultMessage()); // we dont track this assertEquals(null, error.getRejectedValue()); assertTrue(!error.isBindingFailure()); FieldError error2 = (FieldError) model.getFieldErrors().get(0); assertEquals(error, error2); } public void testGetFieldErrorsWildcard() { messages.addMessage(new MessageBuilder().source("datum2").error().defaultText("Error").build()); assertEquals(1, model.getFieldErrorCount("da*")); FieldError error = model.getFieldError("da*"); assertEquals(null, error.getCode()); assertEquals(null, error.getCodes()); assertEquals(null, error.getArguments()); assertEquals("Error", error.getDefaultMessage()); } public void testFindPropertyEditor() { PropertyEditor editor = model.findEditor("datum2", Integer.class); assertNotNull(editor); editor.setAsText((String) model.getFieldValue("datum2")); assertEquals("0", editor.getAsText()); } public void testNestedPath() { model = new BindingModel("nestedPathBean", new NestedPathBean(), expressionParser, conversionService, messages); model.pushNestedPath("nestedBean"); assertEquals("test", model.getFieldValue("datum1")); assertEquals("0", model.getFieldValue("datum2")); assertEquals(int.class, model.getFieldType("datum2")); messages.addMessage(new MessageBuilder().source("nestedBean.datum2").error().defaultText("Error").build()); assertNotNull(model.getFieldErrors("datum2").get(0)); model.popNestedPath(); assertEquals("", model.getFieldValue("datum1")); } public static class NestedPathBean { private String datum1 = ""; private NestedBean nestedBean = new NestedBean(); public String getDatum1() { return datum1; } public void setDatum1(String datum1) { this.datum1 = datum1; } public NestedBean getNestedBean() { return nestedBean; } public void setNestedBean(NestedBean nestedBean) { this.nestedBean = nestedBean; } public static class NestedBean { private String datum1 = "test"; private int datum2; public int getDatum2() { return datum2; } public void setDatum2(int datum2) { this.datum2 = datum2; } public String getDatum1() { return datum1; } public void setDatum1(String datum1) { this.datum1 = datum1; } } } } ././@LongLink0000000000000000000000000000023200000000000011562 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/test/java/org/springframework/webflow/mvc/view/SpringBeanBindingModelTests.javalibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/test/java/org/springframew0000644000000000000000000000111211360615632027777 0ustar package org.springframework.webflow.mvc.view; import java.beans.PropertyEditor; import org.springframework.binding.expression.ExpressionParser; import org.springframework.binding.expression.beanwrapper.BeanWrapperExpressionParser; public class SpringBeanBindingModelTests extends AbstractBindingModelTests { protected ExpressionParser getExpressionParser() { return new BeanWrapperExpressionParser(); } // See SWF-1132 public void testFindPropertyEditorForUndeterminableType() { PropertyEditor editor = model.findEditor("emptyMap['foo']", null); assertNull(editor); } } ././@LongLink0000000000000000000000000000022700000000000011566 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/test/java/org/springframework/webflow/mvc/view/DefaultBindingModelTests.javalibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/test/java/org/springframew0000644000000000000000000000060111360615644030004 0ustar package org.springframework.webflow.mvc.view; import org.springframework.binding.expression.ExpressionParser; import org.springframework.webflow.expression.DefaultExpressionParserFactory; public class DefaultBindingModelTests extends AbstractBindingModelTests { protected ExpressionParser getExpressionParser() { return DefaultExpressionParserFactory.getExpressionParser(); } } ././@LongLink0000000000000000000000000000021300000000000011561 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/test/java/org/springframework/webflow/mvc/view/MvcViewTests.javalibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/test/java/org/springframew0000644000000000000000000011201211360615632030001 0ustar package org.springframework.webflow.mvc.view; import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.ObjectInputStream; import java.io.ObjectOutputStream; import java.security.Principal; import java.text.SimpleDateFormat; import java.util.Calendar; import java.util.Date; import java.util.List; import java.util.Map; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import junit.framework.TestCase; import org.springframework.binding.convert.converters.StringToDate; import org.springframework.binding.convert.service.DefaultConversionService; import org.springframework.binding.expression.EvaluationException; import org.springframework.binding.expression.Expression; import org.springframework.binding.expression.support.StaticExpression; import org.springframework.binding.validation.ValidationContext; import org.springframework.mock.web.MockHttpServletRequest; import org.springframework.mock.web.MockHttpServletResponse; import org.springframework.mock.web.MockMultipartFile; import org.springframework.mock.web.MockServletContext; import org.springframework.validation.BindingResult; import org.springframework.web.multipart.MultipartFile; import org.springframework.web.servlet.View; import org.springframework.webflow.action.ViewFactoryActionAdapter; import org.springframework.webflow.engine.EndState; import org.springframework.webflow.engine.StubViewFactory; import org.springframework.webflow.engine.ViewState; import org.springframework.webflow.engine.builder.BinderConfiguration; import org.springframework.webflow.engine.builder.BinderConfiguration.Binding; import org.springframework.webflow.execution.RequestContext; import org.springframework.webflow.expression.DefaultExpressionParserFactory; import org.springframework.webflow.test.MockFlowExecutionKey; import org.springframework.webflow.test.MockRequestContext; import org.springframework.webflow.test.MockRequestControlContext; import org.springframework.webflow.validation.WebFlowMessageCodesResolver; public class MvcViewTests extends TestCase { private boolean renderCalled; private Map model; public void testRender() throws Exception { MockRequestControlContext context = new MockRequestControlContext(); context.setCurrentState(new ViewState(context.getRootFlow(), "test", new StubViewFactory())); context.getRequestScope().put("foo", "bar"); context.getFlowScope().put("bar", "baz"); context.getFlowScope().put("bindBean", new BindBean()); context.getConversationScope().put("baz", "boop"); context.getFlashScope().put("boop", "bing"); context.getMockExternalContext().setCurrentUser("Keith"); context.getMockExternalContext().setNativeContext(new MockServletContext()); context.getMockExternalContext().setNativeRequest(new MockHttpServletRequest()); context.getMockExternalContext().setNativeResponse(new MockHttpServletResponse()); context.getMockFlowExecutionContext().setKey(new MockFlowExecutionKey("c1v1")); org.springframework.web.servlet.View mvcView = new MockView(); AbstractMvcView view = new MockMvcView(mvcView, context); view.setExpressionParser(DefaultExpressionParserFactory.getExpressionParser()); view.render(); assertTrue(renderCalled); assertEquals("bar", model.get("foo")); assertEquals("baz", model.get("bar")); assertEquals("boop", model.get("baz")); assertEquals("bing", model.get("boop")); assertEquals("c1v1", model.get("flowExecutionKey")); assertEquals("Keith", ((Principal) model.get("currentUser")).getName()); assertEquals(context, model.get("flowRequestContext")); assertEquals("/mockFlow?execution=c1v1", model.get("flowExecutionUrl")); assertNull(model.get(BindingResult.MODEL_KEY_PREFIX + "bindBean")); } public void testRenderNoKey() throws Exception { MockRequestControlContext context = new MockRequestControlContext(); EndState endState = new EndState(context.getRootFlow(), "end"); endState.setFinalResponseAction(new ViewFactoryActionAdapter(new StubViewFactory())); context.setCurrentState(endState); context.getRequestScope().put("foo", "bar"); context.getFlowScope().put("bar", "baz"); context.getFlowScope().put("bindBean", new BindBean()); context.getConversationScope().put("baz", "boop"); context.getFlashScope().put("boop", "bing"); context.getMockExternalContext().setCurrentUser("Keith"); context.getMockExternalContext().setNativeContext(new MockServletContext()); context.getMockExternalContext().setNativeRequest(new MockHttpServletRequest()); context.getMockExternalContext().setNativeResponse(new MockHttpServletResponse()); org.springframework.web.servlet.View mvcView = new MockView(); AbstractMvcView view = new MockMvcView(mvcView, context); view.setExpressionParser(DefaultExpressionParserFactory.getExpressionParser()); view.render(); assertTrue(renderCalled); assertEquals("bar", model.get("foo")); assertEquals("baz", model.get("bar")); assertEquals("boop", model.get("baz")); assertEquals("bing", model.get("boop")); assertFalse(model.containsKey("flowExecutionKey")); assertFalse(model.containsKey("flowExecutionUrl")); assertEquals("Keith", ((Principal) model.get("currentUser")).getName()); assertEquals(context, model.get("flowRequestContext")); assertNull(model.get(BindingResult.MODEL_KEY_PREFIX + "bindBean")); } public void testRenderWithBindingModel() throws Exception { MockRequestControlContext context = new MockRequestControlContext(); context.setCurrentState(new ViewState(context.getRootFlow(), "test", new StubViewFactory())); Object bindBean = new BindBean(); StaticExpression modelObject = new StaticExpression(bindBean); modelObject.setExpressionString("bindBean"); context.getCurrentState().getAttributes().put("model", modelObject); context.getFlowScope().put("bindBean", bindBean); context.getMockExternalContext().setNativeContext(new MockServletContext()); context.getMockExternalContext().setNativeRequest(new MockHttpServletRequest()); context.getMockExternalContext().setNativeResponse(new MockHttpServletResponse()); context.getMockFlowExecutionContext().setKey(new MockFlowExecutionKey("c1v1")); org.springframework.web.servlet.View mvcView = new MockView(); AbstractMvcView view = new MockMvcView(mvcView, context); view.setExpressionParser(DefaultExpressionParserFactory.getExpressionParser()); view.setConversionService(new DefaultConversionService()); view.render(); assertEquals(context.getFlowScope().get("bindBean"), model.get("bindBean")); BindingModel bm = (BindingModel) model.get(BindingResult.MODEL_KEY_PREFIX + "bindBean"); assertNotNull(bm); assertEquals(null, bm.getFieldValue("stringProperty")); assertEquals("3", bm.getFieldValue("integerProperty")); assertEquals("2008-01-01", bm.getFieldValue("dateProperty")); } public void testResumeNoEvent() throws Exception { MockRequestContext context = new MockRequestContext(); context.getMockExternalContext().setNativeContext(new MockServletContext()); context.getMockExternalContext().setNativeRequest(new MockHttpServletRequest()); context.getMockExternalContext().setNativeResponse(new MockHttpServletResponse()); context.getMockFlowExecutionContext().setKey(new MockFlowExecutionKey("c1v1")); org.springframework.web.servlet.View mvcView = new MockView(); AbstractMvcView view = new MockMvcView(mvcView, context); assertFalse(view.userEventQueued()); view.processUserEvent(); assertFalse(view.hasFlowEvent()); assertNull(view.getFlowEvent()); } public void testResumeEventNoModelBinding() throws Exception { MockRequestContext context = new MockRequestContext(); context.putRequestParameter("_eventId", "submit"); context.getMockExternalContext().setNativeContext(new MockServletContext()); context.getMockExternalContext().setNativeRequest(new MockHttpServletRequest()); context.getMockExternalContext().setNativeResponse(new MockHttpServletResponse()); context.getMockFlowExecutionContext().setKey(new MockFlowExecutionKey("c1v1")); org.springframework.web.servlet.View mvcView = new MockView(); AbstractMvcView view = new MockMvcView(mvcView, context); assertTrue(view.userEventQueued()); view.processUserEvent(); assertTrue(view.hasFlowEvent()); assertEquals("submit", view.getFlowEvent().getId()); } public void testResumeEventModelBinding() throws Exception { MockRequestContext context = new MockRequestContext(); context.putRequestParameter("_eventId", "submit"); context.putRequestParameter("stringProperty", "foo"); context.putRequestParameter("integerProperty", "5"); context.putRequestParameter("dateProperty", "2007-01-01"); context.putRequestParameter("beanProperty.name", "foo"); context.putRequestParameter("multipartFile", new MockMultipartFile("foo", new byte[0])); context.putRequestParameter("stringArrayProperty", new String[] { "foo", "bar", "baz" }); context.putRequestParameter("integerArrayProperty", new String[] { "1", "2", "3" }); context.putRequestParameter("primitiveArrayProperty", new String[] { "1", "2", "3" }); context.putRequestParameter("listProperty", new String[] { "1", "2", "3" }); BindBean bindBean = new BindBean(); StaticExpression modelObject = new StaticExpression(bindBean); modelObject.setExpressionString("bindBean"); context.getCurrentState().getAttributes().put("model", modelObject); context.getFlowScope().put("bindBean", bindBean); context.getMockExternalContext().setNativeContext(new MockServletContext()); context.getMockExternalContext().setNativeRequest(new MockHttpServletRequest()); context.getMockExternalContext().setNativeResponse(new MockHttpServletResponse()); context.getMockFlowExecutionContext().setKey(new MockFlowExecutionKey("c1v1")); org.springframework.web.servlet.View mvcView = new MockView(); AbstractMvcView view = new MockMvcView(mvcView, context); view.setExpressionParser(DefaultExpressionParserFactory.getExpressionParser()); view.processUserEvent(); assertTrue(view.hasFlowEvent()); assertFalse(context.getFlashScope().contains(ViewActionStateHolder.KEY)); assertEquals("submit", view.getFlowEvent().getId()); assertEquals("foo", bindBean.getStringProperty()); assertEquals(new Integer(5), bindBean.getIntegerProperty()); Calendar cal = Calendar.getInstance(); cal.clear(); cal.set(Calendar.YEAR, 2007); assertEquals(cal.getTime(), bindBean.getDateProperty()); assertEquals("foo", bindBean.getBeanProperty().getName()); assertEquals("foo", bindBean.getMultipartFile().getName()); assertEquals(3, bindBean.getStringArrayProperty().length); assertEquals("foo", bindBean.getStringArrayProperty()[0]); assertEquals("bar", bindBean.getStringArrayProperty()[1]); assertEquals("baz", bindBean.getStringArrayProperty()[2]); assertEquals(3, bindBean.getIntegerArrayProperty().length); assertEquals(new Integer(1), bindBean.getIntegerArrayProperty()[0]); assertEquals(new Integer(2), bindBean.getIntegerArrayProperty()[1]); assertEquals(new Integer(3), bindBean.getIntegerArrayProperty()[2]); assertEquals(3, bindBean.getPrimitiveArrayProperty().length); assertEquals(1, bindBean.getPrimitiveArrayProperty()[0]); assertEquals(2, bindBean.getPrimitiveArrayProperty()[1]); assertEquals(3, bindBean.getPrimitiveArrayProperty()[2]); assertEquals(3, bindBean.getListProperty().size()); assertEquals("1", bindBean.getListProperty().get(0)); assertEquals("2", bindBean.getListProperty().get(1)); assertEquals("3", bindBean.getListProperty().get(2)); assertFalse(bindBean.validationMethodInvoked); } public void testResumeEventBindingErrors() throws Exception { MockRequestControlContext context = new MockRequestControlContext(); context.putRequestParameter("_eventId", "submit"); context.putRequestParameter("integerProperty", "bogus 1"); context.putRequestParameter("dateProperty", "bogus 2"); BindBean bindBean = new BindBean(); StaticExpression modelObject = new StaticExpression(bindBean); modelObject.setExpressionString("bindBean"); context.getCurrentState().getAttributes().put("model", modelObject); context.getFlowScope().put("bindBean", bindBean); context.getMockExternalContext().setNativeContext(new MockServletContext()); context.getMockExternalContext().setNativeRequest(new MockHttpServletRequest()); context.getMockExternalContext().setNativeResponse(new MockHttpServletResponse()); context.getMockFlowExecutionContext().setKey(new MockFlowExecutionKey("c1v1")); org.springframework.web.servlet.View mvcView = new MockView(); AbstractMvcView view = new MockMvcView(mvcView, context); view.setExpressionParser(DefaultExpressionParserFactory.getExpressionParser()); view.setMessageCodesResolver(new WebFlowMessageCodesResolver()); context.setAlwaysRedirectOnPause(true); view.processUserEvent(); assertFalse(view.hasFlowEvent()); view.render(); assertEquals(context.getFlowScope().get("bindBean"), model.get("bindBean")); BindingModel bm = (BindingModel) model.get(BindingResult.MODEL_KEY_PREFIX + "bindBean"); assertNotNull(bm); assertEquals("bogus 1", bm.getFieldValue("integerProperty")); assertEquals("bogus 2", bm.getFieldValue("dateProperty")); } public void testResumeEventNoModelInScope() throws Exception { MockRequestContext context = new MockRequestContext(); context.putRequestParameter("_eventId", "submit"); context.putRequestParameter("stringProperty", "foo"); context.putRequestParameter("integerProperty", "5"); context.putRequestParameter("dateProperty", "2007-01-01"); context.putRequestParameter("beanProperty.name", "foo"); context.putRequestParameter("multipartFile", new MockMultipartFile("foo", new byte[0])); context.putRequestParameter("stringArrayProperty", new String[] { "foo", "bar", "baz" }); context.putRequestParameter("integerArrayProperty", new String[] { "1", "2", "3" }); context.putRequestParameter("primitiveArrayProperty", new String[] { "1", "2", "3" }); context.putRequestParameter("listProperty", new String[] { "1", "2", "3" }); Expression modelObject = new Expression() { public String getExpressionString() { return "foo"; } public Object getValue(Object context) throws EvaluationException { throw new EvaluationException(Object.class, "foo", "Model expression failed to evaluate"); } public Class getValueType(Object context) throws EvaluationException { return Object.class; } public void setValue(Object context, Object value) throws EvaluationException { throw new IllegalStateException("Should not be called"); } }; context.getCurrentState().getAttributes().put("model", modelObject); context.getMockExternalContext().setNativeContext(new MockServletContext()); context.getMockExternalContext().setNativeRequest(new MockHttpServletRequest()); context.getMockExternalContext().setNativeResponse(new MockHttpServletResponse()); context.getMockFlowExecutionContext().setKey(new MockFlowExecutionKey("c1v1")); org.springframework.web.servlet.View mvcView = new MockView(); AbstractMvcView view = new MockMvcView(mvcView, context); view.setExpressionParser(DefaultExpressionParserFactory.getExpressionParser()); view.processUserEvent(); assertTrue(view.hasFlowEvent()); assertFalse(context.getFlashScope().contains(ViewActionStateHolder.KEY)); assertEquals("submit", view.getFlowEvent().getId()); } public void testResumeEventBindingErrorsRedirectAfterPost() throws Exception { MockRequestControlContext context = new MockRequestControlContext(); context.putRequestParameter("_eventId", "submit"); context.putRequestParameter("integerProperty", "bogus 1"); context.putRequestParameter("dateProperty", "bogus 2"); BindBean bindBean = new BindBean(); StaticExpression modelObject = new StaticExpression(bindBean); modelObject.setExpressionString("bindBean"); context.getCurrentState().getAttributes().put("model", modelObject); context.getFlowScope().put("bindBean", bindBean); context.getMockExternalContext().setNativeContext(new MockServletContext()); context.getMockExternalContext().setNativeRequest(new MockHttpServletRequest()); context.getMockExternalContext().setNativeResponse(new MockHttpServletResponse()); context.getMockFlowExecutionContext().setKey(new MockFlowExecutionKey("c1v1")); org.springframework.web.servlet.View mvcView = new MockView(); AbstractMvcView view = new MockMvcView(mvcView, context); view.setExpressionParser(DefaultExpressionParserFactory.getExpressionParser()); view.setMessageCodesResolver(new WebFlowMessageCodesResolver()); context.setAlwaysRedirectOnPause(true); assertTrue(view.userEventQueued()); view.processUserEvent(); assertFalse(view.userEventQueued()); assertFalse(view.hasFlowEvent()); Object viewActionState = view.getUserEventState(); assertNotNull(viewActionState); MockRequestControlContext context2 = new MockRequestControlContext(); context2.getFlashScope().put(org.springframework.webflow.execution.View.USER_EVENT_STATE_ATTRIBUTE, viewActionState); BindBean bindBean2 = new BindBean(); StaticExpression modelObject2 = new StaticExpression(bindBean2); modelObject2.setExpressionString("bindBean"); context2.getCurrentState().getAttributes().put("model", modelObject); context2.getFlowScope().put("bindBean", bindBean); context2.getMockExternalContext().setNativeContext(new MockServletContext()); context2.getMockExternalContext().setNativeRequest(new MockHttpServletRequest()); context2.getMockExternalContext().setNativeResponse(new MockHttpServletResponse()); context2.getMockFlowExecutionContext().setKey(new MockFlowExecutionKey("c1v1")); AbstractMvcView view2 = new MockMvcView(mvcView, context2); view2.setExpressionParser(DefaultExpressionParserFactory.getExpressionParser()); view2.setMessageCodesResolver(new WebFlowMessageCodesResolver()); view2.restoreState((ViewActionStateHolder) viewActionState); assertFalse(view2.userEventQueued()); view2.render(); assertEquals(context2.getFlowScope().get("bindBean"), model.get("bindBean")); BindingModel bm = (BindingModel) model.get(BindingResult.MODEL_KEY_PREFIX + "bindBean"); assertNotNull(bm); assertEquals("bogus 1", bm.getFieldValue("integerProperty")); assertEquals("bogus 2", bm.getFieldValue("dateProperty")); } public void testResumeEventBindingErrorsRedirectToReplicatedSessionAfterPost() throws Exception { MockRequestControlContext context = new MockRequestControlContext(); context.putRequestParameter("_eventId", "submit"); context.putRequestParameter("integerProperty", "bogus 1"); context.putRequestParameter("dateProperty", "bogus 2"); BindBean bindBean = new BindBean(); StaticExpression modelObject = new StaticExpression(bindBean); modelObject.setExpressionString("bindBean"); context.getCurrentState().getAttributes().put("model", modelObject); context.getFlowScope().put("bindBean", bindBean); context.getMockExternalContext().setNativeContext(new MockServletContext()); context.getMockExternalContext().setNativeRequest(new MockHttpServletRequest()); context.getMockExternalContext().setNativeResponse(new MockHttpServletResponse()); context.getMockFlowExecutionContext().setKey(new MockFlowExecutionKey("c1v1")); org.springframework.web.servlet.View mvcView = new MockView(); AbstractMvcView view = new MockMvcView(mvcView, context); view.setExpressionParser(DefaultExpressionParserFactory.getExpressionParser()); view.setMessageCodesResolver(new WebFlowMessageCodesResolver()); context.setAlwaysRedirectOnPause(true); assertTrue(view.userEventQueued()); view.processUserEvent(); assertFalse(view.userEventQueued()); assertFalse(view.hasFlowEvent()); Object viewActionState = view.getUserEventState(); assertNotNull(viewActionState); viewActionState = saveAndRestoreViewActionState(viewActionState); MockRequestControlContext context2 = new MockRequestControlContext(); context2.getFlashScope().put(org.springframework.webflow.execution.View.USER_EVENT_STATE_ATTRIBUTE, viewActionState); BindBean bindBean2 = new BindBean(); StaticExpression modelObject2 = new StaticExpression(bindBean2); modelObject2.setExpressionString("bindBean"); context2.getCurrentState().getAttributes().put("model", modelObject); context2.getFlowScope().put("bindBean", bindBean); context2.getMockExternalContext().setNativeContext(new MockServletContext()); context2.getMockExternalContext().setNativeRequest(new MockHttpServletRequest()); context2.getMockExternalContext().setNativeResponse(new MockHttpServletResponse()); context2.getMockFlowExecutionContext().setKey(new MockFlowExecutionKey("c1v1")); AbstractMvcView view2 = new MockMvcView(mvcView, context2); view2.setExpressionParser(DefaultExpressionParserFactory.getExpressionParser()); view2.setMessageCodesResolver(new WebFlowMessageCodesResolver()); view2.restoreState((ViewActionStateHolder) viewActionState); assertFalse(view2.userEventQueued()); view2.render(); assertEquals(context2.getFlowScope().get("bindBean"), model.get("bindBean")); BindingModel bm = (BindingModel) model.get(BindingResult.MODEL_KEY_PREFIX + "bindBean"); assertNotNull(bm); assertEquals(new Integer(3), bm.getFieldValue("integerProperty")); assertEquals(new SimpleDateFormat("MM-dd-yyyy").parse("01-01-2008"), bm.getFieldValue("dateProperty")); } private Object saveAndRestoreViewActionState(Object viewActionState) throws Exception { File tempFile = new File("serializable.tmp"); FileOutputStream fos = new FileOutputStream(tempFile); ObjectOutputStream objOut = new ObjectOutputStream(fos); objOut.writeObject(viewActionState); objOut.close(); FileInputStream fis = new FileInputStream(tempFile); ObjectInputStream objIn = new ObjectInputStream(fis); Object restoredState = objIn.readObject(); objIn.close(); tempFile.delete(); assertNotSame(viewActionState, restoredState); return restoredState; } public void testResumeEventModelBindingAllowedFields() throws Exception { MockRequestContext context = new MockRequestContext(); context.putRequestParameter("_eventId", "submit"); context.putRequestParameter("stringProperty", "foo"); context.putRequestParameter("integerProperty", "5"); context.putRequestParameter("dateProperty", "2007-01-01"); context.putRequestParameter("beanProperty.name", "foo"); BindBean bindBean = new BindBean(); StaticExpression modelObject = new StaticExpression(bindBean); modelObject.setExpressionString("bindBean"); context.getCurrentState().getAttributes().put("model", modelObject); context.getFlowScope().put("bindBean", bindBean); context.getMockExternalContext().setNativeContext(new MockServletContext()); context.getMockExternalContext().setNativeRequest(new MockHttpServletRequest()); context.getMockExternalContext().setNativeResponse(new MockHttpServletResponse()); context.getMockFlowExecutionContext().setKey(new MockFlowExecutionKey("c1v1")); org.springframework.web.servlet.View mvcView = new MockView(); AbstractMvcView view = new MockMvcView(mvcView, context); view.setExpressionParser(DefaultExpressionParserFactory.getExpressionParser()); BinderConfiguration binderConfiguration = new BinderConfiguration(); binderConfiguration.addBinding(new Binding("stringProperty", null, true)); view.setBinderConfiguration(binderConfiguration); view.processUserEvent(); assertTrue(view.hasFlowEvent()); assertEquals("submit", view.getFlowEvent().getId()); assertEquals("foo", bindBean.getStringProperty()); assertEquals(new Integer(3), bindBean.getIntegerProperty()); Calendar cal = Calendar.getInstance(); cal.clear(); cal.set(Calendar.YEAR, 2008); assertEquals(cal.getTime(), bindBean.getDateProperty()); assertEquals(null, bindBean.getBeanProperty().getName()); } public void testResumeEventModelBindingCustomConverter() throws Exception { MockRequestContext context = new MockRequestContext(); context.putRequestParameter("_eventId", "submit"); context.putRequestParameter("dateProperty", "01-01-2007"); BindBean bindBean = new BindBean(); StaticExpression modelObject = new StaticExpression(bindBean); modelObject.setExpressionString("bindBean"); context.getCurrentState().getAttributes().put("model", modelObject); context.getFlowScope().put("bindBean", bindBean); context.getMockExternalContext().setNativeContext(new MockServletContext()); context.getMockExternalContext().setNativeRequest(new MockHttpServletRequest()); context.getMockExternalContext().setNativeResponse(new MockHttpServletResponse()); context.getMockFlowExecutionContext().setKey(new MockFlowExecutionKey("c1v1")); org.springframework.web.servlet.View mvcView = new MockView(); AbstractMvcView view = new MockMvcView(mvcView, context); view.setExpressionParser(DefaultExpressionParserFactory.getExpressionParser()); DefaultConversionService conversionService = new DefaultConversionService(); StringToDate stringToDate = new StringToDate(); stringToDate.setPattern("MM-dd-yyyy"); conversionService.addConverter("customDateConverter", stringToDate); view.setConversionService(conversionService); BinderConfiguration binderConfiguration = new BinderConfiguration(); binderConfiguration.addBinding(new Binding("dateProperty", "customDateConverter", true)); view.setBinderConfiguration(binderConfiguration); view.processUserEvent(); assertTrue(view.hasFlowEvent()); assertEquals("submit", view.getFlowEvent().getId()); Calendar cal = Calendar.getInstance(); cal.clear(); cal.set(Calendar.YEAR, 2007); assertEquals(cal.getTime(), bindBean.getDateProperty()); } public void testResumeEventModelBindingFieldMarker() throws Exception { MockRequestContext context = new MockRequestContext(); context.putRequestParameter("_eventId", "submit"); context.putRequestParameter("_booleanProperty", "whatever"); BindBean bindBean = new BindBean(); bindBean.setBooleanProperty(true); StaticExpression modelObject = new StaticExpression(bindBean); modelObject.setExpressionString("bindBean"); context.getCurrentState().getAttributes().put("model", modelObject); context.getFlowScope().put("bindBean", bindBean); context.getMockExternalContext().setNativeContext(new MockServletContext()); context.getMockExternalContext().setNativeRequest(new MockHttpServletRequest()); context.getMockExternalContext().setNativeResponse(new MockHttpServletResponse()); context.getMockFlowExecutionContext().setKey(new MockFlowExecutionKey("c1v1")); org.springframework.web.servlet.View mvcView = new MockView(); AbstractMvcView view = new MockMvcView(mvcView, context); view.setExpressionParser(DefaultExpressionParserFactory.getExpressionParser()); view.processUserEvent(); assertEquals(false, bindBean.getBooleanProperty()); } public void testResumeEventModelBindingFieldMarkerFieldPresent() throws Exception { MockRequestContext context = new MockRequestContext(); context.putRequestParameter("_eventId", "submit"); context.putRequestParameter("booleanProperty", "true"); context.putRequestParameter("_booleanProperty", "whatever"); BindBean bindBean = new BindBean(); StaticExpression modelObject = new StaticExpression(bindBean); modelObject.setExpressionString("bindBean"); context.getCurrentState().getAttributes().put("model", modelObject); context.getFlowScope().put("bindBean", bindBean); context.getMockExternalContext().setNativeContext(new MockServletContext()); context.getMockExternalContext().setNativeRequest(new MockHttpServletRequest()); context.getMockExternalContext().setNativeResponse(new MockHttpServletResponse()); context.getMockFlowExecutionContext().setKey(new MockFlowExecutionKey("c1v1")); org.springframework.web.servlet.View mvcView = new MockView(); AbstractMvcView view = new MockMvcView(mvcView, context); view.setExpressionParser(DefaultExpressionParserFactory.getExpressionParser()); assertTrue(view.userEventQueued()); view.processUserEvent(); assertFalse(view.userEventQueued()); assertEquals(true, bindBean.getBooleanProperty()); } public void testResumeEventModelBindAndValidate() throws Exception { MockRequestContext context = new MockRequestContext(); context.putRequestParameter("_eventId", "submit"); context.putRequestParameter("stringProperty", "foo"); context.putRequestParameter("integerProperty", "5"); context.putRequestParameter("dateProperty", "2007-01-01"); BindBean bindBean = new ValidatingBindBean(); StaticExpression modelObject = new StaticExpression(bindBean); modelObject.setExpressionString("bindBean"); context.getCurrentState().getAttributes().put("model", modelObject); context.getFlowScope().put("bindBean", bindBean); context.getMockExternalContext().setNativeContext(new MockServletContext()); context.getMockExternalContext().setNativeRequest(new MockHttpServletRequest()); context.getMockExternalContext().setNativeResponse(new MockHttpServletResponse()); context.getMockFlowExecutionContext().setKey(new MockFlowExecutionKey("c1v1")); org.springframework.web.servlet.View mvcView = new MockView(); AbstractMvcView view = new MockMvcView(mvcView, context); view.setExpressionParser(DefaultExpressionParserFactory.getExpressionParser()); assertTrue(view.userEventQueued()); view.processUserEvent(); assertFalse(view.userEventQueued()); assertTrue(view.hasFlowEvent()); assertEquals("submit", view.getFlowEvent().getId()); assertTrue(bindBean.validationMethodInvoked); } public void testResumeEventModelBindAndValidateDefaultValidatorFallback() throws Exception { MockRequestContext context = new MockRequestContext(); context.putRequestParameter("_eventId", "submit"); context.putRequestParameter("stringProperty", "foo"); context.putRequestParameter("integerProperty", "5"); context.putRequestParameter("dateProperty", "2007-01-01"); BindBean bindBean = new ValidatingBindBeanFallback(); StaticExpression modelObject = new StaticExpression(bindBean); modelObject.setExpressionString("bindBean"); context.getCurrentState().getAttributes().put("model", modelObject); context.getFlowScope().put("bindBean", bindBean); context.getMockExternalContext().setNativeContext(new MockServletContext()); context.getMockExternalContext().setNativeRequest(new MockHttpServletRequest()); context.getMockExternalContext().setNativeResponse(new MockHttpServletResponse()); context.getMockFlowExecutionContext().setKey(new MockFlowExecutionKey("c1v1")); org.springframework.web.servlet.View mvcView = new MockView(); AbstractMvcView view = new MockMvcView(mvcView, context); view.setExpressionParser(DefaultExpressionParserFactory.getExpressionParser()); assertTrue(view.userEventQueued()); view.processUserEvent(); assertFalse(view.userEventQueued()); assertTrue(view.hasFlowEvent()); assertEquals("submit", view.getFlowEvent().getId()); assertTrue(bindBean.validationMethodInvoked); } public void testResumeEventModelValidateOnBindingErrors() throws Exception { MockRequestContext context = new MockRequestContext(); context.putRequestParameter("_eventId", "submit"); context.putRequestParameter("stringProperty", "foo"); context.putRequestParameter("integerProperty", "bogus"); context.putRequestParameter("dateProperty", "2007-01-01"); BindBean bindBean = new ValidatingBindBean(); StaticExpression modelObject = new StaticExpression(bindBean); modelObject.setExpressionString("bindBean"); context.getCurrentState().getAttributes().put("model", modelObject); context.getFlowScope().put("bindBean", bindBean); context.getMockExternalContext().setNativeContext(new MockServletContext()); context.getMockExternalContext().setNativeRequest(new MockHttpServletRequest()); context.getMockExternalContext().setNativeResponse(new MockHttpServletResponse()); context.getMockFlowExecutionContext().setKey(new MockFlowExecutionKey("c1v1")); org.springframework.web.servlet.View mvcView = new MockView(); AbstractMvcView view = new MockMvcView(mvcView, context); view.setExpressionParser(DefaultExpressionParserFactory.getExpressionParser()); view.setMessageCodesResolver(new WebFlowMessageCodesResolver()); view.processUserEvent(); assertFalse(view.hasFlowEvent()); assertTrue(bindBean.validationMethodInvoked); } public void testResumeEventModelNoValidateOnBindingErrors() throws Exception { MockRequestContext context = new MockRequestContext(); context.putRequestParameter("_eventId", "submit"); context.putRequestParameter("stringProperty", "foo"); context.putRequestParameter("integerProperty", "bogus"); context.putRequestParameter("dateProperty", "2007-01-01"); BindBean bindBean = new ValidatingBindBean(); StaticExpression modelObject = new StaticExpression(bindBean); modelObject.setExpressionString("bindBean"); context.getMockFlowExecutionContext().putAttribute("validateOnBindingErrors", Boolean.FALSE); context.getCurrentState().getAttributes().put("model", modelObject); context.getFlowScope().put("bindBean", bindBean); context.getMockExternalContext().setNativeContext(new MockServletContext()); context.getMockExternalContext().setNativeRequest(new MockHttpServletRequest()); context.getMockExternalContext().setNativeResponse(new MockHttpServletResponse()); context.getMockFlowExecutionContext().setKey(new MockFlowExecutionKey("c1v1")); org.springframework.web.servlet.View mvcView = new MockView(); AbstractMvcView view = new MockMvcView(mvcView, context); view.setExpressionParser(DefaultExpressionParserFactory.getExpressionParser()); view.setMessageCodesResolver(new WebFlowMessageCodesResolver()); view.processUserEvent(); assertFalse(view.hasFlowEvent()); assertFalse(bindBean.validationMethodInvoked); } private class MockMvcView extends AbstractMvcView { public MockMvcView(View view, RequestContext context) { super(view, context); } protected void doRender(Map model) throws Exception { getView().render(model, (HttpServletRequest) getRequestContext().getExternalContext().getNativeRequest(), (HttpServletResponse) getRequestContext().getExternalContext().getNativeResponse()); } } private class MockView implements View { public String getContentType() { return "text/html"; } public void render(Map model, HttpServletRequest request, HttpServletResponse response) throws Exception { renderCalled = true; MvcViewTests.this.model = model; } } public static class BindBean { private String stringProperty; private Integer integerProperty = new Integer(3); private Date dateProperty; private boolean booleanProperty = true; private NestedBean beanProperty; private MultipartFile multipartFile; private String[] stringArrayProperty; private Integer[] integerArrayProperty; private int[] primitiveArrayProperty; private List listProperty; private Map mapProperty; private boolean validationMethodInvoked; public BindBean() { Calendar cal = Calendar.getInstance(); cal.clear(); cal.set(Calendar.YEAR, 2008); dateProperty = cal.getTime(); beanProperty = new NestedBean(); } public String getStringProperty() { return stringProperty; } public void setStringProperty(String stringProperty) { this.stringProperty = stringProperty; } public Integer getIntegerProperty() { return integerProperty; } public void setIntegerProperty(Integer integerProperty) { this.integerProperty = integerProperty; } public boolean getBooleanProperty() { return booleanProperty; } public void setBooleanProperty(boolean booleanProperty) { this.booleanProperty = booleanProperty; } public Date getDateProperty() { return dateProperty; } public void setDateProperty(Date dateProperty) { this.dateProperty = dateProperty; } public NestedBean getBeanProperty() { return beanProperty; } public MultipartFile getMultipartFile() { return multipartFile; } public void setMultipartFile(MultipartFile multipartFile) { this.multipartFile = multipartFile; } public String[] getStringArrayProperty() { return stringArrayProperty; } public void setStringArrayProperty(String[] stringArrayProperty) { this.stringArrayProperty = stringArrayProperty; } public Integer[] getIntegerArrayProperty() { return integerArrayProperty; } public void setIntegerArrayProperty(Integer[] integerArrayProperty) { this.integerArrayProperty = integerArrayProperty; } public int[] getPrimitiveArrayProperty() { return primitiveArrayProperty; } public void setPrimitiveArrayProperty(int[] primitiveArrayProperty) { this.primitiveArrayProperty = primitiveArrayProperty; } public List getListProperty() { return listProperty; } public void setListProperty(List listProperty) { this.listProperty = listProperty; } public Map getMapProperty() { return mapProperty; } public void setMapProperty(Map mapProperty) { this.mapProperty = mapProperty; } public void setBeanProperty(NestedBean beanProperty) { this.beanProperty = beanProperty; } } public static class ValidatingBindBean extends BindBean { public void validateMockState(ValidationContext context) { super.validationMethodInvoked = true; } } public static class ValidatingBindBeanFallback extends BindBean { public void validate(ValidationContext context) { assertEquals("submit", context.getUserEvent()); assertNull(context.getUserPrincipal()); assertEquals("foo", context.getUserValue("stringProperty")); super.validationMethodInvoked = true; } } public static class NestedBean { private String name; public String getName() { return name; } public void setName(String name) { this.name = name; } } } ././@LongLink0000000000000000000000000000020600000000000011563 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/test/java/org/springframework/webflow/UnitTestTemplate.javalibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/test/java/org/springframew0000644000000000000000000000177011360615632030011 0ustar /* * Copyright 2004-2008 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.springframework.webflow; import junit.framework.TestCase; /** * Keith likes to have these little cut & paste examples in the source repositories. If only he knew the power of code * templates in Eclipse... */ public class UnitTestTemplate extends TestCase { protected void setUp() throws Exception { } public void testScenario1() { } public void testScenario2() { } } ././@LongLink0000000000000000000000000000017400000000000011567 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/test/java/org/springframework/webflow/expression/libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/test/java/org/springframew0000755000000000000000000000000011360615636030006 5ustar ././@LongLink0000000000000000000000000000024100000000000011562 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/test/java/org/springframework/webflow/expression/WebFlowOgnlExpressionParserTests.javalibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/test/java/org/springframew0000644000000000000000000002142511360615634030012 0ustar package org.springframework.webflow.expression; import java.security.Principal; import java.util.Locale; import junit.framework.TestCase; import org.springframework.binding.expression.Expression; import org.springframework.binding.expression.support.FluentParserContext; import org.springframework.context.support.StaticApplicationContext; import org.springframework.webflow.TestBean; import org.springframework.webflow.action.FormAction; import org.springframework.webflow.core.collection.AttributeMap; import org.springframework.webflow.core.collection.LocalAttributeMap; import org.springframework.webflow.core.collection.MutableAttributeMap; import org.springframework.webflow.engine.StubViewFactory; import org.springframework.webflow.engine.ViewState; import org.springframework.webflow.execution.AnnotatedAction; import org.springframework.webflow.execution.Event; import org.springframework.webflow.execution.RequestContext; import org.springframework.webflow.execution.TestAction; import org.springframework.webflow.test.MockRequestContext; import org.springframework.webflow.test.MockRequestControlContext; public class WebFlowOgnlExpressionParserTests extends TestCase { private WebFlowOgnlExpressionParser parser = new WebFlowOgnlExpressionParser(); public void testResolveMap() { LocalAttributeMap map = new LocalAttributeMap(); map.put("foo", "bar"); Expression exp = parser.parseExpression("foo", new FluentParserContext().evaluate(AttributeMap.class)); Expression exp2 = parser.parseExpression("bogus", new FluentParserContext().evaluate(AttributeMap.class)); assertEquals("bar", exp.getValue(map)); assertEquals(null, exp2.getValue(map)); } public void testSetMap() { LocalAttributeMap map = new LocalAttributeMap(); map.put("foo", "bar"); Expression exp = parser.parseExpression("foo", new FluentParserContext().evaluate(MutableAttributeMap.class)); Expression exp2 = parser .parseExpression("bogus", new FluentParserContext().evaluate(MutableAttributeMap.class)); exp.setValue(map, "baz"); exp2.setValue(map, "new"); assertEquals("baz", exp.getValue(map)); assertEquals("new", exp2.getValue(map)); } public void testResolveFlowRequestContext() { MockRequestContext context = new MockRequestContext(); Expression exp = parser.parseExpression("flowRequestContext", new FluentParserContext() .evaluate(RequestContext.class)); assertSame(context, exp.getValue(context)); } public void testResolveCurrentUser() { MockRequestContext context = new MockRequestContext(); context.getMockExternalContext().setCurrentUser("Keith"); Expression exp = parser .parseExpression("currentUser", new FluentParserContext().evaluate(RequestContext.class)); assertEquals("Keith", ((Principal) exp.getValue(context)).getName()); } public void testResolveRequestScope() { MockRequestContext context = new MockRequestContext(); context.getRequestScope().put("foo", "bar"); Expression exp = parser.parseExpression("foo", new FluentParserContext().evaluate(RequestContext.class)); assertEquals("bar", exp.getValue(context)); } public void testSetRequestScope() { MockRequestContext context = new MockRequestContext(); context.getRequestScope().put("foo", "bar"); Expression exp = parser.parseExpression("foo", new FluentParserContext().evaluate(RequestContext.class)); exp.setValue(context, "baz"); assertEquals("baz", exp.getValue(context)); } public void testResolveFlashScope() { MockRequestContext context = new MockRequestContext(); context.getFlashScope().put("foo", "bar"); Expression exp = parser.parseExpression("foo", new FluentParserContext().evaluate(RequestContext.class)); assertEquals("bar", exp.getValue(context)); } public void testSetFlashScope() { MockRequestContext context = new MockRequestContext(); context.getFlashScope().put("foo", "bar"); Expression exp = parser.parseExpression("foo", new FluentParserContext().evaluate(RequestContext.class)); exp.setValue(context, "baz"); assertEquals("baz", exp.getValue(context)); } public void testResolveViewScope() { MockRequestControlContext context = new MockRequestControlContext(); ViewState state = new ViewState(context.getRootFlow(), "view", new StubViewFactory()); context.setCurrentState(state); context.getViewScope().put("foo", "bar"); Expression exp = parser.parseExpression("foo", new FluentParserContext().evaluate(RequestContext.class)); assertEquals("bar", exp.getValue(context)); } public void testSetViewScope() { MockRequestControlContext context = new MockRequestControlContext(); ViewState state = new ViewState(context.getRootFlow(), "view", new StubViewFactory()); context.setCurrentState(state); context.getViewScope().put("foo", "bar"); Expression exp = parser.parseExpression("foo", new FluentParserContext().evaluate(RequestContext.class)); exp.setValue(context, "baz"); assertEquals("baz", exp.getValue(context)); } public void testResolveFlowScope() { MockRequestContext context = new MockRequestContext(); context.getFlowScope().put("foo", "bar"); Expression exp = parser.parseExpression("foo", new FluentParserContext().evaluate(RequestContext.class)); assertEquals("bar", exp.getValue(context)); } public void testSetFlowScope() { MockRequestContext context = new MockRequestContext(); context.getFlowScope().put("foo", "bar"); Expression exp = parser.parseExpression("foo", new FluentParserContext().evaluate(RequestContext.class)); exp.setValue(context, "baz"); assertEquals("baz", exp.getValue(context)); } public void testResolveConversationScope() { MockRequestContext context = new MockRequestContext(); context.getConversationScope().put("foo", "bar"); Expression exp = parser.parseExpression("foo", new FluentParserContext().evaluate(RequestContext.class)); assertEquals("bar", exp.getValue(context)); } public void testSetConversationScope() { MockRequestContext context = new MockRequestContext(); context.getConversationScope().put("foo", "bar"); Expression exp = parser.parseExpression("foo", new FluentParserContext().evaluate(RequestContext.class)); exp.setValue(context, "baz"); assertEquals("baz", exp.getValue(context)); } public void testResolveSpringBean() { MockRequestContext context = new MockRequestContext(); StaticApplicationContext ac = new StaticApplicationContext(); ac.getBeanFactory().registerSingleton("testBean", new TestBean()); ac.getBeanFactory().registerSingleton("action", new TestAction()); ac.getBeanFactory().registerSingleton("multiAction", new FormAction(TestBean.class)); context.getRootFlow().setApplicationContext(ac); context.getConversationScope().put("foo", "bar"); Expression exp = parser.parseExpression("foo", new FluentParserContext().evaluate(RequestContext.class)); assertEquals("bar", exp.getValue(context)); } public void testResolveAction() { MockRequestContext context = new MockRequestContext(); StaticApplicationContext ac = new StaticApplicationContext(); ac.getBeanFactory().registerSingleton("testBean", new TestBean()); ac.getBeanFactory().registerSingleton("action", new TestAction()); context.getRootFlow().setApplicationContext(ac); Expression exp = parser.parseExpression("action", new FluentParserContext().evaluate(RequestContext.class)); assertSame(ac.getBean("action"), exp.getValue(context)); } public void testResolveMultiAction() { MockRequestContext context = new MockRequestContext(); StaticApplicationContext ac = new StaticApplicationContext(); ac.getBeanFactory().registerSingleton("multiAction", new FormAction()); context.getRootFlow().setApplicationContext(ac); Expression exp = parser.parseExpression("multiAction.setupForm", new FluentParserContext() .evaluate(RequestContext.class)); AnnotatedAction action = (AnnotatedAction) exp.getValue(context); assertSame(ac.getBean("multiAction"), action.getTargetAction()); assertEquals("setupForm", action.getMethod()); } public void testResolveEventAttributes() { MockRequestContext context = new MockRequestContext(); LocalAttributeMap attributes = new LocalAttributeMap(); attributes.put("foo", "bar"); context.setCurrentEvent(new Event(this, "event", attributes)); Expression exp = parser.parseExpression("currentEvent.attributes.foo", new FluentParserContext() .evaluate(RequestContext.class)); assertEquals("bar", exp.getValue(context)); } public void testResolveMessage() { MockRequestContext context = new MockRequestContext(); StaticApplicationContext ac = new StaticApplicationContext(); ac.getStaticMessageSource().addMessage("foo", Locale.FRANCE, "bar"); ac.refresh(); context.getRootFlow().setApplicationContext(ac); context.getMockExternalContext().setLocale(Locale.FRANCE); Expression exp = parser.parseExpression("resourceBundle.foo", new FluentParserContext() .evaluate(RequestContext.class)); assertEquals("bar", exp.getValue(context)); } } ././@LongLink0000000000000000000000000000017700000000000011572 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/test/java/org/springframework/webflow/expression/el/libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/test/java/org/springframew0000755000000000000000000000000011360615642030003 5ustar ././@LongLink0000000000000000000000000000024700000000000011570 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/test/java/org/springframework/webflow/expression/el/ImplicitFlowVariableELResolverTests.javalibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/test/java/org/springframew0000644000000000000000000002465411360615636030023 0ustar package org.springframework.webflow.expression.el; import java.security.Principal; import java.util.ArrayList; import java.util.Iterator; import java.util.List; import javax.el.PropertyNotWritableException; import org.springframework.binding.message.MessageContext; import org.springframework.util.ClassUtils; import org.springframework.webflow.context.ExternalContext; import org.springframework.webflow.core.collection.MutableAttributeMap; import org.springframework.webflow.core.collection.ParameterMap; import org.springframework.webflow.execution.Event; import org.springframework.webflow.execution.FlowExecutionContext; import org.springframework.webflow.execution.RequestContextHolder; import org.springframework.webflow.test.MockExternalContext; import org.springframework.webflow.test.MockFlowExecutionContext; import org.springframework.webflow.test.MockFlowExecutionKey; import org.springframework.webflow.test.MockRequestContext; public class ImplicitFlowVariableELResolverTests extends FlowDependentELResolverTestCase { private static final List vars = new ArrayList(); { vars.add("requestParameters"); vars.add("requestScope"); vars.add("flashScope"); vars.add("viewScope"); vars.add("flowScope"); vars.add("conversationScope"); vars.add("messageContext"); vars.add("externalContext"); vars.add("flowExecutionContext"); vars.add("flowExecutionUrl"); vars.add("currentUser"); vars.add("currentEvent"); }; public void testGetType_RequestParameters() { RequestContextHolder.setRequestContext(new MockRequestContext()); assertTrue(ClassUtils.isAssignable(ParameterMap.class, context.getELResolver().getType(context, null, "requestParameters"))); assertTrue(context.isPropertyResolved()); } public void testGetType_RequestScope() { RequestContextHolder.setRequestContext(new MockRequestContext()); assertTrue(ClassUtils.isAssignable(MutableAttributeMap.class, context.getELResolver().getType(context, null, "requestScope"))); assertTrue(context.isPropertyResolved()); } public void testGetType_FlashScope() { RequestContextHolder.setRequestContext(new MockRequestContext()); assertTrue(ClassUtils.isAssignable(MutableAttributeMap.class, context.getELResolver().getType(context, null, "flashScope"))); assertTrue(context.isPropertyResolved()); } public void testGetType_ViewScope() { MockRequestContext requestContext = new MockRequestContext(); RequestContextHolder.setRequestContext(requestContext); initView(requestContext); assertTrue(ClassUtils.isAssignable(MutableAttributeMap.class, context.getELResolver().getType(context, null, "viewScope"))); assertTrue(context.isPropertyResolved()); } public void testGetType_FlowScope() { RequestContextHolder.setRequestContext(new MockRequestContext()); assertTrue(ClassUtils.isAssignable(MutableAttributeMap.class, context.getELResolver().getType(context, null, "flowScope"))); assertTrue(context.isPropertyResolved()); } public void testGetType_ConversationScope() { RequestContextHolder.setRequestContext(new MockRequestContext()); assertTrue(ClassUtils.isAssignable(MutableAttributeMap.class, context.getELResolver().getType(context, null, "conversationScope"))); assertTrue(context.isPropertyResolved()); } public void testGetType_MessageContext() { RequestContextHolder.setRequestContext(new MockRequestContext()); assertTrue(ClassUtils.isAssignable(MessageContext.class, context.getELResolver().getType(context, null, "messageContext"))); assertTrue(context.isPropertyResolved()); } public void testGetType_ExternalContext() { RequestContextHolder.setRequestContext(new MockRequestContext()); assertTrue(ClassUtils.isAssignable(ExternalContext.class, context.getELResolver().getType(context, null, "externalContext"))); assertTrue(context.isPropertyResolved()); } public void testGetType_FlowExecutionContext() { RequestContextHolder.setRequestContext(new MockRequestContext()); assertTrue(ClassUtils.isAssignable(FlowExecutionContext.class, context.getELResolver().getType(context, null, "flowExecutionContext"))); assertTrue(context.isPropertyResolved()); } public void testGetType_FlowExecutionUrl() { MockRequestContext requestContext = new MockRequestContext(); ((MockFlowExecutionContext) requestContext.getFlowExecutionContext()).setKey(new MockFlowExecutionKey("e1s1")); RequestContextHolder.setRequestContext(requestContext); assertTrue(ClassUtils.isAssignable(String.class, context.getELResolver().getType(context, null, "flowExecutionUrl"))); assertTrue(context.isPropertyResolved()); } public void testGetType_CurrentUser() { MockRequestContext requestContext = new MockRequestContext(); ((MockExternalContext) requestContext.getExternalContext()).setCurrentUser("jjg"); RequestContextHolder.setRequestContext(requestContext); assertTrue(ClassUtils.isAssignable(Principal.class, context.getELResolver().getType(context, null, "currentUser"))); assertTrue(context.isPropertyResolved()); } public void testGetType_CurrentEvent() { MockRequestContext requestContext = new MockRequestContext(); requestContext.setCurrentEvent(new Event(this, "foo")); RequestContextHolder.setRequestContext(requestContext); assertTrue(ClassUtils.isAssignable(Event.class, context.getELResolver().getType(context, null, "currentEvent"))); assertTrue(context.isPropertyResolved()); } public void testGetValue_RequestParameters() { MockRequestContext requestContext = new MockRequestContext(); RequestContextHolder.setRequestContext(requestContext); assertSame(requestContext.getRequestParameters(), context.getELResolver().getValue(context, null, "requestParameters")); assertTrue(context.isPropertyResolved()); } public void testGetValue_RequestScope() { MockRequestContext requestContext = new MockRequestContext(); RequestContextHolder.setRequestContext(requestContext); assertSame(requestContext.getRequestScope(), context.getELResolver().getValue(context, null, "requestScope")); assertTrue(context.isPropertyResolved()); } public void testGetValue_FlashScope() { MockRequestContext requestContext = new MockRequestContext(); RequestContextHolder.setRequestContext(requestContext); assertSame(requestContext.getFlashScope(), context.getELResolver().getValue(context, null, "flashScope")); assertTrue(context.isPropertyResolved()); } public void testGetValue_ViewScope() { MockRequestContext requestContext = new MockRequestContext(); initView(requestContext); RequestContextHolder.setRequestContext(requestContext); assertSame(requestContext.getViewScope(), context.getELResolver().getValue(context, null, "viewScope")); assertTrue(context.isPropertyResolved()); } public void testGetValue_FlowScope() { MockRequestContext requestContext = new MockRequestContext(); RequestContextHolder.setRequestContext(requestContext); assertSame(requestContext.getFlowScope(), context.getELResolver().getValue(context, null, "flowScope")); assertTrue(context.isPropertyResolved()); } public void testGetValue_ConversationScope() { MockRequestContext requestContext = new MockRequestContext(); RequestContextHolder.setRequestContext(requestContext); assertSame(requestContext.getConversationScope(), context.getELResolver().getValue(context, null, "conversationScope")); assertTrue(context.isPropertyResolved()); } public void testGetValue_MessageContext() { MockRequestContext requestContext = new MockRequestContext(); RequestContextHolder.setRequestContext(requestContext); assertSame(requestContext.getMessageContext(), context.getELResolver() .getValue(context, null, "messageContext")); assertTrue(context.isPropertyResolved()); } public void testGetValue_ExternalContext() { MockRequestContext requestContext = new MockRequestContext(); RequestContextHolder.setRequestContext(requestContext); assertSame(requestContext.getExternalContext(), context.getELResolver().getValue(context, null, "externalContext")); assertTrue(context.isPropertyResolved()); } public void testGetValue_FlowExecutionContext() { MockRequestContext requestContext = new MockRequestContext(); RequestContextHolder.setRequestContext(requestContext); assertSame(requestContext.getFlowExecutionContext(), context.getELResolver().getValue(context, null, "flowExecutionContext")); assertTrue(context.isPropertyResolved()); } public void testGetValue_FlowExecutionUrl() { MockRequestContext requestContext = new MockRequestContext(); ((MockFlowExecutionContext) requestContext.getFlowExecutionContext()).setKey(new MockFlowExecutionKey("e1s1")); RequestContextHolder.setRequestContext(requestContext); assertEquals(requestContext.getFlowExecutionUrl(), context.getELResolver().getValue(context, null, "flowExecutionUrl")); assertTrue(context.isPropertyResolved()); } public void testGetValue_CurrentUser() { MockRequestContext requestContext = new MockRequestContext(); ((MockExternalContext) requestContext.getExternalContext()).setCurrentUser("jjg"); RequestContextHolder.setRequestContext(requestContext); assertSame(requestContext.getExternalContext().getCurrentUser(), context.getELResolver().getValue(context, null, "currentUser")); assertTrue(context.isPropertyResolved()); } public void testGetValue_CurrentEvent() { MockRequestContext requestContext = new MockRequestContext(); requestContext.setCurrentEvent(new Event(this, "foo")); RequestContextHolder.setRequestContext(requestContext); assertSame(requestContext.getCurrentEvent(), context.getELResolver().getValue(context, null, "currentEvent")); assertTrue(context.isPropertyResolved()); } public void testIsReadOnly_AllVars() { RequestContextHolder.setRequestContext(new MockRequestContext()); Iterator i = vars.iterator(); while (i.hasNext()) { String var = (String) i.next(); assertTrue(context.getELResolver().isReadOnly(context, null, var)); } } public void testSetValue_AllVars() { RequestContextHolder.setRequestContext(new MockRequestContext()); Iterator i = vars.iterator(); while (i.hasNext()) { String var = (String) i.next(); try { context.getELResolver().setValue(context, null, var, new Object()); fail("setValue should not be allowed"); } catch (PropertyNotWritableException ex) { assertTrue(context.isPropertyResolved()); } } } protected String getBaseVariable() { return "flowScope"; } protected List getCustomResolvers() { List resolvers = new ArrayList(); resolvers.add(new ImplicitFlowVariableELResolver()); return resolvers; } } ././@LongLink0000000000000000000000000000023700000000000011567 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/test/java/org/springframework/webflow/expression/el/FlowResourceELResolverTests.javalibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/test/java/org/springframew0000644000000000000000000001060311360615640030003 0ustar package org.springframework.webflow.expression.el; import java.util.ArrayList; import java.util.List; import java.util.Locale; import javax.el.PropertyNotFoundException; import javax.el.PropertyNotWritableException; import org.springframework.context.MessageSource; import org.springframework.context.support.StaticMessageSource; import org.springframework.web.context.support.StaticWebApplicationContext; import org.springframework.webflow.engine.Flow; import org.springframework.webflow.execution.RequestContextHolder; import org.springframework.webflow.test.MockRequestContext; public class FlowResourceELResolverTests extends FlowDependentELResolverTestCase { public void testGetType_BaseVariable() { RequestContextHolder.setRequestContext(new MockRequestContext()); assertEquals(getBaseVariable() + " should have a type of MessageSource", MessageSource.class, context .getELResolver().getType(context, null, getBaseVariable())); } public void testGetType_ResolvableCode() { StaticMessageSource ms = new StaticMessageSource(); ms.addMessage("foo.bar", Locale.getDefault(), "hello"); RequestContextHolder.setRequestContext(new MockRequestContext()); assertEquals("Message should resolve to a type of String", String.class, context.getELResolver().getType( context, ms, "foo.bar")); } public void testGetType_InvalidCode() { StaticMessageSource ms = new StaticMessageSource(); ms.addMessage("foo.bar", Locale.getDefault(), "hello"); RequestContextHolder.setRequestContext(new MockRequestContext()); try { context.getELResolver().getType(context, ms, "foo.baz"); fail("Message should not be resolvable"); } catch (PropertyNotFoundException ex) { // expected } } public void testGetValue_BaseVariable() { MockRequestContext requestContext = new MockRequestContext(); ((Flow) requestContext.getActiveFlow()).setApplicationContext(new StaticWebApplicationContext()); RequestContextHolder.setRequestContext(requestContext); assertTrue(getBaseVariable() + " should resolve to an instance of MessageSource", context.getELResolver() .getValue(context, null, getBaseVariable()) instanceof MessageSource); } public void testGetValue_ResolvableCode() { StaticMessageSource ms = new StaticMessageSource(); ms.addMessage("foo.bar", Locale.getDefault(), "hello"); RequestContextHolder.setRequestContext(new MockRequestContext()); assertEquals("Message should resolve to a valid message value", "hello", context.getELResolver().getValue( context, ms, "foo.bar")); } public void testGetValue_InvalidCode() { StaticMessageSource ms = new StaticMessageSource(); ms.addMessage("foo.bar", Locale.getDefault(), "hello"); RequestContextHolder.setRequestContext(new MockRequestContext()); try { context.getELResolver().getValue(context, ms, "foo.baz"); fail("Message should not be resolvable"); } catch (PropertyNotFoundException ex) { // expected } } public void testIsReadOnly_BaseVariable() { RequestContextHolder.setRequestContext(new MockRequestContext()); assertTrue("isReadOnly should return true for the base variable", context.getELResolver().isReadOnly(context, null, getBaseVariable())); } public void testIsReadOnly_MessageSourceBase() { StaticMessageSource ms = new StaticMessageSource(); RequestContextHolder.setRequestContext(new MockRequestContext()); assertTrue("isReadOnly should return true when the base is a MessageSource", context.getELResolver() .isReadOnly(context, ms, "foo")); } public void testSetValue_BaseVariable() { RequestContextHolder.setRequestContext(new MockRequestContext()); try { context.getELResolver().setValue(context, null, getBaseVariable(), null); fail("setValue should fail for a base variable of " + getBaseVariable()); } catch (PropertyNotWritableException ex) { // expected } } public void testSetValue_MessageSourceBase() { StaticMessageSource ms = new StaticMessageSource(); RequestContextHolder.setRequestContext(new MockRequestContext()); try { context.getELResolver().setValue(context, ms, "foo", null); fail("setValue should fail when the base is a MessageSource"); } catch (PropertyNotWritableException ex) { // expected } } protected String getBaseVariable() { return FlowResourceELResolver.RESOURCE_BUNDLE_KEY; } protected List getCustomResolvers() { List resolvers = new ArrayList(); resolvers.add(new FlowResourceELResolver()); return resolvers; } } ././@LongLink0000000000000000000000000000024300000000000011564 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/test/java/org/springframework/webflow/expression/el/FlowDependentELResolverTestCase.javalibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/test/java/org/springframew0000644000000000000000000000451411360615632030010 0ustar package org.springframework.webflow.expression.el; import java.util.List; import javax.el.ELContext; import junit.framework.TestCase; import org.springframework.binding.expression.el.DefaultELContext; import org.springframework.binding.expression.el.DefaultELResolver; import org.springframework.webflow.engine.ViewState; import org.springframework.webflow.execution.RequestContext; import org.springframework.webflow.execution.RequestContextHolder; import org.springframework.webflow.execution.View; import org.springframework.webflow.execution.ViewFactory; import org.springframework.webflow.test.MockFlowSession; import org.springframework.webflow.test.MockRequestContext; public abstract class FlowDependentELResolverTestCase extends TestCase { protected ELContext context; public void setUp() { context = new DefaultELContext(new DefaultELResolver(getCustomResolvers()), null, null); } public void tearDown() { RequestContextHolder.setRequestContext(null); } public void testGetType_NoActiveFlow() { assertNull("getType should return null when no flow is active", context.getELResolver().getType(context, null, getBaseVariable())); assertFalse(context.isPropertyResolved()); } public void testGetValue_NoActiveFlow() { assertNull("getValue should return null when no flow is active", context.getELResolver().getValue(context, null, getBaseVariable())); assertFalse(context.isPropertyResolved()); } public void testIsReadOnly_NoActiveFlow() { assertFalse("isReadOnly should return false when no flow is active", context.getELResolver().isReadOnly( context, null, getBaseVariable())); assertFalse(context.isPropertyResolved()); } public void testSetValue_NoActiveFlow() { context.getELResolver().setValue(context, null, getBaseVariable(), null); assertFalse("setValue should be a no-op when no flow is active", context.isPropertyResolved()); } protected void initView(MockRequestContext requestContext) { ((MockFlowSession) requestContext.getFlowExecutionContext().getActiveSession()).setState(new ViewState( requestContext.getRootFlow(), "view", new ViewFactory() { public View getView(RequestContext context) { throw new UnsupportedOperationException("Auto-generated method stub"); } })); } protected abstract String getBaseVariable(); protected abstract List getCustomResolvers(); } ././@LongLink0000000000000000000000000000024100000000000011562 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/test/java/org/springframework/webflow/expression/el/ScopeSearchingELResolverTests.javalibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/test/java/org/springframew0000644000000000000000000002331511360615632030010 0ustar package org.springframework.webflow.expression.el; import java.util.ArrayList; import java.util.List; import org.springframework.webflow.execution.RequestContextHolder; import org.springframework.webflow.test.MockRequestContext; public class ScopeSearchingELResolverTests extends FlowDependentELResolverTestCase { public void testGetType_RequestScope() { MyBean foo = new MyBean(); MockRequestContext requestContext = new MockRequestContext(); requestContext.getRequestScope().put(getBaseVariable(), foo); RequestContextHolder.setRequestContext(requestContext); assertEquals(MyBean.class, context.getELResolver().getType(context, null, getBaseVariable())); } public void testGetType_FlashScope() { MyBean foo = new MyBean(); MockRequestContext requestContext = new MockRequestContext(); requestContext.getFlashScope().put(getBaseVariable(), foo); RequestContextHolder.setRequestContext(requestContext); assertEquals(MyBean.class, context.getELResolver().getType(context, null, getBaseVariable())); } public void testGetType_ViewScope() { MyBean foo = new MyBean(); MockRequestContext requestContext = new MockRequestContext(); initView(requestContext); requestContext.getViewScope().put(getBaseVariable(), foo); RequestContextHolder.setRequestContext(requestContext); assertEquals(MyBean.class, context.getELResolver().getType(context, null, getBaseVariable())); } public void testGetType_FlowScope() { MyBean foo = new MyBean(); MockRequestContext requestContext = new MockRequestContext(); requestContext.getFlowScope().put(getBaseVariable(), foo); RequestContextHolder.setRequestContext(requestContext); assertEquals(MyBean.class, context.getELResolver().getType(context, null, getBaseVariable())); } public void testGetType_ConversationScope() { MyBean foo = new MyBean(); MockRequestContext requestContext = new MockRequestContext(); requestContext.getConversationScope().put(getBaseVariable(), foo); RequestContextHolder.setRequestContext(requestContext); assertEquals(MyBean.class, context.getELResolver().getType(context, null, getBaseVariable())); } public void testGetType_NotFound() { MockRequestContext requestContext = new MockRequestContext(); RequestContextHolder.setRequestContext(requestContext); assertNull(context.getELResolver().getType(context, null, getBaseVariable())); assertFalse(context.isPropertyResolved()); } public void testGetValue_RequestScope() { MyBean foo = new MyBean(); MockRequestContext requestContext = new MockRequestContext(); requestContext.getRequestScope().put(getBaseVariable(), foo); RequestContextHolder.setRequestContext(requestContext); assertSame(foo, context.getELResolver().getValue(context, null, getBaseVariable())); } public void testGetValue_FlashScope() { MyBean foo = new MyBean(); MockRequestContext requestContext = new MockRequestContext(); requestContext.getFlashScope().put(getBaseVariable(), foo); RequestContextHolder.setRequestContext(requestContext); assertSame(foo, context.getELResolver().getValue(context, null, getBaseVariable())); } public void testGetValue_ViewScope() { MyBean foo = new MyBean(); MockRequestContext requestContext = new MockRequestContext(); initView(requestContext); requestContext.getViewScope().put(getBaseVariable(), foo); RequestContextHolder.setRequestContext(requestContext); assertSame(foo, context.getELResolver().getValue(context, null, getBaseVariable())); } public void testGetValue_FlowScope() { MyBean foo = new MyBean(); MockRequestContext requestContext = new MockRequestContext(); requestContext.getFlowScope().put(getBaseVariable(), foo); RequestContextHolder.setRequestContext(requestContext); assertSame(foo, context.getELResolver().getValue(context, null, getBaseVariable())); } public void testGetValue_ConversationScope() { MyBean foo = new MyBean(); MockRequestContext requestContext = new MockRequestContext(); requestContext.getConversationScope().put(getBaseVariable(), foo); RequestContextHolder.setRequestContext(requestContext); assertSame(foo, context.getELResolver().getValue(context, null, getBaseVariable())); } public void testGetValue_NotFound() { MockRequestContext requestContext = new MockRequestContext(); RequestContextHolder.setRequestContext(requestContext); assertNull(context.getELResolver().getValue(context, null, getBaseVariable())); assertFalse(context.isPropertyResolved()); } public void testIsReadOnly_RequestScope() { MyBean foo = new MyBean(); MockRequestContext requestContext = new MockRequestContext(); requestContext.getRequestScope().put(getBaseVariable(), foo); RequestContextHolder.setRequestContext(requestContext); assertFalse(context.getELResolver().isReadOnly(context, null, getBaseVariable())); assertTrue(context.isPropertyResolved()); } public void testIsReadOnly_FlashScope() { MyBean foo = new MyBean(); MockRequestContext requestContext = new MockRequestContext(); requestContext.getFlashScope().put(getBaseVariable(), foo); RequestContextHolder.setRequestContext(requestContext); assertFalse(context.getELResolver().isReadOnly(context, null, getBaseVariable())); assertTrue(context.isPropertyResolved()); } public void testIsReadOnly_ViewScope() { MyBean foo = new MyBean(); MockRequestContext requestContext = new MockRequestContext(); initView(requestContext); requestContext.getViewScope().put(getBaseVariable(), foo); RequestContextHolder.setRequestContext(requestContext); assertFalse(context.getELResolver().isReadOnly(context, null, getBaseVariable())); assertTrue(context.isPropertyResolved()); } public void testIsReadOnly_FlowScope() { MyBean foo = new MyBean(); MockRequestContext requestContext = new MockRequestContext(); requestContext.getFlowScope().put(getBaseVariable(), foo); RequestContextHolder.setRequestContext(requestContext); assertFalse(context.getELResolver().isReadOnly(context, null, getBaseVariable())); assertTrue(context.isPropertyResolved()); } public void testIsReadOnly_ConversationScope() { MyBean foo = new MyBean(); MockRequestContext requestContext = new MockRequestContext(); requestContext.getConversationScope().put(getBaseVariable(), foo); RequestContextHolder.setRequestContext(requestContext); assertFalse(context.getELResolver().isReadOnly(context, null, getBaseVariable())); assertTrue(context.isPropertyResolved()); } public void testIsReadOnly_NotFound() { MockRequestContext requestContext = new MockRequestContext(); RequestContextHolder.setRequestContext(requestContext); assertFalse(context.getELResolver().isReadOnly(context, null, getBaseVariable())); assertFalse(context.isPropertyResolved()); } public void testSetValue_RequestScope() { MyBean foo1 = new MyBean(); MyBean foo2 = new MyBean(); MockRequestContext requestContext = new MockRequestContext(); requestContext.getRequestScope().put(getBaseVariable(), foo1); RequestContextHolder.setRequestContext(requestContext); context.getELResolver().setValue(context, null, getBaseVariable(), foo2); assertSame(foo2, requestContext.getRequestScope().get(getBaseVariable())); assertTrue(context.isPropertyResolved()); } public void testSetValue_FlashScope() { MyBean foo1 = new MyBean(); MyBean foo2 = new MyBean(); MockRequestContext requestContext = new MockRequestContext(); requestContext.getFlashScope().put(getBaseVariable(), foo1); RequestContextHolder.setRequestContext(requestContext); context.getELResolver().setValue(context, null, getBaseVariable(), foo2); assertSame(foo2, requestContext.getFlashScope().get(getBaseVariable())); assertTrue(context.isPropertyResolved()); } public void testSetValue_ViewScope() { MyBean foo1 = new MyBean(); MyBean foo2 = new MyBean(); MockRequestContext requestContext = new MockRequestContext(); initView(requestContext); requestContext.getViewScope().put(getBaseVariable(), foo1); RequestContextHolder.setRequestContext(requestContext); context.getELResolver().setValue(context, null, getBaseVariable(), foo2); assertSame(foo2, requestContext.getViewScope().get(getBaseVariable())); assertTrue(context.isPropertyResolved()); } public void testSetValue_FlowScope() { MyBean foo1 = new MyBean(); MyBean foo2 = new MyBean(); MockRequestContext requestContext = new MockRequestContext(); requestContext.getFlowScope().put(getBaseVariable(), foo1); RequestContextHolder.setRequestContext(requestContext); context.getELResolver().setValue(context, null, getBaseVariable(), foo2); assertSame(foo2, requestContext.getFlowScope().get(getBaseVariable())); assertTrue(context.isPropertyResolved()); } public void testSetValue_ConversationScope() { MyBean foo1 = new MyBean(); MyBean foo2 = new MyBean(); MockRequestContext requestContext = new MockRequestContext(); requestContext.getConversationScope().put(getBaseVariable(), foo1); RequestContextHolder.setRequestContext(requestContext); context.getELResolver().setValue(context, null, getBaseVariable(), foo2); assertSame(foo2, requestContext.getConversationScope().get(getBaseVariable())); assertTrue(context.isPropertyResolved()); } public void testSetValue_NotFound() { MyBean foo = new MyBean(); MockRequestContext requestContext = new MockRequestContext(); RequestContextHolder.setRequestContext(requestContext); context.getELResolver().setValue(context, null, getBaseVariable(), foo); assertFalse(context.isPropertyResolved()); } protected String getBaseVariable() { return "foo"; } protected List getCustomResolvers() { List resolvers = new ArrayList(); resolvers.add(new ScopeSearchingELResolver()); return resolvers; } private static class MyBean { private String bar = ""; public void setBar(String bar) { this.bar = bar; } public String getBar() { return this.bar; } } } ././@LongLink0000000000000000000000000000024200000000000011563 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/test/java/org/springframework/webflow/expression/el/WebFlowELExpressionParserTests.javalibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/test/java/org/springframew0000644000000000000000000002162211360615642030010 0ustar package org.springframework.webflow.expression.el; import java.security.Principal; import java.util.Locale; import junit.framework.TestCase; import org.springframework.binding.expression.Expression; import org.springframework.binding.expression.el.DefaultExpressionFactoryUtils; import org.springframework.binding.expression.support.FluentParserContext; import org.springframework.context.support.StaticApplicationContext; import org.springframework.webflow.TestBean; import org.springframework.webflow.action.FormAction; import org.springframework.webflow.core.collection.AttributeMap; import org.springframework.webflow.core.collection.LocalAttributeMap; import org.springframework.webflow.core.collection.MutableAttributeMap; import org.springframework.webflow.engine.StubViewFactory; import org.springframework.webflow.engine.ViewState; import org.springframework.webflow.execution.AnnotatedAction; import org.springframework.webflow.execution.Event; import org.springframework.webflow.execution.RequestContext; import org.springframework.webflow.execution.TestAction; import org.springframework.webflow.test.MockRequestContext; import org.springframework.webflow.test.MockRequestControlContext; public class WebFlowELExpressionParserTests extends TestCase { private WebFlowELExpressionParser parser = new WebFlowELExpressionParser(DefaultExpressionFactoryUtils .createExpressionFactory()); public void testResolveMap() { LocalAttributeMap map = new LocalAttributeMap(); map.put("foo", "bar"); Expression exp = parser.parseExpression("foo", new FluentParserContext().evaluate(AttributeMap.class)); Expression exp2 = parser.parseExpression("bogus", new FluentParserContext().evaluate(AttributeMap.class)); assertEquals("bar", exp.getValue(map)); assertEquals(null, exp2.getValue(map)); } public void testSetMap() { LocalAttributeMap map = new LocalAttributeMap(); map.put("foo", "bar"); Expression exp = parser.parseExpression("foo", new FluentParserContext().evaluate(MutableAttributeMap.class)); Expression exp2 = parser .parseExpression("bogus", new FluentParserContext().evaluate(MutableAttributeMap.class)); exp.setValue(map, "baz"); exp2.setValue(map, "new"); assertEquals("baz", exp.getValue(map)); assertEquals("new", exp2.getValue(map)); } public void testResolveFlowRequestContext() { MockRequestContext context = new MockRequestContext(); Expression exp = parser.parseExpression("flowRequestContext", new FluentParserContext() .evaluate(RequestContext.class)); assertSame(context, exp.getValue(context)); } public void testResolveCurrentUser() { MockRequestContext context = new MockRequestContext(); context.getMockExternalContext().setCurrentUser("Keith"); Expression exp = parser .parseExpression("currentUser", new FluentParserContext().evaluate(RequestContext.class)); assertEquals("Keith", ((Principal) exp.getValue(context)).getName()); } public void testResolveRequestScope() { MockRequestContext context = new MockRequestContext(); context.getRequestScope().put("foo", "bar"); Expression exp = parser.parseExpression("foo", new FluentParserContext().evaluate(RequestContext.class)); assertEquals("bar", exp.getValue(context)); } public void testSetRequestScope() { MockRequestContext context = new MockRequestContext(); context.getRequestScope().put("foo", "bar"); Expression exp = parser.parseExpression("foo", new FluentParserContext().evaluate(RequestContext.class)); exp.setValue(context, "baz"); assertEquals("baz", exp.getValue(context)); } public void testResolveFlashScope() { MockRequestContext context = new MockRequestContext(); context.getFlashScope().put("foo", "bar"); Expression exp = parser.parseExpression("foo", new FluentParserContext().evaluate(RequestContext.class)); assertEquals("bar", exp.getValue(context)); } public void testSetFlashScope() { MockRequestContext context = new MockRequestContext(); context.getFlashScope().put("foo", "bar"); Expression exp = parser.parseExpression("foo", new FluentParserContext().evaluate(RequestContext.class)); exp.setValue(context, "baz"); assertEquals("baz", exp.getValue(context)); } public void testResolveViewScope() { MockRequestControlContext context = new MockRequestControlContext(); ViewState state = new ViewState(context.getRootFlow(), "view", new StubViewFactory()); context.setCurrentState(state); context.getViewScope().put("foo", "bar"); Expression exp = parser.parseExpression("foo", new FluentParserContext().evaluate(RequestContext.class)); assertEquals("bar", exp.getValue(context)); } public void testSetViewScope() { MockRequestControlContext context = new MockRequestControlContext(); ViewState state = new ViewState(context.getRootFlow(), "view", new StubViewFactory()); context.setCurrentState(state); context.getViewScope().put("foo", "bar"); Expression exp = parser.parseExpression("foo", new FluentParserContext().evaluate(RequestContext.class)); exp.setValue(context, "baz"); assertEquals("baz", exp.getValue(context)); } public void testResolveFlowScope() { MockRequestContext context = new MockRequestContext(); context.getFlowScope().put("foo", "bar"); Expression exp = parser.parseExpression("foo", new FluentParserContext().evaluate(RequestContext.class)); assertEquals("bar", exp.getValue(context)); } public void testSetFlowScope() { MockRequestContext context = new MockRequestContext(); context.getFlowScope().put("foo", "bar"); Expression exp = parser.parseExpression("foo", new FluentParserContext().evaluate(RequestContext.class)); exp.setValue(context, "baz"); assertEquals("baz", exp.getValue(context)); } public void testResolveConversationScope() { MockRequestContext context = new MockRequestContext(); context.getConversationScope().put("foo", "bar"); Expression exp = parser.parseExpression("foo", new FluentParserContext().evaluate(RequestContext.class)); assertEquals("bar", exp.getValue(context)); } public void testSetConversationScope() { MockRequestContext context = new MockRequestContext(); context.getConversationScope().put("foo", "bar"); Expression exp = parser.parseExpression("foo", new FluentParserContext().evaluate(RequestContext.class)); exp.setValue(context, "baz"); assertEquals("baz", exp.getValue(context)); } public void testResolveSpringBean() { MockRequestContext context = new MockRequestContext(); StaticApplicationContext ac = new StaticApplicationContext(); ac.getBeanFactory().registerSingleton("testBean", new TestBean()); context.getRootFlow().setApplicationContext(ac); Expression exp = parser.parseExpression("testBean", new FluentParserContext().evaluate(RequestContext.class)); assertSame(ac.getBean("testBean"), exp.getValue(context)); } public void testResolveAction() { MockRequestContext context = new MockRequestContext(); StaticApplicationContext ac = new StaticApplicationContext(); ac.getBeanFactory().registerSingleton("action", new TestAction()); context.getRootFlow().setApplicationContext(ac); Expression exp = parser.parseExpression("action", new FluentParserContext().evaluate(RequestContext.class)); assertSame(ac.getBean("action"), exp.getValue(context)); } public void testResolveMultiAction() { MockRequestContext context = new MockRequestContext(); StaticApplicationContext ac = new StaticApplicationContext(); ac.getBeanFactory().registerSingleton("multiAction", new FormAction()); context.getRootFlow().setApplicationContext(ac); Expression exp = parser.parseExpression("multiAction.setupForm", new FluentParserContext() .evaluate(RequestContext.class)); AnnotatedAction action = (AnnotatedAction) exp.getValue(context); assertSame(ac.getBean("multiAction"), action.getTargetAction()); assertEquals("setupForm", action.getMethod()); } public void testResolveEventAttributes() { MockRequestContext context = new MockRequestContext(); LocalAttributeMap attributes = new LocalAttributeMap(); attributes.put("foo", "bar"); context.setCurrentEvent(new Event(this, "event", attributes)); Expression exp = parser.parseExpression("currentEvent.attributes.foo", new FluentParserContext() .evaluate(RequestContext.class)); assertEquals("bar", exp.getValue(context)); } public void testResolveNull() { MockRequestContext context = new MockRequestContext(); Expression exp = parser.parseExpression("null", new FluentParserContext().evaluate(RequestContext.class)); assertEquals(null, exp.getValue(context)); } public void testResolveMessage() { MockRequestContext context = new MockRequestContext(); StaticApplicationContext ac = new StaticApplicationContext(); ac.getStaticMessageSource().addMessage("foo", Locale.FRANCE, "bar"); ac.refresh(); context.getRootFlow().setApplicationContext(ac); context.getMockExternalContext().setLocale(Locale.FRANCE); Expression exp = parser.parseExpression("resourceBundle.foo", new FluentParserContext() .evaluate(RequestContext.class)); assertEquals("bar", exp.getValue(context)); } } ././@LongLink0000000000000000000000000000024400000000000011565 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/test/java/org/springframework/webflow/expression/DefaultExpressionParserFactoryTests.javalibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/test/java/org/springframew0000644000000000000000000000317711360615636030020 0ustar /* * Copyright 2004-2008 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.springframework.webflow.expression; import junit.framework.TestCase; import org.springframework.binding.expression.ExpressionParser; /** * Unit tests for {@link DefaultExpressionParserFactory}. */ public class DefaultExpressionParserFactoryTests extends TestCase { public void testGetDefaultExpressionParser() { ExpressionParser parser = DefaultExpressionParserFactory.getExpressionParser(); assertNotNull(parser); } // public void testGetDefaultExpressionParserConversionService() { // DefaultConversionService conversionService = new DefaultConversionService(); // ExpressionParser parser = DefaultExpressionParserFactory.getExpressionParser(conversionService); // Expression exp = parser.parseExpression("datum3", new FluentParserContext().expectResult(String.class)); // TestBean context = new TestBean(); // Calendar cal = Calendar.getInstance(); // cal.set(2008, 1, 1); // exp.setValue(context, cal.getTime()); // String string = (String) exp.getValue(context); // assertEquals(null, string); // } } ././@LongLink0000000000000000000000000000017600000000000011571 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/test/java/org/springframework/webflow/conversation/libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/test/java/org/springframew0000755000000000000000000000000011360615642030003 5ustar ././@LongLink0000000000000000000000000000020300000000000011560 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/test/java/org/springframework/webflow/conversation/impl/libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/test/java/org/springframew0000755000000000000000000000000011360615642030003 5ustar ././@LongLink0000000000000000000000000000025600000000000011570 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/test/java/org/springframework/webflow/conversation/impl/SessionBindingConversationManagerTests.javalibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/test/java/org/springframew0000644000000000000000000001430311360615642030006 0ustar /* * Copyright 2004-2008 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.springframework.webflow.conversation.impl; import java.io.ByteArrayInputStream; import java.io.ByteArrayOutputStream; import java.io.ObjectInputStream; import java.io.ObjectOutputStream; import junit.framework.TestCase; import org.springframework.webflow.context.ExternalContextHolder; import org.springframework.webflow.conversation.Conversation; import org.springframework.webflow.conversation.ConversationException; import org.springframework.webflow.conversation.ConversationId; import org.springframework.webflow.conversation.ConversationParameters; import org.springframework.webflow.core.collection.SharedAttributeMap; import org.springframework.webflow.test.MockExternalContext; /** * Unit tests for {@link SessionBindingConversationManager}. */ public class SessionBindingConversationManagerTests extends TestCase { private SessionBindingConversationManager conversationManager; protected void setUp() throws Exception { conversationManager = new SessionBindingConversationManager(); } protected void tearDown() throws Exception { ExternalContextHolder.setExternalContext(null); } public void testConversationLifeCycle() { ExternalContextHolder.setExternalContext(new MockExternalContext()); Conversation conversation = conversationManager.beginConversation(new ConversationParameters("test", "test", "test")); ConversationId conversationId = conversation.getId(); assertNotNull(conversationManager.getConversation(conversationId)); conversation.lock(); conversation.end(); conversation.unlock(); try { conversationManager.getConversation(conversationId); fail("Conversation should have ben removed"); } catch (ConversationException e) { } } public void testNoPassivation() { ExternalContextHolder.setExternalContext(new MockExternalContext()); Conversation conversation = conversationManager.beginConversation(new ConversationParameters("test", "test", "test")); conversation.lock(); conversation.putAttribute("testAttribute", "testValue"); ConversationId conversationId = conversation.getId(); Conversation conversation2 = conversationManager.getConversation(conversationId); assertSame(conversation, conversation2); conversation2.lock(); assertEquals("testValue", conversation2.getAttribute("testAttribute")); conversation.end(); conversation.unlock(); conversation2.unlock(); } public void testPassivation() throws Exception { MockExternalContext externalContext = new MockExternalContext(); ExternalContextHolder.setExternalContext(externalContext); Conversation conversation = conversationManager.beginConversation(new ConversationParameters("test", "test", "test")); conversation.lock(); conversation.putAttribute("testAttribute", "testValue"); ConversationId conversationId = conversation.getId(); ExternalContextHolder.setExternalContext(null); // simulate write out of session byte[] passiveSession = passivate(externalContext.getSessionMap()); // simulate start-up of server conversationManager = new SessionBindingConversationManager(); String id = conversationId.toString(); conversationId = conversationManager.parseConversationId(id); // simulate restore of session externalContext.setSessionMap(activate(passiveSession)); ExternalContextHolder.setExternalContext(externalContext); Conversation conversation2 = conversationManager.getConversation(conversationId); assertNotSame(conversation, conversation2); assertEquals("testValue", conversation2.getAttribute("testAttribute")); conversation.end(); conversation.unlock(); } public void testMaxConversations() { conversationManager.setMaxConversations(2); ExternalContextHolder.setExternalContext(new MockExternalContext()); Conversation conversation1 = conversationManager.beginConversation(new ConversationParameters("test", "test", "test")); conversation1.lock(); assertNotNull(conversationManager.getConversation(conversation1.getId())); Conversation conversation2 = conversationManager.beginConversation(new ConversationParameters("test", "test", "test")); assertNotNull(conversationManager.getConversation(conversation1.getId())); assertNotNull(conversationManager.getConversation(conversation2.getId())); Conversation conversation3 = conversationManager.beginConversation(new ConversationParameters("test", "test", "test")); try { conversation1.end(); conversation1.unlock(); conversationManager.getConversation(conversation1.getId()); fail(); } catch (ConversationException e) { } assertNotNull(conversationManager.getConversation(conversation2.getId())); assertNotNull(conversationManager.getConversation(conversation3.getId())); } public void testCustomSessionKey() { conversationManager.setSessionKey("foo"); MockExternalContext context = new MockExternalContext(); ExternalContextHolder.setExternalContext(context); conversationManager.beginConversation(new ConversationParameters("test", "test", "test")); assertNotNull(context.getSessionMap().get("foo")); } private byte[] passivate(SharedAttributeMap session) throws Exception { // session is serialized out ByteArrayOutputStream bout = new ByteArrayOutputStream(); ObjectOutputStream oout = new ObjectOutputStream(bout); oout.writeObject(session); return bout.toByteArray(); } private SharedAttributeMap activate(byte[] sessionData) throws Exception { // session is serialized back in return (SharedAttributeMap) new ObjectInputStream(new ByteArrayInputStream(sessionData)).readObject(); } }././@LongLink0000000000000000000000000000020500000000000011562 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/test/java/org/springframework/webflow/TestBeanWithMap.javalibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/test/java/org/springframew0000644000000000000000000000176011360615640030007 0ustar /* * Copyright 2004-2008 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.springframework.webflow; import java.io.Serializable; import java.util.HashMap; import java.util.Map; /** * Simple test bean with a Map property. */ public class TestBeanWithMap implements Serializable { private Map map = new HashMap(); public Map getMap() { return map; } public void setMap(Map map) { this.map = map; } } ././@LongLink0000000000000000000000000000017600000000000011571 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/test/java/org/springframework/webflow/TestBean.javalibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/test/java/org/springframew0000644000000000000000000000401211360615642030002 0ustar /* * Copyright 2004-2008 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.springframework.webflow; import java.io.Serializable; import java.util.Date; import java.util.HashMap; import java.util.Map; /** * Simple test bean used by some test cases. Note that this bean has value semantics. */ public class TestBean implements Serializable { public String datum1 = ""; public int datum2; private Date datum3; public boolean executed; public Map emptyMap; public void execute() { this.executed = true; } public String getDatum1() { return datum1; } public int getDatum2() { return datum2; } public Date getDatum3() { return datum3; } public Map getEmptyMap() { if (emptyMap == null) { emptyMap = new HashMap(); emptyMap.put("foo", null); } return emptyMap; } public void setDatum3(Date datum3) { this.datum3 = datum3; } public boolean isExecuted() { return executed; } public void execute(String parameter) { this.executed = true; this.datum1 = parameter; } public int execute(String parameter, int parameter2) { this.executed = true; this.datum1 = parameter; this.datum2 = parameter2; return datum2; } public boolean equals(Object obj) { if (!(obj instanceof TestBean)) { return false; } TestBean other = (TestBean) obj; return datum1.equals(other.datum1) && datum2 == other.datum2 && executed == other.executed; } public int hashCode() { return (datum1.hashCode() + datum2 + (executed ? 1 : 0)) * 29; } }././@LongLink0000000000000000000000000000017500000000000011570 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/test/java/org/springframework/webflow/persistence/libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/test/java/org/springframew0000755000000000000000000000000011360615644030005 5ustar ././@LongLink0000000000000000000000000000026100000000000011564 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/test/java/org/springframework/webflow/persistence/HibernateFlowManagedPersistenceIntegrationTests.javalibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/test/java/org/springframew0000644000000000000000000001400311360615642030003 0ustar package org.springframework.webflow.persistence; import java.sql.Connection; import java.sql.SQLException; import javax.sql.DataSource; import junit.framework.TestCase; import org.hibernate.Session; import org.hibernate.SessionFactory; import org.springframework.core.io.ClassPathResource; import org.springframework.core.io.Resource; import org.springframework.jdbc.datasource.DriverManagerDataSource; import org.springframework.orm.hibernate3.HibernateTemplate; import org.springframework.orm.hibernate3.HibernateTransactionManager; import org.springframework.orm.hibernate3.LocalSessionFactoryBean; import org.springframework.transaction.support.TransactionSynchronizationManager; import org.springframework.webflow.engine.EndState; import org.springframework.webflow.engine.Flow; import org.springframework.webflow.engine.builder.FlowAssembler; import org.springframework.webflow.engine.builder.model.FlowModelFlowBuilder; import org.springframework.webflow.engine.impl.FlowExecutionImplFactory; import org.springframework.webflow.engine.model.builder.DefaultFlowModelHolder; import org.springframework.webflow.engine.model.builder.xml.XmlFlowModelBuilder; import org.springframework.webflow.execution.Action; import org.springframework.webflow.execution.Event; import org.springframework.webflow.execution.FlowExecution; import org.springframework.webflow.execution.RequestContext; import org.springframework.webflow.execution.factory.StaticFlowExecutionListenerLoader; import org.springframework.webflow.test.MockExternalContext; import org.springframework.webflow.test.MockFlowBuilderContext; public class HibernateFlowManagedPersistenceIntegrationTests extends TestCase { private SessionFactory sessionFactory; private HibernateTemplate hibernateTemplate; private HibernateFlowExecutionListener hibernateListener; private FlowExecution flowExecution; protected void setUp() throws Exception { DataSource dataSource = getDataSource(); populateDataBase(dataSource); sessionFactory = getSessionFactory(dataSource); hibernateTemplate = new HibernateTemplate(sessionFactory); hibernateTemplate.setCheckWriteOperations(false); HibernateTransactionManager tm = new HibernateTransactionManager(sessionFactory); hibernateListener = new HibernateFlowExecutionListener(sessionFactory, tm); ClassPathResource res = new ClassPathResource("flow-managed-persistence.xml", getClass()); DefaultFlowModelHolder holder = new DefaultFlowModelHolder(new XmlFlowModelBuilder(res)); FlowModelFlowBuilder builder = new FlowModelFlowBuilder(holder); MockFlowBuilderContext context = new MockFlowBuilderContext("foo"); FlowAssembler assembler = new FlowAssembler(builder, context); Flow flow = assembler.assembleFlow(); context.registerSubflow(flow); Flow notManaged = new Flow("notmanaged"); new EndState(notManaged, "finish"); context.registerSubflow(notManaged); context.registerBean("loadTestBean", new Action() { public Event execute(RequestContext context) throws Exception { assertSessionBound(); Session session = (Session) context.getFlowScope().get("persistenceContext"); TestBean bean = (TestBean) session.get(TestBean.class, new Long(0)); assertNotNull(bean); context.getFlowScope().put("testBean", bean); return new Event(this, "success"); } }); FlowExecutionImplFactory factory = new FlowExecutionImplFactory(); factory.setExecutionListenerLoader(new StaticFlowExecutionListenerLoader(hibernateListener)); flowExecution = factory.createFlowExecution(flow); } public void testFlowWithSubflow() { MockExternalContext context = new MockExternalContext(); flowExecution.start(null, context); context.setEventId("subflow"); flowExecution.resume(context); context.setEventId("finish"); flowExecution.resume(context); } public void testManagedFlowWithUnmanagedSubflow() { MockExternalContext context = new MockExternalContext(); flowExecution.start(null, context); context.setEventId("notmanaged"); flowExecution.resume(context); } private DataSource getDataSource() { DriverManagerDataSource dataSource = new DriverManagerDataSource(); dataSource.setDriverClassName("org.hsqldb.jdbcDriver"); dataSource.setUrl("jdbc:hsqldb:mem:jpa"); dataSource.setUsername("sa"); dataSource.setPassword(""); return dataSource; } private void populateDataBase(DataSource dataSource) { Connection connection = null; try { connection = dataSource.getConnection(); connection.createStatement().execute("drop table T_ADDRESS if exists;"); connection.createStatement().execute("drop table T_BEAN if exists;"); connection.createStatement().execute( "create table T_BEAN (ID integer primary key, NAME varchar(50) not null);"); connection.createStatement().execute( "create table T_ADDRESS (ID integer primary key, BEAN_ID integer, VALUE varchar(50) not null);"); connection .createStatement() .execute( "alter table T_ADDRESS add constraint FK_BEAN_ADDRESS foreign key (BEAN_ID) references T_BEAN(ID) on delete cascade"); connection.createStatement().execute("insert into T_BEAN (ID, NAME) values (0, 'Ben Hale');"); connection.createStatement().execute( "insert into T_ADDRESS (ID, BEAN_ID, VALUE) values (0, 0, 'Melbourne')"); } catch (SQLException e) { throw new RuntimeException("SQL exception occurred acquiring connection", e); } finally { if (connection != null) { try { connection.close(); } catch (SQLException e) { } } } } private SessionFactory getSessionFactory(DataSource dataSource) throws Exception { LocalSessionFactoryBean factory = new LocalSessionFactoryBean(); factory.setDataSource(dataSource); factory.setMappingLocations(new Resource[] { new ClassPathResource("org/springframework/webflow/persistence/TestBean.hbm.xml"), new ClassPathResource("org/springframework/webflow/persistence/TestAddress.hbm.xml") }); factory.afterPropertiesSet(); return (SessionFactory) factory.getObject(); } private void assertSessionBound() { assertNotNull(TransactionSynchronizationManager.getResource(sessionFactory)); } } ././@LongLink0000000000000000000000000000021400000000000011562 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/test/java/org/springframework/webflow/persistence/persistence.xmllibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/test/java/org/springframew0000644000000000000000000000117211360615642030006 0ustar org/springframework/webflow/persistence/orm.xml true ././@LongLink0000000000000000000000000000025300000000000011565 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/test/java/org/springframework/webflow/persistence/JpaFlowManagedPersistenceIntegrationTests.javalibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/test/java/org/springframew0000644000000000000000000001354311360615634030014 0ustar package org.springframework.webflow.persistence; import java.sql.Connection; import java.sql.SQLException; import javax.persistence.EntityManager; import javax.persistence.EntityManagerFactory; import javax.sql.DataSource; import junit.framework.TestCase; import org.springframework.core.io.ClassPathResource; import org.springframework.jdbc.datasource.DriverManagerDataSource; import org.springframework.orm.jpa.JpaTransactionManager; import org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean; import org.springframework.orm.jpa.vendor.OpenJpaVendorAdapter; import org.springframework.transaction.support.TransactionSynchronizationManager; import org.springframework.webflow.engine.EndState; import org.springframework.webflow.engine.Flow; import org.springframework.webflow.engine.builder.FlowAssembler; import org.springframework.webflow.engine.builder.model.FlowModelFlowBuilder; import org.springframework.webflow.engine.impl.FlowExecutionImplFactory; import org.springframework.webflow.engine.model.builder.DefaultFlowModelHolder; import org.springframework.webflow.engine.model.builder.xml.XmlFlowModelBuilder; import org.springframework.webflow.execution.Action; import org.springframework.webflow.execution.Event; import org.springframework.webflow.execution.FlowExecution; import org.springframework.webflow.execution.RequestContext; import org.springframework.webflow.execution.factory.StaticFlowExecutionListenerLoader; import org.springframework.webflow.test.MockExternalContext; import org.springframework.webflow.test.MockFlowBuilderContext; public class JpaFlowManagedPersistenceIntegrationTests extends TestCase { private EntityManagerFactory entityManagerFactory; private JpaFlowExecutionListener jpaListener; private FlowExecution flowExecution; protected void setUp() throws Exception { DataSource dataSource = getDataSource(); populateDataBase(dataSource); entityManagerFactory = getEntityManagerFactory(dataSource); JpaTransactionManager tm = new JpaTransactionManager(entityManagerFactory); jpaListener = new JpaFlowExecutionListener(entityManagerFactory, tm); ClassPathResource res = new ClassPathResource("flow-managed-persistence.xml", getClass()); DefaultFlowModelHolder holder = new DefaultFlowModelHolder(new XmlFlowModelBuilder(res)); FlowModelFlowBuilder builder = new FlowModelFlowBuilder(holder); MockFlowBuilderContext context = new MockFlowBuilderContext("foo"); FlowAssembler assembler = new FlowAssembler(builder, context); Flow flow = assembler.assembleFlow(); context.registerSubflow(flow); Flow notManaged = new Flow("notmanaged"); new EndState(notManaged, "finish"); context.registerSubflow(notManaged); context.registerBean("loadTestBean", new Action() { public Event execute(RequestContext context) throws Exception { assertSessionBound(); EntityManager em = (EntityManager) context.getFlowScope().get("persistenceContext"); TestBean bean = (TestBean) em.getReference(TestBean.class, new Integer(0)); assertNotNull(bean); context.getFlowScope().put("testBean", bean); return new Event(this, "success"); } }); FlowExecutionImplFactory factory = new FlowExecutionImplFactory(); factory.setExecutionListenerLoader(new StaticFlowExecutionListenerLoader(jpaListener)); flowExecution = factory.createFlowExecution(flow); } public void testManagedFlowWithManagedSubflow() { MockExternalContext context = new MockExternalContext(); flowExecution.start(null, context); context.setEventId("subflow"); flowExecution.resume(context); context.setEventId("finish"); flowExecution.resume(context); } public void testManagedFlowWithUnmanagedSubflow() { MockExternalContext context = new MockExternalContext(); flowExecution.start(null, context); context.setEventId("notmanaged"); flowExecution.resume(context); } private DataSource getDataSource() { DriverManagerDataSource dataSource = new DriverManagerDataSource(); dataSource.setDriverClassName("org.hsqldb.jdbcDriver"); dataSource.setUrl("jdbc:hsqldb:mem:jpa"); dataSource.setUsername("sa"); dataSource.setPassword(""); return dataSource; } private void populateDataBase(DataSource dataSource) { Connection connection = null; try { connection = dataSource.getConnection(); connection.createStatement().execute("drop table T_ADDRESS if exists;"); connection.createStatement().execute("drop table T_BEAN if exists;"); connection.createStatement().execute( "create table T_BEAN (ID integer primary key, NAME varchar(50) not null);"); connection.createStatement().execute( "create table T_ADDRESS (ID integer primary key, BEAN_ID integer, VALUE varchar(50) not null);"); connection .createStatement() .execute( "alter table T_ADDRESS add constraint FK_BEAN_ADDRESS foreign key (BEAN_ID) references T_BEAN(ID) on delete cascade"); connection.createStatement().execute("insert into T_BEAN (ID, NAME) values (0, 'Ben Hale');"); connection.createStatement().execute( "insert into T_ADDRESS (ID, BEAN_ID, VALUE) values (0, 0, 'Melbourne')"); } catch (SQLException e) { throw new RuntimeException("SQL exception occurred acquiring connection", e); } finally { if (connection != null) { try { connection.close(); } catch (SQLException e) { } } } } private EntityManagerFactory getEntityManagerFactory(DataSource dataSource) throws Exception { LocalContainerEntityManagerFactoryBean factory = new LocalContainerEntityManagerFactoryBean(); factory.setDataSource(dataSource); factory.setPersistenceXmlLocation("classpath:org/springframework/webflow/persistence/persistence.xml"); OpenJpaVendorAdapter openJpa = new OpenJpaVendorAdapter(); factory.setJpaVendorAdapter(openJpa); factory.afterPropertiesSet(); return factory.getObject(); } private void assertSessionBound() { assertNotNull(TransactionSynchronizationManager.getResource(entityManagerFactory)); } } ././@LongLink0000000000000000000000000000021200000000000011560 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/test/java/org/springframework/webflow/persistence/TestBean.javalibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/test/java/org/springframew0000644000000000000000000000254011360615636030011 0ustar /* * Copyright 2004-2008 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.springframework.webflow.persistence; import java.util.HashSet; import java.util.Set; public class TestBean { private Long entityId; private String name; private Set addresses = new HashSet(); public TestBean() { } public TestBean(String name) { this.name = name; } public TestBean(long id, String name) { this.entityId = new Long(id); this.name = name; } public Long getEntityId() { return entityId; } public void setEntityId(Long entityId) { this.entityId = entityId; } public void setName(String name) { this.name = name; } public String getName() { return name; } public Set getAddresses() { return addresses; } public void setAddresses(Set addresses) { this.addresses = addresses; } } ././@LongLink0000000000000000000000000000023100000000000011561 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/test/java/org/springframework/webflow/persistence/flow-managed-persistence.xmllibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/test/java/org/springframew0000644000000000000000000000215711360615636030015 0ustar ././@LongLink0000000000000000000000000000023700000000000011567 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/test/java/org/springframework/webflow/persistence/JpaFlowExecutionListenerTests.javalibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/test/java/org/springframew0000644000000000000000000002436411360615636030021 0ustar package org.springframework.webflow.persistence; import java.sql.Connection; import java.sql.SQLException; import javax.persistence.EntityManagerFactory; import javax.sql.DataSource; import junit.framework.TestCase; import org.springframework.jdbc.core.JdbcTemplate; import org.springframework.jdbc.datasource.DriverManagerDataSource; import org.springframework.orm.jpa.JpaTemplate; import org.springframework.orm.jpa.JpaTransactionManager; import org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean; import org.springframework.orm.jpa.vendor.OpenJpaVendorAdapter; import org.springframework.transaction.support.TransactionSynchronizationManager; import org.springframework.webflow.engine.EndState; import org.springframework.webflow.execution.FlowExecutionException; import org.springframework.webflow.test.MockFlowSession; import org.springframework.webflow.test.MockRequestContext; public class JpaFlowExecutionListenerTests extends TestCase { private EntityManagerFactory entityManagerFactory; private JpaFlowExecutionListener jpaListener; private JdbcTemplate jdbcTemplate; private JpaTemplate jpaTemplate; public void testTemp() { } protected void setUp() throws Exception { DataSource dataSource = getDataSource(); populateDataBase(dataSource); jdbcTemplate = new JdbcTemplate(dataSource); entityManagerFactory = getEntityManagerFactory(dataSource); JpaTransactionManager tm = new JpaTransactionManager(entityManagerFactory); jpaListener = new JpaFlowExecutionListener(entityManagerFactory, tm); jpaTemplate = new JpaTemplate(entityManagerFactory); } public void testFlowNotAPersistenceContext() { MockRequestContext context = new MockRequestContext(); MockFlowSession flowSession = new MockFlowSession(); jpaListener.sessionStarting(context, flowSession, null); assertSessionNotBound(); } public void testFlowCommitsInSingleRequest() { assertEquals("Table should only have one row", 1, jdbcTemplate.queryForInt("select count(*) from T_BEAN")); MockRequestContext context = new MockRequestContext(); MockFlowSession flowSession = new MockFlowSession(); flowSession.getDefinition().getAttributes().put("persistenceContext", "true"); jpaListener.sessionStarting(context, flowSession, null); context.setActiveSession(flowSession); assertSessionBound(); TestBean bean = new TestBean(1, "Keith Donald"); jpaTemplate.persist(bean); assertEquals("Table should still only have one row", 1, jdbcTemplate.queryForInt("select count(*) from T_BEAN")); EndState endState = new EndState(flowSession.getDefinitionInternal(), "success"); endState.getAttributes().put("commit", Boolean.TRUE); flowSession.setState(endState); jpaListener.sessionEnding(context, flowSession, "success", null); jpaListener.sessionEnded(context, flowSession, "success", null); assertEquals("Table should only have two rows", 2, jdbcTemplate.queryForInt("select count(*) from T_BEAN")); assertSessionNotBound(); assertFalse(flowSession.getScope().contains("hibernate.session")); } public void testFlowCommitsAfterMultipleRequests() { assertEquals("Table should only have one row", 1, jdbcTemplate.queryForInt("select count(*) from T_BEAN")); MockRequestContext context = new MockRequestContext(); MockFlowSession flowSession = new MockFlowSession(); flowSession.getDefinition().getAttributes().put("persistenceContext", "true"); jpaListener.sessionStarting(context, flowSession, null); context.setActiveSession(flowSession); assertSessionBound(); TestBean bean1 = new TestBean(1, "Keith Donald"); jpaTemplate.persist(bean1); assertEquals("Table should still only have one row", 1, jdbcTemplate.queryForInt("select count(*) from T_BEAN")); jpaListener.paused(context); assertSessionNotBound(); jpaListener.resuming(context); TestBean bean2 = new TestBean(2, "Keith Donald"); jpaTemplate.persist(bean2); assertEquals("Table should still only have one row", 1, jdbcTemplate.queryForInt("select count(*) from T_BEAN")); assertSessionBound(); EndState endState = new EndState(flowSession.getDefinitionInternal(), "success"); endState.getAttributes().put("commit", Boolean.TRUE); flowSession.setState(endState); jpaListener.sessionEnding(context, flowSession, "success", null); jpaListener.sessionEnded(context, flowSession, "success", null); assertEquals("Table should only have three rows", 3, jdbcTemplate.queryForInt("select count(*) from T_BEAN")); assertFalse(flowSession.getScope().contains("hibernate.session")); assertSessionNotBound(); assertFalse(flowSession.getScope().contains("hibernate.session")); } public void testCancelEndState() { assertEquals("Table should only have one row", 1, jdbcTemplate.queryForInt("select count(*) from T_BEAN")); MockRequestContext context = new MockRequestContext(); MockFlowSession flowSession = new MockFlowSession(); flowSession.getDefinition().getAttributes().put("persistenceContext", "true"); jpaListener.sessionStarting(context, flowSession, null); context.setActiveSession(flowSession); assertSessionBound(); TestBean bean = new TestBean(1, "Keith Donald"); jpaTemplate.persist(bean); assertEquals("Table should still only have one row", 1, jdbcTemplate.queryForInt("select count(*) from T_BEAN")); EndState endState = new EndState(flowSession.getDefinitionInternal(), "cancel"); endState.getAttributes().put("commit", Boolean.FALSE); flowSession.setState(endState); jpaListener.sessionEnding(context, flowSession, "cancel", null); jpaListener.sessionEnded(context, flowSession, "success", null); assertEquals("Table should only have two rows", 1, jdbcTemplate.queryForInt("select count(*) from T_BEAN")); assertSessionNotBound(); assertFalse(flowSession.getScope().contains("hibernate.session")); } public void testNoCommitAttributeSetOnEndState() { assertEquals("Table should only have one row", 1, jdbcTemplate.queryForInt("select count(*) from T_BEAN")); MockRequestContext context = new MockRequestContext(); MockFlowSession flowSession = new MockFlowSession(); flowSession.getDefinition().getAttributes().put("persistenceContext", "true"); jpaListener.sessionStarting(context, flowSession, null); context.setActiveSession(flowSession); assertSessionBound(); EndState endState = new EndState(flowSession.getDefinitionInternal(), "cancel"); flowSession.setState(endState); jpaListener.sessionEnding(context, flowSession, "cancel", null); jpaListener.sessionEnded(context, flowSession, "success", null); assertEquals("Table should only have three rows", 1, jdbcTemplate.queryForInt("select count(*) from T_BEAN")); assertFalse(flowSession.getScope().contains("hibernate.session")); assertSessionNotBound(); assertFalse(flowSession.getScope().contains("hibernate.session")); } public void testExceptionThrown() { assertEquals("Table should only have one row", 1, jdbcTemplate.queryForInt("select count(*) from T_BEAN")); MockRequestContext context = new MockRequestContext(); MockFlowSession flowSession = new MockFlowSession(); flowSession.getDefinition().getAttributes().put("persistenceContext", "true"); jpaListener.sessionStarting(context, flowSession, null); context.setActiveSession(flowSession); assertSessionBound(); TestBean bean = new TestBean(1, "Keith Donald"); jpaTemplate.persist(bean); assertEquals("Table should still only have one row", 1, jdbcTemplate.queryForInt("select count(*) from T_BEAN")); jpaListener.exceptionThrown(context, new FlowExecutionException("bla", "bla", "bla")); assertEquals("Table should still only have one row", 1, jdbcTemplate.queryForInt("select count(*) from T_BEAN")); assertSessionNotBound(); } public void testExceptionThrownWithNothingBound() { assertEquals("Table should only have one row", 1, jdbcTemplate.queryForInt("select count(*) from T_BEAN")); MockRequestContext context = new MockRequestContext(); MockFlowSession flowSession = new MockFlowSession(); flowSession.getDefinition().getAttributes().put("persistenceContext", "true"); assertSessionNotBound(); jpaListener.exceptionThrown(context, new FlowExecutionException("foo", "bar", "test")); assertSessionNotBound(); } private DataSource getDataSource() { DriverManagerDataSource dataSource = new DriverManagerDataSource(); dataSource.setDriverClassName("org.hsqldb.jdbcDriver"); dataSource.setUrl("jdbc:hsqldb:mem:jpa"); dataSource.setUsername("sa"); dataSource.setPassword(""); return dataSource; } private void populateDataBase(DataSource dataSource) { Connection connection = null; try { connection = dataSource.getConnection(); connection.createStatement().execute("drop table T_ADDRESS if exists;"); connection.createStatement().execute("drop table T_BEAN if exists;"); connection.createStatement().execute( "create table T_BEAN (ID integer primary key, NAME varchar(50) not null);"); connection.createStatement().execute( "create table T_ADDRESS (ID integer primary key, BEAN_ID integer, VALUE varchar(50) not null);"); connection .createStatement() .execute( "alter table T_ADDRESS add constraint FK_BEAN_ADDRESS foreign key (BEAN_ID) references T_BEAN(ID) on delete cascade"); connection.createStatement().execute("insert into T_BEAN (ID, NAME) values (0, 'Ben Hale');"); connection.createStatement().execute( "insert into T_ADDRESS (ID, BEAN_ID, VALUE) values (0, 0, 'Melbourne')"); } catch (SQLException e) { throw new RuntimeException("SQL exception occurred acquiring connection", e); } finally { if (connection != null) { try { connection.close(); } catch (SQLException e) { } } } } private EntityManagerFactory getEntityManagerFactory(DataSource dataSource) throws Exception { LocalContainerEntityManagerFactoryBean factory = new LocalContainerEntityManagerFactoryBean(); factory.setDataSource(dataSource); factory.setPersistenceXmlLocation("classpath:org/springframework/webflow/persistence/persistence.xml"); OpenJpaVendorAdapter openJpa = new OpenJpaVendorAdapter(); factory.setJpaVendorAdapter(openJpa); factory.afterPropertiesSet(); return factory.getObject(); } private void assertSessionNotBound() { assertNull(TransactionSynchronizationManager.getResource(entityManagerFactory)); } private void assertSessionBound() { assertNotNull(TransactionSynchronizationManager.getResource(entityManagerFactory)); } } ././@LongLink0000000000000000000000000000020400000000000011561 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/test/java/org/springframework/webflow/persistence/orm.xmllibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/test/java/org/springframew0000644000000000000000000000164411360615636030015 0ustar org.springframework.webflow.persistence
././@LongLink0000000000000000000000000000021500000000000011563 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/test/java/org/springframework/webflow/persistence/TestAddress.javalibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/test/java/org/springframew0000644000000000000000000000055711360615640030012 0ustar package org.springframework.webflow.persistence; public class TestAddress { private Long entityId; private String value; public Long getEntityId() { return entityId; } public void setEntityId(Long entityId) { this.entityId = entityId; } public String getValue() { return value; } public void setValue(String value) { this.value = value; } } ././@LongLink0000000000000000000000000000021500000000000011563 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/test/java/org/springframework/webflow/persistence/TestBean.hbm.xmllibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/test/java/org/springframew0000644000000000000000000000113011360615644030002 0ustar ././@LongLink0000000000000000000000000000024500000000000011566 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/test/java/org/springframework/webflow/persistence/HibernateFlowExecutionListenerTests.javalibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/test/java/org/springframew0000644000000000000000000003216711360615632030015 0ustar /* * Copyright 2004-2008 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.springframework.webflow.persistence; import java.sql.Connection; import java.sql.SQLException; import javax.sql.DataSource; import junit.framework.TestCase; import org.hibernate.Hibernate; import org.hibernate.HibernateException; import org.hibernate.Session; import org.hibernate.SessionFactory; import org.springframework.core.io.ClassPathResource; import org.springframework.core.io.Resource; import org.springframework.jdbc.core.JdbcTemplate; import org.springframework.jdbc.datasource.DriverManagerDataSource; import org.springframework.orm.hibernate3.HibernateCallback; import org.springframework.orm.hibernate3.HibernateTemplate; import org.springframework.orm.hibernate3.HibernateTransactionManager; import org.springframework.orm.hibernate3.LocalSessionFactoryBean; import org.springframework.transaction.support.TransactionSynchronizationManager; import org.springframework.webflow.engine.EndState; import org.springframework.webflow.execution.FlowExecutionException; import org.springframework.webflow.test.MockFlowSession; import org.springframework.webflow.test.MockRequestContext; /** * Tests for {@link HibernateFlowExecutionListener} * * @author Ben Hale */ public class HibernateFlowExecutionListenerTests extends TestCase { private SessionFactory sessionFactory; private JdbcTemplate jdbcTemplate; private HibernateTemplate hibernateTemplate; private HibernateFlowExecutionListener hibernateListener; protected void setUp() throws Exception { DataSource dataSource = getDataSource(); populateDataBase(dataSource); jdbcTemplate = new JdbcTemplate(dataSource); sessionFactory = getSessionFactory(dataSource); hibernateTemplate = new HibernateTemplate(sessionFactory); hibernateTemplate.setCheckWriteOperations(false); HibernateTransactionManager tm = new HibernateTransactionManager(sessionFactory); hibernateListener = new HibernateFlowExecutionListener(sessionFactory, tm); } public void testSameSession() { MockRequestContext context = new MockRequestContext(); MockFlowSession flowSession = new MockFlowSession(); flowSession.getDefinition().getAttributes().put("persistenceContext", "true"); hibernateListener.sessionStarting(context, flowSession, null); context.setActiveSession(flowSession); assertSessionBound(); // Session created and bound to conversation final Session hibSession = (Session) flowSession.getScope().get("persistenceContext"); assertNotNull("Should have been populated", hibSession); hibernateListener.paused(context); assertSessionNotBound(); // Session bound to thread local variable hibernateListener.resuming(context); assertSessionBound(); hibernateTemplate.executeWithNativeSession(new HibernateCallback() { public Object doInHibernate(Session session) throws HibernateException, SQLException { assertSame("Should have been original instance", hibSession, session); return null; } }); hibernateListener.paused(context); assertSessionNotBound(); } public void testFlowNotAPersistenceContext() { MockRequestContext context = new MockRequestContext(); MockFlowSession flowSession = new MockFlowSession(); hibernateListener.sessionStarting(context, flowSession, null); assertSessionNotBound(); } public void testFlowCommitsInSingleRequest() { assertEquals("Table should only have one row", 1, jdbcTemplate.queryForInt("select count(*) from T_BEAN")); MockRequestContext context = new MockRequestContext(); MockFlowSession flowSession = new MockFlowSession(); flowSession.getDefinition().getAttributes().put("persistenceContext", "true"); hibernateListener.sessionStarting(context, flowSession, null); context.setActiveSession(flowSession); assertSessionBound(); TestBean bean = new TestBean("Keith Donald"); hibernateTemplate.save(bean); assertEquals("Table should still only have one row", 1, jdbcTemplate.queryForInt("select count(*) from T_BEAN")); EndState endState = new EndState(flowSession.getDefinitionInternal(), "success"); endState.getAttributes().put("commit", Boolean.TRUE); flowSession.setState(endState); hibernateListener.sessionEnding(context, flowSession, "success", null); hibernateListener.sessionEnded(context, flowSession, "success", null); assertEquals("Table should only have two rows", 2, jdbcTemplate.queryForInt("select count(*) from T_BEAN")); assertSessionNotBound(); assertFalse(flowSession.getScope().contains("hibernate.session")); } public void testFlowCommitsAfterMultipleRequests() { assertEquals("Table should only have one row", 1, jdbcTemplate.queryForInt("select count(*) from T_BEAN")); MockRequestContext context = new MockRequestContext(); MockFlowSession flowSession = new MockFlowSession(); flowSession.getDefinition().getAttributes().put("persistenceContext", "true"); hibernateListener.sessionStarting(context, flowSession, null); context.setActiveSession(flowSession); assertSessionBound(); TestBean bean1 = new TestBean("Keith Donald"); hibernateTemplate.save(bean1); assertEquals("Table should still only have one row", 1, jdbcTemplate.queryForInt("select count(*) from T_BEAN")); hibernateListener.paused(context); assertSessionNotBound(); hibernateListener.resuming(context); TestBean bean2 = new TestBean("Keith Donald"); hibernateTemplate.save(bean2); assertEquals("Table should still only have one row", 1, jdbcTemplate.queryForInt("select count(*) from T_BEAN")); assertSessionBound(); EndState endState = new EndState(flowSession.getDefinitionInternal(), "success"); endState.getAttributes().put("commit", Boolean.TRUE); flowSession.setState(endState); hibernateListener.sessionEnding(context, flowSession, "success", null); hibernateListener.sessionEnded(context, flowSession, "success", null); assertEquals("Table should only have three rows", 3, jdbcTemplate.queryForInt("select count(*) from T_BEAN")); assertFalse(flowSession.getScope().contains("hibernate.session")); assertSessionNotBound(); assertFalse(flowSession.getScope().contains("hibernate.session")); } public void testCancelEndState() { assertEquals("Table should only have one row", 1, jdbcTemplate.queryForInt("select count(*) from T_BEAN")); MockRequestContext context = new MockRequestContext(); MockFlowSession flowSession = new MockFlowSession(); flowSession.getDefinition().getAttributes().put("persistenceContext", "true"); hibernateListener.sessionStarting(context, flowSession, null); context.setActiveSession(flowSession); assertSessionBound(); TestBean bean = new TestBean("Keith Donald"); hibernateTemplate.save(bean); assertEquals("Table should still only have one row", 1, jdbcTemplate.queryForInt("select count(*) from T_BEAN")); EndState endState = new EndState(flowSession.getDefinitionInternal(), "cancel"); endState.getAttributes().put("commit", Boolean.FALSE); flowSession.setState(endState); hibernateListener.sessionEnding(context, flowSession, "success", null); hibernateListener.sessionEnded(context, flowSession, "cancel", null); assertEquals("Table should only have two rows", 1, jdbcTemplate.queryForInt("select count(*) from T_BEAN")); assertSessionNotBound(); assertFalse(flowSession.getScope().contains("hibernate.session")); } public void testNoCommitAttributeSetOnEndState() { assertEquals("Table should only have one row", 1, jdbcTemplate.queryForInt("select count(*) from T_BEAN")); MockRequestContext context = new MockRequestContext(); MockFlowSession flowSession = new MockFlowSession(); flowSession.getDefinition().getAttributes().put("persistenceContext", "true"); hibernateListener.sessionStarting(context, flowSession, null); context.setActiveSession(flowSession); assertSessionBound(); EndState endState = new EndState(flowSession.getDefinitionInternal(), "cancel"); flowSession.setState(endState); hibernateListener.sessionEnding(context, flowSession, "success", null); hibernateListener.sessionEnded(context, flowSession, "cancel", null); assertEquals("Table should only have three rows", 1, jdbcTemplate.queryForInt("select count(*) from T_BEAN")); assertFalse(flowSession.getScope().contains("hibernate.session")); assertSessionNotBound(); assertFalse(flowSession.getScope().contains("hibernate.session")); } public void testExceptionThrown() { assertEquals("Table should only have one row", 1, jdbcTemplate.queryForInt("select count(*) from T_BEAN")); MockRequestContext context = new MockRequestContext(); MockFlowSession flowSession = new MockFlowSession(); flowSession.getDefinition().getAttributes().put("persistenceContext", "true"); hibernateListener.sessionStarting(context, flowSession, null); context.setActiveSession(flowSession); assertSessionBound(); TestBean bean1 = new TestBean("Keith Donald"); hibernateTemplate.save(bean1); assertEquals("Table should still only have one row", 1, jdbcTemplate.queryForInt("select count(*) from T_BEAN")); hibernateListener.exceptionThrown(context, new FlowExecutionException("bla", "bla", "bla")); assertEquals("Table should still only have one row", 1, jdbcTemplate.queryForInt("select count(*) from T_BEAN")); assertSessionNotBound(); } public void testExceptionThrownWithNothingBound() { assertEquals("Table should only have one row", 1, jdbcTemplate.queryForInt("select count(*) from T_BEAN")); MockRequestContext context = new MockRequestContext(); MockFlowSession flowSession = new MockFlowSession(); flowSession.getDefinition().getAttributes().put("persistenceContext", "true"); assertSessionNotBound(); hibernateListener.exceptionThrown(context, new FlowExecutionException("foo", "bar", "test")); assertSessionNotBound(); } public void testLazyInitializedCollection() { MockRequestContext context = new MockRequestContext(); MockFlowSession flowSession = new MockFlowSession(); flowSession.getDefinition().getAttributes().put("persistenceContext", "true"); hibernateListener.sessionStarting(context, flowSession, null); context.setActiveSession(flowSession); assertSessionBound(); TestBean bean = (TestBean) hibernateTemplate.get(TestBean.class, Long.valueOf(0)); assertFalse("addresses should not be initialized", Hibernate.isInitialized(bean.getAddresses())); hibernateListener.paused(context); assertFalse("addresses should not be initialized", Hibernate.isInitialized(bean.getAddresses())); Hibernate.initialize(bean.getAddresses()); assertTrue("addresses should be initialized", Hibernate.isInitialized(bean.getAddresses())); } private DataSource getDataSource() { DriverManagerDataSource dataSource = new DriverManagerDataSource(); dataSource.setDriverClassName("org.hsqldb.jdbcDriver"); dataSource.setUrl("jdbc:hsqldb:mem:hspcl"); dataSource.setUsername("sa"); dataSource.setPassword(""); return dataSource; } private void populateDataBase(DataSource dataSource) { Connection connection = null; try { connection = dataSource.getConnection(); connection.createStatement().execute("drop table T_ADDRESS if exists;"); connection.createStatement().execute("drop table T_BEAN if exists;"); connection.createStatement().execute( "create table T_BEAN (ID integer primary key, NAME varchar(50) not null);"); connection.createStatement().execute( "create table T_ADDRESS (ID integer primary key, BEAN_ID integer, VALUE varchar(50) not null);"); connection .createStatement() .execute( "alter table T_ADDRESS add constraint FK_BEAN_ADDRESS foreign key (BEAN_ID) references T_BEAN(ID) on delete cascade"); connection.createStatement().execute("insert into T_BEAN (ID, NAME) values (0, 'Ben Hale');"); connection.createStatement().execute( "insert into T_ADDRESS (ID, BEAN_ID, VALUE) values (0, 0, 'Melbourne')"); } catch (SQLException e) { throw new RuntimeException("SQL exception occurred acquiring connection", e); } finally { if (connection != null) { try { connection.close(); } catch (SQLException e) { } } } } private SessionFactory getSessionFactory(DataSource dataSource) throws Exception { LocalSessionFactoryBean factory = new LocalSessionFactoryBean(); factory.setDataSource(dataSource); factory.setMappingLocations(new Resource[] { new ClassPathResource("org/springframework/webflow/persistence/TestBean.hbm.xml"), new ClassPathResource("org/springframework/webflow/persistence/TestAddress.hbm.xml") }); factory.afterPropertiesSet(); return (SessionFactory) factory.getObject(); } private void assertSessionNotBound() { assertNull(TransactionSynchronizationManager.getResource(sessionFactory)); } private void assertSessionBound() { assertNotNull(TransactionSynchronizationManager.getResource(sessionFactory)); } } ././@LongLink0000000000000000000000000000022000000000000011557 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/test/java/org/springframework/webflow/persistence/TestAddress.hbm.xmllibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/test/java/org/springframew0000644000000000000000000000073711360615634030015 0ustar ././@LongLink0000000000000000000000000000016600000000000011570 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/test/java/org/springframework/webflow/test/libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/test/java/org/springframew0000755000000000000000000000000011360615642030003 5ustar ././@LongLink0000000000000000000000000000022300000000000011562 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/test/java/org/springframework/webflow/test/SearchFlowExecutionTests.javalibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/test/java/org/springframew0000644000000000000000000001013511360615640030003 0ustar /* * Copyright 2004-2008 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.springframework.webflow.test; import java.util.ArrayList; import java.util.List; import org.springframework.binding.mapping.Mapper; import org.springframework.binding.mapping.MappingResults; import org.springframework.webflow.config.FlowDefinitionResource; import org.springframework.webflow.config.FlowDefinitionResourceFactory; import org.springframework.webflow.context.ExternalContext; import org.springframework.webflow.core.collection.AttributeMap; import org.springframework.webflow.engine.EndState; import org.springframework.webflow.engine.Flow; import org.springframework.webflow.test.execution.AbstractXmlFlowExecutionTests; /** * Sample {@link AbstractXmlFlowExecutionTests} subclass. */ public class SearchFlowExecutionTests extends AbstractXmlFlowExecutionTests { protected FlowDefinitionResource getResource(FlowDefinitionResourceFactory resourceFactory) { return resourceFactory.createClassPathResource("search-flow.xml", getClass()); } public void testStartFlow() { ExternalContext context = new MockExternalContext(); startFlow(null, context); assertCurrentStateEquals("enterCriteria"); } public void testCriteriaSubmitSuccess() { startFlow(null, new MockExternalContext()); MockExternalContext context = new MockExternalContext(); context.putRequestParameter("firstName", "Keith"); context.putRequestParameter("lastName", "Donald"); context.setEventId("search"); resumeFlow(context); assertCurrentStateEquals("displayResults"); assertResponseWrittenEquals("searchResults", context); } public void testNewSearch() { startFlow(null, new MockExternalContext()); MockExternalContext context = new MockExternalContext(); context.putRequestParameter("firstName", "Keith"); context.putRequestParameter("lastName", "Donald"); context.setEventId("search"); resumeFlow(context); context = new MockExternalContext(); context.setEventId("newSearch"); resumeFlow(context); assertCurrentStateEquals("enterCriteria"); assertResponseWrittenEquals("searchCriteria", context); } public void testSelectValidResult() { startFlow(null, new MockExternalContext()); MockExternalContext context = new MockExternalContext(); context.putRequestParameter("firstName", "Keith"); context.putRequestParameter("lastName", "Donald"); context.setEventId("search"); resumeFlow(context); context = new MockExternalContext(); context.setEventId("select"); context.putRequestParameter("id", "1"); resumeFlow(context); assertCurrentStateEquals("displayResults"); } protected void configureFlowBuilderContext(MockFlowBuilderContext builderContext) { Flow mockDetailFlow = new Flow("detail-flow"); mockDetailFlow.setInputMapper(new Mapper() { public MappingResults map(Object source, Object target) { assertEquals("id of value 1 not provided as input by calling search flow", new Long(1), ((AttributeMap) source).get("id")); return null; } }); // test responding to finish result new EndState(mockDetailFlow, "finish"); builderContext.registerSubflow(mockDetailFlow); builderContext.registerBean("phonebook", new TestPhoneBook()); } public static class TestPhoneBook { public List search(Object criteria) { ArrayList res = new ArrayList(); res.add(new Object()); return res; } public Object getPerson(Long id) { return new Object(); } public Object getPerson(String userId) { return new Object(); } } }././@LongLink0000000000000000000000000000020500000000000011562 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/test/java/org/springframework/webflow/test/search-flow.xmllibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/test/java/org/springframew0000644000000000000000000000216111360615642030005 0ustar ././@LongLink0000000000000000000000000000021300000000000011561 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/test/java/org/springframework/webflow/test/search-flow-beans.xmllibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/test/java/org/springframew0000644000000000000000000000112011360615632027776 0ustar ././@LongLink0000000000000000000000000000021200000000000011560 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/test/java/org/springframework/webflow/test/MockActionTests.javalibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/test/java/org/springframew0000644000000000000000000000217011360615632030004 0ustar package org.springframework.webflow.test; import junit.framework.TestCase; import org.springframework.webflow.core.collection.LocalAttributeMap; import org.springframework.webflow.execution.Event; public class MockActionTests extends TestCase { public void testMockActionExecute() { MockAction action = new MockAction(); Event e = action.execute(new MockRequestContext()); assertEquals("success", e.getId()); assertTrue(e.getAttributes().isEmpty()); } public void testMockActionExecuteCustomResult() { MockAction action = new MockAction("foo"); Event e = action.execute(new MockRequestContext()); assertEquals("foo", e.getId()); assertTrue(e.getAttributes().isEmpty()); } public void testMockActionExecuteCustomResultAttributes() { MockAction action = new MockAction("foo"); LocalAttributeMap resultAttributes = new LocalAttributeMap(); resultAttributes.put("bar", "baz"); action.setResultAttributes(resultAttributes); Event e = action.execute(new MockRequestContext()); assertEquals("foo", e.getId()); assertFalse(e.getAttributes().isEmpty()); assertEquals(e.getAttributes().get("bar"), "baz"); } } ././@LongLink0000000000000000000000000000017300000000000011566 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/test/java/org/springframework/webflow/execution/libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/test/java/org/springframew0000755000000000000000000000000011360615644030005 5ustar ././@LongLink0000000000000000000000000000021200000000000011560 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/test/java/org/springframework/webflow/execution/TestAction.javalibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/test/java/org/springframew0000644000000000000000000000260411360615636030012 0ustar /* * Copyright 2004-2008 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.springframework.webflow.execution; import org.springframework.util.StringUtils; import org.springframework.webflow.action.AbstractAction; /** * Test action for use in unit tests. */ public class TestAction extends AbstractAction { private Event result = new Event(this, "success"); private boolean executed; private int executionCount; public TestAction() { } public TestAction(String result) { if (StringUtils.hasText(result)) { this.result = new Event(this, result); } else { this.result = null; } } public boolean isExecuted() { return executed; } public int getExecutionCount() { return executionCount; } protected Event doExecute(RequestContext context) throws Exception { executed = true; executionCount++; return result; } }././@LongLink0000000000000000000000000000020300000000000011560 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/test/java/org/springframework/webflow/execution/factory/libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/test/java/org/springframew0000755000000000000000000000000011360615644030005 5ustar ././@LongLink0000000000000000000000000000025600000000000011570 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/test/java/org/springframework/webflow/execution/factory/StaticFlowExecutionListenerLoaderTests.javalibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/test/java/org/springframew0000644000000000000000000000401311360615644030005 0ustar /* * Copyright 2004-2008 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.springframework.webflow.execution.factory; import junit.framework.TestCase; import org.springframework.webflow.engine.Flow; import org.springframework.webflow.execution.FlowExecutionListener; import org.springframework.webflow.execution.FlowExecutionListenerAdapter; /** * Unit tests for {@link StaticFlowExecutionListenerLoader}. */ public class StaticFlowExecutionListenerLoaderTests extends TestCase { private FlowExecutionListenerLoader loader = StaticFlowExecutionListenerLoader.EMPTY_INSTANCE; public void testEmptyListenerArray() { assertEquals(0, loader.getListeners(new Flow("foo")).length); assertEquals(0, loader.getListeners(null).length); } public void testStaticListener() { final FlowExecutionListener listener1 = new FlowExecutionListenerAdapter() { }; loader = new StaticFlowExecutionListenerLoader(listener1); assertEquals(listener1, loader.getListeners(new Flow("foo"))[0]); } public void testStaticListeners() { final FlowExecutionListener listener1 = new FlowExecutionListenerAdapter() { }; final FlowExecutionListener listener2 = new FlowExecutionListenerAdapter() { }; loader = new StaticFlowExecutionListenerLoader(new FlowExecutionListener[] { listener1, listener2 }); assertEquals(listener1, loader.getListeners(new Flow("foo"))[0]); assertEquals(listener2, loader.getListeners(new Flow("foo"))[1]); } }././@LongLink0000000000000000000000000000026300000000000011566 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/test/java/org/springframework/webflow/execution/factory/ConditionalFlowExecutionListenerLoaderTests.javalibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/test/java/org/springframew0000644000000000000000000000500011360615632027777 0ustar /* * Copyright 2004-2008 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.springframework.webflow.execution.factory; import junit.framework.TestCase; import org.springframework.webflow.engine.Flow; import org.springframework.webflow.execution.FlowExecutionListener; import org.springframework.webflow.execution.FlowExecutionListenerAdapter; /** * Unit tests for {@link ConditionalFlowExecutionListenerLoader}. */ public class ConditionalFlowExecutionListenerLoaderTests extends TestCase { private FlowExecutionListenerCriteriaFactory criteriaFactory; private ConditionalFlowExecutionListenerLoader loader; protected void setUp() { loader = new ConditionalFlowExecutionListenerLoader(); criteriaFactory = new FlowExecutionListenerCriteriaFactory(); } public void testAddConditionalListener() { FlowExecutionListenerAdapter listener = new FlowExecutionListenerAdapter() { }; loader.addListener(listener, criteriaFactory.allFlows()); Flow flow = new Flow("foo"); FlowExecutionListener[] listeners = loader.getListeners(flow); assertEquals(1, listeners.length); assertSame(listener, listeners[0]); } public void testAddMultipleListeners() { FlowExecutionListenerAdapter listener = new FlowExecutionListenerAdapter() { }; FlowExecutionListenerAdapter listener2 = new FlowExecutionListenerAdapter() { }; loader.addListener(listener, criteriaFactory.allFlows()); loader.addListener(listener2, criteriaFactory.allFlows()); Flow flow = new Flow("foo"); FlowExecutionListener[] listeners = loader.getListeners(flow); assertEquals(2, listeners.length); assertSame(listener, listeners[0]); assertSame(listener2, listeners[1]); } public void testAddListenerButNoMatch() { FlowExecutionListenerAdapter listener = new FlowExecutionListenerAdapter() { }; loader.addListener(listener, criteriaFactory.flow("bar")); Flow flow = new Flow("foo"); FlowExecutionListener[] listeners = loader.getListeners(flow); assertEquals(0, listeners.length); } } ././@LongLink0000000000000000000000000000026100000000000011564 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/test/java/org/springframework/webflow/execution/factory/FlowExecutionListenerCriteriaFactoryTests.javalibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/test/java/org/springframew0000644000000000000000000000313611360615642030010 0ustar /* * Copyright 2004-2008 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.springframework.webflow.execution.factory; import junit.framework.TestCase; import org.springframework.webflow.engine.Flow; /** * Unit tests for {@link FlowExecutionListenerCriteriaFactory}. */ public class FlowExecutionListenerCriteriaFactoryTests extends TestCase { private FlowExecutionListenerCriteriaFactory factory = new FlowExecutionListenerCriteriaFactory(); public void testAllFlows() { FlowExecutionListenerCriteria c = factory.allFlows(); assertEquals(true, c.appliesTo(new Flow("foo"))); } public void testFlowMatch() { FlowExecutionListenerCriteria c = factory.flow("foo"); assertEquals(true, c.appliesTo(new Flow("foo"))); assertEquals(false, c.appliesTo(new Flow("baz"))); } public void testMultipleFlowMatch() { FlowExecutionListenerCriteria c = factory.flows(new String[] { "foo", "bar" }); assertEquals(true, c.appliesTo(new Flow("foo"))); assertEquals(true, c.appliesTo(new Flow("bar"))); assertEquals(false, c.appliesTo(new Flow("baz"))); } } ././@LongLink0000000000000000000000000000020600000000000011563 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/test/java/org/springframework/webflow/execution/repository/libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/test/java/org/springframew0000755000000000000000000000000011360615642030003 5ustar ././@LongLink0000000000000000000000000000021700000000000011565 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/test/java/org/springframework/webflow/execution/repository/snapshot/libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/test/java/org/springframew0000755000000000000000000000000011360615642030003 5ustar ././@LongLink0000000000000000000000000000027700000000000011573 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/test/java/org/springframework/webflow/execution/repository/snapshot/SerializedFlowExecutionSnapshotFactoryTests.javalibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/test/java/org/springframew0000644000000000000000000000542611360615642030014 0ustar package org.springframework.webflow.execution.repository.snapshot; import junit.framework.TestCase; import org.springframework.webflow.definition.FlowDefinition; import org.springframework.webflow.definition.registry.FlowDefinitionConstructionException; import org.springframework.webflow.definition.registry.FlowDefinitionLocator; import org.springframework.webflow.definition.registry.NoSuchFlowDefinitionException; import org.springframework.webflow.engine.Flow; import org.springframework.webflow.engine.RequestControlContext; import org.springframework.webflow.engine.State; import org.springframework.webflow.engine.impl.FlowExecutionImpl; import org.springframework.webflow.engine.impl.FlowExecutionImplFactory; import org.springframework.webflow.execution.FlowExecutionException; import org.springframework.webflow.execution.FlowExecutionKeyFactory; import org.springframework.webflow.test.MockExternalContext; public class SerializedFlowExecutionSnapshotFactoryTests extends TestCase { private Flow flow; private SerializedFlowExecutionSnapshotFactory factory; private FlowExecutionKeyFactory executionKeyFactory; private FlowExecutionImplFactory executionFactory; public void setUp() { flow = new Flow("myFlow"); new State(flow, "state") { protected void doEnter(RequestControlContext context) throws FlowExecutionException { } }; FlowDefinitionLocator locator = new FlowDefinitionLocator() { public FlowDefinition getFlowDefinition(String flowId) throws NoSuchFlowDefinitionException, FlowDefinitionConstructionException { return flow; } }; executionFactory = new FlowExecutionImplFactory(); executionFactory.setExecutionKeyFactory(executionKeyFactory); factory = new SerializedFlowExecutionSnapshotFactory(executionFactory, locator); } public void testCreateSnapshot() { FlowExecutionImpl flowExecution = (FlowExecutionImpl) executionFactory.createFlowExecution(flow); flowExecution.start(null, new MockExternalContext()); flowExecution.getActiveSession().getScope().put("foo", "bar"); FlowExecutionSnapshot snapshot = factory.createSnapshot(flowExecution); FlowExecutionImpl flowExecution2 = (FlowExecutionImpl) factory.restoreExecution(snapshot, "myFlow", null, flowExecution.getConversationScope(), executionKeyFactory); assertNotSame(flowExecution, flowExecution2); assertEquals(flowExecution.getDefinition().getId(), flowExecution2.getDefinition().getId()); assertEquals(flowExecution.getActiveSession().getScope().get("foo"), flowExecution2.getActiveSession() .getScope().get("foo")); assertEquals(flowExecution.getActiveSession().getState().getId(), flowExecution2.getActiveSession().getState() .getId()); assertNull(flowExecution2.getKey()); assertSame(flowExecution.getConversationScope(), flowExecution2.getConversationScope()); } }././@LongLink0000000000000000000000000000021300000000000011561 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/test/java/org/springframework/webflow/execution/repository/impl/libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/test/java/org/springframew0000755000000000000000000000000011360615634030004 5ustar ././@LongLink0000000000000000000000000000026300000000000011566 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/test/java/org/springframework/webflow/execution/repository/impl/DefaultFlowExecutionRepositoryTests.javalibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/test/java/org/springframew0000644000000000000000000002545111360615632030013 0ustar package org.springframework.webflow.execution.repository.impl; import java.util.HashMap; import java.util.Map; import junit.framework.TestCase; import org.springframework.webflow.conversation.Conversation; import org.springframework.webflow.conversation.ConversationException; import org.springframework.webflow.conversation.ConversationId; import org.springframework.webflow.conversation.ConversationManager; import org.springframework.webflow.conversation.ConversationParameters; import org.springframework.webflow.conversation.NoSuchConversationException; import org.springframework.webflow.conversation.impl.BadlyFormattedConversationIdException; import org.springframework.webflow.conversation.impl.SimpleConversationId; import org.springframework.webflow.definition.FlowDefinition; import org.springframework.webflow.definition.registry.FlowDefinitionConstructionException; import org.springframework.webflow.definition.registry.FlowDefinitionLocator; import org.springframework.webflow.definition.registry.NoSuchFlowDefinitionException; import org.springframework.webflow.engine.Flow; import org.springframework.webflow.engine.StubViewFactory; import org.springframework.webflow.engine.Transition; import org.springframework.webflow.engine.ViewState; import org.springframework.webflow.engine.impl.FlowExecutionImplFactory; import org.springframework.webflow.engine.support.DefaultTargetStateResolver; import org.springframework.webflow.execution.FlowExecution; import org.springframework.webflow.execution.FlowExecutionKey; import org.springframework.webflow.execution.repository.BadlyFormattedFlowExecutionKeyException; import org.springframework.webflow.execution.repository.FlowExecutionLock; import org.springframework.webflow.execution.repository.FlowExecutionRestorationFailureException; import org.springframework.webflow.execution.repository.NoSuchFlowExecutionException; import org.springframework.webflow.execution.repository.snapshot.SerializedFlowExecutionSnapshotFactory; import org.springframework.webflow.test.MockExternalContext; public class DefaultFlowExecutionRepositoryTests extends TestCase { private Flow flow; private ConversationManager conversationManager; private DefaultFlowExecutionRepository repository; FlowExecutionImplFactory executionFactory = new FlowExecutionImplFactory(); protected void setUp() throws Exception { flow = new Flow("myFlow"); ViewState s1 = new ViewState(flow, "state", new StubViewFactory()); s1.getTransitionSet().add(new Transition(new DefaultTargetStateResolver("state2"))); new ViewState(flow, "state2", new StubViewFactory()); conversationManager = new StubConversationManager(); FlowDefinitionLocator locator = new FlowDefinitionLocator() { public FlowDefinition getFlowDefinition(String flowId) throws NoSuchFlowDefinitionException, FlowDefinitionConstructionException { return flow; } }; SerializedFlowExecutionSnapshotFactory snapshotFactory = new SerializedFlowExecutionSnapshotFactory( executionFactory, locator); repository = new DefaultFlowExecutionRepository(conversationManager, snapshotFactory); executionFactory.setExecutionKeyFactory(repository); } public void testParseFlowExecutionKey() { String key = "e12345s54321"; FlowExecutionKey k = repository.parseFlowExecutionKey(key); assertEquals(key, k.toString()); } public void testParseBadlyFormattedFlowExecutionKey() { String key = "e12345"; try { repository.parseFlowExecutionKey(key); fail("Should have failed"); } catch (BadlyFormattedFlowExecutionKeyException e) { assertEquals("e12345", e.getInvalidKey()); assertNotNull(e.getFormat()); } } public void testParseBadlyFormattedFlowExecutionKeyBadContinuationId() { String key = "c12345vaaaa"; try { repository.parseFlowExecutionKey(key); fail("Should have failed"); } catch (BadlyFormattedFlowExecutionKeyException e) { assertEquals("c12345vaaaa", e.getInvalidKey()); assertNotNull(e.getFormat()); } } public void testGetLock() { FlowExecutionKey key = repository.parseFlowExecutionKey("e12345s54321"); FlowExecutionLock lock = repository.getLock(key); assertNotNull(lock); lock.unlock(); } public void testGetLockNoSuchFlowExecution() { FlowExecutionKey key = repository.parseFlowExecutionKey("e99999s54321"); try { repository.getLock(key); fail("should have failed"); } catch (NoSuchFlowExecutionException e) { e.printStackTrace(); } } public void testPutFlowExecution() { FlowExecution execution = executionFactory.createFlowExecution(flow); execution.start(null, new MockExternalContext()); assertNotNull(execution.getKey()); repository.putFlowExecution(execution); String key = execution.getKey().toString(); FlowExecutionKey parsedKey = repository.parseFlowExecutionKey(key); FlowExecution execution2 = repository.getFlowExecution(parsedKey); assertSame(execution.getDefinition(), execution2.getDefinition()); assertEquals(execution.getActiveSession().getState().getId(), execution2.getActiveSession().getState().getId()); } public void testPutFlowExecutionNextSnapshotId() { FlowExecution execution = executionFactory.createFlowExecution(flow); execution.start(null, new MockExternalContext()); assertNotNull(execution.getKey()); repository.putFlowExecution(execution); String key = execution.getKey().toString(); FlowExecutionKey parsedKey = repository.parseFlowExecutionKey(key); FlowExecution execution2 = repository.getFlowExecution(parsedKey); assertSame(execution.getDefinition(), execution2.getDefinition()); assertEquals(execution.getActiveSession().getState().getId(), execution2.getActiveSession().getState().getId()); MockExternalContext context = new MockExternalContext(); context.setEventId("foo"); execution2.resume(context); repository.putFlowExecution(execution2); assertNotSame(execution.getKey(), execution2.getKey()); } public void testPutFlowExecutionNoKeyAssigned() { FlowExecution execution = executionFactory.createFlowExecution(flow); try { repository.putFlowExecution(execution); fail("Should have failed"); } catch (IllegalStateException e) { } } public void testRemoveFlowExecution() { FlowExecution execution = executionFactory.createFlowExecution(flow); execution.start(null, new MockExternalContext()); assertNotNull(execution.getKey()); repository.putFlowExecution(execution); repository.removeFlowExecution(execution); try { repository.getFlowExecution(execution.getKey()); fail("Should have failed"); } catch (NoSuchFlowExecutionException e) { } } public void testRemoveKeyNotSet() { FlowExecution execution = executionFactory.createFlowExecution(flow); try { repository.removeFlowExecution(execution); fail("Should have failed"); } catch (IllegalStateException e) { } } public void testRemoveNoSuchFlowExecution() { FlowExecution execution = executionFactory.createFlowExecution(flow); execution.start(null, new MockExternalContext()); try { repository.removeFlowExecution(execution); repository.removeFlowExecution(execution); fail("Should have failed"); } catch (NoSuchFlowExecutionException e) { } } public void testGetKey() { FlowExecution execution = executionFactory.createFlowExecution(flow); assertEquals("e12345s1", repository.getKey(execution).toString()); assertEquals("e12345s2", repository.getKey(execution).toString()); assertEquals("e12345s3", repository.getKey(execution).toString()); } public void testUpdate() { FlowExecution execution = executionFactory.createFlowExecution(flow); execution.start(null, new MockExternalContext()); repository.putFlowExecution(execution); execution.getActiveSession().getScope().put("foo", "bar"); repository.updateFlowExecutionSnapshot(execution); FlowExecution execution2 = repository.getFlowExecution(execution.getKey()); assertEquals("bar", execution2.getActiveSession().getScope().get("foo")); } public void testRemove() { FlowExecution execution = executionFactory.createFlowExecution(flow); execution.start(null, new MockExternalContext()); repository.putFlowExecution(execution); repository.removeFlowExecutionSnapshot(execution); try { repository.getFlowExecution(execution.getKey()); fail("Should have failed"); } catch (FlowExecutionRestorationFailureException e) { } } public void testRemoveAll() { FlowExecution execution = executionFactory.createFlowExecution(flow); execution.start(null, new MockExternalContext()); repository.putFlowExecution(execution); repository.removeAllFlowExecutionSnapshots(execution); try { repository.getFlowExecution(execution.getKey()); fail("Should have failed"); } catch (FlowExecutionRestorationFailureException e) { } } public void testUpdateNothingToDo() { FlowExecution execution = executionFactory.createFlowExecution(flow); repository.updateFlowExecutionSnapshot(execution); } public void testRemoveNothingToDo() { FlowExecution execution = executionFactory.createFlowExecution(flow); repository.removeFlowExecutionSnapshot(execution); } public void testRemoveAllSnapshotsNothingToDo() { FlowExecution execution = executionFactory.createFlowExecution(flow); repository.removeAllFlowExecutionSnapshots(execution); } public static class StubConversationManager implements ConversationManager { /** * The single conversation managed by the manager. */ private final StubConversation INSTANCE = new StubConversation(); public Conversation beginConversation(ConversationParameters conversationParameters) throws ConversationException { return INSTANCE; } public Conversation getConversation(ConversationId id) throws ConversationException { if (id.equals(INSTANCE.getId()) && !INSTANCE.hasEnded()) { return INSTANCE; } else { throw new NoSuchConversationException(id); } } public ConversationId parseConversationId(String encodedId) throws ConversationException { try { return new SimpleConversationId(new Integer(Integer.parseInt(encodedId))); } catch (NumberFormatException e) { throw new BadlyFormattedConversationIdException(encodedId, e); } } private static class StubConversation implements Conversation { private final ConversationId ID = new SimpleConversationId(new Integer(12345)); private boolean locked; private boolean ended; private Map attributes = new HashMap(); public boolean hasEnded() { return ended; } public boolean isLocked() { return locked; } public ConversationId getId() { return ID; } public void lock() { locked = true; } public Object getAttribute(Object name) { return attributes.get(name); } public void putAttribute(Object name, Object value) { attributes.put(name, value); } public void removeAttribute(Object name) { attributes.remove(name); } public void end() { ended = true; } public void unlock() { locked = false; } } } } ././@LongLink0000000000000000000000000000026500000000000011570 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/test/java/org/springframework/webflow/execution/repository/impl/SimpleFlowExecutionSnapshotGroupTests.javalibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/test/java/org/springframew0000644000000000000000000000651511360615634030015 0ustar package org.springframework.webflow.execution.repository.impl; import java.io.Serializable; import junit.framework.TestCase; import org.springframework.webflow.execution.repository.snapshot.FlowExecutionSnapshot; import org.springframework.webflow.execution.repository.snapshot.SnapshotNotFoundException; public class SimpleFlowExecutionSnapshotGroupTests extends TestCase { private SimpleFlowExecutionSnapshotGroup group = new SimpleFlowExecutionSnapshotGroup(); private FlowExecutionSnapshot snapshot = new FlowExecutionSnapshot() { }; private FlowExecutionSnapshot snapshot2 = new FlowExecutionSnapshot() { }; private FlowExecutionSnapshot snapshot3 = new FlowExecutionSnapshot() { }; public void testInitialState() { assertEquals(0, group.getSnapshotCount()); assertEquals(-1, group.getMaxSnapshots()); assertEquals(new Integer(1), group.nextSnapshotId()); } public void testGetSnapshot() { Serializable id = group.nextSnapshotId(); group.addSnapshot(id, snapshot); assertSame(snapshot, group.getSnapshot(id)); } public void testGetSnapshotNotFound() { try { group.getSnapshot(group.nextSnapshotId()); fail("Should have failed"); } catch (SnapshotNotFoundException e) { } } public void testNextSnapshotId() { assertEquals(new Integer(1), group.nextSnapshotId()); assertEquals(new Integer(2), group.nextSnapshotId()); } public void testAddMaximumReached() { group.setMaxSnapshots(2); group.addSnapshot(group.nextSnapshotId(), snapshot); group.addSnapshot(group.nextSnapshotId(), snapshot2); group.addSnapshot(group.nextSnapshotId(), snapshot3); assertEquals(2, group.getSnapshotCount()); try { group.getSnapshot(new Integer(1)); fail("Should have failed"); } catch (SnapshotNotFoundException e) { } } public void testRemoveSnapshot() { group.addSnapshot(group.nextSnapshotId(), snapshot); group.addSnapshot(group.nextSnapshotId(), snapshot2); assertEquals(2, group.getSnapshotCount()); group.removeSnapshot(new Integer(1)); assertEquals(1, group.getSnapshotCount()); try { group.getSnapshot(new Integer(1)); fail("Should have failed"); } catch (SnapshotNotFoundException e) { } } public void testRemoveAllSnapshots() { group.addSnapshot(group.nextSnapshotId(), snapshot); group.addSnapshot(group.nextSnapshotId(), snapshot2); assertEquals(2, group.getSnapshotCount()); group.removeAllSnapshots(); assertEquals(0, group.getSnapshotCount()); } public void testUpdateSnapshot() { group.addSnapshot(group.nextSnapshotId(), snapshot); group.updateSnapshot(new Integer(1), snapshot2); assertSame(snapshot2, group.getSnapshot(new Integer(1))); } public void testRemoveSnapshotDoesNotExist() { group.addSnapshot(group.nextSnapshotId(), snapshot); group.removeSnapshot(new Integer(1)); assertEquals(0, group.getSnapshotCount()); group.removeSnapshot(new Integer(1)); assertEquals(0, group.getSnapshotCount()); } public void testRemoveSnapshotsDoesNotExist() { group.addSnapshot(group.nextSnapshotId(), snapshot); group.removeAllSnapshots(); assertEquals(0, group.getSnapshotCount()); group.removeAllSnapshots(); assertEquals(0, group.getSnapshotCount()); } public void testUpdateSnapshotDoesNotExist() { assertEquals(0, group.getSnapshotCount()); group.updateSnapshot(new Integer(1), snapshot2); assertEquals(0, group.getSnapshotCount()); } }././@LongLink0000000000000000000000000000021600000000000011564 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/test/java/org/springframework/webflow/execution/repository/support/libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/test/java/org/springframew0000755000000000000000000000000011360615634030004 5ustar ././@LongLink0000000000000000000000000000026100000000000011564 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/test/java/org/springframework/webflow/execution/repository/support/CompositeFlowExecutionKeyTests.javalibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/test/java/org/springframew0000644000000000000000000000250011360615634030003 0ustar /* * Copyright 2004-2008 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.springframework.webflow.execution.repository.support; import junit.framework.TestCase; import org.springframework.webflow.conversation.impl.SimpleConversationId; public class CompositeFlowExecutionKeyTests extends TestCase { public void testToString() { CompositeFlowExecutionKey key = new CompositeFlowExecutionKey(new SimpleConversationId("1"), "1"); assertEquals("e1s1", key.toString()); } public void testEquals() { CompositeFlowExecutionKey key = new CompositeFlowExecutionKey(new SimpleConversationId("foo"), "bar"); CompositeFlowExecutionKey key2 = new CompositeFlowExecutionKey(new SimpleConversationId("foo"), "bar"); assertEquals(key, key2); } } ././@LongLink0000000000000000000000000000023100000000000011561 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/test/java/org/springframework/webflow/execution/MockFlowExecutionListener.javalibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/test/java/org/springframew0000644000000000000000000001764711360615644030026 0ustar /* * Copyright 2004-2008 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); you may not * use this file except in compliance with the License. You may obtain a copy of * the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the * License for the specific language governing permissions and limitations under * the License. */ package org.springframework.webflow.execution; import org.springframework.util.Assert; import org.springframework.webflow.core.collection.AttributeMap; import org.springframework.webflow.core.collection.MutableAttributeMap; import org.springframework.webflow.definition.FlowDefinition; import org.springframework.webflow.definition.StateDefinition; import org.springframework.webflow.definition.TransitionDefinition; /** * Mock implementation of the FlowExecutionListener interface for use in unit tests. * * @author Keith Donald * @author Erwin Vervaet * @author Scott Andrews */ public class MockFlowExecutionListener extends FlowExecutionListenerAdapter { private boolean sessionStarting; private int sessionCreatingCount; private int sessionStartingCount; private int sessionStartedCount; private boolean started; private boolean executing; private int stateEnteringCount; private int stateEnteredCount; private int transitionExecutingCount; private int resumingCount; private boolean paused; private int pausedCount; private int flowNestingLevel; private boolean requestInProcess; private int requestsSubmittedCount; private int requestsProcessedCount; private int eventSignaledCount; private boolean stateEntering; private boolean sessionEnding; private int sessionEndingCount; private int sessionEndedCount; private int exceptionThrownCount; /** * Is the flow execution running: it has started but not yet ended. */ public boolean isStarted() { return started; } /** * Is the flow execution executing? */ public boolean isExecuting() { return executing; } /** * Is the flow execution paused? */ public boolean isPaused() { return paused; } /** * Returns the nesting level of the currently active flow in the flow execution. The root flow is at level 0, a sub * flow of the root flow is at level 1, and so on. */ public int getFlowNestingLevel() { return flowNestingLevel; } /** * Checks if a request is in process. A request is in process if it was submitted but has not yet completed * processing. */ public boolean isRequestInProcess() { return requestInProcess; } /** * Returns the number of requests submitted so far. */ public int getRequestsSubmittedCount() { return requestsSubmittedCount; } /** * Returns the number of requests processed so far. */ public int getRequestsProcessedCount() { return requestsProcessedCount; } /** * Returns the number of sessions that have attempted to be created so far. */ public int getSessionCreatingCount() { return sessionCreatingCount; } /** * Returns the number of sessions that have attempted to start so far. */ public int getSessionStartingCount() { return sessionStartingCount; } /** * Returns the number of sessions that started so far. */ public int getSessionStartedCount() { return sessionStartedCount; } /** * Returns the number of state entries attempted so far. */ public int getStateEnteringCount() { return stateEnteringCount; } /** * Returns the number of states entered so far. */ public int getStateEnteredCount() { return stateEnteredCount; } /** * Returns the number of transitions entered so far. */ public int getTransitionExecutingCount() { return transitionExecutingCount; } /** * Returns the number of events signaled so far. */ public int getEventSignaledCount() { return eventSignaledCount; } /** * Returns the number of times the flow execution has paused. */ public int getPausedCount() { return pausedCount; } /** * Returns the number of times the flow execution has resumed. */ public int getResumingCount() { return resumingCount; } /** * Returns the number of sessions that have attempted to end so far. */ public int getSessionEndingCount() { return sessionEndingCount; } /** * Returns the number of sessions that end so far. */ public int getSessionEndedCount() { return sessionEndedCount; } /** * Returns the number of exceptions thrown. */ public int getExceptionThrownCount() { return exceptionThrownCount; } public void requestSubmitted(RequestContext context) { Assert.state(!requestInProcess, "There is already a request being processed"); requestsSubmittedCount++; requestInProcess = true; } public void sessionCreating(RequestContext context, FlowDefinition definition) { if (!context.getFlowExecutionContext().isActive()) { Assert.state(!started, "The flow execution was already started"); started = true; } sessionCreatingCount++; } public void sessionStarting(RequestContext context, FlowSession session, MutableAttributeMap input) { sessionStartingCount++; sessionStarting = true; flowNestingLevel++; } public void sessionStarted(RequestContext context, FlowSession session) { Assert.state(sessionStarting, "The session should've been starting..."); sessionStarting = false; sessionStartedCount++; } public void requestProcessed(RequestContext context) { Assert.state(requestInProcess, "There is no request being processed"); requestsProcessedCount++; requestInProcess = false; } public void eventSignaled(RequestContext context, Event event) { eventSignaledCount++; } public void stateEntering(RequestContext context, StateDefinition state) throws EnterStateVetoException { stateEntering = true; stateEnteringCount++; } public void stateEntered(RequestContext context, StateDefinition newState, StateDefinition previousState) { Assert.state(stateEntering, "State should've entering..."); stateEntering = false; stateEnteredCount++; } public void transitionExecuting(RequestContext context, TransitionDefinition transition) { transitionExecutingCount++; } public void paused(RequestContext context) { executing = false; paused = true; pausedCount++; } public void resuming(RequestContext context) { executing = true; paused = false; resumingCount++; } public void sessionEnding(RequestContext context, FlowSession session, String outcome, MutableAttributeMap output) { sessionEnding = true; sessionEndingCount++; flowNestingLevel--; } public void sessionEnded(RequestContext context, FlowSession session, String outcome, AttributeMap output) { assertStarted(); Assert.state(sessionEnding, "Should have been ending"); sessionEnding = false; sessionEndedCount++; if (session.isRoot()) { Assert.state(flowNestingLevel == 0, "The flow execution should have ended"); started = false; executing = false; } else { Assert.state(started, "The flow execution prematurely ended"); } } public void exceptionThrown(RequestContext context, FlowExecutionException exception) { exceptionThrownCount++; } /** * Make sure the flow execution has already been started. */ protected void assertStarted() { Assert.state(started, "The flow execution has not yet been started"); } /** * Reset all state collected by this listener. */ public void reset() { started = false; executing = false; requestsSubmittedCount = 0; requestsProcessedCount = 0; sessionCreatingCount = 0; sessionStartingCount = 0; sessionStartedCount = 0; stateEnteringCount = 0; stateEnteredCount = 0; transitionExecutingCount = 0; eventSignaledCount = 0; pausedCount = 0; resumingCount = 0; sessionEndingCount = 0; sessionEndedCount = 0; exceptionThrownCount = 0; flowNestingLevel = 0; } }././@LongLink0000000000000000000000000000020300000000000011560 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/test/java/org/springframework/webflow/TestException.javalibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/test/java/org/springframew0000644000000000000000000000176611360615636030022 0ustar /* * Copyright 2004-2008 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.springframework.webflow; /** * Dummy exception used by several test cases. */ public class TestException extends Exception { public TestException() { super(); } public TestException(String message, Throwable cause) { super(message, cause); } public TestException(String message) { super(message); } public TestException(Throwable cause) { super(cause); } } ././@LongLink0000000000000000000000000000017200000000000011565 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/test/java/org/springframework/webflow/security/libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/test/java/org/springframew0000755000000000000000000000000011360615636030006 5ustar ././@LongLink0000000000000000000000000000024100000000000011562 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/test/java/org/springframework/webflow/security/SecurityFlowExecutionListenerTests.javalibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/test/java/org/springframew0000644000000000000000000001400211360615636030005 0ustar package org.springframework.webflow.security; import java.util.Collection; import java.util.HashSet; import junit.framework.TestCase; import org.springframework.security.AccessDeniedException; import org.springframework.security.Authentication; import org.springframework.security.GrantedAuthority; import org.springframework.security.GrantedAuthorityImpl; import org.springframework.security.context.SecurityContext; import org.springframework.security.context.SecurityContextHolder; import org.springframework.security.context.SecurityContextImpl; import org.springframework.security.providers.UsernamePasswordAuthenticationToken; import org.springframework.webflow.core.collection.LocalAttributeMap; import org.springframework.webflow.definition.FlowDefinition; import org.springframework.webflow.engine.Flow; import org.springframework.webflow.engine.StubViewFactory; import org.springframework.webflow.engine.Transition; import org.springframework.webflow.engine.ViewState; import org.springframework.webflow.engine.support.DefaultTargetStateResolver; import org.springframework.webflow.execution.RequestContext; import org.springframework.webflow.test.MockRequestContext; public class SecurityFlowExecutionListenerTests extends TestCase { public void testSessionCreatingNoSecurity() { SecurityFlowExecutionListener listener = new SecurityFlowExecutionListener(); RequestContext context = new MockRequestContext(); FlowDefinition definition = new Flow("flow"); listener.sessionCreating(context, definition); } public void testSessionCreatingWithSecurity() { SecurityFlowExecutionListener listener = new SecurityFlowExecutionListener(); RequestContext context = new MockRequestContext(); Flow flow = new Flow("flow"); SecurityRule rule = getSecurityRuleAnyAuthorized(); ((LocalAttributeMap) flow.getAttributes()).put(SecurityRule.SECURITY_ATTRIBUTE_NAME, rule); configureSecurityContext(); listener.sessionCreating(context, flow); } public void testStateEnteringNoSecurity() { SecurityFlowExecutionListener listener = new SecurityFlowExecutionListener(); RequestContext context = new MockRequestContext(); Flow flow = new Flow("flow"); ViewState state = new ViewState(flow, "view", new StubViewFactory()); listener.stateEntering(context, state); } public void testStateEnteringWithSecurity() { SecurityFlowExecutionListener listener = new SecurityFlowExecutionListener(); RequestContext context = new MockRequestContext(); Flow flow = new Flow("flow"); ViewState state = new ViewState(flow, "view", new StubViewFactory()); SecurityRule rule = getSecurityRuleAllAuthorized(); ((LocalAttributeMap) state.getAttributes()).put(SecurityRule.SECURITY_ATTRIBUTE_NAME, rule); configureSecurityContext(); listener.stateEntering(context, state); } public void testTransitionExecutingNoSecurity() { SecurityFlowExecutionListener listener = new SecurityFlowExecutionListener(); RequestContext context = new MockRequestContext(); Transition transition = new Transition(new DefaultTargetStateResolver("target")); listener.transitionExecuting(context, transition); } public void testTransitionExecutingWithSecurity() { SecurityFlowExecutionListener listener = new SecurityFlowExecutionListener(); RequestContext context = new MockRequestContext(); Transition transition = new Transition(new DefaultTargetStateResolver("target")); SecurityRule rule = getSecurityRuleAnyAuthorized(); ((LocalAttributeMap) transition.getAttributes()).put(SecurityRule.SECURITY_ATTRIBUTE_NAME, rule); configureSecurityContext(); listener.transitionExecuting(context, transition); } public void testDecideAnyAuthorized() { configureSecurityContext(); new SecurityFlowExecutionListener().decide(getSecurityRuleAnyAuthorized(), this); } public void testDecideAnyDenied() { configureSecurityContext(); try { new SecurityFlowExecutionListener().decide(getSecurityRuleAnyDenied(), this); fail("expected AccessDeniedExpetion"); } catch (AccessDeniedException e) { // we want this } } public void testDecideAllAuthorized() { configureSecurityContext(); new SecurityFlowExecutionListener().decide(getSecurityRuleAllAuthorized(), this); } public void testDecideAllDenied() { configureSecurityContext(); try { new SecurityFlowExecutionListener().decide(getSecurityRuleAllDenied(), this); fail("expected AccessDeniedExpetion"); } catch (AccessDeniedException e) { // we want this } } private void configureSecurityContext() { SecurityContext sc = new SecurityContextImpl(); sc.setAuthentication(getAuthentication()); SecurityContextHolder.setContext(sc); } private SecurityRule getSecurityRuleAnyAuthorized() { SecurityRule rule = new SecurityRule(); rule.setComparisonType(SecurityRule.COMPARISON_ANY); Collection attributes = new HashSet(); attributes.add("ROLE_1"); attributes.add("ROLE_A"); rule.setAttributes(attributes); return rule; } private SecurityRule getSecurityRuleAnyDenied() { SecurityRule rule = new SecurityRule(); rule.setComparisonType(SecurityRule.COMPARISON_ANY); Collection attributes = new HashSet(); attributes.add("ROLE_A"); attributes.add("ROLE_B"); rule.setAttributes(attributes); return rule; } private SecurityRule getSecurityRuleAllAuthorized() { SecurityRule rule = new SecurityRule(); rule.setComparisonType(SecurityRule.COMPARISON_ALL); Collection attributes = new HashSet(); attributes.add("ROLE_1"); attributes.add("ROLE_3"); rule.setAttributes(attributes); return rule; } private SecurityRule getSecurityRuleAllDenied() { SecurityRule rule = new SecurityRule(); rule.setComparisonType(SecurityRule.COMPARISON_ALL); Collection attributes = new HashSet(); attributes.add("ROLE_1"); attributes.add("ROLE_A"); rule.setAttributes(attributes); return rule; } private Authentication getAuthentication() { GrantedAuthority[] authorities = { new GrantedAuthorityImpl("ROLE_1"), new GrantedAuthorityImpl("ROLE_2"), new GrantedAuthorityImpl("ROLE_3") }; return new UsernamePasswordAuthenticationToken("test", "", authorities); } } ././@LongLink0000000000000000000000000000022000000000000011557 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/test/java/org/springframework/webflow/security/SecurityRuleTests.javalibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/test/java/org/springframew0000644000000000000000000000172011360615632030004 0ustar package org.springframework.webflow.security; import java.util.ArrayList; import java.util.Collection; import junit.framework.Assert; import junit.framework.TestCase; public class SecurityRuleTests extends TestCase { public void testConvertAttributesToCommaSeparatedString() { Collection attributes = new ArrayList(); attributes.add("ROLE_1"); attributes.add("ROLE_2"); Assert.assertEquals("ROLE_1, ROLE_2", SecurityRule.securityAttributesToCommaDelimitedList(attributes)); } public void testConvertAttributesFromCommaSeparatedString() { Collection attributes = SecurityRule.commaDelimitedListToSecurityAttributes(" ,,ROLE_1, ROLE_2"); Assert.assertEquals(2, attributes.size()); Assert.assertTrue(attributes.contains("ROLE_1")); Assert.assertTrue(attributes.contains("ROLE_2")); } public void testDefaultComparisonType() { SecurityRule rule = new SecurityRule(); Assert.assertTrue(rule.getComparisonType() == SecurityRule.COMPARISON_ANY); } } ././@LongLink0000000000000000000000000000017000000000000011563 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/test/java/org/springframework/webflow/config/libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/test/java/org/springframew0000755000000000000000000000000011360615642030003 5ustar ././@LongLink0000000000000000000000000000021300000000000011561 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/test/java/org/springframework/webflow/config/FooFlowBuilder.javalibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/test/java/org/springframew0000644000000000000000000000063011360615632030003 0ustar package org.springframework.webflow.config; import org.springframework.webflow.engine.EndState; import org.springframework.webflow.engine.builder.FlowBuilderException; import org.springframework.webflow.engine.builder.support.AbstractFlowBuilder; public class FooFlowBuilder extends AbstractFlowBuilder { public void buildStates() throws FlowBuilderException { new EndState(getFlow(), "finish"); } } ././@LongLink0000000000000000000000000000020000000000000011555 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/test/java/org/springframework/webflow/config/flow.xmllibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/test/java/org/springframew0000644000000000000000000000044711360615640030010 0ustar ././@LongLink0000000000000000000000000000021100000000000011557 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/test/java/org/springframework/webflow/config/flow-registry.xmllibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/test/java/org/springframew0000644000000000000000000000336111360615632030007 0ustar ././@LongLink0000000000000000000000000000021100000000000011557 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/test/java/org/springframework/webflow/config/flow-executor.xmllibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/test/java/org/springframew0000644000000000000000000000304111360615642030003 0ustar ././@LongLink0000000000000000000000000000024200000000000011563 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/test/java/org/springframework/webflow/config/FlowExecutorBeanDefinitionParserTests.javalibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/test/java/org/springframew0000644000000000000000000000327011360615634030010 0ustar package org.springframework.webflow.config; import junit.framework.TestCase; import org.springframework.context.support.ClassPathXmlApplicationContext; import org.springframework.webflow.definition.FlowDefinition; import org.springframework.webflow.execution.FlowExecutionListenerAdapter; import org.springframework.webflow.execution.RequestContext; import org.springframework.webflow.executor.FlowExecutor; import org.springframework.webflow.test.MockExternalContext; public class FlowExecutorBeanDefinitionParserTests extends TestCase { private ClassPathXmlApplicationContext context; public void setUp() { context = new ClassPathXmlApplicationContext("org/springframework/webflow/config/flow-executor.xml"); } public void testConfigOk() { FlowExecutor executor = (FlowExecutor) context.getBean("flowExecutor", FlowExecutor.class); executor.launchExecution("flow", null, new MockExternalContext()); FlowExecutor executor2 = (FlowExecutor) context.getBean("flowExecutorSimpleRepo", FlowExecutor.class); executor2.launchExecution("flow", null, new MockExternalContext()); } public static class ConfigurationListener extends FlowExecutionListenerAdapter { public void sessionCreating(RequestContext context, FlowDefinition definition) { if (!context.getFlowExecutionContext().isActive()) { assertEquals(3, context.getFlowExecutionContext().getAttributes().size()); assertEquals(Boolean.FALSE, context.getFlowExecutionContext().getAttributes().getBoolean( "alwaysRedirectOnPause")); assertEquals("bar", context.getFlowExecutionContext().getAttributes().get("foo")); assertEquals(new Integer(2), context.getFlowExecutionContext().getAttributes().get("bar")); } } } } ././@LongLink0000000000000000000000000000023700000000000011567 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/test/java/org/springframework/webflow/config/FlowDefinitionResourceFactoryTests.javalibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/test/java/org/springframew0000644000000000000000000001167511360615632030016 0ustar /* * Copyright 2004-2008 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.springframework.webflow.config; import java.net.MalformedURLException; import junit.framework.TestCase; import org.springframework.core.io.ClassPathResource; import org.springframework.core.io.FileSystemResource; import org.springframework.core.io.Resource; import org.springframework.core.io.ResourceLoader; import org.springframework.core.io.UrlResource; import org.springframework.mock.web.MockServletContext; import org.springframework.web.context.support.ServletContextResourceLoader; /** * Unit tests for {@link FlowDefinitionResourceFactory}. */ public class FlowDefinitionResourceFactoryTests extends TestCase { private ResourceLoader resourceLoader; private FlowDefinitionResourceFactory factory; protected void setUp() throws Exception { resourceLoader = new ServletContextResourceLoader(new MockServletContext()); factory = new FlowDefinitionResourceFactory(); } public void testGetFlowIdNoBasePath() { Resource resource = resourceLoader.getResource("/WEB-INF/hotels/booking/booking-flow.xml"); assertEquals("booking-flow", factory.getFlowId(resource)); } public void testGetFlowIdCustomBasePath() { Resource resource = resourceLoader.getResource("/WEB-INF/hotels/booking/booking-flow.xml"); factory.setBasePath("WEB-INF"); assertEquals("hotels/booking", factory.getFlowId(resource)); } public void testGetFlowCustomBasePathTrailingSlash() { Resource resource = resourceLoader.getResource("/WEB-INF/hotels/booking/booking-flow.xml"); factory.setBasePath("WEB-INF/"); assertEquals("hotels/booking", factory.getFlowId(resource)); } public void testGetFlowIdCustomBasePathLeadingSlash() { Resource resource = resourceLoader.getResource("/WEB-INF/hotels/booking/booking-flow.xml"); factory.setBasePath("/WEB-INF"); assertEquals("hotels/booking", factory.getFlowId(resource)); } public void testGetFlowIdCustomBasePathLeadingAndTrailingSlash() { Resource resource = resourceLoader.getResource("/WEB-INF/hotels/booking/booking-flow.xml"); factory.setBasePath("/WEB-INF/"); assertEquals("hotels/booking", factory.getFlowId(resource)); } public void testGetFlowIdFlowPathIsBasePath() { Resource resource = resourceLoader.getResource("/WEB-INF/hotels/booking/booking-flow.xml"); factory.setBasePath("/WEB-INF/hotels/booking"); assertEquals("booking-flow", factory.getFlowId(resource)); } public void testGetFlowIdBasePathMismatch() { Resource resource = resourceLoader.getResource("/WEB-INF/hotels/booking/booking-flow.xml"); factory.setBasePath("/foo/bar"); assertEquals("WEB-INF/hotels/booking", factory.getFlowId(resource)); } public void testGetFlowIdClassPathResource() { Resource resource = new ClassPathResource("org/springframework/webflow/sample/sample-flow.xml"); factory.setBasePath("classpath:org/springframework/webflow/"); assertEquals("sample", factory.getFlowId(resource)); } public void testGetFlowIdClassPathStarResource() { Resource resource = new ClassPathResource("org/springframework/webflow/sample/sample-flow.xml"); factory.setBasePath("classpath*:org/springframework/webflow/"); assertEquals("sample", factory.getFlowId(resource)); } public void testGetFlowIdFileSystemResource() { Resource resource = new FileSystemResource( "/the/path/on/the/file/system/org/springframework/webflow/sample/sample-flow.xml"); factory.setBasePath("classpath:org/springframework/webflow/"); assertEquals("sample", factory.getFlowId(resource)); } public void testGetFlowIdFileSystemResourceNoBasePathMatch() { Resource resource = new FileSystemResource("/the/path/on/the/file/system/sample-flow.xml"); factory.setBasePath("classpath:org/springframework/webflow/"); assertEquals("the/path/on/the/file/system", factory.getFlowId(resource)); } public void testGetFlowIdUrlResource() throws MalformedURLException { Resource resource = new UrlResource( "file:/the/path/on/the/file/system/org/springframework/webflow/sample/sample-flow.xml"); factory.setBasePath("classpath:org/springframework/webflow/"); assertEquals("sample", factory.getFlowId(resource)); } public void testGetFlowIdUrlResourceNoBasePathMatch() throws MalformedURLException { Resource resource = new UrlResource("file:/the/path/on/the/file/system/sample-flow.xml"); factory.setBasePath("classpath:org/springframework/webflow/"); assertEquals("the/path/on/the/file/system", factory.getFlowId(resource)); } } ././@LongLink0000000000000000000000000000017600000000000011571 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/test/java/org/springframework/webflow/config/flows/libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/test/java/org/springframew0000755000000000000000000000000011360615640030001 5ustar ././@LongLink0000000000000000000000000000020700000000000011564 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/test/java/org/springframework/webflow/config/flows/flow1.xmllibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/test/java/org/springframew0000644000000000000000000000044711360615640030010 0ustar ././@LongLink0000000000000000000000000000020700000000000011564 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/test/java/org/springframework/webflow/config/flows/flow2.xmllibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/test/java/org/springframew0000644000000000000000000000044711360615634030013 0ustar ././@LongLink0000000000000000000000000000022100000000000011560 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/test/java/org/springframework/webflow/config/flow-builder-services.xmllibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/test/java/org/springframew0000644000000000000000000000265511360615636030020 0ustar ././@LongLink0000000000000000000000000000024200000000000011563 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/test/java/org/springframework/webflow/config/FlowRegistryBeanDefinitionParserTests.javalibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/test/java/org/springframew0000644000000000000000000000666111360615636030021 0ustar package org.springframework.webflow.config; import java.util.Iterator; import java.util.Map; import junit.framework.TestCase; import org.springframework.binding.convert.service.DefaultConversionService; import org.springframework.context.support.ClassPathXmlApplicationContext; import org.springframework.webflow.definition.FlowDefinition; import org.springframework.webflow.definition.registry.FlowDefinitionConstructionException; import org.springframework.webflow.definition.registry.FlowDefinitionRegistry; import org.springframework.webflow.definition.registry.NoSuchFlowDefinitionException; import org.springframework.webflow.engine.builder.support.FlowBuilderServices; import org.springframework.webflow.expression.el.WebFlowELExpressionParser; import org.springframework.webflow.mvc.builder.MvcViewFactoryCreator; public class FlowRegistryBeanDefinitionParserTests extends TestCase { private ClassPathXmlApplicationContext context; private FlowDefinitionRegistry registry; public void setUp() { context = new ClassPathXmlApplicationContext("org/springframework/webflow/config/flow-registry.xml"); registry = (FlowDefinitionRegistry) context.getBean("flowRegistry"); } public void testRegistryFlowLocationsPopulated() { FlowDefinition flow = registry.getFlowDefinition("flow"); assertEquals("flow", flow.getId()); assertEquals("bar", flow.getAttributes().get("foo")); assertEquals(new Integer(2), flow.getAttributes().get("bar")); } public void testRegistryFlowLocationPatternsPopulated() { FlowDefinition flow1 = registry.getFlowDefinition("flow1"); assertEquals("flow1", flow1.getId()); FlowDefinition flow2 = registry.getFlowDefinition("flow2"); assertEquals("flow2", flow2.getId()); } public void testRegistryFlowBuildersPopulated() { FlowDefinition foo = registry.getFlowDefinition("foo"); assertEquals("foo", foo.getId()); } public void testRegistryFlowBuildersPopulatedWithId() { FlowDefinition foo = registry.getFlowDefinition("foo2"); assertEquals("foo2", foo.getId()); } public void testRegistryFlowBuildersPopulatedWithAttributes() { FlowDefinition foo3 = registry.getFlowDefinition("foo3"); assertEquals("foo3", foo3.getId()); assertEquals("bar", foo3.getAttributes().get("foo")); assertEquals(new Integer(2), foo3.getAttributes().get("bar")); } public void testDefaultFlowBuilderServices() { Map flowBuilderServicesBeans = context.getBeansOfType(FlowBuilderServices.class); assertTrue(flowBuilderServicesBeans.size() > 0); Iterator i = flowBuilderServicesBeans.values().iterator(); while (i.hasNext()) { FlowBuilderServices builderServices = (FlowBuilderServices) i.next(); assertNotNull(builderServices); assertTrue(builderServices.getExpressionParser() instanceof WebFlowELExpressionParser); assertTrue(builderServices.getViewFactoryCreator() instanceof MvcViewFactoryCreator); assertTrue(builderServices.getConversionService() instanceof DefaultConversionService); assertFalse(builderServices.getDevelopment()); } } public void testNoSuchFlow() { try { registry.getFlowDefinition("not there"); } catch (NoSuchFlowDefinitionException e) { } } public void testBogusPath() { try { registry.getFlowDefinition("bogus"); fail("Should have failed"); } catch (FlowDefinitionConstructionException e) { } } public void testParent() { assertNotNull(registry.getParent()); assertEquals("parentFlow", registry.getParent().getFlowDefinition("parentFlow").getId()); } } ././@LongLink0000000000000000000000000000023100000000000011561 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/test/java/org/springframework/webflow/config/FlowRegistryFactoryBeanTests.javalibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/test/java/org/springframew0000644000000000000000000000573111360615634030014 0ustar package org.springframework.webflow.config; import java.util.HashSet; import junit.framework.TestCase; import org.springframework.webflow.definition.FlowDefinition; import org.springframework.webflow.definition.registry.FlowDefinitionRegistry; import org.springframework.webflow.test.TestFlowBuilderServicesFactory; public class FlowRegistryFactoryBeanTests extends TestCase { private FlowRegistryFactoryBean factoryBean; public void setUp() { factoryBean = new FlowRegistryFactoryBean(); } public void tearDown() throws Exception { factoryBean.destroy(); } public void testGetFlowRegistry() throws Exception { HashSet attributes = new HashSet(); attributes.add(new FlowElementAttribute("foo", "bar", null)); attributes.add(new FlowElementAttribute("bar", "2", "integer")); FlowLocation location1 = new FlowLocation("flow1", "org/springframework/webflow/config/flow.xml", attributes); FlowLocation location2 = new FlowLocation("flow2", "org/springframework/webflow/config/flow.xml", attributes); FlowLocation[] flowLocations = new FlowLocation[] { location1, location2 }; factoryBean.setFlowBuilderServices(TestFlowBuilderServicesFactory.getServices()); factoryBean.setFlowLocations(flowLocations); factoryBean.afterPropertiesSet(); FlowDefinitionRegistry registry = (FlowDefinitionRegistry) factoryBean.getObject(); FlowDefinition def = registry.getFlowDefinition("flow1"); assertNotNull(def); assertEquals("flow1", def.getId()); assertEquals("bar", def.getAttributes().get("foo")); assertEquals(new Integer(2), def.getAttributes().getInteger("bar")); def = registry.getFlowDefinition("flow2"); assertNotNull(def); assertEquals("flow2", def.getId()); } public void testGetFlowRegistryGeneratedFlowId() throws Exception { FlowLocation location1 = new FlowLocation(null, "org/springframework/webflow/config/flow.xml", null); FlowLocation[] flowLocations = new FlowLocation[] { location1 }; factoryBean.setFlowBuilderServices(TestFlowBuilderServicesFactory.getServices()); factoryBean.setFlowLocations(flowLocations); factoryBean.afterPropertiesSet(); FlowDefinitionRegistry registry = (FlowDefinitionRegistry) factoryBean.getObject(); FlowDefinition def = registry.getFlowDefinition("flow"); assertNotNull(def); assertEquals("flow", def.getId()); assertTrue(def.getAttributes().isEmpty()); } public void testGetFlowRegistryCustomFlowServices() throws Exception { FlowLocation location1 = new FlowLocation(null, "org/springframework/webflow/config/flow.xml", null); FlowLocation[] flowLocations = new FlowLocation[] { location1 }; factoryBean.setFlowLocations(flowLocations); factoryBean.setFlowBuilderServices(TestFlowBuilderServicesFactory.getServices()); factoryBean.afterPropertiesSet(); FlowDefinitionRegistry registry = (FlowDefinitionRegistry) factoryBean.getObject(); FlowDefinition def = registry.getFlowDefinition("flow"); assertNotNull(def); assertEquals("flow", def.getId()); assertTrue(def.getAttributes().isEmpty()); } } ././@LongLink0000000000000000000000000000023100000000000011561 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/test/java/org/springframework/webflow/config/FlowExecutorFactoryBeanTests.javalibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/test/java/org/springframew0000644000000000000000000000624311360615636030015 0ustar package org.springframework.webflow.config; import java.util.HashSet; import java.util.Set; import junit.framework.TestCase; import org.springframework.webflow.definition.FlowDefinition; import org.springframework.webflow.definition.registry.FlowDefinitionConstructionException; import org.springframework.webflow.definition.registry.FlowDefinitionLocator; import org.springframework.webflow.definition.registry.NoSuchFlowDefinitionException; import org.springframework.webflow.engine.EndState; import org.springframework.webflow.engine.Flow; import org.springframework.webflow.engine.StubViewFactory; import org.springframework.webflow.engine.Transition; import org.springframework.webflow.engine.ViewState; import org.springframework.webflow.engine.support.DefaultTargetStateResolver; import org.springframework.webflow.execution.FlowExecutionListener; import org.springframework.webflow.execution.FlowExecutionListenerAdapter; import org.springframework.webflow.execution.factory.StaticFlowExecutionListenerLoader; import org.springframework.webflow.executor.FlowExecutor; import org.springframework.webflow.test.MockExternalContext; public class FlowExecutorFactoryBeanTests extends TestCase { private FlowExecutorFactoryBean factoryBean; public void setUp() { factoryBean = new FlowExecutorFactoryBean(); } public void testGetFlowExecutorNoPropertiesSet() throws Exception { try { factoryBean.afterPropertiesSet(); } catch (IllegalArgumentException e) { } } public void testGetFlowExecutorBasicConfig() throws Exception { factoryBean.setFlowDefinitionLocator(new FlowDefinitionLocator() { public FlowDefinition getFlowDefinition(String id) throws NoSuchFlowDefinitionException, FlowDefinitionConstructionException { Flow flow = new Flow(id); ViewState view = new ViewState(flow, "view", new StubViewFactory()); view.getTransitionSet().add(new Transition(new DefaultTargetStateResolver("end"))); new EndState(flow, "end"); return flow; } }); factoryBean.afterPropertiesSet(); factoryBean.getObject(); } public void testGetFlowExecutorOptionsSpecified() throws Exception { factoryBean.setFlowDefinitionLocator(new FlowDefinitionLocator() { public FlowDefinition getFlowDefinition(String id) throws NoSuchFlowDefinitionException, FlowDefinitionConstructionException { Flow flow = new Flow(id); ViewState view = new ViewState(flow, "view", new StubViewFactory()); view.getTransitionSet().add(new Transition(new DefaultTargetStateResolver("end"))); new EndState(flow, "end"); return flow; } }); Set attributes = new HashSet(); attributes.add(new FlowElementAttribute("foo", "bar", null)); factoryBean.setFlowExecutionAttributes(attributes); FlowExecutionListener listener = new FlowExecutionListenerAdapter() { }; factoryBean.setFlowExecutionListenerLoader(new StaticFlowExecutionListenerLoader(listener)); factoryBean.setMaxFlowExecutionSnapshots(2); factoryBean.setMaxFlowExecutions(1); factoryBean.afterPropertiesSet(); FlowExecutor executor = (FlowExecutor) factoryBean.getObject(); MockExternalContext context = new MockExternalContext(); MockExternalContext context2 = new MockExternalContext(); } } ././@LongLink0000000000000000000000000000025100000000000011563 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/test/java/org/springframework/webflow/config/FlowBuilderServicesBeanDefinitionParserTests.javalibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/test/java/org/springframew0000644000000000000000000001114611360615632030007 0ustar package org.springframework.webflow.config; import java.util.Set; import junit.framework.TestCase; import org.springframework.binding.convert.ConversionException; import org.springframework.binding.convert.ConversionExecutionException; import org.springframework.binding.convert.ConversionExecutor; import org.springframework.binding.convert.ConversionExecutorNotFoundException; import org.springframework.binding.convert.ConversionService; import org.springframework.binding.convert.service.DefaultConversionService; import org.springframework.binding.expression.Expression; import org.springframework.binding.expression.ExpressionParser; import org.springframework.context.support.ClassPathXmlApplicationContext; import org.springframework.webflow.engine.builder.BinderConfiguration; import org.springframework.webflow.engine.builder.ViewFactoryCreator; import org.springframework.webflow.engine.builder.support.FlowBuilderServices; import org.springframework.webflow.execution.ViewFactory; import org.springframework.webflow.expression.el.WebFlowELExpressionParser; import org.springframework.webflow.mvc.builder.MvcViewFactoryCreator; public class FlowBuilderServicesBeanDefinitionParserTests extends TestCase { private ClassPathXmlApplicationContext context; private FlowBuilderServices builderServices; public void setUp() { context = new ClassPathXmlApplicationContext("org/springframework/webflow/config/flow-builder-services.xml"); } public void testFlowBuilderServicesDefaultConfig() { builderServices = (FlowBuilderServices) context.getBean("flowBuilderServicesDefault"); assertNotNull(builderServices); assertTrue(builderServices.getExpressionParser() instanceof WebFlowELExpressionParser); assertTrue(builderServices.getViewFactoryCreator() instanceof MvcViewFactoryCreator); assertTrue(builderServices.getConversionService() instanceof DefaultConversionService); assertFalse(builderServices.getDevelopment()); } public void testFlowBuilderServicesAllCustomized() { builderServices = (FlowBuilderServices) context.getBean("flowBuilderServicesAllCustom"); assertNotNull(builderServices); assertTrue(builderServices.getExpressionParser() instanceof WebFlowELExpressionParser); assertTrue(builderServices.getViewFactoryCreator() instanceof TestViewFactoryCreator); assertTrue(builderServices.getConversionService() instanceof TestConversionService); assertTrue(builderServices.getDevelopment()); } public void testFlowBuilderServicesConversionServiceCustomized() { builderServices = (FlowBuilderServices) context.getBean("flowBuilderServicesConversionServiceCustom"); assertNotNull(builderServices); assertTrue(builderServices.getConversionService() instanceof TestConversionService); assertTrue(builderServices.getExpressionParser() instanceof WebFlowELExpressionParser); assertTrue(((WebFlowELExpressionParser) builderServices.getExpressionParser()).getConversionService() instanceof TestConversionService); assertTrue(builderServices.getViewFactoryCreator() instanceof MvcViewFactoryCreator); assertFalse(builderServices.getDevelopment()); } public static class TestViewFactoryCreator implements ViewFactoryCreator { public ViewFactory createViewFactory(Expression viewIdExpression, ExpressionParser expressionParser, ConversionService conversionService, BinderConfiguration binderConfiguration) { throw new UnsupportedOperationException("Auto-generated method stub"); } public String getViewIdByConvention(String viewStateId) { return viewStateId; } } public static class TestConversionService implements ConversionService { public Object executeConversion(Object source, Class targetClass) throws ConversionException { throw new UnsupportedOperationException("Auto-generated method stub"); } public Object executeConversion(String converterId, Object source, Class targetClass) { throw new UnsupportedOperationException("Auto-generated method stub"); } public ConversionExecutor getConversionExecutor(Class sourceClass, Class targetClass) throws ConversionExecutionException { throw new UnsupportedOperationException("Auto-generated method stub"); } public ConversionExecutor getConversionExecutor(String id, Class sourceClass, Class targetClass) throws ConversionExecutorNotFoundException { throw new UnsupportedOperationException("Auto-generated method stub"); } public Set getConversionExecutors(Class sourceClass) { throw new UnsupportedOperationException("Auto-generated method stub"); } public Class getClassForAlias(String alias) throws ConversionExecutionException { throw new UnsupportedOperationException("Auto-generated method stub"); } } }././@LongLink0000000000000000000000000000017000000000000011563 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/test/java/org/springframework/webflow/engine/libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/test/java/org/springframew0000755000000000000000000000000011360615644030005 5ustar ././@LongLink0000000000000000000000000000020600000000000011563 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/test/java/org/springframework/webflow/engine/FlowTests.javalibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/test/java/org/springframew0000644000000000000000000003220011360615632030001 0ustar /* * Copyright 2004-2008 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.springframework.webflow.engine; import java.util.ArrayList; import junit.framework.TestCase; import org.springframework.binding.expression.Expression; import org.springframework.binding.expression.ExpressionParser; import org.springframework.binding.expression.support.FluentParserContext; import org.springframework.binding.mapping.impl.DefaultMapper; import org.springframework.binding.mapping.impl.DefaultMapping; import org.springframework.context.support.GenericApplicationContext; import org.springframework.webflow.TestException; import org.springframework.webflow.action.TestMultiAction; import org.springframework.webflow.core.collection.AttributeMap; import org.springframework.webflow.core.collection.LocalAttributeMap; import org.springframework.webflow.core.collection.MutableAttributeMap; import org.springframework.webflow.engine.support.DefaultTargetStateResolver; import org.springframework.webflow.engine.support.MockTransitionCriteria; import org.springframework.webflow.engine.support.TransitionExecutingFlowExecutionExceptionHandler; import org.springframework.webflow.execution.Event; import org.springframework.webflow.execution.FlowExecutionException; import org.springframework.webflow.execution.RequestContext; import org.springframework.webflow.execution.TestAction; import org.springframework.webflow.expression.DefaultExpressionParserFactory; import org.springframework.webflow.test.MockRequestControlContext; /** * Unit test for the Flow class. * * @author Keith Donald */ public class FlowTests extends TestCase { private Flow flow = createSimpleFlow(); private Flow createSimpleFlow() { flow = new Flow("myFlow"); ViewState state1 = new ViewState(flow, "myState1", new StubViewFactory()); state1.getTransitionSet().add(new Transition(on("submit"), to("myState2"))); new EndState(flow, "myState2"); flow.getGlobalTransitionSet().add(new Transition(on("globalEvent"), to("myState2"))); return flow; } public void testAddStates() { Flow flow = new Flow("myFlow"); new EndState(flow, "myState1"); new EndState(flow, "myState2"); assertEquals("Wrong start state:", "myState1", flow.getStartState().getId()); assertEquals("State count wrong:", 2, flow.getStateCount()); assertTrue(flow.containsState("myState1")); assertTrue(flow.containsState("myState2")); State state = flow.getStateInstance("myState1"); assertEquals("Wrong flow:", flow.getId(), state.getFlow().getId()); assertEquals("Wrong state:", "myState1", flow.getState("myState1").getId()); assertEquals("Wrong state:", "myState2", flow.getState("myState2").getId()); } public void testAddDuplicateState() { Flow flow = new Flow("myFlow"); new EndState(flow, "myState1"); try { new EndState(flow, "myState1"); fail("Duplicate state added"); } catch (IllegalArgumentException e) { // expected } } public void testAddSameStateTwice() { Flow flow = new Flow("myFlow"); EndState state = new EndState(flow, "myState1"); try { flow.add(state); fail("Should have failed"); } catch (IllegalArgumentException e) { } assertEquals("State count wrong:", 1, flow.getStateCount()); } public void testAddStateAlreadyInOtherFlow() { Flow otherFlow = new Flow("myOtherFlow"); State state = new EndState(otherFlow, "myState1"); Flow flow = new Flow("myFlow"); try { flow.add(state); fail("Added state part of another flow"); } catch (IllegalArgumentException e) { // expected } } public void testGetStateNoStartState() { Flow flow = new Flow("myFlow"); try { flow.getStartState(); fail("Retrieved start state when no such state"); } catch (IllegalStateException e) { // expected } } public void testGetStateNoSuchState() { try { flow.getState("myState3"); fail("Returned a state that doesn't exist"); } catch (IllegalArgumentException e) { // expected } } public void testGetTransitionableState() { assertEquals("Wrong state:", "myState1", flow.getTransitionableState("myState1").getId()); assertEquals("Wrong state:", "myState1", flow.getState("myState1").getId()); } public void testGetStateNoSuchTransitionableState() { try { flow.getTransitionableState("myState2"); fail("End states aren't transtionable"); } catch (ClassCastException e) { // expected } try { flow.getTransitionableState("doesNotExist"); } catch (IllegalArgumentException e) { // expected } } public void testGetPossibleOutcomes() { Flow flow = new Flow("myFlow"); new EndState(flow, "myState1"); new EndState(flow, "myState2"); assertEquals("myState1", flow.getPossibleOutcomes()[0]); assertEquals("myState2", flow.getPossibleOutcomes()[1]); } public void testAddActions() { flow.getStartActionList().add(new TestMultiAction()); flow.getStartActionList().add(new TestMultiAction()); flow.getEndActionList().add(new TestMultiAction()); assertEquals(2, flow.getStartActionList().size()); assertEquals(1, flow.getEndActionList().size()); } public void testAddGlobalTransition() { Transition t = new Transition(to("myState2")); flow.getGlobalTransitionSet().add(t); assertSame(t, flow.getGlobalTransitionSet().toArray()[1]); } public void testStart() { MockRequestControlContext context = new MockRequestControlContext(flow); flow.start(context, new LocalAttributeMap()); assertEquals("Wrong start state", "myState1", context.getCurrentState().getId()); } public void testStartWithoutStartState() { MockRequestControlContext context = new MockRequestControlContext(flow); try { Flow empty = new Flow("empty"); empty.start(context, null); fail("should have failed"); } catch (IllegalStateException e) { } } public void testStartWithAction() { MockRequestControlContext context = new MockRequestControlContext(flow); TestAction action = new TestAction(); flow.getStartActionList().add(action); flow.start(context, new LocalAttributeMap()); assertEquals("Wrong start state", "myState1", context.getCurrentState().getId()); assertEquals(1, action.getExecutionCount()); } public void testStartWithVariables() { MockRequestControlContext context = new MockRequestControlContext(flow); flow.addVariable(new FlowVariable("var1", new VariableValueFactory() { public Object createInitialValue(RequestContext context) { return new ArrayList(); } public void restoreReferences(Object value, RequestContext context) { } })); flow.start(context, new LocalAttributeMap()); context.getFlowScope().getRequired("var1", ArrayList.class); } public void testStartWithMapper() { DefaultMapper attributeMapper = new DefaultMapper(); ExpressionParser parser = DefaultExpressionParserFactory.getExpressionParser(); Expression x = parser.parseExpression("attr", new FluentParserContext().evaluate(AttributeMap.class)); Expression y = parser.parseExpression("flowScope.attr", new FluentParserContext() .evaluate(RequestContext.class)); attributeMapper.addMapping(new DefaultMapping(x, y)); flow.setInputMapper(attributeMapper); MockRequestControlContext context = new MockRequestControlContext(flow); LocalAttributeMap sessionInput = new LocalAttributeMap(); sessionInput.put("attr", "foo"); flow.start(context, sessionInput); assertEquals("foo", context.getFlowScope().get("attr")); } public void testStartWithMapperButNoInput() { DefaultMapper attributeMapper = new DefaultMapper(); ExpressionParser parser = DefaultExpressionParserFactory.getExpressionParser(); Expression x = parser.parseExpression("attr", new FluentParserContext().evaluate(AttributeMap.class)); Expression y = parser.parseExpression("flowScope.attr", new FluentParserContext() .evaluate(RequestContext.class)); attributeMapper.addMapping(new DefaultMapping(x, y)); flow.setInputMapper(attributeMapper); MockRequestControlContext context = new MockRequestControlContext(flow); LocalAttributeMap sessionInput = new LocalAttributeMap(); flow.start(context, sessionInput); assertTrue(context.getFlowScope().contains("attr")); assertNull(context.getFlowScope().get("attr")); } public void testOnEventNullCurrentState() { MockRequestControlContext context = new MockRequestControlContext(flow); Event event = new Event(this, "foo"); try { context.setCurrentEvent(event); flow.handleEvent(context); } catch (IllegalStateException e) { } } public void testOnEventInvalidCurrentState() { MockRequestControlContext context = new MockRequestControlContext(flow); context.setCurrentState(flow.getStateInstance("myState2")); Event event = new Event(this, "submit"); context.setCurrentEvent(event); try { context.setCurrentEvent(event); flow.handleEvent(context); } catch (IllegalStateException e) { } } public void testOnEvent() { MockRequestControlContext context = new MockRequestControlContext(flow); context.setCurrentState(flow.getStateInstance("myState1")); Event event = new Event(this, "submit"); context.setCurrentEvent(event); assertTrue(context.getFlowExecutionContext().isActive()); context.setCurrentEvent(event); flow.handleEvent(context); assertTrue(!context.getFlowExecutionContext().isActive()); } public void testOnEventGlobalTransition() { MockRequestControlContext context = new MockRequestControlContext(flow); context.setCurrentState(flow.getStateInstance("myState1")); Event event = new Event(this, "globalEvent"); context.setCurrentEvent(event); assertTrue(context.getFlowExecutionContext().isActive()); context.setCurrentEvent(event); flow.handleEvent(context); assertTrue(!context.getFlowExecutionContext().isActive()); } public void testOnEventNoTransition() { MockRequestControlContext context = new MockRequestControlContext(flow); context.setCurrentState(flow.getStateInstance("myState1")); Event event = new Event(this, "bogus"); context.setCurrentEvent(event); try { context.setCurrentEvent(event); flow.handleEvent(context); } catch (NoMatchingTransitionException e) { } } public void testResume() { MockRequestControlContext context = new MockRequestControlContext(flow); context.setCurrentState(flow.getStateInstance("myState1")); flow.resume(context); assertTrue(context.getFlowScope().getBoolean("renderCalled").booleanValue()); } public void testEnd() { TestAction action = new TestAction(); flow.getEndActionList().add(action); MockRequestControlContext context = new MockRequestControlContext(flow); LocalAttributeMap sessionOutput = new LocalAttributeMap(); flow.end(context, "finish", sessionOutput); assertEquals(1, action.getExecutionCount()); } public void testEndWithOutputMapper() { DefaultMapper attributeMapper = new DefaultMapper(); ExpressionParser parser = DefaultExpressionParserFactory.getExpressionParser(); Expression x = parser.parseExpression("flowScope.attr", new FluentParserContext() .evaluate(RequestContext.class)); Expression y = parser.parseExpression("attr", new FluentParserContext().evaluate(MutableAttributeMap.class)); attributeMapper.addMapping(new DefaultMapping(x, y)); flow.setOutputMapper(attributeMapper); MockRequestControlContext context = new MockRequestControlContext(flow); context.getFlowScope().put("attr", "foo"); LocalAttributeMap sessionOutput = new LocalAttributeMap(); flow.end(context, "finish", sessionOutput); assertEquals("foo", sessionOutput.get("attr")); } public void testHandleException() { flow.getExceptionHandlerSet().add( new TransitionExecutingFlowExecutionExceptionHandler().add(TestException.class, "myState2")); MockRequestControlContext context = new MockRequestControlContext(flow); context.setCurrentState(flow.getStateInstance("myState1")); FlowExecutionException e = new FlowExecutionException(flow.getId(), flow.getStartState().getId(), "Oops!", new TestException()); flow.handleException(e, context); assertFalse(context.getFlowExecutionContext().isActive()); } public void testHandleExceptionNoMatch() { MockRequestControlContext context = new MockRequestControlContext(flow); FlowExecutionException e = new FlowExecutionException(flow.getId(), flow.getStartState().getId(), "Oops!", new TestException()); try { flow.handleException(e, context); } catch (FlowExecutionException ex) { // expected } } public void testDestroy() { GenericApplicationContext context = new GenericApplicationContext(); context.refresh(); flow.setApplicationContext(context); assertTrue(context.isActive()); flow.destroy(); assertFalse(context.isActive()); } public TransitionCriteria on(String eventId) { return new MockTransitionCriteria(eventId); } protected TargetStateResolver to(String stateId) { return new DefaultTargetStateResolver(stateId); } }././@LongLink0000000000000000000000000000021500000000000011563 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/test/java/org/springframework/webflow/engine/ActionStateTests.javalibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/test/java/org/springframew0000644000000000000000000000556411360615642030017 0ustar /* * Copyright 2004-2008 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.springframework.webflow.engine; import junit.framework.TestCase; import org.springframework.webflow.engine.support.DefaultTargetStateResolver; import org.springframework.webflow.engine.support.MockTransitionCriteria; import org.springframework.webflow.execution.Action; import org.springframework.webflow.execution.TestAction; import org.springframework.webflow.test.MockRequestControlContext; /** * Tests ActionState behavior * @author Keith Donald */ public class ActionStateTests extends TestCase { private Flow flow; private ActionState state; private MockRequestControlContext context; public void setUp() { flow = new Flow("myFlow"); state = new ActionState(flow, "actionState"); new EndState(flow, "finish"); context = new MockRequestControlContext(flow); } public void testExecuteSingleAction() { state.getActionList().add(new TestAction()); state.getTransitionSet().add(new Transition(on("success"), to("finish"))); state.enter(context); assertEquals(1, ((TestAction) state.getActionList().get(0)).getExecutionCount()); } public void testExecuteNothing() { try { state.enter(context); fail("Should've failed"); } catch (IllegalStateException e) { // expected } } public void testExecuteActionCannotHandleResultEvent() { state.getActionList().add(new TestAction()); try { state.enter(context); fail("Should've failed"); } catch (NoMatchingTransitionException e) { assertEquals(1, ((TestAction) state.getActionList().get(0)).getExecutionCount()); } } public void testExecuteActionChain() { state.getActionList().add(new TestAction("not mapped result")); state.getActionList().add(new TestAction(null)); state.getActionList().add(new TestAction("")); state.getActionList().add(new TestAction("success")); state.getTransitionSet().add(new Transition(on("success"), to("finish"))); state.enter(context); Action[] actions = state.getActionList().toArray(); for (int i = 0; i < actions.length; i++) { TestAction action = (TestAction) actions[i]; assertEquals(1, action.getExecutionCount()); } } protected TransitionCriteria on(String event) { return new MockTransitionCriteria(event); } protected TargetStateResolver to(String stateId) { return new DefaultTargetStateResolver(stateId); } } ././@LongLink0000000000000000000000000000023100000000000011561 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/test/java/org/springframework/webflow/engine/FlowExecutionHandlerSetTests.javalibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/test/java/org/springframew0000644000000000000000000000507511360615644030016 0ustar /* * Copyright 2004-2008 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.springframework.webflow.engine; import junit.framework.TestCase; import org.springframework.webflow.execution.FlowExecutionException; import org.springframework.webflow.test.MockRequestControlContext; /** * Unit tests for {@link org.springframework.webflow.engine.FlowExecutionExceptionHandler} related code. * * @author Erwin Vervaet */ public class FlowExecutionHandlerSetTests extends TestCase { Flow flow = new Flow("myFlow"); MockRequestControlContext context = new MockRequestControlContext(flow); boolean handled; public void testHandleException() { FlowExecutionExceptionHandlerSet handlerSet = new FlowExecutionExceptionHandlerSet(); handlerSet.add(new TestStateExceptionHandler(NullPointerException.class, "null")); handlerSet.add(new TestStateExceptionHandler(FlowExecutionException.class, "execution 1")); handlerSet.add(new TestStateExceptionHandler(FlowExecutionException.class, "execution 2")); assertEquals(3, handlerSet.size()); FlowExecutionException e = new FlowExecutionException("flowId", "stateId", "Test"); assertTrue(handlerSet.handleException(e, context)); assertFalse(context.getFlowScope().contains("null")); assertTrue(context.getFlowScope().contains("execution 1")); assertFalse(context.getFlowScope().contains("execution 2")); } /** * State exception handler used in tests. */ public static class TestStateExceptionHandler implements FlowExecutionExceptionHandler { private Class typeToHandle; private String resultName; public TestStateExceptionHandler(Class typeToHandle, String resultName) { this.typeToHandle = typeToHandle; this.resultName = resultName; } public boolean canHandle(FlowExecutionException exception) { return typeToHandle.isInstance(exception); } public void handle(FlowExecutionException exception, RequestControlContext context) { context.getFlowScope().put(resultName, Boolean.TRUE); } } } ././@LongLink0000000000000000000000000000021300000000000011561 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/test/java/org/springframework/webflow/engine/ViewStateTests.javalibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/test/java/org/springframew0000644000000000000000000005315311360615640030012 0ustar /* * Copyright 2004-2008 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.springframework.webflow.engine; import junit.framework.TestCase; import org.springframework.webflow.TestBean; import org.springframework.webflow.engine.support.ActionTransitionCriteria; import org.springframework.webflow.engine.support.DefaultTargetStateResolver; import org.springframework.webflow.engine.support.MockTransitionCriteria; import org.springframework.webflow.execution.Event; import org.springframework.webflow.execution.RequestContext; import org.springframework.webflow.execution.TestAction; import org.springframework.webflow.execution.View; import org.springframework.webflow.test.MockRequestControlContext; /** * Tests that ViewState logic is correct. * @author Keith Donald */ public class ViewStateTests extends TestCase { public void testEnterViewStateRenderResponse() { Flow flow = new Flow("myFlow"); StubViewFactory viewFactory = new StubViewFactory(); ViewState state = new ViewState(flow, "viewState", viewFactory); MockRequestControlContext context = new MockRequestControlContext(flow); context.getFlashScope().put("foo", "bar"); state.enter(context); assertTrue("Render not called", context.getFlowScope().contains("renderCalled")); assertTrue(context.getExternalContext().isResponseComplete()); assertFalse(context.getMockExternalContext().getFlowExecutionRedirectRequested()); assertFalse(context.getFlashScope().contains("foo")); } public void testEnterViewStateRenderNotAllowed() { Flow flow = new Flow("myFlow"); StubViewFactory viewFactory = new StubViewFactory(); ViewState state = new ViewState(flow, "viewState", viewFactory); MockRequestControlContext context = new MockRequestControlContext(flow); context.getMockExternalContext().setResponseAllowed(false); context.getFlashScope().put("foo", "bar"); state.enter(context); assertFalse("Render called", context.getFlowScope().contains("renderCalled")); assertTrue(context.getExternalContext().isResponseComplete()); assertTrue(context.getMockExternalContext().getFlowExecutionRedirectRequested()); assertTrue(context.getFlashScope().contains("foo")); } public void testEnterViewStateResponseAlreadyComplete() { Flow flow = new Flow("myFlow"); StubViewFactory viewFactory = new StubViewFactory(); ViewState state = new ViewState(flow, "viewState", viewFactory); MockRequestControlContext context = new MockRequestControlContext(flow); context.getExternalContext().recordResponseComplete(); context.getFlashScope().put("foo", "bar"); state.enter(context); assertFalse("Render called", context.getFlowScope().contains("renderCalled")); assertFalse(context.getMockExternalContext().getFlowExecutionRedirectRequested()); assertFalse(context.getFlashScope().contains("foo")); } public void testEnterViewStateRedirectResponseAlreadyComplete() { Flow flow = new Flow("myFlow"); StubViewFactory viewFactory = new StubViewFactory(); ViewState state = new ViewState(flow, "viewState", viewFactory); MockRequestControlContext context = new MockRequestControlContext(flow); context.getExternalContext().requestFlowExecutionRedirect(); context.getFlashScope().put("foo", "bar"); state.enter(context); assertFalse("Render called", context.getFlowScope().contains("renderCalled")); assertTrue(context.getMockExternalContext().getFlowExecutionRedirectRequested()); assertTrue(context.getFlashScope().contains("foo")); } public void testEnterViewStateWithVariables() { Flow flow = new Flow("myFlow"); StubViewFactory viewFactory = new StubViewFactory(); ViewState state = new ViewState(flow, "viewState", viewFactory); state.addVariable(new ViewVariable("foo", new VariableValueFactory() { public Object createInitialValue(RequestContext context) { return "bar"; } public void restoreReferences(Object value, RequestContext context) { } })); MockRequestControlContext context = new MockRequestControlContext(flow); state.enter(context); assertEquals("bar", context.getViewScope().getString("foo")); assertTrue("Render not called", context.getFlowScope().contains("renderCalled")); assertTrue(context.getExternalContext().isResponseComplete()); assertFalse(context.getMockExternalContext().getFlowExecutionRedirectRequested()); } public void testEnterViewStateWithLocalRedirect() { Flow flow = new Flow("myFlow"); StubViewFactory viewFactory = new StubViewFactory(); ViewState state = new ViewState(flow, "viewState", viewFactory); state.setRedirect(Boolean.TRUE); MockRequestControlContext context = new MockRequestControlContext(flow); context.getFlashScope().put("foo", "bar"); state.enter(context); assertFalse("Render called", context.getFlowScope().contains("renderCalled")); assertTrue(context.getMockExternalContext().getFlowExecutionRedirectRequested()); assertTrue(context.getFlashScope().contains("foo")); } public void testEnterViewStateWithNoLocalRedirect() { Flow flow = new Flow("myFlow"); StubViewFactory viewFactory = new StubViewFactory(); ViewState state = new ViewState(flow, "viewState", viewFactory); state.setRedirect(Boolean.FALSE); MockRequestControlContext context = new MockRequestControlContext(flow); context.getFlashScope().put("foo", "bar"); state.enter(context); assertTrue("Render called", context.getFlowScope().contains("renderCalled")); assertFalse(context.getMockExternalContext().getFlowExecutionRedirectRequested()); assertFalse(context.getFlashScope().contains("foo")); } public void testEnterViewStateRedirectInPopup() { Flow flow = new Flow("myFlow"); StubViewFactory viewFactory = new StubViewFactory(); ViewState state = new ViewState(flow, "viewState", viewFactory); state.setRedirect(Boolean.TRUE); state.setPopup(true); MockRequestControlContext context = new MockRequestControlContext(flow); context.getFlashScope().put("foo", "bar"); state.enter(context); assertFalse("Render called", context.getFlowScope().contains("renderCalled")); assertTrue(context.getMockExternalContext().getFlowExecutionRedirectRequested()); assertTrue(context.getMockExternalContext().getRedirectInPopup()); assertTrue(context.getFlashScope().contains("foo")); } public void testEnterViewStateWithAlwaysRedirectOnPause() { Flow flow = new Flow("myFlow"); StubViewFactory viewFactory = new StubViewFactory(); ViewState state = new ViewState(flow, "viewState", viewFactory); MockRequestControlContext context = new MockRequestControlContext(flow); context.getFlashScope().put("foo", "bar"); context.setAlwaysRedirectOnPause(true); state.enter(context); assertFalse("Render called", context.getFlowScope().contains("renderCalled")); assertTrue(context.getMockExternalContext().getFlowExecutionRedirectRequested()); assertTrue(context.getFlashScope().contains("foo")); } public void testResumeViewStateForRefresh() { Flow flow = new Flow("myFlow"); StubViewFactory viewFactory = new StubViewFactory(); ViewState state = new ViewState(flow, "viewState", viewFactory); MockRequestControlContext context = new MockRequestControlContext(flow); state.enter(context); context = new MockRequestControlContext(context.getFlowExecutionContext()); context.getFlashScope().put("foo", "bar"); state.resume(context); assertTrue("Render not called", context.getFlowScope().contains("renderCalled")); assertTrue(context.getExternalContext().isResponseComplete()); assertFalse(context.getMockExternalContext().getFlowExecutionRedirectRequested()); assertFalse(context.getFlashScope().contains("foo")); } public void testResumeViewStateForRefreshResponseCompleteRecorded() { Flow flow = new Flow("myFlow"); StubViewFactory viewFactory = new StubViewFactory(); ViewState state = new ViewState(flow, "viewState", viewFactory); state.getTransitionSet().add(new Transition(on("submit"), to("finish"))); new EndState(flow, "finish"); MockRequestControlContext context = new MockRequestControlContext(flow); state.enter(context); context = new MockRequestControlContext(context.getFlowExecutionContext()); context.getFlowScope().remove("renderCalled"); context.getFlashScope().put("foo", "bar"); context.getExternalContext().recordResponseComplete(); state.resume(context); assertFalse("Render called", context.getFlowScope().contains("renderCalled")); assertFalse(context.getMockExternalContext().getFlowExecutionRedirectRequested()); assertFalse(context.getFlashScope().contains("foo")); } public void testResumeViewStateRestoreVariables() { Flow flow = new Flow("myFlow"); StubViewFactory viewFactory = new StubViewFactory(); ViewState state = new ViewState(flow, "viewState", viewFactory); state.addVariable(new ViewVariable("foo", new VariableValueFactory() { public Object createInitialValue(RequestContext context) { return new TestBean(); } public void restoreReferences(Object value, RequestContext context) { ((TestBean) value).datum1 = "Restored"; } })); MockRequestControlContext context = new MockRequestControlContext(flow); state.enter(context); context = new MockRequestControlContext(context.getFlowExecutionContext()); state.resume(context); assertTrue("Render not called", context.getFlowScope().contains("renderCalled")); assertFalse(context.getMockExternalContext().getFlowExecutionRedirectRequested()); assertEquals("Restored", ((TestBean) context.getViewScope().get("foo")).datum1); } public void testResumeViewStateForEventWithTransitionFlowEnded() { Flow flow = new Flow("myFlow"); StubViewFactory viewFactory = new StubViewFactory(); ViewState state = new ViewState(flow, "viewState", viewFactory); state.getTransitionSet().add(new Transition(on("submit"), to("finish"))); EndState end = new EndState(flow, "finish"); TestAction testAction = new TestAction(); end.setFinalResponseAction(testAction); MockRequestControlContext context = new MockRequestControlContext(flow); state.enter(context); context = new MockRequestControlContext(context.getFlowExecutionContext()); context.putRequestParameter("_eventId", "submit"); state.resume(context); assertTrue(context.getExternalContext().isResponseComplete()); assertFalse(context.getFlowExecutionContext().isActive()); assertTrue(testAction.isExecuted()); } public void testResumeViewStateForEventWithTransitionStateExited() { Flow flow = new Flow("myFlow"); StubViewFactory viewFactory = new StubViewFactory(); ViewState state = new ViewState(flow, "viewState", viewFactory); state.getTransitionSet().add(new Transition(on("submit"), to("next"))); ViewState next = new ViewState(flow, "next", viewFactory); MockRequestControlContext context = new MockRequestControlContext(flow); context.setAlwaysRedirectOnPause(true); state.enter(context); context = new MockRequestControlContext(context.getFlowExecutionContext()); context.putRequestParameter("_eventId", "submit"); state.resume(context); assertTrue(context.getExternalContext().isResponseComplete()); assertTrue(context.getFlowExecutionContext().isActive()); assertSame(next, context.getCurrentState()); assertTrue(context.getFlowScope().contains("saveStateCalled")); } public void testResumeViewStateForEventWithTransitionStateExitedNoRedirect() { Flow flow = new Flow("myFlow"); StubViewFactory viewFactory = new StubViewFactory(); ViewState state = new ViewState(flow, "viewState", viewFactory); state.getTransitionSet().add(new Transition(on("submit"), to("next"))); ViewState next = new ViewState(flow, "next", viewFactory); MockRequestControlContext context = new MockRequestControlContext(flow); context.setAlwaysRedirectOnPause(false); state.enter(context); context = new MockRequestControlContext(context.getFlowExecutionContext()); context.putRequestParameter("_eventId", "submit"); state.resume(context); assertTrue(context.getExternalContext().isResponseComplete()); assertTrue(context.getFlowExecutionContext().isActive()); assertSame(next, context.getCurrentState()); assertFalse(context.getFlowScope().contains("saveStateCalled")); } public void testResumeViewStateForEventStateNotExitedNonAjax() { Flow flow = new Flow("myFlow"); StubViewFactory viewFactory = new StubViewFactory(); ViewState state = new ViewState(flow, "viewState", viewFactory); Transition t = new Transition(on("submit"), null); TestAction action = new TestAction(); t.setExecutionCriteria(new ActionTransitionCriteria(action)); state.getTransitionSet().add(t); MockRequestControlContext context = new MockRequestControlContext(flow); state.enter(context); context = new MockRequestControlContext(context.getFlowExecutionContext()); context.getFlowScope().remove("renderCalled"); context.putRequestParameter("_eventId", "submit"); context.getFlashScope().put("foo", "bar"); state.resume(context); assertTrue(context.getFlowExecutionContext().isActive()); assertEquals(1, action.getExecutionCount()); assertTrue(context.getExternalContext().isResponseComplete()); assertTrue("Render not called", context.getFlowScope().contains("renderCalled")); assertFalse(context.getMockExternalContext().getFlowExecutionRedirectRequested()); assertFalse(context.getFlashScope().contains("foo")); assertFalse(context.getFlashScope().contains(View.USER_EVENT_STATE_ATTRIBUTE)); } public void testResumeViewStateForEventStateNotExitedNonAjaxResponseNotAllowed() { Flow flow = new Flow("myFlow"); StubViewFactory viewFactory = new StubViewFactory(); ViewState state = new ViewState(flow, "viewState", viewFactory); Transition t = new Transition(on("submit"), null); state.getTransitionSet().add(t); MockRequestControlContext context = new MockRequestControlContext(flow); state.enter(context); context = new MockRequestControlContext(context.getFlowExecutionContext()); context.getFlowScope().remove("renderCalled"); context.putRequestParameter("_eventId", "submit"); context.getMockExternalContext().setResponseAllowed(false); context.getFlashScope().put("foo", "bar"); state.resume(context); assertTrue(context.getFlowExecutionContext().isActive()); assertTrue(context.getExternalContext().isResponseComplete()); assertFalse("Render called", context.getFlowScope().contains("renderCalled")); assertTrue(context.getMockExternalContext().getFlowExecutionRedirectRequested()); assertEquals(StubViewFactory.USER_EVENT_STATE, context.getFlashScope().get(View.USER_EVENT_STATE_ATTRIBUTE)); assertTrue(context.getFlashScope().contains("foo")); } public void testResumeViewStateForEventStateNotExitedNonAjaxRedirectEnabled() { Flow flow = new Flow("myFlow"); StubViewFactory viewFactory = new StubViewFactory(); ViewState state = new ViewState(flow, "viewState", viewFactory); Transition t = new Transition(on("submit"), null); TestAction action = new TestAction(); t.setExecutionCriteria(new ActionTransitionCriteria(action)); state.getTransitionSet().add(t); MockRequestControlContext context = new MockRequestControlContext(flow); context.setAlwaysRedirectOnPause(true); state.enter(context); context = new MockRequestControlContext(context.getFlowExecutionContext()); context.setAlwaysRedirectOnPause(true); context.putRequestParameter("_eventId", "submit"); context.getFlashScope().put("foo", "bar"); state.resume(context); assertTrue(context.getFlowExecutionContext().isActive()); assertEquals(1, action.getExecutionCount()); assertFalse("Render called", context.getFlowScope().contains("renderCalled")); assertTrue(context.getMockExternalContext().getFlowExecutionRedirectRequested()); assertEquals(StubViewFactory.USER_EVENT_STATE, context.getFlashScope().get(View.USER_EVENT_STATE_ATTRIBUTE)); assertTrue(context.getFlashScope().contains("foo")); } public void testResumeViewStateForEventStateNotExitedAjax() { Flow flow = new Flow("myFlow"); StubViewFactory viewFactory = new StubViewFactory(); ViewState state = new ViewState(flow, "viewState", viewFactory); Transition t = new Transition(on("submit"), null); TestAction action = new TestAction(); t.setExecutionCriteria(new ActionTransitionCriteria(action)); state.getTransitionSet().add(t); MockRequestControlContext context = new MockRequestControlContext(flow); context.getMockExternalContext().setAjaxRequest(true); state.enter(context); context = new MockRequestControlContext(context.getFlowExecutionContext()); context.putRequestParameter("_eventId", "submit"); context.getMockExternalContext().setAjaxRequest(true); context.getFlashScope().put("foo", "bar"); state.resume(context); assertTrue(context.getFlowExecutionContext().isActive()); assertEquals(1, action.getExecutionCount()); assertTrue(context.getExternalContext().isResponseComplete()); assertTrue("Render not called", context.getFlowScope().contains("renderCalled")); assertFalse(context.getMockExternalContext().getFlowExecutionRedirectRequested()); assertFalse(context.getFlashScope().contains("foo")); assertFalse(context.getFlashScope().contains(View.USER_EVENT_STATE_ATTRIBUTE)); } public void testResumeViewStateForEventStateNoExitActionRecordedResponseComplete() { Flow flow = new Flow("myFlow"); StubViewFactory viewFactory = new StubViewFactory(); ViewState state = new ViewState(flow, "viewState", viewFactory); Transition t = new Transition(on("submit"), null); TestAction action = new TestAction() { protected Event doExecute(RequestContext context) throws Exception { super.doExecute(context); context.getExternalContext().recordResponseComplete(); return success(); } }; t.setExecutionCriteria(new ActionTransitionCriteria(action)); state.getTransitionSet().add(t); MockRequestControlContext context = new MockRequestControlContext(flow); state.enter(context); assertTrue("Render not called", context.getFlowScope().contains("renderCalled")); context.getFlowScope().remove("renderCalled"); context = new MockRequestControlContext(context.getFlowExecutionContext()); context.putRequestParameter("_eventId", "submit"); context.getFlashScope().put("Foo", "bar"); state.resume(context); assertTrue(context.getFlowExecutionContext().isActive()); assertEquals(1, action.getExecutionCount()); assertTrue(context.getExternalContext().isResponseComplete()); assertFalse("Render called", context.getFlowScope().contains("renderCalled")); assertFalse(context.getMockExternalContext().getFlowExecutionRedirectRequested()); assertFalse(context.getFlashScope().contains("foo")); assertFalse(context.getFlashScope().contains(View.USER_EVENT_STATE_ATTRIBUTE)); } public void testResumeViewStateForEventStateNoExitActionRecordedExecutionRedirect() { Flow flow = new Flow("myFlow"); StubViewFactory viewFactory = new StubViewFactory(); ViewState state = new ViewState(flow, "viewState", viewFactory); Transition t = new Transition(on("submit"), null); TestAction action = new TestAction() { protected Event doExecute(RequestContext context) throws Exception { super.doExecute(context); context.getExternalContext().requestFlowExecutionRedirect(); return success(); } }; t.setExecutionCriteria(new ActionTransitionCriteria(action)); state.getTransitionSet().add(t); MockRequestControlContext context = new MockRequestControlContext(flow); state.enter(context); assertTrue("Render not called", context.getFlowScope().contains("renderCalled")); context.getFlowScope().remove("renderCalled"); context = new MockRequestControlContext(context.getFlowExecutionContext()); context.putRequestParameter("_eventId", "submit"); context.getFlashScope().put("foo", "bar"); state.resume(context); assertTrue(context.getFlowExecutionContext().isActive()); assertEquals(1, action.getExecutionCount()); assertTrue(context.getExternalContext().isResponseComplete()); assertFalse("Render called", context.getFlowScope().contains("renderCalled")); assertTrue(context.getMockExternalContext().getFlowExecutionRedirectRequested()); assertTrue(context.getFlashScope().contains("foo")); assertEquals(StubViewFactory.USER_EVENT_STATE, context.getFlashScope().get(View.USER_EVENT_STATE_ATTRIBUTE)); } public void testResumeViewStateForEventDestroyVariables() { Flow flow = new Flow("myFlow"); StubViewFactory viewFactory = new StubViewFactory(); ViewState state = new ViewState(flow, "viewState", viewFactory); state.addVariable(new ViewVariable("foo", new VariableValueFactory() { public Object createInitialValue(RequestContext context) { return "bar"; } public void restoreReferences(Object value, RequestContext context) { } })); state.getTransitionSet().add(new Transition(on("submit"), to("next"))); new ViewState(flow, "next", viewFactory); MockRequestControlContext context = new MockRequestControlContext(flow); state.enter(context); assertTrue(context.getViewScope().contains("foo")); context = new MockRequestControlContext(context.getFlowExecutionContext()); context.putRequestParameter("_eventId", "submit"); state.resume(context); assertTrue(context.getFlowExecutionContext().isActive()); assertEquals("next", context.getCurrentState().getId()); assertFalse(context.getViewScope().contains("foo")); } protected TransitionCriteria on(String event) { return new MockTransitionCriteria(event); } protected TargetStateResolver to(String stateId) { return new DefaultTargetStateResolver(stateId); } }././@LongLink0000000000000000000000000000020000000000000011555 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/test/java/org/springframework/webflow/engine/builder/libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/test/java/org/springframew0000755000000000000000000000000011360615644030005 5ustar ././@LongLink0000000000000000000000000000022700000000000011566 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/test/java/org/springframework/webflow/engine/builder/FlowAssemblerTests.javalibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/test/java/org/springframew0000644000000000000000000000302211360615636030005 0ustar package org.springframework.webflow.engine.builder; import junit.framework.TestCase; import org.easymock.EasyMock; import org.springframework.webflow.engine.Flow; import org.springframework.webflow.test.MockFlowBuilderContext; public class FlowAssemblerTests extends TestCase { private FlowBuilder builder; private FlowAssembler assembler; private FlowBuilderContext builderContext; protected void setUp() { builder = (FlowBuilder) EasyMock.createMock(FlowBuilder.class); builderContext = new MockFlowBuilderContext("search"); assembler = new FlowAssembler(builder, builderContext); } public void testAssembleFlow() { builder.init(builderContext); builder.dispose(); builder.buildVariables(); builder.buildInputMapper(); builder.buildStartActions(); builder.buildStates(); builder.buildGlobalTransitions(); builder.buildEndActions(); builder.buildOutputMapper(); builder.buildExceptionHandlers(); EasyMock.expect(builder.getFlow()).andReturn(new Flow("search")); EasyMock.replay(new Object[] { builder }); Flow flow = assembler.assembleFlow(); assertEquals("search", flow.getId()); EasyMock.verify(new Object[] { builder }); } public void testDisposeCalledOnException() { builder.init(builderContext); EasyMock.expectLastCall().andThrow(new IllegalArgumentException()); builder.dispose(); EasyMock.replay(new Object[] { builder }); try { assembler.assembleFlow(); fail("Should have failed"); } catch (IllegalArgumentException e) { EasyMock.verify(new Object[] { builder }); } } } ././@LongLink0000000000000000000000000000023300000000000011563 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/test/java/org/springframework/webflow/engine/builder/DefaultFlowHolderTests.javalibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/test/java/org/springframew0000644000000000000000000000432311360615642030007 0ustar package org.springframework.webflow.engine.builder; import junit.framework.TestCase; import org.springframework.context.support.StaticApplicationContext; import org.springframework.core.io.FileSystemResource; import org.springframework.core.io.Resource; import org.springframework.webflow.definition.FlowDefinition; import org.springframework.webflow.engine.EndState; import org.springframework.webflow.engine.Flow; import org.springframework.webflow.engine.builder.support.AbstractFlowBuilder; import org.springframework.webflow.test.MockFlowBuilderContext; public class DefaultFlowHolderTests extends TestCase { private DefaultFlowHolder holder; private FlowAssembler assembler; protected void setUp() { MockFlowBuilderContext context = new MockFlowBuilderContext("flowId"); context.getFlowBuilderServices().setApplicationContext(new StaticApplicationContext()); FlowAssembler assembler = new FlowAssembler(new SimpleFlowBuilder(), context); holder = new DefaultFlowHolder(assembler); } public void testGetFlowDefinition() { FlowDefinition flow = holder.getFlowDefinition(); assertEquals("flowId", flow.getId()); assertEquals("end", flow.getStartState().getId()); } public void testGetFlowDefinitionWithChangesRefreshed() { assembler = new FlowAssembler(new ChangeDetectableFlowBuilder(), new MockFlowBuilderContext("flowId")); holder = new DefaultFlowHolder(assembler); FlowDefinition flow = holder.getFlowDefinition(); flow = holder.getFlowDefinition(); assertEquals("flowId", flow.getId()); assertEquals("end", flow.getStartState().getId()); } public void testDestroyNotInitialized() { holder.destroy(); } public void testDestroy() { holder.getFlowDefinition(); holder.destroy(); } public class SimpleFlowBuilder extends AbstractFlowBuilder implements FlowBuilder { public void buildStates() throws FlowBuilderException { new EndState(getFlow(), "end"); } protected Flow createFlow() { return Flow.create(getContext().getFlowId(), getContext().getFlowAttributes()); } } public class ChangeDetectableFlowBuilder extends SimpleFlowBuilder { private FileSystemResource resource = new FileSystemResource("file.txt"); public Resource getResource() { return resource; } } } ././@LongLink0000000000000000000000000000021000000000000011556 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/test/java/org/springframework/webflow/engine/builder/file.txtlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/test/java/org/springframew0000644000000000000000000000002111360615644030000 0ustar a changeable file././@LongLink0000000000000000000000000000021000000000000011556 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/test/java/org/springframework/webflow/engine/builder/support/libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/test/java/org/springframew0000755000000000000000000000000011360615640030001 5ustar ././@LongLink0000000000000000000000000000025300000000000011565 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/test/java/org/springframework/webflow/engine/builder/support/TextToTargetStateResolverTests.javalibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/test/java/org/springframew0000644000000000000000000000504611360615634030013 0ustar /* * Copyright 2004-2008 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.springframework.webflow.engine.builder.support; import junit.framework.TestCase; import org.springframework.webflow.engine.TargetStateResolver; import org.springframework.webflow.engine.Transition; import org.springframework.webflow.test.MockFlowBuilderContext; import org.springframework.webflow.test.MockRequestContext; public class TextToTargetStateResolverTests extends TestCase { private MockFlowBuilderContext serviceLocator = new MockFlowBuilderContext("flowId"); private TextToTargetStateResolver converter = new TextToTargetStateResolver(serviceLocator); public void setUp() { } public void testStatic() throws Exception { String expression = "mockState"; TargetStateResolver resolver = (TargetStateResolver) converter.convertSourceToTargetClass(expression, TargetStateResolver.class); MockRequestContext context = new MockRequestContext(); Transition transition = new Transition(); assertEquals("mockState", resolver.resolveTargetState(transition, null, context).getId()); } public void testDynamic() throws Exception { String expression = "${flowScope.lastState}"; TargetStateResolver resolver = (TargetStateResolver) converter.convertSourceToTargetClass(expression, TargetStateResolver.class); MockRequestContext context = new MockRequestContext(); context.getFlowScope().put("lastState", "mockState"); Transition transition = new Transition(); assertEquals("mockState", resolver.resolveTargetState(transition, null, context).getId()); } public void testNull() throws Exception { String expression = null; TargetStateResolver resolver = (TargetStateResolver) converter.convertSourceToTargetClass(expression, TargetStateResolver.class); assertNull(resolver); } public void testEmpty() throws Exception { String expression = ""; TargetStateResolver resolver = (TargetStateResolver) converter.convertSourceToTargetClass(expression, TargetStateResolver.class); assertNull(resolver); } }././@LongLink0000000000000000000000000000025200000000000011564 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/test/java/org/springframework/webflow/engine/builder/support/TextToTransitionCriteriaTests.javalibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/test/java/org/springframew0000644000000000000000000001213611360615640030006 0ustar /* * Copyright 2004-2008 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.springframework.webflow.engine.builder.support; import junit.framework.TestCase; import org.springframework.binding.expression.Expression; import org.springframework.binding.expression.ExpressionParser; import org.springframework.binding.expression.ParserContext; import org.springframework.binding.expression.ParserException; import org.springframework.binding.expression.support.StaticExpression; import org.springframework.webflow.engine.Flow; import org.springframework.webflow.engine.TransitionCriteria; import org.springframework.webflow.engine.WildcardTransitionCriteria; import org.springframework.webflow.execution.Event; import org.springframework.webflow.execution.RequestContext; import org.springframework.webflow.execution.RequestContextHolder; import org.springframework.webflow.test.MockFlowBuilderContext; import org.springframework.webflow.test.MockRequestContext; public class TextToTransitionCriteriaTests extends TestCase { private MockFlowBuilderContext serviceLocator = new MockFlowBuilderContext("flowId"); private TextToTransitionCriteria converter = new TextToTransitionCriteria(serviceLocator); public void setUp() { } public void testAny() throws Exception { String expression = "*"; TransitionCriteria criterion = (TransitionCriteria) converter.convertSourceToTargetClass(expression, TransitionCriteria.class); RequestContext ctx = getRequestContext(); assertTrue("Criterion should evaluate to true", criterion.test(ctx)); assertSame(WildcardTransitionCriteria.INSTANCE, converter.convertSourceToTargetClass("*", TransitionCriteria.class)); assertSame(WildcardTransitionCriteria.INSTANCE, converter.convertSourceToTargetClass("", TransitionCriteria.class)); assertSame(WildcardTransitionCriteria.INSTANCE, converter.convertSourceToTargetClass(null, TransitionCriteria.class)); } public void testStaticEventId() throws Exception { String expression = "sample"; TransitionCriteria criterion = (TransitionCriteria) converter.convertSourceToTargetClass(expression, TransitionCriteria.class); RequestContext ctx = getRequestContext(); assertTrue("Criterion should evaluate to true", criterion.test(ctx)); } public void testTrueEvaluation() throws Exception { String expression = "${flowScope.foo == 'bar'}"; TransitionCriteria criterion = (TransitionCriteria) converter.convertSourceToTargetClass(expression, TransitionCriteria.class); RequestContext ctx = getRequestContext(); assertTrue("Criterion should evaluate to true", criterion.test(ctx)); } public void testFalseEvaluation() throws Exception { String expression = "${flowScope.foo != 'bar'}"; TransitionCriteria criterion = (TransitionCriteria) converter.convertSourceToTargetClass(expression, TransitionCriteria.class); RequestContext ctx = getRequestContext(); assertFalse("Criterion should evaluate to false", criterion.test(ctx)); } public void testNonStringEvaluation() throws Exception { String expression = "${3 + 4}"; TransitionCriteria criterion = (TransitionCriteria) converter.convertSourceToTargetClass(expression, TransitionCriteria.class); MockRequestContext ctx = getRequestContext(); ctx.setCurrentEvent(new Event(this, "7")); assertTrue("Criterion should evaluate to true", criterion.test(ctx)); } public void testCurrenEventEval() throws Exception { String expression = "${currentEvent == 'submit'}"; TransitionCriteria criterion = (TransitionCriteria) converter.convertSourceToTargetClass(expression, TransitionCriteria.class); MockRequestContext ctx = getRequestContext(); ctx.setCurrentEvent(new Event(this, "submit")); assertTrue("Criterion should evaluate to true", criterion.test(ctx)); } public void testNullExpressionEvaluation() throws Exception { serviceLocator.getFlowBuilderServices().setExpressionParser(new ExpressionParser() { public Expression parseExpression(String expressionString, ParserContext context) throws ParserException { return new StaticExpression(null); } }); TransitionCriteria criterion = (TransitionCriteria) converter.convertSourceToTargetClass("doesnt matter", TransitionCriteria.class); RequestContext ctx = getRequestContext(); assertFalse("Criterion should evaluate to false", criterion.test(ctx)); } private MockRequestContext getRequestContext() { Flow flow = new Flow("id"); MockRequestContext ctx = new MockRequestContext(flow); RequestContextHolder.setRequestContext(ctx); ctx.getFlowScope().put("foo", "bar"); ctx.setCurrentEvent(new Event(this, "sample")); return ctx; } }././@LongLink0000000000000000000000000000020600000000000011563 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/test/java/org/springframework/webflow/engine/builder/model/libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/test/java/org/springframew0000755000000000000000000000000011360615634030004 5ustar ././@LongLink0000000000000000000000000000022000000000000011557 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/test/java/org/springframework/webflow/engine/builder/model/resources/libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/test/java/org/springframew0000755000000000000000000000000011360615642030003 5ustar ././@LongLink0000000000000000000000000000023000000000000011560 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/test/java/org/springframework/webflow/engine/builder/model/resources/flow.xmllibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/test/java/org/springframew0000644000000000000000000000044711360615632030011 0ustar ././@LongLink0000000000000000000000000000024300000000000011564 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/test/java/org/springframework/webflow/engine/builder/model/resources/messages.propertieslibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/test/java/org/springframew0000644000000000000000000000001011360615642027774 0ustar foo=bar ././@LongLink0000000000000000000000000000024400000000000011565 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/test/java/org/springframework/webflow/engine/builder/model/FlowModelFlowBuilderTests.javalibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/test/java/org/springframew0000644000000000000000000003314511360615634030014 0ustar package org.springframework.webflow.engine.builder.model; import java.util.LinkedList; import junit.framework.TestCase; import org.springframework.beans.factory.support.StaticListableBeanFactory; import org.springframework.core.io.ClassPathResource; import org.springframework.core.io.Resource; import org.springframework.webflow.action.ExternalRedirectAction; import org.springframework.webflow.action.FlowDefinitionRedirectAction; import org.springframework.webflow.core.collection.LocalAttributeMap; import org.springframework.webflow.core.collection.MutableAttributeMap; import org.springframework.webflow.engine.Flow; import org.springframework.webflow.engine.FlowExecutionExceptionHandler; import org.springframework.webflow.engine.RequestControlContext; import org.springframework.webflow.engine.ViewState; import org.springframework.webflow.engine.builder.FlowAssembler; import org.springframework.webflow.engine.builder.FlowBuilderException; import org.springframework.webflow.engine.impl.FlowExecutionImplFactory; import org.springframework.webflow.engine.model.AttributeModel; import org.springframework.webflow.engine.model.EndStateModel; import org.springframework.webflow.engine.model.ExceptionHandlerModel; import org.springframework.webflow.engine.model.FlowModel; import org.springframework.webflow.engine.model.InputModel; import org.springframework.webflow.engine.model.Model; import org.springframework.webflow.engine.model.OutputModel; import org.springframework.webflow.engine.model.PersistenceContextModel; import org.springframework.webflow.engine.model.SecuredModel; import org.springframework.webflow.engine.model.TransitionModel; import org.springframework.webflow.engine.model.VarModel; import org.springframework.webflow.engine.model.ViewStateModel; import org.springframework.webflow.engine.model.builder.DefaultFlowModelHolder; import org.springframework.webflow.engine.model.builder.xml.XmlFlowModelBuilder; import org.springframework.webflow.engine.model.builder.xml.XmlFlowModelBuilderTests; import org.springframework.webflow.engine.model.registry.FlowModelHolder; import org.springframework.webflow.engine.model.registry.FlowModelRegistryImpl; import org.springframework.webflow.engine.support.ActionExecutingViewFactory; import org.springframework.webflow.execution.FlowExecution; import org.springframework.webflow.execution.FlowExecutionException; import org.springframework.webflow.execution.FlowExecutionOutcome; import org.springframework.webflow.execution.ViewFactory; import org.springframework.webflow.security.SecurityRule; import org.springframework.webflow.test.MockExternalContext; import org.springframework.webflow.test.MockFlowBuilderContext; public class FlowModelFlowBuilderTests extends TestCase { private FlowModel model; protected void setUp() { StaticListableBeanFactory beanFactory = new StaticListableBeanFactory(); beanFactory.addBean("bean", new Object()); model = new FlowModel(); } public void testBuildIncompleteFlow() { try { getFlow(model); fail("Should have failed"); } catch (FlowBuilderException e) { } } private LinkedList singleList(Model model) { LinkedList list = new LinkedList(); list.add(model); return list; } private LinkedList doubleList(Model model, Model model2) { LinkedList list = new LinkedList(); list.add(model); list.add(model2); return list; } private LinkedList quadList(Model model, Model model2, Model model3, Model model4) { LinkedList list = new LinkedList(); list.add(model); list.add(model2); list.add(model3); list.add(model4); return list; } public void testBuildFlowWithEndState() { model.setStates(singleList(new EndStateModel("end"))); Flow flow = getFlow(model); assertEquals("flow", flow.getId()); assertEquals("end", flow.getStartState().getId()); } public void testBuildFlowWithDefaultStartState() { model.setStates(singleList(new EndStateModel("end"))); Flow flow = getFlow(model); assertEquals("flow", flow.getId()); assertEquals("end", flow.getStartState().getId()); } public void testBuildFlowWithStartStateAttribute() { model.setStartStateId("end"); model.setStates(doubleList(new EndStateModel("foo"), new EndStateModel("end"))); Flow flow = getFlow(model); assertEquals("flow", flow.getId()); assertEquals("end", flow.getStartState().getId()); } public void testCustomFlowAttribute() { AttributeModel attribute1 = new AttributeModel("foo", "bar"); AttributeModel attribute2 = new AttributeModel("number", "1"); attribute2.setType("integer"); model.setAttributes(doubleList(attribute1, attribute2)); model.setStates(singleList(new EndStateModel("end"))); Flow flow = getFlow(model); assertEquals("bar", flow.getAttributes().get("foo")); assertEquals(new Integer(1), flow.getAttributes().get("number")); } public void testPersistenceContextFlow() { model.setPersistenceContext(new PersistenceContextModel()); model.setStates(singleList(new EndStateModel("end"))); Flow flow = getFlow(model); assertNotNull(flow.getAttributes().get("persistenceContext")); assertTrue(((Boolean) flow.getAttributes().get("persistenceContext")).booleanValue()); } public void testFlowInputOutputMapping() { InputModel input1 = new InputModel("foo", "flowScope.foo"); InputModel input2 = new InputModel("foo", "flowScope.bar"); InputModel input3 = new InputModel("number", "flowScope.baz"); input3.setType("integer"); InputModel input4 = new InputModel("required", "flowScope.boop"); input4.setRequired("true"); model.setInputs(quadList(input1, input2, input3, input4)); OutputModel output1 = new OutputModel("differentName", "flowScope.bar"); OutputModel output2 = new OutputModel("number", "flowScope.baz"); output2.setType("integer"); OutputModel output3 = new OutputModel("required", "flowScope.baz"); output3.setType("integer"); output3.setRequired("true"); OutputModel output4 = new OutputModel("literal", "'a literal'"); model.setOutputs(quadList(output1, output2, output3, output4)); EndStateModel end = new EndStateModel("end"); end.setOutputs(singleList(new OutputModel("foo", "flowScope.foo"))); EndStateModel notReached = new EndStateModel("notReached"); notReached.setOutputs(singleList(new OutputModel("notReached", "flowScope.foo"))); model.setStates(doubleList(end, notReached)); Flow flow = getFlow(model); FlowExecutionImplFactory factory = new FlowExecutionImplFactory(); FlowExecution execution = factory.createFlowExecution(flow); MockExternalContext context = new MockExternalContext(); MutableAttributeMap map = new LocalAttributeMap(); map.put("foo", "bar"); map.put("number", "3"); map.put("required", "9"); execution.start(map, context); FlowExecutionOutcome outcome = execution.getOutcome(); assertEquals("end", outcome.getId()); assertEquals("bar", outcome.getOutput().get("foo")); assertEquals("bar", outcome.getOutput().get("differentName")); assertEquals(new Integer(3), outcome.getOutput().get("number")); assertEquals(new Integer(3), outcome.getOutput().get("required")); assertEquals("a literal", outcome.getOutput().get("literal")); assertNull(outcome.getOutput().get("notReached")); } public void testFlowSecured() { model.setSecured(new SecuredModel("ROLE_USER")); model.setStates(singleList(new EndStateModel("end"))); Flow flow = getFlow(model); SecurityRule rule = (SecurityRule) flow.getAttributes().get(SecurityRule.SECURITY_ATTRIBUTE_NAME); assertNotNull(rule); assertEquals(SecurityRule.COMPARISON_ANY, rule.getComparisonType()); assertEquals(1, rule.getAttributes().size()); assertTrue(rule.getAttributes().contains("ROLE_USER")); } public void testFlowSecuredState() { EndStateModel end = new EndStateModel("end"); end.setSecured(new SecuredModel("ROLE_USER")); model.setStates(singleList(end)); Flow flow = getFlow(model); SecurityRule rule = (SecurityRule) flow.getState("end").getAttributes().get( SecurityRule.SECURITY_ATTRIBUTE_NAME); assertNotNull(rule); assertEquals(SecurityRule.COMPARISON_ANY, rule.getComparisonType()); assertEquals(1, rule.getAttributes().size()); assertTrue(rule.getAttributes().contains("ROLE_USER")); } public void testFlowSecuredTransition() { model.setStates(singleList(new EndStateModel("end"))); TransitionModel transition = new TransitionModel(); transition.setTo("end"); transition.setSecured(new SecuredModel("ROLE_USER")); model.setGlobalTransitions(singleList(transition)); Flow flow = getFlow(model); SecurityRule rule = (SecurityRule) flow.getGlobalTransitionSet().toArray()[0].getAttributes().get( SecurityRule.SECURITY_ATTRIBUTE_NAME); assertNotNull(rule); assertEquals(SecurityRule.COMPARISON_ANY, rule.getComparisonType()); assertEquals(1, rule.getAttributes().size()); assertTrue(rule.getAttributes().contains("ROLE_USER")); } public void testFlowVariable() { model.setVars(singleList(new VarModel("flow-foo", "org.springframework.webflow.TestBean"))); model.setStates(singleList(new EndStateModel("end"))); Flow flow = getFlow(model); assertEquals("flow-foo", flow.getVariable("flow-foo").getName()); } public void testViewStateVariable() { ViewStateModel view = new ViewStateModel("view"); view.setVars(singleList(new VarModel("foo", "org.springframework.webflow.TestBean"))); model.setStates(singleList(view)); Flow flow = getFlow(model); assertNotNull(((ViewState) flow.getStateInstance("view")).getVariable("foo")); } public void testViewStateRedirect() { ViewStateModel view = new ViewStateModel("view"); view.setRedirect("true"); model.setStates(singleList(view)); Flow flow = getFlow(model); assertTrue(((ViewState) flow.getStateInstance("view")).getRedirect()); } public void testViewStatePopup() { ViewStateModel view = new ViewStateModel("view"); view.setPopup("true"); model.setStates(singleList(view)); Flow flow = getFlow(model); assertTrue(((ViewState) flow.getStateInstance("view")).getPopup()); } public void testViewStateFlowRedirect() { ViewStateModel state = new ViewStateModel("view"); state.setView("flowRedirect:myFlow?input=#{flowScope.foo}"); model.setStates(singleList(state)); Flow flow = getFlow(model); ViewFactory vf = ((ViewState) flow.getStateInstance("view")).getViewFactory(); assertTrue(vf instanceof ActionExecutingViewFactory); ActionExecutingViewFactory avf = (ActionExecutingViewFactory) vf; assertTrue(avf.getAction() instanceof FlowDefinitionRedirectAction); } public void testViewStateExternalRedirect() { ViewStateModel state = new ViewStateModel("view"); state.setView("externalRedirect:http://www.paypal.com?_callbackUrl=#{flowExecutionUri}"); model.setStates(singleList(state)); Flow flow = getFlow(model); ViewFactory vf = ((ViewState) flow.getStateInstance("view")).getViewFactory(); assertTrue(vf instanceof ActionExecutingViewFactory); ActionExecutingViewFactory avf = (ActionExecutingViewFactory) vf; assertTrue(avf.getAction() instanceof ExternalRedirectAction); } public void testResourceBackedFlowBuilder() { ClassPathResource resource = new ClassPathResource("flow-endstate.xml", XmlFlowModelBuilderTests.class); Flow flow = getFlow(resource); assertEquals("flow", flow.getId()); assertEquals("end", flow.getStartState().getId()); } public void testResourceBackedFlowBuilderWithMessages() { ClassPathResource resource = new ClassPathResource("resources/flow.xml", FlowModelFlowBuilderTests.class); Flow flow = getFlow(resource); assertNotNull(flow.getApplicationContext()); assertEquals("bar", flow.getApplicationContext().getMessage("foo", null, null)); } public void testAbstractFlow() { model.setAbstract("true"); try { getFlow(model); fail("FlowBuilderException expected"); } catch (FlowBuilderException e) { // we want this } } public void testExceptionHandlers() { FlowModel model = new FlowModel(); model.setStates(singleList(new EndStateModel("state"))); model.setExceptionHandlers(singleList(new ExceptionHandlerModel("exceptionHandler"))); FlowExecutionExceptionHandler handler = new FlowExecutionExceptionHandler() { public boolean canHandle(FlowExecutionException exception) { return true; } public void handle(FlowExecutionException exception, RequestControlContext context) { } }; FlowModelFlowBuilder builder = new FlowModelFlowBuilder(new StaticFlowModelHolder(model)); MockFlowBuilderContext context = new MockFlowBuilderContext("foo"); context.registerBean("exceptionHandler", handler); FlowAssembler assembler = new FlowAssembler(builder, context); Flow flow = assembler.assembleFlow(); assertEquals(1, flow.getExceptionHandlerSet().size()); } private Flow getFlow(FlowModel model) { FlowModelHolder holder = new StaticFlowModelHolder(model); FlowModelFlowBuilder builder = new FlowModelFlowBuilder(holder); FlowAssembler assembler = new FlowAssembler(builder, new MockFlowBuilderContext("flow")); return assembler.assembleFlow(); } private Flow getFlow(ClassPathResource resource) { FlowModelHolder holder = new DefaultFlowModelHolder(new XmlFlowModelBuilder(resource, new FlowModelRegistryImpl())); FlowModelFlowBuilder builder = new FlowModelFlowBuilder(holder); FlowAssembler assembler = new FlowAssembler(builder, new MockFlowBuilderContext("flow")); return assembler.assembleFlow(); } private static class StaticFlowModelHolder implements FlowModelHolder { private FlowModel model; public StaticFlowModelHolder(FlowModel model) { this.model = model; } public FlowModel getFlowModel() { return model; } public String getFlowModelId() { return "flow"; } public Resource getFlowModelResource() { return new ClassPathResource("", getClass()); } public boolean hasFlowModelChanged() { return false; } public void refresh() { } } } ././@LongLink0000000000000000000000000000021700000000000011565 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/test/java/org/springframework/webflow/engine/DecisionStateTests.javalibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/test/java/org/springframew0000644000000000000000000000542411360615642030012 0ustar /* * Copyright 2004-2008 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.springframework.webflow.engine; import junit.framework.TestCase; import org.springframework.webflow.engine.support.DefaultTargetStateResolver; import org.springframework.webflow.engine.support.MockTransitionCriteria; import org.springframework.webflow.execution.Event; import org.springframework.webflow.test.MockRequestControlContext; /** * Tests that each of the Flow state types execute as expected when entered. * * @author Keith Donald */ public class DecisionStateTests extends TestCase { public void testIfDecision() { Flow flow = new Flow("flow"); DecisionState state = new DecisionState(flow, "decisionState"); state.getTransitionSet().add(new Transition(new MockTransitionCriteria("foo"), to("target"))); new EndState(flow, "target"); MockRequestControlContext context = new MockRequestControlContext(flow); context.setCurrentEvent(new Event(this, "foo")); state.enter(context); assertFalse(context.getFlowExecutionContext().isActive()); } public void testElseDecision() { Flow flow = new Flow("flow"); DecisionState state = new DecisionState(flow, "decisionState"); state.getTransitionSet().add(new Transition(new MockTransitionCriteria("foo"), to("invalid"))); state.getTransitionSet().add(new Transition(to("target"))); new EndState(flow, "target"); MockRequestControlContext context = new MockRequestControlContext(flow); context.setCurrentEvent(new Event(this, "bogus")); state.enter(context); assertFalse(context.getFlowExecutionContext().isActive()); } public void testCannotDecide() { Flow flow = new Flow("flow"); DecisionState state = new DecisionState(flow, "decisionState"); state.getTransitionSet().add(new Transition(new MockTransitionCriteria("foo"), to("invalid"))); state.getTransitionSet().add(new Transition(new MockTransitionCriteria("bar"), to("invalid"))); MockRequestControlContext context = new MockRequestControlContext(flow); context.setCurrentEvent(new Event(this, "bogus")); try { state.enter(context); fail("Expected no matching"); } catch (NoMatchingTransitionException e) { } } protected TargetStateResolver to(String stateId) { return new DefaultTargetStateResolver(stateId); } } ././@LongLink0000000000000000000000000000022000000000000011557 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/test/java/org/springframework/webflow/engine/ActionExecutorTests.javalibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/test/java/org/springframew0000644000000000000000000000575411360615636030023 0ustar /* * Copyright 2004-2008 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.springframework.webflow.engine; import junit.framework.TestCase; import org.springframework.webflow.execution.ActionExecutionException; import org.springframework.webflow.execution.ActionExecutor; import org.springframework.webflow.execution.Event; import org.springframework.webflow.execution.RequestContext; import org.springframework.webflow.execution.TestAction; import org.springframework.webflow.test.MockRequestContext; public class ActionExecutorTests extends TestCase { private MockRequestContext context; private State state; private Flow flow; protected void setUp() throws Exception { flow = new Flow("myFlow"); state = new EndState(flow, "end"); context = new MockRequestContext(flow); } public void testExecuteAction() { TestAction action = new TestAction(); Event result = ActionExecutor.execute(action, context); assertNull(context.getCurrentState()); assertEquals("success", result.getId()); } public void testExecuteActionInState() { context.getMockFlowExecutionContext().getMockActiveSession().setState(state); TestAction action = new TestAction(); Event result = ActionExecutor.execute(action, context); assertSame(state, context.getCurrentState()); assertEquals("success", result.getId()); } public void testExecuteActionWithException() { TestAction action = new TestAction() { protected Event doExecute(RequestContext context) throws Exception { throw new IllegalStateException("Oops"); } }; try { ActionExecutor.execute(action, context); fail("Should've failed"); } catch (ActionExecutionException e) { assertNull(context.getCurrentState()); assertTrue(e.getCause() instanceof IllegalStateException); assertEquals(flow.getId(), e.getFlowId()); assertNull(e.getStateId()); } } public void testExecuteActionInStateWithException() { context.getMockFlowExecutionContext().getMockActiveSession().setState(state); TestAction action = new TestAction() { protected Event doExecute(RequestContext context) throws Exception { throw new IllegalStateException("Oops"); } }; try { ActionExecutor.execute(action, context); fail("Should've failed"); } catch (ActionExecutionException e) { assertSame(state, context.getCurrentState()); assertTrue(e.getCause() instanceof IllegalStateException); assertEquals(flow.getId(), e.getFlowId()); assertEquals(state.getId(), e.getStateId()); } } }././@LongLink0000000000000000000000000000021600000000000011564 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/test/java/org/springframework/webflow/engine/SubflowStateTests.javalibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/test/java/org/springframew0000644000000000000000000001073411360615636030015 0ustar /* * Copyright 2004-2008 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.springframework.webflow.engine; import java.util.Collections; import junit.framework.TestCase; import org.springframework.binding.expression.EvaluationException; import org.springframework.binding.expression.support.AbstractGetValueExpression; import org.springframework.binding.mapping.Mapper; import org.springframework.binding.mapping.MappingResults; import org.springframework.binding.mapping.impl.DefaultMappingResults; import org.springframework.webflow.core.collection.AttributeMap; import org.springframework.webflow.core.collection.LocalAttributeMap; import org.springframework.webflow.core.collection.MutableAttributeMap; import org.springframework.webflow.engine.support.DefaultTargetStateResolver; import org.springframework.webflow.engine.support.MockTransitionCriteria; import org.springframework.webflow.execution.FlowExecutionException; import org.springframework.webflow.execution.RequestContext; import org.springframework.webflow.test.MockRequestControlContext; /** * Tests that each of the Flow state types execute as expected when entered. * * @author Keith Donald */ public class SubflowStateTests extends TestCase { private Flow parentFlow; private SubflowState subflowState; private Flow subflow; private MockRequestControlContext context; public void setUp() { parentFlow = new Flow("parent"); subflow = new Flow("child"); subflowState = new SubflowState(parentFlow, "subflow", new AbstractGetValueExpression() { public Object getValue(Object context) throws EvaluationException { return subflow; } }); context = new MockRequestControlContext(parentFlow); context.setCurrentState(subflowState); } public void testEnter() { new State(subflow, "whatev") { protected void doEnter(RequestControlContext context) throws FlowExecutionException { } }; subflowState.enter(context); assertEquals("child", context.getActiveFlow().getId()); } public void testEnterWithInput() { subflowState.setAttributeMapper(new SubflowAttributeMapper() { public MutableAttributeMap createSubflowInput(RequestContext context) { return new LocalAttributeMap("foo", "bar"); } public void mapSubflowOutput(AttributeMap flowOutput, RequestContext context) { } }); subflow.setInputMapper(new Mapper() { public MappingResults map(Object source, Object target) { MutableAttributeMap map = (MutableAttributeMap) source; assertEquals("bar", map.get("foo")); return new DefaultMappingResults(source, target, Collections.EMPTY_LIST); } }); new State(subflow, "whatev") { protected void doEnter(RequestControlContext context) throws FlowExecutionException { } }; subflowState.enter(context); assertEquals("child", context.getActiveFlow().getId()); } public void testReturnWithOutput() { subflowState.setAttributeMapper(new SubflowAttributeMapper() { public MutableAttributeMap createSubflowInput(RequestContext context) { return new LocalAttributeMap(); } public void mapSubflowOutput(AttributeMap flowOutput, RequestContext context) { assertEquals("bar", flowOutput.get("foo")); } }); subflowState.getTransitionSet().add(new Transition(on("end"), to("whatev"))); new State(parentFlow, "whatev") { protected void doEnter(RequestControlContext context) throws FlowExecutionException { } }; new EndState(subflow, "end"); subflow.setOutputMapper(new Mapper() { public MappingResults map(Object source, Object target) { MutableAttributeMap map = (MutableAttributeMap) target; map.put("foo", "bar"); return new DefaultMappingResults(source, target, Collections.EMPTY_LIST); } }); subflowState.enter(context); assertEquals("parent", context.getActiveFlow().getId()); } protected TransitionCriteria on(String event) { return new MockTransitionCriteria(event); } protected TargetStateResolver to(String stateId) { return new DefaultTargetStateResolver(stateId); } }././@LongLink0000000000000000000000000000022700000000000011566 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/test/java/org/springframework/webflow/engine/TestSubflowAttributeMapper.javalibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/test/java/org/springframew0000644000000000000000000000277411360615636030022 0ustar /* * Copyright 2004-2008 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.springframework.webflow.engine; import org.springframework.webflow.core.collection.AttributeMap; import org.springframework.webflow.core.collection.LocalAttributeMap; import org.springframework.webflow.core.collection.MutableAttributeMap; import org.springframework.webflow.execution.RequestContext; class TestSubflowAttributeMapper implements SubflowAttributeMapper { public MutableAttributeMap createSubflowInput(RequestContext context) { LocalAttributeMap inputMap = new LocalAttributeMap(); inputMap.put("childInputAttribute", context.getFlowScope().get("parentInputAttribute")); return inputMap; } public void mapSubflowOutput(AttributeMap subflowOutput, RequestContext context) { MutableAttributeMap parentAttributes = context.getFlowExecutionContext().getActiveSession().getScope(); parentAttributes.put("parentOutputAttribute", subflowOutput.get("childInputAttribute")); } }././@LongLink0000000000000000000000000000021400000000000011562 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/test/java/org/springframework/webflow/engine/StubViewFactory.javalibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/test/java/org/springframew0000644000000000000000000000361011360615634030006 0ustar /* * Copyright 2004-2008 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.springframework.webflow.engine; import java.io.Serializable; import org.springframework.webflow.execution.Event; import org.springframework.webflow.execution.RequestContext; import org.springframework.webflow.execution.View; import org.springframework.webflow.execution.ViewFactory; public class StubViewFactory implements ViewFactory { public static Serializable USER_EVENT_STATE = new Serializable() { }; public View getView(RequestContext context) { return new NullView(context); } private static class NullView implements View { private RequestContext context; public NullView(RequestContext context) { this.context = context; } public void render() { context.getFlowScope().put("renderCalled", Boolean.TRUE); } public boolean userEventQueued() { return hasFlowEvent(); } public void processUserEvent() { } public Serializable getUserEventState() { return USER_EVENT_STATE; } public boolean hasFlowEvent() { return context.getExternalContext().getRequestParameterMap().contains("_eventId"); } public Event getFlowEvent() { return new Event(this, context.getExternalContext().getRequestParameterMap().get("_eventId")); } public void saveState() { context.getFlowScope().put("saveStateCalled", Boolean.TRUE); } } }././@LongLink0000000000000000000000000000017500000000000011570 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/test/java/org/springframework/webflow/engine/impl/libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/test/java/org/springframew0000755000000000000000000000000011360615644030005 5ustar ././@LongLink0000000000000000000000000000023700000000000011567 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/test/java/org/springframework/webflow/engine/impl/FlowExecutionImplFactoryTests.javalibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/test/java/org/springframew0000644000000000000000000001735411360615644030021 0ustar /* * Copyright 2004-2008 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.springframework.webflow.engine.impl; import junit.framework.TestCase; import org.springframework.webflow.core.collection.LocalAttributeMap; import org.springframework.webflow.core.collection.MutableAttributeMap; import org.springframework.webflow.definition.FlowDefinition; import org.springframework.webflow.definition.registry.FlowDefinitionConstructionException; import org.springframework.webflow.definition.registry.FlowDefinitionLocator; import org.springframework.webflow.definition.registry.NoSuchFlowDefinitionException; import org.springframework.webflow.engine.EndState; import org.springframework.webflow.engine.Flow; import org.springframework.webflow.engine.RequestControlContext; import org.springframework.webflow.engine.State; import org.springframework.webflow.execution.FlowExecution; import org.springframework.webflow.execution.FlowExecutionException; import org.springframework.webflow.execution.FlowExecutionKey; import org.springframework.webflow.execution.FlowExecutionKeyFactory; import org.springframework.webflow.execution.FlowExecutionListener; import org.springframework.webflow.execution.FlowExecutionListenerAdapter; import org.springframework.webflow.execution.FlowSession; import org.springframework.webflow.execution.RequestContext; import org.springframework.webflow.execution.factory.StaticFlowExecutionListenerLoader; import org.springframework.webflow.test.MockExternalContext; import org.springframework.webflow.test.MockFlowExecutionKey; /** * Test case for {@link FlowExecutionImplFactory}. */ public class FlowExecutionImplFactoryTests extends TestCase { private FlowExecutionImplFactory factory = new FlowExecutionImplFactory(); private Flow flowDefinition; private boolean starting; private boolean getKeyCalled; private boolean updateSnapshotCalled; private boolean removeSnapshotCalled; private boolean removeAllSnapshotsCalled; public void setUp() { flowDefinition = new Flow("flow"); new EndState(flowDefinition, "end"); } public void testCreate() { FlowExecution execution = factory.createFlowExecution(flowDefinition); assertSame(flowDefinition, execution.getDefinition()); assertFalse(execution.hasStarted()); assertFalse(execution.isActive()); } public void testCreateNullArgument() { try { factory.createFlowExecution(null); fail("Should've failed"); } catch (IllegalArgumentException e) { } } public void testCreateWithExecutionAttributes() { MutableAttributeMap attributes = new LocalAttributeMap(); attributes.put("foo", "bar"); factory.setExecutionAttributes(attributes); FlowExecution execution = factory.createFlowExecution(flowDefinition); assertEquals(attributes, execution.getAttributes()); } public void testCreateWithExecutionListener() { FlowExecutionListener listener1 = new FlowExecutionListenerAdapter() { public void sessionStarting(RequestContext context, FlowSession session, MutableAttributeMap input) { starting = true; } }; factory.setExecutionListenerLoader(new StaticFlowExecutionListenerLoader(listener1)); FlowExecution execution = factory.createFlowExecution(flowDefinition); assertFalse(execution.isActive()); execution.start(null, new MockExternalContext()); assertTrue(starting); } public void testCreateWithExecutionKeyFactory() { State state = new State(flowDefinition, "state") { protected void doEnter(RequestControlContext context) throws FlowExecutionException { context.assignFlowExecutionKey(); context.updateCurrentFlowExecutionSnapshot(); context.removeCurrentFlowExecutionSnapshot(); context.removeAllFlowExecutionSnapshots(); } }; flowDefinition.setStartState(state); factory.setExecutionKeyFactory(new MockFlowExecutionKeyFactory()); FlowExecution execution = factory.createFlowExecution(flowDefinition); execution.start(null, new MockExternalContext()); assertTrue(getKeyCalled); assertTrue(removeAllSnapshotsCalled); assertTrue(removeSnapshotCalled); assertTrue(updateSnapshotCalled); assertNull(execution.getKey()); } public void testRestoreExecutionState() { FlowExecutionImpl flowExecution = (FlowExecutionImpl) factory.createFlowExecution(flowDefinition); LocalAttributeMap executionAttributes = new LocalAttributeMap(); factory.setExecutionAttributes(executionAttributes); FlowExecutionListener listener = new FlowExecutionListenerAdapter() { }; factory.setExecutionListenerLoader(new StaticFlowExecutionListenerLoader(listener)); MockFlowExecutionKeyFactory keyFactory = new MockFlowExecutionKeyFactory(); factory.setExecutionKeyFactory(keyFactory); FlowExecutionKey flowExecutionKey = new MockFlowExecutionKey("e1s1"); LocalAttributeMap conversationScope = new LocalAttributeMap(); SimpleFlowDefinitionLocator locator = new SimpleFlowDefinitionLocator(); FlowSessionImpl session1 = new FlowSessionImpl(); session1.setFlowId("flow"); session1.setStateId("end"); FlowSessionImpl session2 = new FlowSessionImpl(); session2.setFlowId("child"); session2.setStateId("state"); flowExecution.getFlowSessions().add(session1); flowExecution.getFlowSessions().add(session2); factory.restoreFlowExecution(flowExecution, flowDefinition, flowExecutionKey, conversationScope, locator); assertSame(executionAttributes, flowExecution.getAttributes()); assertEquals(1, flowExecution.getListeners().length); assertSame(listener, flowExecution.getListeners()[0]); assertSame(flowExecutionKey, flowExecution.getKey()); assertSame(keyFactory, flowExecution.getKeyFactory()); assertSame(conversationScope, flowExecution.getConversationScope()); assertSame(((FlowSession) flowExecution.getFlowSessions().get(0)).getDefinition(), flowDefinition); assertSame(((FlowSession) flowExecution.getFlowSessions().get(0)).getDefinition().getState("end"), flowDefinition.getState("end")); assertSame(((FlowSession) flowExecution.getFlowSessions().get(1)).getDefinition(), locator.child); assertSame(((FlowSession) flowExecution.getFlowSessions().get(1)).getDefinition().getState("state"), locator.child.getState("state")); } private class MockFlowExecutionKeyFactory implements FlowExecutionKeyFactory { public FlowExecutionKey getKey(FlowExecution execution) { getKeyCalled = true; return null; } public void removeAllFlowExecutionSnapshots(FlowExecution execution) { removeAllSnapshotsCalled = true; } public void removeFlowExecutionSnapshot(FlowExecution execution) { removeSnapshotCalled = true; } public void updateFlowExecutionSnapshot(FlowExecution execution) { updateSnapshotCalled = true; } } private class SimpleFlowDefinitionLocator implements FlowDefinitionLocator { Flow child = new Flow("child"); public SimpleFlowDefinitionLocator() { new EndState(child, "state"); } public FlowDefinition getFlowDefinition(String flowId) throws NoSuchFlowDefinitionException, FlowDefinitionConstructionException { if (flowId.equals(child.getId())) { return child; } else { throw new IllegalArgumentException(flowId.toString()); } } } }././@LongLink0000000000000000000000000000023000000000000011560 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/test/java/org/springframework/webflow/engine/impl/FlowExecutionImplTests.javalibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/test/java/org/springframew0000644000000000000000000004163411360615632030014 0ustar /* * Copyright 2004-2008 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.springframework.webflow.engine.impl; import junit.framework.TestCase; import org.springframework.binding.message.MessageBuilder; import org.springframework.webflow.core.collection.MutableAttributeMap; import org.springframework.webflow.definition.FlowDefinition; import org.springframework.webflow.engine.EndState; import org.springframework.webflow.engine.Flow; import org.springframework.webflow.engine.FlowExecutionExceptionHandler; import org.springframework.webflow.engine.RequestControlContext; import org.springframework.webflow.engine.State; import org.springframework.webflow.engine.StubViewFactory; import org.springframework.webflow.engine.Transition; import org.springframework.webflow.engine.ViewState; import org.springframework.webflow.engine.support.DefaultTargetStateResolver; import org.springframework.webflow.execution.FlowExecutionException; import org.springframework.webflow.execution.FlowExecutionListener; import org.springframework.webflow.execution.FlowExecutionListenerAdapter; import org.springframework.webflow.execution.FlowSession; import org.springframework.webflow.execution.MockFlowExecutionListener; import org.springframework.webflow.execution.RequestContext; import org.springframework.webflow.execution.RequestContextHolder; import org.springframework.webflow.test.MockExternalContext; import org.springframework.webflow.test.MockFlowExecutionKeyFactory; /** * General flow execution tests. * * @author Keith Donald * @author Erwin Vervaet * @author Ben Hale * @author Jeremy Grelle */ public class FlowExecutionImplTests extends TestCase { public void testStartAndEnd() { Flow flow = new Flow("flow"); new EndState(flow, "end"); MockFlowExecutionListener mockListener = new MockFlowExecutionListener(); FlowExecutionListener[] listeners = new FlowExecutionListener[] { mockListener }; FlowExecutionImpl execution = new FlowExecutionImpl(flow); execution.setListeners(listeners); MockExternalContext context = new MockExternalContext(); assertFalse(execution.hasStarted()); execution.start(null, context); assertTrue(execution.hasStarted()); assertFalse(execution.isActive()); assertTrue(execution.hasEnded()); try { execution.getActiveSession(); fail("should have failed"); } catch (IllegalStateException e) { } assertEquals(1, mockListener.getRequestsSubmittedCount()); assertEquals(1, mockListener.getRequestsProcessedCount()); assertEquals(1, mockListener.getSessionCreatingCount()); assertEquals(1, mockListener.getSessionStartingCount()); assertEquals(1, mockListener.getSessionStartedCount()); assertEquals(1, mockListener.getStateEnteringCount()); assertEquals(1, mockListener.getStateEnteredCount()); assertEquals(1, mockListener.getSessionEndingCount()); assertEquals(1, mockListener.getSessionEndedCount()); assertEquals(0, mockListener.getEventSignaledCount()); assertEquals(0, mockListener.getTransitionExecutingCount()); assertEquals(0, mockListener.getPausedCount()); assertEquals(0, mockListener.getResumingCount()); assertEquals(0, mockListener.getExceptionThrownCount()); assertEquals(0, mockListener.getFlowNestingLevel()); } public void testStartAndEndSavedMessages() { Flow flow = new Flow("flow"); new EndState(flow, "end"); MockFlowExecutionListener mockListener = new MockFlowExecutionListener() { public void sessionStarting(RequestContext context, FlowSession session, MutableAttributeMap input) { super.sessionStarting(context, session, input); context.getMessageContext().addMessage(new MessageBuilder().source("foo").defaultText("bar").build()); } }; FlowExecutionListener[] listeners = new FlowExecutionListener[] { mockListener }; FlowExecutionImpl execution = new FlowExecutionImpl(flow); execution.setListeners(listeners); MockExternalContext context = new MockExternalContext(); assertFalse(execution.hasStarted()); execution.start(null, context); assertTrue(execution.hasStarted()); assertFalse(execution.isActive()); assertTrue(execution.hasEnded()); assertNotNull(execution.getFlashScope().get("messagesMemento")); } public void testStartAndPause() { Flow flow = new Flow("flow"); new State(flow, "state") { protected void doEnter(RequestControlContext context) throws FlowExecutionException { // no op } }; MockFlowExecutionListener mockListener = new MockFlowExecutionListener(); FlowExecutionListener[] listeners = new FlowExecutionListener[] { mockListener }; FlowExecutionImpl execution = new FlowExecutionImpl(flow); execution.setListeners(listeners); MockExternalContext context = new MockExternalContext(); execution.start(null, context); assertTrue(execution.isActive()); assertEquals(1, mockListener.getPausedCount()); } public void testStartWithNullInputMap() { Flow flow = new Flow("flow"); new State(flow, "state") { protected void doEnter(RequestControlContext context) throws FlowExecutionException { // no op } }; MockFlowExecutionListener mockListener = new MockFlowExecutionListener() { public void sessionStarting(RequestContext context, FlowSession session, MutableAttributeMap input) { super.sessionStarting(context, session, input); assertNotNull(input); } }; FlowExecutionListener[] listeners = new FlowExecutionListener[] { mockListener }; FlowExecutionImpl execution = new FlowExecutionImpl(flow); execution.setListeners(listeners); MockExternalContext context = new MockExternalContext(); execution.start(null, context); assertTrue(execution.isActive()); assertEquals(1, mockListener.getPausedCount()); } public void testStartExceptionThrownBeforeFirstSessionCreated() { Flow flow = new Flow("flow"); flow.getExceptionHandlerSet().add(new FlowExecutionExceptionHandler() { public boolean canHandle(FlowExecutionException exception) { return true; } public void handle(FlowExecutionException exception, RequestControlContext context) { throw new UnsupportedOperationException("Should not be called"); } }); new EndState(flow, "end"); FlowExecutionListener mockListener = new FlowExecutionListenerAdapter() { public void sessionCreating(RequestContext context, FlowDefinition definition) { assertFalse(context.getFlowExecutionContext().isActive()); throw new IllegalStateException("Oops"); } }; FlowExecutionListener[] listeners = new FlowExecutionListener[] { mockListener }; FlowExecutionImpl execution = new FlowExecutionImpl(flow); execution.setListeners(listeners); MockExternalContext context = new MockExternalContext(); assertFalse(execution.hasStarted()); try { execution.start(null, context); fail("Should have failed"); } catch (FlowExecutionException e) { assertEquals(flow.getId(), e.getFlowId()); assertNull(e.getStateId()); assertTrue(e.getCause() instanceof IllegalStateException); e.printStackTrace(); assertTrue(e.getCause().getMessage().equals("Oops")); } } public void testStartExceptionThrownByState() { Flow flow = new Flow("flow"); State state = new State(flow, "state") { protected void doEnter(RequestControlContext context) throws FlowExecutionException { throw new IllegalStateException("Oops"); } }; FlowExecutionImpl execution = new FlowExecutionImpl(flow); MockExternalContext context = new MockExternalContext(); assertFalse(execution.hasStarted()); try { execution.start(null, context); fail("Should have failed"); } catch (FlowExecutionException e) { assertEquals(flow.getId(), e.getFlowId()); assertEquals(state.getId(), e.getStateId()); } } public void testStartFlowExecutionExceptionThrownByState() { Flow flow = new Flow("flow"); final FlowExecutionException e = new FlowExecutionException("flow", "state", "Oops"); new State(flow, "state") { protected void doEnter(RequestControlContext context) throws FlowExecutionException { throw e; } }; FlowExecutionImpl execution = new FlowExecutionImpl(flow); MockExternalContext context = new MockExternalContext(); assertFalse(execution.hasStarted()); try { execution.start(null, context); fail("Should have failed"); } catch (FlowExecutionException ex) { assertSame(e, ex); } } public void testStartExceptionThrownByStateHandledByFlowExceptionHandler() { Flow flow = new Flow("flow"); StubFlowExecutionExceptionHandler exceptionHandler = new StubFlowExecutionExceptionHandler(); flow.getExceptionHandlerSet().add(exceptionHandler); final FlowExecutionException e = new FlowExecutionException("flow", "state", "Oops"); new State(flow, "state") { protected void doEnter(RequestControlContext context) throws FlowExecutionException { throw e; } }; FlowExecutionImpl execution = new FlowExecutionImpl(flow); MockExternalContext context = new MockExternalContext(); assertFalse(execution.hasStarted()); execution.start(null, context); assertTrue(exceptionHandler.getHandled()); } public void testStartExceptionThrownByStateHandledByStateExceptionHandler() { Flow flow = new Flow("flow"); flow.getExceptionHandlerSet().add(new StubFlowExecutionExceptionHandler()); final FlowExecutionException e = new FlowExecutionException("flow", "state", "Oops"); State s = new State(flow, "state") { protected void doEnter(RequestControlContext context) throws FlowExecutionException { throw e; } }; StubFlowExecutionExceptionHandler exceptionHandler = new StubFlowExecutionExceptionHandler(); s.getExceptionHandlerSet().add(exceptionHandler); FlowExecutionImpl execution = new FlowExecutionImpl(flow); MockExternalContext context = new MockExternalContext(); assertFalse(execution.hasStarted()); execution.start(null, context); assertTrue(exceptionHandler.getHandled()); } public void testStartCannotCallTwice() { Flow flow = new Flow("flow"); new EndState(flow, "end"); FlowExecutionImpl execution = new FlowExecutionImpl(flow); MockExternalContext context = new MockExternalContext(); execution.start(null, context); try { execution.start(null, context); fail("Should've failed"); } catch (IllegalStateException e) { } } public void testResume() { Flow flow = new Flow("flow"); new ViewState(flow, "view", new StubViewFactory()); MockFlowExecutionListener mockListener = new MockFlowExecutionListener(); FlowExecutionListener[] listeners = new FlowExecutionListener[] { mockListener }; FlowExecutionImpl execution = new FlowExecutionImpl(flow); execution.setListeners(listeners); execution.setKeyFactory(new MockFlowExecutionKeyFactory()); MockExternalContext context = new MockExternalContext(); execution.start(null, context); context = new MockExternalContext(); execution.resume(context); assertEquals(1, mockListener.getResumingCount()); assertEquals(2, mockListener.getPausedCount()); } public void testResumeNotAViewState() { Flow flow = new Flow("flow"); new State(flow, "state") { protected void doEnter(RequestControlContext context) throws FlowExecutionException { // no-op } }; MockFlowExecutionListener mockListener = new MockFlowExecutionListener(); FlowExecutionListener[] listeners = new FlowExecutionListener[] { mockListener }; FlowExecutionImpl execution = new FlowExecutionImpl(flow); execution.setListeners(listeners); MockExternalContext context = new MockExternalContext(); execution.start(null, context); context = new MockExternalContext(); try { execution.resume(context); assertEquals(1, mockListener.getResumingCount()); fail("Should have failed"); } catch (FlowExecutionException e) { } } public void testResumeAfterEnding() { Flow flow = new Flow("flow"); new EndState(flow, "end"); FlowExecutionImpl execution = new FlowExecutionImpl(flow); MockExternalContext context = new MockExternalContext(); execution.start(null, context); try { execution.resume(context); fail("Should've failed"); } catch (IllegalStateException e) { } } public void testResumeException() { Flow flow = new Flow("flow"); ViewState state = new ViewState(flow, "view", new StubViewFactory()) { public void resume(RequestControlContext context) { throw new IllegalStateException("Oops"); } }; MockFlowExecutionListener mockListener = new MockFlowExecutionListener(); FlowExecutionListener[] listeners = new FlowExecutionListener[] { mockListener }; FlowExecutionImpl execution = new FlowExecutionImpl(flow); execution.setListeners(listeners); execution.setKeyFactory(new MockFlowExecutionKeyFactory()); MockExternalContext context = new MockExternalContext(); execution.start(null, context); context = new MockExternalContext(); try { execution.resume(context); } catch (FlowExecutionException e) { assertEquals(flow.getId(), e.getFlowId()); assertEquals(state.getId(), e.getStateId()); assertEquals(1, mockListener.getResumingCount()); assertEquals(2, mockListener.getPausedCount()); } } public void testResumeFlowExecutionException() { Flow flow = new Flow("flow"); ViewState state = new ViewState(flow, "view", new StubViewFactory()) { public void resume(RequestControlContext context) { throw new FlowExecutionException("flow", "view", "oops"); } }; MockFlowExecutionListener mockListener = new MockFlowExecutionListener(); FlowExecutionListener[] listeners = new FlowExecutionListener[] { mockListener }; FlowExecutionImpl execution = new FlowExecutionImpl(flow); execution.setListeners(listeners); execution.setKeyFactory(new MockFlowExecutionKeyFactory()); MockExternalContext context = new MockExternalContext(); execution.start(null, context); context = new MockExternalContext(); try { execution.resume(context); } catch (FlowExecutionException e) { assertEquals(flow.getId(), e.getFlowId()); assertEquals(state.getId(), e.getStateId()); assertEquals(1, mockListener.getResumingCount()); assertEquals(2, mockListener.getPausedCount()); } } public void testExecuteTransition() { Flow flow = new Flow("flow"); ViewState state = new ViewState(flow, "view", new StubViewFactory()) { public void resume(RequestControlContext context) { context.execute(getRequiredTransition(context)); } }; state.getTransitionSet().add(new Transition(new DefaultTargetStateResolver("finish"))); EndState end = new EndState(flow, "finish"); MockFlowExecutionListener mockListener = new MockFlowExecutionListener(); FlowExecutionListener[] listeners = new FlowExecutionListener[] { mockListener }; FlowExecutionImpl execution = new FlowExecutionImpl(flow); execution.setListeners(listeners); execution.setKeyFactory(new MockFlowExecutionKeyFactory()); MockExternalContext context = new MockExternalContext(); execution.start(null, context); assertEquals(0, mockListener.getTransitionExecutingCount()); execution.resume(context); assertTrue(execution.hasEnded()); assertEquals(1, mockListener.getTransitionExecutingCount()); } public void testRequestContextManagedOnStartAndResume() { Flow flow = new Flow("flow"); new ViewState(flow, "view", new StubViewFactory()) { public void resume(RequestControlContext context) { assertSame(context, RequestContextHolder.getRequestContext()); } }; FlowExecutionImpl execution = new FlowExecutionImpl(flow); execution.setKeyFactory(new MockFlowExecutionKeyFactory()); MockExternalContext context = new MockExternalContext(); execution.start(null, context); assertNull("RequestContext was not released", RequestContextHolder.getRequestContext()); context = new MockExternalContext(); execution.resume(context); assertNull("RequestContext was not released", RequestContextHolder.getRequestContext()); } private static class StubFlowExecutionExceptionHandler implements FlowExecutionExceptionHandler { private boolean handled; public boolean getHandled() { return handled; } public void setHandled(boolean handled) { this.handled = handled; } public boolean canHandle(FlowExecutionException exception) { return true; } public void handle(FlowExecutionException exception, RequestControlContext context) { handled = true; } } }././@LongLink0000000000000000000000000000021200000000000011560 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/test/java/org/springframework/webflow/engine/EndStateTests.javalibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/test/java/org/springframew0000644000000000000000000001237711360615644030021 0ustar /* * Copyright 2004-2008 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.springframework.webflow.engine; import junit.framework.TestCase; import org.springframework.binding.expression.EvaluationException; import org.springframework.binding.expression.Expression; import org.springframework.binding.expression.ExpressionParser; import org.springframework.binding.expression.support.AbstractGetValueExpression; import org.springframework.binding.expression.support.FluentParserContext; import org.springframework.binding.mapping.impl.DefaultMapper; import org.springframework.binding.mapping.impl.DefaultMapping; import org.springframework.webflow.core.collection.MutableAttributeMap; import org.springframework.webflow.engine.support.DefaultTargetStateResolver; import org.springframework.webflow.engine.support.MockTransitionCriteria; import org.springframework.webflow.execution.Action; import org.springframework.webflow.execution.Event; import org.springframework.webflow.execution.FlowExecutionException; import org.springframework.webflow.execution.RequestContext; import org.springframework.webflow.expression.DefaultExpressionParserFactory; import org.springframework.webflow.test.MockFlowExecutionContext; import org.springframework.webflow.test.MockFlowSession; import org.springframework.webflow.test.MockRequestControlContext; /** * Tests EndState behavior. * @author Keith Donald */ public class EndStateTests extends TestCase { public void testEnterEndStateTerminateFlowExecution() { Flow flow = new Flow("myFlow"); EndState state = new EndState(flow, "end"); MockRequestControlContext context = new MockRequestControlContext(flow); state.enter(context); assertFalse("Active", context.getFlowExecutionContext().isActive()); } public void testEnterEndStateWithFinalResponseRenderer() { Flow flow = new Flow("myFlow"); EndState state = new EndState(flow, "end"); StubFinalResponseAction action = new StubFinalResponseAction(); state.setFinalResponseAction(action); MockRequestControlContext context = new MockRequestControlContext(flow); state.enter(context); assertTrue(action.executeCalled); } public void testEnterEndStateWithFinalResponseRendererResponseAlreadyComplete() { Flow flow = new Flow("myFlow"); EndState state = new EndState(flow, "end"); StubFinalResponseAction action = new StubFinalResponseAction(); state.setFinalResponseAction(action); MockRequestControlContext context = new MockRequestControlContext(flow); context.getExternalContext().recordResponseComplete(); state.enter(context); assertFalse(action.executeCalled); } public void testEnterEndStateWithOutputMapper() { Flow flow = new Flow("myFlow") { public void end(RequestControlContext context, MutableAttributeMap output) throws FlowExecutionException { assertEquals("foo", output.get("y")); } }; EndState state = new EndState(flow, "end"); DefaultMapper mapper = new DefaultMapper(); ExpressionParser parser = DefaultExpressionParserFactory.getExpressionParser(); Expression x = parser.parseExpression("flowScope.x", new FluentParserContext().evaluate(RequestContext.class)); Expression y = parser.parseExpression("y", new FluentParserContext().evaluate(MutableAttributeMap.class)); mapper.addMapping(new DefaultMapping(x, y)); state.setOutputMapper(mapper); MockRequestControlContext context = new MockRequestControlContext(flow); context.getFlowScope().put("x", "foo"); state.enter(context); } public void testEnterEndStateTerminateFlowSession() { final Flow subflow = new Flow("mySubflow"); EndState state = new EndState(subflow, "end"); MockFlowSession session = new MockFlowSession(subflow); Flow parent = new Flow("parent"); SubflowState subflowState = new SubflowState(parent, "subflow", new AbstractGetValueExpression() { public Object getValue(Object context) throws EvaluationException { return subflow; } }); subflowState.getTransitionSet().add(new Transition(on("end"), to("end"))); new EndState(parent, "end"); MockFlowSession parentSession = new MockFlowSession(parent); parentSession.setState(subflowState); session.setParent(parentSession); MockRequestControlContext context = new MockRequestControlContext(new MockFlowExecutionContext(session)); state.enter(context); assertFalse("Active", context.getFlowExecutionContext().isActive()); } protected static TransitionCriteria on(String event) { return new MockTransitionCriteria(event); } protected static TargetStateResolver to(String stateId) { return new DefaultTargetStateResolver(stateId); } private class StubFinalResponseAction implements Action { private boolean executeCalled; public Event execute(RequestContext context) { executeCalled = true; return new Event(this, "success"); } } }././@LongLink0000000000000000000000000000021700000000000011565 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/test/java/org/springframework/webflow/engine/AnnotedActionTests.javalibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/test/java/org/springframew0000644000000000000000000000555711360615634030022 0ustar /* * Copyright 2004-2008 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.springframework.webflow.engine; import junit.framework.TestCase; import org.springframework.webflow.action.AbstractAction; import org.springframework.webflow.execution.AnnotatedAction; import org.springframework.webflow.execution.Event; import org.springframework.webflow.execution.RequestContext; import org.springframework.webflow.execution.TestAction; import org.springframework.webflow.test.MockRequestContext; public class AnnotedActionTests extends TestCase { private AnnotatedAction action = new AnnotatedAction(new TestAction()); private MockRequestContext context; protected void setUp() throws Exception { Flow flow = new Flow("myFlow"); context = new MockRequestContext(flow); } public void testBasicExecute() throws Exception { assertEquals("success", action.execute(context).getId()); } public void testExecuteWithCustomAttribute() throws Exception { action.getAttributes().put("attr", "value"); action.setTargetAction(new AbstractAction() { protected Event doExecute(RequestContext context) throws Exception { assertEquals("value", context.getAttributes().getString("attr")); return success(); } }); assertEquals("success", action.execute(context).getId()); assertEquals(0, context.getAttributes().size()); } public void testExecuteWithChainOfCustomAttributes() throws Exception { AnnotatedAction action2 = new AnnotatedAction(action); action2.getAttributes().put("attr2", "value"); action.getAttributes().put("attr", "value"); action.setTargetAction(new AbstractAction() { protected Event doExecute(RequestContext context) throws Exception { assertEquals("value", context.getAttributes().getString("attr")); assertEquals("value", context.getAttributes().getString("attr2")); return success(); } }); assertEquals("success", action2.execute(context).getId()); assertEquals(0, context.getAttributes().size()); } public void testExecuteWithName() throws Exception { action.getAttributes().put("name", "foo"); action.setTargetAction(new AbstractAction() { protected Event doExecute(RequestContext context) throws Exception { assertEquals("foo", context.getAttributes().getString("name")); return success(); } }); assertEquals("foo.success", action.execute(context).getId()); } }././@LongLink0000000000000000000000000000020000000000000011555 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/test/java/org/springframework/webflow/engine/support/libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/test/java/org/springframew0000755000000000000000000000000011360615644030005 5ustar ././@LongLink0000000000000000000000000000027200000000000011566 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/test/java/org/springframework/webflow/engine/support/TransitionExecutingFlowExecutionExceptionHandlerTests.javalibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/test/java/org/springframew0000644000000000000000000001577511360615632030023 0ustar /* * Copyright 2004-2008 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.springframework.webflow.engine.support; import junit.framework.TestCase; import org.springframework.webflow.TestException; import org.springframework.webflow.action.AbstractAction; import org.springframework.webflow.core.collection.MutableAttributeMap; import org.springframework.webflow.engine.EndState; import org.springframework.webflow.engine.Flow; import org.springframework.webflow.engine.RequestControlContext; import org.springframework.webflow.engine.State; import org.springframework.webflow.engine.TargetStateResolver; import org.springframework.webflow.engine.Transition; import org.springframework.webflow.engine.TransitionableState; import org.springframework.webflow.engine.builder.FlowAssembler; import org.springframework.webflow.engine.builder.FlowBuilder; import org.springframework.webflow.engine.builder.FlowBuilderException; import org.springframework.webflow.engine.builder.support.AbstractFlowBuilder; import org.springframework.webflow.engine.impl.FlowExecutionImplFactory; import org.springframework.webflow.execution.Event; import org.springframework.webflow.execution.FlowExecution; import org.springframework.webflow.execution.FlowExecutionException; import org.springframework.webflow.execution.FlowExecutionListener; import org.springframework.webflow.execution.FlowExecutionListenerAdapter; import org.springframework.webflow.execution.FlowSession; import org.springframework.webflow.execution.RequestContext; import org.springframework.webflow.execution.factory.StaticFlowExecutionListenerLoader; import org.springframework.webflow.test.MockExternalContext; import org.springframework.webflow.test.MockFlowBuilderContext; public class TransitionExecutingFlowExecutionExceptionHandlerTests extends TestCase { Flow flow; TransitionableState state; protected void setUp() { flow = new Flow("myFlow"); state = new TransitionableState(flow, "state1") { protected void doEnter(RequestControlContext context) { throw new FlowExecutionException(getFlow().getId(), getId(), "Oops!", new TestException()); } }; state.getTransitionSet().add(new Transition(toState("end"))); } public void testTransitionExecutorHandlesExceptionExactMatch() { TransitionExecutingFlowExecutionExceptionHandler handler = new TransitionExecutingFlowExecutionExceptionHandler(); handler.add(TestException.class, "state"); FlowExecutionException e = new FlowExecutionException(state.getOwner().getId(), state.getId(), "Oops", new TestException()); assertTrue("Doesn't handle state exception", handler.canHandle(e)); e = new FlowExecutionException(state.getOwner().getId(), state.getId(), "Oops", new Exception()); assertFalse("Shouldn't handle exception", handler.canHandle(e)); } public void testTransitionExecutorHandlesExceptionSuperclassMatch() { TransitionExecutingFlowExecutionExceptionHandler handler = new TransitionExecutingFlowExecutionExceptionHandler(); handler.add(Exception.class, "state"); FlowExecutionException e = new FlowExecutionException(state.getOwner().getId(), state.getId(), "Oops", new TestException()); assertTrue("Doesn't handle state exception", handler.canHandle(e)); e = new FlowExecutionException(state.getOwner().getId(), state.getId(), "Oops", new RuntimeException()); assertTrue("Doesn't handle state exception", handler.canHandle(e)); } public void testFlowStateExceptionHandlingTransition() { new EndState(flow, "end"); TransitionExecutingFlowExecutionExceptionHandler handler = new TransitionExecutingFlowExecutionExceptionHandler(); handler.add(TestException.class, "end"); flow.getExceptionHandlerSet().add(handler); FlowExecutionListener listener = new FlowExecutionListenerAdapter() { public void sessionEnding(RequestContext context, FlowSession session, MutableAttributeMap output) { assertTrue(context.getFlashScope().contains("flowExecutionException")); assertTrue(context.getFlashScope().contains("rootCauseException")); assertTrue(context.getFlashScope().get("rootCauseException") instanceof TestException); } }; FlowExecutionImplFactory factory = new FlowExecutionImplFactory(); factory.setExecutionListenerLoader(new StaticFlowExecutionListenerLoader(listener)); FlowExecution execution = factory.createFlowExecution(flow); execution.start(null, new MockExternalContext()); assertTrue("Should have ended", !execution.isActive()); } public void testStateExceptionHandlingTransitionNoSuchState() { TransitionExecutingFlowExecutionExceptionHandler handler = new TransitionExecutingFlowExecutionExceptionHandler(); handler.add(TestException.class, "end"); flow.getExceptionHandlerSet().add(handler); FlowExecution execution = new FlowExecutionImplFactory().createFlowExecution(flow); try { execution.start(null, new MockExternalContext()); fail("Should have failed no such state"); } catch (IllegalArgumentException e) { } } public void testStateExceptionHandlingRethrow() { FlowExecution execution = new FlowExecutionImplFactory().createFlowExecution(flow); try { execution.start(null, new MockExternalContext()); fail("Should have rethrown"); } catch (FlowExecutionException e) { // expected } } public void testStateExceptionHandlingExceptionInEndState() { FlowBuilder builder = new AbstractFlowBuilder() { public void buildStates() throws FlowBuilderException { State state = new EndState(getFlow(), "end"); state.getEntryActionList().add(new AbstractAction() { protected Event doExecute(RequestContext context) throws Exception { throw new NullPointerException("failing"); } }); new TransitionableState(getFlow(), "showError") { protected void doEnter(RequestControlContext context) throws FlowExecutionException { } }; } public void buildExceptionHandlers() throws FlowBuilderException { getFlow().getExceptionHandlerSet().add( new TransitionExecutingFlowExecutionExceptionHandler().add(Exception.class, "showError")); } public Flow createFlow() throws FlowBuilderException { return Flow.create(getContext().getFlowId(), getContext().getFlowAttributes()); } }; Flow flow = new FlowAssembler(builder, new MockFlowBuilderContext("flow")).assembleFlow(); FlowExecution execution = new FlowExecutionImplFactory().createFlowExecution(flow); execution.start(null, new MockExternalContext()); assertTrue(execution.isActive()); } protected TargetStateResolver toState(String stateId) { return new DefaultTargetStateResolver(stateId); } }././@LongLink0000000000000000000000000000024400000000000011565 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/test/java/org/springframework/webflow/engine/support/ActionExecutingViewFactoryTests.javalibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/test/java/org/springframew0000644000000000000000000000431611360615644030013 0ustar package org.springframework.webflow.engine.support; import java.io.IOException; import junit.framework.TestCase; import org.springframework.webflow.execution.TestAction; import org.springframework.webflow.execution.View; import org.springframework.webflow.test.MockRequestContext; public class ActionExecutingViewFactoryTests extends TestCase { public void testGetView() throws Exception { TestAction action = new TestAction(); ActionExecutingViewFactory factory = new ActionExecutingViewFactory(action); MockRequestContext context = new MockRequestContext(); View view = factory.getView(context); assertFalse(action.isExecuted()); view.render(); assertTrue(action.isExecuted()); } public void testProcessUserEvent() throws IOException { TestAction action = new TestAction(); ActionExecutingViewFactory factory = new ActionExecutingViewFactory(action); MockRequestContext context = new MockRequestContext(); View view = factory.getView(context); assertFalse(action.isExecuted()); view.render(); assertTrue(action.isExecuted()); context.putRequestParameter("_eventId", "foo"); view.processUserEvent(); assertTrue(view.hasFlowEvent()); assertEquals("foo", view.getFlowEvent().getId()); } public void testProcessUserEventButton() throws IOException { TestAction action = new TestAction(); ActionExecutingViewFactory factory = new ActionExecutingViewFactory(action); MockRequestContext context = new MockRequestContext(); View view = factory.getView(context); assertFalse(action.isExecuted()); view.render(); assertTrue(action.isExecuted()); context.putRequestParameter("_eventId_foo", "doesn't matter"); view.processUserEvent(); assertTrue(view.hasFlowEvent()); assertEquals("foo", view.getFlowEvent().getId()); } public void testProcessUserEventNoEvent() throws IOException { TestAction action = new TestAction(); ActionExecutingViewFactory factory = new ActionExecutingViewFactory(action); MockRequestContext context = new MockRequestContext(); View view = factory.getView(context); assertFalse(action.isExecuted()); view.render(); assertTrue(action.isExecuted()); view.processUserEvent(); assertFalse(view.hasFlowEvent()); assertNull(view.getFlowEvent()); } } ././@LongLink0000000000000000000000000000024200000000000011563 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/test/java/org/springframework/webflow/engine/support/ActionTransitionCriteriaTests.javalibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/test/java/org/springframew0000644000000000000000000000343211360615636030012 0ustar /* * Copyright 2004-2008 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.springframework.webflow.engine.support; import junit.framework.TestCase; import org.springframework.webflow.test.MockAction; import org.springframework.webflow.test.MockRequestContext; public class ActionTransitionCriteriaTests extends TestCase { private MockAction action; private ActionTransitionCriteria criteria; protected void setUp() throws Exception { action = new MockAction(); criteria = new ActionTransitionCriteria(action); } public void testExecuteSuccessResult() throws Exception { MockRequestContext context = new MockRequestContext(); assertTrue(criteria.test(context)); } public void testExecuteTrueResult() throws Exception { action.setResultEventId("true"); MockRequestContext context = new MockRequestContext(); assertTrue(criteria.test(context)); } public void testExecuteYesResult() throws Exception { action.setResultEventId("yes"); MockRequestContext context = new MockRequestContext(); assertTrue(criteria.test(context)); } public void testExecuteErrorResult() throws Exception { action.setResultEventId("whatever"); MockRequestContext context = new MockRequestContext(); assertFalse(criteria.test(context)); } }././@LongLink0000000000000000000000000000023700000000000011567 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/test/java/org/springframework/webflow/engine/support/DefaultTargetResolverTests.javalibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/test/java/org/springframew0000644000000000000000000000243511360615636030014 0ustar package org.springframework.webflow.engine.support; import junit.framework.TestCase; import org.springframework.binding.expression.support.StaticExpression; import org.springframework.webflow.engine.Transition; import org.springframework.webflow.test.MockRequestContext; public class DefaultTargetResolverTests extends TestCase { public void testResolveState() { DefaultTargetStateResolver resolver = new DefaultTargetStateResolver("mockState"); MockRequestContext context = new MockRequestContext(); Transition transition = new Transition(); assertEquals("mockState", resolver.resolveTargetState(transition, null, context).getId()); } public void testResolveStateExpression() { DefaultTargetStateResolver resolver = new DefaultTargetStateResolver(new StaticExpression("mockState")); MockRequestContext context = new MockRequestContext(); Transition transition = new Transition(); assertEquals("mockState", resolver.resolveTargetState(transition, null, context).getId()); } public void testResolveStateNull() { DefaultTargetStateResolver resolver = new DefaultTargetStateResolver((String) null); MockRequestContext context = new MockRequestContext(); Transition transition = new Transition(); assertEquals(null, resolver.resolveTargetState(transition, null, context)); } } ././@LongLink0000000000000000000000000000025100000000000011563 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/test/java/org/springframework/webflow/engine/support/BeanFactoryVariableValueFactoryTests.javalibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/test/java/org/springframew0000644000000000000000000000166711360615644030021 0ustar package org.springframework.webflow.engine.support; import junit.framework.TestCase; import org.springframework.beans.factory.support.DefaultListableBeanFactory; import org.springframework.webflow.TestBean; import org.springframework.webflow.test.MockRequestContext; public class BeanFactoryVariableValueFactoryTests extends TestCase { private BeanFactoryVariableValueFactory factory; public void testCreateValue() { factory = new BeanFactoryVariableValueFactory(TestBean.class, new DefaultListableBeanFactory()); MockRequestContext context = new MockRequestContext(); Object value = factory.createInitialValue(context); assertTrue(value instanceof TestBean); } public void testRestoreValue() { factory = new BeanFactoryVariableValueFactory(TestBean.class, new DefaultListableBeanFactory()); MockRequestContext context = new MockRequestContext(); TestBean bean = new TestBean(); factory.restoreReferences(bean, context); } } ././@LongLink0000000000000000000000000000024100000000000011562 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/test/java/org/springframework/webflow/engine/support/TransitionCriteriaChainTests.javalibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/test/java/org/springframew0000644000000000000000000000722711360615634030016 0ustar /* * Copyright 2004-2008 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.springframework.webflow.engine.support; import org.springframework.webflow.action.EventFactorySupport; import org.springframework.webflow.engine.TransitionCriteria; import org.springframework.webflow.execution.Action; import org.springframework.webflow.execution.AnnotatedAction; import org.springframework.webflow.execution.Event; import org.springframework.webflow.execution.RequestContext; import org.springframework.webflow.test.MockRequestContext; import junit.framework.TestCase; /** * Unit tests for {@link TransitionCriteriaChain}. * * @author Erwin Vervaet */ public class TransitionCriteriaChainTests extends TestCase { private TransitionCriteriaChain chain; private MockRequestContext context; protected void setUp() throws Exception { chain = new TransitionCriteriaChain(); context = new MockRequestContext(); } public void testEmptyChain() { assertTrue(chain.test(context)); } public void testAllTrue() { TestTransitionCriteria criteria1 = new TestTransitionCriteria(true); TestTransitionCriteria criteria2 = new TestTransitionCriteria(true); TestTransitionCriteria criteria3 = new TestTransitionCriteria(true); chain.add(criteria1); chain.add(criteria2); chain.add(criteria3); assertTrue(chain.test(context)); assertTrue(criteria1.tested); assertTrue(criteria2.tested); assertTrue(criteria3.tested); } public void testWithFalse() { TestTransitionCriteria criteria1 = new TestTransitionCriteria(true); TestTransitionCriteria criteria2 = new TestTransitionCriteria(false); TestTransitionCriteria criteria3 = new TestTransitionCriteria(true); chain.add(criteria1); chain.add(criteria2); chain.add(criteria3); assertFalse(chain.test(context)); assertTrue(criteria1.tested); assertTrue(criteria2.tested); assertFalse(criteria3.tested); } public void testCriteriaChainForNoActions() { TransitionCriteria actionChain = TransitionCriteriaChain.criteriaChainFor(null); assertTrue(actionChain.test(context)); } public void testCriteriaChainForActions() { AnnotatedAction[] actions = new AnnotatedAction[] { new AnnotatedAction(new TestAction(true)), new AnnotatedAction(new TestAction(false)) }; TransitionCriteria actionChain = TransitionCriteriaChain.criteriaChainFor(actions); assertFalse(actionChain.test(context)); } private static class TestTransitionCriteria implements TransitionCriteria { public boolean tested = false; private boolean result; public TestTransitionCriteria(boolean result) { this.result = result; } public boolean test(RequestContext context) { tested = true; return result; } } private static class TestAction implements Action { private boolean result; public TestAction(boolean result) { this.result = result; } public Event execute(RequestContext context) throws Exception { if (result) { return new EventFactorySupport().success(this); } else { return new EventFactorySupport().error(this); } } } } ././@LongLink0000000000000000000000000000023700000000000011567 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/test/java/org/springframework/webflow/engine/support/NotTransitionCriteriaTests.javalibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/test/java/org/springframew0000644000000000000000000000242711360615632030011 0ustar /* * Copyright 2004-2008 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.springframework.webflow.engine.support; import org.springframework.webflow.engine.WildcardTransitionCriteria; import org.springframework.webflow.test.MockRequestContext; import junit.framework.TestCase; /** * Unit tests for {@link NotTransitionCriteria}. * * @author Erwin Vervaet */ public class NotTransitionCriteriaTests extends TestCase { public void testNull() { try { new NotTransitionCriteria(null); fail(); } catch (IllegalArgumentException e) { } } public void testNegation() { assertFalse(new NotTransitionCriteria(WildcardTransitionCriteria.INSTANCE).test(new MockRequestContext())); } } ././@LongLink0000000000000000000000000000023300000000000011563 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/test/java/org/springframework/webflow/engine/support/MockTransitionCriteria.javalibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/test/java/org/springframew0000644000000000000000000000451611360615642030013 0ustar /* * Copyright 2004-2008 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.springframework.webflow.engine.support; import java.io.Serializable; import org.springframework.util.Assert; import org.springframework.webflow.engine.TransitionCriteria; import org.springframework.webflow.execution.Event; import org.springframework.webflow.execution.RequestContext; /** * Simple transition criteria that matches on an eventId and nothing else. Specifically, if the id of the last event * that occurred equals {@link #getEventId()} this criteria will return true. * * @see RequestContext#getCurrentEvent() * * @author Erwin Vervaet * @author Keith Donald */ public class MockTransitionCriteria implements TransitionCriteria, Serializable { /** * The event id to match. */ private String eventId; /** * Whether or not to match case sensitively. Default is true. */ private boolean caseSensitive = true; /** * Create a new event id matching criteria object. * @param eventId the event id */ public MockTransitionCriteria(String eventId) { Assert.hasText(eventId, "The event id is required"); this.eventId = eventId; } /** * Returns the event id to match. */ public String getEventId() { return eventId; } /** * Set whether or not the event id should be matched in a case sensitive manner. Defaults to true. */ public void setCaseSensitive(boolean caseSensitive) { this.caseSensitive = caseSensitive; } public boolean test(RequestContext context) { Event currentEvent = context.getCurrentEvent(); if (currentEvent == null) { return false; } if (caseSensitive) { return eventId.equals(currentEvent.getId()); } else { return eventId.equalsIgnoreCase(currentEvent.getId()); } } public String toString() { return "[eventId = '" + eventId + "']"; } }././@LongLink0000000000000000000000000000022100000000000011560 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/test/java/org/springframework/webflow/engine/AnnotatedObjectTests.javalibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/test/java/org/springframew0000644000000000000000000000236111360615632030006 0ustar /* * Copyright 2004-2008 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.springframework.webflow.engine; import org.springframework.webflow.core.AnnotatedObject; import junit.framework.TestCase; public class AnnotatedObjectTests extends TestCase { private AnnotatedObject object = new Flow("foo"); public void testSetCaption() { object.setCaption("caption"); assertEquals("caption", object.getCaption()); } public void testSetDescription() { object.setDescription("description"); assertEquals("description", object.getDescription()); } public void testPutCustomAttributes() { object.getAttributes().put("foo", "bar"); assertEquals("bar", object.getAttributes().get("foo")); } } ././@LongLink0000000000000000000000000000020700000000000011564 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/test/java/org/springframework/webflow/engine/StateTests.javalibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/test/java/org/springframew0000644000000000000000000000542611360615640030012 0ustar /* * Copyright 2004-2008 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.springframework.webflow.engine; import junit.framework.TestCase; import org.springframework.webflow.execution.FlowExecutionException; import org.springframework.webflow.execution.TestAction; import org.springframework.webflow.test.MockRequestControlContext; /** * Tests that each of the Flow state types execute as expected when entered. * * @author Keith Donald */ public class StateTests extends TestCase { private Flow flow; private State state; private boolean entered; private boolean handled; public void setUp() { flow = new Flow("flow"); state = new State(flow, "myState") { protected void doEnter(RequestControlContext context) throws FlowExecutionException { entered = true; } }; } public void testStateEnter() { assertEquals("myState", state.getId()); MockRequestControlContext context = new MockRequestControlContext(flow); state.enter(context); assertEquals(state, context.getCurrentState()); assertTrue(entered); } public void testStateEnterWithEntryAction() { TestAction action = new TestAction(); state.getEntryActionList().add(action); MockRequestControlContext context = new MockRequestControlContext(flow); state.enter(context); assertEquals(state, context.getCurrentState()); assertTrue(action.isExecuted()); assertTrue(entered); assertEquals(1, action.getExecutionCount()); } public void testHandledException() { state.getExceptionHandlerSet().add(new FlowExecutionExceptionHandler() { public boolean canHandle(FlowExecutionException exception) { return true; } public void handle(FlowExecutionException exception, RequestControlContext context) { handled = true; } }); FlowExecutionException e = new FlowExecutionException(flow.getId(), state.getId(), "Whatev"); MockRequestControlContext context = new MockRequestControlContext(flow); assertTrue(state.handleException(e, context)); assertTrue(handled); } public void testCouldNotHandleException() { FlowExecutionException e = new FlowExecutionException(flow.getId(), state.getId(), "Whatev"); MockRequestControlContext context = new MockRequestControlContext(flow); assertFalse(state.handleException(e, context)); } } ././@LongLink0000000000000000000000000000021600000000000011564 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/test/java/org/springframework/webflow/engine/FlowVariableTests.javalibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/test/java/org/springframew0000644000000000000000000000332111360615636030007 0ustar package org.springframework.webflow.engine; import junit.framework.TestCase; import org.springframework.webflow.execution.RequestContext; import org.springframework.webflow.test.MockRequestContext; public class FlowVariableTests extends TestCase { private boolean restoreCalled; public void testCreateVariable() { FlowVariable var = new FlowVariable("foo", new VariableValueFactory() { public Object createInitialValue(RequestContext context) { return "bar"; } public void restoreReferences(Object value, RequestContext context) { } }); MockRequestContext context = new MockRequestContext(); var.create(context); assertEquals("bar", context.getFlowScope().get("foo")); } public void testDestroyVariable() { FlowVariable var = new FlowVariable("foo", new VariableValueFactory() { public Object createInitialValue(RequestContext context) { return "bar"; } public void restoreReferences(Object value, RequestContext context) { } }); MockRequestContext context = new MockRequestContext(); var.create(context); assertEquals("bar", context.getFlowScope().get("foo")); var.destroy(context); assertFalse(context.getFlowScope().contains("foo")); } public void testRestoreVariable() { FlowVariable var = new FlowVariable("foo", new VariableValueFactory() { public Object createInitialValue(RequestContext context) { return "bar"; } public void restoreReferences(Object value, RequestContext context) { restoreCalled = true; assertEquals("bar", value); } }); MockRequestContext context = new MockRequestContext(); var.create(context); var.restore(context); assertEquals("bar", context.getFlowScope().get("foo")); assertTrue(restoreCalled); } } ././@LongLink0000000000000000000000000000017600000000000011571 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/test/java/org/springframework/webflow/engine/model/libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/test/java/org/springframew0000755000000000000000000000000011360615644030005 5ustar ././@LongLink0000000000000000000000000000022700000000000011566 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/test/java/org/springframework/webflow/engine/model/TransitionModelTests.javalibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/test/java/org/springframew0000644000000000000000000000423311360615640030005 0ustar /* * Copyright 2004-2008 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.springframework.webflow.engine.model; import junit.framework.TestCase; /** * Unit tests for {@link TransitionModel}. */ public class TransitionModelTests extends TestCase { public void testMergeable() { TransitionModel child = new TransitionModel(); child.setOn("event"); TransitionModel parent = new TransitionModel(); parent.setOn("event"); assertTrue(child.isMergeableWith(parent)); } public void testMergeableOnException() { TransitionModel child = new TransitionModel(); child.setOnException("expception"); TransitionModel parent = new TransitionModel(); parent.setOnException("exception"); assertTrue(child.isMergeableWith(child)); } public void testNotMergeable() { TransitionModel child = new TransitionModel(); child.setOn("child"); TransitionModel parent = new TransitionModel(); parent.setOn("parent"); assertFalse(child.isMergeableWith(parent)); } public void testNotMergeableOnException() { TransitionModel child = new TransitionModel(); child.setOnException("child"); TransitionModel parent = new TransitionModel(); parent.setOnException("parent"); assertFalse(child.isMergeableWith(parent)); } public void testNotMergeableWithNull() { TransitionModel child = new TransitionModel(); assertFalse(child.isMergeableWith(null)); } public void testMerge() { TransitionModel child = new TransitionModel(); child.setOn("child"); TransitionModel parent = new TransitionModel(); parent.setOn("child"); parent.setTo("end"); child.merge(parent); assertEquals("end", child.getTo()); } } ././@LongLink0000000000000000000000000000022100000000000011560 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/test/java/org/springframework/webflow/engine/model/FlowModelTests.javalibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/test/java/org/springframew0000644000000000000000000001660611360615642030016 0ustar /* * Copyright 2004-2008 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.springframework.webflow.engine.model; import java.util.LinkedList; import junit.framework.TestCase; /** * Unit tests for {@link FlowModel}. */ public class FlowModelTests extends TestCase { public void testMergeable() { FlowModel child = new FlowModel(); FlowModel parent = new FlowModel(); assertTrue(child.isMergeableWith(parent)); } public void testNotMergeableWithNull() { FlowModel child = new FlowModel(); assertFalse(child.isMergeableWith(null)); } public void testMergeAttributes() { FlowModel child = new FlowModel(); FlowModel parent = new FlowModel(); child.setAttributes(singleList(new AttributeModel("name", "value"))); AttributeModel parentAttribute1 = new AttributeModel("name", "value"); parentAttribute1.setType("type"); AttributeModel parentAttribute2 = new AttributeModel("name2", "value2"); parentAttribute2.setType("type2"); parent.setAttributes(doubleList(parentAttribute1, parentAttribute2)); child.merge(parent); assertEquals(2, child.getAttributes().size()); assertEquals("name", ((AttributeModel) child.getAttributes().get(0)).getName()); assertEquals("type", ((AttributeModel) child.getAttributes().get(0)).getType()); assertEquals("name2", ((AttributeModel) child.getAttributes().get(1)).getName()); assertEquals("type2", ((AttributeModel) child.getAttributes().get(1)).getType()); } public void testMergeSecured() { FlowModel child = new FlowModel(); FlowModel parent = new FlowModel(); child.setSecured(new SecuredModel("secured")); SecuredModel secured = new SecuredModel("secured"); secured.setMatch("all"); parent.setSecured(secured); child.merge(parent); assertEquals("all", child.getSecured().getMatch()); } public void testMergePersistenceContext() { FlowModel child = new FlowModel(); FlowModel parent = new FlowModel(); parent.setPersistenceContext(new PersistenceContextModel()); child.merge(parent); assertNotNull(child.getPersistenceContext()); } public void testMergeVars() { FlowModel parent = new FlowModel(); parent.setVars(singleList(new VarModel("name", "value"))); FlowModel child = new FlowModel(); child.setVars(singleList(new VarModel("name", "value2"))); child.merge(parent); assertEquals(1, child.getVars().size()); assertEquals("value2", ((VarModel) child.getVars().get(0)).getClassName()); } public void testMergeMappings() { FlowModel child = new FlowModel(); FlowModel parent = new FlowModel(); InputModel input1 = new InputModel("name", "value"); input1.setType("type"); input1.setType("required"); InputModel input2 = new InputModel("name2", "value2"); input2.setType("type2"); input2.setRequired("required2"); InputModel input3 = new InputModel("name3", "value3"); input2.setType("type3"); input2.setRequired("required3"); child.setInputs(tripleList(input1, input2, input3)); InputModel parentInput = new InputModel("name3", "value3"); parentInput.setType("type3"); parentInput.setRequired("required3"); parent.setInputs(singleList(parentInput)); child.merge(parent); assertEquals(3, child.getInputs().size()); } public void testMergeOnStart() { FlowModel child = new FlowModel(); child.setOnStartActions(tripleList(new EvaluateModel("expression"), new RenderModel("expression"), new SetModel("expression", "value"))); FlowModel parent = new FlowModel(); EvaluateModel eval = new EvaluateModel("expression"); eval.setResult("result"); parent.setOnStartActions(tripleList(eval, new RenderModel("expression"), new SetModel("expression", "value"))); child.merge(parent); assertEquals(6, child.getOnStartActions().size()); assertNotNull(((EvaluateModel) child.getOnStartActions().get(0)).getResult()); } public void testMergeStates() { FlowModel child = new FlowModel(); child.setStates(doubleList(new ViewStateModel("view"), new EndStateModel("end"))); FlowModel parent = new FlowModel(); ViewStateModel view = new ViewStateModel("view"); view.setView("jsp"); parent.setStates(tripleList(view, new DecisionStateModel("decider"), new ActionStateModel("action"))); child.merge(parent); assertEquals(4, child.getStates().size()); assertEquals("jsp", ((ViewStateModel) child.getStates().get(0)).getView()); } public void testMergeGlobalTransitions() { FlowModel child = new FlowModel(); TransitionModel transition1 = new TransitionModel(); transition1.setOn("end"); TransitionModel transition2 = new TransitionModel(); transition2.setOn("start"); child.setGlobalTransitions(doubleList(transition1, transition2)); FlowModel parent = new FlowModel(); transition1 = new TransitionModel(); transition1.setOn("search"); transition2 = new TransitionModel(); transition2.setOn("end"); transition2.setTo("theend"); parent.setGlobalTransitions(doubleList(transition1, transition2)); child.merge(parent); assertEquals(3, child.getGlobalTransitions().size()); assertEquals("theend", ((TransitionModel) child.getGlobalTransitions().get(0)).getTo()); } public void testMergeOnEnd() { FlowModel child = new FlowModel(); child.setOnEndActions(tripleList(new EvaluateModel("expression"), new RenderModel("expression"), new SetModel( "expression", "value"))); FlowModel parent = new FlowModel(); EvaluateModel eval = new EvaluateModel("expression"); eval.setResult("result"); parent.setOnEndActions(tripleList(eval, new RenderModel("expression"), new SetModel("expression", "value"))); child.merge(parent); assertEquals(6, child.getOnEndActions().size()); assertNotNull(((EvaluateModel) child.getOnEndActions().get(0)).getResult()); } public void testMergeExceptionHandlers() { FlowModel child = new FlowModel(); child.setExceptionHandlers(doubleList(new ExceptionHandlerModel("bean1"), new ExceptionHandlerModel("bean2"))); FlowModel parent = new FlowModel(); parent.setExceptionHandlers(doubleList(new ExceptionHandlerModel("bean2"), new ExceptionHandlerModel("bean3"))); child.merge(parent); assertEquals(4, child.getExceptionHandlers().size()); } public void testMergeBeanImports() { FlowModel child = new FlowModel(); child.setBeanImports(doubleList(new BeanImportModel("path1"), new BeanImportModel("path2"))); FlowModel parent = new FlowModel(); parent.setBeanImports(doubleList(new BeanImportModel("path1"), new BeanImportModel("path2"))); child.merge(parent); assertEquals(4, child.getBeanImports().size()); } private LinkedList singleList(Model model) { LinkedList list = new LinkedList(); list.add(model); return list; } private LinkedList doubleList(Model model, Model model2) { LinkedList list = new LinkedList(); list.add(model); list.add(model2); return list; } private LinkedList tripleList(Model model, Model model2, Model model3) { LinkedList list = new LinkedList(); list.add(model); list.add(model2); list.add(model3); return list; } } ././@LongLink0000000000000000000000000000022500000000000011564 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/test/java/org/springframework/webflow/engine/model/AbstractModelTests.javalibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/test/java/org/springframew0000644000000000000000000001176011360615632030011 0ustar /* * Copyright 2004-2008 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.springframework.webflow.engine.model; import java.util.LinkedList; import junit.framework.TestCase; /** * Unit tests for {@link AbstractModel}. */ public class AbstractModelTests extends TestCase { public void testStringMerge() { AbstractModel obj = new PersistenceContextModel(); String child = "child"; String parent = "parent"; assertEquals("child", obj.merge(child, parent)); } public void testStringMergeNullParent() { AbstractModel obj = new PersistenceContextModel(); String child = "child"; String parent = null; assertEquals("child", obj.merge(child, parent)); } public void testStringMergeNullChild() { AbstractModel obj = new PersistenceContextModel(); String child = null; String parent = "parent"; assertEquals("parent", obj.merge(child, parent)); } public void testStringMergeNulls() { AbstractModel obj = new PersistenceContextModel(); String child = null; String parent = null; assertEquals(null, obj.merge(child, parent)); } public void testMergeModel() { AttributeModel parent = new AttributeModel("foo", "bar"); AttributeModel child = new AttributeModel("foo", null); FlowModel model = new FlowModel(); model.merge(child, parent); assertEquals("bar", child.getValue()); } public void testMergeParentCreateCopy() { AttributeModel parent = new AttributeModel("foo", "bar"); AttributeModel child = null; FlowModel model = new FlowModel(); child = (AttributeModel) model.merge(child, parent); assertEquals("bar", child.getValue()); assertNotSame(parent, child); } public void testListMergeAddAtEndFalse() { LinkedList child = new LinkedList(); child.add(new SecuredModel("1")); child.add(new SecuredModel("3")); LinkedList parent = new LinkedList(); parent.add(new SecuredModel("2")); SecuredModel match = new SecuredModel("3"); match.setMatch("foo"); parent.add(match); AbstractModel obj = new PersistenceContextModel(); LinkedList result = obj.merge(child, parent, false); assertEquals(3, result.size()); assertEquals("2", ((SecuredModel) result.get(0)).getAttributes()); assertEquals("1", ((SecuredModel) result.get(1)).getAttributes()); assertEquals("3", ((SecuredModel) result.get(2)).getAttributes()); assertNotSame(parent.get(0), result.get(1)); assertEquals("foo", ((SecuredModel) result.get(2)).getMatch()); } public void testListMergeAddAtEndTrue() { LinkedList child = new LinkedList(); child.add(new SecuredModel("1")); child.add(new SecuredModel("3")); LinkedList parent = new LinkedList(); parent.add(new SecuredModel("2")); SecuredModel match = new SecuredModel("3"); match.setMatch("foo"); parent.add(match); AbstractModel obj = new PersistenceContextModel(); LinkedList result = obj.merge(child, parent, true); assertEquals(3, result.size()); assertEquals("1", ((SecuredModel) result.get(0)).getAttributes()); assertEquals("3", ((SecuredModel) result.get(1)).getAttributes()); assertEquals("2", ((SecuredModel) result.get(2)).getAttributes()); assertNotSame(parent.get(0), result.get(1)); assertEquals("foo", ((SecuredModel) result.get(1)).getMatch()); } public void testListMergeNullParent() { AbstractModel obj = new PersistenceContextModel(); LinkedList child = new LinkedList(); child.add("1"); LinkedList parent = null; LinkedList result = obj.merge(child, parent); assertEquals(1, result.size()); assertEquals("1", result.get(0)); } public void testListMergeNullChild() { LinkedList child = null; LinkedList parent = new LinkedList(); parent.add(new SecuredModel("2")); AbstractModel obj = new PersistenceContextModel(); LinkedList result = obj.merge(child, parent); assertEquals(1, result.size()); assertEquals("2", ((SecuredModel) result.get(0)).getAttributes()); assertNotSame(parent.get(0), result.get(0)); } public void testListMergeNulls() { AbstractModel obj = new PersistenceContextModel(); LinkedList child = null; LinkedList parent = null; LinkedList result = obj.merge(child, parent); assertEquals(null, result); } public void testCopyModel() { AttributeModel model = new AttributeModel("foo", "bar"); FlowModel m = new FlowModel(); AttributeModel copy = (AttributeModel) m.copy(model); assertEquals("foo", copy.getName()); assertEquals("bar", copy.getValue()); } public void testCopyModelNull() { FlowModel m = new FlowModel(); AttributeModel copy = (AttributeModel) m.copy(null); assertNull(copy); } } ././@LongLink0000000000000000000000000000023200000000000011562 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/test/java/org/springframework/webflow/engine/model/DecisionStateModelTests.javalibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/test/java/org/springframew0000644000000000000000000000337411360615636030017 0ustar /* * Copyright 2004-2008 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.springframework.webflow.engine.model; import java.util.LinkedList; import junit.framework.TestCase; /** * Unit tests for {@link DecisionStateModel}. */ public class DecisionStateModelTests extends TestCase { public void testMergeable() { DecisionStateModel child = new DecisionStateModel("child"); assertTrue(child.isMergeableWith(child)); } public void testNotMergeable() { DecisionStateModel child = new DecisionStateModel("child"); DecisionStateModel parent = new DecisionStateModel("parent"); assertFalse(child.isMergeableWith(parent)); } public void testNotMergeableWithNull() { DecisionStateModel child = new DecisionStateModel("child"); assertFalse(child.isMergeableWith(null)); } public void testMerge() { DecisionStateModel child = new DecisionStateModel("child"); DecisionStateModel parent = new DecisionStateModel("child"); parent.setSecured(new SecuredModel("secured")); LinkedList ifs = new LinkedList(); ifs.add(new IfModel("test", "foo")); parent.setIfs(ifs); child.merge(parent); assertNotNull(child.getSecured()); assertNotNull("test", ((IfModel) child.getIfs().get(0)).getTest()); } } ././@LongLink0000000000000000000000000000020600000000000011563 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/test/java/org/springframework/webflow/engine/model/builder/libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/test/java/org/springframew0000755000000000000000000000000011360615632030002 5ustar ././@LongLink0000000000000000000000000000021200000000000011560 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/test/java/org/springframework/webflow/engine/model/builder/xml/libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/test/java/org/springframew0000755000000000000000000000000011360615644030005 5ustar ././@LongLink0000000000000000000000000000024500000000000011566 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/test/java/org/springframework/webflow/engine/model/builder/xml/flow-viewstate-redirect.xmllibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/test/java/org/springframew0000644000000000000000000000047111360615642030007 0ustar ././@LongLink0000000000000000000000000000024200000000000011563 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/test/java/org/springframework/webflow/engine/model/builder/xml/flow-viewstate-popup.xmllibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/test/java/org/springframew0000644000000000000000000000046711360615642030014 0ustar ././@LongLink0000000000000000000000000000023000000000000011560 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/test/java/org/springframework/webflow/engine/model/builder/xml/flow-empty.xmllibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/test/java/org/springframew0000644000000000000000000000041711360615632030006 0ustar ././@LongLink0000000000000000000000000000024000000000000011561 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/test/java/org/springframework/webflow/engine/model/builder/xml/flow-secured-state.xmllibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/test/java/org/springframew0000644000000000000000000000053111360615640030002 0ustar ././@LongLink0000000000000000000000000000025100000000000011563 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/test/java/org/springframework/webflow/engine/model/builder/xml/flow-action-evaluate-action.xmllibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/test/java/org/springframew0000644000000000000000000000107111360615632030003 0ustar ././@LongLink0000000000000000000000000000024500000000000011566 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/test/java/org/springframework/webflow/engine/model/builder/xml/flow-secured-transition.xmllibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/test/java/org/springframew0000644000000000000000000000064411360615632030010 0ustar ././@LongLink0000000000000000000000000000024700000000000011570 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/test/java/org/springframework/webflow/engine/model/builder/xml/flow-action-evaluate-bean.xmllibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/test/java/org/springframew0000644000000000000000000000056411360615632030011 0ustar ././@LongLink0000000000000000000000000000022600000000000011565 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/test/java/org/springframework/webflow/engine/model/builder/xml/flow-var.xmllibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/test/java/org/springframew0000644000000000000000000000067311360615634030014 0ustar ././@LongLink0000000000000000000000000000024100000000000011562 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/test/java/org/springframework/webflow/engine/model/builder/xml/flow-viewstate-view.xmllibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/test/java/org/springframew0000644000000000000000000000047611360615634030015 0ustar ././@LongLink0000000000000000000000000000023600000000000011566 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/test/java/org/springframework/webflow/engine/model/builder/xml/flow-inputoutput.xmllibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/test/java/org/springframew0000644000000000000000000000161411360615634030010 0ustar ././@LongLink0000000000000000000000000000024000000000000011561 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/test/java/org/springframework/webflow/engine/model/builder/xml/flow-viewstate-var.xmllibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/test/java/org/springframew0000644000000000000000000000057011360615636030012 0ustar ././@LongLink0000000000000000000000000000025500000000000011567 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/test/java/org/springframework/webflow/engine/model/builder/xml/flow-viewstate-externalredirect.xmllibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/test/java/org/springframew0000644000000000000000000000057111360615632030007 0ustar ././@LongLink0000000000000000000000000000026300000000000011566 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/test/java/org/springframework/webflow/engine/model/builder/xml/flow-formaction-validatormethod-beans.xmllibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/test/java/org/springframew0000644000000000000000000000113011360615632027777 0ustar ././@LongLink0000000000000000000000000000025100000000000011563 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/test/java/org/springframework/webflow/engine/model/builder/xml/flow-viewstate-flowredirect.xmllibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/test/java/org/springframew0000644000000000000000000000053411360615636030012 0ustar ././@LongLink0000000000000000000000000000024400000000000011565 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/test/java/org/springframework/webflow/engine/model/builder/xml/flow-inheritance-child.xmllibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/test/java/org/springframew0000644000000000000000000000052411360615636030011 0ustar ././@LongLink0000000000000000000000000000025200000000000011564 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/test/java/org/springframework/webflow/engine/model/builder/xml/flow-inheritance-state-child.xmllibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/test/java/org/springframew0000644000000000000000000000050011360615642030000 0ustar ././@LongLink0000000000000000000000000000027200000000000011566 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/test/java/org/springframework/webflow/engine/model/builder/xml/flow-inheritance-state-invalid-parent-syntax.xmllibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/test/java/org/springframew0000644000000000000000000000047211360615642030010 0ustar ././@LongLink0000000000000000000000000000024300000000000011564 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/test/java/org/springframework/webflow/engine/model/builder/xml/flow-custom-attribute.xmllibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/test/java/org/springframew0000644000000000000000000000060311360615640030002 0ustar ././@LongLink0000000000000000000000000000024500000000000011566 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/test/java/org/springframework/webflow/engine/model/builder/xml/flow-persistencecontext.xmllibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/test/java/org/springframew0000644000000000000000000000050111360615644030003 0ustar ././@LongLink0000000000000000000000000000024700000000000011570 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/test/java/org/springframework/webflow/engine/model/builder/xml/flow-startstate-attribute.xmllibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/test/java/org/springframew0000644000000000000000000000052011360615644030004 0ustar ././@LongLink0000000000000000000000000000024700000000000011570 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/test/java/org/springframework/webflow/engine/model/builder/xml/XmlFlowModelBuilderTests.javalibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/test/java/org/springframew0000644000000000000000000003730311360615640030011 0ustar package org.springframework.webflow.engine.model.builder.xml; import junit.framework.TestCase; import org.springframework.beans.factory.support.StaticListableBeanFactory; import org.springframework.core.io.ClassPathResource; import org.springframework.validation.BindingResult; import org.springframework.webflow.action.FormAction; import org.springframework.webflow.action.FormActionTests.TestBeanValidator; import org.springframework.webflow.definition.StateDefinition; import org.springframework.webflow.engine.Flow; import org.springframework.webflow.engine.builder.FlowAssembler; import org.springframework.webflow.engine.builder.model.FlowModelFlowBuilder; import org.springframework.webflow.engine.impl.FlowExecutionImplFactory; import org.springframework.webflow.engine.model.AbstractStateModel; import org.springframework.webflow.engine.model.AttributeModel; import org.springframework.webflow.engine.model.BindingModel; import org.springframework.webflow.engine.model.ExceptionHandlerModel; import org.springframework.webflow.engine.model.FlowModel; import org.springframework.webflow.engine.model.SecuredModel; import org.springframework.webflow.engine.model.TransitionModel; import org.springframework.webflow.engine.model.VarModel; import org.springframework.webflow.engine.model.ViewStateModel; import org.springframework.webflow.engine.model.builder.DefaultFlowModelHolder; import org.springframework.webflow.engine.model.builder.FlowModelBuilder; import org.springframework.webflow.engine.model.builder.FlowModelBuilderException; import org.springframework.webflow.engine.model.registry.FlowModelRegistry; import org.springframework.webflow.engine.model.registry.FlowModelRegistryImpl; import org.springframework.webflow.execution.FlowExecution; import org.springframework.webflow.execution.FlowExecutionListenerAdapter; import org.springframework.webflow.execution.RequestContext; import org.springframework.webflow.execution.View; import org.springframework.webflow.execution.factory.StaticFlowExecutionListenerLoader; import org.springframework.webflow.test.MockExternalContext; import org.springframework.webflow.test.MockFlowBuilderContext; public class XmlFlowModelBuilderTests extends TestCase { private FlowModelRegistry registry; protected void setUp() { StaticListableBeanFactory beanFactory = new StaticListableBeanFactory(); beanFactory.addBean("bean", new Object()); registry = new FlowModelRegistryImpl(); } public void testBuildFlowWithEndState() { ClassPathResource resource = new ClassPathResource("flow-endstate.xml", getClass()); FlowModelBuilder builder = new XmlFlowModelBuilder(resource, registry); builder.init(); builder.build(); FlowModel flow = builder.getFlowModel(); assertNull(flow.getStartStateId()); assertEquals("end", ((AbstractStateModel) flow.getStates().get(0)).getId()); } public void testBuildFlowWithDefaultStartState() { ClassPathResource resource = new ClassPathResource("flow-startstate-default.xml", getClass()); FlowModelBuilder builder = new XmlFlowModelBuilder(resource, registry); builder.init(); builder.build(); FlowModel flow = builder.getFlowModel(); assertNull(flow.getStartStateId()); assertEquals("end", ((AbstractStateModel) flow.getStates().get(0)).getId()); } public void testBuildFlowWithStartStateAttribute() { ClassPathResource resource = new ClassPathResource("flow-startstate-attribute.xml", getClass()); FlowModelBuilder builder = new XmlFlowModelBuilder(resource, registry); builder.init(); builder.build(); FlowModel flow = builder.getFlowModel(); assertEquals("end", flow.getStartStateId()); } public void testCustomFlowAttribute() { ClassPathResource resource = new ClassPathResource("flow-custom-attribute.xml", getClass()); FlowModelBuilder builder = new XmlFlowModelBuilder(resource, registry); builder.init(); builder.build(); FlowModel flow = builder.getFlowModel(); assertEquals("bar", ((AttributeModel) flow.getAttributes().get(0)).getValue()); assertEquals("number", ((AttributeModel) flow.getAttributes().get(1)).getName()); } public void testPersistenceContextFlow() { ClassPathResource resource = new ClassPathResource("flow-persistencecontext.xml", getClass()); FlowModelBuilder builder = new XmlFlowModelBuilder(resource, registry); builder.init(); builder.build(); FlowModel flow = builder.getFlowModel(); assertNotNull(flow.getPersistenceContext()); } public void testFlowSecured() { ClassPathResource resource = new ClassPathResource("flow-secured.xml", getClass()); FlowModelBuilder builder = new XmlFlowModelBuilder(resource, registry); builder.init(); builder.build(); FlowModel flow = builder.getFlowModel(); SecuredModel secured = flow.getSecured(); assertNotNull(secured); assertEquals("ROLE_USER", secured.getAttributes()); } public void testFlowSecuredState() { ClassPathResource resource = new ClassPathResource("flow-secured-state.xml", getClass()); FlowModelBuilder builder = new XmlFlowModelBuilder(resource, registry); builder.init(); builder.build(); FlowModel flow = builder.getFlowModel(); SecuredModel secured = ((AbstractStateModel) flow.getStates().get(0)).getSecured(); assertNotNull(secured); assertEquals("ROLE_USER", secured.getAttributes()); } public void testFlowSecuredTransition() { ClassPathResource resource = new ClassPathResource("flow-secured-transition.xml", getClass()); FlowModelBuilder builder = new XmlFlowModelBuilder(resource, registry); builder.init(); builder.build(); FlowModel flow = builder.getFlowModel(); SecuredModel secured = ((TransitionModel) flow.getGlobalTransitions().get(0)).getSecured(); assertNotNull(secured); assertEquals("ROLE_USER", secured.getAttributes()); } public void testFlowVariable() { ClassPathResource resource = new ClassPathResource("flow-var.xml", getClass()); FlowModelBuilder builder = new XmlFlowModelBuilder(resource, registry); builder.init(); builder.build(); FlowModel flow = builder.getFlowModel(); assertEquals("flow-foo", ((VarModel) flow.getVars().get(0)).getName()); assertEquals("conversation-foo", ((VarModel) flow.getVars().get(1)).getName()); } public void testViewStateVariable() { ClassPathResource resource = new ClassPathResource("flow-viewstate-var.xml", getClass()); FlowModelBuilder builder = new XmlFlowModelBuilder(resource, registry); builder.init(); builder.build(); FlowModel flow = builder.getFlowModel(); assertEquals("foo", ((VarModel) ((ViewStateModel) flow.getStates().get(0)).getVars().get(0)).getName()); } public void testViewStateModelBinding() { ClassPathResource resource = new ClassPathResource("flow-viewstate-model-binding.xml", getClass()); FlowModelBuilder builder = new XmlFlowModelBuilder(resource, registry); builder.init(); builder.build(); FlowModel flow = builder.getFlowModel(); ViewStateModel model = (ViewStateModel) flow.getStates().get(0); assertEquals("formObject", model.getModel()); assertEquals("objectProperty", ((BindingModel) model.getBinder().getBindings().get(0)).getProperty()); assertEquals("customConverter", ((BindingModel) model.getBinder().getBindings().get(0)).getConverter()); } public void testViewStateRedirect() { ClassPathResource resource = new ClassPathResource("flow-viewstate-redirect.xml", getClass()); FlowModelBuilder builder = new XmlFlowModelBuilder(resource, registry); builder.init(); builder.build(); FlowModel flow = builder.getFlowModel(); assertEquals("true", ((ViewStateModel) flow.getStates().get(0)).getRedirect()); } public void testViewStatePopup() { ClassPathResource resource = new ClassPathResource("flow-viewstate-popup.xml", getClass()); FlowModelBuilder builder = new XmlFlowModelBuilder(resource, registry); builder.init(); builder.build(); FlowModel flow = builder.getFlowModel(); assertEquals("true", ((ViewStateModel) flow.getStates().get(0)).getPopup()); } public void testMerge() { ClassPathResource resourceChild = new ClassPathResource("flow-inheritance-child.xml", getClass()); ClassPathResource resourceParent = new ClassPathResource("flow-inheritance-parent.xml", getClass()); registry.registerFlowModel("child", new DefaultFlowModelHolder(new XmlFlowModelBuilder(resourceChild, registry))); registry.registerFlowModel("parent", new DefaultFlowModelHolder(new XmlFlowModelBuilder(resourceParent, registry))); FlowModel flow = registry.getFlowModel("child"); assertEquals(1, flow.getGlobalTransitions().size()); assertEquals(2, flow.getStates().size()); assertEquals("view", ((AbstractStateModel) flow.getStates().get(0)).getId()); } public void testMergeParentNotFound() { ClassPathResource resourceChild = new ClassPathResource("flow-inheritance-child.xml", getClass()); ClassPathResource resourceParent = new ClassPathResource("flow-inheritance-parent.xml", getClass()); registry.registerFlowModel("child", new DefaultFlowModelHolder(new XmlFlowModelBuilder(resourceChild, registry))); registry.registerFlowModel("parent-id-not-matching", new DefaultFlowModelHolder(new XmlFlowModelBuilder( resourceParent, registry))); try { registry.getFlowModel("child"); fail("A FlowModelBuilderException was expected"); } catch (FlowModelBuilderException e) { // we want this } } public void testEvaluateAction() { ClassPathResource resource = new ClassPathResource("flow-action-evaluate-action.xml", getClass()); FlowModelBuilder builder = new XmlFlowModelBuilder(resource, registry); builder.init(); builder.build(); FlowModel flow = builder.getFlowModel(); assertEquals(4, flow.getOnStartActions().size()); } public void testStateMerge() { ClassPathResource resourceChild = new ClassPathResource("flow-inheritance-state-child.xml", getClass()); ClassPathResource resourceParent = new ClassPathResource("flow-inheritance-state-parent.xml", getClass()); registry.registerFlowModel("child", new DefaultFlowModelHolder(new XmlFlowModelBuilder(resourceChild, registry))); registry.registerFlowModel("parent", new DefaultFlowModelHolder(new XmlFlowModelBuilder(resourceParent, registry))); FlowModel flow = registry.getFlowModel("child"); assertEquals(1, flow.getStates().size()); assertEquals("otherview", ((ViewStateModel) flow.getStates().get(0)).getView()); } public void testStateMergeInvalidParentSyntax() { ClassPathResource resourceChild = new ClassPathResource("flow-inheritance-state-invalid-parent-syntax.xml", getClass()); ClassPathResource resourceParent = new ClassPathResource("flow-inheritance-state-parent.xml", getClass()); registry.registerFlowModel("child", new DefaultFlowModelHolder(new XmlFlowModelBuilder(resourceChild, registry))); registry.registerFlowModel("parent", new DefaultFlowModelHolder(new XmlFlowModelBuilder(resourceParent, registry))); try { registry.getFlowModel("child"); fail("A FlowModelConstructionException was expected"); } catch (FlowModelBuilderException e) { // we want this } } public void testStateMergeParentFlowNotFound() { ClassPathResource resourceChild = new ClassPathResource("flow-inheritance-state-child.xml", getClass()); ClassPathResource resourceParent = new ClassPathResource("flow-inheritance-state-parent.xml", getClass()); registry.registerFlowModel("child", new DefaultFlowModelHolder(new XmlFlowModelBuilder(resourceChild, registry))); registry.registerFlowModel("parent-id-not-matching", new DefaultFlowModelHolder(new XmlFlowModelBuilder( resourceParent, registry))); try { registry.getFlowModel("child"); fail("A FlowModelBuilderException was expected"); } catch (FlowModelBuilderException e) { // we want this } } public void testStateMergeParentStateNotFound() { ClassPathResource resourceChild = new ClassPathResource("flow-inheritance-state-child.xml", getClass()); ClassPathResource resourceParent = new ClassPathResource("flow-empty.xml", getClass()); registry.registerFlowModel("child", new DefaultFlowModelHolder(new XmlFlowModelBuilder(resourceChild, registry))); registry.registerFlowModel("parent", new DefaultFlowModelHolder(new XmlFlowModelBuilder(resourceParent, registry))); try { registry.getFlowModel("child"); fail("A FlowModelBuilderException was expected"); } catch (FlowModelBuilderException e) { // we want this } } public void testStateMergeParentStateIncompatable() { ClassPathResource resourceChild = new ClassPathResource("flow-inheritance-state-child-alt.xml", getClass()); ClassPathResource resourceParent = new ClassPathResource("flow-inheritance-state-parent.xml", getClass()); registry.registerFlowModel("child", new DefaultFlowModelHolder(new XmlFlowModelBuilder(resourceChild, registry))); registry.registerFlowModel("parent", new DefaultFlowModelHolder(new XmlFlowModelBuilder(resourceParent, registry))); try { registry.getFlowModel("child"); fail("A FlowModelBuilderException was expected"); } catch (FlowModelBuilderException e) { // we want this } } public void testParseFlowExceptionHandler() { ClassPathResource res = new ClassPathResource("flow-exception-handler.xml", getClass()); XmlFlowModelBuilder builder = new XmlFlowModelBuilder(res); DefaultFlowModelHolder holder = new DefaultFlowModelHolder(builder); FlowModel model = holder.getFlowModel(); assertEquals("foo1", ((ExceptionHandlerModel) model.getExceptionHandlers().get(0)).getBean()); assertEquals("foo2", ((ExceptionHandlerModel) model.getStateById("state1").getExceptionHandlers().get(0)) .getBean()); assertEquals("foo3", ((ExceptionHandlerModel) model.getStateById("state2").getExceptionHandlers().get(0)) .getBean()); assertEquals("foo4", ((ExceptionHandlerModel) model.getStateById("state3").getExceptionHandlers().get(0)) .getBean()); assertEquals("foo5", ((ExceptionHandlerModel) model.getStateById("state4").getExceptionHandlers().get(0)) .getBean()); assertEquals("foo6", ((ExceptionHandlerModel) model.getStateById("state5").getExceptionHandlers().get(0)) .getBean()); } public void testFormActionValidatorMethod() { ClassPathResource resource = new ClassPathResource("flow-formaction-validatormethod.xml", getClass()); XmlFlowModelBuilder builder = new XmlFlowModelBuilder(resource, registry); DefaultFlowModelHolder holder = new DefaultFlowModelHolder(builder); FlowModelFlowBuilder flowBuilder = new FlowModelFlowBuilder(holder); FlowAssembler assembler = new FlowAssembler(flowBuilder, new MockFlowBuilderContext("flow")); Flow flow = assembler.assembleFlow(); FlowExecutionImplFactory factory = new FlowExecutionImplFactory(); factory.setExecutionListenerLoader(new StaticFlowExecutionListenerLoader(new FlowExecutionListenerAdapter() { public void viewRendering(RequestContext context, View view, StateDefinition viewState) { if (context.getCurrentEvent() != null && context.getCurrentEvent().getId().equals("submit")) { BindingResult result = (BindingResult) context.getFlashScope().get( "org.springframework.validation.BindingResult.formBean"); assertEquals(1, result.getErrorCount()); } } public void viewRendered(RequestContext context, View view, StateDefinition viewState) { if (context.getCurrentEvent() != null && context.getCurrentEvent().getId().equals("submit")) { BindingResult result = (BindingResult) context.getFlashScope().get( "org.springframework.validation.BindingResult.formBean"); assertNull(result); } } })); FlowExecution execution = factory.createFlowExecution(flow); FormAction action = (FormAction) flow.getApplicationContext().getBean("formAction"); assertFalse(((TestBeanValidator) action.getValidator()).getInvoked()); execution.start(null, new MockExternalContext()); MockExternalContext context = new MockExternalContext(); context.setEventId("submit"); execution.resume(context); assertTrue(((TestBeanValidator) action.getValidator()).getInvoked()); } } ././@LongLink0000000000000000000000000000025200000000000011564 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/test/java/org/springframework/webflow/engine/model/builder/xml/flow-viewstate-model-binding.xmllibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/test/java/org/springframew0000644000000000000000000000066711360615632030015 0ustar ././@LongLink0000000000000000000000000000023200000000000011562 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/test/java/org/springframework/webflow/engine/model/builder/xml/flow-secured.xmllibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/test/java/org/springframew0000644000000000000000000000051411360615634030006 0ustar ././@LongLink0000000000000000000000000000025600000000000011570 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/test/java/org/springframework/webflow/engine/model/builder/xml/flow-inheritance-state-child-alt.xmllibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/test/java/org/springframew0000644000000000000000000000047411360615632030011 0ustar ././@LongLink0000000000000000000000000000023300000000000011563 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/test/java/org/springframework/webflow/engine/model/builder/xml/flow-endstate.xmllibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/test/java/org/springframew0000644000000000000000000000044711360615642030012 0ustar ././@LongLink0000000000000000000000000000024500000000000011566 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/test/java/org/springframework/webflow/engine/model/builder/xml/flow-startstate-default.xmllibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/test/java/org/springframew0000644000000000000000000000044711360615634030013 0ustar ././@LongLink0000000000000000000000000000024400000000000011565 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/test/java/org/springframework/webflow/engine/model/builder/xml/flow-exception-handler.xmllibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/test/java/org/springframew0000644000000000000000000000130511360615636030007 0ustar ././@LongLink0000000000000000000000000000025500000000000011567 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/test/java/org/springframework/webflow/engine/model/builder/xml/flow-formaction-validatormethod.xmllibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/test/java/org/springframew0000644000000000000000000000140311360615644030005 0ustar ././@LongLink0000000000000000000000000000024500000000000011566 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/test/java/org/springframework/webflow/engine/model/builder/xml/flow-inheritance-parent.xmllibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/test/java/org/springframew0000644000000000000000000000064411360615632030010 0ustar ././@LongLink0000000000000000000000000000025300000000000011565 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/test/java/org/springframework/webflow/engine/model/builder/xml/flow-inheritance-state-parent.xmllibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/test/java/org/springframew0000644000000000000000000000054511360615636030014 0ustar ././@LongLink0000000000000000000000000000023100000000000011561 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/test/java/org/springframework/webflow/engine/model/SubflowStateModelTests.javalibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/test/java/org/springframew0000644000000000000000000000320011360615640027776 0ustar /* * Copyright 2004-2008 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.springframework.webflow.engine.model; import junit.framework.TestCase; /** * Unit tests for {@link SubflowStateModel}. */ public class SubflowStateModelTests extends TestCase { public void testMergeable() { SubflowStateModel child = new SubflowStateModel("child", "flow"); assertTrue(child.isMergeableWith(child)); } public void testNotMergeable() { SubflowStateModel child = new SubflowStateModel("child", "flow"); SubflowStateModel parent = new SubflowStateModel("parent", "flow"); assertFalse(child.isMergeableWith(parent)); } public void testNotMergeableWithNull() { SubflowStateModel child = new SubflowStateModel("child", "flow"); assertFalse(child.isMergeableWith(null)); } public void testMerge() { SubflowStateModel child = new SubflowStateModel("child", null); SubflowStateModel parent = new SubflowStateModel("child", "flow"); parent.setSecured(new SecuredModel("secured")); child.merge(parent); assertEquals("flow", child.getSubflow()); assertNotNull(child.getSecured()); } } ././@LongLink0000000000000000000000000000022600000000000011565 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/test/java/org/springframework/webflow/engine/model/AttributeModelTests.javalibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/test/java/org/springframew0000644000000000000000000000305411360615636030012 0ustar /* * Copyright 2004-2008 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.springframework.webflow.engine.model; import junit.framework.TestCase; /** * Unit tests for {@link AttributeModel}. */ public class AttributeModelTests extends TestCase { public void testMergeable() { AttributeModel child = new AttributeModel("child", "value"); assertTrue(child.isMergeableWith(child)); } public void testNotMergeable() { AttributeModel child = new AttributeModel("child", "value"); AttributeModel parent = new AttributeModel("parent", "value"); assertFalse(child.isMergeableWith(parent)); } public void testNotMergeableWithNull() { AttributeModel child = new AttributeModel("child", "value"); assertFalse(child.isMergeableWith(null)); } public void testMerge() { AttributeModel child = new AttributeModel("child", "childvalue"); AttributeModel parent = new AttributeModel("child", "childvalue"); parent.setType("string"); child.merge(parent); assertEquals("string", child.getType()); } } ././@LongLink0000000000000000000000000000022300000000000011562 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/test/java/org/springframework/webflow/engine/model/RenderModelTests.javalibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/test/java/org/springframew0000644000000000000000000000165011360615644030011 0ustar /* * Copyright 2004-2008 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.springframework.webflow.engine.model; import junit.framework.TestCase; /** * Unit tests for {@link RenderModel}. */ public class RenderModelTests extends TestCase { public void testNotMergeable() { RenderModel child = new RenderModel("child"); assertFalse(child.isMergeableWith(child)); } } ././@LongLink0000000000000000000000000000023700000000000011567 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/test/java/org/springframework/webflow/engine/model/PersistenceContextModelTests.javalibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/test/java/org/springframew0000644000000000000000000000172111360615634030007 0ustar /* * Copyright 2004-2008 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.springframework.webflow.engine.model; import junit.framework.TestCase; /** * Unit tests for {@link PersistenceContextModel}. */ public class PersistenceContextModelTests extends TestCase { public void testNotMergeable() { PersistenceContextModel child = new PersistenceContextModel(); assertFalse(child.isMergeableWith(child)); } } ././@LongLink0000000000000000000000000000023000000000000011560 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/test/java/org/springframework/webflow/engine/model/ActionStateModelTests.javalibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/test/java/org/springframew0000644000000000000000000000344311360615640030007 0ustar /* * Copyright 2004-2008 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.springframework.webflow.engine.model; import java.util.LinkedList; import junit.framework.TestCase; /** * Unit tests for {@link ActionStateModel}. */ public class ActionStateModelTests extends TestCase { public void testMergeable() { ActionStateModel child = new ActionStateModel("child"); assertTrue(child.isMergeableWith(child)); } public void testNotMergeable() { ActionStateModel child = new ActionStateModel("child"); ActionStateModel parent = new ActionStateModel("parent"); assertFalse(child.isMergeableWith(parent)); } public void testNotMergeableWithNull() { ActionStateModel child = new ActionStateModel("child"); assertFalse(child.isMergeableWith(null)); } public void testMerge() { ActionStateModel child = new ActionStateModel("child"); ActionStateModel parent = new ActionStateModel("parent"); LinkedList actions = new LinkedList(); EvaluateModel eval = new EvaluateModel("foo.bar"); actions.add(eval); parent.setActions(actions); parent.setSecured(new SecuredModel("secured")); child.merge(parent); assertNotNull(child.getSecured()); assertEquals("foo.bar", ((EvaluateModel) child.getActions().get(0)).getExpression()); } } ././@LongLink0000000000000000000000000000022500000000000011564 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/test/java/org/springframework/webflow/engine/model/EndStateModelTests.javalibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/test/java/org/springframew0000644000000000000000000000333111360615632030004 0ustar /* * Copyright 2004-2008 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.springframework.webflow.engine.model; import java.util.LinkedList; import junit.framework.TestCase; /** * Unit tests for {@link EndStateModel}. */ public class EndStateModelTests extends TestCase { public void testMergeable() { EndStateModel child = new EndStateModel("child"); assertTrue(child.isMergeableWith(child)); } public void testNotMergeable() { EndStateModel child = new EndStateModel("child"); EndStateModel parent = new EndStateModel("parent"); assertFalse(child.isMergeableWith(parent)); } public void testNotMergeableWithNull() { EndStateModel child = new EndStateModel("child"); assertFalse(child.isMergeableWith(null)); } public void testMerge() { EndStateModel child = new EndStateModel("child"); EndStateModel parent = new EndStateModel("child"); parent.setCommit("true"); parent.setView("view"); LinkedList outputs = new LinkedList(); outputs.add(new OutputModel("foo", "bar")); parent.setOutputs(outputs); child.merge(parent); assertEquals("true", child.getCommit()); assertEquals("bar", ((OutputModel) child.getOutputs().get(0)).getValue()); } } ././@LongLink0000000000000000000000000000023500000000000011565 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/test/java/org/springframework/webflow/engine/model/ExceptionHandlerModelTests.javalibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/test/java/org/springframew0000644000000000000000000000172011360615632030004 0ustar /* * Copyright 2004-2008 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.springframework.webflow.engine.model; import junit.framework.TestCase; /** * Unit tests for {@link ExceptionHandlerModel}. */ public class ExceptionHandlerModelTests extends TestCase { public void testNotMergeable() { ExceptionHandlerModel child = new ExceptionHandlerModel("child"); assertFalse(child.isMergeableWith(child)); } } ././@LongLink0000000000000000000000000000022400000000000011563 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/test/java/org/springframework/webflow/engine/model/SecuredModelTests.javalibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/test/java/org/springframew0000644000000000000000000000271411360615634030012 0ustar /* * Copyright 2004-2008 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.springframework.webflow.engine.model; import junit.framework.TestCase; /** * Unit tests for {@link SecuredModel}. */ public class SecuredModelTests extends TestCase { public void testMergeable() { SecuredModel child = new SecuredModel("child"); assertTrue(child.isMergeableWith(child)); } public void testNotMergeable() { SecuredModel child = new SecuredModel("child"); SecuredModel parent = new SecuredModel("parent"); assertFalse(child.isMergeableWith(parent)); } public void testNotMergeableWithNull() { SecuredModel child = new SecuredModel("child"); assertFalse(child.isMergeableWith(null)); } public void testMerge() { SecuredModel child = new SecuredModel("child"); SecuredModel parent = new SecuredModel("child"); parent.setMatch("all"); child.merge(parent); assertEquals("all", child.getMatch()); } } ././@LongLink0000000000000000000000000000021700000000000011565 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/test/java/org/springframework/webflow/engine/model/IfModelTests.javalibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/test/java/org/springframew0000644000000000000000000000274211360615632030011 0ustar /* * Copyright 2004-2008 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.springframework.webflow.engine.model; import junit.framework.TestCase; /** * Unit tests for {@link IfModel}. */ public class IfModelTests extends TestCase { public void testMergeable() { IfModel child = new IfModel("child", "childthen"); assertTrue(child.isMergeableWith(child)); } public void testNotMergeable() { IfModel child = new IfModel("child", "childthen"); IfModel parent = new IfModel("parent", "parentthen"); assertFalse(child.isMergeableWith(parent)); } public void testNotMergeableWithNull() { IfModel child = new IfModel("child", "childthen"); assertFalse(child.isMergeableWith(null)); } public void testMerge() { IfModel child = new IfModel("child", "childthen"); IfModel parent = new IfModel("child", "parentthen"); parent.setElse("parentelse"); child.merge(parent); assertEquals("parentelse", child.getElse()); } } ././@LongLink0000000000000000000000000000020700000000000011564 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/test/java/org/springframework/webflow/engine/model/registry/libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/test/java/org/springframew0000755000000000000000000000000011360615640030001 5ustar ././@LongLink0000000000000000000000000000024700000000000011570 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/test/java/org/springframework/webflow/engine/model/registry/DefaultFlowModelHolderTests.javalibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/test/java/org/springframew0000644000000000000000000000403311360615636030010 0ustar package org.springframework.webflow.engine.model.registry; import java.util.Collections; import java.util.LinkedList; import junit.framework.TestCase; import org.springframework.core.io.Resource; import org.springframework.webflow.engine.model.AbstractStateModel; import org.springframework.webflow.engine.model.EndStateModel; import org.springframework.webflow.engine.model.FlowModel; import org.springframework.webflow.engine.model.builder.DefaultFlowModelHolder; import org.springframework.webflow.engine.model.builder.FlowModelBuilder; import org.springframework.webflow.engine.model.builder.FlowModelBuilderException; public class DefaultFlowModelHolderTests extends TestCase { private DefaultFlowModelHolder holder; private FlowModelBuilder builder; protected void setUp() { builder = new SimpleFlowBuilder(); holder = new DefaultFlowModelHolder(builder); } public void testGetFlowDefinition() { FlowModel flow = holder.getFlowModel(); assertNull(flow.getStartStateId()); assertEquals("end", ((AbstractStateModel) flow.getStates().get(0)).getId()); } public void testGetFlowDefinitionWithChangesRefreshed() { FlowModel flow = holder.getFlowModel(); holder.refresh(); flow = holder.getFlowModel(); assertNull(flow.getStartStateId()); assertEquals("end", ((AbstractStateModel) flow.getStates().get(0)).getId()); } public class SimpleFlowBuilder implements FlowModelBuilder { public FlowModel getFlowModel() throws FlowModelBuilderException { FlowModel flow = new FlowModel(); flow.setStates(new LinkedList(Collections.singletonList(new EndStateModel("end")))); return flow; } public void build() throws FlowModelBuilderException { // no-op } public void mergeParent() throws FlowModelBuilderException { // no-op } public void dispose() throws FlowModelBuilderException { // no-op } public void init() throws FlowModelBuilderException { // no-op } public Resource getFlowModelResource() { return null; } public boolean hasFlowModelResourceChanged() { return false; } } } ././@LongLink0000000000000000000000000000024600000000000011567 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/test/java/org/springframework/webflow/engine/model/registry/FlowModelRegistryImplTests.javalibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/test/java/org/springframew0000644000000000000000000000420711360615636030013 0ustar package org.springframework.webflow.engine.model.registry; import junit.framework.TestCase; import org.springframework.core.io.Resource; import org.springframework.webflow.engine.model.FlowModel; public class FlowModelRegistryImplTests extends TestCase { private FlowModelRegistryImpl registry = new FlowModelRegistryImpl(); private FlowModel fooFlow; private FlowModel barFlow; protected void setUp() { fooFlow = new FlowModel(); barFlow = new FlowModel(); } public void testNoSuchFlowDefinition() { try { registry.getFlowModel("bogus"); fail("Should've bombed with NoSuchFlow"); } catch (NoSuchFlowModelException e) { } } public void testRegisterFlow() { registry.registerFlowModel("foo", new StaticFlowModelHolder(fooFlow)); assertEquals(fooFlow, registry.getFlowModel("foo")); } public void testRegisterFlowSameIds() { registry.registerFlowModel("foo", new StaticFlowModelHolder(fooFlow)); FlowModel newFlow = new FlowModel(); registry.registerFlowModel("foo", new StaticFlowModelHolder(newFlow)); assertSame(newFlow, registry.getFlowModel("foo")); } public void testRegisterMultipleFlows() { registry.registerFlowModel("foo", new StaticFlowModelHolder(fooFlow)); registry.registerFlowModel("bar", new StaticFlowModelHolder(barFlow)); assertEquals(fooFlow, registry.getFlowModel("foo")); assertEquals(barFlow, registry.getFlowModel("bar")); } public void testParentHierarchy() { testRegisterMultipleFlows(); FlowModelRegistryImpl child = new FlowModelRegistryImpl(); child.setParent(registry); FlowModel fooFlow = new FlowModel(); child.registerFlowModel("foo", new StaticFlowModelHolder(fooFlow)); assertSame(fooFlow, child.getFlowModel("foo")); assertEquals(barFlow, child.getFlowModel("bar")); } private static class StaticFlowModelHolder implements FlowModelHolder { private FlowModel model; public StaticFlowModelHolder(FlowModel model) { this.model = model; } public FlowModel getFlowModel() { return model; } public Resource getFlowModelResource() { return null; } public boolean hasFlowModelChanged() { return false; } public void refresh() { } } } ././@LongLink0000000000000000000000000000021700000000000011565 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/test/java/org/springframework/webflow/engine/model/registry/file.txtlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/test/java/org/springframew0000644000000000000000000000002111360615640027774 0ustar a changeable file././@LongLink0000000000000000000000000000022700000000000011566 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/test/java/org/springframework/webflow/engine/model/BeanImportModelTests.javalibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/test/java/org/springframew0000644000000000000000000000167011360615632030010 0ustar /* * Copyright 2004-2008 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.springframework.webflow.engine.model; import junit.framework.TestCase; /** * Unit tests for {@link BeanImportModel}. */ public class BeanImportModelTests extends TestCase { public void testNotMergeable() { BeanImportModel child = new BeanImportModel("child"); assertFalse(child.isMergeableWith(child)); } } ././@LongLink0000000000000000000000000000022600000000000011565 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/test/java/org/springframework/webflow/engine/model/ViewStateModelTests.javalibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/test/java/org/springframew0000644000000000000000000000674311360615640030015 0ustar /* * Copyright 2004-2008 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.springframework.webflow.engine.model; import java.util.LinkedList; import junit.framework.TestCase; /** * Unit tests for {@link ViewStateModel}. */ public class ViewStateModelTests extends TestCase { public void testMergeable() { ViewStateModel child = new ViewStateModel("child"); assertTrue(child.isMergeableWith(child)); } public void testNotMergeable() { ViewStateModel child = new ViewStateModel("child"); ViewStateModel parent = new ViewStateModel("parent"); assertFalse(child.isMergeableWith(parent)); } public void testNotMergeableWithNull() { ViewStateModel child = new ViewStateModel("child"); assertFalse(child.isMergeableWith(null)); } public void testMerge() { ViewStateModel child = new ViewStateModel("child"); ViewStateModel parent = new ViewStateModel("parent"); LinkedList attributes = new LinkedList(); attributes.add(new AttributeModel("foo", "bar")); parent.setAttributes(attributes); BinderModel binder = new BinderModel(); LinkedList bindings = new LinkedList(); bindings.add(new BindingModel("foo", "fooConverter", "true")); binder.setBindings(bindings); parent.setBinder(binder); parent.setSecured(new SecuredModel("secured")); parent.setRedirect("true"); parent.setPopup("true"); parent.setModel("fooModel"); parent.setView("fooView"); LinkedList transitions = new LinkedList(); TransitionModel tx = new TransitionModel(); tx.setOn("submit"); tx.setTo("bar"); transitions.add(tx); parent.setTransitions(transitions); EvaluateModel eval = new EvaluateModel("foo.bar"); LinkedList actions = new LinkedList(); actions.add(eval); parent.setOnEntryActions(actions); parent.setOnExitActions(actions); parent.setOnRenderActions(actions); LinkedList vars = new LinkedList(); vars.add(new VarModel("foo", "class")); parent.setVars(vars); LinkedList eh = new LinkedList(); eh.add(new ExceptionHandlerModel("foo")); parent.setExceptionHandlers(eh); child.merge(parent); assertNotNull(child.getSecured()); assertEquals("true", child.getRedirect()); assertEquals("true", child.getPopup()); assertEquals("fooModel", child.getModel()); assertEquals("fooView", child.getView()); assertEquals("bar", ((AttributeModel) child.getAttributes().get(0)).getValue()); assertEquals("foo", ((BindingModel) child.getBinder().getBindings().get(0)).getProperty()); assertEquals("bar", ((TransitionModel) child.getTransitions().get(0)).getTo()); assertEquals("foo.bar", ((EvaluateModel) child.getOnEntryActions().get(0)).getExpression()); assertEquals("foo.bar", ((EvaluateModel) child.getOnExitActions().get(0)).getExpression()); assertEquals("foo.bar", ((EvaluateModel) child.getOnRenderActions().get(0)).getExpression()); assertEquals("foo", ((VarModel) child.getVars().get(0)).getName()); assertEquals("foo", ((ExceptionHandlerModel) child.getExceptionHandlers().get(0)).getBean()); } } ././@LongLink0000000000000000000000000000022000000000000011557 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/test/java/org/springframework/webflow/engine/model/VarModelTests.javalibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/test/java/org/springframew0000644000000000000000000000163711360615634030015 0ustar /* * Copyright 2004-2008 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.springframework.webflow.engine.model; import junit.framework.TestCase; /** * Unit tests for {@link VarModel}. */ public class VarModelTests extends TestCase { public void testMergeable() { VarModel child = new VarModel("name", "value"); assertTrue(child.isMergeableWith(child)); } } ././@LongLink0000000000000000000000000000022000000000000011557 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/test/java/org/springframework/webflow/engine/model/SetModelTests.javalibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/test/java/org/springframew0000644000000000000000000000164411360615632030011 0ustar /* * Copyright 2004-2008 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.springframework.webflow.engine.model; import junit.framework.TestCase; /** * Unit tests for {@link SetModel}. */ public class SetModelTests extends TestCase { public void testNotMergeable() { SetModel child = new SetModel("name", "value"); assertFalse(child.isMergeableWith(child)); } } ././@LongLink0000000000000000000000000000022300000000000011562 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/test/java/org/springframework/webflow/engine/model/OutputModelTests.javalibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/test/java/org/springframew0000644000000000000000000000304011360615634030003 0ustar /* * Copyright 2004-2008 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.springframework.webflow.engine.model; import junit.framework.TestCase; /** * Unit tests for {@link OutputModel}. */ public class OutputModelTests extends TestCase { public void testMergeable() { OutputModel child = new OutputModel("child", "childvalue"); assertTrue(child.isMergeableWith(child)); } public void testNotMergeable() { OutputModel child = new OutputModel("child", "childvalue"); OutputModel parent = new OutputModel("parent", "parentvalue"); assertFalse(child.isMergeableWith(parent)); } public void testNotMergeableWithNull() { OutputModel child = new OutputModel("child", "childvalue"); assertFalse(child.isMergeableWith(null)); } public void testMerge() { OutputModel child = new OutputModel("child", "childvalue"); OutputModel parent = new OutputModel("child", "parentvalue"); parent.setType("parenttype"); child.merge(parent); assertEquals("parenttype", child.getType()); } } ././@LongLink0000000000000000000000000000022200000000000011561 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/test/java/org/springframework/webflow/engine/model/InputModelTests.javalibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/test/java/org/springframew0000644000000000000000000000302211360615632030001 0ustar /* * Copyright 2004-2008 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.springframework.webflow.engine.model; import junit.framework.TestCase; /** * Unit tests for {@link InputModel}. */ public class InputModelTests extends TestCase { public void testMergeable() { InputModel child = new InputModel("child", "childvalue"); assertTrue(child.isMergeableWith(child)); } public void testNotMergeable() { InputModel child = new InputModel("child", "childvalue"); InputModel parent = new InputModel("parent", "parentvalue"); assertFalse(child.isMergeableWith(parent)); } public void testNotMergeableWithNull() { InputModel child = new InputModel("child", "childvalue"); assertFalse(child.isMergeableWith(null)); } public void testMerge() { InputModel child = new InputModel("child", "childvalue"); InputModel parent = new InputModel("child", "parentvalue"); parent.setType("parenttype"); child.merge(parent); assertEquals("parenttype", child.getType()); } } ././@LongLink0000000000000000000000000000022500000000000011564 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/test/java/org/springframework/webflow/engine/model/EvaluateModelTests.javalibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/test/java/org/springframew0000644000000000000000000000165711360615636030021 0ustar /* * Copyright 2004-2008 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.springframework.webflow.engine.model; import junit.framework.TestCase; /** * Unit tests for {@link EvaluateModel}. */ public class EvaluateModelTests extends TestCase { public void testNotMergeable() { EvaluateModel child = new EvaluateModel("name"); assertFalse(child.isMergeableWith(child)); } } ././@LongLink0000000000000000000000000000021600000000000011564 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/test/java/org/springframework/webflow/engine/ViewVariableTests.javalibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/test/java/org/springframew0000644000000000000000000000421011360615644030004 0ustar package org.springframework.webflow.engine; import junit.framework.TestCase; import org.springframework.webflow.execution.RequestContext; import org.springframework.webflow.test.MockRequestControlContext; public class ViewVariableTests extends TestCase { private boolean restoreCalled; public void testCreateVariable() { ViewVariable var = new ViewVariable("foo", new VariableValueFactory() { public Object createInitialValue(RequestContext context) { return "bar"; } public void restoreReferences(Object value, RequestContext context) { } }); Flow flow = new Flow("flow"); ViewState view = new ViewState(flow, "view", new StubViewFactory()); MockRequestControlContext context = new MockRequestControlContext(flow); view.enter(context); var.create(context); assertEquals("bar", context.getViewScope().get("foo")); } public void testDestroyVariable() { ViewVariable var = new ViewVariable("foo", new VariableValueFactory() { public Object createInitialValue(RequestContext context) { return "bar"; } public void restoreReferences(Object value, RequestContext context) { } }); Flow flow = new Flow("flow"); ViewState view = new ViewState(flow, "view", new StubViewFactory()); MockRequestControlContext context = new MockRequestControlContext(flow); view.enter(context); var.create(context); assertEquals("bar", context.getViewScope().get("foo")); var.destroy(context); assertFalse(context.getViewScope().contains("foo")); } public void testRestoreVariable() { ViewVariable var = new ViewVariable("foo", new VariableValueFactory() { public Object createInitialValue(RequestContext context) { return "bar"; } public void restoreReferences(Object value, RequestContext context) { restoreCalled = true; assertEquals("bar", value); } }); Flow flow = new Flow("flow"); ViewState view = new ViewState(flow, "view", new StubViewFactory()); MockRequestControlContext context = new MockRequestControlContext(flow); view.enter(context); var.create(context); var.restore(context); assertEquals("bar", context.getViewScope().get("foo")); assertTrue(restoreCalled); } } ././@LongLink0000000000000000000000000000020700000000000011564 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/test/java/org/springframework/webflow/engine/EventTests.javalibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/test/java/org/springframew0000644000000000000000000000352311360615640030006 0ustar /* * Copyright 2004-2008 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.springframework.webflow.engine; import junit.framework.TestCase; import org.springframework.webflow.core.collection.LocalAttributeMap; import org.springframework.webflow.execution.Event; /** * Tests that each of the Flow state types execute as expected when entered. * * @author Keith Donald */ public class EventTests extends TestCase { public void testNewEvent() { Event event = new Event(this, "id"); assertEquals("id", event.getId()); assertTrue(event.getTimestamp() > 0); assertTrue(event.getAttributes().isEmpty()); } public void testEventNullSource() { try { new Event(null, "id"); fail("null source"); } catch (IllegalArgumentException e) { } } public void testEventNullId() { try { new Event(this, null); fail("null id"); } catch (IllegalArgumentException e) { } } public void testNewEventWithAttributes() { LocalAttributeMap attrs = new LocalAttributeMap(); attrs.put("name", "value"); Event event = new Event(this, "id", attrs); assertTrue(!event.getAttributes().isEmpty()); assertEquals(1, event.getAttributes().size()); } public void testNewEventNullAttributes() { Event event = new Event(this, "id", null); assertTrue(event.getAttributes().isEmpty()); } } ././@LongLink0000000000000000000000000000021400000000000011562 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/test/java/org/springframework/webflow/engine/TransitionTests.javalibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/test/java/org/springframew0000644000000000000000000001312311360615634030006 0ustar /* * Copyright 2004-2008 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.springframework.webflow.engine; import junit.framework.TestCase; import org.springframework.webflow.engine.support.DefaultTargetStateResolver; import org.springframework.webflow.execution.FlowExecutionException; import org.springframework.webflow.execution.RequestContext; import org.springframework.webflow.test.MockRequestControlContext; public class TransitionTests extends TestCase { private boolean exitCalled; public void testExecuteTransitionFromState() { Flow flow = new Flow("flow"); final TransitionableState source = new TransitionableState(flow, "state 1") { public void exit(RequestControlContext context) { exitCalled = true; } protected void doEnter(RequestControlContext context) throws FlowExecutionException { } }; final TransitionableState target = new TransitionableState(flow, "state 2") { protected void doEnter(RequestControlContext context) throws FlowExecutionException { } }; TargetStateResolver targetResolver = new TargetStateResolver() { public State resolveTargetState(Transition transition, State sourceState, RequestContext context) { assertSame(source, sourceState); return target; } }; MockRequestControlContext context = new MockRequestControlContext(flow); context.setCurrentState(source); Transition t = new Transition(targetResolver); boolean stateExited = t.execute(source, context); assertTrue(stateExited); assertTrue(exitCalled); assertSame(target, context.getCurrentState()); } public void testExecuteTransitionWithNullSourceState() { Flow flow = new Flow("flow"); final TransitionableState target = new TransitionableState(flow, "state 2") { protected void doEnter(RequestControlContext context) throws FlowExecutionException { } }; TargetStateResolver targetResolver = new TargetStateResolver() { public State resolveTargetState(Transition transition, State sourceState, RequestContext context) { assertNull(sourceState); return target; } }; MockRequestControlContext context = new MockRequestControlContext(flow); Transition t = new Transition(targetResolver); boolean stateChanged = t.execute(null, context); assertTrue(stateChanged); assertSame(target, context.getCurrentState()); } public void testExecuteTransitionNullTargetState() { Flow flow = new Flow("flow"); final TransitionableState source = new TransitionableState(flow, "state 1") { public void exit(RequestControlContext context) { exitCalled = true; } protected void doEnter(RequestControlContext context) throws FlowExecutionException { } }; TargetStateResolver targetResolver = new TargetStateResolver() { public State resolveTargetState(Transition transition, State sourceState, RequestContext context) { return null; } }; MockRequestControlContext context = new MockRequestControlContext(flow); context.setCurrentState(source); Transition t = new Transition(targetResolver); boolean stateExited = t.execute(source, context); assertFalse(stateExited); assertFalse(exitCalled); assertSame(source, context.getCurrentState()); } public void testExecuteTransitionNullTargetStateResolver() { Flow flow = new Flow("flow"); final TransitionableState source = new TransitionableState(flow, "state 1") { public void exit(RequestControlContext context) { exitCalled = true; } protected void doEnter(RequestControlContext context) throws FlowExecutionException { } }; MockRequestControlContext context = new MockRequestControlContext(flow); context.setCurrentState(source); Transition t = new Transition(); boolean stateExited = t.execute(source, context); assertFalse(stateExited); assertFalse(exitCalled); assertSame(source, context.getCurrentState()); } public void testTransitionExecutionRefused() { Flow flow = new Flow("flow"); final TransitionableState source = new TransitionableState(flow, "state 1") { public void exit(RequestControlContext context) { exitCalled = true; } protected void doEnter(RequestControlContext context) throws FlowExecutionException { } }; final TransitionableState target = new TransitionableState(flow, "state 2") { protected void doEnter(RequestControlContext context) throws FlowExecutionException { } }; TargetStateResolver targetResolver = new TargetStateResolver() { public State resolveTargetState(Transition transition, State sourceState, RequestContext context) { assertSame(source, sourceState); return target; } }; MockRequestControlContext context = new MockRequestControlContext(flow); context.setCurrentState(source); Transition t = new Transition(targetResolver); t.setExecutionCriteria(new TransitionCriteria() { public boolean test(RequestContext context) { return false; } }); boolean stateExited = t.execute(source, context); assertFalse(stateExited); assertFalse(exitCalled); assertSame(source, context.getCurrentState()); } protected TargetStateResolver to(String stateId) { return new DefaultTargetStateResolver(stateId); } }././@LongLink0000000000000000000000000000017100000000000011564 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/test/java/org/springframework/webflow/context/libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/test/java/org/springframew0000755000000000000000000000000011360615634030004 5ustar ././@LongLink0000000000000000000000000000017500000000000011570 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/test/java/org/springframework/webflow/context/web/libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/test/java/org/springframew0000755000000000000000000000000011360615634030004 5ustar ././@LongLink0000000000000000000000000000024400000000000011565 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/test/java/org/springframework/webflow/context/web/HttpSessionMapBindingListenerTests.javalibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/test/java/org/springframew0000644000000000000000000000516111360615634030011 0ustar /* * Copyright 2004-2008 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.springframework.webflow.context.web; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpSession; import junit.framework.TestCase; import org.springframework.mock.web.MockHttpServletRequest; import org.springframework.webflow.context.servlet.HttpSessionMap; import org.springframework.webflow.core.collection.AttributeMapBindingEvent; import org.springframework.webflow.core.collection.AttributeMapBindingListener; /** * Unit tests for {@link HttpSessionMapBindingListener}. * * @author Erwin Vervaet */ public class HttpSessionMapBindingListenerTests extends TestCase { private HttpServletRequest request; private HttpSession session; private TestAttributeMapBindingListener value; protected void setUp() throws Exception { request = new MockHttpServletRequest(); session = request.getSession(true); value = new TestAttributeMapBindingListener(); } public void testValueBoundUnBound() { value.valueBoundEvent = null; value.valueUnboundEvent = null; session.setAttribute("key", new HttpSessionMapBindingListener(value, new HttpSessionMap(request))); assertNotNull(value.valueBoundEvent); assertNull(value.valueUnboundEvent); value.valueBoundEvent = null; value.valueUnboundEvent = null; session.removeAttribute("key"); assertNull(value.valueBoundEvent); assertNotNull(value.valueUnboundEvent); } private static class TestAttributeMapBindingListener implements AttributeMapBindingListener { public AttributeMapBindingEvent valueBoundEvent; public AttributeMapBindingEvent valueUnboundEvent; public void valueBound(AttributeMapBindingEvent event) { this.valueBoundEvent = event; assertEquals("key", event.getAttributeName()); assertSame(event.getAttributeValue(), this); } public void valueUnbound(AttributeMapBindingEvent event) { this.valueUnboundEvent = event; assertEquals("key", event.getAttributeName()); assertSame(event.getAttributeValue(), this); } } } ././@LongLink0000000000000000000000000000020100000000000011556 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/test/java/org/springframework/webflow/context/portlet/libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/test/java/org/springframew0000755000000000000000000000000011360615642030003 5ustar ././@LongLink0000000000000000000000000000023400000000000011564 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/test/java/org/springframework/webflow/context/portlet/PortletSessionMapTests.javalibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/test/java/org/springframew0000644000000000000000000000640411360615632030010 0ustar /* * Copyright 2004-2008 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.springframework.webflow.context.portlet; import java.util.Iterator; import junit.framework.TestCase; import org.springframework.mock.web.portlet.MockPortletRequest; import org.springframework.web.util.WebUtils; /** * Unit test for the {@link PortletSessionMap} class. * * @author Ulrik Sandberg * @author Scott Andrews */ public class PortletSessionMapTests extends TestCase { private PortletSessionMap tested; private MockPortletRequest request; protected void setUp() throws Exception { super.setUp(); request = new MockPortletRequest(); tested = new PortletSessionMap(request); } protected void tearDown() throws Exception { super.tearDown(); request = null; tested = null; } public void testGetAttribute() { request.getPortletSession().setAttribute("Some key", "Some value"); // perform test Object result = tested.getAttribute("Some key"); assertEquals("Some value", result); } public void testGetAttributeNullSession() { request.setSession(null); // perform test Object result = tested.getAttribute("Some key"); assertNull("No value expected", result); } public void testSetAttribute() { // perform test tested.setAttribute("Some key", "Some value"); assertEquals("Some value", request.getPortletSession().getAttribute("Some key")); } public void testRemoveAttribute() { request.getPortletSession().setAttribute("Some key", "Some value"); // perform test tested.removeAttribute("Some key"); assertNull(request.getPortletSession().getAttribute("Some key")); } public void testRemoveAttributeNullSession() { request.setSession(null); // perform test tested.removeAttribute("Some key"); assertNull(request.getPortletSession().getAttribute("Some key")); } public void testGetAttributeNames() { request.getPortletSession().setAttribute("Some key", "Some value"); // perform test Iterator names = tested.getAttributeNames(); assertNotNull("Null result unexpected", names); assertTrue("More elements", names.hasNext()); String name = (String) names.next(); assertEquals("Some key", name); } public void testGetAttributeNamesNullSession() { request.setSession(null); // perform test Iterator names = tested.getAttributeNames(); assertNotNull("Null result unexpected", names); assertFalse("No elements expected", names.hasNext()); } public void testGetSessionAsMutex() { Object mutex = tested.getMutex(); assertSame(mutex, request.getPortletSession()); } public void testGetSessionMutex() { Object object = new Object(); request.getPortletSession().setAttribute(WebUtils.SESSION_MUTEX_ATTRIBUTE, object); Object mutex = tested.getMutex(); assertSame(mutex, object); } }././@LongLink0000000000000000000000000000024000000000000011561 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/test/java/org/springframework/webflow/context/portlet/DefaultFlowUrlHandlerTests.javalibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/test/java/org/springframew0000644000000000000000000000400211360615642030001 0ustar package org.springframework.webflow.context.portlet; import junit.framework.TestCase; import org.springframework.mock.web.portlet.MockActionRequest; import org.springframework.mock.web.portlet.MockActionResponse; import org.springframework.mock.web.portlet.MockPortletRequest; import org.springframework.mock.web.portlet.MockRenderRequest; import org.springframework.mock.web.portlet.MockRenderResponse; public class DefaultFlowUrlHandlerTests extends TestCase { private DefaultFlowUrlHandler urlHandler = new DefaultFlowUrlHandler(); private MockPortletRequest request = new MockPortletRequest(); private MockActionRequest actionRequest = new MockActionRequest(); private MockRenderRequest renderRequest = new MockRenderRequest(); private MockActionResponse actionResponse = new MockActionResponse(); private MockRenderResponse renderResponse = new MockRenderResponse(); public void testGetFlowExecutionKey() { request.addParameter("execution", "12345"); assertEquals("12345", urlHandler.getFlowExecutionKey(request)); } public void testSetFlowExecutionRenderParameter() { urlHandler.setFlowExecutionRenderParameter("12345", actionResponse); assertEquals("12345", actionResponse.getRenderParameter("execution")); } public void testSetFlowExecutionInSession() { urlHandler.setFlowExecutionInSession("12345", renderRequest); assertEquals("12345", renderRequest.getPortletSession().getAttribute("execution")); } public void testSessionFlowExecutionRemoval() { urlHandler.setFlowExecutionInSession("12345", renderRequest); assertEquals("12345", urlHandler.getFlowExecutionKey(renderRequest)); actionRequest.setParameter("execution", "12345"); assertEquals("12345", urlHandler.getFlowExecutionKey(actionRequest)); assertNull(actionRequest.getPortletSession().getAttribute("execution")); } public void testCreateFlowExecutionUrl() { String url = urlHandler.createFlowExecutionUrl("foo", "12345", renderResponse); assertEquals("http://localhost/mockportlet?urlType=action;param_execution=12345", url); } } ././@LongLink0000000000000000000000000000024100000000000011562 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/test/java/org/springframework/webflow/context/portlet/PortletExternalContextTests.javalibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/test/java/org/springframew0000644000000000000000000002036011360615642030006 0ustar /* * Copyright 2004-2008 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.springframework.webflow.context.portlet; import java.io.IOException; import java.io.Writer; import junit.framework.TestCase; import org.springframework.mock.web.portlet.MockActionRequest; import org.springframework.mock.web.portlet.MockActionResponse; import org.springframework.mock.web.portlet.MockPortletContext; import org.springframework.mock.web.portlet.MockRenderRequest; import org.springframework.mock.web.portlet.MockRenderResponse; import org.springframework.webflow.context.servlet.ServletExternalContext; import org.springframework.webflow.core.collection.LocalAttributeMap; /** * Unit tests for {@link ServletExternalContext}. */ public class PortletExternalContextTests extends TestCase { private MockPortletContext portletContext; private MockActionRequest request; private MockActionResponse response; private PortletExternalContext context; private MockRenderRequest renderRequest; private MockRenderResponse renderResponse; private PortletExternalContext renderContext; protected void setUp() { portletContext = new MockPortletContext(); request = new MockActionRequest(); response = new MockActionResponse(); context = new PortletExternalContext(portletContext, request, response); renderRequest = new MockRenderRequest(); renderResponse = new MockRenderResponse(); renderContext = new PortletExternalContext(portletContext, renderRequest, renderResponse); } public void testGetContextPath() { request.setContextPath("/foo"); assertEquals("/foo", request.getContextPath()); } public void testRequestParameters() { assertTrue(context.getRequestParameterMap().isEmpty()); } public void testGetNativeObjects() { assertEquals(portletContext, context.getNativeContext()); assertEquals(request, context.getNativeRequest()); assertEquals(response, context.getNativeResponse()); } public void testNotAnAjaxRequest() { assertFalse(context.isAjaxRequest()); } public void testAjaxRequestAcceptHeader() { assertFalse(context.isAjaxRequest()); } public void testNotResponseCommitted() { assertFalse(context.isResponseComplete()); } public void testCommitExecutionRedirect() { assertFalse(context.isResponseAllowed()); context.requestFlowExecutionRedirect(); assertTrue(context.getFlowExecutionRedirectRequested()); assertTrue(context.isResponseComplete()); assertTrue(context.isResponseCompleteFlowExecutionRedirect()); assertFalse(context.isResponseAllowed()); } public void testCommitExecutionRedirectRenderRequest() { try { renderContext.requestFlowExecutionRedirect(); fail("IllegalStateException expected"); } catch (IllegalStateException e) { // we want this } } public void testCommitFlowRedirect() { assertFalse(context.isResponseAllowed()); context.requestFlowDefinitionRedirect("foo", null); assertTrue(context.getFlowDefinitionRedirectRequested()); assertEquals("foo", context.getFlowRedirectFlowId()); assertTrue(context.isResponseComplete()); assertFalse(context.isResponseCompleteFlowExecutionRedirect()); assertFalse(context.isResponseAllowed()); assertNotNull(context.getFlowRedirectFlowInput()); } public void testCommitFlowRedirectWithInput() { assertFalse(context.isResponseAllowed()); LocalAttributeMap input = new LocalAttributeMap(); context.requestFlowDefinitionRedirect("foo", input); assertTrue(context.getFlowDefinitionRedirectRequested()); assertEquals("foo", context.getFlowRedirectFlowId()); assertTrue(context.isResponseComplete()); assertFalse(context.isResponseCompleteFlowExecutionRedirect()); assertFalse(context.isResponseAllowed()); assertSame(input, context.getFlowRedirectFlowInput()); } public void testCommitFlowRedirectRenderRequest() { try { renderContext.requestFlowDefinitionRedirect("foo", null); fail("IllegalStateException expected"); } catch (IllegalStateException e) { // we want this } } public void testCommitExternalRedirect() { assertFalse(context.isResponseAllowed()); context.requestExternalRedirect("foo"); assertTrue(context.getExternalRedirectRequested()); assertEquals("foo", context.getExternalRedirectUrl()); assertTrue(context.isResponseComplete()); assertFalse(context.isResponseCompleteFlowExecutionRedirect()); } public void testCommitExternalRedirectRenderRequest() { try { renderContext.requestExternalRedirect("foo"); fail("IllegalStateException expected"); } catch (IllegalStateException e) { // we want this } } public void testCommitExecutionRedirectPopup() { assertFalse(context.isResponseAllowed()); context.requestFlowExecutionRedirect(); context.requestRedirectInPopup(); assertTrue(context.getFlowExecutionRedirectRequested()); assertTrue(context.getRedirectInPopup()); assertTrue(context.isResponseComplete()); assertTrue(context.isResponseCompleteFlowExecutionRedirect()); } public void testCommitFlowRedirectPopup() { context.requestFlowDefinitionRedirect("foo", null); context.requestRedirectInPopup(); assertTrue(context.getFlowDefinitionRedirectRequested()); assertEquals("foo", context.getFlowRedirectFlowId()); assertTrue(context.getRedirectInPopup()); assertTrue(context.isResponseComplete()); assertFalse(context.isResponseCompleteFlowExecutionRedirect()); } public void testCommitExternalRedirectPopup() { context.requestExternalRedirect("foo"); context.requestRedirectInPopup(); assertTrue(context.getExternalRedirectRequested()); assertEquals("foo", context.getExternalRedirectUrl()); assertTrue(context.getRedirectInPopup()); assertTrue(context.isResponseComplete()); assertFalse(context.isResponseCompleteFlowExecutionRedirect()); } public void testExecutionRedirectPopupRenderRequest() { try { renderContext.requestRedirectInPopup(); fail("IllegalStateException expected"); } catch (IllegalStateException e) { // we want this } } public void testResponseAllowed() { assertFalse(context.isResponseAllowed()); } public void testIsActionPhase() { assertTrue(context.isActionPhase()); } public void testIsRenderPhase() { assertFalse(context.isRenderPhase()); } public void testRecordResponseComplete() { context.recordResponseComplete(); assertTrue(context.isResponseComplete()); assertFalse(context.isResponseAllowed()); } public void testDoubleCommitResponse() { context.recordResponseComplete(); try { context.requestExternalRedirect("foo"); } catch (IllegalStateException e) { } try { context.requestFlowExecutionRedirect(); fail("Should have failed"); } catch (IllegalStateException e) { } try { context.requestFlowDefinitionRedirect("foo", null); fail("Should have failed"); } catch (IllegalStateException e) { } } public void testRedirectInPopup() { assertFalse(context.isResponseComplete()); assertFalse(context.isResponseAllowed()); context.requestFlowExecutionRedirect(); assertTrue(context.isResponseComplete()); assertTrue(context.isResponseCompleteFlowExecutionRedirect()); context.requestRedirectInPopup(); assertTrue(context.getRedirectInPopup()); assertFalse(context.isResponseAllowed()); assertTrue(context.getRedirectInPopup()); } public void testRedirectInPopupNoRedirectRequested() { try { context.requestRedirectInPopup(); fail("Should have failed"); } catch (IllegalStateException e) { } } public void testGetResponseWriter() throws IOException { Writer writer = renderContext.getResponseWriter(); writer.append('t'); assertEquals("t", renderResponse.getContentAsString()); } public void testGetResponseWriterResponseComplete() throws IOException { context.recordResponseComplete(); try { context.getResponseWriter(); fail("Should have failed"); } catch (IllegalStateException e) { } } } ././@LongLink0000000000000000000000000000023400000000000011564 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/test/java/org/springframework/webflow/context/portlet/PortletContextMapTests.javalibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/test/java/org/springframew0000644000000000000000000000664711360615640030020 0ustar /* * Copyright 2004-2008 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.springframework.webflow.context.portlet; import java.util.HashMap; import java.util.Map; import java.util.Map.Entry; import junit.framework.TestCase; import org.springframework.mock.web.portlet.MockPortletContext; /** * Test case for the {@link PortletContextMap} class. * * @author Ulrik Sandberg * @author Erwin Vervaet * @author Scott Andrews */ public class PortletContextMapTests extends TestCase { private PortletContextMap tested; private MockPortletContext context; protected void setUp() throws Exception { super.setUp(); context = new MockPortletContext(); // a fresh MockPortletContext seems to already contain an element; // that's confusing, so we remove it context.removeAttribute("javax.servlet.context.tempdir"); tested = new PortletContextMap(context); tested.put("SomeKey", "SomeValue"); } protected void tearDown() throws Exception { super.tearDown(); context = null; tested = null; } public void testIsEmpty() { tested.remove("SomeKey"); assertEquals("size,", 0, tested.size()); assertEquals("isEmpty,", true, tested.isEmpty()); } public void testSizeAddOne() { assertEquals("size,", 1, tested.size()); } public void testSizeAddTwo() { tested.put("SomeOtherKey", "SomeOtherValue"); assertEquals("size,", 2, tested.size()); } public void testContainsKey() { assertEquals("containsKey,", true, tested.containsKey("SomeKey")); } public void testContainsValue() { assertTrue(tested.containsValue("SomeValue")); } public void testGet() { assertEquals("get,", "SomeValue", tested.get("SomeKey")); } public void testPut() { Object old = tested.put("SomeKey", "SomeNewValue"); assertEquals("old value,", "SomeValue", old); assertEquals("new value,", "SomeNewValue", tested.get("SomeKey")); } public void testRemove() { Object old = tested.remove("SomeKey"); assertEquals("old value,", "SomeValue", old); assertNull("should be gone", tested.get("SomeKey")); } public void testPutAll() { Map otherMap = new HashMap(); otherMap.put("SomeOtherKey", "SomeOtherValue"); otherMap.put("SomeKey", "SomeUpdatedValue"); tested.putAll(otherMap); assertEquals("SomeOtherValue", tested.get("SomeOtherKey")); assertEquals("SomeUpdatedValue", tested.get("SomeKey")); } public void testClear() { tested.clear(); assertTrue(tested.isEmpty()); } public void testKeySet() { assertEquals(1, tested.keySet().size()); assertTrue(tested.keySet().contains("SomeKey")); } public void testValues() { assertEquals(1, tested.values().size()); assertTrue(tested.values().contains("SomeValue")); } public void testEntrySet() { assertEquals(1, tested.entrySet().size()); assertEquals("SomeKey", ((Entry) tested.entrySet().iterator().next()).getKey()); assertEquals("SomeValue", ((Entry) tested.entrySet().iterator().next()).getValue()); } }././@LongLink0000000000000000000000000000023400000000000011564 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/test/java/org/springframework/webflow/context/portlet/PortletRequestMapTests.javalibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/test/java/org/springframew0000644000000000000000000000430711360615632030010 0ustar /* * Copyright 2004-2008 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.springframework.webflow.context.portlet; import java.util.Iterator; import junit.framework.TestCase; import org.springframework.mock.web.portlet.MockPortletRequest; /** * Unit test for the {@link PortletRequestMap} class. * * @author Ulrik Sandberg * @author Scott Andrews */ public class PortletRequestMapTests extends TestCase { private PortletRequestMap tested; private MockPortletRequest request; protected void setUp() throws Exception { super.setUp(); request = new MockPortletRequest(); tested = new PortletRequestMap(request); } protected void tearDown() throws Exception { super.tearDown(); request = null; tested = null; } public void testGetAttribute() { request.setAttribute("Some key", "Some value"); // perform test Object result = tested.getAttribute("Some key"); assertEquals("Some value", result); } public void testSetAttribute() { // perform test tested.setAttribute("Some key", "Some value"); assertEquals("Some value", request.getAttribute("Some key")); } public void testRemoveAttribute() { request.setAttribute("Some key", "Some value"); // perform test tested.removeAttribute("Some key"); assertNull(request.getAttribute("Some key")); } public void testGetAttributeNames() { request.setAttribute("Some key", "Some value"); request.removeAttribute("javax.servlet.context.tempdir"); // perform test Iterator names = tested.getAttributeNames(); assertNotNull("Null result unexpected", names); assertTrue("More elements", names.hasNext()); String name = (String) names.next(); assertEquals("Some key", name); } }././@LongLink0000000000000000000000000000024500000000000011566 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/test/java/org/springframework/webflow/context/portlet/PortletRequestParameterMapTests.javalibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/test/java/org/springframew0000644000000000000000000000452311360615636030014 0ustar /* * Copyright 2004-2008 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.springframework.webflow.context.portlet; import java.util.Iterator; import junit.framework.TestCase; import org.springframework.mock.web.portlet.MockPortletRequest; /** * Unit test for the {@link PortletRequestParameterMap} class. * * @author Ulrik Sandberg * @author Scott Andrews */ public class PortletRequestParameterMapTests extends TestCase { private PortletRequestParameterMap tested; private MockPortletRequest request; protected void setUp() throws Exception { super.setUp(); request = new MockPortletRequest(); tested = new PortletRequestParameterMap(request); } protected void tearDown() throws Exception { super.tearDown(); request = null; tested = null; } public void testGetAttribute() { request.setParameter("Some param", "Some value"); // perform test Object result = tested.getAttribute("Some param"); assertEquals("Some value", result); } public void testSetAttribute() { // perform test try { tested.setAttribute("Some key", "Some value"); fail("UnsupportedOperationException expected"); } catch (UnsupportedOperationException expected) { // expected } } public void testRemoveAttribute() { request.setParameter("Some param", "Some value"); // perform test try { tested.removeAttribute("Some param"); fail("UnsupportedOperationException expected"); } catch (UnsupportedOperationException expected) { // expected } } public void testGetAttributeNames() { request.setParameter("Some param", "Some value"); // perform test Iterator names = tested.getAttributeNames(); assertNotNull("Null result unexpected", names); assertTrue("More elements", names.hasNext()); String name = (String) names.next(); assertEquals("Some param", name); } }././@LongLink0000000000000000000000000000020100000000000011556 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/test/java/org/springframework/webflow/context/servlet/libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/test/java/org/springframew0000755000000000000000000000000011360615644030005 5ustar ././@LongLink0000000000000000000000000000023100000000000011561 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/test/java/org/springframework/webflow/context/servlet/HttpSessionMapTests.javalibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/test/java/org/springframew0000644000000000000000000000625311360615636030016 0ustar /* * Copyright 2004-2008 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.springframework.webflow.context.servlet; import java.util.Iterator; import junit.framework.TestCase; import org.springframework.mock.web.MockHttpServletRequest; import org.springframework.web.util.WebUtils; /** * Unit test for the {@link HttpSessionMap} class. * * @author Ulrik Sandberg */ public class HttpSessionMapTests extends TestCase { private HttpSessionMap tested; private MockHttpServletRequest request; protected void setUp() throws Exception { super.setUp(); request = new MockHttpServletRequest(); tested = new HttpSessionMap(request); } protected void tearDown() throws Exception { super.tearDown(); request = null; tested = null; } public void testGetAttribute() { request.getSession().setAttribute("Some key", "Some value"); // perform test Object result = tested.getAttribute("Some key"); assertEquals("Some value", result); } public void testGetAttributeNullSession() { request.setSession(null); // perform test Object result = tested.getAttribute("Some key"); assertNull("No value expected", result); } public void testSetAttribute() { // perform test tested.setAttribute("Some key", "Some value"); assertEquals("Some value", request.getSession().getAttribute("Some key")); } public void testRemoveAttribute() { request.getSession().setAttribute("Some key", "Some value"); // perform test tested.removeAttribute("Some key"); assertNull(request.getSession().getAttribute("Some key")); } public void testRemoveAttributeNullSession() { request.setSession(null); // perform test tested.removeAttribute("Some key"); assertNull(request.getSession().getAttribute("Some key")); } public void testGetAttributeNames() { request.getSession().setAttribute("Some key", "Some value"); // perform test Iterator names = tested.getAttributeNames(); assertNotNull("Null result unexpected", names); assertTrue("More elements", names.hasNext()); String name = (String) names.next(); assertEquals("Some key", name); } public void testGetAttributeNamesNullSession() { request.setSession(null); // perform test Iterator names = tested.getAttributeNames(); assertNotNull("Null result unexpected", names); assertFalse("No elements expected", names.hasNext()); } public void testGetSessionAsMutex() { Object mutex = tested.getMutex(); assertSame(mutex, request.getSession()); } public void testGetSessionMutex() { Object object = new Object(); request.getSession().setAttribute(WebUtils.SESSION_MUTEX_ATTRIBUTE, object); Object mutex = tested.getMutex(); assertSame(mutex, object); } }././@LongLink0000000000000000000000000000024000000000000011561 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/test/java/org/springframework/webflow/context/servlet/DefaultFlowUrlHandlerTests.javalibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/test/java/org/springframew0000644000000000000000000000732711360615632030015 0ustar package org.springframework.webflow.context.servlet; import java.util.LinkedHashMap; import junit.framework.TestCase; import org.springframework.mock.web.MockHttpServletRequest; import org.springframework.webflow.core.collection.CollectionUtils; import org.springframework.webflow.core.collection.LocalAttributeMap; public class DefaultFlowUrlHandlerTests extends TestCase { private DefaultFlowUrlHandler urlHandler = new DefaultFlowUrlHandler(); private MockHttpServletRequest request = new MockHttpServletRequest(); public void testGetFlowId() { request.setContextPath("/springtravel"); request.setServletPath("/app"); request.setPathInfo("/foo"); request.setRequestURI("/springtravel/app/foo"); assertEquals("foo", urlHandler.getFlowId(request)); } public void testGetFlowIdNoPathInfo() { request.setContextPath("/springtravel"); request.setServletPath("/app/foo.htm"); request.setPathInfo(null); request.setRequestURI("/springtravel/app/foo.htm"); assertEquals("app/foo", urlHandler.getFlowId(request)); } public void testGetFlowIdOnlyContextPath() { request.setContextPath("/springtravel"); request.setRequestURI("/springtravel"); assertEquals("springtravel", urlHandler.getFlowId(request)); } public void testGetFlowExecutionKey() { request.setContextPath("/springtravel"); request.setServletPath("/app"); request.setPathInfo("/foo"); request.setRequestURI("/springtravel/app/foo"); request.addParameter("execution", "12345"); assertEquals("12345", urlHandler.getFlowExecutionKey(request)); } public void testCreateFlowDefinitionUrl() { request.setContextPath("/springtravel"); request.setServletPath("/app"); request.setPathInfo("/foo"); request.setRequestURI("/springtravel/app/foo"); String url = urlHandler.createFlowDefinitionUrl("bookHotel", null, request); assertEquals("/springtravel/app/bookHotel", url); } public void testCreateFlowDefinitionUrlNoPathInfo() { request.setContextPath("/springtravel"); request.setServletPath("/app/foo.htm"); request.setRequestURI("/springtravel/app/foo"); String url = urlHandler.createFlowDefinitionUrl("app/foo", null, request); assertEquals("/springtravel/app/foo.htm", url); } public void testCreateFlowDefinitionUrlContextPathOnly() { request.setContextPath("/springtravel"); request.setRequestURI("/springtravel"); String url = urlHandler.createFlowDefinitionUrl("springtravel", null, request); assertEquals("/springtravel", url); } public void testCreateFlowDefinitionUrlEmptyInput() { request.setContextPath("/springtravel"); request.setServletPath("/app"); request.setPathInfo("/foo"); request.setRequestURI("/springtravel/app/foo"); String url = urlHandler.createFlowDefinitionUrl("bookHotel", CollectionUtils.EMPTY_ATTRIBUTE_MAP, request); assertEquals("/springtravel/app/bookHotel", url); } public void testCreateFlowDefinitionUrlWithFlowInput() { request.setContextPath("/springtravel"); request.setServletPath("/app"); request.setPathInfo("/foo"); request.setRequestURI("/springtravel/app/foo"); LocalAttributeMap input = new LocalAttributeMap(new LinkedHashMap()); input.put("foo", "bar"); input.put("bar", "needs encoding"); input.put("baz", new Integer(1)); input.put("boop", null); String url = urlHandler.createFlowDefinitionUrl("bookHotel", input, request); assertEquals("/springtravel/app/bookHotel?foo=bar&bar=needs+encoding&baz=1&boop=", url); } public void testCreateFlowExecutionUrl() { request.setContextPath("/springtravel"); request.setServletPath("/app"); request.setPathInfo("/foo"); request.setRequestURI("/springtravel/app/foo"); String url = urlHandler.createFlowExecutionUrl("foo", "12345", request); assertEquals("/springtravel/app/foo?execution=12345", url); } } ././@LongLink0000000000000000000000000000024100000000000011562 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/test/java/org/springframework/webflow/context/servlet/WebFlow1FlowUrlHandlerTests.javalibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/test/java/org/springframew0000644000000000000000000000412011360615644030004 0ustar package org.springframework.webflow.context.servlet; import java.util.LinkedHashMap; import junit.framework.TestCase; import org.springframework.mock.web.MockHttpServletRequest; import org.springframework.webflow.core.collection.CollectionUtils; import org.springframework.webflow.core.collection.LocalAttributeMap; public class WebFlow1FlowUrlHandlerTests extends TestCase { private WebFlow1FlowUrlHandler urlHandler = new WebFlow1FlowUrlHandler(); private MockHttpServletRequest request = new MockHttpServletRequest(); public void testGetFlowId() { request.addParameter("_flowId", "foo"); assertEquals("foo", urlHandler.getFlowId(request)); } public void testGetFlowExecutionKey() { request.addParameter("_flowExecutionKey", "12345"); assertEquals("12345", urlHandler.getFlowExecutionKey(request)); } public void testCreateFlowDefinitionUrl() { request.setRequestURI("/springtravel/app/flows"); String url = urlHandler.createFlowDefinitionUrl("bookHotel", null, request); assertEquals("/springtravel/app/flows?_flowId=bookHotel", url); } public void testCreateFlowDefinitionUrlEmptyInput() { request.setRequestURI("/springtravel/app/flows"); String url = urlHandler.createFlowDefinitionUrl("bookHotel", CollectionUtils.EMPTY_ATTRIBUTE_MAP, request); assertEquals("/springtravel/app/flows?_flowId=bookHotel", url); } public void testCreateFlowDefinitionUrlWithFlowInput() { request.setRequestURI("/springtravel/app/flows"); LocalAttributeMap input = new LocalAttributeMap(new LinkedHashMap()); input.put("foo", "bar"); input.put("bar", "needs encoding"); input.put("baz", new Integer(1)); input.put("boop", null); String url = urlHandler.createFlowDefinitionUrl("bookHotel", input, request); assertEquals("/springtravel/app/flows?_flowId=bookHotel&foo=bar&bar=needs+encoding&baz=1&boop=", url); } public void testCreateFlowExecutionUrl() { request.setRequestURI("/springtravel/app/flows"); String url = urlHandler.createFlowExecutionUrl("bookHotel", "12345", request); assertEquals("/springtravel/app/flows?_flowId=bookHotel&_flowExecutionKey=12345", url); } } ././@LongLink0000000000000000000000000000025100000000000011563 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/test/java/org/springframework/webflow/context/servlet/HttpServletRequestParameterMapTests.javalibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/test/java/org/springframew0000644000000000000000000000451611360615642030013 0ustar /* * Copyright 2004-2008 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.springframework.webflow.context.servlet; import java.util.Iterator; import junit.framework.TestCase; import org.springframework.mock.web.MockHttpServletRequest; /** * Unit test for the {@link HttpServletRequestParameterMap} class. * * @author Ulrik Sandberg */ public class HttpServletRequestParameterMapTests extends TestCase { private HttpServletRequestParameterMap tested; private MockHttpServletRequest request; protected void setUp() throws Exception { super.setUp(); request = new MockHttpServletRequest(); tested = new HttpServletRequestParameterMap(request); } protected void tearDown() throws Exception { super.tearDown(); request = null; tested = null; } public void testGetAttribute() { request.setParameter("Some param", "Some value"); // perform test Object result = tested.getAttribute("Some param"); assertEquals("Some value", result); } public void testSetAttribute() { // perform test try { tested.setAttribute("Some key", "Some value"); fail("UnsupportedOperationException expected"); } catch (UnsupportedOperationException expected) { // expected } } public void testRemoveAttribute() { request.setParameter("Some param", "Some value"); // perform test try { tested.removeAttribute("Some param"); fail("UnsupportedOperationException expected"); } catch (UnsupportedOperationException expected) { // expected } } public void testGetAttributeNames() { request.setParameter("Some param", "Some value"); // perform test Iterator names = tested.getAttributeNames(); assertNotNull("Null result unexpected", names); assertTrue("More elements", names.hasNext()); String name = (String) names.next(); assertEquals("Some param", name); } }././@LongLink0000000000000000000000000000024100000000000011562 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/test/java/org/springframework/webflow/context/servlet/FilenameFlowUrlHandlerTests.javalibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/test/java/org/springframew0000644000000000000000000000623711360615636030020 0ustar /* * Copyright 2004-2008 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.springframework.webflow.context.servlet; import junit.framework.TestCase; import org.springframework.mock.web.MockHttpServletRequest; public class FilenameFlowUrlHandlerTests extends TestCase { private DefaultFlowUrlHandler urlHandler = new FilenameFlowUrlHandler(); private MockHttpServletRequest request = new MockHttpServletRequest(); public void testGetFlowId() { request.setContextPath("/springtravel"); request.setServletPath("/app"); request.setPathInfo("/foo"); request.setRequestURI("/springtravel/app/foo"); assertEquals("foo", urlHandler.getFlowId(request)); } public void testGetFlowIdNoPathInfo() { request.setContextPath("/springtravel"); request.setServletPath("/app/foo.htm"); request.setPathInfo(null); request.setRequestURI("/springtravel/app/foo.htm"); assertEquals("foo", urlHandler.getFlowId(request)); } public void testGetFlowIdOnlyContextPath() { request.setContextPath("/springtravel"); request.setRequestURI("/springtravel"); assertEquals("", urlHandler.getFlowId(request)); } public void testCreateFlowDefinitionUrlWithPathInfo() { request.setContextPath("/springtravel"); request.setServletPath("/app"); request.setPathInfo("/foo"); request.setRequestURI("/springtravel/app/foo"); String flowDefUrl = urlHandler.createFlowDefinitionUrl("bar", null, request); assertEquals("/springtravel/app/bar", flowDefUrl); } public void testCreateFlowDefinitionUrlWithPathInfoNestedPath() { request.setContextPath("/springtravel"); request.setServletPath("/app"); request.setPathInfo("/nestedPath/foo"); request.setRequestURI("/springtravel/app/nestedPath/foo"); String flowDefUrl = urlHandler.createFlowDefinitionUrl("bar", null, request); assertEquals("/springtravel/app/nestedPath/bar", flowDefUrl); } public void testCreateFlowDefinitionUrlWithPathInfoNestedPathAndFileExtension() { request.setContextPath("/springtravel"); request.setServletPath("/app"); request.setPathInfo("/nestedPath/foo.flow"); request.setRequestURI("/springtravel/app/nestedPath/foo.flow"); String flowDefUrl = urlHandler.createFlowDefinitionUrl("bar", null, request); assertEquals("/springtravel/app/nestedPath/bar.flow", flowDefUrl); } public void testCreateFlowDefinitionUrlWithServletPathAndFileExtension() { request.setContextPath("/springtravel"); request.setServletPath("/nestedPath/foo.flow"); request.setRequestURI("/springtravel/nestedPath/foo.flow"); String flowDefUrl = urlHandler.createFlowDefinitionUrl("bar", null, request); assertEquals("/springtravel/nestedPath/bar.flow", flowDefUrl); } }././@LongLink0000000000000000000000000000024100000000000011562 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/test/java/org/springframework/webflow/context/servlet/ServletExternalContextTests.javalibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/test/java/org/springframew0000644000000000000000000001716711360615634030022 0ustar /* * Copyright 2004-2008 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.springframework.webflow.context.servlet; import java.io.IOException; import java.io.Writer; import junit.framework.TestCase; import org.springframework.mock.web.MockHttpServletRequest; import org.springframework.mock.web.MockHttpServletResponse; import org.springframework.mock.web.MockServletContext; import org.springframework.webflow.core.collection.LocalAttributeMap; /** * Unit tests for {@link ServletExternalContext}. */ public class ServletExternalContextTests extends TestCase { private MockServletContext servletContext; private MockHttpServletRequest request; private MockHttpServletResponse response; private ServletExternalContext context; protected void setUp() { servletContext = new MockServletContext(); servletContext.setAttribute("aFoo", "bar"); request = new MockHttpServletRequest(); request.setAttribute("rFoo", "bar"); request.getSession(true).setAttribute("sFoo", "bar"); response = new MockHttpServletResponse(); context = new ServletExternalContext(servletContext, request, response); } public void testGetContextPath() { request.setContextPath("/foo"); assertEquals("/foo", request.getContextPath()); } public void testRequestParameters() { assertTrue(context.getRequestParameterMap().isEmpty()); } public void testGetAppAttribute() { assertEquals("bar", context.getApplicationMap().get("aFoo")); } public void testGetSessionAttribute() { assertEquals("bar", context.getSessionMap().get("sFoo")); } public void testGetRequestAttribute() { assertEquals("bar", context.getRequestMap().get("rFoo")); } public void testGetNativeObjects() { assertEquals(servletContext, context.getNativeContext()); assertEquals(request, context.getNativeRequest()); assertEquals(response, context.getNativeResponse()); } public void testGetExecutionUrl() { request.setRequestURI("/foo"); String url = context.getFlowExecutionUrl("foo", "e1s1"); assertEquals("/foo?execution=e1s1", url); } public void testNotAnAjaxRequest() { assertFalse(context.isAjaxRequest()); } public void testAjaxRequestAcceptHeader() { context.setAjaxRequest(true); assertTrue(context.isAjaxRequest()); } public void testNotResponseCommitted() { assertFalse(context.isResponseComplete()); } public void testCommitExecutionRedirect() { context.requestFlowExecutionRedirect(); assertTrue(context.getFlowExecutionRedirectRequested()); assertTrue(context.isResponseComplete()); assertTrue(context.isResponseCompleteFlowExecutionRedirect()); } public void testCommitFlowRedirect() { context.requestFlowDefinitionRedirect("foo", null); assertTrue(context.getFlowDefinitionRedirectRequested()); assertEquals("foo", context.getFlowRedirectFlowId()); assertTrue(context.isResponseComplete()); assertFalse(context.isResponseCompleteFlowExecutionRedirect()); assertNotNull(context.getFlowRedirectFlowInput()); } public void testCommitFlowRedirectWithInput() { LocalAttributeMap input = new LocalAttributeMap(); context.requestFlowDefinitionRedirect("foo", input); assertTrue(context.getFlowDefinitionRedirectRequested()); assertEquals("foo", context.getFlowRedirectFlowId()); assertTrue(context.isResponseComplete()); assertFalse(context.isResponseCompleteFlowExecutionRedirect()); assertSame(input, context.getFlowRedirectFlowInput()); } public void testCommitExternalRedirect() { context.requestExternalRedirect("foo"); assertTrue(context.getExternalRedirectRequested()); assertEquals("foo", context.getExternalRedirectUrl()); assertTrue(context.isResponseComplete()); assertFalse(context.isResponseAllowed()); assertFalse(context.isResponseCompleteFlowExecutionRedirect()); } public void testCommitExecutionRedirectPopup() { context.requestFlowExecutionRedirect(); context.requestRedirectInPopup(); assertTrue(context.getFlowExecutionRedirectRequested()); assertTrue(context.getRedirectInPopup()); assertTrue(context.isResponseComplete()); assertFalse(context.isResponseAllowed()); assertTrue(context.isResponseCompleteFlowExecutionRedirect()); } public void testCommitFlowRedirectPopup() { context.requestFlowDefinitionRedirect("foo", null); context.requestRedirectInPopup(); assertTrue(context.getFlowDefinitionRedirectRequested()); assertEquals("foo", context.getFlowRedirectFlowId()); assertTrue(context.getRedirectInPopup()); assertTrue(context.isResponseComplete()); assertFalse(context.isResponseAllowed()); } public void testCommitExternalRedirectPopup() { context.requestExternalRedirect("foo"); context.requestRedirectInPopup(); assertTrue(context.getExternalRedirectRequested()); assertEquals("foo", context.getExternalRedirectUrl()); assertTrue(context.getRedirectInPopup()); assertFalse(context.isResponseAllowed()); } public void testRecordResponseComplete() { context.recordResponseComplete(); assertTrue(context.isResponseComplete()); assertFalse(context.isResponseAllowed()); assertFalse(context.isResponseCompleteFlowExecutionRedirect()); } public void testDoubleCommitResponse() { context.recordResponseComplete(); try { context.requestFlowExecutionRedirect(); fail("Should have failed"); } catch (IllegalStateException e) { } try { context.requestFlowDefinitionRedirect("foo", null); fail("Should have failed"); } catch (IllegalStateException e) { } try { context.requestExternalRedirect("foo"); fail("Should have failed"); } catch (IllegalStateException e) { } } public void testDoubleCommitResponseExecutionRedirectFirst() { context.requestFlowExecutionRedirect(); try { context.requestFlowDefinitionRedirect("foo", null); fail("Should have failed"); } catch (IllegalStateException e) { } } public void testDoubleCommitResponseDefinitionRedirectFirst() { context.requestFlowDefinitionRedirect("foo", null); try { context.requestFlowDefinitionRedirect("foo", null); fail("Should have failed"); } catch (IllegalStateException e) { } } public void testDoubleCommitResponseExternalRedirectFirst() { context.requestExternalRedirect("foo"); try { context.requestFlowDefinitionRedirect("foo", null); fail("Should have failed"); } catch (IllegalStateException e) { } } public void testRedirectInPopup() { context.requestFlowExecutionRedirect(); assertTrue(context.isResponseComplete()); assertTrue(context.isResponseCompleteFlowExecutionRedirect()); assertFalse(context.isResponseAllowed()); context.requestRedirectInPopup(); assertTrue(context.getRedirectInPopup()); } public void testRedirectInPopupNoRedirectRequested() { try { context.requestRedirectInPopup(); fail("Should have failed"); } catch (IllegalStateException e) { } } public void testGetResponseWriter() throws IOException { Writer writer = context.getResponseWriter(); writer.append('t'); assertEquals("t", response.getContentAsString()); } public void testGetResponseWriterResponseComplete() throws IOException { context.recordResponseComplete(); try { context.getResponseWriter(); fail("Should have failed"); } catch (IllegalStateException e) { } } }././@LongLink0000000000000000000000000000024000000000000011561 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/test/java/org/springframework/webflow/context/servlet/HttpServletContextMapTests.javalibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/test/java/org/springframew0000644000000000000000000000662611360615636030022 0ustar /* * Copyright 2004-2008 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.springframework.webflow.context.servlet; import java.util.HashMap; import java.util.Map; import java.util.Map.Entry; import junit.framework.TestCase; import org.springframework.mock.web.MockServletContext; /** * Test case for the {@link HttpServletContextMap} class. * * @author Ulrik Sandberg * @author Erwin Vervaet */ public class HttpServletContextMapTests extends TestCase { private HttpServletContextMap tested; private MockServletContext context; protected void setUp() throws Exception { super.setUp(); context = new MockServletContext(); // a fresh MockServletContext seems to already contain an element; // that's confusing, so we remove it context.removeAttribute("javax.servlet.context.tempdir"); tested = new HttpServletContextMap(context); tested.put("SomeKey", "SomeValue"); } protected void tearDown() throws Exception { super.tearDown(); context = null; tested = null; } public void testIsEmpty() { tested.remove("SomeKey"); assertEquals("size,", 0, tested.size()); assertEquals("isEmpty,", true, tested.isEmpty()); } public void testSizeAddOne() { assertEquals("size,", 1, tested.size()); } public void testSizeAddTwo() { tested.put("SomeOtherKey", "SomeOtherValue"); assertEquals("size,", 2, tested.size()); } public void testContainsKey() { assertEquals("containsKey,", true, tested.containsKey("SomeKey")); } public void testContainsValue() { assertTrue(tested.containsValue("SomeValue")); } public void testGet() { assertEquals("get,", "SomeValue", tested.get("SomeKey")); } public void testPut() { Object old = tested.put("SomeKey", "SomeNewValue"); assertEquals("old value,", "SomeValue", old); assertEquals("new value,", "SomeNewValue", tested.get("SomeKey")); } public void testRemove() { Object old = tested.remove("SomeKey"); assertEquals("old value,", "SomeValue", old); assertNull("should be gone", tested.get("SomeKey")); } public void testPutAll() { Map otherMap = new HashMap(); otherMap.put("SomeOtherKey", "SomeOtherValue"); otherMap.put("SomeKey", "SomeUpdatedValue"); tested.putAll(otherMap); assertEquals("SomeOtherValue", tested.get("SomeOtherKey")); assertEquals("SomeUpdatedValue", tested.get("SomeKey")); } public void testClear() { tested.clear(); assertTrue(tested.isEmpty()); } public void testKeySet() { assertEquals(1, tested.keySet().size()); assertTrue(tested.keySet().contains("SomeKey")); } public void testValues() { assertEquals(1, tested.values().size()); assertTrue(tested.values().contains("SomeValue")); } public void testEntrySet() { assertEquals(1, tested.entrySet().size()); assertEquals("SomeKey", ((Entry) tested.entrySet().iterator().next()).getKey()); assertEquals("SomeValue", ((Entry) tested.entrySet().iterator().next()).getValue()); } }././@LongLink0000000000000000000000000000024000000000000011561 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/test/java/org/springframework/webflow/context/servlet/HttpServletRequestMapTests.javalibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/src/test/java/org/springframew0000644000000000000000000000430211360615632030003 0ustar /* * Copyright 2004-2008 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.springframework.webflow.context.servlet; import java.util.Iterator; import junit.framework.TestCase; import org.springframework.mock.web.MockHttpServletRequest; /** * Unit test for the {@link HttpServletRequestMap} class. * * @author Ulrik Sandberg */ public class HttpServletRequestMapTests extends TestCase { private HttpServletRequestMap tested; private MockHttpServletRequest request; protected void setUp() throws Exception { super.setUp(); request = new MockHttpServletRequest(); tested = new HttpServletRequestMap(request); } protected void tearDown() throws Exception { super.tearDown(); request = null; tested = null; } public void testGetAttribute() { request.setAttribute("Some key", "Some value"); // perform test Object result = tested.getAttribute("Some key"); assertEquals("Some value", result); } public void testSetAttribute() { // perform test tested.setAttribute("Some key", "Some value"); assertEquals("Some value", request.getAttribute("Some key")); } public void testRemoveAttribute() { request.setAttribute("Some key", "Some value"); // perform test tested.removeAttribute("Some key"); assertNull(request.getAttribute("Some key")); } public void testGetAttributeNames() { request.setAttribute("Some key", "Some value"); request.removeAttribute("javax.servlet.context.tempdir"); // perform test Iterator names = tested.getAttributeNames(); assertNotNull("Null result unexpected", names); assertTrue("More elements", names.hasNext()); String name = (String) names.next(); assertEquals("Some key", name); } }libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/pom.xml0000644000000000000000000001010411360615634023412 0ustar 4.0.0 org.springframework.webflow spring-webflow jar Spring Web Flow 2.0.9.RELEASE commons-logging commons-logging 1.1.1 org.springframework spring-beans ${spring.version} org.springframework spring-context ${spring.version} org.springframework spring-core ${spring.version} org.springframework spring-web ${spring.version} org.springframework spring-webmvc ${spring.version} org.springframework.webflow spring-binding ${project.version} org.springframework.webflow spring-js ${project.version} backport-util-concurrent backport-util-concurrent 3.0 true javax.el el-api 1.0 provided javax.persistence persistence-api 1.0 provided javax.portlet portlet-api 1.0 provided javax.servlet servlet-api 2.4 provided org.hibernate hibernate 3.2.5.ga true javax.transaction jta ognl ognl 2.6.9 true org.springframework spring-orm ${spring.version} true org.springframework spring-webmvc-portlet ${spring.version} true org.springframework spring-tx ${spring.version} true org.springframework.security spring-security-core 2.0.4 true junit junit 3.8.2 true maven2.java.net http://download.java.net/maven/2 2.5.6.SEC01 libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/.settings/0000755000000000000000000000000011360615636024021 5ustar ././@LongLink0000000000000000000000000000015100000000000011562 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/.settings/org.eclipse.jdt.ui.prefslibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/.settings/org.eclipse.jdt.ui.p0000644000000000000000000002033711360615634027613 0ustar #Thu Jul 10 09:39:53 BST 2008 eclipse.preferences.version=1 editor_save_participant_org.eclipse.jdt.ui.postsavelistener.cleanup=true formatter_profile=_Spring Java Conventions formatter_settings_version=11 org.eclipse.jdt.ui.exception.name=e org.eclipse.jdt.ui.gettersetter.use.is=false org.eclipse.jdt.ui.javadoc=false org.eclipse.jdt.ui.keywordthis=false org.eclipse.jdt.ui.overrideannotation=true org.eclipse.jdt.ui.text.custom_code_templates= sp_cleanup.add_default_serial_version_id=true sp_cleanup.add_generated_serial_version_id=false sp_cleanup.add_missing_annotations=true sp_cleanup.add_missing_deprecated_annotations=true sp_cleanup.add_missing_nls_tags=false sp_cleanup.add_missing_override_annotations=true sp_cleanup.add_serial_version_id=false sp_cleanup.always_use_blocks=true sp_cleanup.always_use_parentheses_in_expressions=false sp_cleanup.always_use_this_for_non_static_field_access=false sp_cleanup.always_use_this_for_non_static_method_access=false sp_cleanup.convert_to_enhanced_for_loop=false sp_cleanup.format_source_code=true sp_cleanup.make_local_variable_final=false sp_cleanup.make_parameters_final=false sp_cleanup.make_private_fields_final=true sp_cleanup.make_variable_declarations_final=true sp_cleanup.never_use_blocks=false sp_cleanup.never_use_parentheses_in_expressions=true sp_cleanup.on_save_use_additional_actions=false sp_cleanup.organize_imports=true sp_cleanup.qualify_static_field_accesses_with_declaring_class=false sp_cleanup.qualify_static_member_accesses_through_instances_with_declaring_class=true sp_cleanup.qualify_static_member_accesses_through_subtypes_with_declaring_class=true sp_cleanup.qualify_static_member_accesses_with_declaring_class=false sp_cleanup.qualify_static_method_accesses_with_declaring_class=false sp_cleanup.remove_private_constructors=true sp_cleanup.remove_trailing_whitespaces=false sp_cleanup.remove_trailing_whitespaces_all=true sp_cleanup.remove_trailing_whitespaces_ignore_empty=false sp_cleanup.remove_unnecessary_casts=true sp_cleanup.remove_unnecessary_nls_tags=false sp_cleanup.remove_unused_imports=false sp_cleanup.remove_unused_local_variables=false sp_cleanup.remove_unused_private_fields=true sp_cleanup.remove_unused_private_members=false sp_cleanup.remove_unused_private_methods=true sp_cleanup.remove_unused_private_types=true sp_cleanup.sort_members=false sp_cleanup.sort_members_all=false sp_cleanup.use_blocks=false sp_cleanup.use_blocks_only_for_return_and_throw=false sp_cleanup.use_parentheses_in_expressions=false sp_cleanup.use_this_for_non_static_field_access=false sp_cleanup.use_this_for_non_static_field_access_only_if_necessary=true sp_cleanup.use_this_for_non_static_method_access=false sp_cleanup.use_this_for_non_static_method_access_only_if_necessary=true ././@LongLink0000000000000000000000000000015300000000000011564 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/.settings/org.eclipse.jdt.core.prefslibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/.settings/org.eclipse.jdt.core0000644000000000000000000006441311360615636027675 0ustar #Thu Jul 10 09:39:53 BST 2008 eclipse.preferences.version=1 org.eclipse.jdt.core.codeComplete.argumentPrefixes= org.eclipse.jdt.core.codeComplete.argumentSuffixes= org.eclipse.jdt.core.codeComplete.fieldPrefixes= org.eclipse.jdt.core.codeComplete.fieldSuffixes= org.eclipse.jdt.core.codeComplete.localPrefixes= org.eclipse.jdt.core.codeComplete.localSuffixes= org.eclipse.jdt.core.codeComplete.staticFieldPrefixes= org.eclipse.jdt.core.codeComplete.staticFieldSuffixes= org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.2 org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve org.eclipse.jdt.core.compiler.compliance=1.4 org.eclipse.jdt.core.compiler.debug.lineNumber=generate org.eclipse.jdt.core.compiler.debug.localVariable=generate org.eclipse.jdt.core.compiler.debug.sourceFile=generate org.eclipse.jdt.core.compiler.doc.comment.support=enabled org.eclipse.jdt.core.compiler.problem.annotationSuperInterface=warning org.eclipse.jdt.core.compiler.problem.assertIdentifier=warning org.eclipse.jdt.core.compiler.problem.autoboxing=ignore org.eclipse.jdt.core.compiler.problem.deprecation=warning org.eclipse.jdt.core.compiler.problem.deprecationInDeprecatedCode=disabled org.eclipse.jdt.core.compiler.problem.deprecationWhenOverridingDeprecatedMethod=disabled org.eclipse.jdt.core.compiler.problem.discouragedReference=warning org.eclipse.jdt.core.compiler.problem.emptyStatement=ignore org.eclipse.jdt.core.compiler.problem.enumIdentifier=warning org.eclipse.jdt.core.compiler.problem.fallthroughCase=ignore org.eclipse.jdt.core.compiler.problem.fieldHiding=ignore org.eclipse.jdt.core.compiler.problem.finalParameterBound=warning org.eclipse.jdt.core.compiler.problem.finallyBlockNotCompletingNormally=warning org.eclipse.jdt.core.compiler.problem.forbiddenReference=error org.eclipse.jdt.core.compiler.problem.hiddenCatchBlock=warning org.eclipse.jdt.core.compiler.problem.incompatibleNonInheritedInterfaceMethod=warning org.eclipse.jdt.core.compiler.problem.incompleteEnumSwitch=ignore org.eclipse.jdt.core.compiler.problem.indirectStaticAccess=ignore org.eclipse.jdt.core.compiler.problem.invalidJavadoc=warning org.eclipse.jdt.core.compiler.problem.invalidJavadocTags=enabled org.eclipse.jdt.core.compiler.problem.invalidJavadocTagsDeprecatedRef=disabled org.eclipse.jdt.core.compiler.problem.invalidJavadocTagsNotVisibleRef=enabled org.eclipse.jdt.core.compiler.problem.invalidJavadocTagsVisibility=protected org.eclipse.jdt.core.compiler.problem.localVariableHiding=ignore org.eclipse.jdt.core.compiler.problem.methodWithConstructorName=warning org.eclipse.jdt.core.compiler.problem.missingDeprecatedAnnotation=ignore org.eclipse.jdt.core.compiler.problem.missingJavadocComments=ignore org.eclipse.jdt.core.compiler.problem.missingJavadocCommentsOverriding=disabled org.eclipse.jdt.core.compiler.problem.missingJavadocCommentsVisibility=public org.eclipse.jdt.core.compiler.problem.missingJavadocTags=ignore org.eclipse.jdt.core.compiler.problem.missingJavadocTagsOverriding=disabled org.eclipse.jdt.core.compiler.problem.missingJavadocTagsVisibility=public org.eclipse.jdt.core.compiler.problem.missingOverrideAnnotation=ignore org.eclipse.jdt.core.compiler.problem.missingSerialVersion=ignore org.eclipse.jdt.core.compiler.problem.noEffectAssignment=warning org.eclipse.jdt.core.compiler.problem.noImplicitStringConversion=warning org.eclipse.jdt.core.compiler.problem.nonExternalizedStringLiteral=ignore org.eclipse.jdt.core.compiler.problem.nullReference=ignore org.eclipse.jdt.core.compiler.problem.overridingPackageDefaultMethod=warning org.eclipse.jdt.core.compiler.problem.parameterAssignment=ignore org.eclipse.jdt.core.compiler.problem.possibleAccidentalBooleanAssignment=ignore org.eclipse.jdt.core.compiler.problem.rawTypeReference=ignore org.eclipse.jdt.core.compiler.problem.specialParameterHidingField=disabled org.eclipse.jdt.core.compiler.problem.staticAccessReceiver=warning org.eclipse.jdt.core.compiler.problem.suppressWarnings=enabled org.eclipse.jdt.core.compiler.problem.syntheticAccessEmulation=ignore org.eclipse.jdt.core.compiler.problem.typeParameterHiding=warning org.eclipse.jdt.core.compiler.problem.uncheckedTypeOperation=warning org.eclipse.jdt.core.compiler.problem.undocumentedEmptyBlock=ignore org.eclipse.jdt.core.compiler.problem.unhandledWarningToken=warning org.eclipse.jdt.core.compiler.problem.unnecessaryElse=ignore org.eclipse.jdt.core.compiler.problem.unnecessaryTypeCheck=warning org.eclipse.jdt.core.compiler.problem.unqualifiedFieldAccess=ignore org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownException=ignore org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionWhenOverriding=disabled org.eclipse.jdt.core.compiler.problem.unusedImport=warning org.eclipse.jdt.core.compiler.problem.unusedLabel=warning org.eclipse.jdt.core.compiler.problem.unusedLocal=warning org.eclipse.jdt.core.compiler.problem.unusedParameter=ignore org.eclipse.jdt.core.compiler.problem.unusedParameterWhenImplementingAbstract=disabled org.eclipse.jdt.core.compiler.problem.unusedParameterWhenOverridingConcrete=disabled org.eclipse.jdt.core.compiler.problem.unusedPrivateMember=warning org.eclipse.jdt.core.compiler.problem.varargsArgumentNeedCast=warning org.eclipse.jdt.core.compiler.source=1.3 org.eclipse.jdt.core.formatter.align_type_members_on_columns=false org.eclipse.jdt.core.formatter.alignment_for_arguments_in_allocation_expression=16 org.eclipse.jdt.core.formatter.alignment_for_arguments_in_enum_constant=16 org.eclipse.jdt.core.formatter.alignment_for_arguments_in_explicit_constructor_call=16 org.eclipse.jdt.core.formatter.alignment_for_arguments_in_method_invocation=16 org.eclipse.jdt.core.formatter.alignment_for_arguments_in_qualified_allocation_expression=16 org.eclipse.jdt.core.formatter.alignment_for_assignment=0 org.eclipse.jdt.core.formatter.alignment_for_binary_expression=16 org.eclipse.jdt.core.formatter.alignment_for_compact_if=16 org.eclipse.jdt.core.formatter.alignment_for_conditional_expression=80 org.eclipse.jdt.core.formatter.alignment_for_enum_constants=0 org.eclipse.jdt.core.formatter.alignment_for_expressions_in_array_initializer=16 org.eclipse.jdt.core.formatter.alignment_for_multiple_fields=16 org.eclipse.jdt.core.formatter.alignment_for_parameters_in_constructor_declaration=16 org.eclipse.jdt.core.formatter.alignment_for_parameters_in_method_declaration=16 org.eclipse.jdt.core.formatter.alignment_for_selector_in_method_invocation=16 org.eclipse.jdt.core.formatter.alignment_for_superclass_in_type_declaration=16 org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_enum_declaration=16 org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_type_declaration=16 org.eclipse.jdt.core.formatter.alignment_for_throws_clause_in_constructor_declaration=16 org.eclipse.jdt.core.formatter.alignment_for_throws_clause_in_method_declaration=16 org.eclipse.jdt.core.formatter.blank_lines_after_imports=1 org.eclipse.jdt.core.formatter.blank_lines_after_package=1 org.eclipse.jdt.core.formatter.blank_lines_before_field=0 org.eclipse.jdt.core.formatter.blank_lines_before_first_class_body_declaration=0 org.eclipse.jdt.core.formatter.blank_lines_before_imports=1 org.eclipse.jdt.core.formatter.blank_lines_before_member_type=1 org.eclipse.jdt.core.formatter.blank_lines_before_method=1 org.eclipse.jdt.core.formatter.blank_lines_before_new_chunk=1 org.eclipse.jdt.core.formatter.blank_lines_before_package=0 org.eclipse.jdt.core.formatter.blank_lines_between_import_groups=1 org.eclipse.jdt.core.formatter.blank_lines_between_type_declarations=1 org.eclipse.jdt.core.formatter.brace_position_for_annotation_type_declaration=end_of_line org.eclipse.jdt.core.formatter.brace_position_for_anonymous_type_declaration=end_of_line org.eclipse.jdt.core.formatter.brace_position_for_array_initializer=end_of_line org.eclipse.jdt.core.formatter.brace_position_for_block=end_of_line org.eclipse.jdt.core.formatter.brace_position_for_block_in_case=end_of_line org.eclipse.jdt.core.formatter.brace_position_for_constructor_declaration=end_of_line org.eclipse.jdt.core.formatter.brace_position_for_enum_constant=end_of_line org.eclipse.jdt.core.formatter.brace_position_for_enum_declaration=end_of_line org.eclipse.jdt.core.formatter.brace_position_for_method_declaration=end_of_line org.eclipse.jdt.core.formatter.brace_position_for_switch=end_of_line org.eclipse.jdt.core.formatter.brace_position_for_type_declaration=end_of_line org.eclipse.jdt.core.formatter.comment.clear_blank_lines_in_block_comment=false org.eclipse.jdt.core.formatter.comment.clear_blank_lines_in_javadoc_comment=false org.eclipse.jdt.core.formatter.comment.format_block_comments=true org.eclipse.jdt.core.formatter.comment.format_header=false org.eclipse.jdt.core.formatter.comment.format_html=true org.eclipse.jdt.core.formatter.comment.format_javadoc_comments=true org.eclipse.jdt.core.formatter.comment.format_line_comments=true org.eclipse.jdt.core.formatter.comment.format_source_code=true org.eclipse.jdt.core.formatter.comment.indent_parameter_description=true org.eclipse.jdt.core.formatter.comment.indent_root_tags=false org.eclipse.jdt.core.formatter.comment.insert_new_line_before_root_tags=do not insert org.eclipse.jdt.core.formatter.comment.insert_new_line_for_parameter=do not insert org.eclipse.jdt.core.formatter.comment.line_length=120 org.eclipse.jdt.core.formatter.compact_else_if=true org.eclipse.jdt.core.formatter.continuation_indentation=2 org.eclipse.jdt.core.formatter.continuation_indentation_for_array_initializer=2 org.eclipse.jdt.core.formatter.format_guardian_clause_on_one_line=false org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_annotation_declaration_header=true org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_enum_constant_header=true org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_enum_declaration_header=true org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_type_header=true org.eclipse.jdt.core.formatter.indent_breaks_compare_to_cases=true org.eclipse.jdt.core.formatter.indent_empty_lines=false org.eclipse.jdt.core.formatter.indent_statements_compare_to_block=true org.eclipse.jdt.core.formatter.indent_statements_compare_to_body=true org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_cases=true org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_switch=false org.eclipse.jdt.core.formatter.indentation.size=8 org.eclipse.jdt.core.formatter.insert_new_line_after_annotation=insert org.eclipse.jdt.core.formatter.insert_new_line_after_opening_brace_in_array_initializer=do not insert org.eclipse.jdt.core.formatter.insert_new_line_at_end_of_file_if_missing=do not insert org.eclipse.jdt.core.formatter.insert_new_line_before_catch_in_try_statement=do not insert org.eclipse.jdt.core.formatter.insert_new_line_before_closing_brace_in_array_initializer=do not insert org.eclipse.jdt.core.formatter.insert_new_line_before_else_in_if_statement=do not insert org.eclipse.jdt.core.formatter.insert_new_line_before_finally_in_try_statement=do not insert org.eclipse.jdt.core.formatter.insert_new_line_before_while_in_do_statement=do not insert org.eclipse.jdt.core.formatter.insert_new_line_in_empty_annotation_declaration=insert org.eclipse.jdt.core.formatter.insert_new_line_in_empty_anonymous_type_declaration=insert org.eclipse.jdt.core.formatter.insert_new_line_in_empty_block=insert org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_constant=insert org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_declaration=insert org.eclipse.jdt.core.formatter.insert_new_line_in_empty_method_body=insert org.eclipse.jdt.core.formatter.insert_new_line_in_empty_type_declaration=insert org.eclipse.jdt.core.formatter.insert_space_after_and_in_type_parameter=insert org.eclipse.jdt.core.formatter.insert_space_after_assignment_operator=insert org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation=do not insert org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation_type_declaration=do not insert org.eclipse.jdt.core.formatter.insert_space_after_binary_operator=insert org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_arguments=insert org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_parameters=insert org.eclipse.jdt.core.formatter.insert_space_after_closing_brace_in_block=insert org.eclipse.jdt.core.formatter.insert_space_after_closing_paren_in_cast=insert org.eclipse.jdt.core.formatter.insert_space_after_colon_in_assert=insert org.eclipse.jdt.core.formatter.insert_space_after_colon_in_case=insert org.eclipse.jdt.core.formatter.insert_space_after_colon_in_conditional=insert org.eclipse.jdt.core.formatter.insert_space_after_colon_in_for=insert org.eclipse.jdt.core.formatter.insert_space_after_colon_in_labeled_statement=insert org.eclipse.jdt.core.formatter.insert_space_after_comma_in_allocation_expression=insert org.eclipse.jdt.core.formatter.insert_space_after_comma_in_annotation=insert org.eclipse.jdt.core.formatter.insert_space_after_comma_in_array_initializer=insert org.eclipse.jdt.core.formatter.insert_space_after_comma_in_constructor_declaration_parameters=insert org.eclipse.jdt.core.formatter.insert_space_after_comma_in_constructor_declaration_throws=insert org.eclipse.jdt.core.formatter.insert_space_after_comma_in_enum_constant_arguments=insert org.eclipse.jdt.core.formatter.insert_space_after_comma_in_enum_declarations=insert org.eclipse.jdt.core.formatter.insert_space_after_comma_in_explicitconstructorcall_arguments=insert org.eclipse.jdt.core.formatter.insert_space_after_comma_in_for_increments=insert org.eclipse.jdt.core.formatter.insert_space_after_comma_in_for_inits=insert org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_declaration_parameters=insert org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_declaration_throws=insert org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_invocation_arguments=insert org.eclipse.jdt.core.formatter.insert_space_after_comma_in_multiple_field_declarations=insert org.eclipse.jdt.core.formatter.insert_space_after_comma_in_multiple_local_declarations=insert org.eclipse.jdt.core.formatter.insert_space_after_comma_in_parameterized_type_reference=insert org.eclipse.jdt.core.formatter.insert_space_after_comma_in_superinterfaces=insert org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_arguments=insert org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_parameters=insert org.eclipse.jdt.core.formatter.insert_space_after_ellipsis=insert org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_parameterized_type_reference=do not insert org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_arguments=do not insert org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_parameters=do not insert org.eclipse.jdt.core.formatter.insert_space_after_opening_brace_in_array_initializer=insert org.eclipse.jdt.core.formatter.insert_space_after_opening_bracket_in_array_allocation_expression=do not insert org.eclipse.jdt.core.formatter.insert_space_after_opening_bracket_in_array_reference=do not insert org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_annotation=do not insert org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_cast=do not insert org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_catch=do not insert org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_constructor_declaration=do not insert org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_enum_constant=do not insert org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_for=do not insert org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_if=do not insert org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_method_declaration=do not insert org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_method_invocation=do not insert org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_parenthesized_expression=do not insert org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_switch=do not insert org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_synchronized=do not insert org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_while=do not insert org.eclipse.jdt.core.formatter.insert_space_after_postfix_operator=do not insert org.eclipse.jdt.core.formatter.insert_space_after_prefix_operator=do not insert org.eclipse.jdt.core.formatter.insert_space_after_question_in_conditional=insert org.eclipse.jdt.core.formatter.insert_space_after_question_in_wildcard=do not insert org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_for=insert org.eclipse.jdt.core.formatter.insert_space_after_unary_operator=do not insert org.eclipse.jdt.core.formatter.insert_space_before_and_in_type_parameter=insert org.eclipse.jdt.core.formatter.insert_space_before_assignment_operator=insert org.eclipse.jdt.core.formatter.insert_space_before_at_in_annotation_type_declaration=insert org.eclipse.jdt.core.formatter.insert_space_before_binary_operator=insert org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_parameterized_type_reference=do not insert org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_arguments=do not insert org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_parameters=do not insert org.eclipse.jdt.core.formatter.insert_space_before_closing_brace_in_array_initializer=insert org.eclipse.jdt.core.formatter.insert_space_before_closing_bracket_in_array_allocation_expression=do not insert org.eclipse.jdt.core.formatter.insert_space_before_closing_bracket_in_array_reference=do not insert org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_annotation=do not insert org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_cast=do not insert org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_catch=do not insert org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_constructor_declaration=do not insert org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_enum_constant=do not insert org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_for=do not insert org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_if=do not insert org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_method_declaration=do not insert org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_method_invocation=do not insert org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_parenthesized_expression=do not insert org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_switch=do not insert org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_synchronized=do not insert org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_while=do not insert org.eclipse.jdt.core.formatter.insert_space_before_colon_in_assert=insert org.eclipse.jdt.core.formatter.insert_space_before_colon_in_case=do not insert org.eclipse.jdt.core.formatter.insert_space_before_colon_in_conditional=insert org.eclipse.jdt.core.formatter.insert_space_before_colon_in_default=do not insert org.eclipse.jdt.core.formatter.insert_space_before_colon_in_for=insert org.eclipse.jdt.core.formatter.insert_space_before_colon_in_labeled_statement=do not insert org.eclipse.jdt.core.formatter.insert_space_before_comma_in_allocation_expression=do not insert org.eclipse.jdt.core.formatter.insert_space_before_comma_in_annotation=do not insert org.eclipse.jdt.core.formatter.insert_space_before_comma_in_array_initializer=do not insert org.eclipse.jdt.core.formatter.insert_space_before_comma_in_constructor_declaration_parameters=do not insert org.eclipse.jdt.core.formatter.insert_space_before_comma_in_constructor_declaration_throws=do not insert org.eclipse.jdt.core.formatter.insert_space_before_comma_in_enum_constant_arguments=do not insert org.eclipse.jdt.core.formatter.insert_space_before_comma_in_enum_declarations=do not insert org.eclipse.jdt.core.formatter.insert_space_before_comma_in_explicitconstructorcall_arguments=do not insert org.eclipse.jdt.core.formatter.insert_space_before_comma_in_for_increments=do not insert org.eclipse.jdt.core.formatter.insert_space_before_comma_in_for_inits=do not insert org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_declaration_parameters=do not insert org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_declaration_throws=do not insert org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_invocation_arguments=do not insert org.eclipse.jdt.core.formatter.insert_space_before_comma_in_multiple_field_declarations=do not insert org.eclipse.jdt.core.formatter.insert_space_before_comma_in_multiple_local_declarations=do not insert org.eclipse.jdt.core.formatter.insert_space_before_comma_in_parameterized_type_reference=do not insert org.eclipse.jdt.core.formatter.insert_space_before_comma_in_superinterfaces=do not insert org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_arguments=do not insert org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_parameters=do not insert org.eclipse.jdt.core.formatter.insert_space_before_ellipsis=do not insert org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_parameterized_type_reference=do not insert org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_arguments=do not insert org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_parameters=do not insert org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_annotation_type_declaration=insert org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_anonymous_type_declaration=insert org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_array_initializer=insert org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_block=insert org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_constructor_declaration=insert org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_enum_constant=insert org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_enum_declaration=insert org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_method_declaration=insert org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_switch=insert org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_type_declaration=insert org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_allocation_expression=do not insert org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_reference=do not insert org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_type_reference=do not insert org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_annotation=do not insert org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_annotation_type_member_declaration=do not insert org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_catch=insert org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_constructor_declaration=do not insert org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_enum_constant=do not insert org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_for=insert org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_if=insert org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_method_declaration=do not insert org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_method_invocation=do not insert org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_parenthesized_expression=do not insert org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_switch=insert org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_synchronized=insert org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_while=insert org.eclipse.jdt.core.formatter.insert_space_before_parenthesized_expression_in_return=insert org.eclipse.jdt.core.formatter.insert_space_before_parenthesized_expression_in_throw=insert org.eclipse.jdt.core.formatter.insert_space_before_postfix_operator=do not insert org.eclipse.jdt.core.formatter.insert_space_before_prefix_operator=do not insert org.eclipse.jdt.core.formatter.insert_space_before_question_in_conditional=insert org.eclipse.jdt.core.formatter.insert_space_before_question_in_wildcard=do not insert org.eclipse.jdt.core.formatter.insert_space_before_semicolon=do not insert org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_for=do not insert org.eclipse.jdt.core.formatter.insert_space_before_unary_operator=do not insert org.eclipse.jdt.core.formatter.insert_space_between_brackets_in_array_type_reference=do not insert org.eclipse.jdt.core.formatter.insert_space_between_empty_braces_in_array_initializer=do not insert org.eclipse.jdt.core.formatter.insert_space_between_empty_brackets_in_array_allocation_expression=do not insert org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_annotation_type_member_declaration=do not insert org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_constructor_declaration=do not insert org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_enum_constant=do not insert org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_method_declaration=do not insert org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_method_invocation=do not insert org.eclipse.jdt.core.formatter.keep_else_statement_on_same_line=false org.eclipse.jdt.core.formatter.keep_empty_array_initializer_on_one_line=false org.eclipse.jdt.core.formatter.keep_imple_if_on_one_line=false org.eclipse.jdt.core.formatter.keep_then_statement_on_same_line=false org.eclipse.jdt.core.formatter.lineSplit=120 org.eclipse.jdt.core.formatter.never_indent_block_comments_on_first_column=false org.eclipse.jdt.core.formatter.never_indent_line_comments_on_first_column=false org.eclipse.jdt.core.formatter.number_of_blank_lines_at_beginning_of_method_body=0 org.eclipse.jdt.core.formatter.number_of_empty_lines_to_preserve=1 org.eclipse.jdt.core.formatter.put_empty_statement_on_new_line=true org.eclipse.jdt.core.formatter.tabulation.char=tab org.eclipse.jdt.core.formatter.tabulation.size=4 org.eclipse.jdt.core.formatter.use_tabs_only_for_leading_indentations=false org.eclipse.jdt.core.formatter.wrap_before_binary_operator=true ././@LongLink0000000000000000000000000000016100000000000011563 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/.settings/org.eclipse.wst.validation.prefslibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/.settings/org.eclipse.wst.vali0000644000000000000000000000317711360615632027730 0ustar #Fri May 05 18:13:37 EDT 2006 DELEGATES_PREFERENCE=delegateValidatorListorg.eclipse.wst.wsdl.validation.internal.eclipse.WSDLDelegatingValidator\=org.eclipse.wst.wsdl.validation.internal.eclipse.Validator;org.eclipse.wst.xsd.core.internal.validation.eclipse.XSDDelegatingValidator\=org.eclipse.wst.xsd.core.internal.validation.eclipse.Validator; USER_BUILD_PREFERENCE=enabledBuildValidatorListorg.eclipse.wst.xsd.core.internal.validation.eclipse.XSDDelegatingValidator;org.eclipse.wst.xml.core.internal.validation.eclipse.Validator;org.eclipse.jst.jsp.core.internal.validation.JSPELValidator;org.eclipse.wst.wsdl.validation.internal.eclipse.WSDLDelegatingValidator;org.eclipse.wst.html.internal.validation.HTMLValidator;org.eclipse.wst.wsi.ui.internal.WSIMessageValidator;org.eclipse.jst.jsp.core.internal.validation.JSPJavaValidator;org.eclipse.wst.dtd.core.internal.validation.eclipse.Validator;org.eclipse.jst.jsp.core.internal.validation.JSPDirectiveValidator; USER_MANUAL_PREFERENCE=enabledManualValidatorListorg.eclipse.wst.xsd.core.internal.validation.eclipse.XSDDelegatingValidator;org.eclipse.wst.xml.core.internal.validation.eclipse.Validator;org.eclipse.jst.jsp.core.internal.validation.JSPELValidator;org.eclipse.wst.wsdl.validation.internal.eclipse.WSDLDelegatingValidator;org.eclipse.wst.html.internal.validation.HTMLValidator;org.eclipse.wst.wsi.ui.internal.WSIMessageValidator;org.eclipse.jst.jsp.core.internal.validation.JSPJavaValidator;org.eclipse.wst.dtd.core.internal.validation.eclipse.Validator;org.eclipse.jst.jsp.core.internal.validation.JSPDirectiveValidator; USER_PREFERENCE=overrideGlobalPreferencesfalse eclipse.preferences.version=1 libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/build.xml0000644000000000000000000000043611360615644023726 0ustar libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/.classpath0000644000000000000000000002675111360615640024074 0ustar libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow/ivy.xml0000644000000000000000000001103111360615634023426 0ustar libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/0000755000000000000000000000000011360615642023542 5ustar libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/booking-faces/0000755000000000000000000000000011360615642026251 5ustar ././@LongLink0000000000000000000000000000015300000000000011564 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/booking-faces/.springWebflowlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/booking-faces/.springW0000644000000000000000000000133611360615640027704 0ustar 1 src/main/webapp/WEB-INF/flows/booking/booking-flow.xml src/main/webapp/WEB-INF/flows/main/main-flow.xml ././@LongLink0000000000000000000000000000014500000000000011565 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/booking-faces/.projectlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/booking-faces/.project0000644000000000000000000000236411360615634027726 0ustar swf-booking-faces Spring Web Flow Number Guess JSF Example org.eclipse.jdt.core.javabuilder org.eclipse.wst.common.project.facet.core.builder org.eclipse.wst.validation.validationbuilder org.springframework.ide.eclipse.core.springbuilder org.hibernate.eclipse.console.hibernateBuilder org.springframework.ide.eclipse.core.springnature org.eclipse.wst.common.project.facet.core.nature org.eclipse.jdt.core.javanature org.eclipse.wst.common.modulecore.ModuleCoreNature org.eclipse.jem.workbench.JavaEMFNature org.hibernate.eclipse.console.hibernateNature ././@LongLink0000000000000000000000000000015100000000000011562 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/booking-faces/.springBeanslibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/booking-faces/.springB0000644000000000000000000000055311360615642027661 0ustar 1 libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/booking-faces/src/0000755000000000000000000000000011360615636027043 5ustar ././@LongLink0000000000000000000000000000014600000000000011566 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/booking-faces/src/main/libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/booking-faces/src/main0000755000000000000000000000000011360615632027704 5ustar ././@LongLink0000000000000000000000000000015500000000000011566 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/booking-faces/src/main/webapp/libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/booking-faces/src/main0000755000000000000000000000000011360615644027707 5ustar ././@LongLink0000000000000000000000000000016700000000000011571 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/booking-faces/src/main/webapp/index.htmllibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/booking-faces/src/main0000644000000000000000000000013511360615632027705 0ustar ././@LongLink0000000000000000000000000000016400000000000011566 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/booking-faces/src/main/webapp/images/libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/booking-faces/src/main0000755000000000000000000000000011360615644027707 5ustar ././@LongLink0000000000000000000000000000017500000000000011570 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/booking-faces/src/main/webapp/images/th.bg.giflibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/booking-faces/src/main0000644000000000000000000000206211360615632027706 0ustar GIF89a#烞®ž®€Ÿ®ž¯¡°ƒ¢°ƒ¡±ƒ¢±ƒ¤²†¤²‡¤³†¤³‡¥³‡§µŠ§µ‹§¶Š©·©¸Žª¸Ž­¹’¬º’­º’¯¼•¯¼–°½•°½–²¾š³¾™²¿™³¿™µÁµÁž¸Ã¡·Ä¡¸Ä¡ºÅ¥»Å¥»Æ¤»Æ¥½È¨¾È¨¾È©½É¨½É©ÀʬÁʬÁÊ­ÁˬÃ̯Ã̰ÃͯÃͰÆÏ³ÆÏ´ÆÐ³ÆÐ´ÇдÉÑ·ÉѸÈÒ·ÉÒ·ÉÒ¸ËÔ»ËÔ¼ÌÔ»ÎÖ¿ÏÖ¾ÏÖ¿Î×¾Ï×¿ÒØÃÑÙÂÑÙÃÒÙÂÔÛÆÔÛÇÕÛÆÔÜÇ×ÝÊ×ÝË×ÞÊ×ÞËÚßÎÚàÎÜâÑÜâÒÝâÑÝâÒßäÕàäÕßåÕßåÖàåÕàåÖâçÙãçÙãçÚåéÝæéÝåêÝèëàèëáèìàèìáëîäíðèîðèîñèîñéðòìðóìñóìóõïóõðôõïôõðôöïö÷óö÷ôöøóöøôùù÷ùú÷ûüûüüúüüûüýûþþþÿþþþÿÿÿÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ!þCreated with The GIMP,#þý $HРA|üôñ³gO=õä‘hçΞûw©Ïÿ!Iu[xÒÌ?ÈWÐßgÑbLA“Èàª:ª:ºWÔSÉÚ¶…XOífð« øc@ ¡hhB„„!!@B„„!!@B„„!!@B„„!!@B„„!!@B„„!!@B„„!!@B„„!!@B„„!!@R; oªT|²ŽÃ[ê•,¨ÉrW%É Ga­õJ–QØk}R£å”Ér2\‘П4u€dÒN=ñ•¡Ùí’¨­,–³1Æx0zERuavÊN¬ ®Ùœ¥¦¨ª”GO äqîhZÛÂVU¸:­Åïc8üJèV-£ … BÖt¯YºÆî°Ü,«N~6_Ü䞢rñ²3v}‹µÐ´ ¹‘“âVŠ :XÂÑŽò2”^¼/Yb¯vaeåFòŽd^Ü\^¼ßQŒ‰&E$ï¯ Š)‘xdQr.I2{W†EËíNÐDêʶ@ÓíIä'QE9?”œ¾³»½>iªJê™Y{Ý¡+AMIKHDpÄ&5{µ!VmmcY tÞQ;Î÷/.RuªªtÖÏü“Ò*tÜæÊs/µxeö¨†_jA•zy$Èc~k]ï ],í-sG' „³/µ$ËíTve]Œµãc-Õº8ÌüÑ<:ï²÷* ½íÄÎ#ÞX2&e v ¼5)øwF°¯8xg9-p-#ˆ(]>ù³´’èÄR÷HÁƒñX+½Ž¾Û6ëât±ŸEìÊô(êaSo Œö{2µ ñEXFE%GË+ÞÃ[ê•,­ò\›ä¹#¡Hì5¾©QòÊ; oªT|²™.FK’:ŽÃ[ê•,£°Öú¥GË)’äd¹#¡Hì5¾©QòÊ; oªT|²™.FK’:ŽÃ[ê•,£°Öú¥GË)’äd¹#¡Hì5¾©QòÊ; oªT|²™.FK’:ŽÃ[ê•,£°Öú¥GË)’äd¹#¡Hì5¾©QòÊ; oªT|²™.FK’:ŽÃ[ê•,£°Öú¥GË)’äd¹#¡Hì5¾©QòÊ; oªT|²™.FK’:ŽÃ[ê•,£°Öú¥GË)’äd¹#¡Hì5¾©QòÊ; oªT|²™.FK’:ŽÃ[ê•,£°Öú¥GË)’äd¹#¡Hì5¾©QòÊ; oªT|²™.FK’:ŽÃ[ê•,£°Öú¥GË)’äd¹#¡Hì5¾©QòÊ; oªT|²™.FK’:ŽÃ[ê•,£°Öú¥GË)’äd¹#¡Hì5¾©QòÊ; oªT|²™.FK’:ŽÃ[ê•,£°Öú¥GË)’äd¹#¡Hì5¾©QòÊ; oªT|²™.FK’:ŽÃ[ê•,£°Öú¥GË)’äd¹#¡Hì5¾©QòÊ; oªT|²™.FK’:ŽÃ[ê•,£°Öú¥GË)’äd¹#¡Hì5¾©QòÊ; oªT|²™.FK’:ŽÃ[ê•,£°Öú¥GË)’äd¹#¡Hì5¾©QòÊ; oªT|²™.FK’:ŽÃ[ê•,£°Öú¥GË)’äd¹#¡Hì5¾©QòÊ; oªT|²™.FK’:ŽÃ[ê•,£°Öú¥GË)’äd¹#¡Hì5¾©QòÊ; oªT|²™.FK’:ŽÃ[ê•,£°Öú¥GË)’äd¹#¡Hì5¾©QòÊ; oªT|²™.FK’:ŽÃ[ê•,£°Öú¥GË)’äd¹#¡Hì5¾©QòÊ; oªT|²™.FK’:ŽÃ[ê•,£°Öú¥GË)’äd¹-»4ÚMó ;4ÚMó w(Êòº“äÆã]š?í&ù…zÚV¹Á­|åÇ€²p‹fíÁ­“,ú÷jY%{™Ô«‚¸«‰”ųL^ù]Á®q -ͺ™´ìpB<]µ¡ÕǃFU©•D/'”Ž''“%›ùá“î[ Ù«}ˆíҹͧÆôp ¹gßÉD—n©àye³gèb‡»¬h$…ÞôêN¬­o,ß§ey»‡KƒªI—Ú¶VÝ«°]êIz°Á•Á¢X‡rÎmÕ«h梠ß°åà•J”Taœ$š"PJ9'tW}©&EÊ’eö®LŒnK2{RLª!•$È£".K2¤}ª)‘$È«‘%™T«5oe¸²M5ºûUI“†¸¹u=©Ù›¢Ø3p¦ †Dײmüõ¤÷ai $µTæ—„·6£6åmÊ Ëí%E¼TNx‘Ã++UW%DîšW=ÇU¬I2/;O¥§§»ŽíûŠÚ™Öóà”dö¤™=ª1zð½tÜç¹ È¼2(ûåÅEÅǷׅ霣*.Êjxãš3­i…îQ”^¶ÁKM1™Ì.=ÒŸ%$Y¨HÈuGÎ+O.ã£-x0¨ä–£«'1»Và­:•º“;(ÖoÒÈ¢ËEùª>s’ÅŽ‹óT|ç)í9KjÁê*ü™¾L¯mŠ„MGÎrM³6©Þí?=ÉЬ(^°«©¬–Òc&GfÈYÈÔUõHªÙ Sas£í[Ãýû–‚pËH=듼®ŸÞÿRnÌìTm8Þ¨ùÎHûóT|ç+û„]]C†4:¨„/Bš­_&FL©u–~)þiHuž”~)þiVîM¸+­EO“'&T›M7sçù¥6ëe8üsüÒ­\N E^§È›²´[`Áòçù¥xÛ|Ø/Ÿ_÷¥Xp)(ëTù ² ·B27æÓýá^ºßŸ_÷¥M~­k¹èR@ËHä¨ëÕù2dPD\Z_6q§Þ6† ]9Áò‡ZT§äô7 —û¯ëÕù1v4m”ýk™ÖM‚ܰõ¥*[]?QÌ|øpþôèBì˜Àò¢8ø)TÛ²6X ö{ÖRÔÕ[äÅÙßj·ÉW guGU.ŸÓ;B±›wÖÅsšš‡î–®BÚÄH%­ôšw›üR:B¡mÛg!¹1¹’¹.‹¯Eªš«ŒÝÓ6£%{3‰Õm]ú'–ö¿ü©ŸÛ÷­ùSWúS¤áRØÒ§Jq¾(ô85à×YöŽýW&d­ƒ»•Ô6¶Áq £½²¢ž¤°îL*ç{y,§G¶«UfÉÄˤ]S呿*Œcé‡~ªÒ¯fëíŽLÞÕ@5Æ2Z9¸w{×§ ,q[œr’¾ÈÖ2ËK¼réð„LuHÚ«55¾ÕKSJéÚù#{™IÔpIÙùåŽ0ÒþºÀƒœ+Í®³Ø(‹÷ý½y•t}&î¶;i:5²Üã-¼ÜúÇT; ,âܤ‹ÕËqç´¸îþ©ÂP@Ó0ëþP’cšBÞì“â­Ñ§ñEºP·‚Ò Áõ”ñ‡îÉÇU ¶õuŠ@ÖT»ýw©?áSé!iÛÇ6’©®l"´ï´¿E*…?Š8pjl3ÔÕÛDÓÍ!“¶‰#Èë7rîVŽvz¦RÙYXF¼*\ÙH[öKŽîA¸ãÿY«êœ¡ÌÙ âÔtôïaZMYÙº)Ùo³êäŽî¶8K˜{[øøªŠèÆÉw´º¦¨Wo‰K2Ú‡ ³ÓÒïSÊÌhèËUOGp¶šÓW cÂ鎞‚_býYGÖŒiègf@Ë¥¸þ`¤ž‡vPg¹þ`®»$m–='Ð;xì ;óúàýŽaþ‡vG¾¢æ=õz:Ù3¢åÿÔÒÍ .Ç#šnh /ÃNB²Òé߈¯Ð«ÛÊ9Çúك¦àürœ¡-—v3[^ßürº w¤oɾÐy…=Šý’>d³Øí[aOg™õ]\“˜Ïß8+·ØªZ¨·Ømµ³îàÉ,•. ïÕR[*JÎ.-ÅaרºÞ×Þ¨,Vgܪœæ:`ZÇ—Hìz8ïø'kBßbýXÉåc„ßv^ûKM[ÑÑÂàÞ¹„½®>Ìœ‘íYKõäÛM"yZìJæÊà5atÛ=Ÿm6Ƶ×:˜_oµ0‘÷ï9¸õ•écš(£­0ÔÏCIŽJ·á‘Úù,ï8#R¹%§¥fñ_¡Ý²Hç1í]|µ„ ÞÈúÀ73®¨—ho žÚ£Ü¨®§«|1·p·ÊÝ'^>½EvAqÈî\Ýt(Ç‚ìmeðä ¬ŸrWíeá›®}Q ƒ JÎ0ðíC{ÓßÓõpÄÇ9ùàô)ð‹8C‚þ—i¶‚©Ã«œ€\p2Hp§>áµÒCV<–—9®opïýÇâÖ(DfÓ3áŽ1¯vóA˹iðZ IšØÂù@ÞsšI8; –p÷¨•%{"#7kûvÒ_'±Õ$Ê‘–ã|{>õ£³>ÿ[Rüºn¨9¥¹Ë{ÖÎϱô5–ÚJaNÆÎÚ¢E@xÈ eWIkµKºèÚ\ðÐÀ8œS£M«ÙÓŠ~™±öÃæÕ‚~ýÜ”JÝ•·Åa©ËZHûç-ãâŽiÈ-¹WÜ©óK.Ÿ€¬eJ x6T¡ÁÏ–Ÿ:ºšSÑØèÝÅÕ4«gA®™Â~ž,é…Š„x/Ò§ñ§Ù;lôÅÑö’ünT'lå3nJ*BöÆùòÐÞ8ÞÆxªzøÉy×*%NJzùv¶¾Üùå4ð°ã‘ñ[ ào“§t®Y[4YÛë—÷˜ºuš¸Ðá]Rƒ~•(/b¹›!Bà í-ÿÆrÍŒµ`dÕüw-<1Ñ—eIl\Ê…?‰›§ ‘Ø«N4_=É?±–¯ÿ•óܶ]Z:°§·§Â)„x8¦Q•æ…òžIµÁÚ®ÂG“ç{‚Ú7Y½’`3ÔKZBÑåR~lyÚ‰^và—o“vG{B³ sd¯§þ‹¥h>ìª&<µÀ…%³CÚH äJa+EØí5A36V‘Ð4öx'oX7HÝ•Ç ¾ÕÙ6Co¬7›3(/’ÃOR#•“»—» 5äR§Ø‚¸¸ÉM4qokŠz½< 8^ö«KÞIU£%¿±èÖ¥×yÁ£ŒÅPb™’ŒÇ û ‘}»Kv¹Ë_;[äÆZÓ À]>·¢+\¬.¡»UD{·Ã^?‚ÃWÐVlû;]Ñaê]0=[½£Ûì^}]z ø›GŸ'4èÔ¦½^ X*ëÍ-4Ó†4¹åŒ$4$žäPSVÜ&êh)fª“݉…Åw›m-÷£çÕõÛ#ž¶AFì|A!r6íÄöxM»d¡Š‚‰‡úwÆ4ä~7¦¼»•«èéÑQ”§³WÙoýþ“RŒi¤Ü¶emuƒh(a3VY«aŒqs¢8  Ëí]O`:O¬ª¹EkÚÃ#g;‘Ô1»¤8ð0y¦º[°QXn”›IGA°I&'¦xû·;¸àpʉèéÊ—ZŒ®—›ùDJŒ\3ƒÛÜæ´±ÔUÌØi`’y\pK‰ð^ÇK[-i¡Ž–gÕu-i.Èâ0»D»AO~¢¬Ù¨­²@à1LÜðY‡íŸ`ï•ìe¹Ýª't•µÁ­…¤ä0ßJ³ÐSTãQÔô¿{¯$öñQRrÙœòílºÚ\ÆÝ(*(Ì€–u­Æö8á%‘ÝjmΑ¬¬–Š \|£?€]m:CµÌûe}¦‚é½qެeÔîΣ΀Znªc¨è¢Z¨ad žÜ#`ÀnH8SØÒ—QÂ¥ÔUÿlžÞ,eá»êD”u±Ñ¶²ZY™L÷n¶W0†“È{±[M–H©ß`·W:I†g¹{A<¹u^–ßjƒghîwT2C¡¥u²<åÅ *Ñ•Lü~ÿv3§ANYx8ŶÁ}¹E×[í•1÷=‘œz‰p¡®·ÍÔ×ÑÏK'sean}ÙZvt™µ‘Ì×CSK ,Ñ´ì¦h£—<|WO·ÔÐô‰°KYHÆMºö5êåhâÓÇàRîZ&I„YÔÇv Îói§W,œrñǰëíîT©ÕˆM§tr ¹Ø{¶Ëö§ÔÂù(Üøzª†·ÉpÀ?”èF Ë|RÕ¸ýå}/C5EU´ÕѾçnpê冪íÇO·g®õ•rMKk­ž?´Cƒ£ÎiªÁ Ð윷ucMÛ§ÿ‘¿ªúÇf¢fñ„¯š¶bÕWM3ଥ–œ›,°·x3Qžåõ&ÏE÷‡#ŸrÞ–Éœš‡v‹JF`c¸…C³Íêq‹Lv²VšºáPÓÓîÖ׎3çè·§¹Ek2ÄL[ÀèŸd­ss¼x„³W §º?žõwQM¢k¤`Ñ@– ¦TŸ ·£ 2SBï+q¡Dlžå¥vCIvŸDÈe!Å£ 8†œV> ØÜ@iÝ òiø)o'ÍŠOMTL‘»Í5¸#˜ÆWk¹lM5ßi¢¹Ý×EMþ¯ô[ƒ !r‹4骗';µ`çü«èƒ'ªüSI¶ÌÝEœ2Ý-,w/.9á’¹÷OVÊxv†ž&å‘T1­`nF­98æºôтڂ2¹ÇM ˲³Ò-ªŒÉe/±1^´|Od±mÍêKÍÒÖ’uÓ>ÓÞ«Ãfkû;É/Ýoµi¶µ›»qV×z"3ÄeÀ*¨ã”Ï ;FW gt£e±O#@=`ô >IôŠöž¡ÐH&fw»°8+ (LL {A.‘ÌÏ,pPb§,«Œ† Ú†·:RÆ[ßrLW«¤MuYi3‚Ù|‘Ž ÷a+ª.Ž¢ž¥Íxð‚ý^âI!¤ƒåx-ÖÕìl×;x¬m$0¼Æ×4nîœãßä¬>ÌWZv’‚hé$÷\Ò¢á‡8û4ÈUrº±{8³¬t]REÙÔÕE¤±¤µ§LðÁþ U{¢eKâ™±» ~ì’gqîÀ™Øž†J¦]›D¡Å™=À÷­E悚#Ýk!½ú {Õãl½CH5 @ÏÁD¬Œu kºUãYˆÝ…UZ>î\þR²šØÑ3 ȦêÞê*y'Îkà Ó@¦0b‡|Ò‚aŽ<å+–&­ìF±Ûo÷{\uR^a¥†a¼[OK¨÷§³c¢£¶]îµ-ÍF>YìÕŽKÎÂPÓÅ<ô§t,.-r›³4ÚZº¸ w$™>Vt^ž ;Xå½Ów9t–Øìý+ÁEK%Gg’…ÒË3Ÿ“’3¯¹kßo„ÉJ‡·Ô¬§éºÝ¸ß%ö³îôœµ±ÓÉ€Üärà²4æÑhOÒrz®‘î-ÇáÂé–&9‹ +ßÒ•|@ç78øÐ,-Ý–0xçUKnk6]2,¢u‘ã*@`J —BG3À=È1ŽJPbð·Êq"çÏÚ£T¯Š>+áÏ<·Ùáõ1÷ä¡ÊÇYª-Ù…Ç n•®DÖ÷<ÝDm1y^‡›ÊTz½£›€úªXÆÂ‹x#Þæê×ûŠßô«³FVÒÝ)h%¨âksºà5È Ÿ˜äÝ1¼;–éÊÚ½ Q›‹/R›„¬ÍÇíMÚÇw§–¹6H\âZæ“Ét™¶FФÖuí,ç‚5\ï`öF¾ñrŠªªRÛ`p’iå ®TÞ—6® õÆ* {·¨(¼–»¹îáŸrï¥RTôsUC}˼tiI%DŽ£ˆ$ñÊÆ“Ã'EÄ®¶›•¢©Ô— Ia•‡-8>Ð{Ÿ¨BN[k L^€Å3žÚˆœÌ·ßléÂ¥¬ØŠ^~òiî®g±6a=Ê+ØöKU+„’Ë(Ày†·™Nô•µgj/ 4ís(iÆä ÞÔªqòO¹w-´8èVŸÛOð\3uï1ŽqÇŒ®÷¶”s¿¡ÈàdOt‘ÓBKÉÓO§Eôëò4«Ó?Èá”'ùý7üVþð»OD’¶Žã3é\vÝ®¹ÒÆ"~ñ™ƒ§*éã‘®kº×7×+«ïíÁì+_S5tÕ 68ÞŽœœžjÚ9eJ¥)¯O›ðMxJ[Ûg,õ÷›¼T”Ò¹Îxßqiƒ:’{–ß§-§¥¨e&ÌÛ¦GJCêÓ‘¼ÜüI+!rÛ}§®…о¬ÀÇŒSHäÃå`ð*ÐÐ㸤È4Ï$¹4Ó‘A׸… ·'À¥5»Ñ¾.^SWŒnwã<²=ëÈÜ滽§C •I&Çžò½ êªLgÑ>I¹20Ùæj‘Rá,Ô4}ûÖ-nI2EÊÍYe—Ó-.‹?œpñ\Gi©dc›‡°–¸{Bì´•&*ˆ*×{uÞð²-Z#¦¼ èüÚ¹`Çîñâ½o¤ê'ƒ:hNÛÒùÿ³ÖrÈÞà#qq :j»Fö UÇb-.©¢‰Ï0dϽQYØÈú;cKH§¶=¿ÿƒmc?Ô…ú]¦”ùH¬ê6­Ã1÷{ýçe:A¶Ø­•²v:ɘײ_/Bìi•Ú)ï’Ew¼ÓÔP9ô–ù„m’>-¹9pž’F÷M{<¶/ú—k£wœöÉ„ègÿñ'™É%éL²±íFÌÞjÊÖJÉãtŒq­!§tê{ò¹ÇJ1Ë[_siMcÇÉÔñï÷¬ÇGM,ØZ©AÝÙ+ð{Çß…µÙ›;êº8ŠªPç9ôp’î9òB«¼½i3±T’Oq¶î³/Ü~÷/ vzÙØ¨`¥‰˜Ýnó±ÌêW5覎 ZûmTÑ9ûŒ”Ž8[K¿I[%¨¬¦©Ýœ£Î?UËesª¥Û.6žÎj©èëš}5Tlpæ×=ºü1õ]BÍiqÇzçV}¤¶Ý*d¤̓PÈNGèáÿÚºu½˜sµïZ'³9ä½j䨛‡èªjZa­œ7ÎUÈâïr¨º*7¿0W¥¼…uho— 0½iø¦Çîò赎Kä%"G8ðvo{Þ¼/Ñ=ÝÆIrõ˜'@AHϱz×j¦Ä&q*pÚ~˜áv?Ú[ùBî±J]'Õp« ÜéB)sÚ¦œÿ”.ÁOWÊ(dŒ3³.ÜW689sΔ!s¶~Buf;ÁtxÆô?Šé&-íœ{Gï ™ïŽõ÷#ãÍ·¦öê 2!?ù¨·S“4dp&^ïjÕíÕ1;q8Ñ”çÿP*›t±Bîß“÷…ÆÖç||utÙ§&V‚ت7N9)6k0«ÚJHú¦¹²LÜï ‚0´Š*›]Î`<Õùà¥l|`m]3á{»L$¼?ºÇbµÚ*n‡¬,xÝÊ4ÕD»[YNZç9äÝBØÇå¼Þ4úª £Æû9nŸÞ“„T.h›r³,ú:§2ÒI À.Ê·¾ÄÎÅ®%Úw€˜è­áÀ ‘•e´´¯Ñ­iØó§2´ØŒßÜVÃ$b”oJÜ‘Nª®¬±ñÊZà|“À¬ýÚ·qï$–ù!YtiI5Òá<Ïga‘Ǹg‚äË9bކ±Ë«ÌR¾ÕEtn3Kå4†÷}µ)Hûa£‰Â¡±8·/'>O -}@h•¬kC@ä½sC˜FWj¡ ZÇ7VW9ÇGûMn´ìe-\U¬©x=¥y<}ÊÔmÍ•ñ}ÝÒgIŒéõRïVyê*@†ë[M¾@êâÆ1ÏÞ³W{+à™ô´ÛCvcq‰”I[6Ò3¶æïs©Ú.•¨îôöúȨ©èŸä–0Ð]ÇÚ´O»×D #@ÿYJøêl½&[­Ü«'¤ž‰ò=“I½—kú+¹Î^BóªÊJWg\±““hií}%I]pq"JmwG~êjÝÒØ£­Í^ÏÔˆÃÎ oÈÊÄt‡Y»t#°»'â§›5CÚ×0´Œx®š4£5y2*¹&’GTƒ¦ý‘7­‚åN{áÎ/Kû +€7I#Ïö¸ƒì•:¸†x¢+4¤áÌ‹â·T—ÈÃÕñ>‡¤Í…“†ÑÒaÞÁ>6ÿc26Їã_?Çdi]=9ø—X Ïúµ8ønŠùypi>(ø¯tF‹óãˆf¡…ÌÈ8pÔ¥°\›YL#yÄñŒ8sö¬þ‰­éig4çoÌ+-ö2­K¨¿q•è$ƒ‚m¢ç |9iÝ”zL °9FWLuu⬤Íj‰Zæ‚ÿµûA{gU[\æÁéˆn3À*¤åx\É {Öœ¦ï'r’““»g|èê¢jN‡dª§~ä±E3ØîDpXt©’•±ÖQÛjÞ–•¿Ø(\î…ä`i&Jyˆø®hŒ¨ä½m]j”©ÒÁÚñ;kÔœ! _±m}¾\ïs‰nᾄm¬`ö4h¢Û«& ­Š²Ã$G-nó~#½EÊ2¼—)9dÞç “næÚ“¶®îE5mäØ ×nï×:i ¬/lÌ,{»8ÞÁäVW(ÊÕêk5g&]Ö¨Õ›.vsh®6Lëx¦Ì¸Þ2ÄŒgÏ*üô¥µå»¦¦”Žêî°ùFTCQV ɤ#VqVLØ7¤=¢l½kYnÎC…+sŸzzn“¶®hÌsMG#¾GXwHÑß’›tÄðÑ[º¯ódªÕ9,nµòÜ+宩êÛ,¤ÛºÝ4 Ûg¶òÿ³öþÁjšA¾_‡Ç““ÅeK³Ä¯2³…IÂYEÙ•Œ¥t÷6 ¸íßÝ)me'\ç—‡²Ìs.!m¶ƒlêö…›4j|¸1£­’výÜc¹¸ïYNƒ®t–ݺ‹µ½¬mDF&=ÜñJéÂÍ[nÛ:‹Œ±¸ÒVaÑË'=íÏ5èÓœá§uâýMÙþꌥN¢{Žÿ¥;—ÿ°Ù>@ýÓ£=¨µí¤•V[ÅŽßGVdoW {xà Œ…ÂK‡y ¬t1jûž³m¯ÄÑPÇŽŸ­ò]&u$†<¦‹QZu’“º÷¿…Z’šMíîa6æÓ‹k.¸I0Ã/ÝçŽéÔ} ¥Ê±Ú«»ï»E[v{w;L¥Íoåo<0ªò¼ú¸¹¼|_cšvÉÛÀ¼ª+I­­mG1°åäwžI»¹.4TGzC£Þ? U–˜BÐN®Ú•·ÃQM5úÝÖ¶ª–F±³8†ÂÀpsÃ’ì[7´í5L–KŒu!ƒÌÉ$qURJèI<Ó/øîY½ª”Ã$Y•Ñû˜NS{M´ðOVv‚q,y¾îKÛ@Ó.y‘§xú¾†£¨ÔœZüž±(E«Ü¥íƒ{ª_”SÐJg‘±²¦|»†b!CŠŽÓ6s%FHÏôÅ1CQ/Tð1²’â@.”ž’õ^ëcÊŒ“v%º¬êÕN#”%2êÒÓéUçþTSÝ¢sE4Î ~ýÜÔi/4Ä{çq+E÷·øÄÔ¶³Lÿ>>è’{o>ßòÂÌÓÞ ‘û¦—޵ߪ¸³WØ\e–°á´Ç3€^qìYV« óØÖ”%UÚ?ÚŸÛPâ\Óåh}µÝ[£´ëÜÎßbµ\vŽJº ­-,p,ëòß$ ðׂ^ÐÝìôqE ¤ÙÚY<›Á¹æzó?å´Ôbå)_ò6_M¯VVJß™ÛhÆõs«îY¼‡~Á?·w÷…Ììý.þÌBêK¬Ö¾wï±ûÚ7Ø9%_:j²Üh]LëuCZüd‡ 5\”µôg¯kž¯ü}tÕ•ìrm»¤ÜÛš¢Ñ †—ˆç*϶&ÃE„“)ú­­îë³W[Ü·UY¦l ,0‚#~÷=sÁB¨¦Ù™h"…·é{NÆ{ÿÌÍö‘·i]/µ•§Þ³Üž2mŒþí›7æÖÒ¼7Îcc½ÄŸâ®„›;²¦Üª$ëål»Â›¸Æœ}‹GÑîÄRWÃQ¯N˜Mž:Ç4èýÜ÷ªKSI¯K¹]%Xµ&¬t¹ÈŽÛΠ~«)´3µ£#F¼¨¼ÖSÓÉN(Rèø?Ä…‹½mÊ¢}ïÙêøÏ£åÌëõY½mÇf^J­øþç^è†N²GíS*.n¨ÚgÛÌ›¢Ÿ¬æ1•EÐL¯˜—JÇBâ×eŽâ½ž‡´í^Ñ×½Ù4YÑuFjP‹^ç<¢ã&™†”Ç5Lïvº …EµWk¦†ÛUÔ2GåÀ4j®.tÔÔô]£yÂI ÅWEc·UCÚ,ËIÆ{× £$ögBi­Ë+Ôí=ÖWE òK)i$õy q8 ;cµQÓÊj®-23 Æ8ïà¼ÙÍM‚ªAo~ë¤c›¯³è³N¨žºG¹Àåî {Iʪ«;¥rp›±Ò:?¯¹mnÄGQY[+j^×MÆ0¬«v2†Ñ»µNg/ë${Žöº’2¨º»TlÎ˺Í[f¹ËS®|ާ§±¡Ç#PVº§míNvj)î±có[f8÷a¥{))%sƒ+lr^‘ísÛºW±Ì÷µí’‘ì£ùg LÀ—8~ qjk¥+Õ5ߤ ÖÎÓ,pBã#4ŒÜÑÜK€áZìu½÷«Þç_Ô¶0ft˜Îö.*ѼñFô¥h]Ÿ8ôOP͹«ŒÆwß&ZÑÄ­ÊÔÝ!¤wY™Õ»{›ÝÉ}!´ lvÑÜNÐ\f¹©\û% Ì-dÝl””Àû,8Ž0ÐA-w¼FJé…zñ~ÇËrJîþj;ff¤/¡nÝ lÔÁÎ¥ž¶—<0àà>,ÝoA/-/£¿`A’ çÀ­$:Ð9/hœ/ ­'9  Ut!´ùþmu¶¹§¹áàýIoBS½sµ4òÿÕ,ÇR™! à(uBŸ‘J'§ydàBºµmDÀE'þâ«“SÀÉFWM=™JQŸ“f×µÍk ܬM-UÂÜ︓~?ÈíB¹ Ú*YˆeH0<óà˜pqOO(þ%îU–ÏÞª¬•nª¥†’g¹»¤TB$n=ÅTE,r´:7µÃ˜)yH·td›NèßGÒÎÖÇŽ3ncÀh¦ÀÅgv—i«ï쉵´ôuN.žœFI<Èâ¨ò¼.‰ Yê*Íc)6‹Ê¬ä¬Ø¼£)£+G~R ǹac;2’é8•½Ç‰^eM…‡Ý7å {›Ê2–$VQ”œ£(eIÊ2–Á ‚ ‚;–ÎÕÒ^ÑÒP }ki.ô€`G[ùÇ,÷üV'(ÊÒYÓwƒ±hÎQûYµ|Ø_ÖÐlŽÎQÏÝ+iwˆñT;E´w­ œKv¯’£wÐg3ÜÑ T5U”Ô­.šf3ÞuTUÛHçf:KçwwV­Efö4]J›ª¨)¢2O#XÑ̬åÂïQ^ãtpž/ï*¹°ÔÖKÖÖJçžG€V´Ñ2&€Ð³n1üYÑN‚Žïv&‚´2O­iÎf”ôGUÉQ¹nÍ™i ÈNáF¦vŠP๤QžãJm)«6@ëTê'÷(I¦v±¨®ˆ/!vBuD§v@R‡ÂÉ"]¢ë)÷‡ê¨^;Ö¥ícš{ÂÎTÇÕÊæâºtòösªó ^Ä—. 6áÜ›#Šyɧ…dJpÕ%¼ Juá4FVžÄˆtä¤JÜ<·»ˆNH5ÐhR_åDÞÓ…Ftå¡^ 2m}h½hÔŽç$¼ ZªWÀÙk‹Gœ„óÜ Œ›¹ãIyDƒ¼`¥F˜øøš¡‹ÄL”O$º™ÛÍÚx¦ÚGRwFLÞáÖžõ½i`ºl©o•5(,wµ‡‚¡±×vK| ÝÎë0¯ömâ:¹í³ãª¦'g»< Æm 5Ùf¥#ˆ–¯èzÞ”ñfôýJÆKjkÀé.ÓZÉXìc—MµmWWqÚÝ=¢ODw}Þ Ú¹Åîï.'e¥O†ÿq ªx”‰&x/?åÂûhW‹»;:WH¹Ø«Û¨öz¶˜Æpûuc3ŸÍ#J¼´tÛÒº†Ùc²ÖT¶×CNÆ:*xZ\[»Ì‚¹}΢š™ÐÆF y¨Sì÷žÂq&ÂíÑŒŒ ,'[Ò¬k[šM¿éñx¸ÓUÖ²´HÀ3k9‡5£ê Ñ7n^mPº¢i&C©¢2=¯x ‡3ŽKž×Å-Ρ®¨¯qnï““Óî^Åk¨ld7–µ¯ôšÖã*!^+ɢαf¿Ûo4†ÝS}]Þª¦6SɱÐÂÞuþW,jº¶Î×ô‡²ô‘Ç‹g)iZÜuϺ— êçdêBùžÉq¯¡¢Âc¼×ïg:V¯cikv¶îË·®û–ÈüÂA×Åb箑ºRQÞÏ÷ùŸPì×H¶ÁVf¼muªÓ¿ªA$û0{SÒÏFu•;QK0iÓªkŸû‚ùK§>ŠæèÃì¡5é·1^è7wswârºvÅô²W‰µßk.—Ï[M׺&=­ <´]T¥5-–ç5XÃÉìm'é¿£xÙÕRKq­kt cƒâB°ÙM®£Ú+½<´-u§&:Š©Cƒ¦wFsî_9ô3R`é~šÅ0dÔ²HÌr0œj¾º–ÉO`{©K=¨Þ•j³»nÈç©F? r¦×b÷.¶ºŸù¦ó³» øÌöjwÏ+÷ú¸É&08ràŠ;S È©xcsÁp8$¦)îw™îrÉL`pòë3‘WŽ¢®yKòÛÁ—B¬¿¸˜l›²™eÆ3ŒƒÿÚ§Ø£¢{j)å„ÌÉ%ìÜ2n“ƒ’u×öóÆÚmæØÇµw*)/u ‰“¹†8ÞZÐ=ƒ’¢´m%È^"”Ü* aqq9ôOê¼ÍoÕ:‹ n{z_¤8,ò:mdÍdòG›Õ‡n„È”²Sí!iÄ4Ò¿AîM¥ª#ýLŠù'NMÞǸ íà´ÛºWUXä’2wâò´ä°1LàÐ È[&ßÌÐÉL2F–¸Žì¬;⪄¸u.sHغ¨'™¥;¢c*0rGÕ)Õ.:=ª°Lç; cœ{Æ{‹ª[XØeòÜÓ¢èé¶hæ’¹©ÙÛmEò­²Èî®ÚÇâR8ÉŽ .Úv¾»²²†š x)"ccdLf€€¸žÎí¾‚*-÷°3Žð#'½jéo´®…²6f‘ì+š­J‘Ú;#Šqê<¤k&¨’ —Êqɽʾãs§¢…ΖLi’âT•;C Ë[îk»ÛÕŒx¬Íê®J‰^pçùµYCO)Krê™Òú6éßg­žZæ¸Hö81ÜZ8`õ}ÑæØQu7ÆUÈ-vóãqfR“¸ò}œÂ]÷ù8ì­Î©ÕM¸×R8œîÆw€<ü¬¬#¤©Ôßí6z]5gêþÇ;Ùž-VšIà®°V¾rì½í‘ ‘Ë‚»Ê/eHûëEÂ,wo‡~å:ä³³“?¬Ou:jÆ~о»ù*[Ùö¢°Ä…§÷/AE¥dq9#E±.lÎÜ]ŽÏÑATÉg…îkFékô)¾.4·»¡î&¹ÓnÄÁìk°BÏlçòv½ìÅÜ]¬ÛY©ˆÂ`-ÐŒkªºØ®Šv¦Ï¶ô—»ÎŠh3¤Ì'}ÝúíUjY§bɬ^çwŠ&=±4FØÙsº9§dëÐ=©±U~¤àœ“„KW:H0ºm¹ÆÜé5òJcyíÔŒ{“Ž©ˆçËG–¡˜Ð‚®Cg’Ìyϵ2f$ä—ÌxM:Vç\)+så¤! ósB€„ ™šš9­ ä)NÀ†Èji½K;ÙìE. íÊŸIãl w ô/Ðx…|ù+*q—”L‹i)\q0|GÚ4Sa¸ÑÌ2Ê–Š šž'Œ–…öø‰È>ļY‹ÓEø6íwñ^åc;$ÌÖ9äo¹Éa×Hý·üuSeɛҿfl2Œ¬­¼·„í>ö¯EÊô?GÞÄÇñ+ÛLÖ!dþÓ½þhäÿºðÜoGúÈǹŠqüGm3[”dõu]áúŒ{š›sn2zurø¨²ä•¥—&ÁóDÏNF7ÞT:‹Å¾J¡¤òn«3ö{Ÿý$w½Å;¾þ—‚÷.´«Ý–K jwÈyƒ-ÊíVHk„-?—Šy°FÞ Æ€8¥áFŒ#ì@e{·ç{žîn9R£‚8Æ óÅxVnmù4Í ~3¢Ž8§£*%‰ÆS1”ëVr*O¦rœÃ¢¬§wa ÑsÉc¸@^…éX²¢‚r3‡ÐKj£½#òœÃ¢ª¢g \5˜ ¢õì¢@4pÕ[&.1u´ŽjÝBŠrÆ@Ξ). Ç$è=Å4ðž!ÀeJhšp×Dù%4ðµL‘²7™Žð’ÌonžJiÃ’7J2Fœ$w„­7‡'©†wdç¡Ho¢ZxB†Cpøþ!%¯ÝÜ{N T„‚ÙAáÅ €Ù\Þç …Äµ¾\CÆZ•7ßQG3¸·îŸü h9ÝS%n®‰Ø>å&&±ÓÍN;2Ïñq 7°éHm=cIÞô$÷ŽõïHíª·ÓÝ£nzÆõrãóÅë5+¸½»ÍÿVöV¶çi¬³ÊréX]{žéK§Q3Jr³>{ÚxK+ÃË2áž*#¥c£vì#|²s¢Ôí}›9kØCØâ×8–1‘¿‘+ø/¹ÑÖΙêSwEX'݆•a`.s*ZÐKC‰å¯ýÕvIöÕºÙ˜ë¶ l®Ó°Yw{·³§Áuµ}omÌ >^šänvtñLÏ£ò5ö¯bqÑd]—4Ú´d•©ØI%†ì×B÷µá®s Gˇµd©uh×^KeÑ•k­»_m¬Üê§kƒHÐàê2£Ü·±¦^ê¨i+ëbºÉd1¶JÜ–çg‚è¶Íž¹PtwI~­‚ Pv`öîÕ)¤w7<˥˵7I;6ËkEc˜JÉc;ä݃Ž*ªÿn–ë²t[S %fËó‡ÿ{t¤¥æG,§e´NѽÅôÝ,[jh€Ì•ßvÙ”N?ölQíˆh5Ù·3‚ØêIqîÑ|m¶›/U²7›]O]­ÀûÈóæ~:…õ½££»õÒÓGq†ëB誠dÌ9wGwµZ•IAY¯ ÚiÛfÚv>Jqw´@öæC’KK\x{ó•&ËE[\°UÝh¢s1+ ]¦5½ßò3s¡å€×/OD×¹•y¤o°0«g#>œ—±ò¿JaÔûywûÖÌ[+³#x9RÑÖöq–1€»]ãÅ^t£Di¶îíJ%lÝLÝYv0 e£§há¿Ë^5Tœù>®ƒ’„"æ+¬Žä¿iÈ8œüU+#ò°0ÿ ‚y±øæÿƒ§u6]ErÓ/nŠmžïU‚ }%ET¤àG Sú4èöïµu1TºgS[&ì“HÌìhÎ¥}7³ËÌQ2–ÍG>èÝt eï#™]Z}Sw²8u?QTž1Wg²tEµÕ­%ôTô v„Ìà ö`-%'AÕe­5—¸GáddýWWûPïã{ê–Û‹IÕËЇÓôëʹæKêz‡áØçlè3gßåeΦ\ú[¬hSm]ì¢C l¤qœîŸ‚ß ¶é% Ùù‚莚ŒU”Nij«OÌ™[mØ-…¢?s`¥?ñ2ïÞ­âÙ혌’ÜÖÿÁ ¶ÈÎkÇ?“–Š”„dêMùltØl-9ŽÓooþDçØ–×¿Ð7ôQKÝHø¯DüEiK–4t¶àáG 56÷¥Õ°7{ß„ªœ½ÁÆfç¿UVjßÞ|Pkp˜•¹g×·€gž8¡Õº“‘ìUf¼þcà’êÂB¶"åŸ^qo½$ÌÞóõUoªqã(ðM¾¢‹²¡ËZZqÖ}¡dú¦ä‚£ËQŽ|U|“9Í'wâwÊà8”égÊ2¿81‚>Ê2€>ø#(ÊÄ/O5â Ò¼^ <>‰HK B¡€F$!`rF$!!@B€õxW¡@*ÿgªû- ‡ˆÝžW›²›Ao’®:úZ^ªcU#IqÆ5Ó»ô*Òƒf¥fÛdzu5 a|fQ3cÓÉïU~lJ4¿´QzLÃ=Ûàýx)4µ×»¤¾ßK,‘C|ŽÑs*âÙ°Ö*?.ªY«]Ä5çu¾ Dù)i-RA¸@`ò[ÁQ;“d¼-¥¢é¡½ ¥’ˈª=ïÕÍ{ßpqÑtÿäåÒTUÛí5íÞ¬µ5ÔÕ ÏÞ1¡Ä0‘ð#ืArºŠÓy¤eKZØî/ÐK»?E¦µÚfµmû¯öxÞiî[͸DN2ÙñΞվx»#4¶¹õ-¶ÿl¸ç³Î7‡áv…Ynð#$è¸8º¶¾âXy¡½%\­ïA‰¡¿’¿]E^C윺GœÍ·w©â¬êuô–xÈÒ_Iíˬ"ÑÇO5d6ùAEÔ†‚ñß¼0W0½tIY@ÇÎU4#^²žn°cÝÅpT‚o$îz”õ{$׃‰†pN4[^‹öWö’¶JйŒø2íºv·faÛ¿hTÆF¤=€ãß·[=VýŸÙªZx%œ9ÒîàIãrŠPƒ•ȯ©’£³gX£¹CG+hé˜Øi˜Æ÷;”Û}о0\ìñμ×"¶m'xh”oƒÀBÓÛ® 0·#ez0«sÈ6é¯!¤‡Ÿj#¹êOŠÆGtÀ¸dYº2\1ÍläŒñ6¬»cÈT†]ÿªÂ6ïôÞ¤Érnw›!>Ì¢©b1: oiÉvžôüw–‘’ÿªænº¼wo24ÿI§½[­aÔ¾Øf} ½mÑ®$gê¹WÛ²gÅ:Í¡•§Ò'⬵¯LêFâÏÌúö‘éýW9hŸIñO2þÄø«ªÉ•qfñÕ£wÒú¦Ín‡ê±‘Þï'}>Úüþ,«u#Núóù‚iÕîîr¢mV÷zq²©S¸±fê÷þbšu|¤Ÿ(¨;仉A$S&,Jut¹ïñHu|ä…w:ð^天Ȇ;ÛSo®qýÉÝ8„Ô£¹\ÇÖðSO­×Ñ%2Oµ2ñ—qú¨dXæyFQ„a~r`FQ„aeF„£‚Þ(@ëмî@@é.ô’Ï—÷Gêñz€„(„!!@B‚€ô/JðqJîPÀÛ’…8äÙâ¥=RTHʒ¡öTÚwj ´©0V3EYiÑ>8(°œ€¤°è¹¤Š³×ë¸$…™Œ:«*7è`RèݪƪºÌg!/)˜Buq°"ª1-;ÙìÑgdqˆZ`©.±uu'Gj·¡-ì‚0W‹­2 ê™xÕHpÈL¼)‹2ÁÈvT‡ „Ëø­“,y62ÜBC¼¨}¬?D¼oFGxÕ!„`ðvŠÛ=,~dK«= ¯ Iæ Sˆ:÷8(k܆4ó‡¶Nç Sч:™Í”NÞo»½4ô/ŒêZw‡ñK¥“qís¸$û”KÁâŸvâÉ>îa»'Å{)®=f7{Aà¼t^D±I‡!_{ 5ùXÜyöŽSo°ÙºƒCtê¥ô ,xþéÑd6ÖÄêKÍMi qߌã‹JÑÕ<;³Õ Ü“Øà¦í„&ç³pW·Êž˜ur»¿tÿì.^Tß¹­)YØá—¨ÚÒêX 3Ï™>õA|,"™‘%ÆVãi(z˜HhWêꆴ Ýr@ÝR©Å?sÓ¦òˆþÅÕÇCµT5rÊ"dr‚^Fp»5FÛÙäc¾ò¾¼œŒC Ý …Û[QdUL€½¬vqŒ‚·V»¬µd¡ðãÑhÐZ©7sh6•v:¶ïM­µQÌLuåï¸O£Ž9âœý º\öúšºšjhª €òK·F„sÑZÓÛé‹‹÷¸àù:j‚!Šo¨fŽ6·~“ŒðE$ï±êÛšÇS_.-ݯ¾WûÄ B>š©4›3d Íl³Õ;¿®Îýé£r¬.’RÞYQªo vüÄj²É¯,½¯às£CKk»í%4mdqCVÒÁÈ9ºaiëöØŽó‡Î̱Å<òB 6 Ž\G ¤š™€ÑÛÃÚ³œîî#JËsYS´U5ò¤>ì¦þÕ•ÍÏ ê©ï(¥Šá€\ì{Öm³U<•Ã{{˜*]³iî–Ù «{˜ßÂNr²¹¥ ¼5 aÃÚ£uº&ËÁÓ£Û -Ûîï–Êi1è»pd|UÞ[ím¢eÆÂwãàiÉfœAX×T1çLhDw)iœC$v;ÆUÕV¼•pL§cê…W]Oàê9ø­E£hŒ€E/Ý¿í«i%Ãé„P‡ÈÒ܈Æq…žêã2Á£êº)»«˜ÔÛc`ËÉk‹†wzP»:W€_§,®}cãc¥{Îîñ Ï ôwfÆNû²G£íZå&v7SÜÜÏ%„‚ûã!¡ùÑdÛuÏ”H'I¥¨t³:W#!MîCFÆ;Ü¥¾QJûXÈpZËõ»£yÎÝQ%­–y7!qÝw¡6´ÊíØæ-Æ…zj:§n1î|‡Ú¨é£4Ñ]÷Äh ôBKî0Ó‚ØŸ¼óé<©ð-rùÕ’4áïò¹ä¨îRãÉ<8¸¬Ë. psŸ&ìmÕÄñ)Èn}¥Ìd, ÷…à‹ª{õ9ö«Š×X@ÊÅ3Ëò³ÜÕš:¡Œ>“»²¯2’JÆâ’µ¯pò‚µ‚möqYHq †"0UíÏVÜÕZ´Ð”÷å…Ed¾Õãå-9îZ'rŒ\5MdŠGdy¥@Ñʪå k›0w8J­÷®Ç8‚pLNôO%7Ü•­dýSòÃÜ{ŠLµ8…WW+&‰Ñ8úC,vU[«ªŽè/`ÛÌ)¹Ôµ™qÁÉïo裾´“£‡¸ñ “íꙡÝ#Û¨P¥«™¯#GŽçsQpCÓ’4ä“‚ŒùéÎ+NHÓ’N 0P Ó’4ä“‚Œ§ŽB÷½yøQŨ@zWŽôW½È@6½‹Ð€„(„!!@B  –[x(`ñÁ4äñM<"XuRc*/Ÿˆ©dšTˆNª+‰èÎ ÊH†YÓ»@¥1ÊRCù.y"¬“¼¼SMvSYX¨èOÓ» ;SŒ8pYÉê™ÙJ ¾‘ùOiÈ\2V`ô(wˆ·à-S#‘9‡¼(‹ÅÜ“0à’S³0²G4ñ5ÃEè'tA牺%—pSîÕTû“o-bÉÏŠD ‡ÞÜÕÜHЫ2FçÔ6Nc jÒ;Ât æ9Ÿ™nðàTÂâÉ&4åî*Podlê?pŽÍXÈ:öTÅN­yÉø(Œ³Ýe½SÕÏUJØâk˜3œb‘Ys¦îíUp¶Q¡.p${•MFØ[(ØáKÖÔJ{øüËOI+¶dëM»#wOe±ÆÓ=uâªf0eæ:r1ìMÐG²•—CGc£ÉíÝ'Û§¹}Ãno5e9Џü-Þ>%gæ¸WTÉ¿5\„»ûøúEQñ÷›[³½ÏY±t3u3¾…„w¹åß¹F­Ú½„¢Œ¹’ÓT;òà zà¥ù9 Ÿnq…è‘ùpÈãÿ¾+NªJÊ(£ƒ~[:…㤊fù6Ë #y$üné"”¹¬»Ø(¦i>” 4€¹³µ×N>à–Òç“8©Ô´[} fŸ£›ý#žÊºj9C s%nžý~ Ø›]êŒÁ³·ZIkZÍíÙá‘ÌiÉp)Ý_ë5.Þ¹kº>Úù¶rÿM\\Éz§å¬ä´´‚Gƒâ³©5”Q ŠôÉ—wKÂÏu–×w©¦§­uÛ‚@ààFs‘ìU÷* • D“S¹Ìv­s5V{C]_¶WÙo’Ðᮑ’ $ ôíöúcűÃ-l ¾¦7y.Àá»ÃE”èÑkebñ¯UKÍÊ}›«ƒ´¼ÊðÙCHcJwxˆ%Ÿ½Äñö,ÝÆGTHg§…ìx:»™æ1¢r |°vZ¨Údž}« +9e¹* fÜÖ?Î}Ħª¸ckæê¸'«Èm#ÁÃZ2=Éš§âhqɱ7=®Ã]žíÓÄ~ªÆš¹‘FpÎ0«$ |àƒìP§t{šuƹRÌ3Dé§©xnö‡’Ÿm®+›÷,l¨……Ì~¾ÁªÖÔT8—dçš²"ÆŠkõED§Òã„Û*÷c' ®’=̼ñƈ÷ã”àdh ê'tò2•Ž$®–…±CŽÅ£$w,]!Ü#\Êó†žJöZ“Gp0LöðÕ6*ü—רèþî‡Ê¥Ü­’®­ŽéuL® 'FžüªztSus·Ò 8òʱ}Ų½»… 4èà¥;2¯}Ž™UQA20àáL·V˜˜Æ¼èV†àç@'xû8«¸. 07A‘í]Q–ç;5ñÔÆ^J}Ïc™£–Mõ¡Ç1¸ä4šZâöèâ‚Õ;hµª"F–8ëÜy¬ÍÚQ yÝ–<–ûUÄ•8nöT:æCPֽĎ*|¢.QÚoHE®Ä Ò{ˆîOÕU‡7­×yš=½ë9´‘ËE^jc>FAv? H¨»Èè[PÐÒᤚcNj‰û rµÏí4Ž×ƒš;Ó1Üãs|³¸á¡iî+;Sw– ž´;BÑ3-Á³<Èæ°ç¼ )ÈœY ûF_ÈϪ>Ñ—ò3ê¼óg*ϣ͜««Ï6r¬ñj<Ùʳũ…>ãÁïÚ2þF}P.2þF}WžlåYâÔy³•g‹S | ǃߴeüŒú£í#>«Ï6r¬ñj<Ùʳũ…>Qà÷í#>¨ûF_ÈϪóÍœ«¨ûB_ÈϪ<ÙʳŨóg*ϧNŸ(ðhKùõGÚþF}QæÎUž-G›9Vxµ:tøG€ûB_ÈϪ>Зò3ê6r¬ñj<ÙʳũӧÀÊ<ÚþF}W¢ã(ü ú¯<ÙʳŨóg*ϧNŸ(ð{ö”ß‘ŸUá¸J>¨óg*ϣ͜«¿ªPÚŠÁþÏ×õU¾låYâÔy³•g‹Tvô>$zx-ÕÖöz¯ê½YZ?Ù©üúª¯6r¬ñj<ÙʳŪ;jè་mnð¥¥?~©öíõ̱Òx;õYÏ6r¬ñj<ÙʳŪ¯E¦~`=Oôsõ:?~«ßôƒtõ:?~«5æÎUž-G›9VxµGc¥øGÍFØ×M!ÒÒ´žAߪkö®·Õ©þ¿ª«óg*ϣ͜«#ÑÁbvš¬ÿ³ÁõýRNÒUŸê úþª›9VxµlåYâÔíè|G§‚iÚ£ýD?_Õx6‚¤:ˆu÷þª›9VxµlåYâÕ= ?éà˜/õ!ÁÂr=ÿªA¾TOSÏ¿õQ¼ÙʳŨóg*ϧBÄzx%}»SýŒ\=¿ªKoU®oUŽªæÎUž-G›9VxµGoCâ=£¿T±ìp†,·‡ÕxosñÔDÎH×OªæÎUž-G›9Vxµ;zèà–ûõKàŽ'Cä®qâ½;ATD à 1 4ëœx¨~låYâÔy³•g‹TvÔ>#ÑÁrvƽÖÇÛÝKLèHvG»U“¯¥ec÷žç7\Ó¡V~låYâÔy³•g‹VÔ£ ?b±e4¼Z#,,ЦhAü˜þ!G“gúÂKîµçÙ¾1û–ŸÍœ«ƒë5>-ýûC»ŽÓSâßÑl<ÙʳŨóg*ϧwS‘Öf;ö>‡Öª|[ú%7dhZr*j|[ú-›9VxµlåYâÔîêr:ÌÈ~ÈÐç=¦§>öþ‹Ã²]ÕU#âßÑl<ÙʳŨóg*ϧwS‘ÖeE¾‰ÔqõL¬ªt|wzÌ îç`cP™šÓ¤M&@ÆF5ú+ß6r¬ñj<ÙʳũÝMû…Y§rˆÚ`- HîP¤Ùz'’Lóëîý«Íœ«Gq#:,TÝòÊ|?Eä¶ yºj'ÙÑhüÙʳŨóg*ϧs>Gq#7M`¥‚vL&™å¼±Ü§QPÃMTú£™ew?]ßr¶óg*ϣ͜«ø…á:'$TÇ;ŠéÛ›‘ºç8¢Æ$S’ÃQíµ 5LÊœ¾ŒÓS”Œ*Ã÷£ºHñ©3Ç>zå Øœx„ªã]ƒii~áZiä*‡$èEAIDNsÇq¤Þ¤•V¢gF GM–y‚íBâ´+´±WSÖÈ¢*0åc¹õþº¦º‚óWWÔ’Ons‚¨¸óþzrëŠú›¿ÀrZ(d c±úWrÍ|0cõÖ N&w¹¹ ›O_3C ‘Ù˜1˱Ï>§Y¡ùÈ*NP¶NOs¬ÐŽ£¸ÁUÜ‘$’0ÁÜv_";¶TŠ™¦j¢Ai[ï®¶‰*Ro `vC«“¢7J "¦A¶9I!HäcËNT±°ÆÕPY–®%IK`yc¸ÕåýŸzžàiê©kªÖH¢!‡ˆØ yãT|€´ ¸íuçî4jÉ_=²_‚W ¦!ÖŒ†}´@æz+®ºªžÛs¤M¢Hæl³©ùGÑk]=mZUFØñ1…cªVŠç{A5snH£Æñ-4Xo͹Cn…88Ð6’’„Rj­¬ÏCÛ¢0Øï©SI°q€G×JÔ½OO,*‰%\ì0VSâ” Éúik«o·:ªòf’J:p *£¬)þ#e˜ÿʺóó®2|Í@AŒ—EI®)/Š‘»ü$³ú®–©)ä•°Ô:ŸˆFÛ¶þ{ižÅXUQÔ,Á’O”²‘Ÿ°é÷§^®  ãi¸Áóò^šzçÉÅqŠj„+2!ñ’#ï­èg;A#º'-)–?ÜÓM7ü‘±Ó\VÕ_·w¹Nƒ¿Ä¸þºµî¥Q2hɈ|!! ŒƒA¨-OS¾" GâSõÖâÛt6Š2èÙîãáþz%Ei¯–”ÇQL@ •eÁÏÛK÷sºø…,Õ°TÁ´²–Ç#: {–Ý%d”ë"$Ê °'úç¶¢ÒA5¶àU£š(ÜðYõÐÓ9ª¨¹7‰µ’¡Âžücƒüµ_'öÎå0·qÌÄ¡¡¦E«†¡jâ@¬‘öÑZiéü ÁÏUPɾ:³ð²ä<Ç|DH9’<©>¹=c¸U.ä›ÇªƒnáÊœ|¥N?F5ÛÎת…‰bFÈ2ã\ªÒóÏáKt¥ªtHÜÂHù%“ö=›ðuÂäõ2$,h«ó]\ÅLlÅž¢¸”©H£oÉRqõÒGZOàQ¤1îw$çz—|–ºª®*ˆ iU¶œ/ ­"¥/ šà_*ø\§:ÙÇŒ Qw-bVŽ˜½ÕÁâ*øt€ä’qŸ®—ŲÚô†4‹! ¹ä¸õ»oS… "ˆGB·#îFª óMNÑ£ä`gÈêÒÂTÈ»:1¼GXðž³ZÕÆÌ夓q'ËY¨+-%m‡:vâ¹<Ž\Fƒà\ü¹ÓuQ´(î!ä•=¹$y꽊±÷oS†Ï‘ÓÇH_ãI㊮¤Ó¯ØsÆ¬í®¥7 4[»P®\ˆÂ”î<ÛY/ˆªÈ¹ÊäŒißÚE¹j K?‹P¬ ;)yôôÐXi½ÔÇJ¬IdÝŒsO¾›želŒÊ6ÜrSµ°ÊÞG™Éúi^[}3R¼ðJ>êOc«6ÇÑôýK"*ÆœIâ}²0Àû"“õÖ_®ëŸMIÛq Åîå¶ñ K]4pFC­$Û£x@£°Þßô ]iáµ,ž<‹îìÿïŠb|¾y7Jßp±A}áóO¿“+±§ =w6eÆ4B‚–hÕj"ŠHÕ2EÓ'þtij~¼r{›á@)i|YéŸà $™ñv1Üÿçâ#°ôѪڋ­"Ð]Z ¡ñe5h›¹ã¸óùGô×b—ºC6ÖŸÃBÙ…š¬’Hà¹ì~Ø:•ÔT´ÏY²o{.±… ({ÿÄNÛh4œ@«É /‹'XÛ#©»‰ måj©\± ¤ð99Ô;5Eqs]¤Ò¶H¦™»ºz-L{>a©ÝÒàµb*ü{¹ÇÃë¨V9i–ââš `zùdONß}.ãææÝD½>¨fR¾úçwìù0O†ž[³å­îRSÅn”TD LK:ð ÿ ã·mttC§U5&ß~#õ/þí|õöéSJm”¬P®ixÙq‘;;Žçúë¼ÉžIàê+„0ÝŒl}ä*й“ØŒqE´TÜ$¨¬÷Ú“Wð£FÞš s,–0Kœ’<ôU¨M*ø‚V—vxÒ¼ÕfY¦¦¼;¾ØÎ½N5ÜlIÚ…E»ÔñËѤ08,Ç¿Ôj¼ê*Z©¡d|AôÕ±S@¥ „b0I^ú•ÓÝ;@”ÔDZ°B3ÉÕßyP\¨ØŽCSÎ/Ó•m½TÀÁפdèÊh)Ÿ÷qŒÝ·ÍpÕ!“ðù™äõ©Pï ‘ß_a×¶¤¤xòÖ°Y_&Hnß`Ÿ…HõmXÐ=fcÅEJ÷(kgêç§ã¶¼?õ>pÚ•ÅÿûÍÏHOì—ú™½NUª)’R ø¦§Qûš‰²Oàk½2SKZ0i&¨ÿô ’¾oþfø}{kY P†±¨ÙÈ÷¹š²n=~ß¶4f’ÙƒEyzsŒ (iÈõ¹ýuæf¨’mTÑÔ×Õ,ᜤk,‘•‘|ðÈ„ñ÷×y}Ön§§¤4Ö÷/S_½ÞÍÝGÊé­¬ ™$H–BD¥DaìÇ¡8<è—LÔ\eêªt„\ŒIS—ð©@\p쿮φ ‹ÆmÌùk©©©êÙ 0EKîŠÝ’N×Ç$wþº•hŠô(®Çs»@hwŽÞ½µöÑMv’J–¨ŠîºH¨­Uä€;yuòÛjoq¹™!‹,°ƒâÝTçã'Ë·o΂>u |ýýÝ×w¾s yzgÏYZ·“i /q Ãn¢WÁÞÝÆ=1­¡¶*X™T =ïv?iäv<ý~šù[A?ìš” "?ÇêO=ÿ‘Üã2¾¢H¯ÔOŠ™ËKAÈÈLò;é¡pšx:‘ Zj(ØK$YŒ²·˜ÆÒp{hµÊºAK$)wÜ)cϻԆ9 ÉãZõ+WCÔ­½k<#W‘¾—<1òqÛ¾¥LAwhÙ:†•ÕJ5E;¦ØÓ.àFØÛ‚;’u ÇV>ž9° ÜG/§q•ôÑŽ §Xê(ˉIñö´d*î#ç }xÖ•T¡M©tH9iZ¸GÔùÿs÷±˜ÙdeR8L “õEþcZÜ·Œ¬T7Màgÿ~öa©é ÔJ´ÍIâ“îÒšyyõVøOcÆ´1§`O‡3 ëîÒŸêùÒî£D%-h$µ@u+Ü08_BuÊžÌ"ÔÌcúi‚’€ÔÓ!h\>øÄd°ã™-: t×b¶@`ºõXõ[ÐæR8€1zšÉuY;ö®2£·Q©uT"Šl!ή‰Ò[天WB¸U#>ú…plT,q;NY³®9 7ˆA@1‘ŒÓ+7ÃÆé¬ÔÒÀÈ;žGÛY¨&ñBÇ®ÑÆsλ¬X:íyò×· <«fšBœè=9uÊã-qŠ=§§pTð 8ée,™.X~Ϩ=ϧžZµXR¥÷(©œ˜Ü,KÉ?VãNA*ÓÿÞcNy_~qIÝb_‰¿]D±D´TpQѨ3ªeã´Dev?â36qŸQ‘©Ž¢œ—Û(_¹i¤5•œesúkäþ¥ŸßÕ>O©žÛKÚ©ô½¾WyY(*jå*0bµPlù‡œ~<µ6Ž£¨Ý-¶Ž)7|M_pñ¤?]«Œ~šNµÑ”ýAtE$~øŠZqÁüM¦¢0ѼPÚìhæ2¢ž:ƒ,¯‘¡²Ø?]S¨èfÉIR("Ii+–3ÎÉå!Tžvä†Ó¿¦»ôí-ÚK¿‰UGr1GÅMLÞݶãq¢²ÇOVjVÝ2ÌÐx+D¤ä%R‰ñ^uߥ¬õñUUÔTÛHÅŠ=ö¡PØ# ŽçMÉÀ¨¬L‘dµ¬P×–¥µÄ}Ô®d¯ÞyuïƒÀ×{U o¹eì-?°îÿ7ù~uÞÛ@ËGq-MÁ˜Ð|3þ0~.O~ºÞÛIVºáï}> –VTyóqÉôüéW,L‚Øòbn›ÁªýÛìÎÏþ¯òÖ•TpIh¥ 7O$˜ ¬èÔñõõû¡®L\ì ûÈäQeÙÛïõôÖÕÊmq)«éçÄòòÔ…W²p8>¿q®ž$Á5ö±5º‰Vš×7ýßfc¯(8fž¶¿ÐÜIñ`¦¸`ÃMROÀ¹Ç—WnimÔ[§äÚ$\$…ç'·¯:ãv´M-%1[Ls‘J©ŠJáÁóÛR Š‘z–š¡í2½=-D%4ÇpË¿®¢KKºE’:Y$ 0hë|ûàžMMšÐ+©ÃÍoW˜Òˆ$”«G ¯†¸õ)ž{L)=ºÔÒx*šIŒr!å-ÆO×DñX»"r®yV¡VªZ•ܤëè·ƒÿˆ¼ÿþëƒÄÍbY#æì*"ü¡ø—S¦ŽjX‘Ì7š$gݘTBsëôüëƒ,52 :‰<š74Ó¦t³$¾™dðj)¢0pðå?cð7+øÑ_wYÆÅö ¹=ôßUî·54/Ûml8~}wòï£Q΋ÜoÎî<ε4N[y83åDÑ Ùrr‰““¥»…BÅâO TSÈêsº fs(c“Œy~t»u„×Má,­³<€9?MkáÆ/™]ߎ&”×WyšBöY­ív£Lß÷– ·åfšåâB®g—_MvH¾šôï^{ éšêëº^¢z ÞYi¤mÑ9ÿó]yâZ ©ª$§¨‰£–6*èÃHî½V‹_ƒZ¥±žGƒÜòzÍ.m1§èÎTeÔ°+Ÿ®tí¸µêž9Ž q÷¬˜Î<ˆŸ¶ SÆÑ¶W#N^ÎáHë'­š²†#\<^,ƒÏr.êu£ŸáôÏ’úzË]’X¨F}òÙC´d¥ &¢^?â9çþ­s‚&¹?¹Ý¯[ßÕ?N¿ØÔ5&YžŽ/Šñg²Ž4‘ ]O—Ä3ÿÕ¯“]›3ÝÌZ&¸R†þ¢¿‚1âUIࡽ¿û†‰ÃnsÄö ZFò d†¨<Ê29îÇŽ41ä¶×Ê‚ZŽ£¿>à3Tò|ƒhÍ50TRø½5r¶®^DžINNÑ‚s¯ø½<µ Y€Æ”ÉÅ©«¢¯XújåFlF’#¾^ü ®q<÷Ó6øhî¯-–±Œ”éûÜÛ7æ@H±òë[‚ÒÅm‘ÖGÉƧðÙÁãIçþoƾXéc~›»?»_«|I©Ós++7¶WÇlýƘ÷äÀÃUÄ/h¶TEi¸Ùh‹¼,•[ƒ\üGwãw¡¶È-UjÔý7ꈎ7åxWïßžxüèm¾ÐïÓ5«OÞ–®…™·°U~F|†ž§Ú,ÕtýB²ÊZ­žr€Cñ|öqùÒÉ­²˜Ãn“ãé¾*A§Áòü|ßå®—¤’¶„:ÁÓÓ°²7aGÀ¾gø¸ý1¨Öûm@´Êƒ£`Cï D)üãÉnþZù%¢ª[CÆÝ±mªÞ"†§æ0_;¾€j“9-²w²@†×f‘’i~©Àí<ÝÏ9üj%ÞÍU%®‡I”¢È…i*wlò<ÎsœêlVfŽÆ"›¥îmQeŽ:’_”lƒÛ€1¨wKzžŸ¦Ùo¿Ðê¥À@îøeRIàœqÇçS|Îñ:Úh¤k,On²FÊc–3¿ƒçð·¶…ÒPH”ÏL–[j,Rº,SO‰ÝÀü=óé¢]3Mn1·1Y™|JµU“‘ç¹?ÌhZQÄ.w©úr®´nIE—åܸv¹ÿ $cÏRz‰^¦‚…©hH6Ëͤ*Šo<ûsúê;ËZŒÔÒTî W †AŸSëùÖÈô4RJ wû#oÎ÷;•‰óä÷ÖST=\XŽóCwPJ³UE±‰óç·óÐs@Mª£ŒžQôǧóÖñK+dñ"ÛZ¸’‘¼AI]oýý+ø‘~Ÿÿmêˤt²A*\ \dìMŽ1þ%úç¾µ= ïÊq2¾©‚&ó⺈3$Raø¸S¥»kMï2g'—± Ow«¸Vܺ@Ç'’4ák«§¢§ 8cÉvîuéÛ aZ<“3“0ÌÖ8¨IÑ©£3W7ã:Í'uuÚªxÊ*±9àŒë5´EÖØÂ}XC@KÊ\£Œ„úig¯}œX:–ÒòÇMıTÄœ³ñ1¦ÆPÜê\R+¡R#^w£&ŒÑšY1&UÚâÄñÅæÎÖ«½M½åŽc…8ž1„Ž%xÖê'Ï;4<É©WQÔYVÍZÐuUê8Ò¢"óαîBC£(<ûkj[„2ÙjÍ^+´U1–¨ž4!7+‡iœgñ«<Ç+‹Â¨µ¥ÆÒþ+ÎLd:¬M‚Hû‘ýFª™aµÖÝæý›Ð÷Û´êÛXÌÏà8ì»Gÿ¸éù®µvéZÚj3•ñ*–‡Éóò¯îUhn¦ö ‘Æ90ÑFùȦ±õ…•½¶=K DnaO©è×þïké^ŸR3™%ŒºýÕrßÏB®u3°¸ûXXP¦ dù_³‘Ï–†­W³ê™£‚–ßÔ×Ù€ñ§šA}I ´±Ô»5Eemg‹jöG<òd©–œ«zŸˆç‘éªÀ\À?ÔO³ãQ!k·TÖ¸r$†u Â0¡¼Æžm6 mϦaŽÒ—: gœÎjrf* –gú ·Úœ‚":g§íYùŒ¡¼ŽÓë¦ë\w hi½ò€¢ŠÒ˜,Òà9?,ÅtÅ.ßÎ`í©Cm¼uM}šjxBéü8Ìã¹±œö?^N¬ÿf)mNŒ£kEeMm›ž9ês¾XòN«¾ QwþŽèø®0íøgš? óÉÆÕ\~žºµ:ÙYNâc"€ÃéÁ:Q¼-dÒ8ñ!<04Ýu¸Â›CÖ›‹'÷’ÇNOsØÏ:W¿u_B†ŽŠåuZp[ác˜ð~¤ãz £‹0A÷”òéYÍ¢¥ÀÓ&a«ž’XÇÎŒÀùyŸ-f—:‡ këÙíPË3ÆBn ÆÇш‚0x=ùôÖk3S®9_scýšYŧÖ•æ#½¢i–É"êkãb2<9ÕˆòòlýÎ4ßhºõ-R‘z÷{Œ `…¦hŸ>}ÉçÿÏ#¦HêRIÁF sätr–¨m+³sEÉ'L}+â6¬g ܯºÒ[5®Â¢Í]p¦œXát ç‚Ä(X?hðzWØý<'°žª<ž;ÌX-8ûEÿlüx¦îÖëlRfI^½ Â<ö«gï뤺‹5Ê©·u/µ€Ê>hè²sö;OõÕ<®]Ë1çþç\úCÕƒÚ{ ¶ïÓÊŒESHŽqçŽ1΃UQ^Z'Míj”ÆÊS÷,@V=›!N~¸Ô8ºK¢…4‰$ýi~YÈIfŒ0íœgÀ×*ÚgÝ/ ¤Ý Õ¬&`¬µpø-&> B´y#áQþ¶±ßï:Amè¦vŽ«Ú¥]eAág$n9Æv{‘åå«Z‘!/aéåEÚ¡|:©ÉÀíòóªï¥+z^ªå %£ÙÍÂ…¦‘c÷¦˜#!SÁ¾>^º´RZÔÅIà™N5[=ÐTl÷% Ý·Ô¿]Æ(Bí(ô:Ž´4&ï vΚ ƒþb÷äðgž*:rýfêú?}‚“uI ó<¡¼8³€‹žÌÄö¿Mz"ÏûÛ-.|àPMVþÛ’Û ó¦ê«¤©%Öal}ÑᛃÂó÷ά^ž9³S}¡ÒÔ´>°Í“r­«¦µÁ01ûFy^9÷ykPø˜nTÉ?M8ÕÅNà³QÇáŠ)9ò“ß\.}%lšªVnŸ ‘ËîW•l“~^F»ÓʲPÃ*lŒÅq ðù;A•;Ðô ,Ôóu•ÊÛU2È— r™ìØzs¥-Žk€Jðe­UŸN4Fг£žžž®Š¥Ò6vDs)Ú'Œê§öÒµqÛm{5º¢H­Ôâž0 ˜©ã×BìmUн¿_edЊ#<'"G s·¸^~ú³›Q˜µ1±q [ÒN£ö_†Hi¨dcÎä¢ÎQ©ïÖ}3o²-î ÷Yj (V\<¾šñ¿Hµeö9oýU;SÓ#<ñ¼[SÐgžHÕ·í:Õp¾{;é~Ÿ²P_+"!«fšÙ à³‘ÛæþZ¦¥Ø*`\¸#ö·jž® Zj ÞI¤XÓ.£%ŽõÑþ¨Š‚­¤§ÙÉ$ʤFqŒÜjŒé?e²Åí>Ár¸SÜ¡¥¶Ê”¬má&wO''wöí.÷b¾ÔJ”tU´^2¥8(Í!g'¾09Ç:n0È~h-µº“í{‹¬?cÕWtŒ¶¬#•¨ÂïÀÏ!\a³é£PÖÓˆjf†£§QÄAÊÅH¿?Ã’çU|^Ùú—ߢާ ©ŒL~:“'¨ó=Éã¶;êCûo« ‰ìâGC†R}xÇz~šxÈ£¿ý•[ žå±f€I]LŸíŠ« ÉG cþ#ß¶­JÉáj)©XË!Úùqßy¢ƒÛm6ôßÑÕN;¢Êyã·$yÛFi?´$ôÒ4Ý1pEχñ:äù wäžÃ]/.Tb9ŒÅ‹`–OJÝÕz¶ê÷sn§1  R²*—ü§ž{gžtÝûzÈxý¯AŸþ:ÿ®¨Ø½±Ú*kV&ékyw4i÷?ML_kÝ>±W¦ëYÁ>qõÐ+a“Á‰â[ͳ—ÿÚÔDy×[Å}³ƒÿ´èÿó—UL~×úr!éºî¥‚˜Ó#Ó>™×DöÉ`(î½/Wµ;“Ž}4G.¼€ û`º™¢µ=è*§ñ^6v‘ ‰HRHÏ8ÆtéѲêô,ÊïñaÛ¹<}µVOí–ÍÑÆ:FªA( ­±1mÿn”‹LíLÔ)Œó`|gôÒŽTP¶·™d]R”V3ªÂ_iuçõóÐÛ|”‹n‚9îÔ¿ JDF;Xdyñçªö¯Û –Œ<ª ´æ~¸ì<ÏõÔ½´õòazP>7™3þ"1©Aâ·oW;½5ö8m—Ë`¥”#TæISÈo”÷àcƒ¦KlÕ£Eiå“é¨wbyvñV_nš¢áQS;ïE—`²®0ŸË^šèkSÑô¤tT@v«”Ô×2‚6X"R9Ú8ôÀ¯=X­”’ÕÁnXª*¢2‚fVˆä|Yú ÷Óͪ×nº{Õ®Ël©®X™”‰€,HÙ´dg'ý«3×Bã&:u?´‹í[Å5ò²à­M,Mòм„©ø‡ÌqèÓÉp`c!l »BcùdžßMKU¨Œ¨EÄ# Œ™SüõÒÍ2OQQTÃ$±í$+189Çn<´U)ѪˆÁY]i¯´Vâ¾{¨DÒ,“Ê9=öžÿ®¥Sš©åEP~ÛÁ>¤úè%=9‰ŒµI³+¬ùç=µ"à°øsÆÊXc;ÎF û@ÉàZ¿Ú´nð°Š>p»W~r9#Ó°ÔÞœ·UÜÃD¡•À/@ÀÃ~tN÷Q;ßÃ…Êr˃Ž{c\©-€Ï<{^uFÉ—¸çqŽ|ñ¤gÍT-æK¬±Èµ'–²&ÚÜ‘žxä}´.;]ãÇXÒÿQ@dí‚ ¨ôÁ_ÿ0tíÕ3,6ù²™BZpߘòïöï¨Ô7û”ïL20j¨ãKÞ#P ¶9ÆIb?ÎøòzÞÝwý¢_ºÖÇÔ)k´õ+»TF (ÐCâ³ÀN|ôÁÐW.£¶,•—‹Ê×W°Uš|08*†Vü|XÕ“ìþ’•z\*ºNHêgʥ«cˆÑ³°Æ ÷É#¿–5Ê«ØwWµý®)Wm‘¹OLÈ·¾x9ä3œzè²6fPVù»æ ºûQ¸Q[#Žª®i­Ñ:𠮉´ðØäÄa†~]&ûfën ¸ô¥ ÐT5cÑϾyÀ*Êà¯Â¶«Œ`ðF‹ûJöuÔÝ-m¥®ºËOQ%DÞ IL܃‚߯qé¤X:«®~ó:[$£¶Ô K,»ÒŽÃqB}{ãU•ÞÊ·q¥‹BV^¿¨éŸÙu¶ªš†¦–dª¨Š9yvá„Yîæ'í磇گR{Dê;UΖk(7-Dþv8y™9Ý´Á8û󤾚ö{q¾²Úažžf¤wAâ—,3³ 9ãœó¯Oû5öGIÒ6 2(Ý¢“tI@AÆW8åF¬ã „Q lƾ€½Ùà´SÓKy’j©¾"jåf•Ï™ä }€Ök›Yo«P$Io;U²öª‘ú2f­-ÌY âyŽÍÔÿÚ>®±ÅNTÒ@±3–1¦]€øTr;ž4×í ÍÔ³û ¦¹ÕÚiŸ¬˜ÍRŠÈ¦0Çâ IåU˜ç“¥¡£8ÏQÿfÛ_TÒZï^°*nճƌË,r©T r¬ŒF2þ¹ãW >!óñª×Ø=Ššöek·‘Ø©•ÙÉ$³éÀÓT5²Ë¾’ïUH¾h¨¥šêÚ­-@0¥ÄH]yoû[ô•‚ÍWf­±Ñ:Ü®U½s%IËv!ˆ9ÇÄ|±«Ï¨.ê øá§¹ËP»}ñ!$ç°øuä¯l]aêiUTwªZ4´Á,𱄠ÙJü*dBC àãõ_R–”D44n$QM4õ/ï0Å ËP#ƒÆf2†'‘ÁÆ>õ´—ó-Ꙣ€û„ò©c°“œ/o¦„ôœ×á7T©Xg…ç·ÊFÒÄId!®Vé\\™ÜábGíH—?ºíŒgU1aPÖGP™Ûm\±½‰ß(én³TÏ+ON¢8¸žvòsÙ—§ÓVµdòŠÊiÙœŒ‰$|¸ãUOCÛ秦¨ª¯©’1#DÂ#qŒ…° >ß};tà»Ç;Z-ÕÕÔòF3GT$*ì Ûφp>ºvòxX Ãs©*XÚæoJDP`3üYÎrq©”óRE 5 ,„¾ Ú|ô´n“Ñ×ÅižŽº:ª–Œ$/*;Ã\稷Ô]f¢ ºZ¯4tï28TÆwœ©Ï~=<´þD~åð`¯í_E5¡E!l!I4³ ÿSáò;Ÿ¡ª­=Zô’ÑR-D2ÑȈþÏRB6ò7(#¸úé÷Ûw²‰’¢H'Š5gàm;—ÏŒ·g¾Ÿ=€u¥ÞÁ¦áZ$›ÄºiÌŠL¸aóä|µS”ÕÇë,6BÄÙžÓêŠ%޾4ð†ÕQ€0|´×g…_Ì öÕiíó%®ÓGt¤»Ìv¥e`Š6sŽçL½æé`·Þ Þ¶©*".ÖýÛ^mi“j>Ñ\ÀÚ&š®Of•5T“¬sRTC/ˆ@Â)p¬yú1ÒZuZÚ}‘[ì¿íU ·édUyiJO¨'~î6€@ôÕÏÖöØïv¶x%Ú¢’EA´üÛI_漓If-×*Z›d’ÀÕL)Ød„Y†Q†FsÎHÕLÛ”°—š¦«ú‚ÑíBš* ·SOp‹Ä‚¥Ù|8݇ÿpÚ¤`ŽÜdkÕÞÍ*:ªáÐ7›uת¬Õ½I'‹îsÑUG ˆ89^R®±Î·+LU$SJ(HV8Æ ^Ç:¹½’ôýÂÓ_ï?³æŠB²b@ðARçsøÒqç4wRù¹Ë¨«½¯Ã ¶ªÏÖý*‹=.ÙÅMÎ"¦¡OŰç‘ÛÛ:Í#{Zè;£ô¥þ;U½êZÍzŽº—ÃVÚÉSÂ0YAÛÛ:ÍZSbà*«Å}E“§:~ÐËN´”Ë1’)cÊò67)ŒÇÓIRUÔL¤1)!_#ñ7àž3÷õÕ§Ò·Û­ò’Þh+Ô=@‹ÆšŠ9BœÛû2Opt­j'[—…]S^K9)OJ¬88Îüè¦G`3øEi:š¶!š¦E'è‘•wðLvË¥QQýž¬r-•E4ÕMîy££|@I%²KØÕIígÙÇû)שm餾\!šÜey;)»neW€8ÕóÖÞÒ¬•|m4œŠe9v9ãá\wÆ«{—´îª¸]$¤¶RÇd¢D ãÊIß‘ÙsµGß:XÅ¼Ò ‹Èøð‹ÈÕz ÕwR#6ËØÙ+–’¢Ø#ñXmÇ‚qùÓÝ¢ôöÊý“_?»Õîm»bÚ €Nზl y‘2Øz²ç4 ËYU#† »Éíßzg¥¿UÌчšm¤g’¾qçÓM ·f$j°Œ©$·õl{Ñb %Ùh ŠÛï.-‚ti]áå^ß2;cGºrÅ{¥»ÒÔ‹ Æ5ŠFvš9Ÿߪ3’¿{cVwúÑr¤<ÅDYw.9Æ|µ>ªóV¡Z:‰”eó‚; <½8×6‡-I]F/T^ѺgªjiÄp[.µP$RGMD®HÊ`‚rF0xäg>ºA±û;½5û§¨ïN¦ktõ.µSjÄ"C³ç%H^s÷ç^•ê+ÍÊP"«©M¥ñ‡QÛ·–«{ZõåBÏI\.”Ï>–´((¸þP=?‹:QÑæÕ‰ÃS§^ ¨Ù7²ž ½Ò^-÷J–ùD‹‘Á"J¼¬p<uÚßýŸ-¶ˆ(’.³¨¦Zª•–áâ€Ypw`g“Çkö‰`•ÅγÏ+.c¨_ ]ˆòqð“új×§ê:øè¡†¨Q““¤”F@ª–¶ySºó¤.ÖÊ+“\ú¶õ†h ~ï4€ ©\®Å ‘éuþÍýgOlöKg³ßæWÐÆ°¹HY—ˆN@ç¶3£}iQs¹[Úd€LÊÑq ÁÏZKè Žß[Â7@­ ª†*RMÊ<ç“ë§U¨Q¡ä®:jB ] BÁÈ޹ØpÝ×Èžuæ›ÝÊ‚ž¢¶Š;Ô7 ›uQȲ€MÊCgåà z5qDÝ9St¥&JIn¦Ù))*nìÀyªö£Ù]…ëí3ÁQ-©y(ælÀtRŒúì9ûèN6" ƒR•’ã~Y«éhéê&¥¸VoEOŽî #=Æaƒ§®ž¾\éìÖ‹¥]Å%“áŽiˆgHÀ (8å—÷ÕqÔT‚×ÖÕ–éêä¡ «Wj–M¾$á·ðFŠû6·Áqö‡GAW=D49¡Y!•ãØÙܹyùsÜT\FÍD5zæ>{Bëš[•U]Q¨©µE%¼ÑËM:ÿûÕ!xaŽÚÍö÷KÕ}3[WjÜîÖïtŽ¥$w3´j…‘ÉÝÆ+É¿–³Pq¸?ŠO¸>‘ šåIj¶S­H‚’÷JhÑä‘þ;öäóë¢6»Û¨:RïINKMd°¤~ù‰–$3Œmø˜’I#Ž4þ·OrO†ÕGB c†7/õ×Y+jjBÉSU$Ê{ÛAÖÌ£ŽÿI#N|À-Ðfß]I[w¸Z`©§B£ÂF–N@ dçÆ}=ÇEASw’âZ²ªf™f1D8#…\ÇÌè$54 ¬‘¬G;Fæ?o]I¤¨iHã_ZŒ~»F–2ž–7ÙQÉðºÂ+Á€÷h°ÉçR㪛l¸ä³’qù'®î=Ml¢rX§‘rpÛU ¨’õEÞ&T˜E ¹àöŸå«X±dÈhDeÏ‹²c½ï¬¡·ÐÏQLZ±¡^c§à ú±ãôÕ1UÖÝuÕÕ8ž^ž¡ß†UèOÍú4Ô”qÁŒÍ(Ž]NN㨷¨â“ÃU ñ 5¥‡Ò샔þS [ëû"’Õí:‹™-%eA]ò8ÉvÒå,Öº&¯³Ö""±ñáóÎ|—냣)+Ë»ÄOã8Áì<ùÖô¡NJ ÃÏj *IÄó¿ÌÁŸ™#¥ë&’ˆ;ÏI%‰Û—>^yÓMµðGV‘ÉtÆd,KÇÀ×Aé!§Xzx\NÜ ‘çýtFž–†IüAIõ!?SéØy—°êHŠéow..³±@˜Â§?òê\×zSHŽ—‚¤†ùÑ?ÅöÐÈmöØâû¤`± qÇÛRM¤ÓÆnöäü»ûùé^ËË ©XW¨käa+Ç[NìêÄ=ÔúWV{¥uÞç% –É8Èw­‡&<à6@çìN¬‡’ØcïKÕÂ{hª­ ¢pu8ð7“Ÿ2Ÿ=þÙÊÞ±U*Êܤ­áÖ6;«ÔÙkäzm¹ð‹†Qæ‡ý4FTP€³çá%qÇòÔyæd«yžÇÐgѦ^AÁ®É€Ú™qt âãÔ=Ms¬S C«/ÀHóŸë¨T7º”ÓGO==iŒ~ð “­}žÜZ>“ª»‡~ăª²ÛiªµûP7Zz‰BÎ]Äy眞±›HûН‰é±kÔª–ó,Úèè UTqþËÆ“/ÑKÂHÚ ‰cýç†êÝò#œéÛßd-QðGryýGã]WjÚd™‘ÖeàÕÛõÒrbtò²<«.ÕõBè“K,2\Ð —0$¹ˆÁÇ<éjÊn{%ÆžxLŒgPI!–Näò1«¦J;sòDã<BŸÊöüèQôÒW@eøI 9,Çœ}sªÁö¶ê`UÈw¾·Šét³×\m•æ™ä£•*H¯ËæySñ"ž³]?Ù*J}®•U…‚ã¾þ?Ï:ÍK:ß7#Ø1-j¤bM4mQŸãqµä÷ügBo}Cn³–ý¥s1’?¸¦`ýüÇòÕ5ÔÞÐï÷‰ G1¡€q²&;ˆú±çôƃPÇp¸L$|™$ì?×KÇòq#.©\´¯>Óž8–ŸƒÀvÏ0 GÛv¤ôÌ×kª*ÍY>ÝŦä#Æ'ÓÏÐiZ×g‰61õ9þ'û Z=3DBS™»¨B0>üësIé rÓSꥎԄ¬Ý/HÊÔblvyßåÿ”s£ÐÒSÓºû°§ñŒ÷üç\¢žž(ƒJ%á“?ˉWY ²f1£|¤ä1ý5· ¥2²æÜm™&åU4¹Y™\¯rãùh%KNFp “9×Û””â/ÝÔŒáy$ýô,ÕÌËï&?3« ³3>na¼*¢¢I„ExV8;µ< x˜#´°ù7£t«û™÷ÒÇåßD–'GØë!# ÀÉ#îxÑ%P×Ì)OTŸ¿á‡S–±•IHŽÑÁÁ'úùhBø# Y÷`çq?¦º¤Ó0ÚŸç¾8Ç×:Ž ,³¬ˆ²0Ë÷°úë¸v^VnËžAШeMÂCAÏmÃéø×x$ešVÁ @>¼ú낈{Ì)SRȈҰÉãž þF‡—\nduÏcŒÉ_8‘ÄjÒ§,xãèu”»Þ$>0|Mß=3ë÷Ô„[!&K‘LJ°’Ê݉ääjŒŒÁÁ “–àÃúkœ¬r3ð>¤ŸLöƲ #j²¡ |n+é‘éþº NÞLa³O¤1øa$Ï“ ÄÿÊx#Ÿ"5:’fzØ^? ¶àyúsÛJqÎ@¢¢H%?)PHõ'¾>ÚK\¾õà˘¥$´r`OןΪCqš³šXsx~gŠUŒ^|¸ôÒŸWÁ –¹ÒÞ$]ÎÒ|ù÷ãR㹊‚š‘J²cvü4ns낦·ê ”Žî¨8,²d©êH8þz«“aFmcÕ%wÓeSH&Žå ðû» ‘‘ŽøÝÀ Àï~¿°ÓS5UÒycŒ0zd-´3·ŸÁMº=M®¯ÂV†²™ÛjSâádøÎsߟòÒQÓE[OQbY¢]Ò‡…ÔãȾTdùp2|õ‹ŸBÉÔÐÓúš°¢g¡ì÷:KÕÛ.4·edÚOè1ú¬×œ}šõI²Ü%¶Í $qÊÇtjŸõpWóƳT½³5:‘r³¡¢„È ¶òO å¦Ûe.á™0‘ŽøãùhEU®I¹AË·q¦¨øuŒ1ÿ-z->%Q`O'¯Ê×P­»¡(ð¨ 'òtÛo¯dŒ™Ê¯íã?Žu_ÂÍï1œœ‰Ÿ×N““ÂÈJ³ŸˆŽ vïë­ fæ=žá•½Ai1(P 8úþšÖáu£™ˆòsÁÇ|ÿMB­‚ÚðcÁŸ„}5 ~Ysϸ JÙ25NæY â2bbx –ΦQÇ/¼lY¤9<ØýuªáÎÑž|´B‰˜BX1tÑÄ£ÛCPÛaäÔÖȧæ+;ƒú.?ž¢˜âð wà;`ŸÆt"¦y±ï¤þóüGSgSÂû¶ÿ‹Ÿ=+ÌyªàBQI£dl8Â`“÷ưÍ8I¯<àŸ°É:ÒÝ{ÏȽ×Ëï­#ÌÀ€q»NÚ:ƒw;CSQ=@ 8§±ç¾¤nyäQ—ÃÞüC9õÇØê5zªSÅ´ø€àcËD,_ÞÈ=: <ÉÍO³SÊ¥£uiŒa‚qß8chjZj‘4®%(pS'ŒðH#Ÿ=I»³,X–1¶I<üË¡4쮂@ÇŠFìóü>zÌ6ùa$…åa T±Ã8¹y±<ñ®23Ó´Q\bVE#‘1Î{Aø‡×õÑi]›ª*bf&6R àŒã[Üa…m×X£bM (ュý€"ãIW†ÊKñ„^Þ{}Óí®ŒdXewˆ4ŠNÂøÏÓŸ§é¨t_½”øŸ6ãw8ãDª9’|ùõ× ´u>$[Å—ÂP •ñãÀ6ŸQ¨uuu4T¾UÆn0b|^~,½ûyj% ¯¸Ÿ„q0.xÐÛÛ4Tècb„¼ªJœd`~ºM —ƒ’…v¸"3µ|&#L2n-ƒÆWn Oät³ÕvÖy ÎÖÐJfˆ¤šQ! äFá‘Çëé®—É¥ŽèðÇ+¤m,ŠÄqæ5:¤ŠÞŒ7&ÝÛOlã¾”ØÃð`¦VBHˆÝ?s÷í×z(® èA-, óDBûk4Çí+Ž‚¤ªß­ÆTYŒ(Æ=ñôÖk7.5V"¦ö¬È ÏÿÙ././@LongLink0000000000000000000000000000021100000000000011557 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/booking-faces/src/main/webapp/images/powered-by-spring.pnglibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/booking-faces/src/main0000644000000000000000000001467711360615644027730 0ustar ‰PNG  IHDRo3ëÁ» pHYs  šœ OiCCPPhotoshop ICC profilexÚSgTSé=÷ÞôBKˆ€”KoR RB‹€‘&*! Jˆ!¡ÙQÁEEÈ ˆŽŽ€ŒQ, Š Øä!¢Žƒ£ˆŠÊûá{£kÖ¼÷æÍþµ×>ç¬ó³ÏÀ –H3Q5€ ©BàƒÇÄÆáä.@ $p³d!sý#ø~<<+"À¾xÓ ÀM›À0‡ÿêB™\€„Àt‘8K€@zŽB¦@F€˜&S `ËcbãP-`'æÓ€ø™{[”! ‘ eˆDh;¬ÏVŠEX0fKÄ9Ø-0IWfH°·ÀÎ ² 0Qˆ…){`È##x„™FòW<ñ+®ç*x™²<¹$9E[-qWW.(ÎI+6aaš@.Ây™24àóÌ ‘àƒóýxήÎÎ6޶_-ê¿ÿ"bbãþåÏ«p@át~Ñþ,/³€;€mþ¢%îh^  u÷‹f²@µ éÚWópø~<ß5°j>{‘-¨]cöK'XtÀâ÷ò»oÁÔ(€hƒáÏwÿï?ýG %€fI’q^D$.Tʳ?ÇD *°AôÁ,ÀÁÜÁ ü`6„B$ÄÂBB d€r`)¬‚B(†Í°*`/Ô@4ÀQh†“p.ÂU¸=púažÁ(¼ AÈa!ÚˆbŠX#Ž™…ø!ÁH‹$ ɈQ"K‘5H1RŠT UHò=r9‡\Fº‘;È2‚ü†¼G1”²Q=Ô µC¹¨7„F¢ Ðdt1š ›Ðr´=Œ6¡çЫhÚ>CÇ0Àè3Äl0.ÆÃB±8, “c˱"¬ «Æ°V¬»‰õcϱwEÀ 6wB aAHXLXNØH¨ $4Ú 7 „QÂ'"“¨K´&ºùÄb21‡XH,#Ö/{ˆCÄ7$‰C2'¹I±¤TÒÒFÒnR#é,©›4H#“ÉÚdk²9”, +È…ääÃä3ää!ò[ b@q¤øSâ(RÊjJåå4åe˜2AU£šRݨ¡T5ZB­¡¶R¯Q‡¨4uš9̓IK¥­¢•Óhh÷i¯ètºÝ•N—ÐWÒËéGè—èôw †ƒÇˆg(›gw¯˜L¦Ó‹ÇT071ë˜ç™™oUX*¶*|‘Ê •J•&•*/T©ª¦ªÞª UóUËT©^S}®FU3Sã© Ô–«UªPëSSg©;¨‡ªg¨oT?¤~Yý‰YÃLÃOC¤Q ±_ã¼Æ c³x,!k «†u5Ä&±ÍÙ|v*»˜ý»‹=ª©¡9C3J3W³Ró”f?ã˜qøœtN ç(§—ó~ŠÞï)â)¦4L¹1e\kª–—–X«H«Q«Gë½6®í§¦½E»YûAÇJ'\'GgÎçSÙSݧ §M=:õ®.ªk¥¡»Dw¿n§î˜ž¾^€žLo§Þy½çú}/ýTýmú§õG X³ $Û Î<Å5qo</ÇÛñQC]Ã@C¥a•a—á„‘¹Ñ<£ÕFFŒiÆ\ã$ãmÆmÆ£&&!&KMêMîšRM¹¦)¦;L;LÇÍÌÍ¢ÍÖ™5›=1×2ç›ç›×›ß·`ZxZ,¶¨¶¸eI²äZ¦Yî¶¼n…Z9Y¥XUZ]³F­­%Ö»­»§§¹N“N«žÖgðñ¶É¶©·°åØÛ®¶m¶}agbg·Å®Ã“}º}ý= ‡Ù«Z~s´r:V:ޚΜî?}Åô–é/gXÏÏØ3ã¶Ë)ÄiS›ÓGgg¹sƒóˆ‹‰K‚Ë.—>.›ÆÝȽäJtõq]ázÒõ›³›Âí¨Û¯î6îiî‡ÜŸÌ4Ÿ)žY3sÐÃÈCàQåÑ? Ÿ•0k߬~OCOgµç#/c/‘W­×°·¥wª÷aï>ö>rŸã>ã<7Þ2ÞY_Ì7À·È·ËOÃož_…ßC#ÿdÿzÿѧ€%g‰A[ûøz|!¿Ž?:Ûeö²ÙíAŒ ¹AA‚­‚åÁ­!hÈì­!÷ç˜Î‘Îi…P~èÖÐaæa‹Ã~ '…‡…W†?ŽpˆXÑ1—5wÑÜCsßDúD–DÞ›g1O9¯-J5*>ª.j<Ú7º4º?Æ.fYÌÕXXIlK9.*®6nl¾ßüíó‡ââ ã{˜/È]py¡ÎÂô…§©.,:–@LˆN8”ðA*¨Œ%òw%Ž yÂÂg"/Ñ6шØC\*NòH*Mz’쑼5y$Å3¥,幄'©¼L LÝ›:žšv m2=:½1ƒ’‘qBª!M“¶gêgæfvˬe…²þÅn‹·/•Ék³¬Y- ¶B¦èTZ(×*²geWf¿Í‰Ê9–«ž+Íí̳ÊÛ7œïŸÿíÂá’¶¥†KW-X潬j9²‰Š®Û—Ø(Üxå‡oÊ¿™Ü”´©«Ä¹dÏfÒféæÞ-ž[–ª—æ—n ÙÚ´ ßV´íõöEÛ/—Í(Û»ƒ¶C¹£¿<¸¼e§ÉÎÍ;?T¤TôTúT6îÒݵa×ønÑî{¼ö4ìÕÛ[¼÷ý>ɾÛUUMÕfÕeûIû³÷?®‰ªéø–ûm]­NmqíÇÒý#¶×¹ÔÕÒ=TRÖ+ëGǾþïw- 6 UœÆâ#pDyäé÷ ß÷ :ÚvŒ{¬áÓvg/jBšòšF›Sšû[b[ºOÌ>ÑÖêÞzüGÛœ499â?rýéü§CÏdÏ&žþ¢þË®/~øÕë×Îјѡ—ò—“¿m|¥ýêÀë¯ÛÆÂƾÉx31^ôVûíÁwÜwï£ßOä| (ÿhù±õSЧû“““ÿ˜óüc3-ÛgAMA±Ž|ûQ“ cHRMz%€ƒùÿ€éu0ê`:˜o’_ÅFÚIDATxÚìZmpS×™>÷Jºú´%K–Œ±ƒƒ«Cøˆ³SpÊvŠËRJfgmÿ);M\O“lêÝ…@ºÍ°d€L&°;ƒét'P†¬—°;ÃT?ølrêÔ±‹‰±Œl°dY²î•tï=gsQäJŠßš{ÎçsÞç}ßóž )¥`VfHÐ,³h΢ù—þòÆÿ}=8Œ®u•›Ê‹Òÿ ‰Á#»zB—X…å%ž-Z^áx÷þ¬ÿοÞ;óŠÝèÒž«œÏ¯(ÝÞÕ;¾íÕat½YÓ:éL?(ÿiz[&ïøBbP{}³¦Õati¯G:wëÿ„={¬e?xò§k™JN÷~t¼{ÿT „Äà{g_ùqåkUÎÀÁË[l“  XW¹éÙ¢Õ§{?:xyë¯j¦ÿõÛË[¿ª=*ðæÓ½éÜ展{¬eZµœ­A’ÇBR0$Ùs Ú³î©×&N=‚IgÒ1è;xyë³E«Þ÷þ4$˜Šé,œ¸+U€³'ËÙè}ÍY4gå®.Û\0‹Âý ¥BÈi/!¼Ž›7ßéòØg¤7߉ŽÇšéEóòg ÊÇÝnÎuxæåÿ{!ŒÀ3óõz[®©°(oÆ»åÍZ\¦_8—O)ô³¿$èXN·ÝhÒÿm¢ÉspÕ"a¥WQ]vüßçÄ:\¾3§ 0w ßÌ~(ÈðÊ@ÙÃ£ŽæO¾kª^`è Êsr0Bð=V1ó l“âH)¥ì—ÜŠs(@Q!d¯ðFs~!ß;¨XMÈ, ÏÆÇ$òàÆ²çYò2м… !”J %*¥Pr M!Cˆ D!Ñä˜>hößTÌʳr'.I'?—èX¹y–‰PB‰J1å¦"Õ+XÌ:@q$>4 ‹ñ$G“EsˆrˆÐmö?Zhž¼œXþ´aÛ ލt ŽÇ9vs&”*Uê2Í]\´|¡³ÊÈÄÔÐXb0!è1Í5©XL Fâ}#ÑQ)Ééæà™€f…fÃÊæ%å5KËÇSк}]ÿÞcÛfj‘×nÈ­íòCØ6‹Õh22 ¤*\˜ç}~þš›ñNß_þÓi+)°ZõFŒD õœjÐAUy«`v˜ _^ Šc”`0™€ÞÍÝ?;¼ ¨ªµ}OóëYIS]Ë‹Õõ1q´õÔîû]žs´åü@¨¯q窇„Y é'kB(QÀüœùËŸ¨cÎŽ)þÿíºa¶ Oä-X0§Ò¬7$åd s¼Š1æ ¼þ³¯Cqu`BãnêÎh6Õµ,-¯Ùr`c»¿M+Ü{l[L‘åY¶‡iRŒéŠIQ©]ïøŽë)& ‰˜ V»Ñ%Êc#âÍÏú‡ÃRð ¼ŽC€ÃËÂ0™+ ñÞX2 „û|˜šµÞ51)’¥&¡¾û_Þ@¨ï…_>ùÐÐ4u銉*É)0ë9…Œ©„§”9@ÄaŽRzuøŠ™×-ñx1B¨ƒR(!ùKi^Îç!„!„ÞROîÞtçþ9þW½ž¿e1%4WgË7ê ˆ«‚¢É`,å€ ®†ûJíEy‚]ªó”RBˆBTw^Nï‘h*©òaH)„4 ÝŒŠ£nGqS]Ë4>§ae³ÛQl1Úvzc{ã>æ¬bR¤µ}z­wMEQ•ÛQÜÚ¾‡YvÛ–Yù‹Õõš†6ÕµTx¼íþ¶˜8ÚT×âvÚým;½“"é¤Y[]ÏÆê ø[Û÷LJ ‰)8M7)¡¹zF2QãpR2uuøO(ÀqQBI ÇÃNs¾¢(BÇ˪ÊaÙbÐͱšÂC§§”§”RFõ; ùñÙƒMu- +›V6·ûÛ4v3p+<Þ›O°’®€ÿçu-[lŒI‘Zº†ÅŽÃ¯Ÿ|û+‹Ãê,-¯iþ`ýîŸމ£6Ÿ¨ðxY9Û•¦ºmèvÛÞ^jr¶7î«õ®q;Š5OÅjn9°±ùƒõµÞ5oýä7Û÷°Åš·œ$¥‚Ѹj@TjÑqÈ”&0ô„®ô†ºŸ)zÑ&œ»ú;…$à(!*¹´aˆx„1Âa»YP¨ª¢"DÅôÎ9¤ÖS»÷ÛÆ”¢Ö»†ÁÚ°²ùüΡ¦º–®€Ùæ‚Ïd•w~Õl÷·½søuÀÚêz·£ø…_>ÉVèv3mm÷·E¥HãÎUé+o=µ{Ùæ‚ Ý>†/ë6&EXW/Û’ ·©®åB·)c»¿íèÙƒlã—m.˜J€ª’Û‡q <‚bD¯^ëv€DyD’£@Œ ÂT0èf›ŽÇ<‡9Œ/èu"ͤ'*¡ê­<{6Lg‹Ôëv¯­®¯ðx—–×4¬l¾Øí»Ðíc ›á”X¹ÛQ\áñ„ú¢âhzm¢b¶é1Ã@¨/&E,BŽÛQ܈hìÎð‡–,Â9¥`A§1]‚\4ûÓàŸã)QÏm†Â¨LÈq1¦‹£ç£×ýü°'?Bp5V)Y¼°ÃHÏaªŽÛ_éèn]ðÞcÛš?XÏ4ˆñtšÊ­ðLù“ô¡­ÌŒôwܱU2)ßÎQ ¨õë‘þÁé9¡Â¹ÜnuE"Ò•/q™@îh,Ùy5xèäg_ô^?óÅ•K_õ ‰”BÙZÂé³Å»}YÆ’éJ”îFîAXs¶‘Œ].tû² 3bJ˰D™ˆ©±°a¹!fPSrcj´’>¿pó†þaÕ§ÝF]ýÜÓK+ç©D¥DU'oGš0;4·7îcÖjRIGj¢¸Å]ÿŒ„¥éªÝðo9°±+àoªk9¿sèÀæŸ=8½¹ÔDKŒƒ !D0&©*Q!€RQR“J3ï·tIé‚KÝ÷î鿱¾ö™»%•R) 2Q Q‡£"ÄŽg˜²; ±eâqpmu}»¿íÂÔÊgÇ¡7îØ[6§ÏŒ½Ðí[[]ŸqBËFÆb -ã !'d'á­zK,5F(D‰ˆ×ylrÚ JrŠŸùÒßsmA‰ëï—.Ôq\$&ÉD”ÊŠOŇÂI„Ä·„Ù1}Ïˇ4LÖV×ïyùÐ@¨o˧¦·Ö¿«ÕYR^Ó¸s•¦¼ ljjάÛQ¬ý5 UiSr;Š/dam2mETŒ% €„á°8Qž[dó8A&r ÒéÎoCóþãèùãg¾(qç{KÝWúo¼û»O/þ¹! +$!'û#a1†9ˆ9„0„h<ó1þuÂT÷éZt­-’©¤æ”µè¯+àgn—E£éVL‹75óÇbu-ÞÔbØôxÀöÃ"äœ|û+Ͷ4î\õÖúw×V×OÏMè…î¢ÓÓq,ü¼˜ÝY(] ç:æW¸Óï,‰BU…°_–Π@ CÌ!Äÿ"|K+Ó ô˜ Ÿþí•Òr—g^þÝß§ÃIïÓ¿•>}¥ÿ뛘Ã.}ü#(…”R4ù·àÛñ­Ç_Kä”ríÊ!ÄåqŒ§éTŠ0˜úÍ›r €„!D ó+%@B·¿-~l%™”¯t]¿Òuýþ»‚þÿbj·=IEND®B`‚././@LongLink0000000000000000000000000000017600000000000011571 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/booking-faces/src/main/webapp/images/btn.bg.giflibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/booking-faces/src/main0000644000000000000000000000050511360615636027712 0ustar GIF89a#¥!`š?aš?`›?`›@a›?a›@`œ?aœ?aœ@bœ@a@b@bAbž@bžAcž@cžAbŸ@bŸAcŸ@cŸAdŸAc Ac Bd Ad Be Ad¡Ad¡Be¡Ae¡Bd¢Be¢Ae¢Be¢Be¢Be¢Be¢Be¢Be¢Be¢Be¢Be¢Be¢Be¢Be¢Be¢Be¢Be¢Be¢Be¢Be¢Be¢Be¢Be¢Be¢Be¢Be¢Be¢Be¢Be¢Be¢Be¢Be¢B!þCreated with The GIMP,#QÀp}8HŽg£Ét6˜ æbÁT1Šv«•H(“‰ãq, Gc±`°Ý ¶B@$ê‡:áP0 †ŒŽ‘’“”•–’A;././@LongLink0000000000000000000000000000017300000000000011566 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/booking-faces/src/main/webapp/images/tse.giflibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/booking-faces/src/main0000644000000000000000000000537611360615644027724 0ustar GIF89aÈç¬HHHIIIJJJKKKLLLMMMNNNOOOPPPQQQRRRSSSTTTUUUVVVWWWXXXYYY[[[]]]^^^```aaabbbcccdddfffggghhhiiijjjkkklllmmmnnnooopppqqqrrrssstttuuuvvvwwwxxxyyyzzz{{{|||}}}~~~‚‚‚ƒƒƒ„„„………‡‡‡ˆˆˆ‰‰‰ŠŠŠ‹‹‹ŒŒŒŽŽŽ‘‘‘’’’“““”””•••–––———˜˜˜™™™ššš›››œœœžžžŸŸŸ   ¡¡¡¢¢¢£££¤¤¤¥¥¥¦¦¦§§§¨¨¨©©©ªªª«««¬¬¬­­­®®®¯¯¯±±±²²²³³³´´´µµµ¶¶¶···¸¸¸¹¹¹ººº»»»¼¼¼½½½¾¾¾¿¿¿ÁÁÁÂÂÂÃÃÃÄÄÄÅÅÅÆÆÆÇÇÇÈÈÈÉÉÉÊÊÊÌÌÌÍÍÍÎÎÎÏÏÏÑÑÑÒÒÒÓÓÓÔÔÔÕÕÕÖÖÖ×××ØØØÙÙÙÚÚÚÛÛÛÜÜÜÝÝÝÞÞÞßßßàààáááâââãããäääåååæææçççèèèéééêêêëëëíííîîîïïïðððñññòòòóóóôôôõõõööö÷÷÷øøøùùùúúúûûûüüüýýýþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ!þCreated with The GIMP!ù ÿ,È@þY Hp`©L„Ü(ìsIÔ*“"J”˜‰+T™&N¤”i”ÀP•$nJui¢©š$Z*5ÐTJ… ]òX°¦Í›8sêÜɳ§OY²ä’åLÁP]$XÊ€€}R5ºTÚT›rjͦ>8iÈj€S Æ2uÄêªl*R¡¡®] _P ¬¤Cƒ‚›tØ(sKŠ•6-¹kWF©SGk8±D‘@6$â°%¹î–Q•@ä½S¢Ì©R2t°BÓÁ2Îxb¨v DQ-zRaj(ôNµi ëR´×`º€Ä×¥aÕÐ`‰•ª?Îþaµjšf›þ²øéAQ†l«$©"U7BtJÑ#ó5O=R¯^’ªGƒÔ$ "‡˜‚&¬¤ÂŸz”2H%ð „žk²_m™DÈ " ÖVÉ ¬Œ±+ ¶ôEK Ã+ ¸”¢L¥… 0uÀÆÀÀ[üPS páXbM…A ¬à 'JÙØ ?2Ń'͵N†¨PDu›ô`Ã!ª¶Ä&‚YŠé@fM¦!BA’0±B!¬`¦Ù(DqSh¨@ˆA© äÆVTb)}¨€&$ÁÉO¬DRãRÐqŠ&05À#ÃÕTœv|Дª ]‘UY’FxÚÉ1•þšt MÅÅŠ•8=ÂB’°’E0*æšñ-¡¦Mm¾I*ÔŸ›å¹§hz±ò<Œ š&B¤ A¤„ÑÁ©Ìà¨Mx°ÂÈ%¬¤KÐ'O @–ìfÅ”H$’£½M”b*Ñ5ÕÁšJ·'MLJ•A0Z%]’ñ ‰!DA¥@ lB16Bu°¢Xg&à™d D±È³™mÖ™.`Ú ‹<$jª ¤‰8€P|°DâËŠ¼`´ÑCdJ..¥@ U,òI„S­ Mýãw|² @jñoÀSAF ÚéÐTÒe’ƙԄ+N’ôÀ þÈ:ŒIÐ$-8‘&±J»YP&Sœ ´xêiSh_tñÁ7êG _ÔÔ »>z“ˆ8bÉY°°SHb/ \qɧK0«¬!ÐØ¨p Y¡BSt´õÖT¶Î}Ó&O˜°Ä]TwØvˆ%©ˆl,áA¦ì)‚¤À…ŒKû8µ¬r™* îÞdn'6•hS)^œžUQÄØq9"‡@Úž°ÜQ'vh’ÁXñ¬n)¨ÄÃ~˜Àyö¦ŠCÌ€–MÓÂTð „Ð^AÂE‚9 "|9¨ L.¹j±CØ@Î8á„ü€0þWpA ê —ÄÀ„ÄN2†ø& ‘€Ïê<Ð…×í«)è€È„;é)³ N¤<¾¡‚%4Ä ôth¤Ä 8‡BJü)Ä$ô¢Ÿ‚ÿY!6¡%¨C(ƒq’tB!0¤!uH üâ¦@¢r¤òÀ  áŠT‘Àº(#ˆ9 | Ú`ùPP†{)„ ‚<À'zHÁ@˜ÁÀÄ /HAb–PBÊ¡mò€ ‹@‚' †2tƒ@x&¬À™@8!…üÐ `p ü#"&Èäˆ6IŠ*hÊ þ ÃpHS!E&‚µþí¡8´QXÙ”ü ¯üƒ«šÂ‡Mh" €†à¹[©àJ7Å<€S¡kЋ÷¸ÁÙD…IE@à‡:µ¬qÓÂÁ ØÎ@]â0øÖ@BQÅ5 ~5áˆLQåAK¦r+ô&v8rÒ0Ð ‚¡SÁ´ó;¦ïЃZ× Î¹ aAH*æp¸ÀY)+BQ i 2ˆžzÀð' !XBܸ¦r‘ÀA%Î7ˆ@9™ ðÀŸGT t6álà@ªè 4€J¦DÀ Ÿ`þXÊ© E:`K'‰7Ál¾g ƒˆlÐ+tì.%¬×Ì Þ!ÑTHp°-8̦wÚ@ eˆTÔC°"Äɼ¾æˆ2„)ŒFì” ™ØÁR€xbipSàˆ©ÀD’°ì06” ««a¿´­Mdupƒjõ0Ú$w 2¸}Þq¯÷RÃÉ5 Z¤IøW“î• *ðƒå0W“F­\@@jA–ZM°`¿"8Ãì×Ktª F š²K(Øš[WÿÀ¤¦à4˜@Ór[ᛜb ' +@!…Ì B¯€!1É›L Spring Faces: Hotel Booking Sample Application
././@LongLink0000000000000000000000000000020000000000000011555 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/booking-faces/src/main/webapp/WEB-INF/login.xhtmllibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/booking-faces/src/main0000644000000000000000000000330411360615634027710 0ustar

Login Required

Your login attempt was not successful, try again.
Reason: #{sessionScope.SPRING_SECURITY_LAST_EXCEPTION.message}

Valid username/passwords are:

  • keith/melbourne
  • erwin/leuven
  • jeremy/atlanta
  • scott/rochester
User:
Password:
Don't ask for my password for two weeks:
././@LongLink0000000000000000000000000000020500000000000011562 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/booking-faces/src/main/webapp/WEB-INF/faces-config.xmllibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/booking-faces/src/main0000644000000000000000000000051311360615636027711 0ustar com.sun.facelets.FaceletViewHandler ././@LongLink0000000000000000000000000000017400000000000011567 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/booking-faces/src/main/webapp/WEB-INF/web.xmllibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/booking-faces/src/main0000644000000000000000000000753311360615640027715 0ustar contextConfigLocation /WEB-INF/config/web-application-config.xml javax.faces.DEFAULT_SUFFIX .xhtml facelets.DEVELOPMENT true facelets.REFRESH_PERIOD 1 charEncodingFilter org.springframework.web.filter.CharacterEncodingFilter encoding UTF-8 forceEncoding true charEncodingFilter /* springSecurityFilterChain org.springframework.web.filter.DelegatingFilterProxy springSecurityFilterChain /* org.springframework.web.context.ContextLoaderListener Resources Servlet org.springframework.js.resource.ResourceServlet 0 Resources Servlet /resources/* Spring MVC Dispatcher Servlet org.springframework.web.servlet.DispatcherServlet contextConfigLocation 2 Spring MVC Dispatcher Servlet /spring/* Faces Servlet javax.faces.webapp.FacesServlet 1 Faces Servlet *.faces index.html ././@LongLink0000000000000000000000000000017300000000000011566 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/booking-faces/src/main/webapp/WEB-INF/flows/libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/booking-faces/src/main0000755000000000000000000000000011360615632027704 5ustar ././@LongLink0000000000000000000000000000020000000000000011555 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/booking-faces/src/main/webapp/WEB-INF/flows/main/libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/booking-faces/src/main0000755000000000000000000000000011360615644027707 5ustar ././@LongLink0000000000000000000000000000021500000000000011563 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/booking-faces/src/main/webapp/WEB-INF/flows/main/main-flow.xmllibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/booking-faces/src/main0000644000000000000000000000470111360615640027707 0ustar ././@LongLink0000000000000000000000000000022200000000000011561 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/booking-faces/src/main/webapp/WEB-INF/flows/main/reviewHotels.xhtmllibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/booking-faces/src/main0000644000000000000000000000421211360615636027711 0ustar

Hotel Results

#{h.name} Address #{h.address} #{h.city}, #{h.state}, #{h.country} Zip #{h.zip} Action
././@LongLink0000000000000000000000000000022100000000000011560 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/booking-faces/src/main/webapp/WEB-INF/flows/main/reviewHotel.xhtmllibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/booking-faces/src/main0000644000000000000000000000334411360615644027715 0ustar

View Hotel

Name:
#{hotel.name}
Address:
#{hotel.address}
City:
#{hotel.city}
State:
#{hotel.state}
Zip:
#{hotel.zip}
Country:
#{hotel.country}
Nightly rate:
 
././@LongLink0000000000000000000000000000023100000000000011561 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/booking-faces/src/main/webapp/WEB-INF/flows/main/enterSearchCriteria.xhtmllibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/booking-faces/src/main0000644000000000000000000000624511360615632027715 0ustar

Search Hotels

Search String:
Maximum results:

Current Hotel Bookings

Name #{booking.hotel.name} Address #{booking.hotel.address} City, State #{booking.hotel.city}, #{booking.hotel.state} Check in date Check out date Confirmation number #{booking.id} Action
././@LongLink0000000000000000000000000000020300000000000011560 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/booking-faces/src/main/webapp/WEB-INF/flows/booking/libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/booking-faces/src/main0000755000000000000000000000000011360615644027707 5ustar ././@LongLink0000000000000000000000000000022600000000000011565 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/booking-faces/src/main/webapp/WEB-INF/flows/booking/reviewBooking.xhtmllibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/booking-faces/src/main0000644000000000000000000000455011360615632027712 0ustar

Confirm Hotel Booking

Name:
#{booking.hotel.name}
Address:
#{booking.hotel.address}
City, State:
#{booking.hotel.city}, #{booking.hotel.state}
Zip:
#{booking.hotel.zip}
Country:
#{booking.hotel.country}
Total payment:
Check In Date:
Check Out Date:
Credit Card #:
#{booking.creditCard}
   
././@LongLink0000000000000000000000000000023400000000000011564 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/booking-faces/src/main/webapp/WEB-INF/flows/booking/enterBookingDetails.xhtmllibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/booking-faces/src/main0000644000000000000000000001207311360615642027712 0ustar

Book Hotel

Name:
#{booking.hotel.name}
Address:
#{booking.hotel.address}
City, State:
#{booking.hotel.city}, #{booking.hotel.state}
Zip:
#{booking.hotel.zip}
Country:
#{booking.hotel.country}
Nightly rate:
Check In Date:
Check Out Date:
Room Preference:
Smoking Preference:
Amenities:
Credit Card #:
Credit Card Name:
Expiration Date:
 
././@LongLink0000000000000000000000000000022600000000000011565 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/booking-faces/src/main/webapp/WEB-INF/flows/booking/messages.propertieslibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/booking-faces/src/main0000644000000000000000000000024711360615644027714 0ustar booking.checkinDate.beforeToday=The Check In Date must be a future date booking.checkoutDate.beforeCheckinDate=The Check Out Date must be later than the Check In Date ././@LongLink0000000000000000000000000000022300000000000011562 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/booking-faces/src/main/webapp/WEB-INF/flows/booking/booking-flow.xmllibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/booking-faces/src/main0000644000000000000000000000201611360615644027710 0ustar ././@LongLink0000000000000000000000000000017500000000000011570 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/booking-faces/src/main/webapp/WEB-INF/classes/libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/booking-faces/src/main0000755000000000000000000000000011360615632027704 5ustar ././@LongLink0000000000000000000000000000021500000000000011563 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/booking-faces/src/main/webapp/WEB-INF/classes/log4j.propertieslibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/booking-faces/src/main0000644000000000000000000000066711360615632027717 0ustar log4j.rootCategory=INFO, stdout log4j.appender.stdout=org.apache.log4j.ConsoleAppender log4j.appender.stdout.layout=org.apache.log4j.PatternLayout log4j.appender.stdout.layout.ConversionPattern=%d %p [%c] - <%m>%n # Enable web flow logging log4j.category.org.springframework.webflow=DEBUG log4j.category.org.springframework.faces=DEBUG log4j.category.org.springframework.binding=DEBUG log4j.category.org.springframework.transaction=DEBUG././@LongLink0000000000000000000000000000020000000000000011555 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/booking-faces/src/main/webapp/WEB-INF/intro.xhtmllibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/booking-faces/src/main0000644000000000000000000000344011360615642027710 0ustar

Welcome to Spring Travel

This reference application illustrates how to use Spring MVC, Spring Web Flow, and Spring Faces together to power rich web applications based on Spring and JavaServerFaces technology.

The key features illustrated in this sample include:

  • A declarative navigation model enabling full browser button support and dynamic navigation rules
  • A fine-grained state management model, including support for ConversationScope and ViewScope
  • Modularization of web application functionality by domain use case, illustrating project structure best-practices
  • Managed persistence contexts with the Java Persistence API (JPA)
  • Unified Expression Language (EL) integration
  • Spring Security integration
  • Declarative page authoring with Facelets, including applying reusable page layouts
  • A lightweight component library for Ajax and client-side validation that employs progressive enhancement techniques
  • Exception handling support across all layers of the application
  • Spring IDE tooling integration, with support for graphical flow modeling and visualization

Start your Spring Travel experience

././@LongLink0000000000000000000000000000017400000000000011567 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/booking-faces/src/main/webapp/WEB-INF/config/libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/booking-faces/src/main0000755000000000000000000000000011360615642027705 5ustar ././@LongLink0000000000000000000000000000021700000000000011565 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/booking-faces/src/main/webapp/WEB-INF/config/security-config.xmllibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/booking-faces/src/main0000644000000000000000000000332711360615636027717 0ustar ././@LongLink0000000000000000000000000000021600000000000011564 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/booking-faces/src/main/webapp/WEB-INF/config/webflow-config.xmllibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/booking-faces/src/main0000644000000000000000000000373311360615642027715 0ustar ././@LongLink0000000000000000000000000000021500000000000011563 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/booking-faces/src/main/webapp/WEB-INF/config/webmvc-config.xmllibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/booking-faces/src/main0000644000000000000000000000320711360615632027710 0ustar ././@LongLink0000000000000000000000000000022600000000000011565 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/booking-faces/src/main/webapp/WEB-INF/config/web-application-config.xmllibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/booking-faces/src/main0000644000000000000000000000167111360615640027712 0ustar ././@LongLink0000000000000000000000000000022200000000000011561 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/booking-faces/src/main/webapp/WEB-INF/config/data-access-config.xmllibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/booking-faces/src/main0000644000000000000000000000321011360615642027703 0ustar ././@LongLink0000000000000000000000000000021000000000000011556 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/booking-faces/src/main/webapp/WEB-INF/logoutSuccess.xhtmllibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/booking-faces/src/main0000644000000000000000000000076411360615644027720 0ustar

Logout

You have successfully logged out.

Continue

././@LongLink0000000000000000000000000000016400000000000011566 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/booking-faces/src/main/webapp/styles/libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/booking-faces/src/main0000755000000000000000000000000011360615644027707 5ustar ././@LongLink0000000000000000000000000000017700000000000011572 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/booking-faces/src/main/webapp/styles/booking.csslibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/booking-faces/src/main0000644000000000000000000000510011360615644027705 0ustar a, a:visited, a:link, a:active { color: #59924B; background-color: transparent; text-decoration: none; font-weight: bold; } a:hover { color: white; background-color: #65a242; text-decoration: none; font-weight: bold; } body.spring { background-color: #9cac7c; } form div, form p { padding: 0px; margin: 0 0 .5em 0; } #header.spring { margin: 0 0 1em 0; padding: 0px 0px; background-color : #414f23; } #branding.spring { float: none; width: 100%; margin: 10px 0 0 0; padding: 0 0 0 0; text-align: none; } #welcome { padding: 10px 10px; } #welcome div.left { float: left; } #welcome div.right { float: right; } #content.spring { width: 740px; background: #fff url(../images/bg.gif) 0 0 repeat; margin-bottom: 0px; } #content.spring input[type="submit"], input[type="button"], button { font-size: 1em; font-weight: bold; color: #fff; background: #fff url(../images/btn.bg.gif) 0 0 repeat-x; border-style: none; padding: 2px 2px 2px 2px; } #local.spring{ width: 215px; } #footer.spring { padding: 25px 0; background-color : white; border-top: 1px solid #C3BBB6; } #footer.spring img { float: right; padding-right: 20px; } .errors { font-weight: bold; text-align: left; color: #600; } .errors ul { list-style: none; } .section { text-align: left; width: 505px; float: left; margin-bottom: 5px; } .field { float:left; } .field .label { float: left; padding-top: 5px; padding-right: 5px; font-weight: bold; width: 150px; text-align: right; } .field .input { float: left; width: 250px; text-align: left; } .field .output { float: left; width: 250px; padding-top: 5px; text-align: left; } .buttonGroup { clear: both; text-align: right; } .buttonGroup input[type="submit"], .buttonGroup input[type="button"], .buttonGroup button, .buttonGroup a { margin-left: 5px; margin-right: 5px; } .summary { width: 100%; border: 1px solid #414f23; border-collapse: collapse; } .summary thead th { border-left: 1px solid #414f23; background: #fff url(../images/th.bg.gif) 0 100% repeat-x; border-bottom: 1px solid #414f23; padding: 6px; text-align: left; font-size: small; } .summary tbody td { border-left: 1px solid #9cac7c; padding: 4px; border-bottom: 1px solid #9cac7c; font-size: 8pt; }././@LongLink0000000000000000000000000000016600000000000011570 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/booking-faces/src/main/webapp/META-INF/libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/booking-faces/src/main0000755000000000000000000000000011360615632027704 5ustar ././@LongLink0000000000000000000000000000020100000000000011556 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/booking-faces/src/main/webapp/META-INF/MANIFEST.MFlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/booking-faces/src/main0000644000000000000000000000003111360615632027700 0ustar Manifest-Version: 1.0 ././@LongLink0000000000000000000000000000016000000000000011562 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/booking-faces/src/main/resources/libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/booking-faces/src/main0000755000000000000000000000000011360615632027704 5ustar ././@LongLink0000000000000000000000000000017200000000000011565 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/booking-faces/src/main/resources/import.sqllibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/booking-faces/src/main0000644000000000000000000001006411360615632027707 0ustar insert into Customer (username, name) values ('keith', 'Keith') insert into Customer (username, name) values ('erwin', 'Erwin') insert into Customer (username, name) values ('jeremy', 'Jeremy') insert into Customer (username, name) values ('scott', 'Scott') insert into Hotel (id, price, name, address, city, state, zip, country) values (1, 199, 'Westin Diplomat', '3555 S. Ocean Drive', 'Hollywood', 'FL', '33019', 'USA') insert into Hotel (id, price, name, address, city, state, zip, country) values (2, 60, 'Jameson Inn', '890 Palm Bay Rd NE', 'Palm Bay', 'FL', '32905', 'USA') insert into Hotel (id, price, name, address, city, state, zip, country) values (3, 199, 'Chilworth Manor', 'The Cottage, Southampton Business Park', 'Southampton', 'Hants', 'SO16 7JF', 'UK') insert into Hotel (id, price, name, address, city, state, zip, country) values (4, 120, 'Marriott Courtyard', 'Tower Place, Buckhead', 'Atlanta', 'GA', '30305', 'USA') insert into Hotel (id, price, name, address, city, state, zip, country) values (5, 180, 'Doubletree', 'Tower Place, Buckhead', 'Atlanta', 'GA', '30305', 'USA') insert into Hotel (id, price, name, address, city, state, zip, country) values (6, 450, 'W Hotel', 'Union Square, Manhattan', 'NY', 'NY', '10011', 'USA') insert into Hotel (id, price, name, address, city, state, zip, country) values (7, 450, 'W Hotel', 'Lexington Ave, Manhattan', 'NY', 'NY', '10011', 'USA') insert into Hotel (id, price, name, address, city, state, zip, country) values (8, 250, 'Hotel Rouge', '1315 16th Street NW', 'Washington', 'DC', '20036', 'USA') insert into Hotel (id, price, name, address, city, state, zip, country) values (9, 300, '70 Park Avenue Hotel', '70 Park Avenue', 'NY', 'NY', '10011', 'USA') insert into Hotel (id, price, name, address, city, state, zip, country) values (10, 300, 'Conrad Miami', '1395 Brickell Ave', 'Miami', 'FL', '33131', 'USA') insert into Hotel (id, price, name, address, city, state, zip, country) values (11, 80, 'Sea Horse Inn', '2106 N Clairemont Ave', 'Eau Claire', 'WI', '54703', 'USA') insert into Hotel (id, price, name, address, city, state, zip, country) values (12, 90, 'Super 8 Eau Claire Campus Area', '1151 W Macarthur Ave', 'Eau Claire', 'WI', '54701', 'USA') insert into Hotel (id, price, name, address, city, state, zip, country) values (13, 160, 'Marriot Downtown', '55 Fourth Street', 'San Francisco', 'CA', '94103', 'USA') insert into Hotel (id, price, name, address, city, state, zip, country) values (14, 200, 'Hilton Diagonal Mar', 'Passeig del Taulat 262-264', 'Barcelona', 'Catalunya', '08019', 'Spain') insert into Hotel (id, price, name, address, city, state, zip, country) values (15, 210, 'Hilton Tel Aviv', 'Independence Park', 'Tel Aviv', '', '63405', 'Israel') insert into Hotel (id, price, name, address, city, state, zip, country) values (16, 240, 'InterContinental Tokyo Bay', 'Takeshiba Pier', 'Tokyo', '', '105', 'Japan') insert into Hotel (id, price, name, address, city, state, zip, country) values (17, 130, 'Hotel Beaulac', ' Esplanade Léopold-Robert 2', 'Neuchatel', '', '2000', 'Switzerland') insert into Hotel (id, price, name, address, city, state, zip, country) values (18, 140, 'Conrad Treasury Place', 'William & George Streets', 'Brisbane', 'QLD', '4001', 'Australia') insert into Hotel (id, price, name, address, city, state, zip, country) values (19, 230, 'Ritz Carlton', '1228 Sherbrooke St', 'West Montreal', 'Quebec', 'H3G1H6', 'Canada') insert into Hotel (id, price, name, address, city, state, zip, country) values (20, 460, 'Ritz Carlton', 'Peachtree Rd, Buckhead', 'Atlanta', 'GA', '30326', 'USA') insert into Hotel (id, price, name, address, city, state, zip, country) values (21, 220, 'Swissotel', '68 Market Street', 'Sydney', 'NSW', '2000', 'Australia') insert into Hotel (id, price, name, address, city, state, zip, country) values (22, 250, 'Meliá White House', 'Albany Street', 'Regents Park London', '', 'NW13UP', 'Great Britain') insert into Hotel (id, price, name, address, city, state, zip, country) values (23, 210, 'Hotel Allegro', '171 West Randolph Street', 'Chicago', 'IL', '60601', 'USA')././@LongLink0000000000000000000000000000017100000000000011564 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/booking-faces/src/main/resources/META-INF/libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/booking-faces/src/main0000755000000000000000000000000011360615632027704 5ustar ././@LongLink0000000000000000000000000000021000000000000011556 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/booking-faces/src/main/resources/META-INF/persistence.xmllibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/booking-faces/src/main0000644000000000000000000000204611360615632027710 0ustar org.hibernate.ejb.HibernatePersistence org.springframework.webflow.samples.booking.User org.springframework.webflow.samples.booking.Booking org.springframework.webflow.samples.booking.Hotel ././@LongLink0000000000000000000000000000017100000000000011564 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/booking-faces/src/main/resources/log4j.xmllibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/booking-faces/src/main0000644000000000000000000000226711360615632027715 0ustar ././@LongLink0000000000000000000000000000015300000000000011564 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/booking-faces/src/main/java/libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/booking-faces/src/main0000755000000000000000000000000011360615632027704 5ustar ././@LongLink0000000000000000000000000000015700000000000011570 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/booking-faces/src/main/java/org/libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/booking-faces/src/main0000755000000000000000000000000011360615632027704 5ustar ././@LongLink0000000000000000000000000000017700000000000011572 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/booking-faces/src/main/java/org/springframework/libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/booking-faces/src/main0000755000000000000000000000000011360615632027704 5ustar ././@LongLink0000000000000000000000000000020700000000000011564 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/booking-faces/src/main/java/org/springframework/webflow/libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/booking-faces/src/main0000755000000000000000000000000011360615632027704 5ustar ././@LongLink0000000000000000000000000000021700000000000011565 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/booking-faces/src/main/java/org/springframework/webflow/samples/libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/booking-faces/src/main0000755000000000000000000000000011360615632027704 5ustar ././@LongLink0000000000000000000000000000022700000000000011566 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/booking-faces/src/main/java/org/springframework/webflow/samples/booking/libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/booking-faces/src/main0000755000000000000000000000000011360615644027707 5ustar ././@LongLink0000000000000000000000000000024300000000000011564 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/booking-faces/src/main/java/org/springframework/webflow/samples/booking/Booking.javalibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/booking-faces/src/main0000644000000000000000000001166711360615634027723 0ustar package org.springframework.webflow.samples.booking; import java.io.Serializable; import java.math.BigDecimal; import java.text.DateFormat; import java.util.Calendar; import java.util.Date; import javax.persistence.Basic; import javax.persistence.Entity; import javax.persistence.GeneratedValue; import javax.persistence.GenerationType; import javax.persistence.Id; import javax.persistence.ManyToOne; import javax.persistence.Temporal; import javax.persistence.TemporalType; import javax.persistence.Transient; import org.springframework.binding.message.MessageBuilder; import org.springframework.binding.message.MessageContext; import org.springframework.binding.validation.ValidationContext; /** * A Hotel Booking made by a User. */ @Entity public class Booking implements Serializable { private static final long serialVersionUID = 1171567558348174963L; private Long id; private User user; private Hotel hotel; private Date checkinDate; private Date checkoutDate; private String creditCard; private String creditCardName; private int creditCardExpiryMonth; private int creditCardExpiryYear; private boolean smoking; private int beds; private Amenity amenities; public Booking() { } public Booking(Hotel hotel, User user) { this.hotel = hotel; this.user = user; Calendar calendar = Calendar.getInstance(); setCheckinDate(calendar.getTime()); calendar.add(Calendar.DAY_OF_MONTH, 1); setCheckoutDate(calendar.getTime()); } @Transient public BigDecimal getTotal() { return hotel.getPrice().multiply(new BigDecimal(getNights())); } @Transient public int getNights() { if (checkinDate == null || checkoutDate == null) { return 0; } else { return (int) (checkoutDate.getTime() - checkinDate.getTime()) / 1000 / 60 / 60 / 24; } } @Id @GeneratedValue(strategy = GenerationType.TABLE) public Long getId() { return id; } public void setId(Long id) { this.id = id; } @Basic @Temporal(TemporalType.DATE) public Date getCheckinDate() { return checkinDate; } public void setCheckinDate(Date datetime) { this.checkinDate = datetime; } @ManyToOne public Hotel getHotel() { return hotel; } public void setHotel(Hotel hotel) { this.hotel = hotel; } @ManyToOne public User getUser() { return user; } public void setUser(User user) { this.user = user; } @Basic @Temporal(TemporalType.DATE) public Date getCheckoutDate() { return checkoutDate; } public void setCheckoutDate(Date checkoutDate) { this.checkoutDate = checkoutDate; } public String getCreditCard() { return creditCard; } public void setCreditCard(String creditCard) { this.creditCard = creditCard; } @Transient public String getDescription() { DateFormat df = DateFormat.getDateInstance(DateFormat.MEDIUM); return hotel == null ? null : hotel.getName() + ", " + df.format(getCheckinDate()) + " to " + df.format(getCheckoutDate()); } public boolean isSmoking() { return smoking; } public void setSmoking(boolean smoking) { this.smoking = smoking; } public int getBeds() { return beds; } public void setBeds(int beds) { this.beds = beds; } public String getCreditCardName() { return creditCardName; } public void setCreditCardName(String creditCardName) { this.creditCardName = creditCardName; } public int getCreditCardExpiryMonth() { return creditCardExpiryMonth; } public void setCreditCardExpiryMonth(int creditCardExpiryMonth) { this.creditCardExpiryMonth = creditCardExpiryMonth; } public int getCreditCardExpiryYear() { return creditCardExpiryYear; } public void setCreditCardExpiryYear(int creditCardExpiryYear) { this.creditCardExpiryYear = creditCardExpiryYear; } @Transient public Amenity getAmenities() { return amenities; } public void setAmenities(Amenity amenities) { this.amenities = amenities; } public void validateEnterBookingDetails(ValidationContext context) { MessageContext messages = context.getMessageContext(); if (checkinDate.before(today())) { messages.addMessage(new MessageBuilder().error().source("checkinDate").code( "booking.checkinDate.beforeToday").build()); } else if (checkoutDate.before(checkinDate)) { messages.addMessage(new MessageBuilder().error().source("checkoutDate").code( "booking.checkoutDate.beforeCheckinDate").build()); } } private Date today() { Calendar calendar = Calendar.getInstance(); calendar.add(Calendar.DAY_OF_MONTH, -1); return calendar.getTime(); } @Override public String toString() { return "Booking(" + user + "," + hotel + ")"; } } ././@LongLink0000000000000000000000000000024000000000000011561 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/booking-faces/src/main/java/org/springframework/webflow/samples/booking/User.javalibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/booking-faces/src/main0000644000000000000000000000223511360615632027710 0ustar package org.springframework.webflow.samples.booking; import java.io.Serializable; import javax.persistence.Entity; import javax.persistence.Id; import javax.persistence.Table; /** * A user who can book hotels. */ @Entity @Table(name = "Customer") public class User implements Serializable { private static final long serialVersionUID = -3652559447682574722L; private String username; private String password; private String name; public User() { } public User(String username, String password, String name) { this.username = username; this.password = password; this.name = name; } @Id public String getUsername() { return username; } public void setUsername(String username) { this.username = username; } public String getPassword() { return password; } public void setPassword(String password) { this.password = password; } public String getName() { return name; } public void setName(String name) { this.name = name; } @Override public String toString() { return "User(" + username + ")"; } } ././@LongLink0000000000000000000000000000024300000000000011564 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/booking-faces/src/main/java/org/springframework/webflow/samples/booking/Amenity.javalibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/booking-faces/src/main0000644000000000000000000000016611360615632027711 0ustar package org.springframework.webflow.samples.booking; public enum Amenity { OCEAN_VIEW, LATE_CHECKOUT, MINIBAR; } ././@LongLink0000000000000000000000000000025500000000000011567 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/booking-faces/src/main/java/org/springframework/webflow/samples/booking/JpaBookingService.javalibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/booking-faces/src/main0000644000000000000000000000541311360615634027713 0ustar package org.springframework.webflow.samples.booking; import java.util.List; import javax.persistence.EntityManager; import javax.persistence.PersistenceContext; import org.springframework.stereotype.Repository; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import org.springframework.util.StringUtils; /** * A JPA-based implementation of the Booking Service. Delegates to a JPA entity manager to issue data access calls * against the backing repository. The EntityManager reference is provided by the managing container (Spring) * automatically. */ @Service("bookingService") @Repository public class JpaBookingService implements BookingService { private EntityManager em; @PersistenceContext public void setEntityManager(EntityManager em) { this.em = em; } @Transactional(readOnly = true) @SuppressWarnings("unchecked") public List findBookings(String username) { if (username != null) { return em.createQuery("select b from Booking b where b.user.username = :username order by b.checkinDate") .setParameter("username", username).getResultList(); } else { return null; } } @Transactional(readOnly = true) @SuppressWarnings("unchecked") public List findHotels(SearchCriteria criteria) { String pattern = getSearchPattern(criteria); return em.createQuery( "select h from Hotel h where lower(h.name) like " + pattern + " or lower(h.city) like " + pattern + " or lower(h.zip) like " + pattern + " or lower(h.address) like " + pattern + " order by h." + criteria.getSortBy()).setMaxResults(criteria.getPageSize()).setFirstResult( criteria.getPage() * criteria.getPageSize()).getResultList(); } @Transactional(readOnly = true) public Hotel findHotelById(Long id) { return em.find(Hotel.class, id); } @Transactional(readOnly = true) public Booking createBooking(Long hotelId, String username) { Hotel hotel = em.find(Hotel.class, hotelId); User user = findUser(username); Booking booking = new Booking(hotel, user); em.persist(booking); return booking; } // read-write transactional methods @Transactional public void cancelBooking(Booking booking) { booking = em.find(Booking.class, booking.getId()); if (booking != null) { em.remove(booking); } } // helpers private String getSearchPattern(SearchCriteria criteria) { if (StringUtils.hasText(criteria.getSearchString())) { return "'%" + criteria.getSearchString().toLowerCase().replace('*', '%') + "%'"; } else { return "'%'"; } } private User findUser(String username) { return (User) em.createQuery("select u from User u where u.username = :username").setParameter("username", username).getSingleResult(); } }././@LongLink0000000000000000000000000000024100000000000011562 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/booking-faces/src/main/java/org/springframework/webflow/samples/booking/Hotel.javalibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/booking-faces/src/main0000644000000000000000000000352511360615636027717 0ustar package org.springframework.webflow.samples.booking; import java.io.Serializable; import java.math.BigDecimal; import javax.persistence.Column; import javax.persistence.Entity; import javax.persistence.GeneratedValue; import javax.persistence.Id; /** * A hotel where users may book stays. */ @Entity public class Hotel implements Serializable { private static final long serialVersionUID = 4011346719502656269L; private Long id; private String name; private String address; private String city; private String state; private String zip; private String country; private BigDecimal price; @Id @GeneratedValue public Long getId() { return id; } public void setId(Long id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } public String getAddress() { return address; } public void setAddress(String address) { this.address = address; } public String getCity() { return city; } public void setCity(String city) { this.city = city; } public String getZip() { return zip; } public void setZip(String zip) { this.zip = zip; } public String getState() { return state; } public void setState(String state) { this.state = state; } public String getCountry() { return country; } public void setCountry(String country) { this.country = country; } @Column(precision = 6, scale = 2) public BigDecimal getPrice() { return price; } public void setPrice(BigDecimal price) { this.price = price; } public Booking createBooking(User user) { return new Booking(this, user); } @Override public String toString() { return "Hotel(" + name + "," + address + "," + city + "," + zip + ")"; } } ././@LongLink0000000000000000000000000000025200000000000011564 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/booking-faces/src/main/java/org/springframework/webflow/samples/booking/BookingService.javalibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/booking-faces/src/main0000644000000000000000000000232611360615640027710 0ustar package org.springframework.webflow.samples.booking; import java.util.List; /** * A service interface for retrieving hotels and bookings from a backing repository. Also supports the ability to cancel * a booking. */ public interface BookingService { /** * Find bookings made by the given user * @param username the user's name * @return their bookings */ public List findBookings(String username); /** * Find hotels available for booking by some criteria. * @param criteria the search criteria * @return a list of hotels meeting the criteria */ public List findHotels(SearchCriteria criteria); /** * Find hotels by their identifier. * @param id the hotel id * @return the hotel */ public Hotel findHotelById(Long id); /** * Create a new, transient hotel booking instance for the given user. * @param hotelId the hotelId * @param userName the user name * @return the new transient booking instance */ public Booking createBooking(Long hotelId, String userName); /** * Cancel an existing booking. * @param id the booking id */ public void cancelBooking(Booking booking); } ././@LongLink0000000000000000000000000000025200000000000011564 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/booking-faces/src/main/java/org/springframework/webflow/samples/booking/SearchCriteria.javalibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/booking-faces/src/main0000644000000000000000000000265611360615644027722 0ustar package org.springframework.webflow.samples.booking; import java.io.Serializable; /** * A backing bean for the main hotel search form. Encapsulates the criteria needed to perform a hotel search. */ public class SearchCriteria implements Serializable { private static final long serialVersionUID = 1L; /** * The user-provided search criteria for finding Hotels. */ private String searchString = ""; /** * The maximum page size of the Hotel result list */ private int pageSize = 5; /** * The current page of the Hotel result list. */ private int page; private String sortBy = "name"; public String getSortBy() { return sortBy; } public void setSortBy(String sortBy) { this.sortBy = sortBy; } public String getSearchString() { return searchString; } public void setSearchString(String searchString) { this.searchString = searchString; } public int getPageSize() { return pageSize; } public void setPageSize(int pageSize) { this.pageSize = pageSize; } public int getPage() { return page; } public void setPage(int page) { this.page = page; } public void nextPage() { page++; } public void previousPage() { page--; } public void resetPage() { page = 0; sortBy = "name"; } public String toString() { return "[Search Criteria searchString = '" + searchString + "'"; } }././@LongLink0000000000000000000000000000025100000000000011563 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/booking-faces/src/main/java/org/springframework/webflow/samples/booking/ReferenceData.javalibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/booking-faces/src/main0000644000000000000000000000576111360615632027717 0ustar package org.springframework.webflow.samples.booking; import java.util.ArrayList; import java.util.List; import javax.faces.model.SelectItem; import org.springframework.stereotype.Service; @Service public class ReferenceData { private List bedOptions; private List smokingOptions; private List creditCardExpMonths; private List creditCardExpYears; private List pageSizeOptions; public List getBedOptions() { if (bedOptions == null) { bedOptions = new ArrayList(); bedOptions.add(new SelectItem(new Integer(1), "One king-size bed")); bedOptions.add(new SelectItem(new Integer(2), "Two double beds")); bedOptions.add(new SelectItem(new Integer(3), "Three beds")); } return bedOptions; } public List getSmokingOptions() { if (smokingOptions == null) { smokingOptions = new ArrayList(); smokingOptions.add(new SelectItem(Boolean.TRUE, "Smoking")); smokingOptions.add(new SelectItem(Boolean.FALSE, "Non-Smoking")); } return smokingOptions; } public List getCreditCardExpMonths() { if (creditCardExpMonths == null) { creditCardExpMonths = new ArrayList(); creditCardExpMonths.add(new SelectItem(new Integer(1), "Jan")); creditCardExpMonths.add(new SelectItem(new Integer(2), "Feb")); creditCardExpMonths.add(new SelectItem(new Integer(3), "Mar")); creditCardExpMonths.add(new SelectItem(new Integer(4), "Apr")); creditCardExpMonths.add(new SelectItem(new Integer(5), "May")); creditCardExpMonths.add(new SelectItem(new Integer(6), "Jun")); creditCardExpMonths.add(new SelectItem(new Integer(7), "Jul")); creditCardExpMonths.add(new SelectItem(new Integer(8), "Aug")); creditCardExpMonths.add(new SelectItem(new Integer(9), "Sep")); creditCardExpMonths.add(new SelectItem(new Integer(10), "Oct")); creditCardExpMonths.add(new SelectItem(new Integer(11), "Nov")); creditCardExpMonths.add(new SelectItem(new Integer(12), "Dec")); } return creditCardExpMonths; } public List getCreditCardExpYears() { if (creditCardExpYears == null) { creditCardExpYears = new ArrayList(); creditCardExpYears.add(new SelectItem(new Integer(2008), "2008")); creditCardExpYears.add(new SelectItem(new Integer(2009), "2009")); creditCardExpYears.add(new SelectItem(new Integer(2010), "2010")); creditCardExpYears.add(new SelectItem(new Integer(2010), "2011")); creditCardExpYears.add(new SelectItem(new Integer(2010), "2012")); } return creditCardExpYears; } public List getPageSizeOptions() { if (pageSizeOptions == null) { pageSizeOptions = new ArrayList(); pageSizeOptions.add(new SelectItem(new Integer(5), "5")); pageSizeOptions.add(new SelectItem(new Integer(10), "10")); pageSizeOptions.add(new SelectItem(new Integer(20), "20")); } return pageSizeOptions; } } ././@LongLink0000000000000000000000000000014600000000000011566 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/booking-faces/src/test/libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/booking-faces/src/test0000755000000000000000000000000011360615646027744 5ustar ././@LongLink0000000000000000000000000000016000000000000011562 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/booking-faces/src/test/resources/libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/booking-faces/src/test0000755000000000000000000000000011360615646027744 5ustar ././@LongLink0000000000000000000000000000015300000000000011564 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/booking-faces/src/test/java/libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/booking-faces/src/test0000755000000000000000000000000011360615636027743 5ustar ././@LongLink0000000000000000000000000000015700000000000011570 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/booking-faces/src/test/java/org/libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/booking-faces/src/test0000755000000000000000000000000011360615636027743 5ustar ././@LongLink0000000000000000000000000000017700000000000011572 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/booking-faces/src/test/java/org/springframework/libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/booking-faces/src/test0000755000000000000000000000000011360615636027743 5ustar ././@LongLink0000000000000000000000000000020700000000000011564 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/booking-faces/src/test/java/org/springframework/webflow/libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/booking-faces/src/test0000755000000000000000000000000011360615636027743 5ustar ././@LongLink0000000000000000000000000000021700000000000011565 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/booking-faces/src/test/java/org/springframework/webflow/samples/libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/booking-faces/src/test0000755000000000000000000000000011360615636027743 5ustar ././@LongLink0000000000000000000000000000022700000000000011566 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/booking-faces/src/test/java/org/springframework/webflow/samples/booking/libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/booking-faces/src/test0000755000000000000000000000000011360615644027742 5ustar ././@LongLink0000000000000000000000000000026500000000000011570 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/booking-faces/src/test/java/org/springframework/webflow/samples/booking/BookingFlowExecutionTests.javalibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/booking-faces/src/test0000644000000000000000000000555711360615644027760 0ustar package org.springframework.webflow.samples.booking; import org.easymock.EasyMock; import org.springframework.faces.model.converter.FacesConversionService; import org.springframework.webflow.config.FlowDefinitionResource; import org.springframework.webflow.config.FlowDefinitionResourceFactory; import org.springframework.webflow.core.collection.LocalAttributeMap; import org.springframework.webflow.core.collection.MutableAttributeMap; import org.springframework.webflow.test.MockExternalContext; import org.springframework.webflow.test.MockFlowBuilderContext; import org.springframework.webflow.test.execution.AbstractXmlFlowExecutionTests; public class BookingFlowExecutionTests extends AbstractXmlFlowExecutionTests { private BookingService bookingService; protected void setUp() { bookingService = EasyMock.createMock(BookingService.class); } @Override protected FlowDefinitionResource getResource(FlowDefinitionResourceFactory resourceFactory) { return resourceFactory.createFileResource("src/main/webapp/WEB-INF/flows/booking/booking-flow.xml"); } @Override protected void configureFlowBuilderContext(MockFlowBuilderContext builderContext) { builderContext.registerBean("bookingService", bookingService); builderContext.getFlowBuilderServices().setConversionService(new FacesConversionService()); } public void testStartBookingFlow() { Booking booking = createTestBooking(); EasyMock.expect(bookingService.createBooking(1L, "keith")).andReturn(booking); EasyMock.replay(bookingService); MutableAttributeMap input = new LocalAttributeMap(); input.put("hotelId", "1"); MockExternalContext context = new MockExternalContext(); context.setCurrentUser("keith"); startFlow(input, context); assertCurrentStateEquals("enterBookingDetails"); assertResponseWrittenEquals("enterBookingDetails", context); assertTrue(getRequiredFlowAttribute("booking") instanceof Booking); EasyMock.verify(bookingService); } public void testEnterBookingDetails_Proceed() { setCurrentState("enterBookingDetails"); getFlowScope().put("booking", createTestBooking()); MockExternalContext context = new MockExternalContext(); context.setEventId("proceed"); resumeFlow(context); assertCurrentStateEquals("reviewBooking"); assertResponseWrittenEquals("reviewBooking", context); } public void testReviewBooking_Confirm() { setCurrentState("reviewBooking"); getFlowScope().put("booking", createTestBooking()); MockExternalContext context = new MockExternalContext(); context.setEventId("confirm"); resumeFlow(context); assertFlowExecutionEnded(); assertFlowExecutionOutcomeEquals("bookingConfirmed"); } private Booking createTestBooking() { Hotel hotel = new Hotel(); hotel.setId(1L); hotel.setName("Jameson Inn"); User user = new User("keith", "pass", "Keith Donald"); Booking booking = new Booking(hotel, user); return booking; } } ././@LongLink0000000000000000000000000000026200000000000011565 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/booking-faces/src/test/java/org/springframework/webflow/samples/booking/MainFlowExecutionTests.javalibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/booking-faces/src/test0000644000000000000000000001053411360615636027750 0ustar package org.springframework.webflow.samples.booking; import java.util.ArrayList; import java.util.List; import javax.faces.model.DataModel; import org.easymock.EasyMock; import org.springframework.binding.mapping.Mapper; import org.springframework.binding.mapping.MappingResults; import org.springframework.faces.model.OneSelectionTrackingListDataModel; import org.springframework.faces.model.converter.FacesConversionService; import org.springframework.webflow.config.FlowDefinitionResource; import org.springframework.webflow.config.FlowDefinitionResourceFactory; import org.springframework.webflow.core.collection.AttributeMap; import org.springframework.webflow.engine.EndState; import org.springframework.webflow.engine.Flow; import org.springframework.webflow.test.MockExternalContext; import org.springframework.webflow.test.MockFlowBuilderContext; import org.springframework.webflow.test.execution.AbstractXmlFlowExecutionTests; public class MainFlowExecutionTests extends AbstractXmlFlowExecutionTests { private BookingService bookingService; protected void setUp() { bookingService = EasyMock.createMock(BookingService.class); } @Override protected FlowDefinitionResource getResource(FlowDefinitionResourceFactory resourceFactory) { return resourceFactory.createFileResource("src/main/webapp/WEB-INF/flows/main/main-flow.xml"); } @Override protected void configureFlowBuilderContext(MockFlowBuilderContext builderContext) { builderContext.registerBean("bookingService", bookingService); builderContext.getFlowBuilderServices().setConversionService(new FacesConversionService()); } public void testStartMainFlow() { List bookings = new ArrayList(); bookings.add(new Booking(new Hotel(), new User("keith", "password", "Keith Donald"))); EasyMock.expect(bookingService.findBookings("keith")).andReturn(bookings); EasyMock.replay(bookingService); MockExternalContext context = new MockExternalContext(); context.setCurrentUser("keith"); startFlow(context); assertCurrentStateEquals("enterSearchCriteria"); assertResponseWrittenEquals("enterSearchCriteria", context); assertTrue(getRequiredFlowAttribute("searchCriteria") instanceof SearchCriteria); assertTrue(getRequiredViewAttribute("bookings") instanceof DataModel); EasyMock.verify(bookingService); } public void testSearchHotels() { setCurrentState("enterSearchCriteria"); SearchCriteria criteria = new SearchCriteria(); criteria.setSearchString("Jameson"); getFlowScope().put("searchCriteria", criteria); List hotels = new ArrayList(); hotels.add(new Hotel()); EasyMock.expect(bookingService.findHotels(criteria)).andReturn(hotels); EasyMock.replay(bookingService); MockExternalContext context = new MockExternalContext(); context.setEventId("search"); resumeFlow(context); EasyMock.verify(bookingService); assertCurrentStateEquals("reviewHotels"); assertResponseWrittenEquals("reviewHotels", context); assertTrue(getRequiredViewAttribute("hotels") instanceof DataModel); } public void testSelectHotel() { setCurrentState("reviewHotels"); List hotels = new ArrayList(); Hotel hotel = new Hotel(); hotel.setId(1L); hotel.setName("Jameson Inn"); hotels.add(hotel); OneSelectionTrackingListDataModel dataModel = new OneSelectionTrackingListDataModel(hotels); dataModel.select(hotel); getViewScope().put("hotels", dataModel); MockExternalContext context = new MockExternalContext(); context.setEventId("select"); resumeFlow(context); assertCurrentStateEquals("reviewHotel"); assertNull(getFlowAttribute("hotels")); assertSame(hotel, getFlowAttribute("hotel")); } public void testBookHotel() { setCurrentState("reviewHotel"); Hotel hotel = new Hotel(); hotel.setId(1L); hotel.setName("Jameson Inn"); getFlowScope().put("hotel", hotel); Flow mockBookingFlow = new Flow("booking"); mockBookingFlow.setInputMapper(new Mapper() { public MappingResults map(Object source, Object target) { assertEquals(new Long(1), ((AttributeMap) source).get("hotelId")); return null; } }); new EndState(mockBookingFlow, "bookingConfirmed"); getFlowDefinitionRegistry().registerFlowDefinition(mockBookingFlow); MockExternalContext context = new MockExternalContext(); context.setEventId("book"); resumeFlow(context); assertFlowExecutionEnded(); assertFlowExecutionOutcomeEquals("finish"); } } libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/booking-faces/pom.xml0000644000000000000000000001512011360615632027564 0ustar 4.0.0 org.springframework.webflow.samples swf-booking-faces war 2.0.9.RELEASE com.sun.facelets com.springsource.com.sun.facelets 1.1.14 javax.persistence com.springsource.javax.persistence 1.0.0 javax.servlet com.springsource.javax.servlet.jsp.jstl 1.1.2 javax.transaction com.springsource.javax.transaction 1.1.0 org.apache.log4j com.springsource.org.apache.log4j 1.2.15 org.hibernate com.springsource.org.hibernate 3.2.6.ga org.hibernate com.springsource.org.hibernate.annotations 3.3.0.ga org.hibernate com.springsource.org.hibernate.ejb 3.3.1.ga org.hsqldb com.springsource.org.hsqldb 1.8.0.9 org.jboss.el com.springsource.org.jboss.el 2.0.0.GA org.springframework org.springframework.aop ${spring.version} org.springframework org.springframework.beans ${spring.version} org.springframework org.springframework.context ${spring.version} org.springframework org.springframework.core ${spring.version} org.springframework org.springframework.jdbc ${spring.version} org.springframework org.springframework.orm ${spring.version} org.springframework org.springframework.transaction ${spring.version} org.springframework org.springframework.web ${spring.version} org.springframework org.springframework.web.servlet ${spring.version} org.springframework.security org.springframework.security 2.0.4.A org.springframework.webflow org.springframework.faces ${project.version} org.springframework.webflow org.springframework.js ${project.version} org.springframework.webflow org.springframework.webflow ${project.version} javax.faces com.springsource.javax.faces ${jsf.version} com.sun.faces com.springsource.com.sun.faces ${jsf.version} javax.el com.springsource.javax.el 1.0.0 provided javax.servlet com.springsource.javax.servlet 2.4.0 provided org.easymock com.springsource.org.easymock 2.3.0 test org.junit com.springsource.junit 3.8.2 test org.springframework org.springframework.test ${spring.version} test com.springsource.repository.bundles.release SpringSource Enterprise Bundle Repository - SpringSource Releases http://repository.springsource.com/maven/bundles/release com.springsource.repository.bundles.external SpringSource Enterprise Bundle Repository - External Releases http://repository.springsource.com/maven/bundles/external com.springsource.repository.bundles.snapshot SpringSource Enterprise Bundle Repository - Snapshot Releases http://repository.springsource.com/maven/bundles/snapshot swf-booking-faces org.apache.maven.plugins maven-compiler-plugin 1.5 1.5 2.5.6.SEC01 1.2.0.09 ././@LongLink0000000000000000000000000000014700000000000011567 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/booking-faces/.settings/libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/booking-faces/.setting0000755000000000000000000000000011360615642027725 5ustar ././@LongLink0000000000000000000000000000017700000000000011572 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/booking-faces/.settings/org.eclipse.jdt.ui.prefslibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/booking-faces/.setting0000644000000000000000000000504011360615634027727 0ustar #Thu Aug 09 13:12:30 EDT 2007 eclipse.preferences.version=1 editor_save_participant_org.eclipse.jdt.ui.postsavelistener.cleanup=true formatter_profile=_Spring Java Conventions formatter_settings_version=11 instance/org.eclipse.core.net/org.eclipse.core.net.hasMigrated=true sp_cleanup.add_default_serial_version_id=true sp_cleanup.add_generated_serial_version_id=false sp_cleanup.add_missing_annotations=true sp_cleanup.add_missing_deprecated_annotations=true sp_cleanup.add_missing_nls_tags=false sp_cleanup.add_missing_override_annotations=true sp_cleanup.add_serial_version_id=false sp_cleanup.always_use_blocks=true sp_cleanup.always_use_parentheses_in_expressions=false sp_cleanup.always_use_this_for_non_static_field_access=false sp_cleanup.always_use_this_for_non_static_method_access=false sp_cleanup.convert_to_enhanced_for_loop=false sp_cleanup.format_source_code=true sp_cleanup.make_local_variable_final=false sp_cleanup.make_parameters_final=false sp_cleanup.make_private_fields_final=true sp_cleanup.make_variable_declarations_final=true sp_cleanup.never_use_blocks=false sp_cleanup.never_use_parentheses_in_expressions=true sp_cleanup.on_save_use_additional_actions=false sp_cleanup.organize_imports=true sp_cleanup.qualify_static_field_accesses_with_declaring_class=false sp_cleanup.qualify_static_member_accesses_through_instances_with_declaring_class=true sp_cleanup.qualify_static_member_accesses_through_subtypes_with_declaring_class=true sp_cleanup.qualify_static_member_accesses_with_declaring_class=false sp_cleanup.qualify_static_method_accesses_with_declaring_class=false sp_cleanup.remove_private_constructors=true sp_cleanup.remove_trailing_whitespaces=false sp_cleanup.remove_trailing_whitespaces_all=true sp_cleanup.remove_trailing_whitespaces_ignore_empty=false sp_cleanup.remove_unnecessary_casts=true sp_cleanup.remove_unnecessary_nls_tags=false sp_cleanup.remove_unused_imports=false sp_cleanup.remove_unused_local_variables=false sp_cleanup.remove_unused_private_fields=true sp_cleanup.remove_unused_private_members=false sp_cleanup.remove_unused_private_methods=true sp_cleanup.remove_unused_private_types=true sp_cleanup.sort_members=false sp_cleanup.sort_members_all=false sp_cleanup.use_blocks=false sp_cleanup.use_blocks_only_for_return_and_throw=false sp_cleanup.use_parentheses_in_expressions=false sp_cleanup.use_this_for_non_static_field_access=false sp_cleanup.use_this_for_non_static_field_access_only_if_necessary=true sp_cleanup.use_this_for_non_static_method_access=false sp_cleanup.use_this_for_non_static_method_access_only_if_necessary=true ././@LongLink0000000000000000000000000000020100000000000011556 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/booking-faces/.settings/org.eclipse.jdt.core.prefslibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/booking-faces/.setting0000644000000000000000000005300411360615640027727 0ustar #Thu Aug 09 13:12:30 EDT 2007 eclipse.preferences.version=1 instance/org.eclipse.core.net/org.eclipse.core.net.hasMigrated=true org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.5 org.eclipse.jdt.core.compiler.compliance=1.5 org.eclipse.jdt.core.compiler.problem.assertIdentifier=error org.eclipse.jdt.core.compiler.problem.enumIdentifier=error org.eclipse.jdt.core.compiler.source=1.5 org.eclipse.jdt.core.formatter.align_type_members_on_columns=false org.eclipse.jdt.core.formatter.alignment_for_arguments_in_allocation_expression=16 org.eclipse.jdt.core.formatter.alignment_for_arguments_in_enum_constant=16 org.eclipse.jdt.core.formatter.alignment_for_arguments_in_explicit_constructor_call=16 org.eclipse.jdt.core.formatter.alignment_for_arguments_in_method_invocation=16 org.eclipse.jdt.core.formatter.alignment_for_arguments_in_qualified_allocation_expression=16 org.eclipse.jdt.core.formatter.alignment_for_assignment=0 org.eclipse.jdt.core.formatter.alignment_for_binary_expression=16 org.eclipse.jdt.core.formatter.alignment_for_compact_if=16 org.eclipse.jdt.core.formatter.alignment_for_conditional_expression=80 org.eclipse.jdt.core.formatter.alignment_for_enum_constants=0 org.eclipse.jdt.core.formatter.alignment_for_expressions_in_array_initializer=16 org.eclipse.jdt.core.formatter.alignment_for_multiple_fields=16 org.eclipse.jdt.core.formatter.alignment_for_parameters_in_constructor_declaration=16 org.eclipse.jdt.core.formatter.alignment_for_parameters_in_method_declaration=16 org.eclipse.jdt.core.formatter.alignment_for_selector_in_method_invocation=16 org.eclipse.jdt.core.formatter.alignment_for_superclass_in_type_declaration=16 org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_enum_declaration=16 org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_type_declaration=16 org.eclipse.jdt.core.formatter.alignment_for_throws_clause_in_constructor_declaration=16 org.eclipse.jdt.core.formatter.alignment_for_throws_clause_in_method_declaration=16 org.eclipse.jdt.core.formatter.blank_lines_after_imports=1 org.eclipse.jdt.core.formatter.blank_lines_after_package=1 org.eclipse.jdt.core.formatter.blank_lines_before_field=0 org.eclipse.jdt.core.formatter.blank_lines_before_first_class_body_declaration=0 org.eclipse.jdt.core.formatter.blank_lines_before_imports=1 org.eclipse.jdt.core.formatter.blank_lines_before_member_type=1 org.eclipse.jdt.core.formatter.blank_lines_before_method=1 org.eclipse.jdt.core.formatter.blank_lines_before_new_chunk=1 org.eclipse.jdt.core.formatter.blank_lines_before_package=0 org.eclipse.jdt.core.formatter.blank_lines_between_import_groups=1 org.eclipse.jdt.core.formatter.blank_lines_between_type_declarations=1 org.eclipse.jdt.core.formatter.brace_position_for_annotation_type_declaration=end_of_line org.eclipse.jdt.core.formatter.brace_position_for_anonymous_type_declaration=end_of_line org.eclipse.jdt.core.formatter.brace_position_for_array_initializer=end_of_line org.eclipse.jdt.core.formatter.brace_position_for_block=end_of_line org.eclipse.jdt.core.formatter.brace_position_for_block_in_case=end_of_line org.eclipse.jdt.core.formatter.brace_position_for_constructor_declaration=end_of_line org.eclipse.jdt.core.formatter.brace_position_for_enum_constant=end_of_line org.eclipse.jdt.core.formatter.brace_position_for_enum_declaration=end_of_line org.eclipse.jdt.core.formatter.brace_position_for_method_declaration=end_of_line org.eclipse.jdt.core.formatter.brace_position_for_switch=end_of_line org.eclipse.jdt.core.formatter.brace_position_for_type_declaration=end_of_line org.eclipse.jdt.core.formatter.comment.clear_blank_lines_in_block_comment=false org.eclipse.jdt.core.formatter.comment.clear_blank_lines_in_javadoc_comment=false org.eclipse.jdt.core.formatter.comment.format_block_comments=true org.eclipse.jdt.core.formatter.comment.format_header=false org.eclipse.jdt.core.formatter.comment.format_html=true org.eclipse.jdt.core.formatter.comment.format_javadoc_comments=true org.eclipse.jdt.core.formatter.comment.format_line_comments=true org.eclipse.jdt.core.formatter.comment.format_source_code=true org.eclipse.jdt.core.formatter.comment.indent_parameter_description=true org.eclipse.jdt.core.formatter.comment.indent_root_tags=false org.eclipse.jdt.core.formatter.comment.insert_new_line_before_root_tags=do not insert org.eclipse.jdt.core.formatter.comment.insert_new_line_for_parameter=do not insert org.eclipse.jdt.core.formatter.comment.line_length=120 org.eclipse.jdt.core.formatter.compact_else_if=true org.eclipse.jdt.core.formatter.continuation_indentation=2 org.eclipse.jdt.core.formatter.continuation_indentation_for_array_initializer=2 org.eclipse.jdt.core.formatter.format_guardian_clause_on_one_line=false org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_annotation_declaration_header=true org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_enum_constant_header=true org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_enum_declaration_header=true org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_type_header=true org.eclipse.jdt.core.formatter.indent_breaks_compare_to_cases=true org.eclipse.jdt.core.formatter.indent_empty_lines=false org.eclipse.jdt.core.formatter.indent_statements_compare_to_block=true org.eclipse.jdt.core.formatter.indent_statements_compare_to_body=true org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_cases=true org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_switch=false org.eclipse.jdt.core.formatter.indentation.size=4 org.eclipse.jdt.core.formatter.insert_new_line_after_annotation=insert org.eclipse.jdt.core.formatter.insert_new_line_after_opening_brace_in_array_initializer=do not insert org.eclipse.jdt.core.formatter.insert_new_line_at_end_of_file_if_missing=do not insert org.eclipse.jdt.core.formatter.insert_new_line_before_catch_in_try_statement=do not insert org.eclipse.jdt.core.formatter.insert_new_line_before_closing_brace_in_array_initializer=do not insert org.eclipse.jdt.core.formatter.insert_new_line_before_else_in_if_statement=do not insert org.eclipse.jdt.core.formatter.insert_new_line_before_finally_in_try_statement=do not insert org.eclipse.jdt.core.formatter.insert_new_line_before_while_in_do_statement=do not insert org.eclipse.jdt.core.formatter.insert_new_line_in_empty_annotation_declaration=insert org.eclipse.jdt.core.formatter.insert_new_line_in_empty_anonymous_type_declaration=insert org.eclipse.jdt.core.formatter.insert_new_line_in_empty_block=insert org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_constant=insert org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_declaration=insert org.eclipse.jdt.core.formatter.insert_new_line_in_empty_method_body=insert org.eclipse.jdt.core.formatter.insert_new_line_in_empty_type_declaration=insert org.eclipse.jdt.core.formatter.insert_space_after_and_in_type_parameter=insert org.eclipse.jdt.core.formatter.insert_space_after_assignment_operator=insert org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation=do not insert org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation_type_declaration=do not insert org.eclipse.jdt.core.formatter.insert_space_after_binary_operator=insert org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_arguments=insert org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_parameters=insert org.eclipse.jdt.core.formatter.insert_space_after_closing_brace_in_block=insert org.eclipse.jdt.core.formatter.insert_space_after_closing_paren_in_cast=insert org.eclipse.jdt.core.formatter.insert_space_after_colon_in_assert=insert org.eclipse.jdt.core.formatter.insert_space_after_colon_in_case=insert org.eclipse.jdt.core.formatter.insert_space_after_colon_in_conditional=insert org.eclipse.jdt.core.formatter.insert_space_after_colon_in_for=insert org.eclipse.jdt.core.formatter.insert_space_after_colon_in_labeled_statement=insert org.eclipse.jdt.core.formatter.insert_space_after_comma_in_allocation_expression=insert org.eclipse.jdt.core.formatter.insert_space_after_comma_in_annotation=insert org.eclipse.jdt.core.formatter.insert_space_after_comma_in_array_initializer=insert org.eclipse.jdt.core.formatter.insert_space_after_comma_in_constructor_declaration_parameters=insert org.eclipse.jdt.core.formatter.insert_space_after_comma_in_constructor_declaration_throws=insert org.eclipse.jdt.core.formatter.insert_space_after_comma_in_enum_constant_arguments=insert org.eclipse.jdt.core.formatter.insert_space_after_comma_in_enum_declarations=insert org.eclipse.jdt.core.formatter.insert_space_after_comma_in_explicitconstructorcall_arguments=insert org.eclipse.jdt.core.formatter.insert_space_after_comma_in_for_increments=insert org.eclipse.jdt.core.formatter.insert_space_after_comma_in_for_inits=insert org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_declaration_parameters=insert org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_declaration_throws=insert org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_invocation_arguments=insert org.eclipse.jdt.core.formatter.insert_space_after_comma_in_multiple_field_declarations=insert org.eclipse.jdt.core.formatter.insert_space_after_comma_in_multiple_local_declarations=insert org.eclipse.jdt.core.formatter.insert_space_after_comma_in_parameterized_type_reference=insert org.eclipse.jdt.core.formatter.insert_space_after_comma_in_superinterfaces=insert org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_arguments=insert org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_parameters=insert org.eclipse.jdt.core.formatter.insert_space_after_ellipsis=insert org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_parameterized_type_reference=do not insert org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_arguments=do not insert org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_parameters=do not insert org.eclipse.jdt.core.formatter.insert_space_after_opening_brace_in_array_initializer=insert org.eclipse.jdt.core.formatter.insert_space_after_opening_bracket_in_array_allocation_expression=do not insert org.eclipse.jdt.core.formatter.insert_space_after_opening_bracket_in_array_reference=do not insert org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_annotation=do not insert org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_cast=do not insert org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_catch=do not insert org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_constructor_declaration=do not insert org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_enum_constant=do not insert org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_for=do not insert org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_if=do not insert org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_method_declaration=do not insert org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_method_invocation=do not insert org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_parenthesized_expression=do not insert org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_switch=do not insert org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_synchronized=do not insert org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_while=do not insert org.eclipse.jdt.core.formatter.insert_space_after_postfix_operator=do not insert org.eclipse.jdt.core.formatter.insert_space_after_prefix_operator=do not insert org.eclipse.jdt.core.formatter.insert_space_after_question_in_conditional=insert org.eclipse.jdt.core.formatter.insert_space_after_question_in_wildcard=do not insert org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_for=insert org.eclipse.jdt.core.formatter.insert_space_after_unary_operator=do not insert org.eclipse.jdt.core.formatter.insert_space_before_and_in_type_parameter=insert org.eclipse.jdt.core.formatter.insert_space_before_assignment_operator=insert org.eclipse.jdt.core.formatter.insert_space_before_at_in_annotation_type_declaration=insert org.eclipse.jdt.core.formatter.insert_space_before_binary_operator=insert org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_parameterized_type_reference=do not insert org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_arguments=do not insert org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_parameters=do not insert org.eclipse.jdt.core.formatter.insert_space_before_closing_brace_in_array_initializer=insert org.eclipse.jdt.core.formatter.insert_space_before_closing_bracket_in_array_allocation_expression=do not insert org.eclipse.jdt.core.formatter.insert_space_before_closing_bracket_in_array_reference=do not insert org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_annotation=do not insert org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_cast=do not insert org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_catch=do not insert org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_constructor_declaration=do not insert org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_enum_constant=do not insert org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_for=do not insert org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_if=do not insert org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_method_declaration=do not insert org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_method_invocation=do not insert org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_parenthesized_expression=do not insert org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_switch=do not insert org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_synchronized=do not insert org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_while=do not insert org.eclipse.jdt.core.formatter.insert_space_before_colon_in_assert=insert org.eclipse.jdt.core.formatter.insert_space_before_colon_in_case=do not insert org.eclipse.jdt.core.formatter.insert_space_before_colon_in_conditional=insert org.eclipse.jdt.core.formatter.insert_space_before_colon_in_default=do not insert org.eclipse.jdt.core.formatter.insert_space_before_colon_in_for=insert org.eclipse.jdt.core.formatter.insert_space_before_colon_in_labeled_statement=do not insert org.eclipse.jdt.core.formatter.insert_space_before_comma_in_allocation_expression=do not insert org.eclipse.jdt.core.formatter.insert_space_before_comma_in_annotation=do not insert org.eclipse.jdt.core.formatter.insert_space_before_comma_in_array_initializer=do not insert org.eclipse.jdt.core.formatter.insert_space_before_comma_in_constructor_declaration_parameters=do not insert org.eclipse.jdt.core.formatter.insert_space_before_comma_in_constructor_declaration_throws=do not insert org.eclipse.jdt.core.formatter.insert_space_before_comma_in_enum_constant_arguments=do not insert org.eclipse.jdt.core.formatter.insert_space_before_comma_in_enum_declarations=do not insert org.eclipse.jdt.core.formatter.insert_space_before_comma_in_explicitconstructorcall_arguments=do not insert org.eclipse.jdt.core.formatter.insert_space_before_comma_in_for_increments=do not insert org.eclipse.jdt.core.formatter.insert_space_before_comma_in_for_inits=do not insert org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_declaration_parameters=do not insert org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_declaration_throws=do not insert org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_invocation_arguments=do not insert org.eclipse.jdt.core.formatter.insert_space_before_comma_in_multiple_field_declarations=do not insert org.eclipse.jdt.core.formatter.insert_space_before_comma_in_multiple_local_declarations=do not insert org.eclipse.jdt.core.formatter.insert_space_before_comma_in_parameterized_type_reference=do not insert org.eclipse.jdt.core.formatter.insert_space_before_comma_in_superinterfaces=do not insert org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_arguments=do not insert org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_parameters=do not insert org.eclipse.jdt.core.formatter.insert_space_before_ellipsis=do not insert org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_parameterized_type_reference=do not insert org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_arguments=do not insert org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_parameters=do not insert org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_annotation_type_declaration=insert org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_anonymous_type_declaration=insert org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_array_initializer=insert org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_block=insert org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_constructor_declaration=insert org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_enum_constant=insert org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_enum_declaration=insert org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_method_declaration=insert org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_switch=insert org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_type_declaration=insert org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_allocation_expression=do not insert org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_reference=do not insert org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_type_reference=do not insert org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_annotation=do not insert org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_annotation_type_member_declaration=do not insert org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_catch=insert org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_constructor_declaration=do not insert org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_enum_constant=do not insert org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_for=insert org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_if=insert org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_method_declaration=do not insert org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_method_invocation=do not insert org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_parenthesized_expression=do not insert org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_switch=insert org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_synchronized=insert org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_while=insert org.eclipse.jdt.core.formatter.insert_space_before_parenthesized_expression_in_return=insert org.eclipse.jdt.core.formatter.insert_space_before_parenthesized_expression_in_throw=insert org.eclipse.jdt.core.formatter.insert_space_before_postfix_operator=do not insert org.eclipse.jdt.core.formatter.insert_space_before_prefix_operator=do not insert org.eclipse.jdt.core.formatter.insert_space_before_question_in_conditional=insert org.eclipse.jdt.core.formatter.insert_space_before_question_in_wildcard=do not insert org.eclipse.jdt.core.formatter.insert_space_before_semicolon=do not insert org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_for=do not insert org.eclipse.jdt.core.formatter.insert_space_before_unary_operator=do not insert org.eclipse.jdt.core.formatter.insert_space_between_brackets_in_array_type_reference=do not insert org.eclipse.jdt.core.formatter.insert_space_between_empty_braces_in_array_initializer=do not insert org.eclipse.jdt.core.formatter.insert_space_between_empty_brackets_in_array_allocation_expression=do not insert org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_annotation_type_member_declaration=do not insert org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_constructor_declaration=do not insert org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_enum_constant=do not insert org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_method_declaration=do not insert org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_method_invocation=do not insert org.eclipse.jdt.core.formatter.keep_else_statement_on_same_line=false org.eclipse.jdt.core.formatter.keep_empty_array_initializer_on_one_line=false org.eclipse.jdt.core.formatter.keep_imple_if_on_one_line=false org.eclipse.jdt.core.formatter.keep_then_statement_on_same_line=false org.eclipse.jdt.core.formatter.lineSplit=120 org.eclipse.jdt.core.formatter.never_indent_block_comments_on_first_column=false org.eclipse.jdt.core.formatter.never_indent_line_comments_on_first_column=false org.eclipse.jdt.core.formatter.number_of_blank_lines_at_beginning_of_method_body=0 org.eclipse.jdt.core.formatter.number_of_empty_lines_to_preserve=1 org.eclipse.jdt.core.formatter.put_empty_statement_on_new_line=true org.eclipse.jdt.core.formatter.tabulation.char=mixed org.eclipse.jdt.core.formatter.tabulation.size=8 org.eclipse.jdt.core.formatter.use_tabs_only_for_leading_indentations=false org.eclipse.jdt.core.formatter.wrap_before_binary_operator=true ././@LongLink0000000000000000000000000000022400000000000011563 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/booking-faces/.settings/org.eclipse.wst.common.project.facet.core.xmllibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/booking-faces/.setting0000644000000000000000000000041311360615636027730 0ustar ././@LongLink0000000000000000000000000000022100000000000011560 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/booking-faces/.settings/org.springframework.ide.eclipse.core.prefslibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/booking-faces/.setting0000644000000000000000000001773211360615632027740 0ustar #Sun Apr 27 09:05:45 EDT 2008 eclipse.preferences.version=1 instance/org.eclipse.core.net/org.eclipse.core.net.hasMigrated=true org.springframework.ide.eclipse.core.builders.enable.aopreferencemodelbuilder=true org.springframework.ide.eclipse.core.builders.enable.osgibundleupdater=true org.springframework.ide.eclipse.core.enable.project.preferences=true org.springframework.ide.eclipse.core.validator.enable.com.springsource.sts.bestpractices.beansvalidator=true org.springframework.ide.eclipse.core.validator.enable.org.springframework.ide.eclipse.beans.core.beansvalidator=true org.springframework.ide.eclipse.core.validator.enable.org.springframework.ide.eclipse.core.springvalidator=true org.springframework.ide.eclipse.core.validator.enable.org.springframework.ide.eclipse.webflow.core.validator=true org.springframework.ide.eclipse.core.validator.rule.enable.com.springsource.sts.bestpractices.com.springsource.sts.bestpractices.AvoidDriverManagerDataSource-com.springsource.sts.bestpractices.beansvalidator=true org.springframework.ide.eclipse.core.validator.rule.enable.com.springsource.sts.bestpractices.com.springsource.sts.bestpractices.ImportElementsAtTopRulee-com.springsource.sts.bestpractices.beansvalidator=true org.springframework.ide.eclipse.core.validator.rule.enable.com.springsource.sts.bestpractices.com.springsource.sts.bestpractices.ParentBeanSpecifiesAbstractClassRule-com.springsource.sts.bestpractices.beansvalidator=true org.springframework.ide.eclipse.core.validator.rule.enable.com.springsource.sts.bestpractices.com.springsource.sts.bestpractices.RefElementRule-com.springsource.sts.bestpractices.beansvalidator=true org.springframework.ide.eclipse.core.validator.rule.enable.com.springsource.sts.bestpractices.com.springsource.sts.bestpractices.TooManyBeansInFileRule-com.springsource.sts.bestpractices.beansvalidator=true org.springframework.ide.eclipse.core.validator.rule.enable.com.springsource.sts.bestpractices.com.springsource.sts.bestpractices.UnnecessaryValueElementRule-com.springsource.sts.bestpractices.beansvalidator=true org.springframework.ide.eclipse.core.validator.rule.enable.com.springsource.sts.bestpractices.com.springsource.sts.bestpractices.UseBeanInheritance-com.springsource.sts.bestpractices.beansvalidator=true org.springframework.ide.eclipse.core.validator.rule.enable.com.springsource.sts.bestpractices.legacyxmlusage.jndiobjectfactory-com.springsource.sts.bestpractices.beansvalidator=true org.springframework.ide.eclipse.core.validator.rule.enable.org.springframework.ide.eclipse.beans.core.beanAlias-org.springframework.ide.eclipse.beans.core.beansvalidator=true org.springframework.ide.eclipse.core.validator.rule.enable.org.springframework.ide.eclipse.beans.core.beanClass-org.springframework.ide.eclipse.beans.core.beansvalidator=true org.springframework.ide.eclipse.core.validator.rule.enable.org.springframework.ide.eclipse.beans.core.beanConstructorArgument-org.springframework.ide.eclipse.beans.core.beansvalidator=true org.springframework.ide.eclipse.core.validator.rule.enable.org.springframework.ide.eclipse.beans.core.beanDefinition-org.springframework.ide.eclipse.beans.core.beansvalidator=true org.springframework.ide.eclipse.core.validator.rule.enable.org.springframework.ide.eclipse.beans.core.beanDefinitionHolder-org.springframework.ide.eclipse.beans.core.beansvalidator=true org.springframework.ide.eclipse.core.validator.rule.enable.org.springframework.ide.eclipse.beans.core.beanFactory-org.springframework.ide.eclipse.beans.core.beansvalidator=true org.springframework.ide.eclipse.core.validator.rule.enable.org.springframework.ide.eclipse.beans.core.beanInitDestroyMethod-org.springframework.ide.eclipse.beans.core.beansvalidator=true org.springframework.ide.eclipse.core.validator.rule.enable.org.springframework.ide.eclipse.beans.core.beanProperty-org.springframework.ide.eclipse.beans.core.beansvalidator=true org.springframework.ide.eclipse.core.validator.rule.enable.org.springframework.ide.eclipse.beans.core.beanReference-org.springframework.ide.eclipse.beans.core.beansvalidator=true org.springframework.ide.eclipse.core.validator.rule.enable.org.springframework.ide.eclipse.beans.core.methodOverride-org.springframework.ide.eclipse.beans.core.beansvalidator=true org.springframework.ide.eclipse.core.validator.rule.enable.org.springframework.ide.eclipse.beans.core.parsingProblems-org.springframework.ide.eclipse.beans.core.beansvalidator=false org.springframework.ide.eclipse.core.validator.rule.enable.org.springframework.ide.eclipse.beans.core.requiredProperty-org.springframework.ide.eclipse.beans.core.beansvalidator=false org.springframework.ide.eclipse.core.validator.rule.enable.org.springframework.ide.eclipse.core.springClasspath-org.springframework.ide.eclipse.core.springvalidator=true org.springframework.ide.eclipse.core.validator.rule.enable.org.springframework.ide.eclipse.webflow.core.validation.action-org.springframework.ide.eclipse.webflow.core.validator=true org.springframework.ide.eclipse.core.validator.rule.enable.org.springframework.ide.eclipse.webflow.core.validation.actionstate-org.springframework.ide.eclipse.webflow.core.validator=true org.springframework.ide.eclipse.core.validator.rule.enable.org.springframework.ide.eclipse.webflow.core.validation.attribute-org.springframework.ide.eclipse.webflow.core.validator=true org.springframework.ide.eclipse.core.validator.rule.enable.org.springframework.ide.eclipse.webflow.core.validation.attributemapper-org.springframework.ide.eclipse.webflow.core.validator=true org.springframework.ide.eclipse.core.validator.rule.enable.org.springframework.ide.eclipse.webflow.core.validation.beanaction-org.springframework.ide.eclipse.webflow.core.validator=true org.springframework.ide.eclipse.core.validator.rule.enable.org.springframework.ide.eclipse.webflow.core.validation.evaluationaction-org.springframework.ide.eclipse.webflow.core.validator=true org.springframework.ide.eclipse.core.validator.rule.enable.org.springframework.ide.eclipse.webflow.core.validation.evaluationresult-org.springframework.ide.eclipse.webflow.core.validator=true org.springframework.ide.eclipse.core.validator.rule.enable.org.springframework.ide.eclipse.webflow.core.validation.exceptionhandler-org.springframework.ide.eclipse.webflow.core.validator=true org.springframework.ide.eclipse.core.validator.rule.enable.org.springframework.ide.eclipse.webflow.core.validation.import-org.springframework.ide.eclipse.webflow.core.validator=true org.springframework.ide.eclipse.core.validator.rule.enable.org.springframework.ide.eclipse.webflow.core.validation.inputattribute-org.springframework.ide.eclipse.webflow.core.validator=true org.springframework.ide.eclipse.core.validator.rule.enable.org.springframework.ide.eclipse.webflow.core.validation.mapping-org.springframework.ide.eclipse.webflow.core.validator=true org.springframework.ide.eclipse.core.validator.rule.enable.org.springframework.ide.eclipse.webflow.core.validation.outputattribute-org.springframework.ide.eclipse.webflow.core.validator=true org.springframework.ide.eclipse.core.validator.rule.enable.org.springframework.ide.eclipse.webflow.core.validation.set-org.springframework.ide.eclipse.webflow.core.validator=true org.springframework.ide.eclipse.core.validator.rule.enable.org.springframework.ide.eclipse.webflow.core.validation.state-org.springframework.ide.eclipse.webflow.core.validator=true org.springframework.ide.eclipse.core.validator.rule.enable.org.springframework.ide.eclipse.webflow.core.validation.subflowstate-org.springframework.ide.eclipse.webflow.core.validator=true org.springframework.ide.eclipse.core.validator.rule.enable.org.springframework.ide.eclipse.webflow.core.validation.transition-org.springframework.ide.eclipse.webflow.core.validator=true org.springframework.ide.eclipse.core.validator.rule.enable.org.springframework.ide.eclipse.webflow.core.validation.variable-org.springframework.ide.eclipse.webflow.core.validator=true org.springframework.ide.eclipse.core.validator.rule.enable.org.springframework.ide.eclipse.webflow.core.validation.webflowstate-org.springframework.ide.eclipse.webflow.core.validator=true ././@LongLink0000000000000000000000000000020100000000000011556 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/booking-faces/.settings/org.eclipse.jpt.core.prefslibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/booking-faces/.setting0000644000000000000000000000033111360615632027723 0ustar #Thu Aug 09 13:12:30 EDT 2007 eclipse.preferences.version=1 instance/org.eclipse.core.net/org.eclipse.core.net.hasMigrated=true org.eclipse.jpt.core.discoverAnnotatedClasses=true org.eclipse.jpt.core.platform=generic ././@LongLink0000000000000000000000000000020700000000000011564 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/booking-faces/.settings/org.eclipse.wst.validation.prefslibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/booking-faces/.setting0000644000000000000000000000367711360615642027744 0ustar #Thu Aug 09 13:12:30 EDT 2007 DELEGATES_PREFERENCE=delegateValidatorListorg.eclipse.wst.wsdl.validation.internal.eclipse.WSDLDelegatingValidator\=org.eclipse.wst.wsdl.validation.internal.eclipse.Validator;org.eclipse.wst.xsd.core.internal.validation.eclipse.XSDDelegatingValidator\=org.eclipse.wst.xsd.core.internal.validation.eclipse.Validator; USER_BUILD_PREFERENCE=enabledBuildValidatorListorg.eclipse.wst.html.internal.validation.HTMLValidator;org.eclipse.wst.xml.core.internal.validation.eclipse.Validator;org.eclipse.wst.dtd.core.internal.validation.eclipse.Validator;org.eclipse.wst.wsdl.validation.internal.eclipse.WSDLDelegatingValidator;org.eclipse.jst.j2ee.internal.web.validation.UIWarValidator;org.eclipse.jst.jsp.core.internal.validation.JSPELValidator;org.eclipse.jst.jsp.core.internal.validation.JSPJavaValidator;org.eclipse.jst.jsp.core.internal.validation.JSPDirectiveValidator;org.eclipse.wst.common.componentcore.internal.ModuleCoreValidator;org.eclipse.wst.wsi.ui.internal.WSIMessageValidator;org.eclipse.wst.xsd.core.internal.validation.eclipse.XSDDelegatingValidator; USER_MANUAL_PREFERENCE=enabledManualValidatorListorg.eclipse.wst.html.internal.validation.HTMLValidator;org.eclipse.wst.xml.core.internal.validation.eclipse.Validator;org.eclipse.wst.dtd.core.internal.validation.eclipse.Validator;org.eclipse.wst.wsdl.validation.internal.eclipse.WSDLDelegatingValidator;org.eclipse.jst.j2ee.internal.web.validation.UIWarValidator;org.eclipse.jst.jsp.core.internal.validation.JSPELValidator;org.eclipse.jst.jsp.core.internal.validation.JSPJavaValidator;org.eclipse.jst.jsp.core.internal.validation.JSPDirectiveValidator;org.eclipse.wst.common.componentcore.internal.ModuleCoreValidator;org.eclipse.wst.wsi.ui.internal.WSIMessageValidator;org.eclipse.wst.xsd.core.internal.validation.eclipse.XSDDelegatingValidator; USER_PREFERENCE=overrideGlobalPreferencesfalse eclipse.preferences.version=1 instance/org.eclipse.core.net/org.eclipse.core.net.hasMigrated=true ././@LongLink0000000000000000000000000000021200000000000011560 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/booking-faces/.settings/org.hibernate.eclipse.console.prefslibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/booking-faces/.setting0000644000000000000000000000027611360615632027733 0ustar #Thu Aug 09 13:12:30 EDT 2007 default.configuration=swf-booking-jsf eclipse.preferences.version=1 hibernate3.enabled=true instance/org.eclipse.core.net/org.eclipse.core.net.hasMigrated=true ././@LongLink0000000000000000000000000000020700000000000011564 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/booking-faces/.settings/org.eclipse.wst.common.componentlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/booking-faces/.setting0000644000000000000000000000124711360615632027732 0ustar ././@LongLink0000000000000000000000000000014600000000000011566 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/booking-faces/build.xmllibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/booking-faces/build.xm0000644000000000000000000000062411360615634027721 0ustar ././@LongLink0000000000000000000000000000014700000000000011567 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/booking-faces/.classpathlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/booking-faces/.classpa0000644000000000000000000000235611360615642027706 0ustar libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/booking-faces/ivy.xml0000644000000000000000000001011011360615634027574 0ustar ././@LongLink0000000000000000000000000000014500000000000011565 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/booking-portlet-faces/libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/booking-portlet-faces/0000755000000000000000000000000011360615644027742 5ustar ././@LongLink0000000000000000000000000000016300000000000011565 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/booking-portlet-faces/.springWebflowlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/booking-portlet-faces/0000644000000000000000000000157211360615632027746 0ustar 1 src/main/webapp/WEB-INF/flows/view/view.xml src/main/webapp/WEB-INF/flows/booking/booking.xml src/main/webapp/WEB-INF/flows/main/main.xml ././@LongLink0000000000000000000000000000015500000000000011566 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/booking-portlet-faces/.projectlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/booking-portlet-faces/0000644000000000000000000000237111360615640027743 0ustar swf-booking-portlet-faces Spring Web Flow Faces Portlet Example org.eclipse.jdt.core.javabuilder org.eclipse.wst.common.project.facet.core.builder org.eclipse.wst.validation.validationbuilder org.springframework.ide.eclipse.core.springbuilder org.hibernate.eclipse.console.hibernateBuilder org.springframework.ide.eclipse.core.springnature org.eclipse.wst.common.project.facet.core.nature org.eclipse.jdt.core.javanature org.eclipse.wst.common.modulecore.ModuleCoreNature org.eclipse.jem.workbench.JavaEMFNature org.hibernate.eclipse.console.hibernateNature ././@LongLink0000000000000000000000000000016100000000000011563 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/booking-portlet-faces/.springBeanslibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/booking-portlet-faces/0000644000000000000000000000157011360615636027750 0ustar 1 src/main/webapp/WEB-INF/config/application-config.xml src/main/webapp/WEB-INF/config/hotelbooking-portlet-config.xml true false src/main/webapp/WEB-INF/config/application-config.xml src/main/webapp/WEB-INF/config/hotelbooking-portlet-config.xml ././@LongLink0000000000000000000000000000015100000000000011562 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/booking-portlet-faces/src/libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/booking-portlet-faces/0000755000000000000000000000000011360615646027744 5ustar ././@LongLink0000000000000000000000000000015600000000000011567 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/booking-portlet-faces/src/main/libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/booking-portlet-faces/0000755000000000000000000000000011360615634027741 5ustar ././@LongLink0000000000000000000000000000016500000000000011567 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/booking-portlet-faces/src/main/webapp/libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/booking-portlet-faces/0000755000000000000000000000000011360615632027737 5ustar ././@LongLink0000000000000000000000000000017500000000000011570 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/booking-portlet-faces/src/main/webapp/WEB-INF/libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/booking-portlet-faces/0000755000000000000000000000000011360615642027740 5ustar ././@LongLink0000000000000000000000000000021500000000000011563 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/booking-portlet-faces/src/main/webapp/WEB-INF/faces-config.xmllibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/booking-portlet-faces/0000644000000000000000000000051311360615636027744 0ustar com.sun.facelets.FaceletViewHandler ././@LongLink0000000000000000000000000000020400000000000011561 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/booking-portlet-faces/src/main/webapp/WEB-INF/web.xmllibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/booking-portlet-faces/0000644000000000000000000000505111360615642027743 0ustar contextConfigLocation /WEB-INF/config/application-config.xml javax.faces.DEFAULT_SUFFIX .xhtml facelets.DEVELOPMENT true facelets.REFRESH_PERIOD 1 org.springframework.web.context.ContextLoaderListener Resources Servlet org.springframework.js.resource.ResourceServlet 0 Resources Servlet /resources/* swf-booking-faces org.apache.pluto.core.PortletServlet portlet-name swf-booking-faces 1 swf-booking-faces /PlutoInvoker/swf-booking-faces Faces Servlet javax.faces.webapp.FacesServlet 1 Faces Servlet *.faces ././@LongLink0000000000000000000000000000020300000000000011560 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/booking-portlet-faces/src/main/webapp/WEB-INF/flows/libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/booking-portlet-faces/0000755000000000000000000000000011360615640027736 5ustar ././@LongLink0000000000000000000000000000021000000000000011556 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/booking-portlet-faces/src/main/webapp/WEB-INF/flows/main/libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/booking-portlet-faces/0000755000000000000000000000000011360615642027740 5ustar ././@LongLink0000000000000000000000000000023200000000000011562 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/booking-portlet-faces/src/main/webapp/WEB-INF/flows/main/reviewHotels.xhtmllibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/booking-portlet-faces/0000644000000000000000000000342711360615636027753 0ustar

Hotel Results

Name #{hotel.name} Address #{hotel.address} City, State #{hotel.city}, #{hotel.state}, #{hotel.country} Zip #{hotel.zip} Action
././@LongLink0000000000000000000000000000023100000000000011561 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/booking-portlet-faces/src/main/webapp/WEB-INF/flows/main/reviewHotel.xhtmllibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/booking-portlet-faces/0000644000000000000000000000323011360615640027736 0ustar

View Hotel

Name: #{hotel.name}
Address: #{hotel.address}
City: #{hotel.city}
State: #{hotel.state}
Zip: #{hotel.zip}
Country: #{hotel.country}
Nightly rate:
 
././@LongLink0000000000000000000000000000022000000000000011557 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/booking-portlet-faces/src/main/webapp/WEB-INF/flows/main/main.xmllibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/booking-portlet-faces/0000644000000000000000000000432511360615632027745 0ustar ././@LongLink0000000000000000000000000000024100000000000011562 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/booking-portlet-faces/src/main/webapp/WEB-INF/flows/main/enterSearchCriteria.xhtmllibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/booking-portlet-faces/0000644000000000000000000000573711360615642027756 0ustar

Search Hotels

Maximum results:

Current Hotel Bookings

Name #{booking.hotel.name} Address #{booking.hotel.address} City, State #{booking.hotel.city}, #{booking.hotel.state} Check in date Check out date Confirmation number #{booking.id} Action
././@LongLink0000000000000000000000000000021000000000000011556 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/booking-portlet-faces/src/main/webapp/WEB-INF/flows/view/libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/booking-portlet-faces/0000755000000000000000000000000011360615644027742 5ustar ././@LongLink0000000000000000000000000000022000000000000011557 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/booking-portlet-faces/src/main/webapp/WEB-INF/flows/view/view.xmllibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/booking-portlet-faces/0000644000000000000000000000077711360615644027757 0ustar ././@LongLink0000000000000000000000000000022300000000000011562 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/booking-portlet-faces/src/main/webapp/WEB-INF/flows/view/intro.xhtmllibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/booking-portlet-faces/0000644000000000000000000000316711360615640027747 0ustar

Welcome to Spring Travel

This reference application illustrates Spring Faces, a software library that integrates Spring and JavaServerFaces technology in a portlet environment.

The key features illustrated in this sample include:

  • A declarative navigation model enabling full browser button support and dynamic navigation rules
  • A fine-grained state management model, including support for ConversationScope and ViewScope
  • Modularization of web application functionality by domain use case, illustrating project structure best-practices
  • Managed persistence contexts with the Java Persistence API (JPA)
  • Unified Expression Language (EL) integration
  • Declarative page authoring with Facelets, including applying reusable page layouts
  • Exception handling support across all layers of the application
  • Spring IDE tooling integration, with support for graphical flow modeling and visualization

Start your Spring Travel experience

././@LongLink0000000000000000000000000000021300000000000011561 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/booking-portlet-faces/src/main/webapp/WEB-INF/flows/booking/libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/booking-portlet-faces/0000755000000000000000000000000011360615644027742 5ustar ././@LongLink0000000000000000000000000000022600000000000011565 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/booking-portlet-faces/src/main/webapp/WEB-INF/flows/booking/booking.xmllibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/booking-portlet-faces/0000644000000000000000000000216011360615632027740 0ustar ././@LongLink0000000000000000000000000000023600000000000011566 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/booking-portlet-faces/src/main/webapp/WEB-INF/flows/booking/reviewBooking.xhtmllibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/booking-portlet-faces/0000644000000000000000000000445011360615632027744 0ustar

Confirm Hotel Booking

Name: #{booking.hotel.name}
Address: #{booking.hotel.address}
City, State: #{booking.hotel.city}, #{booking.hotel.state}
Zip: #{booking.hotel.zip}
Country: #{booking.hotel.country}
Total payment:
Check In Date:
Check Out Date:
Credit Card #: #{booking.creditCard}
   
././@LongLink0000000000000000000000000000024400000000000011565 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/booking-portlet-faces/src/main/webapp/WEB-INF/flows/booking/enterBookingDetails.xhtmllibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/booking-portlet-faces/0000644000000000000000000001101011360615644027735 0ustar

Book Hotel

Name: #{booking.hotel.name}
Address: #{booking.hotel.address}
City, State: #{booking.hotel.city}, #{booking.hotel.state}
Zip: #{booking.hotel.zip}
Country: #{booking.hotel.country}
Nightly rate:
Check In Date:
Check Out Date:
Room Preference:
Smoking Preference:
Credit Card #:
Credit Card Name:
Expiration Date:
 
././@LongLink0000000000000000000000000000020500000000000011562 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/booking-portlet-faces/src/main/webapp/WEB-INF/classes/libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/booking-portlet-faces/0000755000000000000000000000000011360615632027737 5ustar ././@LongLink0000000000000000000000000000022500000000000011564 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/booking-portlet-faces/src/main/webapp/WEB-INF/classes/log4j.propertieslibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/booking-portlet-faces/0000644000000000000000000000066711360615632027752 0ustar log4j.rootCategory=INFO, stdout log4j.appender.stdout=org.apache.log4j.ConsoleAppender log4j.appender.stdout.layout=org.apache.log4j.PatternLayout log4j.appender.stdout.layout.ConversionPattern=%d %p [%c] - <%m>%n # Enable web flow logging log4j.category.org.springframework.webflow=DEBUG log4j.category.org.springframework.faces=DEBUG log4j.category.org.springframework.binding=DEBUG log4j.category.org.springframework.transaction=DEBUG././@LongLink0000000000000000000000000000021000000000000011556 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/booking-portlet-faces/src/main/webapp/WEB-INF/portlet.xmllibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/booking-portlet-faces/0000644000000000000000000000172711360615640027747 0ustar swf-booking-faces Spring Webflow Booking Faces org.springframework.web.portlet.DispatcherPortlet contextConfigLocation /WEB-INF/config/hotelbooking-portlet-config.xml viewRendererUrl /WEB-INF/servlet/view 0 text/html view Spring Webflow Booking Faces ././@LongLink0000000000000000000000000000020400000000000011561 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/booking-portlet-faces/src/main/webapp/WEB-INF/config/libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/booking-portlet-faces/0000755000000000000000000000000011360615646027744 5ustar ././@LongLink0000000000000000000000000000023200000000000011562 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/booking-portlet-faces/src/main/webapp/WEB-INF/config/application-config.xmllibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/booking-portlet-faces/0000644000000000000000000000411711360615640027743 0ustar ././@LongLink0000000000000000000000000000024300000000000011564 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/booking-portlet-faces/src/main/webapp/WEB-INF/config/hotelbooking-portlet-config.xmllibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/booking-portlet-faces/0000644000000000000000000000523011360615646027746 0ustar ././@LongLink0000000000000000000000000000017000000000000011563 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/booking-portlet-faces/src/main/resources/libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/booking-portlet-faces/0000755000000000000000000000000011360615636027743 5ustar ././@LongLink0000000000000000000000000000020200000000000011557 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/booking-portlet-faces/src/main/resources/import.sqllibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/booking-portlet-faces/0000644000000000000000000001013211360615636027742 0ustar insert into Customer (username, name) values ('keith', 'Keith') insert into Customer (username, name) values ('erwin', 'Erwin') insert into Customer (username, name) values ('jeremy', 'Jeremy') insert into Customer (username, name) values ('scott', 'Scott') insert into Customer (username, name) values ('pluto', 'Pluto') insert into Hotel (id, price, name, address, city, state, zip, country) values (1, 199, 'Westin Diplomat', '3555 S. Ocean Drive', 'Hollywood', 'FL', '33019', 'USA') insert into Hotel (id, price, name, address, city, state, zip, country) values (2, 60, 'Jameson Inn', '890 Palm Bay Rd NE', 'Palm Bay', 'FL', '32905', 'USA') insert into Hotel (id, price, name, address, city, state, zip, country) values (3, 199, 'Chilworth Manor', 'The Cottage, Southampton Business Park', 'Southampton', 'Hants', 'SO16 7JF', 'UK') insert into Hotel (id, price, name, address, city, state, zip, country) values (4, 120, 'Marriott Courtyard', 'Tower Place, Buckhead', 'Atlanta', 'GA', '30305', 'USA') insert into Hotel (id, price, name, address, city, state, zip, country) values (5, 180, 'Doubletree', 'Tower Place, Buckhead', 'Atlanta', 'GA', '30305', 'USA') insert into Hotel (id, price, name, address, city, state, zip, country) values (6, 450, 'W Hotel', 'Union Square, Manhattan', 'NY', 'NY', '10011', 'USA') insert into Hotel (id, price, name, address, city, state, zip, country) values (7, 450, 'W Hotel', 'Lexington Ave, Manhattan', 'NY', 'NY', '10011', 'USA') insert into Hotel (id, price, name, address, city, state, zip, country) values (8, 250, 'Hotel Rouge', '1315 16th Street NW', 'Washington', 'DC', '20036', 'USA') insert into Hotel (id, price, name, address, city, state, zip, country) values (9, 300, '70 Park Avenue Hotel', '70 Park Avenue', 'NY', 'NY', '10011', 'USA') insert into Hotel (id, price, name, address, city, state, zip, country) values (10, 300, 'Conrad Miami', '1395 Brickell Ave', 'Miami', 'FL', '33131', 'USA') insert into Hotel (id, price, name, address, city, state, zip, country) values (11, 80, 'Sea Horse Inn', '2106 N Clairemont Ave', 'Eau Claire', 'WI', '54703', 'USA') insert into Hotel (id, price, name, address, city, state, zip, country) values (12, 90, 'Super 8 Eau Claire Campus Area', '1151 W Macarthur Ave', 'Eau Claire', 'WI', '54701', 'USA') insert into Hotel (id, price, name, address, city, state, zip, country) values (13, 160, 'Marriot Downtown', '55 Fourth Street', 'San Francisco', 'CA', '94103', 'USA') insert into Hotel (id, price, name, address, city, state, zip, country) values (14, 200, 'Hilton Diagonal Mar', 'Passeig del Taulat 262-264', 'Barcelona', 'Catalunya', '08019', 'Spain') insert into Hotel (id, price, name, address, city, state, zip, country) values (15, 210, 'Hilton Tel Aviv', 'Independence Park', 'Tel Aviv', '', '63405', 'Israel') insert into Hotel (id, price, name, address, city, state, zip, country) values (16, 240, 'InterContinental Tokyo Bay', 'Takeshiba Pier', 'Tokyo', '', '105', 'Japan') insert into Hotel (id, price, name, address, city, state, zip, country) values (17, 130, 'Hotel Beaulac', ' Esplanade Léopold-Robert 2', 'Neuchatel', '', '2000', 'Switzerland') insert into Hotel (id, price, name, address, city, state, zip, country) values (18, 140, 'Conrad Treasury Place', 'William & George Streets', 'Brisbane', 'QLD', '4001', 'Australia') insert into Hotel (id, price, name, address, city, state, zip, country) values (19, 230, 'Ritz Carlton', '1228 Sherbrooke St', 'West Montreal', 'Quebec', 'H3G1H6', 'Canada') insert into Hotel (id, price, name, address, city, state, zip, country) values (20, 460, 'Ritz Carlton', 'Peachtree Rd, Buckhead', 'Atlanta', 'GA', '30326', 'USA') insert into Hotel (id, price, name, address, city, state, zip, country) values (21, 220, 'Swissotel', '68 Market Street', 'Sydney', 'NSW', '2000', 'Australia') insert into Hotel (id, price, name, address, city, state, zip, country) values (22, 250, 'Meliá White House', 'Albany Street', 'Regents Park London', '', 'NW13UP', 'Great Britain') insert into Hotel (id, price, name, address, city, state, zip, country) values (23, 210, 'Hotel Allegro', '171 West Randolph Street', 'Chicago', 'IL', '60601', 'USA')././@LongLink0000000000000000000000000000020100000000000011556 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/booking-portlet-faces/src/main/resources/META-INF/libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/booking-portlet-faces/0000755000000000000000000000000011360615634027741 5ustar ././@LongLink0000000000000000000000000000022000000000000011557 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/booking-portlet-faces/src/main/resources/META-INF/persistence.xmllibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/booking-portlet-faces/0000644000000000000000000000204611360615634027745 0ustar org.hibernate.ejb.HibernatePersistence org.springframework.webflow.samples.booking.User org.springframework.webflow.samples.booking.Booking org.springframework.webflow.samples.booking.Hotel ././@LongLink0000000000000000000000000000020100000000000011556 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/booking-portlet-faces/src/main/resources/log4j.xmllibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/booking-portlet-faces/0000644000000000000000000000226711360615636027754 0ustar ././@LongLink0000000000000000000000000000016300000000000011565 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/booking-portlet-faces/src/main/java/libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/booking-portlet-faces/0000755000000000000000000000000011360615632027737 5ustar ././@LongLink0000000000000000000000000000016700000000000011571 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/booking-portlet-faces/src/main/java/org/libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/booking-portlet-faces/0000755000000000000000000000000011360615632027737 5ustar ././@LongLink0000000000000000000000000000020700000000000011564 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/booking-portlet-faces/src/main/java/org/springframework/libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/booking-portlet-faces/0000755000000000000000000000000011360615632027737 5ustar ././@LongLink0000000000000000000000000000021700000000000011565 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/booking-portlet-faces/src/main/java/org/springframework/webflow/libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/booking-portlet-faces/0000755000000000000000000000000011360615632027737 5ustar ././@LongLink0000000000000000000000000000022700000000000011566 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/booking-portlet-faces/src/main/java/org/springframework/webflow/samples/libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/booking-portlet-faces/0000755000000000000000000000000011360615632027737 5ustar ././@LongLink0000000000000000000000000000023700000000000011567 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/booking-portlet-faces/src/main/java/org/springframework/webflow/samples/booking/libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/booking-portlet-faces/0000755000000000000000000000000011360615646027744 5ustar ././@LongLink0000000000000000000000000000025300000000000011565 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/booking-portlet-faces/src/main/java/org/springframework/webflow/samples/booking/Booking.javalibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/booking-portlet-faces/0000644000000000000000000001056211360615634027747 0ustar package org.springframework.webflow.samples.booking; import java.io.Serializable; import java.math.BigDecimal; import java.text.DateFormat; import java.util.Calendar; import java.util.Date; import javax.persistence.Basic; import javax.persistence.Entity; import javax.persistence.GeneratedValue; import javax.persistence.GenerationType; import javax.persistence.Id; import javax.persistence.ManyToOne; import javax.persistence.Temporal; import javax.persistence.TemporalType; import javax.persistence.Transient; import org.springframework.binding.message.MessageBuilder; import org.springframework.binding.message.MessageContext; /** * A Hotel Booking made by a User. */ @Entity public class Booking implements Serializable { private static final long serialVersionUID = 1171567558348174963L; private Long id; private User user; private Hotel hotel; private Date checkinDate; private Date checkoutDate; private String creditCard; private String creditCardName; private int creditCardExpiryMonth; private int creditCardExpiryYear; private boolean smoking; private int beds; public Booking() { } public Booking(Hotel hotel, User user) { this.hotel = hotel; this.user = user; Calendar calendar = Calendar.getInstance(); setCheckinDate(calendar.getTime()); calendar.add(Calendar.DAY_OF_MONTH, 1); setCheckoutDate(calendar.getTime()); } @Transient public BigDecimal getTotal() { return hotel.getPrice().multiply(new BigDecimal(getNights())); } @Transient public int getNights() { return (int) (checkoutDate.getTime() - checkinDate.getTime()) / 1000 / 60 / 60 / 24; } @Id @GeneratedValue(strategy = GenerationType.TABLE) public Long getId() { return id; } public void setId(Long id) { this.id = id; } @Basic @Temporal(TemporalType.DATE) public Date getCheckinDate() { return checkinDate; } public void setCheckinDate(Date datetime) { this.checkinDate = datetime; } @ManyToOne public Hotel getHotel() { return hotel; } public void setHotel(Hotel hotel) { this.hotel = hotel; } @ManyToOne public User getUser() { return user; } public void setUser(User user) { this.user = user; } @Basic @Temporal(TemporalType.DATE) public Date getCheckoutDate() { return checkoutDate; } public void setCheckoutDate(Date checkoutDate) { this.checkoutDate = checkoutDate; } public String getCreditCard() { return creditCard; } public void setCreditCard(String creditCard) { this.creditCard = creditCard; } @Transient public String getDescription() { DateFormat df = DateFormat.getDateInstance(DateFormat.MEDIUM); return hotel == null ? null : hotel.getName() + ", " + df.format(getCheckinDate()) + " to " + df.format(getCheckoutDate()); } public boolean isSmoking() { return smoking; } public void setSmoking(boolean smoking) { this.smoking = smoking; } public int getBeds() { return beds; } public void setBeds(int beds) { this.beds = beds; } public String getCreditCardName() { return creditCardName; } public void setCreditCardName(String creditCardName) { this.creditCardName = creditCardName; } public int getCreditCardExpiryMonth() { return creditCardExpiryMonth; } public void setCreditCardExpiryMonth(int creditCardExpiryMonth) { this.creditCardExpiryMonth = creditCardExpiryMonth; } public int getCreditCardExpiryYear() { return creditCardExpiryYear; } public void setCreditCardExpiryYear(int creditCardExpiryYear) { this.creditCardExpiryYear = creditCardExpiryYear; } public boolean validate(MessageContext context) { Calendar calendar = Calendar.getInstance(); calendar.add(Calendar.DAY_OF_MONTH, -1); boolean valid = true; if (checkinDate.before(calendar.getTime())) { context.addMessage(new MessageBuilder().error().source("checkinDate").defaultText( "Check in date must be a future date").build()); valid = false; } else if (!checkinDate.before(checkoutDate)) { context.addMessage(new MessageBuilder().error().source("checkoutDate").defaultText( "Check out date must be later than check in date").build()); valid = false; } return valid; } @Override public String toString() { return "Booking(" + user + "," + hotel + ")"; } } ././@LongLink0000000000000000000000000000025000000000000011562 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/booking-portlet-faces/src/main/java/org/springframework/webflow/samples/booking/User.javalibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/booking-portlet-faces/0000644000000000000000000000213711360615634027746 0ustar package org.springframework.webflow.samples.booking; import java.io.Serializable; import javax.persistence.Entity; import javax.persistence.Id; import javax.persistence.Table; /** * A user who can book hotels. */ @Entity @Table(name = "Customer") public class User implements Serializable { private static final long serialVersionUID = -3652559447682574722L; private String username; private String password; private String name; public User() { } public User(String username, String password, String name) { this.username = username; this.password = password; this.name = name; } @Id public String getUsername() { return username; } public void setUsername(String username) { this.username = username; } public String getPassword() { return password; } public void setPassword(String password) { this.password = password; } public String getName() { return name; } public void setName(String name) { this.name = name; } @Override public String toString() { return "User(" + username + ")"; } } ././@LongLink0000000000000000000000000000026500000000000011570 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/booking-portlet-faces/src/main/java/org/springframework/webflow/samples/booking/JpaBookingService.javalibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/booking-portlet-faces/0000644000000000000000000000532111360615636027746 0ustar package org.springframework.webflow.samples.booking; import java.util.List; import javax.persistence.EntityManager; import javax.persistence.PersistenceContext; import org.springframework.stereotype.Repository; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import org.springframework.util.StringUtils; /** * A JPA-based implementation of the Booking Service. Delegates to a JPA entity manager to issue data access calls * against the backing repository. The EntityManager reference is provided by the managing container (Spring) * automatically. */ @Service("bookingService") @Repository public class JpaBookingService implements BookingService { private EntityManager em; @PersistenceContext public void setEntityManager(EntityManager em) { this.em = em; } @Transactional(readOnly = true) @SuppressWarnings("unchecked") public List findBookings(String username) { if (username != null) { return em.createQuery("select b from Booking b where b.user.username = :username order by b.checkinDate") .setParameter("username", username).getResultList(); } else { return null; } } @Transactional(readOnly = true) @SuppressWarnings("unchecked") public List findHotels(SearchCriteria criteria) { String pattern = getSearchPattern(criteria); return em.createQuery( "select h from Hotel h where lower(h.name) like " + pattern + " or lower(h.city) like " + pattern + " or lower(h.zip) like " + pattern + " or lower(h.address) like " + pattern).setMaxResults( criteria.getPageSize()).setFirstResult(criteria.getPage() * criteria.getPageSize()).getResultList(); } @Transactional(readOnly = true) public Hotel findHotelById(Long id) { return em.find(Hotel.class, id); } @Transactional(readOnly = true) public User findUser(String username) { return (User) em.createQuery("select u from User u where u.username = :username").setParameter("username", username).getSingleResult(); } @Transactional(readOnly = true) public Booking createBooking(Long hotelId, String username) { Hotel hotel = em.find(Hotel.class, hotelId); User user = findUser(username); return new Booking(hotel, user); } // read-write transactional methods @Transactional public void cancelBooking(Booking booking) { booking = em.find(Booking.class, booking.getId()); if (booking != null) { em.remove(booking); } } // helpers private String getSearchPattern(SearchCriteria criteria) { if (StringUtils.hasText(criteria.getSearchString())) { return "'%" + criteria.getSearchString().toLowerCase().replace('*', '%') + "%'"; } else { return "'%'"; } } }././@LongLink0000000000000000000000000000025100000000000011563 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/booking-portlet-faces/src/main/java/org/springframework/webflow/samples/booking/Hotel.javalibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/booking-portlet-faces/0000644000000000000000000000352511360615632027746 0ustar package org.springframework.webflow.samples.booking; import java.io.Serializable; import java.math.BigDecimal; import javax.persistence.Column; import javax.persistence.Entity; import javax.persistence.GeneratedValue; import javax.persistence.Id; /** * A hotel where users may book stays. */ @Entity public class Hotel implements Serializable { private static final long serialVersionUID = 4011346719502656269L; private Long id; private String name; private String address; private String city; private String state; private String zip; private String country; private BigDecimal price; @Id @GeneratedValue public Long getId() { return id; } public void setId(Long id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } public String getAddress() { return address; } public void setAddress(String address) { this.address = address; } public String getCity() { return city; } public void setCity(String city) { this.city = city; } public String getZip() { return zip; } public void setZip(String zip) { this.zip = zip; } public String getState() { return state; } public void setState(String state) { this.state = state; } public String getCountry() { return country; } public void setCountry(String country) { this.country = country; } @Column(precision = 6, scale = 2) public BigDecimal getPrice() { return price; } public void setPrice(BigDecimal price) { this.price = price; } public Booking createBooking(User user) { return new Booking(this, user); } @Override public String toString() { return "Hotel(" + name + "," + address + "," + city + "," + zip + ")"; } } ././@LongLink0000000000000000000000000000026200000000000011565 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/booking-portlet-faces/src/main/java/org/springframework/webflow/samples/booking/BookingService.javalibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/booking-portlet-faces/0000644000000000000000000000257111360615640027745 0ustar package org.springframework.webflow.samples.booking; import java.util.List; /** * A service interface for retrieving hotels and bookings from a backing repository. Also supports the ability to cancel * a booking. */ public interface BookingService { /** * Find bookings made by the given user * @param username the user's name * @return their bookings */ public List findBookings(String username); /** * Find hotels available for booking by some criteria. * @param criteria the search criteria * @return a list of hotels meeting the criteria */ public List findHotels(SearchCriteria criteria); /** * Find hotels by their identifier. * @param id the hotel id * @return the hotel */ public Hotel findHotelById(Long id); /** * Find user by their username. * @param username the user's username * @return the user */ public User findUser(String username); /** * Create a new, transient hotel booking instance for the given user. * @param hotelId the hotelId * @param userName the user name * @return the new transient booking instance */ public Booking createBooking(Long hotelId, String userName); /** * Cancel an existing booking. * @param id the booking id */ public void cancelBooking(Booking booking); } ././@LongLink0000000000000000000000000000026300000000000011566 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/booking-portlet-faces/src/main/java/org/springframework/webflow/samples/booking/ViewFlowHandler.javalibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/booking-portlet-faces/0000644000000000000000000000036011360615646027745 0ustar package org.springframework.webflow.samples.booking; import org.springframework.webflow.mvc.portlet.AbstractFlowHandler; public class ViewFlowHandler extends AbstractFlowHandler { public String getFlowId() { return "view"; } } ././@LongLink0000000000000000000000000000026200000000000011565 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/booking-portlet-faces/src/main/java/org/springframework/webflow/samples/booking/SearchCriteria.javalibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/booking-portlet-faces/0000644000000000000000000000236711360615644027754 0ustar package org.springframework.webflow.samples.booking; import java.io.Serializable; /** * A backing bean for the main hotel search form. Encapsulates the criteria needed to perform a hotel search. */ public class SearchCriteria implements Serializable { private static final long serialVersionUID = 1L; /** * The user-provided search criteria for finding Hotels. */ private String searchString = ""; /** * The maximum page size of the Hotel result list */ private int pageSize = 5; /** * The current page of the Hotel result list. */ private int page; public String getSearchString() { return searchString; } public void setSearchString(String searchString) { this.searchString = searchString; } public int getPageSize() { return pageSize; } public void setPageSize(int pageSize) { this.pageSize = pageSize; } public int getPage() { return page; } public void setPage(int page) { this.page = page; } public void nextPage() { page++; } public void previousPage() { page--; } public void resetPage() { page = 0; } public String toString() { return "[Search Criteria searchString = '" + searchString + "'"; } }././@LongLink0000000000000000000000000000026100000000000011564 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/booking-portlet-faces/src/main/java/org/springframework/webflow/samples/booking/ReferenceData.javalibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/booking-portlet-faces/0000644000000000000000000000576111360615636027756 0ustar package org.springframework.webflow.samples.booking; import java.util.ArrayList; import java.util.List; import javax.faces.model.SelectItem; import org.springframework.stereotype.Service; @Service public class ReferenceData { private List bedOptions; private List smokingOptions; private List creditCardExpMonths; private List creditCardExpYears; private List pageSizeOptions; public List getBedOptions() { if (bedOptions == null) { bedOptions = new ArrayList(); bedOptions.add(new SelectItem(new Integer(1), "One king-size bed")); bedOptions.add(new SelectItem(new Integer(2), "Two double beds")); bedOptions.add(new SelectItem(new Integer(3), "Three beds")); } return bedOptions; } public List getSmokingOptions() { if (smokingOptions == null) { smokingOptions = new ArrayList(); smokingOptions.add(new SelectItem(Boolean.TRUE, "Smoking")); smokingOptions.add(new SelectItem(Boolean.FALSE, "Non-Smoking")); } return smokingOptions; } public List getCreditCardExpMonths() { if (creditCardExpMonths == null) { creditCardExpMonths = new ArrayList(); creditCardExpMonths.add(new SelectItem(new Integer(1), "Jan")); creditCardExpMonths.add(new SelectItem(new Integer(2), "Feb")); creditCardExpMonths.add(new SelectItem(new Integer(3), "Mar")); creditCardExpMonths.add(new SelectItem(new Integer(4), "Apr")); creditCardExpMonths.add(new SelectItem(new Integer(5), "May")); creditCardExpMonths.add(new SelectItem(new Integer(6), "Jun")); creditCardExpMonths.add(new SelectItem(new Integer(7), "Jul")); creditCardExpMonths.add(new SelectItem(new Integer(8), "Aug")); creditCardExpMonths.add(new SelectItem(new Integer(9), "Sep")); creditCardExpMonths.add(new SelectItem(new Integer(10), "Oct")); creditCardExpMonths.add(new SelectItem(new Integer(11), "Nov")); creditCardExpMonths.add(new SelectItem(new Integer(12), "Dec")); } return creditCardExpMonths; } public List getCreditCardExpYears() { if (creditCardExpYears == null) { creditCardExpYears = new ArrayList(); creditCardExpYears.add(new SelectItem(new Integer(2008), "2008")); creditCardExpYears.add(new SelectItem(new Integer(2009), "2009")); creditCardExpYears.add(new SelectItem(new Integer(2010), "2010")); creditCardExpYears.add(new SelectItem(new Integer(2010), "2011")); creditCardExpYears.add(new SelectItem(new Integer(2010), "2012")); } return creditCardExpYears; } public List getPageSizeOptions() { if (pageSizeOptions == null) { pageSizeOptions = new ArrayList(); pageSizeOptions.add(new SelectItem(new Integer(5), "5")); pageSizeOptions.add(new SelectItem(new Integer(10), "10")); pageSizeOptions.add(new SelectItem(new Integer(20), "20")); } return pageSizeOptions; } } ././@LongLink0000000000000000000000000000015600000000000011567 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/booking-portlet-faces/src/test/libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/booking-portlet-faces/0000755000000000000000000000000011360615646027744 5ustar ././@LongLink0000000000000000000000000000017000000000000011563 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/booking-portlet-faces/src/test/resources/libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/booking-portlet-faces/0000755000000000000000000000000011360615646027744 5ustar ././@LongLink0000000000000000000000000000016300000000000011565 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/booking-portlet-faces/src/test/java/libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/booking-portlet-faces/0000755000000000000000000000000011360615646027744 5ustar ././@LongLink0000000000000000000000000000015400000000000011565 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/booking-portlet-faces/pom.xmllibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/booking-portlet-faces/0000644000000000000000000001456711360615644027761 0ustar 4.0.0 org.springframework.webflow.samples booking-portlet-faces war 2.0.9.RELEASE com.sun.facelets com.springsource.com.sun.facelets 1.1.14 javax.persistence com.springsource.javax.persistence 1.0.0 javax.servlet com.springsource.javax.servlet.jsp.jstl 1.1.2 javax.transaction com.springsource.javax.transaction 1.1.0 org.apache.log4j com.springsource.org.apache.log4j 1.2.15 org.apache.taglibs com.springsource.org.apache.taglibs.standard 1.1.2 org.hibernate com.springsource.org.hibernate 3.2.6.ga org.hibernate com.springsource.org.hibernate.annotations 3.3.0.ga org.hibernate com.springsource.org.hibernate.ejb 3.3.1.ga org.hsqldb com.springsource.org.hsqldb 1.8.0.9 org.jboss.el com.springsource.org.jboss.el 2.0.0.GA org.springframework org.springframework.aop ${spring.version} org.springframework org.springframework.beans ${spring.version} org.springframework org.springframework.context ${spring.version} org.springframework org.springframework.core ${spring.version} org.springframework org.springframework.jdbc ${spring.version} org.springframework org.springframework.orm ${spring.version} org.springframework org.springframework.transaction ${spring.version} org.springframework org.springframework.web ${spring.version} org.springframework org.springframework.web.portlet ${spring.version} org.springframework org.springframework.web.servlet ${spring.version} org.springframework.webflow org.springframework.faces ${project.version} org.springframework.webflow org.springframework.webflow ${project.version} javax.faces com.springsource.javax.faces ${jsf.version} com.sun.faces com.springsource.com.sun.faces ${jsf.version} javax.el com.springsource.javax.el 1.0.0 provided javax.portlet com.springsource.javax.portlet 1.0.0 provided javax.servlet com.springsource.javax.servlet 2.4.0 provided org.junit com.springsource.junit 3.8.2 test org.springframework org.springframework.test ${spring.version} test com.springsource.repository.bundles.release SpringSource Enterprise Bundle Repository - SpringSource Releases http://repository.springsource.com/maven/bundles/release com.springsource.repository.bundles.external SpringSource Enterprise Bundle Repository - External Releases http://repository.springsource.com/maven/bundles/external booking-portlet-faces org.apache.maven.plugins maven-compiler-plugin 1.5 1.5 2.5.6.SEC01 1.2.0.09 ././@LongLink0000000000000000000000000000015700000000000011570 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/booking-portlet-faces/.settings/libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/booking-portlet-faces/0000755000000000000000000000000011360615642027740 5ustar ././@LongLink0000000000000000000000000000023600000000000011566 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/booking-portlet-faces/.settings/org.eclipse.jst.common.project.facet.core.prefslibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/booking-portlet-faces/0000644000000000000000000000054011360615632027740 0ustar #Thu Aug 09 13:12:30 EDT 2007 classpath.helper/org.eclipse.jdt.launching.JRE_CONTAINER/owners=jst.java\:5.0 classpath.helper/org.eclipse.jst.server.core.container\:\:org.eclipse.jst.server.tomcat.runtimeTarget\:\:Apache\ Tomcat\ v5.5/owners=jst.web\:2.4 eclipse.preferences.version=1 instance/org.eclipse.core.net/org.eclipse.core.net.hasMigrated=true ././@LongLink0000000000000000000000000000020700000000000011564 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/booking-portlet-faces/.settings/org.eclipse.jdt.ui.prefslibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/booking-portlet-faces/0000644000000000000000000000504011360615636027744 0ustar #Thu Aug 09 13:12:30 EDT 2007 eclipse.preferences.version=1 editor_save_participant_org.eclipse.jdt.ui.postsavelistener.cleanup=true formatter_profile=_Spring Java Conventions formatter_settings_version=11 instance/org.eclipse.core.net/org.eclipse.core.net.hasMigrated=true sp_cleanup.add_default_serial_version_id=true sp_cleanup.add_generated_serial_version_id=false sp_cleanup.add_missing_annotations=true sp_cleanup.add_missing_deprecated_annotations=true sp_cleanup.add_missing_nls_tags=false sp_cleanup.add_missing_override_annotations=true sp_cleanup.add_serial_version_id=false sp_cleanup.always_use_blocks=true sp_cleanup.always_use_parentheses_in_expressions=false sp_cleanup.always_use_this_for_non_static_field_access=false sp_cleanup.always_use_this_for_non_static_method_access=false sp_cleanup.convert_to_enhanced_for_loop=false sp_cleanup.format_source_code=true sp_cleanup.make_local_variable_final=false sp_cleanup.make_parameters_final=false sp_cleanup.make_private_fields_final=true sp_cleanup.make_variable_declarations_final=true sp_cleanup.never_use_blocks=false sp_cleanup.never_use_parentheses_in_expressions=true sp_cleanup.on_save_use_additional_actions=false sp_cleanup.organize_imports=true sp_cleanup.qualify_static_field_accesses_with_declaring_class=false sp_cleanup.qualify_static_member_accesses_through_instances_with_declaring_class=true sp_cleanup.qualify_static_member_accesses_through_subtypes_with_declaring_class=true sp_cleanup.qualify_static_member_accesses_with_declaring_class=false sp_cleanup.qualify_static_method_accesses_with_declaring_class=false sp_cleanup.remove_private_constructors=true sp_cleanup.remove_trailing_whitespaces=false sp_cleanup.remove_trailing_whitespaces_all=true sp_cleanup.remove_trailing_whitespaces_ignore_empty=false sp_cleanup.remove_unnecessary_casts=true sp_cleanup.remove_unnecessary_nls_tags=false sp_cleanup.remove_unused_imports=false sp_cleanup.remove_unused_local_variables=false sp_cleanup.remove_unused_private_fields=true sp_cleanup.remove_unused_private_members=false sp_cleanup.remove_unused_private_methods=true sp_cleanup.remove_unused_private_types=true sp_cleanup.sort_members=false sp_cleanup.sort_members_all=false sp_cleanup.use_blocks=false sp_cleanup.use_blocks_only_for_return_and_throw=false sp_cleanup.use_parentheses_in_expressions=false sp_cleanup.use_this_for_non_static_field_access=false sp_cleanup.use_this_for_non_static_field_access_only_if_necessary=true sp_cleanup.use_this_for_non_static_method_access=false sp_cleanup.use_this_for_non_static_method_access_only_if_necessary=true ././@LongLink0000000000000000000000000000021100000000000011557 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/booking-portlet-faces/.settings/org.eclipse.jdt.core.prefslibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/booking-portlet-faces/0000644000000000000000000005300411360615632027743 0ustar #Thu Aug 09 13:12:30 EDT 2007 eclipse.preferences.version=1 instance/org.eclipse.core.net/org.eclipse.core.net.hasMigrated=true org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.5 org.eclipse.jdt.core.compiler.compliance=1.5 org.eclipse.jdt.core.compiler.problem.assertIdentifier=error org.eclipse.jdt.core.compiler.problem.enumIdentifier=error org.eclipse.jdt.core.compiler.source=1.5 org.eclipse.jdt.core.formatter.align_type_members_on_columns=false org.eclipse.jdt.core.formatter.alignment_for_arguments_in_allocation_expression=16 org.eclipse.jdt.core.formatter.alignment_for_arguments_in_enum_constant=16 org.eclipse.jdt.core.formatter.alignment_for_arguments_in_explicit_constructor_call=16 org.eclipse.jdt.core.formatter.alignment_for_arguments_in_method_invocation=16 org.eclipse.jdt.core.formatter.alignment_for_arguments_in_qualified_allocation_expression=16 org.eclipse.jdt.core.formatter.alignment_for_assignment=0 org.eclipse.jdt.core.formatter.alignment_for_binary_expression=16 org.eclipse.jdt.core.formatter.alignment_for_compact_if=16 org.eclipse.jdt.core.formatter.alignment_for_conditional_expression=80 org.eclipse.jdt.core.formatter.alignment_for_enum_constants=0 org.eclipse.jdt.core.formatter.alignment_for_expressions_in_array_initializer=16 org.eclipse.jdt.core.formatter.alignment_for_multiple_fields=16 org.eclipse.jdt.core.formatter.alignment_for_parameters_in_constructor_declaration=16 org.eclipse.jdt.core.formatter.alignment_for_parameters_in_method_declaration=16 org.eclipse.jdt.core.formatter.alignment_for_selector_in_method_invocation=16 org.eclipse.jdt.core.formatter.alignment_for_superclass_in_type_declaration=16 org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_enum_declaration=16 org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_type_declaration=16 org.eclipse.jdt.core.formatter.alignment_for_throws_clause_in_constructor_declaration=16 org.eclipse.jdt.core.formatter.alignment_for_throws_clause_in_method_declaration=16 org.eclipse.jdt.core.formatter.blank_lines_after_imports=1 org.eclipse.jdt.core.formatter.blank_lines_after_package=1 org.eclipse.jdt.core.formatter.blank_lines_before_field=0 org.eclipse.jdt.core.formatter.blank_lines_before_first_class_body_declaration=0 org.eclipse.jdt.core.formatter.blank_lines_before_imports=1 org.eclipse.jdt.core.formatter.blank_lines_before_member_type=1 org.eclipse.jdt.core.formatter.blank_lines_before_method=1 org.eclipse.jdt.core.formatter.blank_lines_before_new_chunk=1 org.eclipse.jdt.core.formatter.blank_lines_before_package=0 org.eclipse.jdt.core.formatter.blank_lines_between_import_groups=1 org.eclipse.jdt.core.formatter.blank_lines_between_type_declarations=1 org.eclipse.jdt.core.formatter.brace_position_for_annotation_type_declaration=end_of_line org.eclipse.jdt.core.formatter.brace_position_for_anonymous_type_declaration=end_of_line org.eclipse.jdt.core.formatter.brace_position_for_array_initializer=end_of_line org.eclipse.jdt.core.formatter.brace_position_for_block=end_of_line org.eclipse.jdt.core.formatter.brace_position_for_block_in_case=end_of_line org.eclipse.jdt.core.formatter.brace_position_for_constructor_declaration=end_of_line org.eclipse.jdt.core.formatter.brace_position_for_enum_constant=end_of_line org.eclipse.jdt.core.formatter.brace_position_for_enum_declaration=end_of_line org.eclipse.jdt.core.formatter.brace_position_for_method_declaration=end_of_line org.eclipse.jdt.core.formatter.brace_position_for_switch=end_of_line org.eclipse.jdt.core.formatter.brace_position_for_type_declaration=end_of_line org.eclipse.jdt.core.formatter.comment.clear_blank_lines_in_block_comment=false org.eclipse.jdt.core.formatter.comment.clear_blank_lines_in_javadoc_comment=false org.eclipse.jdt.core.formatter.comment.format_block_comments=true org.eclipse.jdt.core.formatter.comment.format_header=false org.eclipse.jdt.core.formatter.comment.format_html=true org.eclipse.jdt.core.formatter.comment.format_javadoc_comments=true org.eclipse.jdt.core.formatter.comment.format_line_comments=true org.eclipse.jdt.core.formatter.comment.format_source_code=true org.eclipse.jdt.core.formatter.comment.indent_parameter_description=true org.eclipse.jdt.core.formatter.comment.indent_root_tags=false org.eclipse.jdt.core.formatter.comment.insert_new_line_before_root_tags=do not insert org.eclipse.jdt.core.formatter.comment.insert_new_line_for_parameter=do not insert org.eclipse.jdt.core.formatter.comment.line_length=120 org.eclipse.jdt.core.formatter.compact_else_if=true org.eclipse.jdt.core.formatter.continuation_indentation=2 org.eclipse.jdt.core.formatter.continuation_indentation_for_array_initializer=2 org.eclipse.jdt.core.formatter.format_guardian_clause_on_one_line=false org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_annotation_declaration_header=true org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_enum_constant_header=true org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_enum_declaration_header=true org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_type_header=true org.eclipse.jdt.core.formatter.indent_breaks_compare_to_cases=true org.eclipse.jdt.core.formatter.indent_empty_lines=false org.eclipse.jdt.core.formatter.indent_statements_compare_to_block=true org.eclipse.jdt.core.formatter.indent_statements_compare_to_body=true org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_cases=true org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_switch=false org.eclipse.jdt.core.formatter.indentation.size=4 org.eclipse.jdt.core.formatter.insert_new_line_after_annotation=insert org.eclipse.jdt.core.formatter.insert_new_line_after_opening_brace_in_array_initializer=do not insert org.eclipse.jdt.core.formatter.insert_new_line_at_end_of_file_if_missing=do not insert org.eclipse.jdt.core.formatter.insert_new_line_before_catch_in_try_statement=do not insert org.eclipse.jdt.core.formatter.insert_new_line_before_closing_brace_in_array_initializer=do not insert org.eclipse.jdt.core.formatter.insert_new_line_before_else_in_if_statement=do not insert org.eclipse.jdt.core.formatter.insert_new_line_before_finally_in_try_statement=do not insert org.eclipse.jdt.core.formatter.insert_new_line_before_while_in_do_statement=do not insert org.eclipse.jdt.core.formatter.insert_new_line_in_empty_annotation_declaration=insert org.eclipse.jdt.core.formatter.insert_new_line_in_empty_anonymous_type_declaration=insert org.eclipse.jdt.core.formatter.insert_new_line_in_empty_block=insert org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_constant=insert org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_declaration=insert org.eclipse.jdt.core.formatter.insert_new_line_in_empty_method_body=insert org.eclipse.jdt.core.formatter.insert_new_line_in_empty_type_declaration=insert org.eclipse.jdt.core.formatter.insert_space_after_and_in_type_parameter=insert org.eclipse.jdt.core.formatter.insert_space_after_assignment_operator=insert org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation=do not insert org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation_type_declaration=do not insert org.eclipse.jdt.core.formatter.insert_space_after_binary_operator=insert org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_arguments=insert org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_parameters=insert org.eclipse.jdt.core.formatter.insert_space_after_closing_brace_in_block=insert org.eclipse.jdt.core.formatter.insert_space_after_closing_paren_in_cast=insert org.eclipse.jdt.core.formatter.insert_space_after_colon_in_assert=insert org.eclipse.jdt.core.formatter.insert_space_after_colon_in_case=insert org.eclipse.jdt.core.formatter.insert_space_after_colon_in_conditional=insert org.eclipse.jdt.core.formatter.insert_space_after_colon_in_for=insert org.eclipse.jdt.core.formatter.insert_space_after_colon_in_labeled_statement=insert org.eclipse.jdt.core.formatter.insert_space_after_comma_in_allocation_expression=insert org.eclipse.jdt.core.formatter.insert_space_after_comma_in_annotation=insert org.eclipse.jdt.core.formatter.insert_space_after_comma_in_array_initializer=insert org.eclipse.jdt.core.formatter.insert_space_after_comma_in_constructor_declaration_parameters=insert org.eclipse.jdt.core.formatter.insert_space_after_comma_in_constructor_declaration_throws=insert org.eclipse.jdt.core.formatter.insert_space_after_comma_in_enum_constant_arguments=insert org.eclipse.jdt.core.formatter.insert_space_after_comma_in_enum_declarations=insert org.eclipse.jdt.core.formatter.insert_space_after_comma_in_explicitconstructorcall_arguments=insert org.eclipse.jdt.core.formatter.insert_space_after_comma_in_for_increments=insert org.eclipse.jdt.core.formatter.insert_space_after_comma_in_for_inits=insert org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_declaration_parameters=insert org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_declaration_throws=insert org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_invocation_arguments=insert org.eclipse.jdt.core.formatter.insert_space_after_comma_in_multiple_field_declarations=insert org.eclipse.jdt.core.formatter.insert_space_after_comma_in_multiple_local_declarations=insert org.eclipse.jdt.core.formatter.insert_space_after_comma_in_parameterized_type_reference=insert org.eclipse.jdt.core.formatter.insert_space_after_comma_in_superinterfaces=insert org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_arguments=insert org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_parameters=insert org.eclipse.jdt.core.formatter.insert_space_after_ellipsis=insert org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_parameterized_type_reference=do not insert org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_arguments=do not insert org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_parameters=do not insert org.eclipse.jdt.core.formatter.insert_space_after_opening_brace_in_array_initializer=insert org.eclipse.jdt.core.formatter.insert_space_after_opening_bracket_in_array_allocation_expression=do not insert org.eclipse.jdt.core.formatter.insert_space_after_opening_bracket_in_array_reference=do not insert org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_annotation=do not insert org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_cast=do not insert org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_catch=do not insert org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_constructor_declaration=do not insert org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_enum_constant=do not insert org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_for=do not insert org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_if=do not insert org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_method_declaration=do not insert org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_method_invocation=do not insert org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_parenthesized_expression=do not insert org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_switch=do not insert org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_synchronized=do not insert org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_while=do not insert org.eclipse.jdt.core.formatter.insert_space_after_postfix_operator=do not insert org.eclipse.jdt.core.formatter.insert_space_after_prefix_operator=do not insert org.eclipse.jdt.core.formatter.insert_space_after_question_in_conditional=insert org.eclipse.jdt.core.formatter.insert_space_after_question_in_wildcard=do not insert org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_for=insert org.eclipse.jdt.core.formatter.insert_space_after_unary_operator=do not insert org.eclipse.jdt.core.formatter.insert_space_before_and_in_type_parameter=insert org.eclipse.jdt.core.formatter.insert_space_before_assignment_operator=insert org.eclipse.jdt.core.formatter.insert_space_before_at_in_annotation_type_declaration=insert org.eclipse.jdt.core.formatter.insert_space_before_binary_operator=insert org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_parameterized_type_reference=do not insert org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_arguments=do not insert org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_parameters=do not insert org.eclipse.jdt.core.formatter.insert_space_before_closing_brace_in_array_initializer=insert org.eclipse.jdt.core.formatter.insert_space_before_closing_bracket_in_array_allocation_expression=do not insert org.eclipse.jdt.core.formatter.insert_space_before_closing_bracket_in_array_reference=do not insert org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_annotation=do not insert org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_cast=do not insert org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_catch=do not insert org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_constructor_declaration=do not insert org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_enum_constant=do not insert org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_for=do not insert org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_if=do not insert org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_method_declaration=do not insert org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_method_invocation=do not insert org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_parenthesized_expression=do not insert org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_switch=do not insert org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_synchronized=do not insert org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_while=do not insert org.eclipse.jdt.core.formatter.insert_space_before_colon_in_assert=insert org.eclipse.jdt.core.formatter.insert_space_before_colon_in_case=do not insert org.eclipse.jdt.core.formatter.insert_space_before_colon_in_conditional=insert org.eclipse.jdt.core.formatter.insert_space_before_colon_in_default=do not insert org.eclipse.jdt.core.formatter.insert_space_before_colon_in_for=insert org.eclipse.jdt.core.formatter.insert_space_before_colon_in_labeled_statement=do not insert org.eclipse.jdt.core.formatter.insert_space_before_comma_in_allocation_expression=do not insert org.eclipse.jdt.core.formatter.insert_space_before_comma_in_annotation=do not insert org.eclipse.jdt.core.formatter.insert_space_before_comma_in_array_initializer=do not insert org.eclipse.jdt.core.formatter.insert_space_before_comma_in_constructor_declaration_parameters=do not insert org.eclipse.jdt.core.formatter.insert_space_before_comma_in_constructor_declaration_throws=do not insert org.eclipse.jdt.core.formatter.insert_space_before_comma_in_enum_constant_arguments=do not insert org.eclipse.jdt.core.formatter.insert_space_before_comma_in_enum_declarations=do not insert org.eclipse.jdt.core.formatter.insert_space_before_comma_in_explicitconstructorcall_arguments=do not insert org.eclipse.jdt.core.formatter.insert_space_before_comma_in_for_increments=do not insert org.eclipse.jdt.core.formatter.insert_space_before_comma_in_for_inits=do not insert org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_declaration_parameters=do not insert org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_declaration_throws=do not insert org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_invocation_arguments=do not insert org.eclipse.jdt.core.formatter.insert_space_before_comma_in_multiple_field_declarations=do not insert org.eclipse.jdt.core.formatter.insert_space_before_comma_in_multiple_local_declarations=do not insert org.eclipse.jdt.core.formatter.insert_space_before_comma_in_parameterized_type_reference=do not insert org.eclipse.jdt.core.formatter.insert_space_before_comma_in_superinterfaces=do not insert org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_arguments=do not insert org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_parameters=do not insert org.eclipse.jdt.core.formatter.insert_space_before_ellipsis=do not insert org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_parameterized_type_reference=do not insert org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_arguments=do not insert org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_parameters=do not insert org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_annotation_type_declaration=insert org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_anonymous_type_declaration=insert org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_array_initializer=insert org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_block=insert org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_constructor_declaration=insert org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_enum_constant=insert org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_enum_declaration=insert org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_method_declaration=insert org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_switch=insert org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_type_declaration=insert org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_allocation_expression=do not insert org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_reference=do not insert org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_type_reference=do not insert org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_annotation=do not insert org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_annotation_type_member_declaration=do not insert org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_catch=insert org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_constructor_declaration=do not insert org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_enum_constant=do not insert org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_for=insert org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_if=insert org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_method_declaration=do not insert org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_method_invocation=do not insert org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_parenthesized_expression=do not insert org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_switch=insert org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_synchronized=insert org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_while=insert org.eclipse.jdt.core.formatter.insert_space_before_parenthesized_expression_in_return=insert org.eclipse.jdt.core.formatter.insert_space_before_parenthesized_expression_in_throw=insert org.eclipse.jdt.core.formatter.insert_space_before_postfix_operator=do not insert org.eclipse.jdt.core.formatter.insert_space_before_prefix_operator=do not insert org.eclipse.jdt.core.formatter.insert_space_before_question_in_conditional=insert org.eclipse.jdt.core.formatter.insert_space_before_question_in_wildcard=do not insert org.eclipse.jdt.core.formatter.insert_space_before_semicolon=do not insert org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_for=do not insert org.eclipse.jdt.core.formatter.insert_space_before_unary_operator=do not insert org.eclipse.jdt.core.formatter.insert_space_between_brackets_in_array_type_reference=do not insert org.eclipse.jdt.core.formatter.insert_space_between_empty_braces_in_array_initializer=do not insert org.eclipse.jdt.core.formatter.insert_space_between_empty_brackets_in_array_allocation_expression=do not insert org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_annotation_type_member_declaration=do not insert org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_constructor_declaration=do not insert org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_enum_constant=do not insert org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_method_declaration=do not insert org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_method_invocation=do not insert org.eclipse.jdt.core.formatter.keep_else_statement_on_same_line=false org.eclipse.jdt.core.formatter.keep_empty_array_initializer_on_one_line=false org.eclipse.jdt.core.formatter.keep_imple_if_on_one_line=false org.eclipse.jdt.core.formatter.keep_then_statement_on_same_line=false org.eclipse.jdt.core.formatter.lineSplit=120 org.eclipse.jdt.core.formatter.never_indent_block_comments_on_first_column=false org.eclipse.jdt.core.formatter.never_indent_line_comments_on_first_column=false org.eclipse.jdt.core.formatter.number_of_blank_lines_at_beginning_of_method_body=0 org.eclipse.jdt.core.formatter.number_of_empty_lines_to_preserve=1 org.eclipse.jdt.core.formatter.put_empty_statement_on_new_line=true org.eclipse.jdt.core.formatter.tabulation.char=mixed org.eclipse.jdt.core.formatter.tabulation.size=8 org.eclipse.jdt.core.formatter.use_tabs_only_for_leading_indentations=false org.eclipse.jdt.core.formatter.wrap_before_binary_operator=true ././@LongLink0000000000000000000000000000023400000000000011564 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/booking-portlet-faces/.settings/org.eclipse.wst.common.project.facet.core.xmllibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/booking-portlet-faces/0000644000000000000000000000041311360615634027741 0ustar ././@LongLink0000000000000000000000000000023100000000000011561 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/booking-portlet-faces/.settings/org.springframework.ide.eclipse.core.prefslibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/booking-portlet-faces/0000644000000000000000000001504211360615640027742 0ustar #Wed Feb 27 11:35:00 EST 2008 eclipse.preferences.version=1 instance/org.eclipse.core.net/org.eclipse.core.net.hasMigrated=true org.springframework.ide.eclipse.core.builders.enable.aopreferencemodelbuilder=true org.springframework.ide.eclipse.core.builders.enable.osgibundleupdater=true org.springframework.ide.eclipse.core.enable.project.preferences=false org.springframework.ide.eclipse.core.validator.enable.com.springsource.sts.bestpractices.beansvalidator=true org.springframework.ide.eclipse.core.validator.enable.org.springframework.ide.eclipse.beans.core.beansvalidator=true org.springframework.ide.eclipse.core.validator.enable.org.springframework.ide.eclipse.core.springvalidator=true org.springframework.ide.eclipse.core.validator.enable.org.springframework.ide.eclipse.webflow.core.validator=true org.springframework.ide.eclipse.core.validator.rule.enable.com.springsource.sts.bestpractices.legacyxmlusage.jndiobjectfactory-com.springsource.sts.bestpractices.beansvalidator=true org.springframework.ide.eclipse.core.validator.rule.enable.org.springframework.ide.eclipse.beans.core.beanAlias-org.springframework.ide.eclipse.beans.core.beansvalidator=true org.springframework.ide.eclipse.core.validator.rule.enable.org.springframework.ide.eclipse.beans.core.beanClass-org.springframework.ide.eclipse.beans.core.beansvalidator=true org.springframework.ide.eclipse.core.validator.rule.enable.org.springframework.ide.eclipse.beans.core.beanConstructorArgument-org.springframework.ide.eclipse.beans.core.beansvalidator=true org.springframework.ide.eclipse.core.validator.rule.enable.org.springframework.ide.eclipse.beans.core.beanDefinition-org.springframework.ide.eclipse.beans.core.beansvalidator=true org.springframework.ide.eclipse.core.validator.rule.enable.org.springframework.ide.eclipse.beans.core.beanDefinitionHolder-org.springframework.ide.eclipse.beans.core.beansvalidator=true org.springframework.ide.eclipse.core.validator.rule.enable.org.springframework.ide.eclipse.beans.core.beanFactory-org.springframework.ide.eclipse.beans.core.beansvalidator=true org.springframework.ide.eclipse.core.validator.rule.enable.org.springframework.ide.eclipse.beans.core.beanInitDestroyMethod-org.springframework.ide.eclipse.beans.core.beansvalidator=true org.springframework.ide.eclipse.core.validator.rule.enable.org.springframework.ide.eclipse.beans.core.beanProperty-org.springframework.ide.eclipse.beans.core.beansvalidator=true org.springframework.ide.eclipse.core.validator.rule.enable.org.springframework.ide.eclipse.beans.core.beanReference-org.springframework.ide.eclipse.beans.core.beansvalidator=true org.springframework.ide.eclipse.core.validator.rule.enable.org.springframework.ide.eclipse.beans.core.methodOverride-org.springframework.ide.eclipse.beans.core.beansvalidator=true org.springframework.ide.eclipse.core.validator.rule.enable.org.springframework.ide.eclipse.beans.core.parsingProblems-org.springframework.ide.eclipse.beans.core.beansvalidator=true org.springframework.ide.eclipse.core.validator.rule.enable.org.springframework.ide.eclipse.beans.core.requiredProperty-org.springframework.ide.eclipse.beans.core.beansvalidator=false org.springframework.ide.eclipse.core.validator.rule.enable.org.springframework.ide.eclipse.core.springClasspath-org.springframework.ide.eclipse.core.springvalidator=true org.springframework.ide.eclipse.core.validator.rule.enable.org.springframework.ide.eclipse.webflow.core.validation.action-org.springframework.ide.eclipse.webflow.core.validator=true org.springframework.ide.eclipse.core.validator.rule.enable.org.springframework.ide.eclipse.webflow.core.validation.actionstate-org.springframework.ide.eclipse.webflow.core.validator=true org.springframework.ide.eclipse.core.validator.rule.enable.org.springframework.ide.eclipse.webflow.core.validation.attribute-org.springframework.ide.eclipse.webflow.core.validator=true org.springframework.ide.eclipse.core.validator.rule.enable.org.springframework.ide.eclipse.webflow.core.validation.attributemapper-org.springframework.ide.eclipse.webflow.core.validator=true org.springframework.ide.eclipse.core.validator.rule.enable.org.springframework.ide.eclipse.webflow.core.validation.beanaction-org.springframework.ide.eclipse.webflow.core.validator=true org.springframework.ide.eclipse.core.validator.rule.enable.org.springframework.ide.eclipse.webflow.core.validation.evaluationaction-org.springframework.ide.eclipse.webflow.core.validator=true org.springframework.ide.eclipse.core.validator.rule.enable.org.springframework.ide.eclipse.webflow.core.validation.evaluationresult-org.springframework.ide.eclipse.webflow.core.validator=true org.springframework.ide.eclipse.core.validator.rule.enable.org.springframework.ide.eclipse.webflow.core.validation.exceptionhandler-org.springframework.ide.eclipse.webflow.core.validator=true org.springframework.ide.eclipse.core.validator.rule.enable.org.springframework.ide.eclipse.webflow.core.validation.import-org.springframework.ide.eclipse.webflow.core.validator=true org.springframework.ide.eclipse.core.validator.rule.enable.org.springframework.ide.eclipse.webflow.core.validation.inputattribute-org.springframework.ide.eclipse.webflow.core.validator=true org.springframework.ide.eclipse.core.validator.rule.enable.org.springframework.ide.eclipse.webflow.core.validation.mapping-org.springframework.ide.eclipse.webflow.core.validator=true org.springframework.ide.eclipse.core.validator.rule.enable.org.springframework.ide.eclipse.webflow.core.validation.outputattribute-org.springframework.ide.eclipse.webflow.core.validator=true org.springframework.ide.eclipse.core.validator.rule.enable.org.springframework.ide.eclipse.webflow.core.validation.set-org.springframework.ide.eclipse.webflow.core.validator=true org.springframework.ide.eclipse.core.validator.rule.enable.org.springframework.ide.eclipse.webflow.core.validation.state-org.springframework.ide.eclipse.webflow.core.validator=true org.springframework.ide.eclipse.core.validator.rule.enable.org.springframework.ide.eclipse.webflow.core.validation.subflowstate-org.springframework.ide.eclipse.webflow.core.validator=true org.springframework.ide.eclipse.core.validator.rule.enable.org.springframework.ide.eclipse.webflow.core.validation.transition-org.springframework.ide.eclipse.webflow.core.validator=true org.springframework.ide.eclipse.core.validator.rule.enable.org.springframework.ide.eclipse.webflow.core.validation.variable-org.springframework.ide.eclipse.webflow.core.validator=true org.springframework.ide.eclipse.core.validator.rule.enable.org.springframework.ide.eclipse.webflow.core.validation.webflowstate-org.springframework.ide.eclipse.webflow.core.validator=true ././@LongLink0000000000000000000000000000021100000000000011557 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/booking-portlet-faces/.settings/org.eclipse.jpt.core.prefslibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/booking-portlet-faces/0000644000000000000000000000033111360615640027735 0ustar #Thu Aug 09 13:12:30 EDT 2007 eclipse.preferences.version=1 instance/org.eclipse.core.net/org.eclipse.core.net.hasMigrated=true org.eclipse.jpt.core.discoverAnnotatedClasses=true org.eclipse.jpt.core.platform=generic ././@LongLink0000000000000000000000000000021700000000000011565 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/booking-portlet-faces/.settings/org.eclipse.wst.validation.prefslibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/booking-portlet-faces/0000644000000000000000000000367711360615636027762 0ustar #Thu Aug 09 13:12:30 EDT 2007 DELEGATES_PREFERENCE=delegateValidatorListorg.eclipse.wst.wsdl.validation.internal.eclipse.WSDLDelegatingValidator\=org.eclipse.wst.wsdl.validation.internal.eclipse.Validator;org.eclipse.wst.xsd.core.internal.validation.eclipse.XSDDelegatingValidator\=org.eclipse.wst.xsd.core.internal.validation.eclipse.Validator; USER_BUILD_PREFERENCE=enabledBuildValidatorListorg.eclipse.wst.html.internal.validation.HTMLValidator;org.eclipse.wst.xml.core.internal.validation.eclipse.Validator;org.eclipse.wst.dtd.core.internal.validation.eclipse.Validator;org.eclipse.wst.wsdl.validation.internal.eclipse.WSDLDelegatingValidator;org.eclipse.jst.j2ee.internal.web.validation.UIWarValidator;org.eclipse.jst.jsp.core.internal.validation.JSPELValidator;org.eclipse.jst.jsp.core.internal.validation.JSPJavaValidator;org.eclipse.jst.jsp.core.internal.validation.JSPDirectiveValidator;org.eclipse.wst.common.componentcore.internal.ModuleCoreValidator;org.eclipse.wst.wsi.ui.internal.WSIMessageValidator;org.eclipse.wst.xsd.core.internal.validation.eclipse.XSDDelegatingValidator; USER_MANUAL_PREFERENCE=enabledManualValidatorListorg.eclipse.wst.html.internal.validation.HTMLValidator;org.eclipse.wst.xml.core.internal.validation.eclipse.Validator;org.eclipse.wst.dtd.core.internal.validation.eclipse.Validator;org.eclipse.wst.wsdl.validation.internal.eclipse.WSDLDelegatingValidator;org.eclipse.jst.j2ee.internal.web.validation.UIWarValidator;org.eclipse.jst.jsp.core.internal.validation.JSPELValidator;org.eclipse.jst.jsp.core.internal.validation.JSPJavaValidator;org.eclipse.jst.jsp.core.internal.validation.JSPDirectiveValidator;org.eclipse.wst.common.componentcore.internal.ModuleCoreValidator;org.eclipse.wst.wsi.ui.internal.WSIMessageValidator;org.eclipse.wst.xsd.core.internal.validation.eclipse.XSDDelegatingValidator; USER_PREFERENCE=overrideGlobalPreferencesfalse eclipse.preferences.version=1 instance/org.eclipse.core.net/org.eclipse.core.net.hasMigrated=true ././@LongLink0000000000000000000000000000022200000000000011561 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/booking-portlet-faces/.settings/org.hibernate.eclipse.console.prefslibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/booking-portlet-faces/0000644000000000000000000000027611360615640027745 0ustar #Thu Aug 09 13:12:30 EDT 2007 default.configuration=swf-booking-jsf eclipse.preferences.version=1 hibernate3.enabled=true instance/org.eclipse.core.net/org.eclipse.core.net.hasMigrated=true ././@LongLink0000000000000000000000000000021700000000000011565 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/booking-portlet-faces/.settings/org.eclipse.wst.common.componentlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/booking-portlet-faces/0000644000000000000000000000070311360615642027742 0ustar ././@LongLink0000000000000000000000000000017000000000000011563 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/booking-portlet-faces/pluto-runtime-libs/libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/booking-portlet-faces/0000755000000000000000000000000011360615640027736 5ustar ././@LongLink0000000000000000000000000000015600000000000011567 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/booking-portlet-faces/build.xmllibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/booking-portlet-faces/0000644000000000000000000000063411360615634027746 0ustar ././@LongLink0000000000000000000000000000015700000000000011570 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/booking-portlet-faces/.metadata/libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/booking-portlet-faces/0000755000000000000000000000000011360615644027742 5ustar ././@LongLink0000000000000000000000000000016300000000000011565 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/booking-portlet-faces/.metadata/src/libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/booking-portlet-faces/0000755000000000000000000000000011360615644027742 5ustar ././@LongLink0000000000000000000000000000017000000000000011563 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/booking-portlet-faces/.metadata/src/main/libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/booking-portlet-faces/0000755000000000000000000000000011360615644027742 5ustar ././@LongLink0000000000000000000000000000017700000000000011572 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/booking-portlet-faces/.metadata/src/main/webapp/libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/booking-portlet-faces/0000755000000000000000000000000011360615644027742 5ustar ././@LongLink0000000000000000000000000000020700000000000011564 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/booking-portlet-faces/.metadata/src/main/webapp/WEB-INF/libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/booking-portlet-faces/0000755000000000000000000000000011360615644027742 5ustar ././@LongLink0000000000000000000000000000023400000000000011564 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/booking-portlet-faces/.metadata/src/main/webapp/WEB-INF/faces-config.pageflowlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/booking-portlet-faces/0000644000000000000000000000033111360615644027741 0ustar ././@LongLink0000000000000000000000000000015700000000000011570 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/booking-portlet-faces/.classpathlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/booking-portlet-faces/0000644000000000000000000000140411360615644027743 0ustar ././@LongLink0000000000000000000000000000015400000000000011565 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/booking-portlet-faces/ivy.xmllibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/booking-portlet-faces/0000644000000000000000000001011211360615644027737 0ustar libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/booking-mvc/0000755000000000000000000000000011360615644025757 5ustar ././@LongLink0000000000000000000000000000015100000000000011562 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/booking-mvc/.springWebflowlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/booking-mvc/.springWeb0000644000000000000000000000074011360615644027721 0ustar 1 src/main/webapp/WEB-INF/hotels/booking/booking-flow.xml libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/booking-mvc/.project0000644000000000000000000000231211360615636027425 0ustar swf-booking-mvc org.eclipse.jdt.core.javabuilder org.eclipse.wst.common.project.facet.core.builder org.eclipse.wst.validation.validationbuilder org.springframework.ide.eclipse.core.springbuilder org.hibernate.eclipse.console.hibernateBuilder org.springframework.ide.eclipse.core.springnature org.eclipse.wst.common.project.facet.core.nature org.eclipse.jdt.core.javanature org.eclipse.wst.common.modulecore.ModuleCoreNature org.eclipse.jem.workbench.JavaEMFNature org.hibernate.eclipse.console.hibernateNature ././@LongLink0000000000000000000000000000014700000000000011567 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/booking-mvc/.springBeanslibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/booking-mvc/.springBea0000644000000000000000000000055311360615634027674 0ustar 1 libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/booking-mvc/src/0000755000000000000000000000000011360615644026546 5ustar libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/booking-mvc/src/main/0000755000000000000000000000000011360615632027467 5ustar ././@LongLink0000000000000000000000000000015300000000000011564 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/booking-mvc/src/main/webapp/libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/booking-mvc/src/main/w0000755000000000000000000000000011360615644027661 5ustar ././@LongLink0000000000000000000000000000016500000000000011567 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/booking-mvc/src/main/webapp/index.htmllibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/booking-mvc/src/main/w0000644000000000000000000000013511360615644027662 0ustar ././@LongLink0000000000000000000000000000016200000000000011564 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/booking-mvc/src/main/webapp/images/libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/booking-mvc/src/main/w0000755000000000000000000000000011360615644027661 5ustar ././@LongLink0000000000000000000000000000017300000000000011566 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/booking-mvc/src/main/webapp/images/th.bg.giflibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/booking-mvc/src/main/w0000644000000000000000000000206211360615632027660 0ustar GIF89a#烞®ž®€Ÿ®ž¯¡°ƒ¢°ƒ¡±ƒ¢±ƒ¤²†¤²‡¤³†¤³‡¥³‡§µŠ§µ‹§¶Š©·©¸Žª¸Ž­¹’¬º’­º’¯¼•¯¼–°½•°½–²¾š³¾™²¿™³¿™µÁµÁž¸Ã¡·Ä¡¸Ä¡ºÅ¥»Å¥»Æ¤»Æ¥½È¨¾È¨¾È©½É¨½É©ÀʬÁʬÁÊ­ÁˬÃ̯Ã̰ÃͯÃͰÆÏ³ÆÏ´ÆÐ³ÆÐ´ÇдÉÑ·ÉѸÈÒ·ÉÒ·ÉÒ¸ËÔ»ËÔ¼ÌÔ»ÎÖ¿ÏÖ¾ÏÖ¿Î×¾Ï×¿ÒØÃÑÙÂÑÙÃÒÙÂÔÛÆÔÛÇÕÛÆÔÜÇ×ÝÊ×ÝË×ÞÊ×ÞËÚßÎÚàÎÜâÑÜâÒÝâÑÝâÒßäÕàäÕßåÕßåÖàåÕàåÖâçÙãçÙãçÚåéÝæéÝåêÝèëàèëáèìàèìáëîäíðèîðèîñèîñéðòìðóìñóìóõïóõðôõïôõðôöïö÷óö÷ôöøóöøôùù÷ùú÷ûüûüüúüüûüýûþþþÿþþþÿÿÿÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ!þCreated with The GIMP,#þý $HРA|üôñ³gO=õä‘hçÎ~6;Àãm?«M®×sGµ@þ¥}cDþNßöE6¨pÏñ) ˜©„>j¦óºØ}ÓŠM6tÐéñ¯¡]µÁ_¿ïªù;3k{9e£ŸÒlT­T—xÿ$­\¼ÄáTWZ°6ÇumõkÆ~µApäõÆÁ1¤­=iÈúŠºÕÃÏ‹W߃ E]OÙ{ÌLŸGç’:Û9û*™Ä©µn¸… ö(bº#R3û]ÍãR3ûYåQV.QEQEEPQ@QEQEEPQ@QEQEEPQ@QEQEEPQ@QEQEEPQ@QEQEEPQ@QEQEEPQ@QEQEEPQ@QEQEEP/£¤w‘<[^j::GyŵæªïŽJïŽH”T¾Ž‘ÞDñmy¨èéäOך›ã‘¾9"QVlÓäºa,¸I×qô/[½•ØÆZ\xÝÒ”=Dü]eSQqÝ™TÔB¬ÆY¶rås)R-4=cøVúÁÉôFB\– ªã•þ³‡ÀBbÛgŒÓ—G›ßrK©É†OÄ熕Ž^Ûí:ç:aàsД„ý1]õ)R¢öÔ“¿§ƒ¢Q„¤ùô IKñ×¹!—Wcˆ)ûé’ít Ûoé—l¿D‹/›Š·álkº5pùŒW2/g]5¬kBŒe ]?èRqI'{’Ë´’ï¾¢}ô‚ï¾¹w\˜]¤—}õ »ï¤—=õˆ¹,»ï¤—j)wßI.Ú«‘%)Üq5yl¿G ¾}.:óiÜm)ÛžÚ³äzç³ðnsUzr;N©´ˆî>èï áYí»™k•µsŸ²„ˆjPÝ(J•XØNju:*utñœå{¾ÞNŠstcÔ‹åøº]d\ x€”û(üêr¢—)%uŒ#EF*Èç”å7y>IEÚIr£ïכƦånH.RJéï}yš‚Šëºk4f€^j¢ëhŠú̦â0·¿8)°wÿçV™¯°‘“R›]‹FN.èÏ5ÜâtƒÄs)Ó쥋|ä1¿ºOáO]ZwÓ 'Û^´°¤‚•”ÜâûЩ½\l[íÿÈbÿtŸÂ”›u»?À"ÿrŸÂžI§bêO%îÉív¥½l„~,'ð«ìÖb5´Àðèü*늷`äW Z•ûŸ¸» ̱Z[–¨)V4":Gì¬ë–È $z m?Ñ'ð­¹Ô`Övä×5%CEi§¯;Ù¶.Ê~ŽüŠ7÷Iü) ·ÁÏð(ßÝ'ð©Æ’Fk³©<‹² BþGû´þÚ ÂÇðHÿݧ¨SKÕÕId›²½p¢cH¬v+à &çðV3þ¬TŪ@㪯ԖI¹0â¤Åg=_“à‰Lfxëù1RU”œûëÇ@ ÏQW9d]‘—. Fgû‘è±y¬ú39I×ÔŠ–uH#ˆ4ØÂ]Áà­*ªrÉ[³ÆbCRŠLVw\lhiQ£Â¥.#%[®ÐáÛ^6JAH: äSëÝoaäöuÕ%9ä]ˆTlJ-9‚’wr[R³C¹ìÌÈìFi™±²´8ÚT¡Ö25=¿ZSã†Ûªö‘ù5üz=f–bÎbIÁJýGx­~UXWœZ•ûŒ¬ÎUÂ:Ô2J0p@uCöÖ}W;˜$tŒÏï•ø×VåRÄ ÞJù'?(ÙíQ\–sE·HÇ]}Ɔ¬jÁ3Ô§i!øÓnò$!–§ÎR–p]Q?Lë¦km²w PKÍ©¹¡ ¥MÌ@t+âœÍòlËí­¸2V…•€¢@8IÓJës-v‹Ì¾iõ®Ñw œ!?•?UÁöŠöôÚxÊMV•¥µI³×äÇz ¶GÒÇã†0¿všüjΪܸӊ­ñ LU”’Êt:j4ãXôÛdÙ¤6Å;aa_’’Œ–\ùP}Ê­Åâ–%7'9Te +麹«èí-ñ_ÐÒxÛl—'Ú®u›º[eŶ’¦Óº‚@à®Ï…TóòyÆÒd=œ`úç( Òm¬r›ûMVÑød8k<Ú-ºF¤¬íŠçŒVÕÁ×eqAÙ&$…úC¹J´;çOXS·…Èimî¾êw­ËYÂÈõ²0~4¤5‹MÀã@áᔟÛOmCa.³ÕÿË\ûš²„pVÈ÷aÔëò™.-ਠ«(«Ö%Zë×ÃZï<˜Øíö^Ðì»T­¾·c¡JQÉÔ’5®'Éëy”ÙDZmh“ýs_IrC{cì…@̯y­©B;Ÿ5ÒI«^Èl²ßh+flªG9€Ñÿ†³;±V9;C|&Émy ,%qÒwAQà1¦•ÔíñÂHš x{êžÂÀ‰¶7Ìë°Ò¾Ó]qŒøG$ãvˆG“­‘J7•³6³ðŽ2­…Ø¡ÿÚö³þÃþu¼l¥iÝ SBiJÎ~”[<¢\0bŽÃì@Õ[+kù3JNÂì:†›/kýH­¡#:pëÔ˜é ü˜ÆšŠ²…'ÙjK¹—ÿáþÄ+ŽÎ[G¸2)Æù<Ø<§œÙ¸'4ì­›Rp1š@míôãxê>úž”0Š©Ÿ7ìÌ;SÜ¢D¶?iˆã ’P¤’F:¸kK¶[é÷×[³[¬öûtl)ÂÜ4-j<'ÂF¼s+g[¨åb*ÙqbZŽè'JéÜ£^¥Z¢Å³À·‰w™‰"4VÒ2Ù8d2@À´öÔì‚c– î±Çv£cS .>»ŒrâßÃQ”HJ?MI›Î2ww€ÏX€ÚËÄ«|–›i e ÞHçã¥!ÞÅèê1“Œhu®á²ü™M1ÜÚM«¼o­Â´ÑS¸T’VV=rŽ23¡¬w*»Mº×t~(B[n¦42Ùql¤¥-å(Ÿ_'«DÚMqÊœv·c¾ n±Æ!^e—wÝþöApãÙÓ®ýÁôî\å,pCªìøÔyQ35ÖZ*Ëg u“œõÔP’´(%³¾Fx×.Ń¡~‰ ¹Üÿ¼$à,¬ã#ß^»u¹7¼„L’T¤¤‚]QÇÛÆ¡6•Œ¨'x¨iS`Ä—>Y,¤6´¬u8ÐÔí‰gbÒØÍêbÝ"d•­µ$-<ò€HV7IÁàIÆœ)w7F#&CYÊR””†‹Ê$äd=‡ê ^©Æž7Wœ’—FêR_RÂ’‘§Ï)´¢©÷¾pá îã«§\iQ8(«“™…±Æ½ÌYŠ“52•i×uÐ,s®qÃC]/’ý™–.q×rJ$¤Çp-·(’¡}oy um쨲§ô»ÉKë¶¼gwÕ ~ë©¶)wÄBC?“mµ§}X^×­ðÆ¿*Jµì"•Á맪×|#§ðªKÕžÞڛ܃ÏR;=Õ»u”äÕÐ1«G¢¹§cx¥~ÆQØ9Ç¡Æ?ì‡áS¡[m‰y%Û|B“úL§u<9ÅLK@6tÉÆFºÕ"‘g»…ŽÎ[3e#_†*mvõ4Pmð†5Ï0OÙVò[i—ÂB@N»Ç=µK.ÿbŠH~ë ¬Ay$Ö®)»Ø¥’z×mJIT8€ªOáX®Qf6ͼìFÒË¡ä¶ÆéÇÄVý×c˂܈Î%Ö]Nòž êÅrŽÁÿ&œÞI çP~ú…rÊ+Å–G[Fô6Jr¤+QgíëN¶è@{ØI?uVlÛ@ÆaC­¤Ÿ²¶Q#§ÁÔV°‚~ I,Œìíœ mpÏÅ”þòvzÎGýÕãð«¦ÛÆ)ÐÖ:«Uƒ7c>vvÐ?úTŸÂŠÐsc²Štェͯt¯4¯<ÒÛe˜çf®B†CCâkOš¤Ù ½këS†®sYϹæV•æÉ°\ÝB‘ïÍly(}¤íäéx8”çô·+…”«"¥E˜ôi JŒêšy¥…¶´ñJ‡[P«Óœe†E9í’x:Ÿ-–YæèÍê;?L†Ý(I<Ùàœuxû«˜@â@ø×S±òÁÑÝîÚðx -ØøRUïÝ:¶¬NÞrupþ +â_ƒ“ó õkÑÓjfêBªWðÎÊ¥V[£;_' ‡p“ ŹBÙZÛ-¨ ñIâ>¤Zì÷› Ûl—)9Æûm߯ ìäžÁíU½r-mF×#Ÿ†­Õ!^ñû®ivÑì~Ø3³Éº>ˆìL@-¤ŽmÄ)C\{Á®jº'EÅÔwƒòŒ§AÓ¶÷tðDÚ-–¼ØbC~äÓhrc…¶˜B·×3®4ù »µò_´“#¥ç߇J <¢¥ˆ lùk¼ªËn€üF[éZ¡“cÖRAüâ03Õ\Asæ®W¥*l“#9çKÊßÏÇ9©ÕRÓék84åÛÍ…XÒ£=­\ÔmNÃmÏÇT©,·""}§£àŸz‡=õElµÝ®„ômºT° i²@>óºÿ#{S'hmòíu 2# âÆK­0®Ò8{ó\çh'Ýö;jnV›-ÎDHIçÒ7H8##á§Ê¢¾š„aÐoc÷LT¥METWÚÆoÛ!|±YºÝ[j:x4–w÷œÉäãA­­\˜m$ëXžë‘!#}->U¾F:ð4®“Ê\øq6B-êddÊq‡[v3+öò†UÚIǺ¹µ§•ú’›ºÓ23í-! ¶”)µ¡IìÏQ­«itšzÛj7f¸ÿë/:TiÎÒ¹Mjؽ©º-"=šB¯ãÚ1Û•~÷f›j¿;ese´¤¤†Vñ)qJÔ§K©<Uº}ÖbaÛb»)õpCc8¤ðÞkG a‘(Bhì1¦“F2wÖfšgÝ[(PÉžE$Ü!n|Öã¯ho¨÷$×Ò³©Be¢»jýíÿ™YÂ4­¹]¾M}듽«¶:”‹qœ…p\C¾>cB*–ça½Û#‰T¸Œ•…ºŒOUv­’¼Ê¸rHäù2ÜnCA ³۠®wÚÅݶÑr¹Ê˜ÕÕä$ž$VºÍ6ž”c(_êW]‹×¥N 8ß’*Öñ¦J‰94‚{kÌ×›c”S‰JФ(d(`ÕE½E [ :¡DU®j¡Ã»zt ÕgÅwõX²±ÂšI§S\Lê$EVW1•*…³… ·†¼\µãä éU·¶²Øp G±AȤJl8Â{+žl—PÁ¤‘NºÕž#Jlפ˜P¦Ö)â)µ ºdŒ88SdSêSDUÓ$mÁ~´“«XëI§ÊH¤'Eàð:Q´q 6èõsÖ)Å ÕƒB†Nz•UórÞuCGCN‘½hIõ›Vò~ÓiÊVÙø)•î- âŸe_ † p•Îå¥VBqðPáM2\eZ23Ô¡HNò ÛIÂÐwÐjLÓùFå6ßxþpâ+Ãý;_7“D”ŒÈ…¢†5Ü<>‡ï®´PÊR€¯¢,ï2‰®Fpæ,´n«ú*ãó¹VÞYç.‰õšYÞ+Þø6§oÐüºyø3“'þÞC×CŸîšîÍE- jS ÈhãÕq;Ù>êà›ÎDÚ‚âP´Çt…‚=SZ®K6ªú«Ä¨®"Uݵ4§ IV\‚ Îϼ×ßi*(ÓIùb¼\¤Ú;&E‹ÌÃ[Râ/ÕT9šéú)_æˆ4[âÏ%µ:¤ .Ñ+ q¤õóJûprëiËÓÙßZzA„úˆ©(-œövÕK³Ã¼ÇH’Žsš!m¸…”­¥u) IÐü:´®™Yö9ÿf^ÿ±6m°ŠÜÛL´Æ¸ÅZ­<’•õž)Æt:ð®9q²OµÞÌ ŒUÇ}¬¨qcv‚8ºúVK‡¥°fIvR[­ÍA K`voº´žÂ1µöûd›Ywi"&C±ˆóޤ’1¼Ž®¡‘”ž:+†­ù:è×”~–|ê´â×qHËÊ?ªŠ•¶-âTdÿÓÞjkÅ´®bìÙ϶H×PŸ·JÙ¯b®;Mq@„¸Í%˜J SªP¹¼ì9®4¹²;[²3|5¬bFBíi'ûÌ~Úú{’7vBÌ1 a8úšãöžN®û7,ÉoÃy¨ñ=ÀÂÔNñX)# i]ß“û›3hh#§öÖÔ“LæÔ?¥XÛ4ŒÔA¦ !:¤äÐ …j♞é"Q È úTÞVò½Ukî©Ip€2qî¥)h)G^ʈ­¯±-Ýw+òÊÁZV¬i­-îg q8÷cžHÈ}(K©Þõ×V—Õà¬mç}še åÖß„Òuþw˜»?mböå×™K²Örpd¤çB;1¨øâÛ8ÒSË|R‚VG»Õ®þ…à8YpŒi÷e$Ë\uÀ1”i­04ÈÐcè+˜þéœõ¾ÍÍ´ÞòžxzÇCêƒƒŽ­8u×c}ÄqÅ…r¾[Qéë`OæJs?ج§ö3¦ üD|_2+æõ5¤¼T´ºG8F7°““ñ¨üÛ¡ ÁBr“ëyqޱ´×$(cüåz³UG… œZT¢ F{½‡=UÂÎÙBË‚Ôî ôdå:“À{‡¾œƒdù(·Û¥¾ðÂRŽ$eZ»I[”7·™ÀNx¯‡Ûž? ›ÉÄ.핬0óŒ%an„à#9 'ÜqÇßOS4¹äÏܹÅ,Å}ÇR“–󀜜‘ï=¿ ÚrsÍ\-ÏGRT&GËŠ^èõÐOQÆw‡_V+£íÁ·2K2!Ò²•¥ ’£õ$¥Sì¦ÆM²_e>¢ŸE9 ΄í úš£•Ñ¢MHè\›Ë[›3!•¶µ-—G8@$ =„ëò«Ûdt¢[Ê(uŵÎ+u8Á:cä2*ïgílG†Ûˆo!äºc¸‘Kqµ&þ² Jc $£½œ~ ­œ-#.D>Â’2uª¡NRÑÇYû«U=?“ùVjÿûÛ?÷W5UÁ´_%:[ªk„w.Ej¶®\¦£º§wÒÃŬã›%:õŸ­_%$ @ªø-¬òbH©Ç’Ÿ‰-Õh+Í"j;Du;=±lKôgX„ô‘ªÄ—‹‹N½{äÔ¯²@ka®k‰o†Ë~„âÒ¶˜Hà“@÷VÆõ±‘$ïID8ëšá^ŠÓWør#rmx‡9( fÜò¤ðP ŸZ½ ^Í­ÆÜw9·'QÃÛ!idÏZ…ÊÄ0ÞÌ:qó†¿m^òN”«d-„#§Ôל°Æ?ä{ÎûD€ÿ:åQâçDeÊ#ì¸ÌÄõ²º·pÛË(#²?,ZmŽu» ûnm‰Ì$ïûéMrVlñ-àŠp#Z{v–”{«uÈåQRJp(¥ˆ¹óæ 2(ȯ‡8 Í‘t¯3Ö…çëW™¬ušX‡uIQÃnúŠ=‡ªµÙ¨’æç›^fýEæ¤Û!ɸÜ É¬!´• >þª‡š½Ø q!m¥ª\é—÷Öâø'CŒüñSN*SIö¹”rI•2r<‡Xtn¸ÒÊ3œpi¼×OÚNMUtžýÏeof±%Å;̩є’rp¡GÇFŽKö´, ,BŠß[ŽÊNèúd×Dôã+(¶½ e§¨Ÿb_ òdµ·3JW2üeóÉê;¸ ý~ú÷• MHåm°É™r3K#ô‚²~ñRâ]lÛdµjšÕëh¤'qo6?"ÀìÏ^ºã‰ëÅ`m¯»#h¢HâyÙˆ[‹QÉRŠÁ$ÖóŸN„t÷»½ß§¡¤¥¶š§æ÷:·î‹þeÿZïû¢¸îkèÞS¶b&Ô[£Å\öáÍiJ\U-CuG‚:Ç+‘ÌäÓia)Kž«tX¨ö¥;)!°;Kì­¾)¤«*îqÓ·ûy4ÕÑ›¨ä—ßîzeÅmÊV¼Óqz²¥‚?Ý5ÛÛ‹w]°ºNe[Í9 ¥³Ú”ú ý•höÔDZìëÛ9³ Z„‚LÛ’“º§‰Ð†Óù©Æ€j·eöJë´ —¡*#l%ÎmKzBQƒ¦tât=•Í99цžŸ-rÿôc'º¥|G–²SÉű?é™Èþ¡®%šú• A¿ì{vÛl¸j’í­)[éHPH Œüë…_lóì“S à–’òÐn¥Á‚HⓎªßâÔ¥ÖÝn,¹4ÖÁᅢyûžý©¸èÿã˜å8ÿÛûÏþ£þ]‘Ý™³—9³®Ò 4a-¡’•«;Ù9Æ•IÊ.ÃÝ®;W6élzß"<•¥`HB’w@9Î:ÇÛV©§¨ô0ŽÞSíîZT§òñVæå÷î}ÉÙk¨}(ÿ¸+Œ?ü!Ð{Å}æ»Ï$6‡¶sgeEºÈ†Ô‡äQ!+Âw@ 㪹ÖlµÖÂ\•4ÅTw$) ­™ ^öI à;EWYFkKKŽ×¿¡á.Œ8ìXò=ÿæ-¯ý§ÿÖª´åøçmYNxBFŸÖUVr0P9B„·”% º¢¥`ÛZ®Z6ruÚò›ÍµØoGj&ÿ9BTÒOuÐõTR§)è$¢¯õÂ"rÓ4²YlÐY6›a†ÉÝe·XcÑŠV ’àà• á§ŠÄ\y5Ú(3VÓ¯ÛS*Á–줶€;H:…]r%l±\-³$óñNÐeiЇð¢ÀÝõ\ ê¡›ÉnÞ=1ןŠÌ·V¢¥¾e¤—YÔæ´© סNR†ç•^ååRœ\£×ü“6Çjí¶ýŽcbvrI–ÒS‰“@Â\9ÉJ{rzû4®sšÚJöÜz1Ÿ”¦ÿÈÜàͶNv Â3‘¤´p¶Ö0Gâ=õŪU›R©—eÇ£žª›w’°ÎhÍ'4f¹,d+5L•s·—”8' úU„Ù o(§¼õU}•¥ÔóžÒÎMV§gFž<¶Z$Ó‰¦††œMp3 tU„õUp©P×…b±ª®xÉÒœ…dT¸(nÍsrObµ¨&¯o-o°TÕ† wÑ•âȤ,Sª¤[ 2¡M,`Ô…Šic"®™#:ƒHX©Â+ÅŒ£Þ*Ì‘Œ€¡×M¡Of¢HÊT“ר¦²BúÕHbWê¬/ë^(²ž£¨§œ‚;5‚2ÀWç#O•A³£OŽ)õURÛì<×Z?(xë¨íæøŒ9Bš-½Œ–ÎêÇóMg$Jßï9Iõš;ÉÍXGù5ò”•¶Ñ!xÔŽºƒÈÛ“É^Ës3]a×öÔ­À¬œnt#N?•÷ÿ ®hë,ÿÄ*¿‘ÿW’­#¯h9þª«¾¯ù‹ôV?å³W´œ¡\l[E.ÀüÒÝÓ“ €¡¼ºS¯nxÓ»qw}¸±gŒ‡:Ù%)˜… ¼œ§ dÖ'”Ò—9S½×³§ìpV·cmÂ,{hŒhÔè w4ªÆ§f½KÒKrg,•oZ.wv@*)i'wûCﯡvVʸöÒàÂßPpŸæànþÚçW;J›Ú«æë`îÆAw¯Pýµ±Úý¡½ÚeþEÆ‚‚ü„ï4ï6º>×WvwO”‘¸æd6ä9y§PSŽÅ R~DW{ư[X!HŽ”{u®+ɶÞíÑZm3e;»&+î¸RÈR8{•]ÿg·œ·Ãyз VèÀÉÔýõ¤Y„âÓEÁN\I÷Õ}Ý Im`ñIOÛVCÛMVÞÔ„4YÆ2jÔ¾ä++A’¼I¤«s†µÒXïõ£Ò˜ï‘]{-Þ¤Íð8 C„+E3#ãÓI3cç袃Á‘'Õ^ “Œð¨ž›¾Mx'ÅWÓõ©Ù,¤rèü³0¾¥JHýA]µ‡A^ñ#C¥pÛ“ˆo”¶äçÕ’r? +©Çº1¾”óÃ:iHÓÜŒ\öÈÔº€c¹üãšæ¼«ÇÅ®2ÀödõI®¡eZiŠÁr¤Öõ³Ž'î5Èù‹G¥õ£ãÛë mUÓ(úB±ýÒ©»,0µ6’ßa±öš¹¿Åj¯I’®?êi6f€zÝÏäZùúƹäí]ŠTÃu¶-.’È?$V¯’›+r6‰åœ)>ŽwGW·Àü1öS ¥³³–„:Ÿd¼¶Èï%[Äü0“ZNFÀDûDR—`Wÿê¢hÁ}ç[rÕ â↸ʲOývÖròÊ%ÆÒ0”«ZÛÜP@ìÏí¬uç&[¸Ç¶iZ).x7vtìð{¶R ~Um鯑v.,—wNz°ÚOÞkG²¡'e÷”qªsô³[`Óm±6BJÃR;NUƒ÷$ýEiSí+¸q¾ÀKC{œâw3N[í©»Ü"$§ò%ÇëHáõáó¬$ç^uJ ÏUu’rÓjÙ¸èzëËq´—¿ÎPHО=Yû+š‹êKžÆÕ>˜ðZ$­X@ ÆíÅŽhÚ›6Ò[ -è+R¤&K¥´¨hF]5­Z.vÔãzá jœ¾½ð×ZL¹Ö—ÀŽ©Ð–§Žâ[/ ïžÌgZîúYËɇ¸m•ê;È<þǤÀÜ”­qÄðê¬Æßí}Êe±Ëc›E±­¦SkC‰ Y@RqŸoß·9Û=n/°#ÃÝÕ µ}A<27SÃJÉÞ¾^ÉÞ%(Šò \]ÞlžQQø¸Œ|آ٘­ÀÙK|Ffµ5 µ€û^Êõ'#SU|½Ý–žµ †Ò¢3þ‘ÓûIØ[XƒdqþqªŽV$®6Ç»»ük¨m_ÑÎáç®$vÅ©;e´smÖÄÛî"aÇ –‚ƒº ŸpÆu>ÝÊžßÛ˜ ©ÛLÆÀ#òŒ«ê e¶ ÈSâ˜2¡!)õ°xV‘Ë<Öæ?¥^Œ#MÅ?'<£Q·bê7-[Z‡¶vÔïôZmZGå¾êìZ–zù©Ãjk«\4œï9ƒüêݺ( ‚æ?¥Z(Sõ*áPÜ'—Ø»Š£! ý‚ŠÅ¹>;ävE:tß–WlËQŠ3Fkóã„möÈÇ]^ìåÓŸG¢IP hO犦Í2ûjÞ´¢‡r•"¬¬øfuiªŠÆç4f¨l·Ä>Di˜iñÁG@º»ÍUÆÇ›(8;1Æœ[*ÞeÅ´®Ô(¤ý”·dÈy;¯I}Äö-Åöšc4f…E ¥L²ßp?õM¼*k]°»)p¹Ë·ÝS&ÞÄ$JJ–§¤¥+ ú¼z«J4å9¥^r•‘ºýÑù,Š<îêõEqן}䄼ûÎÀ- >µÝ¹c³«j-i¸[”ôW”¥!É)NòTœh}ÕÂîQ·Ï~‚Ùu•”,¶°¤çÜGîø¬%×rðíþÇF²/¨ß¬×‡ëIͯ2Ç!îÙ^Œ¥'4f–¸OeOexT6§‡PÍ,,=„öRJПGSŠWIÍNÒl<· †8 Cm—ChZÔŸ‰8œÐRB’p rê56$ì{{7&û+=¤5uŸ–ä\˸ [¤û9'«…rcpžI&|ÂIÉ<ú¿ìîv^T¶>5½ûŒ{nÐDÂЇ•º•/8íJ½Ú¿ ÿ&›jÓÛ‚Ò—QÞ·%²Œvä‘¥zzÊSœ”¨«ÂÜ[ÇýuàäÓ§öúù?Ú+ųkmÎG›%Ä»! :ÊœR’âT Áøéï­î’n:/Ö—¸Ëc‰HPÝÏÔÔ ™´Øöj/›Ws‹&ãÖ‰m†àuA}JYwPãXͰÚ»O~í7 +Â[l@à‘øöÕ%'KLéMòßlrÙIÂ]ßðUf¼* “€8šmç[i²ã‹ @$šÍ\înÜÜ1¢o"?ç/_ü«Fæ4é¹¾ ¥¤ô´Ñ>ŽÙãúG¶¯£ ! ‘Ô*žÖÂ@ ¹hä å­-Ü#¹EEY ÑR\ÍðÔU|•N@â…SÉJÞÞ{6àÕ.Ž WÆ””ï°R=¦ŽSð¨`ð[³ªØQicù§¯XyMòÒ¿Yµn/åÀÒ ­?͹€‰((W¹]_m4Ê=eÇ_ñ£pû–ž—£»Q íTKóÝjsJç04?Ϊ-J”•;ÕÑʬšÖÚ’.vIç}lXϱÄ}>êÈÛ°.¬DBÔWØÿgõßJ„Ÿ“dïÏ¡oÊô€v jw‡¬ÐûÅyɘäÇbÛÓ[ó‡ìUWò°wö*INl}â•És©o“}$û7Å«%×ÖÊWšýÅ}Ô“ÊŠ’žV¦$þÝXýq]K‘–ܵr€«"2¿ÃP®AÊÄ„V$8ŠÙå}⺿#Wû-«•žQn›œ;|r¸Ä9%ÐìžñÓ²³œ®Ÿì¼+ô[_mˆokîí­l4ˆ’’³Øàü~ÃU|ª=o™e¸L%©@ئ`µ¦áÝAÁÏ òã}ÙyÍ9y´íD .©¦YClȹ 'OÒ¬Èú ÷fK¼ê•!l¯ŸÔ¥Â3§YÀ8¬#÷X蔬®Yþæ˜þ•³–°rpÅÅ#äZ5õ&ϧvÕ"3yù$f¾[Ø[ŒŽ B°["Ï‹ ÉèošyâÚÜN ”'íê®ÅÉ^ÝÞo¯6™¶˜ñm×:7ŠÂˆõFN2ESzRÛä™EÊ*KÁÓ[ºÛWp09…KI!L…zÃNʶnØ\)làƒ… ‘öTmÛ0ÎØ.ø™‰MÅÒS¸]õJˆÆƒt«-¨ÞÇAJ^F‰ãS¤uÿÄK¿ŒÕmPúó1Jš€}ˆ‡ÿÛ.¤F–‡m Dl)X8ˆª‘Èôuóº\8:Šª˜ääÜbá2w è ÀWºö{Ýþ êJTruê_-ëƒ.©·^y+O·ÇÊ´Œ/ä:–5I•'ÿšSOÎZ€l)J'à2k|øJ¥uõwÍhì7+ËLËz$f][!& 9*YVFxõçÕUùxîjæúz}wdìbv…µ³¶¥Oe.¤«}¤zƒˆà8Ö¥2å²â9ÞdîúþŒÞÜÖbvÑ5.ä¹×;DGßQõ”´äŒ:ª.Òm$ÛâЗ·e±„0ÐÝH;u¯Ÿ—ö‚•8½‘»ÇcÑÁjMýnÈúË>ÖØe[ß²[+à(qùVk”f´ üz~ã_;ß¶Ëh¶gšM¶æìxN” þqÏáP^åCjä„ïÝžPÎwU‚+:_Œ œ—,ôצÝâø!íDOûS|R@'ÓÔ8& –b]¼ [cåëTã¶wÞS±⣼­ø©;ç¹>üið¥=µËqHÞ´Y’´¡ 9áRþ!IøfŸÝ•²†š²¨ s/=UùGÛVÜ‘8ÈÚ6¦åE‡£ÉÁð ìöª ¦¹Ý.PlvÈ0L§Þæã0˜éHmJÎI=CROλBìöÛÌ cr™‘ ãÒ@B ˆÆ˜õÖ«-lZrHæ«¡•9«¾I7‰ R‚À ñ?ÂÞ&$Étƒ¯8~únäe½0Åêlu' )­R=Úk<íšáÏsÏm —@Ô…¤|u®i|VœÑ¤tò;Þϼ'“]',¬ƒÙê ÇIì­‚zR“ë?58Wé…öм) òAsyXHÜ)ÎzÊRùæ£ICqy9Ùô€Xpã´«?uz²{»`àJÞç=¹8¡nÝ)ÝQ+<ùw)JÀ'µ÷¹¥Äe)ß Ôv×›BêS ¼ ¿¦yò‚ä댂û³l§d ÜäOŒëÎIÇ2…¨°à5ÇV_Ò7vÇey¬ \Мuj’:êtÖåËÙá!*<Ã’Ñ^}Q¾’GÜi˜VÖeI!2TÌÈo!ø;¸Ás€Þˆã¥Mj·+U}>€‹fe¥‡Ÿn9Ph$¬ê®3ñ¬öÐYa¹³—J‡.®;ÊÞGô¥{\ÒR´q]^2yëp=žª…B¸ÆÛYVéPúBÀ´¼Ò›qF7Ñg¶½®ÁÏc‘ì8m­‘ŠÚUÛ«l'¯ê¨|ªZW;“é3VùjKa-#W ×óq¨Ö®ÜÙ™û%®t†d¸áR’¶ **':ñ?mw=Œ¶¢$Xñ™Š„!–Sϸ2§1““×\4éo›¿ƒ¡ÕÙÑño&üŸßö†3ÓílÎKðÔ ·XÑ2FsØ+cq³Þ­  •¶trzÜŽ¤¶¾¿†ÚJZ”¥Jõp1¼;O¾½u†Šp°=DW\i¥Ø¯]àø™çppxŽ#:—Z$àߺ¾½³vK>—j‚îzË)×ìª ü˜ì4¢®sgá„B[I@势NÃæ”|Áé`‚HùõQ_I#’nOÙÕ6$üä;÷±EGNLuâpZ(¢¿?<ТŠ(dGC£ßÛOÀ¼L·á©È`p?œšò¼RB†«)xee5fi`\"MFôwR£Öž|ªVk ìL/œeJmcIÅJ‹z¹Cõ_@’ØëશÔû“ÒµÌM~i%(QÉJI÷Š©‡´6÷ô[……þ‹ƒf‡šZwâT;AÍUÅ®ç4 ãÝ Üoôô¥ €0)¢êG^i%ãÔ)b,?šð¨$Tbâ]'4°± ¼šBQëÅ5š3K+4f“š3S`+4f“š3KY£4œÑšX 8„yª‰{K$¢#K®Üa5*-ö/J]‘|0t¶ªîwØpòÚϽԄk‰ª Rî·CŽ–[?˜ÞŸm ´ÑÎ2jmÜ膛òusn®ÊVë@èÚxƬ¢°†@¦Ú ŠŠÊsléI%d>ÉÁ«ÊÒªÐu©ñ•\³D2n(hN¢½Ås²¬RM8)¤Ó‚ªÈ&Â^*Ù…iTl+ oYH®:Ñä*-Õ®r)#Šu%<( )%'¬"ìî ºÅ$Ô‰m–ßZQ¨â½» $ã²›PãN(kIPÒ¬:©¥Š}zSk¢$kŠìÖ’ƒëàðPÁ¥ðP4ÚÓ…*IP)ÈëI¥~vœ)NëºçhÁ¦ÿ4r C!‰”­®ÏX~Ú! K‡‡²¯…z²R¤»õ¯œ-HãETƒÕ#} }d«y&¤NW9¹%½9àqù«i’ç¨Ó¸ÎéÝ_ý|)ä )EθçZý¿eQ‚E¾Z¡\ؘމp‡Ǭ}õk¡¦Ô®C %™ s­z•­ åql{muÑàeY\ÚM×dÈ~*ëm_®gBªhÒ›æÇ8ÛÛ˜vÃ&9t’¦ÈÁ5U±·”FÙ«# ˜5<¬7Ÿc!ZÓlÉ ¸@8Åe-‘ä–Ûq¶RBø¥`×èZ}_V*^‡¡ iÆÆ¯m.ª¸mbŸnaqFÜY ¹öjÒ¼åâûpÿæCo<ÛªR”w”‚7±Ûî÷Öjz¿,HÓÕýµíµa7†Šp7•¸~ãêsWfÓHÕRHÑ]~-pÓµRdFýégòdN>8¨{;|LX(€ú£¤&H‰ uEmá$nîð#$ucJñN„'um…ŒäpEIDØÄúð"¯#Š û«W’-*)šMŽÚ{ ºI›k¼ÛbKÝX\¾†h¸°£¯­œFs]ßpäÝq£ Ìm‹˜m!ÅÅœ"²µ`o}ÕÇ,‹ÑÛKEC)}‚­lÿÃ[g?oÙUW#HAÁpΉmåÚ׳’ÓÈIyˆj(m3.+qAI'R =msÙVSÿuØ]2ݯd`!_<3ÀRù{¿lîJß¶Øvi¨w ó%ɨ¶óXRNË» úÇß­IýΛ{g¹.è™kœÇÕ9Ç‹ñÛmIÜ8o­tE´í{NÍ7¶ì¡ƒË_)W˰¶‹…’Í%k ¡…ÅÝYR°ÂúõÖ¬Vm¼Í\6»nf:ÿÊdžÛÇfPšù§n.ÈËÓ·`ËÑåÉ—ƒoîïRuÝ$} }žÌ€UÏ%*V¹$[Q¼ÛnW0ªÔ"­®@„,Bæg"ZÒÿ9¾Ñ…ÄgÇ_qÕÇrèöë­8úò·RˆX 9N³Ë¸Ãjã)NLi”¢B³ #CÙ®~† G™’KÓ݈â HÝ+tžqÌñ8áŽ=µd䥹»¾ÜãV¬•ýãl6:Ïp~Ë뙩+m uü;ûjšÉʦÎ"çÌsÒ:㛎·((ÑGFœ8à×åE1˜åî"n åm–ñºÓUM¥oz`’T†ÒŒî•rF8W“«×Ö“qãƒèt¿ ¡±K–ß©ÖdËK¯­Ì%Ç; çúG çÏJñõîN8$éIIÿÏ<¯ëšù×E¾[=UM¥c]¶QÑ?gdVÀçSqÖ¹âÊuÒ¯ãÈ} Èq@‚’’rã¥shìíc!%ˆË¸äè–™^ñû k,Ö­¾ºˆÛyi`jŠRÍZÂzzõÒ¹Äå¿©ò^¿:3I)çPTž (f±ûK´/<…2ÎRÎr£À‘ÙÛ[hܘò™pISöÖYÈÆ}¶ÔŸ¨ò¹Û—Ù'Ÿµ!dcÖ”N>€Öô~Q;¸•zšï4d`mÍÞUŒÙÝ•¿¬(Y8Ç ãZ)\¢ìýªÓq^JV”°4JpAQÀZU·÷=m¼ß.¶$ëÖë‡þ ‘wä l%Dæu±)A*O¬ã„ AüέʽµJª|ž36¸9õÓkî›K·ŽF·I Gç‹1Yk)Sû£L8œ‚Iáë ò3Ûcl¸¿Kª¹Ìy[‚,›¢¶²sÐ*QÀ<3]“`ÿse²ÑneW¯¼®br§Z€ç4ÂUŽ‘œûôøVÖÙÈ÷'Q®i¸*Ï&dä¨/Ÿ›)n)J :k] Š·cRÎéœpÝïpö"mª4D77’Q IYÀ!9¢~µÇ.{I´)Ÿ.kW ”9å.;\÷üKe¦!W£[â³½ín´2~'>¶cRÃ$uŽi?…gCGÓwnæ•õ*§Û#à!Ê×( Jwvªé€ŠXãô¥·Ë7(ÉVïù@ò‡ [×ÞŽÄ€à!ØQ•žÖ“øU<ý•ÙYCüëg-#œ‚ÒµíÕ5Õ±¿'6ãç[–ß"íÉÞÍM‘<=~C›ò0Œ)$gR1Ã…wŽI.ŽmÉ5yuiK!.¥'Õ*d¶›™ÉÞÁIV\Ù[Xþƒ\ßû¸«›6 SV«ãgùª©â¼ë«)´;‘Qq¼GЭúiÖ¤7´O§GàŸŠBÆ´Äž U·¯(ÍуðLoi!ßy¿ŠsO¢ýlPÖ@OôV¦”âXlpH¦è–Zh sh'¹£Ðz‰5Ù‰?¾JRê@ÅMHà{QÔÂ4T¡È­nÜ­çT¥«µG55¸Í6)ÑÆ½êªÊm—€‚“×K4…qª :Ù©¨­šƒFCO—ZІ“R:Ö2D2Ñ£‘NÔf ©)®y"Œ1­)5áêk2pjÒôÕP©°—®+ ªè‚᳑K¦YV”íq²J»Û8Z]ކªÔ0sZ)Í¢©=cQYå W] ^6I<)\kÌVàecCM¨išyyŠhqW‹% /®¼^¨ ëRÖ1šB1ÓÀÖ„‰HÞJ~"™+‡Q§NP¬öKÉúpV¢ªAæîŠAáÄSK?‘Kƒ‹gtþÊp„«¬hi%uIüÕŒ|úª¬êµ7À:4øÒÚYJ’‘¼Z^ꇻÿlÔt©A#Ò J)O<â¢_HPøÿïU’µ¦Í$ÍñöÕV>ú`Ý—óù’Ó™ëB´ÏÜj¶@/Àmê˜<Òÿ¢x~ÚR–W‰g;ÍžeÏ—ôªµÁ)Ù˜¾Qìë…>dKJ;§µ'P~•ÌDt¡Äå:•ëô¯¡yD‚.{7ö—›'ïeUÅ.0JBñ¦ÿã_UðNè¤zT%s77Eëú4í¢#· ìHL]é ¡$u )7‡€Çæ×DýÍ»<í÷•X.6Ò^E½ÄJZ € ÝÕ#ûX¯w'Q›Ú¨Zo÷ cú¹SŒ«)Qû*½(Öã—Ø/ÛùT¿3%(KŽHçÈFp7ÀWí¬ U}díà¿>KhJqûªÞÖ´¦cJ!… 5IoVF\B!.d+uYxª²Èr<¥òcvÚ5íL‰+èÿMfc€‘쬭âNœ*‡‘¨;;‘T]®pä95ÙÏÆÍ½º¦ð8᜞5eäól°BŽèm8=GÕ-wæÐÔ‡½Å áŸûëxÊŸ”s˨û>Ošv‚D§/Bèû«sœ¢NTwÉøb¾¶³Üö v¸Ò[ØØ|óŒ¥|ç¤zÀ”‚T249Ö¹®Õl»;s³wG,Pc3*ÎÑœRÛ`S‚:Î>»î]VÍí'#–w$ZíÏL†Wå-”•¨ å$Ÿè‘ô«S‰"æ•û”*»l‡¤óˆÙ;RФžq).•¯>ªÔJx€N¾óD]¦³Ûg.D<áH,´ ”:ð`å]Çüœ°'…’Þ3ÿ—OáKE†Èg·ŒÿåÓøUìÌúOÃ>åŽZ.;s˜ÛM´ÜXC~Êw d›[ؘ_fN¹­ÿ.ëiîVöŒ!´%´MShJRJRX~iê~gJòjµ½ŸMB-S>—œO´‡qý~ÑNzX:onür>úBP€¬ï(|j}ª»”Ö Á}å6„䟻ât¬¬Ÿ nqWlM½õÉ’ÜX‹S¯¸ ”!²”O9ÍwäVäëMÊÛŠ ¤úɉ%N8)\òÉ«~LvJͲImùÜÛË{ÛòW¯6É¥Äë[¦®ÊuaZ¨o+ë^• 4¯Q\ñu_œžÚnË"mœì¹8ètK_[’–§ øk¥hbÚ¬q°"Ú-Íc†äTõ5@‹ž=l€O¾žnë×¼k¾*á+tªNslÕŠGªwz´Ò%`hk<‹²N5&Mկ쭹™~‰®4è¸cóMR"äÚ‡´)~˜Ù×"¬¹"ö-ý9½ì©¼üiÄÍ‚y¤æ¨Õ)²4#ëH2F„üªvÙxe4T [k=Di y9%<Ò âBI5Hd¥SfY ÑF§ie÷<ž·?Õ ÓJ}99‘º;3TŠ›ƒ‚sñ¯ ðžÁSd.\™ià󦚴§7,pU2åÈ.gçK\‰ˆs8NÊirFN¦©pOS¥? hÜŒoä|*Ap촃튊ôœû çUnLB†‹)ûj?¤¶=µDb€²r^¤(œüj:äƒ×­C[í ?3Qœy9ÑF„]‘ž8?*±o8QB8Ö(ÅyŸ}÷×ç'¸£æ}ôgß@{Š1^gßF}ôEzkÊÚðÐ+Ó@%|¤Òϲi´P8QPŠ(  (¢€(¢Š¢Š(½åz(ÒNBª¨ I© *7]<Ñ«2 I4óGZŽŠuZÎH†YÇULlÕtukSÛ5Í$UŽ×ƒJP¯ bÊŠüeauSœT’ºÜud ”*Ed š“¥pIrŽÊÏÜ-IZzŽ¢¯êí­æÒè ^Œ­ Rõâ¼¥*“]ÀKƒLÓ*©t¦V;ELXpgZdèsRê¦V+h’%Ýp®ÚIõ™#­쥣ÖB“ó„ð:‚F‘‚²“ÁCí¤»ÐsªiN$‚SRt¥è£ŸÓüjÆAt,èm<’L` Nó+ÏÈÿΘq9B“Öƒ¼?m;cœN÷°à(Wý}*$¸ ‘(Tµ²£†å£tg©]_m1*SŽCVAu$cùã…)dˆ¥$îºÂò»ÿzöyRjk$òC£KQõ¬Òð }œ-Ü Ê³HV%²‘ž¥¡®O‚¸ê\gRëN”,v‘]ž1®MÊcÕCÀ:€:Xúæ r¥oms™º°œ3=°³îX5ÛðúÝ:¶ÉÓ§™Á.ÉÝ—Àû8ûkQ³qwäëi“³ އy°ÓËy àQМg³£Ü­R—!ÿQ” Üu©G†>ú£~ÌÉ';­SmbonOmoÓpÔX2ÝVï¶”)#ê­}Õ¶Ù½ŒÜX“´.%iÌxÎñ?Î_V;xç(Ö•¥]ÜûƒœB"ÄZø+8÷梵µ»A,”CÙ9 «ô¥KB@ø“Yí~KnO±‘k‘±r•·0ƒ‹-P†‚Ž÷ª½ÑðÁ«-Š—+a¹I“f¾ÖÏß2aº84ù«yΘ†:ô¬ÖÅ*æ×*·õOf4i2¢²êÐÑ+JFƒLàçM~5¿–źCHË¥·êR³º”©:¥Xíµ£•ŒÕ¬u‹FÖÜ¢¨sï -cWZhihq(ô—ÑÀGªµhkMÚxÌÖVT®Üè*–eáÕÎ8ò”¼éî§Ìl\rYA±ž]ù=vÚvÑÄ»¢æíÁõ>#µCq+Q'ò„î馕Ç܇uFB­²ÈiHV~†»]¿l.ÖÔsm>ŸY§5J‡f J7M½žn}©VÉ+âôUc·º¹äã'tŽÈV©fÎòä2räi(Ïé2¯Â»#ˉf°*⤃6zJ¥'T¶’@Ýì$ƒVö É#~ô1eÅŽmCé~x¬îÕ1qµsVËœt²¶Q„”«wLgÕPÑ_*µ$âîÑZõ\ã¶æê5ñ.:]B° Σ#«‹}ÏüÛÚk…Ú¶‰øòÃ2U¼‚pÙÙšÛ¼¤²T—AIdº©Ô8gLè½&—$ó¯QpHàç}awIQNø JAâï «u³¯]læg°ß‹‚Ò¬‡2>5ïLãBŸžkŸ‹ÚÚÂT¼¨ðê¯hW¶¿GPm7ý8t8ùÓ‰Ú!\ó¤ÙPÊ÷šiwù«àjz¬—:Rv‰;Ø+ûjCWö÷|ûk’ªêR­Ä‡ªp]J.‚z‰«*ì‡Lëbô‚?| ÝÁüáõ®R›ÉÈÕX<5©-ß5Ýç}jº®Šºléjº×^z~÷ΰ°ïZ)ÐjɉÁc!uuRåliL¥ºJž8âj®;á`dÔ€¼éšº±!N8šBŽFi) Œf]B QÀ< MÈàQÉOÖ›ZœÎ7©×¸¤’œŠe×RqƒÃ®¬™Q *ý!L©DhÓ‹|c†*+ï¥$œü}ßµÐT¬{DÑQÝ”€œœ{µÐÑPØàçR±ð£ üèçE+ 1ð E+ 1ð <( vQ@+Þªò½)ºs®¿j€àã^Ñ€¢Š*QEEPQ@E€UxªP¯*¾@ʸÒÛ:׊”œ·‚ ˆ4òj3gJ}5Y LaZÕƒ'J«dëVÕ ®i¢¤äj(W Cf—Es´Qž ZM6´±PÁc |*Í£‘T°Õ…b­ØV@®*ªÌW :ÊÛ=b½¯RkÄ™—R¢iº°»µÍÊ*­@:ôa+«yHs·¶•AÔ·fêÐÓ. iõŠmcÕøV‰’0ê²).§ #? Q+ÖFzÓ¥]’6ö¡vè~4„ŸQIë"œG¬ÙëL¤€°qî5 õD%ä¬ð<m#t¡Å¶uÁÒ”±¤“¨¤¬ï6‡x‘ê«åPA!ì-Ht«×¯‡á^2ó7¡’w™%ÖÿâMkÆ=vlñZ=øãöRËÜÛÌJÁÆp¯oÙYò¸Œ‚í±`j¸ÇœOô¡«fØEïe%[T3"?ùÄcŸ¨ûþµRÑL; iÍZ$¶®ÍÅuý ÔÛ Ž[®…—9§wž´“E-¯r&.Ìæ[GÈÂ7Z@'®»fÝZ+¤–Û4ïå[=@q\Žõ {™'|å(8#ê+ít¥:Ižßƒ²Ðg@xâº=–ã9Û\f´W"€ÊR–"î5º1À«emvT:ã«Ó2B7´ùÕäK3-(.2øç#ì®ÙÉ>¨ÅÄžÕ¡¥]•5ƹ  "d—¤¨uï‚ Ó«…AÚkjã4†XŒ¹-Â[Õ¿X{*:îû]16LT†ÜJØ­j¿j®±¤Âa‘”º$´­Ò’Á5“O¸’V:3HŽ’®qÝÞÊ8ù¥I3ý¬¥Ô´žªN‡ä+9]æ ë}ºjÒ®%¥ü´ÅH•³{JÓzd^aNþö§H'哊Î0“ûQ.I}ÌŽf>ÆÙ;{NâäEÝÞ* ÈP8Ræ_]“žqÅ ¬T„ì¥ÅÌ)Ùq'€ *ûE<‹¡…ÎhŽÐÒ]ékÍ}¤õ¨ÇÉEéà+Dü©ÔÏÀµ"íb´[qÚXñ‰ÎÍeGú æ¡ÛàX® -Ûöº)pnºß7Ÿ†MSä«cùEþj–I>œB3¥2©aYß#Z´s`/¡°¶Ÿeñ0•dü*†ëi»[  s 7ïVNsŽÊ‰hë.\Iަ“í"tk¤Øjß%iø(Š™wÚžµ·o¼o© ¦Ô’N˜¬k3Ôðç ©Î7€áîÒ›\е8ì¬6Ê&·R4Lìå‘VÙ Ù×]CjSM¥åc@MUArL5¸¬„X«Ôë=¼y¦Ðsñÿ£QË…1_uZodxá]4ïk³ ¾lMfô¥ ¨ ÑŒdõâ¦Ã¹…p¬ã:ýÕ\DF9“…Œç¯]s朗ךYh8sœ„žáZ&RÆÐÏAW:\Ñ:ŠŽÌç*p3YTÎ+Ê !YuÕ¼wÛi¬©DjMMÈh»ŽZvSJ»¨¡œ•u“À|=õHýÁn«š`•a˜ðZf¬ B{MIÜy!±¼Ê9¢×ñ4¥ICZºC+óGÖnMù* æW—çvÊ‚'­ÕY^ú6,k‘#žQÏT{K:€¯D”+)iyJx‘ÄÖ@N~TÆâ´O4Hý#ï«øH-% “•c*>ú‚ hò]’?mim/>[ †µ‹‘v‰‚áK®õ!<l¶>S7 Ž)Û›ÇÕÆ’ …ï¥$‚;já§ž5•‚ÿ5!-¯¨ñ«æÞIBJN•ÖŒY`\Âr4¦&~U…„¨dõ{éY#ÝLº¬ž„ð«®ÅXs Sê!  ì?…y1ļ„£û IáT—‚§#¬î‡ǸÕ=šä¶Ý]¾a#:¤qSºÂÆ‹¤VÚÖËû¥h÷ûC¶˜vbV7™xdp9ÏÈÕ|·ƒ„¯x—ZÓ=¢ª&©ÆÉ–ƃóÛê÷ÒäÏ\•©;„ñÊUð¢¨×-‘’¢qõMͦ=67{ú¦MÞþ©¯€éÏ ç³Í¦=67{ú¦MÞþ©§NxbÌ4f˜ôØÝïêš=67{ú¦9á‹2AÐæ½ÃVTç†E™5£Rjµ#Ž.~©§‘>(âïêŸÂ¡Òž³,Ú:Ôèêª4Ü¡ã¿Tþ!«¼ñõøV2£Sñ~Åv¼éV)AUL›Ý»ÉýE~´ß-cŒ¯ðÕøVOWñ~Åv¼ 4âj¡7ëO\¿ðÕøRÆÐZ?•ÿ†¿Â¨ôõìÈÛ,LÕŠ·Š¬YíœáŸá¯ð©Ñ¶ªÆ€7§cý’ÿ ç«¥¬ûAû1¶X5c…@°ÙÜkpÿÏ-{þXlçÿ¨ÿ‚ç–¹¾R¿àý™;^ ;»\ämð5Aª5p©*Úý›RƒqÐŒ~ðç–©Ú 6ñÝ›‘4¿Âºhië¥gìÆ×‚“œUoOÚ?–†¿Â¼éëOòÏð×øWGËÕü_³#l°X,S&¡ªûi<%ÿ†¿Â›7»V…†¯Â­ìJ‹Á)cSIF3ºxŠˆ»Í°ð•þ¿ iW{wTŸÔWáZtj5ö¿bv¼R zÒi¤8(dTeÝíª9ôž#_Q_…%WkršÒ}d=Ej>•¿‹ö^ cóTxp4†Óë8Î=¡‘ñ7K¬ óøRWu…¼•¢G¬}…~ ¿‹ö#kÁ9‡7‡1¢NœS[ªz6s¦ò=ã«ìªót·ó‹ñ¸­G¨­>Ê[—ˆ%,8$u¼¤‚…jž®¯•Uéêþ/Øm– ’@‘§9‘Yøj>Ϻyâò#Í#R9—½å#ùŒU|k½¹ ’ÒäeÔhw¢†£«åIv·òqü%Àƒ¸­>]bªôõmö¿fFÙ`ÕÜ™mKÇÖ~/ªzò?ö®S{¶!W4æâB¸”ëºÎm-¢*‹råî¶â7VyµœÀð¬–ÔÌiÉNôc‰u¬å' I?Zõ~çMí©c®Œä½ ‰-ÂB9‹|c1Ô žtý TKs¹õ©me¾*Ô$€¨.ĸ9 Juµ)_ •€GÏ#Jõ©W¶Ý“žXVAzBúf¾µV…»¤¿¡Òä²jâÊLV·X .þs‹ǸRQ!kY[¡#Rµ~Ýd.sv¾cÅÆíñ¢Œph£öš¦™lÚ™d™)uÌõѦq[-U®›NO¹Ñ¤íÕº{Ž]t§!-6â— ÆÈÛ•7rô¸hê´ÉéʇaÇWº¨NÎ^ôÿ2ÈÏzƳw°“ˆ`ìŒ8>ÚÍê¢ÿÔ‹¥¬^ܹFÚin‡’Ü@¤î…WLÛ=¤˜ÙjEîb’G²…î¨ÅD;7z$“ $ÿ¤Gã@Ù»Ö¤ÃÉáûê?‡¨Oý_É6ù+^ñ$ñ*â~4í䀕(c° U—ù9{þEö¨üiMìíè+Ö…‘ŽõS«É{–ܲ]lŽßí-‘‡‡yq¦Ò“ʹﮄ錌ƒ–+¢ò[Ê\Çï¬C¿OÌ=G¹ß] ªÂ²8­Ñó®Bž½!aI†AOË'ÍKnË´ 8•·@¤äaÖÇÙšºÔE;îþJµ¬tžQ.ÑÝÛ©NlÛ±›†°„†šl„úÄã×Lm$kˆ¬ÊG2”-°wS꾕c]ôüsŠ«°‡#Ææ¤Ú+¥òµ½Ä'^hçÚ=§æÅÎdÇ%-²ãŽåœ¤ ã€à8|ªg©Œ£Ì‘HÆ*\;žžýžB’—Rã ö'·u=ù‘µàâB÷ç#ª£®Èèh¶#ogRwÇ­V7a¼0ï:Ärœþøœ¶¹÷Ó\]*¢}ÙgpNâÛ@:>TÌÕLXPÎSûM>ˆWY;†TD´¤«*!Äàý¦½rÙ9S WwÓøÔo†Ku#’´•‡…A# õ§ç×M&z÷´;ÉqViµ\¥ŸG$ç§ñ¨¨°ÜQT|+9ºo†GR9Åå¨é+ÜË‡Ç .æü¥åN(‚xO®ÁtqG~!8àyÔþ4ûV¨H&½»éüjzÉã’$|¥’µ{DéO*An.ðöÉÇʦ‹Dý2ƃ«}:ý´Ü›]ÍkýQþ‘?:Èß‹²:¸î¤#ëš•q U´Ë‚˜h2…eÕhq©ÕoŸHr>_àÚ7ÓõãVV«j"´dÈé‹ÇRãSÔ†QW8߸Z- Ó.AH@öSÖ£Ûð­5‚xŒë¡guGLõVqÖæ<éZŠÓñVjLÖÚòê¾}”X'Ý”“]Îb\”ˆO]YF’R•¥+ÎxÖ4ä6 T­sÄf¦ô»IJŠ]9#† tƽ?É{˜¶´k™¦¹!RÄ7¦maG{‚† Y3´íÏYò“Ù¸£û*ÿ1Oò^å]‹ÉÉ)×F©8ÔV?jZu-‰Šœ@ÝQOZ{MY®ýoK›È’HPÔn+O²«n†$4[ßuÊH©ué?õ/r.1ê—¢%ÍóÏ45Ó;â Íº2ɲñ)Qõ‘ÔG]U”¼ÌÕ˜à–Š²“ž,ÔYÑä¬0È[JÁ;Ànž±UZŠi}ËÜ·Œ©‘÷ÒôWwV®#(QYö!ÜÒJT·z¿(“¶Š|Í?Édk::Gyŵ棣¤w‘<[^j‰E|奓K$¾Ž‘ÞDñmy¨èéäOך¢QKK"ÒÉ/£¤w‘<[^j::Gyŵ樔RÒÈ´²KèéäO×šŽŽ‘ÞDñmyª%´²-,’ú:Gyŵ棣¤w‘<[^j‰E-,‹K$¾Ž‘ÞDñmy¨èéäOך¢QKK"ÒÉ/£¤w‘<[^j::Gyŵ樔RÒÈ´²KèéäO×šŽŽ‘ÞDñmyª%´²-,’ú:Gyŵ棣¤w‘<[^j‰E-,‹K$¾Ž‘ÞDñmy¨èéäOך¢QKK"ÒÉ/£¤w‘<[^j::Gyŵ樔RÒÈ´²KèéäO×šŽŽ‘ÞDñmyª%´²-,’ú:Gyŵ棣¤w‘<[^j‰E-,‹K$¾Ž‘ÞDñmy¨èéäOך¢QKK"ÒÉ/£¤w‘<[^j::Gyŵ樔RÒÈ´²KèéäO×šŽŽ‘ÞDñmyª%´²-,’ú:Gyŵ棣¤w‘<[^j‰E-,‹K$¾Ž‘ÞDñmy¨èéäOך¢QKK"ÒÉ/£¤w‘<[^j::Gyŵ樔RÒÈ´²KèéäO×šŽŽ‘ÞDñmyª%´²-,’ú:Gyŵ棣¤w‘<[^j‰E-,‹K$¾Ž‘ÞDñmy¨èéäOך¢QKK"ÒÉ/£¤w‘<[^j::Gyŵ樔RÒÈ´²KèéäO×šŽŽ‘ÞDñmyª%´²-,’ú:Gyŵ棣¤w‘<[^j‰E-,‹K$¾Ž‘ÞDñmy¨èéäOך¢QKK"ÒÉ/£¤w‘<[^j::Gyŵ樔RÒÈ´²KèéäO×šŽŽ‘ÞDñmyª%´²-,’ú:Gyŵ棣¤w‘<[^j‰E-,‹K$¾Ž‘ÞDñmy¨èéäOך¢QKK"ÒÉ/£¤w‘<[^j::Gyŵ樔RÒÈ´²KèéäO×šŽŽ‘ÞDñmyª%´²-,’ú:Gyŵ棣¤w‘<[^j‰E-,‹K$¾Ž‘ÞDñmy¨èéäOך¢QKK"ÒÉ/£¤w‘<[^j::Gyŵ樔RÒÈ´²KèéäO×šŽŽ‘ÞDñmyª%´²-,’ú:Gyŵ棣¤w‘<[^j‰E-,‹K$¾Ž‘ÞDñmy¨èéäOך¢QKK"ÒÉ/£¤w‘<[^j::Gyŵ樔RÒÈ´²KèéäO×šŽŽ‘ÞDñmyª%´²-,’ú:Gyŵ棣¤w‘<[^j‰E-,‹K$¾Ž‘ÞDñmy¨èéäOך¢QKK"ÒÉ/£¤w‘<[^j::Gyŵ樔RÒÈ´²KèéäO×šŽŽ‘ÞDñmyª%´²-,’ú:Gyŵ棣¤w‘<[^j‰E-,‹K$¾Ž‘ÞDñmy¨èéäOך¢QKK"ÒÉ/£¤w‘<[^j::Gyŵ樔RÒÈ´²KèéäO×šŠ‰E-,‹K'ÿÙ././@LongLink0000000000000000000000000000020100000000000011556 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/booking-mvc/src/main/webapp/images/spring-logo.jpglibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/booking-mvc/src/main/w0000644000000000000000000007515311360615644027676 0ustar ÿØÿàJFIFHHÿízPhotoshop 3.08BIMí ResolutionHH8BIM FX Global Lighting Anglex8BIMFX Global Altitude8BIMó Print Flags 8BIM Copyright Flag8BIM'Japanese Print Flags 8BIMõColor Halftone SettingsH/fflff/ff¡™š2Z5-8BIMøColor Transfer Settingspÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿèÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿèÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿèÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿè8BIM Layer State8BIM Layer Groups8BIMGuides@@8BIM URL overrides8BIMSliceswI bannerlogo2 I8BIMICC Untagged Flag8BIMLayer ID Generator Base8BIM New Windows Thumbnail›pPÿØÿàJFIFHHÿîAdobed€ÿÛ„            ÿÀp"ÿÝÿÄ?   3!1AQa"q2‘¡±B#$RÁb34r‚ÑC%’Sðáñcs5¢²ƒ&D“TdE£t6ÒUâeò³„ÃÓuãóF'”¤…´•ÄÔäô¥µÅÕåõVfv†–¦¶ÆÖæö7GWgw‡—§·Ç×ç÷5!1AQaq"2‘¡±B#ÁRÑð3$bár‚’CScs4ñ%¢²ƒ&5ÂÒD“T£dEU6teâò³„ÃÓuãóF”¤…´•ÄÔäô¥µÅÕåõVfv†–¦¶ÆÖæö'7GWgw‡—§·ÇÿÚ ?&-õW{i{Ú×\ÝÌa:˜w¥,Ÿïö+»K-;ösô2nݶ>ŽÍË-¶d´1ÑNöXöù.c™næÔ÷ý“í¢ôëÉô깕ÿ„WMyNô¬ýu¶Öä×Hu¾×5ù5¶Ëso©nm»Ý²¿ûOþÕËŒqP¹‘ÜUêµ·M޾­Â·¶§5 >Àç:w5¥Îôö9ŸÎ~’ÏôK9ÏmU/w¦ÊÄX]"%Í©¿Ê÷YcV&[\Û­öVÐÍ Ø75­È­µ{ìØÖ¿í¥ÿ·?œUÁ̤ØÖ¹Ô_`©ïy°—·a¥Ûª¶ŸOþⲪëý§ý‰c«ã±zéêQ¥ªe­sAp ‚AÛôö9¿OoòÜºÜæ×{ZK`‡8FݺwUžÿ^—ÕeB¿ÕÅl¡®6–µµÝöö9Ìm¬nï´}63ô~—ü'é*žú˜ýÕ‚Æ ˜7\`2«1*üý¾Æ\÷ýç?ã,M”qi/pŽŸ*–k^CÛ´!ÜÜ?ÎhQº·–5Å®ifD9Íþ³[ïQºÌá’ou­õdû\Y%Å÷;Ñ{Ímõ½KèÙô+ÇÉÉeàý6ÇvU¶·0Ý®±ÛÚ÷Ö—ÔöìÛfvEž£?JÿÑÓüשêÈ#Œëÿšý4»cªvO–ýÞžïÜ~êßú7{Õö´·Sð0°07ý¦ŠËjÛC]NËýÍsýÎÚëoÝî}ŸÍ€ôýK½M°çhàN¿”+¬¢',bVãûߤòPÕ#ÅnnšñüPÀ#Ì%«Œ“pŸi<:a]ÙŽí`Áæ‘j^àyJJHÿÙ8BIM!Version compatibility infoUAdobe PhotoshopAdobe Photoshop 6.08BIM JPEG QualityÿîAdobed@ÿÛ„ÿÀI ÿÝBÿÄÍ   !1AQ" aq2ð‘±ÁB#¡r²3s³$4ÑñRCt´5u6 ‚%ábÂÃvÄEµ&7!1AQ"aq2‘¡Áð±ÑB#3áRbr‚4sñ’²5¢c³$´7ÿÚ ?l‚âBiR?c— jx{ƞϧ_•¶™'%ÈUæ&'ÑÔ”Qm“Öž• ðà´ž¤ð`¤Z fD )LóV»oÿa‹S+ ”#5r†•t2ìg>3¸:ÉZ¹L¼× ”p᮲»5S\ÁÆ?в]qS¨Œ‚ÓmL€Wt#m–óg÷è’Û†tШ=ÈÒZPAU@ëª×Àj™ñõib¸¬|Lµ÷ ¨JŠÝéÙ.…[ᛤ¢…Q%•­À\¥MSdž—Y˜ z i8=*ë5û%ÊÙ%ÕË",Èî¶ Ö›êeà¤ñeH ž¡QNž§Vª´¹IÖÀ$.;œJêd¹s¶®ßqŠ…9ýöÄ✶Èê_%?o‘Ò(H­8ê´«˜Œ¡^ —X0©eÞ×m½¦{FF<ü£k–´uÌM¾j“q· ì¡Ä”ðU}kCM+vâºæF1Í–‰Xô†3=±¶ ²ÓÏÝa¿i§Ö¥2n,0dBH«ÝCè¯ ’=k¨¶FU‹AÅI™É“EŠê«¥ŽÉ6DFÒûÌ)§ŸRÚÓu³ÈS!ºÔ `¦‡6²G\8²Œ\aš#Å™Öõâ!Ž[jãoƒ‘El6•)S¢9Ñ Ð‚óÕCÔj½ð×·”Arpm!=@³:;l¤"d8w¸©H.¬ôIK€UKZRŠ(N|u«¢2ó¥¡÷uü:ÜS1‹ŽÄ Lk‚*”“ÞBš¨û­%e$s#êÖûfF¸&*c ƒ’¯HBi¬¶MR2û OÉ)mJb}¹MDx-j P/´htúA×nßQÕ joO—Ä*Û˜õ(Yi”»A)¶ô%Æ]Bšk¥î¥|I ¨s#KÝWª™y²)Tɤ̯ #ág«à}àã¤9Ò×öaJ© =$€ß:n¹³ 60ÉYž6ZÝ‘ •[ÊhzI“F iN ÕÇÓEl™¼E˜ã‹'·ÏSW$›4-$„´~†‰ ¨áϨtóÓâG¦’ » íú2–óøY'¸Ô[gûQ퟽îT÷)_{WöÓ#ªNX`E°Ÿ‰¸…Yú’[d%†ÃÁ¢¨R;Š÷¸{5¶,Ld¦Î%e »ÿ/©#Õþ†µ§f¥%u{€¡ài¡!Œ±Å0€À “Í¥ÐÍÙÓøAaºÅ °:]CÀ%%UiQÌé6À[\—éíA‘Ä+/‚Ï+µÆ x¸‚^!w÷ʪ(=à}(}5åü廥äÁÓ„‰9`¬$Wݵ|-(ÝKT@ûÊéë)H  <=ºåoˆôúe‚’å*ZB¡¾…4hçRJŠQT‚ •#•A ÓêÐUf‘únAÍI‰uH³ë@±ænFM°%‡V¹,2”µÑ(/®ª JzT¤Þ:ç+‘„ÈlŠª~fÅ.H Ïš¡hêJ›fŒöØêŒ •{ÀöÒ ¯']VÂÒ"#© yô¥v9A­¤Ûɬ†É’Õ$‚·hp$•<8k£óiôËÁGTH*Bä»ÿ•õV2#t5AUðp'§¥!CÝútÊ”1·Nß»6Û¨øA–Š+©ò„¯¡KcÝŸfŠp‰Õðø%i:pM1”–/JH³ôÆSˆŒ[ŽOª$©?vœ’8WÙª2Qùñ@ (ŠÚ„›2Þ0IëSÉqð–êÂÉýÙPÄôOf¢Y0“ûHæYA¯ÐR©(OàÞó(yÄÇèý¡$ÝORRP hMF«É„„Œó)S,Ì1B9©K-Ü$"Ò:Œ§úž °¯‚ %+Ž*¤Á­JW†¶Ûy" lÄ 8ûTÂg¨Áhâ[DËsI³‡XqÀÙn9øà–R¡îQA?z«õ<8é‘s JV3|pDdç,ö–ÚDÉŸ„)}5%=¶?°Éà}Ó@¶ýïwÙªö¼ë5zŒYâqrz,`p=Q³l¤&*@èŒ{­¹Ò–i=ž„©Ä!@󤚧YËÛýGe¶ä ÞÉ „†ïÄ{ çlÛš¯•b>PpöÓn±¹‚T)iDb55†TÔË.¤%ô´j_¿Ãë:á÷01´p—”þ 0y˜ÅÈF£é½â.hA3,ên$· I‘úïq+-;AN@)G^ïÿ{°ð×g»¹¶|€ôØœÑyTÔ ë œ§ÉkùšNãa£²²ÿé9þàT8’9¡ü5ã]}æF~ Žv%‘;KXJøNC§×Ú9ߙ䗮4`È ÒƒÖ¼‡«A¬ä˜a Ĭ@Q‡9·PTÒJ«D¬Ž£ê¢^h¦§…²D?Šï¥%òH öÙ>ÚŸ]T˶àºDËq •ÐtžI<+B)ë©r `\t)¹ì*,§K‰_l#¦„Öª(i¦ Ô€b«Ëe Ae Ã·;Ýïi)áÇБÇÝ0eÙÆ¼]Êb¹0Ò(¶“ÐGºà­PHõ­j ¥"èG0vS-½G}ä9ší^¶{]Á€0ñZÞÖ6Û‰"”YªSB‘P­?6Ÿé‹dòI6ʘéŽ+d,8BHžGÛþM »a¸8"¯qêKL¢Å=Àu¦ K ðIÿE_³Õ_Cë­|õ6lª`îÛ²‚˜(:‡IäHOìâM"Ò~>r$˜Qé0ß-!\9€“Àñ¨­uv»¢$0Zûh°Ã™Sê¬uЧI¨­yÓÓVNâ¶c@mm^~‹TñP˜ækÇØA5Òì,5ŠÎ"]ÒôSOMk¤îëcƒ\Ê_>&º‘d€H•p%×Tž@TzèKË2™¥+§³óþ\´¢5tZõˆX¿UŠ×P È­¥Ê¾¦±Ôi_ÿÐh‹D:=#ï$sPáÌŽj4#ÛJëò¾~h—\|<³ÃêâB¨£PEB¸T€fœOÞÕHÁ0ÙG•¶^ú»màÆCÉ4ó}¾ã]i,8£!AE «¤:ÑíŸMt¼}šëG2ß Ó @rŒ¶‹D‹ý®q1S!W‹Ldq}V›7vJD¡•u„r'ôÕ»@0äŽRÕÒ–ã¢2ûŠË|{º쨡J^=‘5Ù“Ö*qMF”âÒ@àšûuXͰÁüVi1ê¡wˆ.Èg ³,­«†6ì9Œ¥(HLÛy ’®µ¨( ET ~ƒ¡ž£¤À Ä‘Šbº4ê-Ìæ6Ä4ô‹L[UÞâ; yO ¦-÷‡ÒƒTwµºÚÜ$P£1§W)Dđգ¦ ƒŠ˜âÒËyQ”‹ƒsâÉJM[(iÃq€ÂRâ“ òNA q¦¢Áª7WÜÝ>í4ÄZæçX“2ŠÝ¾{Y-‘¤ (ö\X–Û UèèT„’¡M5N¡êQ*‰Ä)†x椬ÃE¢ázŽŽÓ°~né3áI…x*}j#¤)5œk@j*@::#bËã‚M|ܼ 6ë–U–ã–EǺ~d¸6„Éfz\hH~1ólCuIG¼Cm­Gî’FÏqºŒã·ÛNm‰`KbÝ=¤}ɵÂRÉH°ŒÆÅ”³÷b½Ûnö˜¹Öω¶Îrލ“[`‰¬©Ö¥%*Ù=U$sZ[¶Ûµ²õÊ2cú2 j¥ zº"B.1â-l$"tg „¸•©5)! ¥Äªœ¨l6ÖFQE‹ŒTÅ7ÂÝ"^ÒZ'+§âq,„Fœ¥ œ‰9Á'¬ñC]aT~lŸÏ×&cdpp—|L£¨ÉVÖSqL¸}S/Ö¦œ !hPíï\8k%¢PÒªÇTHÁNd72U¶S¨}º$„©N­ jA=(_³\Îê:mm,­ëx6•m«‹s­r[êZ\,*‰£},¤”*ˆ÷êѧñÒ&Þ¦$`J’ÜÅ7>’R{hþЮ€Tè-’:jØ¡¥G4êˆ#K",è}‘[çÃ×ñ-€·ð¡Mܨ£Ü&ª¡(4÷ª8êírŠIhÈ9p‡2!Ý>åIm‡ÛRûIPuµД†UN–ª ã­­3ŽtA’Ù¸|¸‰) ;1”ÄA@«O:YYkßJMHºa1$á‹"ø§¬Ý…Íä&smÈ 6¥¼ZH h¨t¡5mTPP¯!¨hh8!ÅòF]½›/à£%rR¨Åþ”±J¢úÀQ÷R»€ž|ޏ®ãÛ»Î1Å‘íVºÆ¹•<…;ðáAa< Èé¡Gѯ8¾6j Èj5³Å>€ê£:¥-%´¬õ'€© ´öñÕxj“ü¿Ú¥ÎœÕ{Þ» Çݴݘu´Èajaoôݶ°x©=²’ƒÎœ»®ØÞJ».H™9² Z“=g¥RÛWm’zïÇéH £d¦‰SúõèµLJ1b™Yö'YŒÍè‡Õ!%-“=±VVSD+‚=êB ~­sw æŠE‘ó¨ ÚÑS.A¹hC­¶ÒÞ_m=.¤!]#´hRŽt[­”£å$°§L–¯­ËÒT¦S–ëu *!®Š©æ~Ýu;rä“[îG–­\]uiøÄ(Œ’·TاmJéH§ošT=žº¹\«Óü¿)>(Ç\Tnái´õ÷Ûøb÷ó=¿x!C¬+ «‹•W:ziòôͲ‰füGŠ­›²nŒÖc_ÜBžñm÷]â… 3Bj}‡ZûEqÔÃÈJ\þgêÊsaT·mW!¤HZÔŽŠ8µ¡Ä¥t!¿¸¥(íÕ]PÃHéšÀæ%Æ+KÔ+—ÆÃ?×yÖ]£´t„%4X)íQJ)&œ ¦‚ØÂP°¶"`’ƒ‹mÅ1¯¨QÚjT•ÉAo‹ê%Å6°ÝGZà)B4Ý­ÑŒê,\€” ¼]GWò?ˆd¾˜ŠèI 0¦¿Þ'° Š-€ž5â5µŒªÁ£Ë,ýéÌ@ˆKa±tpßã „ºÙ\Ÿpû©Žµ…)¡ÛëBJ*)ZúsÒ-1›4|§îËâ FO#©Oq—(Oc7IB•Dfz;`ôÃ}!$8;aJ-!e4ãÌŸ§Ujp·{°Ÿò¯‰”}“ˆ|?Ì>ð×o¡-1¶8Ê8qþÕrñg߃p‘I-¸Ó mo+¥'¿lœÑ¢’CdÓjüúåwÖƒiib=º£ûV»Dµ––°×Wc–Y…ÚîhUµ@¤'¥¹Jˆúz‡…Ó‰åS¤ì÷Öì7»>Gk3 Äf% ã8HËÞ'BPôä^ Þ÷ ;r¶Ê·Î•Ä~ú#Ëef” é'¥Äô\MŸ ëõ³ûoÝ}µÃ÷ #¹¤J@~íƒËd?Ó`”}¬ë€Ýí¥µÜÝ·9ÆYøŽ‡ìZ°ÃèPPBµ)¿_ t)QŒu'b9u°¤¥$Põ§Öš®eŠ·Ä.Ÿ„¸ë€…¤û£×Ò§†£Ô"ôI#÷nimÙq+ª¨ Mx'è$žzLÈ8±O„H`éñÈÉRhž 8,Sˆ?˜×Kn©¦.2NæÔ”¥G$ŸN? ê R —Èo­¥’ª €9Ÿg­5ÔœPÖçk²â»J 5#…9ý\è5n»À•FÚ‰|0P÷mÒZY=µb¹ó>Á«‘°t*„é“ü¬›ÞŒ¡ÔOxðô§:ýz½Vä*…Ûa'ñ\šGhƒëôþ_NŽëå`a’(F)gs¨PzRŸæú©•sX`+ˆðWîÜ4!@¤«ÔÔ³A'Ù#sŠw_g¶šÕI<:S”æI<:jt°KàqO:Hñ ™ö*µtŽô>ƒ…tá` ê¬ë'Vœ#LU@W¨ô>Ò=8î#¥ºªƒm=nN bm¯ ´­ {´=^Å (ÛTº1N\ y8è¶z‰o¨ ð¾Òøèc(3©œ&#€dÜ€ª”RiZBxòf›(Db …V3™$Ò…6´ºiÉ4?¬iMsN&XÁ`6í *§§þmG“'XÓ!À]ÊE4—æÒ¥0 Š‘Bø·Æ•üúH´ô[v¸~½F¥š ÿÑbeÃP°x¤Ô¦€Tš{}Ÿ˜×_–3Ž.C)?Dþ±Ö„¯‡ (»Æ¢Š¯¨ôÕAlSD\b•ã—-YºCK 9ðÊQ4IKª Bz¹  }UÖÓ·Ó˜w`ˆ6¬rW2KÈîb7بR£¾Ä‹Dô!Ä…¦+­w­aR¡U3/­¤$:I4ôÖü#¦_)É?@À„®t3Þa,°áYìU}÷c\ªõµòòA+øÌ¢©H¡©úõNQ:ÌMËÝwZ1œ© íÉT…cù|4‡™˜ŸfZ˜YJÜr,”$%@ûÝDh ¶²f+NC GzÔæWg\™J•oY™ÚB‡ EVœ‚3ì8KKŽý½ä¸Hà 9p®¬;ÅÉÅA ú± =b}ûR›{¥K“l’äE¡ªöÛ¸cn¶ë¶QSw J‰ âi^#CScI( ‘‚(Ȟ͗sñ¼€¨* öˆCHC HˆðLöP¥" ºÚ”ûg—4Òª„9e`~Äd(ÈdT‡5‘†¿¹˜'yËXÆmWÕÞ•]¢L†ÍéÌ:ÏkŸve»§ºÌ&.÷«ê`YØ—$¢<'îHuJR’†Ü§ÏîwÜ/ ÉoøýŸ­¾1¦$s”cªb>iF¨j¶QŽ2Ó€$Ž—¶;zîãåëÙ !VÐ<®¶rªªÆs²Ã„-N&RŒb%""mfWæ…~mÓ’×yÛkfF–XÝ™Ùûî+¹›¿’Ýzb[ÛØíÊ{¢äò^JŸ¹^æGŠÒ ”¹'_=l>ŸýBú•Ë ÿ#½¾S$Þò6Ó¶ªg`ˆ1*è.Ø-è;ûøË(ãwµY·¯k l#'P°¹à¼Èñ×q÷|³ ×t÷2vû¦íÝï¹;6XÁá ÂÌ[‹®ãXó/8R¹§°"-¼KR\þ¦ÛS… ú_”í¾+³¸¾¶xkuí¶{xÃQÎrì°Žšæe=.D_H$^UÊî§½Ýݺ˜þ$ÏNétWBÿ ‹sS ICˆp-¤¹ÜKéR£Êt({äõ_Í­VÐÈ_® àù¨eæÝ%Ä·[N)ÛÎ=&ãlRzÖ"+æ€z€_~8$}êmw3”#EÑ$ÁûñE ñ–= ˆíµKƒFß –$&õ©ÓÒŸ|¬{ü ׫æUìe@ÎâÄü©ŒQ}Qž}ëÖ;m}f¦=T¡©áÇ\ç-Yš¼Uš¡,UÉ›{2a¨4ú@RÄŠw‚–{I S ©* «¯«ßêH à:¿F¯Q)‚Ý ÇfÁGÒ›h)©å>Êe(zVÐ+.ô„ž‚²šÐWÕàdçÁ‚ëd›Wâ…7#áËHèGKýaγԥ¾²‚šsá]ÔlÔ¾!O1pc¦-CŸ§’Xôt¥ÕÐ!]EAä+­5A²™¶Hœ ½ÅfÃuh-÷{=Ÿº´»Ö\êéƒW(SμדïiŒ,˜#Špb )ûe•4¾]βPOPJRêôå_·Z¨é!ާýŠŒJ‹æ¨Wklˆ*eJiö]Q PPu-¨¤¥jU@áCCÏ[½†â;}Õ6ÆD@G‚¥HjY·\iô8Êe„ÑÔ–Ê ®°¥ 9ÄõW‡Zö=•ÂPª@¸8¬ŽH$ f )yn¶%Þž¤SÞ) Šž¡Â‚ºÓò0Ó¹ Ò®‚¢·V­=éj[O)¤¡„#©¢®u¨.¾ñãÇÓNÙÊÆ`Rc›( ·4˜ƒ¶èxÈlÈ]^è[En× •¥²£QJk®»imŒbN ™à‰–YÃ!IR1ÔÂR”ÿYt’OàªSÃ5~Zb>wX3> ylÁTz]2zýâ;¾Òœ5O2ßó_on®fn~Súьٔ6[v¤]lÇ"¸È= £-U+«¸Z V´ûuVá3 ƧQ ½‚lYZÃn÷Ñ&Œªtv È+R”S@Õx5Õ- N>R„`f-FJ(Óâ:™.ñJÁ(R=êÔ’A¥5)Öî5tJ‘¡Eê%´Ç˜øiòúu¸ôîô!´tvúýjWSNz­¦uÌ …V@GÍÕÐýæ,ñîc–_å6ësÒD€Oî¦g©ED!ã_t€}šÛíì²ÚL¥†_f$i B֟Ĉj@v"úíüQBÒ…Ý Q¥§Þ¯ºtùùbHi+RÙ.´J³1pµ)Lº–nm%3’{Á*ï·G’ÝVA-¾NšTh÷ð¸Tn®_ƪbQ>âáãY‰‰‹Æclp[Œ`ô¸îZº-k;ÔägZ.E´©E] ©µ­fõï•{ª@ô®Ž±ìù‡¼BÐN"³emˆýmï´m֩縧㭸–’²z¢äuƒP¥5ÈŽ<5¥ºÏ^N5GñL†‘9þ(µGjí×°‚S1£b‚BRgD=Jõ q¢+Zrúuõ‡ügîérý›¼»Ì?ûšÃ]ÿÁ1þ9x­?;´ô·p4ŸÖëû”aQŸº’•ž_F¾µs¾› 3[ÇY'ÞêIãÀp§²¼´ÒrÍ5ıÉ.­\zÊOJrx^:×= íĥʓRHõ§ÇÛ¡–!Lp*QGpP‘ô£õi6 À.=©Sn†Ü­xÔSíÖb°'!*J¨}* œõ> RY{‡¨"¼zxs?N³ÃÉFJ_JÔBEjšPPûÓcšL€*#.ÜJŠúº@â?^@n®×pbP¶‡/©“Ì£^'Øx£O„ˆËR`;œ6 ª¤ñ˜éâÈÒŠ®`DœÔ!¾BŠ´ü©ªÓ,í’³9ŒB]Ü* O å@+_òi.ÉÎø%( ¨qô祙#%n¶Ðypúýƒ–ƒQRb à‡ Rª ¨¡èSÄ}UÑf ¥šruèõ(*OIHáÃÝõ!_HÔ Xr1ÄŸÃÝWJ’kìS‰öxrÔ™ØØ¥F5’‡£"… t‘Ntåë .ýQÊ‚Á!mžØ¡ãÌR´ôÔÊoT±Ë+EhE¤×ö´aê5cíb íÞÿ|§·ß&·˜Öýù‹ã]}–-¸žìy;‹lÅóc]¼::- ËÜÛ›¾ñA¸\”9&\ÇíÐð\‰©iµ¸}N¥½»m®Ó}¾ÛîŽVú3ƒôÔ "bçüD¯Ëmät‰Hk+ßåFÜ\ü8Ü­¹ñÆý• ¶éœlŽ3¸Ñröc°ÅìÔ_¯6ü®ßbGb<±j·^m rp)á |rãŠs­)æûÿéÄ{R;9í®•´úQ2‘æÄLÙ8;–8’²ê=(ŒpK­’…Ú/"BÊãmi,t8¯‡ã¡ã–V”‰bSE$ƒÒ°EF¼csFQœFËñ÷*‚@(ê×eºñ Ö‰,.¥e ÉC]íÍJImÄšÐs€¯W¨Ð ê È`8 ”ËQûĶ¢eX®J$–ã\‘ø@êÀ-ÈD˜é·þ&ãkê$&©Qu4õ:-ÅôÎd:ˆàÄœ+ñ\·Þnq‹ÅS`ÊSÉÊAÿÌì‹øG]R @[7 4€z PÒå @'X‡Mù¥âÏnìY>G"â,{—ÚË\ÇÃ…#ÝØ—5ûK..àí€ÊK~à|$+[~ eNë”ãå¼É›b&ÇͥƦö³·µ2¸ ˆjÈUuó4ñ+ÈO'ìîyÆM²Ç••NÉÚÜF-‘÷Ëéc3¹â>`bı?+ø†þ4¥Êü?¥‡Ý.{×wpý£ÂÝ[·*Ò=æRñÑ­åL ÿ¼@w Ðn9=Äxʸª'lõÊ1>¤ñÓ;OÍa€&5ê$V ´g3)ž5áŽ_šší¾Úü†Ú·_y(.™}Ι(è"©R]A¨úuãûÞïä,¤Ù! –„]c®È°Û°xq›±DeÛ5êß5—„%ÏÃnÁ°â’ #¸áIàj·\)tîÜk¶fNßzË Dym‚Ì^”‡ ¤IŠéHWhAžÉ[@€UE ‘ÈV¾ÝR¦M0KèJù½ê aå¾é/¸‘ ©OÛ¤•T9ÚueM$‚zV:?>º*á]Õ˜ã¯Io‚1*=•ÀŸdÜ ‚Ì`^n¨„„—;ò̆ŠèA -<štƒZhé•rÚÑa'S1÷Œ+k›‚–ã%¡WfUðÊi×_2 úˆ p5É)R¼I窼•pœ"qÉ/ƒ*Ü ´Û륶ï¾Üq·¬ÛgªC›A“š700×­ˆùœˆ–W#%=EÄ—¢@¡N®ö_Är|°ÛóR¼lØÿ'F½X7Ïål߯‚¹Tc94ßO³ûUžó†Ûòøù}3°’7ku¼áË£y;‚Ü÷oWµ¸^Æ]Ãí²62󟳘d,‹tçØË"©¦ÚD¡î¬-H)_JoþŠöG]]ºäe\âàÇÑÀ`qxÇÇÚ¯•Åå¹<ßo”§›‹‡md¯#<ÎÙ Î]wbÄïç‚lî=ˆÝ/—'kµJÉp˶yn°ªá%Ô´Û÷# p„­äõ&µ¸ÿ¥_Ow× +ßò™,5z ?¾1“|YÙíå&Õ'ø ¾âþí’>@øó{Z¼m.zÅQ*}Z“yÇXQ›‡ß‹m!¥ä8œØsÊ@ GÄPp׋w×gÏ´ùMÖÎ$ʈLˆÈæbï}¤1*ôe 2 2ᚈVº¦ZØì,{«p©Õ7ÜÛ*$8Jk¬‰ g’DfH`•Òæ«‹ÊBa|AŠÒUU>Yèê%4£¥e\ëÃM ÁÝ:œ¥is¶Ä]aˆíIOm]n÷Êþ%iQR§IsíHÝÔ,… ƒ’‚IË%mpë”×$³Õð½ÕDGÜîÒÑtÐÖ½]jpñä)Ç^UÊÑ:¯Õè<@%ã-ÅEv®‚åH‚V8&µ¨ë§?MsjódΈ·¸KÍuª?puPiÉ]A~ñ'…yiñõ j)“é8bª6âÚfYòKÃŒiqi2•Ô§SïvVWÙ <}Äñê<À×§ööìî6ÐTK%u2amÙ¯E´û±zT¶>]NVû´º@  ORu²åb5Fq˪ÁÒ›.-ÜK×%!0ÂË-Ò¥<JCKéìð‘ÄŸ]VÙL bKªÀ'Å f*z"ÛHT>ÇÆ±Ù¢œw;®ô‡Iª}D×§*k­Úe'wdÇÉN¬sn"æ µAVÔà%îÑB\¤+‚Џ~mlb 0,çíD$ÅHÜvJí-,˜¿ §JŠ×Þ+ø… {¡ÊŠñ jäG›®¥ N*7vEÄ]Rê)0‰-ðÙiðçïwJˆú)¥ Ó!Ž_zfx¦¨oÌL)NE—)AЕ¸\KÁô¥°Il'®œùŠû5XÄB`vK$cïEì÷Ú‚¥*“¡ )‚ÒÒ”‚£ÄŽ’iM(F3ÒäI ¢áʅܘ–¸w„¡1;;%oqx©/û½ÀÍ8^+Ÿ*ÈÅë–80H”c¦@!ñ«·ÄYVDû!ôFþ|Ÿ…I*~ƒCb‚•ã«;iF&ÈX¤@ÌHŸE È.×Km¿ ¹6ˆ$-…ªmTð¢ÓIy1ê*Hãï|5µÚÑ mª‰>x}ªÌ^G•ÝÜ‹_…/•òù‘㿯™¾Òy·{þ(òë/p·ßæ\ö¾vDö1„í–_ÄÜÆnxÆæÅe.]9Zt 4…¯ßeô÷´ïí-îÿ£q=Ñ k´ Æ$´!- Ao6¢¿g·Pc©Ô‰pKEʤu4¼¸þnÐh(½Q—Tµ©äRœE~ŸSü(õ —Ò¤©ÁÔ*M_QÔÄ(”¼(”´¬ ýÂO/Oa¨útÆÁ+Vx¤R]MTRiÀò#ò:lD™‘‹&7ëW#íüþ¼5j NJœ£¨ä”&ßTt“û'Èuxä°UÕ×ßÔ“ï…,´}•Й%:{Re0ëgåìhsBD£ŠÙ=Ò@¡¯ì¦„jN HjJ‡º*?ƒøt Š1¯ Xø){ pâ+À×X%`@Z¹Ì{Ëâ®4W°=ÈMr8õ\¿ |óŠ›Qê™ø¥ènS-P,(Å&¤«í¯¦€˜’Œ Df³ÜQâSO¨ðú¾½ {T?ˆZ—>ƒù}œ5  ‘’â°Tykdî\º yhœf‡ÿÓao÷‘^JO¿ÚX@¡!D£ö½ž”>ºüµ´í‹ø®R^or?löx?¾*n—ËæŸÎñúÍîÂ7ob|€rKv¼ZÉ–®,q>CO‹+ÆäØîd—W{TkUÎÕsz7ÅC”Ó/ìO¤ÜÇ¿í?ûwyx®Á3(Kó}À‚ùàAl Ým'Y¨TK%;‡ÿoï ¼]ׯÝÅØÿ-0‘6 î/~¶áùî:[ eq›s¾`:éêo%!J¡éð.OéŸsѾ<‡ ËU¸¡ÜD“ |àór‹6·ª©¨àîï”Vߊþ4y5µ—ü#?ð†ÇžaøþEœÇ¼[w1ÛÊù`¹áØýéÚD ¾9€ÁÇÁp†ãìI€ïââ•ÜüŽ÷sÅm¸~ohkÞU@¹›Ø@l%ÖY)΋H/o-6/ ®ÞïO”Ï’™öŠí>øÙp,³vwŸzÉmÄ·µ‚å7{>´øü‚å™_ráE·ZXzrœ—s|6 fзTþ;éghr<»­¾âóo¨«`H e¦¸’ ‚Þi|v´Ê¼ wÏûwØ7>S;ù¼ÎÃ̲y{·‹ÜùÍà7“ÙîI‹[-Ò³ •lÀ°±‘b–îXöj¿^^íÁ“&ö˜yÖ„å0Êy—l¾Ÿ}:¾G‹;MÀºX e`Õ«§”y9yOµHÛm•‹øºcߘö¿|…Éüeò1¿Úñ\M¨ÙųrpLN÷#Ë6î÷kº«¿c¸½Ú÷eˆ'O¾ÚźkKœ[‡)‰a –QÝó~[é…OrÓ³ä70—õ+ˆ21c¥¢dêhÉÏ—±Lö±Œ„ òþÝæ³ß/ð/¼˜Ì÷“xam–þí¿sñݯ²ÅòoÈ —ü ȱ‡[¶Ì~Û·SŠcøÆDÜ]pÑ÷Ù‹$ò=+uô‹³*§ŒÞDîÓÓÕ àÛi,bäù+>­#«8§@âßyU3||Æù7È»m;ÝO(1­·Ü]³Ê®ûÍ‚Y¶õÜ»1Ä2Ëmç ‰ã·eç7+5ŽÙ{¼Zåä+›&ÝpÈm£à!­–ÃO‡ ßӮŕû+8û7U¤êŒH”µ<[œ ó;  ÞMà"à)ï™[K± yžçŽû/`»Æ²CÙ-½Ï¤ªõwzýzºÜî÷l¾ Îá2SͲ„ªCVd,µ¶#¶ {m kEõ#¶(ã'FÓbf6ž”~i' ’OŽ€JÜÕ¤™\9V óOwƒÊ\+ÈL³µìÖóÚ6³7Þo mŽb¶ :3JÛëÎS Û|NGwÍn¬{p!IJÛÌ™îW—Â=O—ô£´9>ß³w²Ü\w`z¶ i2Ó\ âXj”‹õ£†Ö“Y”Iûiد<~VûúoãÓø§˜®BÝ[ö?´¶#²;¾-ŽE9uöóÉŽÜeàVY÷h6 Víy˜Ò“-»ŒˆL<Ú¥²”¥çfÓé×Ó‹,‡vËs;ååõ¥`Ôpqåòq&ëÔ¦ ©>V>õ?Ï2 ÛäúøÙ’ä)¿Ü¶Š}¾+7’ŒõÚÏxÆl9îp™§f=ÆN'‘Ã\–’¥H+Hà¼'¿;]³ÍݱÛË]"CL™‰‰Aú;·%FêtL€p Gœ{°/MºÙ{¦ùa¹öýyäM¢NqìÎ1œ¿µxV‡ÀD;sÊrKeš÷’Ü滋wi”4ÈC2Žú?rˆáÉ^ÑÃý0àxaºçhžë”¾±)CY®ºÄÄJAØâ àån;zã™âYE¬,xA»>&g?4c…y<þ±Óíø‡‘~'Ù7rïa¾ªé‡´¼·Ü[ärõavœS/jQa+‹:औ‡ã®$†ßßm>šöNónyZ6W½r"t 0|‰‘«Kgž¡‹‰ÙíçüRy½²Ûµ`ÜûÖW“â¯øö;,Èe`–<–äÅÎÿnÃæ\å;ŒÛ¯÷(ÍGt½A³-–¥¾ÒÛï!JJ@ žû߈Ùì7[ªvP1Û™ F1wˆ'©=N+OlcUÄGår‹BXmW\y”çy³ AQ+AìÿeëEÊŠ<uçݽ¸·oÌR X¿â¬×]Dù_å±¹îâÛaã5ÊÕ™M²]±+{v×ûÓI±Æ’ÖGY¤>«‹‡Ô’ÂJCG¨¤‘_¼;»Œæ9n«ˆ¨ÎÿF.Ä ãæÈÊPˆ‚óGæAòùâŠþÚ7WoqüK·Ÿq÷©Yáצoó-X½’Í·éÅq;œû=ÊáŠI™irT™JrÞ·›êœQßw SÝvÿ#Ú»Æî÷ÍýTÛd¬ijhùt@Lpļ|s*´àj®2?7TRùyb›Cæošxž9ç>õoögäÎì:î)ˆZ0ì7Æ0ŒÃÙ-nóe¹nFæÚ܇rùþÀî^ìZ”¨qzâ·$8Zwµà>£îkþ½m¶nÁm1ˆ”aÚ¦<Ý,Ày±Q_§¹>r]Hm»¿òkØŸ)3Ÿ|œÞméÜë´mÉÏ1kÖoµ1níxçãã2¤Ls¼åÙ‹Ý-ÅÊ,nîóÝ*ÑäžÐCÍ7&Z]¶úaØœnòú¹(Ûn©IšF5×:bàë‘#ƒô8•ƒi¶„ˆ“—û”ÂݾÚ0|ƒò~+¼6=áïö=ÈÝ»¶ìÞ Æ¸mÄoEØvë¬H1!ä7Œz9’칑¦uØÉp¢"¹ —ÒÞ3•îíUîå)™0õ òÄtÔGïÁ‰gh¥Ci Y %ü0„/çË«tw‡ Ú›ïˆûý…m†àgV<Ѿ<œ“{ÜÜ_üK{‡`µg ÿ§ñvúZ‘0I›#køVT Éš¶Â_évÝ¡ØÖß6ÞÈFdDO×&Àø ¤AüC0öõ`¦‚t˜}¸þÅi·ú×jð§Ì\ÇÆ,÷p.÷œC{ ¿ÇÎàZâMÊÓ¶¹ƒn¿æ=ñ¶è3²‹ ¶D†Ld¿‰²b…¥L6ð🨿I¶|?ríö–n¦8yÛ˜ˆ3ÈDEãN!Ø•Wüúo¸í¾/‘ÛnwqªS2²Ùé6Ùª:!XþAÄŽ¢dä­µZbA*áÆëø+ó)Ës¿<żšØ]ô°í¶C¸{oœîžIcÉ1|ʆãeµ8ÞYÍ"âŲ`™ŠãÑ Æi&}mJ.4†œ³´ú/ô»¸ö»®3ˆØîv¼”+&6›½MD0óÇæCˆˆàìASùzgàª_šùáò”Û‰P1Ãÿrþl\ln¦Ý¸[Á³sàíÆÕ[g ? wjm×Kƒ&ÎaÙK$ÜjßsIKÌ—ý9í‹#±ÝCs½ßH4ì3ôëÿ—D‹xÈ—Ï"ÁcoD0$©'›[wƒø‹ä6ƒàyÕï-Ú êÚW}ö¶vL¶ÿÄ–|S*Ÿx‚,·gS fª¶€üy†\1d¶Ó¡O4ãŽrU¾œí8 Fî$Ê[+b%X˜¹ Äž­˜-‘cˆ$×ÝíÄG—&SmÑÄvsÅ/p/-ü£±ïë\7æ\–C]¼sÙ­ìñSʰµîŒm¤Ìs;æèmŽöá“,ΉŠ^²|gʬY³R¢&2%è­È—ùÔIZ ú ŸKøSa|¸Í„öœ…aÄu›!1àòø·½ðt¶UY¦&3z,ø¯¼Äð·É=ñ²mVüßüˆðÛji¹[Efß&íÃv¶aW›ì|«¹# ’õ¦&g?º§ðÁožõ¦J[Œ•L.°ã×øO§½©ºâå;øÛþ˜ CÕ-9üÃË€‘:rsšš¶”¤ês@Ï•6çø¥æ×‘Êñ÷w¶Óyñ¿ýh¿f÷„™ˆî[×–°›6?f¿æm`9ÓìbVé7Ó ²½ÿöD³IŽ;°Ømâã4x.Ìí×+ºØï63óJF¶°ù@s à50ýì2Äb¢½½3™Œ¢}˜ä«æüù´›cç6ámo·{±™¾k³Y^ÓÏß~þàîvYaÈ2Ü~Á—سÈ{k-¬JD‰–YñmLÛï(u¨åš´Ì3K•ìîeÍÓT8É~L_¨uLù€–“§8ùXü¬øáÛÕ ¶“§ÁÕ…ò[ ”ùÓ‰|¸|ÛmÑæÎ`Äw#8Ü Õg*Å,ÙAƽn6ÁjÇœS–ý¤iR¾Þ“,©Ùf4ÌE¡)yv¹ÿ§\%û·Âì¥ Ü¦§)ê¨il£™“¾2‹6•!\|ÏÔ®žRù)àÇ…Ûã}ñ^ß´›·æžàm|Äc[íºÇzeìž3iÌ£²Ê¯Ø–Üâø¾)”ºã¸ëïò]ºL“ð÷c÷éÄŽÙÜŽÏs²žîèüöJÃX~¢ˆ,øŒ±Ã_–¢±¤ÄÈø’ßb˜y¶Û‹xdzþxxÓ—fYG‹Óqwºc{‡"Ôöäì¦è1*ï V—?fCîö¿Å±é°Ú–B¶™ê[è™ç9¾íúo²«cG7ÀÊRã¬ÀÆLeYǨÌ`C³†—UÝl !êÕŒOÜŒ¾.l¿‚ÞUxÃåÆâBÞÍñn§Žû)‰e[ƒ˜nãqv÷böVý›ãùÉ â“r£8³bs0 ©yO–~2;L¥¸%çÂQºí?¦Ý±Ép×Ý+oŸ%ƒ™W9úDI”ÄH8ȇ å¢Ûì6ÖW)Ößa?­R G’#Œ»Ç¯"°«~çùbóÀp+å×i7g=ÆdX¬»í±ky›4| Ĥe¬w¸äÁ†ž·e" Á6w»ß—Ñ!Qºû#³6û-ÄZÑ¿„<¶Ï.åúKýçÅ;ò›X×(ã¬uIöæïçÿmG™e>bûxôž¥ÚpÛ Þd”Ð{®u9ûÜuóí°"³óU/¹iá1 Äµà‰·™bSSX_T;øÆZH ý÷›¨šZÃfµ †êÇ¿ï'Þé¥EG!ÃXÒyIÍtv,9#©AIZhªq#ü€êŒVFXõQ™Ñ Nž‚²F€ûkôêÄ$š­81`›zT@ Jê òxð ¯iþ:ÂdšE–YXqˆ T]q"‡ÔÌ~®'S-¾‚ĸC^èØ– Ũz^t<¿‡ž£Ò(§®K‹j.<Ô+Äž^¿O=ŠP‘”ÀèœC ôûO?]²C&è[ºëa5T‘J_g u dÊdõA éZ 8‡µTÖ}L0 _y4>Ã_ÓÃJd篺Ÿ{‡?—-C¬b»&Z즄À—D-ˆg){ssÔNuôô®–`Fa26 ×d¸*jE8è =A|§G?N±²PJD·y€@Ô¥’¸tÖ2™®dê}Фê B××Pƒö¯ÿÔ‹Ç“Ó o¢œ#©aµêH>êx’H×–¿/w0Õdc,ÝrúrÅK÷;Áø[ûòý²ùw´øÕû6½m¦æîfäþ6Ûì]dY±ëQµ]ñìß²D„Ô¶l˜®5qŒ»ÛeRe%ŒÐ‡”×Ðý¿Ù›ˆö>ù8+-—!\íÅÝÀ/ @F-¨9%õdli¥¶âÈ|î]yw€íþíì £¹ž&ù¹›#~ZS9é{kß1Vn=Aì^­Ö¹ñ­×è.%)JãÌfC$t­pÕnê-Çnc¶ÝF`‰3ãú}ª!º$í'›~Hç»áòð'È/¡Ú‡˜7_%òý¿Árضkf-vÝ¡7“ç·E‹79V¼{ã—†".é4ˆéf<ä´¯iîK©çû7aÊn«Óº2x‘ˆ?ÀûÀ9vÂ'Le,×[žþ4ÿ·ÃÌ“b±Iy±·Y}ú,–«]¶ +·v¹Èi°§ÿ´•¾çIK§\)i Rsµl¸v?#*ÜÎ7ËìÓZÊ¿“&ñUÁâö5¸ÛQ¶žØÛ™¸y½ÞÁ‹âíZ™Jîç*›69±È`2”­‡ÉZžê”´¥)IJI±ä¹ÍÇxíöT ™Îáõ?¨f|*£ÈÛ5j>Û†î/ÌûÛÛC®mw‹øn¸³£:ÛÎBÉ2Ë?Íãã3Ë}HzÏŠäÖÛ‚BÜ&·"ARýÓêfâ¸Ïk Z{ó%¿Ooq˜lÔgæé€cÙ6Ý|1»›,I‰ ÁtHÊu¤º´Æl [(&ΩpÔwŽûs¶ìþúIõβ}ú ¦ÒEP÷*‡¼^9í\m±eÑ`B2c¡û]Ï÷ mj“; ºR ‚—ATÐPykç^»9[ùxÓ+% ËÛâµ±ºr°â½#ùÀɶ±ó¥°Ç¹©´Å¸ø»´ñdõ”ަU”njVž4¯SJPçÏ^çõ‚s„j1Ï@ýel7]jÞ¼.ÂÏÈŸÍÌq„0›tϘ.Ý8çöTðkÅÖÐêˆÄÆA$ñ¡ÕÞÇÜÝÿëÍݤŸR7ÈüµþÕ”–¢^Ãû{ñçgðk/þÚn,ÖÑpcz6îÕÁ¿‡.¦C[²úJR÷ r5×p\Ï!}ìi²5Õa±þøH„Ï©×R"üÄ'Hwçç•¡‡§]><ˆñšêq眗âæÊ°Ë( SŽ)d Q4ãZk½ú³Y—3^šõL˜ ?,S7?:—|Íw;Ç9Ð<>Ú™Îq”xÍç&ÊíüõZ·7 ÙÜ¿yv—/Ú‹â,i´ã»—%ƒŠJrÆ$ËV*þEf´\0-ô¹4Â…éûî:îOƒÙl¹k%G% ¢%(C!„±|t’|z ‰”e„™S#~`ž;Û¼ɾ^>5î=·zóÛ6Cä¿’¹¶+n!äðbÜ, gn0%νä6û-ÝœVßç.o²äxH’ØCëš·cé­ßl;_³ŒÛ[9Îz¥+$4ê“ ¢åƒ'ít©ÌSQˆ)&Ãc°°ÌµæQ%Æ[R^=LQ¤¦‰£G«¤ŠƒQÏÓž¾Pî äù ý¶™< ?ÎÚuJEwzéFØÎ‘ðì¶€òV ›)t¦9BJÁl•W׉ׯÒkæ¶àŒ€ûÕº_õÿqÆÄ—ò†´÷K~.f!*J€¡vÕ²t¥Gtýû¯»ù_é=¿Ç_¡ÿý1[«e¦÷*%#$Ý̯cžfÜPÖ€uèWÎYèjùËn¼;ˆBã;±›*;N-)I'vª¢ú}ºàþ¹Bb4ÛT^`Å+xZQdíæÖ+a¹ü”¾V–WšeV´ù½Ëi³Ò[ÜûÉŬÙ<]V¬öê£|.æ$‹Ìm,»ö×?—W;äÕ€aØŸx¼¬v X²ñÛqÙyQÃC­µÝ°E¨+ ÷›F¼ïþ<óþK»¹ˆn¤LÚd?ޏ%mdedœàËó¿â>ÑmýËÇL‚eÂÝ ùr-s—] •´¾Ó½u$¨ÑT?^¸þúî>RŽòÚÓ\ä+ÖZe¯é/ÏN[¶ûù}5A*gåÛµ¨BB©Ô†r M)ʃ_I}A®ž+Šõbàíà~Ь_Œb‚³Ÿ9 <½´ø‡ò¢ò?Áÿ!·{iv/-ÚÙ[qºoíQxÄìðs„â;z¬.Ñ–®Å)Wq…/Êma§„Õlu¤©eДõ\Ÿ0xþØã9-Œå½. Ñ 0ɘa ŽÉèª2ŽL¼˜Â·³ç ºy£Ûï8|´Éoï[®W×íÖ­äÉXC; ½û½úñv›2ëÛh²Úm‘œ~TÉo5†ÐTµMy§õ–å7lö1¶ÛÚEŸ!æD–’@U(îç2c%O~N›­oðsÍýÈn2š‹´›âÁñïwcÊq ±»bÜ)âã7»ºŽô$1ŽgÑí’âjÛñm—ÓÎÖßdwt¬ç} ÄÚ»N’þܾÂßQ¶Ü dQ“È]¾ÍþHËó«t0 s˜žã]7îÇãËþñ.…¬í¾^Ö9äFçç¶—Pìgn0ðm¯~Ń?1‡@7+ÔÖ iö‡¡GŠ ¿ßòZØÎB0öuHý€GâUÝœ¥>ªçyy…`?“9üí¬ø„ þ4gÞ7æíÛ&Dn]®7ÛcÁ±]«ÚÌ’[e˜)¿ç›£œa8ÇÂ8ázC–K²ýä0꛳Êq´nw»>pcMpÖGC((>ùiÜTÎ Ê6Œ€uçÏÈ6·Ù>i;a»[Á=¥å;ï?w ¯0»¢:\Ÿº£`¾\ã¸ûå´ö.9mñ×`´[¡vUÁ á×)Û|¬nîjëºç‘ê#ñËÞUzl{±9 ¦eµÃ óóÎü{v-µËãùK¿—y®Þ.ɼÂÊ÷ý•cÙ(~bülšÃzraÇ?xãÐ¥QJ#\ÔË·ôòWU\ä·ûßïªûÙN3ÃÅz}¼’l»ÿnŽuŽå¬¦×vòË\u툴OK Íu»~îmþGs¸Ø¡¾µËbÜö5³ÙÁöÛ`8ÔÀ±V¤¥ozaôî#~úìs͵8øé'ãíV`ÿ“ófP_å÷k„–Ïe3mªo‰{Z™¤tþü _ɰ è€kï«yê¯a[?é½ÌAùDì±ПNÿgö¯!6+gp9¸Œ›Þz'º®ÍY¬~…”É*P¯U*ž_n¼wžîF¥ô ä‘ÃâµVîeÈ{W·ûœl^Á|‚<ÐÎwbÑä6„yïa¸ZömÜžf%æ™Ê1oZÀ?Æ÷kBSts¶å.D›u‚Ç¿r‰Q{o/^ïØ7 ûRË·ƒP;‚àÿ–¼þ+q³"[reˆÀ(mí}ÿpçŒím–; h¾a>a±Ü·Ã\~ú»~Îî–Ð39·½lw»¿a…ÈþĦ“ß$5cº;%¥ÙîHØó»cÏpû¸qS’®²#X:Dtö{p= tÇ©éüà(ŸŽöÙŒµgƒaE£"±IX¹Û'ÄTÄ Å•ÕļÚ.Vù1Ù™{= C¬¸´:Ò’¤‚¾Þ﹘ò[þ;”õ#es!¤ò’Ø¿÷eðp¸žVÆÈÈ¿¦N>ñú}Êë[î)“my-Å@U³¦ã¥@C¤¦ZA (Q§zU@8W޵ѦQœ²˜Ò}ý Òú¿0g!­3½âÚ2ñµ~#лl’R‰lŠóøwGYœ‡·^©ô?¹‡kwæÊ­Íºxíáüµ¯õôçþ›DG(ø•¯åunxû Û_˜|3øx²Œ~(ù•BH>¾ZýH2óóÈXù±[5{’ê§:ÄW…AÒ§³ƒ`qO‡!2CŒ‚%ݵ$w J…GGPžÚQ$álkÞW JGó /ˆÿHÔýŸF«J‰xWa¸¬›‡n ¯îªý<¿økrL NLò_m@ŠŠñõûÛ¦Ä ‘d ‰N¡²MEôò<¸ý²XÕ"aãÉrM 8zƒèMkõjDH*%`”sYfRP®Ÿm*}£ÓC(’¨…šNixŸÔhO úúiF²:&‹õuZ:øP¨WÄþŸn°{Ê`Œ F㼈ù}~ŸÍ¦F)ñYjMög"ŠU’ìFà3+»“J“@H>¼øD).ç¸ò’3HqJâ öý^”Õ˜UŽJ—0+vÞqPð)ÄWóèåT%š\7Gªî'IOíüD¶°V#¼ž ¨¸¼yŽn’vÀuM¢R´I ¿æÕyVÅ„ht”ZNJ׺ 5å}Ÿf£JÇ ã]K`Ê_ÿՃ؜2­áµ¯Ý-²:{ÉJ©Jõò׿/$4[¨ÇûW% 8Å æy?çŸX=Ãl¼GÜ¥í]šå¾–mþ—XíÂfO#&´bð©XÄæ®¯\1;ÎßävÅÄzçl›j•ñr­qÜKhq·}×éÿÔÈð|GôÛ-¯ÔÖý_NŸs‚3´Ûî}:È9:r“ó0ÞàóüÃåËòûË·Y mç·í™Í-»åÔ)̃,Û«ä[0{ýúd…8ó°ëêJ‹4OJ»wŸhïnüõÜ'=à/®UbOŒ¢$"O´„ómRóúqÕîUÿ8¾ù9æ¾ðBßO+s'r;½†ÒÝ Ç¡[âcøFÞc1U݌อ¨ö|vÔÊ’ ûh/ÈZBä:냯\oyýI;ø½Wj,Á°x0V»pgå|°–ýî×ÿ",÷[`rHØîàc~sáöHN̲Y2k%ÒÓ³xÏ`Êñ<É ]l9“Ù.RaN…*;­?B…¨¡ì¿M7“bÛº™cù™?_ܬuÀ…l€þߨªfËüÏü¹³áŒ»ã·‡ÞlFçdvÙVõoßmNPíãüA™MI“ƒã¹N}’b8„¹·n¶ÕR"%®†Û×[ÝœºÜn¶Ü~ÒëlŒ<íÕ‰$êØ‚ØtÄ žÔíVâà9Iä.èã¸ÇÛŸ‘Þò,×)·osY.EfÜþ[ë|̵æG‰d3g3t¹™lˆ÷ÉD¶$)¤–•ç;®ûÛ﹪¯¾ºî¦$ÆÇ1“‚ˆÊ'pÄbcTÜ ¸‡F=ìù…y{å|owsÃOãbx’ç„í.gˆm>íÙ3Í›²]![,Û{œÍ÷ºÙ¬-F…d„„GzÝ"  •)‚ZGOyÌ÷ïÉqamre^˜å7—̓tÌ+_Y”’[¸;‹ã/lÎÏo£ïÚ[¼Û0m÷DzL¿fzfڤȜ«.5˜aÒ'ÏŒõ  %ùOCr4·ã.u$£Å»K’㸮~ËïÙíî„A[(ƒ¨HL(ùƒiÅÃ|)RDl2 òkί0üÕq9¶ôø£â;¸Ù´âÐw³kvçtñýà´ãØî@åþ&6ÎC‘ïVajzÒô—¤¡mÉ·¾¶Ø’úYS%Õ+^ÇÜÝíÂs›!FâºM„3A‹àI?x8:»eðœX²=ä¿2Ï2žÚ ÞÀÚ¼ù\P $àä>€Å–BÃQ*èù«óEó×ÂmÝ´|¿q3·¾U/c0ëþ³n˜[hænßË3¬gË•µÙîx%Ö6ÙbV{Ú­vù7)wKÝ̽-ÙÜkáPϧﻇþߪ-å†Û+ˆœÇÌHÞØ°$’z•fVza‰r±â?–þ>ùýäâ”ß*Ý‹ÁrÍírïm·oŸˆ–§öç"Æ.Ðm³¯ß²;L)¼Ì²[¾OHŸ*÷-˜]NCÚÖNßÝæ;M× êÊQòÊ8fã½½…5ßå”UÆò =³uw£jl"3;Ôîæäí½‡1el-Œ²Ëƒfwœj×’²äTü*›¿A¶7)%°CµO»M|ÁÞÜ|+ºÛÓ=TÂÉi>!Èâ?¹¤Sd€8:.ËÜ;ÆßÆ]þÖí–òæÆ8.îÚ2+î<Êm!¹3í¸¾U‡Ý¤= i o¦r­BÒ´’h{g}²â¹ª·ûÍÃ- Ê8õhÊÇL[Äý±}R€ê…~G|Î<Èó5‹ß¿ üvj¿c›cžcO»öÂÚXKu¾àþÞÞ'oåâÑewáíÔ†]·É‚ˆÂ•E¤Sßùÿ¨ü7/Ã[´º­¼¤k yO•Ã<|ØÓ1‚ÙÛ¸„¡(«¶Ö¼jÚíÒ2MÁ¨­% OJ4ý(BRŠ”ƒÕê;žþã)°Ý´4ÊYÊÈê5—Ȳ·-ʰSíÛù…y¾÷\/0ßÿ ¼AÝ]øÅ-¸.1?È®#»V\Ï9İkû6LÒˇï1‡ÜÞÉÛ°®2Q ¥ lÉ ÂD5)‡X_+ß7¶¯ó›M½¶E±˜‘q $9a,Ù¢7Bȃ #žKó@ówv»ñß+ð/åá;cpk‹|FÌïCÁ¯¬¢è†²lR@ò)_…dEWÙªvXJ–©üGx>ð^«ú©Ûµñ‰·g²ü´bѯD„y ~Ó×/š?^4°e-ñûϯ4ü/Åáè_~,dÙٳ̱ܷKt0ÎÈ7çav•ؤÞq­âá3if[L$5#ÔEc¼]S(Pâ»ê?mv¡º½¦ÏgÍÄ­Ó/V@ËV™K[i˜ŒwgAU±‹°)oŽó£qÞÝ×¼-ðÿØ'A¸ì~3·{—mØ;íîá{¼ß$e÷,%ýàynþ·îá€Ì[´[RbEa¡%.w)s=ñÚ[îäÛóRãv6Å´J5’äë1Ö ˜v DX¤âñ;kÔ :ymçǘ>j›.1ä'ˆÀ~ÍgsÀ·kÛ Ù±n¦ßXºÚ®r­˜¦Auß<†ÈÄÖøyvÙq™iç‹-´ã¥Íz/#õC„î.*TJ;s~– Êò-ñ|NøÈ6›öoÈ¿0¼7À²m¸Áí{m½þ;n•Ý3|„‘¸»Sr¸¾cªeÚ×­Ìjêú£!Â`Îj+’›nCñÞu¤)<·m}T§`w<&ïÓ³`I,£³ô‹$Cr"Lxø!îây‡äÖðb7œÛMŒØï6·.ìFÜ[_˜¥úË’îE±¥%ÑŽç…•d¹NarÃÓ)%Áf&±ÊóÔvÜzðTl÷q{]¶Ú«GœS &~ÉÈ“#𸱠ï®1"1ê‚]¶¥NíûÖ $.XЇ?ÖuSŠÐ¤ûÉR"ôטìyݤwU–†¥«7‘p!;ù=½žU|ÆwCeo>O½ŠÊ…ãþ۵ÛÅmÙ¾=äÉ•FG¸9pȲœ¡w ÄÌÕm„.²â0ßLý¸Œ”¨¯Ùù¿¨ŸÔ8ú"%h‹a×Ä—'×õ-¥›½p)Ós7Ê+ïˆø§Ë®+øâ#–'–Øí®ÜÀ”Á‹Hñ cùšìÔˆ$x ÎñgžYyû¸8†qäuÎËÛ+*ì»A³ø; Ú=©±D ´`˜d'^f$1oŽË’d=*sŒÆa•¾¦Xe ê{Ÿ¿j¶·ªq€ˆhÆ> ‡à“~è x+%dù™yKãÙdû³~x{ÛÍÃíxð¿žm.ïd7½æ³[q©«Îî\˜;ùe·__ºÛgÍ\–[‹‘>JÙŽÈ}i;nÙï®7eǹÛm %$ѓ̓<ÞEÉêÀ%€tÊw1…m¦ 6?ÛŠ¨–û¾[“;•d®m¦´,ßDºÚ«nAgÛÜ] [!ÀLLbÛ”d¹…þ49!}Á&å-Å>ëŠë„§Ëû“‘ãwüïæè®ŒŽ"!¢6DŸ~y­Vâp²ÂC7±X¼Ãæ÷å ;?‘ø©jðåÁqñ«*¼‹®S¶—]˜ß–Kåé[eâ>AsS~J1&Uþ5ÆÉ æ'-fTuC`6âC-„û?Þüm¤ðõ§³CèÔ?u¾ÒÏ"“)…+ï)Tý?IãÌh}ÆAG­aÌà°#ž\O©æiZNºƒ)ÍÜ% [Þ£Ømk q øj½ž•mªL¬V/´9 çq•ÜABÒ¢¸#<}@Ô×8ê Jêä#0ÒZsáþ]g£îXo™Á|[R@êJ…xŽ E~®UÑDCd6f\:ÅôýcAªG©_Ãðêt€ ’Ù¬„“é¬ ,èËnžCøxÓC†(€É}Ó”¯·Ò•å¡%bØ#ó}¿o¦—$`±ÉlAÒÈ‚h‘è³Ò}Oåþm,àˆKí]iÇJ1ðL+d’9h B8È®jÐèZŠÿÖcžã¬áÒ ¢A  ”û.^ºüÏä«òêr!´©ÉŽÒ•G™Bʨ¤õ!+#Þ«‘WOk&Q‰1‘ØÅ½«Yv[Séî¹:úGº{i¯=‰¢T†­Íñ,,?j7ò•È"8›,Æ-­¡§ËN!°„„šôŠúñ'ëÕí¥£óUÊòñ~ª+Í'ŸóùJ´^v'Ú¿ £l6C{jóÚg„ ª5ÁM¥×ÛS•=)ø¦V @ª¾8ßl¥ª6HzçÅ8_­q&EÆò™É†´&åï:»;èoL©5= ·ËK¤’UNÔ[)Â~¬d^J=žÄŽÕÙßo8ÆŸ´FB[Z/v´h¢Ë‘û½Qœp÷QÜJʽ´Ò¥eþ‰þ,˜˜°¦;kn²Ýq'£®Ý CÖ¶é%Iަ˜uFè@¡©ASjWçå¦Çqq¬ý«"p9ÄÇíQînQ"´Ûrâ?hœÇ`Sâín ºâ()ÝcÜåçåÎ[^à ñÞ’û5J@æJ¶Ø×eÉjaÖ’ão6K‰W¥@”ñ‡ç×ÈÂ_–ŒŽ§CDˆÀ';½†ÔÒê-ñB‰«·Ä”ŠõN>Ís±ÜÞ¤m’´IlR»hCqRŽÚ¹ˆôãÀñô«"}g>*ÏŠí*ßkjSÑ#¼@•!+’IàAiéË[J­²,c2 X‰pL_…ÛÙ KdÕTR”Òƒ™UjªP{tˬ²@L¢NìÊ|·¶´ëput°©$ž¤€ (9i»{L%f±ÚL "›E¹£ÖÜXí—* Kiªk„Ó?G möœì)šð!8Á¶ÛœWZ¡EYJ5m ðõ$ Ô×·Qm–šÈIž•’ÀcY–Ìoü¾!¥Gi$¤‚Äq ì¦úKVøb¿y=´„‘Z¨sâO³QÎâ@ZN•'*™áö›–5%Æ­‘ »z„Ƙé (H=ÁÃïPq8ë£à¹KöÜ…1ÒÑ,3ñe¶h!ø|IPúŠÚ’Á+JJR¤Š°G4òãφºNFÙÕ½Ö&CõA¸À`qPk•ŠÞÂTãdò*m¤…uÓ…OÑN~š»µÞÛ)+ Ò«¹ !%ížÛ¡]ô¨…&´€š¦„F»-”õAÜä€ÈĸH,¢4i@¥†Ðz€Q d+¡áÇüúÜBùéÝeÑñEV‘Ô HRºB)â‘öñ©?Ÿ[ì¶PÀ²0LCÉ0^Z*éMÜ H­E=êŽSZúòÔV1:Ž(_[4Ék‰m÷D¨¬º«eKm* “P¢)À!\Ωïk+™ ˆHâ>ÚÄvJe¶”ÒÇ¡)Pé#¨%I<Gn’n•µê2$•˜í\î–‹<•-K}ôw›Z› )*éЄ!UéP²èÁ£3† ?>½Ûa¦ R"2‚ÂË.¡==ªÕ'ДR¢¾Ý%ç Ÿ9:º¿êTçrP•û5±RdÅŒR•t‚C‚‹hú…uRžÚo¨Ü\i‰Ô^'îêŸ ytêè»@‹  Ê„6¨nö‘Á%Fˆ4à}áB¦£rl–¨ë ÷¡r1ul6oð¦dË‚ÜXÉKÈ ,6ïS¾Ê¡5(%zË^-Þôî4U~³¨–=:þÕ5ÌÖH%[‚d[àOHIBAµÉð)RCŒ(ðअ^C€Õ®Ò䥺ØKmlßqKã§÷~ åÿK­'#µ5]êÇ)ãñëû~)sÏ:¸öÛ¥y¡øeÈh§cˆî•TÑnÆ)¯´¢ºÞÙ§ÔºŽ’óGÜsûÕ1X-7E²ÅÛ³Þ@ê~)U¢àjIªr¤ŸE ”Ÿþb5ô¯üeïéüï!Ú[»Zô •Òê$ú•jmq ŠÑ÷&Ç×ÛUºó+Àûì?¬¨“¯€MxECÖ¾ßf¾á3 \?§æ²Z¥ä%5JÁæ}9B 4±lbžiWD¼’ƒÀ…þ ž\´¿ZbXäˆU\£¥±ZziÜ¥ h¡è}**=4è\$H*½›v îØsÞãÄbŸü¼éM¶ âP ¦F¡ E$<:ŸOѬÔ1Å–!Ôº ksÑR•!N6¥ iCSöëKm¶ÆÂu èj§nj@Ä'xè‹¥”-´ŸÙH #™áÀê¬å9ù‹«„!å š/ëÌ.)õ(P• Š$p#V6÷Ćj®ëoeY8.°,öþšôu¬ ’³_à<‚ÍÍÒ?3Um)€Â.Rùmò˜[+SAIMÓÓÔÒ©@¡AèyéuÝerûSn¢» a £ [#´\CÅ*éQMk^ 8zý¹færcF­PxÌ>+„»:“ïÆõ(QåÍ'ÛÃL§wÒÔ­ÆÃ÷©û/GI ‚àA ƒO¯W58pµ¦$#°ü¹jˆRË4ãùÏ¡*@Y¦„£lO¥Hˆ¦F$ä³ÒG1ù õD"Fab‡@pD+#@t¢æ³ F¿ÿר—ÚšÕIéYéêà”ñ§0yÒœ5ù«½UL6Aqu|îŠ`r<ý ¸Ô R•hG­9k•›qÁ[9qt¤…Ô= I"œÊi@(8pæ}º­ÅЀ@1èš×¸°((R¤’®t"¾§VÙâ Í@8àà¡]¡Ê[ w{/,6àfGîúÒHÿTâ’®<úugk¹¶©Æ:‹?ŠddņkÐ|ÄHŬy a†Äw[ˆë´ Á´Ïµ%¾áR„}g  ›=R|²‹+Gå‰tùu´ ½²L4»ad­)poµ<Hêà…'ŸpçÃTçL¥?) !ðu i¨ð¤*,ô-,Üľۋp¡MI–ßWïRK‘˜º²¢Ø¯Ýx§Ðiò€„$UÆ1ÊZMÒÓ~·8ù†ä>̶R¢®¤"kÆ æ‚S×Ò¨ï).(vŸf—`“E‹„AÉgK­N-sq ’JÐú#¼å‡ g¸YmÆ•ÔɈA5]TÀ¡<@Y¦ Ä°yf¡„˜‚–âí«Ü;æ8Ûjl¹?!Ø2¾†\…=•!¸ë%@ô0•$ÔŽ TqËN¨t HSN‘ø•ʱ×ñKï’ßmû{ʇtS54PïN =8×GY$98£È©á ‘j±LGWf%ÈÛg¾WÔPÅÉ’Ìb€z’ëZxŸ^ï þÈû¾î¼Êø´¥Šs’á?M·ZPÕDŠÐrI­h¼>½&7¹#„[*[+Mº’ÚÐ¯Û OI'ØåÃVc?NÈ[Ô±Lb¹Áï6uÚn÷ ym¹:Ø'ï7$û<)ÓSA®ßwoæ6[]Äq-‰÷(º Ç%ºÅWK‰¢OIQÖ¿HÛ¦l­óU$fì‚YR²¤ÓO¼Iqá^']×v£ $Ì ( OvžIªº›_Bê(@Tx‘íâ5Ò@e.Œ² [¤‘FÕ(<Âz‰=`u*‚§¤Ñ5îñVé™b¦Æ8â\.·Fûð!@õ¥4©âº!£ŒžÍ$¨”Kû1…-™5ª‘ïp­8,HæçÏEtE•⡈DûsÝa $%/!5¢‹‚‰p“Äiôë[µN²<À¢rX7µt'¦#…D÷#8H©X{ŠøŠR‹áJòÐÄì1Â_‚Y‰pC‹•Í%n°¢š<Ò’éQK½@ Í'©'‰:‰BV3ÒReƒ„4šâJÒ VÒºJ¸Ž’•Pq©ú}5·ÛD œÔ{WeÜ„8„€ÔÆÃ¥#•W÷ÁéæââyhKÊsç‰û@ŽzA Œ›utì½i*KМC|¤ï9Ö•}âPÿ|:†¸.éÚú´ÞÂCõ%™ã€WÛB'ÛäARŠ“vŒ‡˜Q!]2’ ±—ÀPåQNN¼‹‡ä%ÆòÕJE«0Ÿ¸œÀ¶>£uD·sýèâ?bÍ¥2$*m©À+5* 6iÆë©HG©ôu"”ãA¯]ÜF:*¼”[ߤþÅÎê?º0S­¿š™j™`œˆ×†ÂÒ bãUФ‡5âG³êÕÎ#‘ÜpÞØØÛ§w·¾Àûc! °³Ô ÃuvQ`òÈ~);ЗKŒMIK¸¶\AÜqµ¬}Õ i¯Ôî–ÚsÜ7ÌñÓ}®êˆY¤ XÿŠ'Ë!Ђ›]\öû‹hº8ÆD‡_qéì]•nЏêy )UjERàÀWWuÌI¥’i¢¬N'àÜ¥RjGå_mu:¢z%Šå±IÝa⨨âAW§|©¢‹f†BL_®Ú‡XR¹)Ƥ§—iNz‹›O±fÙõeŠu’Ûn‚…Σ¤R‡ëöW’Ž «V× àF+„bënu'¤h=¾ŸÃ¬³I‹¶)uëÓÑbkT¾å:øô§¤ž±Ã…=Iá ‹2+ai–¥¼y“˜(CÉYeD%Òª}^•pût2„$íš*í¶,'¥I¢ËaI!4óI “ôƒÌU”d3W¡(‘†iYŒž´© s§¯`к6ÃÁÎÒY]H^£é®¤9,9‘’C-×¶†Êkî€)ÀqŸ=6Ži6KåÀ(þë½UêW"}úTäi뫱°F,2ZÙÔg"Nku3ÒÐpž’ IöþmnF$`‚[v†¨œRT¤(БÄð?AÖH¶!D"ÒVêJ’H&¿H?•4ß$b¦Íh’ø5Háíÿ&„é9•1ŽA(iniËÐ*@e™rJ¼“ÒEO¡Òñ|SX$ŠmÑÌsöæÑ¡UÛÿÚî_þEýá–C"¦9?ýqŒÿÉ¡RÆ«Gù–~æ”BÉÿ똿Ðä_Õ3£DéæÜú:ùþߎÿ½1­O3œQ ‚pƒÿsþq+ô§Tvy[÷ŠˆeÎ1ý$ÐtÛ¥îGÔ*kå/ÜÚÿè2ë`êéÿs¾ÿ¥Ö«nÛþ«ê¤è¡òw૚ðŒƒû¤oèýZµÉ_üÉ«ð꣬ÿyÆÉ­?û– ÓÓ·üu~…iûn‹%˜M¯ÿyÿÄŸälcòróÁzåù¿@ÒÇTù¤†’¾ëßø¿—­½"/Ùø¬BæéOò´þˆ†Pø¢f!ÿü½šæ¹Ÿöö{Ñôø«ywoë¡ZòMÏÏg½:9)t¿º~¯Ô5K ÷,9Ý ùÔýkþRubïä¥Çæ(k¸¿õ?åí~v[/ýšRÊHMtûÃÿò´Í§ÊUY|¨-•rsÿë×sÅ~âTÎÌúÙþ¨k¯˯ôꕚHƒeþdÒ4ê˜}ÊØÌ§Õÿv{ê_ÿoMϹ³P7?¼=ý*?V¬Kùc⇪#Yÿº³üwúu¬Û>jzŸzÒå÷.Пå#Eó©÷¥K2„·?ç“ütZtý¾rI–{ùÇÿ¦_òέ×órY]ýÒÛõLþ´êGÏg¹2}ÿŠÈÿeÿõŒkî/ö’÷þ.?4W¡Ø'÷kôl½|íÈÿ¹Ýœþ¥z¼£îý©Þ'ýQÿÈcÿZ5î#ý¥ôŠã£üÏÓÚŸqOú‰ùáþ±ÝW–U’?‚±æ.ÌÿâS¿Ûü£¯Ò/¡ßÿ3íò]ÿäZ¸náÿÜ7ñÿ¤&›w÷eÿ ëÔ78÷¯«å+D8çס9|QŽ©¹ïç—§å…Nß™w‰Í¯âþ½Mß/ÅFß?‚q_§Ö¯Óª^*áÍqoùä~gî¬ê”¸×ñÇëÒ‡_r|º{Âá;ù¥êaœPÙòzGùäè¬ùJ~e,G6ÿŠ^ªuWz¦×ù»õ+ô:9E*YÉ-oþâ«õèeüÏŠŸÜåkûÂþÝ> TÇξ“÷úÏò5èŠÜŠcGßWÖIÕ¾ƒÜ¨œ%+æ?/]#ÇÞ¬t äsûêÖK¢Î‹oÚ?—³@~U=Øsü½šŽ…ds]?dýcA/˜#ê“­ü½š.‰¾¿ÿÙ././@LongLink0000000000000000000000000000020200000000000011557 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/booking-mvc/src/main/webapp/images/webflow-logo.jpglibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/booking-mvc/src/main/w0000644000000000000000000000451711360615636027673 0ustar ÿØÿàJFIFÿþ'File written by Adobe Photoshop¨ 4.0ÿÛC   %# , #&')*)-0-(0%()(ÿÛC   (((((((((((((((((((((((((((((((((((((((((((((((((((ÿÀKd"ÿÄÿÄ:!1"AQq2a#BR‘’¡±7Sbru‚³3ÁÿÄÿÄ+!1Q"A‘±¡4qÁðÿÚ ?ú¦Š(¡¨ûÝêÝcˆdÝ¥µž€¬î£äR~¤)ÚÌg&ö˜¤ýVæH 9 %ngã÷W6fGÓBéjéW+ü6jzóÚöT¤XíjZ|–¾ò@ÜüȪðíVL̨ŒñƈšŠfØÂâgãV &@[¼¤ª;µäeÖò^|¦¿…œ&žGUÒìoWjt(rŽàò\Tãò"¥ v‹q`„ÜíIG‹‘áPÿuüUÍÉkøhü"¹ÝnG I?Ô¨‹XËiëk G­¦-ƒSÚ¯¹L #Ú2¨î‡ê“úªj’Rm H)r3¥. ñ!Ä+ Aó гi­e*Üóp5:¸™Qáj~0sÃüºyâ·ðµˆòÉ×+Ù-ðáIE…RApE²®EQBE4P„RO´oÞl¯í±ÿØí;)ÚkÁžÒ¤’¥*Ý(BFTµâMfêí.ÄxxùTÎ-…D¾ól4\yiBRMZôÕŽùu†Ùa„Ûb+~|¤⇚[ÿÕéR:wI&Ë öíþ1™q@ j"cäãaõ•¾Iû¾6Èš²Ðûmæ[iu{¥w¶Øm¹Üm×zÏÀÐØÀ‘É쫆 ¼»ªŽ‰ miÜ^™q_=âøR­iM>ÒpÝ’ÜÆ:ê+DmKåKœÂ@ îŒãsÎãj™TèÈ€f­ä¢(G0º¾è Ærs[±ÄÆŠkitÐ N‹Ó²:Ú"´¯¶ÂyJ4àÔÓ³õrV-7xHÁ;é›WËÞyô¨­%jŽÕm…)»+Vç vŽÅÂls>>ÀzÓR–Lh¥ö‚‘Žd­ÜÞB[iÔí5rgOjV\ŽËêà‚úÕÆßðÂüG–p|<©“\ó¡ÆŸQæ°Û쫪œZÞ‘€•ZÆìhhN/h¢Še+Åç„ðã‹Ã5U³k8¯Ü´ÞQû.îÒø9O+¸÷’›_E<:Õ®ª] èæu<¶ƒmÜ™’âÆR±öü§ò;Е䆒Ñe[j´­%Ýv­M%EÉŠˆÌ¶}ÖÈ+%~½ì|7¥¶û¨4ô¥ÁDé1_`ðªÑÎ@þœïÃäAÅYãv•{B@“m·<~Ón­¼üˆWëJ\=V{uL{Úó´ö)­!†¤²Z} q³Œ¥CmŽEFEÓ¶ÈÒ݈È.-Àè⸠îù{ ÕÎÓ.ªIåYá¡^j”¢?$T5ÇZj[€(TÆ ´|!µÞüj'ò ½ª_ªâ°^ëWÍf-i¶(Ý‹1JŽP–€.¬ç8Jw'8ò¥.«ÕSu*ˆR¸¶f@ Å*ÊÝÇE:|§§­q\”…:âœzK‡¼óË+Z½Tw¨ú–»pµçõ ió\Ê·v3ûÈsû[ŸínŸt„ìdù%Ïínµº}Ó-íölûü¢Š(¡i¢Š(¡¢´ûSÓìüæùøÏ/‹½ØÁpžï†Õ1¥ðxJRxÝÂÀ! Å ô `*3 QR™h¨õ%³å 7Àž,mI+w°·¸KŽBýÝÿ?uSÓn8°ß’IJZJKX^p0I¬¯cÀÖpž–êZhFP*W™5kH H€V+iµœ­´(ù‘šäú=±†0ÑeÛáР«—ëƒwm?96Wùî 0ÞsÃÇÜ BÜݲ¿gi‹C@ܲžR[A%Yñ«êm¼ð!)Ï\ f„´ÚUÄ–ÐæÍ,¸”Ûˆ²+§Ç<(s ºª–§/ZœxHây-û;À}l¿:†‘U§—¢T»»IJÕŸuÌ÷ÜM2„¬ai Df¼(Bˆ%)%=2:R˧ïqpu¹÷tVnÖ¸qÑ+L40†Ò>TVê+DjÿÙ././@LongLink0000000000000000000000000000017000000000000011563 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/booking-mvc/src/main/webapp/images/bg.giflibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/booking-mvc/src/main/w0000644000000000000000000000024311360615636027663 0ustar GIF89aø €ÿÿÿû¶,ø ‚ Ž©Ëí£œ´Ú‹±É¼û†âH–扦êʦÁÖÆòL3pçúÎ÷þ Z^¢w;*—̦ó e£Ôê#iÍj·Ü®W7ýŠØ±ùŒN«£áµ;V~Ëçôº½Ò¾ë;ñ½ÿÈÖ'Xˆ@h˜¨¸È8’×Xˆ9IY9ùh¹'™ÉÙé)P;././@LongLink0000000000000000000000000000017600000000000011571 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/booking-mvc/src/main/webapp/images/diplomat.jpglibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/booking-mvc/src/main/w0000644000000000000000000004304511360615640027665 0ustar ÿØÿàJFIFHHÿáExifMM*ÿÛC  !"$"$ÿÛCÿÀúÈ"ÿÄÿÄJ !1AQ"2aq‘#B¡±3RÁÑCbr‚$ƒ“%&5Ss’²Âðc¢áâñÿÄÿÄ/!1A"Qa2¡±ð#‘ÑRqÁÿÚ ?«ý¢]Z¢Íø…á:'$TÇ;ŠéÛ›‘ºç8¢Æ$S’ÃQíµ 5LÊœ¾ŒÓS”Œ*Ã÷£ºHñ©3Ç>zå Øœx„ªã]ƒii~áZiä*‡$èEAIDNsÇq¤Þ¤•V¢gF GM–y‚íBâ´+´±WSÖÈ¢*0åc¹õþº¦º‚óWWÔ’Ons‚¨¸óþzrëŠú›¿ÀrZ(d c±úWrÍ|0cõÖ N&w¹¹ ›O_3C ‘Ù˜1˱Ï>§Y¡ùÈ*NP¶NOs¬ÐŽ£¸ÁUÜ‘$’0ÁÜv_";¶TŠ™¦j¢Ai[ï®¶‰*Ro `vC«“¢7J "¦A¶9I!HäcËNT±°ÆÕPY–®%IK`yc¸ÕåýŸzžàiê©kªÖH¢!‡ˆØ yãT|€´ ¸íuçî4jÉ_=²_‚W ¦!ÖŒ†}´@æz+®ºªžÛs¤M¢Hæl³©ùGÑk]=mZUFØñ1…cªVŠç{A5snH£Æñ-4Xo͹Cn…88Ð6’’„Rj­¬ÏCÛ¢0Øï©SI°q€G×JÔ½OO,*‰%\ì0VSâ” Éúik«o·:ªòf’J:p *£¬)þ#e˜ÿʺóó®2|Í@AŒ—EI®)/Š‘»ü$³ú®–©)ä•°Ô:ŸˆFÛ¶þ{ižÅXUQÔ,Á’O”²‘Ÿ°é÷§^®  ãi¸Áóò^šzçÉÅqŠj„+2!ñ’#ï­èg;A#º'-)–?ÜÓM7ü‘±Ó\VÕ_·w¹Nƒ¿Ä¸þºµî¥Q2hɈ|!! ŒƒA¨-OS¾" GâSõÖâÛt6Š2èÙîãáþz%Ei¯–”ÇQL@ •eÁÏÛK÷sºø…,Õ°TÁ´²–Ç#: {–Ý%d”ë"$Ê °'úç¶¢ÒA5¶àU£š(ÜðYõÐÓ9ª¨¹7‰µ’¡Âžücƒüµ_'öÎå0·qÌÄ¡¡¦E«†¡jâ@¬‘öÑZiéü ÁÏUPɾ:³ð²ä<Ç|DH9’<©>¹=c¸U.ä›ÇªƒnáÊœ|¥N?F5ÛÎת…‰bFÈ2ã\ªÒóÏáKt¥ªtHÜÂHù%“ö=›ðuÂäõ2$,h«ó]\ÅLlÅž¢¸”©H£oÉRqõÒGZOàQ¤1îw$çz—|–ºª®*ˆ iU¶œ/ ­"¥/ šà_*ø\§:ÙÇŒ Qw-bVŽ˜½ÕÁâ*øt€ä’qŸ®—ŲÚô†4‹! ¹ä¸õ»oS… "ˆGB·#îFª óMNÑ£ä`gÈêÒÂTÈ»:1¼GXðž³ZÕÆÌ夓q'ËY¨+-%m‡:vâ¹<Ž\Fƒà\ü¹ÓuQ´(î!ä•=¹$y꽊±÷oS†Ï‘ÓÇH_ãI㊮¤Ó¯ØsÆ¬í®¥7 4[»P®\ˆÂ”î<ÛY/ˆªÈ¹ÊäŒißÚE¹j K?‹P¬ ;)yôôÐXi½ÔÇJ¬IdÝŒsO¾›želŒÊ6ÜrSµ°ÊÞG™Éúi^[}3R¼ðJ>êOc«6ÇÑôýK"*ÆœIâ}²0Àû"“õÖ_®ëŸMIÛq Åîå¶ñ K]4pFC­$Û£x@£°Þßô ]iáµ,ž<‹îìÿïŠb|¾y7Jßp±A}áóO¿“+±§ =w6eÆ4B‚–hÕj"ŠHÕ2EÓ'þtij~¼r{›á@)i|YéŸà $™ñv1Üÿçâ#°ôѪڋ­"Ð]Z ¡ñe5h›¹ã¸óùGô×b—ºC6ÖŸÃBÙ…š¬’Hà¹ì~Ø:•ÔT´ÏY²o{.±… ({ÿÄNÛh4œ@«É /‹'XÛ#©»‰ måj©\± ¤ð99Ô;5Eqs]¤Ò¶H¦™»ºz-L{>a©ÝÒàµb*ü{¹ÇÃë¨V9i–ââš `zùdONß}.ãææÝD½>¨fR¾úçwìù0O†ž[³å­îRSÅn”TD LK:ð ÿ ã·mttC§U5&ß~#õ/þí|õöéSJm”¬P®ixÙq‘;;Žçúë¼ÉžIàê+„0ÝŒl}ä*й“ØŒqE´TÜ$¨¬÷Ú“Wð£FÞš s,–0Kœ’<ôU¨M*ø‚V—vxÒ¼ÕfY¦¦¼;¾ØÎ½N5ÜlIÚ…E»ÔñËѤ08,Ç¿Ôj¼ê*Z©¡d|AôÕ±S@¥ „b0I^ú•ÓÝ;@”ÔDZ°B3ÉÕßyP\¨ØŽCSÎ/Ó•m½TÀÁפdèÊh)Ÿ÷qŒÝ·ÍpÕ!“ðù™äõ©Pï ‘ß_a×¶¤¤xòÖ°Y_&Hnß`Ÿ…HõmXÐ=fcÅEJ÷(kgêç§ã¶¼?õ>pÚ•ÅÿûÍÏHOì—ú™½NUª)’R ø¦§Qûš‰²Oàk½2SKZ0i&¨ÿô ’¾oþfø}{kY P†±¨ÙÈ÷¹š²n=~ß¶4f’ÙƒEyzsŒ (iÈõ¹ýuæf¨’mTÑÔ×Õ,ᜤk,‘•‘|ðÈ„ñ÷×y}Ön§§¤4Ö÷/S_½ÞÍÝGÊé­¬ ™$H–BD¥DaìÇ¡8<è—LÔ\eêªt„\ŒIS—ð©@\p쿮φ ‹ÆmÌùk©©©êÙ 0EKîŠÝ’N×Ç$wþº•hŠô(®Çs»@hwŽÞ½µöÑMv’J–¨ŠîºH¨­Uä€;yuòÛjoq¹™!‹,°ƒâÝTçã'Ë·o΂>u |ýýÝ×w¾s yzgÏYZ·“i /q Ãn¢WÁÞÝÆ=1­¡¶*X™T =ïv?iäv<ý~šù[A?ìš” "?ÇêO=ÿ‘Üã2¾¢H¯ÔOŠ™ËKAÈÈLò;é¡pšx:‘ Zj(ØK$YŒ²·˜ÆÒp{hµÊºAK$)wÜ)cϻԆ9 ÉãZõ+WCÔ­½k<#W‘¾—<1òqÛ¾¥LAwhÙ:†•ÕJ5E;¦ØÓ.àFØÛ‚;’u ÇV>ž9° ÜG/§q•ôÑŽ §Xê(ˉIñö´d*î#ç }xÖ•T¡M©tH9iZ¸GÔùÿs÷±˜ÙdeR8L “õEþcZÜ·Œ¬T7Màgÿ~öa©é ÔJ´ÍIâ“îÒšyyõVøOcÆ´1§`O‡3 ëîÒŸêùÒî£D%-h$µ@u+Ü08_BuÊžÌ"ÔÌcúi‚’€ÔÓ!h\>øÄd°ã™-: t×b¶@`ºõXõ[ÐæR8€1zšÉuY;ö®2£·Q©uT"Šl!ή‰Ò[天WB¸U#>ú…plT,q;NY³®9 7ˆA@1‘ŒÓ+7ÃÆé¬ÔÒÀÈ;žGÛY¨&ñBÇ®ÑÆsλ¬X:íyò×· <«fšBœè=9uÊã-qŠ=§§pTð 8ée,™.X~Ϩ=ϧžZµXR¥÷(©œ˜Ü,KÉ?VãNA*ÓÿÞcNy_~qIÝb_‰¿]D±D´TpQѨ3ªeã´Dev?â36qŸQ‘©Ž¢œ—Û(_¹i¤5•œesúkäþ¥ŸßÕ>O©žÛKÚ©ô½¾WyY(*jå*0bµPlù‡œ~<µ6Ž£¨Ý-¶Ž)7|M_pñ¤?]«Œ~šNµÑ”ýAtE$~øŠZqÁüM¦¢0ѼPÚìhæ2¢ž:ƒ,¯‘¡²Ø?]S¨èfÉIR("Ii+–3ÎÉå!Tžvä†Ó¿¦»ôí-ÚK¿‰UGr1GÅMLÞݶãq¢²ÇOVjVÝ2ÌÐx+D¤ä%R‰ñ^uߥ¬õñUUÔTÛHÅŠ=ö¡PØ# ŽçMÉÀ¨¬L‘dµ¬P×–¥µÄ}Ô®d¯ÞyuïƒÀ×{U o¹eì-?°îÿ7ù~uÞÛ@ËGq-MÁ˜Ð|3þ0~.O~ºÞÛIVºáï}> –VTyóqÉôüéW,L‚Øòbn›ÁªýÛìÎÏþ¯òÖ•TpIh¥ 7O$˜ ¬èÔñõõû¡®L\ì ûÈäQeÙÛïõôÖÕÊmq)«éçÄòòÔ…W²p8>¿q®ž$Á5ö±5º‰Vš×7ýßfc¯(8fž¶¿ÐÜIñ`¦¸`ÃMROÀ¹Ç—WnimÔ[§äÚ$\$…ç'·¯:ãv´M-%1[Ls‘J©ŠJáÁóÛR Š‘z–š¡í2½=-D%4ÇpË¿®¢KKºE’:Y$ 0hë|ûàžMMšÐ+©ÃÍoW˜Òˆ$”«G ¯†¸õ)ž{L)=ºÔÒx*šIŒr!å-ÆO×DñX»"r®yV¡VªZ•ܤëè·ƒÿˆ¼ÿþëƒÄÍbY#æì*"ü¡ø—S¦ŽjX‘Ì7š$gݘTBsëôüëƒ,52 :‰<š74Ó¦t³$¾™dðj)¢0pðå?cð7+øÑ_wYÆÅö ¹=ôßUî·54/Ûml8~}wòï£Q΋ÜoÎî<ε4N[y83åDÑ Ùrr‰““¥»…BÅâO TSÈêsº fs(c“Œy~t»u„×Má,­³<€9?MkáÆ/™]ߎ&”×WyšBöY­ív£Lß÷– ·åfšåâB®g—_MvH¾šôï^{ éšêëº^¢z ÞYi¤mÑ9ÿó]yâZ ©ª$§¨‰£–6*èÃHî½V‹_ƒZ¥±žGƒÜòzÍ.m1§èÎTeÔ°+Ÿ®tí¸µêž9Ž q÷¬˜Î<ˆŸ¶ SÆÑ¶W#N^ÎáHë'­š²†#\<^,ƒÏr.êu£ŸáôÏ’úzË]’X¨F}òÙC´d¥ &¢^?â9çþ­s‚&¹?¹Ý¯[ßÕ?N¿ØÔ5&YžŽ/Šñg²Ž4‘ ]O—Ä3ÿÕ¯“]›3ÝÌZ&¸R†þ¢¿‚1âUIࡽ¿û†‰ÃnsÄö ZFò d†¨<Ê29îÇŽ41ä¶×Ê‚ZŽ£¿>à3Tò|ƒhÍ50TRø½5r¶®^DžINNÑ‚s¯ø½<µ Y€Æ”ÉÅ©«¢¯XújåFlF’#¾^ü ®q<÷Ó6øhî¯-–±Œ”éûÜÛ7æ@H±òë[‚ÒÅm‘ÖGÉƧðÙÁãIçþoƾXéc~›»?»_«|I©Ós++7¶WÇlýƘ÷äÀÃUÄ/h¶TEi¸Ùh‹¼,•[ƒ\üGwãw¡¶È-UjÔý7ꈎ7åxWïßžxüèm¾ÐïÓ5«OÞ–®…™·°U~F|†ž§Ú,ÕtýB²ÊZ­žr€Cñ|öqùÒÉ­²˜Ãn“ãé¾*A§Áòü|ßå®—¤’¶„:ÁÓÓ°²7aGÀ¾gø¸ý1¨Öûm@´Êƒ£`Cï D)üãÉnþZù%¢ª[CÆÝ±mªÞ"†§æ0_;¾€j“9-²w²@†×f‘’i~©Àí<ÝÏ9üj%ÞÍU%®‡I”¢È…i*wlò<ÎsœêlVfŽÆ"›¥îmQeŽ:’_”lƒÛ€1¨wKzžŸ¦Ùo¿Ðê¥À@îøeRIàœqÇçS|Îñ:Úh¤k,On²FÊc–3¿ƒçð·¶…ÒPH”ÏL–[j,Rº,SO‰ÝÀü=óé¢]3Mn1·1Y™|JµU“‘ç¹?ÌhZQÄ.w©úr®´nIE—åܸv¹ÿ $cÏRz‰^¦‚…©hH6Ëͤ*Šo<ûsúê;ËZŒÔÒTî W †AŸSëùÖÈô4RJ wû#oÎ÷;•‰óä÷ÖST=\XŽóCwPJ³UE±‰óç·óÐs@Mª£ŒžQôǧóÖñK+dñ"ÛZ¸’‘¼AI]oýý+ø‘~Ÿÿmêˤt²A*\ \dìMŽ1þ%úç¾µ= ïÊq2¾©‚&ó⺈3$Raø¸S¥»kMï2g'—± Ow«¸Vܺ@Ç'’4ák«§¢§ 8cÉvîuéÛ aZ<“3“0ÌÖ8¨IÑ©£3W7ã:Í'uuÚªxÊ*±9àŒë5´EÖØÂ}XC@KÊ\£Œ„úig¯}œX:–ÒòÇMıTÄœ³ñ1¦ÆPÜê\R+¡R#^w£&ŒÑšY1&UÚâÄñÅæÎÖ«½M½åŽc…8ž1„Ž%xÖê'Ï;4<É©WQÔYVÍZÐuUê8Ò¢"óαîBC£(<ûkj[„2ÙjÍ^+´U1–¨ž4!7+‡iœgñ«<Ç+‹Â¨µ¥ÆÒþ+ÎLd:¬M‚Hû‘ýFª™aµÖÝæý›Ð÷Û´êÛXÌÏà8ì»Gÿ¸éù®µvéZÚj3•ñ*–‡Éóò¯îUhn¦ö ‘Æ90ÑFùȦ±õ…•½¶=K DnaO©è×þïké^ŸR3™%ŒºýÕrßÏB®u3°¸ûXXP¦ dù_³‘Ï–†­W³ê™£‚–ßÔ×Ù€ñ§šA}I ´±Ô»5Eemg‹jöG<òd©–œ«zŸˆç‘éªÀ\À?ÔO³ãQ!k·TÖ¸r$†u Â0¡¼Æžm6 mϦaŽÒ—: gœÎjrf* –gú ·Úœ‚":g§íYùŒ¡¼ŽÓë¦ë\w hi½ò€¢ŠÒ˜,Òà9?,ÅtÅ.ßÎ`í©Cm¼uM}šjxBéü8Ìã¹±œö?^N¬ÿf)mNŒ£kEeMm›ž9ês¾XòN«¾ QwþŽèø®0íøgš? óÉÆÕ\~žºµ:ÙYNâc"€ÃéÁ:Q¼-dÒ8ñ!<04Ýu¸Â›CÖ›‹'÷’ÇNOsØÏ:W¿u_B†ŽŠåuZp[ác˜ð~¤ãz £‹0A÷”òéYÍ¢¥ÀÓ&a«ž’XÇÎŒÀùyŸ-f—:‡ këÙíPË3ÆBn ÆÇш‚0x=ùôÖk3S®9_scýšYŧÖ•æ#½¢i–É"êkãb2<9ÕˆòòlýÎ4ßhºõ-R‘z÷{Œ `…¦hŸ>}ÉçÿÏ#¦HêRIÁF sätr–¨m+³sEÉ'L}+â6¬g ܯºÒ[5®Â¢Í]p¦œXát ç‚Ä(X?hðzWØý<'°žª<ž;ÌX-8ûEÿlüx¦îÖëlRfI^½ Â<ö«gï뤺‹5Ê©·u/µ€Ê>hè²sö;OõÕ<®]Ë1çþç\úCÕƒÚ{ ¶ïÓÊŒESHŽqçŽ1΃UQ^Z'Míj”ÆÊS÷,@V=›!N~¸Ô8ºK¢…4‰$ýi~YÈIfŒ0íœgÀ×*ÚgÝ/ ¤Ý Õ¬&`¬µpø-&> B´y#áQþ¶±ßï:Amè¦vŽ«Ú¥]eAág$n9Æv{‘åå«Z‘!/aéåEÚ¡|:©ÉÀíòóªï¥+z^ªå %£ÙÍÂ…¦‘c÷¦˜#!SÁ¾>^º´RZÔÅIà™N5[=ÐTl÷% Ý·Ô¿]Æ(Bí(ô:Ž´4&ï vΚ ƒþb÷äðgž*:rýfêú?}‚“uI ó<¡¼8³€‹žÌÄö¿Mz"ÏûÛ-.|àPMVþÛ’Û ó¦ê«¤©%Öal}ÑᛃÂó÷ά^ž9³S}¡ÒÔ´>°Í“r­«¦µÁ01ûFy^9÷ykPø˜nTÉ?M8ÕÅNà³QÇáŠ)9ò“ß\.}%lšªVnŸ ‘ËîW•l“~^F»ÓʲPÃ*lŒÅq ðù;A•;Ðô ,Ôóu•ÊÛU2È— r™ìØzs¥-Žk€Jðe­UŸN4Fг£žžž®Š¥Ò6vDs)Ú'Œê§öÒµqÛm{5º¢H­Ôâž0 ˜©ã×BìmUн¿_edЊ#<'"G s·¸^~ú³›Q˜µ1±q [ÒN£ö_†Hi¨dcÎä¢ÎQ©ïÖ}3o²-î ÷Yj (V\<¾šñ¿Hµeö9oýU;SÓ#<ñ¼[SÐgžHÕ·í:Õp¾{;é~Ÿ²P_+"!«fšÙ à³‘ÛæþZ¦¥Ø*`\¸#ö·jž® Zj ÞI¤XÓ.£%ŽõÑþ¨Š‚­¤§ÙÉ$ʤFqŒÜjŒé?e²Åí>Ár¸SÜ¡¥¶Ê”¬má&wO''wöí.÷b¾ÔJ”tU´^2¥8(Í!g'¾09Ç:n0È~h-µº“í{‹¬?cÕWtŒ¶¬#•¨ÂïÀÏ!\a³é£PÖÓˆjf†£§QÄAÊÅH¿?Ã’çU|^Ùú—ߢާ ©ŒL~:“'¨ó=Éã¶;êCûo« ‰ìâGC†R}xÇz~šxÈ£¿ý•[ žå±f€I]LŸíŠ« ÉG cþ#ß¶­JÉáj)©XË!Úùqßy¢ƒÛm6ôßÑÕN;¢Êyã·$yÛFi?´$ôÒ4Ý1pEχñ:äù wäžÃ]/.Tb9ŒÅ‹`–OJÝÕz¶ê÷sn§1  R²*—ü§ž{gžtÝûzÈxý¯AŸþ:ÿ®¨Ø½±Ú*kV&ékyw4i÷?ML_kÝ>±W¦ëYÁ>qõÐ+a“Á‰â[ͳ—ÿÚÔDy×[Å}³ƒÿ´èÿó—UL~×úr!éºî¥‚˜Ó#Ó>™×DöÉ`(î½/Wµ;“Ž}4G.¼€ û`º™¢µ=è*§ñ^6v‘ ‰HRHÏ8ÆtéѲêô,ÊïñaÛ¹<}µVOí–ÍÑÆ:FªA( ­±1mÿn”‹LíLÔ)Œó`|gôÒŽTP¶·™d]R”V3ªÂ_iuçõóÐÛ|”‹n‚9îÔ¿ JDF;Xdyñçªö¯Û –Œ<ª ´æ~¸ì<ÏõÔ½´õòazP>7™3þ"1©Aâ·oW;½5ö8m—Ë`¥”#TæISÈo”÷àcƒ¦KlÕ£Eiå“é¨wbyvñV_nš¢áQS;ïE—`²®0ŸË^šèkSÑô¤tT@v«”Ô×2‚6X"R9Ú8ôÀ¯=X­”’ÕÁnXª*¢2‚fVˆä|Yú ÷Óͪ×nº{Õ®Ël©®X™”‰€,HÙ´dg'ý«3×Bã&:u?´‹í[Å5ò²à­M,Mòм„©ø‡ÌqèÓÉp`c!l »BcùdžßMKU¨Œ¨EÄ# Œ™SüõÒÍ2OQQTÃ$±í$+189Çn<´U)ѪˆÁY]i¯´Vâ¾{¨DÒ,“Ê9=öžÿ®¥Sš©åEP~ÛÁ>¤úè%=9‰ŒµI³+¬ùç=µ"à°øsÆÊXc;ÎF û@ÉàZ¿Ú´nð°Š>p»W~r9#Ó°ÔÞœ·UÜÃD¡•À/@ÀÃ~tN÷Q;ßÃ…Êr˃Ž{c\©-€Ï<{^uFÉ—¸çqŽ|ñ¤gÍT-æK¬±Èµ'–²&ÚÜ‘žxä}´.;]ãÇXÒÿQ@dí‚ ¨ôÁ_ÿ0tíÕ3,6ù²™BZpߘòïöï¨Ô7û”ïL20j¨ãKÞ#P ¶9ÆIb?ÎøòzÞÝwý¢_ºÖÇÔ)k´õ+»TF (ÐCâ³ÀN|ôÁÐW.£¶,•—‹Ê×W°Uš|08*†Vü|XÕ“ìþ’•z\*ºNHêgʥ«cˆÑ³°Æ ÷É#¿–5Ê«ØwWµý®)Wm‘¹OLÈ·¾x9ä3œzè²6fPVù»æ ºûQ¸Q[#Žª®i­Ñ:𠮉´ðØäÄa†~]&ûfën ¸ô¥ ÐT5cÑϾyÀ*Êà¯Â¶«Œ`ðF‹ûJöuÔÝ-m¥®ºËOQ%DÞ IL܃‚߯qé¤X:«®~ó:[$£¶Ô K,»ÒŽÃqB}{ãU•ÞÊ·q¥‹BV^¿¨éŸÙu¶ªš†¦–dª¨Š9yvá„Yîæ'í磇گR{Dê;UΖk(7-Dþv8y™9Ý´Á8û󤾚ö{q¾²Úažžf¤wAâ—,3³ 9ãœó¯Oû5öGIÒ6 2(Ý¢“tI@AÆW8åF¬ã „Q lƾ€½Ùà´SÓKy’j©¾"jåf•Ï™ä }€Ök›Yo«P$Io;U²öª‘ú2f­-ÌY âyŽÍÔÿÚ>®±ÅNTÒ@±3–1¦]€øTr;ž4×í ÍÔ³û ¦¹ÕÚiŸ¬˜ÍRŠÈ¦0Çâ IåU˜ç“¥¡£8ÏQÿfÛ_TÒZï^°*nճƌË,r©T r¬ŒF2þ¹ãW >!óñª×Ø=Ššöek·‘Ø©•ÙÉ$³éÀÓT5²Ë¾’ïUH¾h¨¥šêÚ­-@0¥ÄH]yoû[ô•‚ÍWf­±Ñ:Ü®U½s%IËv!ˆ9ÇÄ|±«Ï¨.ê øá§¹ËP»}ñ!$ç°øuä¯l]aêiUTwªZ4´Á,𱄠ÙJü*dBC àãõ_R–”D44n$QM4õ/ï0Å ËP#ƒÆf2†'‘ÁÆ>õ´—ó-Ꙣ€û„ò©c°“œ/o¦„ôœ×á7T©Xg…ç·ÊFÒÄId!®Vé\\™ÜábGíH—?ºíŒgU1aPÖGP™Ûm\±½‰ß(én³TÏ+ON¢8¸žvòsÙ—§ÓVµdòŠÊiÙœŒ‰$|¸ãUOCÛ秦¨ª¯©’1#DÂ#qŒ…° >ß};tà»Ç;Z-ÕÕÔòF3GT$*ì Ûφp>ºvòxX Ãs©*XÚæoJDP`3üYÎrq©”óRE 5 ,„¾ Ú|ô´n“Ñ×ÅižŽº:ª–Œ$/*;Ã\稷Ô]f¢ ºZ¯4tï28TÆwœ©Ï~=<´þD~åð`¯í_E5¡E!l!I4³ ÿSáò;Ÿ¡ª­=Zô’ÑR-D2ÑȈþÏRB6ò7(#¸úé÷Ûw²‰’¢H'Š5gàm;—ÏŒ·g¾Ÿ=€u¥ÞÁ¦áZ$›ÄºiÌŠL¸aóä|µS”ÕÇë,6BÄÙžÓêŠ%޾4ð†ÕQ€0|´×g…_Ì öÕiíó%®ÓGt¤»Ìv¥e`Š6sŽçL½æé`·Þ Þ¶©*".ÖýÛ^mi“j>Ñ\ÀÚ&š®Of•5T“¬sRTC/ˆ@Â)p¬yú1ÒZuZÚ}‘[ì¿íU ·édUyiJO¨'~î6€@ôÕÏÖöØïv¶x%Ú¢’EA´üÛI_漓If-×*Z›d’ÀÕL)Ød„Y†Q†FsÎHÕLÛ”°—š¦«ú‚ÑíBš* ·SOp‹Ä‚¥Ù|8݇ÿpÚ¤`ŽÜdkÕÞÍ*:ªáÐ7›uת¬Õ½I'‹îsÑUG ˆ89^R®±Î·+LU$SJ(HV8Æ ^Ç:¹½’ôýÂÓ_ï?³æŠB²b@ðARçsøÒqç4wRù¹Ë¨«½¯Ã ¶ªÏÖý*‹=.ÙÅMÎ"¦¡OŰç‘ÛÛ:Í#{Zè;£ô¥þ;U½êZÍzŽº—ÃVÚÉSÂ0YAÛÛ:ÍZSbà*«Å}E“§:~ÐËN´”Ë1’)cÊò67)ŒÇÓIRUÔL¤1)!_#ñ7àž3÷õÕ§Ò·Û­ò’Þh+Ô=@‹ÆšŠ9BœÛû2Opt­j'[—…]S^K9)OJ¬88Îüè¦G`3øEi:š¶!š¦E'è‘•wðLvË¥QQýž¬r-•E4ÕMîy££|@I%²KØÕIígÙÇû)שm餾\!šÜey;)»neW€8ÕóÖÞÒ¬•|m4œŠe9v9ãá\wÆ«{—´îª¸]$¤¶RÇd¢D ãÊIß‘ÙsµGß:XÅ¼Ò ‹Èøð‹ÈÕz ÕwR#6ËØÙ+–’¢Ø#ñXmÇ‚qùÓÝ¢ôöÊý“_?»Õîm»bÚ €Nზl y‘2Øz²ç4 ËYU#† »Éíßzg¥¿UÌчšm¤g’¾qçÓM ·f$j°Œ©$·õl{Ñb %Ùh ŠÛï.-‚ti]áå^ß2;cGºrÅ{¥»ÒÔ‹ Æ5ŠFvš9Ÿߪ3’¿{cVwúÑr¤<ÅDYw.9Æ|µ>ªóV¡Z:‰”eó‚; <½8×6‡-I]F/T^ѺgªjiÄp[.µP$RGMD®HÊ`‚rF0xäg>ºA±û;½5û§¨ïN¦ktõ.µSjÄ"C³ç%H^s÷ç^•ê+ÍÊP"«©M¥ñ‡QÛ·–«{ZõåBÏI\.”Ï>–´((¸þP=?‹:QÑæÕ‰ÃS§^ ¨Ù7²ž ½Ò^-÷J–ùD‹‘Á"J¼¬p<uÚßýŸ-¶ˆ(’.³¨¦Zª•–áâ€Ypw`g“Çkö‰`•ÅγÏ+.c¨_ ]ˆòqð“új×§ê:øè¡†¨Q““¤”F@ª–¶ySºó¤.ÖÊ+“\ú¶õ†h ~ï4€ ©\®Å ‘éuþÍýgOlöKg³ßæWÐÆ°¹HY—ˆN@ç¶3£}iQs¹[Úd€LÊÑq ÁÏZKè Žß[Â7@­ ª†*RMÊ<ç“ë§U¨Q¡ä®:jB ] BÁÈ޹ØpÝ×Èžuæ›ÝÊ‚ž¢¶Š;Ô7 ›uQȲ€MÊCgåà z5qDÝ9St¥&JIn¦Ù))*nìÀyªö£Ù]…ëí3ÁQ-©y(ælÀtRŒúì9ûèN6" ƒR•’ã~Y«éhéê&¥¸VoEOŽî #=Æaƒ§®ž¾\éìÖ‹¥]Å%“áŽiˆgHÀ (8å—÷ÕqÔT‚×ÖÕ–éêä¡ «Wj–M¾$á·ðFŠû6·Áqö‡GAW=D49¡Y!•ãØÙܹyùsÜT\FÍD5zæ>{Bëš[•U]Q¨©µE%¼ÑËM:ÿûÕ!xaŽÚÍö÷KÕ}3[WjÜîÖïtŽ¥$w3´j…‘ÉÝÆ+É¿–³Pq¸?ŠO¸>‘ šåIj¶S­H‚’÷JhÑä‘þ;öäóë¢6»Û¨:RïINKMd°¤~ù‰–$3Œmø˜’I#Ž4þ·OrO†ÕGB c†7/õ×Y+jjBÉSU$Ê{ÛAÖÌ£ŽÿI#N|À-Ðfß]I[w¸Z`©§B£ÂF–N@ dçÆ}=ÇEASw’âZ²ªf™f1D8#…\ÇÌè$54 ¬‘¬G;Fæ?o]I¤¨iHã_ZŒ~»F–2ž–7ÙQÉðºÂ+Á€÷h°ÉçR㪛l¸ä³’qù'®î=Ml¢rX§‘rpÛU ¨’õEÞ&T˜E ¹àöŸå«X±dÈhDeÏ‹²c½ï¬¡·ÐÏQLZ±¡^c§à ú±ãôÕ1UÖÝuÕÕ8ž^ž¡ß†UèOÍú4Ô”qÁŒÍ(Ž]NN㨷¨â“ÃU ñ 5¥‡Ò샔þS [ëû"’Õí:‹™-%eA]ò8ÉvÒå,Öº&¯³Ö""±ñáóÎ|—냣)+Ë»ÄOã8Áì<ùÖô¡NJ ÃÏj *IÄó¿ÌÁŸ™#¥ë&’ˆ;ÏI%‰Û—>^yÓMµðGV‘ÉtÆd,KÇÀ×Aé!§Xzx\NÜ ‘çýtFž–†IüAIõ!?SéØy—°êHŠéow..³±@˜Â§?òê\×zSHŽ—‚¤†ùÑ?ÅöÐÈmöØâû¤`± qÇÛRM¤ÓÆnöäü»ûùé^ËË ©XW¨käa+Ç[NìêÄ=ÔúWV{¥uÞç% –É8Èw­‡&<à6@çìN¬‡’ØcïKÕÂ{hª­ ¢pu8ð7“Ÿ2Ÿ=þÙÊÞ±U*Êܤ­áÖ6;«ÔÙkäzm¹ð‹†Qæ‡ý4FTP€³çá%qÇòÔyæd«yžÇÐgѦ^AÁ®É€Ú™qt âãÔ=Ms¬S C«/ÀHóŸë¨T7º”ÓGO==iŒ~ð “­}žÜZ>“ª»‡~ăª²ÛiªµûP7Zz‰BÎ]Äy眞±›HûН‰é±kÔª–ó,Úèè UTqþËÆ“/ÑKÂHÚ ‰cýç†êÝò#œéÛßd-QðGryýGã]WjÚd™‘ÖeàÕÛõÒrbtò²<«.ÕõBè“K,2\Ð —0$¹ˆÁÇ<éjÊn{%ÆžxLŒgPI!–Näò1«¦J;sòDã<BŸÊöüèQôÒW@eøI 9,Çœ}sªÁö¶ê`UÈw¾·Šét³×\m•æ™ä£•*H¯ËæySñ"ž³]?Ù*J}®•U…‚ã¾þ?Ï:ÍK:ß7#Ø1-j¤bM4mQŸãqµä÷ügBo}Cn³–ý¥s1’?¸¦`ýüÇòÕ5ÔÞÐï÷‰ G1¡€q²&;ˆú±çôƃPÇp¸L$|™$ì?×KÇòq#.©\´¯>Óž8–ŸƒÀvÏ0 GÛv¤ôÌ×kª*ÍY>ÝŦä#Æ'ÓÏÐiZ×g‰61õ9þ'û Z=3DBS™»¨B0>üësIé rÓSꥎԄ¬Ý/HÊÔblvyßåÿ”s£ÐÒSÓºû°§ñŒ÷üç\¢žž(ƒJ%á“?ˉWY ²f1£|¤ä1ý5· ¥2²æÜm™&åU4¹Y™\¯rãùh%KNFp “9×Û””â/ÝÔŒáy$ýô,ÕÌËï&?3« ³3>na¼*¢¢I„ExV8;µ< x˜#´°ù7£t«û™÷ÒÇåßD–'GØë!# ÀÉ#îxÑ%P×Ì)OTŸ¿á‡S–±•IHŽÑÁÁ'úùhBø# Y÷`çq?¦º¤Ó0ÚŸç¾8Ç×:Ž ,³¬ˆ²0Ë÷°úë¸v^VnËžAШeMÂCAÏmÃéø×x$ešVÁ @>¼ú낈{Ì)SRȈҰÉãž þF‡—\nduÏcŒÉ_8‘ÄjÒ§,xãèu”»Þ$>0|Mß=3ë÷Ô„[!&K‘LJ°’Ê݉ääjŒŒÁÁ “–àÃúkœ¬r3ð>¤ŸLöƲ #j²¡ |n+é‘éþº NÞLa³O¤1øa$Ï“ ÄÿÊx#Ÿ"5:’fzØ^? ¶àyúsÛJqÎ@¢¢H%?)PHõ'¾>ÚK\¾õà˘¥$´r`OןΪCqš³šXsx~gŠUŒ^|¸ôÒŸWÁ –¹ÒÞ$]ÎÒ|ù÷ãR㹊‚š‘J²cvü4ns낦·ê ”Žî¨8,²d©êH8þz«“aFmcÕ%wÓeSH&Žå ðû» ‘‘ŽøÝÀ Àï~¿°ÓS5UÒycŒ0zd-´3·ŸÁMº=M®¯ÂV†²™ÛjSâádøÎsߟòÒQÓE[OQbY¢]Ò‡…ÔãȾTdùp2|õ‹ŸBÉÔÐÓúš°¢g¡ì÷:KÕÛ.4·edÚOè1ú¬×œ}šõI²Ü%¶Í $qÊÇtjŸõpWóƳT½³5:‘r³¡¢„È ¶òO å¦Ûe.á™0‘ŽøãùhEU®I¹AË·q¦¨øuŒ1ÿ-z->%Q`O'¯Ê×P­»¡(ð¨ 'òtÛo¯dŒ™Ê¯íã?Žu_ÂÍï1œœ‰Ÿ×N““ÂÈJ³ŸˆŽ vïë­ fæ=žá•½Ai1(P 8úþšÖáu£™ˆòsÁÇ|ÿMB­‚ÚðcÁŸ„}5 ~Ysϸ JÙ25NæY â2bbx –ΦQÇ/¼lY¤9<ØýuªáÎÑž|´B‰˜BX1tÑÄ£ÛCPÛaäÔÖȧæ+;ƒú.?ž¢˜âð wà;`ŸÆt"¦y±ï¤þóüGSgSÂû¶ÿ‹Ÿ=+ÌyªàBQI£dl8Â`“÷ưÍ8I¯<àŸ°É:ÒÝ{ÏȽ×Ëï­#ÌÀ€q»NÚ:ƒw;CSQ=@ 8§±ç¾¤nyäQ—ÃÞüC9õÇØê5zªSÅ´ø€àcËD,_ÞÈ=: <ÉÍO³SÊ¥£uiŒa‚qß8chjZj‘4®%(pS'ŒðH#Ÿ=I»³,X–1¶I<üË¡4쮂@ÇŠFìóü>zÌ6ùa$…åa T±Ã8¹y±<ñ®23Ó´Q\bVE#‘1Î{Aø‡×õÑi]›ª*bf&6R àŒã[Üa…m×X£bM (ュý€"ãIW†ÊKñ„^Þ{}Óí®ŒdXewˆ4ŠNÂøÏÓŸ§é¨t_½”øŸ6ãw8ãDª9’|ùõ× ´u>$[Å—ÂP •ñãÀ6ŸQ¨uuu4T¾UÆn0b|^~,½ûyj% ¯¸Ÿ„q0.xÐÛÛ4Tècb„¼ªJœd`~ºM —ƒ’…v¸"3µ|&#L2n-ƒÆWn Oät³ÕvÖy ÎÖÐJfˆ¤šQ! äFá‘Çëé®—É¥ŽèðÇ+¤m,ŠÄqæ5:¤ŠÞŒ7&ÝÛOlã¾”ØÃð`¦VBHˆÝ?s÷í×z(® èA-, óDBûk4Çí+Ž‚¤ªß­ÆTYŒ(Æ=ñôÖk7.5V"¦ö¬È ÏÿÙ././@LongLink0000000000000000000000000000020700000000000011564 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/booking-mvc/src/main/webapp/images/powered-by-spring.pnglibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/booking-mvc/src/main/w0000644000000000000000000001467711360615632027677 0ustar ‰PNG  IHDRo3ëÁ» pHYs  šœ OiCCPPhotoshop ICC profilexÚSgTSé=÷ÞôBKˆ€”KoR RB‹€‘&*! Jˆ!¡ÙQÁEEÈ ˆŽŽ€ŒQ, Š Øä!¢Žƒ£ˆŠÊûá{£kÖ¼÷æÍþµ×>ç¬ó³ÏÀ –H3Q5€ ©BàƒÇÄÆáä.@ $p³d!sý#ø~<<+"À¾xÓ ÀM›À0‡ÿêB™\€„Àt‘8K€@zŽB¦@F€˜&S `ËcbãP-`'æÓ€ø™{[”! ‘ eˆDh;¬ÏVŠEX0fKÄ9Ø-0IWfH°·ÀÎ ² 0Qˆ…){`È##x„™FòW<ñ+®ç*x™²<¹$9E[-qWW.(ÎI+6aaš@.Ây™24àóÌ ‘àƒóýxήÎÎ6޶_-ê¿ÿ"bbãþåÏ«p@át~Ñþ,/³€;€mþ¢%îh^  u÷‹f²@µ éÚWópø~<ß5°j>{‘-¨]cöK'XtÀâ÷ò»oÁÔ(€hƒáÏwÿï?ýG %€fI’q^D$.Tʳ?ÇD *°AôÁ,ÀÁÜÁ ü`6„B$ÄÂBB d€r`)¬‚B(†Í°*`/Ô@4ÀQh†“p.ÂU¸=púažÁ(¼ AÈa!ÚˆbŠX#Ž™…ø!ÁH‹$ ɈQ"K‘5H1RŠT UHò=r9‡\Fº‘;È2‚ü†¼G1”²Q=Ô µC¹¨7„F¢ Ðdt1š ›Ðr´=Œ6¡çЫhÚ>CÇ0Àè3Äl0.ÆÃB±8, “c˱"¬ «Æ°V¬»‰õcϱwEÀ 6wB aAHXLXNØH¨ $4Ú 7 „QÂ'"“¨K´&ºùÄb21‡XH,#Ö/{ˆCÄ7$‰C2'¹I±¤TÒÒFÒnR#é,©›4H#“ÉÚdk²9”, +È…ääÃä3ää!ò[ b@q¤øSâ(RÊjJåå4åe˜2AU£šRݨ¡T5ZB­¡¶R¯Q‡¨4uš9̓IK¥­¢•Óhh÷i¯ètºÝ•N—ÐWÒËéGè—èôw †ƒÇˆg(›gw¯˜L¦Ó‹ÇT071ë˜ç™™oUX*¶*|‘Ê •J•&•*/T©ª¦ªÞª UóUËT©^S}®FU3Sã© Ô–«UªPëSSg©;¨‡ªg¨oT?¤~Yý‰YÃLÃOC¤Q ±_ã¼Æ c³x,!k «†u5Ä&±ÍÙ|v*»˜ý»‹=ª©¡9C3J3W³Ró”f?ã˜qøœtN ç(§—ó~ŠÞï)â)¦4L¹1e\kª–—–X«H«Q«Gë½6®í§¦½E»YûAÇJ'\'GgÎçSÙSݧ §M=:õ®.ªk¥¡»Dw¿n§î˜ž¾^€žLo§Þy½çú}/ýTýmú§õG X³ $Û Î<Å5qo</ÇÛñQC]Ã@C¥a•a—á„‘¹Ñ<£ÕFFŒiÆ\ã$ãmÆmÆ£&&!&KMêMîšRM¹¦)¦;L;LÇÍÌÍ¢ÍÖ™5›=1×2ç›ç›×›ß·`ZxZ,¶¨¶¸eI²äZ¦Yî¶¼n…Z9Y¥XUZ]³F­­%Ö»­»§§¹N“N«žÖgðñ¶É¶©·°åØÛ®¶m¶}agbg·Å®Ã“}º}ý= ‡Ù«Z~s´r:V:ޚΜî?}Åô–é/gXÏÏØ3ã¶Ë)ÄiS›ÓGgg¹sƒóˆ‹‰K‚Ë.—>.›ÆÝȽäJtõq]ázÒõ›³›Âí¨Û¯î6îiî‡ÜŸÌ4Ÿ)žY3sÐÃÈCàQåÑ? Ÿ•0k߬~OCOgµç#/c/‘W­×°·¥wª÷aï>ö>rŸã>ã<7Þ2ÞY_Ì7À·È·ËOÃož_…ßC#ÿdÿzÿѧ€%g‰A[ûøz|!¿Ž?:Ûeö²ÙíAŒ ¹AA‚­‚åÁ­!hÈì­!÷ç˜Î‘Îi…P~èÖÐaæa‹Ã~ '…‡…W†?ŽpˆXÑ1—5wÑÜCsßDúD–DÞ›g1O9¯-J5*>ª.j<Ú7º4º?Æ.fYÌÕXXIlK9.*®6nl¾ßüíó‡ââ ã{˜/È]py¡ÎÂô…§©.,:–@LˆN8”ðA*¨Œ%òw%Ž yÂÂg"/Ñ6шØC\*NòH*Mz’쑼5y$Å3¥,幄'©¼L LÝ›:žšv m2=:½1ƒ’‘qBª!M“¶gêgæfvˬe…²þÅn‹·/•Ék³¬Y- ¶B¦èTZ(×*²geWf¿Í‰Ê9–«ž+Íí̳ÊÛ7œïŸÿíÂá’¶¥†KW-X潬j9²‰Š®Û—Ø(Üxå‡oÊ¿™Ü”´©«Ä¹dÏfÒféæÞ-ž[–ª—æ—n ÙÚ´ ßV´íõöEÛ/—Í(Û»ƒ¶C¹£¿<¸¼e§ÉÎÍ;?T¤TôTúT6îÒݵa×ønÑî{¼ö4ìÕÛ[¼÷ý>ɾÛUUMÕfÕeûIû³÷?®‰ªéø–ûm]­NmqíÇÒý#¶×¹ÔÕÒ=TRÖ+ëGǾþïw- 6 UœÆâ#pDyäé÷ ß÷ :ÚvŒ{¬áÓvg/jBšòšF›Sšû[b[ºOÌ>ÑÖêÞzüGÛœ499â?rýéü§CÏdÏ&žþ¢þË®/~øÕë×Îјѡ—ò—“¿m|¥ýêÀë¯ÛÆÂƾÉx31^ôVûíÁwÜwï£ßOä| (ÿhù±õSЧû“““ÿ˜óüc3-ÛgAMA±Ž|ûQ“ cHRMz%€ƒùÿ€éu0ê`:˜o’_ÅFÚIDATxÚìZmpS×™>÷Jºú´%K–Œ±ƒƒ«Cøˆ³SpÊvŠËRJfgmÿ);M\O“lêÝ…@ºÍ°d€L&°;ƒét'P†¬—°;ÃT?ølrêÔ±‹‰±Œl°dY²î•tï=gsQäJŠßš{ÎçsÞç}ßóž )¥`VfHÐ,³h΢ù—þòÆÿ}=8Œ®u•›Ê‹Òÿ ‰Á#»zB—X…å%ž-Z^áx÷þ¬ÿοÞ;óŠÝèÒž«œÏ¯(ÝÞÕ;¾íÕat½YÓ:éL?(ÿiz[&ïøBbP{}³¦Õati¯G:wëÿ„={¬e?xò§k™JN÷~t¼{ÿT „Äà{g_ùqåkUÎÀÁË[l“  XW¹éÙ¢Õ§{?:xyë¯j¦ÿõÛË[¿ª=*ðæÓ½éÜ展{¬eZµœ­A’ÇBR0$Ùs Ú³î©×&N=‚IgÒ1è;xyë³E«Þ÷þ4$˜Šé,œ¸+U€³'ËÙè}ÍY4gå®.Û\0‹Âý ¥BÈi/!¼Ž›7ßéòØg¤7߉ŽÇšéEóòg ÊÇÝnÎuxæåÿ{!ŒÀ3óõz[®©°(oÆ»åÍZ\¦_8—O)ô³¿$èXN·ÝhÒÿm¢ÉspÕ"a¥WQ]vüßçÄ:\¾3§ 0w ßÌ~(ÈðÊ@ÙÃ£ŽæO¾kª^`è Êsr0Bð=V1ó l“âH)¥ì—ÜŠs(@Q!d¯ðFs~!ß;¨XMÈ, ÏÆÇ$òàÆ²çYò2м… !”J %*¥Pr M!Cˆ D!Ñä˜>hößTÌʳr'.I'?—èX¹y–‰PB‰J1å¦"Õ+XÌ:@q$>4 ‹ñ$G“EsˆrˆÐmö?Zhž¼œXþ´aÛ ލt ŽÇ9vs&”*Uê2Í]\´|¡³ÊÈÄÔÐXb0!è1Í5©XL Fâ}#ÑQ)Ééæà™€f…fÃÊæ%å5KËÇSк}]ÿÞcÛfj‘×nÈ­íòCØ6‹Õh22 ¤*\˜ç}~þš›ñNß_þÓi+)°ZõFŒD õœjÐAUy«`v˜ _^ Šc”`0™€ÞÍÝ?;¼ ¨ªµ}OóëYIS]Ë‹Õõ1q´õÔîû]žs´åü@¨¯q窇„Y é'kB(QÀüœùËŸ¨cÎŽ)þÿíºa¶ Oä-X0§Ò¬7$åd s¼Š1æ ¼þ³¯Cqu`BãnêÎh6Õµ,-¯Ùr`c»¿M+Ü{l[L‘åY¶‡iRŒéŠIQ©]ïøŽë)& ‰˜ V»Ñ%Êc#âÍÏú‡ÃRð ¼ŽC€ÃËÂ0™+ ñÞX2 „û|˜šµÞ51)’¥&¡¾û_Þ@¨ï…_>ùÐÐ4u銉*É)0ë9…Œ©„§”9@ÄaŽRzuøŠ™×-ñx1B¨ƒR(!ùKi^Îç!„!„ÞROîÞtçþ9þW½ž¿e1%4WgË7ê ˆ«‚¢É`,å€ ®†ûJíEy‚]ªó”RBˆBTw^Nï‘h*©òaH)„4 ÝŒŠ£nGqS]Ë4>§ae³ÛQl1Úvzc{ã>æ¬bR¤µ}z­wMEQ•ÛQÜÚ¾‡YvÛ–Yù‹Õõš†6ÕµTx¼íþ¶˜8ÚT×âvÚým;½“"é¤Y[]ÏÆê ø[Û÷LJ ‰)8M7)¡¹zF2QãpR2uuøO(ÀqQBI ÇÃNs¾¢(BÇ˪ÊaÙbÐͱšÂC§§”§”RFõ; ùñÙƒMu- +›V6·ûÛ4v3p+<Þ›O°’®€ÿçu-[lŒI‘Zº†ÅŽÃ¯Ÿ|û+‹Ãê,-¯iþ`ýîŸމ£6Ÿ¨ðxY9Û•¦ºmèvÛÞ^jr¶7î«õ®q;Š5OÅjn9°±ùƒõµÞ5oýä7Û÷°Åš·œ$¥‚Ѹj@TjÑqÈ”&0ô„®ô†ºŸ)zÑ&œ»ú;…$à(!*¹´aˆx„1Âa»YP¨ª¢"DÅôÎ9¤ÖS»÷ÛÆ”¢Ö»†ÁÚ°²ùüΡ¦º–®€Ùæ‚Ïd•w~Õl÷·½søuÀÚêz·£ø…_>ÉVèv3mm÷·E¥HãÎUé+o=µ{Ùæ‚ Ý>†/ë6&EXW/Û’ ·©®åB·)c»¿íèÙƒlã—m.˜J€ª’Û‡q <‚bD¯^ëv€DyD’£@Œ ÂT0èf›ŽÇ<‡9Œ/èu"ͤ'*¡ê­<{6Lg‹Ôëv¯­®¯ðx—–×4¬l¾Øí»Ðíc ›á”X¹ÛQ\áñ„ú¢âhzm¢b¶é1Ã@¨/&E,BŽÛQ܈hìÎð‡–,Â9¥`A§1]‚\4ûÓàŸã)QÏm†Â¨LÈq1¦‹£ç£×ýü°'?Bp5V)Y¼°ÃHÏaªŽÛ_éèn]ðÞcÛš?XÏ4ˆñtšÊ­ðLù“ô¡­ÌŒôwܱU2)ßÎQ ¨õë‘þÁé9¡Â¹ÜnuE"Ò•/q™@îh,Ùy5xèäg_ô^?óÅ•K_õ ‰”BÙZÂé³Å»}YÆ’éJ”îFîAXs¶‘Œ].tû² 3bJ˰D™ˆ©±°a¹!fPSrcj´’>¿pó†þaÕ§ÝF]ýÜÓK+ç©D¥DU'oGš0;4·7îcÖjRIGj¢¸Å]ÿŒ„¥éªÝðo9°±+àoªk9¿sèÀæŸ=8½¹ÔDKŒƒ !D0&©*Q!€RQR“J3ï·tIé‚KÝ÷î鿱¾ö™»%•R) 2Q Q‡£"ÄŽg˜²; ±eâqpmu}»¿íÂÔÊgÇ¡7îØ[6§ÏŒ½Ðí[[]ŸqBËFÆb -ã !'d'á­zK,5F(D‰ˆ×ylrÚ JrŠŸùÒßsmA‰ëï—.Ôq\$&ÉD”ÊŠOŇÂI„Ä·„Ù1}Ïˇ4LÖV×ïyùÐ@¨o˧¦·Ö¿«ÕYR^Ó¸s•¦¼ ljjάÛQ¬ý5 UiSr;Š/dam2mETŒ% €„á°8Qž[dó8A&r ÒéÎoCóþãèùãg¾(qç{KÝWúo¼û»O/þ¹! +$!'û#a1†9ˆ9„0„h<ó1þuÂT÷éZt­-’©¤æ”µè¯+àgn—E£éVL‹75óÇbu-ÞÔbØôxÀöÃ"äœ|û+Ͷ4î\õÖúw×V×OÏMè…î¢ÓÓq,ü¼˜ÝY(] ç:æW¸Óï,‰BU…°_–Π@ CÌ!Äÿ"|K+Ó ô˜ Ÿþí•Òr—g^þÝß§ÃIïÓ¿•>}¥ÿ뛘Ã.}ü#(…”R4ù·àÛñ­Ç_Kä”ríÊ!ÄåqŒ§éTŠ0˜úÍ›r €„!D ó+%@B·¿-~l%™”¯t]¿Òuýþ»‚þÿbj·=IEND®B`‚././@LongLink0000000000000000000000000000017400000000000011567 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/booking-mvc/src/main/webapp/images/btn.bg.giflibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/booking-mvc/src/main/w0000644000000000000000000000010611360615644027660 0ustar GIF89a#€e¢Bÿÿÿ!þCreated with The GIMP,# „©Ëí£œ´ZT;././@LongLink0000000000000000000000000000017100000000000011564 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/booking-mvc/src/main/webapp/images/tse.giflibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/booking-mvc/src/main/w0000644000000000000000000000537611360615632027673 0ustar GIF89aÈç¬HHHIIIJJJKKKLLLMMMNNNOOOPPPQQQRRRSSSTTTUUUVVVWWWXXXYYY[[[]]]^^^```aaabbbcccdddfffggghhhiiijjjkkklllmmmnnnooopppqqqrrrssstttuuuvvvwwwxxxyyyzzz{{{|||}}}~~~‚‚‚ƒƒƒ„„„………‡‡‡ˆˆˆ‰‰‰ŠŠŠ‹‹‹ŒŒŒŽŽŽ‘‘‘’’’“““”””•••–––———˜˜˜™™™ššš›››œœœžžžŸŸŸ   ¡¡¡¢¢¢£££¤¤¤¥¥¥¦¦¦§§§¨¨¨©©©ªªª«««¬¬¬­­­®®®¯¯¯±±±²²²³³³´´´µµµ¶¶¶···¸¸¸¹¹¹ººº»»»¼¼¼½½½¾¾¾¿¿¿ÁÁÁÂÂÂÃÃÃÄÄÄÅÅÅÆÆÆÇÇÇÈÈÈÉÉÉÊÊÊÌÌÌÍÍÍÎÎÎÏÏÏÑÑÑÒÒÒÓÓÓÔÔÔÕÕÕÖÖÖ×××ØØØÙÙÙÚÚÚÛÛÛÜÜÜÝÝÝÞÞÞßßßàààáááâââãããäääåååæææçççèèèéééêêêëëëíííîîîïïïðððñññòòòóóóôôôõõõööö÷÷÷øøøùùùúúúûûûüüüýýýþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ!þCreated with The GIMP!ù ÿ,È@þY Hp`©L„Ü(ìsIÔ*“"J”˜‰+T™&N¤”i”ÀP•$nJui¢©š$Z*5ÐTJ… ]òX°¦Í›8sêÜɳ§OY²ä’åLÁP]$XÊ€€}R5ºTÚT›rjͦ>8iÈj€S Æ2uÄêªl*R¡¡®] _P ¬¤Cƒ‚›tØ(sKŠ•6-¹kWF©SGk8±D‘@6$â°%¹î–Q•@ä½S¢Ì©R2t°BÓÁ2Îxb¨v DQ-zRaj(ôNµi ëR´×`º€Ä×¥aÕÐ`‰•ª?Îþaµjšf›þ²øéAQ†l«$©"U7BtJÑ#ó5O=R¯^’ªGƒÔ$ "‡˜‚&¬¤ÂŸz”2H%ð „žk²_m™DÈ " ÖVÉ ¬Œ±+ ¶ôEK Ã+ ¸”¢L¥… 0uÀÆÀÀ[üPS páXbM…A ¬à 'JÙØ ?2Ń'͵N†¨PDu›ô`Ã!ª¶Ä&‚YŠé@fM¦!BA’0±B!¬`¦Ù(DqSh¨@ˆA© äÆVTb)}¨€&$ÁÉO¬DRãRÐqŠ&05À#ÃÕTœv|Дª ]‘UY’FxÚÉ1•þšt MÅÅŠ•8=ÂB’°’E0*æšñ-¡¦Mm¾I*ÔŸ›å¹§hz±ò<Œ š&B¤ A¤„ÑÁ©Ìà¨Mx°ÂÈ%¬¤KÐ'O @–ìfÅ”H$’£½M”b*Ñ5ÕÁšJ·'MLJ•A0Z%]’ñ ‰!DA¥@ lB16Bu°¢Xg&à™d D±È³™mÖ™.`Ú ‹<$jª ¤‰8€P|°DâËŠ¼`´ÑCdJ..¥@ U,òI„S­ Mýãw|² @jñoÀSAF ÚéÐTÒe’ƙԄ+N’ôÀ þÈ:ŒIÐ$-8‘&±J»YP&Sœ ´xêiSh_tñÁ7êG _ÔÔ »>z“ˆ8bÉY°°SHb/ \qɧK0«¬!ÐØ¨p Y¡BSt´õÖT¶Î}Ó&O˜°Ä]TwØvˆ%©ˆl,áA¦ì)‚¤À…ŒKû8µ¬r™* îÞdn'6•hS)^œžUQÄØq9"‡@Úž°ÜQ'vh’ÁXñ¬n)¨ÄÃ~˜Àyö¦ŠCÌ€–MÓÂTð „Ð^AÂE‚9 "|9¨ L.¹j±CØ@Î8á„ü€0þWpA ê —ÄÀ„ÄN2†ø& ‘€Ïê<Ð…×í«)è€È„;é)³ N¤<¾¡‚%4Ä ôth¤Ä 8‡BJü)Ä$ô¢Ÿ‚ÿY!6¡%¨C(ƒq’tB!0¤!uH üâ¦@¢r¤òÀ  áŠT‘Àº(#ˆ9 | Ú`ùPP†{)„ ‚<À'zHÁ@˜ÁÀÄ /HAb–PBÊ¡mò€ ‹@‚' †2tƒ@x&¬À™@8!…üÐ `p ü#"&Èäˆ6IŠ*hÊ þ ÃpHS!E&‚µþí¡8´QXÙ”ü ¯üƒ«šÂ‡Mh" €†à¹[©àJ7Å<€S¡kЋ÷¸ÁÙD…IE@à‡:µ¬qÓÂÁ ØÎ@]â0øÖ@BQÅ5 ~5áˆLQåAK¦r+ô&v8rÒ0Ð ‚¡SÁ´ó;¦ïЃZ× Î¹ aAH*æp¸ÀY)+BQ i 2ˆžzÀð' !XBܸ¦r‘ÀA%Î7ˆ@9™ ðÀŸGT t6álà@ªè 4€J¦DÀ Ÿ`þXÊ© E:`K'‰7Ál¾g ƒˆlÐ+tì.%¬×Ì Þ!ÑTHp°-8̦wÚ@ eˆTÔC°"Äɼ¾æˆ2„)ŒFì” ™ØÁR€xbipSàˆ©ÀD’°ì06” ««a¿´­Mdupƒjõ0Ú$w 2¸}Þq¯÷RÃÉ5 Z¤IøW“î• *ðƒå0W“F­\@@jA–ZM°`¿"8Ãì×Ktª F š²K(Øš[WÿÀ¤¦à4˜@Ór[ᛜb ' +@!…Ì B¯€!1É›L

Logout

You have successfully logged out.

">Continue

././@LongLink0000000000000000000000000000017300000000000011566 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/booking-mvc/src/main/webapp/WEB-INF/layouts/libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/booking-mvc/src/main/w0000755000000000000000000000000011360615644027661 5ustar ././@LongLink0000000000000000000000000000020700000000000011564 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/booking-mvc/src/main/webapp/WEB-INF/layouts/standard.jsplibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/booking-mvc/src/main/w0000644000000000000000000000572511360615644027674 0ustar <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> <%@ taglib prefix="tiles" uri="http://tiles.apache.org/tags-tiles" %> <%@ taglib prefix="security" uri="http://www.springframework.org/security/tags" %> Spring Travel: Spring MVC and Web Flow Reference Application " />
././@LongLink0000000000000000000000000000020600000000000011563 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/booking-mvc/src/main/webapp/WEB-INF/layouts/layouts.xmllibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/booking-mvc/src/main/w0000644000000000000000000000051311360615636027663 0ustar ././@LongLink0000000000000000000000000000017400000000000011567 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/booking-mvc/src/main/webapp/WEB-INF/intro.jsplibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/booking-mvc/src/main/w0000644000000000000000000000272611360615640027666 0ustar <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>

Welcome to Spring Travel

This reference application shows how to use Spring MVC, Spring Javascript, and Spring Web Flow together with JavaServerPages (JSP) and Tiles to power rich web applications.

The key features illustrated in this sample include:

  • A declarative navigation model enabling full browser button support and dynamic navigation rules
  • A fine-grained state management model, including support for ConversationScope and ViewScope
  • Modularization of web application functionality by domain use case, illustrating project structure best-practices
  • Managed persistence contexts with the Java Persistence API (JPA)
  • Unified Expression Language (EL) integration
  • Spring Security integration
  • Annotated POJO @Controllers for implementing RESTful user interactions.
  • Declarative page authoring with JSP, JSTL, and Spring MVC's form tag library
  • Page layout and composition with Tiles
  • A Javascript API for decorating HTML elements with behaviors such as Ajax, validation, and effects.
  • Exception handling support across all layers of the application
  • Spring IDE tooling integration, with support for graphical flow modeling and visualization

Start your Spring Travel experience

././@LongLink0000000000000000000000000000017200000000000011565 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/booking-mvc/src/main/webapp/WEB-INF/web.xmllibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/booking-mvc/src/main/w0000644000000000000000000000431311360615632027661 0ustar contextConfigLocation /WEB-INF/config/web-application-config.xml springSecurityFilterChain org.springframework.web.filter.DelegatingFilterProxy springSecurityFilterChain /* org.springframework.web.context.ContextLoaderListener Resources Servlet org.springframework.js.resource.ResourceServlet 0 Resources Servlet /resources/* Spring MVC Dispatcher Servlet org.springframework.web.servlet.DispatcherServlet contextConfigLocation 1 Spring MVC Dispatcher Servlet /spring/* index.html ././@LongLink0000000000000000000000000000017400000000000011567 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/booking-mvc/src/main/webapp/WEB-INF/login.jsplibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/booking-mvc/src/main/w0000644000000000000000000000542111360615632027662 0ustar <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> <%@ taglib prefix="form" uri="http://www.springframework.org/tags/form" %> <%@ page import="org.springframework.security.ui.AbstractProcessingFilter" %> <%@ page import="org.springframework.security.ui.webapp.AuthenticationProcessingFilter" %> <%@ page import="org.springframework.security.AuthenticationException" %>

Login Required

Your login attempt was not successful, try again.

Reason: <%= ((AuthenticationException) session.getAttribute(AbstractProcessingFilter.SPRING_SECURITY_LAST_EXCEPTION_KEY)).getMessage() %>

Valid username/passwords are:

  • keith/melbourne
  • erwin/leuven
  • jeremy/atlanta
  • scott/rochester
" method="post">
value="<%= session.getAttribute(AuthenticationProcessingFilter.SPRING_SECURITY_LAST_USERNAME_KEY) %>" />
././@LongLink0000000000000000000000000000017300000000000011566 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/booking-mvc/src/main/webapp/WEB-INF/classes/libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/booking-mvc/src/main/w0000755000000000000000000000000011360615634027660 5ustar ././@LongLink0000000000000000000000000000021300000000000011561 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/booking-mvc/src/main/webapp/WEB-INF/classes/log4j.propertieslibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/booking-mvc/src/main/w0000644000000000000000000000066711360615634027673 0ustar log4j.rootCategory=INFO, stdout log4j.appender.stdout=org.apache.log4j.ConsoleAppender log4j.appender.stdout.layout=org.apache.log4j.PatternLayout log4j.appender.stdout.layout.ConversionPattern=%d %p [%c] - <%m>%n # Enable web flow logging log4j.category.org.springframework.webflow=DEBUG log4j.category.org.springframework.faces=DEBUG log4j.category.org.springframework.binding=DEBUG log4j.category.org.springframework.transaction=DEBUG././@LongLink0000000000000000000000000000017400000000000011567 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/booking-mvc/src/main/webapp/WEB-INF/views.xmllibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/booking-mvc/src/main/w0000644000000000000000000000117711360615634027670 0ustar ././@LongLink0000000000000000000000000000017200000000000011565 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/booking-mvc/src/main/webapp/WEB-INF/config/libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/booking-mvc/src/main/w0000755000000000000000000000000011360615646027663 5ustar ././@LongLink0000000000000000000000000000021500000000000011563 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/booking-mvc/src/main/webapp/WEB-INF/config/security-config.xmllibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/booking-mvc/src/main/w0000644000000000000000000000333211360615642027662 0ustar ././@LongLink0000000000000000000000000000021400000000000011562 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/booking-mvc/src/main/webapp/WEB-INF/config/webflow-config.xmllibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/booking-mvc/src/main/w0000644000000000000000000000430511360615646027667 0ustar ././@LongLink0000000000000000000000000000021300000000000011561 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/booking-mvc/src/main/webapp/WEB-INF/config/webmvc-config.xmllibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/booking-mvc/src/main/w0000644000000000000000000000516611360615634027672 0ustar /WEB-INF/layouts/layouts.xml /WEB-INF/views.xml /WEB-INF/hotels/views.xml /WEB-INF/hotels/booking/views.xml ././@LongLink0000000000000000000000000000022400000000000011563 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/booking-mvc/src/main/webapp/WEB-INF/config/web-application-config.xmllibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/booking-mvc/src/main/w0000644000000000000000000000166211360615642027666 0ustar ././@LongLink0000000000000000000000000000022000000000000011557 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/booking-mvc/src/main/webapp/WEB-INF/config/data-access-config.xmllibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/booking-mvc/src/main/w0000644000000000000000000000321011360615640027653 0ustar ././@LongLink0000000000000000000000000000017200000000000011565 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/booking-mvc/src/main/webapp/WEB-INF/hotels/libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/booking-mvc/src/main/w0000755000000000000000000000000011360615644027661 5ustar ././@LongLink0000000000000000000000000000021300000000000011561 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/booking-mvc/src/main/webapp/WEB-INF/hotels/bookingsTable.jsplibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/booking-mvc/src/main/w0000644000000000000000000000252511360615634027666 0ustar <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> <%@ taglib prefix="security" uri="http://www.springframework.org/security/tags" %>

Current Hotel Bookings

No bookings found
Name Address City, State Check in Date Check out Date Confirmation Number Action
${booking.hotel.name} ${booking.hotel.address} ${booking.hotel.city}, ${booking.hotel.state} ${booking.checkinDate} ${booking.checkoutDate} ${booking.id} Cancel
././@LongLink0000000000000000000000000000020200000000000011557 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/booking-mvc/src/main/webapp/WEB-INF/hotels/show.jsplibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/booking-mvc/src/main/w0000644000000000000000000000261711360615632027666 0ustar <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> <%@ taglib prefix="spring" uri="http://www.springframework.org/tags" %> <%@ taglib prefix="form" uri="http://www.springframework.org/tags/form" %>

View Hotel

Name:
${hotel.name}
Address:
${hotel.address}
City:
${hotel.city}
State:
${hotel.state}
Zip:
${hotel.zip}
Country:
${hotel.country}
Nightly rate:
${status.value}
 
././@LongLink0000000000000000000000000000021500000000000011563 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/booking-mvc/src/main/webapp/WEB-INF/hotels/hotelSearchForm.jsplibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/booking-mvc/src/main/w0000644000000000000000000000231311360615642027660 0ustar <%@ taglib prefix="form" uri="http://www.springframework.org/tags/form" %>

Search Hotels

././@LongLink0000000000000000000000000000020300000000000011560 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/booking-mvc/src/main/webapp/WEB-INF/hotels/views.xmllibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/booking-mvc/src/main/w0000644000000000000000000000163411360615632027664 0ustar ././@LongLink0000000000000000000000000000020200000000000011557 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/booking-mvc/src/main/webapp/WEB-INF/hotels/booking/libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/booking-mvc/src/main/w0000755000000000000000000000000011360615642027657 5ustar ././@LongLink0000000000000000000000000000023100000000000011561 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/booking-mvc/src/main/webapp/WEB-INF/hotels/booking/enterBookingDetails.jsplibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/booking-mvc/src/main/w0000644000000000000000000000074311360615640027663 0ustar <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> <%@ taglib prefix="spring" uri="http://www.springframework.org/tags" %> <%@ taglib prefix="form" uri="http://www.springframework.org/tags/form" %> <%@ taglib prefix="tiles" uri="http://tiles.apache.org/tags-tiles" %>

Book Hotel

././@LongLink0000000000000000000000000000022300000000000011562 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/booking-mvc/src/main/webapp/WEB-INF/hotels/booking/reviewBooking.jsplibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/booking-mvc/src/main/w0000644000000000000000000000364611360615642027672 0ustar <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> <%@ taglib prefix="spring" uri="http://www.springframework.org/tags" %> <%@ taglib prefix="form" uri="http://www.springframework.org/tags/form" %>

Confirm Hotel Booking

Name:
${booking.hotel.name}
Address:
${booking.hotel.address}
City, State:
${booking.hotel.city}, ${booking.hotel.state}
Zip:
${booking.hotel.zip}
Country:
${booking.hotel.country}
Total payment:
${status.value}
Check In Date:
${status.value}
Check Out Date:
${status.value}
Credit Card #:
${booking.creditCard}
     
././@LongLink0000000000000000000000000000021600000000000011564 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/booking-mvc/src/main/webapp/WEB-INF/hotels/booking/messages.jsplibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/booking-mvc/src/main/w0000644000000000000000000000023211360615640027654 0ustar <%@ taglib prefix="form" uri="http://www.springframework.org/tags/form" %>
././@LongLink0000000000000000000000000000022500000000000011564 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/booking-mvc/src/main/webapp/WEB-INF/hotels/booking/messages.propertieslibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/booking-mvc/src/main/w0000644000000000000000000000120311360615640027653 0ustar booking.checkinDate.required=The check in date is required booking.checkinDate.typeMismatch=The check in date must be in the format mm-dd-yyyy booking.checkinDate.beforeToday=The check in date must be a future date booking.checkoutDate.required=The check out date is required booking.checkoutDate.typeMismatch=The check out date must be in the format mm-dd-yyyy booking.checkoutDate.beforeCheckinDate=The check out date must be later than the check in date booking.creditCard.required=The credit card must be a valid 16 digit number booking.creditCardName.required=The name on the credit card is required required=The {0} field is required ././@LongLink0000000000000000000000000000022100000000000011560 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/booking-mvc/src/main/webapp/WEB-INF/hotels/booking/bookingForm.jsplibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/booking-mvc/src/main/w0000644000000000000000000001444611360615634027673 0ustar <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> <%@ taglib prefix="spring" uri="http://www.springframework.org/tags" %> <%@ taglib prefix="form" uri="http://www.springframework.org/tags/form" %>
Name:
${booking.hotel.name}
Address:
${booking.hotel.address}
City, State:
${booking.hotel.city}, ${booking.hotel.state}
Zip:
${booking.hotel.zip}
Country:
${booking.hotel.country}
Nightly rate:
${status.value}
Smoking Preference:
Amenities:
   
././@LongLink0000000000000000000000000000022200000000000011561 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/booking-mvc/src/main/webapp/WEB-INF/hotels/booking/booking-flow.xmllibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/booking-mvc/src/main/w0000644000000000000000000000317111360615642027663 0ustar ././@LongLink0000000000000000000000000000021300000000000011561 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/booking-mvc/src/main/webapp/WEB-INF/hotels/booking/views.xmllibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/booking-mvc/src/main/w0000644000000000000000000000146211360615642027664 0ustar ././@LongLink0000000000000000000000000000020400000000000011561 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/booking-mvc/src/main/webapp/WEB-INF/hotels/search.jsplibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/booking-mvc/src/main/w0000644000000000000000000000433211360615644027665 0ustar <%@ taglib prefix="tiles" uri="http://tiles.apache.org/tags-tiles" %> <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> <%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions"%>

Hotel Results

Change Search

Name Address City, State Zip Action
${hotel.name} ${hotel.address} ${hotel.city}, ${hotel.state}, ${hotel.country} ${hotel.zip} View Hotel
No hotels found
Previous Results More Results
././@LongLink0000000000000000000000000000020300000000000011560 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/booking-mvc/src/main/webapp/WEB-INF/hotels/index.jsplibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/booking-mvc/src/main/w0000644000000000000000000000025011360615634027657 0ustar <%@ taglib prefix="tiles" uri="http://tiles.apache.org/tags-tiles" %> ././@LongLink0000000000000000000000000000016200000000000011564 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/booking-mvc/src/main/webapp/styles/libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/booking-mvc/src/main/w0000755000000000000000000000000011360615632027656 5ustar ././@LongLink0000000000000000000000000000017500000000000011570 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/booking-mvc/src/main/webapp/styles/booking.csslibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/booking-mvc/src/main/w0000644000000000000000000000510011360615632027654 0ustar a, a:visited, a:link, a:active { color: #59924B; background-color: transparent; text-decoration: none; font-weight: bold; } a:hover { color: white; background-color: #65a242; text-decoration: none; font-weight: bold; } body.spring { background-color: #9cac7c; } form div, form p { padding: 0px; margin: 0 0 .5em 0; } #header.spring { margin: 0 0 1em 0; padding: 0px 0px; background-color : #414f23; } #branding.spring { float: none; width: 100%; margin: 10px 0 0 0; padding: 0 0 0 0; text-align: none; } #welcome { padding: 10px 10px; } #welcome div.left { float: left; } #welcome div.right { float: right; } #content.spring { width: 740px; background: #fff url(../images/bg.gif) 0 0 repeat; margin-bottom: 0px; } #content.spring input[type="submit"], input[type="button"], button { font-size: 1em; font-weight: bold; color: #fff; background: #fff url(../images/btn.bg.gif) 0 0 repeat-x; border-style: none; padding: 2px 2px 2px 2px; } #local.spring{ width: 215px; } #footer.spring { padding: 25px 0; background-color : white; border-top: 1px solid #C3BBB6; } #footer.spring img { float: right; padding-right: 20px; } .errors { font-weight: bold; text-align: left; color: #600; } .errors ul { list-style: none; } .section { text-align: left; width: 505px; float: left; margin-bottom: 5px; } .field { float:left; } .field .label { float: left; padding-top: 5px; padding-right: 5px; font-weight: bold; width: 150px; text-align: right; } .field .input { float: left; width: 250px; text-align: left; } .field .output { float: left; width: 250px; padding-top: 5px; text-align: left; } .buttonGroup { clear: both; text-align: right; } .buttonGroup input[type="submit"], .buttonGroup input[type="button"], .buttonGroup button, .buttonGroup a { margin-left: 5px; margin-right: 5px; } .summary { width: 100%; border: 1px solid #414f23; border-collapse: collapse; } .summary thead th { border-left: 1px solid #414f23; background: #fff url(../images/th.bg.gif) 0 100% repeat-x; border-bottom: 1px solid #414f23; padding: 6px; text-align: left; font-size: small; } .summary tbody td { border-left: 1px solid #9cac7c; padding: 4px; border-bottom: 1px solid #9cac7c; font-size: 8pt; }././@LongLink0000000000000000000000000000016400000000000011566 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/booking-mvc/src/main/webapp/META-INF/libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/booking-mvc/src/main/w0000755000000000000000000000000011360615636027662 5ustar ././@LongLink0000000000000000000000000000017700000000000011572 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/booking-mvc/src/main/webapp/META-INF/MANIFEST.MFlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/booking-mvc/src/main/w0000644000000000000000000000003111360615636027656 0ustar Manifest-Version: 1.0 ././@LongLink0000000000000000000000000000015600000000000011567 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/booking-mvc/src/main/resources/libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/booking-mvc/src/main/r0000755000000000000000000000000011360615644027654 5ustar ././@LongLink0000000000000000000000000000017000000000000011563 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/booking-mvc/src/main/resources/import.sqllibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/booking-mvc/src/main/r0000644000000000000000000001003211360615632027647 0ustar insert into Customer (username, name) values ('keith', 'Keith') insert into Customer (username, name) values ('erwin', 'Erwin') insert into Customer (username, name) values ('jeremy', 'Jeremy') insert into Customer (username, name) values ('scott', 'Scott') insert into Hotel (id, price, name, address, city, state, zip, country) values (1, 199, 'Westin Diplomat', '3555 S. Ocean Drive', 'Hollywood', 'FL', '33019', 'USA') insert into Hotel (id, price, name, address, city, state, zip, country) values (2, 60, 'Jameson Inn', '890 Palm Bay Rd NE', 'Palm Bay', 'FL', '32905', 'USA') insert into Hotel (id, price, name, address, city, state, zip, country) values (3, 199, 'Chilworth Manor', 'The Cottage, Southampton Business Park', 'Southampton', 'Hants', 'SO16 7JF', 'UK') insert into Hotel (id, price, name, address, city, state, zip, country) values (4, 120, 'Marriott Courtyard', 'Tower Place, Buckhead', 'Atlanta', 'GA', '30305', 'USA') insert into Hotel (id, price, name, address, city, state, zip, country) values (5, 180, 'Doubletree', 'Tower Place, Buckhead', 'Atlanta', 'GA', '30305', 'USA') insert into Hotel (id, price, name, address, city, state, zip, country) values (6, 450, 'W Hotel', 'Union Square, Manhattan', 'NY', 'NY', '10011', 'USA') insert into Hotel (id, price, name, address, city, state, zip, country) values (7, 450, 'W Hotel', 'Lexington Ave, Manhattan', 'NY', 'NY', '10011', 'USA') insert into Hotel (id, price, name, address, city, state, zip, country) values (8, 250, 'Hotel Rouge', '1315 16th Street NW', 'Washington', 'DC', '20036', 'USA') insert into Hotel (id, price, name, address, city, state, zip, country) values (9, 300, '70 Park Avenue Hotel', '70 Park Avenue', 'NY', 'NY', '10011', 'USA') insert into Hotel (id, price, name, address, city, state, zip, country) values (10, 300, 'Conrad Miami', '1395 Brickell Ave', 'Miami', 'FL', '33131', 'USA') insert into Hotel (id, price, name, address, city, state, zip, country) values (11, 80, 'Sea Horse Inn', '2106 N Clairemont Ave', 'Eau Claire', 'WI', '54703', 'USA') insert into Hotel (id, price, name, address, city, state, zip, country) values (12, 90, 'Super 8 Eau Claire Campus Area', '1151 W Macarthur Ave', 'Eau Claire', 'WI', '54701', 'USA') insert into Hotel (id, price, name, address, city, state, zip, country) values (13, 160, 'Marriot Downtown', '55 Fourth Street', 'San Francisco', 'CA', '94103', 'USA') insert into Hotel (id, price, name, address, city, state, zip, country) values (14, 200, 'Hilton Diagonal Mar', 'Passeig del Taulat 262-264', 'Barcelona', 'Catalunya', '08019', 'Spain') insert into Hotel (id, price, name, address, city, state, zip, country) values (15, 210, 'Hilton Tel Aviv', 'Independence Park', 'Tel Aviv', '', '63405', 'Israel') insert into Hotel (id, price, name, address, city, state, zip, country) values (16, 240, 'InterContinental Tokyo Bay', 'Takeshiba Pier', 'Tokyo', '', '105', 'Japan') insert into Hotel (id, price, name, address, city, state, zip, country) values (17, 130, 'Hotel Beaulac', ' Esplanade Léopold-Robert 2', 'Neuchatel', '', '2000', 'Switzerland') insert into Hotel (id, price, name, address, city, state, zip, country) values (18, 140, 'Conrad Treasury Place', 'William & George Streets', 'Brisbane', 'QLD', '4001', 'Australia') insert into Hotel (id, price, name, address, city, state, zip, country) values (19, 230, 'Ritz Carlton', '1228 Sherbrooke St', 'West Montreal', 'Quebec', 'H3G1H6', 'Canada') insert into Hotel (id, price, name, address, city, state, zip, country) values (20, 460, 'Ritz Carlton', 'Peachtree Rd, Buckhead', 'Atlanta', 'GA', '30326', 'USA') insert into Hotel (id, price, name, address, city, state, zip, country) values (21, 220, 'Swissotel', '68 Market Street', 'Sydney', 'NSW', '2000', 'Australia') insert into Hotel (id, price, name, address, city, state, zip, country) values (22, 250, 'Meliá White House', 'Albany Street', 'Regents Park London', '', 'NW13UP', 'Great Britain') insert into Hotel (id, price, name, address, city, state, zip, country) values (23, 210, 'Hotel Allegro', '171 West Randolph Street', 'Chicago', 'IL', '60601', 'USA')././@LongLink0000000000000000000000000000016700000000000011571 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/booking-mvc/src/main/resources/META-INF/libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/booking-mvc/src/main/r0000755000000000000000000000000011360615634027653 5ustar ././@LongLink0000000000000000000000000000020600000000000011563 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/booking-mvc/src/main/resources/META-INF/persistence.xmllibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/booking-mvc/src/main/r0000644000000000000000000000204611360615634027657 0ustar org.hibernate.ejb.HibernatePersistence org.springframework.webflow.samples.booking.User org.springframework.webflow.samples.booking.Booking org.springframework.webflow.samples.booking.Hotel ././@LongLink0000000000000000000000000000016700000000000011571 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/booking-mvc/src/main/resources/log4j.xmllibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/booking-mvc/src/main/r0000644000000000000000000000214511360615644027660 0ustar ././@LongLink0000000000000000000000000000015100000000000011562 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/booking-mvc/src/main/java/libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/booking-mvc/src/main/j0000755000000000000000000000000011360615632027641 5ustar ././@LongLink0000000000000000000000000000015500000000000011566 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/booking-mvc/src/main/java/org/libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/booking-mvc/src/main/j0000755000000000000000000000000011360615632027641 5ustar ././@LongLink0000000000000000000000000000017500000000000011570 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/booking-mvc/src/main/java/org/springframework/libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/booking-mvc/src/main/j0000755000000000000000000000000011360615632027641 5ustar ././@LongLink0000000000000000000000000000020500000000000011562 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/booking-mvc/src/main/java/org/springframework/webflow/libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/booking-mvc/src/main/j0000755000000000000000000000000011360615632027641 5ustar ././@LongLink0000000000000000000000000000021500000000000011563 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/booking-mvc/src/main/java/org/springframework/webflow/samples/libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/booking-mvc/src/main/j0000755000000000000000000000000011360615632027641 5ustar ././@LongLink0000000000000000000000000000022500000000000011564 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/booking-mvc/src/main/java/org/springframework/webflow/samples/booking/libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/booking-mvc/src/main/j0000755000000000000000000000000011360615642027642 5ustar ././@LongLink0000000000000000000000000000024100000000000011562 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/booking-mvc/src/main/java/org/springframework/webflow/samples/booking/Booking.javalibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/booking-mvc/src/main/j0000644000000000000000000001163311360615636027653 0ustar package org.springframework.webflow.samples.booking; import java.io.Serializable; import java.math.BigDecimal; import java.text.DateFormat; import java.util.Calendar; import java.util.Date; import java.util.Set; import javax.persistence.Basic; import javax.persistence.Entity; import javax.persistence.GeneratedValue; import javax.persistence.GenerationType; import javax.persistence.Id; import javax.persistence.ManyToOne; import javax.persistence.Temporal; import javax.persistence.TemporalType; import javax.persistence.Transient; import org.springframework.binding.message.MessageBuilder; import org.springframework.binding.message.MessageContext; import org.springframework.binding.validation.ValidationContext; /** * A Hotel Booking made by a User. */ @Entity public class Booking implements Serializable { private Long id; private User user; private Hotel hotel; private Date checkinDate; private Date checkoutDate; private String creditCard; private String creditCardName; private int creditCardExpiryMonth; private int creditCardExpiryYear; private boolean smoking; private int beds; private Set amenities; public Booking() { Calendar calendar = Calendar.getInstance(); setCheckinDate(calendar.getTime()); calendar.add(Calendar.DAY_OF_MONTH, 1); setCheckoutDate(calendar.getTime()); } public Booking(Hotel hotel, User user) { this(); this.hotel = hotel; this.user = user; } @Transient public BigDecimal getTotal() { return hotel.getPrice().multiply(new BigDecimal(getNights())); } @Transient public int getNights() { if (checkinDate == null || checkoutDate == null) { return 0; } else { return (int) (checkoutDate.getTime() - checkinDate.getTime()) / 1000 / 60 / 60 / 24; } } @Id @GeneratedValue(strategy = GenerationType.TABLE) public Long getId() { return id; } public void setId(Long id) { this.id = id; } @Basic @Temporal(TemporalType.DATE) public Date getCheckinDate() { return checkinDate; } public void setCheckinDate(Date datetime) { this.checkinDate = datetime; } @ManyToOne public Hotel getHotel() { return hotel; } public void setHotel(Hotel hotel) { this.hotel = hotel; } @ManyToOne public User getUser() { return user; } public void setUser(User user) { this.user = user; } @Basic @Temporal(TemporalType.DATE) public Date getCheckoutDate() { return checkoutDate; } public void setCheckoutDate(Date checkoutDate) { this.checkoutDate = checkoutDate; } public String getCreditCard() { return creditCard; } public void setCreditCard(String creditCard) { this.creditCard = creditCard; } @Transient public String getDescription() { DateFormat df = DateFormat.getDateInstance(DateFormat.MEDIUM); return hotel == null ? null : hotel.getName() + ", " + df.format(getCheckinDate()) + " to " + df.format(getCheckoutDate()); } public boolean isSmoking() { return smoking; } public void setSmoking(boolean smoking) { this.smoking = smoking; } public int getBeds() { return beds; } public void setBeds(int beds) { this.beds = beds; } public String getCreditCardName() { return creditCardName; } public void setCreditCardName(String creditCardName) { this.creditCardName = creditCardName; } public int getCreditCardExpiryMonth() { return creditCardExpiryMonth; } public void setCreditCardExpiryMonth(int creditCardExpiryMonth) { this.creditCardExpiryMonth = creditCardExpiryMonth; } public int getCreditCardExpiryYear() { return creditCardExpiryYear; } public void setCreditCardExpiryYear(int creditCardExpiryYear) { this.creditCardExpiryYear = creditCardExpiryYear; } @Transient public Set getAmenities() { return amenities; } public void setAmenities(Set amenities) { this.amenities = amenities; } public void validateEnterBookingDetails(ValidationContext context) { MessageContext messages = context.getMessageContext(); if (checkinDate.before(today())) { messages.addMessage(new MessageBuilder().error().source("checkinDate").code( "booking.checkinDate.beforeToday").build()); } else if (checkoutDate.before(checkinDate)) { messages.addMessage(new MessageBuilder().error().source("checkoutDate").code( "booking.checkoutDate.beforeCheckinDate").build()); } } private Date today() { Calendar calendar = Calendar.getInstance(); calendar.add(Calendar.DAY_OF_MONTH, -1); return calendar.getTime(); } @Override public String toString() { return "Booking(" + user + "," + hotel + ")"; } } ././@LongLink0000000000000000000000000000023600000000000011566 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/booking-mvc/src/main/java/org/springframework/webflow/samples/booking/User.javalibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/booking-mvc/src/main/j0000644000000000000000000000212011360615636027642 0ustar package org.springframework.webflow.samples.booking; import java.io.Serializable; import javax.persistence.Entity; import javax.persistence.Id; import javax.persistence.Table; /** * A user who can book hotels. */ @Entity @Table(name = "Customer") public class User implements Serializable { private String username; private String password; private String name; public User() { } public User(String username, String password, String name) { this.username = username; this.password = password; this.name = name; } @Id public String getUsername() { return username; } public void setUsername(String username) { this.username = username; } public String getPassword() { return password; } public void setPassword(String password) { this.password = password; } public String getName() { return name; } public void setName(String name) { this.name = name; } @Override public String toString() { return "User(" + username + ")"; } } ././@LongLink0000000000000000000000000000024100000000000011562 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/booking-mvc/src/main/java/org/springframework/webflow/samples/booking/Amenity.javalibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/booking-mvc/src/main/j0000644000000000000000000000016611360615634027650 0ustar package org.springframework.webflow.samples.booking; public enum Amenity { OCEAN_VIEW, LATE_CHECKOUT, MINIBAR; } ././@LongLink0000000000000000000000000000025300000000000011565 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/booking-mvc/src/main/java/org/springframework/webflow/samples/booking/JpaBookingService.javalibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/booking-mvc/src/main/j0000644000000000000000000000525311360615636027654 0ustar package org.springframework.webflow.samples.booking; import java.util.List; import javax.persistence.EntityManager; import javax.persistence.PersistenceContext; import org.springframework.stereotype.Repository; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import org.springframework.util.StringUtils; /** * A JPA-based implementation of the Booking Service. Delegates to a JPA entity manager to issue data access calls * against the backing repository. The EntityManager reference is provided by the managing container (Spring) * automatically. */ @Service("bookingService") @Repository public class JpaBookingService implements BookingService { private EntityManager em; @PersistenceContext public void setEntityManager(EntityManager em) { this.em = em; } @Transactional(readOnly = true) @SuppressWarnings("unchecked") public List findBookings(String username) { if (username != null) { return em.createQuery("select b from Booking b where b.user.username = :username order by b.checkinDate") .setParameter("username", username).getResultList(); } else { return null; } } @Transactional(readOnly = true) @SuppressWarnings("unchecked") public List findHotels(SearchCriteria criteria) { String pattern = getSearchPattern(criteria); return em.createQuery( "select h from Hotel h where lower(h.name) like " + pattern + " or lower(h.city) like " + pattern + " or lower(h.zip) like " + pattern + " or lower(h.address) like " + pattern).setMaxResults( criteria.getPageSize()).setFirstResult(criteria.getPage() * criteria.getPageSize()).getResultList(); } @Transactional(readOnly = true) public Hotel findHotelById(Long id) { return em.find(Hotel.class, id); } @Transactional(readOnly = true) public Booking createBooking(Long hotelId, String username) { Hotel hotel = em.find(Hotel.class, hotelId); User user = findUser(username); Booking booking = new Booking(hotel, user); em.persist(booking); return booking; } @Transactional public void cancelBooking(Long id) { Booking booking = em.find(Booking.class, id); if (booking != null) { em.remove(booking); } } // helpers private String getSearchPattern(SearchCriteria criteria) { if (StringUtils.hasText(criteria.getSearchString())) { return "'%" + criteria.getSearchString().toLowerCase().replace('*', '%') + "%'"; } else { return "'%'"; } } private User findUser(String username) { return (User) em.createQuery("select u from User u where u.username = :username").setParameter("username", username).getSingleResult(); } }././@LongLink0000000000000000000000000000023700000000000011567 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/booking-mvc/src/main/java/org/springframework/webflow/samples/booking/Hotel.javalibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/booking-mvc/src/main/j0000644000000000000000000000341411360615632027645 0ustar package org.springframework.webflow.samples.booking; import java.io.Serializable; import java.math.BigDecimal; import javax.persistence.Column; import javax.persistence.Entity; import javax.persistence.GeneratedValue; import javax.persistence.Id; /** * A hotel where users may book stays. */ @Entity public class Hotel implements Serializable { private Long id; private String name; private String address; private String city; private String state; private String zip; private String country; private BigDecimal price; @Id @GeneratedValue public Long getId() { return id; } public void setId(Long id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } public String getAddress() { return address; } public void setAddress(String address) { this.address = address; } public String getCity() { return city; } public void setCity(String city) { this.city = city; } public String getZip() { return zip; } public void setZip(String zip) { this.zip = zip; } public String getState() { return state; } public void setState(String state) { this.state = state; } public String getCountry() { return country; } public void setCountry(String country) { this.country = country; } @Column(precision = 6, scale = 2) public BigDecimal getPrice() { return price; } public void setPrice(BigDecimal price) { this.price = price; } public Booking createBooking(User user) { return new Booking(this, user); } @Override public String toString() { return "Hotel(" + name + "," + address + "," + city + "," + zip + ")"; } } ././@LongLink0000000000000000000000000000026600000000000011571 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/booking-mvc/src/main/java/org/springframework/webflow/samples/booking/ApplicationConversionService.javalibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/booking-mvc/src/main/j0000644000000000000000000000111611360615642027643 0ustar package org.springframework.webflow.samples.booking; import org.springframework.binding.convert.converters.StringToDate; import org.springframework.binding.convert.service.DefaultConversionService; import org.springframework.stereotype.Component; @Component("conversionService") public class ApplicationConversionService extends DefaultConversionService { @Override protected void addDefaultConverters() { super.addDefaultConverters(); StringToDate dateConverter = new StringToDate(); dateConverter.setPattern("MM-dd-yyyy"); addConverter("shortDate", dateConverter); } }././@LongLink0000000000000000000000000000025400000000000011566 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/booking-mvc/src/main/java/org/springframework/webflow/samples/booking/BookingFlowHandler.javalibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/booking-mvc/src/main/j0000644000000000000000000000161611360615642027650 0ustar package org.springframework.webflow.samples.booking; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.springframework.webflow.core.FlowException; import org.springframework.webflow.execution.FlowExecutionOutcome; import org.springframework.webflow.execution.repository.NoSuchFlowExecutionException; import org.springframework.webflow.mvc.servlet.AbstractFlowHandler; public class BookingFlowHandler extends AbstractFlowHandler { @Override public String handleExecutionOutcome(FlowExecutionOutcome outcome, HttpServletRequest request, HttpServletResponse response) { return "/hotels/index"; } @Override public String handleException(FlowException e, HttpServletRequest request, HttpServletResponse response) { if (e instanceof NoSuchFlowExecutionException) { return "/hotels/index"; } else { throw e; } } } ././@LongLink0000000000000000000000000000025000000000000011562 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/booking-mvc/src/main/java/org/springframework/webflow/samples/booking/BookingService.javalibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/booking-mvc/src/main/j0000644000000000000000000000231611360615632027645 0ustar package org.springframework.webflow.samples.booking; import java.util.List; /** * A service interface for retrieving hotels and bookings from a backing repository. Also supports the ability to cancel * a booking. */ public interface BookingService { /** * Find bookings made by the given user * @param username the user's name * @return their bookings */ public List findBookings(String username); /** * Find hotels available for booking by some criteria. * @param criteria the search criteria * @return a list of hotels meeting the criteria */ public List findHotels(SearchCriteria criteria); /** * Find hotels by their identifier. * @param id the hotel id * @return the hotel */ public Hotel findHotelById(Long id); /** * Create a new, transient hotel booking instance for the given user. * @param hotelId the hotelId * @param userName the user name * @return the new transient booking instance */ public Booking createBooking(Long hotelId, String userName); /** * Cancel an existing booking. * @param id the booking id */ public void cancelBooking(Long id); } ././@LongLink0000000000000000000000000000025000000000000011562 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/booking-mvc/src/main/java/org/springframework/webflow/samples/booking/SearchCriteria.javalibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/booking-mvc/src/main/j0000644000000000000000000000262111360615636027650 0ustar package org.springframework.webflow.samples.booking; import java.io.Serializable; /** * A backing bean for the main hotel search form. Encapsulates the criteria needed to perform a hotel search. * * It is expected a future milestone of Spring Web Flow 2.0 will allow flow-scoped beans like this one to hold * references to transient services that are restored automatically when the flow is resumed on subsequent requests. * This would allow this SearchCriteria object to delegate to the {@link BookingService} directly, for example, * eliminating the need for the actions in {@link MainActions}. */ public class SearchCriteria implements Serializable { private static final long serialVersionUID = 1L; /** * The user-provided search criteria for finding Hotels. */ private String searchString; /** * The maximum page size of the Hotel result list */ private int pageSize; /** * The current page of the Hotel result list. */ private int page; public String getSearchString() { return searchString; } public void setSearchString(String searchString) { this.searchString = searchString; } public int getPageSize() { return pageSize; } public void setPageSize(int pageSize) { this.pageSize = pageSize; } public int getPage() { return page; } public void setPage(int page) { this.page = page; } }././@LongLink0000000000000000000000000000025200000000000011564 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/booking-mvc/src/main/java/org/springframework/webflow/samples/booking/HotelsController.javalibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/booking-mvc/src/main/j0000644000000000000000000000275211360615640027650 0ustar package org.springframework.webflow.samples.booking; import java.security.Principal; import java.util.List; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; import org.springframework.ui.Model; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod; import org.springframework.web.bind.annotation.RequestParam; @Controller public class HotelsController { private BookingService bookingService; @Autowired public HotelsController(BookingService bookingService) { this.bookingService = bookingService; } @RequestMapping(method = RequestMethod.GET) public void index(SearchCriteria searchCriteria, Principal currentUser, Model model) { if (currentUser != null) { List booking = bookingService.findBookings(currentUser.getName()); model.addAttribute(booking); } } @RequestMapping(method = RequestMethod.GET) public String search(SearchCriteria criteria, Model model) { List hotels = bookingService.findHotels(criteria); model.addAttribute(hotels); return "hotels/search"; } @RequestMapping(method = RequestMethod.GET) public Hotel show(@RequestParam("id") Long id) { return bookingService.findHotelById(id); } @RequestMapping(method = RequestMethod.GET) public String deleteBooking(@RequestParam("id") Long id) { bookingService.cancelBooking(id); return "redirect:index"; } } libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/booking-mvc/src/test/0000755000000000000000000000000011360615646027527 5ustar ././@LongLink0000000000000000000000000000015600000000000011567 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/booking-mvc/src/test/resources/libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/booking-mvc/src/test/r0000755000000000000000000000000011360615646027711 5ustar ././@LongLink0000000000000000000000000000015100000000000011562 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/booking-mvc/src/test/java/libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/booking-mvc/src/test/j0000755000000000000000000000000011360615644027677 5ustar ././@LongLink0000000000000000000000000000015500000000000011566 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/booking-mvc/src/test/java/org/libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/booking-mvc/src/test/j0000755000000000000000000000000011360615644027677 5ustar ././@LongLink0000000000000000000000000000017500000000000011570 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/booking-mvc/src/test/java/org/springframework/libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/booking-mvc/src/test/j0000755000000000000000000000000011360615644027677 5ustar ././@LongLink0000000000000000000000000000020500000000000011562 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/booking-mvc/src/test/java/org/springframework/webflow/libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/booking-mvc/src/test/j0000755000000000000000000000000011360615644027677 5ustar ././@LongLink0000000000000000000000000000021500000000000011563 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/booking-mvc/src/test/java/org/springframework/webflow/samples/libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/booking-mvc/src/test/j0000755000000000000000000000000011360615644027677 5ustar ././@LongLink0000000000000000000000000000022500000000000011564 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/booking-mvc/src/test/java/org/springframework/webflow/samples/booking/libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/booking-mvc/src/test/j0000755000000000000000000000000011360615644027677 5ustar ././@LongLink0000000000000000000000000000026300000000000011566 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/booking-mvc/src/test/java/org/springframework/webflow/samples/booking/BookingFlowExecutionTests.javalibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/booking-mvc/src/test/j0000644000000000000000000000531211360615644027702 0ustar package org.springframework.webflow.samples.booking; import org.easymock.EasyMock; import org.springframework.webflow.config.FlowDefinitionResource; import org.springframework.webflow.config.FlowDefinitionResourceFactory; import org.springframework.webflow.core.collection.LocalAttributeMap; import org.springframework.webflow.core.collection.MutableAttributeMap; import org.springframework.webflow.test.MockExternalContext; import org.springframework.webflow.test.MockFlowBuilderContext; import org.springframework.webflow.test.execution.AbstractXmlFlowExecutionTests; public class BookingFlowExecutionTests extends AbstractXmlFlowExecutionTests { private BookingService bookingService; protected void setUp() { bookingService = EasyMock.createMock(BookingService.class); } @Override protected FlowDefinitionResource getResource(FlowDefinitionResourceFactory resourceFactory) { return resourceFactory.createFileResource("src/main/webapp/WEB-INF/hotels/booking/booking-flow.xml"); } @Override protected void configureFlowBuilderContext(MockFlowBuilderContext builderContext) { builderContext.registerBean("bookingService", bookingService); } public void testStartBookingFlow() { Booking booking = createTestBooking(); EasyMock.expect(bookingService.createBooking(1L, "keith")).andReturn(booking); EasyMock.replay(bookingService); MutableAttributeMap input = new LocalAttributeMap(); input.put("hotelId", "1"); MockExternalContext context = new MockExternalContext(); context.setCurrentUser("keith"); startFlow(input, context); assertCurrentStateEquals("enterBookingDetails"); assertResponseWrittenEquals("enterBookingDetails", context); assertTrue(getRequiredFlowAttribute("booking") instanceof Booking); EasyMock.verify(bookingService); } public void testEnterBookingDetails_Proceed() { setCurrentState("enterBookingDetails"); getFlowScope().put("booking", createTestBooking()); MockExternalContext context = new MockExternalContext(); context.setEventId("proceed"); resumeFlow(context); assertCurrentStateEquals("reviewBooking"); assertResponseWrittenEquals("reviewBooking", context); } public void testReviewBooking_Confirm() { setCurrentState("reviewBooking"); getFlowScope().put("booking", createTestBooking()); MockExternalContext context = new MockExternalContext(); context.setEventId("confirm"); resumeFlow(context); assertFlowExecutionEnded(); assertFlowExecutionOutcomeEquals("bookingConfirmed"); } private Booking createTestBooking() { Hotel hotel = new Hotel(); hotel.setId(1L); hotel.setName("Jameson Inn"); User user = new User("keith", "pass", "Keith Donald"); Booking booking = new Booking(hotel, user); return booking; } } libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/booking-mvc/pom.xml0000644000000000000000000001560411360615642027300 0ustar 4.0.0 org.springframework.webflow.samples booking-mvc war 2.0.9.RELEASE javax.persistence com.springsource.javax.persistence 1.0.0 javax.servlet com.springsource.javax.servlet.jsp.jstl 1.1.2 javax.transaction com.springsource.javax.transaction 1.1.0 org.apache.log4j com.springsource.org.apache.log4j 1.2.15 org.apache.taglibs com.springsource.org.apache.taglibs.standard 1.1.2 org.apache.tiles com.springsource.org.apache.tiles 2.0.5 org.apache.tiles com.springsource.org.apache.tiles.core 2.0.5.osgi org.apache.tiles com.springsource.org.apache.tiles.jsp 2.0.5 org.hibernate com.springsource.org.hibernate 3.2.6.ga org.hibernate com.springsource.org.hibernate.annotations 3.3.0.ga org.hibernate com.springsource.org.hibernate.ejb 3.3.1.ga org.hsqldb com.springsource.org.hsqldb 1.8.0.9 org.ognl com.springsource.org.ognl 2.6.9 org.springframework org.springframework.aop ${spring.version} org.springframework org.springframework.beans ${spring.version} org.springframework org.springframework.context ${spring.version} org.springframework org.springframework.context.support ${spring.version} org.springframework org.springframework.core ${spring.version} org.springframework org.springframework.jdbc ${spring.version} org.springframework org.springframework.orm ${spring.version} org.springframework org.springframework.transaction ${spring.version} org.springframework org.springframework.web ${spring.version} org.springframework org.springframework.web.servlet ${spring.version} org.springframework.security org.springframework.security 2.0.4.A org.springframework.security org.springframework.security.taglibs 2.0.4.A org.springframework.webflow org.springframework.js ${project.version} org.springframework.webflow org.springframework.webflow ${project.version} javax.servlet com.springsource.javax.servlet 2.4.0 provided javax.servlet com.springsource.javax.servlet.jsp 2.1.0 provided org.easymock com.springsource.org.easymock 2.3.0 test org.junit com.springsource.junit 3.8.2 test org.springframework org.springframework.test ${spring.version} test com.springsource.repository.bundles.release SpringSource Enterprise Bundle Repository - SpringSource Releases http://repository.springsource.com/maven/bundles/release com.springsource.repository.bundles.external SpringSource Enterprise Bundle Repository - External Releases http://repository.springsource.com/maven/bundles/external com.springsource.repository.bundles.snapshot SpringSource Enterprise Bundle Repository - Snapshot Releases http://repository.springsource.com/maven/bundles/snapshot booking-mvc org.apache.maven.plugins maven-compiler-plugin 1.5 1.5 2.5.6.SEC01 ././@LongLink0000000000000000000000000000014500000000000011565 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/booking-mvc/.settings/libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/booking-mvc/.settings/0000755000000000000000000000000011360615644027675 5ustar ././@LongLink0000000000000000000000000000022400000000000011563 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/booking-mvc/.settings/org.eclipse.jst.common.project.facet.core.prefslibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/booking-mvc/.settings/0000644000000000000000000000054011360615632027673 0ustar #Thu Aug 09 13:12:30 EDT 2007 classpath.helper/org.eclipse.jdt.launching.JRE_CONTAINER/owners=jst.java\:5.0 classpath.helper/org.eclipse.jst.server.core.container\:\:org.eclipse.jst.server.tomcat.runtimeTarget\:\:Apache\ Tomcat\ v5.5/owners=jst.web\:2.4 eclipse.preferences.version=1 instance/org.eclipse.core.net/org.eclipse.core.net.hasMigrated=true ././@LongLink0000000000000000000000000000017500000000000011570 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/booking-mvc/.settings/org.eclipse.jdt.ui.prefslibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/booking-mvc/.settings/0000644000000000000000000000504011360615640027672 0ustar #Thu Aug 09 13:12:30 EDT 2007 eclipse.preferences.version=1 editor_save_participant_org.eclipse.jdt.ui.postsavelistener.cleanup=true formatter_profile=_Spring Java Conventions formatter_settings_version=11 instance/org.eclipse.core.net/org.eclipse.core.net.hasMigrated=true sp_cleanup.add_default_serial_version_id=true sp_cleanup.add_generated_serial_version_id=false sp_cleanup.add_missing_annotations=true sp_cleanup.add_missing_deprecated_annotations=true sp_cleanup.add_missing_nls_tags=false sp_cleanup.add_missing_override_annotations=true sp_cleanup.add_serial_version_id=false sp_cleanup.always_use_blocks=true sp_cleanup.always_use_parentheses_in_expressions=false sp_cleanup.always_use_this_for_non_static_field_access=false sp_cleanup.always_use_this_for_non_static_method_access=false sp_cleanup.convert_to_enhanced_for_loop=false sp_cleanup.format_source_code=true sp_cleanup.make_local_variable_final=false sp_cleanup.make_parameters_final=false sp_cleanup.make_private_fields_final=true sp_cleanup.make_variable_declarations_final=true sp_cleanup.never_use_blocks=false sp_cleanup.never_use_parentheses_in_expressions=true sp_cleanup.on_save_use_additional_actions=false sp_cleanup.organize_imports=true sp_cleanup.qualify_static_field_accesses_with_declaring_class=false sp_cleanup.qualify_static_member_accesses_through_instances_with_declaring_class=true sp_cleanup.qualify_static_member_accesses_through_subtypes_with_declaring_class=true sp_cleanup.qualify_static_member_accesses_with_declaring_class=false sp_cleanup.qualify_static_method_accesses_with_declaring_class=false sp_cleanup.remove_private_constructors=true sp_cleanup.remove_trailing_whitespaces=false sp_cleanup.remove_trailing_whitespaces_all=true sp_cleanup.remove_trailing_whitespaces_ignore_empty=false sp_cleanup.remove_unnecessary_casts=true sp_cleanup.remove_unnecessary_nls_tags=false sp_cleanup.remove_unused_imports=false sp_cleanup.remove_unused_local_variables=false sp_cleanup.remove_unused_private_fields=true sp_cleanup.remove_unused_private_members=false sp_cleanup.remove_unused_private_methods=true sp_cleanup.remove_unused_private_types=true sp_cleanup.sort_members=false sp_cleanup.sort_members_all=false sp_cleanup.use_blocks=false sp_cleanup.use_blocks_only_for_return_and_throw=false sp_cleanup.use_parentheses_in_expressions=false sp_cleanup.use_this_for_non_static_field_access=false sp_cleanup.use_this_for_non_static_field_access_only_if_necessary=true sp_cleanup.use_this_for_non_static_method_access=false sp_cleanup.use_this_for_non_static_method_access_only_if_necessary=true ././@LongLink0000000000000000000000000000017700000000000011572 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/booking-mvc/.settings/org.eclipse.jdt.core.prefslibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/booking-mvc/.settings/0000644000000000000000000005300411360615632027676 0ustar #Thu Aug 09 13:12:30 EDT 2007 eclipse.preferences.version=1 instance/org.eclipse.core.net/org.eclipse.core.net.hasMigrated=true org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.5 org.eclipse.jdt.core.compiler.compliance=1.5 org.eclipse.jdt.core.compiler.problem.assertIdentifier=error org.eclipse.jdt.core.compiler.problem.enumIdentifier=error org.eclipse.jdt.core.compiler.source=1.5 org.eclipse.jdt.core.formatter.align_type_members_on_columns=false org.eclipse.jdt.core.formatter.alignment_for_arguments_in_allocation_expression=16 org.eclipse.jdt.core.formatter.alignment_for_arguments_in_enum_constant=16 org.eclipse.jdt.core.formatter.alignment_for_arguments_in_explicit_constructor_call=16 org.eclipse.jdt.core.formatter.alignment_for_arguments_in_method_invocation=16 org.eclipse.jdt.core.formatter.alignment_for_arguments_in_qualified_allocation_expression=16 org.eclipse.jdt.core.formatter.alignment_for_assignment=0 org.eclipse.jdt.core.formatter.alignment_for_binary_expression=16 org.eclipse.jdt.core.formatter.alignment_for_compact_if=16 org.eclipse.jdt.core.formatter.alignment_for_conditional_expression=80 org.eclipse.jdt.core.formatter.alignment_for_enum_constants=0 org.eclipse.jdt.core.formatter.alignment_for_expressions_in_array_initializer=16 org.eclipse.jdt.core.formatter.alignment_for_multiple_fields=16 org.eclipse.jdt.core.formatter.alignment_for_parameters_in_constructor_declaration=16 org.eclipse.jdt.core.formatter.alignment_for_parameters_in_method_declaration=16 org.eclipse.jdt.core.formatter.alignment_for_selector_in_method_invocation=16 org.eclipse.jdt.core.formatter.alignment_for_superclass_in_type_declaration=16 org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_enum_declaration=16 org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_type_declaration=16 org.eclipse.jdt.core.formatter.alignment_for_throws_clause_in_constructor_declaration=16 org.eclipse.jdt.core.formatter.alignment_for_throws_clause_in_method_declaration=16 org.eclipse.jdt.core.formatter.blank_lines_after_imports=1 org.eclipse.jdt.core.formatter.blank_lines_after_package=1 org.eclipse.jdt.core.formatter.blank_lines_before_field=0 org.eclipse.jdt.core.formatter.blank_lines_before_first_class_body_declaration=0 org.eclipse.jdt.core.formatter.blank_lines_before_imports=1 org.eclipse.jdt.core.formatter.blank_lines_before_member_type=1 org.eclipse.jdt.core.formatter.blank_lines_before_method=1 org.eclipse.jdt.core.formatter.blank_lines_before_new_chunk=1 org.eclipse.jdt.core.formatter.blank_lines_before_package=0 org.eclipse.jdt.core.formatter.blank_lines_between_import_groups=1 org.eclipse.jdt.core.formatter.blank_lines_between_type_declarations=1 org.eclipse.jdt.core.formatter.brace_position_for_annotation_type_declaration=end_of_line org.eclipse.jdt.core.formatter.brace_position_for_anonymous_type_declaration=end_of_line org.eclipse.jdt.core.formatter.brace_position_for_array_initializer=end_of_line org.eclipse.jdt.core.formatter.brace_position_for_block=end_of_line org.eclipse.jdt.core.formatter.brace_position_for_block_in_case=end_of_line org.eclipse.jdt.core.formatter.brace_position_for_constructor_declaration=end_of_line org.eclipse.jdt.core.formatter.brace_position_for_enum_constant=end_of_line org.eclipse.jdt.core.formatter.brace_position_for_enum_declaration=end_of_line org.eclipse.jdt.core.formatter.brace_position_for_method_declaration=end_of_line org.eclipse.jdt.core.formatter.brace_position_for_switch=end_of_line org.eclipse.jdt.core.formatter.brace_position_for_type_declaration=end_of_line org.eclipse.jdt.core.formatter.comment.clear_blank_lines_in_block_comment=false org.eclipse.jdt.core.formatter.comment.clear_blank_lines_in_javadoc_comment=false org.eclipse.jdt.core.formatter.comment.format_block_comments=true org.eclipse.jdt.core.formatter.comment.format_header=false org.eclipse.jdt.core.formatter.comment.format_html=true org.eclipse.jdt.core.formatter.comment.format_javadoc_comments=true org.eclipse.jdt.core.formatter.comment.format_line_comments=true org.eclipse.jdt.core.formatter.comment.format_source_code=true org.eclipse.jdt.core.formatter.comment.indent_parameter_description=true org.eclipse.jdt.core.formatter.comment.indent_root_tags=false org.eclipse.jdt.core.formatter.comment.insert_new_line_before_root_tags=do not insert org.eclipse.jdt.core.formatter.comment.insert_new_line_for_parameter=do not insert org.eclipse.jdt.core.formatter.comment.line_length=120 org.eclipse.jdt.core.formatter.compact_else_if=true org.eclipse.jdt.core.formatter.continuation_indentation=2 org.eclipse.jdt.core.formatter.continuation_indentation_for_array_initializer=2 org.eclipse.jdt.core.formatter.format_guardian_clause_on_one_line=false org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_annotation_declaration_header=true org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_enum_constant_header=true org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_enum_declaration_header=true org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_type_header=true org.eclipse.jdt.core.formatter.indent_breaks_compare_to_cases=true org.eclipse.jdt.core.formatter.indent_empty_lines=false org.eclipse.jdt.core.formatter.indent_statements_compare_to_block=true org.eclipse.jdt.core.formatter.indent_statements_compare_to_body=true org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_cases=true org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_switch=false org.eclipse.jdt.core.formatter.indentation.size=4 org.eclipse.jdt.core.formatter.insert_new_line_after_annotation=insert org.eclipse.jdt.core.formatter.insert_new_line_after_opening_brace_in_array_initializer=do not insert org.eclipse.jdt.core.formatter.insert_new_line_at_end_of_file_if_missing=do not insert org.eclipse.jdt.core.formatter.insert_new_line_before_catch_in_try_statement=do not insert org.eclipse.jdt.core.formatter.insert_new_line_before_closing_brace_in_array_initializer=do not insert org.eclipse.jdt.core.formatter.insert_new_line_before_else_in_if_statement=do not insert org.eclipse.jdt.core.formatter.insert_new_line_before_finally_in_try_statement=do not insert org.eclipse.jdt.core.formatter.insert_new_line_before_while_in_do_statement=do not insert org.eclipse.jdt.core.formatter.insert_new_line_in_empty_annotation_declaration=insert org.eclipse.jdt.core.formatter.insert_new_line_in_empty_anonymous_type_declaration=insert org.eclipse.jdt.core.formatter.insert_new_line_in_empty_block=insert org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_constant=insert org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_declaration=insert org.eclipse.jdt.core.formatter.insert_new_line_in_empty_method_body=insert org.eclipse.jdt.core.formatter.insert_new_line_in_empty_type_declaration=insert org.eclipse.jdt.core.formatter.insert_space_after_and_in_type_parameter=insert org.eclipse.jdt.core.formatter.insert_space_after_assignment_operator=insert org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation=do not insert org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation_type_declaration=do not insert org.eclipse.jdt.core.formatter.insert_space_after_binary_operator=insert org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_arguments=insert org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_parameters=insert org.eclipse.jdt.core.formatter.insert_space_after_closing_brace_in_block=insert org.eclipse.jdt.core.formatter.insert_space_after_closing_paren_in_cast=insert org.eclipse.jdt.core.formatter.insert_space_after_colon_in_assert=insert org.eclipse.jdt.core.formatter.insert_space_after_colon_in_case=insert org.eclipse.jdt.core.formatter.insert_space_after_colon_in_conditional=insert org.eclipse.jdt.core.formatter.insert_space_after_colon_in_for=insert org.eclipse.jdt.core.formatter.insert_space_after_colon_in_labeled_statement=insert org.eclipse.jdt.core.formatter.insert_space_after_comma_in_allocation_expression=insert org.eclipse.jdt.core.formatter.insert_space_after_comma_in_annotation=insert org.eclipse.jdt.core.formatter.insert_space_after_comma_in_array_initializer=insert org.eclipse.jdt.core.formatter.insert_space_after_comma_in_constructor_declaration_parameters=insert org.eclipse.jdt.core.formatter.insert_space_after_comma_in_constructor_declaration_throws=insert org.eclipse.jdt.core.formatter.insert_space_after_comma_in_enum_constant_arguments=insert org.eclipse.jdt.core.formatter.insert_space_after_comma_in_enum_declarations=insert org.eclipse.jdt.core.formatter.insert_space_after_comma_in_explicitconstructorcall_arguments=insert org.eclipse.jdt.core.formatter.insert_space_after_comma_in_for_increments=insert org.eclipse.jdt.core.formatter.insert_space_after_comma_in_for_inits=insert org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_declaration_parameters=insert org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_declaration_throws=insert org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_invocation_arguments=insert org.eclipse.jdt.core.formatter.insert_space_after_comma_in_multiple_field_declarations=insert org.eclipse.jdt.core.formatter.insert_space_after_comma_in_multiple_local_declarations=insert org.eclipse.jdt.core.formatter.insert_space_after_comma_in_parameterized_type_reference=insert org.eclipse.jdt.core.formatter.insert_space_after_comma_in_superinterfaces=insert org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_arguments=insert org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_parameters=insert org.eclipse.jdt.core.formatter.insert_space_after_ellipsis=insert org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_parameterized_type_reference=do not insert org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_arguments=do not insert org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_parameters=do not insert org.eclipse.jdt.core.formatter.insert_space_after_opening_brace_in_array_initializer=insert org.eclipse.jdt.core.formatter.insert_space_after_opening_bracket_in_array_allocation_expression=do not insert org.eclipse.jdt.core.formatter.insert_space_after_opening_bracket_in_array_reference=do not insert org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_annotation=do not insert org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_cast=do not insert org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_catch=do not insert org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_constructor_declaration=do not insert org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_enum_constant=do not insert org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_for=do not insert org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_if=do not insert org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_method_declaration=do not insert org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_method_invocation=do not insert org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_parenthesized_expression=do not insert org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_switch=do not insert org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_synchronized=do not insert org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_while=do not insert org.eclipse.jdt.core.formatter.insert_space_after_postfix_operator=do not insert org.eclipse.jdt.core.formatter.insert_space_after_prefix_operator=do not insert org.eclipse.jdt.core.formatter.insert_space_after_question_in_conditional=insert org.eclipse.jdt.core.formatter.insert_space_after_question_in_wildcard=do not insert org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_for=insert org.eclipse.jdt.core.formatter.insert_space_after_unary_operator=do not insert org.eclipse.jdt.core.formatter.insert_space_before_and_in_type_parameter=insert org.eclipse.jdt.core.formatter.insert_space_before_assignment_operator=insert org.eclipse.jdt.core.formatter.insert_space_before_at_in_annotation_type_declaration=insert org.eclipse.jdt.core.formatter.insert_space_before_binary_operator=insert org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_parameterized_type_reference=do not insert org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_arguments=do not insert org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_parameters=do not insert org.eclipse.jdt.core.formatter.insert_space_before_closing_brace_in_array_initializer=insert org.eclipse.jdt.core.formatter.insert_space_before_closing_bracket_in_array_allocation_expression=do not insert org.eclipse.jdt.core.formatter.insert_space_before_closing_bracket_in_array_reference=do not insert org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_annotation=do not insert org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_cast=do not insert org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_catch=do not insert org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_constructor_declaration=do not insert org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_enum_constant=do not insert org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_for=do not insert org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_if=do not insert org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_method_declaration=do not insert org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_method_invocation=do not insert org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_parenthesized_expression=do not insert org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_switch=do not insert org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_synchronized=do not insert org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_while=do not insert org.eclipse.jdt.core.formatter.insert_space_before_colon_in_assert=insert org.eclipse.jdt.core.formatter.insert_space_before_colon_in_case=do not insert org.eclipse.jdt.core.formatter.insert_space_before_colon_in_conditional=insert org.eclipse.jdt.core.formatter.insert_space_before_colon_in_default=do not insert org.eclipse.jdt.core.formatter.insert_space_before_colon_in_for=insert org.eclipse.jdt.core.formatter.insert_space_before_colon_in_labeled_statement=do not insert org.eclipse.jdt.core.formatter.insert_space_before_comma_in_allocation_expression=do not insert org.eclipse.jdt.core.formatter.insert_space_before_comma_in_annotation=do not insert org.eclipse.jdt.core.formatter.insert_space_before_comma_in_array_initializer=do not insert org.eclipse.jdt.core.formatter.insert_space_before_comma_in_constructor_declaration_parameters=do not insert org.eclipse.jdt.core.formatter.insert_space_before_comma_in_constructor_declaration_throws=do not insert org.eclipse.jdt.core.formatter.insert_space_before_comma_in_enum_constant_arguments=do not insert org.eclipse.jdt.core.formatter.insert_space_before_comma_in_enum_declarations=do not insert org.eclipse.jdt.core.formatter.insert_space_before_comma_in_explicitconstructorcall_arguments=do not insert org.eclipse.jdt.core.formatter.insert_space_before_comma_in_for_increments=do not insert org.eclipse.jdt.core.formatter.insert_space_before_comma_in_for_inits=do not insert org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_declaration_parameters=do not insert org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_declaration_throws=do not insert org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_invocation_arguments=do not insert org.eclipse.jdt.core.formatter.insert_space_before_comma_in_multiple_field_declarations=do not insert org.eclipse.jdt.core.formatter.insert_space_before_comma_in_multiple_local_declarations=do not insert org.eclipse.jdt.core.formatter.insert_space_before_comma_in_parameterized_type_reference=do not insert org.eclipse.jdt.core.formatter.insert_space_before_comma_in_superinterfaces=do not insert org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_arguments=do not insert org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_parameters=do not insert org.eclipse.jdt.core.formatter.insert_space_before_ellipsis=do not insert org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_parameterized_type_reference=do not insert org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_arguments=do not insert org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_parameters=do not insert org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_annotation_type_declaration=insert org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_anonymous_type_declaration=insert org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_array_initializer=insert org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_block=insert org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_constructor_declaration=insert org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_enum_constant=insert org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_enum_declaration=insert org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_method_declaration=insert org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_switch=insert org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_type_declaration=insert org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_allocation_expression=do not insert org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_reference=do not insert org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_type_reference=do not insert org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_annotation=do not insert org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_annotation_type_member_declaration=do not insert org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_catch=insert org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_constructor_declaration=do not insert org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_enum_constant=do not insert org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_for=insert org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_if=insert org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_method_declaration=do not insert org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_method_invocation=do not insert org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_parenthesized_expression=do not insert org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_switch=insert org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_synchronized=insert org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_while=insert org.eclipse.jdt.core.formatter.insert_space_before_parenthesized_expression_in_return=insert org.eclipse.jdt.core.formatter.insert_space_before_parenthesized_expression_in_throw=insert org.eclipse.jdt.core.formatter.insert_space_before_postfix_operator=do not insert org.eclipse.jdt.core.formatter.insert_space_before_prefix_operator=do not insert org.eclipse.jdt.core.formatter.insert_space_before_question_in_conditional=insert org.eclipse.jdt.core.formatter.insert_space_before_question_in_wildcard=do not insert org.eclipse.jdt.core.formatter.insert_space_before_semicolon=do not insert org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_for=do not insert org.eclipse.jdt.core.formatter.insert_space_before_unary_operator=do not insert org.eclipse.jdt.core.formatter.insert_space_between_brackets_in_array_type_reference=do not insert org.eclipse.jdt.core.formatter.insert_space_between_empty_braces_in_array_initializer=do not insert org.eclipse.jdt.core.formatter.insert_space_between_empty_brackets_in_array_allocation_expression=do not insert org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_annotation_type_member_declaration=do not insert org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_constructor_declaration=do not insert org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_enum_constant=do not insert org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_method_declaration=do not insert org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_method_invocation=do not insert org.eclipse.jdt.core.formatter.keep_else_statement_on_same_line=false org.eclipse.jdt.core.formatter.keep_empty_array_initializer_on_one_line=false org.eclipse.jdt.core.formatter.keep_imple_if_on_one_line=false org.eclipse.jdt.core.formatter.keep_then_statement_on_same_line=false org.eclipse.jdt.core.formatter.lineSplit=120 org.eclipse.jdt.core.formatter.never_indent_block_comments_on_first_column=false org.eclipse.jdt.core.formatter.never_indent_line_comments_on_first_column=false org.eclipse.jdt.core.formatter.number_of_blank_lines_at_beginning_of_method_body=0 org.eclipse.jdt.core.formatter.number_of_empty_lines_to_preserve=1 org.eclipse.jdt.core.formatter.put_empty_statement_on_new_line=true org.eclipse.jdt.core.formatter.tabulation.char=mixed org.eclipse.jdt.core.formatter.tabulation.size=8 org.eclipse.jdt.core.formatter.use_tabs_only_for_leading_indentations=false org.eclipse.jdt.core.formatter.wrap_before_binary_operator=true ././@LongLink0000000000000000000000000000022200000000000011561 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/booking-mvc/.settings/org.eclipse.wst.common.project.facet.core.xmllibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/booking-mvc/.settings/0000644000000000000000000000041311360615634027674 0ustar ././@LongLink0000000000000000000000000000021700000000000011565 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/booking-mvc/.settings/org.springframework.ide.eclipse.core.prefslibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/booking-mvc/.settings/0000644000000000000000000001773211360615640027705 0ustar #Sun Apr 27 09:06:44 EDT 2008 eclipse.preferences.version=1 instance/org.eclipse.core.net/org.eclipse.core.net.hasMigrated=true org.springframework.ide.eclipse.core.builders.enable.aopreferencemodelbuilder=true org.springframework.ide.eclipse.core.builders.enable.osgibundleupdater=true org.springframework.ide.eclipse.core.enable.project.preferences=true org.springframework.ide.eclipse.core.validator.enable.com.springsource.sts.bestpractices.beansvalidator=true org.springframework.ide.eclipse.core.validator.enable.org.springframework.ide.eclipse.beans.core.beansvalidator=true org.springframework.ide.eclipse.core.validator.enable.org.springframework.ide.eclipse.core.springvalidator=true org.springframework.ide.eclipse.core.validator.enable.org.springframework.ide.eclipse.webflow.core.validator=true org.springframework.ide.eclipse.core.validator.rule.enable.com.springsource.sts.bestpractices.com.springsource.sts.bestpractices.AvoidDriverManagerDataSource-com.springsource.sts.bestpractices.beansvalidator=true org.springframework.ide.eclipse.core.validator.rule.enable.com.springsource.sts.bestpractices.com.springsource.sts.bestpractices.ImportElementsAtTopRulee-com.springsource.sts.bestpractices.beansvalidator=true org.springframework.ide.eclipse.core.validator.rule.enable.com.springsource.sts.bestpractices.com.springsource.sts.bestpractices.ParentBeanSpecifiesAbstractClassRule-com.springsource.sts.bestpractices.beansvalidator=true org.springframework.ide.eclipse.core.validator.rule.enable.com.springsource.sts.bestpractices.com.springsource.sts.bestpractices.RefElementRule-com.springsource.sts.bestpractices.beansvalidator=true org.springframework.ide.eclipse.core.validator.rule.enable.com.springsource.sts.bestpractices.com.springsource.sts.bestpractices.TooManyBeansInFileRule-com.springsource.sts.bestpractices.beansvalidator=true org.springframework.ide.eclipse.core.validator.rule.enable.com.springsource.sts.bestpractices.com.springsource.sts.bestpractices.UnnecessaryValueElementRule-com.springsource.sts.bestpractices.beansvalidator=true org.springframework.ide.eclipse.core.validator.rule.enable.com.springsource.sts.bestpractices.com.springsource.sts.bestpractices.UseBeanInheritance-com.springsource.sts.bestpractices.beansvalidator=true org.springframework.ide.eclipse.core.validator.rule.enable.com.springsource.sts.bestpractices.legacyxmlusage.jndiobjectfactory-com.springsource.sts.bestpractices.beansvalidator=true org.springframework.ide.eclipse.core.validator.rule.enable.org.springframework.ide.eclipse.beans.core.beanAlias-org.springframework.ide.eclipse.beans.core.beansvalidator=true org.springframework.ide.eclipse.core.validator.rule.enable.org.springframework.ide.eclipse.beans.core.beanClass-org.springframework.ide.eclipse.beans.core.beansvalidator=true org.springframework.ide.eclipse.core.validator.rule.enable.org.springframework.ide.eclipse.beans.core.beanConstructorArgument-org.springframework.ide.eclipse.beans.core.beansvalidator=true org.springframework.ide.eclipse.core.validator.rule.enable.org.springframework.ide.eclipse.beans.core.beanDefinition-org.springframework.ide.eclipse.beans.core.beansvalidator=true org.springframework.ide.eclipse.core.validator.rule.enable.org.springframework.ide.eclipse.beans.core.beanDefinitionHolder-org.springframework.ide.eclipse.beans.core.beansvalidator=true org.springframework.ide.eclipse.core.validator.rule.enable.org.springframework.ide.eclipse.beans.core.beanFactory-org.springframework.ide.eclipse.beans.core.beansvalidator=true org.springframework.ide.eclipse.core.validator.rule.enable.org.springframework.ide.eclipse.beans.core.beanInitDestroyMethod-org.springframework.ide.eclipse.beans.core.beansvalidator=true org.springframework.ide.eclipse.core.validator.rule.enable.org.springframework.ide.eclipse.beans.core.beanProperty-org.springframework.ide.eclipse.beans.core.beansvalidator=true org.springframework.ide.eclipse.core.validator.rule.enable.org.springframework.ide.eclipse.beans.core.beanReference-org.springframework.ide.eclipse.beans.core.beansvalidator=true org.springframework.ide.eclipse.core.validator.rule.enable.org.springframework.ide.eclipse.beans.core.methodOverride-org.springframework.ide.eclipse.beans.core.beansvalidator=true org.springframework.ide.eclipse.core.validator.rule.enable.org.springframework.ide.eclipse.beans.core.parsingProblems-org.springframework.ide.eclipse.beans.core.beansvalidator=false org.springframework.ide.eclipse.core.validator.rule.enable.org.springframework.ide.eclipse.beans.core.requiredProperty-org.springframework.ide.eclipse.beans.core.beansvalidator=false org.springframework.ide.eclipse.core.validator.rule.enable.org.springframework.ide.eclipse.core.springClasspath-org.springframework.ide.eclipse.core.springvalidator=true org.springframework.ide.eclipse.core.validator.rule.enable.org.springframework.ide.eclipse.webflow.core.validation.action-org.springframework.ide.eclipse.webflow.core.validator=true org.springframework.ide.eclipse.core.validator.rule.enable.org.springframework.ide.eclipse.webflow.core.validation.actionstate-org.springframework.ide.eclipse.webflow.core.validator=true org.springframework.ide.eclipse.core.validator.rule.enable.org.springframework.ide.eclipse.webflow.core.validation.attribute-org.springframework.ide.eclipse.webflow.core.validator=true org.springframework.ide.eclipse.core.validator.rule.enable.org.springframework.ide.eclipse.webflow.core.validation.attributemapper-org.springframework.ide.eclipse.webflow.core.validator=true org.springframework.ide.eclipse.core.validator.rule.enable.org.springframework.ide.eclipse.webflow.core.validation.beanaction-org.springframework.ide.eclipse.webflow.core.validator=true org.springframework.ide.eclipse.core.validator.rule.enable.org.springframework.ide.eclipse.webflow.core.validation.evaluationaction-org.springframework.ide.eclipse.webflow.core.validator=true org.springframework.ide.eclipse.core.validator.rule.enable.org.springframework.ide.eclipse.webflow.core.validation.evaluationresult-org.springframework.ide.eclipse.webflow.core.validator=true org.springframework.ide.eclipse.core.validator.rule.enable.org.springframework.ide.eclipse.webflow.core.validation.exceptionhandler-org.springframework.ide.eclipse.webflow.core.validator=true org.springframework.ide.eclipse.core.validator.rule.enable.org.springframework.ide.eclipse.webflow.core.validation.import-org.springframework.ide.eclipse.webflow.core.validator=true org.springframework.ide.eclipse.core.validator.rule.enable.org.springframework.ide.eclipse.webflow.core.validation.inputattribute-org.springframework.ide.eclipse.webflow.core.validator=true org.springframework.ide.eclipse.core.validator.rule.enable.org.springframework.ide.eclipse.webflow.core.validation.mapping-org.springframework.ide.eclipse.webflow.core.validator=true org.springframework.ide.eclipse.core.validator.rule.enable.org.springframework.ide.eclipse.webflow.core.validation.outputattribute-org.springframework.ide.eclipse.webflow.core.validator=true org.springframework.ide.eclipse.core.validator.rule.enable.org.springframework.ide.eclipse.webflow.core.validation.set-org.springframework.ide.eclipse.webflow.core.validator=true org.springframework.ide.eclipse.core.validator.rule.enable.org.springframework.ide.eclipse.webflow.core.validation.state-org.springframework.ide.eclipse.webflow.core.validator=true org.springframework.ide.eclipse.core.validator.rule.enable.org.springframework.ide.eclipse.webflow.core.validation.subflowstate-org.springframework.ide.eclipse.webflow.core.validator=true org.springframework.ide.eclipse.core.validator.rule.enable.org.springframework.ide.eclipse.webflow.core.validation.transition-org.springframework.ide.eclipse.webflow.core.validator=true org.springframework.ide.eclipse.core.validator.rule.enable.org.springframework.ide.eclipse.webflow.core.validation.variable-org.springframework.ide.eclipse.webflow.core.validator=true org.springframework.ide.eclipse.core.validator.rule.enable.org.springframework.ide.eclipse.webflow.core.validation.webflowstate-org.springframework.ide.eclipse.webflow.core.validator=true ././@LongLink0000000000000000000000000000017700000000000011572 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/booking-mvc/.settings/org.eclipse.jpt.core.prefslibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/booking-mvc/.settings/0000644000000000000000000000033111360615642027672 0ustar #Thu Aug 09 13:12:30 EDT 2007 eclipse.preferences.version=1 instance/org.eclipse.core.net/org.eclipse.core.net.hasMigrated=true org.eclipse.jpt.core.discoverAnnotatedClasses=true org.eclipse.jpt.core.platform=generic ././@LongLink0000000000000000000000000000020500000000000011562 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/booking-mvc/.settings/org.eclipse.wst.validation.prefslibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/booking-mvc/.settings/0000644000000000000000000000367711360615642027712 0ustar #Thu Aug 09 13:12:30 EDT 2007 DELEGATES_PREFERENCE=delegateValidatorListorg.eclipse.wst.wsdl.validation.internal.eclipse.WSDLDelegatingValidator\=org.eclipse.wst.wsdl.validation.internal.eclipse.Validator;org.eclipse.wst.xsd.core.internal.validation.eclipse.XSDDelegatingValidator\=org.eclipse.wst.xsd.core.internal.validation.eclipse.Validator; USER_BUILD_PREFERENCE=enabledBuildValidatorListorg.eclipse.wst.html.internal.validation.HTMLValidator;org.eclipse.wst.xml.core.internal.validation.eclipse.Validator;org.eclipse.wst.dtd.core.internal.validation.eclipse.Validator;org.eclipse.wst.wsdl.validation.internal.eclipse.WSDLDelegatingValidator;org.eclipse.jst.j2ee.internal.web.validation.UIWarValidator;org.eclipse.jst.jsp.core.internal.validation.JSPELValidator;org.eclipse.jst.jsp.core.internal.validation.JSPJavaValidator;org.eclipse.jst.jsp.core.internal.validation.JSPDirectiveValidator;org.eclipse.wst.common.componentcore.internal.ModuleCoreValidator;org.eclipse.wst.wsi.ui.internal.WSIMessageValidator;org.eclipse.wst.xsd.core.internal.validation.eclipse.XSDDelegatingValidator; USER_MANUAL_PREFERENCE=enabledManualValidatorListorg.eclipse.wst.html.internal.validation.HTMLValidator;org.eclipse.wst.xml.core.internal.validation.eclipse.Validator;org.eclipse.wst.dtd.core.internal.validation.eclipse.Validator;org.eclipse.wst.wsdl.validation.internal.eclipse.WSDLDelegatingValidator;org.eclipse.jst.j2ee.internal.web.validation.UIWarValidator;org.eclipse.jst.jsp.core.internal.validation.JSPELValidator;org.eclipse.jst.jsp.core.internal.validation.JSPJavaValidator;org.eclipse.jst.jsp.core.internal.validation.JSPDirectiveValidator;org.eclipse.wst.common.componentcore.internal.ModuleCoreValidator;org.eclipse.wst.wsi.ui.internal.WSIMessageValidator;org.eclipse.wst.xsd.core.internal.validation.eclipse.XSDDelegatingValidator; USER_PREFERENCE=overrideGlobalPreferencesfalse eclipse.preferences.version=1 instance/org.eclipse.core.net/org.eclipse.core.net.hasMigrated=true ././@LongLink0000000000000000000000000000021000000000000011556 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/booking-mvc/.settings/org.hibernate.eclipse.console.prefslibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/booking-mvc/.settings/0000644000000000000000000000027611360615644027704 0ustar #Thu Aug 09 13:12:30 EDT 2007 default.configuration=swf-booking-jsf eclipse.preferences.version=1 hibernate3.enabled=true instance/org.eclipse.core.net/org.eclipse.core.net.hasMigrated=true ././@LongLink0000000000000000000000000000020500000000000011562 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/booking-mvc/.settings/org.eclipse.wst.common.componentlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/booking-mvc/.settings/0000644000000000000000000000101011360615642027665 0ustar libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/booking-mvc/build.xml0000644000000000000000000000062211360615642027576 0ustar ././@LongLink0000000000000000000000000000014500000000000011565 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/booking-mvc/.classpathlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/booking-mvc/.classpath0000644000000000000000000000304311360615642027740 0ustar libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/booking-mvc/ivy.xml0000644000000000000000000001111111360615632027300 0ustar libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/readme.txt0000644000000000000000000000351411360615642025543 0ustar /* * spring-webflow-samples * ---------------------- * booking-mvc: Hotel Booking Reference App (Spring MVC + Web Flow + JSP version) * booking-faces: Hotel Booking Reference App (Spring MVC + Web Flow + JavaServerFaces version) * booking-portlet-mvc: Hotel Booking Reference App (Spring Portlet MVC + Web Flow + JSP version) * booking-portlet-faces: Hotel Booking Reference App (Spring Portlet MVC + Web Flow + JavaServerFaces version) * jsf-booking: Traditional JSF-based implementation; here to support comparison with "booking-faces" */ Sample pre-requisites: ---------------------- * JDK 1.5 or > must be installed and in your system path * Ant 1.7 or > must be installed and in your system path To build the samples: --------------------- 1. cd into the directory of the sample you are interested in building. 2. run 'ant jar' to build the sample. The built .war file is placed in the 'target/artifacts' directory. To import Web Flow projects into Eclipse: ----------------------------------------- 1. Use the SpringSource Tool Suite or Eclipse IDE for Java EE Developers Creating a dedicated workspace for importing Web Flow projects is recommended. 2. Use the 'File -> Import -> Existing Projects into Workspace' wizard to import the Web Flow projects into Eclipse. 3. The projects will not compile initially as Eclipse will not be able to find dependent libraries. To compile, define a IVY_CACHE classpath variable pointing to the local artifact repository created by the Web Flow build. To do this, access 'Preferences -> Java -> Build Path -> Classpath Variables'. Then select 'New...'; enter IVY_CACHE for the Name and select the 'projects/ivy-cache/repository' Folder as the path. 3. After the projects compile within Eclipse, run a sample web project on your local server by right-clicking on it and selecting 'Run on Server'.libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/booking-portlet-mvc/0000755000000000000000000000000011360615640027442 5ustar ././@LongLink0000000000000000000000000000016100000000000011563 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/booking-portlet-mvc/.springWebflowlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/booking-portlet-mvc/.s0000644000000000000000000000156411360615640027713 0ustar 1 src/main/webapp/WEB-INF/flows/booking/booking.xml src/main/webapp/WEB-INF/flows/main/main.xml src/main/webapp/WEB-INF/flows/view/view.xml ././@LongLink0000000000000000000000000000015300000000000011564 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/booking-portlet-mvc/.projectlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/booking-portlet-mvc/.p0000644000000000000000000000232211360615632027702 0ustar swf-booking-portlet-mvc org.eclipse.jdt.core.javabuilder org.eclipse.wst.common.project.facet.core.builder org.eclipse.wst.validation.validationbuilder org.springframework.ide.eclipse.core.springbuilder org.hibernate.eclipse.console.hibernateBuilder org.springframework.ide.eclipse.core.springnature org.eclipse.wst.common.project.facet.core.nature org.eclipse.jdt.core.javanature org.eclipse.wst.common.modulecore.ModuleCoreNature org.eclipse.jem.workbench.JavaEMFNature org.hibernate.eclipse.console.hibernateNature ././@LongLink0000000000000000000000000000015700000000000011570 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/booking-portlet-mvc/.springBeanslibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/booking-portlet-mvc/.s0000644000000000000000000000157011360615634027713 0ustar 1 src/main/webapp/WEB-INF/config/application-config.xml src/main/webapp/WEB-INF/config/hotelbooking-portlet-config.xml true false src/main/webapp/WEB-INF/config/application-config.xml src/main/webapp/WEB-INF/config/hotelbooking-portlet-config.xml ././@LongLink0000000000000000000000000000014700000000000011567 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/booking-portlet-mvc/src/libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/booking-portlet-mvc/sr0000755000000000000000000000000011360615632030010 5ustar ././@LongLink0000000000000000000000000000015400000000000011565 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/booking-portlet-mvc/src/main/libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/booking-portlet-mvc/sr0000755000000000000000000000000011360615634030012 5ustar ././@LongLink0000000000000000000000000000016300000000000011565 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/booking-portlet-mvc/src/main/webapp/libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/booking-portlet-mvc/sr0000755000000000000000000000000011360615640030007 5ustar ././@LongLink0000000000000000000000000000017300000000000011566 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/booking-portlet-mvc/src/main/webapp/WEB-INF/libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/booking-portlet-mvc/sr0000755000000000000000000000000011360615640030007 5ustar ././@LongLink0000000000000000000000000000020200000000000011557 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/booking-portlet-mvc/src/main/webapp/WEB-INF/web.xmllibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/booking-portlet-mvc/sr0000644000000000000000000000425711360615634030024 0ustar contextConfigLocation /WEB-INF/config/application-config.xml org.springframework.web.context.ContextLoaderListener Resources Servlet org.springframework.js.resource.ResourceServlet 0 Resources Servlet /resources/* ViewRendererServlet org.springframework.web.servlet.ViewRendererServlet ViewRendererServlet /WEB-INF/servlet/view swf-booking-mvc org.apache.pluto.core.PortletServlet portlet-name swf-booking-mvc 1 swf-booking-mvc /PlutoInvoker/swf-booking-mvc ././@LongLink0000000000000000000000000000020100000000000011556 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/booking-portlet-mvc/src/main/webapp/WEB-INF/flows/libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/booking-portlet-mvc/sr0000755000000000000000000000000011360615640030007 5ustar ././@LongLink0000000000000000000000000000020600000000000011563 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/booking-portlet-mvc/src/main/webapp/WEB-INF/flows/main/libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/booking-portlet-mvc/sr0000755000000000000000000000000011360615644030013 5ustar ././@LongLink0000000000000000000000000000022600000000000011565 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/booking-portlet-mvc/src/main/webapp/WEB-INF/flows/main/reviewHotels.jsplibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/booking-portlet-mvc/sr0000644000000000000000000000202111360615632030005 0ustar <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> <%@ taglib prefix="portlet" uri="http://java.sun.com/portlet" %> <%@ taglib prefix="form" uri="http://www.springframework.org/tags/form" %>

Hotel Results

Name Address City, State Zip Action
${hotel.name} ${hotel.address} ${hotel.city}, ${hotel.state}, ${hotel.country} ${hotel.zip} View Hotel
No hotels found
././@LongLink0000000000000000000000000000022500000000000011564 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/booking-portlet-mvc/src/main/webapp/WEB-INF/flows/main/reviewHotel.jsplibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/booking-portlet-mvc/sr0000644000000000000000000000324611360615636030023 0ustar <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> <%@ taglib prefix="portlet" uri="http://java.sun.com/portlet" %> <%@ taglib prefix="spring" uri="http://www.springframework.org/tags" %> <%@ taglib prefix="form" uri="http://www.springframework.org/tags/form" %>

View Hotel

Name: ${hotel.name}
Address: ${hotel.address}
City: ${hotel.city}
State: ${hotel.state}
Zip: ${hotel.zip}
Country: ${hotel.country}
Nightly rate: ${status.value}
   
././@LongLink0000000000000000000000000000023500000000000011565 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/booking-portlet-mvc/src/main/webapp/WEB-INF/flows/main/enterSearchCriteria.jsplibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/booking-portlet-mvc/sr0000644000000000000000000000353011360615632030013 0ustar <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> <%@ taglib prefix="portlet" uri="http://java.sun.com/portlet" %> <%@ taglib prefix="form" uri="http://www.springframework.org/tags/form" %>

Search Hotels

Current Hotel Bookings

Name Address City, State Check in Date Check out Date Confirmation Number Action
${booking.hotel.name} ${booking.hotel.address} ${booking.hotel.city}, ${booking.hotel.state} ${booking.checkinDate} ${booking.checkoutDate} ${booking.id} Cancel
No booking history
././@LongLink0000000000000000000000000000021600000000000011564 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/booking-portlet-mvc/src/main/webapp/WEB-INF/flows/main/main.xmllibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/booking-portlet-mvc/sr0000644000000000000000000000373311360615644030023 0ustar ././@LongLink0000000000000000000000000000020600000000000011563 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/booking-portlet-mvc/src/main/webapp/WEB-INF/flows/view/libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/booking-portlet-mvc/sr0000755000000000000000000000000011360615644030013 5ustar ././@LongLink0000000000000000000000000000021700000000000011565 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/booking-portlet-mvc/src/main/webapp/WEB-INF/flows/view/intro.jsplibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/booking-portlet-mvc/sr0000644000000000000000000000231611360615636030020 0ustar <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> <%@ taglib prefix="portlet" uri="http://java.sun.com/portlet" %>

Welcome to Spring Travel

This reference application shows how to use Spring MVC and Web Flow together with JavaServerPages (JSP) in a portlet.

The key features illustrated in this sample include:

  • A declarative navigation model enabling full browser button support and dynamic navigation rules
  • A fine-grained state management model, including support for ConversationScope and ViewScope
  • Managed persistence contexts with the Java Persistence API (JPA)
  • Unified Expression Language (EL) integration
  • Declarative page authoring with JSP, JSTL, and Spring MVC's form tag library
  • Exception handling support across all layers of the application
  • Spring IDE tooling integration, with support for graphical flow modeling and visualization

Start your Spring Travel experience

././@LongLink0000000000000000000000000000021600000000000011564 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/booking-portlet-mvc/src/main/webapp/WEB-INF/flows/view/view.xmllibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/booking-portlet-mvc/sr0000644000000000000000000000077711360615644030030 0ustar ././@LongLink0000000000000000000000000000021100000000000011557 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/booking-portlet-mvc/src/main/webapp/WEB-INF/flows/booking/libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/booking-portlet-mvc/sr0000755000000000000000000000000011360615646030015 5ustar ././@LongLink0000000000000000000000000000024000000000000011561 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/booking-portlet-mvc/src/main/webapp/WEB-INF/flows/booking/enterBookingDetails.jsplibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/booking-portlet-mvc/sr0000644000000000000000000001051311360615644030015 0ustar <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> <%@ taglib prefix="portlet" uri="http://java.sun.com/portlet" %> <%@ taglib prefix="spring" uri="http://www.springframework.org/tags" %> <%@ taglib prefix="form" uri="http://www.springframework.org/tags/form" %>

Book Hotel

Name: ${booking.hotel.name}
Address: ${booking.hotel.address}
City, State: ${booking.hotel.city}, ${booking.hotel.state}
Zip: ${booking.hotel.zip}
Country: ${booking.hotel.country}
Nightly rate: ${status.value}
   
././@LongLink0000000000000000000000000000023200000000000011562 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/booking-portlet-mvc/src/main/webapp/WEB-INF/flows/booking/reviewBooking.jsplibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/booking-portlet-mvc/sr0000644000000000000000000000413111360615640030010 0ustar <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> <%@ taglib prefix="portlet" uri="http://java.sun.com/portlet" %> <%@ taglib prefix="spring" uri="http://www.springframework.org/tags" %> <%@ taglib prefix="form" uri="http://www.springframework.org/tags/form" %>

Confirm Hotel Booking

Name: ${booking.hotel.name}
Address: ${booking.hotel.address}
City, State: ${booking.hotel.city}, ${booking.hotel.state}
Zip: ${booking.hotel.zip}
Country: ${booking.hotel.country}
Total payment: ${status.value}
Check In Date: ${status.value}
Check Out Date: ${status.value}
Credit Card #: ${booking.creditCard}
     
././@LongLink0000000000000000000000000000022400000000000011563 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/booking-portlet-mvc/src/main/webapp/WEB-INF/flows/booking/booking.xmllibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/booking-portlet-mvc/sr0000644000000000000000000000207711360615646030025 0ustar ././@LongLink0000000000000000000000000000020300000000000011560 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/booking-portlet-mvc/src/main/webapp/WEB-INF/classes/libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/booking-portlet-mvc/sr0000755000000000000000000000000011360615640030007 5ustar ././@LongLink0000000000000000000000000000022300000000000011562 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/booking-portlet-mvc/src/main/webapp/WEB-INF/classes/log4j.propertieslibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/booking-portlet-mvc/sr0000644000000000000000000000066411360615640030017 0ustar log4j.rootCategory=INFO, stdout log4j.appender.stdout=org.apache.log4j.ConsoleAppender log4j.appender.stdout.layout=org.apache.log4j.PatternLayout log4j.appender.stdout.layout.ConversionPattern=%d %p [%c] - <%m>%n # Enable web flow logging log4j.category.org.springframework.webflow=DEBUG log4j.category.org.springframework.js=DEBUG log4j.category.org.springframework.binding=DEBUG log4j.category.org.springframework.transaction=DEBUG././@LongLink0000000000000000000000000000020600000000000011563 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/booking-portlet-mvc/src/main/webapp/WEB-INF/portlet.xmllibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/booking-portlet-mvc/sr0000644000000000000000000000172111360615636030017 0ustar swf-booking-mvc Spring Webflow Booking MVC org.springframework.web.portlet.DispatcherPortlet contextConfigLocation /WEB-INF/config/hotelbooking-portlet-config.xml viewRendererUrl /WEB-INF/servlet/view 0 text/html view Spring Webflow Booking MVC ././@LongLink0000000000000000000000000000020200000000000011557 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/booking-portlet-mvc/src/main/webapp/WEB-INF/config/libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/booking-portlet-mvc/sr0000755000000000000000000000000011360615634030012 5ustar ././@LongLink0000000000000000000000000000023000000000000011560 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/booking-portlet-mvc/src/main/webapp/WEB-INF/config/application-config.xmllibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/booking-portlet-mvc/sr0000644000000000000000000000411711360615632030015 0ustar ././@LongLink0000000000000000000000000000024100000000000011562 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/booking-portlet-mvc/src/main/webapp/WEB-INF/config/hotelbooking-portlet-config.xmllibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/booking-portlet-mvc/sr0000644000000000000000000000445211360615634030021 0ustar ././@LongLink0000000000000000000000000000017400000000000011567 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/booking-portlet-mvc/src/main/webapp/META-INF/libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/booking-portlet-mvc/sr0000755000000000000000000000000011360615640030007 5ustar ././@LongLink0000000000000000000000000000020700000000000011564 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/booking-portlet-mvc/src/main/webapp/META-INF/MANIFEST.MFlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/booking-portlet-mvc/sr0000644000000000000000000000003111360615640030003 0ustar Manifest-Version: 1.0 ././@LongLink0000000000000000000000000000016600000000000011570 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/booking-portlet-mvc/src/main/resources/libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/booking-portlet-mvc/sr0000755000000000000000000000000011360615640030007 5ustar ././@LongLink0000000000000000000000000000020000000000000011555 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/booking-portlet-mvc/src/main/resources/import.sqllibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/booking-portlet-mvc/sr0000644000000000000000000001013211360615640030006 0ustar insert into Customer (username, name) values ('keith', 'Keith') insert into Customer (username, name) values ('erwin', 'Erwin') insert into Customer (username, name) values ('jeremy', 'Jeremy') insert into Customer (username, name) values ('scott', 'Scott') insert into Customer (username, name) values ('pluto', 'Pluto') insert into Hotel (id, price, name, address, city, state, zip, country) values (1, 199, 'Westin Diplomat', '3555 S. Ocean Drive', 'Hollywood', 'FL', '33019', 'USA') insert into Hotel (id, price, name, address, city, state, zip, country) values (2, 60, 'Jameson Inn', '890 Palm Bay Rd NE', 'Palm Bay', 'FL', '32905', 'USA') insert into Hotel (id, price, name, address, city, state, zip, country) values (3, 199, 'Chilworth Manor', 'The Cottage, Southampton Business Park', 'Southampton', 'Hants', 'SO16 7JF', 'UK') insert into Hotel (id, price, name, address, city, state, zip, country) values (4, 120, 'Marriott Courtyard', 'Tower Place, Buckhead', 'Atlanta', 'GA', '30305', 'USA') insert into Hotel (id, price, name, address, city, state, zip, country) values (5, 180, 'Doubletree', 'Tower Place, Buckhead', 'Atlanta', 'GA', '30305', 'USA') insert into Hotel (id, price, name, address, city, state, zip, country) values (6, 450, 'W Hotel', 'Union Square, Manhattan', 'NY', 'NY', '10011', 'USA') insert into Hotel (id, price, name, address, city, state, zip, country) values (7, 450, 'W Hotel', 'Lexington Ave, Manhattan', 'NY', 'NY', '10011', 'USA') insert into Hotel (id, price, name, address, city, state, zip, country) values (8, 250, 'Hotel Rouge', '1315 16th Street NW', 'Washington', 'DC', '20036', 'USA') insert into Hotel (id, price, name, address, city, state, zip, country) values (9, 300, '70 Park Avenue Hotel', '70 Park Avenue', 'NY', 'NY', '10011', 'USA') insert into Hotel (id, price, name, address, city, state, zip, country) values (10, 300, 'Conrad Miami', '1395 Brickell Ave', 'Miami', 'FL', '33131', 'USA') insert into Hotel (id, price, name, address, city, state, zip, country) values (11, 80, 'Sea Horse Inn', '2106 N Clairemont Ave', 'Eau Claire', 'WI', '54703', 'USA') insert into Hotel (id, price, name, address, city, state, zip, country) values (12, 90, 'Super 8 Eau Claire Campus Area', '1151 W Macarthur Ave', 'Eau Claire', 'WI', '54701', 'USA') insert into Hotel (id, price, name, address, city, state, zip, country) values (13, 160, 'Marriot Downtown', '55 Fourth Street', 'San Francisco', 'CA', '94103', 'USA') insert into Hotel (id, price, name, address, city, state, zip, country) values (14, 200, 'Hilton Diagonal Mar', 'Passeig del Taulat 262-264', 'Barcelona', 'Catalunya', '08019', 'Spain') insert into Hotel (id, price, name, address, city, state, zip, country) values (15, 210, 'Hilton Tel Aviv', 'Independence Park', 'Tel Aviv', '', '63405', 'Israel') insert into Hotel (id, price, name, address, city, state, zip, country) values (16, 240, 'InterContinental Tokyo Bay', 'Takeshiba Pier', 'Tokyo', '', '105', 'Japan') insert into Hotel (id, price, name, address, city, state, zip, country) values (17, 130, 'Hotel Beaulac', ' Esplanade Léopold-Robert 2', 'Neuchatel', '', '2000', 'Switzerland') insert into Hotel (id, price, name, address, city, state, zip, country) values (18, 140, 'Conrad Treasury Place', 'William & George Streets', 'Brisbane', 'QLD', '4001', 'Australia') insert into Hotel (id, price, name, address, city, state, zip, country) values (19, 230, 'Ritz Carlton', '1228 Sherbrooke St', 'West Montreal', 'Quebec', 'H3G1H6', 'Canada') insert into Hotel (id, price, name, address, city, state, zip, country) values (20, 460, 'Ritz Carlton', 'Peachtree Rd, Buckhead', 'Atlanta', 'GA', '30326', 'USA') insert into Hotel (id, price, name, address, city, state, zip, country) values (21, 220, 'Swissotel', '68 Market Street', 'Sydney', 'NSW', '2000', 'Australia') insert into Hotel (id, price, name, address, city, state, zip, country) values (22, 250, 'Meliá White House', 'Albany Street', 'Regents Park London', '', 'NW13UP', 'Great Britain') insert into Hotel (id, price, name, address, city, state, zip, country) values (23, 210, 'Hotel Allegro', '171 West Randolph Street', 'Chicago', 'IL', '60601', 'USA')././@LongLink0000000000000000000000000000017700000000000011572 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/booking-portlet-mvc/src/main/resources/META-INF/libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/booking-portlet-mvc/sr0000755000000000000000000000000011360615636030014 5ustar ././@LongLink0000000000000000000000000000021600000000000011564 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/booking-portlet-mvc/src/main/resources/META-INF/persistence.xmllibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/booking-portlet-mvc/sr0000644000000000000000000000204611360615636030020 0ustar org.hibernate.ejb.HibernatePersistence org.springframework.webflow.samples.booking.User org.springframework.webflow.samples.booking.Booking org.springframework.webflow.samples.booking.Hotel ././@LongLink0000000000000000000000000000017700000000000011572 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/booking-portlet-mvc/src/main/resources/log4j.xmllibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/booking-portlet-mvc/sr0000644000000000000000000000214511360615634030016 0ustar ././@LongLink0000000000000000000000000000016100000000000011563 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/booking-portlet-mvc/src/main/java/libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/booking-portlet-mvc/sr0000755000000000000000000000000011360615632030010 5ustar ././@LongLink0000000000000000000000000000016500000000000011567 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/booking-portlet-mvc/src/main/java/org/libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/booking-portlet-mvc/sr0000755000000000000000000000000011360615632030010 5ustar ././@LongLink0000000000000000000000000000020500000000000011562 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/booking-portlet-mvc/src/main/java/org/springframework/libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/booking-portlet-mvc/sr0000755000000000000000000000000011360615632030010 5ustar ././@LongLink0000000000000000000000000000021500000000000011563 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/booking-portlet-mvc/src/main/java/org/springframework/webflow/libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/booking-portlet-mvc/sr0000755000000000000000000000000011360615632030010 5ustar ././@LongLink0000000000000000000000000000022500000000000011564 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/booking-portlet-mvc/src/main/java/org/springframework/webflow/samples/libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/booking-portlet-mvc/sr0000755000000000000000000000000011360615632030010 5ustar ././@LongLink0000000000000000000000000000023500000000000011565 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/booking-portlet-mvc/src/main/java/org/springframework/webflow/samples/booking/libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/booking-portlet-mvc/sr0000755000000000000000000000000011360615640030007 5ustar ././@LongLink0000000000000000000000000000025100000000000011563 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/booking-portlet-mvc/src/main/java/org/springframework/webflow/samples/booking/Booking.javalibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/booking-portlet-mvc/sr0000644000000000000000000000737411360615632030025 0ustar package org.springframework.webflow.samples.booking; import java.io.Serializable; import java.math.BigDecimal; import java.text.DateFormat; import java.util.Calendar; import java.util.Date; import javax.persistence.Basic; import javax.persistence.Entity; import javax.persistence.GeneratedValue; import javax.persistence.GenerationType; import javax.persistence.Id; import javax.persistence.ManyToOne; import javax.persistence.Temporal; import javax.persistence.TemporalType; import javax.persistence.Transient; /** * A Hotel Booking made by a User. */ @Entity public class Booking implements Serializable { private Long id; private User user; private Hotel hotel; private Date checkinDate; private Date checkoutDate; private String creditCard; private String creditCardName; private int creditCardExpiryMonth; private int creditCardExpiryYear; private boolean smoking; private int beds; public Booking() { Calendar calendar = Calendar.getInstance(); setCheckinDate(calendar.getTime()); calendar.add(Calendar.DAY_OF_MONTH, 1); setCheckoutDate(calendar.getTime()); } public Booking(Hotel hotel, User user) { this(); this.hotel = hotel; this.user = user; } @Transient public BigDecimal getTotal() { return hotel.getPrice().multiply(new BigDecimal(getNights())); } @Transient public int getNights() { return (int) (checkoutDate.getTime() - checkinDate.getTime()) / 1000 / 60 / 60 / 24; } @Id @GeneratedValue(strategy = GenerationType.TABLE) public Long getId() { return id; } public void setId(Long id) { this.id = id; } @Basic @Temporal(TemporalType.DATE) public Date getCheckinDate() { return checkinDate; } public void setCheckinDate(Date datetime) { this.checkinDate = datetime; } @ManyToOne public Hotel getHotel() { return hotel; } public void setHotel(Hotel hotel) { this.hotel = hotel; } @ManyToOne public User getUser() { return user; } public void setUser(User user) { this.user = user; } @Basic @Temporal(TemporalType.DATE) public Date getCheckoutDate() { return checkoutDate; } public void setCheckoutDate(Date checkoutDate) { this.checkoutDate = checkoutDate; } public String getCreditCard() { return creditCard; } public void setCreditCard(String creditCard) { this.creditCard = creditCard; } @Transient public String getDescription() { DateFormat df = DateFormat.getDateInstance(DateFormat.MEDIUM); return hotel == null ? null : hotel.getName() + ", " + df.format(getCheckinDate()) + " to " + df.format(getCheckoutDate()); } public boolean isSmoking() { return smoking; } public void setSmoking(boolean smoking) { this.smoking = smoking; } public int getBeds() { return beds; } public void setBeds(int beds) { this.beds = beds; } public String getCreditCardName() { return creditCardName; } public void setCreditCardName(String creditCardName) { this.creditCardName = creditCardName; } public int getCreditCardExpiryMonth() { return creditCardExpiryMonth; } public void setCreditCardExpiryMonth(int creditCardExpiryMonth) { this.creditCardExpiryMonth = creditCardExpiryMonth; } public int getCreditCardExpiryYear() { return creditCardExpiryYear; } public void setCreditCardExpiryYear(int creditCardExpiryYear) { this.creditCardExpiryYear = creditCardExpiryYear; } @Override public String toString() { return "Booking(" + user + "," + hotel + ")"; } } ././@LongLink0000000000000000000000000000024600000000000011567 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/booking-portlet-mvc/src/main/java/org/springframework/webflow/samples/booking/User.javalibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/booking-portlet-mvc/sr0000644000000000000000000000212011360615632030005 0ustar package org.springframework.webflow.samples.booking; import java.io.Serializable; import javax.persistence.Entity; import javax.persistence.Id; import javax.persistence.Table; /** * A user who can book hotels. */ @Entity @Table(name = "Customer") public class User implements Serializable { private String username; private String password; private String name; public User() { } public User(String username, String password, String name) { this.username = username; this.password = password; this.name = name; } @Id public String getUsername() { return username; } public void setUsername(String username) { this.username = username; } public String getPassword() { return password; } public void setPassword(String password) { this.password = password; } public String getName() { return name; } public void setName(String name) { this.name = name; } @Override public String toString() { return "User(" + username + ")"; } } ././@LongLink0000000000000000000000000000026300000000000011566 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/booking-portlet-mvc/src/main/java/org/springframework/webflow/samples/booking/JpaBookingService.javalibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/booking-portlet-mvc/sr0000644000000000000000000000523411360615632030016 0ustar package org.springframework.webflow.samples.booking; import java.util.List; import javax.persistence.EntityManager; import javax.persistence.PersistenceContext; import org.springframework.stereotype.Repository; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import org.springframework.util.StringUtils; /** * A JPA-based implementation of the Booking Service. Delegates to a JPA entity manager to issue data access calls * against the backing repository. The EntityManager reference is provided by the managing container (Spring) * automatically. */ @Service("bookingService") @Repository public class JpaBookingService implements BookingService { private EntityManager em; @PersistenceContext public void setEntityManager(EntityManager em) { this.em = em; } @Transactional(readOnly = true) public User findUser(String username) { return (User) em.createQuery("select u from User u where u.username = :username").setParameter("username", username).getSingleResult(); } @Transactional(readOnly = true) @SuppressWarnings("unchecked") public List findBookings(String username) { if (username != null) { return em.createQuery("select b from Booking b where b.user.username = :username order by b.checkinDate") .setParameter("username", username).getResultList(); } else { return null; } } @Transactional(readOnly = true) @SuppressWarnings("unchecked") public List findHotels(SearchCriteria criteria) { String pattern = getSearchPattern(criteria); return em.createQuery( "select h from Hotel h where lower(h.name) like " + pattern + " or lower(h.city) like " + pattern + " or lower(h.zip) like " + pattern + " or lower(h.address) like " + pattern).setMaxResults( criteria.getPageSize()).setFirstResult(criteria.getPage() * criteria.getPageSize()).getResultList(); } @Transactional(readOnly = true) public Hotel findHotelById(Long id) { return em.find(Hotel.class, id); } @Transactional(readOnly = true) public Booking createBooking(Long hotelId, String username) { Hotel hotel = em.find(Hotel.class, hotelId); User user = findUser(username); return new Booking(hotel, user); } @Transactional public void cancelBooking(Long id) { Booking booking = em.find(Booking.class, id); if (booking != null) { em.remove(booking); } } // helpers private String getSearchPattern(SearchCriteria criteria) { if (StringUtils.hasText(criteria.getSearchString())) { return "'%" + criteria.getSearchString().toLowerCase().replace('*', '%') + "%'"; } else { return "'%'"; } } }././@LongLink0000000000000000000000000000024700000000000011570 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/booking-portlet-mvc/src/main/java/org/springframework/webflow/samples/booking/Hotel.javalibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/booking-portlet-mvc/sr0000644000000000000000000000341411360615640030013 0ustar package org.springframework.webflow.samples.booking; import java.io.Serializable; import java.math.BigDecimal; import javax.persistence.Column; import javax.persistence.Entity; import javax.persistence.GeneratedValue; import javax.persistence.Id; /** * A hotel where users may book stays. */ @Entity public class Hotel implements Serializable { private Long id; private String name; private String address; private String city; private String state; private String zip; private String country; private BigDecimal price; @Id @GeneratedValue public Long getId() { return id; } public void setId(Long id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } public String getAddress() { return address; } public void setAddress(String address) { this.address = address; } public String getCity() { return city; } public void setCity(String city) { this.city = city; } public String getZip() { return zip; } public void setZip(String zip) { this.zip = zip; } public String getState() { return state; } public void setState(String state) { this.state = state; } public String getCountry() { return country; } public void setCountry(String country) { this.country = country; } @Column(precision = 6, scale = 2) public BigDecimal getPrice() { return price; } public void setPrice(BigDecimal price) { this.price = price; } public Booking createBooking(User user) { return new Booking(this, user); } @Override public String toString() { return "Hotel(" + name + "," + address + "," + city + "," + zip + ")"; } } ././@LongLink0000000000000000000000000000026200000000000011565 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/booking-portlet-mvc/src/main/java/org/springframework/webflow/samples/booking/BookingValidator.javalibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/booking-portlet-mvc/sr0000644000000000000000000000236411360615632030017 0ustar package org.springframework.webflow.samples.booking; import java.util.Calendar; import org.springframework.validation.Errors; import org.springframework.validation.Validator; public class BookingValidator implements Validator { public boolean supports(Class clazz) { return Booking.class.equals(clazz); } public void validate(Object obj, Errors errors) { Booking booking = (Booking) obj; Calendar calendar = Calendar.getInstance(); calendar.add(Calendar.DAY_OF_MONTH, -1); if (booking.getCreditCard() == null || "".equals(booking.getCreditCard())) { errors.rejectValue("creditCard", null, "Credit card number must be provided"); } if (booking.getCreditCardName() == null || "".equals(booking.getCreditCardName())) { errors.rejectValue("creditCardName", null, "Credit card name must be provided"); } if (booking.getCheckinDate() == null || booking.getCheckinDate().before(calendar.getTime())) { errors.rejectValue("checkinDate", null, "Check in date must be a future date"); } else if (booking.getCheckoutDate() == null || !booking.getCheckinDate().before(booking.getCheckoutDate())) { errors.rejectValue("checkoutDate", null, "Check out date must be later than check in date"); } } } ././@LongLink0000000000000000000000000000026000000000000011563 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/booking-portlet-mvc/src/main/java/org/springframework/webflow/samples/booking/BookingService.javalibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/booking-portlet-mvc/sr0000644000000000000000000000256111360615632030016 0ustar package org.springframework.webflow.samples.booking; import java.util.List; /** * A service interface for retrieving hotels and bookings from a backing repository. Also supports the ability to cancel * a booking. */ public interface BookingService { /** * Find user by their username. * @param username the user's username * @return the user */ public User findUser(String username); /** * Find bookings made by the given user * @param username the user's name * @return their bookings */ public List findBookings(String username); /** * Find hotels available for booking by some criteria. * @param criteria the search criteria * @return a list of hotels meeting the criteria */ public List findHotels(SearchCriteria criteria); /** * Find hotels by their identifier. * @param id the hotel id * @return the hotel */ public Hotel findHotelById(Long id); /** * Create a new, transient hotel booking instance for the given user. * @param hotelId the hotelId * @param userName the user name * @return the new transient booking instance */ public Booking createBooking(Long hotelId, String userName); /** * Cancel an existing booking. * @param id the booking id */ public void cancelBooking(Long id); } ././@LongLink0000000000000000000000000000026100000000000011564 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/booking-portlet-mvc/src/main/java/org/springframework/webflow/samples/booking/ViewFlowHandler.javalibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/booking-portlet-mvc/sr0000644000000000000000000000036011360615634030013 0ustar package org.springframework.webflow.samples.booking; import org.springframework.webflow.mvc.portlet.AbstractFlowHandler; public class ViewFlowHandler extends AbstractFlowHandler { public String getFlowId() { return "view"; } } ././@LongLink0000000000000000000000000000026000000000000011563 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/booking-portlet-mvc/src/main/java/org/springframework/webflow/samples/booking/SearchCriteria.javalibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/booking-portlet-mvc/sr0000644000000000000000000000262111360615634030015 0ustar package org.springframework.webflow.samples.booking; import java.io.Serializable; /** * A backing bean for the main hotel search form. Encapsulates the criteria needed to perform a hotel search. * * It is expected a future milestone of Spring Web Flow 2.0 will allow flow-scoped beans like this one to hold * references to transient services that are restored automatically when the flow is resumed on subsequent requests. * This would allow this SearchCriteria object to delegate to the {@link BookingService} directly, for example, * eliminating the need for the actions in {@link MainActions}. */ public class SearchCriteria implements Serializable { private static final long serialVersionUID = 1L; /** * The user-provided search criteria for finding Hotels. */ private String searchString; /** * The maximum page size of the Hotel result list */ private int pageSize; /** * The current page of the Hotel result list. */ private int page; public String getSearchString() { return searchString; } public void setSearchString(String searchString) { this.searchString = searchString; } public int getPageSize() { return pageSize; } public void setPageSize(int pageSize) { this.pageSize = pageSize; } public int getPage() { return page; } public void setPage(int page) { this.page = page; } }././@LongLink0000000000000000000000000000015400000000000011565 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/booking-portlet-mvc/src/test/libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/booking-portlet-mvc/sr0000755000000000000000000000000011360615646030015 5ustar ././@LongLink0000000000000000000000000000016600000000000011570 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/booking-portlet-mvc/src/test/resources/libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/booking-portlet-mvc/sr0000755000000000000000000000000011360615632030010 5ustar ././@LongLink0000000000000000000000000000020600000000000011563 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/booking-portlet-mvc/src/test/resources/log4j.propertieslibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/booking-portlet-mvc/sr0000644000000000000000000000052311360615632030012 0ustar log4j.rootCategory=WARN, stdout log4j.appender.stdout=org.apache.log4j.ConsoleAppender log4j.appender.stdout.layout=org.apache.log4j.PatternLayout log4j.appender.stdout.layout.ConversionPattern=%d %p [%c] - <%m>%n # Enable web flow logging log4j.category.org.springframework.webflow=DEBUG log4j.category.org.springframework.binding=DEBUG././@LongLink0000000000000000000000000000016100000000000011563 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/booking-portlet-mvc/src/test/java/libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/booking-portlet-mvc/sr0000755000000000000000000000000011360615646030015 5ustar ././@LongLink0000000000000000000000000000016500000000000011567 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/booking-portlet-mvc/src/test/java/org/libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/booking-portlet-mvc/sr0000755000000000000000000000000011360615646030015 5ustar ././@LongLink0000000000000000000000000000020500000000000011562 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/booking-portlet-mvc/src/test/java/org/springframework/libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/booking-portlet-mvc/sr0000755000000000000000000000000011360615646030015 5ustar ././@LongLink0000000000000000000000000000021500000000000011563 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/booking-portlet-mvc/src/test/java/org/springframework/webflow/libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/booking-portlet-mvc/sr0000755000000000000000000000000011360615646030015 5ustar ././@LongLink0000000000000000000000000000022500000000000011564 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/booking-portlet-mvc/src/test/java/org/springframework/webflow/samples/libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/booking-portlet-mvc/sr0000755000000000000000000000000011360615646030015 5ustar ././@LongLink0000000000000000000000000000023500000000000011565 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/booking-portlet-mvc/src/test/java/org/springframework/webflow/samples/booking/libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/booking-portlet-mvc/sr0000755000000000000000000000000011360615646030015 5ustar ././@LongLink0000000000000000000000000000015200000000000011563 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/booking-portlet-mvc/pom.xmllibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/booking-portlet-mvc/po0000644000000000000000000001331711360615632030011 0ustar 4.0.0 org.springframework.webflow.samples booking-portlet-mvc war 2.0.9.RELEASE javax.persistence com.springsource.javax.persistence 1.0.0 javax.transaction com.springsource.javax.transaction 1.1.0 org.aopalliance com.springsource.org.aopalliance 1.0.0 org.apache.log4j com.springsource.org.apache.log4j 1.2.15 org.hibernate com.springsource.org.hibernate 3.2.6.ga org.hibernate com.springsource.org.hibernate.annotations 3.3.0.ga org.hibernate com.springsource.org.hibernate.ejb 3.3.1.ga org.hsqldb com.springsource.org.hsqldb 1.8.0.9 org.jboss.el com.springsource.org.jboss.el 2.0.0.GA org.springframework org.springframework.aop ${spring.version} org.springframework org.springframework.beans ${spring.version} org.springframework org.springframework.context ${spring.version} org.springframework org.springframework.core ${spring.version} org.springframework org.springframework.jdbc ${spring.version} org.springframework org.springframework.orm ${spring.version} org.springframework org.springframework.transaction ${spring.version} org.springframework org.springframework.web ${spring.version} org.springframework org.springframework.web.portlet ${spring.version} org.springframework org.springframework.web.servlet ${spring.version} org.springframework.webflow org.springframework.js ${project.version} org.springframework.webflow org.springframework.webflow ${project.version} javax.portlet com.springsource.javax.portlet 1.0.0 provided javax.el com.springsource.javax.el 1.0.0 provided javax.servlet com.springsource.javax.servlet 2.4.0 provided org.junit com.springsource.junit 3.8.2 test org.springframework org.springframework.test ${spring.version} test com.springsource.repository.bundles.release SpringSource Enterprise Bundle Repository - SpringSource Releases http://repository.springsource.com/maven/bundles/release com.springsource.repository.bundles.external SpringSource Enterprise Bundle Repository - External Releases http://repository.springsource.com/maven/bundles/external booking-portlet-mvc org.apache.maven.plugins maven-compiler-plugin 1.5 1.5 2.5.6.SEC01 ././@LongLink0000000000000000000000000000015500000000000011566 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/booking-portlet-mvc/.settings/libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/booking-portlet-mvc/.s0000755000000000000000000000000011360615642027705 5ustar ././@LongLink0000000000000000000000000000023400000000000011564 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/booking-portlet-mvc/.settings/org.eclipse.jst.common.project.facet.core.prefslibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/booking-portlet-mvc/.s0000644000000000000000000000054011360615632027705 0ustar #Thu Aug 09 13:12:30 EDT 2007 classpath.helper/org.eclipse.jdt.launching.JRE_CONTAINER/owners=jst.java\:5.0 classpath.helper/org.eclipse.jst.server.core.container\:\:org.eclipse.jst.server.tomcat.runtimeTarget\:\:Apache\ Tomcat\ v5.5/owners=jst.web\:2.4 eclipse.preferences.version=1 instance/org.eclipse.core.net/org.eclipse.core.net.hasMigrated=true ././@LongLink0000000000000000000000000000020500000000000011562 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/booking-portlet-mvc/.settings/org.eclipse.jdt.ui.prefslibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/booking-portlet-mvc/.s0000644000000000000000000000504011360615634027707 0ustar #Thu Aug 09 13:12:30 EDT 2007 eclipse.preferences.version=1 editor_save_participant_org.eclipse.jdt.ui.postsavelistener.cleanup=true formatter_profile=_Spring Java Conventions formatter_settings_version=11 instance/org.eclipse.core.net/org.eclipse.core.net.hasMigrated=true sp_cleanup.add_default_serial_version_id=true sp_cleanup.add_generated_serial_version_id=false sp_cleanup.add_missing_annotations=true sp_cleanup.add_missing_deprecated_annotations=true sp_cleanup.add_missing_nls_tags=false sp_cleanup.add_missing_override_annotations=true sp_cleanup.add_serial_version_id=false sp_cleanup.always_use_blocks=true sp_cleanup.always_use_parentheses_in_expressions=false sp_cleanup.always_use_this_for_non_static_field_access=false sp_cleanup.always_use_this_for_non_static_method_access=false sp_cleanup.convert_to_enhanced_for_loop=false sp_cleanup.format_source_code=true sp_cleanup.make_local_variable_final=false sp_cleanup.make_parameters_final=false sp_cleanup.make_private_fields_final=true sp_cleanup.make_variable_declarations_final=true sp_cleanup.never_use_blocks=false sp_cleanup.never_use_parentheses_in_expressions=true sp_cleanup.on_save_use_additional_actions=false sp_cleanup.organize_imports=true sp_cleanup.qualify_static_field_accesses_with_declaring_class=false sp_cleanup.qualify_static_member_accesses_through_instances_with_declaring_class=true sp_cleanup.qualify_static_member_accesses_through_subtypes_with_declaring_class=true sp_cleanup.qualify_static_member_accesses_with_declaring_class=false sp_cleanup.qualify_static_method_accesses_with_declaring_class=false sp_cleanup.remove_private_constructors=true sp_cleanup.remove_trailing_whitespaces=false sp_cleanup.remove_trailing_whitespaces_all=true sp_cleanup.remove_trailing_whitespaces_ignore_empty=false sp_cleanup.remove_unnecessary_casts=true sp_cleanup.remove_unnecessary_nls_tags=false sp_cleanup.remove_unused_imports=false sp_cleanup.remove_unused_local_variables=false sp_cleanup.remove_unused_private_fields=true sp_cleanup.remove_unused_private_members=false sp_cleanup.remove_unused_private_methods=true sp_cleanup.remove_unused_private_types=true sp_cleanup.sort_members=false sp_cleanup.sort_members_all=false sp_cleanup.use_blocks=false sp_cleanup.use_blocks_only_for_return_and_throw=false sp_cleanup.use_parentheses_in_expressions=false sp_cleanup.use_this_for_non_static_field_access=false sp_cleanup.use_this_for_non_static_field_access_only_if_necessary=true sp_cleanup.use_this_for_non_static_method_access=false sp_cleanup.use_this_for_non_static_method_access_only_if_necessary=true ././@LongLink0000000000000000000000000000020700000000000011564 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/booking-portlet-mvc/.settings/org.eclipse.jdt.core.prefslibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/booking-portlet-mvc/.s0000644000000000000000000005300411360615636027714 0ustar #Thu Aug 09 13:12:30 EDT 2007 eclipse.preferences.version=1 instance/org.eclipse.core.net/org.eclipse.core.net.hasMigrated=true org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.5 org.eclipse.jdt.core.compiler.compliance=1.5 org.eclipse.jdt.core.compiler.problem.assertIdentifier=error org.eclipse.jdt.core.compiler.problem.enumIdentifier=error org.eclipse.jdt.core.compiler.source=1.5 org.eclipse.jdt.core.formatter.align_type_members_on_columns=false org.eclipse.jdt.core.formatter.alignment_for_arguments_in_allocation_expression=16 org.eclipse.jdt.core.formatter.alignment_for_arguments_in_enum_constant=16 org.eclipse.jdt.core.formatter.alignment_for_arguments_in_explicit_constructor_call=16 org.eclipse.jdt.core.formatter.alignment_for_arguments_in_method_invocation=16 org.eclipse.jdt.core.formatter.alignment_for_arguments_in_qualified_allocation_expression=16 org.eclipse.jdt.core.formatter.alignment_for_assignment=0 org.eclipse.jdt.core.formatter.alignment_for_binary_expression=16 org.eclipse.jdt.core.formatter.alignment_for_compact_if=16 org.eclipse.jdt.core.formatter.alignment_for_conditional_expression=80 org.eclipse.jdt.core.formatter.alignment_for_enum_constants=0 org.eclipse.jdt.core.formatter.alignment_for_expressions_in_array_initializer=16 org.eclipse.jdt.core.formatter.alignment_for_multiple_fields=16 org.eclipse.jdt.core.formatter.alignment_for_parameters_in_constructor_declaration=16 org.eclipse.jdt.core.formatter.alignment_for_parameters_in_method_declaration=16 org.eclipse.jdt.core.formatter.alignment_for_selector_in_method_invocation=16 org.eclipse.jdt.core.formatter.alignment_for_superclass_in_type_declaration=16 org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_enum_declaration=16 org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_type_declaration=16 org.eclipse.jdt.core.formatter.alignment_for_throws_clause_in_constructor_declaration=16 org.eclipse.jdt.core.formatter.alignment_for_throws_clause_in_method_declaration=16 org.eclipse.jdt.core.formatter.blank_lines_after_imports=1 org.eclipse.jdt.core.formatter.blank_lines_after_package=1 org.eclipse.jdt.core.formatter.blank_lines_before_field=0 org.eclipse.jdt.core.formatter.blank_lines_before_first_class_body_declaration=0 org.eclipse.jdt.core.formatter.blank_lines_before_imports=1 org.eclipse.jdt.core.formatter.blank_lines_before_member_type=1 org.eclipse.jdt.core.formatter.blank_lines_before_method=1 org.eclipse.jdt.core.formatter.blank_lines_before_new_chunk=1 org.eclipse.jdt.core.formatter.blank_lines_before_package=0 org.eclipse.jdt.core.formatter.blank_lines_between_import_groups=1 org.eclipse.jdt.core.formatter.blank_lines_between_type_declarations=1 org.eclipse.jdt.core.formatter.brace_position_for_annotation_type_declaration=end_of_line org.eclipse.jdt.core.formatter.brace_position_for_anonymous_type_declaration=end_of_line org.eclipse.jdt.core.formatter.brace_position_for_array_initializer=end_of_line org.eclipse.jdt.core.formatter.brace_position_for_block=end_of_line org.eclipse.jdt.core.formatter.brace_position_for_block_in_case=end_of_line org.eclipse.jdt.core.formatter.brace_position_for_constructor_declaration=end_of_line org.eclipse.jdt.core.formatter.brace_position_for_enum_constant=end_of_line org.eclipse.jdt.core.formatter.brace_position_for_enum_declaration=end_of_line org.eclipse.jdt.core.formatter.brace_position_for_method_declaration=end_of_line org.eclipse.jdt.core.formatter.brace_position_for_switch=end_of_line org.eclipse.jdt.core.formatter.brace_position_for_type_declaration=end_of_line org.eclipse.jdt.core.formatter.comment.clear_blank_lines_in_block_comment=false org.eclipse.jdt.core.formatter.comment.clear_blank_lines_in_javadoc_comment=false org.eclipse.jdt.core.formatter.comment.format_block_comments=true org.eclipse.jdt.core.formatter.comment.format_header=false org.eclipse.jdt.core.formatter.comment.format_html=true org.eclipse.jdt.core.formatter.comment.format_javadoc_comments=true org.eclipse.jdt.core.formatter.comment.format_line_comments=true org.eclipse.jdt.core.formatter.comment.format_source_code=true org.eclipse.jdt.core.formatter.comment.indent_parameter_description=true org.eclipse.jdt.core.formatter.comment.indent_root_tags=false org.eclipse.jdt.core.formatter.comment.insert_new_line_before_root_tags=do not insert org.eclipse.jdt.core.formatter.comment.insert_new_line_for_parameter=do not insert org.eclipse.jdt.core.formatter.comment.line_length=120 org.eclipse.jdt.core.formatter.compact_else_if=true org.eclipse.jdt.core.formatter.continuation_indentation=2 org.eclipse.jdt.core.formatter.continuation_indentation_for_array_initializer=2 org.eclipse.jdt.core.formatter.format_guardian_clause_on_one_line=false org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_annotation_declaration_header=true org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_enum_constant_header=true org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_enum_declaration_header=true org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_type_header=true org.eclipse.jdt.core.formatter.indent_breaks_compare_to_cases=true org.eclipse.jdt.core.formatter.indent_empty_lines=false org.eclipse.jdt.core.formatter.indent_statements_compare_to_block=true org.eclipse.jdt.core.formatter.indent_statements_compare_to_body=true org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_cases=true org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_switch=false org.eclipse.jdt.core.formatter.indentation.size=4 org.eclipse.jdt.core.formatter.insert_new_line_after_annotation=insert org.eclipse.jdt.core.formatter.insert_new_line_after_opening_brace_in_array_initializer=do not insert org.eclipse.jdt.core.formatter.insert_new_line_at_end_of_file_if_missing=do not insert org.eclipse.jdt.core.formatter.insert_new_line_before_catch_in_try_statement=do not insert org.eclipse.jdt.core.formatter.insert_new_line_before_closing_brace_in_array_initializer=do not insert org.eclipse.jdt.core.formatter.insert_new_line_before_else_in_if_statement=do not insert org.eclipse.jdt.core.formatter.insert_new_line_before_finally_in_try_statement=do not insert org.eclipse.jdt.core.formatter.insert_new_line_before_while_in_do_statement=do not insert org.eclipse.jdt.core.formatter.insert_new_line_in_empty_annotation_declaration=insert org.eclipse.jdt.core.formatter.insert_new_line_in_empty_anonymous_type_declaration=insert org.eclipse.jdt.core.formatter.insert_new_line_in_empty_block=insert org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_constant=insert org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_declaration=insert org.eclipse.jdt.core.formatter.insert_new_line_in_empty_method_body=insert org.eclipse.jdt.core.formatter.insert_new_line_in_empty_type_declaration=insert org.eclipse.jdt.core.formatter.insert_space_after_and_in_type_parameter=insert org.eclipse.jdt.core.formatter.insert_space_after_assignment_operator=insert org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation=do not insert org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation_type_declaration=do not insert org.eclipse.jdt.core.formatter.insert_space_after_binary_operator=insert org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_arguments=insert org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_parameters=insert org.eclipse.jdt.core.formatter.insert_space_after_closing_brace_in_block=insert org.eclipse.jdt.core.formatter.insert_space_after_closing_paren_in_cast=insert org.eclipse.jdt.core.formatter.insert_space_after_colon_in_assert=insert org.eclipse.jdt.core.formatter.insert_space_after_colon_in_case=insert org.eclipse.jdt.core.formatter.insert_space_after_colon_in_conditional=insert org.eclipse.jdt.core.formatter.insert_space_after_colon_in_for=insert org.eclipse.jdt.core.formatter.insert_space_after_colon_in_labeled_statement=insert org.eclipse.jdt.core.formatter.insert_space_after_comma_in_allocation_expression=insert org.eclipse.jdt.core.formatter.insert_space_after_comma_in_annotation=insert org.eclipse.jdt.core.formatter.insert_space_after_comma_in_array_initializer=insert org.eclipse.jdt.core.formatter.insert_space_after_comma_in_constructor_declaration_parameters=insert org.eclipse.jdt.core.formatter.insert_space_after_comma_in_constructor_declaration_throws=insert org.eclipse.jdt.core.formatter.insert_space_after_comma_in_enum_constant_arguments=insert org.eclipse.jdt.core.formatter.insert_space_after_comma_in_enum_declarations=insert org.eclipse.jdt.core.formatter.insert_space_after_comma_in_explicitconstructorcall_arguments=insert org.eclipse.jdt.core.formatter.insert_space_after_comma_in_for_increments=insert org.eclipse.jdt.core.formatter.insert_space_after_comma_in_for_inits=insert org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_declaration_parameters=insert org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_declaration_throws=insert org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_invocation_arguments=insert org.eclipse.jdt.core.formatter.insert_space_after_comma_in_multiple_field_declarations=insert org.eclipse.jdt.core.formatter.insert_space_after_comma_in_multiple_local_declarations=insert org.eclipse.jdt.core.formatter.insert_space_after_comma_in_parameterized_type_reference=insert org.eclipse.jdt.core.formatter.insert_space_after_comma_in_superinterfaces=insert org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_arguments=insert org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_parameters=insert org.eclipse.jdt.core.formatter.insert_space_after_ellipsis=insert org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_parameterized_type_reference=do not insert org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_arguments=do not insert org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_parameters=do not insert org.eclipse.jdt.core.formatter.insert_space_after_opening_brace_in_array_initializer=insert org.eclipse.jdt.core.formatter.insert_space_after_opening_bracket_in_array_allocation_expression=do not insert org.eclipse.jdt.core.formatter.insert_space_after_opening_bracket_in_array_reference=do not insert org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_annotation=do not insert org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_cast=do not insert org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_catch=do not insert org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_constructor_declaration=do not insert org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_enum_constant=do not insert org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_for=do not insert org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_if=do not insert org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_method_declaration=do not insert org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_method_invocation=do not insert org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_parenthesized_expression=do not insert org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_switch=do not insert org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_synchronized=do not insert org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_while=do not insert org.eclipse.jdt.core.formatter.insert_space_after_postfix_operator=do not insert org.eclipse.jdt.core.formatter.insert_space_after_prefix_operator=do not insert org.eclipse.jdt.core.formatter.insert_space_after_question_in_conditional=insert org.eclipse.jdt.core.formatter.insert_space_after_question_in_wildcard=do not insert org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_for=insert org.eclipse.jdt.core.formatter.insert_space_after_unary_operator=do not insert org.eclipse.jdt.core.formatter.insert_space_before_and_in_type_parameter=insert org.eclipse.jdt.core.formatter.insert_space_before_assignment_operator=insert org.eclipse.jdt.core.formatter.insert_space_before_at_in_annotation_type_declaration=insert org.eclipse.jdt.core.formatter.insert_space_before_binary_operator=insert org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_parameterized_type_reference=do not insert org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_arguments=do not insert org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_parameters=do not insert org.eclipse.jdt.core.formatter.insert_space_before_closing_brace_in_array_initializer=insert org.eclipse.jdt.core.formatter.insert_space_before_closing_bracket_in_array_allocation_expression=do not insert org.eclipse.jdt.core.formatter.insert_space_before_closing_bracket_in_array_reference=do not insert org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_annotation=do not insert org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_cast=do not insert org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_catch=do not insert org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_constructor_declaration=do not insert org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_enum_constant=do not insert org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_for=do not insert org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_if=do not insert org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_method_declaration=do not insert org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_method_invocation=do not insert org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_parenthesized_expression=do not insert org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_switch=do not insert org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_synchronized=do not insert org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_while=do not insert org.eclipse.jdt.core.formatter.insert_space_before_colon_in_assert=insert org.eclipse.jdt.core.formatter.insert_space_before_colon_in_case=do not insert org.eclipse.jdt.core.formatter.insert_space_before_colon_in_conditional=insert org.eclipse.jdt.core.formatter.insert_space_before_colon_in_default=do not insert org.eclipse.jdt.core.formatter.insert_space_before_colon_in_for=insert org.eclipse.jdt.core.formatter.insert_space_before_colon_in_labeled_statement=do not insert org.eclipse.jdt.core.formatter.insert_space_before_comma_in_allocation_expression=do not insert org.eclipse.jdt.core.formatter.insert_space_before_comma_in_annotation=do not insert org.eclipse.jdt.core.formatter.insert_space_before_comma_in_array_initializer=do not insert org.eclipse.jdt.core.formatter.insert_space_before_comma_in_constructor_declaration_parameters=do not insert org.eclipse.jdt.core.formatter.insert_space_before_comma_in_constructor_declaration_throws=do not insert org.eclipse.jdt.core.formatter.insert_space_before_comma_in_enum_constant_arguments=do not insert org.eclipse.jdt.core.formatter.insert_space_before_comma_in_enum_declarations=do not insert org.eclipse.jdt.core.formatter.insert_space_before_comma_in_explicitconstructorcall_arguments=do not insert org.eclipse.jdt.core.formatter.insert_space_before_comma_in_for_increments=do not insert org.eclipse.jdt.core.formatter.insert_space_before_comma_in_for_inits=do not insert org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_declaration_parameters=do not insert org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_declaration_throws=do not insert org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_invocation_arguments=do not insert org.eclipse.jdt.core.formatter.insert_space_before_comma_in_multiple_field_declarations=do not insert org.eclipse.jdt.core.formatter.insert_space_before_comma_in_multiple_local_declarations=do not insert org.eclipse.jdt.core.formatter.insert_space_before_comma_in_parameterized_type_reference=do not insert org.eclipse.jdt.core.formatter.insert_space_before_comma_in_superinterfaces=do not insert org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_arguments=do not insert org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_parameters=do not insert org.eclipse.jdt.core.formatter.insert_space_before_ellipsis=do not insert org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_parameterized_type_reference=do not insert org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_arguments=do not insert org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_parameters=do not insert org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_annotation_type_declaration=insert org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_anonymous_type_declaration=insert org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_array_initializer=insert org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_block=insert org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_constructor_declaration=insert org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_enum_constant=insert org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_enum_declaration=insert org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_method_declaration=insert org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_switch=insert org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_type_declaration=insert org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_allocation_expression=do not insert org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_reference=do not insert org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_type_reference=do not insert org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_annotation=do not insert org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_annotation_type_member_declaration=do not insert org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_catch=insert org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_constructor_declaration=do not insert org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_enum_constant=do not insert org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_for=insert org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_if=insert org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_method_declaration=do not insert org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_method_invocation=do not insert org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_parenthesized_expression=do not insert org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_switch=insert org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_synchronized=insert org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_while=insert org.eclipse.jdt.core.formatter.insert_space_before_parenthesized_expression_in_return=insert org.eclipse.jdt.core.formatter.insert_space_before_parenthesized_expression_in_throw=insert org.eclipse.jdt.core.formatter.insert_space_before_postfix_operator=do not insert org.eclipse.jdt.core.formatter.insert_space_before_prefix_operator=do not insert org.eclipse.jdt.core.formatter.insert_space_before_question_in_conditional=insert org.eclipse.jdt.core.formatter.insert_space_before_question_in_wildcard=do not insert org.eclipse.jdt.core.formatter.insert_space_before_semicolon=do not insert org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_for=do not insert org.eclipse.jdt.core.formatter.insert_space_before_unary_operator=do not insert org.eclipse.jdt.core.formatter.insert_space_between_brackets_in_array_type_reference=do not insert org.eclipse.jdt.core.formatter.insert_space_between_empty_braces_in_array_initializer=do not insert org.eclipse.jdt.core.formatter.insert_space_between_empty_brackets_in_array_allocation_expression=do not insert org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_annotation_type_member_declaration=do not insert org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_constructor_declaration=do not insert org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_enum_constant=do not insert org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_method_declaration=do not insert org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_method_invocation=do not insert org.eclipse.jdt.core.formatter.keep_else_statement_on_same_line=false org.eclipse.jdt.core.formatter.keep_empty_array_initializer_on_one_line=false org.eclipse.jdt.core.formatter.keep_imple_if_on_one_line=false org.eclipse.jdt.core.formatter.keep_then_statement_on_same_line=false org.eclipse.jdt.core.formatter.lineSplit=120 org.eclipse.jdt.core.formatter.never_indent_block_comments_on_first_column=false org.eclipse.jdt.core.formatter.never_indent_line_comments_on_first_column=false org.eclipse.jdt.core.formatter.number_of_blank_lines_at_beginning_of_method_body=0 org.eclipse.jdt.core.formatter.number_of_empty_lines_to_preserve=1 org.eclipse.jdt.core.formatter.put_empty_statement_on_new_line=true org.eclipse.jdt.core.formatter.tabulation.char=mixed org.eclipse.jdt.core.formatter.tabulation.size=8 org.eclipse.jdt.core.formatter.use_tabs_only_for_leading_indentations=false org.eclipse.jdt.core.formatter.wrap_before_binary_operator=true ././@LongLink0000000000000000000000000000023200000000000011562 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/booking-portlet-mvc/.settings/org.eclipse.wst.common.project.facet.core.xmllibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/booking-portlet-mvc/.s0000644000000000000000000000041311360615640027703 0ustar ././@LongLink0000000000000000000000000000022700000000000011566 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/booking-portlet-mvc/.settings/org.springframework.ide.eclipse.core.prefslibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/booking-portlet-mvc/.s0000644000000000000000000001275111360615636027720 0ustar #Thu Aug 09 13:12:30 EDT 2007 eclipse.preferences.version=1 instance/org.eclipse.core.net/org.eclipse.core.net.hasMigrated=true org.springframework.ide.eclipse.core.builders.enable.aopreferencemodelbuilder=true org.springframework.ide.eclipse.core.validator.enable.org.springframework.ide.eclipse.beans.core.beansvalidator=true org.springframework.ide.eclipse.core.validator.enable.org.springframework.ide.eclipse.webflow.core.validator=true org.springframework.ide.eclipse.core.validator.rule.enable.org.springframework.ide.eclipse.beans.core.beanAlias-org.springframework.ide.eclipse.beans.core.beansvalidator=true org.springframework.ide.eclipse.core.validator.rule.enable.org.springframework.ide.eclipse.beans.core.beanClass-org.springframework.ide.eclipse.beans.core.beansvalidator=true org.springframework.ide.eclipse.core.validator.rule.enable.org.springframework.ide.eclipse.beans.core.beanConstructorArgument-org.springframework.ide.eclipse.beans.core.beansvalidator=true org.springframework.ide.eclipse.core.validator.rule.enable.org.springframework.ide.eclipse.beans.core.beanDefinition-org.springframework.ide.eclipse.beans.core.beansvalidator=true org.springframework.ide.eclipse.core.validator.rule.enable.org.springframework.ide.eclipse.beans.core.beanDefinitionHolder-org.springframework.ide.eclipse.beans.core.beansvalidator=true org.springframework.ide.eclipse.core.validator.rule.enable.org.springframework.ide.eclipse.beans.core.beanFactory-org.springframework.ide.eclipse.beans.core.beansvalidator=true org.springframework.ide.eclipse.core.validator.rule.enable.org.springframework.ide.eclipse.beans.core.beanInitDestroyMethod-org.springframework.ide.eclipse.beans.core.beansvalidator=true org.springframework.ide.eclipse.core.validator.rule.enable.org.springframework.ide.eclipse.beans.core.beanProperty-org.springframework.ide.eclipse.beans.core.beansvalidator=true org.springframework.ide.eclipse.core.validator.rule.enable.org.springframework.ide.eclipse.beans.core.beanReference-org.springframework.ide.eclipse.beans.core.beansvalidator=true org.springframework.ide.eclipse.core.validator.rule.enable.org.springframework.ide.eclipse.beans.core.requiredProperty-org.springframework.ide.eclipse.beans.core.beansvalidator=true org.springframework.ide.eclipse.core.validator.rule.enable.org.springframework.ide.eclipse.webflow.core.validation.action-org.springframework.ide.eclipse.webflow.core.validator=true org.springframework.ide.eclipse.core.validator.rule.enable.org.springframework.ide.eclipse.webflow.core.validation.actionstate-org.springframework.ide.eclipse.webflow.core.validator=true org.springframework.ide.eclipse.core.validator.rule.enable.org.springframework.ide.eclipse.webflow.core.validation.attribute-org.springframework.ide.eclipse.webflow.core.validator=true org.springframework.ide.eclipse.core.validator.rule.enable.org.springframework.ide.eclipse.webflow.core.validation.attributemapper-org.springframework.ide.eclipse.webflow.core.validator=true org.springframework.ide.eclipse.core.validator.rule.enable.org.springframework.ide.eclipse.webflow.core.validation.beanaction-org.springframework.ide.eclipse.webflow.core.validator=true org.springframework.ide.eclipse.core.validator.rule.enable.org.springframework.ide.eclipse.webflow.core.validation.evaluationaction-org.springframework.ide.eclipse.webflow.core.validator=true org.springframework.ide.eclipse.core.validator.rule.enable.org.springframework.ide.eclipse.webflow.core.validation.evaluationresult-org.springframework.ide.eclipse.webflow.core.validator=true org.springframework.ide.eclipse.core.validator.rule.enable.org.springframework.ide.eclipse.webflow.core.validation.exceptionhandler-org.springframework.ide.eclipse.webflow.core.validator=true org.springframework.ide.eclipse.core.validator.rule.enable.org.springframework.ide.eclipse.webflow.core.validation.import-org.springframework.ide.eclipse.webflow.core.validator=true org.springframework.ide.eclipse.core.validator.rule.enable.org.springframework.ide.eclipse.webflow.core.validation.inputattribute-org.springframework.ide.eclipse.webflow.core.validator=true org.springframework.ide.eclipse.core.validator.rule.enable.org.springframework.ide.eclipse.webflow.core.validation.mapping-org.springframework.ide.eclipse.webflow.core.validator=true org.springframework.ide.eclipse.core.validator.rule.enable.org.springframework.ide.eclipse.webflow.core.validation.outputattribute-org.springframework.ide.eclipse.webflow.core.validator=true org.springframework.ide.eclipse.core.validator.rule.enable.org.springframework.ide.eclipse.webflow.core.validation.set-org.springframework.ide.eclipse.webflow.core.validator=true org.springframework.ide.eclipse.core.validator.rule.enable.org.springframework.ide.eclipse.webflow.core.validation.state-org.springframework.ide.eclipse.webflow.core.validator=true org.springframework.ide.eclipse.core.validator.rule.enable.org.springframework.ide.eclipse.webflow.core.validation.subflowstate-org.springframework.ide.eclipse.webflow.core.validator=true org.springframework.ide.eclipse.core.validator.rule.enable.org.springframework.ide.eclipse.webflow.core.validation.transition-org.springframework.ide.eclipse.webflow.core.validator=true org.springframework.ide.eclipse.core.validator.rule.enable.org.springframework.ide.eclipse.webflow.core.validation.variable-org.springframework.ide.eclipse.webflow.core.validator=true org.springframework.ide.eclipse.core.validator.rule.enable.org.springframework.ide.eclipse.webflow.core.validation.webflowstate-org.springframework.ide.eclipse.webflow.core.validator=true ././@LongLink0000000000000000000000000000020700000000000011564 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/booking-portlet-mvc/.settings/org.eclipse.jpt.core.prefslibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/booking-portlet-mvc/.s0000644000000000000000000000033111360615632027703 0ustar #Thu Aug 09 13:12:30 EDT 2007 eclipse.preferences.version=1 instance/org.eclipse.core.net/org.eclipse.core.net.hasMigrated=true org.eclipse.jpt.core.discoverAnnotatedClasses=true org.eclipse.jpt.core.platform=generic ././@LongLink0000000000000000000000000000021500000000000011563 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/booking-portlet-mvc/.settings/org.eclipse.wst.validation.prefslibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/booking-portlet-mvc/.s0000644000000000000000000000367711360615642027724 0ustar #Thu Aug 09 13:12:30 EDT 2007 DELEGATES_PREFERENCE=delegateValidatorListorg.eclipse.wst.wsdl.validation.internal.eclipse.WSDLDelegatingValidator\=org.eclipse.wst.wsdl.validation.internal.eclipse.Validator;org.eclipse.wst.xsd.core.internal.validation.eclipse.XSDDelegatingValidator\=org.eclipse.wst.xsd.core.internal.validation.eclipse.Validator; USER_BUILD_PREFERENCE=enabledBuildValidatorListorg.eclipse.wst.html.internal.validation.HTMLValidator;org.eclipse.wst.xml.core.internal.validation.eclipse.Validator;org.eclipse.wst.dtd.core.internal.validation.eclipse.Validator;org.eclipse.wst.wsdl.validation.internal.eclipse.WSDLDelegatingValidator;org.eclipse.jst.j2ee.internal.web.validation.UIWarValidator;org.eclipse.jst.jsp.core.internal.validation.JSPELValidator;org.eclipse.jst.jsp.core.internal.validation.JSPJavaValidator;org.eclipse.jst.jsp.core.internal.validation.JSPDirectiveValidator;org.eclipse.wst.common.componentcore.internal.ModuleCoreValidator;org.eclipse.wst.wsi.ui.internal.WSIMessageValidator;org.eclipse.wst.xsd.core.internal.validation.eclipse.XSDDelegatingValidator; USER_MANUAL_PREFERENCE=enabledManualValidatorListorg.eclipse.wst.html.internal.validation.HTMLValidator;org.eclipse.wst.xml.core.internal.validation.eclipse.Validator;org.eclipse.wst.dtd.core.internal.validation.eclipse.Validator;org.eclipse.wst.wsdl.validation.internal.eclipse.WSDLDelegatingValidator;org.eclipse.jst.j2ee.internal.web.validation.UIWarValidator;org.eclipse.jst.jsp.core.internal.validation.JSPELValidator;org.eclipse.jst.jsp.core.internal.validation.JSPJavaValidator;org.eclipse.jst.jsp.core.internal.validation.JSPDirectiveValidator;org.eclipse.wst.common.componentcore.internal.ModuleCoreValidator;org.eclipse.wst.wsi.ui.internal.WSIMessageValidator;org.eclipse.wst.xsd.core.internal.validation.eclipse.XSDDelegatingValidator; USER_PREFERENCE=overrideGlobalPreferencesfalse eclipse.preferences.version=1 instance/org.eclipse.core.net/org.eclipse.core.net.hasMigrated=true ././@LongLink0000000000000000000000000000022000000000000011557 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/booking-portlet-mvc/.settings/org.hibernate.eclipse.console.prefslibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/booking-portlet-mvc/.s0000644000000000000000000000027611360615632027713 0ustar #Thu Aug 09 13:12:30 EDT 2007 default.configuration=swf-booking-jsf eclipse.preferences.version=1 hibernate3.enabled=true instance/org.eclipse.core.net/org.eclipse.core.net.hasMigrated=true ././@LongLink0000000000000000000000000000021500000000000011563 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/booking-portlet-mvc/.settings/org.eclipse.wst.common.componentlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/booking-portlet-mvc/.s0000644000000000000000000000147211360615642027713 0ustar ././@LongLink0000000000000000000000000000015400000000000011565 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/booking-portlet-mvc/build.xmllibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/booking-portlet-mvc/bu0000644000000000000000000000063211360615634027777 0ustar ././@LongLink0000000000000000000000000000015500000000000011566 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/booking-portlet-mvc/.classpathlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/booking-portlet-mvc/.c0000644000000000000000000000226211360615632027670 0ustar ././@LongLink0000000000000000000000000000015200000000000011563 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/booking-portlet-mvc/ivy.xmllibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/booking-portlet-mvc/iv0000644000000000000000000001010711360615632030003 0ustar libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/jsf-booking/0000755000000000000000000000000011360615636025755 5ustar libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/jsf-booking/.project0000644000000000000000000000212511360615632027420 0ustar jsf-booking Spring Web Flow Number Guess JSF Example org.eclipse.jdt.core.javabuilder org.eclipse.wst.common.project.facet.core.builder org.eclipse.wst.validation.validationbuilder org.springframework.ide.eclipse.core.springbuilder org.hibernate.eclipse.console.hibernateBuilder org.springframework.ide.eclipse.core.springnature org.eclipse.wst.common.project.facet.core.nature org.eclipse.jdt.core.javanature org.eclipse.wst.common.modulecore.ModuleCoreNature org.eclipse.jem.workbench.JavaEMFNature org.hibernate.eclipse.console.hibernateNature ././@LongLink0000000000000000000000000000014700000000000011567 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/jsf-booking/.springBeanslibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/jsf-booking/.springBea0000644000000000000000000000066211360615632027670 0ustar 1 src/main/webapp/WEB-INF/web-application-config.xml libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/jsf-booking/src/0000755000000000000000000000000011360615646026545 5ustar libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/jsf-booking/src/main/0000755000000000000000000000000011360615634027466 5ustar ././@LongLink0000000000000000000000000000015300000000000011564 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/jsf-booking/src/main/webapp/libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/jsf-booking/src/main/w0000755000000000000000000000000011360615644027656 5ustar ././@LongLink0000000000000000000000000000017100000000000011564 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/jsf-booking/src/main/webapp/css-framework/libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/jsf-booking/src/main/w0000755000000000000000000000000011360615632027653 5ustar ././@LongLink0000000000000000000000000000017500000000000011570 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/jsf-booking/src/main/webapp/css-framework/css/libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/jsf-booking/src/main/w0000755000000000000000000000000011360615646027660 5ustar ././@LongLink0000000000000000000000000000022300000000000011562 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/jsf-booking/src/main/webapp/css-framework/css/layout-navtop-3col.csslibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/jsf-booking/src/main/w0000644000000000000000000000163211360615642027660 0ustar /* A CSS Framework by Mike Stenhouse of Content with Style */ @import url("nav-horizontal.css"); /* NAV BAR AT THE TOP, LOCAL NAV ON THE LEFT AND TWO COLUMNS OF CONTENT */ div#content { position: relative; width: 701px; margin: 0 auto 20px auto; padding: 0; text-align: left; } div#main { float: left; width: 300px; display: inline; margin-right: -200px; margin-left: 200px; } div#sub { float: right; width: 180px; display: inline; } div#local { float: left; width: 180px; display: inline; margin-left: -300px; } div#nav { position: absolute; top: -15px; left: 0; width: 701px; text-align: left; } /* END CONTENT */././@LongLink0000000000000000000000000000020500000000000011562 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/jsf-booking/src/main/webapp/css-framework/css/typo.csslibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/jsf-booking/src/main/w0000644000000000000000000000535311360615646027670 0ustar /* A CSS Framework by Mike Stenhouse of Content with Style */ /* TYPOGRAPHY */ body { text-align: left; font-family: Verdana, Geneva, Arial, Helvetica, sans-serif; font-size: 76%; line-height: 1em; color: #333; } div { font-size: 1em; } img { border: 0; } /* LINKS */ a, a:link a:active { color: blue; background-color: white; text-decoration: underline; } a:visited { color: purple; background-color: transparent; } a:hover { color: white; background-color: black; text-decoration: none; } /* END LINKS */ /* HEADINGS */ h1 { font-size: 2em; line-height: 1.5em; margin: 0 0 0.5em 0; padding: 0; color: black; } h2 { font-size: 1.5em; line-height: 1.5em; margin: 0 0 0.5em 0; padding: 0; color: black; } h3 { font-size: 1.3em; line-height: 1.3em; margin: 0 0 0.5em 0; padding:0; color: black; } h4 { font-size: 1.2em; line-height: 1.3em; margin: 0 0 0.25em 0; padding: 0; color: black; } h5 { font-size: 1.1em; line-height: 1.3em; margin: 0 0 0.25em 0; padding: 0; color: black; } h6 { font-size: 1em; line-height: 1.3em; margin: 0 0 0.25em 0; padding: 0; color: black; } /* END HEADINGS */ /* TEXT */ p { font-size: 1em; margin: 0 0 1.5em 0; padding: 0; line-height:1.4em; } blockquote { border-left:10px solid #ddd; margin-left:10px; } pre { font-family: monospace; font-size: 1.0em; } strong, b { font-weight: bold; } em, i { font-style:italic; } code { font-family: "Courier New", Courier, monospace; font-size: 1em; white-space: pre; } /* END TEXT */ /* LISTS */ ul { line-height:1.4em; margin: 0 0 1.5em 0; padding: 0; } ul li { margin: 0 0 0.25em 30px; padding: 0; } ol { font-size: 1.0em; line-height: 1.4em; margin: 0 0 1.5em 0; padding: 0; } ol li { font-size: 1.0em; margin: 0 0 0.25em 30px; padding: 0; } dl { margin: 0 0 1.5em 0; padding: 0; line-height: 1.4em; } dl dt { font-weight: bold; margin: 0.25em 0 0.25em 0; padding: 0; } dl dd { margin: 0 0 0 30px; padding: 0; } /* END LISTS */ /* TABLE */ table { font-size: 1em; margin: 0 0 1.5em 0; padding: 0; } table caption { font-weight: bold; margin: 0 0 0 0; padding: 0 0 1.5em 0; } th { font-weight: bold; text-align: left; } td { font-size: 1em; } /* END TABLE */ hr { display: none; } div.hr { height: 1px; margin: 1.5em 10px; border-bottom: 1px dotted black; } /* END TYPOGRAPHY */ ././@LongLink0000000000000000000000000000021500000000000011563 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/jsf-booking/src/main/webapp/css-framework/css/nav-vertical.csslibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/jsf-booking/src/main/w0000644000000000000000000000307111360615636027662 0ustar /* A CSS Framework by Mike Stenhouse of Content with Style */ /* NAV */ div#nav { font-size: 0.8em; } * html div#nav { /* hide ie/mac \*/ height: 1%; /* end hide */ } div#nav div.wrapper { width: 100%; background: #ddd; } div#nav ul { width: auto; width: 100%; margin: 0; padding: 0; line-height: 1em; list-style: none; } div#nav li { display: block; list-style: none; margin: 0; padding: 0; line-height: 1em; } * html div#nav li { /* hide ie/mac \*/ height: 1%; /* end hide */ } div#nav li.last { } div#nav a, div#nav a:link, div#nav a:active, div#nav a:visited { display: block; font-weight: bold; text-decoration: none; margin: 0; padding: 5px 10px 5px 10px; color: black; background: white; } div#nav a:hover { color: white; background: black; text-decoration: underline; } div#nav strong { display: block; color: white; background: black; } div#nav strong a, div#nav strong a:link, div#nav strong a:active, div#nav strong a:visited, div#nav strong a:hover { color: white; background-color: black; } /* END NAV */././@LongLink0000000000000000000000000000022400000000000011563 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/jsf-booking/src/main/webapp/css-framework/css/layout-navleft-2col.csslibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/jsf-booking/src/main/w0000644000000000000000000000146711360615632027665 0ustar /* A CSS Framework by Mike Stenhouse of Content with Style */ @import url("nav-vertical.css"); /* NAV BAR ON THE LEFT AND TWO COLUMNS OF CONTENT */ div#content { position: relative; width: 780px; margin: 0 auto 20px auto; padding: 0; text-align: left; } div#main { float: right; width: 340px; display: inline; margin-right: 220px; margin-left: -220px; } div#local { display: none; } div#sub { float: right; width: 200px; display: inline; margin-right: -340px; margin-left: 200px; } div#nav { float: left; width: 200px; display: inline; } /* END CONTENT */././@LongLink0000000000000000000000000000021700000000000011565 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/jsf-booking/src/main/webapp/css-framework/css/nav-horizontal.csslibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/jsf-booking/src/main/w0000644000000000000000000000326011360615634027660 0ustar /* A CSS Framework by Mike Stenhouse of Content with Style */ /* NAV */ div#nav { font-size: 0.8em; } * html div#nav { /* hide ie/mac \*/ height: 1%; /* end hide */ } div#nav div.wrapper { position: absolute; left: 0; bottom: 0; width: 100%; } div#nav ul { width: auto; width: 100%; margin: 0; padding: 0; line-height: 1em; list-style: none; } div#nav li { float: left; display: inline; list-style: none; margin: 0; padding: 0; line-height: 1em; border-right: 1px solid #aaa; } div#nav li.last { border-right: none; } div#nav a, div#nav a:link, div#nav a:active, div#nav a:visited { display: inline-block; /* hide from ie/mac \*/ display: block; /* end hide */ font-weight: bold; text-decoration: none; margin: 0; padding: 5px 38px 5px 38px; color: black; background: #ddd; } div#nav a:hover { text-decoration: underline; } div#nav strong { display: inline-block; /* hide from ie/mac \*/ display: block; /* end hide */ color: white; background: black; } div#nav strong a, div#nav strong a:link, div#nav strong a:active, div#nav strong a:visited, div#nav strong a:hover { color: white; background-color: black; } /* END NAV */././@LongLink0000000000000000000000000000020600000000000011563 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/jsf-booking/src/main/webapp/css-framework/css/tools.csslibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/jsf-booking/src/main/w0000644000000000000000000000223411360615632027656 0ustar /* A CSS Framework by Mike Stenhouse of Content with Style */ /* clearing */ .stretch, .clear { clear:both; height:1px; margin:0; padding:0; font-size: 15px; line-height: 1px; } .clearfix:after { content: "."; display: block; height: 0; clear: both; visibility: hidden; } * html>body .clearfix { display: inline-block; width: 100%; } * html .clearfix { /* Hides from IE-mac \*/ height: 1%; /* End hide from IE-mac */ } /* end clearing */ /* replace */ .replace { display:block; background-repeat: no-repeat; background-position: left top; background-color:transparent; } /* tidy these up */ .replace * { text-indent: -10000px; display:block; background-repeat: no-repeat; background-position: left top; background-color:transparent; } .replace a { text-indent:0; } .replace a span { text-indent:-10000px; } /* end replace */ /* accessibility */ span.accesskey { text-decoration:none; } .accessibility { position: absolute; top: -999em; left: -999em; } /* end accessibility */././@LongLink0000000000000000000000000000020600000000000011563 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/jsf-booking/src/main/webapp/css-framework/css/forms.csslibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/jsf-booking/src/main/w0000644000000000000000000000304611360615640027657 0ustar /* A CSS Framework by Mike Stenhouse of Content with Style */ /* FORM ELEMENTS */ form { margin:0; padding:0; } form div, form p { font-size: 1em; margin: 0 0 1em 0; padding: 0; } label { font-weight: bold; } fieldset { border: 1px solid #eee; padding: 5px 10px; margin: 0 0 1.5em 0; } fieldset legend { color: #666; font-size: 1.1em; font-weight: bold; margin: 0 0 0 0px; padding: 0; background-color: white; } * html fieldset legend { margin: 0 0 10px -10px; } fieldset ul { list-style: none; margin: 0 0 1.5em 0; padding: 0; } fieldset ul li { list-style: none; margin: 0 0 0.5em 0; padding: 0; } input, select, textarea { font-size:1em; font-family: arial, helvetica, verdana, sans-serif; margin: 0; padding: 2px; } input, select { vertical-align:middle; } textarea { width: 200px; height: 8em; } input.check { border: none; width: auto; height: auto; margin: 0; } input.radio { border: none; width: auto; height: auto; margin: 0; } input.file { height: auto; width: 250px; } input.readonly { background-color: transparent; border: none; } input.button { width: 10em; border:1px solid black; background-color: #ddd; } input.image { border: none; width: auto; height: auto; } form div.submit { margin: 1em 0; } form div.submit input { height: 2em; width: 15em; } /* END FORM ELEMENTS */ ././@LongLink0000000000000000000000000000021400000000000011562 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/jsf-booking/src/main/webapp/css-framework/css/layout-1col.csslibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/jsf-booking/src/main/w0000644000000000000000000000103311360615640027651 0ustar /* A CSS Framework by Mike Stenhouse of Content with Style */ @import url("nav-horizontal.css"); /* NAV BAR AT THE TOP AND ONE COLUMN OF CONTENT */ div#content { position: relative; width: 701px; margin: 0 auto 20px auto; padding: 0; text-align: left; } div#main { width: 100%; } div#local { display: none; } div#sub { display: none; } div#nav { display: none; } /* END CONTENT */././@LongLink0000000000000000000000000000020700000000000011564 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/jsf-booking/src/main/webapp/css-framework/css/layout.csslibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/jsf-booking/src/main/w0000644000000000000000000000505611360615632027663 0ustar /* A CSS Framework by Mike Stenhouse of Content with Style */ /* SITE SPECIFIC LAYOUT */ body { margin: 0; padding: 0; background: white; text-align: center; } div#page { width: 780px; margin: 0 auto; padding: 0; background: white; text-align: center; } /* HEADER */ div#header { margin: 0 0 5em 0; padding: 40px 20px; color: white; background: black; text-align: left; } div#branding { float: left; width: 40%; margin: 0; padding: 10px 0 10px 20px; text-align: left; } div#search { float: right; width: 49%; margin: 0; padding: 16px 20px 0 0; text-align: right; } /* END HEADER */ /* CONTENT */ div#content { } /* MAIN */ div#main { } /* END MAIN */ /* SUB */ div#sub { } /* END SUB */ /* END CONTENT */ /* FOOTER */ div#footer { color: white; background-color: black; } div#footer p { font-size: 0.8em; margin: 0; padding: 15px; } /* END FOOTER */ /* END LAYOUT */ /* UL.SUBNAV */ ul.subnav { margin: 0; padding: 0; font-size: 0.8em; list-style: none; } ul.subnav li { margin: 0 0 1em 0; padding: 0; list-style: none; } ul.subnav li a, ul.subnav li a:link, ul.subnav li a:visited, ul.subnav li a:active { text-decoration: none; font-weight: bold; color: black; } ul.subnav li a:hover { text-decoration: underline; } ul.subnav li strong { padding: 0 0 0 12px; background: url("../i/subnav-highlight.gif") left top no-repeat transparent; } ul.subnav li strong a, ul.subnav li strong a:link, ul.subnav li strong a:visited, ul.subnav li strong a:active { color: white; background-color: black; } /* END UL.SUBNAV */ ././@LongLink0000000000000000000000000000023000000000000011560 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/jsf-booking/src/main/webapp/css-framework/css/layout-navtop-localleft.csslibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/jsf-booking/src/main/w0000644000000000000000000000140011360615636027654 0ustar /* A CSS Framework by Mike Stenhouse of Content with Style */ @import url("nav-horizontal.css"); /* NAV BAR AT THE TOP, LOCAL NAVIGATION ON THE LEFT AND ONE COLUMN OF CONTENT */ div#content { position: relative; width: 701px; margin: 0 auto 20px auto; padding: 0; text-align: left; } div#main { float: right; width: 500px; display: inline; } div#local { float: left; width: 200px; display: inline; } div#sub { display: none; } div#nav { position: absolute; top: -15px; left: 0; width: 100%; text-align: left; } /* END CONTENT */././@LongLink0000000000000000000000000000022700000000000011566 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/jsf-booking/src/main/webapp/css-framework/css/layout-navtop-subright.csslibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/jsf-booking/src/main/w0000644000000000000000000000134411360615640027656 0ustar /* A CSS Framework by Mike Stenhouse of Content with Style */ @import url("nav-horizontal.css"); /* NAV BAR AT THE TOP AND TWO COLUMNS OF CONTENT */ div#content { position: relative; width: 701px; margin: 0 auto 20px auto; padding: 0; text-align: left; } div#main { float: left; width: 480px; display: inline; } div#sub { float: right; width: 200px; display: inline; } div#local { display: none; } div#nav { position: absolute; top: -15px; left: 0; width: 100%; text-align: left; } /* END CONTENT */././@LongLink0000000000000000000000000000022400000000000011563 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/jsf-booking/src/main/webapp/css-framework/css/layout-navleft-1col.csslibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/jsf-booking/src/main/w0000644000000000000000000000117211360615636027662 0ustar /* A CSS Framework by Mike Stenhouse of Content with Style */ @import url("nav-vertical.css"); /* NAV BAR ON THE LEFT AND ONE COLUMN OF CONTENT */ div#content { position: relative; width: 780px; margin: 0 auto 20px auto; padding: 0; text-align: left; } div#main { float: right; width: 560px; display: inline; } div#local { display: none; } div#sub { display: none; } div#nav { float: left; width: 200px; display: inline; } /* END CONTENT */././@LongLink0000000000000000000000000000022300000000000011562 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/jsf-booking/src/main/webapp/css-framework/css/layout-navtop-1col.csslibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/jsf-booking/src/main/w0000644000000000000000000000117611360615642027663 0ustar /* A CSS Framework by Mike Stenhouse of Content with Style */ @import url("nav-horizontal.css"); /* NAV BAR AT THE TOP AND ONE COLUMN OF CONTENT */ div#content { position: relative; width: 701px; margin: 0 auto 20px auto; padding: 0; text-align: left; } div#main { width: 100%; } div#local { width: 100%; } div#sub { width: 100%; } div#nav { position: absolute; top: -15px; left: 0; width: 100%; text-align: left; } /* END CONTENT */././@LongLink0000000000000000000000000000016000000000000011562 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/jsf-booking/src/main/webapp/main/libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/jsf-booking/src/main/w0000755000000000000000000000000011360615642027654 5ustar ././@LongLink0000000000000000000000000000020200000000000011557 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/jsf-booking/src/main/webapp/main/reviewHotels.xhtmllibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/jsf-booking/src/main/w0000644000000000000000000000440311360615636027662 0ustar

Hotel Results

Name #{hotel.name} Address #{hotel.address} City, State #{hotel.city}, #{hotel.state}, #{hotel.country} Zip #{hotel.zip} Action View Hotel
././@LongLink0000000000000000000000000000020100000000000011556 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/jsf-booking/src/main/webapp/main/reviewHotel.xhtmllibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/jsf-booking/src/main/w0000644000000000000000000000350011360615642027654 0ustar

View Hotel

Name:
#{hotelController.hotel.name}
Address:
#{hotelController.hotel.address}
City:
#{hotelController.hotel.city}
State:
#{hotelController.hotel.state}
Zip:
#{hotelController.hotel.zip}
Country:
#{hotelController.hotel.country}
Nightly rate:
 
././@LongLink0000000000000000000000000000021100000000000011557 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/jsf-booking/src/main/webapp/main/enterSearchCriteria.xhtmllibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/jsf-booking/src/main/w0000644000000000000000000000533111360615632027657 0ustar

Search Hotels

Maximum results:

Current Hotel Bookings

Name #{booking.hotel.name} Address #{booking.hotel.address} City, State #{booking.hotel.city}, #{booking.hotel.state} Check in date Check out date Confirmation number #{booking.id} Action
././@LongLink0000000000000000000000000000016500000000000011567 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/jsf-booking/src/main/webapp/index.htmllibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/jsf-booking/src/main/w0000644000000000000000000000013411360615636027657 0ustar ././@LongLink0000000000000000000000000000016200000000000011564 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/jsf-booking/src/main/webapp/images/libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/jsf-booking/src/main/w0000755000000000000000000000000011360615644027656 5ustar ././@LongLink0000000000000000000000000000017300000000000011566 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/jsf-booking/src/main/webapp/images/th.bg.giflibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/jsf-booking/src/main/w0000644000000000000000000000206211360615640027654 0ustar GIF89a#烞®ž®€Ÿ®ž¯¡°ƒ¢°ƒ¡±ƒ¢±ƒ¤²†¤²‡¤³†¤³‡¥³‡§µŠ§µ‹§¶Š©·©¸Žª¸Ž­¹’¬º’­º’¯¼•¯¼–°½•°½–²¾š³¾™²¿™³¿™µÁµÁž¸Ã¡·Ä¡¸Ä¡ºÅ¥»Å¥»Æ¤»Æ¥½È¨¾È¨¾È©½É¨½É©ÀʬÁʬÁÊ­ÁˬÃ̯Ã̰ÃͯÃͰÆÏ³ÆÏ´ÆÐ³ÆÐ´ÇдÉÑ·ÉѸÈÒ·ÉÒ·ÉÒ¸ËÔ»ËÔ¼ÌÔ»ÎÖ¿ÏÖ¾ÏÖ¿Î×¾Ï×¿ÒØÃÑÙÂÑÙÃÒÙÂÔÛÆÔÛÇÕÛÆÔÜÇ×ÝÊ×ÝË×ÞÊ×ÞËÚßÎÚàÎÜâÑÜâÒÝâÑÝâÒßäÕàäÕßåÕßåÖàåÕàåÖâçÙãçÙãçÚåéÝæéÝåêÝèëàèëáèìàèìáëîäíðèîðèîñèîñéðòìðóìñóìóõïóõðôõïôõðôöïö÷óö÷ôöøóöøôùù÷ùú÷ûüûüüúüüûüýûþþþÿþþþÿÿÿÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ!þCreated with The GIMP,#þý $HРA|üôñ³gO=õä‘hçΞûw©Ïÿ!Iu[xÒÌ?ÈWÐßgÑbLA“Èàª:ª:ºWÔSÉÚ¶…XOífð« øc@ ¡hhB„„!!@B„„!!@B„„!!@B„„!!@B„„!!@B„„!!@B„„!!@B„„!!@B„„!!@R; oªT|²ŽÃ[ê•,¨ÉrW%É Ga­õJ–QØk}R£å”Ér2\‘П4u€dÒN=ñ•¡Ùí’¨­,–³1Æx0zERuavÊN¬ ®Ùœ¥¦¨ª”GO äqîhZÛÂVU¸:­Åïc8üJèV-£ … BÖt¯YºÆî°Ü,«N~6_Ü䞢rñ²3v}‹µÐ´ ¹‘“âVŠ :XÂÑŽò2”^¼/Yb¯vaeåFòŽd^Ü\^¼ßQŒ‰&E$ï¯ Š)‘xdQr.I2{W†EËíNÐDêʶ@ÓíIä'QE9?”œ¾³»½>iªJê™Y{Ý¡+AMIKHDpÄ&5{µ!VmmcY tÞQ;Î÷/.RuªªtÖÏü“Ò*tÜæÊs/µxeö¨†_jA•zy$Èc~k]ï ],í-sG' „³/µ$ËíTve]Œµãc-Õº8ÌüÑ<:ï²÷* ½íÄÎ#ÞX2&e v ¼5)øwF°¯8xg9-p-#ˆ(]>ù³´’èÄR÷HÁƒñX+½Ž¾Û6ëât±ŸEìÊô(êaSo Œö{2µ ñEXFE%GË+ÞÃ[ê•,­ò\›ä¹#¡Hì5¾©QòÊ; oªT|²™.FK’:ŽÃ[ê•,£°Öú¥GË)’äd¹#¡Hì5¾©QòÊ; oªT|²™.FK’:ŽÃ[ê•,£°Öú¥GË)’äd¹#¡Hì5¾©QòÊ; oªT|²™.FK’:ŽÃ[ê•,£°Öú¥GË)’äd¹#¡Hì5¾©QòÊ; oªT|²™.FK’:ŽÃ[ê•,£°Öú¥GË)’äd¹#¡Hì5¾©QòÊ; oªT|²™.FK’:ŽÃ[ê•,£°Öú¥GË)’äd¹#¡Hì5¾©QòÊ; oªT|²™.FK’:ŽÃ[ê•,£°Öú¥GË)’äd¹#¡Hì5¾©QòÊ; oªT|²™.FK’:ŽÃ[ê•,£°Öú¥GË)’äd¹#¡Hì5¾©QòÊ; oªT|²™.FK’:ŽÃ[ê•,£°Öú¥GË)’äd¹#¡Hì5¾©QòÊ; oªT|²™.FK’:ŽÃ[ê•,£°Öú¥GË)’äd¹#¡Hì5¾©QòÊ; oªT|²™.FK’:ŽÃ[ê•,£°Öú¥GË)’äd¹#¡Hì5¾©QòÊ; oªT|²™.FK’:ŽÃ[ê•,£°Öú¥GË)’äd¹#¡Hì5¾©QòÊ; oªT|²™.FK’:ŽÃ[ê•,£°Öú¥GË)’äd¹#¡Hì5¾©QòÊ; oªT|²™.FK’:ŽÃ[ê•,£°Öú¥GË)’äd¹#¡Hì5¾©QòÊ; oªT|²™.FK’:ŽÃ[ê•,£°Öú¥GË)’äd¹#¡Hì5¾©QòÊ; oªT|²™.FK’:ŽÃ[ê•,£°Öú¥GË)’äd¹#¡Hì5¾©QòÊ; oªT|²™.FK’:ŽÃ[ê•,£°Öú¥GË)’äd¹#¡Hì5¾©QòÊ; oªT|²™.FK’:ŽÃ[ê•,£°Öú¥GË)’äd¹-»4ÚMó ;4ÚMó w(Êòº“äÆã]š?í&ù…zÚV¹Á­|åÇ€²p‹fíÁ­“,ú÷jY%{™Ô«‚¸«‰”ųL^ù]Á®q -ͺ™´ìpB<]µ¡ÕǃFU©•D/'”Ž''“%›ùá“î[ Ù«}ˆíҹͧÆôp ¹gßÉD—n©àye³gèb‡»¬h$…ÞôêN¬­o,ß§ey»‡KƒªI—Ú¶VÝ«°]êIz°Á•Á¢X‡rÎmÕ«h梠ß°åà•J”Taœ$š"PJ9'tW}©&EÊ’eö®LŒnK2{RLª!•$È£".K2¤}ª)‘$È«‘%™T«5oe¸²M5ºûUI“†¸¹u=©Ù›¢Ø3p¦ †Dײmüõ¤÷ai $µTæ—„·6£6åmÊ Ëí%E¼TNx‘Ã++UW%DîšW=ÇU¬I2/;O¥§§»ŽíûŠÚ™Öóà”dö¤™=ª1zð½tÜç¹ È¼2(ûåÅEÅǷׅ霣*.Êjxãš3­i…îQ”^¶ÁKM1™Ì.=ÒŸ%$Y¨HÈuGÎ+O.ã£-x0¨ä–£«'1»Và­:•º“;(ÖoÒÈ¢ËEùª>s’ÅŽ‹óT|ç)í9KjÁê*ü™¾L¯mŠ„MGÎrM³6©Þí?=ÉЬ(^°«©¬–Òc&GfÈYÈÔUõHªÙ Sas£í[Ãýû–‚pËH=듼®ŸÞÿRnÌìTm8Þ¨ùÎHûóT|ç+û„]]C†4:¨„/Bš­_&FL©u–~)þiHuž”~)þiVîM¸+­EO“'&T›M7sçù¥6ëe8üsüÒ­\N E^§È›²´[`Áòçù¥xÛ|Ø/Ÿ_÷¥Xp)(ëTù ² ·B27æÓýá^ºßŸ_÷¥M~­k¹èR@ËHä¨ëÕù2dPD\Z_6q§Þ6† ]9Áò‡ZT§äô7 —û¯ëÕù1v4m”ýk™ÖM‚ܰõ¥*[]?QÌ|øpþôèBì˜Àò¢8ø)TÛ²6X ö{ÖRÔÕ[äÅÙßj·ÉW guGU.ŸÓ;B±›wÖÅsšš‡î–®BÚÄH%­ôšw›üR:B¡mÛg!¹1¹’¹.‹¯Eªš«ŒÝÓ6£%{3‰Õm]ú'–ö¿ü©ŸÛ÷­ùSWúS¤áRØÒ§Jq¾(ô85à×YöŽýW&d­ƒ»•Ô6¶Áq £½²¢ž¤°îL*ç{y,§G¶«UfÉÄˤ]S呿*Œcé‡~ªÒ¯fëíŽLÞÕ@5Æ2Z9¸w{×§ ,q[œr’¾ÈÖ2ËK¼réð„LuHÚ«55¾ÕKSJéÚù#{™IÔpIÙùåŽ0ÒþºÀƒœ+Í®³Ø(‹÷ý½y•t}&î¶;i:5²Üã-¼ÜúÇT; ,âܤ‹ÕËqç´¸îþ©ÂP@Ó0ëþP’cšBÞì“â­Ñ§ñEºP·‚Ò Áõ”ñ‡îÉÇU ¶õuŠ@ÖT»ýw©?áSé!iÛÇ6’©®l"´ï´¿E*…?Š8pjl3ÔÕÛDÓÍ!“¶‰#Èë7rîVŽvz¦RÙYXF¼*\ÙH[öKŽîA¸ãÿY«êœ¡ÌÙ âÔtôïaZMYÙº)Ùo³êäŽî¶8K˜{[øøªŠèÆÉw´º¦¨Wo‰K2Ú‡ ³ÓÒïSÊÌhèËUOGp¶šÓW cÂ鎞‚_býYGÖŒiègf@Ë¥¸þ`¤ž‡vPg¹þ`®»$m–='Ð;xì ;óúàýŽaþ‡vG¾¢æ=õz:Ù3¢åÿÔÒÍ .Ç#šnh /ÃNB²Òé߈¯Ð«ÛÊ9Çúك¦àürœ¡-—v3[^ßürº w¤oɾÐy…=Šý’>d³Øí[aOg™õ]\“˜Ïß8+·ØªZ¨·Ømµ³îàÉ,•. ïÕR[*JÎ.-ÅaרºÞ×Þ¨,Vgܪœæ:`ZÇ—Hìz8ïø'kBßbýXÉåc„ßv^ûKM[ÑÑÂàÞ¹„½®>Ìœ‘íYKõäÛM"yZìJæÊà5atÛ=Ÿm6Ƶ×:˜_oµ0‘÷ï9¸õ•écš(£­0ÔÏCIŽJ·á‘Úù,ï8#R¹%§¥fñ_¡Ý²Hç1í]|µ„ ÞÈúÀ73®¨—ho žÚ£Ü¨®§«|1·p·ÊÝ'^>½EvAqÈî\Ýt(Ç‚ìmeðä ¬ŸrWíeá›®}Q ƒ JÎ0ðíC{ÓßÓõpÄÇ9ùàô)ð‹8C‚þ—i¶‚©Ã«œ€\p2Hp§>áµÒCV<–—9®opïýÇâÖ(DfÓ3áŽ1¯vóA˹iðZ IšØÂù@ÞsšI8; –p÷¨•%{"#7kûvÒ_'±Õ$Ê‘–ã|{>õ£³>ÿ[Rüºn¨9¥¹Ë{ÖÎϱô5–ÚJaNÆÎÚ¢E@xÈ eWIkµKºèÚ\ðÐÀ8œS£M«ÙÓŠ~™±öÃæÕ‚~ýÜ”JÝ•·Åa©ËZHûç-ãâŽiÈ-¹WÜ©óK.Ÿ€¬eJ x6T¡ÁÏ–Ÿ:ºšSÑØèÝÅÕ4«gA®™Â~ž,é…Š„x/Ò§ñ§Ù;lôÅÑö’ünT'lå3nJ*BöÆùòÐÞ8ÞÆxªzøÉy×*%NJzùv¶¾Üùå4ð°ã‘ñ[ ào“§t®Y[4YÛë—÷˜ºuš¸Ðá]Rƒ~•(/b¹›!Bà í-ÿÆrÍŒµ`dÕüw-<1Ñ—eIl\Ê…?‰›§ ‘Ø«N4_=É?±–¯ÿ•óܶ]Z:°§·§Â)„x8¦Q•æ…òžIµÁÚ®ÂG“ç{‚Ú7Y½’`3ÔKZBÑåR~lyÚ‰^và—o“vG{B³ sd¯§þ‹¥h>ìª&<µÀ…%³CÚH äJa+EØí5A36V‘Ð4öx'oX7HÝ•Ç ¾ÕÙ6Co¬7›3(/’ÃOR#•“»—» 5äR§Ø‚¸¸ÉM4qokŠz½< 8^ö«KÞIU£%¿±èÖ¥×yÁ£ŒÅPb™’ŒÇ û ‘}»Kv¹Ë_;[äÆZÓ À]>·¢+\¬.¡»UD{·Ã^?‚ÃWÐVlû;]Ñaê]0=[½£Ûì^}]z ø›GŸ'4èÔ¦½^ X*ëÍ-4Ó†4¹åŒ$4$žäPSVÜ&êh)fª“݉…Åw›m-÷£çÕõÛ#ž¶AFì|A!r6íÄöxM»d¡Š‚‰‡úwÆ4ä~7¦¼»•«èéÑQ”§³WÙoýþ“RŒi¤Ü¶emuƒh(a3VY«aŒqs¢8  Ëí]O`:O¬ª¹EkÚÃ#g;‘Ô1»¤8ð0y¦º[°QXn”›IGA°I&'¦xû·;¸àpʉèéÊ—ZŒ®—›ùDJŒ\3ƒÛÜæ´±ÔUÌØi`’y\pK‰ð^ÇK[-i¡Ž–gÕu-i.Èâ0»D»AO~¢¬Ù¨­²@à1LÜðY‡íŸ`ï•ìe¹Ýª't•µÁ­…¤ä0ßJ³ÐSTãQÔô¿{¯$öñQRrÙœòílºÚ\ÆÝ(*(Ì€–u­Æö8á%‘ÝjmΑ¬¬–Š \|£?€]m:CµÌûe}¦‚é½qެeÔîΣ΀Znªc¨è¢Z¨ad žÜ#`ÀnH8SØÒ—QÂ¥ÔUÿlžÞ,eá»êD”u±Ñ¶²ZY™L÷n¶W0†“È{±[M–H©ß`·W:I†g¹{A<¹u^–ßjƒghîwT2C¡¥u²<åÅ *Ñ•Lü~ÿv3§ANYx8ŶÁ}¹E×[í•1÷=‘œz‰p¡®·ÍÔ×ÑÏK'sean}ÙZvt™µ‘Ì×CSK ,Ñ´ì¦h£—<|WO·ÔÐô‰°KYHÆMºö5êåhâÓÇàRîZ&I„YÔÇv Îói§W,œrñǰëíîT©ÕˆM§tr ¹Ø{¶Ëö§ÔÂù(Üøzª†·ÉpÀ?”èF Ë|RÕ¸ýå}/C5EU´ÕѾçnpê冪íÇO·g®õ•rMKk­ž?´Cƒ£ÎiªÁ Ð윷ucMÛ§ÿ‘¿ªúÇf¢fñ„¯š¶bÕWM3ଥ–œ›,°·x3Qžåõ&ÏE÷‡#ŸrÞ–Éœš‡v‹JF`c¸…C³Íêq‹Lv²VšºáPÓÓîÖ׎3çè·§¹Ek2ÄL[ÀèŸd­ss¼x„³W §º?žõwQM¢k¤`Ñ@– ¦TŸ ·£ 2SBï+q¡Dlžå¥vCIvŸDÈe!Å£ 8†œV> ØÜ@iÝ òiø)o'ÍŠOMTL‘»Í5¸#˜ÆWk¹lM5ßi¢¹Ý×EMþ¯ô[ƒ !r‹4骗';µ`çü«èƒ'ªüSI¶ÌÝEœ2Ý-,w/.9á’¹÷OVÊxv†ž&å‘T1­`nF­98æºôтڂ2¹ÇM ˲³Ò-ªŒÉe/±1^´|Od±mÍêKÍÒÖ’uÓ>ÓÞ«Ãfkû;É/Ýoµi¶µ›»qV×z"3ÄeÀ*¨ã”Ï ;FW gt£e±O#@=`ô >IôŠöž¡ÐH&fw»°8+ (LL {A.‘ÌÏ,pPb§,«Œ† Ú†·:RÆ[ßrLW«¤MuYi3‚Ù|‘Ž ÷a+ª.Ž¢ž¥Íxð‚ý^âI!¤ƒåx-ÖÕìl×;x¬m$0¼Æ×4nîœãßä¬>ÌWZv’‚hé$÷\Ò¢á‡8û4ÈUrº±{8³¬t]REÙÔÕE¤±¤µ§LðÁþ U{¢eKâ™±» ~ì’gqîÀ™Øž†J¦]›D¡Å™=À÷­E悚#Ýk!½ú {Õãl½CH5 @ÏÁD¬Œu kºUãYˆÝ…UZ>î\þR²šØÑ3 ȦêÞê*y'Îkà Ó@¦0b‡|Ò‚aŽ<å+–&­ìF±Ûo÷{\uR^a¥†a¼[OK¨÷§³c¢£¶]îµ-ÍF>YìÕŽKÎÂPÓÅ<ô§t,.-r›³4ÚZº¸ w$™>Vt^ž ;Xå½Ów9t–Øìý+ÁEK%Gg’…ÒË3Ÿ“’3¯¹kßo„ÉJ‡·Ô¬§éºÝ¸ß%ö³îôœµ±ÓÉ€Üärà²4æÑhOÒrz®‘î-ÇáÂé–&9‹ +ßÒ•|@ç78øÐ,-Ý–0xçUKnk6]2,¢u‘ã*@`J —BG3À=È1ŽJPbð·Êq"çÏÚ£T¯Š>+áÏ<·Ùáõ1÷ä¡ÊÇYª-Ù…Ç n•®DÖ÷<ÝDm1y^‡›ÊTz½£›€úªXÆÂ‹x#Þæê×ûŠßô«³FVÒÝ)h%¨âksºà5È Ÿ˜äÝ1¼;–éÊÚ½ Q›‹/R›„¬ÍÇíMÚÇw§–¹6H\âZæ“Ét™¶FФÖuí,ç‚5\ï`öF¾ñrŠªªRÛ`p’iå ®TÞ—6® õÆ* {·¨(¼–»¹îáŸrï¥RTôsUC}˼tiI%DŽ£ˆ$ñÊÆ“Ã'EÄ®¶›•¢©Ô— Ia•‡-8>Ð{Ÿ¨BN[k L^€Å3žÚˆœÌ·ßléÂ¥¬ØŠ^~òiî®g±6a=Ê+ØöKU+„’Ë(Ày†·™Nô•µgj/ 4ís(iÆä ÞÔªqòO¹w-´8èVŸÛOð\3uï1ŽqÇŒ®÷¶”s¿¡ÈàdOt‘ÓBKÉÓO§Eôëò4«Ó?Èá”'ùý7üVþð»OD’¶Žã3é\vÝ®¹ÒÆ"~ñ™ƒ§*éã‘®kº×7×+«ïíÁì+_S5tÕ 68ÞŽœœžjÚ9eJ¥)¯O›ðMxJ[Ûg,õ÷›¼T”Ò¹Îxßqiƒ:’{–ß§-§¥¨e&ÌÛ¦GJCêÓ‘¼ÜüI+!rÛ}§®…о¬ÀÇŒSHäÃå`ð*ÐÐ㸤È4Ï$¹4Ó‘A׸… ·'À¥5»Ñ¾.^SWŒnwã<²=ëÈÜ滽§C •I&Çžò½ êªLgÑ>I¹20Ùæj‘Rá,Ô4}ûÖ-nI2EÊÍYe—Ó-.‹?œpñ\Gi©dc›‡°–¸{Bì´•&*ˆ*×{uÞð²-Z#¦¼ èüÚ¹`Çîñâ½o¤ê'ƒ:hNÛÒùÿ³ÖrÈÞà#qq :j»Fö UÇb-.©¢‰Ï0dϽQYØÈú;cKH§¶=¿ÿƒmc?Ô…ú]¦”ùH¬ê6­Ã1÷{ýçe:A¶Ø­•²v:ɘײ_/Bìi•Ú)ï’Ew¼ÓÔP9ô–ù„m’>-¹9pž’F÷M{<¶/ú—k£wœöÉ„ègÿñ'™É%éL²±íFÌÞjÊÖJÉãtŒq­!§tê{ò¹ÇJ1Ë[_siMcÇÉÔñï÷¬ÇGM,ØZ©AÝÙ+ð{Çß…µÙ›;êº8ŠªPç9ôp’î9òB«¼½i3±T’Oq¶î³/Ü~÷/ vzÙØ¨`¥‰˜Ýnó±ÌêW5覎 ZûmTÑ9ûŒ”Ž8[K¿I[%¨¬¦©Ýœ£Î?UËesª¥Û.6žÎj©èëš}5Tlpæ×=ºü1õ]BÍiqÇzçV}¤¶Ý*d¤̓PÈNGèáÿÚºu½˜sµïZ'³9ä½j䨛‡èªjZa­œ7ÎUÈâïr¨º*7¿0W¥¼…uho— 0½iø¦Çîò赎Kä%"G8ðvo{Þ¼/Ñ=ÝÆIrõ˜'@AHϱz×j¦Ä&q*pÚ~˜áv?Ú[ùBî±J]'Õp« ÜéB)sÚ¦œÿ”.ÁOWÊ(dŒ3³.ÜW689sΔ!s¶~Buf;ÁtxÆô?Šé&-íœ{Gï ™ïŽõ÷#ãÍ·¦öê 2!?ù¨·S“4dp&^ïjÕíÕ1;q8Ñ”çÿP*›t±Bîß“÷…ÆÖç||utÙ§&V‚ت7N9)6k0«ÚJHú¦¹²LÜï ‚0´Š*›]Î`<Õùà¥l|`m]3á{»L$¼?ºÇbµÚ*n‡¬,xÝÊ4ÕD»[YNZç9äÝBØÇå¼Þ4úª £Æû9nŸÞ“„T.h›r³,ú:§2ÒI À.Ê·¾ÄÎÅ®%Úw€˜è­áÀ ‘•e´´¯Ñ­iØó§2´ØŒßÜVÃ$b”oJÜ‘Nª®¬±ñÊZà|“À¬ýÚ·qï$–ù!YtiI5Òá<Ïga‘Ǹg‚äË9bކ±Ë«ÌR¾ÕEtn3Kå4†÷}µ)Hûa£‰Â¡±8·/'>O -}@h•¬kC@ä½sC˜FWj¡ ZÇ7VW9ÇGûMn´ìe-\U¬©x=¥y<}ÊÔmÍ•ñ}ÝÒgIŒéõRïVyê*@†ë[M¾@êâÆ1ÏÞ³W{+à™ô´ÛCvcq‰”I[6Ò3¶æïs©Ú.•¨îôöúȨ©èŸä–0Ð]ÇÚ´O»×D #@ÿYJøêl½&[­Ü«'¤ž‰ò=“I½—kú+¹Î^BóªÊJWg\±““hií}%I]pq"JmwG~êjÝÒØ£­Í^ÏÔˆÃÎ oÈÊÄt‡Y»t#°»'â§›5CÚ×0´Œx®š4£5y2*¹&’GTƒ¦ý‘7­‚åN{áÎ/Kû +€7I#Ïö¸ƒì•:¸†x¢+4¤áÌ‹â·T—ÈÃÕñ>‡¤Í…“†ÑÒaÞÁ>6ÿc26Їã_?Çdi]=9ø—X Ïúµ8ønŠùypi>(ø¯tF‹óãˆf¡…ÌÈ8pÔ¥°\›YL#yÄñŒ8sö¬þ‰­éig4çoÌ+-ö2­K¨¿q•è$ƒ‚m¢ç |9iÝ”zL °9FWLuu⬤Íj‰Zæ‚ÿµûA{gU[\æÁéˆn3À*¤åx\É {Öœ¦ï'r’““»g|èê¢jN‡dª§~ä±E3ØîDpXt©’•±ÖQÛjÞ–•¿Ø(\î…ä`i&Jyˆø®hŒ¨ä½m]j”©ÒÁÚñ;kÔœ! _±m}¾\ïs‰nᾄm¬`ö4h¢Û«& ­Š²Ã$G-nó~#½EÊ2¼—)9dÞç “næÚ“¶®îE5mäØ ×nï×:i ¬/lÌ,{»8ÞÁäVW(ÊÕêk5g&]Ö¨Õ›.vsh®6Lëx¦Ì¸Þ2ÄŒgÏ*üô¥µå»¦¦”Žêî°ùFTCQV ɤ#VqVLØ7¤=¢l½kYnÎC…+sŸzzn“¶®hÌsMG#¾GXwHÑß’›tÄðÑ[º¯ódªÕ9,nµòÜ+宩êÛ,¤ÛºÝ4 Ûg¶òÿ³öþÁjšA¾_‡Ç““ÅeK³Ä¯2³…IÂYEÙ•Œ¥t÷6 ¸íßÝ)me'\ç—‡²Ìs.!m¶ƒlêö…›4j|¸1£­’výÜc¹¸ïYNƒ®t–ݺ‹µ½¬mDF&=ÜñJéÂÍ[nÛ:‹Œ±¸ÒVaÑË'=íÏ5èÓœá§uâýMÙþꌥN¢{Žÿ¥;—ÿ°Ù>@ýÓ£=¨µí¤•V[ÅŽßGVdoW {xà Œ…ÂK‡y ¬t1jûž³m¯ÄÑPÇŽŸ­ò]&u$†<¦‹QZu’“º÷¿…Z’šMíîa6æÓ‹k.¸I0Ã/ÝçŽéÔ} ¥Ê±Ú«»ï»E[v{w;L¥Íoåo<0ªò¼ú¸¹¼|_cšvÉÛÀ¼ª+I­­mG1°åäwžI»¹.4TGzC£Þ? U–˜BÐN®Ú•·ÃQM5úÝÖ¶ª–F±³8†ÂÀpsÃ’ì[7´í5L–KŒu!ƒÌÉ$qURJèI<Ó/øîY½ª”Ã$Y•Ñû˜NS{M´ðOVv‚q,y¾îKÛ@Ó.y‘§xú¾†£¨ÔœZüž±(E«Ü¥íƒ{ª_”SÐJg‘±²¦|»†b!CŠŽÓ6s%FHÏôÅ1CQ/Tð1²’â@.”ž’õ^ëcÊŒ“v%º¬êÕN#”%2êÒÓéUçþTSÝ¢sE4Î ~ýÜÔi/4Ä{çq+E÷·øÄÔ¶³Lÿ>>è’{o>ßòÂÌÓÞ ‘û¦—޵ߪ¸³WØ\e–°á´Ç3€^qìYV« óØÖ”%UÚ?ÚŸÛPâ\Óåh}µÝ[£´ëÜÎßbµ\vŽJº ­-,p,ëòß$ ðׂ^ÐÝìôqE ¤ÙÚY<›Á¹æzó?å´Ôbå)_ò6_M¯VVJß™ÛhÆõs«îY¼‡~Á?·w÷…Ììý.þÌBêK¬Ö¾wï±ûÚ7Ø9%_:j²Üh]LëuCZüd‡ 5\”µôg¯kž¯ü}tÕ•ìrm»¤ÜÛš¢Ñ †—ˆç*϶&ÃE„“)ú­­îë³W[Ü·UY¦l ,0‚#~÷=sÁB¨¦Ù™h"…·é{NÆ{ÿÌÍö‘·i]/µ•§Þ³Üž2mŒþí›7æÖÒ¼7Îcc½ÄŸâ®„›;²¦Üª$ëål»Â›¸Æœ}‹GÑîÄRWÃQ¯N˜Mž:Ç4èýÜ÷ªKSI¯K¹]%Xµ&¬t¹ÈŽÛΠ~«)´3µ£#F¼¨¼ÖSÓÉN(Rèø?Ä…‹½mÊ¢}ïÙêøÏ£åÌëõY½mÇf^J­øþç^è†N²GíS*.n¨ÚgÛÌ›¢Ÿ¬æ1•EÐL¯˜—JÇBâ×eŽâ½ž‡´í^Ñ×½Ù4YÑuFjP‹^ç<¢ã&™†”Ç5Lïvº …EµWk¦†ÛUÔ2GåÀ4j®.tÔÔô]£yÂI ÅWEc·UCÚ,ËIÆ{× £$ögBi­Ë+Ôí=ÖWE òK)i$õy q8 ;cµQÓÊj®-23 Æ8ïà¼ÙÍM‚ªAo~ë¤c›¯³è³N¨žºG¹Àåî {Iʪ«;¥rp›±Ò:?¯¹mnÄGQY[+j^×MÆ0¬«v2†Ñ»µNg/ë${Žöº’2¨º»TlÎ˺Í[f¹ËS®|ާ§±¡Ç#PVº§míNvj)î±có[f8÷a¥{))%sƒ+lr^‘ísÛºW±Ì÷µí’‘ì£ùg LÀ—8~ qjk¥+Õ5ߤ ÖÎÓ,pBã#4ŒÜÑÜK€áZìu½÷«Þç_Ô¶0ft˜Îö.*ѼñFô¥h]Ÿ8ôOP͹«ŒÆwß&ZÑÄ­ÊÔÝ!¤wY™Õ»{›ÝÉ}!´ lvÑÜNÐ\f¹©\û% Ì-dÝl””Àû,8Ž0ÐA-w¼FJé…zñ~ÇËrJîþj;ff¤/¡nÝ lÔÁÎ¥ž¶—<0àà>,ÝoA/-/£¿`A’ çÀ­$:Ð9/hœ/ ­'9  Ut!´ùþmu¶¹§¹áàýIoBS½sµ4òÿÕ,ÇR™! à(uBŸ‘J'§ydàBºµmDÀE'þâ«“SÀÉFWM=™JQŸ“f×µÍk ܬM-UÂÜ︓~?ÈíB¹ Ú*YˆeH0<óà˜pqOO(þ%îU–ÏÞª¬•nª¥†’g¹»¤TB$n=ÅTE,r´:7µÃ˜)yH·td›NèßGÒÎÖÇŽ3ncÀh¦ÀÅgv—i«ï쉵´ôuN.žœFI<Èâ¨ò¼.‰ Yê*Íc)6‹Ê¬ä¬Ø¼£)£+G~R ǹac;2’é8•½Ç‰^eM…‡Ý7å {›Ê2–$VQ”œ£(eIÊ2–Á ‚ ‚;–ÎÕÒ^ÑÒP }ki.ô€`G[ùÇ,÷üV'(ÊÒYÓwƒ±hÎQûYµ|Ø_ÖÐlŽÎQÏÝ+iwˆñT;E´w­ œKv¯’£wÐg3ÜÑ T5U”Ô­.šf3ÞuTUÛHçf:KçwwV­Efö4]J›ª¨)¢2O#XÑ̬åÂïQ^ãtpž/ï*¹°ÔÖKÖÖJçžG€V´Ñ2&€Ð³n1üYÑN‚Žïv&‚´2O­iÎf”ôGUÉQ¹nÍ™i ÈNáF¦vŠP๤QžãJm)«6@ëTê'÷(I¦v±¨®ˆ/!vBuD§v@R‡ÂÉ"]¢ë)÷‡ê¨^;Ö¥ícš{ÂÎTÇÕÊæâºtòösªó ^Ä—. 6áÜ›#Šyɧ…dJpÕ%¼ Juá4FVžÄˆtä¤JÜ<·»ˆNH5ÐhR_åDÞÓ…Ftå¡^ 2m}h½hÔŽç$¼ ZªWÀÙk‹Gœ„óÜ Œ›¹ãIyDƒ¼`¥F˜øøš¡‹ÄL”O$º™ÛÍÚx¦ÚGRwFLÞáÖžõ½i`ºl©o•5(,wµ‡‚¡±×vK| ÝÎë0¯ömâ:¹í³ãª¦'g»< Æm 5Ùf¥#ˆ–¯èzÞ”ñfôýJÆKjkÀé.ÓZÉXìc—MµmWWqÚÝ=¢ODw}Þ Ú¹Åîï.'e¥O†ÿq ªx”‰&x/?åÂûhW‹»;:WH¹Ø«Û¨öz¶˜Æpûuc3ŸÍ#J¼´tÛÒº†Ùc²ÖT¶×CNÆ:*xZ\[»Ì‚¹}΢š™ÐÆF y¨Sì÷žÂq&ÂíÑŒŒ ,'[Ò¬k[šM¿éñx¸ÓUÖ²´HÀ3k9‡5£ê Ñ7n^mPº¢i&C©¢2=¯x ‡3ŽKž×Å-Ρ®¨¯qnï““Óî^Åk¨ld7–µ¯ôšÖã*!^+ɢαf¿Ûo4†ÝS}]Þª¦6SɱÐÂÞuþW,jº¶Î×ô‡²ô‘Ç‹g)iZÜuϺ— êçdêBùžÉq¯¡¢Âc¼×ïg:V¯cikv¶îË·®û–ÈüÂA×Åb箑ºRQÞÏ÷ùŸPì×H¶ÁVf¼muªÓ¿ªA$û0{SÒÏFu•;QK0iÓªkŸû‚ùK§>ŠæèÃì¡5é·1^è7wswârºvÅô²W‰µßk.—Ï[M׺&=­ <´]T¥5-–ç5XÃÉìm'é¿£xÙÕRKq­kt cƒâB°ÙM®£Ú+½<´-u§&:Š©Cƒ¦wFsî_9ô3R`é~šÅ0dÔ²HÌr0œj¾º–ÉO`{©K=¨Þ•j³»nÈç©F? r¦×b÷.¶ºŸù¦ó³» øÌöjwÏ+÷ú¸É&08ràŠ;S È©xcsÁp8$¦)îw™îrÉL`pòë3‘WŽ¢®yKòÛÁ—B¬¿¸˜l›²™eÆ3ŒƒÿÚ§Ø£¢{j)å„ÌÉ%ìÜ2n“ƒ’u×öóÆÚmæØÇµw*)/u ‰“¹†8ÞZÐ=ƒ’¢´m%È^"”Ü* aqq9ôOê¼ÍoÕ:‹ n{z_¤8,ò:mdÍdòG›Õ‡n„È”²Sí!iÄ4Ò¿AîM¥ª#ýLŠù'NMÞǸ íà´ÛºWUXä’2wâò´ä°1LàÐ È[&ßÌÐÉL2F–¸Žì¬;⪄¸u.sHغ¨'™¥;¢c*0rGÕ)Õ.:=ª°Lç; cœ{Æ{‹ª[XØeòÜÓ¢èé¶hæ’¹©ÙÛmEò­²Èî®ÚÇâR8ÉŽ .Úv¾»²²†š x)"ccdLf€€¸žÎí¾‚*-÷°3Žð#'½jéo´®…²6f‘ì+š­J‘Ú;#Šqê<¤k&¨’ —Êqɽʾãs§¢…ΖLi’âT•;C Ë[îk»ÛÕŒx¬Íê®J‰^pçùµYCO)Krê™Òú6éßg­žZæ¸Hö81ÜZ8`õ}ÑæØQu7ÆUÈ-vóãqfR“¸ò}œÂ]÷ù8ì­Î©ÕM¸×R8œîÆw€<ü¬¬#¤©Ôßí6z]5gêþÇ;Ùž-VšIà®°V¾rì½í‘ ‘Ë‚»Ê/eHûëEÂ,wo‡~å:ä³³“?¬Ou:jÆ~о»ù*[Ùö¢°Ä…§÷/AE¥dq9#E±.lÎÜ]ŽÏÑATÉg…îkFékô)¾.4·»¡î&¹ÓnÄÁìk°BÏlçòv½ìÅÜ]¬ÛY©ˆÂ`-ÐŒkªºØ®Šv¦Ï¶ô—»ÎŠh3¤Ì'}ÝúíUjY§bɬ^çwŠ&=±4FØÙsº9§dëÐ=©±U~¤àœ“„KW:H0ºm¹ÆÜé5òJcyíÔŒ{“Ž©ˆçËG–¡˜Ð‚®Cg’Ìyϵ2f$ä—ÌxM:Vç\)+så¤! ósB€„ ™šš9­ ä)NÀ†Èji½K;ÙìE. íÊŸIãl w ô/Ðx…|ù+*q—”L‹i)\q0|GÚ4Sa¸ÑÌ2Ê–Š šž'Œ–…öø‰È>ļY‹ÓEø6íwñ^åc;$ÌÖ9äo¹Éa×Hý·üuSeɛҿfl2Œ¬­¼·„í>ö¯EÊô?GÞÄÇñ+ÛLÖ!dþÓ½þhäÿºðÜoGúÈǹŠqüGm3[”dõu]áúŒ{š›sn2zurø¨²ä•¥—&ÁóDÏNF7ÞT:‹Å¾J¡¤òn«3ö{Ÿý$w½Å;¾þ—‚÷.´«Ý–K jwÈyƒ-ÊíVHk„-?—Šy°FÞ Æ€8¥áFŒ#ì@e{·ç{žîn9R£‚8Æ óÅxVnmù4Í ~3¢Ž8§£*%‰ÆS1”ëVr*O¦rœÃ¢¬§wa ÑsÉc¸@^…éX²¢‚r3‡ÐKj£½#òœÃ¢ª¢g \5˜ ¢õì¢@4pÕ[&.1u´ŽjÝBŠrÆ@Ξ). Ç$è=Å4ðž!ÀeJhšp×Dù%4ðµL‘²7™Žð’ÌonžJiÃ’7J2Fœ$w„­7‡'©†wdç¡Ho¢ZxB†Cpøþ!%¯ÝÜ{N T„‚ÙAáÅ €Ù\Þç …Äµ¾\CÆZ•7ßQG3¸·îŸü h9ÝS%n®‰Ø>å&&±ÓÍN;2Ïñq 7°éHm=cIÞô$÷ŽõïHíª·ÓÝ£nzÆõrãóÅë5+¸½»ÍÿVöV¶çi¬³ÊréX]{žéK§Q3Jr³>{ÚxK+ÃË2áž*#¥c£vì#|²s¢Ôí}›9kØCØâ×8–1‘¿‘+ø/¹ÑÖΙêSwEX'݆•a`.s*ZÐKC‰å¯ýÕvIöÕºÙ˜ë¶ l®Ó°Yw{·³§Áuµ}omÌ >^šänvtñLÏ£ò5ö¯bqÑd]—4Ú´d•©ØI%†ì×B÷µá®s Gˇµd©uh×^KeÑ•k­»_m¬Üê§kƒHÐàê2£Ü·±¦^ê¨i+ëbºÉd1¶JÜ–çg‚è¶Íž¹PtwI~­‚ Pv`öîÕ)¤w7<˥˵7I;6ËkEc˜JÉc;ä݃Ž*ªÿn–ë²t[S %fËó‡ÿ{t¤¥æG,§e´NѽÅôÝ,[jh€Ì•ßvÙ”N?ölQíˆh5Ù·3‚ØêIqîÑ|m¶›/U²7›]O]­ÀûÈóæ~:…õ½££»õÒÓGq†ëB誠dÌ9wGwµZ•IAY¯ ÚiÛfÚv>Jqw´@öæC’KK\x{ó•&ËE[\°UÝh¢s1+ ]¦5½ßò3s¡å€×/OD×¹•y¤o°0«g#>œ—±ò¿JaÔûywûÖÌ[+³#x9RÑÖöq–1€»]ãÅ^t£Di¶îíJ%lÝLÝYv0 e£§há¿Ë^5Tœù>®ƒ’„"æ+¬Žä¿iÈ8œüU+#ò°0ÿ ‚y±øæÿƒ§u6]ErÓ/nŠmžïU‚ }%ET¤àG Sú4èöïµu1TºgS[&ì“HÌìhÎ¥}7³ËÌQ2–ÍG>èÝt eï#™]Z}Sw²8u?QTž1Wg²tEµÕ­%ôTô v„Ìà ö`-%'AÕe­5—¸GáddýWWûPïã{ê–Û‹IÕËЇÓôëʹæKêz‡áØçlè3gßåeΦ\ú[¬hSm]ì¢C l¤qœîŸ‚ß ¶é% Ùù‚莚ŒU”Nij«OÌ™[mØ-…¢?s`¥?ñ2ïÞ­âÙ혌’ÜÖÿÁ ¶ÈÎkÇ?“–Š”„dêMùltØl-9ŽÓooþDçØ–×¿Ð7ôQKÝHø¯DüEiK–4t¶àáG 56÷¥Õ°7{ß„ªœ½ÁÆfç¿UVjßÞ|Pkp˜•¹g×·€gž8¡Õº“‘ìUf¼þcà’êÂB¶"åŸ^qo½$ÌÞóõUoªqã(ðM¾¢‹²¡ËZZqÖ}¡dú¦ä‚£ËQŽ|U|“9Í'wâwÊà8”égÊ2¿81‚>Ê2€>ø#(ÊÄ/O5â Ò¼^ <>‰HK B¡€F$!`rF$!!@B€õxW¡@*ÿgªû- ‡ˆÝžW›²›Ao’®:úZ^ªcU#IqÆ5Ó»ô*Òƒf¥fÛdzu5 a|fQ3cÓÉïU~lJ4¿´QzLÃ=Ûàýx)4µ×»¤¾ßK,‘C|ŽÑs*âÙ°Ö*?.ªY«]Ä5çu¾ Dù)i-RA¸@`ò[ÁQ;“d¼-¥¢é¡½ ¥’ˈª=ïÕÍ{ßpqÑtÿäåÒTUÛí5íÞ¬µ5ÔÕ ÏÞ1¡Ä0‘ð#ืArºŠÓy¤eKZØî/ÐK»?E¦µÚfµmû¯öxÞiî[͸DN2ÙñΞվx»#4¶¹õ-¶ÿl¸ç³Î7‡áv…Ynð#$è¸8º¶¾âXy¡½%\­ïA‰¡¿’¿]E^C윺GœÍ·w©â¬êuô–xÈÒ_Iíˬ"ÑÇO5d6ùAEÔ†‚ñß¼0W0½tIY@ÇÎU4#^²žn°cÝÅpT‚o$îz”õ{$׃‰†pN4[^‹öWö’¶JйŒø2íºv·faÛ¿hTÆF¤=€ãß·[=VýŸÙªZx%œ9ÒîàIãrŠPƒ•ȯ©’£³gX£¹CG+hé˜Øi˜Æ÷;”Û}о0\ìñμ×"¶m'xh”oƒÀBÓÛ® 0·#ez0«sÈ6é¯!¤‡Ÿj#¹êOŠÆGtÀ¸dYº2\1ÍläŒñ6¬»cÈT†]ÿªÂ6ïôÞ¤Érnw›!>Ì¢©b1: oiÉvžôüw–‘’ÿªænº¼wo24ÿI§½[­aÔ¾Øf} ½mÑ®$gê¹WÛ²gÅ:Í¡•§Ò'⬵¯LêFâÏÌúö‘éýW9hŸIñO2þÄø«ªÉ•qfñÕ£wÒú¦Ín‡ê±‘Þï'}>Úüþ,«u#Núóù‚iÕîîr¢mV÷zq²©S¸±fê÷þbšu|¤Ÿ(¨;仉A$S&,Jut¹ïñHu|ä…w:ð^天Ȇ;ÛSo®qýÉÝ8„Ô£¹\ÇÖðSO­×Ñ%2Oµ2ñ—qú¨dXæyFQ„a~r`FQ„aeF„£‚Þ(@ëмî@@é.ô’Ï—÷Gêñz€„(„!!@B‚€ô/JðqJîPÀÛ’…8äÙâ¥=RTHʒ¡öTÚwj ´©0V3EYiÑ>8(°œ€¤°è¹¤Š³×ë¸$…™Œ:«*7è`RèݪƪºÌg!/)˜Buq°"ª1-;ÙìÑgdqˆZ`©.±uu'Gj·¡-ì‚0W‹­2 ê™xÕHpÈL¼)‹2ÁÈvT‡ „Ëø­“,y62ÜBC¼¨}¬?D¼oFGxÕ!„`ðvŠÛ=,~dK«= ¯ Iæ Sˆ:÷8(k܆4ó‡¶Nç Sч:™Í”NÞo»½4ô/ŒêZw‡ñK¥“qís¸$û”KÁâŸvâÉ>îa»'Å{)®=f7{Aà¼t^D±I‡!_{ 5ùXÜyöŽSo°ÙºƒCtê¥ô ,xþéÑd6ÖÄêKÍMi qߌã‹JÑÕ<;³Õ Ü“Øà¦í„&ç³pW·Êž˜ur»¿tÿì.^Tß¹­)YØá—¨ÚÒêX 3Ï™>õA|,"™‘%ÆVãi(z˜HhWêꆴ Ýr@ÝR©Å?sÓ¦òˆþÅÕÇCµT5rÊ"dr‚^Fp»5FÛÙäc¾ò¾¼œŒC Ý …Û[QdUL€½¬vqŒ‚·V»¬µd¡ðãÑhÐZ©7sh6•v:¶ïM­µQÌLuåï¸O£Ž9âœý º\öúšºšjhª €òK·F„sÑZÓÛé‹‹÷¸àù:j‚!Šo¨fŽ6·~“ŒðE$ï±êÛšÇS_.-ݯ¾WûÄ B>š©4›3d Íl³Õ;¿®Îýé£r¬.’RÞYQªo vüÄj²É¯,½¯às£CKk»í%4mdqCVÒÁÈ9ºaiëöØŽó‡Î̱Å<òB 6 Ž\G ¤š™€ÑÛÃÚ³œîî#JËsYS´U5ò¤>ì¦þÕ•ÍÏ ê©ï(¥Šá€\ì{Öm³U<•Ã{{˜*]³iî–Ù «{˜ßÂNr²¹¥ ¼5 aÃÚ£uº&ËÁÓ£Û -Ûîï–Êi1è»pd|UÞ[ím¢eÆÂwãàiÉfœAX×T1çLhDw)iœC$v;ÆUÕV¼•pL§cê…W]Oàê9ø­E£hŒ€E/Ý¿í«i%Ãé„P‡ÈÒ܈Æq…žêã2Á£êº)»«˜ÔÛc`ËÉk‹†wzP»:W€_§,®}cãc¥{Îîñ Ï ôwfÆNû²G£íZå&v7SÜÜÏ%„‚ûã!¡ùÑdÛuÏ”H'I¥¨t³:W#!MîCFÆ;Ü¥¾QJûXÈpZËõ»£yÎÝQ%­–y7!qÝw¡6´ÊíØæ-Æ…zj:§n1î|‡Ú¨é£4Ñ]÷Äh ôBKî0Ó‚ØŸ¼óé<©ð-rùÕ’4áïò¹ä¨îRãÉ<8¸¬Ë. psŸ&ìmÕÄñ)Èn}¥Ìd, ÷…à‹ª{õ9ö«Š×X@ÊÅ3Ëò³ÜÕš:¡Œ>“»²¯2’JÆâ’µ¯pò‚µ‚möqYHq †"0UíÏVÜÕZ´Ð”÷å…Ed¾Õãå-9îZ'rŒ\5MdŠGdy¥@Ñʪå k›0w8J­÷®Ç8‚pLNôO%7Ü•­dýSòÃÜ{ŠLµ8…WW+&‰Ñ8úC,vU[«ªŽè/`ÛÌ)¹Ôµ™qÁÉïo裾´“£‡¸ñ “íꙡÝ#Û¨P¥«™¯#GŽçsQpCÓ’4ä“‚ŒùéÎ+NHÓ’N 0P Ó’4ä“‚Œ§ŽB÷½yøQŨ@zWŽôW½È@6½‹Ð€„(„!!@B  –[x(`ñÁ4äñM<"XuRc*/Ÿˆ©dšTˆNª+‰èÎ ÊH†YÓ»@¥1ÊRCù.y"¬“¼¼SMvSYX¨èOÓ» ;SŒ8pYÉê™ÙJ ¾‘ùOiÈ\2V`ô(wˆ·à-S#‘9‡¼(‹ÅÜ“0à’S³0²G4ñ5ÃEè'tA牺%—pSîÕTû“o-bÉÏŠD ‡ÞÜÕÜHЫ2FçÔ6Nc jÒ;Ât æ9Ÿ™nðàTÂâÉ&4åî*Podlê?pŽÍXÈ:öTÅN­yÉø(Œ³Ýe½SÕÏUJØâk˜3œb‘Ys¦îíUp¶Q¡.p${•MFØ[(ØáKÖÔJ{øüËOI+¶dëM»#wOe±ÆÓ=uâªf0eæ:r1ìMÐG²•—CGc£ÉíÝ'Û§¹}Ãno5e9Џü-Þ>%gæ¸WTÉ¿5\„»ûøúEQñ÷›[³½ÏY±t3u3¾…„w¹åß¹F­Ú½„¢Œ¹’ÓT;òà zà¥ù9 Ÿnq…è‘ùpÈãÿ¾+NªJÊ(£ƒ~[:…㤊fù6Ë #y$üné"”¹¬»Ø(¦i>” 4€¹³µ×N>à–Òç“8©Ô´[} fŸ£›ý#žÊºj9C s%nžý~ Ø›]êŒÁ³·ZIkZÍíÙá‘ÌiÉp)Ý_ë5.Þ¹kº>Úù¶rÿM\\Éz§å¬ä´´‚Gƒâ³©5”Q ŠôÉ—wKÂÏu–×w©¦§­uÛ‚@ààFs‘ìU÷* • D“S¹Ìv­s5V{C]_¶WÙo’Ðᮑ’ $ ôíöúcűÃ-l ¾¦7y.Àá»ÃE”èÑkebñ¯UKÍÊ}›«ƒ´¼ÊðÙCHcJwxˆ%Ÿ½Äñö,ÝÆGTHg§…ìx:»™æ1¢r |°vZ¨Údž}« +9e¹* fÜÖ?Î}Ħª¸ckæê¸'«Èm#ÁÃZ2=Éš§âhqɱ7=®Ã]žíÓÄ~ªÆš¹‘FpÎ0«$ |àƒìP§t{šuƹRÌ3Dé§©xnö‡’Ÿm®+›÷,l¨……Ì~¾ÁªÖÔT8—dçš²"ÆŠkõED§Òã„Û*÷c' ®’=̼ñƈ÷ã”àdh ê'tò2•Ž$®–…±CŽÅ£$w,]!Ü#\Êó†žJöZ“Gp0LöðÕ6*ü—רèþî‡Ê¥Ü­’®­ŽéuL® 'FžüªztSus·Ò 8òʱ}Ų½»… 4èà¥;2¯}Ž™UQA20àáL·V˜˜Æ¼èV†àç@'xû8«¸. 07A‘í]Q–ç;5ñÔÆ^J}Ïc™£–Mõ¡Ç1¸ä4šZâöèâ‚Õ;hµª"F–8ëÜy¬ÍÚQ yÝ–<–ûUÄ•8nöT:æCPֽĎ*|¢.QÚoHE®Ä Ò{ˆîOÕU‡7­×yš=½ë9´‘ËE^jc>FAv? H¨»Èè[PÐÒᤚcNj‰û rµÏí4Ž×ƒš;Ó1Üãs|³¸á¡iî+;Sw– ž´;BÑ3-Á³<Èæ°ç¼ )ÈœY ûF_ÈϪ>Ñ—ò3ê¼óg*ϣ͜««Ï6r¬ñj<Ùʳũ…>ãÁïÚ2þF}P.2þF}WžlåYâÔy³•g‹S | ǃߴeüŒú£í#>«Ï6r¬ñj<Ùʳũ…>Qà÷í#>¨ûF_ÈϪóÍœ«¨ûB_ÈϪ<ÙʳŨóg*ϧNŸ(ðhKùõGÚþF}QæÎUž-G›9Vxµ:tøG€ûB_ÈϪ>Зò3ê6r¬ñj<ÙʳũӧÀÊ<ÚþF}W¢ã(ü ú¯<ÙʳŨóg*ϧNŸ(ð{ö”ß‘ŸUá¸J>¨óg*ϣ͜«¿ªPÚŠÁþÏ×õU¾låYâÔy³•g‹Tvô>$zx-ÕÖöz¯ê½YZ?Ù©üúª¯6r¬ñj<ÙʳŪ;jè་mnð¥¥?~©öíõ̱Òx;õYÏ6r¬ñj<ÙʳŪ¯E¦~`=Oôsõ:?~«ßôƒtõ:?~«5æÎUž-G›9VxµGc¥øGÍFØ×M!ÒÒ´žAߪkö®·Õ©þ¿ª«óg*ϣ͜«#ÑÁbvš¬ÿ³ÁõýRNÒUŸê úþª›9VxµlåYâÔíè|G§‚iÚ£ýD?_Õx6‚¤:ˆu÷þª›9VxµlåYâÕ= ?éà˜/õ!ÁÂr=ÿªA¾TOSÏ¿õQ¼ÙʳŨóg*ϧBÄzx%}»SýŒ\=¿ªKoU®oUŽªæÎUž-G›9VxµGoCâ=£¿T±ìp†,·‡ÕxosñÔDÎH×OªæÎUž-G›9Vxµ;zèà–ûõKàŽ'Cä®qâ½;ATD à 1 4ëœx¨~låYâÔy³•g‹TvÔ>#ÑÁrvƽÖÇÛÝKLèHvG»U“¯¥ec÷žç7\Ó¡V~låYâÔy³•g‹VÔ£ ?b±e4¼Z#,,ЦhAü˜þ!G“gúÂKîµçÙ¾1û–ŸÍœ«ƒë5>-ýûC»ŽÓSâßÑl<ÙʳŨóg*ϧwS‘Öf;ö>‡Öª|[ú%7dhZr*j|[ú-›9VxµlåYâÔîêr:ÌÈ~ÈÐç=¦§>öþ‹Ã²]ÕU#âßÑl<ÙʳŨóg*ϧwS‘ÖeE¾‰ÔqõL¬ªt|wzÌ îç`cP™šÓ¤M&@ÆF5ú+ß6r¬ñj<ÙʳũÝMû…Y§rˆÚ`- HîP¤Ùz'’Lóëîý«Íœ«Gq#:,TÝòÊ|?Eä¶ yºj'ÙÑhüÙʳŨóg*ϧs>Gq#7M`¥‚vL&™å¼±Ü§QPÃMTú£™ew?]ßr¶óg*ϣ͜«ø…á:'$TÇ;ŠéÛ›‘ºç8¢Æ$S’ÃQíµ 5LÊœ¾ŒÓS”Œ*Ã÷£ºHñ©3Ç>zå Øœx„ªã]ƒii~áZiä*‡$èEAIDNsÇq¤Þ¤•V¢gF GM–y‚íBâ´+´±WSÖÈ¢*0åc¹õþº¦º‚óWWÔ’Ons‚¨¸óþzrëŠú›¿ÀrZ(d c±úWrÍ|0cõÖ N&w¹¹ ›O_3C ‘Ù˜1˱Ï>§Y¡ùÈ*NP¶NOs¬ÐŽ£¸ÁUÜ‘$’0ÁÜv_";¶TŠ™¦j¢Ai[ï®¶‰*Ro `vC«“¢7J "¦A¶9I!HäcËNT±°ÆÕPY–®%IK`yc¸ÕåýŸzžàiê©kªÖH¢!‡ˆØ yãT|€´ ¸íuçî4jÉ_=²_‚W ¦!ÖŒ†}´@æz+®ºªžÛs¤M¢Hæl³©ùGÑk]=mZUFØñ1…cªVŠç{A5snH£Æñ-4Xo͹Cn…88Ð6’’„Rj­¬ÏCÛ¢0Øï©SI°q€G×JÔ½OO,*‰%\ì0VSâ” Éúik«o·:ªòf’J:p *£¬)þ#e˜ÿʺóó®2|Í@AŒ—EI®)/Š‘»ü$³ú®–©)ä•°Ô:ŸˆFÛ¶þ{ižÅXUQÔ,Á’O”²‘Ÿ°é÷§^®  ãi¸Áóò^šzçÉÅqŠj„+2!ñ’#ï­èg;A#º'-)–?ÜÓM7ü‘±Ó\VÕ_·w¹Nƒ¿Ä¸þºµî¥Q2hɈ|!! ŒƒA¨-OS¾" GâSõÖâÛt6Š2èÙîãáþz%Ei¯–”ÇQL@ •eÁÏÛK÷sºø…,Õ°TÁ´²–Ç#: {–Ý%d”ë"$Ê °'úç¶¢ÒA5¶àU£š(ÜðYõÐÓ9ª¨¹7‰µ’¡Âžücƒüµ_'öÎå0·qÌÄ¡¡¦E«†¡jâ@¬‘öÑZiéü ÁÏUPɾ:³ð²ä<Ç|DH9’<©>¹=c¸U.ä›ÇªƒnáÊœ|¥N?F5ÛÎת…‰bFÈ2ã\ªÒóÏáKt¥ªtHÜÂHù%“ö=›ðuÂäõ2$,h«ó]\ÅLlÅž¢¸”©H£oÉRqõÒGZOàQ¤1îw$çz—|–ºª®*ˆ iU¶œ/ ­"¥/ šà_*ø\§:ÙÇŒ Qw-bVŽ˜½ÕÁâ*øt€ä’qŸ®—ŲÚô†4‹! ¹ä¸õ»oS… "ˆGB·#îFª óMNÑ£ä`gÈêÒÂTÈ»:1¼GXðž³ZÕÆÌ夓q'ËY¨+-%m‡:vâ¹<Ž\Fƒà\ü¹ÓuQ´(î!ä•=¹$y꽊±÷oS†Ï‘ÓÇH_ãI㊮¤Ó¯ØsÆ¬í®¥7 4[»P®\ˆÂ”î<ÛY/ˆªÈ¹ÊäŒißÚE¹j K?‹P¬ ;)yôôÐXi½ÔÇJ¬IdÝŒsO¾›želŒÊ6ÜrSµ°ÊÞG™Éúi^[}3R¼ðJ>êOc«6ÇÑôýK"*ÆœIâ}²0Àû"“õÖ_®ëŸMIÛq Åîå¶ñ K]4pFC­$Û£x@£°Þßô ]iáµ,ž<‹îìÿïŠb|¾y7Jßp±A}áóO¿“+±§ =w6eÆ4B‚–hÕj"ŠHÕ2EÓ'þtij~¼r{›á@)i|YéŸà $™ñv1Üÿçâ#°ôѪڋ­"Ð]Z ¡ñe5h›¹ã¸óùGô×b—ºC6ÖŸÃBÙ…š¬’Hà¹ì~Ø:•ÔT´ÏY²o{.±… ({ÿÄNÛh4œ@«É /‹'XÛ#©»‰ måj©\± ¤ð99Ô;5Eqs]¤Ò¶H¦™»ºz-L{>a©ÝÒàµb*ü{¹ÇÃë¨V9i–ââš `zùdONß}.ãææÝD½>¨fR¾úçwìù0O†ž[³å­îRSÅn”TD LK:ð ÿ ã·mttC§U5&ß~#õ/þí|õöéSJm”¬P®ixÙq‘;;Žçúë¼ÉžIàê+„0ÝŒl}ä*й“ØŒqE´TÜ$¨¬÷Ú“Wð£FÞš s,–0Kœ’<ôU¨M*ø‚V—vxÒ¼ÕfY¦¦¼;¾ØÎ½N5ÜlIÚ…E»ÔñËѤ08,Ç¿Ôj¼ê*Z©¡d|AôÕ±S@¥ „b0I^ú•ÓÝ;@”ÔDZ°B3ÉÕßyP\¨ØŽCSÎ/Ó•m½TÀÁפdèÊh)Ÿ÷qŒÝ·ÍpÕ!“ðù™äõ©Pï ‘ß_a×¶¤¤xòÖ°Y_&Hnß`Ÿ…HõmXÐ=fcÅEJ÷(kgêç§ã¶¼?õ>pÚ•ÅÿûÍÏHOì—ú™½NUª)’R ø¦§Qûš‰²Oàk½2SKZ0i&¨ÿô ’¾oþfø}{kY P†±¨ÙÈ÷¹š²n=~ß¶4f’ÙƒEyzsŒ (iÈõ¹ýuæf¨’mTÑÔ×Õ,ᜤk,‘•‘|ðÈ„ñ÷×y}Ön§§¤4Ö÷/S_½ÞÍÝGÊé­¬ ™$H–BD¥DaìÇ¡8<è—LÔ\eêªt„\ŒIS—ð©@\p쿮φ ‹ÆmÌùk©©©êÙ 0EKîŠÝ’N×Ç$wþº•hŠô(®Çs»@hwŽÞ½µöÑMv’J–¨ŠîºH¨­Uä€;yuòÛjoq¹™!‹,°ƒâÝTçã'Ë·o΂>u |ýýÝ×w¾s yzgÏYZ·“i /q Ãn¢WÁÞÝÆ=1­¡¶*X™T =ïv?iäv<ý~šù[A?ìš” "?ÇêO=ÿ‘Üã2¾¢H¯ÔOŠ™ËKAÈÈLò;é¡pšx:‘ Zj(ØK$YŒ²·˜ÆÒp{hµÊºAK$)wÜ)cϻԆ9 ÉãZõ+WCÔ­½k<#W‘¾—<1òqÛ¾¥LAwhÙ:†•ÕJ5E;¦ØÓ.àFØÛ‚;’u ÇV>ž9° ÜG/§q•ôÑŽ §Xê(ˉIñö´d*î#ç }xÖ•T¡M©tH9iZ¸GÔùÿs÷±˜ÙdeR8L “õEþcZÜ·Œ¬T7Màgÿ~öa©é ÔJ´ÍIâ“îÒšyyõVøOcÆ´1§`O‡3 ëîÒŸêùÒî£D%-h$µ@u+Ü08_BuÊžÌ"ÔÌcúi‚’€ÔÓ!h\>øÄd°ã™-: t×b¶@`ºõXõ[ÐæR8€1zšÉuY;ö®2£·Q©uT"Šl!ή‰Ò[天WB¸U#>ú…plT,q;NY³®9 7ˆA@1‘ŒÓ+7ÃÆé¬ÔÒÀÈ;žGÛY¨&ñBÇ®ÑÆsλ¬X:íyò×· <«fšBœè=9uÊã-qŠ=§§pTð 8ée,™.X~Ϩ=ϧžZµXR¥÷(©œ˜Ü,KÉ?VãNA*ÓÿÞcNy_~qIÝb_‰¿]D±D´TpQѨ3ªeã´Dev?â36qŸQ‘©Ž¢œ—Û(_¹i¤5•œesúkäþ¥ŸßÕ>O©žÛKÚ©ô½¾WyY(*jå*0bµPlù‡œ~<µ6Ž£¨Ý-¶Ž)7|M_pñ¤?]«Œ~šNµÑ”ýAtE$~øŠZqÁüM¦¢0ѼPÚìhæ2¢ž:ƒ,¯‘¡²Ø?]S¨èfÉIR("Ii+–3ÎÉå!Tžvä†Ó¿¦»ôí-ÚK¿‰UGr1GÅMLÞݶãq¢²ÇOVjVÝ2ÌÐx+D¤ä%R‰ñ^uߥ¬õñUUÔTÛHÅŠ=ö¡PØ# ŽçMÉÀ¨¬L‘dµ¬P×–¥µÄ}Ô®d¯ÞyuïƒÀ×{U o¹eì-?°îÿ7ù~uÞÛ@ËGq-MÁ˜Ð|3þ0~.O~ºÞÛIVºáï}> –VTyóqÉôüéW,L‚Øòbn›ÁªýÛìÎÏþ¯òÖ•TpIh¥ 7O$˜ ¬èÔñõõû¡®L\ì ûÈäQeÙÛïõôÖÕÊmq)«éçÄòòÔ…W²p8>¿q®ž$Á5ö±5º‰Vš×7ýßfc¯(8fž¶¿ÐÜIñ`¦¸`ÃMROÀ¹Ç—WnimÔ[§äÚ$\$…ç'·¯:ãv´M-%1[Ls‘J©ŠJáÁóÛR Š‘z–š¡í2½=-D%4ÇpË¿®¢KKºE’:Y$ 0hë|ûàžMMšÐ+©ÃÍoW˜Òˆ$”«G ¯†¸õ)ž{L)=ºÔÒx*šIŒr!å-ÆO×DñX»"r®yV¡VªZ•ܤëè·ƒÿˆ¼ÿþëƒÄÍbY#æì*"ü¡ø—S¦ŽjX‘Ì7š$gݘTBsëôüëƒ,52 :‰<š74Ó¦t³$¾™dðj)¢0pðå?cð7+øÑ_wYÆÅö ¹=ôßUî·54/Ûml8~}wòï£Q΋ÜoÎî<ε4N[y83åDÑ Ùrr‰““¥»…BÅâO TSÈêsº fs(c“Œy~t»u„×Má,­³<€9?MkáÆ/™]ߎ&”×WyšBöY­ív£Lß÷– ·åfšåâB®g—_MvH¾šôï^{ éšêëº^¢z ÞYi¤mÑ9ÿó]yâZ ©ª$§¨‰£–6*èÃHî½V‹_ƒZ¥±žGƒÜòzÍ.m1§èÎTeÔ°+Ÿ®tí¸µêž9Ž q÷¬˜Î<ˆŸ¶ SÆÑ¶W#N^ÎáHë'­š²†#\<^,ƒÏr.êu£ŸáôÏ’úzË]’X¨F}òÙC´d¥ &¢^?â9çþ­s‚&¹?¹Ý¯[ßÕ?N¿ØÔ5&YžŽ/Šñg²Ž4‘ ]O—Ä3ÿÕ¯“]›3ÝÌZ&¸R†þ¢¿‚1âUIࡽ¿û†‰ÃnsÄö ZFò d†¨<Ê29îÇŽ41ä¶×Ê‚ZŽ£¿>à3Tò|ƒhÍ50TRø½5r¶®^DžINNÑ‚s¯ø½<µ Y€Æ”ÉÅ©«¢¯XújåFlF’#¾^ü ®q<÷Ó6øhî¯-–±Œ”éûÜÛ7æ@H±òë[‚ÒÅm‘ÖGÉƧðÙÁãIçþoƾXéc~›»?»_«|I©Ós++7¶WÇlýƘ÷äÀÃUÄ/h¶TEi¸Ùh‹¼,•[ƒ\üGwãw¡¶È-UjÔý7ꈎ7åxWïßžxüèm¾ÐïÓ5«OÞ–®…™·°U~F|†ž§Ú,ÕtýB²ÊZ­žr€Cñ|öqùÒÉ­²˜Ãn“ãé¾*A§Áòü|ßå®—¤’¶„:ÁÓÓ°²7aGÀ¾gø¸ý1¨Öûm@´Êƒ£`Cï D)üãÉnþZù%¢ª[CÆÝ±mªÞ"†§æ0_;¾€j“9-²w²@†×f‘’i~©Àí<ÝÏ9üj%ÞÍU%®‡I”¢È…i*wlò<ÎsœêlVfŽÆ"›¥îmQeŽ:’_”lƒÛ€1¨wKzžŸ¦Ùo¿Ðê¥À@îøeRIàœqÇçS|Îñ:Úh¤k,On²FÊc–3¿ƒçð·¶…ÒPH”ÏL–[j,Rº,SO‰ÝÀü=óé¢]3Mn1·1Y™|JµU“‘ç¹?ÌhZQÄ.w©úr®´nIE—åܸv¹ÿ $cÏRz‰^¦‚…©hH6Ëͤ*Šo<ûsúê;ËZŒÔÒTî W †AŸSëùÖÈô4RJ wû#oÎ÷;•‰óä÷ÖST=\XŽóCwPJ³UE±‰óç·óÐs@Mª£ŒžQôǧóÖñK+dñ"ÛZ¸’‘¼AI]oýý+ø‘~Ÿÿmêˤt²A*\ \dìMŽ1þ%úç¾µ= ïÊq2¾©‚&ó⺈3$Raø¸S¥»kMï2g'—± Ow«¸Vܺ@Ç'’4ák«§¢§ 8cÉvîuéÛ aZ<“3“0ÌÖ8¨IÑ©£3W7ã:Í'uuÚªxÊ*±9àŒë5´EÖØÂ}XC@KÊ\£Œ„úig¯}œX:–ÒòÇMıTÄœ³ñ1¦ÆPÜê\R+¡R#^w£&ŒÑšY1&UÚâÄñÅæÎÖ«½M½åŽc…8ž1„Ž%xÖê'Ï;4<É©WQÔYVÍZÐuUê8Ò¢"óαîBC£(<ûkj[„2ÙjÍ^+´U1–¨ž4!7+‡iœgñ«<Ç+‹Â¨µ¥ÆÒþ+ÎLd:¬M‚Hû‘ýFª™aµÖÝæý›Ð÷Û´êÛXÌÏà8ì»Gÿ¸éù®µvéZÚj3•ñ*–‡Éóò¯îUhn¦ö ‘Æ90ÑFùȦ±õ…•½¶=K DnaO©è×þïké^ŸR3™%ŒºýÕrßÏB®u3°¸ûXXP¦ dù_³‘Ï–†­W³ê™£‚–ßÔ×Ù€ñ§šA}I ´±Ô»5Eemg‹jöG<òd©–œ«zŸˆç‘éªÀ\À?ÔO³ãQ!k·TÖ¸r$†u Â0¡¼Æžm6 mϦaŽÒ—: gœÎjrf* –gú ·Úœ‚":g§íYùŒ¡¼ŽÓë¦ë\w hi½ò€¢ŠÒ˜,Òà9?,ÅtÅ.ßÎ`í©Cm¼uM}šjxBéü8Ìã¹±œö?^N¬ÿf)mNŒ£kEeMm›ž9ês¾XòN«¾ QwþŽèø®0íøgš? óÉÆÕ\~žºµ:ÙYNâc"€ÃéÁ:Q¼-dÒ8ñ!<04Ýu¸Â›CÖ›‹'÷’ÇNOsØÏ:W¿u_B†ŽŠåuZp[ác˜ð~¤ãz £‹0A÷”òéYÍ¢¥ÀÓ&a«ž’XÇÎŒÀùyŸ-f—:‡ këÙíPË3ÆBn ÆÇш‚0x=ùôÖk3S®9_scýšYŧÖ•æ#½¢i–É"êkãb2<9ÕˆòòlýÎ4ßhºõ-R‘z÷{Œ `…¦hŸ>}ÉçÿÏ#¦HêRIÁF sätr–¨m+³sEÉ'L}+â6¬g ܯºÒ[5®Â¢Í]p¦œXát ç‚Ä(X?hðzWØý<'°žª<ž;ÌX-8ûEÿlüx¦îÖëlRfI^½ Â<ö«gï뤺‹5Ê©·u/µ€Ê>hè²sö;OõÕ<®]Ë1çþç\úCÕƒÚ{ ¶ïÓÊŒESHŽqçŽ1΃UQ^Z'Míj”ÆÊS÷,@V=›!N~¸Ô8ºK¢…4‰$ýi~YÈIfŒ0íœgÀ×*ÚgÝ/ ¤Ý Õ¬&`¬µpø-&> B´y#áQþ¶±ßï:Amè¦vŽ«Ú¥]eAág$n9Æv{‘åå«Z‘!/aéåEÚ¡|:©ÉÀíòóªï¥+z^ªå %£ÙÍÂ…¦‘c÷¦˜#!SÁ¾>^º´RZÔÅIà™N5[=ÐTl÷% Ý·Ô¿]Æ(Bí(ô:Ž´4&ï vΚ ƒþb÷äðgž*:rýfêú?}‚“uI ó<¡¼8³€‹žÌÄö¿Mz"ÏûÛ-.|àPMVþÛ’Û ó¦ê«¤©%Öal}ÑᛃÂó÷ά^ž9³S}¡ÒÔ´>°Í“r­«¦µÁ01ûFy^9÷ykPø˜nTÉ?M8ÕÅNà³QÇáŠ)9ò“ß\.}%lšªVnŸ ‘ËîW•l“~^F»ÓʲPÃ*lŒÅq ðù;A•;Ðô ,Ôóu•ÊÛU2È— r™ìØzs¥-Žk€Jðe­UŸN4Fг£žžž®Š¥Ò6vDs)Ú'Œê§öÒµqÛm{5º¢H­Ôâž0 ˜©ã×BìmUн¿_edЊ#<'"G s·¸^~ú³›Q˜µ1±q [ÒN£ö_†Hi¨dcÎä¢ÎQ©ïÖ}3o²-î ÷Yj (V\<¾šñ¿Hµeö9oýU;SÓ#<ñ¼[SÐgžHÕ·í:Õp¾{;é~Ÿ²P_+"!«fšÙ à³‘ÛæþZ¦¥Ø*`\¸#ö·jž® Zj ÞI¤XÓ.£%ŽõÑþ¨Š‚­¤§ÙÉ$ʤFqŒÜjŒé?e²Åí>Ár¸SÜ¡¥¶Ê”¬má&wO''wöí.÷b¾ÔJ”tU´^2¥8(Í!g'¾09Ç:n0È~h-µº“í{‹¬?cÕWtŒ¶¬#•¨ÂïÀÏ!\a³é£PÖÓˆjf†£§QÄAÊÅH¿?Ã’çU|^Ùú—ߢާ ©ŒL~:“'¨ó=Éã¶;êCûo« ‰ìâGC†R}xÇz~šxÈ£¿ý•[ žå±f€I]LŸíŠ« ÉG cþ#ß¶­JÉáj)©XË!Úùqßy¢ƒÛm6ôßÑÕN;¢Êyã·$yÛFi?´$ôÒ4Ý1pEχñ:äù wäžÃ]/.Tb9ŒÅ‹`–OJÝÕz¶ê÷sn§1  R²*—ü§ž{gžtÝûzÈxý¯AŸþ:ÿ®¨Ø½±Ú*kV&ékyw4i÷?ML_kÝ>±W¦ëYÁ>qõÐ+a“Á‰â[ͳ—ÿÚÔDy×[Å}³ƒÿ´èÿó—UL~×úr!éºî¥‚˜Ó#Ó>™×DöÉ`(î½/Wµ;“Ž}4G.¼€ û`º™¢µ=è*§ñ^6v‘ ‰HRHÏ8ÆtéѲêô,ÊïñaÛ¹<}µVOí–ÍÑÆ:FªA( ­±1mÿn”‹LíLÔ)Œó`|gôÒŽTP¶·™d]R”V3ªÂ_iuçõóÐÛ|”‹n‚9îÔ¿ JDF;Xdyñçªö¯Û –Œ<ª ´æ~¸ì<ÏõÔ½´õòazP>7™3þ"1©Aâ·oW;½5ö8m—Ë`¥”#TæISÈo”÷àcƒ¦KlÕ£Eiå“é¨wbyvñV_nš¢áQS;ïE—`²®0ŸË^šèkSÑô¤tT@v«”Ô×2‚6X"R9Ú8ôÀ¯=X­”’ÕÁnXª*¢2‚fVˆä|Yú ÷Óͪ×nº{Õ®Ël©®X™”‰€,HÙ´dg'ý«3×Bã&:u?´‹í[Å5ò²à­M,Mòм„©ø‡ÌqèÓÉp`c!l »BcùdžßMKU¨Œ¨EÄ# Œ™SüõÒÍ2OQQTÃ$±í$+189Çn<´U)ѪˆÁY]i¯´Vâ¾{¨DÒ,“Ê9=öžÿ®¥Sš©åEP~ÛÁ>¤úè%=9‰ŒµI³+¬ùç=µ"à°øsÆÊXc;ÎF û@ÉàZ¿Ú´nð°Š>p»W~r9#Ó°ÔÞœ·UÜÃD¡•À/@ÀÃ~tN÷Q;ßÃ…Êr˃Ž{c\©-€Ï<{^uFÉ—¸çqŽ|ñ¤gÍT-æK¬±Èµ'–²&ÚÜ‘žxä}´.;]ãÇXÒÿQ@dí‚ ¨ôÁ_ÿ0tíÕ3,6ù²™BZpߘòïöï¨Ô7û”ïL20j¨ãKÞ#P ¶9ÆIb?ÎøòzÞÝwý¢_ºÖÇÔ)k´õ+»TF (ÐCâ³ÀN|ôÁÐW.£¶,•—‹Ê×W°Uš|08*†Vü|XÕ“ìþ’•z\*ºNHêgʥ«cˆÑ³°Æ ÷É#¿–5Ê«ØwWµý®)Wm‘¹OLÈ·¾x9ä3œzè²6fPVù»æ ºûQ¸Q[#Žª®i­Ñ:𠮉´ðØäÄa†~]&ûfën ¸ô¥ ÐT5cÑϾyÀ*Êà¯Â¶«Œ`ðF‹ûJöuÔÝ-m¥®ºËOQ%DÞ IL܃‚߯qé¤X:«®~ó:[$£¶Ô K,»ÒŽÃqB}{ãU•ÞÊ·q¥‹BV^¿¨éŸÙu¶ªš†¦–dª¨Š9yvá„Yîæ'í磇گR{Dê;UΖk(7-Dþv8y™9Ý´Á8û󤾚ö{q¾²Úažžf¤wAâ—,3³ 9ãœó¯Oû5öGIÒ6 2(Ý¢“tI@AÆW8åF¬ã „Q lƾ€½Ùà´SÓKy’j©¾"jåf•Ï™ä }€Ök›Yo«P$Io;U²öª‘ú2f­-ÌY âyŽÍÔÿÚ>®±ÅNTÒ@±3–1¦]€øTr;ž4×í ÍÔ³û ¦¹ÕÚiŸ¬˜ÍRŠÈ¦0Çâ IåU˜ç“¥¡£8ÏQÿfÛ_TÒZï^°*nճƌË,r©T r¬ŒF2þ¹ãW >!óñª×Ø=Ššöek·‘Ø©•ÙÉ$³éÀÓT5²Ë¾’ïUH¾h¨¥šêÚ­-@0¥ÄH]yoû[ô•‚ÍWf­±Ñ:Ü®U½s%IËv!ˆ9ÇÄ|±«Ï¨.ê øá§¹ËP»}ñ!$ç°øuä¯l]aêiUTwªZ4´Á,𱄠ÙJü*dBC àãõ_R–”D44n$QM4õ/ï0Å ËP#ƒÆf2†'‘ÁÆ>õ´—ó-Ꙣ€û„ò©c°“œ/o¦„ôœ×á7T©Xg…ç·ÊFÒÄId!®Vé\\™ÜábGíH—?ºíŒgU1aPÖGP™Ûm\±½‰ß(én³TÏ+ON¢8¸žvòsÙ—§ÓVµdòŠÊiÙœŒ‰$|¸ãUOCÛ秦¨ª¯©’1#DÂ#qŒ…° >ß};tà»Ç;Z-ÕÕÔòF3GT$*ì Ûφp>ºvòxX Ãs©*XÚæoJDP`3üYÎrq©”óRE 5 ,„¾ Ú|ô´n“Ñ×ÅižŽº:ª–Œ$/*;Ã\稷Ô]f¢ ºZ¯4tï28TÆwœ©Ï~=<´þD~åð`¯í_E5¡E!l!I4³ ÿSáò;Ÿ¡ª­=Zô’ÑR-D2ÑȈþÏRB6ò7(#¸úé÷Ûw²‰’¢H'Š5gàm;—ÏŒ·g¾Ÿ=€u¥ÞÁ¦áZ$›ÄºiÌŠL¸aóä|µS”ÕÇë,6BÄÙžÓêŠ%޾4ð†ÕQ€0|´×g…_Ì öÕiíó%®ÓGt¤»Ìv¥e`Š6sŽçL½æé`·Þ Þ¶©*".ÖýÛ^mi“j>Ñ\ÀÚ&š®Of•5T“¬sRTC/ˆ@Â)p¬yú1ÒZuZÚ}‘[ì¿íU ·édUyiJO¨'~î6€@ôÕÏÖöØïv¶x%Ú¢’EA´üÛI_漓If-×*Z›d’ÀÕL)Ød„Y†Q†FsÎHÕLÛ”°—š¦«ú‚ÑíBš* ·SOp‹Ä‚¥Ù|8݇ÿpÚ¤`ŽÜdkÕÞÍ*:ªáÐ7›uת¬Õ½I'‹îsÑUG ˆ89^R®±Î·+LU$SJ(HV8Æ ^Ç:¹½’ôýÂÓ_ï?³æŠB²b@ðARçsøÒqç4wRù¹Ë¨«½¯Ã ¶ªÏÖý*‹=.ÙÅMÎ"¦¡OŰç‘ÛÛ:Í#{Zè;£ô¥þ;U½êZÍzŽº—ÃVÚÉSÂ0YAÛÛ:ÍZSbà*«Å}E“§:~ÐËN´”Ë1’)cÊò67)ŒÇÓIRUÔL¤1)!_#ñ7àž3÷õÕ§Ò·Û­ò’Þh+Ô=@‹ÆšŠ9BœÛû2Opt­j'[—…]S^K9)OJ¬88Îüè¦G`3øEi:š¶!š¦E'è‘•wðLvË¥QQýž¬r-•E4ÕMîy££|@I%²KØÕIígÙÇû)שm餾\!šÜey;)»neW€8ÕóÖÞÒ¬•|m4œŠe9v9ãá\wÆ«{—´îª¸]$¤¶RÇd¢D ãÊIß‘ÙsµGß:XÅ¼Ò ‹Èøð‹ÈÕz ÕwR#6ËØÙ+–’¢Ø#ñXmÇ‚qùÓÝ¢ôöÊý“_?»Õîm»bÚ €Nზl y‘2Øz²ç4 ËYU#† »Éíßzg¥¿UÌчšm¤g’¾qçÓM ·f$j°Œ©$·õl{Ñb %Ùh ŠÛï.-‚ti]áå^ß2;cGºrÅ{¥»ÒÔ‹ Æ5ŠFvš9Ÿߪ3’¿{cVwúÑr¤<ÅDYw.9Æ|µ>ªóV¡Z:‰”eó‚; <½8×6‡-I]F/T^ѺgªjiÄp[.µP$RGMD®HÊ`‚rF0xäg>ºA±û;½5û§¨ïN¦ktõ.µSjÄ"C³ç%H^s÷ç^•ê+ÍÊP"«©M¥ñ‡QÛ·–«{ZõåBÏI\.”Ï>–´((¸þP=?‹:QÑæÕ‰ÃS§^ ¨Ù7²ž ½Ò^-÷J–ùD‹‘Á"J¼¬p<uÚßýŸ-¶ˆ(’.³¨¦Zª•–áâ€Ypw`g“Çkö‰`•ÅγÏ+.c¨_ ]ˆòqð“új×§ê:øè¡†¨Q““¤”F@ª–¶ySºó¤.ÖÊ+“\ú¶õ†h ~ï4€ ©\®Å ‘éuþÍýgOlöKg³ßæWÐÆ°¹HY—ˆN@ç¶3£}iQs¹[Úd€LÊÑq ÁÏZKè Žß[Â7@­ ª†*RMÊ<ç“ë§U¨Q¡ä®:jB ] BÁÈ޹ØpÝ×Èžuæ›ÝÊ‚ž¢¶Š;Ô7 ›uQȲ€MÊCgåà z5qDÝ9St¥&JIn¦Ù))*nìÀyªö£Ù]…ëí3ÁQ-©y(ælÀtRŒúì9ûèN6" ƒR•’ã~Y«éhéê&¥¸VoEOŽî #=Æaƒ§®ž¾\éìÖ‹¥]Å%“áŽiˆgHÀ (8å—÷ÕqÔT‚×ÖÕ–éêä¡ «Wj–M¾$á·ðFŠû6·Áqö‡GAW=D49¡Y!•ãØÙܹyùsÜT\FÍD5zæ>{Bëš[•U]Q¨©µE%¼ÑËM:ÿûÕ!xaŽÚÍö÷KÕ}3[WjÜîÖïtŽ¥$w3´j…‘ÉÝÆ+É¿–³Pq¸?ŠO¸>‘ šåIj¶S­H‚’÷JhÑä‘þ;öäóë¢6»Û¨:RïINKMd°¤~ù‰–$3Œmø˜’I#Ž4þ·OrO†ÕGB c†7/õ×Y+jjBÉSU$Ê{ÛAÖÌ£ŽÿI#N|À-Ðfß]I[w¸Z`©§B£ÂF–N@ dçÆ}=ÇEASw’âZ²ªf™f1D8#…\ÇÌè$54 ¬‘¬G;Fæ?o]I¤¨iHã_ZŒ~»F–2ž–7ÙQÉðºÂ+Á€÷h°ÉçR㪛l¸ä³’qù'®î=Ml¢rX§‘rpÛU ¨’õEÞ&T˜E ¹àöŸå«X±dÈhDeÏ‹²c½ï¬¡·ÐÏQLZ±¡^c§à ú±ãôÕ1UÖÝuÕÕ8ž^ž¡ß†UèOÍú4Ô”qÁŒÍ(Ž]NN㨷¨â“ÃU ñ 5¥‡Ò샔þS [ëû"’Õí:‹™-%eA]ò8ÉvÒå,Öº&¯³Ö""±ñáóÎ|—냣)+Ë»ÄOã8Áì<ùÖô¡NJ ÃÏj *IÄó¿ÌÁŸ™#¥ë&’ˆ;ÏI%‰Û—>^yÓMµðGV‘ÉtÆd,KÇÀ×Aé!§Xzx\NÜ ‘çýtFž–†IüAIõ!?SéØy—°êHŠéow..³±@˜Â§?òê\×zSHŽ—‚¤†ùÑ?ÅöÐÈmöØâû¤`± qÇÛRM¤ÓÆnöäü»ûùé^ËË ©XW¨käa+Ç[NìêÄ=ÔúWV{¥uÞç% –É8Èw­‡&<à6@çìN¬‡’ØcïKÕÂ{hª­ ¢pu8ð7“Ÿ2Ÿ=þÙÊÞ±U*Êܤ­áÖ6;«ÔÙkäzm¹ð‹†Qæ‡ý4FTP€³çá%qÇòÔyæd«yžÇÐgѦ^AÁ®É€Ú™qt âãÔ=Ms¬S C«/ÀHóŸë¨T7º”ÓGO==iŒ~ð “­}žÜZ>“ª»‡~ăª²ÛiªµûP7Zz‰BÎ]Äy眞±›HûН‰é±kÔª–ó,Úèè UTqþËÆ“/ÑKÂHÚ ‰cýç†êÝò#œéÛßd-QðGryýGã]WjÚd™‘ÖeàÕÛõÒrbtò²<«.ÕõBè“K,2\Ð —0$¹ˆÁÇ<éjÊn{%ÆžxLŒgPI!–Näò1«¦J;sòDã<BŸÊöüèQôÒW@eøI 9,Çœ}sªÁö¶ê`UÈw¾·Šét³×\m•æ™ä£•*H¯ËæySñ"ž³]?Ù*J}®•U…‚ã¾þ?Ï:ÍK:ß7#Ø1-j¤bM4mQŸãqµä÷ügBo}Cn³–ý¥s1’?¸¦`ýüÇòÕ5ÔÞÐï÷‰ G1¡€q²&;ˆú±çôƃPÇp¸L$|™$ì?×KÇòq#.©\´¯>Óž8–ŸƒÀvÏ0 GÛv¤ôÌ×kª*ÍY>ÝŦä#Æ'ÓÏÐiZ×g‰61õ9þ'û Z=3DBS™»¨B0>üësIé rÓSꥎԄ¬Ý/HÊÔblvyßåÿ”s£ÐÒSÓºû°§ñŒ÷üç\¢žž(ƒJ%á“?ˉWY ²f1£|¤ä1ý5· ¥2²æÜm™&åU4¹Y™\¯rãùh%KNFp “9×Û””â/ÝÔŒáy$ýô,ÕÌËï&?3« ³3>na¼*¢¢I„ExV8;µ< x˜#´°ù7£t«û™÷ÒÇåßD–'GØë!# ÀÉ#îxÑ%P×Ì)OTŸ¿á‡S–±•IHŽÑÁÁ'úùhBø# Y÷`çq?¦º¤Ó0ÚŸç¾8Ç×:Ž ,³¬ˆ²0Ë÷°úë¸v^VnËžAШeMÂCAÏmÃéø×x$ešVÁ @>¼ú낈{Ì)SRȈҰÉãž þF‡—\nduÏcŒÉ_8‘ÄjÒ§,xãèu”»Þ$>0|Mß=3ë÷Ô„[!&K‘LJ°’Ê݉ääjŒŒÁÁ “–àÃúkœ¬r3ð>¤ŸLöƲ #j²¡ |n+é‘éþº NÞLa³O¤1øa$Ï“ ÄÿÊx#Ÿ"5:’fzØ^? ¶àyúsÛJqÎ@¢¢H%?)PHõ'¾>ÚK\¾õà˘¥$´r`OןΪCqš³šXsx~gŠUŒ^|¸ôÒŸWÁ –¹ÒÞ$]ÎÒ|ù÷ãR㹊‚š‘J²cvü4ns낦·ê ”Žî¨8,²d©êH8þz«“aFmcÕ%wÓeSH&Žå ðû» ‘‘ŽøÝÀ Àï~¿°ÓS5UÒycŒ0zd-´3·ŸÁMº=M®¯ÂV†²™ÛjSâádøÎsߟòÒQÓE[OQbY¢]Ò‡…ÔãȾTdùp2|õ‹ŸBÉÔÐÓúš°¢g¡ì÷:KÕÛ.4·edÚOè1ú¬×œ}šõI²Ü%¶Í $qÊÇtjŸõpWóƳT½³5:‘r³¡¢„È ¶òO å¦Ûe.á™0‘ŽøãùhEU®I¹AË·q¦¨øuŒ1ÿ-z->%Q`O'¯Ê×P­»¡(ð¨ 'òtÛo¯dŒ™Ê¯íã?Žu_ÂÍï1œœ‰Ÿ×N““ÂÈJ³ŸˆŽ vïë­ fæ=žá•½Ai1(P 8úþšÖáu£™ˆòsÁÇ|ÿMB­‚ÚðcÁŸ„}5 ~Ysϸ JÙ25NæY â2bbx –ΦQÇ/¼lY¤9<ØýuªáÎÑž|´B‰˜BX1tÑÄ£ÛCPÛaäÔÖȧæ+;ƒú.?ž¢˜âð wà;`ŸÆt"¦y±ï¤þóüGSgSÂû¶ÿ‹Ÿ=+ÌyªàBQI£dl8Â`“÷ưÍ8I¯<àŸ°É:ÒÝ{ÏȽ×Ëï­#ÌÀ€q»NÚ:ƒw;CSQ=@ 8§±ç¾¤nyäQ—ÃÞüC9õÇØê5zªSÅ´ø€àcËD,_ÞÈ=: <ÉÍO³SÊ¥£uiŒa‚qß8chjZj‘4®%(pS'ŒðH#Ÿ=I»³,X–1¶I<üË¡4쮂@ÇŠFìóü>zÌ6ùa$…åa T±Ã8¹y±<ñ®23Ó´Q\bVE#‘1Î{Aø‡×õÑi]›ª*bf&6R àŒã[Üa…m×X£bM (ュý€"ãIW†ÊKñ„^Þ{}Óí®ŒdXewˆ4ŠNÂøÏÓŸ§é¨t_½”øŸ6ãw8ãDª9’|ùõ× ´u>$[Å—ÂP •ñãÀ6ŸQ¨uuu4T¾UÆn0b|^~,½ûyj% ¯¸Ÿ„q0.xÐÛÛ4Tècb„¼ªJœd`~ºM —ƒ’…v¸"3µ|&#L2n-ƒÆWn Oät³ÕvÖy ÎÖÐJfˆ¤šQ! äFá‘Çëé®—É¥ŽèðÇ+¤m,ŠÄqæ5:¤ŠÞŒ7&ÝÛOlã¾”ØÃð`¦VBHˆÝ?s÷í×z(® èA-, óDBûk4Çí+Ž‚¤ªß­ÆTYŒ(Æ=ñôÖk7.5V"¦ö¬È ÏÿÙ././@LongLink0000000000000000000000000000020700000000000011564 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/jsf-booking/src/main/webapp/images/powered-by-spring.pnglibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/jsf-booking/src/main/w0000644000000000000000000001467711360615644027677 0ustar ‰PNG  IHDRo3ëÁ» pHYs  šœ OiCCPPhotoshop ICC profilexÚSgTSé=÷ÞôBKˆ€”KoR RB‹€‘&*! Jˆ!¡ÙQÁEEÈ ˆŽŽ€ŒQ, Š Øä!¢Žƒ£ˆŠÊûá{£kÖ¼÷æÍþµ×>ç¬ó³ÏÀ –H3Q5€ ©BàƒÇÄÆáä.@ $p³d!sý#ø~<<+"À¾xÓ ÀM›À0‡ÿêB™\€„Àt‘8K€@zŽB¦@F€˜&S `ËcbãP-`'æÓ€ø™{[”! ‘ eˆDh;¬ÏVŠEX0fKÄ9Ø-0IWfH°·ÀÎ ² 0Qˆ…){`È##x„™FòW<ñ+®ç*x™²<¹$9E[-qWW.(ÎI+6aaš@.Ây™24àóÌ ‘àƒóýxήÎÎ6޶_-ê¿ÿ"bbãþåÏ«p@át~Ñþ,/³€;€mþ¢%îh^  u÷‹f²@µ éÚWópø~<ß5°j>{‘-¨]cöK'XtÀâ÷ò»oÁÔ(€hƒáÏwÿï?ýG %€fI’q^D$.Tʳ?ÇD *°AôÁ,ÀÁÜÁ ü`6„B$ÄÂBB d€r`)¬‚B(†Í°*`/Ô@4ÀQh†“p.ÂU¸=púažÁ(¼ AÈa!ÚˆbŠX#Ž™…ø!ÁH‹$ ɈQ"K‘5H1RŠT UHò=r9‡\Fº‘;È2‚ü†¼G1”²Q=Ô µC¹¨7„F¢ Ðdt1š ›Ðr´=Œ6¡çЫhÚ>CÇ0Àè3Äl0.ÆÃB±8, “c˱"¬ «Æ°V¬»‰õcϱwEÀ 6wB aAHXLXNØH¨ $4Ú 7 „QÂ'"“¨K´&ºùÄb21‡XH,#Ö/{ˆCÄ7$‰C2'¹I±¤TÒÒFÒnR#é,©›4H#“ÉÚdk²9”, +È…ääÃä3ää!ò[ b@q¤øSâ(RÊjJåå4åe˜2AU£šRݨ¡T5ZB­¡¶R¯Q‡¨4uš9̓IK¥­¢•Óhh÷i¯ètºÝ•N—ÐWÒËéGè—èôw †ƒÇˆg(›gw¯˜L¦Ó‹ÇT071ë˜ç™™oUX*¶*|‘Ê •J•&•*/T©ª¦ªÞª UóUËT©^S}®FU3Sã© Ô–«UªPëSSg©;¨‡ªg¨oT?¤~Yý‰YÃLÃOC¤Q ±_ã¼Æ c³x,!k «†u5Ä&±ÍÙ|v*»˜ý»‹=ª©¡9C3J3W³Ró”f?ã˜qøœtN ç(§—ó~ŠÞï)â)¦4L¹1e\kª–—–X«H«Q«Gë½6®í§¦½E»YûAÇJ'\'GgÎçSÙSݧ §M=:õ®.ªk¥¡»Dw¿n§î˜ž¾^€žLo§Þy½çú}/ýTýmú§õG X³ $Û Î<Å5qo</ÇÛñQC]Ã@C¥a•a—á„‘¹Ñ<£ÕFFŒiÆ\ã$ãmÆmÆ£&&!&KMêMîšRM¹¦)¦;L;LÇÍÌÍ¢ÍÖ™5›=1×2ç›ç›×›ß·`ZxZ,¶¨¶¸eI²äZ¦Yî¶¼n…Z9Y¥XUZ]³F­­%Ö»­»§§¹N“N«žÖgðñ¶É¶©·°åØÛ®¶m¶}agbg·Å®Ã“}º}ý= ‡Ù«Z~s´r:V:ޚΜî?}Åô–é/gXÏÏØ3ã¶Ë)ÄiS›ÓGgg¹sƒóˆ‹‰K‚Ë.—>.›ÆÝȽäJtõq]ázÒõ›³›Âí¨Û¯î6îiî‡ÜŸÌ4Ÿ)žY3sÐÃÈCàQåÑ? Ÿ•0k߬~OCOgµç#/c/‘W­×°·¥wª÷aï>ö>rŸã>ã<7Þ2ÞY_Ì7À·È·ËOÃož_…ßC#ÿdÿzÿѧ€%g‰A[ûøz|!¿Ž?:Ûeö²ÙíAŒ ¹AA‚­‚åÁ­!hÈì­!÷ç˜Î‘Îi…P~èÖÐaæa‹Ã~ '…‡…W†?ŽpˆXÑ1—5wÑÜCsßDúD–DÞ›g1O9¯-J5*>ª.j<Ú7º4º?Æ.fYÌÕXXIlK9.*®6nl¾ßüíó‡ââ ã{˜/È]py¡ÎÂô…§©.,:–@LˆN8”ðA*¨Œ%òw%Ž yÂÂg"/Ñ6шØC\*NòH*Mz’쑼5y$Å3¥,幄'©¼L LÝ›:žšv m2=:½1ƒ’‘qBª!M“¶gêgæfvˬe…²þÅn‹·/•Ék³¬Y- ¶B¦èTZ(×*²geWf¿Í‰Ê9–«ž+Íí̳ÊÛ7œïŸÿíÂá’¶¥†KW-X潬j9²‰Š®Û—Ø(Üxå‡oÊ¿™Ü”´©«Ä¹dÏfÒféæÞ-ž[–ª—æ—n ÙÚ´ ßV´íõöEÛ/—Í(Û»ƒ¶C¹£¿<¸¼e§ÉÎÍ;?T¤TôTúT6îÒݵa×ønÑî{¼ö4ìÕÛ[¼÷ý>ɾÛUUMÕfÕeûIû³÷?®‰ªéø–ûm]­NmqíÇÒý#¶×¹ÔÕÒ=TRÖ+ëGǾþïw- 6 UœÆâ#pDyäé÷ ß÷ :ÚvŒ{¬áÓvg/jBšòšF›Sšû[b[ºOÌ>ÑÖêÞzüGÛœ499â?rýéü§CÏdÏ&žþ¢þË®/~øÕë×Îјѡ—ò—“¿m|¥ýêÀë¯ÛÆÂƾÉx31^ôVûíÁwÜwï£ßOä| (ÿhù±õSЧû“““ÿ˜óüc3-ÛgAMA±Ž|ûQ“ cHRMz%€ƒùÿ€éu0ê`:˜o’_ÅFÚIDATxÚìZmpS×™>÷Jºú´%K–Œ±ƒƒ«Cøˆ³SpÊvŠËRJfgmÿ);M\O“lêÝ…@ºÍ°d€L&°;ƒét'P†¬—°;ÃT?ølrêÔ±‹‰±Œl°dY²î•tï=gsQäJŠßš{ÎçsÞç}ßóž )¥`VfHÐ,³h΢ù—þòÆÿ}=8Œ®u•›Ê‹Òÿ ‰Á#»zB—X…å%ž-Z^áx÷þ¬ÿοÞ;óŠÝèÒž«œÏ¯(ÝÞÕ;¾íÕat½YÓ:éL?(ÿiz[&ïøBbP{}³¦Õati¯G:wëÿ„={¬e?xò§k™JN÷~t¼{ÿT „Äà{g_ùqåkUÎÀÁË[l“  XW¹éÙ¢Õ§{?:xyë¯j¦ÿõÛË[¿ª=*ðæÓ½éÜ展{¬eZµœ­A’ÇBR0$Ùs Ú³î©×&N=‚IgÒ1è;xyë³E«Þ÷þ4$˜Šé,œ¸+U€³'ËÙè}ÍY4gå®.Û\0‹Âý ¥BÈi/!¼Ž›7ßéòØg¤7߉ŽÇšéEóòg ÊÇÝnÎuxæåÿ{!ŒÀ3óõz[®©°(oÆ»åÍZ\¦_8—O)ô³¿$èXN·ÝhÒÿm¢ÉspÕ"a¥WQ]vüßçÄ:\¾3§ 0w ßÌ~(ÈðÊ@ÙÃ£ŽæO¾kª^`è Êsr0Bð=V1ó l“âH)¥ì—ÜŠs(@Q!d¯ðFs~!ß;¨XMÈ, ÏÆÇ$òàÆ²çYò2м… !”J %*¥Pr M!Cˆ D!Ñä˜>hößTÌʳr'.I'?—èX¹y–‰PB‰J1å¦"Õ+XÌ:@q$>4 ‹ñ$G“EsˆrˆÐmö?Zhž¼œXþ´aÛ ލt ŽÇ9vs&”*Uê2Í]\´|¡³ÊÈÄÔÐXb0!è1Í5©XL Fâ}#ÑQ)Ééæà™€f…fÃÊæ%å5KËÇSк}]ÿÞcÛfj‘×nÈ­íòCØ6‹Õh22 ¤*\˜ç}~þš›ñNß_þÓi+)°ZõFŒD õœjÐAUy«`v˜ _^ Šc”`0™€ÞÍÝ?;¼ ¨ªµ}OóëYIS]Ë‹Õõ1q´õÔîû]žs´åü@¨¯q窇„Y é'kB(QÀüœùËŸ¨cÎŽ)þÿíºa¶ Oä-X0§Ò¬7$åd s¼Š1æ ¼þ³¯Cqu`BãnêÎh6Õµ,-¯Ùr`c»¿M+Ü{l[L‘åY¶‡iRŒéŠIQ©]ïøŽë)& ‰˜ V»Ñ%Êc#âÍÏú‡ÃRð ¼ŽC€ÃËÂ0™+ ñÞX2 „û|˜šµÞ51)’¥&¡¾û_Þ@¨ï…_>ùÐÐ4u銉*É)0ë9…Œ©„§”9@ÄaŽRzuøŠ™×-ñx1B¨ƒR(!ùKi^Îç!„!„ÞROîÞtçþ9þW½ž¿e1%4WgË7ê ˆ«‚¢É`,å€ ®†ûJíEy‚]ªó”RBˆBTw^Nï‘h*©òaH)„4 ÝŒŠ£nGqS]Ë4>§ae³ÛQl1Úvzc{ã>æ¬bR¤µ}z­wMEQ•ÛQÜÚ¾‡YvÛ–Yù‹Õõš†6ÕµTx¼íþ¶˜8ÚT×âvÚým;½“"é¤Y[]ÏÆê ø[Û÷LJ ‰)8M7)¡¹zF2QãpR2uuøO(ÀqQBI ÇÃNs¾¢(BÇ˪ÊaÙbÐͱšÂC§§”§”RFõ; ùñÙƒMu- +›V6·ûÛ4v3p+<Þ›O°’®€ÿçu-[lŒI‘Zº†ÅŽÃ¯Ÿ|û+‹Ãê,-¯iþ`ýîŸމ£6Ÿ¨ðxY9Û•¦ºmèvÛÞ^jr¶7î«õ®q;Š5OÅjn9°±ùƒõµÞ5oýä7Û÷°Åš·œ$¥‚Ѹj@TjÑqÈ”&0ô„®ô†ºŸ)zÑ&œ»ú;…$à(!*¹´aˆx„1Âa»YP¨ª¢"DÅôÎ9¤ÖS»÷ÛÆ”¢Ö»†ÁÚ°²ùüΡ¦º–®€Ùæ‚Ïd•w~Õl÷·½søuÀÚêz·£ø…_>ÉVèv3mm÷·E¥HãÎUé+o=µ{Ùæ‚ Ý>†/ë6&EXW/Û’ ·©®åB·)c»¿íèÙƒlã—m.˜J€ª’Û‡q <‚bD¯^ëv€DyD’£@Œ ÂT0èf›ŽÇ<‡9Œ/èu"ͤ'*¡ê­<{6Lg‹Ôëv¯­®¯ðx—–×4¬l¾Øí»Ðíc ›á”X¹ÛQ\áñ„ú¢âhzm¢b¶é1Ã@¨/&E,BŽÛQ܈hìÎð‡–,Â9¥`A§1]‚\4ûÓàŸã)QÏm†Â¨LÈq1¦‹£ç£×ýü°'?Bp5V)Y¼°ÃHÏaªŽÛ_éèn]ðÞcÛš?XÏ4ˆñtšÊ­ðLù“ô¡­ÌŒôwܱU2)ßÎQ ¨õë‘þÁé9¡Â¹ÜnuE"Ò•/q™@îh,Ùy5xèäg_ô^?óÅ•K_õ ‰”BÙZÂé³Å»}YÆ’éJ”îFîAXs¶‘Œ].tû² 3bJ˰D™ˆ©±°a¹!fPSrcj´’>¿pó†þaÕ§ÝF]ýÜÓK+ç©D¥DU'oGš0;4·7îcÖjRIGj¢¸Å]ÿŒ„¥éªÝðo9°±+àoªk9¿sèÀæŸ=8½¹ÔDKŒƒ !D0&©*Q!€RQR“J3ï·tIé‚KÝ÷î鿱¾ö™»%•R) 2Q Q‡£"ÄŽg˜²; ±eâqpmu}»¿íÂÔÊgÇ¡7îØ[6§ÏŒ½Ðí[[]ŸqBËFÆb -ã !'d'á­zK,5F(D‰ˆ×ylrÚ JrŠŸùÒßsmA‰ëï—.Ôq\$&ÉD”ÊŠOŇÂI„Ä·„Ù1}Ïˇ4LÖV×ïyùÐ@¨o˧¦·Ö¿«ÕYR^Ó¸s•¦¼ ljjάÛQ¬ý5 UiSr;Š/dam2mETŒ% €„á°8Qž[dó8A&r ÒéÎoCóþãèùãg¾(qç{KÝWúo¼û»O/þ¹! +$!'û#a1†9ˆ9„0„h<ó1þuÂT÷éZt­-’©¤æ”µè¯+àgn—E£éVL‹75óÇbu-ÞÔbØôxÀöÃ"äœ|û+Ͷ4î\õÖúw×V×OÏMè…î¢ÓÓq,ü¼˜ÝY(] ç:æW¸Óï,‰BU…°_–Π@ CÌ!Äÿ"|K+Ó ô˜ Ÿþí•Òr—g^þÝß§ÃIïÓ¿•>}¥ÿ뛘Ã.}ü#(…”R4ù·àÛñ­Ç_Kä”ríÊ!ÄåqŒ§éTŠ0˜úÍ›r €„!D ó+%@B·¿-~l%™”¯t]¿Òuýþ»‚þÿbj·=IEND®B`‚././@LongLink0000000000000000000000000000017400000000000011567 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/jsf-booking/src/main/webapp/images/btn.bg.giflibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/jsf-booking/src/main/w0000644000000000000000000000050511360615632027655 0ustar GIF89a#¥!`š?aš?`›?`›@a›?a›@`œ?aœ?aœ@bœ@a@b@bAbž@bžAcž@cžAbŸ@bŸAcŸ@cŸAdŸAc Ac Bd Ad Be Ad¡Ad¡Be¡Ae¡Bd¢Be¢Ae¢Be¢Be¢Be¢Be¢Be¢Be¢Be¢Be¢Be¢Be¢Be¢Be¢Be¢Be¢Be¢Be¢Be¢Be¢Be¢Be¢Be¢Be¢Be¢Be¢Be¢Be¢Be¢Be¢Be¢Be¢B!þCreated with The GIMP,#QÀp}8HŽg£Ét6˜ æbÁT1Šv«•H(“‰ãq, Gc±`°Ý ¶B@$ê‡:áP0 †ŒŽ‘’“”•–’A;././@LongLink0000000000000000000000000000017100000000000011564 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/jsf-booking/src/main/webapp/images/tse.giflibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/jsf-booking/src/main/w0000644000000000000000000000537611360615636027674 0ustar GIF89aÈç¬HHHIIIJJJKKKLLLMMMNNNOOOPPPQQQRRRSSSTTTUUUVVVWWWXXXYYY[[[]]]^^^```aaabbbcccdddfffggghhhiiijjjkkklllmmmnnnooopppqqqrrrssstttuuuvvvwwwxxxyyyzzz{{{|||}}}~~~‚‚‚ƒƒƒ„„„………‡‡‡ˆˆˆ‰‰‰ŠŠŠ‹‹‹ŒŒŒŽŽŽ‘‘‘’’’“““”””•••–––———˜˜˜™™™ššš›››œœœžžžŸŸŸ   ¡¡¡¢¢¢£££¤¤¤¥¥¥¦¦¦§§§¨¨¨©©©ªªª«««¬¬¬­­­®®®¯¯¯±±±²²²³³³´´´µµµ¶¶¶···¸¸¸¹¹¹ººº»»»¼¼¼½½½¾¾¾¿¿¿ÁÁÁÂÂÂÃÃÃÄÄÄÅÅÅÆÆÆÇÇÇÈÈÈÉÉÉÊÊÊÌÌÌÍÍÍÎÎÎÏÏÏÑÑÑÒÒÒÓÓÓÔÔÔÕÕÕÖÖÖ×××ØØØÙÙÙÚÚÚÛÛÛÜÜÜÝÝÝÞÞÞßßßàààáááâââãããäääåååæææçççèèèéééêêêëëëíííîîîïïïðððñññòòòóóóôôôõõõööö÷÷÷øøøùùùúúúûûûüüüýýýþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ!þCreated with The GIMP!ù ÿ,È@þY Hp`©L„Ü(ìsIÔ*“"J”˜‰+T™&N¤”i”ÀP•$nJui¢©š$Z*5ÐTJ… ]òX°¦Í›8sêÜɳ§OY²ä’åLÁP]$XÊ€€}R5ºTÚT›rjͦ>8iÈj€S Æ2uÄêªl*R¡¡®] _P ¬¤Cƒ‚›tØ(sKŠ•6-¹kWF©SGk8±D‘@6$â°%¹î–Q•@ä½S¢Ì©R2t°BÓÁ2Îxb¨v DQ-zRaj(ôNµi ëR´×`º€Ä×¥aÕÐ`‰•ª?Îþaµjšf›þ²øéAQ†l«$©"U7BtJÑ#ó5O=R¯^’ªGƒÔ$ "‡˜‚&¬¤ÂŸz”2H%ð „žk²_m™DÈ " ÖVÉ ¬Œ±+ ¶ôEK Ã+ ¸”¢L¥… 0uÀÆÀÀ[üPS páXbM…A ¬à 'JÙØ ?2Ń'͵N†¨PDu›ô`Ã!ª¶Ä&‚YŠé@fM¦!BA’0±B!¬`¦Ù(DqSh¨@ˆA© äÆVTb)}¨€&$ÁÉO¬DRãRÐqŠ&05À#ÃÕTœv|Дª ]‘UY’FxÚÉ1•þšt MÅÅŠ•8=ÂB’°’E0*æšñ-¡¦Mm¾I*ÔŸ›å¹§hz±ò<Œ š&B¤ A¤„ÑÁ©Ìà¨Mx°ÂÈ%¬¤KÐ'O @–ìfÅ”H$’£½M”b*Ñ5ÕÁšJ·'MLJ•A0Z%]’ñ ‰!DA¥@ lB16Bu°¢Xg&à™d D±È³™mÖ™.`Ú ‹<$jª ¤‰8€P|°DâËŠ¼`´ÑCdJ..¥@ U,òI„S­ Mýãw|² @jñoÀSAF ÚéÐTÒe’ƙԄ+N’ôÀ þÈ:ŒIÐ$-8‘&±J»YP&Sœ ´xêiSh_tñÁ7êG _ÔÔ »>z“ˆ8bÉY°°SHb/ \qɧK0«¬!ÐØ¨p Y¡BSt´õÖT¶Î}Ó&O˜°Ä]TwØvˆ%©ˆl,áA¦ì)‚¤À…ŒKû8µ¬r™* îÞdn'6•hS)^œžUQÄØq9"‡@Úž°ÜQ'vh’ÁXñ¬n)¨ÄÃ~˜Àyö¦ŠCÌ€–MÓÂTð „Ð^AÂE‚9 "|9¨ L.¹j±CØ@Î8á„ü€0þWpA ê —ÄÀ„ÄN2†ø& ‘€Ïê<Ð…×í«)è€È„;é)³ N¤<¾¡‚%4Ä ôth¤Ä 8‡BJü)Ä$ô¢Ÿ‚ÿY!6¡%¨C(ƒq’tB!0¤!uH üâ¦@¢r¤òÀ  áŠT‘Àº(#ˆ9 | Ú`ùPP†{)„ ‚<À'zHÁ@˜ÁÀÄ /HAb–PBÊ¡mò€ ‹@‚' †2tƒ@x&¬À™@8!…üÐ `p ü#"&Èäˆ6IŠ*hÊ þ ÃpHS!E&‚µþí¡8´QXÙ”ü ¯üƒ«šÂ‡Mh" €†à¹[©àJ7Å<€S¡kЋ÷¸ÁÙD…IE@à‡:µ¬qÓÂÁ ØÎ@]â0øÖ@BQÅ5 ~5áˆLQåAK¦r+ô&v8rÒ0Ð ‚¡SÁ´ó;¦ïЃZ× Î¹ aAH*æp¸ÀY)+BQ i 2ˆžzÀð' !XBܸ¦r‘ÀA%Î7ˆ@9™ ðÀŸGT t6álà@ªè 4€J¦DÀ Ÿ`þXÊ© E:`K'‰7Ál¾g ƒˆlÐ+tì.%¬×Ì Þ!ÑTHp°-8̦wÚ@ eˆTÔC°"Äɼ¾æˆ2„)ŒFì” ™ØÁR€xbipSàˆ©ÀD’°ì06” ««a¿´­Mdupƒjõ0Ú$w 2¸}Þq¯÷RÃÉ5 Z¤IøW“î• *ðƒå0W“F­\@@jA–ZM°`¿"8Ãì×Ktª F š²K(Øš[WÿÀ¤¦à4˜@Ór[ᛜb ' +@!…Ì B¯€!1É›L JSF and Spring Hotel Booking Sample Application
././@LongLink0000000000000000000000000000021500000000000011563 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/jsf-booking/src/main/webapp/WEB-INF/web-application-config.xmllibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/jsf-booking/src/main/w0000644000000000000000000000375011360615640027661 0ustar ././@LongLink0000000000000000000000000000020300000000000011560 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/jsf-booking/src/main/webapp/WEB-INF/faces-config.xmllibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/jsf-booking/src/main/w0000644000000000000000000000716511360615632027666 0ustar org.springframework.web.jsf.SpringBeanVariableResolver com.sun.facelets.FaceletViewHandler searchController org.springframework.webflow.samples.booking.jsf.SearchController request bookingService #{bookingService} hotelController org.springframework.webflow.samples.booking.jsf.HotelController request bookingService #{bookingService} hotelId #{param.id} bookingController org.springframework.webflow.samples.booking.jsf.BookingController request bookingService #{bookingService} hotelId #{hotelController.hotelId} booking #{booking} /main/enterSearchCriteria.xhtml reviewHotels /main/reviewHotels.xhtml /main/reviewHotels.xhtml changeSearch /main/enterSearchCriteria.xhtml select /main/reviewHotel.xhtml /main/reviewHotel.xhtml book /booking/enterBookingDetails.xhtml /booking/enterBookingDetails.xhtml reviewBooking /booking/reviewBooking.xhtml /booking/reviewBooking.xhtml revise /booking/enterBookingDetails.xhtml confirm /main/enterSearchCriteria.xhtml cancel /main/enterSearchCriteria.xhtml org.springframework.faces.support.RequestLoggingPhaseListener ././@LongLink0000000000000000000000000000017200000000000011565 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/jsf-booking/src/main/webapp/WEB-INF/web.xmllibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/jsf-booking/src/main/w0000644000000000000000000000321211360615636027657 0ustar contextConfigLocation /WEB-INF/web-application-config.xml javax.faces.DEFAULT_SUFFIX .xhtml facelets.DEVELOPMENT true facelets.REFRESH_PERIOD 1 org.springframework.web.context.ContextLoaderListener Faces Servlet javax.faces.webapp.FacesServlet 1 Faces Servlet *.faces index.html ././@LongLink0000000000000000000000000000017300000000000011566 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/jsf-booking/src/main/webapp/WEB-INF/classes/libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/jsf-booking/src/main/w0000755000000000000000000000000011360615634027655 5ustar ././@LongLink0000000000000000000000000000021300000000000011561 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/jsf-booking/src/main/webapp/WEB-INF/classes/log4j.propertieslibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/jsf-booking/src/main/w0000644000000000000000000000066711360615634027670 0ustar log4j.rootCategory=INFO, stdout log4j.appender.stdout=org.apache.log4j.ConsoleAppender log4j.appender.stdout.layout=org.apache.log4j.PatternLayout log4j.appender.stdout.layout.ConversionPattern=%d %p [%c] - <%m>%n # Enable web flow logging log4j.category.org.springframework.webflow=DEBUG log4j.category.org.springframework.faces=DEBUG log4j.category.org.springframework.binding=DEBUG log4j.category.org.springframework.transaction=DEBUG././@LongLink0000000000000000000000000000016300000000000011565 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/jsf-booking/src/main/webapp/booking/libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/jsf-booking/src/main/w0000755000000000000000000000000011360615636027657 5ustar ././@LongLink0000000000000000000000000000020600000000000011563 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/jsf-booking/src/main/webapp/booking/reviewBooking.xhtmllibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/jsf-booking/src/main/w0000644000000000000000000000462211360615632027661 0ustar

Confirm Hotel Booking

Name:
#{booking.hotel.name}
Address:
#{booking.hotel.address}
City, State:
#{booking.hotel.city}, #{booking.hotel.state}
Zip:
#{booking.hotel.zip}
Country:
#{booking.hotel.country}
Total payment:
Check In Date:
Check Out Date:
Credit Card #:
#{booking.creditCard}
   
././@LongLink0000000000000000000000000000021400000000000011562 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/jsf-booking/src/main/webapp/booking/enterBookingDetails.xhtmllibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/jsf-booking/src/main/w0000644000000000000000000001140611360615636027663 0ustar

Book Hotel

Name:
#{bookingController.booking.hotel.name}
Address:
#{bookingController.booking.hotel.address}
City, State:
#{bookingController.booking.hotel.city}, #{bookingController.booking.hotel.state}
Zip:
#{bookingController.booking.hotel.zip}
Country:
#{bookingController.booking.hotel.country}
Nightly rate:
Check In Date:
Check Out Date:
Room Preference:
Smoking Preference:
Credit Card #:
Credit Card Name:
Expiration Date:
 
././@LongLink0000000000000000000000000000016200000000000011564 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/jsf-booking/src/main/webapp/styles/libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/jsf-booking/src/main/w0000755000000000000000000000000011360615632027653 5ustar ././@LongLink0000000000000000000000000000017500000000000011570 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/jsf-booking/src/main/webapp/styles/booking.csslibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/jsf-booking/src/main/w0000644000000000000000000000613011360615632027655 0ustar a, a:visited, a:link, a:active { color: #59924B; background-color: transparent; text-decoration: none; font-weight: bold; } a:hover { color: white; background-color: #65a242; text-decoration: none; font-weight: bold; } body.spring { background-color: #9cac7c; } #header.spring { margin: 0 0 1em 0; padding: 0px 0px; background-color : #414f23; } #branding.spring { float: none; width: 100%; margin: 10px 0 0 0; padding: 0 0 0 0; text-align: none; } #welcome { padding: 10px 10px; } #welcome div.left { float: left; } #welcome div.right { float: right; } #content.spring form div, #content.spring form p { padding: 0px; margin: 0 0 .5em 0; } #content.spring { width: 740px; background: #fff url(../images/bg.gif) 0 0 repeat; margin-bottom: 0px; } #content .section { width: 505px; float: left; margin-bottom: 5px; } #content.spring input[type="submit"], input[type="button"], button { font-weight: bold; color: #fff; height: 20px; background: #fff url(../images/btn.bg.gif) 0 0 repeat-x; border-style: none; vertical-align: middle; } #content.spring button { font-size: 1em; font-family: arial,helvetica,verdana,sans-serif; margin-top: 0pt; margin-right: 0pt; margin-bottom: 0pt; margin-left: 0pt; padding-top: 2px; padding-right: 2px; padding-bottom: 2px; padding-left: 2px; } #content.spring button { vertical-align: middle; } .errors { font-weight: bold; text-align: left; color: #600; } .errors ul { list-style: none; } #content .field { float:left; } #content .field .label { float: left; padding-top: 5px; padding-right: 5px; font-weight: bold; width: 150px; text-align: right; } #content .field .output { float: left; width: 250px; padding-top: 5px; text-align: left; } #content .field .input { float: left; width: 250px; text-align: left; } #content .searchGroup { width: 35%; } #content .buttonGroup { clear: both; text-align: right; } #content .buttonGroup input[type="submit"], .buttonGroup input[type="button"] { margin-right: 5px; } #content .previous { float: right; } #content .next { float: right; } #content .next a { margin-left: 20px; } #content .summary { width: 100%; border: 1px solid #414f23; border-collapse: collapse; } #content .summary thead th { border-left: 1px solid #414f23; background: #fff url(../images/th.bg.gif) 0 100% repeat-x; border-bottom: 1px solid #414f23; padding: 6px; text-align: left; font-size: small; } #content .summary tbody td { border-left: 1px solid #9cac7c; padding: 4px; border-bottom: 1px solid #9cac7c; font-size: 8pt; } #local.spring{ width: 215px; } #footer.spring { padding: 25px 0; background-color : white; border-top: 1px solid #C3BBB6; } #footer.spring img { float: right; padding-right: 20px; }././@LongLink0000000000000000000000000000016600000000000011570 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/jsf-booking/src/main/webapp/intro.xhtmllibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/jsf-booking/src/main/w0000644000000000000000000000353411360615636027666 0ustar

Welcome to Spring Travel

This reference application illustrates Spring Faces, a software library that integrates Spring and JavaServerFaces technology to power rich web applications.

The key features illustrated in this sample include:

  • A declarative navigation model enabling full browser button support and dynamic navigation rules
  • A fine-grained state management model, including support for ConversationScope and ViewScope
  • Modularization of web application functionality by domain use case, illustrating project structure best-practices
  • Managed persistence contexts with the Java Persistence API (JPA)
  • Unified Expression Language (EL) integration
  • Spring Security integration
  • Declarative page authoring with Facelets, including applying reusable page layouts
  • A lightweight component library for Ajax and client-side validation that employs progressive enhancement techniques
  • Exception handling support across all layers of the application
  • Spring IDE tooling integration, with support for graphical flow modeling and visualization

Start your Spring Travel experience

././@LongLink0000000000000000000000000000016400000000000011566 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/jsf-booking/src/main/webapp/META-INF/libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/jsf-booking/src/main/w0000755000000000000000000000000011360615644027656 5ustar ././@LongLink0000000000000000000000000000017700000000000011572 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/jsf-booking/src/main/webapp/META-INF/MANIFEST.MFlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/jsf-booking/src/main/w0000644000000000000000000000003111360615644027652 0ustar Manifest-Version: 1.0 ././@LongLink0000000000000000000000000000015600000000000011567 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/jsf-booking/src/main/resources/libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/jsf-booking/src/main/r0000755000000000000000000000000011360615640027645 5ustar ././@LongLink0000000000000000000000000000017000000000000011563 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/jsf-booking/src/main/resources/import.sqllibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/jsf-booking/src/main/r0000644000000000000000000001006411360615640027650 0ustar insert into Customer (username, name) values ('keith', 'Keith') insert into Customer (username, name) values ('erwin', 'Erwin') insert into Customer (username, name) values ('jeremy', 'Jeremy') insert into Customer (username, name) values ('scott', 'Scott') insert into Hotel (id, price, name, address, city, state, zip, country) values (1, 199, 'Westin Diplomat', '3555 S. Ocean Drive', 'Hollywood', 'FL', '33019', 'USA') insert into Hotel (id, price, name, address, city, state, zip, country) values (2, 60, 'Jameson Inn', '890 Palm Bay Rd NE', 'Palm Bay', 'FL', '32905', 'USA') insert into Hotel (id, price, name, address, city, state, zip, country) values (3, 199, 'Chilworth Manor', 'The Cottage, Southampton Business Park', 'Southampton', 'Hants', 'SO16 7JF', 'UK') insert into Hotel (id, price, name, address, city, state, zip, country) values (4, 120, 'Marriott Courtyard', 'Tower Place, Buckhead', 'Atlanta', 'GA', '30305', 'USA') insert into Hotel (id, price, name, address, city, state, zip, country) values (5, 180, 'Doubletree', 'Tower Place, Buckhead', 'Atlanta', 'GA', '30305', 'USA') insert into Hotel (id, price, name, address, city, state, zip, country) values (6, 450, 'W Hotel', 'Union Square, Manhattan', 'NY', 'NY', '10011', 'USA') insert into Hotel (id, price, name, address, city, state, zip, country) values (7, 450, 'W Hotel', 'Lexington Ave, Manhattan', 'NY', 'NY', '10011', 'USA') insert into Hotel (id, price, name, address, city, state, zip, country) values (8, 250, 'Hotel Rouge', '1315 16th Street NW', 'Washington', 'DC', '20036', 'USA') insert into Hotel (id, price, name, address, city, state, zip, country) values (9, 300, '70 Park Avenue Hotel', '70 Park Avenue', 'NY', 'NY', '10011', 'USA') insert into Hotel (id, price, name, address, city, state, zip, country) values (10, 300, 'Conrad Miami', '1395 Brickell Ave', 'Miami', 'FL', '33131', 'USA') insert into Hotel (id, price, name, address, city, state, zip, country) values (11, 80, 'Sea Horse Inn', '2106 N Clairemont Ave', 'Eau Claire', 'WI', '54703', 'USA') insert into Hotel (id, price, name, address, city, state, zip, country) values (12, 90, 'Super 8 Eau Claire Campus Area', '1151 W Macarthur Ave', 'Eau Claire', 'WI', '54701', 'USA') insert into Hotel (id, price, name, address, city, state, zip, country) values (13, 160, 'Marriot Downtown', '55 Fourth Street', 'San Francisco', 'CA', '94103', 'USA') insert into Hotel (id, price, name, address, city, state, zip, country) values (14, 200, 'Hilton Diagonal Mar', 'Passeig del Taulat 262-264', 'Barcelona', 'Catalunya', '08019', 'Spain') insert into Hotel (id, price, name, address, city, state, zip, country) values (15, 210, 'Hilton Tel Aviv', 'Independence Park', 'Tel Aviv', '', '63405', 'Israel') insert into Hotel (id, price, name, address, city, state, zip, country) values (16, 240, 'InterContinental Tokyo Bay', 'Takeshiba Pier', 'Tokyo', '', '105', 'Japan') insert into Hotel (id, price, name, address, city, state, zip, country) values (17, 130, 'Hotel Beaulac', ' Esplanade Léopold-Robert 2', 'Neuchatel', '', '2000', 'Switzerland') insert into Hotel (id, price, name, address, city, state, zip, country) values (18, 140, 'Conrad Treasury Place', 'William & George Streets', 'Brisbane', 'QLD', '4001', 'Australia') insert into Hotel (id, price, name, address, city, state, zip, country) values (19, 230, 'Ritz Carlton', '1228 Sherbrooke St', 'West Montreal', 'Quebec', 'H3G1H6', 'Canada') insert into Hotel (id, price, name, address, city, state, zip, country) values (20, 460, 'Ritz Carlton', 'Peachtree Rd, Buckhead', 'Atlanta', 'GA', '30326', 'USA') insert into Hotel (id, price, name, address, city, state, zip, country) values (21, 220, 'Swissotel', '68 Market Street', 'Sydney', 'NSW', '2000', 'Australia') insert into Hotel (id, price, name, address, city, state, zip, country) values (22, 250, 'Meliá White House', 'Albany Street', 'Regents Park London', '', 'NW13UP', 'Great Britain') insert into Hotel (id, price, name, address, city, state, zip, country) values (23, 210, 'Hotel Allegro', '171 West Randolph Street', 'Chicago', 'IL', '60601', 'USA')././@LongLink0000000000000000000000000000016700000000000011571 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/jsf-booking/src/main/resources/META-INF/libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/jsf-booking/src/main/r0000755000000000000000000000000011360615636027652 5ustar ././@LongLink0000000000000000000000000000020600000000000011563 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/jsf-booking/src/main/resources/META-INF/persistence.xmllibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/jsf-booking/src/main/r0000644000000000000000000000204611360615636027656 0ustar org.hibernate.ejb.HibernatePersistence org.springframework.webflow.samples.booking.User org.springframework.webflow.samples.booking.Booking org.springframework.webflow.samples.booking.Hotel ././@LongLink0000000000000000000000000000016700000000000011571 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/jsf-booking/src/main/resources/log4j.xmllibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/jsf-booking/src/main/r0000644000000000000000000000214411360615634027653 0ustar ././@LongLink0000000000000000000000000000015100000000000011562 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/jsf-booking/src/main/java/libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/jsf-booking/src/main/j0000755000000000000000000000000011360615632027636 5ustar ././@LongLink0000000000000000000000000000015500000000000011566 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/jsf-booking/src/main/java/org/libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/jsf-booking/src/main/j0000755000000000000000000000000011360615632027636 5ustar ././@LongLink0000000000000000000000000000017500000000000011570 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/jsf-booking/src/main/java/org/springframework/libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/jsf-booking/src/main/j0000755000000000000000000000000011360615632027636 5ustar ././@LongLink0000000000000000000000000000020300000000000011560 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/jsf-booking/src/main/java/org/springframework/faces/libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/jsf-booking/src/main/j0000755000000000000000000000000011360615632027636 5ustar ././@LongLink0000000000000000000000000000021300000000000011561 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/jsf-booking/src/main/java/org/springframework/faces/support/libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/jsf-booking/src/main/j0000755000000000000000000000000011360615632027636 5ustar ././@LongLink0000000000000000000000000000025300000000000011565 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/jsf-booking/src/main/java/org/springframework/faces/support/RequestLoggingPhaseListener.javalibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/jsf-booking/src/main/j0000644000000000000000000000307111360615632027641 0ustar /* * Copyright 2004-2008 the original authorimport javax.faces.event.PhaseEvent; import javax.faces.event.PhaseId; import javax.faces.event.PhaseListener; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.springframework.faces.support; import javax.faces.event.PhaseEvent; import javax.faces.event.PhaseId; import javax.faces.event.PhaseListener; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; /** * {@link PhaseListener} that logs the execution of the individual phases of the JSF lifecycle. Useful during JSF * application development in order to detect unreported JSF errors that cause the lifecycle to short-circuit. Turn * logging level to DEBUG to see its output. * * @author Jeremy Grelle */ public class RequestLoggingPhaseListener implements PhaseListener { private Log logger = LogFactory.getLog(RequestLoggingPhaseListener.class); public void afterPhase(PhaseEvent event) { // no-op } public void beforePhase(PhaseEvent event) { if (logger.isDebugEnabled()) { logger.debug("Entering JSF Phase: " + event.getPhaseId()); } } public PhaseId getPhaseId() { return PhaseId.ANY_PHASE; } } ././@LongLink0000000000000000000000000000020500000000000011562 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/jsf-booking/src/main/java/org/springframework/webflow/libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/jsf-booking/src/main/j0000755000000000000000000000000011360615632027636 5ustar ././@LongLink0000000000000000000000000000021500000000000011563 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/jsf-booking/src/main/java/org/springframework/webflow/samples/libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/jsf-booking/src/main/j0000755000000000000000000000000011360615632027636 5ustar ././@LongLink0000000000000000000000000000022500000000000011564 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/jsf-booking/src/main/java/org/springframework/webflow/samples/booking/libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/jsf-booking/src/main/j0000755000000000000000000000000011360615644027641 5ustar ././@LongLink0000000000000000000000000000023100000000000011561 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/jsf-booking/src/main/java/org/springframework/webflow/samples/booking/jsf/libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/jsf-booking/src/main/j0000755000000000000000000000000011360615642027637 5ustar ././@LongLink0000000000000000000000000000025700000000000011571 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/jsf-booking/src/main/java/org/springframework/webflow/samples/booking/jsf/BookingController.javalibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/jsf-booking/src/main/j0000644000000000000000000000504711360615636027652 0ustar package org.springframework.webflow.samples.booking.jsf; import java.util.Calendar; import javax.faces.application.FacesMessage; import javax.faces.context.FacesContext; import org.springframework.webflow.samples.booking.Booking; import org.springframework.webflow.samples.booking.BookingService; import org.springframework.webflow.samples.booking.Hotel; public class BookingController { private BookingService bookingService; private Long hotelId; private Hotel hotel = new Hotel(); private Booking booking; private boolean initialized = false; public void setBookingService(BookingService bookingService) { this.bookingService = bookingService; } public Long getHotelId() { return hotelId; } public void setHotelId(Long hotelId) { if (hotelId != null && hotelId != 0 && !initialized) { // put booking in session booking = bookingService.createBooking(hotelId, getCurrentUser()); FacesContext.getCurrentInstance().getExternalContext().getSessionMap().put("booking", booking); initialized = true; } this.hotelId = hotelId; } public Booking getBooking() { return booking; } public void setBooking(Booking booking) { this.booking = booking; } public Hotel getHotel() { return hotel; } public void setHotel(Hotel hotel) { this.hotel = hotel; } public String processBooking() { FacesContext context = FacesContext.getCurrentInstance(); Calendar calendar = Calendar.getInstance(); calendar.add(Calendar.DAY_OF_MONTH, -1); boolean valid = true; if (booking.getCheckinDate().before(calendar.getTime())) { context.addMessage(null, new FacesMessage(FacesMessage.SEVERITY_ERROR, "Check in date must be a future date.", "Check in date must be a future date.")); valid = false; } else if (!booking.getCheckinDate().before(booking.getCheckoutDate())) { context.addMessage(null, new FacesMessage(FacesMessage.SEVERITY_ERROR, "Check out date must be later than check in date", "Check out date must be later than check in date")); valid = false; } if (valid) { return "reviewBooking"; } else { return null; } } public String confirm() { bookingService.saveBooking(booking); removeBookingFromSession(); return "confirm"; } public String cancel() { removeBookingFromSession(); return "cancel"; } private String getCurrentUser() { return "jeremy"; } private void removeBookingFromSession() { FacesContext.getCurrentInstance().getExternalContext().getSessionMap().remove("booking"); } } ././@LongLink0000000000000000000000000000025500000000000011567 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/jsf-booking/src/main/java/org/springframework/webflow/samples/booking/jsf/HotelController.javalibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/jsf-booking/src/main/j0000644000000000000000000000130211360615642027635 0ustar package org.springframework.webflow.samples.booking.jsf; import org.springframework.webflow.samples.booking.BookingService; import org.springframework.webflow.samples.booking.Hotel; public class HotelController { private BookingService bookingService; private Long hotelId; private Hotel hotel; public void setBookingService(BookingService bookingService) { this.bookingService = bookingService; } public void setHotelId(Long hotelId) { this.hotelId = hotelId; } public Hotel getHotel() { if (hotel == null && hotelId != null) { hotel = bookingService.findHotelById(hotelId); } return hotel; } public Long getHotelId() { return hotelId; } } ././@LongLink0000000000000000000000000000025600000000000011570 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/jsf-booking/src/main/java/org/springframework/webflow/samples/booking/jsf/SearchController.javalibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/jsf-booking/src/main/j0000644000000000000000000000365511360615642027652 0ustar package org.springframework.webflow.samples.booking.jsf; import java.util.List; import javax.faces.event.ActionEvent; import javax.faces.model.DataModel; import javax.faces.model.ListDataModel; import org.springframework.webflow.samples.booking.Booking; import org.springframework.webflow.samples.booking.BookingService; import org.springframework.webflow.samples.booking.SearchCriteria; public class SearchController { private SearchCriteria searchCriteria; private DataModel bookings; private DataModel hotels; private BookingService bookingService; public void setBookingService(BookingService bookingService) { this.bookingService = bookingService; } public SearchCriteria getSearchCriteria() { if (searchCriteria == null) { searchCriteria = new SearchCriteria(); } return searchCriteria; } public DataModel getBookings() { if (bookings == null) { // load the current user's bookings from the database bookings = new ListDataModel(bookingService.findBookings(getCurrentUser())); } return bookings; } public DataModel getHotels() { return hotels; } // from enterSearchCriteria.xhtml public String search() { searchCriteria.resetPage(); executeSearch(); return "reviewHotels"; } public void cancelBookingListener(ActionEvent event) { Booking booking = (Booking) bookings.getRowData(); bookingService.cancelBooking(booking); ((List) bookings.getWrappedData()).remove(booking); } // from reviewHotels.xhtml public void nextListener(ActionEvent event) { searchCriteria.nextPage(); executeSearch(); } public void prevListener(ActionEvent event) { searchCriteria.previousPage(); executeSearch(); } // internal helpers private void executeSearch() { hotels = new ListDataModel(); hotels.setWrappedData(bookingService.findHotels(searchCriteria)); } private String getCurrentUser() { return "jeremy"; } } ././@LongLink0000000000000000000000000000024100000000000011562 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/jsf-booking/src/main/java/org/springframework/webflow/samples/booking/Booking.javalibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/jsf-booking/src/main/j0000644000000000000000000000747611360615632027656 0ustar package org.springframework.webflow.samples.booking; import java.io.Serializable; import java.math.BigDecimal; import java.text.DateFormat; import java.util.Calendar; import java.util.Date; import javax.persistence.Basic; import javax.persistence.Entity; import javax.persistence.GeneratedValue; import javax.persistence.GenerationType; import javax.persistence.Id; import javax.persistence.ManyToOne; import javax.persistence.Temporal; import javax.persistence.TemporalType; import javax.persistence.Transient; /** * A Hotel Booking made by a User. */ @Entity public class Booking implements Serializable { private static final long serialVersionUID = 1171567558348174963L; private Long id; private User user; private Hotel hotel; private Date checkinDate; private Date checkoutDate; private String creditCard; private String creditCardName; private int creditCardExpiryMonth; private int creditCardExpiryYear; private boolean smoking; private int beds; public Booking() { } public Booking(Hotel hotel, User user) { this.hotel = hotel; this.user = user; Calendar calendar = Calendar.getInstance(); setCheckinDate(calendar.getTime()); calendar.add(Calendar.DAY_OF_MONTH, 1); setCheckoutDate(calendar.getTime()); } @Transient public BigDecimal getTotal() { return hotel.getPrice().multiply(new BigDecimal(getNights())); } @Transient public int getNights() { return (int) (checkoutDate.getTime() - checkinDate.getTime()) / 1000 / 60 / 60 / 24; } @Id @GeneratedValue(strategy = GenerationType.TABLE) public Long getId() { return id; } public void setId(Long id) { this.id = id; } @Basic @Temporal(TemporalType.DATE) public Date getCheckinDate() { return checkinDate; } public void setCheckinDate(Date datetime) { this.checkinDate = datetime; } @ManyToOne public Hotel getHotel() { return hotel; } public void setHotel(Hotel hotel) { this.hotel = hotel; } @ManyToOne public User getUser() { return user; } public void setUser(User user) { this.user = user; } @Basic @Temporal(TemporalType.DATE) public Date getCheckoutDate() { return checkoutDate; } public void setCheckoutDate(Date checkoutDate) { this.checkoutDate = checkoutDate; } public String getCreditCard() { return creditCard; } public void setCreditCard(String creditCard) { this.creditCard = creditCard; } @Transient public String getDescription() { DateFormat df = DateFormat.getDateInstance(DateFormat.MEDIUM); return hotel == null ? null : hotel.getName() + ", " + df.format(getCheckinDate()) + " to " + df.format(getCheckoutDate()); } public boolean isSmoking() { return smoking; } public void setSmoking(boolean smoking) { this.smoking = smoking; } public int getBeds() { return beds; } public void setBeds(int beds) { this.beds = beds; } public String getCreditCardName() { return creditCardName; } public void setCreditCardName(String creditCardName) { this.creditCardName = creditCardName; } public int getCreditCardExpiryMonth() { return creditCardExpiryMonth; } public void setCreditCardExpiryMonth(int creditCardExpiryMonth) { this.creditCardExpiryMonth = creditCardExpiryMonth; } public int getCreditCardExpiryYear() { return creditCardExpiryYear; } public void setCreditCardExpiryYear(int creditCardExpiryYear) { this.creditCardExpiryYear = creditCardExpiryYear; } @Override public String toString() { return "Booking(" + user + "," + hotel + ")"; } } ././@LongLink0000000000000000000000000000023600000000000011566 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/jsf-booking/src/main/java/org/springframework/webflow/samples/booking/User.javalibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/jsf-booking/src/main/j0000644000000000000000000000223511360615640027641 0ustar package org.springframework.webflow.samples.booking; import java.io.Serializable; import javax.persistence.Entity; import javax.persistence.Id; import javax.persistence.Table; /** * A user who can book hotels. */ @Entity @Table(name = "Customer") public class User implements Serializable { private static final long serialVersionUID = -3652559447682574722L; private String username; private String password; private String name; public User() { } public User(String username, String password, String name) { this.username = username; this.password = password; this.name = name; } @Id public String getUsername() { return username; } public void setUsername(String username) { this.username = username; } public String getPassword() { return password; } public void setPassword(String password) { this.password = password; } public String getName() { return name; } public void setName(String name) { this.name = name; } @Override public String toString() { return "User(" + username + ")"; } } ././@LongLink0000000000000000000000000000025300000000000011565 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/jsf-booking/src/main/java/org/springframework/webflow/samples/booking/JpaBookingService.javalibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/jsf-booking/src/main/j0000644000000000000000000000546511360615644027655 0ustar package org.springframework.webflow.samples.booking; import java.util.List; import javax.persistence.EntityManager; import javax.persistence.PersistenceContext; import org.springframework.stereotype.Repository; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import org.springframework.util.StringUtils; /** * A JPA-based implementation of the Booking Service. Delegates to a JPA entity manager to issue data access calls * against the backing repository. The EntityManager reference is provided by the managing container (Spring) * automatically. */ @Service("bookingService") @Repository public class JpaBookingService implements BookingService { private EntityManager em; @PersistenceContext public void setEntityManager(EntityManager em) { this.em = em; } @Transactional(readOnly = true) @SuppressWarnings("unchecked") public List findBookings(String username) { if (username != null) { return em.createQuery("select b from Booking b where b.user.username = :username order by b.checkinDate") .setParameter("username", username).getResultList(); } else { return null; } } @Transactional(readOnly = true) @SuppressWarnings("unchecked") public List findHotels(SearchCriteria criteria) { String pattern = getSearchPattern(criteria); return em.createQuery( "select h from Hotel h where lower(h.name) like " + pattern + " or lower(h.city) like " + pattern + " or lower(h.zip) like " + pattern + " or lower(h.address) like " + pattern).setMaxResults( criteria.getPageSize()).setFirstResult(criteria.getPage() * criteria.getPageSize()).getResultList(); } @Transactional(readOnly = true) public Hotel findHotelById(Long id) { return em.find(Hotel.class, id); } @Transactional(readOnly = true) public Booking createBooking(Long hotelId, String username) { Hotel hotel = em.find(Hotel.class, hotelId); User user = findUser(username); return new Booking(hotel, user); } // read-write transactional methods @Transactional public void cancelBooking(Booking booking) { booking = em.find(Booking.class, booking.getId()); if (booking != null) { em.remove(booking); } } // read-write transactional methods @Transactional public void saveBooking(Booking booking) { em.persist(booking); } // helpers private String getSearchPattern(SearchCriteria criteria) { if (StringUtils.hasText(criteria.getSearchString())) { return "'%" + criteria.getSearchString().toLowerCase().replace('*', '%') + "%'"; } else { return "'%'"; } } private User findUser(String username) { return (User) em.createQuery("select u from User u where u.username = :username").setParameter("username", username).getSingleResult(); } }././@LongLink0000000000000000000000000000023700000000000011567 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/jsf-booking/src/main/java/org/springframework/webflow/samples/booking/Hotel.javalibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/jsf-booking/src/main/j0000644000000000000000000000352511360615632027645 0ustar package org.springframework.webflow.samples.booking; import java.io.Serializable; import java.math.BigDecimal; import javax.persistence.Column; import javax.persistence.Entity; import javax.persistence.GeneratedValue; import javax.persistence.Id; /** * A hotel where users may book stays. */ @Entity public class Hotel implements Serializable { private static final long serialVersionUID = 4011346719502656269L; private Long id; private String name; private String address; private String city; private String state; private String zip; private String country; private BigDecimal price; @Id @GeneratedValue public Long getId() { return id; } public void setId(Long id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } public String getAddress() { return address; } public void setAddress(String address) { this.address = address; } public String getCity() { return city; } public void setCity(String city) { this.city = city; } public String getZip() { return zip; } public void setZip(String zip) { this.zip = zip; } public String getState() { return state; } public void setState(String state) { this.state = state; } public String getCountry() { return country; } public void setCountry(String country) { this.country = country; } @Column(precision = 6, scale = 2) public BigDecimal getPrice() { return price; } public void setPrice(BigDecimal price) { this.price = price; } public Booking createBooking(User user) { return new Booking(this, user); } @Override public String toString() { return "Hotel(" + name + "," + address + "," + city + "," + zip + ")"; } } ././@LongLink0000000000000000000000000000025000000000000011562 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/jsf-booking/src/main/java/org/springframework/webflow/samples/booking/BookingService.javalibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/jsf-booking/src/main/j0000644000000000000000000000254611360615636027653 0ustar package org.springframework.webflow.samples.booking; import java.util.List; /** * A service interface for retrieving hotels and bookings from a backing repository. Also supports the ability to cancel * a booking. */ public interface BookingService { /** * Find bookings made by the given user * @param username the user's name * @return their bookings */ public List findBookings(String username); /** * Find hotels available for booking by some criteria. * @param criteria the search criteria * @return a list of hotels meeting the criteria */ public List findHotels(SearchCriteria criteria); /** * Find hotels by their identifier. * @param id the hotel id * @return the hotel */ public Hotel findHotelById(Long id); /** * Create a new, transient hotel booking instance for the given user. * @param hotelId the hotelId * @param userName the user name * @return the new transient booking instance */ public Booking createBooking(Long hotelId, String userName); /** * Cancel an existing booking. * @param booking the booking to cancel */ public void cancelBooking(Booking booking); /** * Save a new booking. * @param booking the booking to save */ public void saveBooking(Booking booking); } ././@LongLink0000000000000000000000000000025000000000000011562 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/jsf-booking/src/main/java/org/springframework/webflow/samples/booking/SearchCriteria.javalibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/jsf-booking/src/main/j0000644000000000000000000000236711360615640027647 0ustar package org.springframework.webflow.samples.booking; import java.io.Serializable; /** * A backing bean for the main hotel search form. Encapsulates the criteria needed to perform a hotel search. */ public class SearchCriteria implements Serializable { private static final long serialVersionUID = 1L; /** * The user-provided search criteria for finding Hotels. */ private String searchString = ""; /** * The maximum page size of the Hotel result list */ private int pageSize = 5; /** * The current page of the Hotel result list. */ private int page; public String getSearchString() { return searchString; } public void setSearchString(String searchString) { this.searchString = searchString; } public int getPageSize() { return pageSize; } public void setPageSize(int pageSize) { this.pageSize = pageSize; } public int getPage() { return page; } public void setPage(int page) { this.page = page; } public void nextPage() { page++; } public void previousPage() { page--; } public void resetPage() { page = 0; } public String toString() { return "[Search Criteria searchString = '" + searchString + "'"; } }././@LongLink0000000000000000000000000000024700000000000011570 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/jsf-booking/src/main/java/org/springframework/webflow/samples/booking/ReferenceData.javalibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/jsf-booking/src/main/j0000644000000000000000000000576111360615636027655 0ustar package org.springframework.webflow.samples.booking; import java.util.ArrayList; import java.util.List; import javax.faces.model.SelectItem; import org.springframework.stereotype.Service; @Service public class ReferenceData { private List bedOptions; private List smokingOptions; private List creditCardExpMonths; private List creditCardExpYears; private List pageSizeOptions; public List getBedOptions() { if (bedOptions == null) { bedOptions = new ArrayList(); bedOptions.add(new SelectItem(new Integer(1), "One king-size bed")); bedOptions.add(new SelectItem(new Integer(2), "Two double beds")); bedOptions.add(new SelectItem(new Integer(3), "Three beds")); } return bedOptions; } public List getSmokingOptions() { if (smokingOptions == null) { smokingOptions = new ArrayList(); smokingOptions.add(new SelectItem(Boolean.TRUE, "Smoking")); smokingOptions.add(new SelectItem(Boolean.FALSE, "Non-Smoking")); } return smokingOptions; } public List getCreditCardExpMonths() { if (creditCardExpMonths == null) { creditCardExpMonths = new ArrayList(); creditCardExpMonths.add(new SelectItem(new Integer(1), "Jan")); creditCardExpMonths.add(new SelectItem(new Integer(2), "Feb")); creditCardExpMonths.add(new SelectItem(new Integer(3), "Mar")); creditCardExpMonths.add(new SelectItem(new Integer(4), "Apr")); creditCardExpMonths.add(new SelectItem(new Integer(5), "May")); creditCardExpMonths.add(new SelectItem(new Integer(6), "Jun")); creditCardExpMonths.add(new SelectItem(new Integer(7), "Jul")); creditCardExpMonths.add(new SelectItem(new Integer(8), "Aug")); creditCardExpMonths.add(new SelectItem(new Integer(9), "Sep")); creditCardExpMonths.add(new SelectItem(new Integer(10), "Oct")); creditCardExpMonths.add(new SelectItem(new Integer(11), "Nov")); creditCardExpMonths.add(new SelectItem(new Integer(12), "Dec")); } return creditCardExpMonths; } public List getCreditCardExpYears() { if (creditCardExpYears == null) { creditCardExpYears = new ArrayList(); creditCardExpYears.add(new SelectItem(new Integer(2008), "2008")); creditCardExpYears.add(new SelectItem(new Integer(2009), "2009")); creditCardExpYears.add(new SelectItem(new Integer(2010), "2010")); creditCardExpYears.add(new SelectItem(new Integer(2010), "2011")); creditCardExpYears.add(new SelectItem(new Integer(2010), "2012")); } return creditCardExpYears; } public List getPageSizeOptions() { if (pageSizeOptions == null) { pageSizeOptions = new ArrayList(); pageSizeOptions.add(new SelectItem(new Integer(5), "5")); pageSizeOptions.add(new SelectItem(new Integer(10), "10")); pageSizeOptions.add(new SelectItem(new Integer(20), "20")); } return pageSizeOptions; } } libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/jsf-booking/src/test/0000755000000000000000000000000011360615646027524 5ustar ././@LongLink0000000000000000000000000000015600000000000011567 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/jsf-booking/src/test/resources/libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/jsf-booking/src/test/r0000755000000000000000000000000011360615646027706 5ustar ././@LongLink0000000000000000000000000000015100000000000011562 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/jsf-booking/src/test/java/libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/jsf-booking/src/test/j0000755000000000000000000000000011360615646027676 5ustar libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/jsf-booking/pom.xml0000644000000000000000000001250511360615636027275 0ustar 4.0.0 org.springframework.webflow.samples jsf-booking war 2.0.9.RELEASE com.sun.facelets com.springsource.com.sun.facelets 1.1.14 com.sun.faces com.springsource.com.sun.faces ${jsf.version} javax.faces com.springsource.javax.faces ${jsf.version} javax.persistence com.springsource.javax.persistence 1.0.0 javax.servlet com.springsource.javax.servlet.jsp.jstl 1.1.2 javax.transaction com.springsource.javax.transaction 1.1.0 org.apache.log4j com.springsource.org.apache.log4j 1.2.15 org.hibernate com.springsource.org.hibernate 3.2.6.ga org.hibernate com.springsource.org.hibernate.annotations 3.3.0.ga org.hibernate com.springsource.org.hibernate.ejb 3.3.1.ga org.hsqldb com.springsource.org.hsqldb 1.8.0.9 org.jboss.el com.springsource.org.jboss.el 2.0.0.GA org.springframework org.springframework.aop ${spring.version} org.springframework org.springframework.beans ${spring.version} org.springframework org.springframework.context ${spring.version} org.springframework org.springframework.core ${spring.version} org.springframework org.springframework.jdbc ${spring.version} org.springframework org.springframework.orm ${spring.version} org.springframework org.springframework.transaction ${spring.version} org.springframework org.springframework.web ${spring.version} javax.servlet com.springsource.javax.servlet 2.4.0 provided javax.el com.springsource.javax.el 1.0.0 provided org.junit com.springsource.junit 3.8.2 test org.springframework org.springframework.test ${spring.version} test com.springsource.repository.bundles.release SpringSource Enterprise Bundle Repository - SpringSource Releases http://repository.springsource.com/maven/bundles/release com.springsource.repository.bundles.external SpringSource Enterprise Bundle Repository - External Releases http://repository.springsource.com/maven/bundles/external jsf-booking org.apache.maven.plugins maven-compiler-plugin 1.5 1.5 2.5.6.SEC01 1.2.0.09 ././@LongLink0000000000000000000000000000014500000000000011565 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/jsf-booking/readme.txtlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/jsf-booking/readme.txt0000644000000000000000000000066711360615632027760 0ustar This sample is intended to demonstrate the "JSF-centric" approach to integrating JSF and Spring. It uses the pure JSF controller model, including JSF managed beans and navigation rules, and only utilizes Spring for the service layer. It is provided purely as a point of comparison against the "Spring-centric" approach of using Spring Faces and the MVC + Web Flow controller model, as demonstrated in the "booking-faces" sample project.././@LongLink0000000000000000000000000000014500000000000011565 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/jsf-booking/.settings/libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/jsf-booking/.settings/0000755000000000000000000000000011360615644027672 5ustar ././@LongLink0000000000000000000000000000022400000000000011563 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/jsf-booking/.settings/org.eclipse.jst.common.project.facet.core.prefslibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/jsf-booking/.settings/0000644000000000000000000000054011360615632027670 0ustar #Thu Aug 09 13:12:30 EDT 2007 classpath.helper/org.eclipse.jdt.launching.JRE_CONTAINER/owners=jst.java\:5.0 classpath.helper/org.eclipse.jst.server.core.container\:\:org.eclipse.jst.server.tomcat.runtimeTarget\:\:Apache\ Tomcat\ v5.5/owners=jst.web\:2.4 eclipse.preferences.version=1 instance/org.eclipse.core.net/org.eclipse.core.net.hasMigrated=true ././@LongLink0000000000000000000000000000017500000000000011570 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/jsf-booking/.settings/org.eclipse.jdt.ui.prefslibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/jsf-booking/.settings/0000644000000000000000000000504011360615640027667 0ustar #Thu Aug 09 13:12:30 EDT 2007 eclipse.preferences.version=1 editor_save_participant_org.eclipse.jdt.ui.postsavelistener.cleanup=true formatter_profile=_Spring Java Conventions formatter_settings_version=11 instance/org.eclipse.core.net/org.eclipse.core.net.hasMigrated=true sp_cleanup.add_default_serial_version_id=true sp_cleanup.add_generated_serial_version_id=false sp_cleanup.add_missing_annotations=true sp_cleanup.add_missing_deprecated_annotations=true sp_cleanup.add_missing_nls_tags=false sp_cleanup.add_missing_override_annotations=true sp_cleanup.add_serial_version_id=false sp_cleanup.always_use_blocks=true sp_cleanup.always_use_parentheses_in_expressions=false sp_cleanup.always_use_this_for_non_static_field_access=false sp_cleanup.always_use_this_for_non_static_method_access=false sp_cleanup.convert_to_enhanced_for_loop=false sp_cleanup.format_source_code=true sp_cleanup.make_local_variable_final=false sp_cleanup.make_parameters_final=false sp_cleanup.make_private_fields_final=true sp_cleanup.make_variable_declarations_final=true sp_cleanup.never_use_blocks=false sp_cleanup.never_use_parentheses_in_expressions=true sp_cleanup.on_save_use_additional_actions=false sp_cleanup.organize_imports=true sp_cleanup.qualify_static_field_accesses_with_declaring_class=false sp_cleanup.qualify_static_member_accesses_through_instances_with_declaring_class=true sp_cleanup.qualify_static_member_accesses_through_subtypes_with_declaring_class=true sp_cleanup.qualify_static_member_accesses_with_declaring_class=false sp_cleanup.qualify_static_method_accesses_with_declaring_class=false sp_cleanup.remove_private_constructors=true sp_cleanup.remove_trailing_whitespaces=false sp_cleanup.remove_trailing_whitespaces_all=true sp_cleanup.remove_trailing_whitespaces_ignore_empty=false sp_cleanup.remove_unnecessary_casts=true sp_cleanup.remove_unnecessary_nls_tags=false sp_cleanup.remove_unused_imports=false sp_cleanup.remove_unused_local_variables=false sp_cleanup.remove_unused_private_fields=true sp_cleanup.remove_unused_private_members=false sp_cleanup.remove_unused_private_methods=true sp_cleanup.remove_unused_private_types=true sp_cleanup.sort_members=false sp_cleanup.sort_members_all=false sp_cleanup.use_blocks=false sp_cleanup.use_blocks_only_for_return_and_throw=false sp_cleanup.use_parentheses_in_expressions=false sp_cleanup.use_this_for_non_static_field_access=false sp_cleanup.use_this_for_non_static_field_access_only_if_necessary=true sp_cleanup.use_this_for_non_static_method_access=false sp_cleanup.use_this_for_non_static_method_access_only_if_necessary=true ././@LongLink0000000000000000000000000000017700000000000011572 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/jsf-booking/.settings/org.eclipse.jdt.core.prefslibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/jsf-booking/.settings/0000644000000000000000000005300411360615636027677 0ustar #Thu Aug 09 13:12:30 EDT 2007 eclipse.preferences.version=1 instance/org.eclipse.core.net/org.eclipse.core.net.hasMigrated=true org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.5 org.eclipse.jdt.core.compiler.compliance=1.5 org.eclipse.jdt.core.compiler.problem.assertIdentifier=error org.eclipse.jdt.core.compiler.problem.enumIdentifier=error org.eclipse.jdt.core.compiler.source=1.5 org.eclipse.jdt.core.formatter.align_type_members_on_columns=false org.eclipse.jdt.core.formatter.alignment_for_arguments_in_allocation_expression=16 org.eclipse.jdt.core.formatter.alignment_for_arguments_in_enum_constant=16 org.eclipse.jdt.core.formatter.alignment_for_arguments_in_explicit_constructor_call=16 org.eclipse.jdt.core.formatter.alignment_for_arguments_in_method_invocation=16 org.eclipse.jdt.core.formatter.alignment_for_arguments_in_qualified_allocation_expression=16 org.eclipse.jdt.core.formatter.alignment_for_assignment=0 org.eclipse.jdt.core.formatter.alignment_for_binary_expression=16 org.eclipse.jdt.core.formatter.alignment_for_compact_if=16 org.eclipse.jdt.core.formatter.alignment_for_conditional_expression=80 org.eclipse.jdt.core.formatter.alignment_for_enum_constants=0 org.eclipse.jdt.core.formatter.alignment_for_expressions_in_array_initializer=16 org.eclipse.jdt.core.formatter.alignment_for_multiple_fields=16 org.eclipse.jdt.core.formatter.alignment_for_parameters_in_constructor_declaration=16 org.eclipse.jdt.core.formatter.alignment_for_parameters_in_method_declaration=16 org.eclipse.jdt.core.formatter.alignment_for_selector_in_method_invocation=16 org.eclipse.jdt.core.formatter.alignment_for_superclass_in_type_declaration=16 org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_enum_declaration=16 org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_type_declaration=16 org.eclipse.jdt.core.formatter.alignment_for_throws_clause_in_constructor_declaration=16 org.eclipse.jdt.core.formatter.alignment_for_throws_clause_in_method_declaration=16 org.eclipse.jdt.core.formatter.blank_lines_after_imports=1 org.eclipse.jdt.core.formatter.blank_lines_after_package=1 org.eclipse.jdt.core.formatter.blank_lines_before_field=0 org.eclipse.jdt.core.formatter.blank_lines_before_first_class_body_declaration=0 org.eclipse.jdt.core.formatter.blank_lines_before_imports=1 org.eclipse.jdt.core.formatter.blank_lines_before_member_type=1 org.eclipse.jdt.core.formatter.blank_lines_before_method=1 org.eclipse.jdt.core.formatter.blank_lines_before_new_chunk=1 org.eclipse.jdt.core.formatter.blank_lines_before_package=0 org.eclipse.jdt.core.formatter.blank_lines_between_import_groups=1 org.eclipse.jdt.core.formatter.blank_lines_between_type_declarations=1 org.eclipse.jdt.core.formatter.brace_position_for_annotation_type_declaration=end_of_line org.eclipse.jdt.core.formatter.brace_position_for_anonymous_type_declaration=end_of_line org.eclipse.jdt.core.formatter.brace_position_for_array_initializer=end_of_line org.eclipse.jdt.core.formatter.brace_position_for_block=end_of_line org.eclipse.jdt.core.formatter.brace_position_for_block_in_case=end_of_line org.eclipse.jdt.core.formatter.brace_position_for_constructor_declaration=end_of_line org.eclipse.jdt.core.formatter.brace_position_for_enum_constant=end_of_line org.eclipse.jdt.core.formatter.brace_position_for_enum_declaration=end_of_line org.eclipse.jdt.core.formatter.brace_position_for_method_declaration=end_of_line org.eclipse.jdt.core.formatter.brace_position_for_switch=end_of_line org.eclipse.jdt.core.formatter.brace_position_for_type_declaration=end_of_line org.eclipse.jdt.core.formatter.comment.clear_blank_lines_in_block_comment=false org.eclipse.jdt.core.formatter.comment.clear_blank_lines_in_javadoc_comment=false org.eclipse.jdt.core.formatter.comment.format_block_comments=true org.eclipse.jdt.core.formatter.comment.format_header=false org.eclipse.jdt.core.formatter.comment.format_html=true org.eclipse.jdt.core.formatter.comment.format_javadoc_comments=true org.eclipse.jdt.core.formatter.comment.format_line_comments=true org.eclipse.jdt.core.formatter.comment.format_source_code=true org.eclipse.jdt.core.formatter.comment.indent_parameter_description=true org.eclipse.jdt.core.formatter.comment.indent_root_tags=false org.eclipse.jdt.core.formatter.comment.insert_new_line_before_root_tags=do not insert org.eclipse.jdt.core.formatter.comment.insert_new_line_for_parameter=do not insert org.eclipse.jdt.core.formatter.comment.line_length=120 org.eclipse.jdt.core.formatter.compact_else_if=true org.eclipse.jdt.core.formatter.continuation_indentation=2 org.eclipse.jdt.core.formatter.continuation_indentation_for_array_initializer=2 org.eclipse.jdt.core.formatter.format_guardian_clause_on_one_line=false org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_annotation_declaration_header=true org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_enum_constant_header=true org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_enum_declaration_header=true org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_type_header=true org.eclipse.jdt.core.formatter.indent_breaks_compare_to_cases=true org.eclipse.jdt.core.formatter.indent_empty_lines=false org.eclipse.jdt.core.formatter.indent_statements_compare_to_block=true org.eclipse.jdt.core.formatter.indent_statements_compare_to_body=true org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_cases=true org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_switch=false org.eclipse.jdt.core.formatter.indentation.size=4 org.eclipse.jdt.core.formatter.insert_new_line_after_annotation=insert org.eclipse.jdt.core.formatter.insert_new_line_after_opening_brace_in_array_initializer=do not insert org.eclipse.jdt.core.formatter.insert_new_line_at_end_of_file_if_missing=do not insert org.eclipse.jdt.core.formatter.insert_new_line_before_catch_in_try_statement=do not insert org.eclipse.jdt.core.formatter.insert_new_line_before_closing_brace_in_array_initializer=do not insert org.eclipse.jdt.core.formatter.insert_new_line_before_else_in_if_statement=do not insert org.eclipse.jdt.core.formatter.insert_new_line_before_finally_in_try_statement=do not insert org.eclipse.jdt.core.formatter.insert_new_line_before_while_in_do_statement=do not insert org.eclipse.jdt.core.formatter.insert_new_line_in_empty_annotation_declaration=insert org.eclipse.jdt.core.formatter.insert_new_line_in_empty_anonymous_type_declaration=insert org.eclipse.jdt.core.formatter.insert_new_line_in_empty_block=insert org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_constant=insert org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_declaration=insert org.eclipse.jdt.core.formatter.insert_new_line_in_empty_method_body=insert org.eclipse.jdt.core.formatter.insert_new_line_in_empty_type_declaration=insert org.eclipse.jdt.core.formatter.insert_space_after_and_in_type_parameter=insert org.eclipse.jdt.core.formatter.insert_space_after_assignment_operator=insert org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation=do not insert org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation_type_declaration=do not insert org.eclipse.jdt.core.formatter.insert_space_after_binary_operator=insert org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_arguments=insert org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_parameters=insert org.eclipse.jdt.core.formatter.insert_space_after_closing_brace_in_block=insert org.eclipse.jdt.core.formatter.insert_space_after_closing_paren_in_cast=insert org.eclipse.jdt.core.formatter.insert_space_after_colon_in_assert=insert org.eclipse.jdt.core.formatter.insert_space_after_colon_in_case=insert org.eclipse.jdt.core.formatter.insert_space_after_colon_in_conditional=insert org.eclipse.jdt.core.formatter.insert_space_after_colon_in_for=insert org.eclipse.jdt.core.formatter.insert_space_after_colon_in_labeled_statement=insert org.eclipse.jdt.core.formatter.insert_space_after_comma_in_allocation_expression=insert org.eclipse.jdt.core.formatter.insert_space_after_comma_in_annotation=insert org.eclipse.jdt.core.formatter.insert_space_after_comma_in_array_initializer=insert org.eclipse.jdt.core.formatter.insert_space_after_comma_in_constructor_declaration_parameters=insert org.eclipse.jdt.core.formatter.insert_space_after_comma_in_constructor_declaration_throws=insert org.eclipse.jdt.core.formatter.insert_space_after_comma_in_enum_constant_arguments=insert org.eclipse.jdt.core.formatter.insert_space_after_comma_in_enum_declarations=insert org.eclipse.jdt.core.formatter.insert_space_after_comma_in_explicitconstructorcall_arguments=insert org.eclipse.jdt.core.formatter.insert_space_after_comma_in_for_increments=insert org.eclipse.jdt.core.formatter.insert_space_after_comma_in_for_inits=insert org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_declaration_parameters=insert org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_declaration_throws=insert org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_invocation_arguments=insert org.eclipse.jdt.core.formatter.insert_space_after_comma_in_multiple_field_declarations=insert org.eclipse.jdt.core.formatter.insert_space_after_comma_in_multiple_local_declarations=insert org.eclipse.jdt.core.formatter.insert_space_after_comma_in_parameterized_type_reference=insert org.eclipse.jdt.core.formatter.insert_space_after_comma_in_superinterfaces=insert org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_arguments=insert org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_parameters=insert org.eclipse.jdt.core.formatter.insert_space_after_ellipsis=insert org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_parameterized_type_reference=do not insert org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_arguments=do not insert org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_parameters=do not insert org.eclipse.jdt.core.formatter.insert_space_after_opening_brace_in_array_initializer=insert org.eclipse.jdt.core.formatter.insert_space_after_opening_bracket_in_array_allocation_expression=do not insert org.eclipse.jdt.core.formatter.insert_space_after_opening_bracket_in_array_reference=do not insert org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_annotation=do not insert org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_cast=do not insert org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_catch=do not insert org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_constructor_declaration=do not insert org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_enum_constant=do not insert org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_for=do not insert org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_if=do not insert org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_method_declaration=do not insert org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_method_invocation=do not insert org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_parenthesized_expression=do not insert org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_switch=do not insert org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_synchronized=do not insert org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_while=do not insert org.eclipse.jdt.core.formatter.insert_space_after_postfix_operator=do not insert org.eclipse.jdt.core.formatter.insert_space_after_prefix_operator=do not insert org.eclipse.jdt.core.formatter.insert_space_after_question_in_conditional=insert org.eclipse.jdt.core.formatter.insert_space_after_question_in_wildcard=do not insert org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_for=insert org.eclipse.jdt.core.formatter.insert_space_after_unary_operator=do not insert org.eclipse.jdt.core.formatter.insert_space_before_and_in_type_parameter=insert org.eclipse.jdt.core.formatter.insert_space_before_assignment_operator=insert org.eclipse.jdt.core.formatter.insert_space_before_at_in_annotation_type_declaration=insert org.eclipse.jdt.core.formatter.insert_space_before_binary_operator=insert org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_parameterized_type_reference=do not insert org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_arguments=do not insert org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_parameters=do not insert org.eclipse.jdt.core.formatter.insert_space_before_closing_brace_in_array_initializer=insert org.eclipse.jdt.core.formatter.insert_space_before_closing_bracket_in_array_allocation_expression=do not insert org.eclipse.jdt.core.formatter.insert_space_before_closing_bracket_in_array_reference=do not insert org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_annotation=do not insert org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_cast=do not insert org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_catch=do not insert org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_constructor_declaration=do not insert org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_enum_constant=do not insert org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_for=do not insert org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_if=do not insert org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_method_declaration=do not insert org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_method_invocation=do not insert org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_parenthesized_expression=do not insert org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_switch=do not insert org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_synchronized=do not insert org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_while=do not insert org.eclipse.jdt.core.formatter.insert_space_before_colon_in_assert=insert org.eclipse.jdt.core.formatter.insert_space_before_colon_in_case=do not insert org.eclipse.jdt.core.formatter.insert_space_before_colon_in_conditional=insert org.eclipse.jdt.core.formatter.insert_space_before_colon_in_default=do not insert org.eclipse.jdt.core.formatter.insert_space_before_colon_in_for=insert org.eclipse.jdt.core.formatter.insert_space_before_colon_in_labeled_statement=do not insert org.eclipse.jdt.core.formatter.insert_space_before_comma_in_allocation_expression=do not insert org.eclipse.jdt.core.formatter.insert_space_before_comma_in_annotation=do not insert org.eclipse.jdt.core.formatter.insert_space_before_comma_in_array_initializer=do not insert org.eclipse.jdt.core.formatter.insert_space_before_comma_in_constructor_declaration_parameters=do not insert org.eclipse.jdt.core.formatter.insert_space_before_comma_in_constructor_declaration_throws=do not insert org.eclipse.jdt.core.formatter.insert_space_before_comma_in_enum_constant_arguments=do not insert org.eclipse.jdt.core.formatter.insert_space_before_comma_in_enum_declarations=do not insert org.eclipse.jdt.core.formatter.insert_space_before_comma_in_explicitconstructorcall_arguments=do not insert org.eclipse.jdt.core.formatter.insert_space_before_comma_in_for_increments=do not insert org.eclipse.jdt.core.formatter.insert_space_before_comma_in_for_inits=do not insert org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_declaration_parameters=do not insert org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_declaration_throws=do not insert org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_invocation_arguments=do not insert org.eclipse.jdt.core.formatter.insert_space_before_comma_in_multiple_field_declarations=do not insert org.eclipse.jdt.core.formatter.insert_space_before_comma_in_multiple_local_declarations=do not insert org.eclipse.jdt.core.formatter.insert_space_before_comma_in_parameterized_type_reference=do not insert org.eclipse.jdt.core.formatter.insert_space_before_comma_in_superinterfaces=do not insert org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_arguments=do not insert org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_parameters=do not insert org.eclipse.jdt.core.formatter.insert_space_before_ellipsis=do not insert org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_parameterized_type_reference=do not insert org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_arguments=do not insert org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_parameters=do not insert org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_annotation_type_declaration=insert org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_anonymous_type_declaration=insert org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_array_initializer=insert org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_block=insert org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_constructor_declaration=insert org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_enum_constant=insert org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_enum_declaration=insert org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_method_declaration=insert org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_switch=insert org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_type_declaration=insert org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_allocation_expression=do not insert org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_reference=do not insert org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_type_reference=do not insert org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_annotation=do not insert org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_annotation_type_member_declaration=do not insert org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_catch=insert org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_constructor_declaration=do not insert org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_enum_constant=do not insert org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_for=insert org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_if=insert org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_method_declaration=do not insert org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_method_invocation=do not insert org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_parenthesized_expression=do not insert org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_switch=insert org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_synchronized=insert org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_while=insert org.eclipse.jdt.core.formatter.insert_space_before_parenthesized_expression_in_return=insert org.eclipse.jdt.core.formatter.insert_space_before_parenthesized_expression_in_throw=insert org.eclipse.jdt.core.formatter.insert_space_before_postfix_operator=do not insert org.eclipse.jdt.core.formatter.insert_space_before_prefix_operator=do not insert org.eclipse.jdt.core.formatter.insert_space_before_question_in_conditional=insert org.eclipse.jdt.core.formatter.insert_space_before_question_in_wildcard=do not insert org.eclipse.jdt.core.formatter.insert_space_before_semicolon=do not insert org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_for=do not insert org.eclipse.jdt.core.formatter.insert_space_before_unary_operator=do not insert org.eclipse.jdt.core.formatter.insert_space_between_brackets_in_array_type_reference=do not insert org.eclipse.jdt.core.formatter.insert_space_between_empty_braces_in_array_initializer=do not insert org.eclipse.jdt.core.formatter.insert_space_between_empty_brackets_in_array_allocation_expression=do not insert org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_annotation_type_member_declaration=do not insert org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_constructor_declaration=do not insert org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_enum_constant=do not insert org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_method_declaration=do not insert org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_method_invocation=do not insert org.eclipse.jdt.core.formatter.keep_else_statement_on_same_line=false org.eclipse.jdt.core.formatter.keep_empty_array_initializer_on_one_line=false org.eclipse.jdt.core.formatter.keep_imple_if_on_one_line=false org.eclipse.jdt.core.formatter.keep_then_statement_on_same_line=false org.eclipse.jdt.core.formatter.lineSplit=120 org.eclipse.jdt.core.formatter.never_indent_block_comments_on_first_column=false org.eclipse.jdt.core.formatter.never_indent_line_comments_on_first_column=false org.eclipse.jdt.core.formatter.number_of_blank_lines_at_beginning_of_method_body=0 org.eclipse.jdt.core.formatter.number_of_empty_lines_to_preserve=1 org.eclipse.jdt.core.formatter.put_empty_statement_on_new_line=true org.eclipse.jdt.core.formatter.tabulation.char=mixed org.eclipse.jdt.core.formatter.tabulation.size=8 org.eclipse.jdt.core.formatter.use_tabs_only_for_leading_indentations=false org.eclipse.jdt.core.formatter.wrap_before_binary_operator=true ././@LongLink0000000000000000000000000000022200000000000011561 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/jsf-booking/.settings/org.eclipse.wst.common.project.facet.core.xmllibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/jsf-booking/.settings/0000644000000000000000000000041311360615632027667 0ustar ././@LongLink0000000000000000000000000000021700000000000011565 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/jsf-booking/.settings/org.springframework.ide.eclipse.core.prefslibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/jsf-booking/.settings/0000644000000000000000000001504211360615644027676 0ustar #Wed Feb 27 11:35:00 EST 2008 eclipse.preferences.version=1 instance/org.eclipse.core.net/org.eclipse.core.net.hasMigrated=true org.springframework.ide.eclipse.core.builders.enable.aopreferencemodelbuilder=true org.springframework.ide.eclipse.core.builders.enable.osgibundleupdater=true org.springframework.ide.eclipse.core.enable.project.preferences=false org.springframework.ide.eclipse.core.validator.enable.com.springsource.sts.bestpractices.beansvalidator=true org.springframework.ide.eclipse.core.validator.enable.org.springframework.ide.eclipse.beans.core.beansvalidator=true org.springframework.ide.eclipse.core.validator.enable.org.springframework.ide.eclipse.core.springvalidator=true org.springframework.ide.eclipse.core.validator.enable.org.springframework.ide.eclipse.webflow.core.validator=true org.springframework.ide.eclipse.core.validator.rule.enable.com.springsource.sts.bestpractices.legacyxmlusage.jndiobjectfactory-com.springsource.sts.bestpractices.beansvalidator=true org.springframework.ide.eclipse.core.validator.rule.enable.org.springframework.ide.eclipse.beans.core.beanAlias-org.springframework.ide.eclipse.beans.core.beansvalidator=true org.springframework.ide.eclipse.core.validator.rule.enable.org.springframework.ide.eclipse.beans.core.beanClass-org.springframework.ide.eclipse.beans.core.beansvalidator=true org.springframework.ide.eclipse.core.validator.rule.enable.org.springframework.ide.eclipse.beans.core.beanConstructorArgument-org.springframework.ide.eclipse.beans.core.beansvalidator=true org.springframework.ide.eclipse.core.validator.rule.enable.org.springframework.ide.eclipse.beans.core.beanDefinition-org.springframework.ide.eclipse.beans.core.beansvalidator=true org.springframework.ide.eclipse.core.validator.rule.enable.org.springframework.ide.eclipse.beans.core.beanDefinitionHolder-org.springframework.ide.eclipse.beans.core.beansvalidator=true org.springframework.ide.eclipse.core.validator.rule.enable.org.springframework.ide.eclipse.beans.core.beanFactory-org.springframework.ide.eclipse.beans.core.beansvalidator=true org.springframework.ide.eclipse.core.validator.rule.enable.org.springframework.ide.eclipse.beans.core.beanInitDestroyMethod-org.springframework.ide.eclipse.beans.core.beansvalidator=true org.springframework.ide.eclipse.core.validator.rule.enable.org.springframework.ide.eclipse.beans.core.beanProperty-org.springframework.ide.eclipse.beans.core.beansvalidator=true org.springframework.ide.eclipse.core.validator.rule.enable.org.springframework.ide.eclipse.beans.core.beanReference-org.springframework.ide.eclipse.beans.core.beansvalidator=true org.springframework.ide.eclipse.core.validator.rule.enable.org.springframework.ide.eclipse.beans.core.methodOverride-org.springframework.ide.eclipse.beans.core.beansvalidator=true org.springframework.ide.eclipse.core.validator.rule.enable.org.springframework.ide.eclipse.beans.core.parsingProblems-org.springframework.ide.eclipse.beans.core.beansvalidator=true org.springframework.ide.eclipse.core.validator.rule.enable.org.springframework.ide.eclipse.beans.core.requiredProperty-org.springframework.ide.eclipse.beans.core.beansvalidator=false org.springframework.ide.eclipse.core.validator.rule.enable.org.springframework.ide.eclipse.core.springClasspath-org.springframework.ide.eclipse.core.springvalidator=true org.springframework.ide.eclipse.core.validator.rule.enable.org.springframework.ide.eclipse.webflow.core.validation.action-org.springframework.ide.eclipse.webflow.core.validator=true org.springframework.ide.eclipse.core.validator.rule.enable.org.springframework.ide.eclipse.webflow.core.validation.actionstate-org.springframework.ide.eclipse.webflow.core.validator=true org.springframework.ide.eclipse.core.validator.rule.enable.org.springframework.ide.eclipse.webflow.core.validation.attribute-org.springframework.ide.eclipse.webflow.core.validator=true org.springframework.ide.eclipse.core.validator.rule.enable.org.springframework.ide.eclipse.webflow.core.validation.attributemapper-org.springframework.ide.eclipse.webflow.core.validator=true org.springframework.ide.eclipse.core.validator.rule.enable.org.springframework.ide.eclipse.webflow.core.validation.beanaction-org.springframework.ide.eclipse.webflow.core.validator=true org.springframework.ide.eclipse.core.validator.rule.enable.org.springframework.ide.eclipse.webflow.core.validation.evaluationaction-org.springframework.ide.eclipse.webflow.core.validator=true org.springframework.ide.eclipse.core.validator.rule.enable.org.springframework.ide.eclipse.webflow.core.validation.evaluationresult-org.springframework.ide.eclipse.webflow.core.validator=true org.springframework.ide.eclipse.core.validator.rule.enable.org.springframework.ide.eclipse.webflow.core.validation.exceptionhandler-org.springframework.ide.eclipse.webflow.core.validator=true org.springframework.ide.eclipse.core.validator.rule.enable.org.springframework.ide.eclipse.webflow.core.validation.import-org.springframework.ide.eclipse.webflow.core.validator=true org.springframework.ide.eclipse.core.validator.rule.enable.org.springframework.ide.eclipse.webflow.core.validation.inputattribute-org.springframework.ide.eclipse.webflow.core.validator=true org.springframework.ide.eclipse.core.validator.rule.enable.org.springframework.ide.eclipse.webflow.core.validation.mapping-org.springframework.ide.eclipse.webflow.core.validator=true org.springframework.ide.eclipse.core.validator.rule.enable.org.springframework.ide.eclipse.webflow.core.validation.outputattribute-org.springframework.ide.eclipse.webflow.core.validator=true org.springframework.ide.eclipse.core.validator.rule.enable.org.springframework.ide.eclipse.webflow.core.validation.set-org.springframework.ide.eclipse.webflow.core.validator=true org.springframework.ide.eclipse.core.validator.rule.enable.org.springframework.ide.eclipse.webflow.core.validation.state-org.springframework.ide.eclipse.webflow.core.validator=true org.springframework.ide.eclipse.core.validator.rule.enable.org.springframework.ide.eclipse.webflow.core.validation.subflowstate-org.springframework.ide.eclipse.webflow.core.validator=true org.springframework.ide.eclipse.core.validator.rule.enable.org.springframework.ide.eclipse.webflow.core.validation.transition-org.springframework.ide.eclipse.webflow.core.validator=true org.springframework.ide.eclipse.core.validator.rule.enable.org.springframework.ide.eclipse.webflow.core.validation.variable-org.springframework.ide.eclipse.webflow.core.validator=true org.springframework.ide.eclipse.core.validator.rule.enable.org.springframework.ide.eclipse.webflow.core.validation.webflowstate-org.springframework.ide.eclipse.webflow.core.validator=true ././@LongLink0000000000000000000000000000017700000000000011572 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/jsf-booking/.settings/org.eclipse.jpt.core.prefslibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/jsf-booking/.settings/0000644000000000000000000000033111360615634027670 0ustar #Thu Aug 09 13:12:30 EDT 2007 eclipse.preferences.version=1 instance/org.eclipse.core.net/org.eclipse.core.net.hasMigrated=true org.eclipse.jpt.core.discoverAnnotatedClasses=true org.eclipse.jpt.core.platform=generic ././@LongLink0000000000000000000000000000020500000000000011562 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/jsf-booking/.settings/org.eclipse.wst.validation.prefslibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/jsf-booking/.settings/0000644000000000000000000000367711360615634027710 0ustar #Thu Aug 09 13:12:30 EDT 2007 DELEGATES_PREFERENCE=delegateValidatorListorg.eclipse.wst.wsdl.validation.internal.eclipse.WSDLDelegatingValidator\=org.eclipse.wst.wsdl.validation.internal.eclipse.Validator;org.eclipse.wst.xsd.core.internal.validation.eclipse.XSDDelegatingValidator\=org.eclipse.wst.xsd.core.internal.validation.eclipse.Validator; USER_BUILD_PREFERENCE=enabledBuildValidatorListorg.eclipse.wst.html.internal.validation.HTMLValidator;org.eclipse.wst.xml.core.internal.validation.eclipse.Validator;org.eclipse.wst.dtd.core.internal.validation.eclipse.Validator;org.eclipse.wst.wsdl.validation.internal.eclipse.WSDLDelegatingValidator;org.eclipse.jst.j2ee.internal.web.validation.UIWarValidator;org.eclipse.jst.jsp.core.internal.validation.JSPELValidator;org.eclipse.jst.jsp.core.internal.validation.JSPJavaValidator;org.eclipse.jst.jsp.core.internal.validation.JSPDirectiveValidator;org.eclipse.wst.common.componentcore.internal.ModuleCoreValidator;org.eclipse.wst.wsi.ui.internal.WSIMessageValidator;org.eclipse.wst.xsd.core.internal.validation.eclipse.XSDDelegatingValidator; USER_MANUAL_PREFERENCE=enabledManualValidatorListorg.eclipse.wst.html.internal.validation.HTMLValidator;org.eclipse.wst.xml.core.internal.validation.eclipse.Validator;org.eclipse.wst.dtd.core.internal.validation.eclipse.Validator;org.eclipse.wst.wsdl.validation.internal.eclipse.WSDLDelegatingValidator;org.eclipse.jst.j2ee.internal.web.validation.UIWarValidator;org.eclipse.jst.jsp.core.internal.validation.JSPELValidator;org.eclipse.jst.jsp.core.internal.validation.JSPJavaValidator;org.eclipse.jst.jsp.core.internal.validation.JSPDirectiveValidator;org.eclipse.wst.common.componentcore.internal.ModuleCoreValidator;org.eclipse.wst.wsi.ui.internal.WSIMessageValidator;org.eclipse.wst.xsd.core.internal.validation.eclipse.XSDDelegatingValidator; USER_PREFERENCE=overrideGlobalPreferencesfalse eclipse.preferences.version=1 instance/org.eclipse.core.net/org.eclipse.core.net.hasMigrated=true ././@LongLink0000000000000000000000000000021000000000000011556 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/jsf-booking/.settings/org.hibernate.eclipse.console.prefslibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/jsf-booking/.settings/0000644000000000000000000000027211360615644027675 0ustar #Thu Aug 09 13:12:30 EDT 2007 default.configuration=jsf-booking eclipse.preferences.version=1 hibernate3.enabled=true instance/org.eclipse.core.net/org.eclipse.core.net.hasMigrated=true ././@LongLink0000000000000000000000000000020500000000000011562 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/jsf-booking/.settings/org.eclipse.wst.common.componentlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/jsf-booking/.settings/0000644000000000000000000000123311360615636027674 0ustar libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/jsf-booking/build.xml0000644000000000000000000000061611360615632027575 0ustar ././@LongLink0000000000000000000000000000014500000000000011565 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/jsf-booking/.metadata/libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/jsf-booking/.metadata/0000755000000000000000000000000011360615636027613 5ustar ././@LongLink0000000000000000000000000000015100000000000011562 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/jsf-booking/.metadata/src/libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/jsf-booking/.metadata/0000755000000000000000000000000011360615636027613 5ustar ././@LongLink0000000000000000000000000000015600000000000011567 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/jsf-booking/.metadata/src/main/libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/jsf-booking/.metadata/0000755000000000000000000000000011360615636027613 5ustar ././@LongLink0000000000000000000000000000016500000000000011567 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/jsf-booking/.metadata/src/main/webapp/libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/jsf-booking/.metadata/0000755000000000000000000000000011360615636027613 5ustar ././@LongLink0000000000000000000000000000017500000000000011570 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/jsf-booking/.metadata/src/main/webapp/WEB-INF/libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/jsf-booking/.metadata/0000755000000000000000000000000011360615636027613 5ustar ././@LongLink0000000000000000000000000000022200000000000011561 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/jsf-booking/.metadata/src/main/webapp/WEB-INF/faces-config.pageflowlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/jsf-booking/.metadata/0000644000000000000000000000472211360615636027622 0ustar ././@LongLink0000000000000000000000000000014500000000000011565 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/jsf-booking/.classpathlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/jsf-booking/.classpath0000644000000000000000000000104511360615634027736 0ustar libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-webflow-samples/jsf-booking/ivy.xml0000644000000000000000000000707311360615636027315 0ustar libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/build-spring-webflow/0000755000000000000000000000000011360615646023201 5ustar libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/build-spring-webflow/.project0000644000000000000000000000032511360615644024646 0ustar build-spring-webflow libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/build-spring-webflow/package-top-level.xml0000644000000000000000000000425311360615634027224 0ustar libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/build-spring-webflow/resources/0000755000000000000000000000000011360615642025207 5ustar libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/build-spring-webflow/resources/license.txt0000644000000000000000000002613511360615634027402 0ustar Apache License Version 2.0, January 2004 http://www.apache.org/licenses/ TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION 1. Definitions. "License" shall mean the terms and conditions for use, reproduction, and distribution as defined by Sections 1 through 9 of this document. "Licensor" shall mean the copyright owner or entity authorized by the copyright owner that is granting the License. "Legal Entity" shall mean the union of the acting entity and all other entities that control, are controlled by, or are under common control with that entity. For the purposes of this definition, "control" means (i) the power, direct or indirect, to cause the direction or management of such entity, whether by contract or otherwise, or (ii) ownership of fifty percent (50%) or more of the outstanding shares, or (iii) beneficial ownership of such entity. "You" (or "Your") shall mean an individual or Legal Entity exercising permissions granted by this License. "Source" form shall mean the preferred form for making modifications, including but not limited to software source code, documentation source, and configuration files. "Object" form shall mean any form resulting from mechanical transformation or translation of a Source form, including but not limited to compiled object code, generated documentation, and conversions to other media types. "Work" shall mean the work of authorship, whether in Source or Object form, made available under the License, as indicated by a copyright notice that is included in or attached to the work (an example is provided in the Appendix below). "Derivative Works" shall mean any work, whether in Source or Object form, that is based on (or derived from) the Work and for which the editorial revisions, annotations, elaborations, or other modifications represent, as a whole, an original work of authorship. For the purposes of this License, Derivative Works shall not include works that remain separable from, or merely link (or bind by name) to the interfaces of, the Work and Derivative Works thereof. "Contribution" shall mean any work of authorship, including the original version of the Work and any modifications or additions to that Work or Derivative Works thereof, that is intentionally submitted to Licensor for inclusion in the Work by the copyright owner or by an individual or Legal Entity authorized to submit on behalf of the copyright owner. For the purposes of this definition, "submitted" means any form of electronic, verbal, or written communication sent to the Licensor or its representatives, including but not limited to communication on electronic mailing lists, source code control systems, and issue tracking systems that are managed by, or on behalf of, the Licensor for the purpose of discussing and improving the Work, but excluding communication that is conspicuously marked or otherwise designated in writing by the copyright owner as "Not a Contribution." "Contributor" shall mean Licensor and any individual or Legal Entity on behalf of whom a Contribution has been received by Licensor and subsequently incorporated within the Work. 2. Grant of Copyright License. Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable copyright license to reproduce, prepare Derivative Works of, publicly display, publicly perform, sublicense, and distribute the Work and such Derivative Works in Source or Object form. 3. Grant of Patent License. Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable (except as stated in this section) patent license to make, have made, use, offer to sell, sell, import, and otherwise transfer the Work, where such license applies only to those patent claims licensable by such Contributor that are necessarily infringed by their Contribution(s) alone or by combination of their Contribution(s) with the Work to which such Contribution(s) was submitted. If You institute patent litigation against any entity (including a cross-claim or counterclaim in a lawsuit) alleging that the Work or a Contribution incorporated within the Work constitutes direct or contributory patent infringement, then any patent licenses granted to You under this License for that Work shall terminate as of the date such litigation is filed. 4. Redistribution. You may reproduce and distribute copies of the Work or Derivative Works thereof in any medium, with or without modifications, and in Source or Object form, provided that You meet the following conditions: (a) You must give any other recipients of the Work or Derivative Works a copy of this License; and (b) You must cause any modified files to carry prominent notices stating that You changed the files; and (c) You must retain, in the Source form of any Derivative Works that You distribute, all copyright, patent, trademark, and attribution notices from the Source form of the Work, excluding those notices that do not pertain to any part of the Derivative Works; and (d) If the Work includes a "NOTICE" text file as part of its distribution, then any Derivative Works that You distribute must include a readable copy of the attribution notices contained within such NOTICE file, excluding those notices that do not pertain to any part of the Derivative Works, in at least one of the following places: within a NOTICE text file distributed as part of the Derivative Works; within the Source form or documentation, if provided along with the Derivative Works; or, within a display generated by the Derivative Works, if and wherever such third-party notices normally appear. The contents of the NOTICE file are for informational purposes only and do not modify the License. You may add Your own attribution notices within Derivative Works that You distribute, alongside or as an addendum to the NOTICE text from the Work, provided that such additional attribution notices cannot be construed as modifying the License. You may add Your own copyright statement to Your modifications and may provide additional or different license terms and conditions for use, reproduction, or distribution of Your modifications, or for any such Derivative Works as a whole, provided Your use, reproduction, and distribution of the Work otherwise complies with the conditions stated in this License. 5. Submission of Contributions. Unless You explicitly state otherwise, any Contribution intentionally submitted for inclusion in the Work by You to the Licensor shall be under the terms and conditions of this License, without any additional terms or conditions. Notwithstanding the above, nothing herein shall supersede or modify the terms of any separate license agreement you may have executed with Licensor regarding such Contributions. 6. Trademarks. This License does not grant permission to use the trade names, trademarks, service marks, or product names of the Licensor, except as required for reasonable and customary use in describing the origin of the Work and reproducing the content of the NOTICE file. 7. Disclaimer of Warranty. Unless required by applicable law or agreed to in writing, Licensor provides the Work (and each Contributor provides its Contributions) on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied, including, without limitation, any warranties or conditions of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A PARTICULAR PURPOSE. You are solely responsible for determining the appropriateness of using or redistributing the Work and assume any risks associated with Your exercise of permissions under this License. 8. Limitation of Liability. In no event and under no legal theory, whether in tort (including negligence), contract, or otherwise, unless required by applicable law (such as deliberate and grossly negligent acts) or agreed to in writing, shall any Contributor be liable to You for damages, including any direct, indirect, special, incidental, or consequential damages of any character arising as a result of this License or out of the use or inability to use the Work (including but not limited to damages for loss of goodwill, work stoppage, computer failure or malfunction, or any and all other commercial damages or losses), even if such Contributor has been advised of the possibility of such damages. 9. Accepting Warranty or Additional Liability. While redistributing the Work or Derivative Works thereof, You may choose to offer, and charge a fee for, acceptance of support, warranty, indemnity, or other liability obligations and/or rights consistent with this License. However, in accepting such obligations, You may act only on Your own behalf and on Your sole responsibility, not on behalf of any other Contributor, and only if You agree to indemnify, defend, and hold each Contributor harmless for any liability incurred by, or claims asserted against, such Contributor by reason of your accepting any such warranty or additional liability. END OF TERMS AND CONDITIONS APPENDIX: How to apply the Apache License to your work. To apply the Apache License to your work, attach the following boilerplate notice, with the fields enclosed by brackets "[]" replaced with your own identifying information. (Don't include the brackets!) The text should be enclosed in the appropriate comment syntax for the file format. We also recommend that a file or class name and description of purpose be included on the same "printed page" as the copyright notice for easier identification within third-party archives. Copyright [yyyy] [name of copyright owner] Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/build-spring-webflow/resources/notice.txt0000644000000000000000000000206111360615642027230 0ustar ====================================================================== == NOTICE file corresponding to section 4 d of the Apache License, == == Version 2.0, for the Spring Web Flow distribution. == ====================================================================== This product includes software developed by the Apache Software Foundation (http://www.apache.org). The end-user documentation included with a redistribution, if any, must include the following acknowledgement: "This product includes software developed by the Spring Framework Project (http://www.springframework.org)." Alternately, this acknowledgement may appear in the software itself, if and wherever such third-party acknowledgements normally appear. The names "Spring", "Spring Framework", and "Spring Web Flow" must not be used to endorse or promote products derived from this software without prior written permission. For written permission, please contact rod.johnson@interface21.com or juergen.hoeller@interface21.com. libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/build-spring-webflow/resources/readme.txt0000644000000000000000000002041211360615636027207 0ustar SPRING WEB FLOW 2.0.9 () ---------------------------------- http://www.springframework.org/webflow 1. INTRODUCTION --------------- Spring Web Flow (SWF) is the module of Spring that allows you to implement the "flows" of your web application. A flow is an application module that encapsulates a sequences of steps that can execute in different contexts. Flows typically guide a single user through the execution of some business task. They often execute across HTTP requests, have state, exhibit transactional characteristics, are reused, and may be dynamic and long-running in nature. Good examples of flows include a trip booking process, a loan application process, and an insurance quoter. Spring Web Flow exists at a higher level of abstraction, providing you a declarative flow definition language for authoring flows. Web Flow also integrates as a self-contained flow engine within base web frameworks such as Spring MVC. It allows different UI technologies to be integrated, including UI component technologies such as JavaServerFaces. Spring Web Flow lets you capture reusable application UI flow in a declarative, portable, and manageable fashion. It is a powerful controller engine that addresses the "C" in MVC. 2. RELEASE NOTES ---------------- Spring Web Flow 2 requires Java SE 1.4 and Spring Framework 2.5.4 or above to run. Java SE 5.0 with Ant 1.7 is required to build. Release distribution contents: "." contains the Web Flow distribution readme, license, changelog, and copyright "dist" contains the Web Flow distribution jar files "src" contains the Web Flow distribution source jar files "docs" contains the Spring Web Flow reference manual and API Javadocs "projects" contains all buildable projects, including sample applications "projects/build-spring-webflow" is the directory to access to build the Web Flow distribution "projects/spring-build" is the master build system used by all Spring projects, including Spring Web Flow "projects/spring-binding" contains buildable Spring Data Binding project sources, a utility library used by SWF "projects/spring-faces" contains buildable Spring Faces project sources, a library containing SWF's JSF integration "projects/spring-js" contains buildable Spring JavaScript project sources, a library containing client-side Ajax and Dojo integration "projects/spring-webflow" contains buildable Spring Web Flow project sources "projects/spring-webflow-samples" contains buildable Spring Web Flow sample application sources See the readme.txt within the above directories for additional information. Spring Web Flow is released under the terms of the Apache Software License (see license.txt). 3. DISTRIBUTION JAR FILES ------------------------- The following jar files are included in the distribution. The contents of each jar and its dependencies are noted. Dependencies in [brackets] are optional, and are just necessary for certain functionality. * org.springframework.webflow-2.0.9.RELEASE.jar - Contents: The Spring Web Flow system - Dependencies: Commons Logging, spring-core, spring-beans, spring-context, spring-binding, spring-web, spring-webmvc-servlet, spring-js [Log4J, Xerces, XML APIs, OGNL, EL API, JPA API, Hibernate, Spring Security, Servlet API, Portlet API, JUnit] * org.springframework.binding-2.0.9.RELEASE.jar - Contents: The Spring Data Binding framework, a utility library used by Web Flow - Dependencies: Commons Logging, spring-beans, spring-core, spring-context [Log4J, OGNL, EL API] * org.springframework.js-2.0.9.RELEASE.jar - Contents: The Spring JavaScript module, containing Spring's Dojo integration and additional JavaScript functionality. - Dependencies: Dojo Toolkit * org.springframework.faces-2.0.9.RELEASE.jar - Contents: The Spring Faces module, containing Spring's integration with Java Server Faces (JSF) and additional JSF functionality. - Dependencies: spring-webflow, spring-js, JSF API For an exact list of project dependencies, see each project's ivy file at "projects/${project_name}/ivy.xml". 4. GETTING STARTED ------------------ This distribution contains documentation and sample applications demonstrating the features of the Spring Web Flow projects. A great way to get started is to review and run the sample applications, supplementing with reference manual material as you go. To build deployable .war files for all samples, simply access the projects/build-spring-webflow directory and run ant. All projects are directly importable into Eclipse as "Dynamic Web Projects". See http://www.springframework.org/webflow-samples for more information. 5. OBTAINING RELEASE JARS FROM THE SPRINGSOURCE BUNDLE REPOSITORY ----------------------------------------------------------------- Each jar in the Web Flow distribution is available in the SpringSource release repository. These jars may be accessed using Maven or Ivy dependency managers. Browse the contents of the repository by accessing http://www.springsource.com/repository. To access jars using Maven, add the following repositories to your Maven pom: com.springsource.repository.bundles.release SpringSource Enterprise Bundle Repository - SpringSource Releases http://repository.springsource.com/maven/bundles/release com.springsource.repository.bundles.external SpringSource Enterprise Bundle Repository - External Releases http://repository.springsource.com/maven/bundles/external Then declare the following dependencies: org.springframework.webflow org.springframework.binding 2.0.9.RELEASE org.springframework.webflow org.springframework.js 2.0.9.RELEASE org.springframework.webflow org.springframework.webflow 2.0.9.RELEASE If using JavaServerFaces: org.springframework.webflow org.springframework.faces 2.0.9.RELEASE To access jars using Ivy, add the following repositories to your Ivy config: Then declare the following dependencies in your ivy.xml: If using JavaServerFaces: Refer to the reference documentation for more coverage on obtaining Web Flow jars using Maven or Ivy. 6. ADDITIONAL RESOURCES ----------------------- The Spring Web Flow homepage is located at: http://www.springframework.org/webflow There you will find resources such as a 'Quick Start' guide and a 'Frequently Asked Questions' section. The Spring Web Flow community forums are located at: http://forum.springframework.org There you will find an active community of users collaborating about the project. The Spring Community portal is located at: http://www.springframework.org There you will find links to many resources on Spring Portfolio projects, including on-line access to Spring documentation.libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/build-spring-webflow/resources/changelog.txt0000644000000000000000000015453311360615642027712 0ustar SPRING WEB FLOW CHANGELOG ========================= http://www.springframework.org/webflow Changes in version 2.0.9 (2010.04.12) ------------------------------------- * ViewState now ignores case where 'model' expression fails to evaluate (SWF-1176) * Added calls to lock/unlock the coversation when a flow execution is launched (SWF-1213) * Added serialization methods to FlowFacesMessageAdapter as workaround for issue in MyFaces (SWF-1187) * Prevented the wrapping of a converter with ObjectToCollection in cases where the targetClass of the converter is already a collection (SWF-1229) * Upgraded to Dojo 1.2.4 containing security fixes. Changes in version 2.0.8 (2009.08.06) ------------------------------------- Bug Fixes * Corrected the order of "expected" and "actual" arguments in AbstractFlowExecutionTests.assertFlowExecutionOutcomeEquals (SWF-1021) * Corrected the handling of flow definition redirects when using FilenameFlowUrlHandler (SWF-1027) * Fixed incompatibility with JSF 1.1 in JsfView by calling ViewStateManager.saveSerializedView instead of ViewStateManager.saveView (SWF-1112) * Fixed bug where serialization errors could occur during session replication due to ViewActionStateHolder and ViewRootHolder not being Serializable (SWF-1114) * Fixed incompatibility between Spring Faces AjaxViewRoot and RichFaces (SWF-1115) * Fixed bug with binding to Maps when using Spring Bean Binding mode (SWF-1132) * Updated JsfView to use a more reliable method of detecting a post-back when using JSF 1.2+ (SWF-1133) * Fixed bug causing NPE in FlowHandlerAdapter.sendFlowDefinitionRedirect when flowRedirect did not have parameters appended to it (SWF-1144) * Fixed bug in the convention-based validator invocation routine to correctly handle using sub-types as method arguments (SWF-1146) * Corrected some minor issues in the documentation (SWF-1121, SWF-1125) Improvements * Added an example to the documentation of how to handle a file upload with Web Flow (SWF-1113) * Added some info on custom AjaxHandler implementations to the documentation (SWF-1160) * Removed an unnecessary extra invocation of the JSF state saving routine when redirects are disabled (SWF-1162) Changes in version 2.0.7 (2009.04.17) ------------------------------------- Bug Fixes * Fixed several issues with WebFlowMessageCodesResolver algorithm, including a JDK 1.4 compatibility issue (SWF-1064) * Fixed bug in Spring Faces custom ListDataModel implementations related to row selection tracking (SWF-1066) * Fixed bug where subclasses of FacesMessage we do not control could introduce dependencies on JSF-specific services outside of Web Flow's control (SWF-1073) This specifically caused problems with Rich Faces 3.3.0's messages component, which adds a LabeledFacesMessage that requires a FacesContext to be serialized. * Fixed bug where a FlowExecution's flashScope and MessageContext were not cleared when a user had already completed a render response (SWF-1089). * Fixed bug where FlowHandlerMapping was not querying parent flow registries when determining if a flow should handle the current request (SWF-1095). * Fixed bug where flow was not redirecting after ViewState bind/validation error when not an Ajax request and redirectOnPause was set to true (SWF-1096). * Fixed bug where parent Model list could be shared by child in flow definition inheritance algorithm (SWF-1094). * Fixed bug where AjaxTilesView was not checking the AttributeType to determine potentially renderable Tiles Attributes (SWF-1092). * Made FlowExecutionSnapshotGroup public for serialization reasons * Fixed bug where a flow execution snapshot id was not always incremented, which could lead to collisions between multiple windows sharing the same execution (SWF-1098). * Fixed bug where updating ViewState history could result in exceptions if no flow execution key was assigned or no snapshot had been taken (SWF-1099). * Fixed bug where ExternalContext.getFlowExecutionUrl method was not encoding execution URL for rendering by views * Fixed bugs where FlowHandlerAdapter was not encoding flow definition URLs in its default flow outcome and exception handler routines Improvements * Added userEventQueued and getUserEventState methods to View SPI, which simplified ViewState and View object interaction. Custom View implementations will need to be updated to implement these new operations. See View's API JavaDocs and ViewState's doEnter and resume implementations. * Added saveState method to View SPI, allowing stateful views to save out their component state to support going back after exiting a ViewState with history preserved. Required by Spring Faces for stateful JSF views. * Added org.springframework.webflow dm Server library definition for use in a dm Server deployment environment (SWF-1067) * Strengthened contract for response-related methods in ExternalContext. Specifically, calling any of the requestRedirect methods also now completes the response. If you attempt to complete a response more than once against an ExternalContext, an IllegalStateException is thrown. * Documented how to obtain Web Flow development branch snapshots using Maven, for both Maven Central compatible usage and SpringSource Enterprise Bundle Repository usage. * Updated OSGi Manifest imports to allow Web Flow 2.0.7 to work with Spring Framework 3.0.x in a OSGi environment Changes in version 2.0.6 (2009.03.12) ------------------------------------- General * Changed Maven artifact ids for the org.springframework.webflow projects to be consistent with other Spring artifacts published to Maven Central (SWF-993). This change was made to prevent conflicts when resolving artifacts from both Maven Central and the OSGi-ready SpringSource Bundle Repository. NOTE: this change will require an artifact-id update as well as a version update to your poms that obtain Spring Web Flow artifacts from Maven Central. See the reference documentation for updated instructions on obtaining web flow artifacts from Maven Central. Bug Fixes * Fixed bug where ViewState and EndState still sent a response even if another artifact, such as an Action, handled the response by marking ExternalContext.setResponseComplete() (SWF-1061) * Fixed bug where FlowHandlerMapping could not handle null flow id scenarios (SWF-968) * Fixed bug where flow ids were not properly generated when loading flow resources using classpath*: notation (SWF-988, SWF-992) * Fixed bug where file extension was left off URLs generated by Web Flow when servlet mapping was extension-based e.g. *.htm (SWF-988) * Fixed bug where Web Flow upgrader tool did not properly output end-state 'output' elements (SWF-969) * Fixed bug where String to Enum conversions failed to work in conjunction with BeanWrapperExpressionParser, enabled when setting "useSpringBinding" flag on a MvcViewFactoryCreator to true (SWF-1005). * Fixed bug where Collection and Array property bindings did not work with custom converters (SWF-984) * Fixed bug where form:checkbox and form:checkboxes tags did not apply type conversion properly in views rendered by Web Flows (SWF-986) * Fixed bug where Errors nestedPath attribute was not respected in views rendered by Web Flow (SWF-973) * Fixed bug where Errors nestedPath attribute was not respected when using Errors API programatically within a Validator called by Web Flow (SWF-973) * Made MessageCodesResolver pluggable on MvcViewFactoryCreator; configure a DefaultMessageCodesResolver to resolve error message codes consistent with default Spring MVC behavior (SWF-977) * Made FlowHandlerAdapter#sendRedirect method protected, allowing overriding of web flow system redirect behavior; for example, to redirect to a SSL channel. * Made DefaultFlowUrlHandler consistent with Spring MVC RedirectView behavior for URL encoding of flow URL parameters; URL encoding scheme is also now pluggable. * Introduced createDefaultFlowHandler hook in FlowHandlerMapping, allowing for customizing the Default FlowHandler implementation application wide (SWF-994) * Fixed bug where Hibernate and JPA flow execution listeners performed their commits against the flow-managed PersistenceContext after the flow had ended (SWF-1010). This prevented exceptions such as optimistic locking failures from being handled by the flow. Commit processing is now performed in the sessionEnding listener callback now, which is called before the flow actually terminates. * Fixed bug where root flow FlowExecutionExceptionHandlers were queried even when a FlowExecution was not active (SWF-1004). This could occur during FlowExecution startup before the root session had been activated. Specifically, this caused problems when handling AccessDeniedExceptions thrown by the SecurityFlowExecutionListener, which uses the sessionCreated FlowExecutionListener callback to perform a flow startup security check. Before root session activation, a FlowExecution is NOT active, and any exceptions thrown at this time should propagate; root flow execution handlers should not be allowed to handle these exceptions. Improvements * Improved FlowExecution test documentation * Improved FlowExecutionExceptionHandler API documentation * Added documentation on streaming actions Changes in version 2.0.5 (14.11.2008) ------------------------------------- Bug Fixes * Fixed compatibility issue introduced in Web Flow 2.0.4 with previous 2.0.x versions related to request -> flow id mapping. The existing FlowController now applies the previous behavior of "filename-based" request-> flow mapping (see FilenameFlowUrlHandler); for example /hotels/booking URL -> "booking" flow. The new FlowHandlerAdapter used in conjunction with FlowHandlerMapping now applies the new "path-based" request -> flow mapping (see DefaultFlowUrlHandler) ; for example /hotels/booking URL -> "hotels/booking" flow. Use of FlowHandlerAdapter with FlowHandlerMapping and the default path-based mapping (DefaultFlowUrlHandler) is recommended (SWF-939). * Fixed bug introduced in 2.0.4 that broke rendering of multiple view fragments with Tiles (SWF-941). * Render 'fragments' request parameter values are now trimmed consistent with the Web Flow render fragments parameter (SWF-947). * Fixed bug in which model validation never ran if there were data binding errors in Spring MVC-based views. This was inconsistent with previous behavior in Spring MVC's SimpleFormController and in Spring Web Flow 1.0.x, and caused usability concerns. Validation always runs after binding now unless suppressed by a transition (validate=false) or the 'validateOnBindingErrors' flow execution attribute (SWF-949). * Fixed bug where model data binding results were lost after ActionRequest processing in a Portlet environment. This prevented invalid user input values from being rendered correctly when a form re-rendered in the next RenderRequest. Data binding results are now preserved correctly across the Action->Render cycle so all original user input values are preserved (SWF-953). * Fixed bug that prevented a new flow execution snapshot from being taken when entering the same view-state again in the current request. This lead to undesirable back-button behavior, particularly when a flow was called recursively as a subflow. Now a new snapshot is always taken when entering a ViewState, consistent with Web Flow 1.0.x behavior. When no new snapshot is desired, for example, in the case of processing an Ajax event that does not transition the view, do not leave the current state; rather, simply execute actions to handle the event and use 'render' to request re-rendering of parts of the page. * Fixed bug where POJO action methods returning an empty string resulted in an IllegalArgumentException being thrown (SWF-739). * Fixed bug where base-path required a trailing slash in conjunction with flow-location entries (SWF-948). Improvements * Added additional console logging to help debug Spring JavaScript decoration behaviors (SWF-937). * Improved documentation in the area of flow exception handling and security (SWF-922, SWF-944). * Improved logging in the area of view processing, including view rendering, model binding, and model validation. * The model validation invoker will now invoke a default validate(ValidationContext) or validate(Errors) method if present (SWF-666). * It is now possible to use a Errors object anywhere you can use a ValidationContext, for compatibility with existing Spring MVC code (SWF-957). Changes in version 2.0.4 (04.11.2008) ------------------------------------- New Features * Added FlowHandlerMapping for use with FlowHandlerAdapter, simplifying the process of mapping web requests to registered flow definitions. This HandlerMapping strategy maps the path of a request to a registered flow id; for example, a path of '/hotels/booking' would match the flow with id 'hotels/booking'. If no mapping is found, null is returned and the next HandlerMapping in the DispatcherServlet mapping chain will be queried. We recommend use of FlowHandlerMapping and FlowHandlerAdapter over FlowController going forward. See the Spring Travel booking-mvc or booking-faces samples for an example. * A flow-registry configuration may now define a base resource path for flow definitions, for example, /WEB-INF. All flow locations are then defined relative to that path, for example /hotels/booking/booking.xml Often used in conjunction with a flow-location-pattern, such as /**/*-flow.xml. When a base path is defined, a flow id is calculated by extracting the directory path to the flow definition; for example, a flow located at /WEB-INF/hotels/booking/booking.xml would be assigned id "hotels/booking" by default. (SWF-909) * Added a 'development' flag to the flow-builder-services element allowing switching on a "development mode". In development mode, flow definition and message bundle changes are refreshed automatically. (SWF-846) Development mode is off (false) by default. * Added a ValidationContext to pass to validation methods, as an alternative to MessageContext. This new ValidationContext provides access to the MessageContext as well as additional user information. Allows for conditional validation by user event / user principal. (SWF-735) * Added a "with-dependencies" distribution, allowing Web Flow and its sample applications to be built off-line. This is particularly useful for building Web Flow in corporate environments behind a firewall, where access to the SpringSource Enterprise Bundle Repository may be restricted. * Added Maven POMs to the sample applications, allowing the samples to also be built using Maven. Improvements * Upgraded to Spring Framework 2.5.6 * Upgraded to Dojo 1.2 (SWF-883) * The ResourceServlet is now more configurable (SWF-566, SWF-921) * The default ConversionService now supports string-to-Java 5 enum conversion (SWF-827, SWF-834, SWF-911) * Validate all decorations for Ajax forms are now simpler to define (SWF-853) * A Dojo date text box now uses a locale specific date format when gracefully degrading (SWF-844) * Added numerous improvements to the reference guide documentation Bug Fixes * Fixed bug where a registered ConversionService was not auto-wired with the default ExpressionParser implementation. This prevented user-installed type converters from being applied without explicit configuration. * Fixed bugs limiting compatibility with IE 6 for Spring Faces and Spring JS (SWF-786, SWF-770) * Global transitions can now be merged for flow inheritance (SWF-733) * Transitions on-exception will now match exceptions thrown from an OGNL expression. (SWF-780) * Child flow definitions are now able to inherit from a flow in the parent flow registry (SWF-815) * Fixed issue with EL binding to map properties in Resin (SWF-832) * Ajax enabled forms will now be submit using the HTTP method defined on the form tag (SWF-851) * If a specific converter is defined for a property, it will always be used even if the source and target types do not match the converter (SWF-896) * Ajax request can now render nested Tiles definitions as a fragment (SWF-916) * Global transitions now fire the transitionExecuting event for global transitions (SWF-923) * Removed unsafe Java 5 API calls to maintain 1.4 compatibility (SWF-926) * Type conversion errors in the binding subsystem now resolve properly to the typeMismatch message for the property (SWF-928) * Flow application contexts are now explicitly closed when the flow registry is destroyed (SWF-929) Changes in version 2.0.3 (31.07.2008) ------------------------------------- New Features * Introduced view-state sub-element, allowing the model bindings to be configured explicitly per view (SWF-568). This allows you to restrict the allowed field->model bindings. It also allows you to register a custom type Converter per field by referring to it by its identifier; e.g. "shortDate". In addition, you can set basic binding value constraints such as required=true. See the 'Views' section of the reference documentation for more information and the Spring Travel booking-mvc sample for an example. * You can now use Spring's own DataBinder for form data binding; as an alternative to OGNL or Unified EL. This allows you to take advantage of the unique features of the DataBinder such as the ability to apply type conversion to elements of a generic collection. To do this, set the "useSpringBeanBinding" property to true on a custom MvcViewFactoryCreator instance. See the Config section of the reference documentation for how to install a custom ViewFactoryCreator. * Added the ability to disable model validation per transition by setting validate="false". This allows enabling binding but disabling validation; useful when going back between pages. See the 'Views' section of the reference documentation for more information. * Introduced new flavor of the Spring Travel referenced application built to run as a set of OSGi bundles on the SpringSource Application Platform in a PAR deployment unit. Access spring-webflow-samples/platform-spring-travel to review and build the sample. * Now ensure that Spring Faces now outputs Javascript blocks that are valid for both HTML and XHTML content types (SWF-785). Improvements * Unified the "Formatter" and "Conversion" systems into a single "Conversion" type conversion system. This unified type conversion system is now used consistently throughout Web Flow, including for view data binding. Simplified the Converter API to make it easier to implement custom converters, including TwoWayConverters. See the example converters in org.springframework.binding.convert.converters package for example Converter implementations. To plug in your own custom converters, register a custom ConversionService. Custom converters will be usable immediately throughout the system, and can be aliased e.g. "shortDate". See the Config section of the reference documentation for how to install a custom ConversionService, and the booking-mvc sample for an example. * Made several improvements to the documentation. Added coverage of action-states and decision-states (SWF-721). Also added converage of the new view-state binder element. * Added support for rendering .jspx views selected by a flow in a Spring MVC environment (SWF-793). * Error responses returned as the result of handling an Ajax request are now displayed in an error popup dialog by default (SWF-783). * Made the eventId request parameter configurable in a Spring MVC environment (SWF-731). Bug Fixes * Fixed a bug preventing binding of String[] array request parameters to collection properties in a Spring MVC environment (SWF-720). This bug effected use of and tags. * Fixed a bug where classpath: resource loading prefix was not respected within a Flow ApplicationContext (SWF-743). This prevented loading of classpath-based resources defined in flow beans files imported using the tag. * Fixed a bug where the Severity.FATAL severity was lost in the mapping of a JSF FacesMessage to a Spring Message (SWF-752). Added Severity.FATAL as a supported message severity. * Fixed a bug where the "detail" part of a FacesMessage was lost in the mapping of a JSF FacesMessages to a Spring Message (SWF-751). * Fixed a bug where transitioning back to the originating view-state within one request always triggered a redirect (SWF-808). Redirect+after+post is appropriate for non-Ajax requests, but was not appropriate for Ajax requests. * Fixed a bug where attempting to render a view from an end-state resulted in an exception (SWF-711). * Fixed a bug where flows where not accessible inside unexpanded WAR archives (SWF-784). * Fixed several browser compatibility bugs affecting IE 6 with Spring Javascript (SWF-764). Changes in version 2.0.2 (06.06.2008) ------------------------------------- New Features * Allow flow-execution-repository max-execution-snapshots to be set to 0 to disable snapshotting (SWF-709). Use this to disable serialization-based execution state snapshotting. Note that browser back button use is not supported when this option is enabled. Improvements * Added syntax highlighting to the reference manual. * Documented the Default ExpressionParser configuration for Spring Faces (SWF-707). * Documented transition actions and how to restrict transition execution by returning action error results (SWF-715). * Documented how to link in parent flows in a test environment when using inheritance (SWF-694) * Documented how to access Web Flow Nightly Builds from the SpringSource Bundle Repository (SWF-710). * Simplified Spring Security Config across the booking samples (SWF-724). * Now set Locale of UIViewRoot to the Spring MVC Request Locale for JSF-based Spring MVC Views (SWF-659). Bug Fixes * Fixed a bug preventing use of Faces commandLinks or commandButtons inside facet definitions (SWF-692). * Fixed a bug where Spring.ElementDecoration did not properly copy styles from the decorated node (SWF-703). * Fixed a bug where ajaxEnabled="false" did not work properly with the Faces commandLink (SWF-700). * Fixed a bug the Spring Web MVC AjaxView was not properly sending Ajax redirect requests to Spring.js (SWF-682). * Fixed a bug in Spring.js related to regexp matching of ]]> ]]> libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-build/multi-bundle/quality.xml0000644000000000000000000000734311360615642026354 0ustar libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-build/library/0000755000000000000000000000000011360615646023202 5ustar libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-build/library/default.xml0000644000000000000000000000035211360615644025346 0ustar libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-build/library/artifact.xml0000644000000000000000000000216511360615636025524 0ustar libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-build/library/package.xml0000644000000000000000000000106011360615646025314 0ustar libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-build/library/publish.xml0000644000000000000000000000427311360615634025375 0ustar libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-build/library/common.xml0000644000000000000000000000024511360615634025212 0ustar libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-build/library/quality.xml0000644000000000000000000000071511360615634025414 0ustar libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-build/war/0000755000000000000000000000000011360615642022323 5ustar libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-build/war/default.xml0000644000000000000000000000034611360615634024475 0ustar libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-build/war/artifact.xml0000644000000000000000000000517711360615634024655 0ustar libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-build/war/package.xml0000644000000000000000000000064411360615636024447 0ustar libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-build/war/publish.xml0000644000000000000000000000350211360615642024513 0ustar libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-build/war/common.xml0000644000000000000000000000171211360615634024337 0ustar libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-build/war/quality.xml0000644000000000000000000000314211360615642024535 0ustar libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-build/resource/0000755000000000000000000000000011360615644023363 5ustar libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-build/resource/default.xml0000644000000000000000000000035311360615642025530 0ustar libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-build/resource/artifact.xml0000644000000000000000000000157111360615634025705 0ustar libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-build/resource/package.xml0000644000000000000000000000102411360615644025475 0ustar libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-build/resource/publish.xml0000644000000000000000000000415011360615632025550 0ustar libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-build/resource/common.xml0000644000000000000000000000024611360615640025373 0ustar libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-build/resource/quality.xml0000644000000000000000000000071611360615632025576 0ustar libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-build/standard/0000755000000000000000000000000011360615642023332 5ustar libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-build/standard/default.xml0000644000000000000000000000035311360615636025504 0ustar libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-build/standard/artifact.xml0000644000000000000000000000206211360615632025650 0ustar libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-build/standard/package.xml0000644000000000000000000000023211360615636025447 0ustar libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-build/standard/publish.xml0000644000000000000000000000023211360615640025515 0ustar libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-build/standard/common.xml0000644000000000000000000000171711360615634025353 0ustar libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-build/standard/quality.xml0000644000000000000000000000023211360615642025541 0ustar libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-build/common/0000755000000000000000000000000011360615644023024 5ustar libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-build/common/artifact.xml0000644000000000000000000001001711360615640025336 0ustar libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-build/common/package.xml0000644000000000000000000000636511360615632025150 0ustar libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-build/common/publish.xml0000644000000000000000000000703011360615636025215 0ustar libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-build/common/ivysettings.xml0000644000000000000000000000706511360615642026144 0ustar libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-build/common/common.properties0000644000000000000000000001263411360615642026436 0ustar # Common Properties lib.dir=${spring.build.dir}/lib artifacts.dir=${target.dir}/artifacts target.dir=${basedir}/target ci.build=false natural.name=${ant.project.name} build.stamp=BUILD-${timestamp} bundle.version=${version}.${build.stamp} publish.bucket=repository.springsource.com local.repo.dir=${java.io.tmpdir}/local-repository # Artifact Properties main.java.dir=${basedir}/src/main/java main.resources.dir=${basedir}/src/main/resources main.output.dir=${target.dir}/classes main.webapp.dir=${basedir}/src/main/webapp # Javadoc Properties javadoc-all.output.dir=${target.dir}/javadoc-all javadoc-api.output.dir=${target.dir}/javadoc-api javadoc.prep.dir=${target.dir}/javadoc-prep javadoc.exclude.package.names= javadoc.stylesheet.file=${spring.build.dir}/common/spring-javadoc.css javadoc.resources.dir=${spring.build.dir}/common/javadoc-resources javadoc.max.memory=128M # JAR Properties implementation.title=${ant.project.name} implementation.version=${bundle.version} jar.output.dir=${artifacts.dir} jar.output.file=${jar.output.dir}/${ant.project.name}.jar source-jar.output.dir=${artifacts.dir} source-jar.output.file=${source-jar.output.dir}/${ant.project.name}-sources.jar # PAR Properties par.output.dir=${artifacts.dir} par.output.file=${par.output.dir}/${ant.project.name}.par par.provided.dir=${target.dir}/par-provided par.provided.bundles.dir=${par.provided.dir}/bundles par.provided.libraries.dir=${par.provided.dir}/libraries par.staging.dir=${target.dir}/par-expanded application.name= application.description= # Web Module Properties web.module.output.dir=${artifacts.dir} web.module.output.file=${web.module.output.dir}/${ant.project.name}.jar web.module.staging.dir=${target.dir}/web-module-expanded web.module.classes.dir=${web.module.staging.dir}/WEB-INF/classes # Library Properties libd.input.file=${basedir}/${ant.project.name}.libd libd.output.dir=${artifacts.dir} libd.output.file=${libd.output.dir}/${ant.project.name}.libd # Resource Properties resource.src.dir=${basedir}/src # WAR Properties war.output.dir=${artifacts.dir} war.output.file=${war.output.dir}/${ant.project.name}.war war.staging.dir=${target.dir}/war-expanded war.classes.dir=${war.staging.dir}/WEB-INF/classes war.lib.dir=${war.staging.dir}/WEB-INF/lib # Compiler Properties org.springframework.build.ant.version=1.1.0.RELEASE org.eclipse.jdt.core.compiler.batch.version=3.3.0 build.compiler=org.eclipse.jdt.core.JDTCompilerAdapter compile.debug=true compile.debug.level=lines,vars,source compiler.args=-enableJavadoc source.version=1.5 target.version=${source.version} # Package Properties copy.to.dir=${package.dist.dir} package.dir=${target.dir}/package-expanded package.basename=${natural.name}-${bundle.version} package.file.name=${package.basename}.zip package.output.dir=${package.dir}/${package.basename} package.output.file=${artifacts.dir}/${package.file.name} package.dist.dir=${package.output.dir}/dist package.lib.dir=${package.output.dir}/lib package.src.dir=${package.output.dir}/src package.docs.dir=${package.output.dir}/docs package.jar.output.file=${ant.project.name}-${bundle.version}.jar package.par.output.file=${ant.project.name}-${bundle.version}.par package.libd.output.file=${ant.project.name}-${bundle.version}.libd package.war.output.file=${ant.project.name}-${bundle.version}.war package.source-jar.output.file=${ant.project.name}-sources-${bundle.version}.jar org.springframework.build.aws.ant.version=3.0.3.RELEASE # AspectJ Properties org.aspectj.tools.version=1.6.3.RELEASE # Test Properties test.java.dir=${basedir}/src/test/java test.resources.dir=${basedir}/src/test/resources test.output.dir=${target.dir}/test-classes test-results.output.dir=${target.dir}/test-results test.vm.args= # Clover Properties clover.db.file=${clover.output.dir}/db/clover.db clover.output.dir=${target.dir}/clover clover.staging.dir=${clover.output.dir}/staging main.clover.dir=${clover.staging.dir}/main test.clover.dir=${clover.staging.dir}/test com.springsource.com.cenqua.clover.version=2.4.2 clover.enforce=false clover.coverage=0% # Docbook Properties docbook.dir=${lib.dir}/docbook docbook.target.dir=${target.dir}/docbook org.apache.velocity.docbookframework.dist.version=1.0.0.BUILD-20080625 com.springsource.net.sf.xslthl.version=1.2.0 com.springsource.org.apache.xerces.version=2.8.1 docbook.build.dir=${spring.build.dir}/docbook docbook.output.dir=${target.dir}/${ant.project.name} docbook.staging.dir=${docbook.target.dir}/staging docbook.src.dir=${basedir}/src docbook.images.dir=${basedir}/images # Findbugs Properties findbugs.dir=${lib.dir}/findbugs findbugs.exclude.file=${spring.build.dir}/common/findbugs-exclude.xml findbugs.output.dir=${target.dir}/findbugs findbugs.output.file=${findbugs.output.dir}/${ant.project.name}.xml edu.umd.cs.findbugs.version=1.3.7 # Ivy Properties bucket.basename=springframework.org release.type=integration ivy.checksums=sha1 ivy.deliver.revision=${bundle.version} ivy.file=${basedir}/ivy.xml ivy.lib.dir=${lib.dir}/ivy ivy.output.dir=${artifacts.dir} ivy.output.file=${ivy.output.dir}/ivy.xml ivy.settings.file=${spring.build.dir}/common/ivysettings.xml # Maven Properties pom.output.dir=${artifacts.dir} pom.output.file=${pom.output.dir}/pom.xml local.pom.output.file=${basedir}/pom.xml org.apache.maven.ant.version=2.0.8 org.springframework.build.aws.maven.version=2.0.0.RELEASE # Bundlor Properties bundlor.ant.version=1.0.0.M4 manifest.template.file=${basedir}/template.mf merge.existing.headers=true #S3 Properties accessKey= secretKey= libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-build/common/common.xml0000644000000000000000000002015211360615642025034 0ustar
]]>
]]>
libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-build/common/javadoc-resources/0000755000000000000000000000000011360615632026440 5ustar ././@LongLink0000000000000000000000000000017100000000000011564 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-build/common/javadoc-resources/TableHeading-background.pnglibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-build/common/javadoc-resources/TableHe0000644000000000000000000000543111360615632027672 0ustar ‰PNG  IHDR$®]›H pHYs  šœ OiCCPPhotoshop ICC profilexÚSgTSé=÷ÞôBKˆ€”KoR RB‹€‘&*! Jˆ!¡ÙQÁEEÈ ˆŽŽ€ŒQ, Š Øä!¢Žƒ£ˆŠÊûá{£kÖ¼÷æÍþµ×>ç¬ó³ÏÀ –H3Q5€ ©BàƒÇÄÆáä.@ $p³d!sý#ø~<<+"À¾xÓ ÀM›À0‡ÿêB™\€„Àt‘8K€@zŽB¦@F€˜&S `ËcbãP-`'æÓ€ø™{[”! ‘ eˆDh;¬ÏVŠEX0fKÄ9Ø-0IWfH°·ÀÎ ² 0Qˆ…){`È##x„™FòW<ñ+®ç*x™²<¹$9E[-qWW.(ÎI+6aaš@.Ây™24àóÌ ‘àƒóýxήÎÎ6޶_-ê¿ÿ"bbãþåÏ«p@át~Ñþ,/³€;€mþ¢%îh^  u÷‹f²@µ éÚWópø~<ß5°j>{‘-¨]cöK'XtÀâ÷ò»oÁÔ(€hƒáÏwÿï?ýG %€fI’q^D$.Tʳ?ÇD *°AôÁ,ÀÁÜÁ ü`6„B$ÄÂBB d€r`)¬‚B(†Í°*`/Ô@4ÀQh†“p.ÂU¸=púažÁ(¼ AÈa!ÚˆbŠX#Ž™…ø!ÁH‹$ ɈQ"K‘5H1RŠT UHò=r9‡\Fº‘;È2‚ü†¼G1”²Q=Ô µC¹¨7„F¢ Ðdt1š ›Ðr´=Œ6¡çЫhÚ>CÇ0Àè3Äl0.ÆÃB±8, “c˱"¬ «Æ°V¬»‰õcϱwEÀ 6wB aAHXLXNØH¨ $4Ú 7 „QÂ'"“¨K´&ºùÄb21‡XH,#Ö/{ˆCÄ7$‰C2'¹I±¤TÒÒFÒnR#é,©›4H#“ÉÚdk²9”, +È…ääÃä3ää!ò[ b@q¤øSâ(RÊjJåå4åe˜2AU£šRݨ¡T5ZB­¡¶R¯Q‡¨4uš9̓IK¥­¢•Óhh÷i¯ètºÝ•N—ÐWÒËéGè—èôw †ƒÇˆg(›gw¯˜L¦Ó‹ÇT071ë˜ç™™oUX*¶*|‘Ê •J•&•*/T©ª¦ªÞª UóUËT©^S}®FU3Sã© Ô–«UªPëSSg©;¨‡ªg¨oT?¤~Yý‰YÃLÃOC¤Q ±_ã¼Æ c³x,!k «†u5Ä&±ÍÙ|v*»˜ý»‹=ª©¡9C3J3W³Ró”f?ã˜qøœtN ç(§—ó~ŠÞï)â)¦4L¹1e\kª–—–X«H«Q«Gë½6®í§¦½E»YûAÇJ'\'GgÎçSÙSݧ §M=:õ®.ªk¥¡»Dw¿n§î˜ž¾^€žLo§Þy½çú}/ýTýmú§õG X³ $Û Î<Å5qo</ÇÛñQC]Ã@C¥a•a—á„‘¹Ñ<£ÕFFŒiÆ\ã$ãmÆmÆ£&&!&KMêMîšRM¹¦)¦;L;LÇÍÌÍ¢ÍÖ™5›=1×2ç›ç›×›ß·`ZxZ,¶¨¶¸eI²äZ¦Yî¶¼n…Z9Y¥XUZ]³F­­%Ö»­»§§¹N“N«žÖgðñ¶É¶©·°åØÛ®¶m¶}agbg·Å®Ã“}º}ý= ‡Ù«Z~s´r:V:ޚΜî?}Åô–é/gXÏÏØ3ã¶Ë)ÄiS›ÓGgg¹sƒóˆ‹‰K‚Ë.—>.›ÆÝȽäJtõq]ázÒõ›³›Âí¨Û¯î6îiî‡ÜŸÌ4Ÿ)žY3sÐÃÈCàQåÑ? Ÿ•0k߬~OCOgµç#/c/‘W­×°·¥wª÷aï>ö>rŸã>ã<7Þ2ÞY_Ì7À·È·ËOÃož_…ßC#ÿdÿzÿѧ€%g‰A[ûøz|!¿Ž?:Ûeö²ÙíAŒ ¹AA‚­‚åÁ­!hÈì­!÷ç˜Î‘Îi…P~èÖÐaæa‹Ã~ '…‡…W†?ŽpˆXÑ1—5wÑÜCsßDúD–DÞ›g1O9¯-J5*>ª.j<Ú7º4º?Æ.fYÌÕXXIlK9.*®6nl¾ßüíó‡ââ ã{˜/È]py¡ÎÂô…§©.,:–@LˆN8”ðA*¨Œ%òw%Ž yÂÂg"/Ñ6шØC\*NòH*Mz’쑼5y$Å3¥,幄'©¼L LÝ›:žšv m2=:½1ƒ’‘qBª!M“¶gêgæfvˬe…²þÅn‹·/•Ék³¬Y- ¶B¦èTZ(×*²geWf¿Í‰Ê9–«ž+Íí̳ÊÛ7œïŸÿíÂá’¶¥†KW-X潬j9²‰Š®Û—Ø(Üxå‡oÊ¿™Ü”´©«Ä¹dÏfÒféæÞ-ž[–ª—æ—n ÙÚ´ ßV´íõöEÛ/—Í(Û»ƒ¶C¹£¿<¸¼e§ÉÎÍ;?T¤TôTúT6îÒݵa×ønÑî{¼ö4ìÕÛ[¼÷ý>ɾÛUUMÕfÕeûIû³÷?®‰ªéø–ûm]­NmqíÇÒý#¶×¹ÔÕÒ=TRÖ+ëGǾþïw- 6 UœÆâ#pDyäé÷ ß÷ :ÚvŒ{¬áÓvg/jBšòšF›Sšû[b[ºOÌ>ÑÖêÞzüGÛœ499â?rýéü§CÏdÏ&žþ¢þË®/~øÕë×Îјѡ—ò—“¿m|¥ýêÀë¯ÛÆÂƾÉx31^ôVûíÁwÜwï£ßOä| (ÿhù±õSЧû“““ÿ˜óüc3-Û cHRMz%€ƒùÿ€éu0ê`:˜o’_ÅFDIDATxÚbäL–ûÏ€˜Ð à T"´ü'd†l†þ'Ña,ÿÿ‘êrTü§‰¡ÿH7”°µCŒ2â00”0Þuø¢IEND®B`‚libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-build/common/findbugs-exclude.xml0000644000000000000000000000016411360615632026774 0ustar libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-build/common/spring-javadoc.css0000644000000000000000000000356111360615636026453 0ustar /* stylesheet.css 2008/04/22 nicolekonicki */ /* * * Spring-specific Javadoc style sheet * */ .code { border: 1px solid black; background-color: #F4F4F4; padding: 5px; } body { font: 12px Verdana, Arial, Helvetica, "Bitstream Vera Sans", sans-serif; background-color: #fff; color: #333; } /* Link colors */ a { color:#2c7b14; text-decoration:none; } a:hover { text-decoration:underline; } /* Headings */ h1 { font-size:28px; color:#007c00; } /* Table colors */ table { border:none; } td { border:none; border-bottom:1px dotted #ddd; } th { border:none; } .TableHeadingColor th { background-color: #efffcb; background-image: url(resources/TableHeading-background.png); background-repeat: repeat-x; color:#fff; font-size:14px; height:26px; } .TableSubHeadingColor { background: #f7ffee; } .TableRowColor { background: #fff; } .TableRowColor a { border-bottom:none; color:#2c7b14; font-weight:normal; } tr.TableRowColor:hover { background:#eef2e1; } /* Font used in left-hand frame lists */ .FrameTitleFont { font-size: 120%; font-weight:bold; } .FrameTitleFont a { color: #333; } .FrameHeadingFont { font-weight: bold; font-size:95%; } .FrameItemFont { line-height:130%; font-size: 95%; } .FrameItemFont a { color:#333; } .FrameItemFont a:hover { color:#249901; border-bottom:none; text-decoration:underline; } /* Navigation bar fonts and colors */ .NavBarCell1 { background-color:#fff; border:none; } .NavBarCell1Rev { background-color:#e3faa5; border:1px solid #9ad00c; padding:0; margin:0; } .NavBarCell1 a { color:#333; text-decoration:none; } .NavBarFont1Rev { } .NavBarCell2 { border:none; } .NavBarCell2 a { color:#249901; font-size:90%; } .NavBarCell3 { border:none; } /* Override sizes in font tags */ font { font: inherit !important; } libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-build/common/quality.xml0000644000000000000000000002105111360615636025236 0ustar ././@LongLink0000000000000000000000000000015200000000000011563 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-build/common/default-ivy-configurations.xmllibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-build/common/default-ivy-configuration0000644000000000000000000000213411360615644030045 0ustar libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-build/weaving-external/0000755000000000000000000000000011360615644025014 5ustar libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-build/weaving-external/default.xml0000644000000000000000000000036311360615644027164 0ustar libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-build/weaving-external/artifact.xml0000644000000000000000000000604211360615634027334 0ustar libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-build/weaving-external/package.xml0000644000000000000000000000024211360615642027125 0ustar libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-build/weaving-external/publish.xml0000644000000000000000000000024211360615634027201 0ustar libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-build/weaving-external/common.xml0000644000000000000000000000172711360615634027034 0ustar libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-build/weaving-external/quality.xml0000644000000000000000000000354311360615634027232 0ustar libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-build/weaving/0000755000000000000000000000000011360615640023170 5ustar libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-build/weaving/default.xml0000644000000000000000000000035211360615640025336 0ustar libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-build/weaving/artifact.xml0000644000000000000000000000676411360615632025525 0ustar libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-build/weaving/package.xml0000644000000000000000000000023111360615640025301 0ustar libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-build/weaving/publish.xml0000644000000000000000000000023111360615632025355 0ustar libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-build/weaving/common.xml0000644000000000000000000000171611360615632025210 0ustar libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-build/weaving/quality.xml0000644000000000000000000000172211360615632025405 0ustar libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-build/docbook/0000755000000000000000000000000011360615640023150 5ustar libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-build/docbook/default.xml0000644000000000000000000000032111360615632025313 0ustar libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-build/docbook/package.xml0000644000000000000000000000067711360615634025302 0ustar libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-build/docbook/publish.xml0000644000000000000000000000155711360615640025350 0ustar libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-build/docbook/css/0000755000000000000000000000000011360615632023741 5ustar libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-build/docbook/css/html/0000755000000000000000000000000011360615632024705 5ustar libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-build/docbook/css/html/stylesheet.css0000644000000000000000000000145011360615632027610 0ustar @IMPORT url("highlight.css"); html { padding: 0pt; margin: 0pt; } body { margin-left: 10%; margin-right: 10%; font-family: Arial, Sans-serif; } div { margin: 0pt; } p { text-align: justify; } hr { border: 1px solid gray; background: gray; } h1,h2,h3,h4 { color: #234623; font-family: Arial, Sans-serif; } pre { line-height: 1.0; color: black; } pre.programlisting { font-size: 10pt; padding: 7pt 3pt; border: 1pt solid black; background: #eeeeee; clear: both; } div.table { margin: 1em; padding: 0.5em; text-align: center; } div.table table { display: table; width: 100%; } div.table td { padding-left: 7px; padding-right: 7px; } libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-build/docbook/css/html/highlight.css0000644000000000000000000000063711360615632027374 0ustar /* code highlight CSS resemblign the Eclipse IDE default color schema @author Costin Leau */ .hl-keyword { color: #7F0055; font-weight: bold; } .hl-comment { color: #3F5F5F; font-style: italic; } .hl-multiline-comment { color: #3F5FBF; font-style: italic; } .hl-tag { color: #3F7F7F; } .hl-attribute { color: #7F007F; } .hl-value { color: #2A00FF; } .hl-string { color: #2A00FF; }libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-build/docbook/common.xml0000644000000000000000000000017211360615636025167 0ustar libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-build/docbook/styles/0000755000000000000000000000000011360615632024474 5ustar libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-build/docbook/styles/pdf/0000755000000000000000000000000011360615636025251 5ustar libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-build/docbook/styles/pdf/custom.xsl0000644000000000000000000006120011360615632027306 0ustar '1' @file.prefix@@dbf.xsl@/images/ 1 book toc,title 1 please define productname in your docbook file! please define titleabbrev in your docbook file! please define titleabbrev in your docbook file! 1 0 1 1 1 1 1 left false 12 8 1.2 left bold pt 0.8em 0.8em 0.8em pt 0.1em 0.1em 0.1em 0.6em 0.6em 0.6em pt 0.1em 0.1em 0.1em 0.4em 0.4em 0.4em pt 0.1em 0.1em 0.1em 4pt 4pt 4pt 4pt 0.1pt 0.1pt pt 1em 1em 1em 0.1em 0.1em 0.1em #444444 solid 0.1pt 0.5em 0.5em 0.5em 0.5em 0em 0em 1 #F0F0F0 0.1em 0.1em 0.1em 0.1em 0.1em 0.1em normal 0.5em 0.5em 0.5em 0.1em 0.1em 0.1em always normal italic pt false 0.1em 0.1em 0.1em 0 1 90 figure after example after equation before table before procedure before 1 0pt ././@LongLink0000000000000000000000000000014500000000000011565 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-build/docbook/styles/pdf/titlepage.xmllibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-build/docbook/styles/pdf/titlepage.xml0000644000000000000000000000654311360615636027761 0ustar ]> <subtitle text-align="center" font-size="&hsize4;" space-before="&hsize4space;" font-family="{$title.fontset}" /> <corpauthor space-before="0.5em" font-size="&hsize2;" /> <authorgroup space-before="0.5em" font-size="&hsize2;" /> <author space-before="0.5em" font-size="&hsize2;"/> <mediaobject space-before="2em" space-after="2em"/> <releaseinfo space-before="5em" font-size="&hsize2;"/> <othercredit space-before="2em" font-weight="normal" font-size="8"/> <pubdate space-before="0.5em"/> <revision space-before="0.5em"/> <revhistory space-before="0.5em"/> <abstract space-before="0.5em" text-align="start" margin-left="0.1in" margin-right="0.1in" font-family="{$body.fontset}" /> </t:titlepage-content> <t:titlepage-content t:side="verso" text-align="start"> <copyright space-before="1.5em"/> <legalnotice space-before="15em"/> </t:titlepage-content> <t:titlepage-separator> </t:titlepage-separator> <t:titlepage-before t:side="recto"> </t:titlepage-before> <t:titlepage-before t:side="verso"> </t:titlepage-before> </t:titlepage> <!-- ==================================================================== --> </t:templates> �������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-build/docbook/styles/html/������������0000755�0000000�0000000�00000000000�11360615640�025437� 5����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-build/docbook/styles/html/custom.xsl��0000644�0000000�0000000�00000011564�11360615640�027510� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������<?xml version="1.0" encoding="UTF-8"?> <!-- Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with this work for additional information regarding copyright ownership. The ASF licenses this file to you under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. --> <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:xslthl="http://xslthl.sf.net" exclude-result-prefixes="xslthl" version='1.0'> <!-- Extensions --> <xsl:param name="use.extensions">1</xsl:param> <xsl:param name="tablecolumns.extension">0</xsl:param> <xsl:param name="callout.extensions">1</xsl:param> <!-- Activate Graphics --> <xsl:param name="admon.graphics" select="1"/> <xsl:param name="admon.graphics.path">images/</xsl:param> <xsl:param name="admon.graphics.extension">.gif</xsl:param> <xsl:param name="callout.graphics" select="1" /> <xsl:param name="callout.defaultcolumn">120</xsl:param> <xsl:param name="callout.graphics.path">images/callouts/</xsl:param> <xsl:param name="callout.graphics.extension">.gif</xsl:param> <xsl:param name="table.borders.with.css" select="1"/> <xsl:param name="html.stylesheet">css/stylesheet.css</xsl:param> <xsl:param name="html.stylesheet.type">text/css</xsl:param> <xsl:param name="generate.toc">book toc,title</xsl:param> <xsl:param name="admonition.title.properties">text-align: left</xsl:param> <!-- Leave image paths as relative when navigating XInclude --> <xsl:param name="keep.relative.image.uris" select="1"/> <!-- Label Chapters and Sections (numbering) --> <xsl:param name="chapter.autolabel" select="1"/> <xsl:param name="section.autolabel" select="1"/> <xsl:param name="section.autolabel.max.depth" select="1"/> <xsl:param name="section.label.includes.component.label" select="1"/> <xsl:param name="table.footnote.number.format" select="'1'"/> <!-- Show only Sections up to level 1 in the TOCs --> <xsl:param name="toc.section.depth">1</xsl:param> <!-- Remove "Chapter" from the Chapter titles... --> <xsl:param name="local.l10n.xml" select="document('')"/> <l:i18n xmlns:l="http://docbook.sourceforge.net/xmlns/l10n/1.0"> <l:l10n language="en"> <l:context name="title-numbered"> <l:template name="chapter" text="%n. %t"/> <l:template name="section" text="%n %t"/> </l:context> </l:l10n> </l:i18n> <!-- Use code syntax highlighting --> <xsl:param name="highlight.source" select="1"/> <xsl:template match='xslthl:keyword'> <span class="hl-keyword"><xsl:value-of select='.'/></span> </xsl:template> <xsl:template match='xslthl:comment'> <span class="hl-comment"><xsl:value-of select='.'/></span> </xsl:template> <xsl:template match='xslthl:oneline-comment'> <span class="hl-comment"><xsl:value-of select='.'/></span> </xsl:template> <xsl:template match='xslthl:multiline-comment'> <span class="hl-multiline-comment"><xsl:value-of select='.'/></span> </xsl:template> <xsl:template match='xslthl:tag'> <span class="hl-tag"><xsl:value-of select='.'/></span> </xsl:template> <xsl:template match='xslthl:attribute'> <span class="hl-attribute"><xsl:value-of select='.'/></span> </xsl:template> <xsl:template match='xslthl:value'> <span class="hl-value"><xsl:value-of select='.'/></span> </xsl:template> <xsl:template match='xslthl:string'> <span class="hl-string"><xsl:value-of select='.'/></span> </xsl:template> <!-- Google Analytics --> <xsl:template name="user.head.content"> <xsl:comment>Begin Google Analytics code</xsl:comment> <script type="text/javascript"> var gaJsHost = (("https:" == document.location.protocol) ? "https://ssl." : "http://www."); document.write(unescape("%3Cscript src='" + gaJsHost + "google-analytics.com/ga.js' type='text/javascript'%3E%3C/script%3E")); </script> <script type="text/javascript"> var pageTracker = _gat._getTracker("UA-2728886-3"); pageTracker._setDomainName("none"); pageTracker._setAllowLinker(true); pageTracker._trackPageview(); </script> <xsl:comment>End Google Analytics code</xsl:comment> </xsl:template> <!-- Loopfuse --> <xsl:template name="user.footer.content"> <xsl:comment>Begin LoopFuse code</xsl:comment> <script src="http://loopfuse.net/webrecorder/js/listen.js" type="text/javascript"> </script> <script type="text/javascript"> _lf_cid = "LF_48be82fa"; _lf_remora(); </script> <xsl:comment>End LoopFuse code</xsl:comment> </xsl:template> </xsl:stylesheet>��������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000146�00000000000�011566� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-build/docbook/styles/html/titlepage.xml���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-build/docbook/styles/html/titlepage.xm0000644�0000000�0000000�00000003355�11360615632�027772� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������<?xml version="1.0" encoding="UTF-8"?> <!-- Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with this work for additional information regarding copyright ownership. The ASF licenses this file to you under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. --> <t:templates xmlns:t="http://nwalsh.com/docbook/xsl/template/1.0" xmlns:param="http://nwalsh.com/docbook/xsl/template/1.0/param" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> <!-- ==================================================================== --> <t:titlepage t:element="book" t:wrapper="div" class="titlepage"> <t:titlepage-content t:side="recto"> <title/> <subtitle/> <corpauthor/> <authorgroup/> <author/> <mediaobject/> <othercredit/> <productname/> <releaseinfo/> <copyright/> <pubdate/> <revision/> <revhistory/> <abstract/> </t:titlepage-content> <t:titlepage-content t:side="verso"> <legalnotice/> </t:titlepage-content> <t:titlepage-separator> <hr/> </t:titlepage-separator> <t:titlepage-before t:side="recto"> </t:titlepage-before> <t:titlepage-before t:side="verso"> </t:titlepage-before> </t:titlepage> </t:templates> �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-build/docbook/documentation.xml�������0000644�0000000�0000000�00000014656�11360615636�026564� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������<?xml version="1.0" encoding="UTF-8"?> <project name="documentation-docbook" xmlns:ivy="antlib:org.apache.ivy.ant"> <import file="common.xml"/> <filterset id="docbook.filters" /> <!-- Main targets --> <target name="doc-html" depends="docbook.init" description="Creates both the single and multi-page HTML versions of the reference documentation."> <delete quiet="true" dir="${docbook.output.dir}/html"/> <delete quiet="true" dir="${docbook.output.dir}/htmlsingle"/> <mkdir dir="${docbook.output.dir}"/> <mkdir dir="${docbook.staging.dir}"/> <copy todir="${docbook.staging.dir}"> <fileset dir="${docbook.src.dir}"> <include name="**/*.xml"/> </fileset> <filterset> <filterset refid="docbook.filters"/> </filterset> </copy> <copy todir="${docbook.staging.dir}/images"> <fileset dir="${docbook.images.dir}"> <include name="**/*"/> </fileset> </copy> <ant antfile="${docbook.dir}/build-docbook.xml" inheritAll="false"> <property name="dbf.basedir" value="${docbook.dir}"/> <property name="docbook.dir" value=""/> <property name="docbook.file" value="${ant.project.name}"/> <property name="docbook.src.dir" value="${docbook.staging.dir}"/> <property name="images.src.dir" value="${docbook.staging.dir}/images"/> <property name="src.dir" value="${docbook.build.dir}"/> <property name="target.dir" value="${docbook.target.dir}"/> <target name="html"/> <target name="htmlsingle"/> </ant> <move file="${docbook.target.dir}/html" todir="${docbook.output.dir}"/> <move file="${docbook.target.dir}/htmlsingle" todir="${docbook.output.dir}"/> <delete quiet="true" dir="${docbook.target.dir}"/> </target> <target name="doc-pdf" depends="docbook.init" description="Creates the PDF version of the reference documentation."> <delete quiet="true" dir="${docbook.output.dir}/pdf"/> <mkdir dir="${docbook.output.dir}"/> <mkdir dir="${docbook.staging.dir}"/> <copy todir="${docbook.staging.dir}"> <fileset dir="${docbook.src.dir}"> <include name="**/*.xml"/> </fileset> <filterset> <filterset refid="docbook.filters"/> </filterset> </copy> <copy todir="${docbook.staging.dir}/images"> <fileset dir="${docbook.images.dir}"> <include name="**/*"/> </fileset> </copy> <ant antfile="${docbook.dir}/build-docbook.xml" inheritAll="false"> <property name="dbf.basedir" value="${docbook.dir}"/> <property name="docbook.dir" value=""/> <property name="docbook.file" value="${ant.project.name}"/> <property name="docbook.src.dir" value="${docbook.staging.dir}"/> <property name="images.src.dir" value="${docbook.staging.dir}/images"/> <property name="src.dir" value="${docbook.build.dir}"/> <property name="target.dir" value="${docbook.target.dir}"/> <target name="pdf"/> </ant> <move file="${docbook.target.dir}/pdf" todir="${docbook.output.dir}"/> <delete quiet="true" dir="${docbook.target.dir}"/> </target> <target name="doc" depends="docbook.init, ivy.init, resolve" description="Creates both the single and multi-page HTML versions and the PDF version of the reference documentation."> <delete quiet="true" dir="${docbook.output.dir}/html"/> <delete quiet="true" dir="${docbook.output.dir}/htmlsingle"/> <delete quiet="true" dir="${docbook.output.dir}/pdf"/> <mkdir dir="${docbook.output.dir}"/> <mkdir dir="${docbook.staging.dir}"/> <copy todir="${docbook.staging.dir}"> <fileset dir="${docbook.src.dir}"> <include name="**/*.xml"/> </fileset> <filterset> <filterset refid="docbook.filters"/> </filterset> </copy> <copy todir="${docbook.staging.dir}/images"> <fileset dir="${docbook.images.dir}"> <include name="**/*"/> </fileset> </copy> <ant antfile="${docbook.dir}/build-docbook.xml" inheritAll="false"> <property name="dbf.basedir" value="${docbook.dir}"/> <property name="docbook.dir" value=""/> <property name="docbook.file" value="${ant.project.name}"/> <property name="docbook.src.dir" value="${docbook.staging.dir}"/> <property name="images.src.dir" value="${docbook.staging.dir}/images"/> <property name="src.dir" value="${docbook.build.dir}"/> <property name="target.dir" value="${docbook.target.dir}"/> <target name="html"/> <target name="htmlsingle"/> <target name="pdf"/> </ant> <move file="${docbook.target.dir}/htmlsingle/${ant.project.name}.zip" tofile="${docbook.target.dir}/htmlsingle/${ant.project.name}-single.zip"/> <move file="${docbook.target.dir}/html" todir="${docbook.output.dir}"/> <move file="${docbook.target.dir}/htmlsingle" todir="${docbook.output.dir}"/> <move file="${docbook.target.dir}/pdf" todir="${docbook.output.dir}"/> <ivy:publish resolver="integration" pubdate="${timestamp}" status="${release.type}"> <artifacts pattern="${docbook.output.dir}/html/[artifact].[ext]"/> <artifacts pattern="${docbook.output.dir}/htmlsingle/[artifact].[ext]"/> <artifacts pattern="${docbook.output.dir}/pdf/[artifact].[ext]"/> <artifacts pattern="${ivy.output.dir}/[artifact].[ext]"/> </ivy:publish> <delete quiet="true" dir="${docbook.target.dir}"/> </target> <!-- Other targets --> <target name="docbook.init" depends="ivy.init, docbook.download.init" if="docbook.download.needed"> <ivy:cachepath resolveId="docbook.framework" pathid="docbook.framework" organisation="org.apache.velocity" module="org.apache.velocity.docbookframework.dist" revision="${org.apache.velocity.docbookframework.dist.version}" conf="runtime" type="zip" inline="true" log="download-only"/> <unzip dest="${docbook.dir}"> <path refid="docbook.framework"/> <globmapper from="DocBook-Framework-${org.apache.velocity.docbookframework.dist.version}/*" to="*"/> </unzip> <ivy:retrieve resolveId="xslthl" pattern="${docbook.dir}/lib/[artifact]-[revision].[ext]" organisation="net.sourceforge.xslthl" module="com.springsource.net.sf.xslthl" revision="${com.springsource.net.sf.xslthl.version}" conf="runtime" type="jar" inline="true" log="download-only"/> <ivy:retrieve resolveId="xerces" pattern="${docbook.dir}/lib/[artifact]-[revision].[ext]" organisation="org.apache.xerces" module="com.springsource.org.apache.xerces" revision="${com.springsource.org.apache.xerces.version}" conf="runtime" type="jar" inline="true" log="download-only"/> </target> <target name="docbook.download.init"> <condition property="docbook.download.needed"> <not> <available file="${docbook.dir}" type="dir"/> </not> </condition> </target> </project>����������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-build/aspect/�������������������������0000755�0000000�0000000�00000000000�11360615642�023011� 5����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-build/aspect/default.xml��������������0000644�0000000�0000000�00000000351�11360615634�025157� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������<?xml version="1.0" encoding="UTF-8"?> <project name="default-aspect"> <import file="common.xml"/> <import file="artifact.xml"/> <import file="quality.xml"/> <import file="package.xml"/> <import file="publish.xml"/> </project>���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-build/aspect/artifact.xml�������������0000644�0000000�0000000�00000001172�11360615632�025330� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������<?xml version="1.0" encoding="UTF-8"?> <project name="artifact-aspect" xmlns:ivy="antlib:org.apache.ivy.ant"> <import file="common.xml"/> <import file="../common/artifact.xml"/> <!-- Other targets --> <target name="compile.init" depends="ivy.init"> <ivy:cachepath resolveId="ajc.classpath" pathid="ajc.classpath" organisation="org.aspectj" module="com.springsource.org.aspectj.tools" revision="${org.aspectj.tools.version}" conf="runtime" type="jar" inline="true" log="download-only"/> <taskdef resource="org/aspectj/tools/ant/taskdefs/aspectjTaskdefs.properties" classpathref="ajc.classpath"/> </target> </project>������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-build/aspect/package.xml��������������0000644�0000000�0000000�00000000230�11360615632�025120� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������<?xml version="1.0" encoding="UTF-8"?> <project name="package-aspect"> <import file="common.xml"/> <import file="../common/package.xml"/> </project>������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-build/aspect/publish.xml��������������0000644�0000000�0000000�00000000230�11360615642�025174� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������<?xml version="1.0" encoding="UTF-8"?> <project name="publish-aspect"> <import file="common.xml"/> <import file="../common/publish.xml"/> </project>������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-build/aspect/common.xml���������������0000644�0000000�0000000�00000001530�11360615634�025023� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������<?xml version="1.0" encoding="UTF-8"?> <project name="common-aspect"> <import file="../common/common.xml"/> <!-- Macros --> <macrodef name="do-compile"> <attribute name="classpath.id"/> <attribute name="input.dir"/> <attribute name="output.dir"/> <attribute name="resources.dir"/> <sequential> <iajc sourceroots="@{input.dir}" destDir="@{output.dir}" classpathRef="@{classpath.id}" source="${source.version}" debug="${compile.debug}" debugLevel="${compile.debug.level}" checkRuntimeVersion="false"/> <copy todir="@{output.dir}"> <fileset dir="@{input.dir}"> <exclude name="**/*.aj"/> <exclude name="**/*.java"/> <exclude name="*.aj"/> <exclude name="*.java"/> </fileset> </copy> <copy todir="@{output.dir}"> <fileset dir="@{resources.dir}"/> </copy> </sequential> </macrodef> </project>������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-build/aspect/quality.xml��������������0000644�0000000�0000000�00000004362�11360615642�025230� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������<?xml version="1.0" encoding="UTF-8"?> <project name="quality-aspect" xmlns:ivy="antlib:org.apache.ivy.ant"> <import file="common.xml"/> <import file="../common/quality.xml"/> <target name="test.do" depends="ivy.init, resolve.test, resolve.aspects, compile.init, test.init" if="test.exists"> <path id="test.compile.classpath"> <pathelement location="${jar.output.file}"/> <path refid="compile.classpath"/> <path refid="test.classpath"/> </path> <test-compile classpath.id="test.compile.classpath" input.dir="${test.java.dir}" output.dir="${test.output.dir}" resources.dir="${test.resources.dir}"/> <iajc inPath="${test.output.dir}" aspectPath="${jar.output.file}" classpathRef="test.compile.classpath" destDir="${test.output.dir}" source="${source.version}" checkRuntimeVersion="false"/> <path id="test.run.classpath"> <pathelement location="${jar.output.file}"/> <pathelement location="${test.output.dir}"/> <path refid="compile.classpath"/> <path refid="test.classpath"/> <path refid="runtime.classpath"/> </path> <test-run classpath.id="test.run.classpath"/> </target> <target name="clover.instrument" depends="ivy.init, resolve.test, compile.init, clover.init"> <instrument input.dir="${main.java.dir}" output.dir="${main.clover.dir}"/> <path id="clover.compile.classpath"> <path refid="clover.classpath"/> <path refid="compile.classpath"/> </path> <compile classpath.id="clover.compile.classpath" input.dir="${main.clover.dir}" output.dir="${main.output.dir}" resources.dir="${main.resources.dir}"/> <instrument input.dir="${test.java.dir}" output.dir="${test.clover.dir}"/> <path id="test.compile.classpath"> <pathelement location="${main.output.dir}"/> <path refid="clover.classpath"/> <path refid="compile.classpath"/> <path refid="test.classpath"/> </path> <test-compile classpath.id="test.compile.classpath" input.dir="${test.clover.dir}" output.dir="${test.output.dir}" resources.dir="${test.resources.dir}"/> <iajc inPath="${test.output.dir}" aspectPath="${main.output.dir}" classpathRef="test.compile.classpath" destDir="${test.output.dir}" source="${source.version}" checkRuntimeVersion="false"/> <delete dir="${clover.staging.dir}" quiet="true"/> </target> </project>������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-build/scripts/������������������������0000755�0000000�0000000�00000000000�11360615640�023217� 5����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-build/scripts/create������������������0000644�0000000�0000000�00000000322�11360615640�024402� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������#!/usr/bin/env ruby -wKU $LOAD_PATH << File.expand_path(File.dirname(__FILE__)) require "rubygems" require "choice" require "project-gen/options" require "project-gen/creator" Creator.create(Choice.choices) ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-build/scripts/project-gen/������������0000755�0000000�0000000�00000000000�11360615640�025434� 5����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-build/scripts/project-gen/options.rb��0000644�0000000�0000000�00000002174�11360615640�027460� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Choice.options do header "" header "Spring Build Project Generator v1.0" option :project_name, :required => true do short '-n' long '--name' desc 'The name of the new project.' end option :target do short '-t' long '--target' desc 'The target directory in which to create the new project.' default '.' end option :organization do short '-o' long '--org' desc 'The organization name to include in the ivy.xml file.' default do project_name = Choice.choices[:project_name] project_name.split('.')[0..1].join(".") end end option :archetype do short '-a' long '--archetype' desc 'The archetype of the project you are creating.' default 'standard' end footer "" footer "--help This message." end # Nifty hack to support lazy defaulting of choices as they are retreived # Allows for blocks to be used as default values as well as static values c = class << Choice.choices; self end c.module_eval do alias :do_get :[] def [](name) v = do_get(name) if v.is_a? Proc v.call else v end end end ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-build/scripts/project-gen/creator.rb��0000644�0000000�0000000�00000005130�11360615640�027417� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������require "rubygems" require "fileutils" require "erb" module Creator extend self @excludes = [".svn", ".", "..", ".DS_Store"] def create(args) project_name = args[:project_name] target_dir = File.expand_path(args[:target]) organization = args[:organization] archetype = args[:archetype] # locate the template directory template_dir = determine_template_dir() archetype_dir = determine_archetype_dir(archetype) # build the project project_dir = File.join(target_dir, project_name) FileUtils.remove_dir(project_dir, true) FileUtils.mkdir_p(project_dir) make_project(template_dir, archetype_dir, project_dir, binding) end def make_project(template_dir, archetype_dir, project_dir, binding) # make the basic project structure make_dir(template_dir, project_dir, binding) make_dir(archetype_dir, project_dir, binding) end def make_dir(template_dir, target_dir, binding) Dir.foreach(template_dir) do |entry| if include_entry?(entry) entry_path = File.join(template_dir, entry) target_path = File.join(target_dir, entry) if File.file?(entry_path) if(entry == 'deletes.rb') ruby = IO.readlines(entry_path).join deletes = eval(ruby) deletes.each do |del| del_path = File.join(target_dir, del) FileUtils.remove_dir(del_path, true) end elsif create_file_from_template(entry_path, target_path, binding) end elsif File.directory?(entry_path) FileUtils.mkdir(target_path) unless File.exists?(target_path) make_dir(entry_path, target_path, binding) end end end end def include_entry?(entry) not @excludes.include?(entry) end def determine_template_dir() File.join(get_script_location(), "templates/standard") end def determine_archetype_dir(archetype) if File.exists?(archetype) then f = archetype elsif f = File.join(get_script_location(), "templates/#{archetype}") end if !File.exists?(f) then puts "Archetype '#{archetype}' is unrecognised." exit(-1) end f end def get_script_location() File.dirname(File.expand_path(__FILE__)) end def create_file_from_template(template_path, target_path, binding) template = IO.readlines(template_path) erb = ERB.new(target_path.gsub(/\$\{(.*)\}/, "<%= \\1 %>")) target_path = erb.result(binding) erb = ERB.new(template.join) File.open(target_path, "w") do |f| f.puts(erb.result(binding)) end end end����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-build/scripts/project-gen/templates/��0000755�0000000�0000000�00000000000�11360615632�027433� 5����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000154�00000000000�011565� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-build/scripts/project-gen/templates/standard/���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-build/scripts/project-gen/templates/st0000755�0000000�0000000�00000000000�11360615644�030005� 5����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000164�00000000000�011566� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-build/scripts/project-gen/templates/standard/.project�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-build/scripts/project-gen/templates/st0000644�0000000�0000000�00000000572�11360615636�030014� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������<?xml version="1.0" encoding="UTF-8"?> <projectDescription> <name><%= project_name %></name> <comment></comment> <projects> </projects> <buildSpec> <buildCommand> <name>org.eclipse.jdt.core.javabuilder</name> <arguments> </arguments> </buildCommand> </buildSpec> <natures> <nature>org.eclipse.jdt.core.javanature</nature> </natures> </projectDescription> ��������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000160�00000000000�011562� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-build/scripts/project-gen/templates/standard/src/�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-build/scripts/project-gen/templates/st0000755�0000000�0000000�00000000000�11360615646�030007� 5����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000165�00000000000�011567� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-build/scripts/project-gen/templates/standard/src/main/������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-build/scripts/project-gen/templates/st0000755�0000000�0000000�00000000000�11360615646�030007� 5����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000177�00000000000�011572� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-build/scripts/project-gen/templates/standard/src/main/resources/��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-build/scripts/project-gen/templates/st0000755�0000000�0000000�00000000000�11360615640�030001� 5����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000210�00000000000�011556� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-build/scripts/project-gen/templates/standard/src/main/resources/META-INF/�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-build/scripts/project-gen/templates/st0000755�0000000�0000000�00000000000�11360615640�030001� 5����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000223�00000000000�011562� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-build/scripts/project-gen/templates/standard/src/main/resources/META-INF/MANIFEST.MF������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-build/scripts/project-gen/templates/st0000644�0000000�0000000�00000000171�11360615640�030002� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Manifest-Version: 1.0 Bundle-ManifestVersion: 2 Bundle-SymbolicName: <%= project_name %> Bundle-Vendor: SpringSource Inc.�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000172�00000000000�011565� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-build/scripts/project-gen/templates/standard/src/main/java/�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-build/scripts/project-gen/templates/st0000755�0000000�0000000�00000000000�11360615646�030007� 5����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000165�00000000000�011567� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-build/scripts/project-gen/templates/standard/src/test/������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-build/scripts/project-gen/templates/st0000755�0000000�0000000�00000000000�11360615646�030007� 5����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000177�00000000000�011572� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-build/scripts/project-gen/templates/standard/src/test/resources/��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-build/scripts/project-gen/templates/st0000755�0000000�0000000�00000000000�11360615646�030007� 5����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000172�00000000000�011565� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-build/scripts/project-gen/templates/standard/src/test/java/�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-build/scripts/project-gen/templates/st0000755�0000000�0000000�00000000000�11360615646�030007� 5����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000165�00000000000�011567� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-build/scripts/project-gen/templates/standard/build.xml������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-build/scripts/project-gen/templates/st0000644�0000000�0000000�00000000324�11360615644�030006� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������<?xml version="1.0" encoding="UTF-8"?> <project name="<%= project_name %>"> <property file="${basedir}/../../build.properties"/> <import file="${basedir}/../../spring-build/standard/default.xml"/> </project> ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000166�00000000000�011570� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-build/scripts/project-gen/templates/standard/.classpath�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-build/scripts/project-gen/templates/st0000644�0000000�0000000�00000001303�11360615634�030003� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������<?xml version="1.0" encoding="UTF-8"?> <classpath> <classpathentry kind="src" path="src/main/java"/> <classpathentry kind="src" path="src/main/resources"/> <classpathentry kind="src" output="target/test-classes" path="src/test/java"/> <classpathentry kind="src" output="target/test-classes" path="src/test/resources"/> <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/> <classpathentry kind="var" path="IVY_CACHE/org.junit/com.springsource.org.junit/4.4.0/com.springsource.org.junit-4.4.0.jar" sourcepath="/IVY_CACHE/org.junit/com.springsource.org.junit/4.4.0/com.springsource.org.junit-sources-4.4.0.jar"/> <classpathentry kind="output" path="target/classes"/> </classpath> �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000163�00000000000�011565� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-build/scripts/project-gen/templates/standard/ivy.xml��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-build/scripts/project-gen/templates/st0000644�0000000�0000000�00000001472�11360615632�030010� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������<?xml version="1.0" encoding="UTF-8"?> <?xml-stylesheet type="text/xsl" href="http://ivyrep.jayasoft.org/ivy-doc.xsl"?> <ivy-module xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="http://incubator.apache.org/ivy/schemas/ivy.xsd" version="1.3"> <info organisation="<%= organization %>" module="${ant.project.name}"> <ivyauthor name="<%= ENV["USER"] %>"/> </info> <configurations> <include file="${spring.build.dir}/common/default-ivy-configurations.xml"/> </configurations> <publications> <artifact name="${ant.project.name}"/> <artifact name="${ant.project.name}-sources" type="src" ext="jar"/> </publications> <dependencies> <dependency org="org.junit" name="com.springsource.org.junit" rev="${org.junit}" conf="test->runtime"/> </dependencies> </ivy-module> ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000161�00000000000�011563� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-build/scripts/project-gen/templates/documentation/����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-build/scripts/project-gen/templates/do0000755�0000000�0000000�00000000000�11360615642�027757� 5����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000165�00000000000�011567� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-build/scripts/project-gen/templates/documentation/src/������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-build/scripts/project-gen/templates/do0000755�0000000�0000000�00000000000�11360615632�027756� 5����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000210�00000000000�011556� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-build/scripts/project-gen/templates/documentation/src/${project_name}.xml�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-build/scripts/project-gen/templates/do0000644�0000000�0000000�00000001366�11360615632�027766� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN" "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [ ]> <book> <bookinfo> <title>... ... ... ... ... Copyright © SpringSource Inc., 2008 ././@LongLink0000000000000000000000000000016500000000000011567 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-build/scripts/project-gen/templates/documentation/css/libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-build/scripts/project-gen/templates/do0000755000000000000000000000000011360615632027756 5ustar ././@LongLink0000000000000000000000000000017200000000000011565 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-build/scripts/project-gen/templates/documentation/css/html/libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-build/scripts/project-gen/templates/do0000755000000000000000000000000011360615632027756 5ustar ././@LongLink0000000000000000000000000000021000000000000011556 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-build/scripts/project-gen/templates/documentation/css/html/stylesheet.csslibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-build/scripts/project-gen/templates/do0000644000000000000000000000135711360615632027766 0ustar html { padding: 0pt; margin: 0pt; } body { margin-left: 10%; margin-right: 10%; font-family: Arial, Sans-serif; } div { margin: 0pt; } p { text-align: justify; } hr { border: 1px solid gray; background: gray; } h1,h2,h3 { color: #234623; font-family: Arial, Sans-serif; } pre { line-height: 1.0; color: black; } pre.programlisting { font-size: 10pt; padding: 7pt 3pt; border: 1pt solid black; background: #eeeeee; } div.table { margin: 1em; padding: 0.5em; text-align: center; } div.table table { display: table; width: 100%; } div.table td { padding-left: 7px; padding-right: 7px; } ././@LongLink0000000000000000000000000000017000000000000011563 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-build/scripts/project-gen/templates/documentation/images/libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-build/scripts/project-gen/templates/do0000755000000000000000000000000011360615634027760 5ustar ././@LongLink0000000000000000000000000000020300000000000011560 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-build/scripts/project-gen/templates/documentation/images/s2-logo.pnglibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-build/scripts/project-gen/templates/do0000644000000000000000000002263311360615634027770 0ustar ‰PNG  IHDRÕBOA/ pHYs  šœ cHRMz%€ƒùÿ€éu0ê`:˜o’_ÅF%!IDATxÚì]g|TÅ×>·íÞmémIB„4B $z“^ R¤Y(J³"éJÁ‚ŠÒ;Ò¤7$$ôƦn¶ß2ï‡]R7aw ï?ç—/\îÎÎÎçxÍÜÙy%{]d}ZÉ—Ié&5\Rrž,þ~Yj^ZX󠨉ú{øüïâïaÆ£“·Î¼zìVÊ]^:Mp«ˆ„m×*¡É•&å.|ª<&¢š¸/t·Ú FŽçœx{Þñ¯5\ˆ¿ºéÈöËñ× 2)„`^ÌŒªoR„CˆçZ’°Ë+Ù—”»ÐÀ>õršŒaD€(/(øªÿxÄÿváÀŽ?œ‰»­ y€Ï‚^»`âG˧|ŒaXO阜[ObX®ëé4¡¥ûâ&þÏŠíúïèÍS+v¯¹XÅ ’>C% ŒaÁ¤VLùÄìÊ?X¾ÇTNñ. ðîbØ?ÇD"€Ü¢¼Beqqy ÃÀÀp©½XæéÒL,Õcéx„°ç,K$ )k{¥g BJPÿ;,ÇbNà¸%ŸåxžG|ý]EH‚¨­#lEY‘Z§.Q•ÕßšHH·òlÑ ü%e§,ùiÅoçöË€€ZR}0´sǽ_øÒ2 ·>C†ctvÉOÐÒãã¿v–ùëÑýWŽÜIŽË(Ê{ZªP—£ „');GG©½«—ŸÜoXäK1݆‰kq¹+_üê1¬^Ž—GÈ^,ñóðܱo·ÖÑ²Š•Y‡\M¸¹ò÷õŠR…½Ô~nÌŒþ½k¬–'yi‡¯¸œpãi‰ãØ®m»-¿@@ àØÍSöo*×i]ìgx«_»ž•]ݳþø•£õw!D„‡£{ÿÐ!QýÃ|‚­Â¢e®&\ßåØƒ'óË ËµªBe†ÕGª´ñ»¶æ¤íöwÇ©_m-(ÈZµ"hÕƒ»Øûñ4%4¾uiН \„Uã}xž×û¹½çã2íïß«ÇÖìÝp5ñ¯U ( À ¨:Ü<<,<Õ®U»­ó6v lWµ±+ÞØ}ð; …õ:5<ÚÇÃwòKãfyÝÍÁÅì»Eå%]ߘh!èõ^-Z_[sÒË¥™ñÏܽðõ-'âÎÔJ`ÀpŒá›…Ûg}=­ 3úÝþùO’€‚NïÜþêš“î®ÆÏŽ[ù毶?¿«ÏE‘´t`û^ï¾2»gxK†ôðõ“«~[såá dÐB@’€á€õ!ª]‹ð;›.Ù¢ÿʵªy›?üîø÷b™9êÅ —û|ýö—fÁ—SòKFáf§±š¤#Ža‚tÅ‘ÀÛÍnP£#O¥UÏÿöã͇·ÇP"I¯âàM'Bq 7Ç­xóâWÇäNî¯)!ˆh Å–Yz”‘—¶tÛâ=¬|céÈþfÖd~ú“¼ ÙA-ÉNO¸ûø—K³ìÂÜ¿[²ûü^V«¡(!Tj2õ…Wg}=1óQ~ΰw ¡èIVrRVJþ¬ë* –cŽ\þõÏ}ó_™]ñæýô‡ëöo¡¨r=´N®ŸÿæÀ‰u…ùG®ŸÌÍO¯ õù¥ê²WW¼‘ô\ðÃtlçnÎTå•üÆòå2ÌF²¼&µà 7»β^YÅ;“ó—!ÄØ6æsÓcÀhÝaØ‚Ñskƒ¯†8Iú¶ë9ºûˆç€ïaö9ERÑÁ‘»?ÜþÓÂ펮ÀèŸÑ_’»®ýtö·z³$< ór¿±WÖ^õÆÒ¯Jš«%8†ÛKì¦ôÿ뢩= ¾ÂÅ4¨cßY£Þ©T¤ 1+årÂúfÍ ûdÒ¢%bÿlW»†D)0©@‚,,Ê+ÇË 7‹‹ò+Ù­zlßWc¢7ðÍã/ãiÖûß~ ¼^ñxN(µŸØwLÿÑ<¼6Ú–™ž–ï$Àñ¢òb3#Éäð6t ÈüÒ}NÒ.ÒŒåÕ Vq¼ÆªFB}ƒ#C¢@Sþ¬QœáØ-û¿é0»w̧¯­?¸õìÝ‹éYÿÀ¼ºÚ;ï<*Š“ÿ$?£.Ë+–96i1Žÿ ¥éÎ2'Z@W⬊é‹ÏHª¤H9ÎõYtHdÿÑLTŸž°ùèëHm‚ŒOK`X†ªžwgy ² ‚2mœ-tD*ÊN8­ÔÄå•üîå<ÙòFÄBѲ‰ ‡?¾¯V•šÖN€HRV^rèü¾Cg£ìœ\훹4 ó îвMtpds7/g;§¿cj#Ûï@<À€ ó‹ Ž­kèÑ3Üïß)έË]Óô¥ªRST<çïá+Šÿüm>ºC[ªx~Ì[ ™É¹Åù>nÞÕ=°fV:ëçxUaù9Wiß§eÇ0 #²K~p³" ­ˆ!ú´íñóÂío~5C¡ÈZbAœ0f¥ƒ>· 377íÖý+ß)ñ ‰ÖiÀШ;µÞ®ž ‘ÏNŽ)‹Ëµ*'©C-ü1ƒ#_‚ÿ˜ðˆg9®ª»ßÌɽQZ®©ä³9¯Ÿ¨ÈÏ[d0\­,:tíDÇA‹ú«!êëF«®(7!厇a”Ö]X~ÚÚv†wxú«cÃûŒ&I4JSyÑÄPB Å¦?’Hx¿}ß71±c»½7ðtÜ…ÆœBž7iÕVA¼ÜÑþ{R=€k¯œFÁßé¸óyY©F’ ˆ0ÿPà8Kz·÷ÊCuZA&j‹c”­&˜Ô³œRF‡ñȾ8†w úvîúï~M„ÉÖ`ðü_ÉqÄW§d^I¸ù <)±‹z±ð×Ú/*BIœ()}z¥¾ŽMøKÌzd0Ö3òÈNbïî読]ÜV¿Ðâs×Oì»RMaxØ üŸÅÖ!E*ž× I¼‘z&—· ÍÊè1á-Ú+íH*»0—a ¢Â:eë‰4e SÇù¸{ן6ýJÏðn$-1…k8Îëu»Îíy¾ãHRAXŠ?^û,ÌAA )¡m}]³³¾JÔ" ]<&ðÖ†sœŠáË…”[E…Gz€¿1{¦ÑiJÕÊʵˆ")ó$AææÄ§'Ößà­”»ÛmR`Òé:Ík½GÓ/Ô)UàãæÝ¶ExÕBžÃ—ýX!@jî“üÂüzL(^ƒÆ«sÛ(BÑ­×_?YõY3‡1R:Äz/Cˆ¹JÙ:¯7»0÷ÀåÃ\-U—=÷e†c—ýòÕãŒD ž%rXÆÇÍ‹4Ë•TQ‰bôg“î<¾_Wƒ²S'¯š^V^b£·wõÝ}¼hB „cºŽ«D†M[7oýÁ­J²öû–ÙwùHÿFeæ§AYÿVØfà­AkKù1†ó<÷åÞƒ#_ªØH‹ã´§ãkI¹ ØÆ?M+#îñý˜¥2Ò€¶ îЧm÷®¡:‡DVlÒ©T{zí·Ïm9ºãÔ“•\RÐ-,ºn#Hzßoþ°ÅãçO~i¼c•ªtŽçö]>²h{ìã¬G@KÁ¸Ïà{}Ф`ï@xeRßW×Úš“ûÄ”Ì$)^=wýœŸÎþ:8r@¨O‡“»‹sæÓ¬¤ì”c×Ož¹uª¿Š þH’ÂC€Ãʵª’òÒæn^9©Ö«@úVüÕïOÿ:sÈÔÊ@XÖ/Gô“J—ˆcÖš–åÊŸm’@$a‡Y–ÓC-û嫌ÇÀÎ ÝMºu7þêZ©ƒ£ÄNî"ó vØ#ž Ë+.¸•—Wœ´êjÛ™ Ú¿°ûÖ«$ÅÊâw¿™¿zÿ7ƒ"Ã|ƒE´(13ùæ£Û é À²&ð€VÓ2°Ýü—gÁ‹)®.ŸŒ{Ú—Ó+ £òöÛ·ã¯H*¤„BJ ÑkY­xÌÖxWg׫ᯅÜ÷Þ“xcGêò"e‰¿‡Ï%Þ:_þöÕ1N2GÓ7vžŽã’r?¶Æ~" £# lÑ7@À )¹…ù¶£*ˆcB/Ç×0ŒD–"फÎÍrJ“'Šx{‘¥ÌŽaK^[ÑhÊc¡zÝGN }dx—?¾<úÎÐ7êG^wà¼ÑsÀ ¶JˆcA­léú{ìÏãzŽ4‹¡j¥ 8nùaVJ&}Àó –Êjl–¨Àâ±úwgVUåÍk£VB‹ü`óŠwV¹;»ƒZ  Œ+¡âe@U&IgzGJ‹7‘*އùÕ‰¿ÐæAmý[ƒ±†€¢.?¼áîè&qrÛ’}u;åÞ¥ת>s‘õ±·E¼…¢Çr}Ë•àÌ7øÆÝKuퟫWÿ|yéá'{µéVÅ&’r‡‘¥ê¿,ó" †+aØÀH£ñ ý%BëöãH„âq=Gë9ªHYœ˜õèZâ­GÙ©ù%…Ê£n¦ÒYæØ¢™DË6ƒ#}ܽ)‹¬±…郧 ë<èØ?Žß:]PT çX‰@èéêÕ5$jhçÍ]½êiÁÓYþõÌ•kölPtRàí3ü,>Ã4@î»qÆ—›nQ1©~ï•9ÍÝ*¿ë­“²Ùçnÿ â²`ôœç6(wòØ0cŦCߪõ©HúÞ˳<ê®óó—ûÆŽŸ?ÿåY%ê²ôüL£Ç#pÜ_î+I$ö0yõ;œFiª%e˜ˆ–mküºšçe)r:Íí—›Ÿtš/¦/×êµËv.Ú¦b ½¶S›îgW¨z¢™-ŠK«e²ñ燆<¯7:|¯ ”Çz:NhWšåXcM%I$a©É›¼úíŽî0ª¢×†¶ßr¹zÐÃë ‘ÐjzY£×Ösî›ÍŸ5Ââ¹'»5bg*$!óQÔì>*M¹Iy©ËÖ¾ûõÜÓª2¸5‰ioWÏÑCL&ñ§ãÎ÷ ï‘t4I¥d”¨J«y-¤³½8²tBˆ1‚+xºÊú7V(G$-Ò¡åà³ÌéÄm4d¾ëù,M ­_;S!î\¦*U˜ÀÇì]½ûGô®‘>0“™3ÃÁÅ8„¢ 7qœèÞM³A(ÊŠj_ …á˜À2&{æ 䣤+4É‹ Ë_wøâÊÓ·ÃK½ƒ¼kVý˜Á_‹f~‹Ç¿Œ0\Sª¸rwBïÑÕ/VðwȬ‚ ü œ¶¼¨„G‘ ¹ÜaLÓ¼þ÷…áØ…;–.úö )SFñ„HòÁËï`µ¸_ó‰áYÃÞì5´*Ò?œÙýRûž^Þ-+KB,žs³w©½QJ@:c`y]>Bˆmîü†€tnšÝÿ²¨´êÃ×Oô[0|åO+Lt Q´ê±½G×8ɳ>ü HÁÆ™+år_`ÙøÔ{÷Ó掘^o´p-胛·ª½£Üò2Ž×¸ÈúÉ^nšàÿ¬”ªÊíø´Û»†<æÂís U‚Ï kîôÅdóç+×YÒ¼Õö÷6I¥ .ßrüûI}Çøú‡YA„ SP‡Ú„*Ë—#°ˆS䑞¦¼[z|dó)X+565Ý^ %ªÒaK',ß±änÒ- ˆj‡R² Ž«ßúÜÛÕÓ:üÀ Ž}øp»ØE~òâÁ”Ü'Ÿ¾¶x,qž“9{¼Òm¸E­Kåyö¼ÓWyÄâ8(_BSžÿ‘±–ФUGà?¸Wퟗ?ï]¾tã$HíW+ác'ÖÏ^ór×:/zFFþyÑw¤@8kÓ }F÷Œêz‹ÁÐkc¢×y@¥{È!]ý&!!&Àm³´Çg¬‡Fõ‚µÔe`ÐŽìׄ?–c+·V™&u¹„–l·±þ¦Eçß¹ùÇÔU3>›Û§]÷ði]´šrx.¥dÐ9:¹ßÜp¶…ܯV|T—>NcHÃë®DˆEÀ¸Í÷vžò_î½—üva¿A§éÚiÞÈ/\%s£K–"§÷Âá©I·A$À1@R]Ûöø|òâîaëÿ¬¥÷/ÜOKøä§åkÞZvôÆ©9kgƒH\ŸöB ºu³×ÎaæJ…¼Ò=I¹‹ê9!¸Ï÷všÜ¤]^y˜‘´b÷êøŒGB°­ذNûµïeÉ%Ç©¤¢–±âŽþS“s'g¥«•4%ðoæìÕRBÛx‚Ó£ìÔø'´ŒÁÝÁ¹M@w[ŽUÕô ™‚¼[V$»4zmRVŠŸGskOWy’—®Ök[û@bV2Ã2ÁÞ”õw€1“”™’ù4›¦>>-šùÙÊ ÄÌG XŽ õ õ ª³¨ Ù$wRï7½hàTí¯ÙjjDFA¶ÙO”¿z>!ìBbx¿s -Ï'„$æ~¨còPcKaYÑÔ5³ðN Р#@'xùó)ÇYÛ”ž1,ܹL:Lnl¢ ÅÄð_.쳡W[}‘°jïÆŠ'?žÙ ‘°vÿfk›j3³;1ØõjÂÍáKÆC/t#/Ü¿bm#·Rîõù`(ô  @ÐCÜ'}õ¶¢¬ÐÚvr sG.›½D  ÐCóéÄüâ³/Ûxë_»€Öß}°iÌg“•ÊâÊ &:MDx—çomîf†.),ÿ39 B| &!–CZ©0ÄÏõmW»‡’ݵrÇî!í}ÃN,MÍK¿Ÿøánõîªå¿­]±õc°sˆúš·›ç¤;7n™ðùT±ýÀ}¬j*»0pÈRäT<)./tÖç™Xžãtš‘K'äg&·ŠnèÕÂZã0jɸŒ”‡Ám;z¶à)þê¿~óÖÀ×\B¬H;1,óúÚ9'Oïñ Þy0øã7O8ò£Ö ;»ËŒJnˆ^9zó”}Œ7ôÃ'è-îøN¯"e‰y ¤.Ó(Âñïsrƒ¼[Ÿý²jý¡­§ãÎ+ÊŠ\ìœlàM.?¼^ž: Û°É}ÇŸˆ„ôÊ©±.^-î>‰¯ªÉþqAÀñŸLXðÞÈ·íDR«Ý>–9vó”ÔÃ+vüüŠýbAÞ-tècí§ã΃VÓu¨“ÌQQV¤(+r”9 é<xîüý+µßoè­»ƒ#û_~`òªé)îüzvOLçÁ‚:TãYErÞ–+#pB,‡t.’ÑanöCÜí†Zu˜©Í²rj¬Z«:~ýäÜO§ƒƒXîêÙ¾eÛÅtjaU;%ªRP±íZW}è,s õ ¾M¥Óü[èã‘xJ¿±¶}üiYa©ZéfïR©¶%’_üH|Ç©ŸwÛc<2Çp¥V<¤å§7>þ :¸ã‰Ï÷½¹nöŸ—Ž Z4òçvŒ¨ô„ÊSJí·@´ÀÓIÚÃIÒÙIÒ³i#ºmâé"?»ëFÒí¿Râî¦Þ?yûܱs{®&þuiõ‰Pkîu¡HP¬ªyŽB¡²!·r¯¾qÛQãœ3Ž0Ljë‚R€cËs ËRdƒ A ¾¹«——K³g‡‘"’ ±®]@øß‚?ûýô·v.[·kù ùÃ/m<ÛõÙ6Gi—PÏu€áaK‘À—Äeÿ–’ˆ Šˆ Š0š›±+ÞØ·÷Ç;©÷¬Â_°w áêtö¯3y%òg÷(¸u6ññOwïr_«ú#I€‡ª ÙÀ˜Ô´ â,s û%§%^N¸Þ+¼kCúî €züºðÛª‡–p¼ùõÙh·Þ‹…¢µÓ¿èÚº³¢0ÏûÙõÉ øŠ¾ð¯Ê·Ïíüãçûv í$¡Å—^¿zh°–ÿëØ®O‡^§Ní‹ùôµÅcßoí|ìæ©¥?­à•Ê÷f¼-Xç*u Z¸çâˆmä~8Ž?ÌH ðz|pcÀkﮜùÖº9ŸOù¸KH”F¯Ýyê焌Gß¼³Êx׫…òJ·á+~[¿÷]8ŽÏ1ÝßÃ’‰eu5úéß…ö}$Ø@g|  ô‘B4ô[4RQj5¹•’ó$lZè‚A?;l 3ôA7bâW3µzõT¢~êºÙЀÞbèïý ¿#t§VíÙhmS¡oEC_ÙÓR…ÍC¤ÑkǯœúJñ.0Ðz  ~;õžµM¹þ‡Ã°fЃ—ð.xoñø/§Õõ2±dÉ’ÿ÷IžÎÁ‘-‚Y©€öppiߪýÇ“/™°Ð¡ê%¶–‰“ÌqLg¹Ú uI;†E/{cÙ‚WfٰLJÀ‰}|Zñ!ŠäNr'w¹½sŸ}Ûø[wÀð½'eÙľc”^5EC¢^ò÷ Rêµ´DnïÒ¥m÷¯çmˆj[yƒA WÀð®ÃDR;=˸;8{عtëÔ³³nKþ­Iš¤ÑLÓ4É¿(ÿ7€•.cK\òIEND®B`‚././@LongLink0000000000000000000000000000017200000000000011565 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-build/scripts/project-gen/templates/documentation/build.xmllibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-build/scripts/project-gen/templates/do0000644000000000000000000000033111360615642027756 0ustar ././@LongLink0000000000000000000000000000017000000000000011563 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-build/scripts/project-gen/templates/documentation/styles/libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-build/scripts/project-gen/templates/do0000755000000000000000000000000011360615632027756 5ustar ././@LongLink0000000000000000000000000000017400000000000011567 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-build/scripts/project-gen/templates/documentation/styles/pdf/libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-build/scripts/project-gen/templates/do0000755000000000000000000000000011360615634027760 5ustar ././@LongLink0000000000000000000000000000020600000000000011563 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-build/scripts/project-gen/templates/documentation/styles/pdf/custom.xsllibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-build/scripts/project-gen/templates/do0000644000000000000000000004235511360615634027773 0ustar '1' @file.prefix@@dbf.xsl@/images/ -5em -5em book toc,title please define productname in your docbook file! 1 0 1 1 0 0 0 false 11 8 1.4 left bold pt 0.8em 0.8em 0.8em pt 0.1em 0.1em 0.1em 0.6em 0.6em 0.6em pt 0.1em 0.1em 0.1em 0.4em 0.4em 0.4em pt 0.1em 0.1em 0.1em 4pt 4pt 4pt 4pt 0.1pt 0.1pt pt 1em 1em 1em #444444 solid 0.1pt 0.5em 0.5em 0.5em 0.5em 0.5em 0.5em 1 #F0F0F0 0.1em 0.1em 0.1em 0.1em 0.1em 0.1em 0.5em 0.5em 0.5em 0.1em 0.1em 0.1em always normal italic pt false 0.1em 0.1em 0.1em 0 1 90 figure after example after equation before table before procedure before 1 0pt ././@LongLink0000000000000000000000000000021100000000000011557 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-build/scripts/project-gen/templates/documentation/styles/pdf/titlepage.xmllibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-build/scripts/project-gen/templates/do0000644000000000000000000000646211360615632027770 0ustar ]> <subtitle text-align="center" font-size="&hsize4;" space-before="&hsize4space;" font-family="{$title.fontset}"/> <corpauthor space-before="0.5em" font-size="&hsize2;"/> <authorgroup space-before="0.5em" font-size="&hsize2;"/> <author space-before="0.5em" font-size="&hsize2;"/> <mediaobject space-before="2em" space-after="2em"/> <copyright space-before="1.5em"/> <releaseinfo space-before="5em" font-size="&hsize2;"/> <legalnotice space-before="15em"/> <othercredit space-before="2em" font-weight="normal" font-size="8"/> <pubdate space-before="0.5em"/> <revision space-before="0.5em"/> <revhistory space-before="0.5em"/> <abstract space-before="0.5em" text-align="start" margin-left="0.5in" margin-right="0.5in" font-family="{$body.fontset}"/> </t:titlepage-content> <t:titlepage-content t:side="verso"> </t:titlepage-content> <t:titlepage-separator> </t:titlepage-separator> <t:titlepage-before t:side="recto"> </t:titlepage-before> <t:titlepage-before t:side="verso"> </t:titlepage-before> </t:titlepage> <!-- ==================================================================== --> </t:templates> ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000175�00000000000�011570� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-build/scripts/project-gen/templates/documentation/styles/html/����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-build/scripts/project-gen/templates/do0000755�0000000�0000000�00000000000�11360615634�027760� 5����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000207�00000000000�011564� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-build/scripts/project-gen/templates/documentation/styles/html/custom.xsl������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-build/scripts/project-gen/templates/do0000644�0000000�0000000�00000005150�11360615634�027763� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������<?xml version="1.0" encoding="UTF-8"?> <!-- Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with this work for additional information regarding copyright ownership. The ASF licenses this file to you under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. --> <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version='1.0'> <!-- Extensions --> <xsl:param name="use.extensions">1</xsl:param> <xsl:param name="tablecolumns.extension">0</xsl:param> <xsl:param name="callout.extensions">1</xsl:param> <!-- Activate Graphics --> <xsl:param name="admon.graphics" select="1"/> <xsl:param name="admon.graphics.path">images/</xsl:param> <xsl:param name="admon.graphics.extension">.gif</xsl:param> <xsl:param name="callout.graphics" select="1" /> <xsl:param name="callout.defaultcolumn">120</xsl:param> <xsl:param name="callout.graphics.path">images/callouts/</xsl:param> <xsl:param name="callout.graphics.extension">.gif</xsl:param> <xsl:param name="table.borders.with.css" select="1"/> <xsl:param name="html.stylesheet">css/stylesheet.css</xsl:param> <xsl:param name="html.stylesheet.type">text/css</xsl:param> <xsl:param name="generate.toc">book toc,title</xsl:param> <xsl:param name="admonition.title.properties">text-align: left</xsl:param> <!-- Label Chapters and Sections (numbering) --> <xsl:param name="chapter.autolabel" select="1"/> <xsl:param name="section.autolabel" select="1"/> <xsl:param name="section.autolabel.max.depth" select="1"/> <xsl:param name="section.label.includes.component.label" select="1"/> <xsl:param name="table.footnote.number.format" select="'1'"/> <!-- Remove "Chapter" from the Chapter titles... --> <xsl:param name="local.l10n.xml" select="document('')"/> <l:i18n xmlns:l="http://docbook.sourceforge.net/xmlns/l10n/1.0"> <l:l10n language="en"> <l:context name="title-numbered"> <l:template name="chapter" text="%n. %t"/> <l:template name="section" text="%n %t"/> </l:context> </l:l10n> </l:i18n> </xsl:stylesheet> ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000212�00000000000�011560� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-build/scripts/project-gen/templates/documentation/styles/html/titlepage.xml���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-build/scripts/project-gen/templates/do0000644�0000000�0000000�00000003360�11360615632�027762� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������<?xml version="1.0" encoding="UTF-8"?> <!-- Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with this work for additional information regarding copyright ownership. The ASF licenses this file to you under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. --> <t:templates xmlns:t="http://nwalsh.com/docbook/xsl/template/1.0" xmlns:param="http://nwalsh.com/docbook/xsl/template/1.0/param" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> <!-- ==================================================================== --> <t:titlepage t:element="book" t:wrapper="div" class="titlepage"> <t:titlepage-content t:side="recto"> <title/> <subtitle/> <corpauthor/> <authorgroup/> <author/> <mediaobject/> <othercredit/> <productname/> <releaseinfo/> <copyright/> <legalnotice/> <pubdate/> <revision/> <revhistory/> <abstract/> </t:titlepage-content> <t:titlepage-content t:side="verso"> </t:titlepage-content> <t:titlepage-separator> <hr/> </t:titlepage-separator> <t:titlepage-before t:side="recto"> </t:titlepage-before> <t:titlepage-before t:side="verso"> </t:titlepage-before> </t:titlepage> </t:templates> ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-build/par/����������������������������0000755�0000000�0000000�00000000000�11360615640�022312� 5����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-build/par/default.xml�����������������0000644�0000000�0000000�00000000346�11360615632�024464� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������<?xml version="1.0" encoding="UTF-8"?> <project name="default-par"> <import file="common.xml"/> <import file="artifact.xml"/> <import file="quality.xml"/> <import file="package.xml"/> <import file="publish.xml"/> </project>������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-build/par/artifact.xml����������������0000644�0000000�0000000�00000003641�11360615640�024635� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������<?xml version="1.0" encoding="UTF-8"?> <project name="artifact-par" xmlns:ivy="antlib:org.apache.ivy.ant"> <import file="common.xml"/> <import file="../multi-bundle/artifact.xml"/> <!-- Main targets --> <target name="jar" depends="ivy.init" description="Creates a PAR file containing the output of the list of bundles."> <delete dir="${par.staging.dir}" quiet="true"/> <mkdir dir="${par.staging.dir}"/> <delete dir="${par.output.file}" quiet="true"/> <mkdir dir="${jar.output.dir}"/> <all-bundles target="jar"/> <all-bundles target="copy-dist-jar"> <property name="copy.to.dir" value="${par.staging.dir}"/> </all-bundles> <all-bundles target="copy-ext-jars"> <property name="copy.to.dir" value="${par.staging.dir}"/> </all-bundles> <antcall target="collect-additional"/> <jar destfile="${par.output.file}" basedir="${par.staging.dir}" index="true" filesetmanifest="merge"> <manifest> <attribute name="Application-SymbolicName" value="${ant.project.name}"/> <attribute name="Application-Version" value="${bundle.version}"/> <attribute name="Application-Name" value="${application.name}"/> <attribute name="Application-Description" value="${application.description}"/> <attribute name="Application-Creator" value="${user.name}"/> </manifest> </jar> </target> <target name="collect-additional" depends="ivy.file.exists" if="ivy.file.exists"> <add-jars output.dir="${par.staging.dir}"/> </target> <target name="collect-provided" description="Collects all the JARs expected to be provided for a PAR file."> <delete dir="${par.provided.dir}" quiet="true"/> <mkdir dir="${par.provided.dir}"/> <all-bundles target="copy-provided-jars"> <property name="copy.to.dir" value="${par.provided.bundles.dir}"/> </all-bundles> <all-bundles target="copy-provided-libs"> <property name="copy.to.dir" value="${par.provided.libraries.dir}"/> </all-bundles> </target> </project>�����������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-build/par/package.xml�����������������0000644�0000000�0000000�00000000644�11360615632�024434� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������<?xml version="1.0" encoding="UTF-8"?> <project name="package-par"> <import file="common.xml"/> <import file="../common/package.xml"/> <!-- Macros --> <macrodef name="dist-jar"> <attribute name="output.dir" default="${package.dist.dir}"/> <sequential> <mkdir dir="@{output.dir}"/> <copy file="${par.output.file}" tofile="@{output.dir}/${package.par.output.file}"/> </sequential> </macrodef> </project>��������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-build/par/publish.xml�����������������0000644�0000000�0000000�00000003507�11360615636�024514� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������<?xml version="1.0" encoding="UTF-8"?> <project name="publish-par" xmlns:ivy="antlib:org.apache.ivy.ant" xmlns:maven="antlib:org.apache.maven.artifact.ant"> <import file="common.xml"/> <import file="../common/publish.xml"/> <target name="publish-ivy" depends="ivy.init, resolve"> <delete quiet="true" file="${ivy.output.file}"/> <mkdir dir="${ivy.output.dir}" /> <ivy:publish resolver="${publication.resolver.prefix}-bundle-publish" pubdate="${timestamp}" status="${release.type}"> <artifacts pattern="${par.output.dir}/[artifact].[ext]"/> <artifacts pattern="${source-jar.output.dir}/[artifact].[ext]"/> <artifacts pattern="${ivy.output.dir}/[artifact].[ext]"/> </ivy:publish> </target> <target name="publish-maven" depends="create.pom, ivy.init, maven.init, resolve" unless="local.build"> <maven:deploy file="${par.output.file}"> <remoteRepository url="s3://${publish.bucket}/maven/bundles/${adjusted.release.type}"> <authentication username="${accessKey}" passphrase="${secretKey}"/> </remoteRepository> <pom file="${pom.output.file}"/> <attach file="${source-jar.output.file}" classifier="sources"/> </maven:deploy> </target> <target name="publish-maven-local" depends="create.pom, snapshot.pom, maven.init"> <maven:install file="${par.output.file}"> <pom file="${pom.output.file}"/> <attach file="${source-jar.output.file}" classifier="sources"/> </maven:install> </target> <target name="publish-maven-central" depends="maven.init"> <property name="maven.central.repository" value="s3://maven.springframework.org/${adjusted.release.type}"/> <maven:deploy file="${par.output.file}"> <remoteRepository url="${maven.central.repository}"/> <pom file="${local.pom.output.file}"/> <attach file="${source-jar.output.file}" classifier="sources"/> </maven:deploy> </target> </project>�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-build/par/common.xml������������������0000644�0000000�0000000�00000000174�11360615636�024333� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������<?xml version="1.0" encoding="UTF-8"?> <project name="common-par"> <import file="../multi-bundle/common.xml"/> </project>����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-build/par/quality.xml�����������������0000644�0000000�0000000�00000000233�11360615640�024522� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������<?xml version="1.0" encoding="UTF-8"?> <project name="quality-par"> <import file="common.xml"/> <import file="../multi-bundle/quality.xml"/> </project>���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-build/lib/����������������������������0000755�0000000�0000000�00000000000�11360615632�022277� 5����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-build/lib/ivy/������������������������0000755�0000000�0000000�00000000000�11360615646�023113� 5����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-build/lib/ivy/current.version���������0000644�0000000�0000000�00000000267�11360615632�026204� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������ivy.jar= 2.0.0 org.springframework.build.aws.ivy.jar= 1.0.8.RELEASE commons-codec= 1.3.0 commons-httpclient= 3.1.0 commons-logging= 1.1.1 jets3t= 0.7.0 �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-build/lib/ivy/jets3t.properties�������0000644�0000000�0000000�00000000533�11360615644�026444� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������## JetS3t Configuration Properties # A full description of all configuration properties can be found at # http://jets3t.s3.amazonaws.com/toolkit/configuration.html # Proxy configuration httpclient.proxy-autodetect=true #httpclient.proxy-host= #httpclient.proxy-port= #httpclient.proxy-user= #httpclient.proxy-password= #httpclient.proxy-domain= ���������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/readme.txt�����������������������������������0000644�0000000�0000000�00000001675�11360615632�021141� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Contained in this directory are the Spring Web Flow (SWF) related project sources. DIRECTORIES 1. build-spring-webflow - Contains the metadata needed to build the SWF projects using spring-build. To build all projects, simply run 'ant' (version 1.7 or >) in this directory. 2. spring-build - A linked in SVN external to Spring's master build system. Used to power the build for all Spring projects. 3. spring-binding - the data binding and mapping project, a Spring Web Flow driven internal library. 4. spring-webflow - The Spring Web Flow project. Contains the Web Flow engine. 5. spring-js - Spring's JavaScript abstraction framework, which includes Dojo integration. 6. spring-faces - Spring's JavaServerFaces integration module, which includes Web Flow & JavaScript support. 7. spring-webflow-samples - The Spring Web Flow sample applications, illustrating the framework in action.�������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-faces/��������������������������������0000755�0000000�0000000�00000000000�11360615640�021512� 5����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-faces/template.mf���������������������0000644�0000000�0000000�00000001505�11360615632�023653� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Bundle-SymbolicName: org.springframework.faces Bundle-Name: Spring Faces Bundle-Vendor: SpringSource Bundle-ManifestVersion: 2 Import-Package: org.springframework.webflow.engine.builder.support;version="[2.0.9, 2.0.10)" Import-Template: org.springframework.binding.*;version="[2.0.9, 2.0.10)", org.springframework.js.*;version="[2.0.9, 2.0.10)", org.springframework.webflow.*;version="[2.0.9, 2.0.10)", org.springframework.*;version="[2.5.6.SEC01, 3.1.0)", org.apache.commons.logging;version="[1.1.1, 2.0.0)", javax.el;version="[1.0.0, 2.0.0)", javax.servlet;version="[2.4.0, 3.0.0)", javax.servlet.http;version="[2.4.0, 3.0.0)", javax.faces.*;version="[1.2.0, 2.0.0)", org.ajax4jsf.*;version="[1.1.1, 2.0.0)";resolution:=optional, com.sun.facelets.*;version="[1.1.0, 2.0.0)";resolution:=optional, org.w3c.dom;version="0" �������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-faces/.project������������������������0000644�0000000�0000000�00000000563�11360615636�023172� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������<?xml version="1.0" encoding="UTF-8"?> <projectDescription> <name>spring-faces</name> <comment></comment> <projects> </projects> <buildSpec> <buildCommand> <name>org.eclipse.jdt.core.javabuilder</name> <arguments> </arguments> </buildCommand> </buildSpec> <natures> <nature>org.eclipse.jdt.core.javanature</nature> </natures> </projectDescription> ���������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-faces/src/����������������������������0000755�0000000�0000000�00000000000�11360615632�022302� 5����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-faces/src/main/�����������������������0000755�0000000�0000000�00000000000�11360615634�023230� 5����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-faces/src/main/resources/�������������0000755�0000000�0000000�00000000000�11360615634�025242� 5����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-faces/src/main/resources/META-INF/����0000755�0000000�0000000�00000000000�11360615644�026403� 5����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000157�00000000000�011570� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-faces/src/main/resources/META-INF/spring.schemas������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-faces/src/main/resources/META-INF/spri0000644�0000000�0000000�00000000167�11360615634�027306� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������http\://www.springframework.org/schema/faces/spring-faces-2.0.xsd=org/springframework/faces/config/spring-faces-2.0.xsd���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000161�00000000000�011563� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-faces/src/main/resources/META-INF/spring-faces.tld����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-faces/src/main/resources/META-INF/spri0000644�0000000�0000000�00000174626�11360615636�027324� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������<?xml version="1.0" encoding="ISO-8859-1"?> <taglib xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-jsptaglibrary_2_1.xsd" version="2.1"> <description>This is the rich UI tag library for Spring Faces.</description> <display-name>Spring Faces Rich UI Tags</display-name> <tlib-version>1.2</tlib-version> <short-name>sf</short-name> <uri>http://www.springframework.org/tags/faces</uri> <tag> <description> <![CDATA[<p>Renders the necessary CSS stylesheet includes for the Spring Faces components.</p> <p>Use of this tag in the head section of a page that contains the Spring Faces components is recommended as a browser performance optimization in keeping with the <a href="http://developer.yahoo.com/performance/"> Yahoo performance guidelines</a>. If this tag is not included, the stylesheet includes will be rendered inline with the first instance of a Spring Faces component that requires them.</p>]]> </description> <name>includeStyles</name> <tag-class></tag-class> <body-content>empty</body-content> <attribute> <description> <![CDATA[<p>The dojo theme to include when importing the CSS stylesheets.</p> <p>This can be either one of the pre-packaged Dojo themes or it can be a completely custom one that follows the necessary Dojo conventions.</p>]]> </description> <name>theme</name> <required>false</required> <deferred-value> <type>java.lang.String</type> </deferred-value> </attribute> <attribute> <description> <![CDATA[<p>The path to the Dojo theme to include when importing the CSS stylesheets. Defaults to /dijit/themes/</p> <p>Note that the theme name will be appended to any specified path. For example, if you have a modified version of the Dojo Tundra theme located at the path /customTheme/tundra/, the proper value of the themePath attribute would be "/customTheme/".</p>]]> </description> <name>themePath</name> <required>false</required> <deferred-value> <type>java.lang.String</type> </deferred-value> </attribute> </tag> <tag> <description> <![CDATA[<p>Renders the necessary JavaScript file includes for the Spring Faces components.</p> <p>Use of this tag in the head section of a page that contains the Spring Faces components is recommended as a browser performance optimization in keeping with the <a href="http://developer.yahoo.com/performance/"> Yahoo performance guidelines</a>. If this tag is not included, the script includes will be rendered inline with the first instance of a Spring Faces component that requires theme.</p>]]> </description> <name>includeScripts</name> <tag-class></tag-class> <body-content>empty</body-content> </tag> <tag> <description> <![CDATA[<p>Renders a resource include that will route through the <code>ResourceServlet</code>.</p> <p>The included resource can be either CSS or JavaScript. The type of include to render will be determined from the resource's file extension. The ResourceServlet will set the proper response headers for aggressive caching of the resource by the browser and will gzip the resource if the client browser supports it. These optimizations are in line with the <a href="http://developer.yahoo.com/performance/">Yahoo performance guidelines</a>. See the javadocs of the <code>ResourceServlet</code> for more information.</p>]]> </description> <name>resource</name> <tag-class></tag-class> <body-content>empty</body-content> <attribute> <description> <![CDATA[The local path to the resource. This path can be either relative to the root of the web application, or relative to the META-INF directory of a jar file on the classpath. See the javadocs of the <code>ResourceServlet</code> for more detail on the resolution algorithm.]]> </description> <name>path</name> <required>true</required> <deferred-value> <type>java.lang.String</type> </deferred-value> </attribute> </tag> <tag> <description> <![CDATA[<p>Renders a special resource include that will combine any child <code>resource</code> includes into one HTTP request.</p> <p>The child <code>resource</code> components must all be of the same resource type. This is especially useful when combining modularized CSS files for a site. Reducing the number of HTTP requests when a page loads is one of the <a href="http://developer.yahoo.com/performance/">Yahoo performance guidelines</a>.</p>]]> </description> <name>resourceGroup</name> <tag-class></tag-class> <body-content>JSP</body-content> </tag> <tag> <description> <![CDATA[<p>Applies client-side text validation behavior to a child <code>inputText</code> component.</p>]]> </description> <name>clientTextValidator</name> <tag-class></tag-class> <body-content>JSP</body-content> <attribute> <description><![CDATA[The message to display if value is invalid.]]></description> <name>invalidMessage</name> <required>false</required> <deferred-value> <type>java.lang.String</type> </deferred-value> </attribute> <attribute> <description><![CDATA[Converts all characters to lowercase if true. Defaults to false.]]></description> <name>lowercase</name> <required>false</required> <deferred-value> <type>boolean</type> </deferred-value> </attribute> <attribute> <description><![CDATA[A hint message to be displayed to the user when entering the text field.]]></description> <name>promptMessage</name> <required>false</required> <deferred-value> <type>java.lang.String</type> </deferred-value> </attribute> <attribute> <description><![CDATA[Converts the first character of each word to uppercase if true. Defaults to false.]]></description> <name>propercase</name> <required>false</required> <deferred-value> <type>boolean</type> </deferred-value> </attribute> <attribute> <description><![CDATA[JavaScript regular expression string used to validate the input.]]></description> <name>regExp</name> <required>false</required> <deferred-value> <type>java.lang.String</type> </deferred-value> </attribute> <attribute> <description><![CDATA[If true, the field must be non-empty to pass client-side validation.]]></description> <name>required</name> <required>false</required> <deferred-value> <type>boolean</type> </deferred-value> </attribute> <attribute> <description><![CDATA[Converts all characters to uppercase if true. Defaults to false.]]></description> <name>uppercase</name> <required>false</required> <deferred-value> <type>boolean</type> </deferred-value> </attribute> </tag> <tag> <description> <![CDATA[<p>Applies client-side numeric validation behavior to a child <code>inputText</code> component.</p>]]> </description> <name>clientNumberValidator</name> <tag-class></tag-class> <body-content>JSP</body-content> <attribute> <description><![CDATA[The message to display if value is invalid.]]></description> <name>invalidMessage</name> <required>false</required> <deferred-value> <type>java.lang.String</type> </deferred-value> </attribute> <attribute> <description><![CDATA[Converts all characters to lowercase if true. Defaults to false.]]></description> <name>lowercase</name> <required>false</required> <deferred-value> <type>boolean</type> </deferred-value> </attribute> <attribute> <description><![CDATA[A hint message to be displayed to the user when entering the text field.]]></description> <name>promptMessage</name> <required>false</required> <deferred-value> <type>java.lang.String</type> </deferred-value> </attribute> <attribute> <description><![CDATA[Converts the first character of each word to uppercase if true. Defaults to false.]]></description> <name>propercase</name> <required>false</required> <deferred-value> <type>boolean</type> </deferred-value> </attribute> <attribute> <description><![CDATA[The message to display if value is out-of-range.]]></description> <name>rangeMessage</name> <required>false</required> <deferred-value> <type>java.lang.String</type> </deferred-value> </attribute> <attribute> <description><![CDATA[JavaScript regular expression string used to validate the input.]]></description> <name>regExp</name> <required>false</required> <deferred-value> <type>java.lang.String</type> </deferred-value> </attribute> <attribute> <description><![CDATA[If true, the field must be non-empty to pass client-side validation.]]></description> <name>required</name> <required>false</required> <deferred-value> <type>boolean</type> </deferred-value> </attribute> <attribute> <description><![CDATA[Converts all characters to uppercase if true. Defaults to false.]]></description> <name>uppercase</name> <required>false</required> <deferred-value> <type>boolean</type> </deferred-value> </attribute> </tag> <tag> <description> <![CDATA[<p>Applies client-side currency validation behavior to a child <code>inputText</code> component.</p>]]> </description> <name>clientCurrencyValidator</name> <tag-class></tag-class> <body-content>JSP</body-content> <attribute> <description><![CDATA[The ISO4217 currency code, a three letter sequence like "USD".]]></description> <name>currency</name> <required>false</required> <deferred-value> <type>java.lang.String</type> </deferred-value> </attribute> <attribute> <description><![CDATA[The message to display if value is invalid.]]></description> <name>invalidMessage</name> <required>false</required> <deferred-value> <type>java.lang.String</type> </deferred-value> </attribute> <attribute> <description><![CDATA[Converts all characters to lowercase if true. Defaults to false.]]></description> <name>lowercase</name> <required>false</required> <deferred-value> <type>boolean</type> </deferred-value> </attribute> <attribute> <description><![CDATA[A hint message to be displayed to the user when entering the text field.]]></description> <name>promptMessage</name> <required>false</required> <deferred-value> <type>java.lang.String</type> </deferred-value> </attribute> <attribute> <description><![CDATA[Converts the first character of each word to uppercase if true. Defaults to false.]]></description> <name>propercase</name> <required>false</required> <deferred-value> <type>boolean</type> </deferred-value> </attribute> <attribute> <description><![CDATA[JavaScript regular expression string used to validate the input.]]></description> <name>regExp</name> <required>false</required> <deferred-value> <type>java.lang.String</type> </deferred-value> </attribute> <attribute> <description><![CDATA[If true, the field must be non-empty to pass client-side validation.]]></description> <name>required</name> <required>false</required> <deferred-value> <type>boolean</type> </deferred-value> </attribute> <attribute> <description><![CDATA[Converts all characters to uppercase if true. Defaults to false.]]></description> <name>uppercase</name> <required>false</required> <deferred-value> <type>boolean</type> </deferred-value> </attribute> </tag> <tag> <description> <![CDATA[<p>Applies client-side date validation behavior to a child <code>inputText</code> component. Field will display a popup calendar when entered.</p>]]> </description> <name>clientDateValidator</name> <tag-class></tag-class> <body-content>JSP</body-content> <attribute> <description><![CDATA[The message to display if value is invalid.]]></description> <name>invalidMessage</name> <required>false</required> <deferred-value> <type>java.lang.String</type> </deferred-value> </attribute> <attribute> <description><![CDATA[Converts all characters to lowercase if true. Defaults to false.]]></description> <name>lowercase</name> <required>false</required> <deferred-value> <type>boolean</type> </deferred-value> </attribute> <attribute> <description><![CDATA[A hint message to be displayed to the user when entering the text field.]]></description> <name>promptMessage</name> <required>false</required> <deferred-value> <type>java.lang.String</type> </deferred-value> </attribute> <attribute> <description> <![CDATA[Converts the first character of each word to uppercase if true. Defaults to false.]]> </description> <name>propercase</name> <required>false</required> <deferred-value> <type>boolean</type> </deferred-value> </attribute> <attribute> <description><![CDATA[JavaScript regular expression string used to validate the input.]]></description> <name>regExp</name> <required>false</required> <deferred-value> <type>java.lang.String</type> </deferred-value> </attribute> <attribute> <description><![CDATA[If true, the field must be non-empty to pass client-side validation. Defaults to false.]]> </description> <name>required</name> <required>false</required> <deferred-value> <type>boolean</type> </deferred-value> </attribute> <attribute> <description><![CDATA[Converts all characters to uppercase if true. Defaults to false.]]></description> <name>uppercase</name> <required>false</required> <deferred-value> <type>boolean</type> </deferred-value> </attribute> </tag> <tag> <description> <![CDATA[<p>Fires all client-side validators when a child component's onclick event is fired and suppresses propagation of the event if validation fails.</p>]]> </description> <name>validateAllOnClick</name> <tag-class></tag-class> <body-content>JSP</body-content> </tag> <tag> <description> <![CDATA[<p>Renders a gracefully degrading Ajax submit button.</p> <p>This button will submit the parent form using an Ajax request by default. The component is progressively enhanced so that the submit will still function with a full page refresh if JavaScript is unavailable on the client.</p> <p>The processing of the JSF component tree can be customized through use of the <code>processIds</code> attribute. By default only the button itself will be processed during the postback lifecycle.</p> <p>The content to render is determined on the server side by using a <code>render</code> action in the flow definition that processes the request. When updating the existing page, the rendered content must be a replacement for an existing identifiable DOM node in the page.</p> <p>The component is capable of driving transitions to another view with an Ajax request. In that case, a client-side redirect to the new view will occur so that browser history and normal back button behavior is still preserved.</p>]]> </description> <name>commandButton</name> <tag-class></tag-class> <body-content>JSP</body-content> <attribute> <description> <![CDATA[MethodExpression representing the application action to invoke when this component is activated by the user. The expression must evaluate to a public method that takes no parameters, and returns an Object (the toString() of which is called to derive the logical outcome) which is passed to the flow definition as the event to be signaled. The most common usage pattern is to supply a literal String and handle any custom processing of the event in the flow definition.]]> </description> <name> action </name> <required> false </required> <deferred-method> <method-signature> java.lang.Object action() </method-signature> </deferred-method> </attribute> <attribute> <description> <![CDATA[MethodExpression representing an action listener method that will be notified when this component is activated by the user. The expression must evaluate to a public method that takes an ActionEvent parameter, with a return type of void.]]> </description> <name> actionListener </name> <required> false </required> <deferred-method> <method-signature> void actionListener(javax.faces.event.ActionEvent) </method-signature> </deferred-method> </attribute> <attribute> <description> <![CDATA[Controls whether the button will use an Ajax request or a normal form submit. Default is true.]]> </description> <name>ajaxEnabled</name> <required>false</required> <deferred-value> <type>boolean</type> </deferred-value> </attribute> <attribute> <description> <![CDATA[The component identifier for this component. This value must be unique within the closest parent component that is a naming container.]]> </description> <name> id </name> <required> false </required> <rtexprvalue> true </rtexprvalue> </attribute> <attribute> <description> <![CDATA[Flag indicating that, if this component is activated by the user, notifications should be delivered to interested listeners and actions immediately (that is, during Apply Request Values phase) rather than waiting until Invoke Application phase. This flag can also be controlled through used of the <code>bind</code> attribute in the corresponding <code>transition</code> element in the flow definition. Setting <code>bind="false"</code> on the <code>transition</code> is equivalent to setting <code>immediate="true"</code>]]> </description> <name> immediate </name> <required> false </required> <deferred-value> <type> boolean </type> </deferred-value> </attribute> <attribute> <description> <![CDATA[Flag indicating whether or not this component should be rendered (during Render Response Phase), or processed on any subsequent form submit. The default value for this property is true.]]> </description> <name> rendered </name> <required> false </required> <deferred-value> <type> boolean </type> </deferred-value> </attribute> <attribute> <description> <![CDATA[The current value of this component. Controls the text that will be displayed on the button.]]> </description> <name> value </name> <required> false </required> <deferred-value> <type> java.lang.Object </type> </deferred-value> </attribute> <attribute> <description> <![CDATA[Access key that, when pressed, transfers focus to this element.]]> </description> <name> accesskey </name> <required> false </required> <deferred-value> <type> java.lang.String </type> </deferred-value> </attribute> <attribute> <description> <![CDATA[Alternate textual description of the element rendered by this component.]]> </description> <name> alt </name> <required> false </required> <deferred-value> <type> java.lang.String </type> </deferred-value> </attribute> <attribute> <description> The ValueExpression linking this component to a property in a backing bean </description> <name> binding </name> <required> false </required> <deferred-value> <type> javax.faces.component.UIComponent </type> </deferred-value> </attribute> <attribute> <description> <![CDATA[Direction indication for text that does not inherit directionality. Valid values are "LTR" (left-to-right) and "RTL" (right-to-left).]]> </description> <name> dir </name> <required> false </required> <deferred-value> <type> java.lang.String </type> </deferred-value> </attribute> <attribute> <description> <![CDATA[Flag indicating that this element must never receive focus or be included in a subsequent submit. A value of false causes no attribute to be rendered, while a value of true causes the attribute to be rendered as disabled="disabled".]]> </description> <name> disabled </name> <required> false </required> <deferred-value> <type> boolean </type> </deferred-value> </attribute> <attribute> <description> <![CDATA[Absolute or relative URL of the image to be displayed for this button. If specified, this "input" element will be of type "image". Otherwise, it will be of the type specified by the "type" property with a label specified by the "value" property.]]> </description> <name> image </name> <required> false </required> <deferred-value> <type> java.lang.String </type> </deferred-value> </attribute> <attribute> <description> <![CDATA[A localized user presentable name for this component.]]> </description> <name> label </name> <required> false </required> <deferred-value> <type> java.lang.String </type> </deferred-value> </attribute> <attribute> <description> <![CDATA[Code describing the language used in the generated markup for this component.]]> </description> <name> lang </name> <required> false </required> <deferred-value> <type> java.lang.String </type> </deferred-value> </attribute> <attribute> <description> <![CDATA[Javascript code executed when this element loses focus.]]> </description> <name> onblur </name> <required> false </required> <deferred-value> <type> java.lang.String </type> </deferred-value> </attribute> <attribute> <description> <![CDATA[Javascript code executed when this element loses focus and its value has been modified since gaining focus.]]> </description> <name> onchange </name> <required> false </required> <deferred-value> <type> java.lang.String </type> </deferred-value> </attribute> <attribute> <description> <![CDATA[Javascript code executed when a pointer button is clicked over this element.]]> </description> <name> onclick </name> <required> false </required> <deferred-value> <type> java.lang.String </type> </deferred-value> </attribute> <attribute> <description> <![CDATA[Javascript code executed when a pointer button is double clicked over this element.]]> </description> <name> ondblclick </name> <required> false </required> <deferred-value> <type> java.lang.String </type> </deferred-value> </attribute> <attribute> <description> <![CDATA[Javascript code executed when this element receives focus.]]> </description> <name> onfocus </name> <required> false </required> <deferred-value> <type> java.lang.String </type> </deferred-value> </attribute> <attribute> <description> <![CDATA[Javascript code executed when a key is pressed down over this element.]]> </description> <name> onkeydown </name> <required> false </required> <deferred-value> <type> java.lang.String </type> </deferred-value> </attribute> <attribute> <description> <![CDATA[Javascript code executed when a key is pressed and released over this element.]]> </description> <name> onkeypress </name> <required> false </required> <deferred-value> <type> java.lang.String </type> </deferred-value> </attribute> <attribute> <description> <![CDATA[Javascript code executed when a key is released over this element.]]> </description> <name> onkeyup </name> <required> false </required> <deferred-value> <type> java.lang.String </type> </deferred-value> </attribute> <attribute> <description> <![CDATA[Javascript code executed when a pointer button is pressed down over this element.]]> </description> <name> onmousedown </name> <required> false </required> <deferred-value> <type> java.lang.String </type> </deferred-value> </attribute> <attribute> <description> <![CDATA[Javascript code executed when a pointer button is moved within this element.]]> </description> <name> onmousemove </name> <required> false </required> <deferred-value> <type> java.lang.String </type> </deferred-value> </attribute> <attribute> <description> <![CDATA[Javascript code executed when a pointer button is moved away from this element.]]> </description> <name> onmouseout </name> <required> false </required> <deferred-value> <type> java.lang.String </type> </deferred-value> </attribute> <attribute> <description> <![CDATA[Javascript code executed when a pointer button is moved onto this element.]]> </description> <name> onmouseover </name> <required> false </required> <deferred-value> <type> java.lang.String </type> </deferred-value> </attribute> <attribute> <description> <![CDATA[Javascript code executed when a pointer button is released over this element.]]> </description> <name> onmouseup </name> <required> false </required> <deferred-value> <type> java.lang.String </type> </deferred-value> </attribute> <attribute> <description> <![CDATA[Javascript code executed when text within this element is selected by the user.]]> </description> <name> onselect </name> <required> false </required> <deferred-value> <type> java.lang.String </type> </deferred-value> </attribute> <attribute> <description> <![CDATA[A comma-delimited list of fully-qualified (i.e., formId:componentId) JSF clientIds for the components that should serve as the root node of a subtree to be processed by the JSF lifecycle. If omitted, only the component itself will be processed. May be set to a special value of <code>"*"</code> if the entire component tree should be processed.]]> </description> <name>processIds</name> <required>false</required> <deferred-value> <type>java.lang.String</type> </deferred-value> </attribute> <attribute> <description> <![CDATA[Flag indicating that this component will prohibit changes by the user. The element may receive focus unless it has also been disabled. A value of false causes no attribute to be rendered, while a value of true causes the attribute to be rendered as readonly="readonly".]]> </description> <name> readonly </name> <required> false </required> <deferred-value> <type> boolean </type> </deferred-value> </attribute> <attribute> <description> <![CDATA[CSS style(s) to be applied when this component is rendered.]]> </description> <name> style </name> <required> false </required> <deferred-value> <type> java.lang.String </type> </deferred-value> </attribute> <attribute> <description> <![CDATA[Space-separated list of CSS style class(es) to be applied when this element is rendered. This value must be passed through as the "class" attribute on generated markup.]]> </description> <name> styleClass </name> <required> false </required> <deferred-value> <type> java.lang.String </type> </deferred-value> </attribute> <attribute> <description> <![CDATA[Position of this element in the tabbing order for the current document. This value must be an integer between 0 and 32767.]]> </description> <name> tabindex </name> <required> false </required> <deferred-value> <type> java.lang.String </type> </deferred-value> </attribute> <attribute> <description> <![CDATA[Advisory title information about markup elements generated for this component.]]> </description> <name> title </name> <required> false </required> <deferred-value> <type> java.lang.String </type> </deferred-value> </attribute> <attribute> <description> <![CDATA[Type of button to create. Valid values are "submit" and "reset". If not specified, or not a valid value, the default value is "submit".]]> </description> <name> type </name> <required> false </required> <deferred-value> <type> java.lang.String </type> </deferred-value> </attribute> </tag> <tag> <description> <![CDATA[<p>Renders a gracefully degrading Ajax link.</p> <p>This link will submit the parent form using an Ajax request by default. The component is progressively enhanced so that the submit will still function with a full page refresh if JavaScript is unavailable on the client. To achieve this, an HTML button will be rendered initially, and replaced with a JavaScript enhanced link. The button is rendered with a special "progressiveLink" CSS class so that its look can be customized as desired.</p> <p>The processing of the JSF component tree can be customized through use of the <code>processIds</code> attribute. By default only the button itself will be processed during the postback lifecycle.</p> <p>The content to render is determined on the server side by using a <code>render</code> action in the flow definition that processes the request. When updating the existing page, the rendered content must be a replacement for an existing identifiable DOM node in the page.</p> <p>The component is capable of driving transitions to another view with an Ajax request. In that case, a client-side redirect to the new view will occur so that browser history and normal back button behavior is still preserved.</p>]]> </description> <name>commandLink</name> <tag-class></tag-class> <body-content>JSP</body-content> <attribute> <description> <![CDATA[MethodExpression representing the application action to invoke when this component is activated by the user. The expression must evaluate to a public method that takes no parameters, and returns an Object (the toString() of which is called to derive the logical outcome) which is passed to the flow definition as the event to be signaled. The most common usage pattern is to supply a literal String and handle any custom processing of the event in the flow definition.]]> </description> <name> action </name> <required> false </required> <deferred-method> <method-signature> java.lang.Object action() </method-signature> </deferred-method> </attribute> <attribute> <description> <![CDATA[MethodExpression representing an action listener method that will be notified when this component is activated by the user. The expression must evaluate to a public method that takes an ActionEvent parameter, with a return type of void.]]> </description> <name> actionListener </name> <required> false </required> <deferred-method> <method-signature> void actionListener(javax.faces.event.ActionEvent) </method-signature> </deferred-method> </attribute> <attribute> <description> <![CDATA[Controls whether the button will use an Ajax request or a normal form submit. Default is true.]]> </description> <name>ajaxEnabled</name> <required>false</required> <deferred-value> <type>boolean</type> </deferred-value> </attribute> <attribute> <description> The ValueExpression linking this component to a property in a backing bean </description> <name> binding </name> <required> false </required> <deferred-value> <type> javax.faces.component.UIComponent </type> </deferred-value> </attribute> <attribute> <description> <![CDATA[The component identifier for this component. This value must be unique within the closest parent component that is a naming container.]]> </description> <name> id </name> <required> false </required> <rtexprvalue> true </rtexprvalue> </attribute> <attribute> <description> <![CDATA[Flag indicating that, if this component is activated by the user, notifications should be delivered to interested listeners and actions immediately (that is, during Apply Request Values phase) rather than waiting until Invoke Application phase. This flag can also be controlled through used of the <code>bind</code> attribute in the corresponding <code>transition</code> element in the flow definition. Setting <code>bind="false"</code> on the <code>transition</code> is equivalent to setting <code>immediate="true"</code>]]> </description> <name> immediate </name> <required> false </required> <deferred-value> <type> boolean </type> </deferred-value> </attribute> <attribute> <description> <![CDATA[Flag indicating whether or not this component should be rendered (during Render Response Phase), or processed on any subsequent form submit. The default value for this property is true.]]> </description> <name> rendered </name> <required> false </required> <deferred-value> <type> boolean </type> </deferred-value> </attribute> <attribute> <description> <![CDATA[The current value of this component.]]> </description> <name> value </name> <required> false </required> <deferred-value> <type> java.lang.Object </type> </deferred-value> </attribute> <attribute> <description> <![CDATA[Access key that, when pressed, transfers focus to this element.]]> </description> <name> accesskey </name> <required> false </required> <deferred-value> <type> java.lang.String </type> </deferred-value> </attribute> <attribute> <description> <![CDATA[The character encoding of the resource designated by this hyperlink.]]> </description> <name> charset </name> <required> false </required> <deferred-value> <type> java.lang.String </type> </deferred-value> </attribute> <attribute> <description> <![CDATA[The position and shape of the hot spot on the screen (for use in client-side image maps).]]> </description> <name> coords </name> <required> false </required> <deferred-value> <type> java.lang.String </type> </deferred-value> </attribute> <attribute> <description> <![CDATA[Direction indication for text that does not inherit directionality. Valid values are "LTR" (left-to-right) and "RTL" (right-to-left).]]> </description> <name> dir </name> <required> false </required> <deferred-value> <type> java.lang.String </type> </deferred-value> </attribute> <attribute> <description> <![CDATA[Flag indicating that this element must never receive focus or be included in a subsequent submit.]]> </description> <name> disabled </name> <required> false </required> <deferred-value> <type> boolean </type> </deferred-value> </attribute> <attribute> <description> <![CDATA[The language code of the resource designated by this hyperlink.]]> </description> <name> hreflang </name> <required> false </required> <deferred-value> <type> java.lang.String </type> </deferred-value> </attribute> <attribute> <description> <![CDATA[Code describing the language used in the generated markup for this component.]]> </description> <name> lang </name> <required> false </required> <deferred-value> <type> java.lang.String </type> </deferred-value> </attribute> <attribute> <description> <![CDATA[Javascript code executed when this element loses focus.]]> </description> <name> onblur </name> <required> false </required> <deferred-value> <type> java.lang.String </type> </deferred-value> </attribute> <attribute> <description> <![CDATA[Javascript code executed when a pointer button is clicked over this element.]]> </description> <name> onclick </name> <required> false </required> <deferred-value> <type> java.lang.String </type> </deferred-value> </attribute> <attribute> <description> <![CDATA[Javascript code executed when a pointer button is double clicked over this element.]]> </description> <name> ondblclick </name> <required> false </required> <deferred-value> <type> java.lang.String </type> </deferred-value> </attribute> <attribute> <description> <![CDATA[Javascript code executed when this element receives focus.]]> </description> <name> onfocus </name> <required> false </required> <deferred-value> <type> java.lang.String </type> </deferred-value> </attribute> <attribute> <description> <![CDATA[Javascript code executed when a key is pressed down over this element.]]> </description> <name> onkeydown </name> <required> false </required> <deferred-value> <type> java.lang.String </type> </deferred-value> </attribute> <attribute> <description> <![CDATA[Javascript code executed when a key is pressed and released over this element.]]> </description> <name> onkeypress </name> <required> false </required> <deferred-value> <type> java.lang.String </type> </deferred-value> </attribute> <attribute> <description> <![CDATA[Javascript code executed when a key is released over this element.]]> </description> <name> onkeyup </name> <required> false </required> <deferred-value> <type> java.lang.String </type> </deferred-value> </attribute> <attribute> <description> <![CDATA[Javascript code executed when a pointer button is pressed down over this element.]]> </description> <name> onmousedown </name> <required> false </required> <deferred-value> <type> java.lang.String </type> </deferred-value> </attribute> <attribute> <description> <![CDATA[Javascript code executed when a pointer button is moved within this element.]]> </description> <name> onmousemove </name> <required> false </required> <deferred-value> <type> java.lang.String </type> </deferred-value> </attribute> <attribute> <description> <![CDATA[Javascript code executed when a pointer button is moved away from this element.]]> </description> <name> onmouseout </name> <required> false </required> <deferred-value> <type> java.lang.String </type> </deferred-value> </attribute> <attribute> <description> <![CDATA[Javascript code executed when a pointer button is moved onto this element.]]> </description> <name> onmouseover </name> <required> false </required> <deferred-value> <type> java.lang.String </type> </deferred-value> </attribute> <attribute> <description> <![CDATA[Javascript code executed when a pointer button is released over this element.]]> </description> <name> onmouseup </name> <required> false </required> <deferred-value> <type> java.lang.String </type> </deferred-value> </attribute> <attribute> <description> <![CDATA[A comma-delimited list of fully-qualified (i.e., formId:componentId) JSF clientIds for the components that should serve as the root node of a subtree to be processed by the JSF lifecycle. If omitted, only the component itself will be processed. May be set to a special value of <code>"*"</code> if the entire component tree should be processed.]]> </description> <name>processIds</name> <required>false</required> <deferred-value> <type>java.lang.String</type> </deferred-value> </attribute> <attribute> <description> <![CDATA[The relationship from the current document to the anchor specified by this hyperlink. The value of this attribute is a space-separated list of link types.]]> </description> <name> rel </name> <required> false </required> <deferred-value> <type> java.lang.String </type> </deferred-value> </attribute> <attribute> <description> <![CDATA[A reverse link from the anchor specified by this hyperlink to the current document. The value of this attribute is a space-separated list of link types.]]> </description> <name> rev </name> <required> false </required> <deferred-value> <type> java.lang.String </type> </deferred-value> </attribute> <attribute> <description> <![CDATA[The shape of the hot spot on the screen (for use in client-side image maps). Valid values are: default (entire region); rect (rectangular region); circle (circular region); and poly (polygonal region).]]> </description> <name> shape </name> <required> false </required> <deferred-value> <type> java.lang.String </type> </deferred-value> </attribute> <attribute> <description> <![CDATA[CSS style(s) to be applied when this component is rendered.]]> </description> <name> style </name> <required> false </required> <deferred-value> <type> java.lang.String </type> </deferred-value> </attribute> <attribute> <description> <![CDATA[Space-separated list of CSS style class(es) to be applied when this element is rendered. This value must be passed through as the "class" attribute on generated markup.]]> </description> <name> styleClass </name> <required> false </required> <deferred-value> <type> java.lang.String </type> </deferred-value> </attribute> <attribute> <description> <![CDATA[Position of this element in the tabbing order for the current document. This value must be an integer between 0 and 32767.]]> </description> <name> tabindex </name> <required> false </required> <deferred-value> <type> java.lang.String </type> </deferred-value> </attribute> <attribute> <description> <![CDATA[Name of a frame where the resource retrieved via this hyperlink is to be displayed.]]> </description> <name> target </name> <required> false </required> <deferred-value> <type> java.lang.String </type> </deferred-value> </attribute> <attribute> <description> <![CDATA[Advisory title information about markup elements generated for this component.]]> </description> <name> title </name> <required> false </required> <deferred-value> <type> java.lang.String </type> </deferred-value> </attribute> <attribute> <description> <![CDATA[The content type of the resource designated by this hyperlink.]]> </description> <name> type </name> <required> false </required> <deferred-value> <type> java.lang.String </type> </deferred-value> </attribute> </tag> <tag> <description> <![CDATA[<p>Creates a JavaScript event listener for one of the child component's events that will trigger an Ajax submit of the parent form.</p> <p>The installed JavaScript listener will submit the parent form using an Ajax request. This component is purely JavaScript based and should only be used in an environment where the availability of JavaScript on the client is not a concern.</p> <p>The processing of the JSF component tree can be customized through use of the <code>processIds</code> attribute. By default only the button itself will be processed during the postback lifecycle.</p> <p>The content to render is determined on the server side by using a <code>render</code> action in the flow definition that processes the request. When updating the existing page, the rendered content must be a replacement for an existing identifiable DOM node in the page.</p> <p>The component is capable of driving transitions to another view with an Ajax request. In that case, a client-side redirect to the new view will occur so that browser history and normal back button behavior is still preserved.</p>]]> </description> <name>ajaxEvent</name> <tag-class></tag-class> <body-content>JSP</body-content> <attribute> <description> <![CDATA[MethodExpression representing the application action to invoke when this component is activated by the user. The expression must evaluate to a public method that takes no parameters, and returns an Object (the toString() of which is called to derive the logical outcome) which is passed to the flow definition as the event to be signaled. The most common usage pattern is to supply a literal String and handle any custom processing of the event in the flow definition.]]> </description> <name>action</name> <required>false</required> <deferred-method> <method-signature> java.lang.Object action() </method-signature> </deferred-method> </attribute> <attribute> <description><![CDATA[The event to listen to on the child component that will trigger the Ajax request. For example, <code>event="onchange"</code> will fire an Ajax event when the child component's value changes.]]> </description> <name>event</name> </attribute> <attribute> <description> <![CDATA[A comma-delimited list of fully-qualified (i.e., formId:componentId) JSF clientIds for the components that should serve as the root node of a subtree to be processed by the JSF lifecycle. If omitted, only the component itself will be processed. May be set to a special value of <code>"*"</code> if the entire component tree should be processed.]]> </description> <name>processIds</name> <required>false</required> <deferred-value> <type>java.lang.String</type> </deferred-value> </attribute> </tag> </taglib>����������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000167�00000000000�011571� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-faces/src/main/resources/META-INF/springfaces.taglib.xml����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-faces/src/main/resources/META-INF/spri0000644�0000000�0000000�00000005565�11360615634�027315� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������<?xml version="1.0"?> <!DOCTYPE facelet-taglib PUBLIC "-//Sun Microsystems, Inc.//DTD Facelet Taglib 1.0//EN" "http://java.sun.com/dtd/facelet-taglib_1_0.dtd"> <facelet-taglib> <namespace>http://www.springframework.org/tags/faces</namespace> <tag> <tag-name>includeStyles</tag-name> <component> <component-type>spring.faces.DojoIncludeStyles</component-type> <renderer-type>spring.faces.DojoStyleRenderer</renderer-type> </component> </tag> <tag> <tag-name>includeScripts</tag-name> <component> <component-type>spring.faces.DojoIncludeScripts</component-type> <renderer-type>spring.faces.DojoScriptRenderer</renderer-type> </component> </tag> <tag> <tag-name>resourceGroup</tag-name> <component> <component-type>spring.faces.ResourceGroup</component-type> <renderer-type>spring.faces.ResourceGroupRenderer</renderer-type> </component> </tag> <tag> <tag-name>resource</tag-name> <component> <component-type>spring.faces.Resource</component-type> <renderer-type>spring.faces.ResourceRenderer</renderer-type> </component> </tag> <tag> <tag-name>commandButton</tag-name> <component> <component-type>spring.faces.ProgressiveCommandButton</component-type> <renderer-type>spring.faces.ProgressiveCommandButtonRenderer</renderer-type> </component> </tag> <tag> <tag-name>commandLink</tag-name> <component> <component-type>spring.faces.ProgressiveCommandLink</component-type> <renderer-type>spring.faces.ProgressiveCommandLinkRenderer</renderer-type> </component> </tag> <tag> <tag-name>ajaxEvent</tag-name> <component> <component-type>spring.faces.AjaxEventInterceptor</component-type> <renderer-type>spring.faces.AjaxEventInterceptorRenderer</renderer-type> </component> </tag> <tag> <tag-name>clientTextValidator</tag-name> <component> <component-type>spring.faces.DojoClientTextValidator</component-type> <renderer-type>spring.faces.DojoWidgetRenderer</renderer-type> </component> </tag> <tag> <tag-name>clientNumberValidator</tag-name> <component> <component-type>spring.faces.DojoClientNumberValidator</component-type> <renderer-type>spring.faces.DojoWidgetRenderer</renderer-type> </component> </tag> <tag> <tag-name>clientCurrencyValidator</tag-name> <component> <component-type>spring.faces.DojoClientCurrencyValidator</component-type> <renderer-type>spring.faces.DojoWidgetRenderer</renderer-type> </component> </tag> <tag> <tag-name>clientDateValidator</tag-name> <component> <component-type>spring.faces.DojoClientDateValidator</component-type> <renderer-type>spring.faces.DojoWidgetRenderer</renderer-type> </component> </tag> <tag> <tag-name>validateAllOnClick</tag-name> <component> <component-type>spring.faces.ValidateAll</component-type> <renderer-type>spring.faces.ValidateAllRenderer</renderer-type> </component> </tag> </facelet-taglib>�������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000161�00000000000�011563� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-faces/src/main/resources/META-INF/faces-config.xml����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-faces/src/main/resources/META-INF/face0000644�0000000�0000000�00000013471�11360615634�027231� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������<?xml version="1.0"?> <!DOCTYPE faces-config PUBLIC "-//Sun Microsystems, Inc.//DTD JavaServer Faces Config 1.0//EN" "http://java.sun.com/dtd/web-facesconfig_1_0.dtd"> <faces-config> <application> <action-listener>org.springframework.faces.webflow.FlowActionListener</action-listener> <action-listener>org.springframework.faces.model.SelectionTrackingActionListener</action-listener> <variable-resolver>org.springframework.faces.webflow.FlowVariableResolver</variable-resolver> <property-resolver>org.springframework.faces.webflow.FlowPropertyResolver</property-resolver> <variable-resolver>org.springframework.faces.webflow.SpringBeanWebFlowVariableResolver</variable-resolver> <view-handler>org.springframework.faces.webflow.FlowViewHandler</view-handler> </application> <factory> <application-factory>org.springframework.faces.webflow.FlowApplicationFactory</application-factory> </factory> <lifecycle> <phase-listener>org.springframework.faces.support.RequestLoggingPhaseListener</phase-listener> </lifecycle> <component> <component-type>spring.faces.ProgressiveCommandButton</component-type> <component-class>org.springframework.faces.ui.ProgressiveUICommand</component-class> </component> <component> <component-type>spring.faces.ProgressiveCommandLink</component-type> <component-class>org.springframework.faces.ui.ProgressiveUICommand</component-class> </component> <component> <component-type>spring.faces.AjaxEventInterceptor</component-type> <component-class>javax.faces.component.UICommand</component-class> </component> <component> <component-type>spring.faces.DojoIncludeStyles</component-type> <component-class>org.springframework.faces.ui.DynamicComponent</component-class> </component> <component> <component-type>spring.faces.DojoIncludeScripts</component-type> <component-class>org.springframework.faces.ui.DynamicComponent</component-class> </component> <component> <component-type>spring.faces.ResourceGroup</component-type> <component-class>org.springframework.faces.ui.DynamicComponent</component-class> </component> <component> <component-type>spring.faces.Resource</component-type> <component-class>org.springframework.faces.ui.DynamicComponent</component-class> </component> <component> <component-type>spring.faces.DojoClientTextValidator</component-type> <component-class>org.springframework.faces.ui.DojoClientTextValidator</component-class> </component> <component> <component-type>spring.faces.DojoClientNumberValidator</component-type> <component-class>org.springframework.faces.ui.DojoClientNumberValidator</component-class> </component> <component> <component-type>spring.faces.DojoClientCurrencyValidator</component-type> <component-class>org.springframework.faces.ui.DojoClientCurrencyValidator</component-class> </component> <component> <component-type>spring.faces.DojoClientNumberValidator</component-type> <component-class>org.springframework.faces.ui.DojoClientNumberValidator</component-class> </component> <component> <component-type>spring.faces.DojoClientDateValidator</component-type> <component-class>org.springframework.faces.ui.DojoClientDateValidator</component-class> </component> <component> <component-type>spring.faces.ValidateAll</component-type> <component-class>org.springframework.faces.ui.DynamicComponent</component-class> </component> <render-kit> <render-kit-id>HTML_BASIC</render-kit-id> <renderer> <component-family>javax.faces.Command</component-family> <renderer-type>spring.faces.ProgressiveCommandButtonRenderer</renderer-type> <renderer-class>org.springframework.faces.ui.ProgressiveCommandButtonRenderer</renderer-class> </renderer> <renderer> <component-family>javax.faces.Command</component-family> <renderer-type>spring.faces.ProgressiveCommandLinkRenderer</renderer-type> <renderer-class>org.springframework.faces.ui.ProgressiveCommandLinkRenderer</renderer-class> </renderer> <renderer> <component-family>javax.faces.Command</component-family> <renderer-type>spring.faces.AjaxEventInterceptorRenderer</renderer-type> <renderer-class>org.springframework.faces.ui.AjaxEventInterceptorRenderer</renderer-class> </renderer> <renderer> <component-family>spring.faces.Decoration</component-family> <renderer-type>spring.faces.DojoWidgetRenderer</renderer-type> <renderer-class>org.springframework.faces.ui.DojoWidgetRenderer</renderer-class> </renderer> <renderer> <component-family>spring.faces.DynamicComponent</component-family> <renderer-type>spring.faces.ValidateAllRenderer</renderer-type> <renderer-class>org.springframework.faces.ui.ValidateAllRenderer</renderer-class> </renderer> <renderer> <component-family>spring.faces.DynamicComponent</component-family> <renderer-type>spring.faces.DojoStyleRenderer</renderer-type> <renderer-class>org.springframework.faces.ui.DojoStyleRenderer</renderer-class> </renderer> <renderer> <component-family>spring.faces.DynamicComponent</component-family> <renderer-type>spring.faces.DojoScriptRenderer</renderer-type> <renderer-class>org.springframework.faces.ui.DojoScriptRenderer</renderer-class> </renderer> <renderer> <component-family>spring.faces.DynamicComponent</component-family> <renderer-type>spring.faces.ResourceGroupRenderer</renderer-type> <renderer-class>org.springframework.faces.ui.ResourceGroupRenderer</renderer-class> </renderer> <renderer> <component-family>spring.faces.DynamicComponent</component-family> <renderer-type>spring.faces.ResourceRenderer</renderer-type> <renderer-class>org.springframework.faces.ui.ResourceRenderer</renderer-class> </renderer> </render-kit> </faces-config> �������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000160�00000000000�011562� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-faces/src/main/resources/META-INF/spring.handlers�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-faces/src/main/resources/META-INF/spri0000644�0000000�0000000�00000000143�11360615644�027301� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������http\://www.springframework.org/schema/faces=org.springframework.faces.config.FacesNamespaceHandler�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-faces/src/main/java/������������������0000755�0000000�0000000�00000000000�11360615632�024147� 5����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-faces/src/main/java/org/��������������0000755�0000000�0000000�00000000000�11360615632�024736� 5����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000147�00000000000�011567� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-faces/src/main/java/org/springframework/��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-faces/src/main/java/org/springframewor0000755�0000000�0000000�00000000000�11360615632�027724� 5����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000155�00000000000�011566� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-faces/src/main/java/org/springframework/faces/��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-faces/src/main/java/org/springframewor0000755�0000000�0000000�00000000000�11360615644�027727� 5����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000167�00000000000�011571� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-faces/src/main/java/org/springframework/faces/richfaces/����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-faces/src/main/java/org/springframewor0000755�0000000�0000000�00000000000�11360615636�027730� 5����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000220�00000000000�011557� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-faces/src/main/java/org/springframework/faces/richfaces/RichFacesAjaxHandler.java���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-faces/src/main/java/org/springframewor0000644�0000000�0000000�00000006667�11360615636�027751� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* * Copyright 2004-2008 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.springframework.faces.richfaces; import java.io.IOException; import javax.faces.FactoryFinder; import javax.faces.context.FacesContext; import javax.faces.context.FacesContextFactory; import javax.servlet.ServletContext; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.ajax4jsf.context.AjaxContext; import org.springframework.faces.webflow.FlowLifecycle; import org.springframework.js.ajax.AjaxHandler; import org.springframework.js.ajax.SpringJavascriptAjaxHandler; import org.springframework.util.Assert; import org.springframework.web.context.support.WebApplicationObjectSupport; /** * Ajax handler that works with Rich Faces, allowing support for Web Flow Ajax features with the Rich Faces toolkit. * * @author Jeremy Grelle */ public class RichFacesAjaxHandler extends WebApplicationObjectSupport implements AjaxHandler { private AjaxHandler delegate = new SpringJavascriptAjaxHandler(); public boolean isAjaxRequest(HttpServletRequest request, HttpServletResponse response) { if (isRichFacesAjaxRequest(request, response)) { return true; } else { return delegate.isAjaxRequest(request, response); } } public void sendAjaxRedirect(String targetUrl, HttpServletRequest request, HttpServletResponse response, boolean popup) throws IOException { if (isRichFacesAjaxRequest(request, response)) { response.sendRedirect(response.encodeRedirectURL(targetUrl)); } else { delegate.sendAjaxRedirect(targetUrl, request, response, popup); } } protected boolean isRichFacesAjaxRequest(HttpServletRequest request, HttpServletResponse response) { FacesContextHelper helper = new FacesContextHelper(); try { FacesContext facesContext = helper.getFacesContext(getServletContext(), request, response); AjaxContext context = AjaxContext.getCurrentInstance(facesContext); if (context != null) { return context.isAjaxRequest(facesContext); } else { return false; } } finally { helper.cleanup(); } } private static class FacesContextHelper { private boolean created = false; protected FacesContext getFacesContext(ServletContext context, HttpServletRequest request, HttpServletResponse response) { if (FacesContext.getCurrentInstance() != null) { return FacesContext.getCurrentInstance(); } else { FacesContextFactory facesContextFactory = (FacesContextFactory) FactoryFinder .getFactory(FactoryFinder.FACES_CONTEXT_FACTORY); FacesContext defaultFacesContext = facesContextFactory.getFacesContext(context, request, response, FlowLifecycle.newInstance()); Assert.notNull(defaultFacesContext, "Creation of the default FacesContext failed."); created = true; return defaultFacesContext; } } protected void cleanup() { if (created) { FacesContext.getCurrentInstance().release(); } } } } �������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000203�00000000000�011560� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-faces/src/main/java/org/springframework/faces/richfaces/package.html����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-faces/src/main/java/org/springframewor0000644�0000000�0000000�00000000143�11360615636�027730� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������<html> <body> <p>Ajax integration support for the Rich Faces component library.</p> </body> </html>�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000161�00000000000�011563� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-faces/src/main/java/org/springframework/faces/mvc/����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-faces/src/main/java/org/springframewor0000755�0000000�0000000�00000000000�11360615640�027723� 5����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000175�00000000000�011570� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-faces/src/main/java/org/springframework/faces/mvc/JsfView.java����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-faces/src/main/java/org/springframewor0000644�0000000�0000000�00000010214�11360615634�027726� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* * Copyright 2004-2008 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.springframework.faces.mvc; import java.io.IOException; import java.util.Iterator; import java.util.Map; import javax.faces.FacesException; import javax.faces.FactoryFinder; import javax.faces.application.ViewHandler; import javax.faces.component.UIViewRoot; import javax.faces.context.FacesContext; import javax.faces.context.FacesContextFactory; import javax.faces.event.PhaseId; import javax.faces.lifecycle.Lifecycle; import javax.faces.lifecycle.LifecycleFactory; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.springframework.faces.webflow.JsfUtils; import org.springframework.util.Assert; import org.springframework.web.servlet.support.RequestContextUtils; import org.springframework.web.servlet.view.AbstractUrlBasedView; /** * JSF View that renders a transient (stateless) JSF view template. The UIViewRoot will not be saved and thus the JSF * lifecycle will not be able to be invoked on postback. * * @author Jeremy Grelle */ public class JsfView extends AbstractUrlBasedView { private Lifecycle facesLifecycle; public void afterPropertiesSet() throws Exception { super.afterPropertiesSet(); facesLifecycle = createFacesLifecycle(); } protected void renderMergedOutputModel(Map model, HttpServletRequest request, HttpServletResponse response) throws Exception { FacesContext facesContext = createFacesContext(request, response); populateRequestMap(facesContext, model); JsfUtils.notifyBeforeListeners(PhaseId.RESTORE_VIEW, facesLifecycle, facesContext); ViewHandler viewHandler = facesContext.getApplication().getViewHandler(); if (JsfUtils.isAtLeastJsf12() && !JsfUtils.isPortlet(facesContext)) { viewHandler.initView(facesContext); } UIViewRoot viewRoot = viewHandler.createView(facesContext, getUrl()); Assert.notNull(viewRoot, "A JSF view could not be created for " + getUrl()); viewRoot.setLocale(RequestContextUtils.getLocale(request)); viewRoot.setTransient(true); facesContext.setViewRoot(viewRoot); JsfUtils.notifyAfterListeners(PhaseId.RESTORE_VIEW, facesLifecycle, facesContext); facesContext.setViewRoot(viewRoot); facesContext.renderResponse(); try { JsfUtils.notifyBeforeListeners(PhaseId.RENDER_RESPONSE, facesLifecycle, facesContext); logger.debug("Asking view handler to render view"); facesContext.getApplication().getViewHandler().renderView(facesContext, viewRoot); JsfUtils.notifyAfterListeners(PhaseId.RENDER_RESPONSE, facesLifecycle, facesContext); } catch (IOException e) { throw new FacesException("An I/O error occurred during view rendering", e); } finally { logger.debug("View rendering complete"); facesContext.responseComplete(); facesContext.release(); } } private void populateRequestMap(FacesContext facesContext, Map model) { Iterator i = model.keySet().iterator(); while (i.hasNext()) { String key = i.next().toString(); facesContext.getExternalContext().getRequestMap().put(key, model.get(key)); } } private FacesContext createFacesContext(HttpServletRequest request, HttpServletResponse response) { FacesContextFactory facesContextFactory = (FacesContextFactory) FactoryFinder .getFactory(FactoryFinder.FACES_CONTEXT_FACTORY); return facesContextFactory.getFacesContext(getServletContext(), request, response, facesLifecycle); } private Lifecycle createFacesLifecycle() { LifecycleFactory lifecycleFactory = (LifecycleFactory) FactoryFinder .getFactory(FactoryFinder.LIFECYCLE_FACTORY); return lifecycleFactory.getLifecycle(LifecycleFactory.DEFAULT_LIFECYCLE); } } ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000175�00000000000�011570� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-faces/src/main/java/org/springframework/faces/mvc/package.html����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-faces/src/main/java/org/springframewor0000644�0000000�0000000�00000000121�11360615640�027717� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������<html> <body> <p>Support for JSF integration with Spring MVC.</p> </body> </html>�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000160�00000000000�011562� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-faces/src/main/java/org/springframework/faces/ui/�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-faces/src/main/java/org/springframewor0000755�0000000�0000000�00000000000�11360615646�027731� 5����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000212�00000000000�011560� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-faces/src/main/java/org/springframework/faces/ui/BaseComponentRenderer.java���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-faces/src/main/java/org/springframewor0000644�0000000�0000000�00000004245�11360615632�027733� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* * Copyright 2004-2008 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.springframework.faces.ui; import java.io.IOException; import java.util.HashMap; import java.util.Map; import javax.faces.component.UIComponent; import javax.faces.context.FacesContext; import javax.faces.context.ResponseWriter; import javax.faces.render.Renderer; /** * Base {@link Renderer} for typical faces components, handling the rendering for common {@link UIComponent} attributes. * * @author Jeremy Grelle * */ public abstract class BaseComponentRenderer extends BaseHtmlTagRenderer { private Map attributeCallbacks; private RenderAttributeCallback idCallback = new RenderAttributeCallback() { public void doRender(FacesContext context, ResponseWriter writer, UIComponent component, String attribute, Object attributeValue, String property) throws IOException { writer.writeAttribute(attribute, component.getClientId(context), property); } }; private RenderAttributeCallback disabledCallback = new RenderAttributeCallback() { public void doRender(FacesContext context, ResponseWriter writer, UIComponent component, String attribute, Object attributeValue, String property) throws IOException { if (Boolean.TRUE.equals(attributeValue)) { writer.writeAttribute(attribute, "disabled", property); } } }; protected Map getAttributeCallbacks(UIComponent component) { if (attributeCallbacks == null) { attributeCallbacks = new HashMap(); attributeCallbacks.put("id", idCallback); attributeCallbacks.put("name", idCallback); attributeCallbacks.put("disabled", disabledCallback); } return attributeCallbacks; } } �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000216�00000000000�011564� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-faces/src/main/java/org/springframework/faces/ui/DojoClientNumberValidator.java�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-faces/src/main/java/org/springframewor0000644�0000000�0000000�00000002166�11360615634�027735� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* * Copyright 2004-2008 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.springframework.faces.ui; /** * Component that uses the Dojo implementation of Spring JavaScript to decorate a child input component with client-side * numeric validation behavior. * * @author Jeremy Grelle * */ public class DojoClientNumberValidator extends DojoWidget { private static final String DOJO_COMPONENT_TYPE = "dijit.form.NumberTextBox"; protected String[] getDojoAttributes() { return DojoWidget.DOJO_ATTRS; } public String getWidgetType() { return DOJO_COMPONENT_TYPE; } } ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000205�00000000000�011562� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-faces/src/main/java/org/springframework/faces/ui/DynamicComponent.java��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-faces/src/main/java/org/springframewor0000644�0000000�0000000�00000002133�11360615634�027727� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* * Copyright 2004-2008 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.springframework.faces.ui; import javax.faces.component.UIComponent; import javax.faces.component.UIComponentBase; /** * A completely dynamic component that is used to back simple Facelets tags. Relies solely on the use of * {@link UIComponent#getAttributes()} instead of JavaBean style getters and setters. * * @author Jeremy Grelle * */ public class DynamicComponent extends UIComponentBase { public String getFamily() { return "spring.faces.DynamicComponent"; } } �������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000225�00000000000�011564� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-faces/src/main/java/org/springframework/faces/ui/ProgressiveCommandButtonRenderer.java����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-faces/src/main/java/org/springframewor0000644�0000000�0000000�00000012062�11360615640�027726� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* * Copyright 2004-2008 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.springframework.faces.ui; import java.io.IOException; import java.util.ArrayList; import java.util.Arrays; import java.util.HashMap; import java.util.List; import java.util.ListIterator; import java.util.Map; import javax.faces.component.UIComponent; import javax.faces.component.UIParameter; import javax.faces.context.FacesContext; import javax.faces.context.ResponseWriter; import javax.faces.event.ActionEvent; import javax.faces.render.Renderer; import org.springframework.util.Assert; import org.springframework.util.StringUtils; /** * {@link Renderer} for the {@code <sf:commandButton>} tag. * * @author Jeremy Grelle * */ public class ProgressiveCommandButtonRenderer extends BaseDojoComponentRenderer { private static String[] ATTRIBUTES_TO_RENDER; private static String INPUT_TAG_NAME = "input"; static { List tempList = new ArrayList(); tempList.addAll(Arrays.asList(HTML.STANDARD_ATTRIBUTES)); tempList.addAll(Arrays.asList(HTML.BUTTON_ATTRIBUTES)); tempList.addAll(Arrays.asList(HTML.COMMON_ELEMENT_EVENTS)); tempList.addAll(Arrays.asList(HTML.KEYBOARD_EVENTS)); tempList.addAll(Arrays.asList(HTML.MOUSE_EVENTS)); ATTRIBUTES_TO_RENDER = new String[tempList.size()]; ListIterator i = tempList.listIterator(); while (i.hasNext()) { ATTRIBUTES_TO_RENDER[i.nextIndex()] = (String) i.next(); } } private Map attributeCallbacks; private RenderAttributeCallback onclickCallback = new RenderAttributeCallback() { public void doRender(FacesContext context, ResponseWriter writer, UIComponent component, String attribute, Object attributeValue, String property) throws IOException { StringBuffer onclick = new StringBuffer(); if (attributeValue != null) { String originalOnclick = attributeValue.toString().trim(); if (!originalOnclick.endsWith(";")) { originalOnclick += ";"; } onclick.append(originalOnclick); } Boolean ajaxEnabled = (Boolean) component.getAttributes().get("ajaxEnabled"); String processIds = (String) component.getAttributes().get("processIds"); if (Boolean.TRUE.equals(ajaxEnabled)) { if (StringUtils.hasText(processIds) && processIds.indexOf(component.getClientId(context)) == -1) { processIds = component.getClientId(context) + ", " + processIds; } else if (!StringUtils.hasText(processIds)) { processIds = component.getClientId(context); } onclick.append("Spring.remoting.submitForm('" + component.getClientId(context) + "', "); onclick.append("'" + RendererUtils.getFormId(context, component) + "', "); onclick.append("{processIds: '" + processIds + "'" + encodeParamsAsObject(context, component) + "}); return false;"); } else { onclick.append(getOnClickNoAjax(context, component)); } if (onclick.length() > 0) { writer.writeAttribute(attribute, onclick.toString(), property); } } }; protected Map getAttributeCallbacks(UIComponent component) { if (attributeCallbacks == null) { attributeCallbacks = new HashMap(); attributeCallbacks.putAll(super.getAttributeCallbacks(component)); attributeCallbacks.put("onclick", onclickCallback); } return attributeCallbacks; } /** * This is a hook for subclasses to provide special onclick behavior in the non-ajax case * @return the onclick value to use when Ajax is disabled. */ protected String getOnClickNoAjax(FacesContext context, UIComponent component) { // No special behavior necessary for CommandButton return ""; } protected String[] getAttributesToRender(UIComponent component) { return ATTRIBUTES_TO_RENDER; } protected String getRenderedTagName(UIComponent component) { return INPUT_TAG_NAME; } public void decode(FacesContext context, UIComponent component) { if (context.getExternalContext().getRequestParameterMap().containsKey(component.getClientId(context))) { component.queueEvent(new ActionEvent(component)); } } public boolean getRendersChildren() { return false; } protected String encodeParamsAsObject(FacesContext context, UIComponent component) { StringBuffer paramObj = new StringBuffer(); for (int i = 0; i < component.getChildCount(); i++) { if (component.getChildren().get(i) instanceof UIParameter) { UIParameter param = (UIParameter) component.getChildren().get(i); Assert.hasText(param.getName(), "UIParameter requires a name when used as a child of a UICommand component"); paramObj.append(", " + param.getName() + " : '" + param.getValue() + "'"); } } return paramObj.toString(); } } ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000212�00000000000�011560� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-faces/src/main/java/org/springframework/faces/ui/ResourceGroupRenderer.java���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-faces/src/main/java/org/springframewor0000644�0000000�0000000�00000003072�11360615634�027732� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* * Copyright 2004-2008 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.springframework.faces.ui; import java.io.IOException; import javax.faces.component.UIComponent; import javax.faces.context.FacesContext; import javax.faces.render.Renderer; import org.springframework.faces.ui.resource.ResourceHelper; /** * {@link Renderer} for the {@code <sf:resourceGroup>} tag. * * <p> * This render outputs a specially formatted Javascript or CSS include that requests multiple resources with one HTTP * request. * </p> * * @author Jeremy Grelle * * TODO - Make this work with Javacript resources */ public class ResourceGroupRenderer extends Renderer { public void encodeBegin(FacesContext context, UIComponent component) throws IOException { if (component.getChildCount() > 0) { ResourceHelper.beginCombineStyles(context); } } public void encodeEnd(FacesContext context, UIComponent component) throws IOException { if (component.getChildCount() > 0) { ResourceHelper.endCombineStyles(context); } } } ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000201�00000000000�011556� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-faces/src/main/java/org/springframework/faces/ui/AjaxViewRoot.java������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-faces/src/main/java/org/springframewor0000644�0000000�0000000�00000021746�11360615636�027744� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* * Copyright 2004-2008 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.springframework.faces.ui; import java.io.IOException; import java.util.ArrayList; import java.util.Arrays; import java.util.Iterator; import java.util.List; import java.util.ListIterator; import javax.faces.component.ContextCallback; import javax.faces.component.UIComponent; import javax.faces.component.UIForm; import javax.faces.component.UIViewRoot; import javax.faces.context.FacesContext; import javax.faces.context.ResponseWriter; import javax.faces.el.ValueBinding; import javax.faces.event.AbortProcessingException; import javax.faces.event.FacesEvent; import javax.faces.event.PhaseId; import javax.faces.lifecycle.Lifecycle; import org.springframework.faces.ui.resource.ResourceHelper; import org.springframework.util.Assert; import org.springframework.util.StringUtils; import org.springframework.webflow.execution.View; /** * Customizes the behavior of an existing UIViewRoot with Ajax-aware processing. * * <p> * This component is the key to rendering partial subtrees of the JSF component tree. It makes use of JSF 1.2's * {@link UIComponent#invokeOnComponent(FacesContext, String, ContextCallback)} method to execute the various phases of * the {@link Lifecycle} on each subtree. * </p> * * @author Jeremy Grelle * @author Nazaret Kazarian */ public class AjaxViewRoot extends DelegatingViewRoot { public static final String AJAX_SOURCE_PARAM = "ajaxSource"; public static final String PROCESS_IDS_PARAM = "processIds"; protected static final String FORM_RENDERED = "formRendered"; protected static final String PROCESS_ALL = "*"; private List events = new ArrayList(); private String[] processIds; private String[] renderIds; private static final String RENDER_IDS_EXPRESSION = "#{" + View.RENDER_FRAGMENTS_ATTRIBUTE + "}"; private final ValueBinding renderIdsExpr; public AjaxViewRoot(UIViewRoot original) { super(original); renderIdsExpr = FacesContext.getCurrentInstance().getApplication().createValueBinding(RENDER_IDS_EXPRESSION); if (!StringUtils.hasText(original.getId())) { original.setId(createUniqueId()); } swapChildren(original, this); } // implementing view root public String getId() { return getOriginalViewRoot().getId() + "_ajax"; } public void queueEvent(FacesEvent event) { Assert.notNull(event, "Cannot queue a null event."); events.add(event); } public void encodeAll(FacesContext context) throws IOException { for (int i = 0; i < getRenderIds().length; i++) { String renderId = getRenderIds()[i]; ContextCallback callback = new ContextCallback() { public void invokeContextCallback(FacesContext context, UIComponent target) { try { target.encodeAll(context); if (target instanceof UIForm) { context.getViewRoot().getAttributes().put(FORM_RENDERED, FORM_RENDERED); } } catch (IOException e) { e.printStackTrace(); } } }; invokeOnComponent(context, renderId, callback); } swapChildren(this, getOriginalViewRoot()); context.setViewRoot(getOriginalViewRoot()); if (!getAttributes().containsKey(FORM_RENDERED)) { context.getApplication().getViewHandler().writeState(context); updateFormAction(context); } broadCastEvents(context, PhaseId.APPLY_REQUEST_VALUES); } public void processDecodes(FacesContext context) { for (int i = 0; i < getProcessIds().length; i++) { String processId = getProcessIds()[i]; ContextCallback callback = new ContextCallback() { public void invokeContextCallback(FacesContext context, UIComponent target) { target.processDecodes(context); } }; invokeOnComponent(context, processId, callback); } broadCastEvents(context, PhaseId.APPLY_REQUEST_VALUES); } public void processUpdates(FacesContext context) { for (int i = 0; i < getProcessIds().length; i++) { String processId = getProcessIds()[i]; ContextCallback callback = new ContextCallback() { public void invokeContextCallback(FacesContext context, UIComponent target) { target.processUpdates(context); } }; invokeOnComponent(context, processId, callback); } broadCastEvents(context, PhaseId.UPDATE_MODEL_VALUES); } public void processValidators(FacesContext context) { for (int i = 0; i < getProcessIds().length; i++) { String processId = getProcessIds()[i]; ContextCallback callback = new ContextCallback() { public void invokeContextCallback(FacesContext context, UIComponent target) { target.processValidators(context); } }; invokeOnComponent(context, processId, callback); } broadCastEvents(context, PhaseId.PROCESS_VALIDATIONS); } public void processApplication(FacesContext context) { broadCastEvents(context, PhaseId.INVOKE_APPLICATION); } // subclassing hooks protected String[] getProcessIds() { if (processIds == null) { FacesContext context = FacesContext.getCurrentInstance(); String processIdsParam = (String) context.getExternalContext().getRequestParameterMap().get( PROCESS_IDS_PARAM); if (StringUtils.hasText(processIdsParam) && processIdsParam.indexOf(PROCESS_ALL) != -1) { processIds = new String[] { getOriginalViewRoot().getClientId(context) }; } else { processIds = StringUtils.delimitedListToStringArray(processIdsParam, ",", " "); processIds = removeNestedChildren(context, processIds); } } return processIds; } protected String[] getRenderIds() { if (renderIds == null) { FacesContext context = FacesContext.getCurrentInstance(); renderIds = (String[]) renderIdsExpr.getValue(context); if (renderIds == null || renderIds.length == 0) { renderIds = getProcessIds(); } else { renderIds = removeNestedChildren(context, renderIds); } } return renderIds; } // internal helpers private void swapChildren(UIViewRoot source, UIViewRoot target) { target.getChildren().addAll(source.getChildren()); Iterator i = target.getChildren().iterator(); while (i.hasNext()) { UIComponent child = (UIComponent) i.next(); child.setParent(target); } } private void updateFormAction(FacesContext context) { ResponseWriter writer = context.getResponseWriter(); try { String formId = findContainingFormId(context); if (StringUtils.hasLength(formId)) { String script = "dojo.byId('" + formId + "').action = '" + context.getApplication().getViewHandler().getActionURL(context, getViewId()) + "'"; ResourceHelper.beginScriptBlock(context); writer.writeText(script, null); ResourceHelper.endScriptBlock(context); } } catch (IOException e) { e.printStackTrace(); } } private String findContainingFormId(FacesContext context) { for (int i = 0; i < getRenderIds().length; i++) { UIComponent component = context.getViewRoot().findComponent(getRenderIds()[i]); Assert.notNull(component, "Component to be rendered with id '" + getRenderIds()[i] + "' could not be found."); while (!(component instanceof UIViewRoot)) { component = component.getParent(); if (component instanceof UIForm) { return component.getClientId(context); } } } return null; } private String[] removeNestedChildren(FacesContext context, String[] ids) { List idList = Arrays.asList(ids); final List trimmedIds = new ArrayList(idList); for (final ListIterator i = trimmedIds.listIterator(); i.hasNext();) { String id = (String) i.next(); invokeOnComponent(context, id, new ContextCallback() { public void invokeContextCallback(FacesContext context, UIComponent component) { while (!(component.getParent() instanceof UIViewRoot)) { component = component.getParent(); if (trimmedIds.contains(component.getClientId(context))) { i.remove(); } } } }); } return (String[]) trimmedIds.toArray(new String[trimmedIds.size()]); } private void broadCastEvents(FacesContext context, PhaseId phaseId) { List processedEvents = new ArrayList(); if (events.size() == 0) return; boolean abort = false; int phaseIdOrdinal = phaseId.getOrdinal(); Iterator i = events.iterator(); while (i.hasNext()) { FacesEvent event = (FacesEvent) i.next(); int ordinal = event.getPhaseId().getOrdinal(); if (ordinal == PhaseId.ANY_PHASE.getOrdinal() || ordinal == phaseIdOrdinal) { UIComponent source = event.getComponent(); try { processedEvents.add(event); source.broadcast(event); } catch (AbortProcessingException e) { abort = true; break; } } } if (abort) { events.clear(); } else { events.removeAll(processedEvents); } } } ��������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000214�00000000000�011562� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-faces/src/main/java/org/springframework/faces/ui/DojoClientDateValidator.java�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-faces/src/main/java/org/springframewor0000644�0000000�0000000�00000005044�11360615644�027734� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* * Copyright 2004-2008 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.springframework.faces.ui; import javax.faces.component.ValueHolder; import javax.faces.context.FacesContext; import javax.faces.convert.DateTimeConverter; import org.springframework.util.Assert; /** * Component that uses the Dojo implementation of Spring JavaScript to decorate a child input component with client-side * date validation behavior. * * @author Jeremy Grelle * */ public class DojoClientDateValidator extends DojoWidget { private static final String DOJO_COMPONENT_TYPE = "dijit.form.DateTextBox"; private static final String[] DOJO_ATTRS_INTERNAL = new String[] { "datePattern" }; private static final String[] DOJO_ATTRS; private String datePattern = null; static { DOJO_ATTRS = new String[DojoWidget.DOJO_ATTRS.length + DOJO_ATTRS_INTERNAL.length]; System.arraycopy(DojoWidget.DOJO_ATTRS, 0, DOJO_ATTRS, 0, DojoWidget.DOJO_ATTRS.length); System.arraycopy(DOJO_ATTRS_INTERNAL, 0, DOJO_ATTRS, DojoWidget.DOJO_ATTRS.length, DOJO_ATTRS_INTERNAL.length); } public String getDatePattern() { Assert.isTrue(getChildren().get(0) instanceof ValueHolder, "Date validation can only be applied to an ValueHolder"); ValueHolder child = (ValueHolder) getChildren().get(0); if (child.getConverter() instanceof DateTimeConverter) { return ((DateTimeConverter) child.getConverter()).getPattern(); } return datePattern; } public void setDatePattern(String datePattern) { this.datePattern = datePattern; } protected String[] getDojoAttributes() { return DOJO_ATTRS; } public String getWidgetType() { return DOJO_COMPONENT_TYPE; } public Object saveState(FacesContext context) { Object[] values = new Object[2]; values[0] = super.saveState(context); values[1] = this.datePattern; return values; } public void restoreState(FacesContext context, Object state) { Object values[] = (Object[]) state; super.restoreState(context, values[0]); this.datePattern = (String) values[1]; } } ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000171�00000000000�011564� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-faces/src/main/java/org/springframework/faces/ui/HTML.java��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-faces/src/main/java/org/springframewor0000644�0000000�0000000�00000004357�11360615634�027741� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* * Copyright 2004-2008 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.springframework.faces.ui; import java.util.HashMap; import java.util.Map; /** * Helper class that provides common attributes for standard HTML elements. * * @author Jeremy Grelle */ final class HTML { /** * Standard HTML attributes */ public static final String[] STANDARD_ATTRIBUTES = new String[] { "id", "class", "style", "title", "dir", "lang", "accesskey", "tabindex" }; public static final Map STANDARD_ATTRIBUTE_ALIASES = new HashMap(); /** * Standard window events - only valid in body and frameset elements */ public static final String[] WINDOW_EVENTS = new String[] { "onload", "onunload" }; /** * Standard form events */ public static final String[] FORM_EVENTS = new String[] { "onsubmit", "onreset" }; /** * Standard form element events */ public static final String[] COMMON_ELEMENT_EVENTS = new String[] { "onchange", "onselect", "onblur", "onfocus" }; /** * Standard keyboard events */ public static final String[] KEYBOARD_EVENTS = new String[] { "onkeydown", "onkeypress", "onkeyup" }; /** * Standard mouse events */ public static final String[] MOUSE_EVENTS = new String[] { "onclick", "ondblclick", "onmousedown", "onmousemove", "onmouseout", "onmouseover", "onmouseup" }; /** * Button attributes */ public static final String[] BUTTON_ATTRIBUTES = new String[] { "disabled", "name", "type", "value" }; /** * Anchor attributes */ public static final Object[] ANCHOR_ATTRIBUTES = new String[] { "charset", "coords", "href", "hreflang", "name", "rel", "rev", "shape", "target", "type" }; static { STANDARD_ATTRIBUTE_ALIASES.put("class", "styleClass"); } } ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000207�00000000000�011564� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-faces/src/main/java/org/springframework/faces/ui/DojoWidgetRenderer.java������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-faces/src/main/java/org/springframewor0000644�0000000�0000000�00000001474�11360615642�027735� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������package org.springframework.faces.ui; import javax.faces.component.UIComponent; import javax.faces.context.FacesContext; public class DojoWidgetRenderer extends DojoElementDecorationRenderer { protected String getDojoAttributesAsString(FacesContext context, UIComponent component) { DojoWidget advisor = (DojoWidget) component; StringBuffer attrs = new StringBuffer(); for (int i = 0; i < advisor.getDojoAttributes().length; i++) { String key = advisor.getDojoAttributes()[i]; Object value = advisor.getAttributes().get(key); if (value != null) { if (attrs.length() > 0) attrs.append(", "); attrs.append(key + " : "); if (value instanceof String) { attrs.append("'" + value + "'"); } else { attrs.append(value.toString()); } } } return attrs.toString(); } } ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000216�00000000000�011564� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-faces/src/main/java/org/springframework/faces/ui/BaseDojoComponentRenderer.java�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-faces/src/main/java/org/springframewor0000644�0000000�0000000�00000003576�11360615632�027741� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* * Copyright 2004-2008 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.springframework.faces.ui; import java.io.IOException; import javax.faces.component.UIComponent; import javax.faces.context.FacesContext; import javax.faces.render.Renderer; import org.springframework.faces.ui.resource.ResourceHelper; import org.springframework.faces.webflow.JsfUtils; /** * Base {@link Renderer} for components that require the Dojo implementation of Spring JavaScript to be available on the * client. * * @author Jeremy Grelle * */ public abstract class BaseDojoComponentRenderer extends BaseSpringJavascriptComponentRenderer { public void encodeBegin(FacesContext context, UIComponent component) throws IOException { super.encodeBegin(context, component); if (!JsfUtils.isAsynchronousFlowRequest()) { if (!context.getViewRoot().getAttributes().containsKey(DojoConstants.CUSTOM_THEME_PATH_SET) && !context.getViewRoot().getAttributes().containsKey(DojoConstants.CUSTOM_THEME_SET)) { ResourceHelper.renderStyleLink(context, DojoConstants.DIJIT_THEME_PATH + DojoConstants.DEFAULT_DIJIT_THEME + "/" + DojoConstants.DEFAULT_DIJIT_THEME + ".css"); } ResourceHelper.renderScriptLink(context, DojoConstants.DOJO_JS_RESOURCE_URI); ResourceHelper.renderScriptLink(context, DojoConstants.SPRING_DOJO_JS_RESOURCE_URI); } } } ����������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000171�00000000000�011564� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-faces/src/main/java/org/springframework/faces/ui/resource/��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-faces/src/main/java/org/springframewor0000755�0000000�0000000�00000000000�11360615644�027727� 5����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000214�00000000000�011562� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-faces/src/main/java/org/springframework/faces/ui/resource/ResourceHelper.java�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-faces/src/main/java/org/springframewor0000644�0000000�0000000�00000016524�11360615642�027737� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* * Copyright 2004-2008 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.springframework.faces.ui.resource; import java.io.IOException; import java.util.ArrayList; import java.util.Collections; import java.util.HashSet; import java.util.Iterator; import java.util.List; import java.util.Map; import java.util.Set; import javax.faces.context.FacesContext; import javax.faces.context.ResponseWriter; import org.springframework.js.resource.ResourceServlet; /** * Helper used by Spring Faces component renderers to add links to javascript and css resources. The resource links will * be rendered in the correct format for the requests to be handled by the Spring JavaScript {@link ResourceServlet}. * The resource paths are cached so that a particular resource link is only rendered once per request. * * @author Jeremy Grelle * */ public class ResourceHelper { private static final String RENDERED_RESOURCES_KEY = "org.springframework.faces.RenderedResources"; private static final String COMBINED_RESOURCES_KEY = "org.springframework.faces.CombinedResources"; private static final String SCRIPT_BLOCK_ESCAPE_BEGIN = "<!--//--><![CDATA[//><!--\n"; private static final String SCRIPT_BLOCK_ESCAPE_END = "\n//--><!]]>"; private static final String SCRIPT_ELEMENT = "script"; private ResourceHelper() { } /** * Renders either a script or style resource depending on the resourcePath * @param facesContext * @param resourcePath * @throws IOException */ public static void renderResource(FacesContext facesContext, String resourcePath) throws IOException { if (resourcePath.endsWith(".js")) { renderScriptLink(facesContext, resourcePath); } else if (resourcePath.endsWith(".css")) { renderStyleLink(facesContext, resourcePath); } } /** * Render a <code><script/></code> tag for a given script resource. * @param facesContext * @param scriptPath * @throws IOException */ public static void renderScriptLink(FacesContext facesContext, String scriptPath) throws IOException { renderScriptLink(facesContext, scriptPath, Collections.EMPTY_MAP); } /** * Render a <code><script/></code> tag for a given script resource. * @param facesContext * @param scriptPath * @param attributes - a map of additional attributes to render on the script tag * @throws IOException */ public static void renderScriptLink(FacesContext facesContext, String scriptPath, Map attributes) throws IOException { if (alreadyRendered(facesContext, scriptPath)) { return; } ResponseWriter writer = facesContext.getResponseWriter(); writer.startElement(SCRIPT_ELEMENT, null); writer.writeAttribute("type", "text/javascript", null); Iterator i = attributes.keySet().iterator(); while (i.hasNext()) { String key = (String) i.next(); writer.writeAttribute(key, attributes.get(key), null); } String src = facesContext.getExternalContext().getRequestContextPath() + "/resources" + scriptPath; writer.writeAttribute("src", src, null); writer.endElement(SCRIPT_ELEMENT); markRendered(facesContext, scriptPath); } /** * Render a <code><link/></code> tag for a given stylesheet resource. * @param facesContext * @param cssPath * @throws IOException */ public static void renderStyleLink(FacesContext facesContext, String cssPath) throws IOException { if (alreadyRendered(facesContext, cssPath)) { return; } else if (isCombineStyles(facesContext)) { addStyle(facesContext, cssPath); return; } ResponseWriter writer = facesContext.getResponseWriter(); writer.startElement("link", null); writer.writeAttribute("type", "text/css", null); writer.writeAttribute("rel", "stylesheet", null); String src = facesContext.getExternalContext().getRequestContextPath() + "/resources" + cssPath; writer.writeAttribute("href", src, null); writer.endElement("link"); markRendered(facesContext, cssPath); } /** * Render a <code><script/></code> tag for a given dojo include. * @param facesContext * @param module * @throws IOException */ public static void renderDojoInclude(FacesContext facesContext, String module) throws IOException { if (alreadyRendered(facesContext, module)) { return; } ResponseWriter writer = facesContext.getResponseWriter(); writer.startElement(SCRIPT_ELEMENT, null); writer.writeAttribute("type", "text/javascript", null); writer.writeText("dojo.require('" + module + "');", null); writer.endElement(SCRIPT_ELEMENT); markRendered(facesContext, module); } public static void beginCombineStyles(FacesContext facesContext) { List combinedResources = new ArrayList(); facesContext.getExternalContext().getRequestMap().put(COMBINED_RESOURCES_KEY, combinedResources); } private static boolean isCombineStyles(FacesContext facesContext) { return facesContext.getExternalContext().getRequestMap().containsKey(COMBINED_RESOURCES_KEY); } private static void addStyle(FacesContext facesContext, String stylePath) { List combinedResources = (List) facesContext.getExternalContext().getRequestMap().get(COMBINED_RESOURCES_KEY); combinedResources.add(stylePath); } public static void endCombineStyles(FacesContext facesContext) throws IOException { List combinedResources = (List) facesContext.getExternalContext().getRequestMap() .remove(COMBINED_RESOURCES_KEY); StringBuffer combinedPath = new StringBuffer(); for (int i = 0; i < combinedResources.size(); i++) { String resourcePath = (String) combinedResources.get(i); if (i == 1) { combinedPath.append("?appended="); } if (i > 1) { combinedPath.append(","); } combinedPath.append(resourcePath); } renderStyleLink(facesContext, combinedPath.toString()); } public static void beginScriptBlock(FacesContext facesContext) throws IOException { ResponseWriter writer = facesContext.getResponseWriter(); writer.startElement(SCRIPT_ELEMENT, null); writer.writeAttribute("type", "text/javascript", null); writer.writeText(SCRIPT_BLOCK_ESCAPE_BEGIN, null); } public static void endScriptBlock(FacesContext facesContext) throws IOException { ResponseWriter writer = facesContext.getResponseWriter(); writer.writeText(SCRIPT_BLOCK_ESCAPE_END, null); writer.endElement(SCRIPT_ELEMENT); } private static void markRendered(FacesContext facesContext, String scriptPath) { Set renderedResources = (Set) facesContext.getExternalContext().getRequestMap().get(RENDERED_RESOURCES_KEY); if (renderedResources == null) { renderedResources = new HashSet(); facesContext.getExternalContext().getRequestMap().put(RENDERED_RESOURCES_KEY, renderedResources); } renderedResources.add(scriptPath); } private static boolean alreadyRendered(FacesContext facesContext, String scriptPath) { Set renderedResources = (Set) facesContext.getExternalContext().getRequestMap().get(RENDERED_RESOURCES_KEY); return renderedResources != null && renderedResources.contains(scriptPath); } } ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000205�00000000000�011562� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-faces/src/main/java/org/springframework/faces/ui/resource/package.html��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-faces/src/main/java/org/springframewor0000644�0000000�0000000�00000000202�11360615644�027723� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������<html> <body> <p>Support for providing JavaScript, CSS, and image resources needed by Spring Faces components.</p> </body> </html>����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000202�00000000000�011557� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-faces/src/main/java/org/springframework/faces/ui/RendererUtils.java�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-faces/src/main/java/org/springframewor0000644�0000000�0000000�00000002661�11360615636�027737� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* * Copyright 2004-2008 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.springframework.faces.ui; import javax.faces.FacesException; import javax.faces.component.UIComponent; import javax.faces.component.UIForm; import javax.faces.component.UIViewRoot; import javax.faces.context.FacesContext; /** * Helper class for common renderer functionality. * * @author Jeremy Grelle * */ class RendererUtils { public static String getFormId(FacesContext context, UIComponent component) { if (component.getParent() instanceof UIForm) { return component.getParent().getClientId(context); } else if (component.getParent() instanceof UIViewRoot) { throw new FacesException("Could not render " + component.getClass().getName() + " component with id " + component.getId() + " - no enclosing UIForm was found."); } else { return getFormId(context, component.getParent()); } } } �������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000202�00000000000�011557� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-faces/src/main/java/org/springframework/faces/ui/DojoConstants.java�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-faces/src/main/java/org/springframewor0000644�0000000�0000000�00000000677�11360615642�027741� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������package org.springframework.faces.ui; class DojoConstants { static final String DIJIT_THEME_PATH = "/dijit/themes/"; static final String DEFAULT_DIJIT_THEME = "tundra"; static final String DOJO_JS_RESOURCE_URI = "/dojo/dojo.js"; static final String SPRING_DOJO_JS_RESOURCE_URI = "/spring/Spring-Dojo.js"; static final String CUSTOM_THEME_PATH_SET = "dojoCustomThemePathSet"; static final String CUSTOM_THEME_SET = "dojoCustomThemeSet"; } �����������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000205�00000000000�011562� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-faces/src/main/java/org/springframework/faces/ui/ResourceRenderer.java��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-faces/src/main/java/org/springframewor0000644�0000000�0000000�00000003260�11360615632�027727� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* * Copyright 2004-2008 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.springframework.faces.ui; import java.io.IOException; import javax.faces.component.UIComponent; import javax.faces.context.FacesContext; import javax.faces.render.Renderer; import org.springframework.faces.ui.resource.ResourceHelper; import org.springframework.js.resource.ResourceServlet; import org.springframework.util.Assert; /** * {@link Renderer} for the {@code <sf:resource>} tag. * * <p> * Renders a Javascript or CSS include with a URL properly formatted to map to the {@link ResourceServlet}. * </p> * * @author Jeremy Grelle * */ public class ResourceRenderer extends Renderer { public void encodeEnd(FacesContext context, UIComponent component) throws IOException { String resourcePath = (String) component.getAttributes().get("path"); Assert.hasText(resourcePath, "Resource component " + component.getClientId(context) + " is missing a path."); if (!resourcePath.startsWith("/")) { resourcePath = "/" + resourcePath; component.getAttributes().put("path", resourcePath); } ResourceHelper.renderResource(context, resourcePath); } } ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000210�00000000000�011556� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-faces/src/main/java/org/springframework/faces/ui/BaseHtmlTagRenderer.java�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-faces/src/main/java/org/springframewor0000644�0000000�0000000�00000010633�11360615646�027736� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* * Copyright 2004-2008 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.springframework.faces.ui; import java.io.IOException; import java.util.Collections; import java.util.Map; import javax.faces.component.UIComponent; import javax.faces.context.FacesContext; import javax.faces.context.ResponseWriter; import javax.faces.render.Renderer; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; /** * Abstract base {@link Renderer} for a component that renders a standard HTML element. * * <p> * Uses a callback mechanism for customizing the rendering of tag attributes when logic is required beyond a simple * pass-through of the component attribute to the HTML attribute of the rendered element. * </p> * * @author Jeremy Grelle */ abstract class BaseHtmlTagRenderer extends Renderer { protected Log log = LogFactory.getLog(BaseHtmlTagRenderer.class); /** * Default {@link RenderAttributeCallback} that just renders the tag attribute as a pass-through value if the value * is not null. */ private RenderAttributeCallback defaultRenderAttributeCallback = new RenderAttributeCallback() { public void doRender(FacesContext context, ResponseWriter writer, UIComponent component, String attribute, Object attributeValue, String property) throws IOException { if (attributeValue != null) { writer.writeAttribute(attribute, attributeValue, property); } } }; /** * Renders the opening portion of the tag, prior to any children. */ public void encodeBegin(FacesContext context, UIComponent component) throws IOException { ResponseWriter writer = context.getResponseWriter(); writer.startElement(getRenderedTagName(null), component); writeAttributes(context, component); } /** * Writes the attributes for this tag. * @param context the current {@link FacesContext} * @param component the {@link UIComponent} being rendered * @throws IOException */ protected void writeAttributes(FacesContext context, UIComponent component) throws IOException { for (int i = 0; i < getAttributesToRender(component).length; i++) { try { String attribute = getAttributesToRender(component)[i]; String property = attribute; if (getAttributeAliases(component).containsKey(attribute)) { property = (String) getAttributeAliases(component).get(attribute); } Object attributeValue = component.getAttributes().get(property); RenderAttributeCallback callback = defaultRenderAttributeCallback; if (getAttributeCallbacks(null).containsKey(attribute)) { callback = (RenderAttributeCallback) getAttributeCallbacks(component).get(attribute); } callback.doRender(context, context.getResponseWriter(), component, attribute, attributeValue, property); } catch (IllegalArgumentException ex) { // Attribute not found - Skip this attribute and continue } } } /** * Closes the tag after children have been rendered. */ public void encodeEnd(FacesContext context, UIComponent component) throws IOException { ResponseWriter writer = context.getResponseWriter(); writer.endElement(getRenderedTagName(null)); } /** * @param component TODO * @return the name of the tag to be rendered. */ protected abstract String getRenderedTagName(UIComponent component); /** * @return an array of the tag attributes to be rendered */ protected abstract String[] getAttributesToRender(UIComponent component); /** * @return a map that returns the bean property name for any attribute that doesn't map directly (i.e., the 'class' * attribute maps to the 'styleClass' bean property) */ protected Map getAttributeAliases(UIComponent component) { return HTML.STANDARD_ATTRIBUTE_ALIASES; }; /** * @return a map of registered RenderAttributeCallbacks for attributes that require special rendering logic */ protected Map getAttributeCallbacks(UIComponent component) { return Collections.EMPTY_MAP; } } �����������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000214�00000000000�011562� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-faces/src/main/java/org/springframework/faces/ui/DojoClientTextValidator.java�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-faces/src/main/java/org/springframewor0000644�0000000�0000000�00000002165�11360615632�027732� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* * Copyright 2004-2008 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.springframework.faces.ui; /** * Component that uses the Dojo implementation of Spring JavaScript to decorate a child input component with client-side * text validation behavior. * * @author Jeremy Grelle * */ public class DojoClientTextValidator extends DojoWidget { private static final String DOJO_COMPONENT_TYPE = "dijit.form.ValidationTextBox"; protected String[] getDojoAttributes() { return DojoWidget.DOJO_ATTRS; } public String getWidgetType() { return DOJO_COMPONENT_TYPE; } } �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000177�00000000000�011572� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-faces/src/main/java/org/springframework/faces/ui/DojoWidget.java��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-faces/src/main/java/org/springframewor0000644�0000000�0000000�00000011622�11360615636�027734� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* * Copyright 2004-2008 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.springframework.faces.ui; import javax.faces.component.UIComponent; import javax.faces.context.FacesContext; import javax.faces.el.ValueBinding; /** * Base {@link UIComponent} for a component that uses the Dojo implementation of Spring JavaScript to decorate a child * component with enhanced client-side behavior. * * @author Jeremy Grelle * */ public abstract class DojoWidget extends SpringJavascriptElementDecoration { protected static final String[] DOJO_ATTRS = new String[] { "disabled", "intermediateChanges", "tabIndex", "required", "promptMessage", "invalidMessage", "constraints", "regExp", "regExpGen", "propercase", "lowercase", "uppercase" }; private Boolean disabled; private Boolean intermediateChanges; private Integer tabIndex; private Boolean required; private String promptMessage; private String invalidMessage; private String constraints; private String regExp; private String regExpGen; private Boolean lowercase; private Boolean propercase; private Boolean uppercase; public Boolean getDisabled() { if (disabled != null) { return disabled; } ValueBinding exp = getValueBinding("disabled"); return exp != null ? (Boolean) exp.getValue(getFacesContext()) : null; } public void setDisabled(Boolean disabled) { this.disabled = disabled; } public Boolean getIntermediateChanges() { return intermediateChanges; } public void setIntermediateChanges(Boolean intermediateChanges) { this.intermediateChanges = intermediateChanges; } public Integer getTabIndex() { return tabIndex; } public void setTabIndex(Integer tabIndex) { this.tabIndex = tabIndex; } public Boolean getRequired() { return required; } public void setRequired(Boolean required) { this.required = required; } public String getPromptMessage() { if (promptMessage != null) { return promptMessage; } ValueBinding exp = getValueBinding("promptMessage"); return exp != null ? (String) exp.getValue(getFacesContext()) : null; } public void setPromptMessage(String promptMessage) { this.promptMessage = promptMessage; } public String getInvalidMessage() { if (invalidMessage != null) { return invalidMessage; } ValueBinding exp = getValueBinding("invalidMessage"); return exp != null ? (String) exp.getValue(getFacesContext()) : null; } public void setInvalidMessage(String invalidMessage) { this.invalidMessage = invalidMessage; } public String getConstraints() { return constraints; } public void setConstraints(String constraints) { this.constraints = constraints; } public String getRegExp() { return regExp; } public void setRegExp(String regExp) { this.regExp = regExp; } public String getRegExpGen() { return regExpGen; } public void setRegExpGen(String regExpGen) { this.regExpGen = regExpGen; } public Boolean getLowercase() { return lowercase; } public void setLowercase(Boolean lowercase) { this.lowercase = lowercase; } public Boolean getUppercase() { return uppercase; } public void setUppercase(Boolean uppercase) { this.uppercase = uppercase; } public Boolean getPropercase() { return propercase; } public void setPropercase(Boolean propercase) { this.propercase = propercase; } protected abstract String[] getDojoAttributes(); public abstract String getWidgetType(); public Object saveState(FacesContext context) { Object[] values = new Object[11]; values[0] = super.saveState(context); values[1] = this.constraints; values[2] = this.disabled; values[3] = this.intermediateChanges; values[4] = this.invalidMessage; values[5] = this.promptMessage; values[6] = this.regExp; values[7] = this.regExpGen; values[8] = this.required; values[9] = this.tabIndex; values[10] = this.propercase; return values; } public void restoreState(FacesContext context, Object state) { Object values[] = (Object[]) state; super.restoreState(context, values[0]); this.constraints = (String) values[1]; this.disabled = (Boolean) values[2]; this.intermediateChanges = (Boolean) values[3]; this.invalidMessage = (String) values[4]; this.promptMessage = (String) values[5]; this.regExp = (String) values[6]; this.regExpGen = (String) values[7]; this.required = (Boolean) values[8]; this.tabIndex = (Integer) values[9]; this.propercase = (Boolean) values[10]; } } ��������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000233�00000000000�011563� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-faces/src/main/java/org/springframework/faces/ui/BaseSpringJavascriptDecorationRenderer.java����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-faces/src/main/java/org/springframewor0000644�0000000�0000000�00000002376�11360615632�027736� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* * Copyright 2004-2008 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.springframework.faces.ui; import java.io.IOException; import javax.faces.component.UIComponent; import javax.faces.context.FacesContext; import javax.faces.render.Renderer; import org.springframework.faces.ui.resource.ResourceHelper; import org.springframework.faces.webflow.JsfUtils; public abstract class BaseSpringJavascriptDecorationRenderer extends Renderer { private String springJsResourceUri = "/spring/Spring.js"; public void encodeBegin(FacesContext context, UIComponent component) throws IOException { if (!JsfUtils.isAsynchronousFlowRequest()) { ResourceHelper.renderScriptLink(context, springJsResourceUri); } } } ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000226�00000000000�011565� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-faces/src/main/java/org/springframework/faces/ui/SpringJavascriptElementDecoration.java���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-faces/src/main/java/org/springframewor0000644�0000000�0000000�00000000350�11360615636�027730� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������package org.springframework.faces.ui; import javax.faces.component.UIComponentBase; public class SpringJavascriptElementDecoration extends UIComponentBase { public String getFamily() { return "spring.faces.Decoration"; } } ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000232�00000000000�011562� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-faces/src/main/java/org/springframework/faces/ui/BaseSpringJavascriptComponentRenderer.java�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-faces/src/main/java/org/springframewor0000644�0000000�0000000�00000002676�11360615640�027740� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* * Copyright 2004-2008 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.springframework.faces.ui; import java.io.IOException; import javax.faces.component.UIComponent; import javax.faces.context.FacesContext; import javax.faces.render.Renderer; import org.springframework.faces.ui.resource.ResourceHelper; import org.springframework.faces.webflow.JsfUtils; /** * Base {@link Renderer} for components that require the Spring JavaScript library on the client. * * @author Jeremy Grelle * */ public abstract class BaseSpringJavascriptComponentRenderer extends BaseComponentRenderer { private String springJsResourceUri = "/spring/Spring.js"; public void encodeBegin(FacesContext context, UIComponent component) throws IOException { super.encodeBegin(context, component); if (!JsfUtils.isAsynchronousFlowRequest()) { ResourceHelper.renderScriptLink(context, springJsResourceUri); } } } ������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000174�00000000000�011567� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-faces/src/main/java/org/springframework/faces/ui/package.html�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-faces/src/main/java/org/springframewor0000644�0000000�0000000�00000000104�11360615634�027723� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������<html> <body> <p>Spring Faces component library.</p> </body> </html>������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000207�00000000000�011564� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-faces/src/main/java/org/springframework/faces/ui/DelegatingViewRoot.java������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-faces/src/main/java/org/springframewor0000644�0000000�0000000�00000030513�11360615632�027730� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* * Copyright 2004-2008 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.springframework.faces.ui; import java.io.IOException; import java.util.Iterator; import java.util.List; import java.util.Locale; import java.util.Map; import javax.el.MethodExpression; import javax.el.ValueExpression; import javax.faces.FacesException; import javax.faces.component.ContextCallback; import javax.faces.component.UIComponent; import javax.faces.component.UIViewRoot; import javax.faces.context.FacesContext; import javax.faces.el.ValueBinding; import javax.faces.event.AbortProcessingException; import javax.faces.event.FacesEvent; import javax.faces.event.PhaseListener; /** * Base class for wrapping an existing UIViewRoot to customize its behavior. * * @author Jeremy Grelle */ public abstract class DelegatingViewRoot extends UIViewRoot { private UIViewRoot original; public DelegatingViewRoot(UIViewRoot original) { this.original = original; } public UIViewRoot getOriginalViewRoot() { return original; } /** * @param phaseListener * @see javax.faces.component.UIViewRoot#addPhaseListener(javax.faces.event.PhaseListener) */ public void addPhaseListener(PhaseListener phaseListener) { original.addPhaseListener(phaseListener); } /** * @param event * @throws AbortProcessingException * @see javax.faces.component.UIComponentBase#broadcast(javax.faces.event.FacesEvent) */ public void broadcast(FacesEvent event) throws AbortProcessingException { original.broadcast(event); } /** * @see javax.faces.component.UIViewRoot#createUniqueId() */ public String createUniqueId() { return original.createUniqueId(); } /** * @param context * @see javax.faces.component.UIComponentBase#decode(javax.faces.context.FacesContext) */ public void decode(FacesContext context) { original.decode(context); } /** * @param context * @throws IOException * @see javax.faces.component.UIComponent#encodeAll(javax.faces.context.FacesContext) */ public void encodeAll(FacesContext context) throws IOException { original.encodeAll(context); } /** * @param context * @throws IOException * @see javax.faces.component.UIViewRoot#encodeBegin(javax.faces.context.FacesContext) */ public void encodeBegin(FacesContext context) throws IOException { original.encodeBegin(context); } /** * @param context * @throws IOException * @see javax.faces.component.UIComponentBase#encodeChildren(javax.faces.context.FacesContext) */ public void encodeChildren(FacesContext context) throws IOException { original.encodeChildren(context); } /** * @param context * @throws IOException * @see javax.faces.component.UIViewRoot#encodeEnd(javax.faces.context.FacesContext) */ public void encodeEnd(FacesContext context) throws IOException { original.encodeEnd(context); } /** * @param expr * @see javax.faces.component.UIComponentBase#findComponent(java.lang.String) */ public UIComponent findComponent(String expr) { return original.findComponent(expr); } /** * @see javax.faces.component.UIViewRoot#getAfterPhaseListener() */ public MethodExpression getAfterPhaseListener() { return original.getAfterPhaseListener(); } /** * @see javax.faces.component.UIComponentBase#getAttributes() */ public Map getAttributes() { return original.getAttributes(); } /** * @see javax.faces.component.UIViewRoot#getBeforePhaseListener() */ public MethodExpression getBeforePhaseListener() { return original.getBeforePhaseListener(); } /** * @see javax.faces.component.UIComponentBase#getChildCount() */ public int getChildCount() { return original.getChildCount(); } /** * @see javax.faces.component.UIComponentBase#getChildren() */ public List getChildren() { return original.getChildren(); } /** * @param context * @see javax.faces.component.UIComponentBase#getClientId(javax.faces.context.FacesContext) */ public String getClientId(FacesContext context) { return original.getClientId(context); } /** * @param ctx * @see javax.faces.component.UIComponent#getContainerClientId(javax.faces.context.FacesContext) */ public String getContainerClientId(FacesContext ctx) { return original.getContainerClientId(ctx); } /** * @param name * @see javax.faces.component.UIComponentBase#getFacet(java.lang.String) */ public UIComponent getFacet(String name) { return original.getFacet(name); } /** * @see javax.faces.component.UIComponentBase#getFacetCount() */ public int getFacetCount() { return original.getFacetCount(); } /** * @see javax.faces.component.UIComponentBase#getFacets() */ public Map getFacets() { return original.getFacets(); } /** * @see javax.faces.component.UIComponentBase#getFacetsAndChildren() */ public Iterator getFacetsAndChildren() { return original.getFacetsAndChildren(); } /** * @see javax.faces.component.UIViewRoot#getFamily() */ public String getFamily() { return original.getFamily(); } /** * @see javax.faces.component.UIComponentBase#getId() */ public String getId() { return original.getId(); } /** * @see javax.faces.component.UIViewRoot#getLocale() */ public Locale getLocale() { return original.getLocale(); } /** * @see javax.faces.component.UIComponentBase#getParent() */ public UIComponent getParent() { return original.getParent(); } /** * @see javax.faces.component.UIComponentBase#getRendererType() */ public String getRendererType() { return original.getRendererType(); } /** * @see javax.faces.component.UIViewRoot#getRenderKitId() */ public String getRenderKitId() { return original.getRenderKitId(); } /** * @see javax.faces.component.UIComponentBase#getRendersChildren() */ public boolean getRendersChildren() { return original.getRendersChildren(); } /** * @param name * @deprecated * @see javax.faces.component.UIComponentBase#getValueBinding(java.lang.String) */ public ValueBinding getValueBinding(String name) { return original.getValueBinding(name); } /** * @param name * @see javax.faces.component.UIComponent#getValueExpression(java.lang.String) */ public ValueExpression getValueExpression(String name) { return original.getValueExpression(name); } /** * @see javax.faces.component.UIViewRoot#getViewId() */ public String getViewId() { return original.getViewId(); } /** * @param context * @param clientId * @param callback * @throws FacesException * @see javax.faces.component.UIComponentBase#invokeOnComponent(javax.faces.context.FacesContext, java.lang.String, * javax.faces.component.ContextCallback) */ public boolean invokeOnComponent(FacesContext context, String clientId, ContextCallback callback) throws FacesException { return original.invokeOnComponent(context, clientId, callback); } /** * @see javax.faces.component.UIComponentBase#isRendered() */ public boolean isRendered() { return original.isRendered(); } /** * @see javax.faces.component.UIComponentBase#isTransient() */ public boolean isTransient() { return original.isTransient(); } /** * @see javax.faces.component.UIViewRoot#processApplication(javax.faces.context.FacesContext) */ public void processApplication(FacesContext context) { original.processApplication(context); } /** * @param context * @see javax.faces.component.UIViewRoot#processDecodes(javax.faces.context.FacesContext) */ public void processDecodes(FacesContext context) { original.processDecodes(context); } /** * @param context * @param state * @see javax.faces.component.UIComponentBase#processRestoreState(javax.faces.context.FacesContext, * java.lang.Object) */ public void processRestoreState(FacesContext context, Object state) { original.processRestoreState(context, state); } /** * @param context * @see javax.faces.component.UIComponentBase#processSaveState(javax.faces.context.FacesContext) */ public Object processSaveState(FacesContext context) { return original.processSaveState(context); } /** * @param context * @see javax.faces.component.UIViewRoot#processUpdates(javax.faces.context.FacesContext) */ public void processUpdates(FacesContext context) { original.processUpdates(context); } /** * @param context * @see javax.faces.component.UIViewRoot#processValidators(javax.faces.context.FacesContext) */ public void processValidators(FacesContext context) { original.processValidators(context); } /** * @param event * @see javax.faces.component.UIViewRoot#queueEvent(javax.faces.event.FacesEvent) */ public void queueEvent(FacesEvent event) { original.queueEvent(event); } /** * @param phaseListener * @see javax.faces.component.UIViewRoot#removePhaseListener(javax.faces.event.PhaseListener) */ public void removePhaseListener(PhaseListener phaseListener) { original.removePhaseListener(phaseListener); } /** * @param facesContext * @param state * @see javax.faces.component.UIViewRoot#restoreState(javax.faces.context.FacesContext, java.lang.Object) */ public void restoreState(FacesContext facesContext, Object state) { original.restoreState(facesContext, state); } /** * @param facesContext * @see javax.faces.component.UIViewRoot#saveState(javax.faces.context.FacesContext) */ public Object saveState(FacesContext facesContext) { return original.saveState(facesContext); } /** * @param afterPhaseListener * @see javax.faces.component.UIViewRoot#setAfterPhaseListener(javax.el.MethodExpression) */ public void setAfterPhaseListener(MethodExpression afterPhaseListener) { original.setAfterPhaseListener(afterPhaseListener); } /** * @param beforePhaseListener * @see javax.faces.component.UIViewRoot#setBeforePhaseListener(javax.el.MethodExpression) */ public void setBeforePhaseListener(MethodExpression beforePhaseListener) { original.setBeforePhaseListener(beforePhaseListener); } /** * @param id * @see javax.faces.component.UIComponentBase#setId(java.lang.String) */ public void setId(String id) { original.setId(id); } /** * @param locale * @see javax.faces.component.UIViewRoot#setLocale(java.util.Locale) */ public void setLocale(Locale locale) { original.setLocale(locale); } /** * @param parent * @see javax.faces.component.UIComponentBase#setParent(javax.faces.component.UIComponent) */ public void setParent(UIComponent parent) { original.setParent(parent); } /** * @param rendered * @see javax.faces.component.UIComponentBase#setRendered(boolean) */ public void setRendered(boolean rendered) { original.setRendered(rendered); } /** * @param rendererType * @see javax.faces.component.UIComponentBase#setRendererType(java.lang.String) */ public void setRendererType(String rendererType) { if (original != null) { original.setRendererType(rendererType); } } /** * @param renderKitId * @see javax.faces.component.UIViewRoot#setRenderKitId(java.lang.String) */ public void setRenderKitId(String renderKitId) { original.setRenderKitId(renderKitId); } /** * @param transientFlag * @see javax.faces.component.UIComponentBase#setTransient(boolean) */ public void setTransient(boolean transientFlag) { original.setTransient(transientFlag); } /** * @param name * @param binding * @deprecated * @see javax.faces.component.UIComponentBase#setValueBinding(java.lang.String, javax.faces.el.ValueBinding) */ public void setValueBinding(String name, ValueBinding binding) { original.setValueBinding(name, binding); } /** * @param name * @param expression * @see javax.faces.component.UIComponent#setValueExpression(java.lang.String, javax.el.ValueExpression) */ public void setValueExpression(String name, ValueExpression expression) { original.setValueExpression(name, expression); } /** * @param viewId * @see javax.faces.component.UIViewRoot#setViewId(java.lang.String) */ public void setViewId(String viewId) { original.setViewId(viewId); } } �������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000222�00000000000�011561� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-faces/src/main/java/org/springframework/faces/ui/DojoElementDecorationRenderer.java�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-faces/src/main/java/org/springframewor0000644�0000000�0000000�00000007125�11360615632�027733� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* * Copyright 2004-2008 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.springframework.faces.ui; import java.io.IOException; import javax.faces.FacesException; import javax.faces.component.UIComponent; import javax.faces.context.FacesContext; import javax.faces.context.ResponseWriter; import org.springframework.faces.ui.resource.ResourceHelper; import org.springframework.faces.webflow.JsfUtils; /** * Generic renderer for components that use the Dojo implementation of Spring JavaScript to decorate a child component * with enhanced client-side behavior. * * @author Jeremy Grelle * */ public class DojoElementDecorationRenderer extends BaseSpringJavascriptDecorationRenderer { public void encodeBegin(FacesContext context, UIComponent component) throws IOException { super.encodeBegin(context, component); if (!JsfUtils.isAsynchronousFlowRequest()) { if (!context.getViewRoot().getAttributes().containsKey(DojoConstants.CUSTOM_THEME_PATH_SET) && !context.getViewRoot().getAttributes().containsKey(DojoConstants.CUSTOM_THEME_SET)) { ResourceHelper.renderStyleLink(context, DojoConstants.DIJIT_THEME_PATH + DojoConstants.DEFAULT_DIJIT_THEME + "/" + DojoConstants.DEFAULT_DIJIT_THEME + ".css"); } ResourceHelper.renderScriptLink(context, DojoConstants.DOJO_JS_RESOURCE_URI); ResourceHelper.renderScriptLink(context, DojoConstants.SPRING_DOJO_JS_RESOURCE_URI); } } public void encodeEnd(FacesContext context, UIComponent component) throws IOException { ResponseWriter writer = context.getResponseWriter(); String selector; if (component.getAttributes().containsKey("selector")) { selector = "\"" + (String) component.getAttributes().get("selector") + "\""; } else { if (component.getChildCount() == 0) throw new FacesException( "A Spring Faces elementDecoration expects either have a specified selector or at least one child component."); selector = "dojo.byId('" + ((UIComponent) component.getChildren().get(0)).getClientId(context) + "')"; } ResourceHelper.beginScriptBlock(context); StringBuffer script = new StringBuffer(); script.append(" dojo.addOnLoad(function(){dojo.query(" + selector + ").forEach(function(element){"); script.append(" Spring.addDecoration(new Spring.ElementDecoration({ "); script.append(" elementId : element, "); script.append(" widgetType : '" + component.getAttributes().get("widgetType") + "', "); if (component.getAttributes().containsKey("widgetModule")) { script.append(" widgetModule : '" + component.getAttributes().get("widgetModule") + "', "); } script.append(" widgetAttrs : { "); String dojoAttrs = getDojoAttributesAsString(context, component); script.append(dojoAttrs); script.append(" }}));})});"); writer.writeText(script, null); ResourceHelper.endScriptBlock(context); } protected String getDojoAttributesAsString(FacesContext context, UIComponent component) { if (component.getAttributes().containsKey("widgetAttrs")) { return (String) component.getAttributes().get("widgetAttrs"); } else { return ""; } } } �������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000214�00000000000�011562� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-faces/src/main/java/org/springframework/faces/ui/RenderAttributeCallback.java�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-faces/src/main/java/org/springframewor0000644�0000000�0000000�00000002230�11360615632�027723� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* * Copyright 2004-2008 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.springframework.faces.ui; import java.io.IOException; import javax.faces.component.UIComponent; import javax.faces.context.FacesContext; import javax.faces.context.ResponseWriter; /** * Callback interface used to provide custom behavior for the rendering of a particular component attribute. * * @author Jeremy Grelle * */ interface RenderAttributeCallback { public void doRender(FacesContext context, ResponseWriter writer, UIComponent component, String attribute, Object attributeValue, String property) throws IOException; } ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000207�00000000000�011564� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-faces/src/main/java/org/springframework/faces/ui/DojoScriptRenderer.java������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-faces/src/main/java/org/springframewor0000644�0000000�0000000�00000001573�11360615632�027734� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������package org.springframework.faces.ui; import java.io.IOException; import javax.faces.component.UIComponent; import javax.faces.context.FacesContext; import javax.faces.render.Renderer; import org.springframework.faces.ui.resource.ResourceHelper; /** * {@link Renderer} implementation that renders the JavaScript resources required by the Dojo versions of the Spring * Faces components. * * @author Jeremy Grelle * */ public class DojoScriptRenderer extends Renderer { private static final String SPRING_JS_RESOURCE_URI = "/spring/Spring.js"; public void encodeBegin(FacesContext context, UIComponent component) throws IOException { ResourceHelper.renderScriptLink(context, SPRING_JS_RESOURCE_URI); ResourceHelper.renderScriptLink(context, DojoConstants.DOJO_JS_RESOURCE_URI); ResourceHelper.renderScriptLink(context, DojoConstants.SPRING_DOJO_JS_RESOURCE_URI); } } �������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000210�00000000000�011556� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-faces/src/main/java/org/springframework/faces/ui/ValidateAllRenderer.java�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-faces/src/main/java/org/springframewor0000644�0000000�0000000�00000003771�11360615632�027736� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* * Copyright 2004-2008 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.springframework.faces.ui; import java.io.IOException; import javax.faces.FacesException; import javax.faces.component.UICommand; import javax.faces.component.UIComponent; import javax.faces.context.FacesContext; import javax.faces.context.ResponseWriter; import javax.faces.render.Renderer; import org.springframework.faces.ui.resource.ResourceHelper; /** * {@link Renderer} for the {@code <sf:validateAllOnClick>} tag. * * @author Jeremy Grelle * */ public class ValidateAllRenderer extends BaseSpringJavascriptDecorationRenderer { public void encodeEnd(FacesContext context, UIComponent component) throws IOException { ResponseWriter writer = context.getResponseWriter(); if (component.getChildCount() == 0) { throw new FacesException("A Spring Faces advisor expects to have at least one child component."); } if (!(component.getChildren().get(0) instanceof UICommand)) { throw new FacesException("ValidateAll expects to have a child of type UICommand."); } UIComponent advisedChild = (UIComponent) component.getChildren().get(0); ResourceHelper.beginScriptBlock(context); StringBuffer script = new StringBuffer(); script.append("Spring.addDecoration(new Spring.ValidateAllDecoration({" + "event : 'onclick', " + "elementId : '" + advisedChild.getClientId(context) + "'}));"); writer.writeText(script, null); ResourceHelper.endScriptBlock(context); } } �������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000211�00000000000�011557� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-faces/src/main/java/org/springframework/faces/ui/ProgressiveUICommand.java����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-faces/src/main/java/org/springframewor0000644�0000000�0000000�00000006031�11360615644�027731� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* * Copyright 2004-2008 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.springframework.faces.ui; import javax.faces.component.UICommand; import javax.faces.component.UIComponent; import javax.faces.context.FacesContext; import javax.faces.el.ValueBinding; import org.springframework.webflow.definition.TransitionDefinition; import org.springframework.webflow.engine.TransitionableState; import org.springframework.webflow.execution.RequestContext; import org.springframework.webflow.execution.RequestContextHolder; /** * {@link UIComponent} implementation that backs the {@code <sf:commandButton>} tag. Relies mainly on the use of * {@link UIComponent#getAttributes()} as opposed to JavaBean getters and setters, except for attribute that require * type conversion. * * @author Jeremy Grelle * */ public class ProgressiveUICommand extends UICommand { private String type = "submit"; private Boolean disabled; private Boolean ajaxEnabled = Boolean.TRUE; public String getType() { return type; } public void setType(String type) { this.type = type; } public Boolean getDisabled() { if (disabled != null) { return disabled; } ValueBinding vb = getValueBinding("disabled"); return vb != null ? (Boolean) vb.getValue(getFacesContext()) : Boolean.FALSE; } public void setDisabled(Boolean disabled) { this.disabled = disabled; } public Boolean getAjaxEnabled() { return ajaxEnabled; } public void setAjaxEnabled(Boolean ajaxEnabled) { this.ajaxEnabled = ajaxEnabled; } public boolean isImmediate() { RequestContext context = RequestContextHolder.getRequestContext(); if (context != null && getActionExpression().isLiteralText() && context.getCurrentState() instanceof TransitionableState) { TransitionDefinition transition = context .getMatchingTransition(getActionExpression().getExpressionString()); if (transition != null && transition.getAttributes().contains("bind")) { return Boolean.FALSE.equals(transition.getAttributes().getBoolean("bind")); } } return super.isImmediate(); } public Object saveState(FacesContext context) { Object[] values = new Object[4]; values[0] = super.saveState(context); values[1] = type; values[2] = disabled; values[3] = ajaxEnabled; return values; } public void restoreState(FacesContext context, Object state) { Object values[] = (Object[]) state; super.restoreState(context, values[0]); type = (String) values[1]; disabled = (Boolean) values[2]; ajaxEnabled = (Boolean) values[3]; } } �������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000206�00000000000�011563� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-faces/src/main/java/org/springframework/faces/ui/DojoStyleRenderer.java�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-faces/src/main/java/org/springframewor0000644�0000000�0000000�00000003601�11360615632�027726� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* * Copyright 2004-2008 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.springframework.faces.ui; import java.io.IOException; import javax.faces.component.UIComponent; import javax.faces.context.FacesContext; import javax.faces.render.Renderer; import org.springframework.faces.ui.resource.ResourceHelper; /** * {@link Renderer} implementation that renders the CSS resources required by Dojo's widget system. * * @author Jeremy Grelle * */ public class DojoStyleRenderer extends Renderer { private static final String THEME_PATH_ATTR = "themePath"; private static final String THEME_ATTR = "theme"; public void encodeBegin(FacesContext context, UIComponent component) throws IOException { String themePath = DojoConstants.DIJIT_THEME_PATH; String theme = DojoConstants.DEFAULT_DIJIT_THEME; if (component.getAttributes().containsKey(THEME_PATH_ATTR)) { themePath = (String) component.getAttributes().get(THEME_PATH_ATTR); context.getViewRoot().getAttributes().put(DojoConstants.CUSTOM_THEME_PATH_SET, Boolean.TRUE); } if (component.getAttributes().containsKey(THEME_ATTR)) { theme = (String) component.getAttributes().get(THEME_ATTR); context.getViewRoot().getAttributes().put(DojoConstants.CUSTOM_THEME_SET, Boolean.TRUE); } ResourceHelper.renderStyleLink(context, themePath + theme + "/" + theme + ".css"); } } �������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000223�00000000000�011562� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-faces/src/main/java/org/springframework/faces/ui/ProgressiveCommandLinkRenderer.java������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-faces/src/main/java/org/springframewor0000644�0000000�0000000�00000023772�11360615634�027743� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* * Copyright 2004-2008 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.springframework.faces.ui; import java.io.IOException; import java.io.StringWriter; import java.io.Writer; import java.util.ArrayList; import java.util.Arrays; import java.util.HashMap; import java.util.List; import java.util.ListIterator; import java.util.Map; import javax.faces.component.UIComponent; import javax.faces.component.UIParameter; import javax.faces.context.FacesContext; import javax.faces.context.ResponseWriter; import javax.faces.render.Renderer; import org.springframework.beans.BeanUtils; import org.springframework.faces.ui.resource.ResourceHelper; import org.springframework.faces.webflow.JsfUtils; import org.springframework.util.Assert; /** * {@link Renderer} for the {@code <sf:commandLink>} tag. * * <p> * This renderer is unique in that it first renders a button that will still work if JavaScript is disabled on the * client, then progressively enhances the button and transforms it into a link if JavaScript is available. * </p> * * @author Jeremy Grelle * */ public class ProgressiveCommandLinkRenderer extends ProgressiveCommandButtonRenderer { private static String[] ATTRIBUTES_TO_RENDER; private static String ANCHOR_TAG_NAME = "a"; static { List tempList = new ArrayList(); tempList.addAll(Arrays.asList(HTML.STANDARD_ATTRIBUTES)); tempList.addAll(Arrays.asList(HTML.ANCHOR_ATTRIBUTES)); tempList.addAll(Arrays.asList(HTML.COMMON_ELEMENT_EVENTS)); tempList.addAll(Arrays.asList(HTML.KEYBOARD_EVENTS)); tempList.addAll(Arrays.asList(HTML.MOUSE_EVENTS)); ATTRIBUTES_TO_RENDER = new String[tempList.size()]; ListIterator i = tempList.listIterator(); while (i.hasNext()) { ATTRIBUTES_TO_RENDER[i.nextIndex()] = (String) i.next(); } } private Map attributeCallbacks; private RenderAttributeCallback hrefCallback = new RenderAttributeCallback() { public void doRender(FacesContext context, ResponseWriter writer, UIComponent component, String attribute, Object attributeValue, String property) throws IOException { writer.writeAttribute(attribute, "#", property); } }; private RenderAttributeCallback classCallback = new RenderAttributeCallback() { public void doRender(FacesContext context, ResponseWriter writer, UIComponent component, String attribute, Object attributeValue, String property) throws IOException { String classToAdd = "progressiveLink"; if (attributeValue != null) { attributeValue = attributeValue.toString() + " " + classToAdd; } else { attributeValue = classToAdd; } writer.writeAttribute(attribute, attributeValue, property); } }; private RenderAttributeCallback noOpCallback = new RenderAttributeCallback() { public void doRender(FacesContext context, ResponseWriter writer, UIComponent component, String attribute, Object attributeValue, String property) throws IOException { // No-op } }; public void encodeBegin(FacesContext context, UIComponent component) throws IOException { // No need to be progressive if this is an AJAX request since it can be assumed JavaScript is enabled if (!JsfUtils.isAsynchronousFlowRequest()) { // Render a plain submit button first if this is not an ajax request ProgressiveUICommand button = new ProgressiveUICommand(); button.getAttributes().putAll(component.getAttributes()); BeanUtils.copyProperties(component, button); button.setRendererType("spring.faces.ProgressiveCommandButtonRenderer"); button.setAjaxEnabled(Boolean.FALSE); button.encodeBegin(context); button.encodeChildren(context); button.encodeEnd(context); // Now render the link's HTML into a javascript variable ResourceHelper.beginScriptBlock(context); ResponseWriter writer = context.getResponseWriter(); String scriptVarStart = "var " + component.getClientId(context).replaceAll(":", "_") + "_link = \""; writer.writeText(scriptVarStart, null); writer = new DoubleQuoteEscapingWriter(writer); context.setResponseWriter(writer); } super.encodeBegin(context, component); } public void encodeChildren(FacesContext context, UIComponent component) throws IOException { // If the link has no children, render out the "value" as text. ResponseWriter writer = context.getResponseWriter(); String valueAttr = "value"; if (component.getAttributes().get(valueAttr) != null) { writer.writeText(component.getAttributes().get(valueAttr), valueAttr); } super.encodeChildren(context, component); } public void encodeEnd(FacesContext context, UIComponent component) throws IOException { super.encodeEnd(context, component); StringBuffer decorationParams = new StringBuffer(); decorationParams.append("{"); decorationParams.append("elementId : '" + component.getClientId(context) + "'"); ResponseWriter writer = context.getResponseWriter(); // Close the script variable started in encodeBegin if this is not an AJAX request if (!JsfUtils.isAsynchronousFlowRequest()) { DoubleQuoteEscapingWriter tempWriter = (DoubleQuoteEscapingWriter) writer; String scriptVarValue = tempWriter.escapeResult(); context.setResponseWriter(tempWriter.original); writer = tempWriter.original; writer.writeText(scriptVarValue, null); String scriptVarEnd = "\";\n"; writer.writeText(scriptVarEnd, null); decorationParams.append(", linkHtml : " + component.getClientId(context).replaceAll(":", "_") + "_link"); ResourceHelper.endScriptBlock(context); } decorationParams.append("}"); StringBuffer advisorScript = new StringBuffer(); advisorScript.append("Spring.addDecoration(new Spring.CommandLinkDecoration(" + decorationParams.toString() + "));"); ResourceHelper.beginScriptBlock(context); writer.writeText(advisorScript, null); ResourceHelper.endScriptBlock(context); } public boolean getRendersChildren() { return true; } protected String[] getAttributesToRender(UIComponent component) { return ATTRIBUTES_TO_RENDER; } protected String getRenderedTagName(UIComponent component) { return ANCHOR_TAG_NAME; } protected Map getAttributeCallbacks(UIComponent component) { if (attributeCallbacks == null) { attributeCallbacks = new HashMap(); attributeCallbacks.putAll(super.getAttributeCallbacks(component)); attributeCallbacks.put("href", hrefCallback); attributeCallbacks.put("class", classCallback); attributeCallbacks.put("type", noOpCallback); } return attributeCallbacks; } protected String getOnClickNoAjax(FacesContext context, UIComponent component) { String params = encodeParamsAsArray(context, component); StringBuffer onclick = new StringBuffer(); onclick.append("this.submitFormFromLink('" + RendererUtils.getFormId(context, component) + "','" + component.getClientId(context) + "', " + params + "); return false;"); return onclick.toString(); } protected String encodeParamsAsArray(FacesContext context, UIComponent component) { StringBuffer paramArray = new StringBuffer(); paramArray.append("["); for (int i = 0; i < component.getChildCount(); i++) { if (component.getChildren().get(i) instanceof UIParameter) { UIParameter param = (UIParameter) component.getChildren().get(i); Assert.hasText(param.getName(), "UIParameter requires a name when used as a child of a UICommand component"); if (paramArray.length() > 1) { paramArray.append(", "); } paramArray.append("{name : '" + param.getName() + "'"); paramArray.append(", value : '" + param.getValue() + "'}"); } } paramArray.append("]"); return paramArray.toString(); } private class DoubleQuoteEscapingWriter extends ResponseWriter { private ResponseWriter original; private ResponseWriter clonedWriter; private StringWriter buffer = new StringWriter(); public DoubleQuoteEscapingWriter(ResponseWriter original) { this.original = original; this.clonedWriter = original.cloneWithWriter(buffer); } public String escapeResult() { String result = buffer.toString(); result = result.replaceAll("\\\"", "\\\\\""); return result; } public ResponseWriter cloneWithWriter(Writer arg0) { return clonedWriter.cloneWithWriter(arg0); } public void endDocument() throws IOException { clonedWriter.endDocument(); } public void endElement(String arg0) throws IOException { clonedWriter.endElement(arg0); } public void flush() throws IOException { clonedWriter.flush(); } public String getCharacterEncoding() { return clonedWriter.getCharacterEncoding(); } public String getContentType() { return clonedWriter.getContentType(); } public void startDocument() throws IOException { clonedWriter.startDocument(); } public void startElement(String arg0, UIComponent arg1) throws IOException { clonedWriter.startElement(arg0, arg1); } public void writeAttribute(String arg0, Object arg1, String arg2) throws IOException { clonedWriter.writeAttribute(arg0, arg1, arg2); } public void writeComment(Object arg0) throws IOException { clonedWriter.writeComment(arg0); } public void writeText(char[] arg0, int arg1, int arg2) throws IOException { clonedWriter.writeText(arg0, arg1, arg2); } public void writeText(Object arg0, String arg1) throws IOException { clonedWriter.writeText(arg0, arg1); } public void writeURIAttribute(String arg0, Object arg1, String arg2) throws IOException { clonedWriter.writeURIAttribute(arg0, arg1, arg2); } public void close() throws IOException { clonedWriter.close(); } public void write(char[] cbuf, int off, int len) throws IOException { clonedWriter.write(cbuf, off, len); } } } ������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000220�00000000000�011557� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-faces/src/main/java/org/springframework/faces/ui/DojoClientCurrencyValidator.java���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-faces/src/main/java/org/springframewor0000644�0000000�0000000�00000004414�11360615640�027730� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* * Copyright 2004-2008 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.springframework.faces.ui; import javax.faces.context.FacesContext; import javax.faces.el.ValueBinding; /** * Component that uses the Dojo implementation of Spring JavaScript to decorate a child input component with client-side * currency validation behavior. * * @author Jeremy Grelle * */ public class DojoClientCurrencyValidator extends DojoWidget { private static final String DOJO_COMPONENT_TYPE = "dijit.form.CurrencyTextBox"; private static final String[] DOJO_ATTRS_INTERNAL = new String[] { "currency" }; private static final String[] DOJO_ATTRS; static { DOJO_ATTRS = new String[DojoWidget.DOJO_ATTRS.length + DOJO_ATTRS_INTERNAL.length]; System.arraycopy(DojoWidget.DOJO_ATTRS, 0, DOJO_ATTRS, 0, DojoWidget.DOJO_ATTRS.length); System.arraycopy(DOJO_ATTRS_INTERNAL, 0, DOJO_ATTRS, DojoWidget.DOJO_ATTRS.length, DOJO_ATTRS_INTERNAL.length); } private String currency; public String getCurrency() { if (currency != null) { return currency; } ValueBinding exp = getValueBinding("currency"); return exp != null ? (String) exp.getValue(getFacesContext()) : null; } public void setCurrency(String currency) { this.currency = currency; } protected String[] getDojoAttributes() { return DOJO_ATTRS; } public String getWidgetType() { return DOJO_COMPONENT_TYPE; } public Object saveState(FacesContext context) { Object[] values = new Object[2]; values[0] = super.saveState(context); values[1] = this.currency; return values; } public void restoreState(FacesContext context, Object state) { Object values[] = (Object[]) state; super.restoreState(context, values[0]); this.currency = (String) values[1]; } } ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000221�00000000000�011560� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-faces/src/main/java/org/springframework/faces/ui/AjaxEventInterceptorRenderer.java��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-faces/src/main/java/org/springframewor0000644�0000000�0000000�00000006672�11360615640�027740� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* * Copyright 2004-2008 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.springframework.faces.ui; import java.io.IOException; import javax.faces.FacesException; import javax.faces.component.UIComponent; import javax.faces.context.FacesContext; import javax.faces.context.ResponseWriter; import javax.faces.event.ActionEvent; import org.springframework.faces.ui.resource.ResourceHelper; import org.springframework.util.Assert; import org.springframework.util.StringUtils; /** * Renderer for the {@code <sf:ajaxEvent>} tag. * * @author Jeremy Grelle * */ public class AjaxEventInterceptorRenderer extends DojoElementDecorationRenderer { public void encodeEnd(FacesContext context, UIComponent component) throws IOException { String event = (String) component.getAttributes().get("event"); Assert.hasText(event, "The event attribute is required on " + component); Assert.isTrue(component.getChildCount() == 1, "Exactly one child component is required for " + component); ResourceHelper.beginScriptBlock(context); ResponseWriter writer = context.getResponseWriter(); String processIds = (String) component.getAttributes().get("processIds"); if (StringUtils.hasText(processIds) && processIds.indexOf(component.getClientId(context)) == -1) { processIds = component.getClientId(context) + ", " + processIds; } else if (!StringUtils.hasText(processIds)) { processIds = component.getClientId(context); } String childId = getElementId(context, component); StringBuffer script = new StringBuffer(); script.append("dojo.addOnLoad(function(){"); script.append("Spring.addDecoration(new Spring.AjaxEventDecoration({"); script.append("event:'" + event + "'"); script.append(", elementId: '" + childId + "'"); script.append(", sourceId: '" + component.getClientId(context) + "'"); script.append(", formId : '" + RendererUtils.getFormId(context, component) + "'"); script.append(", params: {processIds : '" + processIds + "'"); script.append(", ajaxSource : '" + component.getClientId(context) + "'} }));});"); writer.writeText(script.toString(), null); ResourceHelper.endScriptBlock(context); } private String getElementId(FacesContext context, UIComponent component) { if (component.getChildCount() > 0) { UIComponent child = (UIComponent) component.getChildren().get(0); if (!(child instanceof SpringJavascriptElementDecoration)) { return child.getClientId(context); } else { return getElementId(context, child); } } else { throw new FacesException("Could not locate a proper child element to trigger the ajax event."); } } public void decode(FacesContext context, UIComponent component) { if (context.getExternalContext().getRequestParameterMap().containsKey("ajaxSource") && context.getExternalContext().getRequestParameterMap().get("ajaxSource").equals( component.getClientId(context))) { component.queueEvent(new ActionEvent(component)); } } } ����������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000170�00000000000�011563� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-faces/src/main/java/org/springframework/faces/expression/���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-faces/src/main/java/org/springframewor0000755�0000000�0000000�00000000000�11360615644�027727� 5����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000214�00000000000�011562� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-faces/src/main/java/org/springframework/faces/expression/SimpleELContext.java�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-faces/src/main/java/org/springframewor0000644�0000000�0000000�00000002276�11360615642�027736� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* * Copyright 2004-2008 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.springframework.faces.expression; import javax.el.ELContext; import javax.el.ELResolver; import javax.el.FunctionMapper; import javax.el.VariableMapper; /** * A minimal {@link ELContext} implementation. * * @author Jeremy Grelle */ class SimpleELContext extends ELContext { private ELResolver resolver; public SimpleELContext(ELResolver resolver) { this.resolver = resolver; } public ELResolver getELResolver() { return resolver; } public FunctionMapper getFunctionMapper() { return null; } public VariableMapper getVariableMapper() { return null; } } ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000204�00000000000�011561� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-faces/src/main/java/org/springframework/faces/expression/package.html���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-faces/src/main/java/org/springframewor0000644�0000000�0000000�00000000142�11360615644�027726� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������<html> <body> <p>Support for adapting Unified EL resolvers to the JSF 1.1 API.</p> </body> </html>������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000231�00000000000�011561� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-faces/src/main/java/org/springframework/faces/expression/ELDelegatingPropertyResolver.java������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-faces/src/main/java/org/springframewor0000644�0000000�0000000�00000010241�11360615644�027727� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* * Copyright 2004-2008 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.springframework.faces.expression; import javax.el.ELContext; import javax.el.ELResolver; import javax.faces.el.EvaluationException; import javax.faces.el.PropertyNotFoundException; import javax.faces.el.PropertyResolver; /** * A JSF 1.1 {@link PropertyResolver} that delegates to a wrapped Unified EL resolver chain for property resolution. * * @author Jeremy Grelle */ public abstract class ELDelegatingPropertyResolver extends PropertyResolver { private PropertyResolver nextResolver; private ELResolver delegate; public ELDelegatingPropertyResolver(PropertyResolver nextResolver, ELResolver delegate) { this.nextResolver = nextResolver; this.delegate = delegate; } public Class getType(Object base, int index) throws EvaluationException, PropertyNotFoundException { ELContext elContext = new SimpleELContext(delegate); Class type = elContext.getELResolver().getType(elContext, base, new Integer(index)); if (elContext.isPropertyResolved()) { return type; } else { return nextResolver.getType(base, index); } } public Class getType(Object base, Object property) throws EvaluationException, PropertyNotFoundException { ELContext elContext = new SimpleELContext(delegate); Class type = elContext.getELResolver().getType(elContext, base, property); if (elContext.isPropertyResolved()) { return type; } else { return nextResolver.getType(base, property); } } public Object getValue(Object base, int index) throws EvaluationException, PropertyNotFoundException { ELContext elContext = new SimpleELContext(delegate); Object value = elContext.getELResolver().getValue(elContext, base, new Integer(index)); if (elContext.isPropertyResolved()) { return value; } else { return nextResolver.getValue(base, index); } } public Object getValue(Object base, Object property) throws EvaluationException, PropertyNotFoundException { ELContext elContext = new SimpleELContext(delegate); Object value = elContext.getELResolver().getValue(elContext, base, property); if (elContext.isPropertyResolved()) { return value; } else { return nextResolver.getValue(base, property); } } public boolean isReadOnly(Object base, int index) throws EvaluationException, PropertyNotFoundException { ELContext elContext = new SimpleELContext(delegate); boolean readOnly = elContext.getELResolver().isReadOnly(elContext, base, new Integer(index)); if (elContext.isPropertyResolved()) { return readOnly; } else { return nextResolver.isReadOnly(base, index); } } public boolean isReadOnly(Object base, Object property) throws EvaluationException, PropertyNotFoundException { ELContext elContext = new SimpleELContext(delegate); boolean readOnly = elContext.getELResolver().isReadOnly(elContext, base, property); if (elContext.isPropertyResolved()) { return readOnly; } else { return nextResolver.isReadOnly(base, property); } } public void setValue(Object base, int index, Object value) throws EvaluationException, PropertyNotFoundException { ELContext elContext = new SimpleELContext(delegate); elContext.getELResolver().setValue(elContext, base, new Integer(index), value); if (!elContext.isPropertyResolved()) { nextResolver.setValue(base, index, value); } } public void setValue(Object base, Object property, Object value) throws EvaluationException, PropertyNotFoundException { ELContext elContext = new SimpleELContext(delegate); elContext.getELResolver().setValue(elContext, base, property, value); if (!elContext.isPropertyResolved()) { nextResolver.setValue(base, property, value); } } } ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000231�00000000000�011561� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-faces/src/main/java/org/springframework/faces/expression/ELDelegatingVariableResolver.java������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-faces/src/main/java/org/springframewor0000644�0000000�0000000�00000003222�11360615644�027730� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* * Copyright 2004-2008 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.springframework.faces.expression; import javax.el.ELContext; import javax.el.ELResolver; import javax.faces.context.FacesContext; import javax.faces.el.EvaluationException; import javax.faces.el.VariableResolver; /** * A JSF 1.1 {@link VariableResolver} that delegates to a wrapped Unified EL resolver chain for variable resolution. * * @author Jeremy Grelle */ public abstract class ELDelegatingVariableResolver extends VariableResolver { private VariableResolver nextResolver; private ELResolver delegate; public ELDelegatingVariableResolver(VariableResolver nextResolver, ELResolver delegate) { this.nextResolver = nextResolver; this.delegate = delegate; } public Object resolveVariable(FacesContext facesContext, String name) throws EvaluationException { ELContext elContext = new SimpleELContext(delegate); Object result = elContext.getELResolver().getValue(elContext, null, name); if (elContext.isPropertyResolved()) { return result; } else { return nextResolver.resolveVariable(facesContext, name); } } } ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000165�00000000000�011567� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-faces/src/main/java/org/springframework/faces/webflow/������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-faces/src/main/java/org/springframewor0000755�0000000�0000000�00000000000�11360615646�027731� 5����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000207�00000000000�011564� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-faces/src/main/java/org/springframework/faces/webflow/FlowLifecycle.java������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-faces/src/main/java/org/springframewor0000644�0000000�0000000�00000007544�11360615640�027737� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* * Copyright 2004-2008 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.springframework.faces.webflow; import javax.faces.FacesException; import javax.faces.FactoryFinder; import javax.faces.context.FacesContext; import javax.faces.event.PhaseId; import javax.faces.event.PhaseListener; import javax.faces.lifecycle.Lifecycle; import javax.faces.lifecycle.LifecycleFactory; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; /** * Custom {@link Lifecycle} for Spring Web Flow that only executes the APPLY_REQUEST_VALUES through INVOKE_APPLICATION * phases. * <p> * This Lifecycle does not execute the RESTORE_VIEW phase since view creation and restoration are now handled by the * {@link JsfViewFactory}. * </p> * * @author Jeremy Grelle */ public class FlowLifecycle extends Lifecycle { private static final Log logger = LogFactory.getLog(FlowLifecycle.class); private final Lifecycle delegate; public static Lifecycle newInstance() { LifecycleFactory lifecycleFactory = (LifecycleFactory) FactoryFinder .getFactory(FactoryFinder.LIFECYCLE_FACTORY); Lifecycle defaultLifecycle = lifecycleFactory.getLifecycle(LifecycleFactory.DEFAULT_LIFECYCLE); return new FlowLifecycle(defaultLifecycle); } FlowLifecycle(Lifecycle delegate) { this.delegate = delegate; } /** * Executes APPLY_REQUEST_VALUES through INVOKE_APPLICATION. */ public void execute(FacesContext context) throws FacesException { logger.debug("Executing view post back lifecycle"); for (int p = PhaseId.APPLY_REQUEST_VALUES.getOrdinal(); p <= PhaseId.INVOKE_APPLICATION.getOrdinal(); p++) { PhaseId phaseId = (PhaseId) PhaseId.VALUES.get(p); if (!skipPhase(context, phaseId)) { invokePhase(context, phaseId); } } } /** * Delegates to the wrapped {@link Lifecycle}. * @throws FacesException */ public void render(FacesContext context) throws FacesException { delegate.render(context); } /** * Delegates to the wrapped {@link Lifecycle}. */ public void addPhaseListener(PhaseListener listener) { delegate.addPhaseListener(listener); } /** * Delegates to the wrapped {@link Lifecycle}. */ public PhaseListener[] getPhaseListeners() { return delegate.getPhaseListeners(); } /** * Delegates to the wrapped {@link Lifecycle}. */ public void removePhaseListener(PhaseListener listener) { delegate.removePhaseListener(listener); } private boolean skipPhase(FacesContext context, PhaseId phaseId) { if (context.getResponseComplete()) { return true; } else if (context.getRenderResponse()) { return true; } else { return false; } } private void invokePhase(FacesContext context, PhaseId phaseId) { JsfUtils.notifyBeforeListeners(phaseId, this, context); if (phaseId == PhaseId.APPLY_REQUEST_VALUES) { logger.debug("Processing decodes"); context.getViewRoot().processDecodes(context); } else if (phaseId == PhaseId.PROCESS_VALIDATIONS) { logger.debug("Processing validators"); context.getViewRoot().processValidators(context); } else if (phaseId == PhaseId.UPDATE_MODEL_VALUES) { logger.debug("Processing model updates"); context.getViewRoot().processUpdates(context); } else { logger.debug("Processing application"); context.getViewRoot().processApplication(context); } JsfUtils.notifyAfterListeners(phaseId, this, context); } } ������������������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000216�00000000000�011564� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-faces/src/main/java/org/springframework/faces/webflow/FlowResourceResolver.java�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-faces/src/main/java/org/springframewor0000644�0000000�0000000�00000002501�11360615634�027726� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������package org.springframework.faces.webflow; import java.io.IOException; import java.net.URL; import javax.faces.FacesException; import org.springframework.context.ApplicationContext; import org.springframework.core.io.Resource; import org.springframework.webflow.execution.RequestContext; import org.springframework.webflow.execution.RequestContextHolder; import com.sun.facelets.impl.DefaultResourceResolver; import com.sun.facelets.impl.ResourceResolver; public class FlowResourceResolver implements ResourceResolver { ResourceResolver delegateResolver = new DefaultResourceResolver(); public URL resolveUrl(String path) { if (!JsfUtils.isFlowRequest()) { return delegateResolver.resolveUrl(path); } try { RequestContext context = RequestContextHolder.getRequestContext(); ApplicationContext flowContext = context.getActiveFlow().getApplicationContext(); if (flowContext == null) { throw new IllegalStateException("A Flow ApplicationContext is required to resolve Flow View Resources"); } ApplicationContext appContext = flowContext.getParent(); Resource viewResource = appContext.getResource(path); if (viewResource.exists()) { return viewResource.getURL(); } else { return delegateResolver.resolveUrl(path); } } catch (IOException ex) { throw new FacesException(ex); } } } �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000216�00000000000�011564� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-faces/src/main/java/org/springframework/faces/webflow/FlowVariableResolver.java�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-faces/src/main/java/org/springframewor0000644�0000000�0000000�00000003360�11360615636�027734� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* * Copyright 2004-2008 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.springframework.faces.webflow; import javax.el.CompositeELResolver; import javax.faces.el.VariableResolver; import org.springframework.faces.expression.ELDelegatingVariableResolver; import org.springframework.webflow.expression.el.FlowResourceELResolver; import org.springframework.webflow.expression.el.ImplicitFlowVariableELResolver; import org.springframework.webflow.expression.el.RequestContextELResolver; import org.springframework.webflow.expression.el.ScopeSearchingELResolver; /** * Custom variabe resolver for resolving properties on web flow specific variables with JSF 1.1 or > by delegating to * web flow's EL resolvers. * * @author Jeremy Grelle */ public class FlowVariableResolver extends ELDelegatingVariableResolver { private static final CompositeELResolver composite = new CompositeELResolver(); static { composite.add(new RequestContextELResolver()); composite.add(new ImplicitFlowVariableELResolver()); composite.add(new FlowResourceELResolver()); composite.add(new ScopeSearchingELResolver()); } public FlowVariableResolver(VariableResolver nextResolver) { super(nextResolver, composite); } } ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000214�00000000000�011562� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-faces/src/main/java/org/springframework/faces/webflow/FlowSerializedView.java�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-faces/src/main/java/org/springframewor0000644�0000000�0000000�00000002060�11360615632�027724� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������package org.springframework.faces.webflow; import java.io.Serializable; import org.springframework.core.style.ToStringCreator; /** * Serialized UIViewRoot stored in view scope associated with a Web Flow View State. * * @author Jeremy Grelle */ public class FlowSerializedView implements Serializable { private Object treeStructure; private Object componentState; private String viewId; /** * Creates a new serialized view * @param viewId the view id * @param treeStructure the tree structure of the view * @param componentState the component state */ public FlowSerializedView(String viewId, Object treeStructure, Object componentState) { this.viewId = viewId; this.treeStructure = treeStructure; this.componentState = componentState; } public String getViewId() { return this.viewId; } public Object getTreeStructure() { return this.treeStructure; } public Object getComponentState() { return this.componentState; } public String toString() { return new ToStringCreator(this).append("viewId", viewId).toString(); } } ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000217�00000000000�011565� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-faces/src/main/java/org/springframework/faces/webflow/JsfViewFactoryCreator.java����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-faces/src/main/java/org/springframewor0000644�0000000�0000000�00000003543�11360615642�027734� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* * Copyright 2004-2008 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.springframework.faces.webflow; import javax.faces.lifecycle.Lifecycle; import org.springframework.binding.convert.ConversionService; import org.springframework.binding.expression.Expression; import org.springframework.binding.expression.ExpressionParser; import org.springframework.webflow.engine.builder.BinderConfiguration; import org.springframework.webflow.engine.builder.ViewFactoryCreator; import org.springframework.webflow.execution.ViewFactory; /** * A {@link ViewFactoryCreator} implementation for creating instances of a JSF-specific {@link ViewFactory}. * * @author Jeremy Grelle */ public class JsfViewFactoryCreator implements ViewFactoryCreator { private static final String FACELETS_EXTENSION = ".xhtml"; private Lifecycle lifecycle; public ViewFactory createViewFactory(Expression viewIdExpression, ExpressionParser expressionParser, ConversionService conversionService, BinderConfiguration binderConfiguration) { return new JsfViewFactory(viewIdExpression, getLifecycle()); } public String getViewIdByConvention(String viewStateId) { return viewStateId + FACELETS_EXTENSION; } private Lifecycle getLifecycle() { if (lifecycle == null) { lifecycle = FlowLifecycle.newInstance(); } return lifecycle; } } �������������������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000210�00000000000�011556� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-faces/src/main/java/org/springframework/faces/webflow/JsfViewFactory.java�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-faces/src/main/java/org/springframewor0000644�0000000�0000000�00000014770�11360615634�027741� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* * Copyright 2004-2008 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.springframework.faces.webflow; import java.util.Iterator; import javax.faces.application.ViewHandler; import javax.faces.component.EditableValueHolder; import javax.faces.component.UIComponent; import javax.faces.component.UIViewRoot; import javax.faces.context.FacesContext; import javax.faces.el.ValueBinding; import javax.faces.event.PhaseId; import javax.faces.lifecycle.Lifecycle; import javax.servlet.ServletContext; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.springframework.binding.expression.Expression; import org.springframework.faces.ui.AjaxViewRoot; import org.springframework.js.ajax.SpringJavascriptAjaxHandler; import org.springframework.webflow.context.ExternalContext; import org.springframework.webflow.execution.RequestContext; import org.springframework.webflow.execution.View; import org.springframework.webflow.execution.ViewFactory; /** * JSF-specific {@link ViewFactory} implementation. * <p> * This factory is responsible for performing the duties of the RESTORE_VIEW phase of the JSF lifecycle. * </p> * * @author Jeremy Grelle */ public class JsfViewFactory implements ViewFactory { private static final Log logger = LogFactory.getLog(JsfViewFactory.class); private static SpringJavascriptAjaxHandler springJsAjaxHandler = new SpringJavascriptAjaxHandler(); private final Expression viewIdExpression; private final Lifecycle lifecycle; public JsfViewFactory(Expression viewIdExpression, Lifecycle lifecycle) { this.viewIdExpression = viewIdExpression; this.lifecycle = lifecycle; } /** * Executes the RESTORE_VIEW phase of the JSF lifecycle at the beginning of a request, and creates the next view to * be rendered in the case of an executing transition. */ public View getView(RequestContext context) { FacesContext facesContext = FlowFacesContext.newInstance(context, lifecycle); try { if (!facesContext.getRenderResponse()) { // only publish a RESTORE_VIEW event if this is the first phase of the lifecycle // this won't be true when this method is called after a transition from one view-state to another JsfUtils.notifyBeforeListeners(PhaseId.RESTORE_VIEW, lifecycle, facesContext); } ViewHandler viewHandler = facesContext.getApplication().getViewHandler(); if (JsfUtils.isAtLeastJsf12() && !JsfUtils.isPortlet(facesContext)) { viewHandler.initView(facesContext); } JsfView view; String viewName = (String) viewIdExpression.getValue(context); if (viewAlreadySet(facesContext, viewName)) { if (logger.isDebugEnabled()) { logger.debug("Existing view root found with id '" + facesContext.getViewRoot().getId() + "'"); } UIViewRoot viewRoot = facesContext.getViewRoot(); viewRoot.setLocale(context.getExternalContext().getLocale()); processTree(facesContext, viewRoot); view = createJsfView(facesContext.getViewRoot(), lifecycle, context); } else { if (context.inViewState()) { UIViewRoot viewRoot = viewHandler.restoreView(facesContext, viewName); if (viewRoot != null) { if (logger.isDebugEnabled()) { logger.debug("UIViewRoot restored for '" + viewName + "'"); } facesContext.setViewRoot(viewRoot); processTree(facesContext, viewRoot); view = createJsfView(viewRoot, lifecycle, context); } else { if (logger.isDebugEnabled()) { logger.debug("Creating UIViewRoot from '" + viewName + "'"); } viewRoot = viewHandler.createView(facesContext, viewName); facesContext.setViewRoot(viewRoot); view = createJsfView(viewRoot, lifecycle, context); } } else { if (logger.isDebugEnabled()) { logger.debug("Creating transient UIViewRoot from '" + viewName + "'"); } UIViewRoot viewRoot = viewHandler.createView(facesContext, viewName); viewRoot.setTransient(true); facesContext.setViewRoot(viewRoot); view = createJsfView(viewRoot, lifecycle, context); } } if (!facesContext.getRenderResponse()) { JsfUtils.notifyAfterListeners(PhaseId.RESTORE_VIEW, lifecycle, facesContext); } return view; } finally { facesContext.release(); } } private boolean viewAlreadySet(FacesContext facesContext, String viewName) { if (facesContext.getViewRoot() != null && facesContext.getViewRoot().getViewId().equals(viewName)) { // the corner case where a before RESTORE_VIEW PhaseListener has handled setting the UIViewRoot return true; } else { return false; } } private JsfView createJsfView(UIViewRoot root, Lifecycle lifecycle, RequestContext context) { if (isSpringJavascriptAjaxRequest(context.getExternalContext())) { return new JsfView(new AjaxViewRoot(root), lifecycle, context); } else { return new JsfView(root, lifecycle, context); } } private boolean isSpringJavascriptAjaxRequest(ExternalContext context) { // consider factoring out into external context if (context.getNativeContext() instanceof ServletContext) { return springJsAjaxHandler.isAjaxRequest((HttpServletRequest) context.getNativeRequest(), (HttpServletResponse) context.getNativeResponse()); } else { return false; } } /** * Walk the component tree to perform any required per-component operations. * * @param context * @param component */ private void processTree(FacesContext context, UIComponent component) { // Only resetting the valid flag in the RESTORE_VIEW phase, // not during RENDER_RESPONSE if (!context.getRenderResponse() && component instanceof EditableValueHolder) { ((EditableValueHolder) component).setValid(true); } ValueBinding binding = component.getValueBinding("binding"); if (binding != null) { binding.setValue(context, component); } Iterator it = component.getFacetsAndChildren(); while (it.hasNext()) { UIComponent child = (UIComponent) it.next(); processTree(context, child); } } } ��������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000202�00000000000�011557� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-faces/src/main/java/org/springframework/faces/webflow/JsfUtils.java�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-faces/src/main/java/org/springframewor0000644�0000000�0000000�00000005430�11360615636�027734� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* * Copyright 2004-2008 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.springframework.faces.webflow; import javax.faces.context.FacesContext; import javax.faces.event.PhaseEvent; import javax.faces.event.PhaseId; import javax.faces.event.PhaseListener; import javax.faces.lifecycle.Lifecycle; import org.springframework.util.ReflectionUtils; import org.springframework.webflow.execution.RequestContextHolder; /** * Common support for the JSF integration with Spring Web Flow. * * @author Jeremy Grelle */ public class JsfUtils { private static final boolean JSF_12; private static final String JSF_12_METHOD = "getELContext"; static { if (ReflectionUtils.findMethod(FacesContext.class, JSF_12_METHOD) != null) { JSF_12 = true; } else { JSF_12 = false; } } public static void notifyAfterListeners(PhaseId phaseId, Lifecycle lifecycle, FacesContext context) { PhaseEvent afterPhaseEvent = new PhaseEvent(context, phaseId, lifecycle); for (int i = 0; i < lifecycle.getPhaseListeners().length; i++) { PhaseListener listener = lifecycle.getPhaseListeners()[i]; if (listener.getPhaseId() == phaseId || listener.getPhaseId() == PhaseId.ANY_PHASE) { listener.afterPhase(afterPhaseEvent); } } } public static void notifyBeforeListeners(PhaseId phaseId, Lifecycle lifecycle, FacesContext context) { PhaseEvent beforePhaseEvent = new PhaseEvent(context, phaseId, lifecycle); for (int i = 0; i < lifecycle.getPhaseListeners().length; i++) { PhaseListener listener = lifecycle.getPhaseListeners()[i]; if (listener.getPhaseId() == phaseId || listener.getPhaseId() == PhaseId.ANY_PHASE) { listener.beforePhase(beforePhaseEvent); } } } public static boolean isFlowRequest() { if (RequestContextHolder.getRequestContext() != null) { return true; } else { return false; } } public static boolean isAsynchronousFlowRequest() { if (isFlowRequest() && RequestContextHolder.getRequestContext().getExternalContext().isAjaxRequest()) { return true; } else { return false; } } public static boolean isAtLeastJsf12() { return JSF_12; } public static boolean isPortlet(FacesContext context) { return context.getExternalContext().getContext().getClass().getName().indexOf("Portlet") != -1; } } ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000212�00000000000�011560� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-faces/src/main/java/org/springframework/faces/webflow/FlowFacesContext.java���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-faces/src/main/java/org/springframewor0000644�0000000�0000000�00000015544�11360615646�027744� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* * Copyright 2004-2008 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.springframework.faces.webflow; import java.lang.reflect.Method; import java.util.Iterator; import javax.el.ELContext; import javax.faces.FactoryFinder; import javax.faces.application.Application; import javax.faces.application.FacesMessage; import javax.faces.component.UIViewRoot; import javax.faces.context.ExternalContext; import javax.faces.context.FacesContext; import javax.faces.context.FacesContextFactory; import javax.faces.context.ResponseStream; import javax.faces.context.ResponseWriter; import javax.faces.lifecycle.Lifecycle; import javax.faces.render.RenderKit; import org.springframework.context.MessageSource; import org.springframework.util.ClassUtils; import org.springframework.webflow.execution.RequestContext; /** * Custom {@link FacesContext} implementation that delegates all standard FacesContext messaging functionality to a * Spring {@link MessageSource} made accessible as part of the current Web Flow request. Additionally, it manages the * {@code renderResponse} flag in flash scope so that the execution of the JSF {@link Lifecycle} may span multiple * requests in the case of the POST+REDIRECT+GET pattern being enabled. * * @author Jeremy Grelle * @author Phil Webb */ public class FlowFacesContext extends FacesContext { /** * The key for storing the renderResponse flag */ static final String RENDER_RESPONSE_KEY = "flowRenderResponse"; /** * The key for storing the renderResponse flag */ private RequestContext context; private FlowFacesContextMessageDelegate messageDelegate; /** * The base FacesContext delegate */ private FacesContext delegate; public static FlowFacesContext newInstance(RequestContext context, Lifecycle lifecycle) { FacesContextFactory facesContextFactory = (FacesContextFactory) FactoryFinder .getFactory(FactoryFinder.FACES_CONTEXT_FACTORY); FacesContext defaultFacesContext = facesContextFactory.getFacesContext(context.getExternalContext() .getNativeContext(), context.getExternalContext().getNativeRequest(), context.getExternalContext() .getNativeResponse(), lifecycle); return new FlowFacesContext(context, defaultFacesContext); } public FlowFacesContext(RequestContext context, FacesContext delegate) { this.context = context; this.delegate = delegate; this.messageDelegate = new FlowFacesContextMessageDelegate(context); setCurrentInstance(this); } /** * Translates a FacesMessage to an SWF Message and adds it to the current MessageContext */ public void addMessage(String clientId, FacesMessage message) { messageDelegate.addMessage(clientId, message); } /** * Returns an Iterator for all component clientId's for which messages have been added. */ public Iterator getClientIdsWithMessages() { return messageDelegate.getClientIdsWithMessages(); } public ELContext getELContext() { Method delegateMethod = ClassUtils.getMethodIfAvailable(delegate.getClass(), "getELContext", null); if (delegateMethod != null) { try { ELContext context = (ELContext) delegateMethod.invoke(delegate, null); context.putContext(FacesContext.class, this); return context; } catch (Exception e) { return null; } } else { return null; } } /** * Return the maximum severity level recorded on any FacesMessages that has been queued, whether or not they are * associated with any specific UIComponent. If no such messages have been queued, return null. */ public FacesMessage.Severity getMaximumSeverity() { return messageDelegate.getMaximumSeverity(); } /** * Returns an Iterator for all Messages in the current MessageContext that does translation to FacesMessages. */ public Iterator getMessages() { return messageDelegate.getMessages(); } /** * Returns an Iterator for all Messages with the given clientId in the current MessageContext that does translation * to FacesMessages. */ public Iterator getMessages(String clientId) { return messageDelegate.getMessages(clientId); } public boolean getRenderResponse() { Boolean renderResponse = context.getFlashScope().getBoolean(RENDER_RESPONSE_KEY); if (renderResponse == null) { return false; } return renderResponse.booleanValue(); } public boolean getResponseComplete() { return context.getExternalContext().isResponseComplete(); } public void renderResponse() { // stored in flash scope to survive a redirect when transitioning from one view to another context.getFlashScope().put(RENDER_RESPONSE_KEY, Boolean.TRUE); } public void responseComplete() { context.getExternalContext().recordResponseComplete(); } // ------------------ Pass-through delegate methods ----------------------// public Application getApplication() { return delegate.getApplication(); } public ExternalContext getExternalContext() { return new FlowExternalContext(delegate.getExternalContext()); } public RenderKit getRenderKit() { return delegate.getRenderKit(); } public ResponseStream getResponseStream() { return delegate.getResponseStream(); } public ResponseWriter getResponseWriter() { return delegate.getResponseWriter(); } public UIViewRoot getViewRoot() { return delegate.getViewRoot(); } public void release() { delegate.release(); setCurrentInstance(null); } public void setResponseStream(ResponseStream responseStream) { delegate.setResponseStream(responseStream); } public void setResponseWriter(ResponseWriter responseWriter) { delegate.setResponseWriter(responseWriter); } public void setViewRoot(UIViewRoot root) { delegate.setViewRoot(root); } protected FacesContext getDelegate() { return delegate; } // ------------------ Private helper methods ----------------------// private class FlowExternalContext extends ExternalContextWrapper { private static final String CUSTOM_RESPONSE = "customResponse"; public FlowExternalContext(ExternalContext delegate) { super(delegate); } public Object getResponse() { if (context.getRequestScope().contains(CUSTOM_RESPONSE)) { return context.getRequestScope().get(CUSTOM_RESPONSE); } return delegate.getResponse(); } /** * Store the native response object to be used for the duration of the Faces Request */ public void setResponse(Object response) { context.getRequestScope().put(CUSTOM_RESPONSE, response); delegate.setResponse(response); } } } ������������������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000201�00000000000�011556� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-faces/src/main/java/org/springframework/faces/webflow/JsfView.java������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-faces/src/main/java/org/springframewor0000644�0000000�0000000�00000011512�11360615642�027727� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* * Copyright 2004-2008 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.springframework.faces.webflow; import java.io.IOException; import java.io.Serializable; import javax.faces.component.UIViewRoot; import javax.faces.context.FacesContext; import javax.faces.event.PhaseId; import javax.faces.lifecycle.Lifecycle; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.springframework.faces.ui.AjaxViewRoot; import org.springframework.webflow.execution.Event; import org.springframework.webflow.execution.RequestContext; import org.springframework.webflow.execution.View; /** * JSF-specific {@link View} implementation. * * @author Jeremy Grelle */ public class JsfView implements View { private static final Log logger = LogFactory.getLog(JsfView.class); public static final String EVENT_KEY = "org.springframework.webflow.FacesEvent"; private UIViewRoot viewRoot; private Lifecycle facesLifecycle; private RequestContext requestContext; private String viewId; /** * Creates a new JSF view. * @param viewRoot the view root * @param facesLifecycle the flow faces lifecycle * @param context the current flow request */ public JsfView(UIViewRoot viewRoot, Lifecycle facesLifecycle, RequestContext context) { this.viewRoot = viewRoot; this.viewId = viewRoot.getViewId(); this.facesLifecycle = facesLifecycle; this.requestContext = context; } /** * Returns the underlying view root. * @return the view root */ public UIViewRoot getViewRoot() { return this.viewRoot; } public void setViewRoot(UIViewRoot viewRoot) { this.viewRoot = viewRoot; } /** * Performs the standard duties of the JSF RENDER_RESPONSE phase. */ public void render() throws IOException { FacesContext facesContext = FlowFacesContext.newInstance(requestContext, facesLifecycle); if (facesContext.getResponseComplete()) { return; } facesContext.setViewRoot(viewRoot); try { JsfUtils.notifyBeforeListeners(PhaseId.RENDER_RESPONSE, facesLifecycle, facesContext); logger.debug("Asking view handler to render view"); facesContext.getApplication().getViewHandler().renderView(facesContext, viewRoot); JsfUtils.notifyAfterListeners(PhaseId.RENDER_RESPONSE, facesLifecycle, facesContext); } finally { logger.debug("View rendering complete"); facesContext.responseComplete(); facesContext.release(); } } public boolean userEventQueued() { if (JsfUtils.isAtLeastJsf12()) { return requestContext.getRequestParameters().contains("javax.faces.ViewState"); } else { return requestContext.getRequestParameters().size() > 1; } } /** * Executes postback-processing portions of the standard JSF lifecycle including APPLY_REQUEST_VALUES through * INVOKE_APPLICATION. */ public void processUserEvent() { FacesContext facesContext = FlowFacesContext.newInstance(requestContext, facesLifecycle); facesContext.setViewRoot(viewRoot); try { // Must respect these flags in case user set them during RESTORE_VIEW phase if (!facesContext.getRenderResponse() && !facesContext.getResponseComplete()) { facesLifecycle.execute(facesContext); } } finally { facesContext.release(); } } /** * Updates the component state stored in View scope so that it remains in sync with the updated flow execution * snapshot */ public void saveState() { FacesContext facesContext = FlowFacesContext.newInstance(requestContext, facesLifecycle); if (viewRoot instanceof AjaxViewRoot) { facesContext.setViewRoot(((AjaxViewRoot) viewRoot).getOriginalViewRoot()); } else { facesContext.setViewRoot(viewRoot); } try { facesContext.getApplication().getStateManager().saveSerializedView(facesContext); } finally { facesContext.release(); } } public Serializable getUserEventState() { // Set the temporary UIViewRoot state so that it will be available across the redirect return new ViewRootHolder(getViewRoot()); } public boolean hasFlowEvent() { return requestContext.getExternalContext().getRequestMap().contains(EVENT_KEY); } public Event getFlowEvent() { return new Event(this, getEventId()); } public String toString() { return "[JSFView = '" + viewId + "']"; } // internal helpers private String getEventId() { return (String) requestContext.getExternalContext().getRequestMap().get(EVENT_KEY); } }��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000214�00000000000�011562� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-faces/src/main/java/org/springframework/faces/webflow/FlowActionListener.java�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-faces/src/main/java/org/springframewor0000644�0000000�0000000�00000013346�11360615632�027735� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* * Copyright 2004-2008 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.springframework.faces.webflow; import java.util.ArrayList; import java.util.List; import javax.faces.application.NavigationHandler; import javax.faces.component.ActionSource; import javax.faces.context.FacesContext; import javax.faces.event.AbortProcessingException; import javax.faces.event.ActionEvent; import javax.faces.event.ActionListener; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.springframework.binding.expression.Expression; import org.springframework.util.StringUtils; import org.springframework.validation.MessageCodesResolver; import org.springframework.webflow.definition.TransitionDefinition; import org.springframework.webflow.execution.RequestContext; import org.springframework.webflow.execution.RequestContextHolder; import org.springframework.webflow.execution.View; import org.springframework.webflow.validation.ValidationHelper; import org.springframework.webflow.validation.WebFlowMessageCodesResolver; /** * The default {@link ActionListener} implementation to be used with Web Flow. * * <p> * This implementation bypasses the JSF {@link NavigationHandler} mechanism to instead let the event be handled directly * by Web Flow. * </p> * * <p> * Web Flow's model-level validation will be invoked here after an event has been detected if the event is not an * immediate event. * </p> * * @author Jeremy Grelle */ public class FlowActionListener implements ActionListener { private static final Log logger = LogFactory.getLog(FlowActionListener.class); private static final String MESSAGES_ID = "messages"; private ActionListener delegate; private MessageCodesResolver messageCodesResolver = new WebFlowMessageCodesResolver(); public FlowActionListener(ActionListener delegate) { this.delegate = delegate; } public void processAction(ActionEvent actionEvent) throws AbortProcessingException { if (!JsfUtils.isFlowRequest()) { delegate.processAction(actionEvent); return; } FacesContext context = FacesContext.getCurrentInstance(); ActionSource source = (ActionSource) actionEvent.getSource(); String eventId = null; if (source.getAction() != null) { if (logger.isDebugEnabled()) { logger.debug("Invoking action " + source.getAction()); } eventId = (String) source.getAction().invoke(context, null); } if (StringUtils.hasText(eventId)) { if (logger.isDebugEnabled()) { logger.debug("Event '" + eventId + "' detected"); } if (source.isImmediate() || validateModel(context, eventId)) { context.getExternalContext().getRequestMap().put(JsfView.EVENT_KEY, eventId); } } else { logger.debug("No action event detected"); context.getExternalContext().getRequestMap().remove(JsfView.EVENT_KEY); } // tells JSF lifecycle that rendering should now happen and any subsequent phases should be skipped // required in the case of this action listener firing immediately (immediate=true) before validation context.renderResponse(); } // internal helpers private boolean validateModel(FacesContext facesContext, String eventId) { boolean isValid = true; RequestContext requestContext = RequestContextHolder.getRequestContext(); Object model = getModelObject(requestContext); if (shouldValidate(requestContext, model, eventId)) { validate(requestContext, model, eventId); if (requestContext.getMessageContext().hasErrorMessages()) { isValid = false; if (requestContext.getExternalContext().isAjaxRequest()) { List fragments = new ArrayList(); String formId = getModelExpression(requestContext).getExpressionString(); if (facesContext.getViewRoot().findComponent(formId) != null) { fragments.add(formId); } if (facesContext.getViewRoot().findComponent(MESSAGES_ID) != null) { fragments.add(MESSAGES_ID); } if (fragments.size() > 0) { String[] fragmentsArray = new String[fragments.size()]; for (int i = 0; i < fragments.size(); i++) { fragmentsArray[i] = (String) fragments.get(i); } requestContext.getFlashScope().put(View.RENDER_FRAGMENTS_ATTRIBUTE, fragmentsArray); } } } } return isValid; } private Object getModelObject(RequestContext requestContext) { Expression model = getModelExpression(requestContext); if (model != null) { return model.getValue(requestContext); } else { return null; } } private Expression getModelExpression(RequestContext requestContext) { return (Expression) requestContext.getCurrentState().getAttributes().get("model"); } private boolean shouldValidate(RequestContext requestContext, Object model, String eventId) { if (model == null) { return false; } TransitionDefinition transition = requestContext.getMatchingTransition(eventId); if (transition != null) { if (transition.getAttributes().contains("validate")) { return transition.getAttributes().getBoolean("validate").booleanValue(); } } return true; } private void validate(RequestContext requestContext, Object model, String eventId) { new ValidationHelper(model, requestContext, eventId, getModelExpression(requestContext).getExpressionString(), null, messageCodesResolver, null).validate(); } } ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000216�00000000000�011564� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-faces/src/main/java/org/springframework/faces/webflow/FlowViewStateManager.java�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-faces/src/main/java/org/springframewor0000644�0000000�0000000�00000013076�11360615640�027734� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* * Copyright 2004-2008 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.springframework.faces.webflow; import java.io.IOException; import javax.faces.application.StateManager; import javax.faces.component.UIViewRoot; import javax.faces.context.FacesContext; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.springframework.webflow.execution.RequestContext; import org.springframework.webflow.execution.RequestContextHolder; /** * Custom {@link StateManager} that manages the JSF component state in web flow's view scope. * * @author Jeremy Grelle */ public class FlowViewStateManager extends StateManager { private static final Log logger = LogFactory.getLog(FlowViewStateManager.class); private static final String SERIALIZED_VIEW_STATE = "flowSerializedViewState"; private StateManager delegate; public FlowViewStateManager(StateManager delegate) { this.delegate = delegate; } protected Object getComponentStateToSave(FacesContext context) { if (!JsfUtils.isFlowRequest()) { return super.getComponentStateToSave(context); } UIViewRoot viewRoot = context.getViewRoot(); if (viewRoot.isTransient()) { return null; } else { return viewRoot.processSaveState(context); } } protected Object getTreeStructureToSave(FacesContext context) { if (!JsfUtils.isFlowRequest()) { return super.getTreeStructureToSave(context); } UIViewRoot viewRoot = context.getViewRoot(); if (viewRoot.isTransient()) { return null; } else { return new TreeStructureManager().buildTreeStructureToSave(viewRoot); } } protected void restoreComponentState(FacesContext context, UIViewRoot viewRoot, String renderKitId) { if (!JsfUtils.isFlowRequest()) { super.restoreComponentState(context, viewRoot, renderKitId); return; } RequestContext requestContext = RequestContextHolder.getRequestContext(); FlowSerializedView view = (FlowSerializedView) requestContext.getViewScope().get(SERIALIZED_VIEW_STATE); viewRoot.processRestoreState(context, view.getComponentState()); logger.debug("UIViewRoot component state restored"); } protected UIViewRoot restoreTreeStructure(FacesContext context, String viewId, String renderKitId) { if (!JsfUtils.isFlowRequest()) { return super.restoreTreeStructure(context, viewId, renderKitId); } RequestContext requestContext = RequestContextHolder.getRequestContext(); FlowSerializedView view = (FlowSerializedView) requestContext.getViewScope().get(SERIALIZED_VIEW_STATE); if (view == null || !view.getViewId().equals(viewId)) { logger.debug("No matching view in view scope"); return null; } if (logger.isDebugEnabled()) { logger.debug("Restoring view root with id '" + viewId + "' from view scope"); } if (view.getTreeStructure() == null) { logger.debug("Tree structure is null indicating transient UIViewRoot; returning null"); return null; } UIViewRoot viewRoot = new TreeStructureManager().restoreTreeStructure(view.getTreeStructure()); logger.debug("UIViewRoot structure restored"); return viewRoot; } public void writeState(FacesContext context, javax.faces.application.StateManager.SerializedView state) throws IOException { // Ensures that javax.faces.ViewState hidden field always gets written - needed for third-party component // compatability delegate.writeState(context, state); } public boolean isSavingStateInClient(FacesContext context) { if (!JsfUtils.isFlowRequest()) { return delegate.isSavingStateInClient(context); } else { return false; } } /** * JSF 1.1 version of state saving */ public javax.faces.application.StateManager.SerializedView saveSerializedView(FacesContext context) { if (context.getViewRoot().isTransient()) { return null; } if (!JsfUtils.isFlowRequest()) { return delegate.saveSerializedView(context); } FlowSerializedView view = (FlowSerializedView) saveView(context); return new javax.faces.application.StateManager.SerializedView(view.getTreeStructure(), view .getComponentState()); } /** * JSF 1.2 version of state saving */ public Object saveView(FacesContext context) { if (context.getViewRoot().isTransient()) { return null; } if (!JsfUtils.isFlowRequest()) { return delegate.saveView(context); } RequestContext requestContext = RequestContextHolder.getRequestContext(); if (logger.isDebugEnabled()) { logger.debug("Saving view root '" + context.getViewRoot().getViewId() + "' in view scope"); } FlowSerializedView view = new FlowSerializedView(context.getViewRoot().getViewId(), getTreeStructureToSave(context), getComponentStateToSave(context)); requestContext.getViewScope().put(SERIALIZED_VIEW_STATE, view); return view; } public UIViewRoot restoreView(FacesContext context, String viewId, String renderKitId) { if (!JsfUtils.isFlowRequest()) { return delegate.restoreView(context, viewId, renderKitId); } UIViewRoot viewRoot = restoreTreeStructure(context, viewId, renderKitId); if (viewRoot != null) { restoreComponentState(context, viewRoot, renderKitId); } return viewRoot; } } ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000237�00000000000�011567� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-faces/src/main/java/org/springframework/faces/webflow/JsfManagedBeanAwareELExpressionParser.java������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-faces/src/main/java/org/springframewor0000644�0000000�0000000�00000006215�11360615640�027731� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* * Copyright 2004-2008 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.springframework.faces.webflow; import java.util.ArrayList; import java.util.List; import javax.el.ELContext; import javax.el.ELResolver; import javax.el.ExpressionFactory; import javax.el.FunctionMapper; import javax.el.VariableMapper; import org.springframework.binding.expression.el.DefaultELResolver; import org.springframework.binding.expression.el.ELContextFactory; import org.springframework.binding.expression.el.ELExpressionParser; import org.springframework.webflow.execution.RequestContext; import org.springframework.webflow.expression.el.ActionMethodELResolver; import org.springframework.webflow.expression.el.FlowResourceELResolver; import org.springframework.webflow.expression.el.ImplicitFlowVariableELResolver; import org.springframework.webflow.expression.el.RequestContextELResolver; import org.springframework.webflow.expression.el.ScopeSearchingELResolver; import org.springframework.webflow.expression.el.SpringBeanWebFlowELResolver; /** * A JSF-specific ExpressionParser that allows beans managed by either JSF, Spring, or Web Flow to be referenced in * expressions in the FlowDefinition. * * @author Jeremy Grelle */ public class JsfManagedBeanAwareELExpressionParser extends ELExpressionParser { public JsfManagedBeanAwareELExpressionParser(ExpressionFactory expressionFactory) { super(expressionFactory); putContextFactory(RequestContext.class, new RequestContextELContextFactory()); } private static class RequestContextELContextFactory implements ELContextFactory { public ELContext getELContext(Object target) { RequestContext context = (RequestContext) target; List customResolvers = new ArrayList(); customResolvers.add(new RequestContextELResolver(context)); customResolvers.add(new FlowResourceELResolver(context)); customResolvers.add(new ImplicitFlowVariableELResolver(context)); customResolvers.add(new ScopeSearchingELResolver(context)); customResolvers.add(new SpringBeanWebFlowELResolver(context)); customResolvers.add(new ActionMethodELResolver()); customResolvers.add(new JsfManagedBeanResolver()); ELResolver resolver = new DefaultELResolver(customResolvers); return new WebFlowELContext(resolver); } } private static class WebFlowELContext extends ELContext { private ELResolver resolver; public WebFlowELContext(ELResolver resolver) { this.resolver = resolver; } public ELResolver getELResolver() { return resolver; } public FunctionMapper getFunctionMapper() { return null; } public VariableMapper getVariableMapper() { return null; } } } �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000201�00000000000�011556� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-faces/src/main/java/org/springframework/faces/webflow/package.html������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-faces/src/main/java/org/springframewor0000644�0000000�0000000�00000000157�11360615632�027731� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������<html> <body> <p>The integration layer between Spring Web Flow and Java Server Faces (JSF).</p> </body> </html>�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000220�00000000000�011557� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-faces/src/main/java/org/springframework/faces/webflow/ExternalContextWrapper.java���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-faces/src/main/java/org/springframewor0000644�0000000�0000000�00000010170�11360615632�027725� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������package org.springframework.faces.webflow; import java.io.IOException; import java.io.InputStream; import java.io.UnsupportedEncodingException; import java.net.MalformedURLException; import java.net.URL; import java.security.Principal; import java.util.Iterator; import java.util.Locale; import java.util.Map; import java.util.Set; import javax.faces.context.ExternalContext; class ExternalContextWrapper extends ExternalContext { protected ExternalContext delegate; public ExternalContextWrapper(ExternalContext delegate) { this.delegate = delegate; } public void dispatch(String path) throws IOException { delegate.dispatch(path); } public String encodeActionURL(String url) { return delegate.encodeActionURL(url); } public String encodeNamespace(String name) { return delegate.encodeNamespace(name); } public String encodeResourceURL(String url) { return delegate.encodeResourceURL(url); } public Map getApplicationMap() { return delegate.getApplicationMap(); } public String getAuthType() { return delegate.getAuthType(); } public Object getContext() { return delegate.getContext(); } public String getInitParameter(String name) { return delegate.getInitParameter(name); } public Map getInitParameterMap() { return delegate.getInitParameterMap(); } public String getRemoteUser() { return delegate.getRemoteUser(); } public Object getRequest() { return delegate.getRequest(); } public String getRequestCharacterEncoding() { return delegate.getRequestCharacterEncoding(); } public String getRequestContentType() { return delegate.getRequestContentType(); } public String getRequestContextPath() { return delegate.getRequestContextPath(); } public Map getRequestCookieMap() { return delegate.getRequestCookieMap(); } public Map getRequestHeaderMap() { return delegate.getRequestHeaderMap(); } public Map getRequestHeaderValuesMap() { return delegate.getRequestHeaderValuesMap(); } public Locale getRequestLocale() { return delegate.getRequestLocale(); } public Iterator getRequestLocales() { return delegate.getRequestLocales(); } public Map getRequestMap() { return delegate.getRequestMap(); } public Map getRequestParameterMap() { return delegate.getRequestParameterMap(); } public Iterator getRequestParameterNames() { return delegate.getRequestParameterNames(); } public Map getRequestParameterValuesMap() { return delegate.getRequestParameterValuesMap(); } public String getRequestPathInfo() { return delegate.getRequestPathInfo(); } public String getRequestServletPath() { return delegate.getRequestServletPath(); } public URL getResource(String path) throws MalformedURLException { return delegate.getResource(path); } public InputStream getResourceAsStream(String path) { return delegate.getResourceAsStream(path); } public Set getResourcePaths(String path) { return delegate.getResourcePaths(path); } public Object getResponse() { return delegate.getResponse(); } public String getResponseCharacterEncoding() { return delegate.getResponseCharacterEncoding(); } public String getResponseContentType() { return delegate.getResponseContentType(); } public Object getSession(boolean create) { return delegate.getSession(create); } public Map getSessionMap() { return delegate.getSessionMap(); } public Principal getUserPrincipal() { return delegate.getUserPrincipal(); } public boolean isUserInRole(String role) { return delegate.isUserInRole(role); } public void log(String message, Throwable exception) { delegate.log(message, exception); } public void log(String message) { delegate.log(message); } public void redirect(String url) throws IOException { delegate.redirect(url); } public void setRequest(Object request) { delegate.setRequest(request); } public void setRequestCharacterEncoding(String encoding) throws UnsupportedEncodingException { delegate.setRequestCharacterEncoding(encoding); } public void setResponse(Object response) { delegate.setResponse(response); } public void setResponseCharacterEncoding(String encoding) { delegate.setResponseCharacterEncoding(encoding); } } ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000231�00000000000�011561� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-faces/src/main/java/org/springframework/faces/webflow/FlowFacesContextMessageDelegate.java������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-faces/src/main/java/org/springframewor0000644�0000000�0000000�00000030522�11360615640�027727� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������package org.springframework.faces.webflow; import java.io.IOException; import java.io.ObjectInputStream; import java.io.ObjectOutputStream; import java.util.ArrayList; import java.util.HashMap; import java.util.HashSet; import java.util.Iterator; import java.util.List; import java.util.Locale; import java.util.Map; import java.util.Set; import javax.faces.application.FacesMessage; import javax.faces.context.FacesContext; import org.springframework.binding.message.Message; import org.springframework.binding.message.MessageCriteria; import org.springframework.binding.message.MessageResolver; import org.springframework.binding.message.Severity; import org.springframework.context.MessageSource; import org.springframework.core.style.ToStringCreator; import org.springframework.util.StringUtils; import org.springframework.webflow.execution.RequestContext; /** * Helper delegate class for use with the {@link FlowFacesContext} that handles all faces message methods. * * @author Jeremy Grelle * @author Phil Webb */ public class FlowFacesContextMessageDelegate { private RequestContext context; /** * Key for identifying summary messages */ static final String SUMMARY_MESSAGE_KEY = "_summary"; /** * Key for identifying detail messages */ static final String DETAIL_MESSAGE_KEY = "_detail"; /** * Mappings between {@link FacesMessage} and {@link Severity}. */ private static final Map FACESSEVERITY_TO_SPRINGSEVERITY; static { FACESSEVERITY_TO_SPRINGSEVERITY = new HashMap(); FACESSEVERITY_TO_SPRINGSEVERITY.put(FacesMessage.SEVERITY_INFO, Severity.INFO); FACESSEVERITY_TO_SPRINGSEVERITY.put(FacesMessage.SEVERITY_WARN, Severity.WARNING); FACESSEVERITY_TO_SPRINGSEVERITY.put(FacesMessage.SEVERITY_ERROR, Severity.ERROR); } public FlowFacesContextMessageDelegate(RequestContext context) { super(); this.context = context; } /** * @see FlowFacesContext#addMessage(String, FacesMessage) */ public void addMessage(String clientId, FacesMessage message) { String source = null; if (StringUtils.hasText(clientId)) { source = clientId; } context.getMessageContext().addMessage(new FlowFacesMessageAdapter(source, SUMMARY_MESSAGE_KEY, message)); context.getMessageContext().addMessage(new FlowFacesMessageAdapter(source, DETAIL_MESSAGE_KEY, message)); } /** * @see FlowFacesContext#getClientIdsWithMessages */ public Iterator getClientIdsWithMessages() { return new ClientIdIterator(); } /** * @see FlowFacesContext#getMaximumSeverity() */ public FacesMessage.Severity getMaximumSeverity() { if (context.getMessageContext().getAllMessages().length == 0) { return null; } FacesMessage.Severity max = FacesMessage.SEVERITY_INFO; Iterator i = getMessages(); while (i.hasNext()) { FacesMessage message = (FacesMessage) i.next(); if (message.getSeverity().getOrdinal() > max.getOrdinal()) { max = message.getSeverity(); } if (max.getOrdinal() == FacesMessage.SEVERITY_FATAL.getOrdinal()) break; } return max; } /** * @see FlowFacesContext#getMessages() */ public Iterator getMessages() { return new FacesMessageIterator(); } /** * @see FlowFacesContext#getMessages(String) */ public Iterator getMessages(String clientId) { return new FacesMessageIterator(clientId); } // ------------------ Private helper methods ----------------------// private FacesMessage toFacesMessage(Message summaryMessage, Message detailMessage) { // If we can return the actual message instance. if (summaryMessage instanceof FlowFacesMessageAdapter) { return ((FlowFacesMessageAdapter) summaryMessage).getFacesMessage(); } if (detailMessage instanceof FlowFacesMessageAdapter) { return ((FlowFacesMessageAdapter) detailMessage).getFacesMessage(); } // If we have not got an actual instance adapt the message if (summaryMessage.getSeverity() == Severity.INFO) { return new FacesMessage(FacesMessage.SEVERITY_INFO, summaryMessage.getText(), detailMessage.getText()); } else if (summaryMessage.getSeverity() == Severity.WARNING) { return new FacesMessage(FacesMessage.SEVERITY_WARN, summaryMessage.getText(), detailMessage.getText()); } else if (summaryMessage.getSeverity() == Severity.ERROR) { return new FacesMessage(FacesMessage.SEVERITY_ERROR, summaryMessage.getText(), detailMessage.getText()); } else { return new FacesMessage(FacesMessage.SEVERITY_FATAL, summaryMessage.getText(), detailMessage.getText()); } } private class FacesMessageIterator implements Iterator { private Object[] messages; private int currentIndex = -1; protected FacesMessageIterator() { Message[] summaryMessages = context.getMessageContext().getMessagesByCriteria(new SummaryMessageCriteria()); Message[] detailMessages = context.getMessageContext().getMessagesByCriteria(new DetailMessageCriteria()); Message[] userMessages = context.getMessageContext().getMessagesByCriteria(new UserMessageCriteria()); List translatedMessages = new ArrayList(); for (int i = 0; i < summaryMessages.length; i++) { translatedMessages.add(toFacesMessage(summaryMessages[i], detailMessages[i])); } for (int z = 0; z < userMessages.length; z++) { translatedMessages.add(toFacesMessage(userMessages[z], userMessages[z])); } this.messages = translatedMessages.toArray(); } protected FacesMessageIterator(String clientId) { Message[] summaryMessages = context.getMessageContext().getMessagesBySource(clientId + SUMMARY_MESSAGE_KEY); Message[] detailMessages = context.getMessageContext().getMessagesBySource(clientId + DETAIL_MESSAGE_KEY); Message[] userMessages = context.getMessageContext().getMessagesBySource(clientId); List translatedMessages = new ArrayList(); for (int i = 0; i < summaryMessages.length; i++) { translatedMessages.add(toFacesMessage(summaryMessages[i], detailMessages[i])); } for (int z = 0; z < userMessages.length; z++) { translatedMessages.add(toFacesMessage(userMessages[z], userMessages[z])); } this.messages = translatedMessages.toArray(); } public boolean hasNext() { return messages.length > currentIndex + 1; } public Object next() { currentIndex++; return messages[currentIndex]; } public void remove() { throw new UnsupportedOperationException("Messages cannot be removed through this iterator."); } } private class ClientIdIterator implements Iterator { private Message[] messages; int currentIndex = -1; protected ClientIdIterator() { this.messages = context.getMessageContext().getMessagesByCriteria(new IdentifiedMessageCriteria()); } public boolean hasNext() { return messages.length > currentIndex + 1; } public Object next() { Message next = messages[++currentIndex]; if (next.getSource() == null) { return null; } else if (next.getSource().toString().endsWith(SUMMARY_MESSAGE_KEY)) { return next.getSource().toString().replaceAll(SUMMARY_MESSAGE_KEY, ""); } else { return next.getSource().toString(); } } public void remove() { throw new UnsupportedOperationException("Messages cannot be removed through this iterator."); } } private class SummaryMessageCriteria implements MessageCriteria { public boolean test(Message message) { if (message.getSource() == null) { return false; } return message.getSource().toString().endsWith(SUMMARY_MESSAGE_KEY); } } private class DetailMessageCriteria implements MessageCriteria { public boolean test(Message message) { if (message.getSource() == null) { return false; } return message.getSource().toString().endsWith(DETAIL_MESSAGE_KEY); } } private class UserMessageCriteria implements MessageCriteria { public boolean test(Message message) { if (message.getSource() == null) { return true; } return !message.getSource().toString().endsWith(SUMMARY_MESSAGE_KEY) && !message.getSource().toString().endsWith(DETAIL_MESSAGE_KEY); } } private class IdentifiedMessageCriteria implements MessageCriteria { String nullSummaryId = null + SUMMARY_MESSAGE_KEY; private Set identifiedMessageSources = new HashSet(); // From getClientIdsWithMessages docs: If any messages have been queued that were not associated with // any specific client identifier, a null value will be included in the iterated values. public boolean test(Message message) { if (message.getSource() != null && message.getSource().toString().endsWith(DETAIL_MESSAGE_KEY)) { return false; } else if (message.getSource() == null || message.getSource().equals("") || message.getSource().equals(nullSummaryId)) { return identifiedMessageSources.add(null); } return identifiedMessageSources.add(message.getSource()); } } /** * Adapter class to convert a {@link FacesMessage} to a Spring {@link Message}. This adapter is required to allow * <tt>FacesMessages</tt> to be registered with spring while still retaining their mutable nature. It is not * uncommon for <tt>FacesMessages</tt> to be changed after they have been added to a <tt>FacesContext</tt>, for * example, from a <tt>PhaseListener</tt>. * <p> * NOTE: Only {@link javax.faces.application.FacesMessage} instances are directly adapted, any subclasses will be * converted to the standard FacesMessage implementation. This is to protect against bugs such as SWF-1073. * * For convenience this class also implements the {@link MessageResolver} interface. */ private static class FlowFacesMessageAdapter extends Message implements MessageResolver { private String key; private String source; private transient FacesMessage facesMessage; public FlowFacesMessageAdapter(String source, String key, FacesMessage message) { super(null, null, null); this.source = source; this.key = key; this.facesMessage = asStandardFacesMessageInstance(message); } // Custom serialization to work around myfaces bug MYFACES-1347 private void writeObject(ObjectOutputStream oos) throws IOException { oos.defaultWriteObject(); oos.writeObject(facesMessage.getSummary()); oos.writeObject(facesMessage.getDetail()); oos.writeInt(facesMessage.getSeverity().getOrdinal()); } private void readObject(ObjectInputStream ois) throws ClassNotFoundException, IOException { ois.defaultReadObject(); String summary = (String) ois.readObject(); String detail = (String) ois.readObject(); int severityOrdinal = ois.readInt(); FacesMessage.Severity severity = FacesMessage.SEVERITY_INFO; for (Iterator iterator = FacesMessage.VALUES.iterator(); iterator.hasNext();) { FacesMessage.Severity value = (FacesMessage.Severity) iterator.next(); if (value.getOrdinal() == severityOrdinal) { severity = value; } } facesMessage = new FacesMessage(severity, summary, detail); } /** * Use standard faces message as required to protect against bugs such as SWF-1073. * * @param message {@link javax.faces.application.FacesMessage} or subclass. * @return {@link javax.faces.application.FacesMessage} instance */ private FacesMessage asStandardFacesMessageInstance(FacesMessage message) { if (FacesMessage.class.equals(message.getClass())) { return message; } return new FacesMessage(message.getSeverity(), message.getSummary(), message.getDetail()); } public Object getSource() { return source + key; } public String getText() { String text = null; if (DETAIL_MESSAGE_KEY.equals(key)) { text = facesMessage.getDetail(); } else if (SUMMARY_MESSAGE_KEY.equals(key)) { text = facesMessage.getSummary(); } else { throw new RuntimeException("Unknown faces message type key"); } if (StringUtils.hasText(text)) { return text; } return ""; } public Severity getSeverity() { Severity severity = null; if (facesMessage.getSeverity() != null) { severity = (Severity) FACESSEVERITY_TO_SPRINGSEVERITY.get(facesMessage.getSeverity()); } return (severity == null ? Severity.INFO : severity); } public String toString() { ToStringCreator rtn = new ToStringCreator(this); rtn.append("severity", getSeverity()); if (FacesContext.getCurrentInstance() != null) { // Only append text if running within a faces context rtn.append("text", getText()); } return rtn.toString(); } public Message resolveMessage(MessageSource messageSource, Locale locale) { return this; } /** * @return The original {@link FacesMessage} adapted by this class. */ public FacesMessage getFacesMessage() { return facesMessage; } } } ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000233�00000000000�011563� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-faces/src/main/java/org/springframework/faces/webflow/SpringBeanWebFlowVariableResolver.java����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-faces/src/main/java/org/springframewor0000644�0000000�0000000�00000003505�11360615632�027731� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* * Copyright 2004-2008 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.springframework.faces.webflow; import javax.faces.context.FacesContext; import javax.faces.el.VariableResolver; import org.springframework.beans.factory.BeanFactory; import org.springframework.beans.factory.support.StaticListableBeanFactory; import org.springframework.web.jsf.SpringBeanVariableResolver; import org.springframework.webflow.execution.RequestContext; import org.springframework.webflow.execution.RequestContextHolder; /** * JSF 1.1 variable resolver for Spring Beans accessible to the flow's local bean factory. * * @author Jeremy Grelle */ public class SpringBeanWebFlowVariableResolver extends SpringBeanVariableResolver { private static final BeanFactory EMPTY_BEAN_FACTORY = new StaticListableBeanFactory(); public SpringBeanWebFlowVariableResolver(VariableResolver originalVariableResolver) { super(originalVariableResolver); } protected BeanFactory getBeanFactory(FacesContext facesContext) { RequestContext requestContext = RequestContextHolder.getRequestContext(); if (requestContext == null) { return EMPTY_BEAN_FACTORY; } BeanFactory beanFactory = requestContext.getActiveFlow().getApplicationContext(); return beanFactory != null ? beanFactory : EMPTY_BEAN_FACTORY; } } �������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000210�00000000000�011556� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-faces/src/main/java/org/springframework/faces/webflow/ViewRootHolder.java�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-faces/src/main/java/org/springframewor0000644�0000000�0000000�00000002011�11360615642�027721� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* * Copyright 2004-2008 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.springframework.faces.webflow; import java.io.Serializable; import javax.faces.component.UIViewRoot; /** * Holder for the JSF UIViewRoot * * @author Scott Andrews */ class ViewRootHolder implements Serializable { private transient UIViewRoot viewRoot; public ViewRootHolder(UIViewRoot viewRoot) { this.viewRoot = viewRoot; } public UIViewRoot getViewRoot() { return viewRoot; } }�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000220�00000000000�011557� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-faces/src/main/java/org/springframework/faces/webflow/JsfManagedBeanResolver.java���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-faces/src/main/java/org/springframewor0000644�0000000�0000000�00000011571�11360615632�027733� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* * Copyright 2004-2008 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.springframework.faces.webflow; import java.util.Iterator; import javax.el.ELContext; import javax.el.ELResolver; import javax.faces.context.FacesContext; import javax.faces.el.ValueBinding; import org.springframework.util.Assert; import org.springframework.webflow.execution.RequestContext; import org.springframework.webflow.execution.RequestContextHolder; /** * ELResolver that checks request, session, and application scopes for existing JSF-managed beans. This allows * traditional JSF-managed beans (defined in faces-config.xml) to be resolved through expressions in a flow definition. * The preferred approach is to instead use Spring to configure such beans, but this is meant to ease migration for * users with existing JSF artifacts. This resolver will delegate to a temporary FacesContext so that JSF managed bean * initialization will be triggered if the bean has not already been initialized by JSF. * * @author Jeremy Grelle */ public class JsfManagedBeanResolver extends ELResolver { public Class getCommonPropertyType(ELContext context, Object base) { return Object.class; } public Iterator getFeatureDescriptors(ELContext context, Object base) { return null; } public Class getType(ELContext context, Object base, Object property) { if (base == null) { Object bean = getFacesBean(property); if (bean != null) { context.setPropertyResolved(true); return bean.getClass(); } } return null; } public Object getValue(ELContext context, Object base, Object property) { if (base == null) { Object bean = getFacesBean(property); if (bean != null) { context.setPropertyResolved(true); return bean; } } return null; } public boolean isReadOnly(ELContext context, Object base, Object property) { if (base == null) { RequestContext requestContext = RequestContextHolder.getRequestContext(); if (requestContext.getExternalContext().getRequestMap().contains(property.toString()) || requestContext.getExternalContext().getSessionMap().contains(property.toString()) || requestContext.getExternalContext().getApplicationMap().contains(property.toString())) { context.setPropertyResolved(true); } } return false; } /** * Sets a bean value if a corresponding key is found in one of the ExternalContext scopes. */ public void setValue(ELContext context, Object base, Object property, Object value) { if (base == null) { RequestContext requestContext = RequestContextHolder.getRequestContext(); if (requestContext.getExternalContext().getRequestMap().contains(property.toString())) { context.setPropertyResolved(true); requestContext.getExternalContext().getRequestMap().put(property.toString(), value); } else if (requestContext.getExternalContext().getSessionMap().contains(property.toString())) { context.setPropertyResolved(true); requestContext.getExternalContext().getSessionMap().put(property.toString(), value); } else if (requestContext.getExternalContext().getApplicationMap().contains(property.toString())) { context.setPropertyResolved(true); requestContext.getExternalContext().getApplicationMap().put(property.toString(), value); } } } /** * This resolver is only meant to be called from the Flow Execution, thus it assumes that the FacesContext will not * be available and creates a temporary one on the fly. * @return The initialized FacesContext. */ private FacesContext getFacesContext() { RequestContext requestContext = RequestContextHolder.getRequestContext(); Assert.notNull(requestContext, "RequestContext cannot be null - This resolver is only intended to be invoked " + "from an active Flow Execution."); FacesContext facesContext = FlowFacesContext.newInstance(requestContext, FlowLifecycle.newInstance()); return facesContext; } /** * Uses a temporary FacesContext to try and resolve a JSF Managed Bean * @param beanName - The name of the bean to resolve. * @return The JSF Managed Bean instance if found. */ private Object getFacesBean(Object beanName) { FacesContext facesContext = getFacesContext(); Object result = null; try { ValueBinding vb = facesContext.getApplication().createValueBinding("#{" + beanName + "}"); result = vb.getValue(facesContext); } finally { facesContext.release(); } return result; } } ���������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000211�00000000000�011557� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-faces/src/main/java/org/springframework/faces/webflow/FlowViewHandler.java����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-faces/src/main/java/org/springframewor0000644�0000000�0000000�00000011146�11360615632�027731� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* * Copyright 2004-2008 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.springframework.faces.webflow; import java.io.IOException; import java.util.Locale; import javax.faces.FacesException; import javax.faces.application.ViewHandler; import javax.faces.component.UIViewRoot; import javax.faces.context.FacesContext; import org.springframework.context.ApplicationContext; import org.springframework.core.io.ContextResource; import org.springframework.core.io.Resource; import org.springframework.webflow.execution.RequestContext; import org.springframework.webflow.execution.RequestContextHolder; import org.springframework.webflow.execution.View; /** * Simple delegating {@link ViewHandler} implementation that provides JSF Form's with the correct FlowExecution URL, * including the current FlowExecutionKey, so that postbacks may be properly intercepted and handled by Web Flow. * * @author Jeremy Grelle */ public class FlowViewHandler extends ViewHandler { private ViewHandler delegate; public FlowViewHandler(ViewHandler delegate) { this.delegate = delegate; } public String getActionURL(FacesContext context, String viewId) { if (JsfUtils.isFlowRequest()) { return RequestContextHolder.getRequestContext().getFlowExecutionUrl(); } else { return delegate.getActionURL(context, viewId); } } public Locale calculateLocale(FacesContext context) { if (JsfUtils.isFlowRequest()) { return RequestContextHolder.getRequestContext().getExternalContext().getLocale(); } else { return delegate.calculateLocale(context); } } public UIViewRoot createView(FacesContext context, String viewId) { String resourcePath = viewId; if (JsfUtils.isFlowRequest()) { resourcePath = resolveResourcePath(RequestContextHolder.getRequestContext(), viewId); } return delegate.createView(context, resourcePath); } public UIViewRoot restoreView(FacesContext context, String viewId) { String resourcePath = viewId; if (JsfUtils.isFlowRequest()) { resourcePath = resolveResourcePath(RequestContextHolder.getRequestContext(), viewId); return restoreFlowView(context, resourcePath); } return delegate.restoreView(context, resourcePath); } // ------------------- Pass-through delegate methods ------------------// public String calculateRenderKitId(FacesContext context) { return delegate.calculateRenderKitId(context); } public String getResourceURL(FacesContext context, String path) { return delegate.getResourceURL(context, path); } public void renderView(FacesContext context, UIViewRoot viewToRender) throws IOException, FacesException { delegate.renderView(context, viewToRender); } public void writeState(FacesContext context) throws IOException { delegate.writeState(context); } // --------------------- Private Helpers ------------------------------// private String resolveResourcePath(RequestContext context, String viewId) { if (viewId.startsWith("/")) { return viewId; } else { ApplicationContext flowContext = context.getActiveFlow().getApplicationContext(); if (flowContext == null) { throw new IllegalStateException("A Flow ApplicationContext is required to resolve Flow View Resources"); } Resource viewResource = flowContext.getResource(viewId); if (!(viewResource instanceof ContextResource)) { throw new IllegalStateException( "A ContextResource is required to get relative view paths within this context; the resource was " + viewResource); } String viewPath = ((ContextResource) viewResource).getPathWithinContext(); if (!viewPath.startsWith("/")) { viewPath = "/" + viewPath; } return viewPath; } } private UIViewRoot restoreFlowView(FacesContext facesContext, String resourcePath) { RequestContext context = RequestContextHolder.getRequestContext(); ViewRootHolder holder = (ViewRootHolder) context.getFlashScope().get(View.USER_EVENT_STATE_ATTRIBUTE); if (holder != null && holder.getViewRoot() != null && holder.getViewRoot().getViewId().equals(resourcePath)) { return holder.getViewRoot(); } else { return delegate.restoreView(facesContext, resourcePath); } } } ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000220�00000000000�011557� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-faces/src/main/java/org/springframework/faces/webflow/FlowApplicationFactory.java���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-faces/src/main/java/org/springframewor0000644�0000000�0000000�00000003264�11360615634�027735� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* * Copyright 2004-2008 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.springframework.faces.webflow; import javax.faces.application.Application; import javax.faces.application.ApplicationFactory; import javax.faces.application.StateManager; /** * Custom {@link ApplicationFactory} that ensures the FlowViewStateManager is the first {@link StateManager} in the * chain so that Web Flow may manage JSF component state when a flow is active. * * @author Jeremy Grelle * */ public class FlowApplicationFactory extends ApplicationFactory { private ApplicationFactory delegate; public FlowApplicationFactory(ApplicationFactory delegate) { this.delegate = delegate; } public Application getApplication() { Application app = delegate.getApplication(); // Ensure that FlowViewStateManager is first in the chain if (app.getStateManager() != null && !(app.getStateManager() instanceof FlowViewStateManager)) { FlowViewStateManager sm = new FlowViewStateManager(app.getStateManager()); app.setStateManager(sm); } return app; } public void setApplication(Application application) { delegate.setApplication(application); } } ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000216�00000000000�011564� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-faces/src/main/java/org/springframework/faces/webflow/FlowPropertyResolver.java�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-faces/src/main/java/org/springframewor0000644�0000000�0000000�00000003344�11360615636�027736� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* * Copyright 2004-2008 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.springframework.faces.webflow; import javax.el.CompositeELResolver; import javax.faces.el.PropertyResolver; import org.springframework.binding.collection.MapAdaptable; import org.springframework.binding.expression.el.MapAdaptableELResolver; import org.springframework.context.MessageSource; import org.springframework.faces.expression.ELDelegatingPropertyResolver; import org.springframework.webflow.expression.el.FlowResourceELResolver; /** * Custom property resolver for resolving properties on web flow specific structures with JSF 1.1 or > by delegating to * web flow's EL resolvers. * * <p> * This resolver handles resolving properties on a {@link MapAdaptable} collection and a flow-local * {@link MessageSource} * </p> * @author Jeremy Grelle */ public class FlowPropertyResolver extends ELDelegatingPropertyResolver { private static final CompositeELResolver composite = new CompositeELResolver(); static { composite.add(new FlowResourceELResolver()); composite.add(new MapAdaptableELResolver()); } public FlowPropertyResolver(PropertyResolver nextResolver) { super(nextResolver, composite); } } ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000216�00000000000�011564� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-faces/src/main/java/org/springframework/faces/webflow/TreeStructureManager.java�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-faces/src/main/java/org/springframewor0000644�0000000�0000000�00000013414�11360615634�027733� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* * Copyright 2004-2008 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.springframework.faces.webflow; import java.io.Serializable; import java.util.ArrayList; import java.util.Iterator; import java.util.List; import java.util.Map; import javax.faces.FacesException; import javax.faces.component.UIComponent; import javax.faces.component.UIViewRoot; import org.springframework.beans.BeanUtils; import org.springframework.util.ClassUtils; import org.springframework.webflow.execution.RequestContextHolder; /** * Helper class for building and restoring the structure of the JSF component tree. * * Largely based on MyFaces implementation, with minor changes for Spring Web Flow's state saving strategy. * * @author Jeremy Grelle * @author Manfred Geiler */ class TreeStructureManager { public Serializable buildTreeStructureToSave(UIViewRoot viewRoot) { return internalBuildTreeStructureToSave(viewRoot); } private TreeStructComponent internalBuildTreeStructureToSave(UIComponent component) { TreeStructComponent structComp = new TreeStructComponent(component.getClass().getName(), component.getId()); // children if (component.getChildCount() > 0) { List childList = component.getChildren(); List structChildList = new ArrayList(); for (int i = 0, len = childList.size(); i < len; i++) { UIComponent child = (UIComponent) childList.get(i); if (!child.isTransient()) { TreeStructComponent structChild = internalBuildTreeStructureToSave(child); structChildList.add(structChild); } } TreeStructComponent[] childArray = (TreeStructComponent[]) structChildList .toArray(new TreeStructComponent[structChildList.size()]); structComp.setChildren(childArray); } // facets Map facetMap = component.getFacets(); if (!facetMap.isEmpty()) { List structFacetList = new ArrayList(); for (Iterator it = facetMap.entrySet().iterator(); it.hasNext();) { Map.Entry entry = (Map.Entry) it.next(); UIComponent child = (UIComponent) entry.getValue(); if (!child.isTransient()) { String facetName = (String) entry.getKey(); TreeStructComponent structChild = internalBuildTreeStructureToSave(child); structFacetList.add(new Object[] { facetName, structChild }); } } Object[] facetArray = structFacetList.toArray(new Object[structFacetList.size()]); structComp.setFacets(facetArray); } return structComp; } public UIViewRoot restoreTreeStructure(Object treeStructRoot) { if (treeStructRoot instanceof TreeStructComponent) { return (UIViewRoot) internalRestoreTreeStructure((TreeStructComponent) treeStructRoot); } throw new IllegalArgumentException("TreeStructure of type " + treeStructRoot.getClass().getName() + " is not supported."); } private UIComponent internalRestoreTreeStructure(TreeStructComponent treeStructComp) { String compClass = treeStructComp.getComponentClass(); String compId = treeStructComp.getComponentId(); UIComponent component; try { component = (UIComponent) BeanUtils.instantiateClass(ClassUtils.forName(compClass)); } catch (Exception ex) { throw new FacesException("Could not restore the component tree structure.", ex); } component.setId(compId); // children TreeStructComponent[] childArray = treeStructComp.getChildren(); if (childArray != null) { List childList = component.getChildren(); for (int i = 0, len = childArray.length; i < len; i++) { UIComponent child = internalRestoreTreeStructure(childArray[i]); childList.add(child); } } // facets Object[] facetArray = treeStructComp.getFacets(); if (facetArray != null) { Map facetMap = component.getFacets(); for (int i = 0, len = facetArray.length; i < len; i++) { Object[] tuple = (Object[]) facetArray[i]; String facetName = (String) tuple[0]; TreeStructComponent structChild = (TreeStructComponent) tuple[1]; UIComponent child = internalRestoreTreeStructure(structChild); facetMap.put(facetName, child); } } return component; } public static class TreeStructComponent implements Serializable { private static final long serialVersionUID = 5069109074684737231L; private String componentClass; private String componentId; private TreeStructComponent[] children = null; // Array of children private Object[] facets = null; // Array of Array-tuples with Facetname and TreeStructComponent TreeStructComponent(String componentClass, String componentId) { this.componentClass = componentClass; this.componentId = componentId; } public String getComponentClass() { return componentClass; } public String getComponentId() { return componentId; } void setChildren(TreeStructComponent[] children) { this.children = children; } TreeStructComponent[] getChildren() { return children; } Object[] getFacets() { return facets; } void setFacets(Object[] facets) { this.facets = facets; } public String toString() { if (JsfUtils.isFlowRequest()) { return RequestContextHolder.getRequestContext().getFlowExecutionContext().getKey().toString(); } else { return super.toString(); } } } } ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000165�00000000000�011567� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-faces/src/main/java/org/springframework/faces/support/������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-faces/src/main/java/org/springframewor0000755�0000000�0000000�00000000000�11360615644�027727� 5����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000201�00000000000�011556� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-faces/src/main/java/org/springframework/faces/support/package.html������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-faces/src/main/java/org/springframewor0000644�0000000�0000000�00000000134�11360615644�027727� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������<html> <body> <p>Development and debugging support for working with JSF.</p> </body> </html>������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000225�00000000000�011564� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-faces/src/main/java/org/springframework/faces/support/RequestLoggingPhaseListener.java����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-faces/src/main/java/org/springframewor0000644�0000000�0000000�00000003071�11360615644�027732� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* * Copyright 2004-2008 the original authorimport javax.faces.event.PhaseEvent; import javax.faces.event.PhaseId; import javax.faces.event.PhaseListener; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.springframework.faces.support; import javax.faces.event.PhaseEvent; import javax.faces.event.PhaseId; import javax.faces.event.PhaseListener; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; /** * {@link PhaseListener} that logs the execution of the individual phases of the JSF lifecycle. Useful during JSF * application development in order to detect unreported JSF errors that cause the lifecycle to short-circuit. Turn * logging level to DEBUG to see its output. * * @author Jeremy Grelle */ public class RequestLoggingPhaseListener implements PhaseListener { private Log logger = LogFactory.getLog(RequestLoggingPhaseListener.class); public void afterPhase(PhaseEvent event) { // no-op } public void beforePhase(PhaseEvent event) { if (logger.isDebugEnabled()) { logger.debug("Entering JSF Phase: " + event.getPhaseId()); } } public PhaseId getPhaseId() { return PhaseId.ANY_PHASE; } } �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000163�00000000000�011565� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-faces/src/main/java/org/springframework/faces/model/��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-faces/src/main/java/org/springframewor0000755�0000000�0000000�00000000000�11360615644�027727� 5����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000232�00000000000�011562� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-faces/src/main/java/org/springframework/faces/model/ManySelectionTrackingListDataModel.java�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-faces/src/main/java/org/springframewor0000644�0000000�0000000�00000004055�11360615640�027731� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* * Copyright 2004-2008 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.springframework.faces.model; import java.util.ArrayList; import java.util.List; import javax.faces.model.DataModel; import org.springframework.util.Assert; /** * A {@link DataModel} implementation that tracks the currently selected rows, allowing any number of rows to be * selected at one time. * * @author Jeremy Grelle */ public class ManySelectionTrackingListDataModel extends SerializableListDataModel implements SelectionAware { private List selections = new ArrayList(); public ManySelectionTrackingListDataModel() { super(); } public ManySelectionTrackingListDataModel(List list) { super(list); } public List getSelections() { return selections; } public boolean isCurrentRowSelected() { return selections.contains(getRowData()); } public void selectAll() { selections.clear(); selections.addAll((List) getWrappedData()); } public void setCurrentRowSelected(boolean rowSelected) { if (!isRowAvailable()) { return; } if (rowSelected && !selections.contains(getRowData())) { selections.add(getRowData()); } else if (!rowSelected) { selections.remove(getRowData()); } } public void setSelections(List selections) { this.selections = selections; } public void select(Object rowData) { Assert.isTrue(((List) getWrappedData()).contains(rowData), "The object to select is not contained in this DataModel."); if (!selections.contains(rowData)) { selections.add(rowData); } } } �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000221�00000000000�011560� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-faces/src/main/java/org/springframework/faces/model/SerializableListDataModel.java��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-faces/src/main/java/org/springframewor0000644�0000000�0000000�00000005264�11360615644�027740� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* * Copyright 2004-2008 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.springframework.faces.model; import java.io.Serializable; import java.util.ArrayList; import java.util.List; import javax.faces.model.DataModel; import javax.faces.model.DataModelEvent; import javax.faces.model.DataModelListener; import org.springframework.util.Assert; /** * A simple List-to-JSF-DataModel adapter that is also serializable. * * @author Jeremy Grelle */ public class SerializableListDataModel extends DataModel implements Serializable { private int rowIndex = 0; private List data; public SerializableListDataModel() { this(new ArrayList()); } /** * Adapt the list to a data model; * @param list the list */ public SerializableListDataModel(List list) { if (list == null) { list = new ArrayList(); } setWrappedData(list); } public int getRowCount() { return data.size(); } public Object getRowData() { Assert.isTrue(isRowAvailable(), getClass() + " is in an illegal state - no row is available at the current index."); return data.get(rowIndex); } public int getRowIndex() { return rowIndex; } public Object getWrappedData() { return data; } public boolean isRowAvailable() { return rowIndex >= 0 && rowIndex < data.size(); } public void setRowIndex(int newRowIndex) { if (newRowIndex < -1) { throw new IllegalArgumentException("Illegal row index for " + getClass() + ": " + newRowIndex); } int oldRowIndex = rowIndex; rowIndex = newRowIndex; if (data != null && oldRowIndex != rowIndex) { Object row = isRowAvailable() ? getRowData() : null; DataModelEvent event = new DataModelEvent(this, rowIndex, row); DataModelListener[] listeners = getDataModelListeners(); for (int i = 0; i < listeners.length; i++) { listeners[i].rowSelected(event); } } } public void setWrappedData(Object data) { if (data == null) { data = new ArrayList(); } Assert.isInstanceOf(List.class, data, "The data object for " + getClass() + " must be a List"); this.data = (List) data; int newRowIndex = 0; setRowIndex(newRowIndex); } public String toString() { return data.toString(); } } ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000227�00000000000�011566� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-faces/src/main/java/org/springframework/faces/model/SelectionTrackingActionListener.java��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-faces/src/main/java/org/springframewor0000644�0000000�0000000�00000006167�11360615636�027744� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* * Copyright 2004-2008 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.springframework.faces.model; import java.lang.reflect.Method; import javax.faces.component.UIComponent; import javax.faces.component.UIData; import javax.faces.component.UIViewRoot; import javax.faces.event.AbortProcessingException; import javax.faces.event.ActionEvent; import javax.faces.event.ActionListener; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.springframework.faces.webflow.FlowActionListener; import org.springframework.util.ReflectionUtils; /** * Custom {@link ActionListener} that inspects the {@link UIComponent} that signaled the current {@link ActionEvent} to * determine whether it is a child of any iterator type of component (such as {@link UIData}) that uses a * {@link SelectionAware} data model implementation. If a containing SelectionAware model is found, the row containing * the event-signaling component instance will be selected. This enables convenient access to the selected model state * at any time through EL expressions such as #{model.selectedRow.id} without having to rely on the whether or not the * current row index is pointing to the desired row as it would need to be to use an expression such as * #{model.rowData.id} * * @author Jeremy Grelle */ public class SelectionTrackingActionListener implements ActionListener { private static final Log logger = LogFactory.getLog(FlowActionListener.class); private ActionListener delegate; public SelectionTrackingActionListener(ActionListener delegate) { this.delegate = delegate; } public void processAction(ActionEvent event) throws AbortProcessingException { trackSelection(event.getComponent()); delegate.processAction(event); } private void trackSelection(UIComponent component) { // Find parent component with a SelectionAware model if it exists UIComponent currentComponent = component; while (currentComponent.getParent() != null && !(currentComponent.getParent() instanceof UIViewRoot)) { UIComponent parent = currentComponent.getParent(); Method valueAccessor = ReflectionUtils.findMethod(parent.getClass(), "getValue"); if (valueAccessor != null) { Object value = ReflectionUtils.invokeMethod(valueAccessor, parent); if (value != null && value instanceof SelectionAware) { ((SelectionAware) value).setCurrentRowSelected(true); if (logger.isDebugEnabled()) { logger.debug("Row selection has been set on the current SelectionAware data model."); } break; } } currentComponent = currentComponent.getParent(); } } } ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000231�00000000000�011561� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-faces/src/main/java/org/springframework/faces/model/OneSelectionTrackingListDataModel.java������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-faces/src/main/java/org/springframewor0000644�0000000�0000000�00000004565�11360615632�027740� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* * Copyright 2004-2008 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.springframework.faces.model; import java.util.ArrayList; import java.util.List; import javax.faces.model.DataModel; import org.springframework.util.Assert; /** * A {@link DataModel} implementation that tracks the currently selected row, allowing only one selection at a time. * * @author Jeremy Grelle */ public class OneSelectionTrackingListDataModel extends SerializableListDataModel implements SelectionAware { /** * The list of currently selected row data objects. */ private List selections = new ArrayList(); public OneSelectionTrackingListDataModel() { super(); } public OneSelectionTrackingListDataModel(List list) { super(list); } public List getSelections() { return selections; } public boolean isCurrentRowSelected() { return selections.contains(getRowData()); } public void select(Object rowData) { Assert.isTrue(((List) getWrappedData()).contains(rowData), "The object to select is not contained in this DataModel."); selections.clear(); selections.add(rowData); } public void selectAll() { if (((List) getWrappedData()).size() > 1) { throw new UnsupportedOperationException("This DataModel only allows one selection."); } } public void setCurrentRowSelected(boolean rowSelected) { if (!isRowAvailable()) { return; } if (!rowSelected) { selections.remove(getRowData()); } else if (rowSelected && !selections.contains(getRowData())) { selections.clear(); selections.add(getRowData()); } } public void setSelections(List selections) { Assert.isTrue(selections.size() <= 1, "This DataModel only allows one selection."); this.selections = selections; } public Object getSelectedRow() { if (selections.size() == 1) { return selections.get(0); } else { return null; } } } �������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000177�00000000000�011572� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-faces/src/main/java/org/springframework/faces/model/package.html��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-faces/src/main/java/org/springframewor0000644�0000000�0000000�00000000160�11360615632�027723� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������<html> <body> <p>Extended implementations of JSF-specific data structures such as DataModel.</p> </body> </html>����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000206�00000000000�011563� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-faces/src/main/java/org/springframework/faces/model/SelectionAware.java�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-faces/src/main/java/org/springframewor0000644�0000000�0000000�00000003460�11360615636�027735� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* * Copyright 2004-2008 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.springframework.faces.model; import java.util.List; import javax.faces.model.DataModel; /** * Interface for {@link DataModel} implementations that need to track selected rows. * * @author Jeremy Grelle */ public interface SelectionAware { /** * Checks whether the row pointed to by the model's current index is selected. * @return true if the current row data object is selected */ public boolean isCurrentRowSelected(); /** * Sets whether the row pointed to by the model's current index is selected * @param rowSelected true to select the current row */ public void setCurrentRowSelected(boolean rowSelected); /** * Sets the list of selected row data objects for the model. * @param selections the list of selected row data objects */ public void setSelections(List selections); /** * Returns the list of selected row data objects for the model. * @return the list of selected row data objects */ public List getSelections(); /** * Selects all row data objects in the model. */ public void selectAll(); /** * Selects the given row data object in the model. * @param rowData the row data object to select. */ public void select(Object rowData); } ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000175�00000000000�011570� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-faces/src/main/java/org/springframework/faces/model/converter/����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-faces/src/main/java/org/springframewor0000755�0000000�0000000�00000000000�11360615644�027727� 5����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000230�00000000000�011560� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-faces/src/main/java/org/springframework/faces/model/converter/FacesConversionService.java�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-faces/src/main/java/org/springframewor0000644�0000000�0000000�00000003046�11360615634�027733� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* * Copyright 2004-2008 the original author or authimport org.springframework.binding.convert.ConversionService; import org.springframework.binding.convert.support.DefaultConversionService; import org.springframework.faces.model.OneSelectionTrackingListDataModel; e.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.springframework.faces.model.converter; import javax.faces.model.DataModel; import org.springframework.binding.convert.ConversionService; import org.springframework.binding.convert.service.DefaultConversionService; import org.springframework.faces.model.OneSelectionTrackingListDataModel; /** * Convenient {@link ConversionService} implementation for JSF that composes JSF-specific converters with the standard * Web Flow converters. * * <p> * In addition to the standard Web Flow conversion, this service provide conversion from a list into a * {@link OneSelectionTrackingListDataModel} using a "dataModel" alias for the type. * </p> * * @author Jeremy Grelle */ public class FacesConversionService extends DefaultConversionService { public FacesConversionService() { addFacesConverters(); } protected void addFacesConverters() { addConverter(new DataModelConverter()); addAlias("dataModel", DataModel.class); } } ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000224�00000000000�011563� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-faces/src/main/java/org/springframework/faces/model/converter/DataModelConverter.java�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-faces/src/main/java/org/springframewor0000644�0000000�0000000�00000003305�11360615644�027732� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* * Copyright 2004-2008 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.springframework.faces.model.converter; import java.lang.reflect.Constructor; import java.util.List; import javax.faces.model.DataModel; import org.springframework.binding.convert.converters.Converter; import org.springframework.faces.model.OneSelectionTrackingListDataModel; import org.springframework.util.ClassUtils; /** * A {@link Converter} implementation that converts an Object, Object array, or {@link List} into a JSF * {@link DataModel}. * * @author Jeremy Grelle */ public class DataModelConverter implements Converter { public Class getSourceClass() { return Object.class; } public Class getTargetClass() { return DataModel.class; } public Object convertSourceToTargetClass(Object source, Class targetClass) throws Exception { if (targetClass.equals(DataModel.class)) { targetClass = OneSelectionTrackingListDataModel.class; } Constructor emptyConstructor = ClassUtils.getConstructorIfAvailable(targetClass, new Class[] {}); DataModel model = (DataModel) emptyConstructor.newInstance(new Object[] {}); model.setWrappedData(source); return model; } } ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000211�00000000000�011557� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-faces/src/main/java/org/springframework/faces/model/converter/package.html����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-faces/src/main/java/org/springframewor0000644�0000000�0000000�00000000131�11360615640�027720� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������<html> <body> <p>Conversion support for JSF-specific data structures.</p> </body> </html>���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000164�00000000000�011566� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-faces/src/main/java/org/springframework/faces/config/�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-faces/src/main/java/org/springframewor0000755�0000000�0000000�00000000000�11360615644�027727� 5����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000216�00000000000�011564� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-faces/src/main/java/org/springframework/faces/config/FacesNamespaceHandler.java�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-faces/src/main/java/org/springframewor0000644�0000000�0000000�00000001777�11360615636�027746� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* * Copyright 2004-2008 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.springframework.faces.config; import org.springframework.beans.factory.xml.NamespaceHandlerSupport; /** * Namespace handler for the faces namespace. * * @author Jeremy Grelle */ public class FacesNamespaceHandler extends NamespaceHandlerSupport { public void init() { registerBeanDefinitionParser("flow-builder-services", new FacesFlowBuilderServicesBeanDefinitionParser()); } } �././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000210�00000000000�011556� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-faces/src/main/java/org/springframework/faces/config/spring-faces-2.0.xsd�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-faces/src/main/java/org/springframewor0000644�0000000�0000000�00000005316�11360615642�027734� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������<?xml version="1.0" encoding="UTF-8" standalone="no"?> <xsd:schema xmlns="http://www.springframework.org/schema/faces" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:beans="http://www.springframework.org/schema/beans" targetNamespace="http://www.springframework.org/schema/faces" elementFormDefault="qualified" attributeFormDefault="unqualified" version="2.0"> <xsd:import namespace="http://www.springframework.org/schema/beans" schemaLocation="http://www.springframework.org/schema/beans/spring-beans-2.5.xsd" /> <xsd:element name="flow-builder-services"> <xsd:annotation> <xsd:documentation> <![CDATA[ Registers custom implementations of services needed to build flow definitions in a JSF environment. With this tag, you may configure a custom ConversionService, FormatterFactory, ExpressionParser, and ViewFactoryCreator implementation. This tag is only needed when you wish to plugin custom implementations. ]]> </xsd:documentation> </xsd:annotation> <xsd:complexType> <xsd:complexContent> <xsd:extension base="beans:identifiedType"> <xsd:attribute name="conversion-service"> <xsd:annotation> <xsd:documentation> <![CDATA[ The custom ConversionService implementation to use to convert from one type to another. ]]> </xsd:documentation> </xsd:annotation> </xsd:attribute> <xsd:attribute name="expression-parser"> <xsd:annotation> <xsd:documentation> <![CDATA[ The custom ExpressionParser implementation to use to compile expression strings into Expressions. ]]> </xsd:documentation> </xsd:annotation> </xsd:attribute> <xsd:attribute name="view-factory-creator"> <xsd:annotation> <xsd:documentation> <![CDATA[ The custom ViewFactoryCreator implementation to use produce ViewFactories capable of rendering Views. ]]> </xsd:documentation> </xsd:annotation> </xsd:attribute> <xsd:attribute name="enable-managed-beans" type="xsd:boolean"> <xsd:annotation> <xsd:documentation> <![CDATA[ When this attribute is set to true, a special EL expression parser will be enabled that allows access to JSF-managed beans from EL expressions in flow definitions. ]]> </xsd:documentation> </xsd:annotation> </xsd:attribute> <xsd:attribute name="development" type="xsd:boolean"> <xsd:annotation> <xsd:documentation> <![CDATA[ Puts all flows in development mode. When set to true, changes to a flow definition will be auto-detected and will result in a flow refresh. ]]> </xsd:documentation> </xsd:annotation> </xsd:attribute> </xsd:extension> </xsd:complexContent> </xsd:complexType> </xsd:element> </xsd:schema>������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000245�00000000000�011566� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-faces/src/main/java/org/springframework/faces/config/FacesFlowBuilderServicesBeanDefinitionParser.java������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-faces/src/main/java/org/springframewor0000644�0000000�0000000�00000020200�11360615636�027724� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* * Copyright 2004-2008 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.springframework.faces.config; import org.springframework.beans.factory.config.BeanDefinition; import org.springframework.beans.factory.config.RuntimeBeanReference; import org.springframework.beans.factory.parsing.BeanComponentDefinition; import org.springframework.beans.factory.parsing.CompositeComponentDefinition; import org.springframework.beans.factory.support.BeanDefinitionBuilder; import org.springframework.beans.factory.xml.AbstractSingleBeanDefinitionParser; import org.springframework.beans.factory.xml.BeanDefinitionParser; import org.springframework.beans.factory.xml.ParserContext; import org.springframework.util.StringUtils; import org.w3c.dom.Element; /** * Parser for the flow-builder-services tag. * * @author Jeremy Grelle * @author Christian Dupuis */ public class FacesFlowBuilderServicesBeanDefinitionParser extends AbstractSingleBeanDefinitionParser implements BeanDefinitionParser { // --------------------------- Full qualified class names ----------------------- // private static final String DEFAULT_EXPRESSION_FACTORY_UTILS_CLASS_NAME = "org.springframework.binding.expression.el.DefaultExpressionFactoryUtils"; private static final String FACES_CONVERSION_SERVICE_CLASS_NAME = "org.springframework.faces.model.converter.FacesConversionService"; private static final String FLOW_BUILDER_SERVICES_CLASS_NAME = "org.springframework.webflow.engine.builder.support.FlowBuilderServices"; private static final String JSF_VIEW_FACTORY_CREATOR_CLASS_NAME = "org.springframework.faces.webflow.JsfViewFactoryCreator"; private static final String JSF_MANAGED_BEAN_AWARE_E_L_EXPRESSION_PARSER_CLASS_NAME = "org.springframework.faces.webflow.JsfManagedBeanAwareELExpressionParser"; private static final String WEBFLOW_EL_EXPRESSION_PARSER_CLASS_NAME = "org.springframework.webflow.expression.el.WebFlowELExpressionParser"; // --------------------------- XML Config Attributes ----------------------- // private static final String CONVERSION_SERVICE_ATTR = "conversion-service"; private static final String DEVELOPMENT_ATTR = "development"; private static final String ENABLE_MANAGED_BEANS_ATTR = "enable-managed-beans"; private static final String EXPRESSION_PARSER_ATTR = "expression-parser"; private static final String VIEW_FACTORY_CREATOR_ATTR = "view-factory-creator"; // --------------------------- Bean Configuration Properties --------------------- // private static final String CONVERSION_SERVICE_PROPERTY = "conversionService"; private static final String DEVELOPMENT_PROPERTY = "development"; private static final String EXPRESSION_PARSER_PROPERTY = "expressionParser"; private static final String VIEW_FACTORY_CREATOR_PROPERTY = "viewFactoryCreator"; protected String getBeanClassName(Element element) { return FLOW_BUILDER_SERVICES_CLASS_NAME; } protected void doParse(Element element, ParserContext parserContext, BeanDefinitionBuilder definitionBuilder) { CompositeComponentDefinition componentDefinition = new CompositeComponentDefinition(element.getLocalName(), parserContext.extractSource(element)); parserContext.pushContainingComponent(componentDefinition); parseConversionService(element, parserContext, definitionBuilder); parseExpressionParser(element, parserContext, definitionBuilder, parseEnableManagedBeans(element, definitionBuilder)); parseViewFactoryCreator(element, parserContext, definitionBuilder); parseDevelopment(element, definitionBuilder); parserContext.popAndRegisterContainingComponent(); } private boolean parseEnableManagedBeans(Element element, BeanDefinitionBuilder definitionBuilder) { String enableManagedBeans = element.getAttribute(ENABLE_MANAGED_BEANS_ATTR); if (StringUtils.hasText(enableManagedBeans)) { return Boolean.valueOf(enableManagedBeans).booleanValue(); } else { return false; } } private void parseConversionService(Element element, ParserContext context, BeanDefinitionBuilder definitionBuilder) { String conversionService = element.getAttribute(CONVERSION_SERVICE_ATTR); if (!StringUtils.hasText(conversionService)) { BeanDefinitionBuilder conversionServiceBuilder = BeanDefinitionBuilder .genericBeanDefinition(FACES_CONVERSION_SERVICE_CLASS_NAME); conversionService = registerInfrastructureComponent(element, context, conversionServiceBuilder); } definitionBuilder.addPropertyReference(CONVERSION_SERVICE_PROPERTY, conversionService); } private void parseViewFactoryCreator(Element element, ParserContext context, BeanDefinitionBuilder definitionBuilder) { String viewFactoryCreator = element.getAttribute(VIEW_FACTORY_CREATOR_ATTR); if (!StringUtils.hasText(viewFactoryCreator)) { BeanDefinitionBuilder viewFactoryCreatorBuilder = BeanDefinitionBuilder .genericBeanDefinition(JSF_VIEW_FACTORY_CREATOR_CLASS_NAME); viewFactoryCreator = registerInfrastructureComponent(element, context, viewFactoryCreatorBuilder); } definitionBuilder.addPropertyReference(VIEW_FACTORY_CREATOR_PROPERTY, viewFactoryCreator); } private void parseExpressionParser(Element element, ParserContext context, BeanDefinitionBuilder definitionBuilder, boolean enableManagedBeans) { String conversionService = getConversionService(definitionBuilder); String expressionParser = element.getAttribute(EXPRESSION_PARSER_ATTR); if (!StringUtils.hasText(expressionParser)) { BeanDefinitionBuilder expressionFactoryBuilder = BeanDefinitionBuilder .genericBeanDefinition(DEFAULT_EXPRESSION_FACTORY_UTILS_CLASS_NAME); expressionFactoryBuilder.setFactoryMethod("createExpressionFactory"); BeanDefinitionBuilder expressionParserBuilder; if (enableManagedBeans) { expressionParserBuilder = BeanDefinitionBuilder .genericBeanDefinition(JSF_MANAGED_BEAN_AWARE_E_L_EXPRESSION_PARSER_CLASS_NAME); } else { expressionParserBuilder = BeanDefinitionBuilder .genericBeanDefinition(WEBFLOW_EL_EXPRESSION_PARSER_CLASS_NAME); } expressionParserBuilder.addConstructorArgValue(expressionFactoryBuilder.getBeanDefinition()); expressionParserBuilder.addPropertyReference(CONVERSION_SERVICE_PROPERTY, conversionService); expressionParser = registerInfrastructureComponent(element, context, expressionParserBuilder); } else if (enableManagedBeans) { context.getReaderContext().error( "Do not specify a custom expression-parser when enable-managed-beans is true", context.extractSource(element)); } definitionBuilder.addPropertyReference(EXPRESSION_PARSER_PROPERTY, expressionParser); } private void parseDevelopment(Element element, BeanDefinitionBuilder definitionBuilder) { String development = element.getAttribute(DEVELOPMENT_ATTR); if (StringUtils.hasText(development)) { definitionBuilder.addPropertyValue(DEVELOPMENT_PROPERTY, development); } } private String getConversionService(BeanDefinitionBuilder definitionBuilder) { RuntimeBeanReference conversionServiceReference = (RuntimeBeanReference) definitionBuilder.getBeanDefinition() .getPropertyValues().getPropertyValue(CONVERSION_SERVICE_PROPERTY).getValue(); return conversionServiceReference.getBeanName(); } private String registerInfrastructureComponent(Element element, ParserContext context, BeanDefinitionBuilder componentBuilder) { String beanName = context.getReaderContext().generateBeanName(componentBuilder.getRawBeanDefinition()); componentBuilder.getRawBeanDefinition().setSource(context.extractSource(element)); componentBuilder.getRawBeanDefinition().setRole(BeanDefinition.ROLE_INFRASTRUCTURE); context.registerBeanComponent(new BeanComponentDefinition(componentBuilder.getBeanDefinition(), beanName)); return beanName; } }������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000200�00000000000�011555� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-faces/src/main/java/org/springframework/faces/config/package.html�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-faces/src/main/java/org/springframewor0000644�0000000�0000000�00000000145�11360615644�027731� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������<html> <body> <p>Configuration support for the Spring Faces custom XML namespace.</p> </body> </html>���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-faces/src/test/�����������������������0000755�0000000�0000000�00000000000�11360615646�023266� 5����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-faces/src/test/resources/�������������0000755�0000000�0000000�00000000000�11360615646�025300� 5����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-faces/src/test/java/������������������0000755�0000000�0000000�00000000000�11360615632�024202� 5����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-faces/src/test/java/org/��������������0000755�0000000�0000000�00000000000�11360615632�024771� 5����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000147�00000000000�011567� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-faces/src/test/java/org/springframework/��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-faces/src/test/java/org/springframewor0000755�0000000�0000000�00000000000�11360615632�027757� 5����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000155�00000000000�011566� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-faces/src/test/java/org/springframework/faces/��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-faces/src/test/java/org/springframewor0000755�0000000�0000000�00000000000�11360615646�027764� 5����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000161�00000000000�011563� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-faces/src/test/java/org/springframework/faces/mvc/����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-faces/src/test/java/org/springframewor0000755�0000000�0000000�00000000000�11360615634�027761� 5����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000202�00000000000�011557� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-faces/src/test/java/org/springframework/faces/mvc/JsfViewTests.java�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-faces/src/test/java/org/springframewor0000644�0000000�0000000�00000003762�11360615634�027773� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������package org.springframework.faces.mvc; import java.util.HashMap; import java.util.Locale; import javax.faces.component.UIViewRoot; import javax.faces.context.FacesContext; import junit.framework.TestCase; import org.springframework.faces.webflow.JSFMockHelper; import org.springframework.faces.webflow.MockViewHandler; import org.springframework.mock.web.MockHttpServletRequest; import org.springframework.mock.web.MockHttpServletResponse; import org.springframework.mock.web.MockServletContext; import org.springframework.web.context.support.StaticWebApplicationContext; import org.springframework.web.servlet.View; import org.springframework.web.servlet.view.UrlBasedViewResolver; public class JsfViewTests extends TestCase { UrlBasedViewResolver resolver; private JSFMockHelper jsfMock = new JSFMockHelper(); public void setUp() throws Exception { jsfMock.setUp(); jsfMock.facesContext().getApplication().setViewHandler(new ResourceCheckingViewHandler()); resolver = new UrlBasedViewResolver(); resolver.setPrefix("/WEB-INF/views/"); resolver.setSuffix(".xhtml"); resolver.setViewClass(JsfView.class); resolver.setApplicationContext(new StaticWebApplicationContext()); } public void tearDown() throws Exception { jsfMock.tearDown(); } public void testViewResolution() throws Exception { View view = resolver.resolveViewName("intro", new Locale("EN")); assertTrue(view instanceof JsfView); } public void testViewRender() throws Exception { JsfView view = (JsfView) resolver.resolveViewName("intro", new Locale("EN")); view.setApplicationContext(new StaticWebApplicationContext()); view.setServletContext(new MockServletContext()); view.render(new HashMap(), new MockHttpServletRequest(), new MockHttpServletResponse()); } private class ResourceCheckingViewHandler extends MockViewHandler { public UIViewRoot createView(FacesContext context, String viewId) { assertNotNull(viewId); assertEquals("/WEB-INF/views/intro.xhtml", viewId); return new UIViewRoot(); } } } ��������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000160�00000000000�011562� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-faces/src/test/java/org/springframework/faces/ui/�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-faces/src/test/java/org/springframewor0000755�0000000�0000000�00000000000�11360615642�027760� 5����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000230�00000000000�011560� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-faces/src/test/java/org/springframework/faces/ui/ProgressiveCommandLinkRendererTests.java�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-faces/src/test/java/org/springframewor0000644�0000000�0000000�00000011210�11360615634�027756� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������package org.springframework.faces.ui; import java.io.StringWriter; import javax.faces.component.UIForm; import javax.faces.component.UIParameter; import junit.framework.TestCase; import org.apache.shale.test.mock.MockResponseWriter; import org.springframework.faces.webflow.JSFMockHelper; public class ProgressiveCommandLinkRendererTests extends TestCase { JSFMockHelper jsf = new JSFMockHelper(); ProgressiveCommandLinkRenderer renderer = new ProgressiveCommandLinkRenderer(); StringWriter output = new StringWriter(); public void setUp() throws Exception { jsf.setUp(); jsf.facesContext().setResponseWriter(new MockResponseWriter(output, null, null)); } public void tearDown() throws Exception { System.out.println(output); jsf.tearDown(); } public void testRenderOnClick_AjaxEnabled_NoParams() throws Exception { String expected = "<a onclick=\"Spring.remoting.submitForm('myForm:foo', 'myForm', " + "{processIds: 'myForm:foo'}); return false;\"/>"; UIForm form = new UIForm(); form.setId("myForm"); ProgressiveUICommand link = new ProgressiveUICommand(); link.setId("foo"); form.getChildren().add(link); RenderAttributeCallback callback = (RenderAttributeCallback) renderer.getAttributeCallbacks(link) .get("onclick"); jsf.facesContext().getResponseWriter().startElement("a", link); callback.doRender(jsf.facesContext(), jsf.facesContext().getResponseWriter(), link, "onclick", null, "onclick"); jsf.facesContext().getResponseWriter().endElement("a"); assertEquals(expected, output.toString()); } public void testRenderOnClick_AjaxEnabled_WithParams() throws Exception { String expected = "<a onclick=\"Spring.remoting.submitForm('myForm:foo', 'myForm', " + "{processIds: 'myForm:foo', foo : 'bar', zoo : 'baz'}" + "); return false;\"/>"; UIForm form = new UIForm(); form.setId("myForm"); ProgressiveUICommand link = new ProgressiveUICommand(); link.setId("foo"); form.getChildren().add(link); UIParameter param1 = new UIParameter(); param1.setName("foo"); param1.setValue("bar"); UIParameter param2 = new UIParameter(); param2.setName("zoo"); param2.setValue("baz"); link.getChildren().add(param1); link.getChildren().add(param2); RenderAttributeCallback callback = (RenderAttributeCallback) renderer.getAttributeCallbacks(link) .get("onclick"); jsf.facesContext().getResponseWriter().startElement("a", link); callback.doRender(jsf.facesContext(), jsf.facesContext().getResponseWriter(), link, "onclick", null, "onclick"); jsf.facesContext().getResponseWriter().endElement("a"); assertEquals(expected, output.toString()); } public void testRenderOnClick_AjaxDisabled_NoParams() throws Exception { String expected = "<a onclick=\"this.submitFormFromLink('myForm','myForm:foo', []); return false;\"/>"; UIForm form = new UIForm(); form.setId("myForm"); ProgressiveUICommand link = new ProgressiveUICommand(); link.setId("foo"); link.setAjaxEnabled(Boolean.FALSE); form.getChildren().add(link); RenderAttributeCallback callback = (RenderAttributeCallback) renderer.getAttributeCallbacks(link) .get("onclick"); jsf.facesContext().getResponseWriter().startElement("a", link); callback.doRender(jsf.facesContext(), jsf.facesContext().getResponseWriter(), link, "onclick", null, "onclick"); jsf.facesContext().getResponseWriter().endElement("a"); assertEquals(expected, output.toString()); } public void testRenderOnClick_AjaxDisabled_WithParams() throws Exception { String expected = "<a onclick=\"this.submitFormFromLink('myForm','myForm:foo', [" + "{name : 'foo', value : 'bar'}, {name : 'zoo', value : 'baz'}" + "]); return false;\"/>"; UIForm form = new UIForm(); form.setId("myForm"); ProgressiveUICommand link = new ProgressiveUICommand(); link.setId("foo"); link.setAjaxEnabled(Boolean.FALSE); form.getChildren().add(link); UIParameter param1 = new UIParameter(); param1.setName("foo"); param1.setValue("bar"); UIParameter param2 = new UIParameter(); param2.setName("zoo"); param2.setValue("baz"); link.getChildren().add(param1); link.getChildren().add(param2); RenderAttributeCallback callback = (RenderAttributeCallback) renderer.getAttributeCallbacks(link) .get("onclick"); jsf.facesContext().getResponseWriter().startElement("a", link); callback.doRender(jsf.facesContext(), jsf.facesContext().getResponseWriter(), link, "onclick", null, "onclick"); jsf.facesContext().getResponseWriter().endElement("a"); assertEquals(expected, output.toString()); } } ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000171�00000000000�011564� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-faces/src/test/java/org/springframework/faces/ui/resource/��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-faces/src/test/java/org/springframewor0000755�0000000�0000000�00000000000�11360615636�027763� 5����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000225�00000000000�011564� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-faces/src/test/java/org/springframework/faces/ui/resource/FlowResourceHelperTests.java����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-faces/src/test/java/org/springframewor0000644�0000000�0000000�00000003054�11360615636�027767� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������package org.springframework.faces.ui.resource; import java.io.IOException; import java.io.StringWriter; import junit.framework.TestCase; import org.apache.shale.test.mock.MockResponseWriter; import org.springframework.faces.webflow.JSFMockHelper; public class FlowResourceHelperTests extends TestCase { StringWriter writer = new StringWriter(); JSFMockHelper jsf = new JSFMockHelper(); protected void setUp() throws Exception { jsf.setUp(); // TODO figure out how to set the context path jsf.facesContext().setResponseWriter(new MockResponseWriter(writer, "text/html", "UTF-8")); } protected void tearDown() throws Exception { jsf.tearDown(); } public final void testRenderScriptLink() throws IOException { String scriptPath = "/dojo/dojo.js"; String expectedUrl = "null/resources/dojo/dojo.js"; ResourceHelper.renderScriptLink(jsf.facesContext(), scriptPath); ResourceHelper.renderScriptLink(jsf.facesContext(), scriptPath); String expectedOutput = "<script type=\"text/javascript\" src=\"" + expectedUrl + "\"/>"; assertEquals(expectedOutput, writer.toString()); } public final void testRenderStyleLink() throws IOException { String scriptPath = "/dijit/themes/dijit.css"; String expectedUrl = "null/resources/dijit/themes/dijit.css"; ResourceHelper.renderStyleLink(jsf.facesContext(), scriptPath); ResourceHelper.renderStyleLink(jsf.facesContext(), scriptPath); String expectedOutput = "<link type=\"text/css\" rel=\"stylesheet\" href=\"" + expectedUrl + "\"/>"; assertEquals(expectedOutput, writer.toString()); } } ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000176�00000000000�011571� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-faces/src/test/java/org/springframework/faces/ui/TestValue.java���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-faces/src/test/java/org/springframewor0000644�0000000�0000000�00000000170�11360615636�027763� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������package org.springframework.faces.ui; public class TestValue { public String getStringValue() { return "foo"; } } ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000206�00000000000�011563� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-faces/src/test/java/org/springframework/faces/ui/AjaxViewRootTests.java�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-faces/src/test/java/org/springframewor0000644�0000000�0000000�00000005221�11360615642�027762� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������package org.springframework.faces.ui; import java.io.IOException; import java.io.StringWriter; import javax.faces.component.UIForm; import javax.faces.component.UIPanel; import javax.faces.component.UIViewRoot; import javax.faces.render.RenderKitFactory; import junit.framework.TestCase; import org.apache.shale.test.mock.MockResponseWriter; import org.springframework.faces.webflow.JSFMockHelper; import org.springframework.faces.webflow.MockViewHandler; import org.springframework.util.StringUtils; import org.springframework.webflow.execution.View; public class AjaxViewRootTests extends TestCase { JSFMockHelper jsf = new JSFMockHelper(); UIViewRoot testTree = new UIViewRoot(); private StringWriter output = new StringWriter(); protected void setUp() throws Exception { jsf.setUp(); jsf.facesContext().getApplication().setViewHandler(new MockViewHandler()); jsf.facesContext().setResponseWriter(new MockResponseWriter(output, null, null)); UIForm form = new UIForm(); form.setId("foo"); testTree.getChildren().add(form); UIPanel panel = new UIPanel(); panel.setId("bar"); form.getChildren().add(panel); ProgressiveUICommand command = new ProgressiveUICommand(); command.setId("baz"); panel.getChildren().add(command); testTree.setRenderKitId(RenderKitFactory.HTML_BASIC_RENDER_KIT); jsf.facesContext().setViewRoot(testTree); } protected void tearDown() throws Exception { jsf.tearDown(); } public void testProcessDecodes() { jsf.externalContext().getRequestParameterMap().put("processIds", "foo:bar, foo:baz"); AjaxViewRoot ajaxRoot = new AjaxViewRoot(testTree); ajaxRoot.processDecodes(jsf.facesContext()); assertEquals(1, ajaxRoot.getProcessIds().length); } public void testEncodeAll_NoRenderIds() throws IOException { jsf.externalContext().getRequestParameterMap().put("processIds", "foo:bar, foo:baz"); AjaxViewRoot ajaxRoot = new AjaxViewRoot(testTree); ajaxRoot.encodeAll(jsf.facesContext()); assertEquals(1, ajaxRoot.getProcessIds().length); assertEquals(1, ajaxRoot.getRenderIds().length); assertEquals(StringUtils.arrayToCommaDelimitedString(ajaxRoot.getProcessIds()), StringUtils .arrayToCommaDelimitedString(ajaxRoot.getRenderIds())); } public void testEncodeAll_RenderIdsExpr() throws IOException { jsf.externalContext().getRequestMap().put(View.RENDER_FRAGMENTS_ATTRIBUTE, StringUtils.delimitedListToStringArray("foo:bar,foo:baz", ",", " ")); AjaxViewRoot ajaxRoot = new AjaxViewRoot(testTree); ajaxRoot.encodeAll(jsf.facesContext()); assertEquals(1, ajaxRoot.getRenderIds().length); assertEquals("foo:bar", StringUtils.arrayToCommaDelimitedString(ajaxRoot.getRenderIds())); } } �������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000206�00000000000�011563� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-faces/src/test/java/org/springframework/faces/ui/EscapeQuotesTests.java�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-faces/src/test/java/org/springframewor0000644�0000000�0000000�00000001123�11360615642�027757� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������package org.springframework.faces.ui; import junit.framework.TestCase; public class EscapeQuotesTests extends TestCase { public final void testEscapeQuotesInLink() { String linkText = "<a id=\"mainForm:findHotels\" class=\"progressiveLink\" href=\"#\" name=\"mainForm:findHotels\"\\>"; String expectedText = "<a id=\\\"mainForm:findHotels\\\" class=\\\"progressiveLink\\\" href=\\\"#\\\" name=\\\"mainForm:findHotels\\\"\\>"; String result = linkText.replaceAll("\"", "\\\\\""); System.out.println(linkText); System.out.println(result); assertEquals(expectedText, result); } } ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000202�00000000000�011557� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-faces/src/test/java/org/springframework/faces/ui/TestConverter.java�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-faces/src/test/java/org/springframewor0000644�0000000�0000000�00000001110�11360615632�027752� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������package org.springframework.faces.ui; import javax.faces.component.UIComponent; import javax.faces.context.FacesContext; import javax.faces.convert.Converter; public class TestConverter implements Converter { public TestConverter() { } public Object getAsObject(FacesContext context, UIComponent component, String value) { // TODO Auto-generated method stub throw new UnsupportedOperationException("Auto-generated method stub"); } public String getAsString(FacesContext context, UIComponent component, Object value) { return ((TestValue) value).getStringValue(); } } ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000170�00000000000�011563� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-faces/src/test/java/org/springframework/faces/expression/���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-faces/src/test/java/org/springframewor0000755�0000000�0000000�00000000000�11360615646�027764� 5����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000165�00000000000�011567� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-faces/src/test/java/org/springframework/faces/webflow/������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-faces/src/test/java/org/springframewor0000755�0000000�0000000�00000000000�11360615644�027762� 5����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000206�00000000000�011563� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-faces/src/test/java/org/springframework/faces/webflow/JsfViewTests.java�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-faces/src/test/java/org/springframewor0000644�0000000�0000000�00000023541�11360615640�027765� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������package org.springframework.faces.webflow; import java.io.IOException; import java.io.StringWriter; import javax.faces.FacesException; import javax.faces.component.UIForm; import javax.faces.component.UIInput; import javax.faces.component.UIViewRoot; import javax.faces.component.html.HtmlForm; import javax.faces.component.html.HtmlInputText; import javax.faces.context.FacesContext; import javax.faces.lifecycle.Lifecycle; import junit.framework.TestCase; import org.apache.shale.test.mock.MockResponseWriter; import org.apache.shale.test.mock.MockStateManager; import org.easymock.EasyMock; import org.springframework.faces.ui.AjaxViewRoot; import org.springframework.webflow.core.collection.MutableAttributeMap; import org.springframework.webflow.execution.FlowExecutionContext; import org.springframework.webflow.execution.FlowExecutionKey; import org.springframework.webflow.execution.RequestContext; import org.springframework.webflow.execution.RequestContextHolder; import org.springframework.webflow.test.MockExternalContext; import org.springframework.webflow.test.MockParameterMap; public class JsfViewTests extends TestCase { private static final String VIEW_ID = "testView.xhtml"; private MockExternalContext extContext = new MockExternalContext(); private JsfView view; private JSFMockHelper jsfMock = new JSFMockHelper(); private StringWriter output = new StringWriter(); private String event = "foo"; private RequestContext context = (RequestContext) EasyMock.createMock(RequestContext.class); private FlowExecutionContext flowExecutionContext = (FlowExecutionContext) EasyMock .createMock(FlowExecutionContext.class); private MutableAttributeMap flashScope = (MutableAttributeMap) EasyMock.createMock(MutableAttributeMap.class); private MutableAttributeMap flowMap = (MutableAttributeMap) EasyMock.createMock(MutableAttributeMap.class); private FlowExecutionKey key = new FlowExecutionKey() { public String toString() { return "MOCK_KEY"; } public boolean equals(Object o) { return true; } public int hashCode() { return 0; } }; protected void setUp() throws Exception { jsfMock.setUp(); jsfMock.facesContext().getApplication().setViewHandler(new MockViewHandler()); jsfMock.facesContext().getApplication().setStateManager(new TestStateManager()); jsfMock.facesContext().setResponseWriter(new MockResponseWriter(output, null, null)); UIViewRoot viewToRender = new UIViewRoot(); viewToRender.setRenderKitId("HTML_BASIC"); viewToRender.setViewId(VIEW_ID); jsfMock.facesContext().setViewRoot(viewToRender); UIForm form = new HtmlForm(); form.setId("myForm"); UIInput input = new HtmlInputText(); input.setId("foo"); form.getChildren().add(input); viewToRender.getChildren().add(form); RequestContextHolder.setRequestContext(context); EasyMock.expect(context.getExternalContext()).andStubReturn(extContext); EasyMock.expect(context.getFlashScope()).andStubReturn(flashScope); EasyMock.expect(context.getFlowScope()).andStubReturn(flowMap); EasyMock.expect(context.getFlowExecutionContext()).andStubReturn(flowExecutionContext); EasyMock.expect(flowExecutionContext.getKey()).andStubReturn(key); view = new JsfView(viewToRender, jsfMock.lifecycle(), context); } protected void tearDown() throws Exception { jsfMock.tearDown(); } public final void testSaveState() { EasyMock.replay(new Object[] { context, flowExecutionContext, flowMap, flashScope }); view.saveState(); } public final void testSaveState_AjaxViewRoot() { EasyMock.replay(new Object[] { context, flowExecutionContext, flowMap, flashScope }); view.setViewRoot(new AjaxViewRoot(view.getViewRoot())); view.saveState(); } public final void testRender() throws IOException { EasyMock.expect(flashScope.put(EasyMock.matches(FlowFacesContext.RENDER_RESPONSE_KEY), EasyMock.anyObject())) .andStubReturn(null); EasyMock.replay(new Object[] { context, flowExecutionContext, flowMap, flashScope }); view.render(); assertNull("The FacesContext was not released", FacesContext.getCurrentInstance()); } public final void testRenderException() throws IOException { EasyMock.expect(flashScope.put(EasyMock.matches(FlowFacesContext.RENDER_RESPONSE_KEY), EasyMock.anyObject())) .andStubReturn(null); EasyMock.replay(new Object[] { context, flowExecutionContext, flowMap, flashScope }); jsfMock.application().setViewHandler(new ExceptionalViewHandler()); try { view.render(); } catch (FacesException ex) { assertNull("The FacesContext was not released", FacesContext.getCurrentInstance()); } } /** * View already exists in view scope and must be restored and the lifecycle executed, no event signaled */ public final void testProcessUserEvent_Restored_NoEvent() { EasyMock.expect(flashScope.getBoolean(EasyMock.matches(FlowFacesContext.RENDER_RESPONSE_KEY))).andStubReturn( Boolean.FALSE); EasyMock.expect(flashScope.put(EasyMock.matches(FlowFacesContext.RENDER_RESPONSE_KEY), EasyMock.anyObject())) .andStubReturn(null); Lifecycle lifecycle = new NoEventLifecycle(jsfMock.lifecycle()); UIViewRoot existingRoot = new UIViewRoot(); existingRoot.setViewId(VIEW_ID); EasyMock.replay(new Object[] { context, flowExecutionContext, flowMap, flashScope }); JsfView restoredView = new JsfView(existingRoot, lifecycle, context); restoredView.processUserEvent(); assertFalse("An unexpected event was signaled,", restoredView.hasFlowEvent()); assertTrue("The lifecycle should have been invoked", ((NoEventLifecycle) lifecycle).executed); } /** * Ajax Request - View already exists in view scope and must be restored and the lifecycle executed, no event * signaled */ public final void testProcessUserEvent_Restored_Ajax_NoEvent() { EasyMock.expect(flashScope.getBoolean(EasyMock.matches(FlowFacesContext.RENDER_RESPONSE_KEY))).andStubReturn( Boolean.FALSE); EasyMock.expect(flashScope.put(EasyMock.matches(FlowFacesContext.RENDER_RESPONSE_KEY), EasyMock.anyObject())) .andStubReturn(null); Lifecycle lifecycle = new NoEventLifecycle(jsfMock.lifecycle()); UIViewRoot existingRoot = new UIViewRoot(); existingRoot.setViewId(VIEW_ID); AjaxViewRoot ajaxRoot = new AjaxViewRoot(existingRoot); EasyMock.replay(new Object[] { context, flowExecutionContext, flowMap, flashScope }); JsfView restoredView = new JsfView(ajaxRoot, lifecycle, context); restoredView.processUserEvent(); assertFalse("An unexpected event was signaled,", restoredView.hasFlowEvent()); assertTrue("The lifecycle should have been invoked", ((NoEventLifecycle) lifecycle).executed); } /** * View already exists in view scope and must be restored and the lifecycle executed, an event is signaled */ public final void testProcessUserEvent_Restored_EventSignaled() { EasyMock.expect(flashScope.getBoolean(EasyMock.matches(FlowFacesContext.RENDER_RESPONSE_KEY))).andStubReturn( Boolean.FALSE); EasyMock.expect(flashScope.put(EasyMock.matches(FlowFacesContext.RENDER_RESPONSE_KEY), EasyMock.anyObject())) .andStubReturn(null); Lifecycle lifecycle = new EventSignalingLifecycle(jsfMock.lifecycle()); UIViewRoot existingRoot = new UIViewRoot(); existingRoot.setViewId(VIEW_ID); EasyMock.replay(new Object[] { context, flowExecutionContext, flowMap, flashScope }); JsfView restoredView = new JsfView(existingRoot, lifecycle, context); restoredView.processUserEvent(); assertTrue("No event was signaled,", restoredView.hasFlowEvent()); assertEquals("Event should be " + event, event, restoredView.getFlowEvent().getId()); assertTrue("The lifecycle should have been invoked", ((EventSignalingLifecycle) lifecycle).executed); } public final void testUserEventQueued_GETRefresh() { MockParameterMap requestParameterMap = new MockParameterMap(); requestParameterMap.put("execution", "e1s1"); EasyMock.expect(context.getRequestParameters()).andStubReturn(requestParameterMap); EasyMock.replay(new Object[] { context, flowExecutionContext, flowMap, flashScope }); JsfView createdView = new JsfView(new UIViewRoot(), jsfMock.lifecycle(), context); assertFalse("No user event should be queued", createdView.userEventQueued()); } public final void testUserEventQueued_FormSubmitted() { MockParameterMap requestParameterMap = new MockParameterMap(); requestParameterMap.put("execution", "e1s1"); requestParameterMap.put("javax.faces.ViewState", "e1s1"); EasyMock.expect(context.getRequestParameters()).andStubReturn(requestParameterMap); EasyMock.replay(new Object[] { context, flowExecutionContext, flowMap, flashScope }); JsfView createdView = new JsfView(new UIViewRoot(), jsfMock.lifecycle(), context); assertTrue("User event should be queued", createdView.userEventQueued()); } private class ExceptionalViewHandler extends MockViewHandler { public void renderView(FacesContext context, UIViewRoot viewToRender) throws IOException, FacesException { throw new IOException("Rendering blew up"); } } private class TestStateManager extends MockStateManager { public SerializedView saveSerializedView(FacesContext context) { SerializedView state = new SerializedView(new Object[] { "tree_state" }, new Object[] { "component_state" }); return state; } } private class NoEventLifecycle extends FlowLifecycle { boolean executed = false; public NoEventLifecycle(Lifecycle delegate) { super(delegate); } public void execute(FacesContext context) throws FacesException { assertFalse("Lifecycle executed more than once", executed); super.execute(context); executed = true; } } private class EventSignalingLifecycle extends FlowLifecycle { boolean executed = false; public EventSignalingLifecycle(Lifecycle delegate) { super(delegate); } public void execute(FacesContext context) throws FacesException { assertFalse("Lifecycle executed more than once", executed); super.execute(context); extContext.getRequestMap().put(JsfView.EVENT_KEY, event); executed = true; } } } ���������������������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000244�00000000000�011565� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-faces/src/test/java/org/springframework/faces/webflow/JsfManagedBeanAwareELExpressionParserTests.java�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-faces/src/test/java/org/springframewor0000644�0000000�0000000�00000002466�11360615634�027773� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������package org.springframework.faces.webflow; import junit.framework.TestCase; import org.jboss.el.ExpressionFactoryImpl; import org.springframework.binding.expression.Expression; import org.springframework.binding.expression.ExpressionParser; import org.springframework.binding.expression.support.FluentParserContext; import org.springframework.webflow.execution.RequestContext; import org.springframework.webflow.execution.RequestContextHolder; import org.springframework.webflow.test.MockRequestContext; public class JsfManagedBeanAwareELExpressionParserTests extends TestCase { JSFMockHelper jsfMock = new JSFMockHelper(); RequestContext requestContext = new MockRequestContext(); ExpressionParser parser; protected void setUp() throws Exception { jsfMock.setUp(); RequestContextHolder.setRequestContext(requestContext); parser = new JsfManagedBeanAwareELExpressionParser(new ExpressionFactoryImpl()); } protected void tearDown() throws Exception { jsfMock.tearDown(); } public void testGetJSFBean() { jsfMock.externalContext().getRequestMap().put("myJsfBean", new Object()); Expression expr = parser.parseExpression("myJsfBean", new FluentParserContext().evaluate(RequestContext.class)); Object result = expr.getValue(requestContext); assertNotNull("The JSF Bean should not be null.", result); } } ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000212�00000000000�011560� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-faces/src/test/java/org/springframework/faces/webflow/MockFacesContext.java���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-faces/src/test/java/org/springframewor0000644�0000000�0000000�00000006514�11360615634�027771� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* * Copyright 2004-2008 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.springframework.faces.webflow; import java.util.Iterator; import javax.faces.application.Application; import javax.faces.application.FacesMessage; import javax.faces.application.FacesMessage.Severity; import javax.faces.component.UIViewRoot; import javax.faces.context.ExternalContext; import javax.faces.context.FacesContext; import javax.faces.context.ResponseStream; import javax.faces.context.ResponseWriter; import javax.faces.render.RenderKit; /** * Mock implementation of the <code>FacesContext</code> class to facilitate standalone Action unit tests. * <p> * NOT intended to be used for anything but standalone unit tests. This is a simple state holder, a <i>stub</i> * implementation, at least if you follow <a href="http://www.martinfowler.com/articles/mocksArentStubs.html">Martin * Fowler's</a> reasoning. This class is called <i>Mock</i>FacesContext to be consistent with the naming convention in * the rest of the Spring framework (e.g. MockHttpServletRequest, ...). * * @see javax.faces.context.FacesContext * * @author Ulrik Sandberg */ public class MockFacesContext extends FacesContext { private ExternalContext externalContext; private Application application; private UIViewRoot viewRoot; public Application getApplication() { return application; } /** * Set the application to be used by this faces context. * @param application the applicaiton to set. */ public void setApplication(Application application) { this.application = application; } public Iterator getClientIdsWithMessages() { return null; } public ExternalContext getExternalContext() { return externalContext; } /** * Set the external context of this faces context. * @param externalContext the external context to set. */ public void setExternalContext(ExternalContext externalContext) { this.externalContext = externalContext; } public Severity getMaximumSeverity() { return null; } public Iterator getMessages() { return null; } public Iterator getMessages(String arg0) { return null; } public RenderKit getRenderKit() { return null; } public boolean getRenderResponse() { return false; } public boolean getResponseComplete() { return false; } public ResponseStream getResponseStream() { return null; } public void setResponseStream(ResponseStream arg0) { } public ResponseWriter getResponseWriter() { return null; } public void setResponseWriter(ResponseWriter arg0) { } public UIViewRoot getViewRoot() { return viewRoot; } public void setViewRoot(UIViewRoot viewRoot) { this.viewRoot = viewRoot; } public void addMessage(String arg0, FacesMessage arg1) { } public void release() { } public void renderResponse() { } public void responseComplete() { } }������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000211�00000000000�011557� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-faces/src/test/java/org/springframework/faces/webflow/MockViewHandler.java����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-faces/src/test/java/org/springframewor0000644�0000000�0000000�00000004466�11360615636�027777� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* * Copyright 2004-2008 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.springframework.faces.webflow; import java.io.IOException; import java.util.Locale; import javax.faces.FacesException; import javax.faces.application.ViewHandler; import javax.faces.component.UIViewRoot; import javax.faces.context.FacesContext; public class MockViewHandler extends ViewHandler { private UIViewRoot createViewRoot; private UIViewRoot restoreViewRoot; public Locale calculateLocale(FacesContext context) { return null; } public String calculateRenderKitId(FacesContext context) { return null; } public UIViewRoot createView(FacesContext context, String viewId) { return createViewRoot; } public void initView(FacesContext context) throws FacesException { // do nothing } /** * Set the view root that this mock is supposed to create * @param createViewRoot the view to set. */ public void setCreateView(UIViewRoot createViewRoot) { this.createViewRoot = createViewRoot; } /** * Set the view root that this mock is supposed to restore * @param restoreViewRoot the view to set. */ public void setRestoreView(UIViewRoot restoreViewRoot) { this.restoreViewRoot = restoreViewRoot; } public String getActionURL(FacesContext context, String viewId) { return null; } public String getResourceURL(FacesContext context, String path) { return null; } /** * Really simple implementation to exercise rendering and state saving */ public void renderView(FacesContext context, UIViewRoot viewToRender) throws IOException, FacesException { context.getViewRoot().encodeAll(context); } public UIViewRoot restoreView(FacesContext context, String viewId) { return restoreViewRoot; } public void writeState(FacesContext context) throws IOException { } }����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000210�00000000000�011556� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-faces/src/test/java/org/springframework/faces/webflow/JSFManagedBean.java�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-faces/src/test/java/org/springframewor0000644�0000000�0000000�00000001067�11360615644�027770� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������package org.springframework.faces.webflow; import java.util.ArrayList; import java.util.List; public class JSFManagedBean { String prop1; JSFModel model; List values = new ArrayList(); public JSFModel getModel() { return model; } public void setModel(JSFModel model) { this.model = model; } public String getProp1() { return prop1; } public void setProp1(String prop1) { this.prop1 = prop1; } public void addValue(String value) { values.add(value); } public List getValues() { return values; } } �������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000215�00000000000�011563� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-faces/src/test/java/org/springframework/faces/webflow/JsfViewFactoryTests.java������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-faces/src/test/java/org/springframewor0000644�0000000�0000000�00000027333�11360615632�027771� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������package org.springframework.faces.webflow; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import javax.faces.FacesException; import javax.faces.application.ViewHandler; import javax.faces.component.UIInput; import javax.faces.component.UIOutput; import javax.faces.component.UIPanel; import javax.faces.component.UIViewRoot; import javax.faces.context.FacesContext; import javax.faces.event.PhaseEvent; import javax.faces.event.PhaseId; import javax.faces.event.PhaseListener; import javax.faces.lifecycle.Lifecycle; import junit.framework.TestCase; import org.easymock.EasyMock; import org.jboss.el.ExpressionFactoryImpl; import org.springframework.binding.expression.ExpressionParser; import org.springframework.binding.expression.support.FluentParserContext; import org.springframework.faces.ui.AjaxViewRoot; import org.springframework.mock.web.MockHttpServletRequest; import org.springframework.mock.web.MockHttpServletResponse; import org.springframework.mock.web.MockServletContext; import org.springframework.webflow.core.collection.AttributeMap; import org.springframework.webflow.core.collection.LocalAttributeMap; import org.springframework.webflow.core.collection.LocalParameterMap; import org.springframework.webflow.core.collection.MutableAttributeMap; import org.springframework.webflow.definition.FlowDefinition; import org.springframework.webflow.definition.StateDefinition; import org.springframework.webflow.execution.RequestContext; import org.springframework.webflow.execution.RequestContextHolder; import org.springframework.webflow.execution.View; import org.springframework.webflow.execution.ViewFactory; import org.springframework.webflow.expression.el.WebFlowELExpressionParser; import org.springframework.webflow.test.MockExternalContext; public class JsfViewFactoryTests extends TestCase { private static final String VIEW_ID = "/testView.xhtml"; private ViewFactory factory; private JSFMockHelper jsfMock = new JSFMockHelper(); private RequestContext context = (RequestContext) EasyMock.createMock(RequestContext.class); private AttributeMap flashMap = new LocalAttributeMap(); private ViewHandler viewHandler = new MockViewHandler(); private Lifecycle lifecycle; private PhaseListener trackingListener; private ExpressionParser parser = new WebFlowELExpressionParser(new ExpressionFactoryImpl()); private MockExternalContext extContext = new MockExternalContext(); private MockServletContext servletContext = new MockServletContext(); private MockHttpServletRequest request = new MockHttpServletRequest(); private MockHttpServletResponse response = new MockHttpServletResponse(); protected void setUp() throws Exception { configureJsf(); extContext.setNativeContext(servletContext); extContext.setNativeRequest(request); extContext.setNativeResponse(response); RequestContextHolder.setRequestContext(context); EasyMock.expect(context.getFlashScope()).andStubReturn(flashMap); EasyMock.expect(context.getExternalContext()).andStubReturn(extContext); EasyMock.expect(context.getRequestParameters()).andStubReturn(new LocalParameterMap(new HashMap())); } protected void tearDown() throws Exception { jsfMock.tearDown(); } private void configureJsf() throws Exception { jsfMock.setUp(); trackingListener = new TrackingPhaseListener(); jsfMock.lifecycle().addPhaseListener(trackingListener); jsfMock.facesContext().setViewRoot(null); jsfMock.facesContext().getApplication().setViewHandler(viewHandler); } /** * View has not yet been created */ public final void testGetView_Create() { lifecycle = new NoExecutionLifecycle(jsfMock.lifecycle()); factory = new JsfViewFactory(parser.parseExpression(VIEW_ID, new FluentParserContext().template().evaluate( RequestContext.class).expectResult(String.class)), lifecycle); UIViewRoot newRoot = new UIViewRoot(); newRoot.setViewId(VIEW_ID); ((MockViewHandler) viewHandler).setCreateView(newRoot); context.inViewState(); EasyMock.expectLastCall().andReturn(Boolean.TRUE); EasyMock.replay(new Object[] { context }); View newView = factory.getView(context); assertNotNull("A View was not created", newView); assertTrue("A JsfView was expected", newView instanceof JsfView); assertEquals("View name did not match", VIEW_ID, ((JsfView) newView).getViewRoot().getViewId()); assertFalse("An unexpected event was signaled,", newView.hasFlowEvent()); } /** * View already exists in view/flash scope and must be restored and the lifecycle executed, no event signaled */ public final void testGetView_Restore() { lifecycle = new NoExecutionLifecycle(jsfMock.lifecycle()); factory = new JsfViewFactory(parser.parseExpression(VIEW_ID, new FluentParserContext().template().evaluate( RequestContext.class).expectResult(String.class)), lifecycle); UIViewRoot existingRoot = new UIViewRoot(); existingRoot.setViewId(VIEW_ID); UIInput input = new UIInput(); input.setId("invalidInput"); input.setValid(false); existingRoot.getChildren().add(input); ((MockViewHandler) viewHandler).setRestoreView(existingRoot); context.inViewState(); EasyMock.expectLastCall().andReturn(Boolean.TRUE); EasyMock.replay(new Object[] { context }); View restoredView = factory.getView(context); assertNotNull("A View was not restored", restoredView); assertTrue("A JsfView was expected", restoredView instanceof JsfView); assertEquals("View name did not match", VIEW_ID, ((JsfView) restoredView).getViewRoot().getViewId()); assertFalse("An unexpected event was signaled,", restoredView.hasFlowEvent()); assertTrue("The input component's valid flag was not reset", input.isValid()); } /** * View already exists in view/flash scope and must be restored and the lifecycle executed, no event signaled */ public final void testGetView_RestoreWithBindings() { lifecycle = new NoExecutionLifecycle(jsfMock.lifecycle()); factory = new JsfViewFactory(parser.parseExpression(VIEW_ID, new FluentParserContext().template().evaluate( RequestContext.class).expectResult(String.class)), lifecycle); UIViewRoot existingRoot = new UIViewRoot(); existingRoot.setViewId(VIEW_ID); UIPanel panel = new UIPanel(); panel.setId("panel1"); UIOutput output = new UIOutput(); output.setValueBinding("binding", jsfMock.facesContext().getApplication() .createValueBinding("#{myBean.output}")); output.setId("output1"); UIInput input = new UIInput(); input.setValueBinding("binding", jsfMock.facesContext().getApplication().createValueBinding("#{myBean.input}")); input.setId("input1"); existingRoot.getChildren().add(panel); panel.getFacets().put("label", output); panel.getChildren().add(input); TestBean testBean = new TestBean(); jsfMock.externalContext().getRequestMap().put("myBean", testBean); ((MockViewHandler) viewHandler).setRestoreView(existingRoot); context.inViewState(); EasyMock.expectLastCall().andReturn(Boolean.TRUE); EasyMock.replay(new Object[] { context }); View restoredView = factory.getView(context); assertNotNull("A View was not restored", restoredView); assertTrue("A JsfView was expected", restoredView instanceof JsfView); assertEquals("View name did not match", VIEW_ID, ((JsfView) restoredView).getViewRoot().getViewId()); assertFalse("An unexpected event was signaled,", restoredView.hasFlowEvent()); assertSame("The UIInput binding was not restored properly", input, testBean.getInput()); assertSame("The faceted UIOutput binding was not restored properly", output, testBean.getOutput()); } /** * Ajax Request - View already exists in view/flash scope and must be restored and the lifecycle executed, no event * signaled */ public final void testGetView_Restore_Ajax() { lifecycle = new NoExecutionLifecycle(jsfMock.lifecycle()); factory = new JsfViewFactory(parser.parseExpression(VIEW_ID, new FluentParserContext().template().evaluate( RequestContext.class).expectResult(String.class)), lifecycle); UIViewRoot existingRoot = new UIViewRoot(); existingRoot.setViewId(VIEW_ID); ((MockViewHandler) viewHandler).setRestoreView(existingRoot); request.addHeader("Accept", "text/html;type=ajax"); EasyMock.expect(context.getCurrentState()).andReturn(new NormalViewState()); context.inViewState(); EasyMock.expectLastCall().andReturn(Boolean.TRUE); EasyMock.replay(new Object[] { context }); View restoredView = factory.getView(context); assertNotNull("A View was not restored", restoredView); assertTrue("A JsfView was expected", restoredView instanceof JsfView); assertTrue("An AjaxViewRoot was not set", ((JsfView) restoredView).getViewRoot() instanceof AjaxViewRoot); assertEquals("View name did not match", VIEW_ID, ((JsfView) restoredView).getViewRoot().getViewId()); assertFalse("An unexpected event was signaled,", restoredView.hasFlowEvent()); } /** * Third party sets the view root before RESTORE_VIEW */ public final void testGetView_ExternalViewRoot() { lifecycle = new NoExecutionLifecycle(jsfMock.lifecycle()); factory = new JsfViewFactory(parser.parseExpression(VIEW_ID, new FluentParserContext().template().evaluate( RequestContext.class).expectResult(String.class)), lifecycle); UIViewRoot newRoot = new UIViewRoot(); newRoot.setViewId(VIEW_ID); jsfMock.facesContext().setViewRoot(newRoot); jsfMock.facesContext().renderResponse(); EasyMock.replay(new Object[] { context }); View newView = factory.getView(context); assertNotNull("A View was not created", newView); assertTrue("A JsfView was expected", newView instanceof JsfView); assertEquals("View name did not match", VIEW_ID, ((JsfView) newView).getViewRoot().getViewId()); assertSame("View root was not the third party instance", newRoot, ((JsfView) newView).getViewRoot()); assertFalse("An unexpected event was signaled,", newView.hasFlowEvent()); } private class NoExecutionLifecycle extends FlowLifecycle { public NoExecutionLifecycle(Lifecycle delegate) { super(delegate); } public void execute(FacesContext context) throws FacesException { fail("The lifecycle should not be invoked from the ViewFactory"); } } private class TrackingPhaseListener implements PhaseListener { private List phaseCallbacks = new ArrayList(); public void afterPhase(PhaseEvent event) { String phaseCallback = "AFTER_" + event.getPhaseId(); assertFalse("Phase callback " + phaseCallback + " already executed.", phaseCallbacks .contains(phaseCallback)); phaseCallbacks.add(phaseCallback); } public void beforePhase(PhaseEvent event) { String phaseCallback = "BEFORE_" + event.getPhaseId(); assertFalse("Phase callback " + phaseCallback + " already executed.", phaseCallbacks .contains(phaseCallback)); phaseCallbacks.add(phaseCallback); } public PhaseId getPhaseId() { return PhaseId.ANY_PHASE; } public List getPhaseCallbacks() { return phaseCallbacks; } } private class NormalViewState implements StateDefinition { public boolean isViewState() { return true; } public String getId() { throw new UnsupportedOperationException("Auto-generated method stub"); } public FlowDefinition getOwner() { throw new UnsupportedOperationException("Auto-generated method stub"); } public MutableAttributeMap getAttributes() { throw new UnsupportedOperationException("Auto-generated method stub"); } public String getCaption() { throw new UnsupportedOperationException("Auto-generated method stub"); } public String getDescription() { throw new UnsupportedOperationException("Auto-generated method stub"); } } protected class TestBean { UIOutput output; UIInput input; public UIOutput getOutput() { return output; } public void setOutput(UIOutput output) { this.output = output; } public UIInput getInput() { return input; } public void setInput(UIInput input) { this.input = input; } } } �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000207�00000000000�011564� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-faces/src/test/java/org/springframework/faces/webflow/JSFMockHelper.java������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-faces/src/test/java/org/springframewor0000644�0000000�0000000�00000013674�11360615636�030000� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������package org.springframework.faces.webflow; import javax.faces.FactoryFinder; import javax.faces.application.Application; import javax.faces.component.UIViewRoot; import javax.faces.context.FacesContext; import javax.faces.context.FacesContextFactory; import javax.faces.lifecycle.LifecycleFactory; import javax.faces.render.RenderKitFactory; import org.apache.shale.test.base.AbstractJsfTestCase; import org.apache.shale.test.mock.MockApplication; import org.apache.shale.test.mock.MockExternalContext; import org.apache.shale.test.mock.MockHttpServletRequest; import org.apache.shale.test.mock.MockHttpServletResponse; import org.apache.shale.test.mock.MockHttpSession; import org.apache.shale.test.mock.MockLifecycle; import org.apache.shale.test.mock.MockLifecycleFactory; import org.apache.shale.test.mock.MockRenderKit; import org.apache.shale.test.mock.MockServletConfig; import org.apache.shale.test.mock.MockServletContext; /** * Helper for using the mock JSF environment provided by shale-test inside unit tests that do not extend * {@link AbstractJsfTestCase} * @author Jeremy Grelle * */ public class JSFMockHelper { private JSFMock mock = new JSFMock(); public Application application() { return mock.application(); } public MockServletConfig config() { return mock.config(); } public MockExternalContext externalContext() { return mock.externalContext(); } public FacesContext facesContext() { return mock.facesContext(); } public FacesContextFactory facesContextFactory() { return mock.facesContextFactory(); } public MockLifecycle lifecycle() { return mock.lifecycle(); } public MockLifecycleFactory lifecycleFactory() { return mock.lifecycleFactory(); } public MockRenderKit renderKit() { return mock.renderKit(); } public MockHttpServletRequest request() { return mock.request(); } public MockHttpServletResponse response() { return mock.response(); } public MockServletContext servletContext() { return mock.servletContext(); } public MockHttpSession session() { return mock.session(); } public void setUp() throws Exception { mock.setUp(); } public void tearDown() throws Exception { mock.tearDown(); } private static class JSFMock extends AbstractJsfTestCase { public JSFMock() { super("JSFMock"); } FacesContextFactory facesContextFactory; FacesContext facesContext; public void setUp() throws Exception { // Thread.currentThread().setContextClassLoader( // new URLClassLoader(new URL[0], this.getClass().getClassLoader())); // Set up Servlet API Objects servletContext = new MockServletContext(); config = new MockServletConfig(servletContext); session = new MockHttpSession(); session.setServletContext(servletContext); request = new MockHttpServletRequest(session); request.setServletContext(servletContext); response = new MockHttpServletResponse(); // Set up JSF API Objects FactoryFinder.setFactory(FactoryFinder.APPLICATION_FACTORY, "org.apache.shale.test.mock.MockApplicationFactory"); FactoryFinder.setFactory(FactoryFinder.FACES_CONTEXT_FACTORY, "org.springframework.faces.webflow.MockBaseFacesContextFactory"); /* * FactoryFinder.setFactory(FactoryFinder.FACES_CONTEXT_FACTORY, * "org.apache.shale.test.mock.MockFacesContextFactory"); */ FactoryFinder .setFactory(FactoryFinder.LIFECYCLE_FACTORY, "org.apache.shale.test.mock.MockLifecycleFactory"); FactoryFinder.setFactory(FactoryFinder.RENDER_KIT_FACTORY, "org.apache.shale.test.mock.MockRenderKitFactory"); application = new MockApplication(); externalContext = new MockExternalContext(servletContext, request, response); lifecycleFactory = (MockLifecycleFactory) FactoryFinder.getFactory(FactoryFinder.LIFECYCLE_FACTORY); lifecycle = (MockLifecycle) lifecycleFactory.getLifecycle(LifecycleFactory.DEFAULT_LIFECYCLE); facesContextFactory = (FacesContextFactory) FactoryFinder.getFactory(FactoryFinder.FACES_CONTEXT_FACTORY); facesContext = facesContextFactory.getFacesContext(servletContext, request, response, lifecycle); externalContext = (MockExternalContext) facesContext.getExternalContext(); UIViewRoot root = new UIViewRoot(); root.setViewId("/viewId"); root.setRenderKitId(RenderKitFactory.HTML_BASIC_RENDER_KIT); facesContext.setViewRoot(root); RenderKitFactory renderKitFactory = (RenderKitFactory) FactoryFinder .getFactory(FactoryFinder.RENDER_KIT_FACTORY); renderKit = new MockRenderKit(); renderKitFactory.addRenderKit(RenderKitFactory.HTML_BASIC_RENDER_KIT, renderKit); } public void tearDown() throws Exception { application = null; config = null; externalContext = null; if (facesContext != null) { facesContext.release(); } facesContext = null; lifecycle = null; lifecycleFactory = null; renderKit = null; request = null; response = null; servletContext = null; session = null; FactoryFinder.releaseFactories(); } public MockApplication application() { return application; } public MockServletConfig config() { return config; } public MockExternalContext externalContext() { return externalContext; } public FacesContext facesContext() { return facesContext; } public FacesContextFactory facesContextFactory() { return facesContextFactory; } public MockLifecycle lifecycle() { return lifecycle; } public MockLifecycleFactory lifecycleFactory() { return lifecycleFactory; } public MockRenderKit renderKit() { return renderKit; } public MockHttpServletRequest request() { return request; } public MockHttpServletResponse response() { return response; } public MockServletContext servletContext() { return servletContext; } public MockHttpSession session() { return session; } } } ��������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000205�00000000000�011562� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-faces/src/test/java/org/springframework/faces/webflow/MockService.java��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-faces/src/test/java/org/springframewor0000644�0000000�0000000�00000000172�11360615640�027760� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������package org.springframework.faces.webflow; public interface MockService { public void doSomething(String arg); } ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000225�00000000000�011564� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-faces/src/test/java/org/springframework/faces/webflow/MockBaseFacesContextFactory.java����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-faces/src/test/java/org/springframewor0000644�0000000�0000000�00000002011�11360615642�027754� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������package org.springframework.faces.webflow; import javax.faces.FacesException; import javax.faces.context.ExternalContext; import javax.faces.context.FacesContext; import javax.faces.context.FacesContextFactory; import javax.faces.lifecycle.Lifecycle; import javax.servlet.ServletContext; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.apache.shale.test.mock.MockExternalContext; public class MockBaseFacesContextFactory extends FacesContextFactory { public FacesContext getFacesContext(Object context, Object request, Object response, Lifecycle lifecycle) throws FacesException { if (FacesContext.getCurrentInstance() != null && FacesContext.getCurrentInstance() instanceof MockBaseFacesContext) { return FacesContext.getCurrentInstance(); } else { ExternalContext ext = new MockExternalContext((ServletContext) context, (HttpServletRequest) request, (HttpServletResponse) response); return new MockBaseFacesContext(ext, lifecycle); } } } �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000202�00000000000�011557� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-faces/src/test/java/org/springframework/faces/webflow/JSFModel.java�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-faces/src/test/java/org/springframewor0000644�0000000�0000000�00000000322�11360615632�027756� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������package org.springframework.faces.webflow; public class JSFModel { String value; public String getValue() { return value; } public void setValue(String value) { this.value = value; } } ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000221�00000000000�011560� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-faces/src/test/java/org/springframework/faces/webflow/FlowActionListenerTests.java��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-faces/src/test/java/org/springframewor0000644�0000000�0000000�00000006326�11360615636�027774� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������package org.springframework.faces.webflow; import javax.faces.component.UICommand; import javax.faces.context.FacesContext; import javax.faces.el.EvaluationException; import javax.faces.el.MethodBinding; import javax.faces.el.MethodNotFoundException; import javax.faces.event.ActionEvent; import junit.framework.TestCase; import org.easymock.EasyMock; import org.springframework.webflow.core.collection.AttributeMap; import org.springframework.webflow.core.collection.LocalAttributeMap; import org.springframework.webflow.engine.Flow; import org.springframework.webflow.engine.ViewState; import org.springframework.webflow.execution.RequestContext; import org.springframework.webflow.execution.RequestContextHolder; import org.springframework.webflow.execution.View; import org.springframework.webflow.execution.ViewFactory; public class FlowActionListenerTests extends TestCase { FlowActionListener listener; JSFMockHelper jsfMock = new JSFMockHelper(); RequestContext context = (RequestContext) EasyMock.createMock(RequestContext.class); protected void setUp() throws Exception { jsfMock.setUp(); listener = new FlowActionListener(jsfMock.application().getActionListener()); RequestContextHolder.setRequestContext(context); AttributeMap flash = new LocalAttributeMap(); EasyMock.expect(context.getFlashScope()).andStubReturn(flash); EasyMock.expect(context.getCurrentState()).andStubReturn(new MockViewState()); EasyMock.replay(new Object[] { context }); } protected void tearDown() throws Exception { jsfMock.tearDown(); } public final void testProcessAction() { String outcome = "foo"; MethodBinding binding = new MethodBindingStub(outcome); UICommand commandButton = new UICommand(); commandButton.setAction(binding); ActionEvent event = new ActionEvent(commandButton); listener.processAction(event); assertTrue("The event was not signaled", jsfMock.externalContext().getRequestMap().containsKey( JsfView.EVENT_KEY)); assertEquals("The event should be " + outcome, outcome, jsfMock.externalContext().getRequestMap().get( JsfView.EVENT_KEY)); } public final void testProcessAction_NullOutcome() { String outcome = null; MethodBinding binding = new MethodBindingStub(outcome); UICommand commandButton = new UICommand(); commandButton.setAction(binding); ActionEvent event = new ActionEvent(commandButton); listener.processAction(event); assertFalse("An unexpected event was signaled", jsfMock.externalContext().getRequestMap().containsKey( JsfView.EVENT_KEY)); } private class MethodBindingStub extends MethodBinding { String result; public MethodBindingStub(String result) { this.result = result; } public Class getType(FacesContext context) throws MethodNotFoundException { return String.class; } public Object invoke(FacesContext context, Object[] args) throws EvaluationException, MethodNotFoundException { return this.result; } } private class MockViewState extends ViewState { public MockViewState() { super(new Flow("mockFlow"), "mockView", new ViewFactory() { public View getView(RequestContext context) { // TODO Auto-generated method stub throw new UnsupportedOperationException("Auto-generated method stub"); } }); } } } ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000211�00000000000�011557� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-faces/src/test/java/org/springframework/faces/webflow/MockApplication.java����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-faces/src/test/java/org/springframewor0000644�0000000�0000000�00000007572�11360615636�030000� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* * Copyright 2004-2008 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.springframework.faces.webflow; import java.util.Collection; import java.util.Iterator; import java.util.Locale; import javax.faces.FacesException; import javax.faces.application.Application; import javax.faces.application.NavigationHandler; import javax.faces.application.StateManager; import javax.faces.application.ViewHandler; import javax.faces.component.UIComponent; import javax.faces.context.FacesContext; import javax.faces.convert.Converter; import javax.faces.el.MethodBinding; import javax.faces.el.PropertyResolver; import javax.faces.el.ReferenceSyntaxException; import javax.faces.el.ValueBinding; import javax.faces.el.VariableResolver; import javax.faces.event.ActionListener; import javax.faces.validator.Validator; public class MockApplication extends Application { private ViewHandler viewHandler; public ActionListener getActionListener() { return null; } public void setActionListener(ActionListener listener) { } public Locale getDefaultLocale() { return null; } public void setDefaultLocale(Locale locale) { } public String getDefaultRenderKitId() { return null; } public void setDefaultRenderKitId(String renderKitId) { } public String getMessageBundle() { return null; } public void setMessageBundle(String bundle) { } public NavigationHandler getNavigationHandler() { return null; } public void setNavigationHandler(NavigationHandler handler) { } public PropertyResolver getPropertyResolver() { return null; } public void setPropertyResolver(PropertyResolver resolver) { } public VariableResolver getVariableResolver() { return null; } public void setVariableResolver(VariableResolver resolver) { } public ViewHandler getViewHandler() { return viewHandler; } public void setViewHandler(ViewHandler handler) { viewHandler = handler; } public StateManager getStateManager() { return null; } public void setStateManager(StateManager manager) { } public void addComponent(String componentType, String componentClass) { } public UIComponent createComponent(String componentType) throws FacesException { return null; } public UIComponent createComponent(ValueBinding componentBinding, FacesContext context, String componentType) throws FacesException { return null; } public Iterator getComponentTypes() { return null; } public void addConverter(String converterId, String converterClass) { } public void addConverter(Class targetClass, String converterClass) { } public Converter createConverter(String converterId) { return null; } public Converter createConverter(Class targetClass) { return null; } public Iterator getConverterIds() { return null; } public Iterator getConverterTypes() { return null; } public MethodBinding createMethodBinding(String ref, Class[] params) throws ReferenceSyntaxException { return null; } public Iterator getSupportedLocales() { return null; } public void setSupportedLocales(Collection locales) { } public void addValidator(String validatorId, String validatorClass) { } public Validator createValidator(String validatorId) throws FacesException { return null; } public Iterator getValidatorIds() { return null; } public ValueBinding createValueBinding(String ref) throws ReferenceSyntaxException { return null; } }��������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000220�00000000000�011557� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-faces/src/test/java/org/springframework/faces/webflow/MockJsfExternalContext.java���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-faces/src/test/java/org/springframewor0000644�0000000�0000000�00000007256�11360615632�027773� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* * Copyright 2004-2008 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.springframework.faces.webflow; import java.io.IOException; import java.io.InputStream; import java.net.MalformedURLException; import java.net.URL; import java.security.Principal; import java.util.Collections; import java.util.HashMap; import java.util.Iterator; import java.util.Locale; import java.util.Map; import java.util.Set; import javax.faces.context.ExternalContext; public class MockJsfExternalContext extends ExternalContext { private Map applicationMap = new HashMap(); private Map sessionMap = new HashMap(); private Map requestMap = new HashMap(); private Map requestParameterMap = Collections.EMPTY_MAP; public void dispatch(String arg0) throws IOException { } public String encodeActionURL(String arg0) { return null; } public String encodeNamespace(String arg0) { return null; } public String encodeResourceURL(String arg0) { return null; } public Map getApplicationMap() { return applicationMap; } public String getAuthType() { return null; } public Object getContext() { return null; } public String getInitParameter(String arg0) { return null; } public Map getInitParameterMap() { return null; } public String getRemoteUser() { return null; } public Object getRequest() { return null; } public String getRequestContextPath() { return null; } public Map getRequestCookieMap() { return null; } public Map getRequestHeaderMap() { return null; } public Map getRequestHeaderValuesMap() { return null; } public Locale getRequestLocale() { return null; } public Iterator getRequestLocales() { return null; } public Map getRequestMap() { return requestMap; } /** * Set the request map for this external context. * @param requestMap The requestMap to set. */ public void setRequestMap(Map requestMap) { this.requestMap = requestMap; } public Map getRequestParameterMap() { return requestParameterMap; } /** * Set the request parameter map for this external context. * @param requestParameterMap the request parameter map to set. */ public void setRequestParameterMap(Map requestParameterMap) { this.requestParameterMap = requestParameterMap; } public Iterator getRequestParameterNames() { return requestParameterMap.keySet().iterator(); } public Map getRequestParameterValuesMap() { return null; } public String getRequestPathInfo() { return null; } public String getRequestServletPath() { return null; } public URL getResource(String arg0) throws MalformedURLException { return null; } public InputStream getResourceAsStream(String arg0) { return null; } public Set getResourcePaths(String arg0) { return null; } public Object getResponse() { return null; } public Object getSession(boolean arg0) { return null; } public Map getSessionMap() { return sessionMap; } public Principal getUserPrincipal() { return null; } public boolean isUserInRole(String arg0) { return false; } public void log(String arg0) { } public void log(String arg0, Throwable arg1) { } public void redirect(String arg0) throws IOException { } }��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000217�00000000000�011565� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-faces/src/test/java/org/springframework/faces/webflow/FlowFacesContextTests.java����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-faces/src/test/java/org/springframewor0000644�0000000�0000000�00000024232�11360615632�027764� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������package org.springframework.faces.webflow; import java.io.ByteArrayInputStream; import java.io.ByteArrayOutputStream; import java.io.ObjectInputStream; import java.io.ObjectOutputStream; import java.io.Serializable; import java.util.ArrayList; import java.util.Iterator; import java.util.List; import javax.faces.application.FacesMessage; import javax.faces.context.FacesContext; import junit.framework.TestCase; import org.easymock.EasyMock; import org.springframework.binding.message.DefaultMessageContext; import org.springframework.binding.message.Message; import org.springframework.binding.message.MessageBuilder; import org.springframework.binding.message.MessageContext; import org.springframework.webflow.execution.RequestContext; public class FlowFacesContextTests extends TestCase { JSFMockHelper jsf = new JSFMockHelper(); FacesContext facesContext; RequestContext requestContext = (RequestContext) EasyMock.createMock(RequestContext.class); MessageContext messageContext; MessageContext prepopulatedMessageContext; protected void setUp() throws Exception { jsf.setUp(); facesContext = new FlowFacesContext(requestContext, jsf.facesContext()); setupMessageContext(); } protected void tearDown() throws Exception { jsf.tearDown(); } public final void testCurrentInstance() { assertSame(FacesContext.getCurrentInstance(), facesContext); } public final void testAddMessage() { messageContext = new DefaultMessageContext(); EasyMock.expect(requestContext.getMessageContext()).andStubReturn(messageContext); EasyMock.replay(new Object[] { requestContext }); facesContext.addMessage("foo", new FacesMessage(FacesMessage.SEVERITY_INFO, "foo", "bar")); assertEquals("Message count is incorrect", 2, messageContext.getAllMessages().length); Message summaryMessage = messageContext.getMessagesBySource("foo_summary")[0]; assertEquals("foo", summaryMessage.getText()); Message detailMessage = messageContext.getMessagesBySource("foo_detail")[0]; assertEquals("bar", detailMessage.getText()); } public final void testAddMessages_MultipleNullIds() { messageContext = new DefaultMessageContext(); EasyMock.expect(requestContext.getMessageContext()).andStubReturn(messageContext); EasyMock.replay(new Object[] { requestContext }); facesContext.addMessage(null, new FacesMessage(FacesMessage.SEVERITY_INFO, "foo", "bar")); facesContext.addMessage(null, new FacesMessage(FacesMessage.SEVERITY_INFO, "zoo", "zar")); assertEquals("Message count is incorrect", 4, messageContext.getAllMessages().length); Message summaryMessage1 = messageContext.getMessagesBySource("null_summary")[0]; assertEquals("foo", summaryMessage1.getText()); Message detailMessage1 = messageContext.getMessagesBySource("null_detail")[0]; assertEquals("bar", detailMessage1.getText()); Message summaryMessage2 = messageContext.getMessagesBySource("null_summary")[1]; assertEquals("zoo", summaryMessage2.getText()); Message detailMessage2 = messageContext.getMessagesBySource("null_detail")[1]; assertEquals("zar", detailMessage2.getText()); } public final void testGetMessages() { messageContext = prepopulatedMessageContext; EasyMock.expect(requestContext.getMessageContext()).andStubReturn(messageContext); EasyMock.replay(new Object[] { requestContext }); int iterationCount = 0; Iterator i = facesContext.getMessages(); while (i.hasNext()) { assertNotNull(i.next()); iterationCount++; } assertEquals("There should be 6 messages to iterate", 6, iterationCount); } public final void testMutableGetMessages() { messageContext = prepopulatedMessageContext; EasyMock.expect(requestContext.getMessageContext()).andStubReturn(messageContext); EasyMock.replay(new Object[] { requestContext }); facesContext.addMessage("TESTID", new FacesMessage("summary1")); FacesMessage soruceMessage = (FacesMessage) facesContext.getMessages("TESTID").next(); soruceMessage.setSummary("summary2"); // check that message sticks around even when the facesContext has been torn down and re-created during the // processing of the current request FacesContext newFacesContext = new FlowFacesContext(requestContext, jsf.facesContext()); assertSame(FacesContext.getCurrentInstance(), newFacesContext); FacesMessage gotMessage = (FacesMessage) newFacesContext.getMessages("TESTID").next(); assertEquals("summary2", gotMessage.getSummary()); } public final void testGetMessagesByClientId_ForComponent() { messageContext = prepopulatedMessageContext; EasyMock.expect(requestContext.getMessageContext()).andStubReturn(messageContext); EasyMock.replay(new Object[] { requestContext }); int iterationCount = 0; Iterator i = facesContext.getMessages("componentId"); while (i.hasNext()) { FacesMessage message = (FacesMessage) i.next(); assertNotNull(message); assertEquals("componentId_summary" + (iterationCount + 1), message.getSummary()); assertEquals("componentId_detail" + (iterationCount + 1), message.getDetail()); iterationCount++; } assertEquals(2, iterationCount); } public final void testGetMessagesByClientId_ForUserMessage() { messageContext = prepopulatedMessageContext; EasyMock.expect(requestContext.getMessageContext()).andStubReturn(messageContext); EasyMock.replay(new Object[] { requestContext }); int iterationCount = 0; Iterator i = facesContext.getMessages("userMessage"); while (i.hasNext()) { FacesMessage message = (FacesMessage) i.next(); assertNotNull(message); assertEquals("userMessage", message.getSummary()); assertEquals("userMessage", message.getDetail()); iterationCount++; } assertEquals(1, iterationCount); } public final void testgetMessagesByClientId_InvalidId() { messageContext = prepopulatedMessageContext; EasyMock.expect(requestContext.getMessageContext()).andStubReturn(messageContext); EasyMock.replay(new Object[] { requestContext }); int iterationCount = 0; Iterator i = facesContext.getMessages("unknown"); while (i.hasNext()) { iterationCount++; } assertEquals(0, iterationCount); } public final void testGetClientIdsWithMessages() { messageContext = prepopulatedMessageContext; EasyMock.expect(requestContext.getMessageContext()).andStubReturn(messageContext); EasyMock.replay(new Object[] { requestContext }); List expectedOrderedIds = new ArrayList(); expectedOrderedIds.add(null); expectedOrderedIds.add("componentId"); expectedOrderedIds.add("userMessage"); int iterationCount = 0; Iterator i = facesContext.getClientIdsWithMessages(); while (i.hasNext()) { String clientId = (String) i.next(); assertEquals("Client id not expected", expectedOrderedIds.get(iterationCount), clientId); iterationCount++; } assertEquals(3, iterationCount); } public final void testMessagesAreSerializable() throws Exception { DefaultMessageContext messageContext = new DefaultMessageContext(); EasyMock.expect(requestContext.getMessageContext()).andStubReturn(messageContext); EasyMock.replay(new Object[] { requestContext }); facesContext.addMessage("TESTID", new FacesMessage("summary1")); FacesMessage sourceMessage = (FacesMessage) facesContext.getMessages("TESTID").next(); sourceMessage.setSummary("summary2"); sourceMessage.setSeverity(FacesMessage.SEVERITY_FATAL); Serializable mementoWrite = messageContext.createMessagesMemento(); ByteArrayOutputStream bos = new ByteArrayOutputStream(); ObjectOutputStream oos = new ObjectOutputStream(bos); oos.writeObject(mementoWrite); oos.flush(); byte[] byteArray = bos.toByteArray(); oos.close(); ByteArrayInputStream bis = new ByteArrayInputStream(byteArray); ObjectInputStream ois = new ObjectInputStream(bis); Serializable mementoRead = (Serializable) ois.readObject(); ois.close(); messageContext.restoreMessages(mementoRead); EasyMock.reset(new Object[] { requestContext }); EasyMock.expect(requestContext.getMessageContext()).andStubReturn(messageContext); EasyMock.replay(new Object[] { requestContext }); FacesContext newFacesContext = new FlowFacesContext(requestContext, jsf.facesContext()); assertSame(FacesContext.getCurrentInstance(), newFacesContext); FacesMessage gotMessage = (FacesMessage) newFacesContext.getMessages("TESTID").next(); assertEquals("summary2", gotMessage.getSummary()); assertEquals(FacesMessage.SEVERITY_FATAL, gotMessage.getSeverity()); } public final void testGetMaximumSeverity() { messageContext = prepopulatedMessageContext; EasyMock.expect(requestContext.getMessageContext()).andStubReturn(messageContext); EasyMock.replay(new Object[] { requestContext }); assertEquals(FacesMessage.SEVERITY_FATAL, facesContext.getMaximumSeverity()); } public final void testGetELContext() { assertNotNull(facesContext.getELContext()); assertSame(facesContext, facesContext.getELContext().getContext(FacesContext.class)); } private void setupMessageContext() { prepopulatedMessageContext = new DefaultMessageContext(); prepopulatedMessageContext.addMessage(new MessageBuilder().source("null_summary").defaultText("foo").info() .build()); prepopulatedMessageContext.addMessage(new MessageBuilder().source("null_detail").defaultText("foo").info() .build()); prepopulatedMessageContext.addMessage(new MessageBuilder().source("componentId_summary").defaultText( "componentId_summary1").warning().build()); prepopulatedMessageContext.addMessage(new MessageBuilder().source("componentId_detail").defaultText( "componentId_detail1").warning().build()); prepopulatedMessageContext.addMessage(new MessageBuilder().source("componentId_summary").defaultText( "componentId_summary2").warning().build()); prepopulatedMessageContext.addMessage(new MessageBuilder().source("componentId_detail").defaultText( "componentId_detail2").warning().build()); prepopulatedMessageContext.addMessage(new MessageBuilder().source("userMessage").defaultText("userMessage") .info().build()); prepopulatedMessageContext.addMessage(new MessageBuilder().source("null_summary").defaultText("baz").error() .build()); prepopulatedMessageContext.addMessage(new MessageBuilder().source("null_detail").defaultText("baz").error() .build()); prepopulatedMessageContext.addMessage(new MessageBuilder().defaultText("Subzero Wins - Fatality").fatal() .build()); } } ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000207�00000000000�011564� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-faces/src/test/java/org/springframework/faces/webflow/jsf-flow-beans.xml������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-faces/src/test/java/org/springframewor0000644�0000000�0000000�00000001413�11360615640�027757� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:flow="http://www.springframework.org/schema/webflow-config" xsi:schemaLocation=" http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd http://www.springframework.org/schema/webflow-config http://www.springframework.org/schema/webflow-config/spring-webflow-config-2.0.xsd"> <flow:enable-scopes/> <bean name="jsfModel" class="org.springframework.faces.webflow.JSFModel" scope="prototype"/> <bean name="flowScopedModel" class="org.springframework.faces.webflow.JSFModel" scope="flow"/> </beans> �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000225�00000000000�011564� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-faces/src/test/java/org/springframework/faces/webflow/JsfFinalResponseActionTests.java����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-faces/src/test/java/org/springframewor0000644�0000000�0000000�00000011736�11360615632�027771� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������package org.springframework.faces.webflow; import java.io.IOException; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import javax.faces.FacesException; import javax.faces.application.ViewHandler; import javax.faces.component.UIViewRoot; import javax.faces.context.FacesContext; import javax.faces.event.PhaseEvent; import javax.faces.event.PhaseId; import javax.faces.event.PhaseListener; import javax.faces.lifecycle.Lifecycle; import junit.framework.TestCase; import org.easymock.EasyMock; import org.jboss.el.ExpressionFactoryImpl; import org.springframework.binding.expression.ExpressionParser; import org.springframework.binding.expression.support.FluentParserContext; import org.springframework.mock.web.MockHttpServletRequest; import org.springframework.mock.web.MockHttpServletResponse; import org.springframework.mock.web.MockServletContext; import org.springframework.webflow.core.collection.AttributeMap; import org.springframework.webflow.core.collection.LocalAttributeMap; import org.springframework.webflow.core.collection.LocalParameterMap; import org.springframework.webflow.execution.RequestContext; import org.springframework.webflow.execution.RequestContextHolder; import org.springframework.webflow.execution.View; import org.springframework.webflow.expression.el.WebFlowELExpressionParser; import org.springframework.webflow.test.MockExternalContext; public class JsfFinalResponseActionTests extends TestCase { private static final String VIEW_ID = "/testView.xhtml"; private JsfViewFactory factory; private JSFMockHelper jsfMock = new JSFMockHelper(); private RequestContext context = (RequestContext) EasyMock.createMock(RequestContext.class); private ViewHandler viewHandler = new NoRenderViewHandler(); private TestLifecycle lifecycle; private PhaseListener trackingListener; ExpressionParser parser = new WebFlowELExpressionParser(new ExpressionFactoryImpl()); protected void setUp() throws Exception { configureJsf(); } protected void tearDown() throws Exception { jsfMock.tearDown(); } private void configureJsf() throws Exception { jsfMock.setUp(); trackingListener = new TrackingPhaseListener(); jsfMock.lifecycle().addPhaseListener(trackingListener); jsfMock.facesContext().setViewRoot(null); jsfMock.facesContext().getApplication().setViewHandler(viewHandler); lifecycle = new TestLifecycle(jsfMock.lifecycle()); factory = new JsfViewFactory(parser.parseExpression("#{'" + VIEW_ID + "'}", new FluentParserContext() .template().evaluate(RequestContext.class).expectResult(String.class)), lifecycle); RequestContextHolder.setRequestContext(context); MockExternalContext ext = new MockExternalContext(); ext.setNativeContext(new MockServletContext()); ext.setNativeRequest(new MockHttpServletRequest()); ext.setNativeResponse(new MockHttpServletResponse()); EasyMock.expect(context.getExternalContext()).andStubReturn(ext); AttributeMap requestMap = new LocalAttributeMap(); EasyMock.expect(context.getFlashScope()).andStubReturn(requestMap); EasyMock.expect(context.getRequestParameters()).andStubReturn(new LocalParameterMap(new HashMap())); } public void testRender() throws Exception { UIViewRoot newRoot = new UIViewRoot(); newRoot.setViewId(VIEW_ID); newRoot.setRenderKitId("HTML_BASIC"); ((MockViewHandler) viewHandler).setCreateView(newRoot); context.inViewState(); EasyMock.expectLastCall().andReturn(Boolean.FALSE); EasyMock.replay(new Object[] { context }); View view = factory.getView(context); ((JsfView) view).getViewRoot().setTransient(true); view.render(); assertTrue(newRoot.isTransient()); assertTrue(((NoRenderViewHandler) viewHandler).rendered); } private class TestLifecycle extends FlowLifecycle { boolean executed = false; public TestLifecycle(Lifecycle delegate) { super(delegate); } public void execute(FacesContext context) throws FacesException { assertFalse("Lifecycle executed more than once", executed); super.execute(context); executed = true; } } private class TrackingPhaseListener implements PhaseListener { private List phaseCallbacks = new ArrayList(); public void afterPhase(PhaseEvent event) { String phaseCallback = "AFTER_" + event.getPhaseId(); assertFalse("Phase callback " + phaseCallback + " already executed.", phaseCallbacks .contains(phaseCallback)); phaseCallbacks.add(phaseCallback); } public void beforePhase(PhaseEvent event) { String phaseCallback = "BEFORE_" + event.getPhaseId(); assertFalse("Phase callback " + phaseCallback + " already executed.", phaseCallbacks .contains(phaseCallback)); phaseCallbacks.add(phaseCallback); } public PhaseId getPhaseId() { return PhaseId.ANY_PHASE; } public List getPhaseCallbacks() { return phaseCallbacks; } } private class NoRenderViewHandler extends MockViewHandler { boolean rendered = false; public void renderView(FacesContext context, UIViewRoot viewToRender) throws IOException, FacesException { rendered = true; } } } ����������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000201�00000000000�011556� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-faces/src/test/java/org/springframework/faces/webflow/jsf-flow.xml������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-faces/src/test/java/org/springframewor0000644�0000000�0000000�00000002216�11360615644�027765� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������<?xml version="1.0" encoding="UTF-8"?> <flow xmlns="http://www.springframework.org/schema/webflow" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.springframework.org/schema/webflow http://www.springframework.org/schema/webflow/spring-webflow-1.0.xsd"> <start-state idref="viewState1" /> <view-state id="viewState1" view="view1"> <transition on="event1" to="doSomething"/> <transition on="event2" to="evalSomething"/> </view-state> <action-state id="doSomething"> <bean-action bean="serviceBean" method="doSomething"> <method-arguments> <argument expression="#{JsfBean.prop1}"/> </method-arguments> </bean-action> <transition to="viewState2"/> </action-state> <action-state id="evalSomething"> <evaluate-action expression="#{JsfBean.addValue(jsfModel.value)}"/> <transition to="viewState2"/> </action-state> <view-state id="viewState2" view="view2"> <transition on="event1" to="endState1"/> </view-state> <end-state id="endState1" view="endView1"/> </flow>����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000216�00000000000�011564� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-faces/src/test/java/org/springframework/faces/webflow/MockBaseFacesContext.java�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-faces/src/test/java/org/springframewor0000644�0000000�0000000�00000001704�11360615636�027767� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������package org.springframework.faces.webflow; import javax.faces.FactoryFinder; import javax.faces.application.Application; import javax.faces.application.ApplicationFactory; import javax.faces.context.ExternalContext; import javax.faces.lifecycle.Lifecycle; import org.apache.shale.test.mock.MockFacesContext12; public class MockBaseFacesContext extends MockFacesContext12 { private Application application; public MockBaseFacesContext() { super(); } public MockBaseFacesContext(ExternalContext externalContext) { super(externalContext); } public MockBaseFacesContext(ExternalContext externalContext, Lifecycle lifecycle) { super(externalContext, lifecycle); } public Application getApplication() { if (application == null) { ApplicationFactory applicationFactory = (ApplicationFactory) FactoryFinder .getFactory(FactoryFinder.APPLICATION_FACTORY); application = applicationFactory.getApplication(); } return application; } } ������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000163�00000000000�011565� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-faces/src/test/java/org/springframework/faces/model/��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-faces/src/test/java/org/springframewor0000755�0000000�0000000�00000000000�11360615634�027761� 5����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000234�00000000000�011564� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-faces/src/test/java/org/springframework/faces/model/SelectionTrackingActionListenerTests.java���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-faces/src/test/java/org/springframewor0000644�0000000�0000000�00000006370�11360615634�027771� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������package org.springframework.faces.model; import java.lang.reflect.Method; import java.util.ArrayList; import java.util.List; import javax.faces.component.UIColumn; import javax.faces.component.UICommand; import javax.faces.component.UIData; import javax.faces.component.UIViewRoot; import javax.faces.event.AbortProcessingException; import javax.faces.event.ActionEvent; import javax.faces.event.ActionListener; import org.springframework.util.ReflectionUtils; import com.sun.facelets.component.UIRepeat; import junit.framework.TestCase; public class SelectionTrackingActionListenerTests extends TestCase { /** * The JSF view to simulate */ private UIViewRoot viewToTest; /** * The list of row data objects to */ private OneSelectionTrackingListDataModel dataModel; /** * The delegate action listener that should be called */ private TestDelegateActionListener delegateListener = new TestDelegateActionListener(); /** * The class under test */ private ActionListener selectionTrackingListener = new SelectionTrackingActionListener(delegateListener); public void setUp() { viewToTest = new UIViewRoot(); List rows = new ArrayList(); rows.add(new TestRowData()); rows.add(new TestRowData()); rows.add(new TestRowData()); dataModel = new OneSelectionTrackingListDataModel(rows); } public void testProcessActionWithUIData() { UIData dataTable = new UIData(); dataTable.setValue(dataModel); UIColumn column = new UIColumn(); UICommand commandButton = new UICommand(); column.getChildren().add(commandButton); dataTable.getChildren().add(column); viewToTest.getChildren().add(dataTable); dataTable.setRowIndex(1); ActionEvent event = new ActionEvent(commandButton); selectionTrackingListener.processAction(event); assertTrue(dataModel.isCurrentRowSelected()); assertSame(dataModel.getSelectedRow(), dataModel.getRowData()); assertTrue(delegateListener.processedEvent); dataModel.setRowIndex(2); assertFalse(dataModel.isCurrentRowSelected()); assertTrue(dataModel.getSelectedRow() != dataModel.getRowData()); } public void testProcessActionWithUIRepeat() { UIRepeat uiRepeat = new UIRepeat(); uiRepeat.setValue(dataModel); UICommand commandButton = new UICommand(); uiRepeat.getChildren().add(commandButton); viewToTest.getChildren().add(uiRepeat); Method indexMutator = ReflectionUtils.findMethod(UIRepeat.class, "setIndex", new Class[] { int.class }); indexMutator.setAccessible(true); ReflectionUtils.invokeMethod(indexMutator, uiRepeat, new Object[] { new Integer(1) }); ActionEvent event = new ActionEvent(commandButton); selectionTrackingListener.processAction(event); assertTrue(dataModel.isCurrentRowSelected()); assertSame(dataModel.getSelectedRow(), dataModel.getRowData()); assertTrue(delegateListener.processedEvent); ReflectionUtils.invokeMethod(indexMutator, uiRepeat, new Object[] { new Integer(2) }); assertFalse(dataModel.isCurrentRowSelected()); assertTrue(dataModel.getSelectedRow() != dataModel.getRowData()); } private class TestRowData { } private class TestDelegateActionListener implements ActionListener { public boolean processedEvent = false; public void processAction(ActionEvent event) throws AbortProcessingException { processedEvent = true; } } } ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000175�00000000000�011570� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-faces/src/test/java/org/springframework/faces/model/converter/����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-faces/src/test/java/org/springframewor0000755�0000000�0000000�00000000000�11360615634�027761� 5����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000231�00000000000�011561� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-faces/src/test/java/org/springframework/faces/model/converter/DataModelConverterTests.java������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-faces/src/test/java/org/springframewor0000644�0000000�0000000�00000003453�11360615634�027770� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������package org.springframework.faces.model.converter; import java.io.Serializable; import java.util.ArrayList; import java.util.List; import javax.faces.model.DataModel; import javax.faces.model.ListDataModel; import junit.framework.TestCase; import org.springframework.binding.convert.converters.Converter; import org.springframework.faces.model.SerializableListDataModel; public class DataModelConverterTests extends TestCase { Converter converter = new DataModelConverter(); public void testConvertListToDataModel() throws Exception { List sourceList = new ArrayList(); DataModel resultModel = (DataModel) converter.convertSourceToTargetClass(sourceList, DataModel.class); assertNotNull(resultModel); assertSame(sourceList, resultModel.getWrappedData()); } public void testConvertListToListDataModel() throws Exception { List sourceList = new ArrayList(); DataModel resultModel = (DataModel) converter.convertSourceToTargetClass(sourceList, ListDataModel.class); assertNotNull(resultModel); assertSame(sourceList, resultModel.getWrappedData()); } public void testConvertListToSerializableListDataModel() throws Exception { List sourceList = new ArrayList(); DataModel resultModel = (DataModel) converter.convertSourceToTargetClass(sourceList, SerializableListDataModel.class); assertNotNull(resultModel); assertSame(sourceList, resultModel.getWrappedData()); assertTrue(resultModel instanceof Serializable); } public void testConvertListToSerializableListDataModelNullSource() throws Exception { List sourceList = null; DataModel resultModel = (DataModel) converter.convertSourceToTargetClass(sourceList, SerializableListDataModel.class); assertNotNull(resultModel); assertTrue(resultModel instanceof Serializable); assertEquals(0, resultModel.getRowCount()); } } ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000235�00000000000�011565� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-faces/src/test/java/org/springframework/faces/model/converter/FacesConversionServiceTests.java��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-faces/src/test/java/org/springframewor0000644�0000000�0000000�00000001206�11360615632�027760� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������package org.springframework.faces.model.converter; import java.util.ArrayList; import java.util.List; import javax.faces.model.DataModel; import junit.framework.TestCase; import org.springframework.binding.convert.ConversionExecutor; public class FacesConversionServiceTests extends TestCase { private FacesConversionService service; protected void setUp() throws Exception { service = new FacesConversionService(); } public void testGetAbstractType() { ConversionExecutor executor = service.getConversionExecutor(List.class, DataModel.class); ArrayList list = new ArrayList(); list.add("foo"); executor.execute(list); } } ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000164�00000000000�011566� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-faces/src/test/java/org/springframework/faces/config/�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-faces/src/test/java/org/springframewor0000755�0000000�0000000�00000000000�11360615640�027756� 5����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000252�00000000000�011564� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-faces/src/test/java/org/springframework/faces/config/FacesFlowBuilderServicesBeanDefinitionParserTests.java�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-faces/src/test/java/org/springframewor0000644�0000000�0000000�00000012525�11360615632�027766� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������package org.springframework.faces.config; import java.util.Set; import junit.framework.TestCase; import org.springframework.binding.convert.ConversionException; import org.springframework.binding.convert.ConversionExecutionException; import org.springframework.binding.convert.ConversionExecutor; import org.springframework.binding.convert.ConversionExecutorNotFoundException; import org.springframework.binding.convert.ConversionService; import org.springframework.binding.expression.Expression; import org.springframework.binding.expression.ExpressionParser; import org.springframework.context.support.ClassPathXmlApplicationContext; import org.springframework.faces.model.converter.FacesConversionService; import org.springframework.faces.webflow.JSFMockHelper; import org.springframework.faces.webflow.JsfManagedBeanAwareELExpressionParser; import org.springframework.faces.webflow.JsfViewFactoryCreator; import org.springframework.webflow.engine.builder.BinderConfiguration; import org.springframework.webflow.engine.builder.ViewFactoryCreator; import org.springframework.webflow.engine.builder.support.FlowBuilderServices; import org.springframework.webflow.execution.ViewFactory; import org.springframework.webflow.expression.el.WebFlowELExpressionParser; public class FacesFlowBuilderServicesBeanDefinitionParserTests extends TestCase { private ClassPathXmlApplicationContext context; private FlowBuilderServices builderServices; private JSFMockHelper jsf = new JSFMockHelper(); public void setUp() throws Exception { jsf.setUp(); context = new ClassPathXmlApplicationContext("org/springframework/faces/config/flow-builder-services.xml"); } protected void tearDown() throws Exception { jsf.tearDown(); } public void testConfigureDefaults() { builderServices = (FlowBuilderServices) context.getBean("flowBuilderServicesDefault"); assertNotNull(builderServices); assertTrue(builderServices.getExpressionParser() instanceof WebFlowELExpressionParser); assertTrue(builderServices.getViewFactoryCreator() instanceof JsfViewFactoryCreator); assertTrue(builderServices.getConversionService() instanceof FacesConversionService); assertFalse(builderServices.getDevelopment()); } public void testEnableManagedBeans() { builderServices = (FlowBuilderServices) context.getBean("flowBuilderServicesLegacy"); assertNotNull(builderServices); assertTrue(builderServices.getExpressionParser() instanceof JsfManagedBeanAwareELExpressionParser); assertTrue(builderServices.getViewFactoryCreator() instanceof JsfViewFactoryCreator); assertTrue(builderServices.getConversionService() instanceof FacesConversionService); assertFalse(builderServices.getDevelopment()); } public void testFlowBuilderServicesAllCustomized() { builderServices = (FlowBuilderServices) context.getBean("flowBuilderServicesAllCustom"); assertNotNull(builderServices); assertTrue(builderServices.getExpressionParser() instanceof WebFlowELExpressionParser); assertTrue(builderServices.getViewFactoryCreator() instanceof TestViewFactoryCreator); assertTrue(builderServices.getConversionService() instanceof TestConversionService); assertTrue(builderServices.getDevelopment()); } public void testFlowBuilderServicesConversionServiceCustomized() { builderServices = (FlowBuilderServices) context.getBean("flowBuilderServicesConversionServiceCustom"); assertNotNull(builderServices); assertTrue(builderServices.getConversionService() instanceof TestConversionService); assertTrue(builderServices.getExpressionParser() instanceof WebFlowELExpressionParser); assertTrue(((WebFlowELExpressionParser) builderServices.getExpressionParser()).getConversionService() instanceof TestConversionService); assertTrue(builderServices.getViewFactoryCreator() instanceof JsfViewFactoryCreator); assertFalse(builderServices.getDevelopment()); } public static class TestViewFactoryCreator implements ViewFactoryCreator { public ViewFactory createViewFactory(Expression viewIdExpression, ExpressionParser expressionParser, ConversionService conversionService, BinderConfiguration binderConfiguration) { throw new UnsupportedOperationException("Auto-generated method stub"); } public String getViewIdByConvention(String viewStateId) { return viewStateId; } } public static class TestConversionService implements ConversionService { public Object executeConversion(Object source, Class targetClass) throws ConversionException { throw new UnsupportedOperationException("Auto-generated method stub"); } public Object executeConversion(String converterId, Object source, Class targetClass) { throw new UnsupportedOperationException("Auto-generated method stub"); } public ConversionExecutor getConversionExecutor(Class sourceClass, Class targetClass) throws ConversionExecutionException { throw new UnsupportedOperationException("Auto-generated method stub"); } public ConversionExecutor getConversionExecutor(String id, Class sourceClass, Class targetClass) throws ConversionExecutorNotFoundException { throw new UnsupportedOperationException("Auto-generated method stub"); } public Set getConversionExecutors(Class sourceClass) { throw new UnsupportedOperationException("Auto-generated method stub"); } public Class getClassForAlias(String name) throws ConversionExecutionException { throw new UnsupportedOperationException("Auto-generated method stub"); } } } ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000215�00000000000�011563� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-faces/src/test/java/org/springframework/faces/config/flow-builder-services.xml������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-faces/src/test/java/org/springframewor0000644�0000000�0000000�00000002741�11360615640�027764� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:faces="http://www.springframework.org/schema/faces" xsi:schemaLocation=" http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd http://www.springframework.org/schema/faces http://www.springframework.org/schema/faces/spring-faces-2.0.xsd"> <faces:flow-builder-services id="flowBuilderServicesDefault"/> <faces:flow-builder-services id="flowBuilderServicesLegacy" enable-managed-beans="true"/> <faces:flow-builder-services id="flowBuilderServicesAllCustom" expression-parser="customExpressionParser" view-factory-creator="customViewFactoryCreator" conversion-service="customConversionService" development="true" /> <faces:flow-builder-services id="flowBuilderServicesConversionServiceCustom" conversion-service="customConversionService"/> <bean id="customExpressionParser" class="org.springframework.webflow.expression.DefaultExpressionParserFactory" factory-method="getExpressionParser"/> <bean id="customViewFactoryCreator" class="org.springframework.faces.config.FacesFlowBuilderServicesBeanDefinitionParserTests$TestViewFactoryCreator"/> <bean id="customConversionService" class="org.springframework.faces.config.FacesFlowBuilderServicesBeanDefinitionParserTests$TestConversionService"/> </beans>�������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-faces/pom.xml�������������������������0000644�0000000�0000000�00000006667�11360615640�023046� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������<?xml version="1.0"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>org.springframework.webflow</groupId> <artifactId>spring-faces</artifactId> <packaging>jar</packaging> <name>Spring Faces</name> <version>2.0.9.RELEASE</version> <dependencies> <dependency> <groupId>commons-logging</groupId> <artifactId>commons-logging</artifactId> <version>1.1.1</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-beans</artifactId> <version>${spring.version}</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-context</artifactId> <version>${spring.version}</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-core</artifactId> <version>${spring.version}</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-web</artifactId> <version>${spring.version}</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-webmvc</artifactId> <version>${spring.version}</version> </dependency> <dependency> <groupId>org.springframework.webflow</groupId> <artifactId>spring-binding</artifactId> <version>${project.version}</version> </dependency> <dependency> <groupId>org.springframework.webflow</groupId> <artifactId>spring-js</artifactId> <version>${project.version}</version> </dependency> <dependency> <groupId>org.springframework.webflow</groupId> <artifactId>spring-webflow</artifactId> <version>${project.version}</version> </dependency> <dependency> <groupId>com.sun.facelets</groupId> <artifactId>jsf-facelets</artifactId> <version>1.1.14</version> <optional>true</optional> </dependency> <dependency> <groupId>org.richfaces.framework</groupId> <artifactId>richfaces-api</artifactId> <version>3.1.4.GA</version> <optional>true</optional> </dependency> <dependency> <groupId>javax.el</groupId> <artifactId>el-api</artifactId> <version>1.0</version> <scope>provided</scope> </dependency> <dependency> <groupId>javax.servlet</groupId> <artifactId>servlet-api</artifactId> <version>2.4</version> <scope>provided</scope> </dependency> <dependency> <groupId>javax.faces</groupId> <artifactId>jsf-api</artifactId> <version>${jsf.version}</version> <scope>provided</scope> </dependency> <dependency> <groupId>javax.faces</groupId> <artifactId>jsf-impl</artifactId> <version>${jsf.version}</version> <scope>provided</scope> </dependency> </dependencies> <repositories> <!-- Where the el-api is located --> <repository> <id>maven2.java.net</id> <url>http://download.java.net/maven/2</url> </repository> <!-- Where the JSF RI api/impl and Facelets are located --> <repository> <id>maven1.java.net</id> <url>http://download.java.net/maven/1</url> <layout>legacy</layout> </repository> <!-- Where Rich Faces is located --> <repository> <id>maven2.jboss.org</id> <url>http://repository.jboss.org/maven2</url> </repository> </repositories> <properties> <spring.version>2.5.6.SEC01</spring.version> <jsf.version>1.2_09</jsf.version> </properties> </project> �������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-faces/.settings/����������������������0000755�0000000�0000000�00000000000�11360615642�023432� 5����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000147�00000000000�011567� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-faces/.settings/org.eclipse.jdt.ui.prefs��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-faces/.settings/org.eclipse.jdt.ui.pre0000644�0000000�0000000�00000020340�11360615636�027552� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������#Tue Sep 25 14:14:24 EDT 2007 eclipse.preferences.version=1 editor_save_participant_org.eclipse.jdt.ui.postsavelistener.cleanup=true formatter_profile=_Spring Java Conventions formatter_settings_version=11 org.eclipse.jdt.ui.exception.name=e org.eclipse.jdt.ui.gettersetter.use.is=false org.eclipse.jdt.ui.javadoc=false org.eclipse.jdt.ui.keywordthis=false org.eclipse.jdt.ui.overrideannotation=false org.eclipse.jdt.ui.text.custom_code_templates=<?xml version\="1.0" encoding\="UTF-8"?><templates><template autoinsert\="true" context\="gettercomment_context" deleted\="false" description\="Comment for getter method" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.gettercomment" name\="gettercomment">/**\n * @return the ${bare_field_name}\n */</template><template autoinsert\="true" context\="settercomment_context" deleted\="false" description\="Comment for setter method" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.settercomment" name\="settercomment">/**\n * @param ${param} the ${bare_field_name} to set\n */</template><template autoinsert\="true" context\="constructorcomment_context" deleted\="false" description\="Comment for created constructors" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.constructorcomment" name\="constructorcomment">/**\n * ${tags}\n */</template><template autoinsert\="false" context\="filecomment_context" deleted\="false" description\="Comment for created Java files" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.filecomment" name\="filecomment">/*\n * Copyright 2004-2007 the original author or authors.\n *\n * Licensed under the Apache License, Version 2.0 (the "License");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http\://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an "AS IS" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */</template><template autoinsert\="true" context\="typecomment_context" deleted\="false" description\="Comment for created types" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.typecomment" name\="typecomment">/**\n * @author ${user}\n *\n * ${tags}\n */</template><template autoinsert\="true" context\="fieldcomment_context" deleted\="false" description\="Comment for fields" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.fieldcomment" name\="fieldcomment">/**\n * \n */</template><template autoinsert\="true" context\="methodcomment_context" deleted\="false" description\="Comment for non-overriding methods" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.methodcomment" name\="methodcomment">/**\n * ${tags}\n */</template><template autoinsert\="true" context\="overridecomment_context" deleted\="false" description\="Comment for overriding methods" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.overridecomment" name\="overridecomment">/* (non-Javadoc)\n * ${see_to_overridden}\n */</template><template autoinsert\="true" context\="delegatecomment_context" deleted\="false" description\="Comment for delegate methods" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.delegatecomment" name\="delegatecomment">/**\n * ${tags}\n * ${see_to_target}\n */</template><template autoinsert\="true" context\="newtype_context" deleted\="false" description\="Newly created files" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.newtype" name\="newtype">${filecomment}\n${package_declaration}\n\n${typecomment}\n${type_declaration}</template><template autoinsert\="true" context\="classbody_context" deleted\="false" description\="Code in new class type bodies" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.classbody" name\="classbody">\n</template><template autoinsert\="true" context\="interfacebody_context" deleted\="false" description\="Code in new interface type bodies" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.interfacebody" name\="interfacebody">\n</template><template autoinsert\="true" context\="enumbody_context" deleted\="false" description\="Code in new enum type bodies" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.enumbody" name\="enumbody">\n</template><template autoinsert\="true" context\="annotationbody_context" deleted\="false" description\="Code in new annotation type bodies" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.annotationbody" name\="annotationbody">\n</template><template autoinsert\="true" context\="catchblock_context" deleted\="false" description\="Code in new catch blocks" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.catchblock" name\="catchblock">// ${todo} Auto-generated catch block\n${exception_var}.printStackTrace();</template><template autoinsert\="false" context\="methodbody_context" deleted\="false" description\="Code in created method stubs" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.methodbody" name\="methodbody">// ${todo} Auto-generated method stub\nthrow new UnsupportedOperationException("Auto-generated method stub");</template><template autoinsert\="true" context\="constructorbody_context" deleted\="false" description\="Code in created constructor stubs" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.constructorbody" name\="constructorbody">${body_statement}\n// ${todo} Auto-generated constructor stub</template><template autoinsert\="true" context\="getterbody_context" deleted\="false" description\="Code in created getters" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.getterbody" name\="getterbody">return ${field};</template><template autoinsert\="true" context\="setterbody_context" deleted\="false" description\="Code in created setters" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.setterbody" name\="setterbody">${field} \= ${param};</template></templates> sp_cleanup.add_default_serial_version_id=true sp_cleanup.add_generated_serial_version_id=false sp_cleanup.add_missing_annotations=true sp_cleanup.add_missing_deprecated_annotations=true sp_cleanup.add_missing_nls_tags=false sp_cleanup.add_missing_override_annotations=true sp_cleanup.add_serial_version_id=false sp_cleanup.always_use_blocks=true sp_cleanup.always_use_parentheses_in_expressions=false sp_cleanup.always_use_this_for_non_static_field_access=false sp_cleanup.always_use_this_for_non_static_method_access=false sp_cleanup.convert_to_enhanced_for_loop=false sp_cleanup.format_source_code=true sp_cleanup.make_local_variable_final=false sp_cleanup.make_parameters_final=false sp_cleanup.make_private_fields_final=true sp_cleanup.make_variable_declarations_final=true sp_cleanup.never_use_blocks=false sp_cleanup.never_use_parentheses_in_expressions=true sp_cleanup.on_save_use_additional_actions=false sp_cleanup.organize_imports=true sp_cleanup.qualify_static_field_accesses_with_declaring_class=false sp_cleanup.qualify_static_member_accesses_through_instances_with_declaring_class=true sp_cleanup.qualify_static_member_accesses_through_subtypes_with_declaring_class=true sp_cleanup.qualify_static_member_accesses_with_declaring_class=false sp_cleanup.qualify_static_method_accesses_with_declaring_class=false sp_cleanup.remove_private_constructors=true sp_cleanup.remove_trailing_whitespaces=false sp_cleanup.remove_trailing_whitespaces_all=true sp_cleanup.remove_trailing_whitespaces_ignore_empty=false sp_cleanup.remove_unnecessary_casts=true sp_cleanup.remove_unnecessary_nls_tags=false sp_cleanup.remove_unused_imports=false sp_cleanup.remove_unused_local_variables=false sp_cleanup.remove_unused_private_fields=true sp_cleanup.remove_unused_private_members=false sp_cleanup.remove_unused_private_methods=true sp_cleanup.remove_unused_private_types=true sp_cleanup.sort_members=false sp_cleanup.sort_members_all=false sp_cleanup.use_blocks=false sp_cleanup.use_blocks_only_for_return_and_throw=false sp_cleanup.use_parentheses_in_expressions=false sp_cleanup.use_this_for_non_static_field_access=false sp_cleanup.use_this_for_non_static_field_access_only_if_necessary=true sp_cleanup.use_this_for_non_static_method_access=false sp_cleanup.use_this_for_non_static_method_access_only_if_necessary=true ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000151�00000000000�011562� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-faces/.settings/org.eclipse.jdt.core.prefs������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-faces/.settings/org.eclipse.jdt.core.p0000644�0000000�0000000�00000064413�11360615642�027544� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������#Thu Jul 10 09:40:54 BST 2008 eclipse.preferences.version=1 org.eclipse.jdt.core.codeComplete.argumentPrefixes= org.eclipse.jdt.core.codeComplete.argumentSuffixes= org.eclipse.jdt.core.codeComplete.fieldPrefixes= org.eclipse.jdt.core.codeComplete.fieldSuffixes= org.eclipse.jdt.core.codeComplete.localPrefixes= org.eclipse.jdt.core.codeComplete.localSuffixes= org.eclipse.jdt.core.codeComplete.staticFieldPrefixes= org.eclipse.jdt.core.codeComplete.staticFieldSuffixes= org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.2 org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve org.eclipse.jdt.core.compiler.compliance=1.4 org.eclipse.jdt.core.compiler.debug.lineNumber=generate org.eclipse.jdt.core.compiler.debug.localVariable=generate org.eclipse.jdt.core.compiler.debug.sourceFile=generate org.eclipse.jdt.core.compiler.doc.comment.support=enabled org.eclipse.jdt.core.compiler.problem.annotationSuperInterface=warning org.eclipse.jdt.core.compiler.problem.assertIdentifier=warning org.eclipse.jdt.core.compiler.problem.autoboxing=ignore org.eclipse.jdt.core.compiler.problem.deprecation=warning org.eclipse.jdt.core.compiler.problem.deprecationInDeprecatedCode=disabled org.eclipse.jdt.core.compiler.problem.deprecationWhenOverridingDeprecatedMethod=disabled org.eclipse.jdt.core.compiler.problem.discouragedReference=warning org.eclipse.jdt.core.compiler.problem.emptyStatement=ignore org.eclipse.jdt.core.compiler.problem.enumIdentifier=warning org.eclipse.jdt.core.compiler.problem.fallthroughCase=ignore org.eclipse.jdt.core.compiler.problem.fieldHiding=ignore org.eclipse.jdt.core.compiler.problem.finalParameterBound=warning org.eclipse.jdt.core.compiler.problem.finallyBlockNotCompletingNormally=warning org.eclipse.jdt.core.compiler.problem.forbiddenReference=error org.eclipse.jdt.core.compiler.problem.hiddenCatchBlock=warning org.eclipse.jdt.core.compiler.problem.incompatibleNonInheritedInterfaceMethod=warning org.eclipse.jdt.core.compiler.problem.incompleteEnumSwitch=ignore org.eclipse.jdt.core.compiler.problem.indirectStaticAccess=ignore org.eclipse.jdt.core.compiler.problem.invalidJavadoc=warning org.eclipse.jdt.core.compiler.problem.invalidJavadocTags=enabled org.eclipse.jdt.core.compiler.problem.invalidJavadocTagsDeprecatedRef=disabled org.eclipse.jdt.core.compiler.problem.invalidJavadocTagsNotVisibleRef=enabled org.eclipse.jdt.core.compiler.problem.invalidJavadocTagsVisibility=protected org.eclipse.jdt.core.compiler.problem.localVariableHiding=ignore org.eclipse.jdt.core.compiler.problem.methodWithConstructorName=warning org.eclipse.jdt.core.compiler.problem.missingDeprecatedAnnotation=ignore org.eclipse.jdt.core.compiler.problem.missingJavadocComments=ignore org.eclipse.jdt.core.compiler.problem.missingJavadocCommentsOverriding=disabled org.eclipse.jdt.core.compiler.problem.missingJavadocCommentsVisibility=public org.eclipse.jdt.core.compiler.problem.missingJavadocTags=ignore org.eclipse.jdt.core.compiler.problem.missingJavadocTagsOverriding=disabled org.eclipse.jdt.core.compiler.problem.missingJavadocTagsVisibility=public org.eclipse.jdt.core.compiler.problem.missingOverrideAnnotation=ignore org.eclipse.jdt.core.compiler.problem.missingSerialVersion=ignore org.eclipse.jdt.core.compiler.problem.noEffectAssignment=warning org.eclipse.jdt.core.compiler.problem.noImplicitStringConversion=warning org.eclipse.jdt.core.compiler.problem.nonExternalizedStringLiteral=ignore org.eclipse.jdt.core.compiler.problem.nullReference=ignore org.eclipse.jdt.core.compiler.problem.overridingPackageDefaultMethod=warning org.eclipse.jdt.core.compiler.problem.parameterAssignment=ignore org.eclipse.jdt.core.compiler.problem.possibleAccidentalBooleanAssignment=ignore org.eclipse.jdt.core.compiler.problem.rawTypeReference=ignore org.eclipse.jdt.core.compiler.problem.specialParameterHidingField=disabled org.eclipse.jdt.core.compiler.problem.staticAccessReceiver=warning org.eclipse.jdt.core.compiler.problem.suppressWarnings=enabled org.eclipse.jdt.core.compiler.problem.syntheticAccessEmulation=ignore org.eclipse.jdt.core.compiler.problem.typeParameterHiding=warning org.eclipse.jdt.core.compiler.problem.uncheckedTypeOperation=warning org.eclipse.jdt.core.compiler.problem.undocumentedEmptyBlock=ignore org.eclipse.jdt.core.compiler.problem.unhandledWarningToken=warning org.eclipse.jdt.core.compiler.problem.unnecessaryElse=ignore org.eclipse.jdt.core.compiler.problem.unnecessaryTypeCheck=warning org.eclipse.jdt.core.compiler.problem.unqualifiedFieldAccess=ignore org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownException=ignore org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionWhenOverriding=disabled org.eclipse.jdt.core.compiler.problem.unusedImport=warning org.eclipse.jdt.core.compiler.problem.unusedLabel=warning org.eclipse.jdt.core.compiler.problem.unusedLocal=warning org.eclipse.jdt.core.compiler.problem.unusedParameter=ignore org.eclipse.jdt.core.compiler.problem.unusedParameterWhenImplementingAbstract=disabled org.eclipse.jdt.core.compiler.problem.unusedParameterWhenOverridingConcrete=disabled org.eclipse.jdt.core.compiler.problem.unusedPrivateMember=warning org.eclipse.jdt.core.compiler.problem.varargsArgumentNeedCast=warning org.eclipse.jdt.core.compiler.source=1.3 org.eclipse.jdt.core.formatter.align_type_members_on_columns=false org.eclipse.jdt.core.formatter.alignment_for_arguments_in_allocation_expression=16 org.eclipse.jdt.core.formatter.alignment_for_arguments_in_enum_constant=16 org.eclipse.jdt.core.formatter.alignment_for_arguments_in_explicit_constructor_call=16 org.eclipse.jdt.core.formatter.alignment_for_arguments_in_method_invocation=16 org.eclipse.jdt.core.formatter.alignment_for_arguments_in_qualified_allocation_expression=16 org.eclipse.jdt.core.formatter.alignment_for_assignment=0 org.eclipse.jdt.core.formatter.alignment_for_binary_expression=16 org.eclipse.jdt.core.formatter.alignment_for_compact_if=16 org.eclipse.jdt.core.formatter.alignment_for_conditional_expression=80 org.eclipse.jdt.core.formatter.alignment_for_enum_constants=0 org.eclipse.jdt.core.formatter.alignment_for_expressions_in_array_initializer=16 org.eclipse.jdt.core.formatter.alignment_for_multiple_fields=16 org.eclipse.jdt.core.formatter.alignment_for_parameters_in_constructor_declaration=16 org.eclipse.jdt.core.formatter.alignment_for_parameters_in_method_declaration=16 org.eclipse.jdt.core.formatter.alignment_for_selector_in_method_invocation=16 org.eclipse.jdt.core.formatter.alignment_for_superclass_in_type_declaration=16 org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_enum_declaration=16 org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_type_declaration=16 org.eclipse.jdt.core.formatter.alignment_for_throws_clause_in_constructor_declaration=16 org.eclipse.jdt.core.formatter.alignment_for_throws_clause_in_method_declaration=16 org.eclipse.jdt.core.formatter.blank_lines_after_imports=1 org.eclipse.jdt.core.formatter.blank_lines_after_package=1 org.eclipse.jdt.core.formatter.blank_lines_before_field=0 org.eclipse.jdt.core.formatter.blank_lines_before_first_class_body_declaration=0 org.eclipse.jdt.core.formatter.blank_lines_before_imports=1 org.eclipse.jdt.core.formatter.blank_lines_before_member_type=1 org.eclipse.jdt.core.formatter.blank_lines_before_method=1 org.eclipse.jdt.core.formatter.blank_lines_before_new_chunk=1 org.eclipse.jdt.core.formatter.blank_lines_before_package=0 org.eclipse.jdt.core.formatter.blank_lines_between_import_groups=1 org.eclipse.jdt.core.formatter.blank_lines_between_type_declarations=1 org.eclipse.jdt.core.formatter.brace_position_for_annotation_type_declaration=end_of_line org.eclipse.jdt.core.formatter.brace_position_for_anonymous_type_declaration=end_of_line org.eclipse.jdt.core.formatter.brace_position_for_array_initializer=end_of_line org.eclipse.jdt.core.formatter.brace_position_for_block=end_of_line org.eclipse.jdt.core.formatter.brace_position_for_block_in_case=end_of_line org.eclipse.jdt.core.formatter.brace_position_for_constructor_declaration=end_of_line org.eclipse.jdt.core.formatter.brace_position_for_enum_constant=end_of_line org.eclipse.jdt.core.formatter.brace_position_for_enum_declaration=end_of_line org.eclipse.jdt.core.formatter.brace_position_for_method_declaration=end_of_line org.eclipse.jdt.core.formatter.brace_position_for_switch=end_of_line org.eclipse.jdt.core.formatter.brace_position_for_type_declaration=end_of_line org.eclipse.jdt.core.formatter.comment.clear_blank_lines_in_block_comment=false org.eclipse.jdt.core.formatter.comment.clear_blank_lines_in_javadoc_comment=false org.eclipse.jdt.core.formatter.comment.format_block_comments=true org.eclipse.jdt.core.formatter.comment.format_header=false org.eclipse.jdt.core.formatter.comment.format_html=true org.eclipse.jdt.core.formatter.comment.format_javadoc_comments=true org.eclipse.jdt.core.formatter.comment.format_line_comments=true org.eclipse.jdt.core.formatter.comment.format_source_code=true org.eclipse.jdt.core.formatter.comment.indent_parameter_description=true org.eclipse.jdt.core.formatter.comment.indent_root_tags=false org.eclipse.jdt.core.formatter.comment.insert_new_line_before_root_tags=do not insert org.eclipse.jdt.core.formatter.comment.insert_new_line_for_parameter=do not insert org.eclipse.jdt.core.formatter.comment.line_length=120 org.eclipse.jdt.core.formatter.compact_else_if=true org.eclipse.jdt.core.formatter.continuation_indentation=2 org.eclipse.jdt.core.formatter.continuation_indentation_for_array_initializer=2 org.eclipse.jdt.core.formatter.format_guardian_clause_on_one_line=false org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_annotation_declaration_header=true org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_enum_constant_header=true org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_enum_declaration_header=true org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_type_header=true org.eclipse.jdt.core.formatter.indent_breaks_compare_to_cases=true org.eclipse.jdt.core.formatter.indent_empty_lines=false org.eclipse.jdt.core.formatter.indent_statements_compare_to_block=true org.eclipse.jdt.core.formatter.indent_statements_compare_to_body=true org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_cases=true org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_switch=false org.eclipse.jdt.core.formatter.indentation.size=8 org.eclipse.jdt.core.formatter.insert_new_line_after_annotation=insert org.eclipse.jdt.core.formatter.insert_new_line_after_opening_brace_in_array_initializer=do not insert org.eclipse.jdt.core.formatter.insert_new_line_at_end_of_file_if_missing=do not insert org.eclipse.jdt.core.formatter.insert_new_line_before_catch_in_try_statement=do not insert org.eclipse.jdt.core.formatter.insert_new_line_before_closing_brace_in_array_initializer=do not insert org.eclipse.jdt.core.formatter.insert_new_line_before_else_in_if_statement=do not insert org.eclipse.jdt.core.formatter.insert_new_line_before_finally_in_try_statement=do not insert org.eclipse.jdt.core.formatter.insert_new_line_before_while_in_do_statement=do not insert org.eclipse.jdt.core.formatter.insert_new_line_in_empty_annotation_declaration=insert org.eclipse.jdt.core.formatter.insert_new_line_in_empty_anonymous_type_declaration=insert org.eclipse.jdt.core.formatter.insert_new_line_in_empty_block=insert org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_constant=insert org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_declaration=insert org.eclipse.jdt.core.formatter.insert_new_line_in_empty_method_body=insert org.eclipse.jdt.core.formatter.insert_new_line_in_empty_type_declaration=insert org.eclipse.jdt.core.formatter.insert_space_after_and_in_type_parameter=insert org.eclipse.jdt.core.formatter.insert_space_after_assignment_operator=insert org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation=do not insert org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation_type_declaration=do not insert org.eclipse.jdt.core.formatter.insert_space_after_binary_operator=insert org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_arguments=insert org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_parameters=insert org.eclipse.jdt.core.formatter.insert_space_after_closing_brace_in_block=insert org.eclipse.jdt.core.formatter.insert_space_after_closing_paren_in_cast=insert org.eclipse.jdt.core.formatter.insert_space_after_colon_in_assert=insert org.eclipse.jdt.core.formatter.insert_space_after_colon_in_case=insert org.eclipse.jdt.core.formatter.insert_space_after_colon_in_conditional=insert org.eclipse.jdt.core.formatter.insert_space_after_colon_in_for=insert org.eclipse.jdt.core.formatter.insert_space_after_colon_in_labeled_statement=insert org.eclipse.jdt.core.formatter.insert_space_after_comma_in_allocation_expression=insert org.eclipse.jdt.core.formatter.insert_space_after_comma_in_annotation=insert org.eclipse.jdt.core.formatter.insert_space_after_comma_in_array_initializer=insert org.eclipse.jdt.core.formatter.insert_space_after_comma_in_constructor_declaration_parameters=insert org.eclipse.jdt.core.formatter.insert_space_after_comma_in_constructor_declaration_throws=insert org.eclipse.jdt.core.formatter.insert_space_after_comma_in_enum_constant_arguments=insert org.eclipse.jdt.core.formatter.insert_space_after_comma_in_enum_declarations=insert org.eclipse.jdt.core.formatter.insert_space_after_comma_in_explicitconstructorcall_arguments=insert org.eclipse.jdt.core.formatter.insert_space_after_comma_in_for_increments=insert org.eclipse.jdt.core.formatter.insert_space_after_comma_in_for_inits=insert org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_declaration_parameters=insert org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_declaration_throws=insert org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_invocation_arguments=insert org.eclipse.jdt.core.formatter.insert_space_after_comma_in_multiple_field_declarations=insert org.eclipse.jdt.core.formatter.insert_space_after_comma_in_multiple_local_declarations=insert org.eclipse.jdt.core.formatter.insert_space_after_comma_in_parameterized_type_reference=insert org.eclipse.jdt.core.formatter.insert_space_after_comma_in_superinterfaces=insert org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_arguments=insert org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_parameters=insert org.eclipse.jdt.core.formatter.insert_space_after_ellipsis=insert org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_parameterized_type_reference=do not insert org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_arguments=do not insert org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_parameters=do not insert org.eclipse.jdt.core.formatter.insert_space_after_opening_brace_in_array_initializer=insert org.eclipse.jdt.core.formatter.insert_space_after_opening_bracket_in_array_allocation_expression=do not insert org.eclipse.jdt.core.formatter.insert_space_after_opening_bracket_in_array_reference=do not insert org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_annotation=do not insert org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_cast=do not insert org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_catch=do not insert org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_constructor_declaration=do not insert org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_enum_constant=do not insert org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_for=do not insert org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_if=do not insert org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_method_declaration=do not insert org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_method_invocation=do not insert org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_parenthesized_expression=do not insert org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_switch=do not insert org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_synchronized=do not insert org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_while=do not insert org.eclipse.jdt.core.formatter.insert_space_after_postfix_operator=do not insert org.eclipse.jdt.core.formatter.insert_space_after_prefix_operator=do not insert org.eclipse.jdt.core.formatter.insert_space_after_question_in_conditional=insert org.eclipse.jdt.core.formatter.insert_space_after_question_in_wildcard=do not insert org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_for=insert org.eclipse.jdt.core.formatter.insert_space_after_unary_operator=do not insert org.eclipse.jdt.core.formatter.insert_space_before_and_in_type_parameter=insert org.eclipse.jdt.core.formatter.insert_space_before_assignment_operator=insert org.eclipse.jdt.core.formatter.insert_space_before_at_in_annotation_type_declaration=insert org.eclipse.jdt.core.formatter.insert_space_before_binary_operator=insert org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_parameterized_type_reference=do not insert org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_arguments=do not insert org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_parameters=do not insert org.eclipse.jdt.core.formatter.insert_space_before_closing_brace_in_array_initializer=insert org.eclipse.jdt.core.formatter.insert_space_before_closing_bracket_in_array_allocation_expression=do not insert org.eclipse.jdt.core.formatter.insert_space_before_closing_bracket_in_array_reference=do not insert org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_annotation=do not insert org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_cast=do not insert org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_catch=do not insert org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_constructor_declaration=do not insert org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_enum_constant=do not insert org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_for=do not insert org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_if=do not insert org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_method_declaration=do not insert org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_method_invocation=do not insert org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_parenthesized_expression=do not insert org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_switch=do not insert org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_synchronized=do not insert org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_while=do not insert org.eclipse.jdt.core.formatter.insert_space_before_colon_in_assert=insert org.eclipse.jdt.core.formatter.insert_space_before_colon_in_case=do not insert org.eclipse.jdt.core.formatter.insert_space_before_colon_in_conditional=insert org.eclipse.jdt.core.formatter.insert_space_before_colon_in_default=do not insert org.eclipse.jdt.core.formatter.insert_space_before_colon_in_for=insert org.eclipse.jdt.core.formatter.insert_space_before_colon_in_labeled_statement=do not insert org.eclipse.jdt.core.formatter.insert_space_before_comma_in_allocation_expression=do not insert org.eclipse.jdt.core.formatter.insert_space_before_comma_in_annotation=do not insert org.eclipse.jdt.core.formatter.insert_space_before_comma_in_array_initializer=do not insert org.eclipse.jdt.core.formatter.insert_space_before_comma_in_constructor_declaration_parameters=do not insert org.eclipse.jdt.core.formatter.insert_space_before_comma_in_constructor_declaration_throws=do not insert org.eclipse.jdt.core.formatter.insert_space_before_comma_in_enum_constant_arguments=do not insert org.eclipse.jdt.core.formatter.insert_space_before_comma_in_enum_declarations=do not insert org.eclipse.jdt.core.formatter.insert_space_before_comma_in_explicitconstructorcall_arguments=do not insert org.eclipse.jdt.core.formatter.insert_space_before_comma_in_for_increments=do not insert org.eclipse.jdt.core.formatter.insert_space_before_comma_in_for_inits=do not insert org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_declaration_parameters=do not insert org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_declaration_throws=do not insert org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_invocation_arguments=do not insert org.eclipse.jdt.core.formatter.insert_space_before_comma_in_multiple_field_declarations=do not insert org.eclipse.jdt.core.formatter.insert_space_before_comma_in_multiple_local_declarations=do not insert org.eclipse.jdt.core.formatter.insert_space_before_comma_in_parameterized_type_reference=do not insert org.eclipse.jdt.core.formatter.insert_space_before_comma_in_superinterfaces=do not insert org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_arguments=do not insert org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_parameters=do not insert org.eclipse.jdt.core.formatter.insert_space_before_ellipsis=do not insert org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_parameterized_type_reference=do not insert org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_arguments=do not insert org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_parameters=do not insert org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_annotation_type_declaration=insert org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_anonymous_type_declaration=insert org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_array_initializer=insert org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_block=insert org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_constructor_declaration=insert org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_enum_constant=insert org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_enum_declaration=insert org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_method_declaration=insert org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_switch=insert org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_type_declaration=insert org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_allocation_expression=do not insert org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_reference=do not insert org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_type_reference=do not insert org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_annotation=do not insert org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_annotation_type_member_declaration=do not insert org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_catch=insert org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_constructor_declaration=do not insert org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_enum_constant=do not insert org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_for=insert org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_if=insert org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_method_declaration=do not insert org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_method_invocation=do not insert org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_parenthesized_expression=do not insert org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_switch=insert org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_synchronized=insert org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_while=insert org.eclipse.jdt.core.formatter.insert_space_before_parenthesized_expression_in_return=insert org.eclipse.jdt.core.formatter.insert_space_before_parenthesized_expression_in_throw=insert org.eclipse.jdt.core.formatter.insert_space_before_postfix_operator=do not insert org.eclipse.jdt.core.formatter.insert_space_before_prefix_operator=do not insert org.eclipse.jdt.core.formatter.insert_space_before_question_in_conditional=insert org.eclipse.jdt.core.formatter.insert_space_before_question_in_wildcard=do not insert org.eclipse.jdt.core.formatter.insert_space_before_semicolon=do not insert org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_for=do not insert org.eclipse.jdt.core.formatter.insert_space_before_unary_operator=do not insert org.eclipse.jdt.core.formatter.insert_space_between_brackets_in_array_type_reference=do not insert org.eclipse.jdt.core.formatter.insert_space_between_empty_braces_in_array_initializer=do not insert org.eclipse.jdt.core.formatter.insert_space_between_empty_brackets_in_array_allocation_expression=do not insert org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_annotation_type_member_declaration=do not insert org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_constructor_declaration=do not insert org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_enum_constant=do not insert org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_method_declaration=do not insert org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_method_invocation=do not insert org.eclipse.jdt.core.formatter.keep_else_statement_on_same_line=false org.eclipse.jdt.core.formatter.keep_empty_array_initializer_on_one_line=false org.eclipse.jdt.core.formatter.keep_imple_if_on_one_line=false org.eclipse.jdt.core.formatter.keep_then_statement_on_same_line=false org.eclipse.jdt.core.formatter.lineSplit=120 org.eclipse.jdt.core.formatter.never_indent_block_comments_on_first_column=false org.eclipse.jdt.core.formatter.never_indent_line_comments_on_first_column=false org.eclipse.jdt.core.formatter.number_of_blank_lines_at_beginning_of_method_body=0 org.eclipse.jdt.core.formatter.number_of_empty_lines_to_preserve=1 org.eclipse.jdt.core.formatter.put_empty_statement_on_new_line=true org.eclipse.jdt.core.formatter.tabulation.char=tab org.eclipse.jdt.core.formatter.tabulation.size=4 org.eclipse.jdt.core.formatter.use_tabs_only_for_leading_indentations=false org.eclipse.jdt.core.formatter.wrap_before_binary_operator=true �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000157�00000000000�011570� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-faces/.settings/org.eclipse.wst.validation.prefs������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-faces/.settings/org.eclipse.wst.valida0000644�0000000�0000000�00000003177�11360615640�027650� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������#Fri May 05 18:13:37 EDT 2006 DELEGATES_PREFERENCE=delegateValidatorListorg.eclipse.wst.wsdl.validation.internal.eclipse.WSDLDelegatingValidator\=org.eclipse.wst.wsdl.validation.internal.eclipse.Validator;org.eclipse.wst.xsd.core.internal.validation.eclipse.XSDDelegatingValidator\=org.eclipse.wst.xsd.core.internal.validation.eclipse.Validator; USER_BUILD_PREFERENCE=enabledBuildValidatorListorg.eclipse.wst.xsd.core.internal.validation.eclipse.XSDDelegatingValidator;org.eclipse.wst.xml.core.internal.validation.eclipse.Validator;org.eclipse.jst.jsp.core.internal.validation.JSPELValidator;org.eclipse.wst.wsdl.validation.internal.eclipse.WSDLDelegatingValidator;org.eclipse.wst.html.internal.validation.HTMLValidator;org.eclipse.wst.wsi.ui.internal.WSIMessageValidator;org.eclipse.jst.jsp.core.internal.validation.JSPJavaValidator;org.eclipse.wst.dtd.core.internal.validation.eclipse.Validator;org.eclipse.jst.jsp.core.internal.validation.JSPDirectiveValidator; USER_MANUAL_PREFERENCE=enabledManualValidatorListorg.eclipse.wst.xsd.core.internal.validation.eclipse.XSDDelegatingValidator;org.eclipse.wst.xml.core.internal.validation.eclipse.Validator;org.eclipse.jst.jsp.core.internal.validation.JSPELValidator;org.eclipse.wst.wsdl.validation.internal.eclipse.WSDLDelegatingValidator;org.eclipse.wst.html.internal.validation.HTMLValidator;org.eclipse.wst.wsi.ui.internal.WSIMessageValidator;org.eclipse.jst.jsp.core.internal.validation.JSPJavaValidator;org.eclipse.wst.dtd.core.internal.validation.eclipse.Validator;org.eclipse.jst.jsp.core.internal.validation.JSPDirectiveValidator; USER_PREFERENCE=overrideGlobalPreferencesfalse eclipse.preferences.version=1 �������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-faces/build.xml�����������������������0000644�0000000�0000000�00000000433�11360615632�023334� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������<?xml version="1.0" encoding="UTF-8"?> <project name="org.springframework.faces"> <property file="${basedir}/../build.properties"/> <import file="${basedir}/../build-spring-webflow/package-bundle.xml"/> <import file="${basedir}/../spring-build/standard/default.xml"/> </project>�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-faces/.classpath����������������������0000644�0000000�0000000�00000014744�11360615632�023510� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������<?xml version="1.0" encoding="UTF-8"?> <classpath> <classpathentry kind="src" output="target/classes" path="src/main/java"/> <classpathentry kind="src" path="src/main/resources"/> <classpathentry kind="src" output="target/test-classes" path="src/test/java"/> <classpathentry kind="src" path="src/test/resources"/> <classpathentry combineaccessrules="false" kind="src" path="/spring-binding"/> <classpathentry combineaccessrules="false" kind="src" path="/spring-js"/> <classpathentry combineaccessrules="false" kind="src" path="/spring-webflow"/> <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/> <classpathentry kind="var" path="IVY_CACHE/com.sun.facelets/com.springsource.com.sun.facelets/1.1.14/com.springsource.com.sun.facelets-1.1.14.jar" sourcepath="IVY_CACHE/com.sun.facelets/com.springsource.com.sun.facelets/1.1.14/com.springsource.com.sun.facelets-sources-1.1.14.jar"/> <classpathentry kind="var" path="IVY_CACHE/com.sun.faces/com.springsource.com.sun.faces/1.2.0.09/com.springsource.com.sun.faces-1.2.0.09.jar" sourcepath="/IVY_CACHE/com.sun.faces/com.springsource.com.sun.faces/1.2.0.09/com.springsource.com.sun.faces-sources-1.2.0.09.jar"/> <classpathentry kind="var" path="IVY_CACHE/javax.faces/com.springsource.javax.faces/1.2.0.09/com.springsource.javax.faces-1.2.0.09.jar" sourcepath="/IVY_CACHE/javax.faces/com.springsource.javax.faces/1.2.0.09/com.springsource.javax.faces-sources-1.2.0.09.jar"/> <classpathentry kind="var" path="IVY_CACHE/javax.el/com.springsource.javax.el/1.0.0/com.springsource.javax.el-1.0.0.jar" sourcepath="IVY_CACHE/javax.el/com.springsource.javax.el/1.0.0/com.springsource.javax.el-sources-1.0.0.jar"/> <classpathentry kind="var" path="IVY_CACHE/javax.servlet/com.springsource.javax.servlet/2.4.0/com.springsource.javax.servlet-2.4.0.jar" sourcepath="/IVY_CACHE/javax.servlet/com.springsource.javax.servlet/2.4.0/com.springsource.javax.servlet-sources-2.4.0.jar"/> <classpathentry kind="var" path="IVY_CACHE/org.apache.commons/com.springsource.org.apache.commons.logging/1.1.1/com.springsource.org.apache.commons.logging-1.1.1.jar" sourcepath="IVY_CACHE/org.apache.commons/com.springsource.org.apache.commons.logging/1.1.1/com.springsource.org.apache.commons.logging-sources-1.1.1.jar"/> <classpathentry kind="var" path="IVY_CACHE/org.apache.commons/com.springsource.org.apache.commons.beanutils/1.7.0/com.springsource.org.apache.commons.beanutils-1.7.0.jar" sourcepath="IVY_CACHE/org.apache.commons/com.springsource.org.apache.commons.beanutils/1.7.0/com.springsource.org.apache.commons.beanutils-sources-1.7.0.jar"/> <classpathentry kind="var" path="IVY_CACHE/org.apache.commons/com.springsource.org.apache.commons.collections/3.2.0/com.springsource.org.apache.commons.collections-3.2.0.jar" sourcepath="IVY_CACHE/org.apache.commons/com.springsource.org.apache.commons.collections/3.2.0/com.springsource.org.apache.commons.collections-sources-3.2.0.jar"/> <classpathentry kind="var" path="IVY_CACHE/org.apache.commons/com.springsource.org.apache.commons.digester/1.8.0/com.springsource.org.apache.commons.digester-1.8.0.jar" sourcepath="IVY_CACHE/org.apache.commons/com.springsource.org.apache.commons.digester/1.8.0/com.springsource.org.apache.commons.digester-sources-1.8.0.jar"/> <classpathentry kind="var" path="IVY_CACHE/org.apache.log4j/com.springsource.org.apache.log4j/1.2.15/com.springsource.org.apache.log4j-1.2.15.jar" sourcepath="IVY_CACHE/org.apache.log4j/com.springsource.org.apache.log4j/1.2.15/com.springsource.org.apache.log4j-sources-1.2.15.jar"/> <classpathentry kind="var" path="IVY_CACHE/org.apache.shale/com.springsource.org.apache.shale.test/1.0.4/com.springsource.org.apache.shale.test-1.0.4.jar" sourcepath="IVY_CACHE/org.apache.shale/com.springsource.org.apache.shale.test/1.0.4/com.springsource.org.apache.shale.test-sources-1.0.4.jar"/> <classpathentry kind="var" path="IVY_CACHE/org.easymock/com.springsource.org.easymock/2.3.0/com.springsource.org.easymock-2.3.0.jar" sourcepath="IVY_CACHE/org.easymock/com.springsource.org.easymock/2.3.0/com.springsource.org.easymock-sources-2.3.0.jar"/> <classpathentry kind="var" path="IVY_CACHE/org.jboss.el/com.springsource.org.jboss.el/2.0.0.GA/com.springsource.org.jboss.el-2.0.0.GA.jar" sourcepath="IVY_CACHE/org.jboss.el/com.springsource.org.jboss.el/2.0.0.GA/com.springsource.org.jboss.el-sources-2.0.0.GA.jar"/> <classpathentry kind="var" path="IVY_CACHE/org.junit/com.springsource.junit/3.8.2/com.springsource.junit-3.8.2.jar" sourcepath="IVY_CACHE/org.junit/com.springsource.junit/3.8.2/com.springsource.junit-sources-3.8.2.jar"/> <classpathentry kind="var" path="IVY_CACHE/org.richfaces/com.springsource.org.richfaces/3.1.4.GA/com.springsource.org.richfaces-3.1.4.GA.jar" sourcepath="/IVY_CACHE/org.richfaces/com.springsource.org.richfaces/3.1.4.GA/com.springsource.org.richfaces-sources-3.1.4.GA.jar"/> <classpathentry kind="var" path="IVY_CACHE/org.springframework/org.springframework.beans/2.5.6.SEC01/org.springframework.beans-2.5.6.SEC01.jar" sourcepath="IVY_CACHE/org.springframework/org.springframework.beans/2.5.6.SEC01/org.springframework.beans-sources-2.5.6.SEC01.jar"/> <classpathentry kind="var" path="IVY_CACHE/org.springframework/org.springframework.context/2.5.6.SEC01/org.springframework.context-2.5.6.SEC01.jar" sourcepath="IVY_CACHE/org.springframework/org.springframework.context/2.5.6.SEC01/org.springframework.context-sources-2.5.6.SEC01.jar"/> <classpathentry kind="var" path="IVY_CACHE/org.springframework/org.springframework.core/2.5.6.SEC01/org.springframework.core-2.5.6.SEC01.jar" sourcepath="IVY_CACHE/org.springframework/org.springframework.core/2.5.6.SEC01/org.springframework.core-sources-2.5.6.SEC01.jar"/> <classpathentry kind="var" path="IVY_CACHE/org.springframework/org.springframework.test/2.5.6.SEC01/org.springframework.test-2.5.6.SEC01.jar" sourcepath="IVY_CACHE/org.springframework/org.springframework.test/2.5.6.SEC01/org.springframework.test-sources-2.5.6.SEC01.jar"/> <classpathentry kind="var" path="IVY_CACHE/org.springframework/org.springframework.web/2.5.6.SEC01/org.springframework.web-2.5.6.SEC01.jar" sourcepath="IVY_CACHE/org.springframework/org.springframework.web/2.5.6.SEC01/org.springframework.web-sources-2.5.6.SEC01.jar"/> <classpathentry kind="var" path="IVY_CACHE/org.springframework/org.springframework.web.servlet/2.5.6.SEC01/org.springframework.web.servlet-2.5.6.SEC01.jar" sourcepath="IVY_CACHE/org.springframework/org.springframework.web.servlet/2.5.6.SEC01/org.springframework.web.servlet-sources-2.5.6.SEC01.jar"/> <classpathentry kind="output" path="target/classes"/> </classpath> ����������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-faces/ivy.xml�������������������������0000644�0000000�0000000�00000007201�11360615640�023043� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������<?xml version="1.0" encoding="UTF-8"?> <?xml-stylesheet type="text/xsl" href="http://ivyrep.jayasoft.org/ivy-doc.xsl"?> <ivy-module xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="http://incubator.apache.org/ivy/schemas/ivy.xsd" version="1.3"> <info organisation="org.springframework.webflow" module="${ant.project.name}"> <license name="Apache 2.0" url="http://www.apache.org/licenses/LICENSE-2.0"/> </info> <configurations> <include file="${spring.build.dir}/common/default-ivy-configurations.xml"/> <conf name="jsf12" visibility="public"/> <conf name="jsf11" visibility="public"/> </configurations> <publications> <artifact name="${ant.project.name}"/> <artifact name="${ant.project.name}-sources" type="src" ext="jar"/> </publications> <dependencies> <!-- core dependencies --> <dependency org="com.sun.facelets" name="com.springsource.com.sun.facelets" rev="1.1.14" conf="optional->runtime" /> <dependency org="javax.el" name="com.springsource.javax.el" rev="1.0.0" conf="provided->runtime" /> <dependency org="javax.servlet" name="com.springsource.javax.servlet" rev="2.4.0" conf="provided->runtime" /> <dependency org="org.apache.commons" name="com.springsource.org.apache.commons.logging" rev="1.1.1" conf="compile->runtime"/> <dependency org="org.richfaces" name="com.springsource.org.richfaces" rev="3.1.4.GA" conf="optional->runtime" /> <dependency org="org.springframework" name="org.springframework.beans" rev="2.5.6.SEC01" conf="compile->runtime"/> <dependency org="org.springframework" name="org.springframework.context" rev="2.5.6.SEC01" conf="compile->runtime"/> <dependency org="org.springframework" name="org.springframework.core" rev="2.5.6.SEC01" conf="compile->runtime"/> <dependency org="org.springframework" name="org.springframework.web" rev="2.5.6.SEC01" conf="compile->runtime"/> <dependency org="org.springframework" name="org.springframework.web.servlet" rev="2.5.6.SEC01" conf="compile->runtime"/> <dependency org="org.springframework.webflow" name="org.springframework.binding" rev="latest.integration" conf="compile->runtime"/> <dependency org="org.springframework.webflow" name="org.springframework.js" rev="latest.integration" conf="compile->runtime"/> <dependency org="org.springframework.webflow" name="org.springframework.webflow" rev="latest.integration" conf="compile->runtime"/> <!-- JSF 1.2 dependencies --> <dependency org="javax.faces" name="com.springsource.javax.faces" rev="1.2.0.09" conf="provided, jsf12->runtime" /> <dependency org="com.sun.faces" name="com.springsource.com.sun.faces" rev="1.2.0.09" conf="provided, jsf12->runtime" /> <!-- JSF 1.1 dependencies --> <dependency org="org.apache.myfaces" name="com.springsource.org.apache.myfaces.javax.faces" rev="1.1.5" conf="jsf11->runtime" /> <dependency org="org.apache.myfaces" name="com.springsource.org.apache.myfaces" rev="1.1.5" conf="jsf11->runtime" /> <!-- test time only dependencies --> <dependency org="org.apache.log4j" name="com.springsource.org.apache.log4j" rev="1.2.15" conf="test->runtime" /> <dependency org="org.apache.shale" name="com.springsource.org.apache.shale.test" rev="1.0.4" conf="test->runtime" /> <dependency org="org.easymock" name="com.springsource.org.easymock" rev="2.3.0" conf="test->runtime" /> <dependency org="org.junit" name="com.springsource.junit" rev="3.8.2" conf="test->runtime" /> <dependency org="org.jboss.el" name="com.springsource.org.jboss.el" rev="2.0.0.GA" conf="test->runtime"/> <dependency org="org.springframework" name="org.springframework.test" rev="2.5.6.SEC01" conf="test->runtime" /> </dependencies> </ivy-module>�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/�����������������������������������0000755�0000000�0000000�00000000000�11360615642�021047� 5����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/template.mf������������������������0000644�0000000�0000000�00000001301�11360615640�023177� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Bundle-SymbolicName: org.springframework.js Bundle-Name: Spring JS Bundle-Vendor: SpringSource Bundle-ManifestVersion: 2 Import-Template: org.springframework.*;version="[2.5.6.SEC01, 3.1.0)", org.apache.commons.logging;version="[1.1.1, 2.0.0)", javax.servlet;version="[2.4.0, 3.0.0)", javax.servlet.http;version="[2.4.0, 3.0.0)", org.apache.tiles;version="[2.0.5, 3.0.0)";resolution:=optional, org.apache.tiles.access;version="[2.0.5, 3.0.0)";resolution:=optional, org.apache.tiles.context;version="[2.0.5.osgi, 3.0.0)";resolution:=optional, org.apache.tiles.definition;version="[2.0.5.osgi, 3.0.0)";resolution:=optional, org.apache.tiles.impl;version="[2.0.5.osgi, 3.0.0)";resolution:=optional �������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/.project���������������������������0000644�0000000�0000000�00000000560�11360615632�022516� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������<?xml version="1.0" encoding="UTF-8"?> <projectDescription> <name>spring-js</name> <comment></comment> <projects> </projects> <buildSpec> <buildCommand> <name>org.eclipse.jdt.core.javabuilder</name> <arguments> </arguments> </buildCommand> </buildSpec> <natures> <nature>org.eclipse.jdt.core.javanature</nature> </natures> </projectDescription> ������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/�������������������������������0000755�0000000�0000000�00000000000�11360615634�021637� 5����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/��������������������������0000755�0000000�0000000�00000000000�11360615634�022563� 5����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/����������������0000755�0000000�0000000�00000000000�11360615632�024573� 5����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/�������0000755�0000000�0000000�00000000000�11360615632�025733� 5����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000154�00000000000�011565� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/css-framework/���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/css-fra0000755�0000000�0000000�00000000000�11360615632�027212� 5����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000160�00000000000�011562� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/css-framework/css/�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/css-fra0000755�0000000�0000000�00000000000�11360615644�027215� 5����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000206�00000000000�011563� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/css-framework/css/layout-navtop-3col.css�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/css-fra0000644�0000000�0000000�00000004721�11360615634�027222� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* A CSS Framework by Mike Stenhouse of Content with Style ------------------------------------------------------- Copyright (c) 2005, Mike Stenhouse of Content with Style All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of CSS Framework nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ @import url("nav-horizontal.css"); /* NAV BAR AT THE TOP, LOCAL NAV ON THE LEFT AND TWO COLUMNS OF CONTENT */ div#content { position: relative; width: 701px; margin: 0 auto 20px auto; padding: 0; text-align: left; } div#main { float: left; width: 300px; display: inline; margin-right: -200px; margin-left: 200px; } div#sub { float: right; width: 180px; display: inline; } div#local { float: left; width: 180px; display: inline; margin-left: -300px; } div#nav { position: absolute; top: -15px; left: 0; width: 701px; text-align: left; } /* END CONTENT */�����������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000170�00000000000�011563� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/css-framework/css/typo.css���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/css-fra0000644�0000000�0000000�00000012271�11360615634�027221� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* A CSS Framework by Mike Stenhouse of Content with Style ------------------------------------------------------- Copyright (c) 2005, Mike Stenhouse of Content with Style All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of CSS Framework nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ /* TYPOGRAPHY */ body { text-align: left; font-family: Verdana, Geneva, Arial, Helvetica, sans-serif; font-size: 76%; line-height: 1em; color: #333; } div { font-size: 1em; } img { border: 0; } /* LINKS */ a, a:link, a:active { text-decoration: underline; color: blue; background-color: white; } a:visited { color: purple; background-color: transparent; } a:hover { text-decoration: none; color: white; background-color: black; } /* END LINKS */ /* HEADINGS */ h1 { margin: 0 0 0.5em 0; padding: 0; font-size: 2em; line-height: 1.5em; color: black; } h2 { margin: 0 0 0.5em 0; padding: 0; font-size: 1.5em; line-height: 1.5em; color: black; } h3 { margin: 0 0 0.5em 0; padding:0; font-size: 1.3em; line-height: 1.3em; color: black; } h4 { margin: 0 0 0.25em 0; padding: 0; font-size: 1.2em; line-height: 1.3em; color: black; } h5 { margin: 0 0 0.25em 0; padding: 0; font-size: 1.1em; line-height: 1.3em; color: black; } h6 { margin: 0 0 0.25em 0; padding: 0; font-size: 1em; line-height: 1.3em; color: black; } /* END HEADINGS */ /* TEXT */ p { margin: 0 0 1.5em 0; padding: 0; font-size: 1em; line-height:1.4em; } blockquote { margin-left: 10px; border-left: 10px solid #ddd; } pre { font-family: monospace; font-size: 1.0em; } strong, b { font-weight: bold; } em, i { font-style:italic; } code { font-family: "Courier New", Courier, monospace; font-size: 1em; white-space: pre; } /* END TEXT */ /* LISTS */ ul { margin: 0 0 1.5em 0; padding: 0; line-height:1.4em; } ul li { margin: 0 0 0.25em 30px; padding: 0; } ol { margin: 0 0 1.5em 0; padding: 0; font-size: 1.0em; line-height: 1.4em; } ol li { margin: 0 0 0.25em 30px; padding: 0; font-size: 1.0em; } dl { margin: 0 0 1.5em 0; padding: 0; line-height: 1.4em; } dl dt { margin: 0.25em 0 0.25em 0; padding: 0; font-weight: bold; } dl dd { margin: 0 0 0 30px; padding: 0; } /* END LISTS */ /* TABLE */ table { margin: 0 0 1.5em 0; padding: 0; font-size: 1em; } table caption { margin: 0; padding: 0 0 1.5em 0; font-weight: bold; } th { font-weight: bold; text-align: left; } td { font-size: 1em; } /* END TABLE */ hr { display: none; } div.hr { height: 1px; margin: 1.5em 10px; border-bottom: 1px dotted black; } /* END TYPOGRAPHY */ ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000200�00000000000�011555� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/css-framework/css/nav-vertical.css�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/css-fra0000644�0000000�0000000�00000006150�11360615634�027220� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* A CSS Framework by Mike Stenhouse of Content with Style ------------------------------------------------------- Copyright (c) 2005, Mike Stenhouse of Content with Style All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of CSS Framework nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ /* NAV */ div#nav { font-size: 0.8em; } * html div#nav { /* hide ie/mac \*/ height: 1%; /* end hide */ } div#nav div.wrapper { width: 100%; background: #ddd; } div#nav ul { width: 100%; margin: 0; padding: 0; line-height: 1em; list-style: none; } div#nav li { display: block; margin: 0; padding: 0; list-style: none; line-height: 1em; } * html div#nav li { /* hide ie/mac \*/ height: 1%; /* end hide */ } div#nav li.last { } div#nav a, div#nav a:link, div#nav a:active, div#nav a:visited { display: block; font-weight: bold; text-decoration: none; margin: 0; padding: 5px 10px 5px 10px; color: black; background: white; } div#nav a:hover { text-decoration: underline; color: white; background: black; } div#nav strong { display: block; color: white; background: black; } div#nav strong a, div#nav strong a:link, div#nav strong a:active, div#nav strong a:visited, div#nav strong a:hover { color: white; background-color: black; } /* END NAV */������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000207�00000000000�011564� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/css-framework/css/layout-navleft-2col.css������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/css-fra0000644�0000000�0000000�00000004556�11360615644�027231� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* A CSS Framework by Mike Stenhouse of Content with Style ------------------------------------------------------- Copyright (c) 2005, Mike Stenhouse of Content with Style All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of CSS Framework nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ @import url("nav-vertical.css"); /* NAV BAR ON THE LEFT AND TWO COLUMNS OF CONTENT */ div#content { position: relative; width: 780px; margin: 0 auto 20px auto; padding: 0; text-align: left; } div#main { float: right; width: 340px; display: inline; margin-right: 220px; margin-left: -220px; } div#local { display: none; } div#sub { float: right; width: 200px; display: inline; margin-right: -340px; margin-left: 200px; } div#nav { float: left; width: 200px; display: inline; } /* END CONTENT */��������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000202�00000000000�011557� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/css-framework/css/nav-horizontal.css�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/css-fra0000644�0000000�0000000�00000006342�11360615636�027225� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* A CSS Framework by Mike Stenhouse of Content with Style ------------------------------------------------------- Copyright (c) 2005, Mike Stenhouse of Content with Style All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of CSS Framework nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ /* NAV */ div#nav { font-size: 0.8em; } * html div#nav { /* hide ie/mac \*/ height: 1%; /* end hide */ } div#nav div.wrapper { position: absolute; left: 0; bottom: 0; width: 100%; } div#nav ul { width: 100%; margin: 0; padding: 0; line-height: 1em; list-style: none; } div#nav li { float: left; display: inline; margin: 0; padding: 0; list-style: none; line-height: 1em; border-right: 1px solid #aaa; } div#nav li.last { border-right: none; } div#nav a, div#nav a:link, div#nav a:active, div#nav a:visited { display: inline-block; /* hide from ie/mac \*/ display: block; /* end hide */ margin: 0; padding: 5px 38px 5px 38px; font-weight: bold; text-decoration: none; color: black; background: #ddd; } div#nav a:hover { text-decoration: underline; } div#nav strong { display: inline-block; /* hide from ie/mac \*/ display: block; /* end hide */ color: white; background: black; } div#nav strong a, div#nav strong a:link, div#nav strong a:active, div#nav strong a:visited, div#nav strong a:hover { color: white; background-color: black; } /* END NAV */����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000171�00000000000�011564� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/css-framework/css/tools.css��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/css-fra0000644�0000000�0000000�00000004545�11360615632�027224� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* A CSS Framework by Mike Stenhouse of Content with Style ------------------------------------------------------- Copyright (c) 2005, Mike Stenhouse of Content with Style All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of CSS Framework nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ /* clearing */ .stretch, .clear { clear: both; height: 1px; margin: 0; padding: 0; font-size: 15px; line-height: 1px; } .clearfix:after { clear: both; height: 0; display: block; visibility: hidden; content: "."; } .clearfix {display:inline-block;} /* Hide from IE Mac \*/ .clearfix {display:block;} /* End hide from IE Mac */ /* end clearing */ /* accessibility */ span.accesskey { text-decoration: none; } .accessibility { position: absolute; top: -999em; left: -999em; } /* end accessibility */�����������������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000171�00000000000�011564� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/css-framework/css/forms.css��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/css-fra0000644�0000000�0000000�00000007141�11360615640�027216� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* A CSS Framework by Mike Stenhouse of Content with Style ------------------------------------------------------- Copyright (c) 2005, Mike Stenhouse of Content with Style All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of CSS Framework nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ /* FORM ELEMENTS */ form { margin:0; padding:0; } form div, form p { margin: 0 0 1em 0; padding: 0; font-size: 1em; } label { font-weight: bold; } fieldset { padding: 5px 10px; margin: 0 0 1.5em 0; border: 1px solid #eee; } fieldset legend { margin: 0 0 0 0px; padding: 0; font-size: 1.1em; font-weight: bold; color: #666; background-color: white; } * html fieldset legend { margin: 0 0 10px -10px; } fieldset ul { margin: 0 0 1.5em 0; padding: 0; list-style: none; } fieldset ul li { margin: 0 0 0.5em 0; padding: 0; list-style: none; } input, select, textarea { margin: 0; padding: 2px; font-size: 1em; font-family: arial, helvetica, verdana, sans-serif; } input, select { vertical-align: middle; } textarea { width: 200px; height: 8em; } input.check { width: auto; height: auto; margin: 0; border: none; } input.radio { width: auto; height: auto; margin: 0; border: none; } input.file { width: 250px; height: auto; } input.readonly { background-color: transparent; border: none; } input.button { width: 10em; background-color: #ddd; border: 1px solid black; } input.image { width: auto; height: auto; border: none; } form div.submit { margin: 1em 0; } form div.submit input { width: 15em; height: 2em; } /* END FORM ELEMENTS */�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000177�00000000000�011572� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/css-framework/css/layout-1col.css��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/css-fra0000644�0000000�0000000�00000004122�11360615636�027217� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* A CSS Framework by Mike Stenhouse of Content with Style ------------------------------------------------------- Copyright (c) 2005, Mike Stenhouse of Content with Style All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of CSS Framework nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ @import url("nav-horizontal.css"); /* NAV BAR AT THE TOP AND ONE COLUMN OF CONTENT */ div#content { position: relative; width: 701px; margin: 0 auto 20px auto; padding: 0; text-align: left; } div#main { width: 100%; } div#local { display: none; } div#sub { display: none; } div#nav { display: none; } /* END CONTENT */����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000172�00000000000�011565� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/css-framework/css/layout.css�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/css-fra0000644�0000000�0000000�00000010211�11360615640�027206� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* A CSS Framework by Mike Stenhouse of Content with Style ------------------------------------------------------- Copyright (c) 2005, Mike Stenhouse of Content with Style All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of CSS Framework nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ /* SITE SPECIFIC LAYOUT */ body { margin: 0; padding: 0; text-align: center; background: white; } div#page { width: 780px; margin: 0 auto; padding: 0; text-align: center; background: white; } /* HEADER */ div#header { margin: 0 0 5em 0; padding: 40px 20px; color: white; background: black; text-align: left; } div#branding { float: left; width: 40%; margin: 0; padding: 10px 0 10px 20px; text-align: left; } div#search { float: right; width: 49%; margin: 0; padding: 16px 20px 0 0; text-align: right; } /* END HEADER */ /* CONTENT */ div#content { } /* MAIN */ div#main { } /* END MAIN */ /* SUB */ div#sub { } /* END SUB */ /* END CONTENT */ /* FOOTER */ div#footer { color: white; background-color: black; } div#footer p { margin: 0; padding: 15px; font-size: 0.8em; } /* END FOOTER */ /* END LAYOUT */ /* UL.SUBNAV */ ul.subnav { margin: 0; padding: 0; font-size: 0.8em; list-style: none; } ul.subnav li { margin: 0 0 1em 0; padding: 0; list-style: none; } ul.subnav li a, ul.subnav li a:link, ul.subnav li a:visited, ul.subnav li a:active { text-decoration: none; font-weight: bold; color: black; } ul.subnav li a:hover { text-decoration: underline; } ul.subnav li strong { padding: 0 0 0 12px; background: url("../i/subnav-highlight.gif") left top no-repeat transparent; } ul.subnav li strong a, ul.subnav li strong a:link, ul.subnav li strong a:visited, ul.subnav li strong a:active { color: white; background-color: black; } /* END UL.SUBNAV */ ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000213�00000000000�011561� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/css-framework/css/layout-navtop-localleft.css��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/css-fra0000644�0000000�0000000�00000004467�11360615634�027231� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* A CSS Framework by Mike Stenhouse of Content with Style ------------------------------------------------------- Copyright (c) 2005, Mike Stenhouse of Content with Style All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of CSS Framework nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ @import url("nav-horizontal.css"); /* NAV BAR AT THE TOP, LOCAL NAVIGATION ON THE LEFT AND ONE COLUMN OF CONTENT */ div#content { position: relative; width: 701px; margin: 0 auto 20px auto; padding: 0; text-align: left; } div#main { float: right; width: 500px; display: inline; } div#local { float: left; width: 200px; display: inline; } div#sub { display: none; } div#nav { position: absolute; top: -15px; left: 0; width: 100%; text-align: left; } /* END CONTENT */���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000212�00000000000�011560� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/css-framework/css/layout-navtop-subright.css���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/css-fra0000644�0000000�0000000�00000004433�11360615632�027220� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* A CSS Framework by Mike Stenhouse of Content with Style ------------------------------------------------------- Copyright (c) 2005, Mike Stenhouse of Content with Style All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of CSS Framework nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ @import url("nav-horizontal.css"); /* NAV BAR AT THE TOP AND TWO COLUMNS OF CONTENT */ div#content { position: relative; width: 701px; margin: 0 auto 20px auto; padding: 0; text-align: left; } div#main { float: left; width: 480px; display: inline; } div#sub { float: right; width: 200px; display: inline; } div#local { display: none; } div#nav { position: absolute; top: -15px; left: 0; width: 100%; text-align: left; } /* END CONTENT */�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000207�00000000000�011564� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/css-framework/css/layout-navleft-1col.css������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/css-fra0000644�0000000�0000000�00000004261�11360615636�027223� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* A CSS Framework by Mike Stenhouse of Content with Style ------------------------------------------------------- Copyright (c) 2005, Mike Stenhouse of Content with Style All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of CSS Framework nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ @import url("nav-vertical.css"); /* NAV BAR ON THE LEFT AND ONE COLUMN OF CONTENT */ div#content { position: relative; width: 780px; margin: 0 auto 20px auto; padding: 0; text-align: left; } div#main { float: right; width: 560px; display: inline; } div#local { display: none; } div#sub { display: none; } div#nav { float: left; width: 200px; display: inline; } /* END CONTENT */�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000206�00000000000�011563� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/css-framework/css/layout-navtop-1col.css�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/css-fra0000644�0000000�0000000�00000004265�11360615632�027223� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* A CSS Framework by Mike Stenhouse of Content with Style ------------------------------------------------------- Copyright (c) 2005, Mike Stenhouse of Content with Style All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of CSS Framework nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ @import url("nav-horizontal.css"); /* NAV BAR AT THE TOP AND ONE COLUMN OF CONTENT */ div#content { position: relative; width: 701px; margin: 0 auto 20px auto; padding: 0; text-align: left; } div#main { width: 100%; } div#local { width: 100%; } div#sub { width: 100%; } div#nav { position: absolute; top: -15px; left: 0; width: 100%; text-align: left; } /* END CONTENT */�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000145�00000000000�011565� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/spring/����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/spring/0000755�0000000�0000000�00000000000�11360615642�027236� 5����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000156�00000000000�011567� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/spring/Spring.js�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/spring/0000644�0000000�0000000�00000006142�11360615632�027242� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* * Copyright 2004-2008 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ Spring={};Spring.debug=true;Spring.decorations={};Spring.decorations.applied=false;Spring.initialize=function(){Spring.applyDecorations();Spring.remoting=new Spring.RemotingHandler();};Spring.addDecoration=function(_1){if(!Spring.decorations[_1.elementId]){Spring.decorations[_1.elementId]=[];Spring.decorations[_1.elementId].push(_1);}else{var _2=false;for(var i=0;i<Spring.decorations[_1.elementId].length;i++){var _4=Spring.decorations[_1.elementId][i];if(_4.equals(_1)){if(_4.cleanup!=undefined){_4.cleanup();}Spring.decorations[_1.elementId][i]=_1;_2=true;break;}}if(!_2){Spring.decorations[_1.elementId].push(_1);}}if(Spring.decorations.applied){_1.apply();}};Spring.applyDecorations=function(){if(!Spring.decorations.applied){for(var _5 in Spring.decorations){for(var x=0;x<Spring.decorations[_5].length;x++){Spring.decorations[_5][x].apply();}}Spring.decorations.applied=true;}};Spring.validateAll=function(){var _7=true;for(var _8 in Spring.decorations){for(var x=0;x<Spring.decorations[_8].length;x++){if(Spring.decorations[_8][x].widget&&!Spring.decorations[_8][x].validate()){_7=false;}}}return _7;};Spring.validateRequired=function(){var _a=true;for(var _b in Spring.decorations){for(var x=0;x<Spring.decorations[_b].length;x++){if(Spring.decorations[_b][x].widget&&Spring.decorations[_b][x].isRequired()&&!Spring.decorations[_b][x].validate()){_a=false;}}}return _a;};Spring.AbstractElementDecoration=function(){};Spring.AbstractElementDecoration.prototype={elementId:"",widgetType:"",widgetModule:"",widget:null,widgetAttrs:{},apply:function(){},validate:function(){},isRequired:function(){},equals:function(_d){}};Spring.AbstractValidateAllDecoration=function(){};Spring.AbstractValidateAllDecoration.prototype={event:"",elementId:"",apply:function(){},cleanup:function(){},handleEvent:function(_e){},equals:function(_f){}};Spring.AbstractCommandLinkDecoration=function(){};Spring.AbstractCommandLinkDecoration.prototype={elementId:"",linkHtml:"",apply:function(){},submitFormFromLink:function(_10,_11,_12){},equals:function(_13){}};Spring.AbstractAjaxEventDecoration=function(){};Spring.AbstractAjaxEventDecoration.prototype={event:"",elementId:"",sourceId:"",formId:"",popup:false,params:{},apply:function(){},cleanup:function(){},submit:function(_14){},equals:function(_15){}};Spring.AbstractRemotingHandler=function(){};Spring.AbstractRemotingHandler.prototype={submitForm:function(_16,_17,_18){},getLinkedResource:function(_19,_1a,_1b){},getResource:function(_1c,_1d,_1e){},handleResponse:function(){},handleError:function(){}};������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000163�00000000000�011565� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/spring/Spring-Dojo.js��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/spring/0000644�0000000�0000000�00000021156�11360615642�027245� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* * Copyright 2004-2008 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ dojo.declare("Spring.DefaultEquals",null,{equals:function(_1){if(_1.declaredClass&&_1.declaredClass==this.declaredClass){return true;}else{return false;}}});dojo.declare("Spring.ElementDecoration",[Spring.AbstractElementDecoration,Spring.DefaultEquals],{constructor:function(_2){this.copyFields=new Array("name","value","type","checked","selected","readOnly","disabled","alt","maxLength","class","title");dojo.mixin(this,_2);this.element=dojo.byId(this.elementId);this.elementId=dojo.isString(this.elementId)?this.elementId:this.elementId.id;if(this.widgetModule==""){this.widgetModule=this.widgetType;}},apply:function(){if(dijit.byId(this.elementId)){dijit.byId(this.elementId).destroyRecursive(false);}if(!this.element){console.error("Could not apply "+this.widgetType+" decoration. Element with id '"+this.elementId+"' not found in the DOM.");}else{var _3=this.widgetAttrs["datePattern"];if(_3&&this.widgetType=="dijit.form.DateTextBox"){if(!this.widgetAttrs["value"]){this.widgetAttrs["value"]=dojo.date.locale.parse(this.element.value,{selector:"date",datePattern:_3});}if(!this.widgetAttrs["serialize"]){this.widgetAttrs["serialize"]=function(d,_5){return dojo.date.locale.format(d,{selector:"date",datePattern:_3});};}}for(var _6 in this.copyFields){_6=this.copyFields[_6];if(!this.widgetAttrs[_6]&&this.element[_6]&&(typeof this.element[_6]!="number"||(typeof this.element[_6]=="number"&&this.element[_6]>=0))){this.widgetAttrs[_6]=this.element[_6];}}if(this.element["style"]&&this.element["style"].cssText){this.widgetAttrs["style"]=this.element["style"].cssText;}dojo.require(this.widgetModule);var _7=dojo.eval(this.widgetType);this.widget=new _7(this.widgetAttrs,this.element);this.widget.startup();}return this;},validate:function(){if(!this.widget.isValid){return true;}var _8=this.widget.isValid(false);if(!_8){this.widget.state="Error";this.widget._setStateClass();}return _8;}});dojo.declare("Spring.ValidateAllDecoration",[Spring.AbstractValidateAllDecoration,Spring.DefaultEquals],{constructor:function(_9){this.originalHandler=null;this.connection=null;dojo.mixin(this,_9);},apply:function(){var _a=dojo.byId(this.elementId);if(!_a){console.error("Could not apply ValidateAll decoration. Element with id '"+this.elementId+"' not found in the DOM.");}else{this.originalHandler=_a[this.event];var _b=this;_a[this.event]=function(_c){_b.handleEvent(_c,_b);};}return this;},cleanup:function(){dojo.disconnect(this.connection);},handleEvent:function(_d,_e){if(!Spring.validateAll()){dojo.publish(this.elementId+"/validation",[false]);dojo.stopEvent(_d);}else{dojo.publish(this.elementId+"/validation",[true]);if(dojo.isFunction(_e.originalHandler)){var _f=_e.originalHandler(_d);if(_f==false){dojo.stopEvent(_d);}}}}});dojo.declare("Spring.AjaxEventDecoration",[Spring.AbstractAjaxEventDecoration,Spring.DefaultEquals],{constructor:function(_10){this.validationSubscription=null;this.connection=null;this.allowed=true;dojo.mixin(this,_10);},apply:function(){var _11=dijit.byId(this.elementId)?dijit.byId(this.elementId):dojo.byId(this.elementId);if(!_11){console.error("Could not apply AjaxEvent decoration. Element with id '"+this.elementId+"' not found in the DOM.");}else{this.validationSubscription=dojo.subscribe(this.elementId+"/validation",this,"_handleValidation");this.connection=dojo.connect(_11,this.event,this,"submit");}return this;},cleanup:function(){dojo.unsubscribe(this.validationSubscription);dojo.disconnect(this.connection);},submit:function(_12){if(this.sourceId==""){this.sourceId=this.elementId;}if(this.formId==""){Spring.remoting.getLinkedResource(this.sourceId,this.params,this.popup);}else{if(this.allowed){Spring.remoting.submitForm(this.sourceId,this.formId,this.params);}}dojo.stopEvent(_12);},_handleValidation:function(_13){if(!_13){this.allowed=false;}else{this.allowed=true;}}});dojo.declare("Spring.RemotingHandler",Spring.AbstractRemotingHandler,{constructor:function(){},submitForm:function(_14,_15,_16){var _17=new Object();for(var key in _16){_17[key]=_16[key];}var _19=dojo.byId(_14);if(_19!=null){if(_19.value!=undefined&&_19.type&&("button,submit,reset").indexOf(_19.type)<0){_17[_14]=_19.value;}else{if(_19.name!=undefined){_17[_19.name]=_19.name;}else{_17[_14]=_14;}}}if(!_17["ajaxSource"]){_17["ajaxSource"]=_14;}var _1a=dojo.byId(_15);var _1b=dojo.string.trim(_1a.method);_1b=_1b.length>0?_1b.toUpperCase():"GET";dojo.xhr(_1b,{content:_17,form:_15,handleAs:"text",headers:{"Accept":"text/html;type=ajax"},load:this.handleResponse,error:this.handleError},_1b=="POST"?true:false);},getLinkedResource:function(_1c,_1d,_1e){this.getResource(dojo.byId(_1c).href,_1d,_1e);},getResource:function(_1f,_20,_21){dojo.xhrGet({url:_1f,content:_20,handleAs:"text",headers:{"Accept":"text/html;type=ajax"},load:this.handleResponse,error:this.handleError,modal:_21});},handleResponse:function(_22,_23){var _24=_23.xhr.getResponseHeader("Spring-Redirect-URL");var _25=_23.xhr.getResponseHeader("Spring-Modal-View");var _26=((dojo.isString(_25)&&_25.length>0)||_23.args.modal);if(dojo.isString(_24)&&_24.length>0){if(_26){Spring.remoting._renderURLToModalDialog(_24);return _22;}else{if(_24.indexOf("/")>=0){window.location=window.location.protocol+"//"+window.location.host+_24;}else{var _27=window.location.protocol+"//"+window.location.host+window.location.pathname;var _28=_27.lastIndexOf("/");_27=_27.substr(0,_28+1)+_24;if(_27==window.location){Spring.remoting.getResource(_27,_23.args.content,false);}else{window.location=_27;}}return _22;}}var _29="(?:<script(.|[\n|\r])*?>)((\n|\r|.)*?)(?:</script>)";var _2a=[];var _2b=new RegExp(_29,"img");var _2c=new RegExp(_29,"im");var _2d=_22.match(_2b);if(_2d!=null){for(var i=0;i<_2d.length;i++){var _2f=(_2d[i].match(_2c)||["","",""])[2];_2f=_2f.replace(/<!--/mg,"").replace(/\/\/-->/mg,"").replace(/<!\[CDATA\[(\/\/>)*/mg,"").replace(/(<!)*\]\]>/mg,"");_2a.push(_2f);}}_22=_22.replace(_2b,"");if(_26){Spring.remoting._renderResponseToModalDialog(_22);}else{var _30=dojo.doc.createElement("span");_30.id="ajaxResponse";_30.style.display="none";document.body.appendChild(_30);_30.innerHTML=_22;var _31=new dojo.NodeList(_30);var _32=_31.query("#ajaxResponse > *").orphan();_31.orphan();_32.forEach(function(_33){if(_33.id!=null&&_33.id!=""){var _34=dijit.byId(_33.id)?dijit.byId(_33.id).domNode:dojo.byId(_33.id);if(!_34){console.error("An existing DOM elment with id '"+_33.id+"' could not be found for replacement.");}else{_34.parentNode.replaceChild(_33,_34);}}});}dojo.forEach(_2a,function(_35){dojo.eval(_35);});return _22;},handleError:function(_36,_37){dojo.require("dijit.Dialog");console.error("HTTP status code: ",_37.xhr.status);if(Spring.debug&&_37.xhr.status!=200){var _38=new dijit.Dialog({});dojo.connect(_38,"hide",_38,function(){this.destroyRecursive(false);});_38.domNode.style.width="80%";_38.domNode.style.height="80%";_38.domNode.style.textAlign="left";_38.setContent(_37.xhr.responseText);_38.show();}return _36;},_renderURLToModalDialog:function(url){Spring.remoting.getResource(url,{},true);},_renderResponseToModalDialog:function(_3a){dojo.require("dijit.Dialog");var _3b=new dijit.Dialog({});_3b.setContent(_3a);dojo.connect(_3b,"hide",_3b,function(){this.destroyRecursive(false);});_3b.show();}});dojo.declare("Spring.CommandLinkDecoration",[Spring.AbstractCommandLinkDecoration,Spring.DefaultEquals],{constructor:function(_3c){dojo.mixin(this,_3c);},apply:function(){var _3d=dojo.byId(this.elementId);if(!dojo.hasClass(_3d,"progressiveLink")){var _3e=new dojo.NodeList(_3d);_3e.addContent(this.linkHtml,"after").orphan("*");_3d=dojo.byId(this.elementId);}_3d.submitFormFromLink=this.submitFormFromLink;return this;},submitFormFromLink:function(_3f,_40,_41){var _42=[];var _43=dojo.byId(_3f);var _44=document.createElement("input");_44.name=_40;_44.value="submitted";_42.push(_44);dojo.forEach(_41,function(_45){var _46=document.createElement("input");_46.name=_45.name;_46.value=_45.value;_42.push(_46);});dojo.forEach(_42,function(_47){dojo.addClass(_47,"SpringLinkInput");dojo.place(_47,_43,"last");});if((_43.onsubmit?!_43.onsubmit():false)||!_43.submit()){dojo.forEach(_42,function(_48){_48.parentNode.removeChild(_48);});}}});dojo.addOnLoad(Spring.initialize);������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000203�00000000000�011560� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/spring/Spring-Dojo.js.uncompressed.js����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/spring/0000644�0000000�0000000�00000031114�11360615636�027243� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* * Copyright 2004-2008 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ dojo.declare("Spring.DefaultEquals", null, { equals : function(/*Object*/other){ if (other.declaredClass && other.declaredClass == this.declaredClass) { return true; }else{ return false; } } }); dojo.declare("Spring.ElementDecoration", [Spring.AbstractElementDecoration, Spring.DefaultEquals], { constructor : function(config) { this.copyFields = new Array('name', 'value', 'type', 'checked', 'selected', 'readOnly', 'disabled', 'alt', 'maxLength', 'class', 'title'); dojo.mixin(this, config); this.element = dojo.byId(this.elementId); this.elementId = dojo.isString(this.elementId) ? this.elementId : this.elementId.id; if(this.widgetModule == "") { this.widgetModule = this.widgetType; } }, apply : function(){ if (dijit.byId(this.elementId)) { dijit.byId(this.elementId).destroyRecursive(false); } if (!this.element) { console.error("Could not apply " + this.widgetType + " decoration. Element with id '" + this.elementId + "' not found in the DOM."); } else { var datePattern = this.widgetAttrs['datePattern']; if (datePattern && this.widgetType == 'dijit.form.DateTextBox') { if (!this.widgetAttrs['value']) { this.widgetAttrs['value'] = dojo.date.locale.parse(this.element.value, {selector : "date", datePattern : datePattern}); } if (!this.widgetAttrs['serialize']) { this.widgetAttrs['serialize'] = function(d, options){ return dojo.date.locale.format(d, {selector : "date", datePattern : datePattern}); } } } for (var copyField in this.copyFields) { copyField = this.copyFields[copyField]; if (!this.widgetAttrs[copyField] && this.element[copyField] && (typeof this.element[copyField] != 'number' || (typeof this.element[copyField] == 'number' && this.element[copyField] >= 0))) { this.widgetAttrs[copyField] = this.element[copyField]; } } if(this.element['style'] && this.element['style'].cssText){ this.widgetAttrs['style'] = this.element['style'].cssText; } dojo.require(this.widgetModule); var widgetConstructor = dojo.eval(this.widgetType); this.widget = new widgetConstructor(this.widgetAttrs, this.element); this.widget.startup(); } //return this to support method chaining return this; }, validate : function(){ if (!this.widget.isValid) { // some widgets cannot be validated return true; } var isValid = this.widget.isValid(false); if (!isValid) { this.widget.state = "Error"; this.widget._setStateClass(); } return isValid; } }); dojo.declare("Spring.ValidateAllDecoration", [Spring.AbstractValidateAllDecoration, Spring.DefaultEquals], { constructor : function(config) { this.originalHandler = null; this.connection = null; dojo.mixin(this, config); }, apply : function() { var element = dojo.byId(this.elementId); if (!element) { console.error("Could not apply ValidateAll decoration. Element with id '" + this.elementId + "' not found in the DOM."); } else { this.originalHandler = element[this.event]; var context = this; element[this.event] = function(event){ context.handleEvent(event, context); }; } return this; }, cleanup : function(){ dojo.disconnect(this.connection); }, handleEvent : function(event, context){ if (!Spring.validateAll()) { dojo.publish(this.elementId+"/validation", [false]); dojo.stopEvent(event); } else { dojo.publish(this.elementId+"/validation", [true]); if(dojo.isFunction(context.originalHandler)) { var result = context.originalHandler(event); if (result == false) { dojo.stopEvent(event); } } } } }); dojo.declare("Spring.AjaxEventDecoration", [Spring.AbstractAjaxEventDecoration, Spring.DefaultEquals], { constructor : function(config){ this.validationSubscription = null; this.connection = null; this.allowed = true; dojo.mixin(this, config); }, apply : function() { var element = dijit.byId(this.elementId) ? dijit.byId(this.elementId) : dojo.byId(this.elementId); if (!element) { console.error("Could not apply AjaxEvent decoration. Element with id '" + this.elementId + "' not found in the DOM."); } else { this.validationSubscription = dojo.subscribe(this.elementId+"/validation", this, "_handleValidation"); this.connection = dojo.connect(element, this.event, this, "submit"); } return this; }, cleanup : function(){ dojo.unsubscribe(this.validationSubscription); dojo.disconnect(this.connection); }, submit : function(event){ if (this.sourceId == ""){ this.sourceId = this.elementId; } if(this.formId == ""){ Spring.remoting.getLinkedResource(this.sourceId, this.params, this.popup); } else { if (this.allowed){ Spring.remoting.submitForm(this.sourceId, this.formId, this.params); } } dojo.stopEvent(event); }, _handleValidation : function(success){ if (!success) { this.allowed=false; } else { this.allowed=true; } } }); dojo.declare("Spring.RemotingHandler", Spring.AbstractRemotingHandler, { constructor : function(){}, submitForm : function(/*String */ sourceId, /*String*/formId, /*Object*/ params) { var content = new Object(); for (var key in params) { content[key] = params[key]; } var sourceComponent = dojo.byId(sourceId); if (sourceComponent != null){ if(sourceComponent.value != undefined && sourceComponent.type && ("button,submit,reset").indexOf(sourceComponent.type) < 0) { content[sourceId] = sourceComponent.value; } else if(sourceComponent.name != undefined) { content[sourceComponent.name] = sourceComponent.name; } else { content[sourceId] = sourceId; } } if (!content['ajaxSource']) { content['ajaxSource'] = sourceId; } var formNode = dojo.byId(formId); var formMethod = dojo.string.trim(formNode.method); formMethod = formMethod.length > 0 ? formMethod.toUpperCase() : "GET"; dojo.xhr(formMethod, { content: content, form: formId, handleAs: "text", headers: {"Accept" : "text/html;type=ajax"}, // The LOAD function will be called on a successful response. load: this.handleResponse, // The ERROR function will be called in an error case. error: this.handleError }, formMethod == "POST" ? true : false); }, getLinkedResource: function(/*String */ linkId, /*Object*/params, /*boolean*/ modal) { this.getResource(dojo.byId(linkId).href, params, modal); }, getResource: function(/*String */ resourceUri, /*Object*/params, /*boolean*/ modal) { dojo.xhrGet({ url: resourceUri, content: params, handleAs: "text", headers: {"Accept" : "text/html;type=ajax"}, load: this.handleResponse, error: this.handleError, modal: modal }); }, handleResponse: function(response, ioArgs) { //First check if this response should redirect var redirectURL = ioArgs.xhr.getResponseHeader('Spring-Redirect-URL'); var modalViewHeader = ioArgs.xhr.getResponseHeader('Spring-Modal-View'); var modalView = ((dojo.isString(modalViewHeader) && modalViewHeader.length > 0) || ioArgs.args.modal); if (dojo.isString(redirectURL) && redirectURL.length > 0) { if (modalView) { //render a popup with the new URL Spring.remoting._renderURLToModalDialog(redirectURL); return response; } else { if (redirectURL.indexOf("/") >= 0) { window.location = window.location.protocol + "//" + window.location.host + redirectURL; } else { var location = window.location.protocol + "//" + window.location.host + window.location.pathname; var appendIndex = location.lastIndexOf("/"); location = location.substr(0,appendIndex+1) + redirectURL; if (location == window.location) { Spring.remoting.getResource(location, ioArgs.args.content, false); } else { window.location = location; } } return response; } } //Extract and store all <script> elements from the response var scriptPattern = '(?:<script(.|[\n|\r])*?>)((\n|\r|.)*?)(?:<\/script>)'; var extractedScriptNodes = []; var matchAll = new RegExp(scriptPattern, 'img'); var matchOne = new RegExp(scriptPattern, 'im'); var scriptNodes = response.match(matchAll); if (scriptNodes != null) { for (var i=0; i<scriptNodes.length; i++) { var script = (scriptNodes[i].match(matchOne) || ['','',''])[2]; script = script.replace(/<!--/mg,'').replace(/\/\/-->/mg,'').replace(/<!\[CDATA\[(\/\/>)*/mg,'').replace(/(<!)*\]\]>/mg,''); extractedScriptNodes.push(script); } } response = response.replace(matchAll, ''); if (modalView) { //For a modal view, just dump the response into a modal dialog Spring.remoting._renderResponseToModalDialog(response); } else { //Extract the new DOM nodes from the response var tempSpan = dojo.doc.createElement("span"); tempSpan.id="ajaxResponse"; tempSpan.style.display= "none"; document.body.appendChild(tempSpan); tempSpan.innerHTML=response; var tempContainer = new dojo.NodeList(tempSpan); var newNodes = tempContainer.query("#ajaxResponse > *").orphan(); tempContainer.orphan(); //Insert the new DOM nodes and update the Form's action URL newNodes.forEach(function(item){ if (item.id != null && item.id != "") { var target = dijit.byId(item.id) ? dijit.byId(item.id).domNode : dojo.byId(item.id); if (!target) { console.error("An existing DOM elment with id '" + item.id + "' could not be found for replacement."); } else { target.parentNode.replaceChild(item, target); } } }); } //Evaluate any script code dojo.forEach(extractedScriptNodes, function(script){ dojo.eval(script); }); return response; }, handleError: function(response, ioArgs) { dojo.require("dijit.Dialog"); console.error("HTTP status code: ", ioArgs.xhr.status); if (Spring.debug && ioArgs.xhr.status != 200) { var dialog = new dijit.Dialog({}); dojo.connect(dialog, "hide", dialog, function(){ this.destroyRecursive(false); }); dialog.domNode.style.width = "80%"; dialog.domNode.style.height = "80%"; dialog.domNode.style.textAlign = "left"; dialog.setContent(ioArgs.xhr.responseText); dialog.show(); } return response; }, _renderURLToModalDialog: function(url) { Spring.remoting.getResource(url, {}, true); }, _renderResponseToModalDialog: function(response) { dojo.require("dijit.Dialog"); var dialog = new dijit.Dialog({}); dialog.setContent(response); dojo.connect(dialog, "hide", dialog, function(){ this.destroyRecursive(false); }); dialog.show(); } }); dojo.declare("Spring.CommandLinkDecoration", [Spring.AbstractCommandLinkDecoration, Spring.DefaultEquals], { constructor : function(config){ dojo.mixin(this, config); }, apply : function(){ var advisedNode = dojo.byId(this.elementId); if (!dojo.hasClass(advisedNode, "progressiveLink")) { //Node must be replaced var nodeToReplace = new dojo.NodeList(advisedNode); nodeToReplace.addContent(this.linkHtml, "after").orphan("*"); //Get the new node advisedNode = dojo.byId(this.elementId); } advisedNode.submitFormFromLink = this.submitFormFromLink; //return this to support method chaining return this; }, submitFormFromLink : function(/*String*/ formId, /*String*/ sourceId, /*Array of name,value params*/ params){ var addedNodes = []; var formNode = dojo.byId(formId); var linkNode = document.createElement("input"); linkNode.name = sourceId; linkNode.value = "submitted"; addedNodes.push(linkNode); dojo.forEach(params, function(param){ var paramNode = document.createElement("input"); paramNode.name=param.name; paramNode.value=param.value; addedNodes.push(paramNode); }); dojo.forEach(addedNodes, function(nodeToAdd){ dojo.addClass(nodeToAdd, "SpringLinkInput"); dojo.place(nodeToAdd, formNode, "last"); }); if ((formNode.onsubmit ? !formNode.onsubmit() : false) || !formNode.submit()) { dojo.forEach(addedNodes, function(hiddenNode){ hiddenNode.parentNode.removeChild(hiddenNode); }); } } }); dojo.addOnLoad(Spring.initialize);����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000176�00000000000�011571� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/spring/Spring.js.uncompressed.js���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/spring/0000644�0000000�0000000�00000010315�11360615640�027236� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* * Copyright 2004-2008 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ Spring = {}; Spring.debug = true; Spring.decorations = {}; Spring.decorations.applied = false; Spring.initialize = function(){ Spring.applyDecorations(); Spring.remoting = new Spring.RemotingHandler(); }; Spring.addDecoration = function(/*Object*/decoration){ //Spring.decorations.push(decoration); if (!Spring.decorations[decoration.elementId]) { Spring.decorations[decoration.elementId] = []; Spring.decorations[decoration.elementId].push(decoration); } else { var replaced = false; for(var i = 0; i<Spring.decorations[decoration.elementId].length; i++) { var existingDecoration = Spring.decorations[decoration.elementId][i]; if(existingDecoration.equals(decoration)) { if (existingDecoration.cleanup != undefined) { existingDecoration.cleanup(); } Spring.decorations[decoration.elementId][i] = decoration; replaced=true; break; } } if (!replaced) { Spring.decorations[decoration.elementId].push(decoration); } } if(Spring.decorations.applied) { decoration.apply(); } }; Spring.applyDecorations = function(){ if (!Spring.decorations.applied) { for (var elementId in Spring.decorations) { for (var x = 0; x < Spring.decorations[elementId].length; x++) { Spring.decorations[elementId][x].apply(); } } Spring.decorations.applied = true; } }; Spring.validateAll = function(){ var valid = true; for (var elementId in Spring.decorations) { for (var x = 0; x < Spring.decorations[elementId].length; x++) { if (Spring.decorations[elementId][x].widget && !Spring.decorations[elementId][x].validate()) { valid = false; } } } return valid; }; Spring.validateRequired = function(){ var valid = true; for (var elementId in Spring.decorations) { for (var x = 0; x < Spring.decorations[elementId].length; x++) { if (Spring.decorations[elementId][x].widget && Spring.decorations[elementId][x].isRequired() && !Spring.decorations[elementId][x].validate()) { valid = false; } } } return valid; }; Spring.AbstractElementDecoration = function(){}; Spring.AbstractElementDecoration.prototype = { elementId : "", widgetType : "", widgetModule : "", widget : null, widgetAttrs : {}, apply : function(){}, validate : function(){}, isRequired : function(){}, equals : function(/*Object*/other){} }; Spring.AbstractValidateAllDecoration = function(){}; Spring.AbstractValidateAllDecoration.prototype = { event : "", elementId : "", apply : function() {}, cleanup : function(){}, handleEvent : function(event){}, equals : function(/*Object*/other){} }; Spring.AbstractCommandLinkDecoration = function(){}; Spring.AbstractCommandLinkDecoration.prototype = { elementId : "", linkHtml : "", apply : function(){}, submitFormFromLink : function(/*String*/ formId, /*String*/ sourceId, /*Array of name,value params*/ params){}, equals : function(/*Object*/other){} }; Spring.AbstractAjaxEventDecoration = function(){}; Spring.AbstractAjaxEventDecoration.prototype = { event : "", elementId : "", sourceId : "", formId : "", popup : false, params : {}, apply : function(){}, cleanup : function(){}, submit : function(event){}, equals : function(/*Object*/other){} }; Spring.AbstractRemotingHandler = function(){}; Spring.AbstractRemotingHandler.prototype = { submitForm : function(/*String */ sourceId, /*String*/formId, /*Object*/ params){}, getLinkedResource: function(/*String */ linkId, /*Object*/params, /*boolean*/ modal) {}, getResource : function(/*String */ resourceUri, /*Object*/params, /*boolean*/ modal) {}, handleResponse : function() {}, handleError : function() {} }; �������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/�0000755�0000000�0000000�00000000000�11360615644�027041� 5����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000163�00000000000�011565� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/ColorPalette.js��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/C0000644�0000000�0000000�00000012510�11360615644�027145� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* Copyright (c) 2004-2008, The Dojo Foundation All Rights Reserved. Available via Academic Free License >= 2.1 OR the modified BSD license. see: http://dojotoolkit.org/license for details */ if(!dojo._hasResource["dijit.ColorPalette"]){dojo._hasResource["dijit.ColorPalette"]=true;dojo.provide("dijit.ColorPalette");dojo.require("dijit._Widget");dojo.require("dijit._Templated");dojo.require("dojo.colors");dojo.require("dojo.i18n");dojo.requireLocalization("dojo","colors",null,"ar,ca,ROOT,cs,da,de,el,es,fi,fr,he,hu,it,ja,ko,nb,nl,pl,pt,pt-pt,ru,sk,sl,sv,th,tr,zh,zh-tw");dojo.declare("dijit.ColorPalette",[dijit._Widget,dijit._Templated],{defaultTimeout:500,timeoutChangeRate:0.9,palette:"7x10",value:null,_currentFocus:0,_xDim:null,_yDim:null,_palettes:{"7x10":[["white","seashell","cornsilk","lemonchiffon","lightyellow","palegreen","paleturquoise","lightcyan","lavender","plum"],["lightgray","pink","bisque","moccasin","khaki","lightgreen","lightseagreen","lightskyblue","cornflowerblue","violet"],["silver","lightcoral","sandybrown","orange","palegoldenrod","chartreuse","mediumturquoise","skyblue","mediumslateblue","orchid"],["gray","red","orangered","darkorange","yellow","limegreen","darkseagreen","royalblue","slateblue","mediumorchid"],["dimgray","crimson","chocolate","coral","gold","forestgreen","seagreen","blue","blueviolet","darkorchid"],["darkslategray","firebrick","saddlebrown","sienna","olive","green","darkcyan","mediumblue","darkslateblue","darkmagenta"],["black","darkred","maroon","brown","darkolivegreen","darkgreen","midnightblue","navy","indigo","purple"]],"3x4":[["white","lime","green","blue"],["silver","yellow","fuchsia","navy"],["gray","red","purple","black"]]},_imagePaths:{"7x10":dojo.moduleUrl("dijit.themes","a11y/colors7x10.png"),"3x4":dojo.moduleUrl("dijit.themes","a11y/colors3x4.png")},_paletteCoords:{"leftOffset":3,"topOffset":3,"cWidth":20,"cHeight":20},templateString:"<div class=\"dijitInline dijitColorPalette\">\n\t<div class=\"dijitColorPaletteInner\" dojoAttachPoint=\"divNode\" waiRole=\"grid\" tabIndex=\"${tabIndex}\">\n\t\t<img class=\"dijitColorPaletteUnder\" dojoAttachPoint=\"imageNode\" waiRole=\"presentation\">\n\t</div>\t\n</div>\n",_paletteDims:{"7x10":{"width":"206px","height":"145px"},"3x4":{"width":"86px","height":"64px"}},tabIndex:"0",postCreate:function(){dojo.mixin(this.divNode.style,this._paletteDims[this.palette]);this.imageNode.setAttribute("src",this._imagePaths[this.palette]);var _1=this._palettes[this.palette];this.domNode.style.position="relative";this._cellNodes=[];this.colorNames=dojo.i18n.getLocalization("dojo","colors",this.lang);var _2=this._blankGif,_3=new dojo.Color(),_4=this._paletteCoords;for(var _5=0;_5<_1.length;_5++){for(var _6=0;_6<_1[_5].length;_6++){var _7=dojo.doc.createElement("img");_7.src=_2;dojo.addClass(_7,"dijitPaletteImg");var _8=_1[_5][_6],_9=_3.setColor(dojo.Color.named[_8]);_7.alt=this.colorNames[_8];_7.color=_9.toHex();var _a=_7.style;_a.color=_a.backgroundColor=_7.color;var _b=dojo.doc.createElement("span");_b.appendChild(_7);dojo.forEach(["Dijitclick","MouseEnter","Focus","Blur"],function(_c){this.connect(_b,"on"+_c.toLowerCase(),"_onCell"+_c);},this);this.divNode.appendChild(_b);var _d=_b.style;_d.top=_4.topOffset+(_5*_4.cHeight)+"px";_d.left=_4.leftOffset+(_6*_4.cWidth)+"px";dojo.attr(_b,"tabindex","-1");_b.title=this.colorNames[_8];dojo.addClass(_b,"dijitPaletteCell");dijit.setWaiRole(_b,"gridcell");_b.index=this._cellNodes.length;this._cellNodes.push(_b);}}this._xDim=_1[0].length;this._yDim=_1.length;this.connect(this.divNode,"onfocus","_onDivNodeFocus");var _e={UP_ARROW:-this._xDim,DOWN_ARROW:this._xDim,RIGHT_ARROW:1,LEFT_ARROW:-1};for(var _f in _e){this._connects.push(dijit.typematic.addKeyListener(this.domNode,{charOrCode:dojo.keys[_f],ctrlKey:false,altKey:false,shiftKey:false},this,function(){var _10=_e[_f];return function(_11){this._navigateByKey(_10,_11);};}(),this.timeoutChangeRate,this.defaultTimeout));}},focus:function(){this._focusFirst();},onChange:function(_12){},_focusFirst:function(){this._currentFocus=0;var _13=this._cellNodes[this._currentFocus];window.setTimeout(function(){dijit.focus(_13);},0);},_onDivNodeFocus:function(evt){if(evt.target===this.divNode){this._focusFirst();}},_onFocus:function(){dojo.attr(this.divNode,"tabindex","-1");},_onBlur:function(){this._removeCellHighlight(this._currentFocus);dojo.attr(this.divNode,"tabindex",this.tabIndex);},_onCellDijitclick:function(evt){var _16=evt.currentTarget;if(this._currentFocus!=_16.index){this._currentFocus=_16.index;window.setTimeout(function(){dijit.focus(_16);},0);}this._selectColor(_16);dojo.stopEvent(evt);},_onCellMouseEnter:function(evt){var _18=evt.currentTarget;this._setCurrent(_18);window.setTimeout(function(){dijit.focus(_18);},0);},_onCellFocus:function(evt){this._setCurrent(evt.currentTarget);},_setCurrent:function(_1a){this._removeCellHighlight(this._currentFocus);this._currentFocus=_1a.index;dojo.addClass(_1a,"dijitPaletteCellHighlight");},_onCellBlur:function(evt){this._removeCellHighlight(this._currentFocus);},_removeCellHighlight:function(_1c){dojo.removeClass(this._cellNodes[_1c],"dijitPaletteCellHighlight");},_selectColor:function(_1d){var img=_1d.getElementsByTagName("img")[0];this.onChange(this.value=img.color);},_navigateByKey:function(_1f,_20){if(_20==-1){return;}var _21=this._currentFocus+_1f;if(_21<this._cellNodes.length&&_21>-1){var _22=this._cellNodes[_21];_22.focus();}}});}����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000164�00000000000�011566� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/InlineEditBox.js�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/I0000644�0000000�0000000�00000016472�11360615642�027164� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* Copyright (c) 2004-2008, The Dojo Foundation All Rights Reserved. Available via Academic Free License >= 2.1 OR the modified BSD license. see: http://dojotoolkit.org/license for details */ if(!dojo._hasResource["dijit.InlineEditBox"]){dojo._hasResource["dijit.InlineEditBox"]=true;dojo.provide("dijit.InlineEditBox");dojo.require("dojo.i18n");dojo.require("dijit._Widget");dojo.require("dijit._Container");dojo.require("dijit.form.Button");dojo.require("dijit.form.TextBox");dojo.requireLocalization("dijit","common",null,"ar,ca,ROOT,cs,da,de,el,es,fi,fr,he,hu,it,ja,ko,nb,nl,pl,pt,pt-pt,ru,sk,sl,sv,th,tr,zh,zh-tw");dojo.declare("dijit.InlineEditBox",dijit._Widget,{editing:false,autoSave:true,buttonSave:"",buttonCancel:"",renderAsHtml:false,editor:"dijit.form.TextBox",editorParams:{},onChange:function(_1){},onCancel:function(){},width:"100%",value:"",noValueIndicator:"<span style='font-family: wingdings; text-decoration: underline;'>    ✍    </span>",constructor:function(){this.editorParams={};},postMixInProperties:function(){this.inherited(arguments);this.displayNode=this.srcNodeRef;var _2={ondijitclick:"_onClick",onmouseover:"_onMouseOver",onmouseout:"_onMouseOut",onfocus:"_onMouseOver",onblur:"_onMouseOut"};for(var _3 in _2){this.connect(this.displayNode,_3,_2[_3]);}dijit.setWaiRole(this.displayNode,"button");if(!this.displayNode.getAttribute("tabIndex")){this.displayNode.setAttribute("tabIndex",0);}this.attr("value",this.value||this.displayNode.innerHTML);},setDisabled:function(_4){dojo.deprecated("dijit.InlineEditBox.setDisabled() is deprecated. Use attr('disabled', bool) instead.","","2.0");this.attr("disabled",_4);},_setDisabledAttr:function(_5){this.disabled=_5;dijit.setWaiState(this.domNode,"disabled",_5);},_onMouseOver:function(){dojo.addClass(this.displayNode,this.disabled?"dijitDisabledClickableRegion":"dijitClickableRegion");},_onMouseOut:function(){dojo.removeClass(this.displayNode,this.disabled?"dijitDisabledClickableRegion":"dijitClickableRegion");},_onClick:function(e){if(this.disabled){return;}if(e){dojo.stopEvent(e);}this._onMouseOut();setTimeout(dojo.hitch(this,"edit"),0);},edit:function(){if(this.disabled||this.editing){return;}this.editing=true;var _7=(this.renderAsHtml?this.value:this.value.replace(/\s*\r?\n\s*/g,"").replace(/<br\/?>/gi,"\n").replace(/>/g,">").replace(/</g,"<").replace(/&/g,"&").replace(/"/g,"\""));var _8=dojo.doc.createElement("span");dojo.place(_8,this.domNode,"before");var ew=this.editWidget=new dijit._InlineEditor({value:dojo.trim(_7),autoSave:this.autoSave,buttonSave:this.buttonSave,buttonCancel:this.buttonCancel,renderAsHtml:this.renderAsHtml,editor:this.editor,editorParams:this.editorParams,style:dojo.getComputedStyle(this.displayNode),save:dojo.hitch(this,"save"),cancel:dojo.hitch(this,"cancel"),width:this.width},_8);var _a=ew.domNode.style;this.displayNode.style.display="none";_a.position="static";_a.visibility="visible";this.domNode=ew.domNode;setTimeout(function(){if(ew.editWidget._resetValue===undefined){ew.editWidget._resetValue=ew.getValue();}ew.focus();},100);},_showText:function(_b){this.displayNode.style.display="";var ew=this.editWidget;var _d=ew.domNode.style;_d.position="absolute";_d.visibility="hidden";this.domNode=this.displayNode;if(_b){dijit.focus(this.displayNode);}_d.display="none";setTimeout(function(){ew.destroy();delete ew;if(dojo.isIE){dijit.focus(dijit.getFocus());}},1000);},save:function(_e){if(this.disabled||!this.editing){return;}this.editing=false;var _f=this.editWidget.getValue()+"";this.attr("value",this.renderAsHtml?_f:_f.replace(/&/gm,"&").replace(/</gm,"<").replace(/>/gm,">").replace(/"/gm,""").replace(/\n/g,"<br>"));this.onChange(_f);this._showText(_e);},setValue:function(val){dojo.deprecated("dijit.InlineEditBox.setValue() is deprecated. Use attr('value', ...) instead.","","2.0");return this.attr("value",val);},_setValueAttr:function(val){this.value=val;this.displayNode.innerHTML=dojo.trim(val)||this.noValueIndicator;},getValue:function(){dojo.deprecated("dijit.InlineEditBox.getValue() is deprecated. Use attr('value') instead.","","2.0");return this.attr("value");},cancel:function(_12){this.editing=false;this.onCancel();this._showText(_12);}});dojo.declare("dijit._InlineEditor",[dijit._Widget,dijit._Templated],{templateString:"<span dojoAttachPoint=\"editNode\" waiRole=\"presentation\" style=\"position: absolute; visibility:hidden\" class=\"dijitReset dijitInline\"\n\tdojoAttachEvent=\"onkeypress: _onKeyPress\" \n\t><span dojoAttachPoint=\"editorPlaceholder\"></span\n\t><span dojoAttachPoint=\"buttonContainer\"\n\t\t><button class='saveButton' dojoAttachPoint=\"saveButton\" dojoType=\"dijit.form.Button\" dojoAttachEvent=\"onClick:save\" disabled=\"true\" label=\"${buttonSave}\"></button\n\t\t><button class='cancelButton' dojoAttachPoint=\"cancelButton\" dojoType=\"dijit.form.Button\" dojoAttachEvent=\"onClick:cancel\" label=\"${buttonCancel}\"></button\n\t></span\n></span>\n",widgetsInTemplate:true,postMixInProperties:function(){this.inherited(arguments);this.messages=dojo.i18n.getLocalization("dijit","common",this.lang);dojo.forEach(["buttonSave","buttonCancel"],function(_13){if(!this[_13]){this[_13]=this.messages[_13];}},this);},postCreate:function(){var cls=dojo.getObject(this.editor);var _15=this.style;var _16="line-height:"+_15.lineHeight+";";dojo.forEach(["Weight","Family","Size","Style"],function(_17){_16+="font-"+_17+":"+_15["font"+_17]+";";},this);dojo.forEach(["marginTop","marginBottom","marginLeft","marginRight"],function(_18){this.domNode.style[_18]=_15[_18];},this);if(this.width=="100%"){_16+="width:100%;";this.domNode.style.display="block";}else{_16+="width:"+(this.width+(Number(this.width)==this.width?"px":""))+";";}this.editorParams.style=_16;this.editorParams["displayedValue" in cls.prototype?"displayedValue":"value"]=this.value;var ew=this.editWidget=new cls(this.editorParams,this.editorPlaceholder);this.connect(ew,"onChange","_onChange");this.connect(ew,"onKeyPress","_onKeyPress");if(this.autoSave){this.buttonContainer.style.display="none";}},destroy:function(){this.editWidget.destroy();this.inherited(arguments);},getValue:function(){var ew=this.editWidget;return ew.attr("displayedValue" in ew?"displayedValue":"value");},_onKeyPress:function(e){if(this._exitInProgress){return;}if(this.autoSave){if(e.altKey||e.ctrlKey){return;}if(e.charOrCode==dojo.keys.ESCAPE){dojo.stopEvent(e);this._exitInProgress=true;this.cancel(true);}else{if(e.charOrCode==dojo.keys.ENTER){dojo.stopEvent(e);this._exitInProgress=true;this.save(true);}else{if(e.charOrCode===dojo.keys.TAB){this._exitInProgress=true;setTimeout(dojo.hitch(this,"save",false),0);}}}}else{var _1c=this;setTimeout(function(){_1c.saveButton.attr("disabled",_1c.getValue()==_1c.editWidget._resetValue);},100);}},_onBlur:function(){this.inherited(arguments);if(this._exitInProgress){return;}if(this.autoSave){this._exitInProgress=true;if(this.getValue()==this.editWidget._resetValue){this.cancel(false);}else{this.save(false);}}},_onChange:function(){if(this._exitInProgress){return;}if(this.autoSave){this._exitInProgress=true;this.save(true);}else{this.saveButton.attr("disabled",(this.getValue()==this.editWidget._resetValue)||!this.enableSave());}},enableSave:function(){return this.editWidget.isValid?this.editWidget.isValid():true;},focus:function(){this.editWidget.focus();dijit.selectInputText(this.editWidget.focusNode);}});}������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000156�00000000000�011567� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/Tooltip.js�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/T0000644�0000000�0000000�00000010364�11360615636�027174� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* Copyright (c) 2004-2008, The Dojo Foundation All Rights Reserved. Available via Academic Free License >= 2.1 OR the modified BSD license. see: http://dojotoolkit.org/license for details */ if(!dojo._hasResource["dijit.Tooltip"]){dojo._hasResource["dijit.Tooltip"]=true;dojo.provide("dijit.Tooltip");dojo.require("dijit._Widget");dojo.require("dijit._Templated");dojo.declare("dijit._MasterTooltip",[dijit._Widget,dijit._Templated],{duration:dijit.defaultDuration,templateString:"<div class=\"dijitTooltip dijitTooltipLeft\" id=\"dojoTooltip\">\n\t<div class=\"dijitTooltipContainer dijitTooltipContents\" dojoAttachPoint=\"containerNode\" waiRole='alert'></div>\n\t<div class=\"dijitTooltipConnector\"></div>\n</div>\n",postCreate:function(){dojo.body().appendChild(this.domNode);this.bgIframe=new dijit.BackgroundIframe(this.domNode);this.fadeIn=dojo.fadeIn({node:this.domNode,duration:this.duration,onEnd:dojo.hitch(this,"_onShow")});this.fadeOut=dojo.fadeOut({node:this.domNode,duration:this.duration,onEnd:dojo.hitch(this,"_onHide")});},show:function(_1,_2,_3){if(this.aroundNode&&this.aroundNode===_2){return;}if(this.fadeOut.status()=="playing"){this._onDeck=arguments;return;}this.containerNode.innerHTML=_1;this.domNode.style.top=(this.domNode.offsetTop+1)+"px";var _4={};var _5=this.isLeftToRight();dojo.forEach((_3&&_3.length)?_3:dijit.Tooltip.defaultPosition,function(_6){switch(_6){case "after":_4[_5?"BR":"BL"]=_5?"BL":"BR";break;case "before":_4[_5?"BL":"BR"]=_5?"BR":"BL";break;case "below":_4[_5?"BL":"BR"]=_5?"TL":"TR";_4[_5?"BR":"BL"]=_5?"TR":"TL";break;case "above":default:_4[_5?"TL":"TR"]=_5?"BL":"BR";_4[_5?"TR":"TL"]=_5?"BR":"BL";break;}});var _7=dijit.placeOnScreenAroundElement(this.domNode,_2,_4,dojo.hitch(this,"orient"));dojo.style(this.domNode,"opacity",0);this.fadeIn.play();this.isShowingNow=true;this.aroundNode=_2;},orient:function(_8,_9,_a){_8.className="dijitTooltip "+{"BL-TL":"dijitTooltipBelow dijitTooltipABLeft","TL-BL":"dijitTooltipAbove dijitTooltipABLeft","BR-TR":"dijitTooltipBelow dijitTooltipABRight","TR-BR":"dijitTooltipAbove dijitTooltipABRight","BR-BL":"dijitTooltipRight","BL-BR":"dijitTooltipLeft"}[_9+"-"+_a];},_onShow:function(){if(dojo.isIE){this.domNode.style.filter="";}},hide:function(_b){if(this._onDeck&&this._onDeck[1]==_b){this._onDeck=null;}else{if(this.aroundNode===_b){this.fadeIn.stop();this.isShowingNow=false;this.aroundNode=null;this.fadeOut.play();}else{}}},_onHide:function(){this.domNode.style.cssText="";if(this._onDeck){this.show.apply(this,this._onDeck);this._onDeck=null;}}});dijit.showTooltip=function(_c,_d,_e){if(!dijit._masterTT){dijit._masterTT=new dijit._MasterTooltip();}return dijit._masterTT.show(_c,_d,_e);};dijit.hideTooltip=function(_f){if(!dijit._masterTT){dijit._masterTT=new dijit._MasterTooltip();}return dijit._masterTT.hide(_f);};dojo.declare("dijit.Tooltip",dijit._Widget,{label:"",showDelay:400,connectId:[],position:[],postCreate:function(){dojo.addClass(this.domNode,"dijitTooltipData");this._connectNodes=[];dojo.forEach(this.connectId,function(id){var _11=dojo.byId(id);if(_11){this._connectNodes.push(_11);dojo.forEach(["onMouseEnter","onMouseLeave","onFocus","onBlur"],function(_12){this.connect(_11,_12.toLowerCase(),"_"+_12);},this);if(dojo.isIE){_11.style.zoom=1;}}},this);},_onMouseEnter:function(e){this._onHover(e);},_onMouseLeave:function(e){this._onUnHover(e);},_onFocus:function(e){this._focus=true;this._onHover(e);this.inherited(arguments);},_onBlur:function(e){this._focus=false;this._onUnHover(e);this.inherited(arguments);},_onHover:function(e){if(!this._showTimer){var _18=e.target;this._showTimer=setTimeout(dojo.hitch(this,function(){this.open(_18);}),this.showDelay);}},_onUnHover:function(e){if(this._focus){return;}if(this._showTimer){clearTimeout(this._showTimer);delete this._showTimer;}this.close();},open:function(_1a){_1a=_1a||this._connectNodes[0];if(!_1a){return;}if(this._showTimer){clearTimeout(this._showTimer);delete this._showTimer;}dijit.showTooltip(this.label||this.domNode.innerHTML,_1a,this.position);this._connectNode=_1a;},close:function(){if(this._connectNode){dijit.hideTooltip(this._connectNode);delete this._connectNode;}if(this._showTimer){clearTimeout(this._showTimer);delete this._showTimer;}},uninitialize:function(){this.close();}});dijit.Tooltip.defaultPosition=["after","before"];}����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000162�00000000000�011564� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/_TimePicker.js���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/_0000644�0000000�0000000�00000020170�11360615632�027177� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* Copyright (c) 2004-2008, The Dojo Foundation All Rights Reserved. Available via Academic Free License >= 2.1 OR the modified BSD license. see: http://dojotoolkit.org/license for details */ if(!dojo._hasResource["dijit._TimePicker"]){dojo._hasResource["dijit._TimePicker"]=true;dojo.provide("dijit._TimePicker");dojo.require("dijit.form._FormWidget");dojo.require("dojo.date.locale");dojo.declare("dijit._TimePicker",[dijit._Widget,dijit._Templated],{templateString:"<div id=\"widget_${id}\" class=\"dijitMenu ${baseClass}\"\n ><div dojoAttachPoint=\"upArrow\" class=\"dijitButtonNode dijitUpArrowButton\" dojoAttachEvent=\"onmouseenter:_buttonMouse,onmouseleave:_buttonMouse\"\n\t\t><div class=\"dijitReset dijitInline dijitArrowButtonInner\" wairole=\"presentation\" role=\"presentation\"> </div\n\t\t><div class=\"dijitArrowButtonChar\">▲</div></div\n ><div dojoAttachPoint=\"timeMenu,focusNode\" dojoAttachEvent=\"onclick:_onOptionSelected,onmouseover,onmouseout\"></div\n ><div dojoAttachPoint=\"downArrow\" class=\"dijitButtonNode dijitDownArrowButton\" dojoAttachEvent=\"onmouseenter:_buttonMouse,onmouseleave:_buttonMouse\"\n\t\t><div class=\"dijitReset dijitInline dijitArrowButtonInner\" wairole=\"presentation\" role=\"presentation\"> </div\n\t\t><div class=\"dijitArrowButtonChar\">▼</div></div\n></div>\n",baseClass:"dijitTimePicker",clickableIncrement:"T00:15:00",visibleIncrement:"T01:00:00",visibleRange:"T05:00:00",value:new Date(),_visibleIncrement:2,_clickableIncrement:1,_totalIncrements:10,constraints:{},serialize:dojo.date.stamp.toISOString,_filterString:"",setValue:function(_1){dojo.deprecated("dijit._TimePicker:setValue() is deprecated. Use attr('value') instead.","","2.0");this.attr("value",_1);},_setValueAttr:function(_2){this.value=_2;this._showText();},onOpen:function(_3){if(this._beenOpened&&this.domNode.parentNode){var p=dijit.byId(this.domNode.parentNode.dijitPopupParent);if(p){var _5=p.getDisplayedValue();if(_5&&!p.parse(_5,p.constraints)){this._filterString=_5;}else{this._filterString="";}this._showText();}}this._beenOpened=true;},isDisabledDate:function(_6,_7){return false;},_getFilteredNodes:function(_8,_9,_a){var _b=[],n,i=_8,_e=this._maxIncrement+Math.abs(i),_f=_a?-1:1,dec=_a?1:0,inc=_a?0:1;do{i=i-dec;n=this._createOption(i);if(n){_b.push(n);}i=i+inc;}while(_b.length<_9&&(i*_f)<_e);if(_a){_b.reverse();}return _b;},_showText:function(){this.timeMenu.innerHTML="";var _12=dojo.date.stamp.fromISOString;this._clickableIncrementDate=_12(this.clickableIncrement);this._visibleIncrementDate=_12(this.visibleIncrement);this._visibleRangeDate=_12(this.visibleRange);var _13=function(_14){return _14.getHours()*60*60+_14.getMinutes()*60+_14.getSeconds();};var _15=_13(this._clickableIncrementDate);var _16=_13(this._visibleIncrementDate);var _17=_13(this._visibleRangeDate);var _18=this.value.getTime();this._refDate=new Date(_18-_18%(_16*1000));this._refDate.setFullYear(1970,0,1);this._clickableIncrement=1;this._totalIncrements=_17/_15;this._visibleIncrement=_16/_15;this._maxIncrement=(60*60*24)/_15;var _19=this._getFilteredNodes(0,this._totalIncrements>>1,true);var _1a=this._getFilteredNodes(0,this._totalIncrements>>1,false);if(_19.length<this._totalIncrements>>1){_19=_19.slice(_19.length/2);_1a=_1a.slice(0,_1a.length/2);}dojo.forEach(_19.concat(_1a),function(n){this.timeMenu.appendChild(n);},this);},postCreate:function(){if(this.constraints===dijit._TimePicker.prototype.constraints){this.constraints={};}dojo.mixin(this,this.constraints);if(!this.constraints.locale){this.constraints.locale=this.lang;}this.connect(this.timeMenu,dojo.isIE?"onmousewheel":"DOMMouseScroll","_mouseWheeled");var _1c=this;var _1d=function(){_1c._connects.push(dijit.typematic.addMouseListener.apply(null,arguments));};_1d(this.upArrow,this,this._onArrowUp,0.8,500);_1d(this.downArrow,this,this._onArrowDown,0.8,500);var _1e=function(cb){return function(cnt){if(cnt>0){cb.call(this,arguments);}};};var _21=function(_22,cb){return function(e){dojo.stopEvent(e);dijit.typematic.trigger(e,this,_22,_1e(cb),_22,0.85,250);};};this.connect(this.upArrow,"onmouseover",_21(this.upArrow,this._onArrowUp));this.connect(this.downArrow,"onmouseover",_21(this.downArrow,this._onArrowDown));this.inherited(arguments);},_buttonMouse:function(e){dojo.toggleClass(e.currentTarget,"dijitButtonNodeHover",e.type=="mouseover");},_createOption:function(_26){var _27=new Date(this._refDate);var _28=this._clickableIncrementDate;_27.setHours(_27.getHours()+_28.getHours()*_26,_27.getMinutes()+_28.getMinutes()*_26,_27.getSeconds()+_28.getSeconds()*_26);var _29=dojo.date.locale.format(_27,this.constraints);if(this._filterString&&_29.toLowerCase().indexOf(this._filterString)!==0){return null;}var div=dojo.doc.createElement("div");div.date=_27;div.index=_26;var _2b=dojo.doc.createElement("div");dojo.addClass(div,this.baseClass+"Item");dojo.addClass(_2b,this.baseClass+"ItemInner");_2b.innerHTML=_29;div.appendChild(_2b);if(_26%this._visibleIncrement<1&&_26%this._visibleIncrement>-1){dojo.addClass(div,this.baseClass+"Marker");}else{if(!(_26%this._clickableIncrement)){dojo.addClass(div,this.baseClass+"Tick");}}if(this.isDisabledDate(_27)){dojo.addClass(div,this.baseClass+"ItemDisabled");}if(!dojo.date.compare(this.value,_27,this.constraints.selector)){div.selected=true;dojo.addClass(div,this.baseClass+"ItemSelected");if(dojo.hasClass(div,this.baseClass+"Marker")){dojo.addClass(div,this.baseClass+"MarkerSelected");}else{dojo.addClass(div,this.baseClass+"TickSelected");}}return div;},_onOptionSelected:function(tgt){var _2d=tgt.target.date||tgt.target.parentNode.date;if(!_2d||this.isDisabledDate(_2d)){return;}this._highlighted_option=null;this.attr("value",_2d);this.onValueSelected(_2d);},onValueSelected:function(_2e){},_highlightOption:function(_2f,_30){if(!_2f){return;}if(_30){if(this._highlighted_option){this._highlightOption(this._highlighted_option,false);}this._highlighted_option=_2f;}else{if(this._highlighted_option!==_2f){return;}else{this._highlighted_option=null;}}dojo.toggleClass(_2f,this.baseClass+"ItemHover",_30);if(dojo.hasClass(_2f,this.baseClass+"Marker")){dojo.toggleClass(_2f,this.baseClass+"MarkerHover",_30);}else{dojo.toggleClass(_2f,this.baseClass+"TickHover",_30);}},onmouseover:function(e){var tgr=(e.target.parentNode===this.timeMenu)?e.target:e.target.parentNode;if(!dojo.hasClass(tgr,this.baseClass+"Item")){return;}this._highlightOption(tgr,true);},onmouseout:function(e){var tgr=(e.target.parentNode===this.timeMenu)?e.target:e.target.parentNode;this._highlightOption(tgr,false);},_mouseWheeled:function(e){dojo.stopEvent(e);var _36=(dojo.isIE?e.wheelDelta:-e.detail);this[(_36>0?"_onArrowUp":"_onArrowDown")]();},_onArrowUp:function(){var _37=this.timeMenu.childNodes[0].index;var _38=this._getFilteredNodes(_37,1,true);if(_38.length){this.timeMenu.removeChild(this.timeMenu.childNodes[this.timeMenu.childNodes.length-1]);this.timeMenu.insertBefore(_38[0],this.timeMenu.childNodes[0]);}},_onArrowDown:function(){var _39=this.timeMenu.childNodes[this.timeMenu.childNodes.length-1].index+1;var _3a=this._getFilteredNodes(_39,1,false);if(_3a.length){this.timeMenu.removeChild(this.timeMenu.childNodes[0]);this.timeMenu.appendChild(_3a[0]);}},handleKey:function(e){var dk=dojo.keys;if(e.keyChar||e.charOrCode===dk.BACKSPACE||e.charOrCode==dk.DELETE){setTimeout(dojo.hitch(this,function(){this._filterString=e.target.value.toLowerCase();this._showText();}),1);}else{if(e.charOrCode==dk.DOWN_ARROW||e.charOrCode==dk.UP_ARROW){dojo.stopEvent(e);if(this._highlighted_option&&!this._highlighted_option.parentNode){this._highlighted_option=null;}var _3d=this.timeMenu,tgt=this._highlighted_option||dojo.query("."+this.baseClass+"ItemSelected",_3d)[0];if(!tgt){tgt=_3d.childNodes[0];}else{if(_3d.childNodes.length){if(e.charOrCode==dk.DOWN_ARROW&&!tgt.nextSibling){this._onArrowDown();}else{if(e.charOrCode==dk.UP_ARROW&&!tgt.previousSibling){this._onArrowUp();}}if(e.charOrCode==dk.DOWN_ARROW){tgt=tgt.nextSibling;}else{tgt=tgt.previousSibling;}}}this._highlightOption(tgt,true);}else{if(this._highlighted_option&&(e.charOrCode==dk.ENTER||e.charOrCode===dk.TAB)){if(e.charOrCode==dk.ENTER){dojo.stopEvent(e);}setTimeout(dojo.hitch(this,function(){this._onOptionSelected({target:this._highlighted_option});}),1);}}}}});}��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000156�00000000000�011567� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/resources/�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/r0000755�0000000�0000000�00000000000�11360615642�027221� 5����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000171�00000000000�011564� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/resources/_modules.js��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/r0000644�0000000�0000000�00000000305�11360615642�027221� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* Copyright (c) 2004-2008, The Dojo Foundation All Rights Reserved. Available via Academic Free License >= 2.1 OR the modified BSD license. see: http://dojotoolkit.org/license for details */ ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000155�00000000000�011566� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/Dialog.js��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/D0000644�0000000�0000000�00000022154�11360615632�027150� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* Copyright (c) 2004-2008, The Dojo Foundation All Rights Reserved. Available via Academic Free License >= 2.1 OR the modified BSD license. see: http://dojotoolkit.org/license for details */ if(!dojo._hasResource["dijit.Dialog"]){dojo._hasResource["dijit.Dialog"]=true;dojo.provide("dijit.Dialog");dojo.require("dojo.dnd.move");dojo.require("dojo.dnd.TimedMoveable");dojo.require("dojo.fx");dojo.require("dijit._Widget");dojo.require("dijit._Templated");dojo.require("dijit.layout.ContentPane");dojo.require("dijit.form.Form");dojo.requireLocalization("dijit","common",null,"ar,ca,ROOT,cs,da,de,el,es,fi,fr,he,hu,it,ja,ko,nb,nl,pl,pt,pt-pt,ru,sk,sl,sv,th,tr,zh,zh-tw");dojo.declare("dijit.DialogUnderlay",[dijit._Widget,dijit._Templated],{templateString:"<div class='dijitDialogUnderlayWrapper' id='${id}_wrapper'><div class='dijitDialogUnderlay ${class}' id='${id}' dojoAttachPoint='node'></div></div>",attributeMap:{},postCreate:function(){dojo.body().appendChild(this.domNode);this.bgIframe=new dijit.BackgroundIframe(this.domNode);},layout:function(){var _1=dijit.getViewport();var is=this.node.style,os=this.domNode.style;os.top=_1.t+"px";os.left=_1.l+"px";is.width=_1.w+"px";is.height=_1.h+"px";var _4=dijit.getViewport();if(_1.w!=_4.w){is.width=_4.w+"px";}if(_1.h!=_4.h){is.height=_4.h+"px";}},show:function(){this.domNode.style.display="block";this.layout();if(this.bgIframe.iframe){this.bgIframe.iframe.style.display="block";}},hide:function(){this.domNode.style.display="none";if(this.bgIframe.iframe){this.bgIframe.iframe.style.display="none";}},uninitialize:function(){if(this.bgIframe){this.bgIframe.destroy();}}});dojo.declare("dijit._DialogMixin",null,{attributeMap:dijit._Widget.prototype.attributeMap,execute:function(_5){},onCancel:function(){},onExecute:function(){},_onSubmit:function(){this.onExecute();this.execute(this.attr("value"));},_getFocusItems:function(_6){var _7=dijit._getTabNavigable(dojo.byId(_6));this._firstFocusItem=_7.lowest||_7.first||_6;this._lastFocusItem=_7.last||_7.highest||this._firstFocusItem;if(dojo.isMoz&&this._firstFocusItem.tagName.toLowerCase()=="input"&&dojo.attr(this._firstFocusItem,"type").toLowerCase()=="file"){dojo.attr(_6,"tabindex","0");this._firstFocusItem=_6;}}});dojo.declare("dijit.Dialog",[dijit.layout.ContentPane,dijit._Templated,dijit.form._FormMixin,dijit._DialogMixin],{templateString:null,templateString:"<div class=\"dijitDialog\" tabindex=\"-1\" waiRole=\"dialog\" waiState=\"labelledby-${id}_title\">\n\t<div dojoAttachPoint=\"titleBar\" class=\"dijitDialogTitleBar\">\n\t<span dojoAttachPoint=\"titleNode\" class=\"dijitDialogTitle\" id=\"${id}_title\"></span>\n\t<span dojoAttachPoint=\"closeButtonNode\" class=\"dijitDialogCloseIcon\" dojoAttachEvent=\"onclick: onCancel\" title=\"${buttonCancel}\">\n\t\t<span dojoAttachPoint=\"closeText\" class=\"closeText\" title=\"${buttonCancel}\">x</span>\n\t</span>\n\t</div>\n\t\t<div dojoAttachPoint=\"containerNode\" class=\"dijitDialogPaneContent\"></div>\n</div>\n",attributeMap:dojo.mixin(dojo.clone(dijit._Widget.prototype.attributeMap),{title:[{node:"titleNode",type:"innerHTML"},{node:"titleBar",type:"attribute"}]}),open:false,duration:dijit.defaultDuration,refocus:true,autofocus:true,_firstFocusItem:null,_lastFocusItem:null,doLayout:false,draggable:true,postMixInProperties:function(){var _8=dojo.i18n.getLocalization("dijit","common");dojo.mixin(this,_8);this.inherited(arguments);},postCreate:function(){var s=this.domNode.style;s.visibility="hidden";s.position="absolute";s.display="";s.top="-9999px";dojo.body().appendChild(this.domNode);this.inherited(arguments);this.connect(this,"onExecute","hide");this.connect(this,"onCancel","hide");this._modalconnects=[];},onLoad:function(){this._position();this.inherited(arguments);},_endDrag:function(e){if(e&&e.node&&e.node===this.domNode){var vp=dijit.getViewport();var p=e._leftTop||dojo.coords(e.node,true);this._relativePosition={t:p.t-vp.t,l:p.l-vp.l};}},_setup:function(){var _d=this.domNode;if(this.titleBar&&this.draggable){this._moveable=(dojo.isIE==6)?new dojo.dnd.TimedMoveable(_d,{handle:this.titleBar}):new dojo.dnd.Moveable(_d,{handle:this.titleBar,timeout:0});dojo.subscribe("/dnd/move/stop",this,"_endDrag");}else{dojo.addClass(_d,"dijitDialogFixed");}this._underlay=new dijit.DialogUnderlay({id:this.id+"_underlay","class":dojo.map(this["class"].split(/\s/),function(s){return s+"_underlay";}).join(" ")});var _f=this._underlay;this._fadeIn=dojo.fadeIn({node:_d,duration:this.duration,onBegin:dojo.hitch(_f,"show")});this._fadeOut=dojo.fadeOut({node:_d,duration:this.duration,onEnd:function(){_d.style.visibility="hidden";_d.style.top="-9999px";_f.hide();}});},uninitialize:function(){if(this._fadeIn&&this._fadeIn.status()=="playing"){this._fadeIn.stop();}if(this._fadeOut&&this._fadeOut.status()=="playing"){this._fadeOut.stop();}if(this._underlay){this._underlay.destroy();}if(this._moveable){this._moveable.destroy();}},_size:function(){var mb=dojo.marginBox(this.domNode);var _11=dijit.getViewport();if(mb.w>=_11.w||mb.h>=_11.h){dojo.style(this.containerNode,{width:Math.min(mb.w,Math.floor(_11.w*0.75))+"px",height:Math.min(mb.h,Math.floor(_11.h*0.75))+"px",overflow:"auto",position:"relative"});}},_position:function(){if(!dojo.hasClass(dojo.body(),"dojoMove")){var _12=this.domNode;var _13=dijit.getViewport();var p=this._relativePosition;var mb=p?null:dojo.marginBox(_12);dojo.style(_12,{left:Math.floor(_13.l+(p?p.l:(_13.w-mb.w)/2))+"px",top:Math.floor(_13.t+(p?p.t:(_13.h-mb.h)/2))+"px"});}},_onKey:function(evt){if(evt.charOrCode){var dk=dojo.keys;var _18=evt.target;if(evt.charOrCode===dk.TAB){this._getFocusItems(this.domNode);}var _19=(this._firstFocusItem==this._lastFocusItem);if(_18==this._firstFocusItem&&evt.shiftKey&&evt.charOrCode===dk.TAB){if(!_19){dijit.focus(this._lastFocusItem);}dojo.stopEvent(evt);}else{if(_18==this._lastFocusItem&&evt.charOrCode===dk.TAB&&!evt.shiftKey){if(!_19){dijit.focus(this._firstFocusItem);}dojo.stopEvent(evt);}else{while(_18){if(_18==this.domNode){if(evt.charOrCode==dk.ESCAPE){this.onCancel();}else{return;}}_18=_18.parentNode;}if(evt.charOrCode!==dk.TAB){dojo.stopEvent(evt);}else{if(!dojo.isOpera){try{this._firstFocusItem.focus();}catch(e){}}}}}}},show:function(){if(this.open){return;}if(!this._alreadyInitialized){this._setup();this._alreadyInitialized=true;}if(this._fadeOut.status()=="playing"){this._fadeOut.stop();}this._modalconnects.push(dojo.connect(window,"onscroll",this,"layout"));this._modalconnects.push(dojo.connect(window,"onresize",this,"layout"));this._modalconnects.push(dojo.connect(dojo.doc.documentElement,"onkeypress",this,"_onKey"));dojo.style(this.domNode,{opacity:0,visibility:""});this.open=true;this._loadCheck();this._size();this._position();this._fadeIn.play();this._savedFocus=dijit.getFocus(this);if(this.autofocus){this._getFocusItems(this.domNode);setTimeout(dojo.hitch(dijit,"focus",this._firstFocusItem),50);}},hide:function(){if(!this._alreadyInitialized){return;}if(this._fadeIn.status()=="playing"){this._fadeIn.stop();}this._fadeOut.play();if(this._scrollConnected){this._scrollConnected=false;}dojo.forEach(this._modalconnects,dojo.disconnect);this._modalconnects=[];if(this.refocus){this.connect(this._fadeOut,"onEnd",dojo.hitch(dijit,"focus",this._savedFocus));}if(this._relativePosition){delete this._relativePosition;}this.open=false;},layout:function(){if(this.domNode.style.visibility!="hidden"){this._underlay.layout();this._position();}},destroy:function(){dojo.forEach(this._modalconnects,dojo.disconnect);if(this.refocus&&this.open){setTimeout(dojo.hitch(dijit,"focus",this._savedFocus),25);}this.inherited(arguments);}});dojo.declare("dijit.TooltipDialog",[dijit.layout.ContentPane,dijit._Templated,dijit.form._FormMixin,dijit._DialogMixin],{title:"",doLayout:false,autofocus:true,"class":"dijitTooltipDialog",_firstFocusItem:null,_lastFocusItem:null,templateString:null,templateString:"<div waiRole=\"presentation\">\n\t<div class=\"dijitTooltipContainer\" waiRole=\"presentation\">\n\t\t<div class =\"dijitTooltipContents dijitTooltipFocusNode\" dojoAttachPoint=\"containerNode\" tabindex=\"-1\" waiRole=\"dialog\"></div>\n\t</div>\n\t<div class=\"dijitTooltipConnector\" waiRole=\"presentation\"></div>\n</div>\n",postCreate:function(){this.inherited(arguments);this.connect(this.containerNode,"onkeypress","_onKey");this.containerNode.title=this.title;},orient:function(_1a,_1b,_1c){this.domNode.className=this["class"]+" dijitTooltipAB"+(_1c.charAt(1)=="L"?"Left":"Right")+" dijitTooltip"+(_1c.charAt(0)=="T"?"Below":"Above");},onOpen:function(pos){this.orient(this.domNode,pos.aroundCorner,pos.corner);this._loadCheck();if(this.autofocus){this._getFocusItems(this.containerNode);dijit.focus(this._firstFocusItem);}},_onKey:function(evt){var _1f=evt.target;var dk=dojo.keys;if(evt.charOrCode===dk.TAB){this._getFocusItems(this.containerNode);}var _21=(this._firstFocusItem==this._lastFocusItem);if(evt.charOrCode==dk.ESCAPE){this.onCancel();dojo.stopEvent(evt);}else{if(_1f==this._firstFocusItem&&evt.shiftKey&&evt.charOrCode===dk.TAB){if(!_21){dijit.focus(this._lastFocusItem);}dojo.stopEvent(evt);}else{if(_1f==this._lastFocusItem&&evt.charOrCode===dk.TAB&&!evt.shiftKey){if(!_21){dijit.focus(this._firstFocusItem);}dojo.stopEvent(evt);}else{if(evt.charOrCode===dk.TAB){evt.stopPropagation();}}}}}});}��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000160�00000000000�011562� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/_Calendar.js�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/_0000644�0000000�0000000�00000015256�11360615640�027207� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* Copyright (c) 2004-2008, The Dojo Foundation All Rights Reserved. Available via Academic Free License >= 2.1 OR the modified BSD license. see: http://dojotoolkit.org/license for details */ if(!dojo._hasResource["dijit._Calendar"]){dojo._hasResource["dijit._Calendar"]=true;dojo.provide("dijit._Calendar");dojo.require("dojo.cldr.supplemental");dojo.require("dojo.date");dojo.require("dojo.date.locale");dojo.require("dijit._Widget");dojo.require("dijit._Templated");dojo.declare("dijit._Calendar",[dijit._Widget,dijit._Templated],{templateString:"<table cellspacing=\"0\" cellpadding=\"0\" class=\"dijitCalendarContainer\">\n\t<thead>\n\t\t<tr class=\"dijitReset dijitCalendarMonthContainer\" valign=\"top\">\n\t\t\t<th class='dijitReset' dojoAttachPoint=\"decrementMonth\">\n\t\t\t\t<div class=\"dijitInline dijitCalendarIncrementControl dijitCalendarDecrease\"><span dojoAttachPoint=\"decreaseArrowNode\" class=\"dijitA11ySideArrow dijitCalendarIncrementControl dijitCalendarDecreaseInner\">-</span></div>\n\t\t\t</th>\n\t\t\t<th class='dijitReset' colspan=\"5\">\n\t\t\t\t<div dojoAttachPoint=\"monthLabelSpacer\" class=\"dijitCalendarMonthLabelSpacer\"></div>\n\t\t\t\t<div dojoAttachPoint=\"monthLabelNode\" class=\"dijitCalendarMonthLabel\"></div>\n\t\t\t</th>\n\t\t\t<th class='dijitReset' dojoAttachPoint=\"incrementMonth\">\n\t\t\t\t<div class=\"dijitInline dijitCalendarIncrementControl dijitCalendarIncrease\"><span dojoAttachPoint=\"increaseArrowNode\" class=\"dijitA11ySideArrow dijitCalendarIncrementControl dijitCalendarIncreaseInner\">+</span></div>\n\t\t\t</th>\n\t\t</tr>\n\t\t<tr>\n\t\t\t<th class=\"dijitReset dijitCalendarDayLabelTemplate\"><span class=\"dijitCalendarDayLabel\"></span></th>\n\t\t</tr>\n\t</thead>\n\t<tbody dojoAttachEvent=\"onclick: _onDayClick, onmouseover: _onDayMouseOver, onmouseout: _onDayMouseOut\" class=\"dijitReset dijitCalendarBodyContainer\">\n\t\t<tr class=\"dijitReset dijitCalendarWeekTemplate\">\n\t\t\t<td class=\"dijitReset dijitCalendarDateTemplate\"><span class=\"dijitCalendarDateLabel\"></span></td>\n\t\t</tr>\n\t</tbody>\n\t<tfoot class=\"dijitReset dijitCalendarYearContainer\">\n\t\t<tr>\n\t\t\t<td class='dijitReset' valign=\"top\" colspan=\"7\">\n\t\t\t\t<h3 class=\"dijitCalendarYearLabel\">\n\t\t\t\t\t<span dojoAttachPoint=\"previousYearLabelNode\" class=\"dijitInline dijitCalendarPreviousYear\"></span>\n\t\t\t\t\t<span dojoAttachPoint=\"currentYearLabelNode\" class=\"dijitInline dijitCalendarSelectedYear\"></span>\n\t\t\t\t\t<span dojoAttachPoint=\"nextYearLabelNode\" class=\"dijitInline dijitCalendarNextYear\"></span>\n\t\t\t\t</h3>\n\t\t\t</td>\n\t\t</tr>\n\t</tfoot>\n</table>\t\n",value:new Date(),dayWidth:"narrow",setValue:function(_1){dojo.deprecated("dijit.Calendar:setValue() is deprecated. Use attr('value', ...) instead.","","2.0");this.attr("value",_1);},_setValueAttr:function(_2){if(!this.value||dojo.date.compare(_2,this.value)){_2=new Date(_2);this.displayMonth=new Date(_2);if(!this.isDisabledDate(_2,this.lang)){this.value=_2;this.value.setHours(0,0,0,0);this.onChange(this.value);}this._populateGrid();}},_setText:function(_3,_4){while(_3.firstChild){_3.removeChild(_3.firstChild);}_3.appendChild(dojo.doc.createTextNode(_4));},_populateGrid:function(){var _5=this.displayMonth;_5.setDate(1);var _6=_5.getDay();var _7=dojo.date.getDaysInMonth(_5);var _8=dojo.date.getDaysInMonth(dojo.date.add(_5,"month",-1));var _9=new Date();var _a=this.value;var _b=dojo.cldr.supplemental.getFirstDayOfWeek(this.lang);if(_b>_6){_b-=7;}dojo.query(".dijitCalendarDateTemplate",this.domNode).forEach(function(_c,i){i+=_b;var _e=new Date(_5);var _f,_10="dijitCalendar",adj=0;if(i<_6){_f=_8-_6+i+1;adj=-1;_10+="Previous";}else{if(i>=(_6+_7)){_f=i-_6-_7+1;adj=1;_10+="Next";}else{_f=i-_6+1;_10+="Current";}}if(adj){_e=dojo.date.add(_e,"month",adj);}_e.setDate(_f);if(!dojo.date.compare(_e,_9,"date")){_10="dijitCalendarCurrentDate "+_10;}if(!dojo.date.compare(_e,_a,"date")){_10="dijitCalendarSelectedDate "+_10;}if(this.isDisabledDate(_e,this.lang)){_10="dijitCalendarDisabledDate "+_10;}var _12=this.getClassForDate(_e,this.lang);if(_12){_10=_12+" "+_10;}_c.className=_10+"Month dijitCalendarDateTemplate";_c.dijitDateValue=_e.valueOf();var _13=dojo.query(".dijitCalendarDateLabel",_c)[0];this._setText(_13,_e.getDate());},this);var _14=dojo.date.locale.getNames("months","wide","standAlone",this.lang);this._setText(this.monthLabelNode,_14[_5.getMonth()]);var y=_5.getFullYear()-1;var d=new Date();dojo.forEach(["previous","current","next"],function(_17){d.setFullYear(y++);this._setText(this[_17+"YearLabelNode"],dojo.date.locale.format(d,{selector:"year",locale:this.lang}));},this);var _18=this;var _19=function(_1a,_1b,adj){_18._connects.push(dijit.typematic.addMouseListener(_18[_1a],_18,function(_1d){if(_1d>=0){_18._adjustDisplay(_1b,adj);}},0.8,500));};_19("incrementMonth","month",1);_19("decrementMonth","month",-1);_19("nextYearLabelNode","year",1);_19("previousYearLabelNode","year",-1);},goToToday:function(){this.attr("value",new Date());},postCreate:function(){this.inherited(arguments);var _1e=dojo.hitch(this,function(_1f,n){var _21=dojo.query(_1f,this.domNode)[0];for(var i=0;i<n;i++){_21.parentNode.appendChild(_21.cloneNode(true));}});_1e(".dijitCalendarDayLabelTemplate",6);_1e(".dijitCalendarDateTemplate",6);_1e(".dijitCalendarWeekTemplate",5);var _23=dojo.date.locale.getNames("days",this.dayWidth,"standAlone",this.lang);var _24=dojo.cldr.supplemental.getFirstDayOfWeek(this.lang);dojo.query(".dijitCalendarDayLabel",this.domNode).forEach(function(_25,i){this._setText(_25,_23[(i+_24)%7]);},this);var _27=dojo.date.locale.getNames("months","wide","standAlone",this.lang);dojo.forEach(_27,function(_28){var _29=dojo.doc.createElement("div");this._setText(_29,_28);this.monthLabelSpacer.appendChild(_29);},this);this.value=null;this.attr("value",new Date());},_adjustDisplay:function(_2a,_2b){this.displayMonth=dojo.date.add(this.displayMonth,_2a,_2b);this._populateGrid();},_onDayClick:function(evt){var _2d=evt.target;dojo.stopEvent(evt);while(!_2d.dijitDateValue){_2d=_2d.parentNode;}if(!dojo.hasClass(_2d,"dijitCalendarDisabledDate")){this.attr("value",_2d.dijitDateValue);this.onValueSelected(this.value);}},_onDayMouseOver:function(evt){var _2f=evt.target;if(_2f&&(_2f.dijitDateValue||_2f==this.previousYearLabelNode||_2f==this.nextYearLabelNode)){dojo.addClass(_2f,"dijitCalendarHoveredDate");this._currentNode=_2f;}},_onDayMouseOut:function(evt){if(!this._currentNode){return;}for(var _31=evt.relatedTarget;_31;){if(_31==this._currentNode){return;}try{_31=_31.parentNode;}catch(x){_31=null;}}dojo.removeClass(this._currentNode,"dijitCalendarHoveredDate");this._currentNode=null;},onValueSelected:function(_32){},onChange:function(_33){},isDisabledDate:function(_34,_35){},getClassForDate:function(_36,_37){}});}��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000150�00000000000�011561� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/nls/�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/n0000755�0000000�0000000�00000000000�11360615644�027217� 5����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000153�00000000000�011564� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/nls/fr/����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/n0000755�0000000�0000000�00000000000�11360615640�027213� 5����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000165�00000000000�011567� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/nls/fr/loading.js������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/n0000644�0000000�0000000�00000000111�11360615640�027206� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������({"loadingState":"Chargement...","errorState":"Une erreur est survenue"})�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000164�00000000000�011566� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/nls/fr/common.js�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/n0000644�0000000�0000000�00000000134�11360615636�027220� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������({"buttonOk":"OK","buttonCancel":"Annuler","buttonSave":"Sauvegarder","itemClose":"Fermer"})������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000162�00000000000�011564� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/nls/loading.js���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/n0000644�0000000�0000000�00000000107�11360615644�027217� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������({"loadingState":"Loading...","errorState":"Sorry, an error occurred"})���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000153�00000000000�011564� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/nls/nb/����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/n0000755�0000000�0000000�00000000000�11360615632�027214� 5����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000165�00000000000�011567� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/nls/nb/loading.js������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/n0000644�0000000�0000000�00000000104�11360615632�027211� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������({"loadingState":"Laster inn...","errorState":"Det oppsto en feil"})������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000164�00000000000�011566� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/nls/nb/common.js�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/n0000644�0000000�0000000�00000000123�11360615632�027212� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������({"buttonOk":"OK","buttonCancel":"Avbryt","buttonSave":"Lagre","itemClose":"Lukk"})���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000153�00000000000�011564� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/nls/zh/����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/n0000755�0000000�0000000�00000000000�11360615634�027216� 5����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000165�00000000000�011567� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/nls/zh/loading.js������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/n0000644�0000000�0000000�00000000117�11360615632�027215� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������({"loadingState":"正在装入...","errorState":"对ä¸èµ·ï¼Œå‘生了错误"})�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000164�00000000000�011566� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/nls/zh/common.js�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/n0000644�0000000�0000000�00000000132�11360615634�027214� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������({"buttonOk":"确定","buttonCancel":"å–æ¶ˆ","buttonSave":"ä¿å­˜","itemClose":"关闭"})��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000153�00000000000�011564� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/nls/pl/����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/n0000755�0000000�0000000�00000000000�11360615644�027217� 5����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000165�00000000000�011567� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/nls/pl/loading.js������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/n0000644�0000000�0000000�00000000122�11360615632�027211� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������({"loadingState":"Trwa Å‚adowanie...","errorState":"Niestety, wystÄ…piÅ‚ błąd"})����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000164�00000000000�011566� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/nls/pl/common.js�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/n0000644�0000000�0000000�00000000127�11360615644�027221� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������({"buttonOk":"OK","buttonCancel":"Anuluj","buttonSave":"Zapisz","itemClose":"Zamknij"})�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000156�00000000000�011567� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/nls/zh-tw/�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/n0000755�0000000�0000000�00000000000�11360615642�027215� 5����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000170�00000000000�011563� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/nls/zh-tw/loading.js���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/n0000644�0000000�0000000�00000000106�11360615632�027213� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������({"loadingState":"載入中...","errorState":"抱歉,發生錯誤"})����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000167�00000000000�011571� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/nls/zh-tw/common.js����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/n0000644�0000000�0000000�00000000132�11360615642�027213� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������({"buttonOk":"確定","buttonCancel":"å–æ¶ˆ","buttonSave":"儲存","itemClose":"關閉"})��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000153�00000000000�011564� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/nls/ar/����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/n0000755�0000000�0000000�00000000000�11360615632�027214� 5����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000165�00000000000�011567� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/nls/ar/loading.js������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/n0000644�0000000�0000000�00000000130�11360615632�027210� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������({"loadingState":"جاري التحميل...","errorState":"عÙوا، حدث خطأ "})����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000164�00000000000�011566� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/nls/ar/common.js�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/n0000644�0000000�0000000�00000000144�11360615632�027215� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������({"buttonOk":"حسنا","buttonCancel":"الغاء","buttonSave":"Ø­ÙØ¸","itemClose":"اغلاق"})����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000153�00000000000�011564� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/nls/nl/����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/n0000755�0000000�0000000�00000000000�11360615644�027217� 5����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000165�00000000000�011567� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/nls/nl/loading.js������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/n0000644�0000000�0000000�00000000120�11360615640�027206� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������({"loadingState":"Bezig met laden...","errorState":"Er is een fout opgetreden"})������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000164�00000000000�011566� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/nls/nl/common.js�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/n0000644�0000000�0000000�00000000133�11360615644�027216� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������({"buttonOk":"OK","buttonCancel":"Annuleren","buttonSave":"Opslaan","itemClose":"Sluiten"})�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000161�00000000000�011563� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/nls/common.js����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/n0000644�0000000�0000000�00000000123�11360615644�027215� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������({"buttonOk":"OK","buttonCancel":"Cancel","buttonSave":"Save","itemClose":"Close"})���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000153�00000000000�011564� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/nls/it/����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/n0000755�0000000�0000000�00000000000�11360615634�027216� 5����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000165�00000000000�011567� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/nls/it/loading.js������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/n0000644�0000000�0000000�00000000126�11360615632�027215� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������({"loadingState":"Caricamento in corso...","errorState":"Si è verificato un errore"})������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000164�00000000000�011566� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/nls/it/common.js�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/n0000644�0000000�0000000�00000000126�11360615634�027217� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������({"buttonOk":"OK","buttonCancel":"Annulla","buttonSave":"Salva","itemClose":"Chiudi"})������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000153�00000000000�011564� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/nls/ca/����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/n0000755�0000000�0000000�00000000000�11360615644�027217� 5����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000165�00000000000�011567� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/nls/ca/loading.js������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/n0000644�0000000�0000000�00000000136�11360615642�027217� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������({"loadingState":"S'està carregant...","errorState":"Ens sap greu. S'ha produït un error."})����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000164�00000000000�011566� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/nls/ca/common.js�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/n0000644�0000000�0000000�00000000134�11360615644�027217� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������({"buttonOk":"D'acord","buttonCancel":"Cancel·la","buttonSave":"Desa","itemClose":"Tanca"})������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000153�00000000000�011564� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/nls/cs/����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/n0000755�0000000�0000000�00000000000�11360615634�027216� 5����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000165�00000000000�011567� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/nls/cs/loading.js������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/n0000644�0000000�0000000�00000000134�11360615634�027216� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������({"loadingState":"Probíhá naÄítání...","errorState":"Omlouváme se, doÅ¡lo k chybÄ›"})������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000164�00000000000�011566� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/nls/cs/common.js�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/n0000644�0000000�0000000�00000000131�11360615634�027213� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������({"buttonOk":"OK","buttonCancel":"Storno","buttonSave":"Uložit","itemClose":"Zavřít"})���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000153�00000000000�011564� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/nls/sk/����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/n0000755�0000000�0000000�00000000000�11360615632�027214� 5����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000165�00000000000�011567� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/nls/sk/loading.js������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/n0000644�0000000�0000000�00000000100�11360615632�027205� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������({"loadingState":"Zavádzanie...","errorState":"Nastala chyba"})����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000164�00000000000�011566� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/nls/sk/common.js�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/n0000644�0000000�0000000�00000000135�11360615632�027215� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������({"buttonOk":"OK","buttonCancel":"ZruÅ¡iÅ¥","buttonSave":"UložiÅ¥","itemClose":"ZatvoriÅ¥"})�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000153�00000000000�011564� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/nls/fi/����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/n0000755�0000000�0000000�00000000000�11360615640�027213� 5����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000165�00000000000�011567� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/nls/fi/loading.js������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/n0000644�0000000�0000000�00000000120�11360615636�027213� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������({"loadingState":"Lataus on meneillään...","errorState":"On ilmennyt virhe."})������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000164�00000000000�011566� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/nls/fi/common.js�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/n0000644�0000000�0000000�00000000130�11360615640�027207� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������({"buttonOk":"OK","buttonCancel":"Peruuta","buttonSave":"Tallenna","itemClose":"Sulje"})����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000153�00000000000�011564� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/nls/he/����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/n0000755�0000000�0000000�00000000000�11360615644�027217� 5����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000165�00000000000�011567� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/nls/he/loading.js������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/n0000644�0000000�0000000�00000000107�11360615636�027220� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������({"loadingState":"טעינה...","errorState":"×ירעה שגי××”"})���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000164�00000000000�011566� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/nls/he/common.js�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/n0000644�0000000�0000000�00000000152�11360615644�027217� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������({"buttonOk":"×ישור","buttonCancel":"ביטול","buttonSave":"שמירה","itemClose":"סגירה"})����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000153�00000000000�011564� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/nls/el/����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/n0000755�0000000�0000000�00000000000�11360615634�027216� 5����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000165�00000000000�011567� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/nls/el/loading.js������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/n0000644�0000000�0000000�00000000203�11360615634�027213� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������({"loadingState":"ΦόÏτωση...","errorState":"Σας ζητοÏμε συγνώμη, παÏουσιάστηκε σφάλμα"})���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000164�00000000000�011566� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/nls/el/common.js�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/n0000644�0000000�0000000�00000000166�11360615634�027223� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������({"buttonOk":"OK","buttonCancel":"ΑκÏÏωση","buttonSave":"Αποθήκευση","itemClose":"Κλείσιμο"})����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000153�00000000000�011564� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/nls/sl/����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/n0000755�0000000�0000000�00000000000�11360615644�027217� 5����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000165�00000000000�011567� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/nls/sl/loading.js������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/n0000644�0000000�0000000�00000000121�11360615634�027212� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������({"loadingState":"Nalaganje...","errorState":"Oprostite, priÅ¡lo je do napake."})�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000164�00000000000�011566� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/nls/sl/common.js�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/n0000644�0000000�0000000�00000000134�11360615644�027217� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������({"buttonOk":"V redu","buttonCancel":"PrekliÄi","buttonSave":"Shrani","itemClose":"Zapri"})������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000153�00000000000�011564� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/nls/es/����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/n0000755�0000000�0000000�00000000000�11360615636�027220� 5����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000165�00000000000�011567� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/nls/es/loading.js������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/n0000644�0000000�0000000�00000000123�11360615636�027216� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������({"loadingState":"Cargando...","errorState":"Lo siento, se ha producido un error"})���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000164�00000000000�011566� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/nls/es/common.js�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/n0000644�0000000�0000000�00000000136�11360615634�027220� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������({"buttonOk":"Aceptar","buttonCancel":"Cancelar","buttonSave":"Guardar","itemClose":"Cerrar"})����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000156�00000000000�011567� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/nls/pt-pt/�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/n0000755�0000000�0000000�00000000000�11360615640�027213� 5����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000170�00000000000�011563� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/nls/pt-pt/loading.js���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/n0000644�0000000�0000000�00000000121�11360615640�027207� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������({"loadingState":"A carregar...","errorState":"Lamentamos, mas ocorreu um erro"})�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000167�00000000000�011571� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/nls/pt-pt/common.js����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/n0000644�0000000�0000000�00000000131�11360615634�027213� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������({"buttonOk":"OK","buttonCancel":"Cancelar","buttonSave":"Guardar","itemClose":"Fechar"})���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000153�00000000000�011564� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/nls/tr/����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/n0000755�0000000�0000000�00000000000�11360615642�027215� 5����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000165�00000000000�011567� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/nls/tr/loading.js������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/n0000644�0000000�0000000�00000000117�11360615640�027214� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������({"loadingState":"Yükleniyor...","errorState":"Üzgünüz, bir hata oluÅŸtu"})�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000164�00000000000�011566� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/nls/tr/common.js�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/n0000644�0000000�0000000�00000000130�11360615642�027211� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������({"buttonOk":"Tamam","buttonCancel":"İptal","buttonSave":"Kaydet","itemClose":"Kapat"})����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000153�00000000000�011564� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/nls/pt/����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/n0000755�0000000�0000000�00000000000�11360615640�027213� 5����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000165�00000000000�011567� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/nls/pt/loading.js������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/n0000644�0000000�0000000�00000000101�11360615632�027206� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������({"loadingState":"Carregando...","errorState":"Ocorreu um erro"})���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000164�00000000000�011566� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/nls/pt/common.js�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/n0000644�0000000�0000000�00000000130�11360615640�027207� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������({"buttonOk":"OK","buttonCancel":"Cancelar","buttonSave":"Salvar","itemClose":"Fechar"})����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000153�00000000000�011564� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/nls/ja/����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/n0000755�0000000�0000000�00000000000�11360615642�027215� 5����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000165�00000000000�011567� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/nls/ja/loading.js������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/n0000644�0000000�0000000�00000000125�11360615642�027215� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������({"loadingState":"ロード中...","errorState":"エラーãŒç™ºç”Ÿã—ã¾ã—ãŸã€‚"})�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000164�00000000000�011566� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/nls/ja/common.js�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/n0000644�0000000�0000000�00000000142�11360615632�027213� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������({"buttonOk":"OK","buttonCancel":"キャンセル","buttonSave":"ä¿å­˜","itemClose":"é–‰ã˜ã‚‹"})������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000153�00000000000�011564� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/nls/sv/����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/n0000755�0000000�0000000�00000000000�11360615642�027215� 5����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000165�00000000000�011567� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/nls/sv/loading.js������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/n0000644�0000000�0000000�00000000105�11360615642�027213� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������({"loadingState":"Läser in...","errorState":"Det uppstod ett fel."})�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000164�00000000000�011566� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/nls/sv/common.js�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/n0000644�0000000�0000000�00000000125�11360615642�027215� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������({"buttonOk":"OK","buttonCancel":"Avbryt","buttonSave":"Spara","itemClose":"Stäng"})�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000153�00000000000�011564� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/nls/da/����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/n0000755�0000000�0000000�00000000000�11360615644�027217� 5����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000165�00000000000�011567� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/nls/da/loading.js������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/n0000644�0000000�0000000�00000000110�11360615644�027211� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������({"loadingState":"Indlæser...","errorState":"Der er opstÃ¥et en fejl"})��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000164�00000000000�011566� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/nls/da/common.js�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/n0000644�0000000�0000000�00000000123�11360615644�027215� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������({"buttonOk":"OK","buttonCancel":"Annullér","buttonSave":"Gem","itemClose":"Luk"})���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000153�00000000000�011564� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/nls/ko/����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/n0000755�0000000�0000000�00000000000�11360615640�027213� 5����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000165�00000000000�011567� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/nls/ko/loading.js������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/n0000644�0000000�0000000�00000000140�11360615632�027211� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������({"loadingState":"로드 중...","errorState":"죄송합니다. 오류가 ë°œìƒí–ˆìŠµë‹ˆë‹¤."})��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000164�00000000000�011566� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/nls/ko/common.js�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/n0000644�0000000�0000000�00000000132�11360615640�027211� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������({"buttonOk":"확ì¸","buttonCancel":"취소","buttonSave":"저장","itemClose":"닫기"})��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000153�00000000000�011564� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/nls/ru/����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/n0000755�0000000�0000000�00000000000�11360615642�027215� 5����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000165�00000000000�011567� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/nls/ru/loading.js������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/n0000644�0000000�0000000�00000000147�11360615636�027224� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������({"loadingState":"Загрузка...","errorState":"Извините, возникла ошибка"})�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000164�00000000000�011566� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/nls/ru/common.js�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/n0000644�0000000�0000000�00000000162�11360615642�027216� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������({"buttonOk":"ОК","buttonCancel":"Отмена","buttonSave":"Сохранить","itemClose":"Закрыть"})��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000153�00000000000�011564� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/nls/hu/����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/n0000755�0000000�0000000�00000000000�11360615634�027216� 5����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000165�00000000000�011567� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/nls/hu/loading.js������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/n0000644�0000000�0000000�00000000113�11360615632�027211� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������({"loadingState":"Betöltés...","errorState":"Sajnálom, hiba történt"})�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000164�00000000000�011566� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/nls/hu/common.js�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/n0000644�0000000�0000000�00000000132�11360615634�027214� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������({"buttonOk":"OK","buttonCancel":"Mégse","buttonSave":"Mentés","itemClose":"Bezárás"})��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000153�00000000000�011564� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/nls/th/����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/n0000755�0000000�0000000�00000000000�11360615634�027216� 5����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000165�00000000000�011567� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/nls/th/loading.js������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/n0000644�0000000�0000000�00000000200�11360615634�027210� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������({"loadingState":"à¸à¸³à¸¥à¸±à¸‡à¹‚หลด...","errorState":"ขออภัย เà¸à¸´à¸”ข้อผิดพลาด"})������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000164�00000000000�011566� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/nls/th/common.js�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/n0000644�0000000�0000000�00000000173�11360615634�027221� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������({"buttonOk":"ตà¸à¸¥à¸‡","buttonCancel":"ยà¸à¹€à¸¥à¸´à¸","buttonSave":"บันทึà¸","itemClose":"ปิด"})�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000153�00000000000�011564� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/nls/de/����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/n0000755�0000000�0000000�00000000000�11360615640�027213� 5����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000165�00000000000�011567� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/nls/de/loading.js������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/n0000644�0000000�0000000�00000000122�11360615632�027211� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������({"loadingState":"Wird geladen...","errorState":"Es ist ein Fehler aufgetreten."})����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000164�00000000000�011566� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/nls/de/common.js�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/n0000644�0000000�0000000�00000000140�11360615640�027210� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������({"buttonOk":"OK","buttonCancel":"Abbrechen","buttonSave":"Speichern","itemClose":"Schließen"})��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000162�00000000000�011564� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/ProgressBar.js���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/P0000644�0000000�0000000�00000004346�11360615642�027170� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* Copyright (c) 2004-2008, The Dojo Foundation All Rights Reserved. Available via Academic Free License >= 2.1 OR the modified BSD license. see: http://dojotoolkit.org/license for details */ if(!dojo._hasResource["dijit.ProgressBar"]){dojo._hasResource["dijit.ProgressBar"]=true;dojo.provide("dijit.ProgressBar");dojo.require("dojo.fx");dojo.require("dojo.number");dojo.require("dijit._Widget");dojo.require("dijit._Templated");dojo.declare("dijit.ProgressBar",[dijit._Widget,dijit._Templated],{progress:"0",maximum:100,places:0,indeterminate:false,templateString:"<div class=\"dijitProgressBar dijitProgressBarEmpty\"\n\t><div waiRole=\"progressbar\" tabindex=\"0\" dojoAttachPoint=\"internalProgress\" class=\"dijitProgressBarFull\"\n\t\t><div class=\"dijitProgressBarTile\"></div\n\t\t><span style=\"visibility:hidden\"> </span\n\t></div\n\t><div dojoAttachPoint=\"label\" class=\"dijitProgressBarLabel\" id=\"${id}_label\"> </div\n\t><img dojoAttachPoint=\"inteterminateHighContrastImage\" class=\"dijitProgressBarIndeterminateHighContrastImage\"\n\t></img\n></div>\n",_indeterminateHighContrastImagePath:dojo.moduleUrl("dijit","themes/a11y/indeterminate_progress.gif"),postCreate:function(){this.inherited(arguments);this.inteterminateHighContrastImage.setAttribute("src",this._indeterminateHighContrastImagePath);this.update();},update:function(_1){dojo.mixin(this,_1||{});var _2=this.internalProgress;var _3=1,_4;if(this.indeterminate){_4="addClass";dijit.removeWaiState(_2,"valuenow");dijit.removeWaiState(_2,"valuemin");dijit.removeWaiState(_2,"valuemax");}else{_4="removeClass";if(String(this.progress).indexOf("%")!=-1){_3=Math.min(parseFloat(this.progress)/100,1);this.progress=_3*this.maximum;}else{this.progress=Math.min(this.progress,this.maximum);_3=this.progress/this.maximum;}var _5=this.report(_3);this.label.firstChild.nodeValue=_5;dijit.setWaiState(_2,"describedby",this.label.id);dijit.setWaiState(_2,"valuenow",this.progress);dijit.setWaiState(_2,"valuemin",0);dijit.setWaiState(_2,"valuemax",this.maximum);}dojo[_4](this.domNode,"dijitProgressBarIndeterminate");_2.style.width=(_3*100)+"%";this.onChange();},report:function(_6){return dojo.number.format(_6,{type:"percent",places:this.places,locale:this.lang});},onChange:function(){}});}������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000156�00000000000�011567� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/Toolbar.js�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/T0000644�0000000�0000000�00000002237�11360615640�027167� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* Copyright (c) 2004-2008, The Dojo Foundation All Rights Reserved. Available via Academic Free License >= 2.1 OR the modified BSD license. see: http://dojotoolkit.org/license for details */ if(!dojo._hasResource["dijit.Toolbar"]){dojo._hasResource["dijit.Toolbar"]=true;dojo.provide("dijit.Toolbar");dojo.require("dijit._Widget");dojo.require("dijit._Container");dojo.require("dijit._Templated");dojo.declare("dijit.Toolbar",[dijit._Widget,dijit._Templated,dijit._KeyNavContainer],{templateString:"<div class=\"dijit dijitToolbar\" waiRole=\"toolbar\" tabIndex=\"${tabIndex}\" dojoAttachPoint=\"containerNode\">"+"</div>",tabIndex:"0",postCreate:function(){this.connectKeyNavHandlers(this.isLeftToRight()?[dojo.keys.LEFT_ARROW]:[dojo.keys.RIGHT_ARROW],this.isLeftToRight()?[dojo.keys.RIGHT_ARROW]:[dojo.keys.LEFT_ARROW]);},startup:function(){if(this._started){return;}this.startupKeyNavChildren();this.inherited(arguments);}});dojo.declare("dijit.ToolbarSeparator",[dijit._Widget,dijit._Templated],{templateString:"<div class=\"dijitToolbarSeparator dijitInline\"></div>",postCreate:function(){dojo.setSelectable(this.domNode,false);},isFocusable:function(){return false;}});}�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000162�00000000000�011564� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/Declaration.js���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/D0000644�0000000�0000000�00000003312�11360615644�027146� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* Copyright (c) 2004-2008, The Dojo Foundation All Rights Reserved. Available via Academic Free License >= 2.1 OR the modified BSD license. see: http://dojotoolkit.org/license for details */ if(!dojo._hasResource["dijit.Declaration"]){dojo._hasResource["dijit.Declaration"]=true;dojo.provide("dijit.Declaration");dojo.require("dijit._Widget");dojo.require("dijit._Templated");dojo.declare("dijit.Declaration",dijit._Widget,{_noScript:true,widgetClass:"",replaceVars:true,defaults:null,mixins:[],buildRendering:function(){var _1=this.srcNodeRef.parentNode.removeChild(this.srcNodeRef),_2=dojo.query("> script[type='dojo/method'][event='preamble']",_1).orphan(),_3=dojo.query("> script[type^='dojo/method'][event]",_1).orphan(),_4=dojo.query("> script[type^='dojo/method']",_1).orphan(),_5=dojo.query("> script[type^='dojo/connect']",_1).orphan(),_6=_1.nodeName;var _7=this.defaults||{};dojo.forEach(_3,function(s){var _9=s.getAttribute("event"),_a=dojo.parser._functionFromScript(s);_7[_9]=_a;});this.mixins=this.mixins.length?dojo.map(this.mixins,function(_b){return dojo.getObject(_b);}):[dijit._Widget,dijit._Templated];_7.widgetsInTemplate=true;_7._skipNodeCache=true;_7.templateString="<"+_6+" class='"+_1.className+"' dojoAttachPoint='"+(_1.getAttribute("dojoAttachPoint")||"")+"' dojoAttachEvent='"+(_1.getAttribute("dojoAttachEvent")||"")+"' >"+_1.innerHTML.replace(/\%7B/g,"{").replace(/\%7D/g,"}")+"</"+_6+">";dojo.query("[dojoType]",_1).forEach(function(_c){_c.removeAttribute("dojoType");});var wc=dojo.declare(this.widgetClass,this.mixins,_7);var _e=_5.concat(_4);dojo.forEach(_e,function(s){var evt=s.getAttribute("event")||"postscript",_11=dojo.parser._functionFromScript(s);dojo.connect(wc.prototype,evt,_11);});}});}����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000153�00000000000�011564� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/LICENSE����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/L0000644�0000000�0000000�00000026123�11360615632�027160� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Dojo is available under *either* the terms of the modified BSD license *or* the Academic Free License version 2.1. As a recipient of Dojo, you may choose which license to receive this code under (except as noted in per-module LICENSE files). Some modules may not be the copyright of the Dojo Foundation. These modules contain explicit declarations of copyright in both the LICENSE files in the directories in which they reside and in the code itself. No external contributions are allowed under licenses which are fundamentally incompatible with the AFL or BSD licenses that Dojo is distributed under. The text of the AFL and BSD licenses is reproduced below. ------------------------------------------------------------------------------- The "New" BSD License: ********************** Copyright (c) 2005-2008, The Dojo Foundation All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of the Dojo Foundation nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ------------------------------------------------------------------------------- The Academic Free License, v. 2.1: ********************************** This Academic Free License (the "License") applies to any original work of authorship (the "Original Work") whose owner (the "Licensor") has placed the following notice immediately following the copyright notice for the Original Work: Licensed under the Academic Free License version 2.1 1) Grant of Copyright License. Licensor hereby grants You a world-wide, royalty-free, non-exclusive, perpetual, sublicenseable license to do the following: a) to reproduce the Original Work in copies; b) to prepare derivative works ("Derivative Works") based upon the Original Work; c) to distribute copies of the Original Work and Derivative Works to the public; d) to perform the Original Work publicly; and e) to display the Original Work publicly. 2) Grant of Patent License. Licensor hereby grants You a world-wide, royalty-free, non-exclusive, perpetual, sublicenseable license, under patent claims owned or controlled by the Licensor that are embodied in the Original Work as furnished by the Licensor, to make, use, sell and offer for sale the Original Work and Derivative Works. 3) Grant of Source Code License. The term "Source Code" means the preferred form of the Original Work for making modifications to it and all available documentation describing how to modify the Original Work. Licensor hereby agrees to provide a machine-readable copy of the Source Code of the Original Work along with each copy of the Original Work that Licensor distributes. Licensor reserves the right to satisfy this obligation by placing a machine-readable copy of the Source Code in an information repository reasonably calculated to permit inexpensive and convenient access by You for as long as Licensor continues to distribute the Original Work, and by publishing the address of that information repository in a notice immediately following the copyright notice that applies to the Original Work. 4) Exclusions From License Grant. Neither the names of Licensor, nor the names of any contributors to the Original Work, nor any of their trademarks or service marks, may be used to endorse or promote products derived from this Original Work without express prior written permission of the Licensor. Nothing in this License shall be deemed to grant any rights to trademarks, copyrights, patents, trade secrets or any other intellectual property of Licensor except as expressly stated herein. No patent license is granted to make, use, sell or offer to sell embodiments of any patent claims other than the licensed claims defined in Section 2. No right is granted to the trademarks of Licensor even if such marks are included in the Original Work. Nothing in this License shall be interpreted to prohibit Licensor from licensing under different terms from this License any Original Work that Licensor otherwise would have a right to license. 5) This section intentionally omitted. 6) Attribution Rights. You must retain, in the Source Code of any Derivative Works that You create, all copyright, patent or trademark notices from the Source Code of the Original Work, as well as any notices of licensing and any descriptive text identified therein as an "Attribution Notice." You must cause the Source Code for any Derivative Works that You create to carry a prominent Attribution Notice reasonably calculated to inform recipients that You have modified the Original Work. 7) Warranty of Provenance and Disclaimer of Warranty. Licensor warrants that the copyright in and to the Original Work and the patent rights granted herein by Licensor are owned by the Licensor or are sublicensed to You under the terms of this License with the permission of the contributor(s) of those copyrights and patent rights. Except as expressly stated in the immediately proceeding sentence, the Original Work is provided under this License on an "AS IS" BASIS and WITHOUT WARRANTY, either express or implied, including, without limitation, the warranties of NON-INFRINGEMENT, MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY OF THE ORIGINAL WORK IS WITH YOU. This DISCLAIMER OF WARRANTY constitutes an essential part of this License. No license to Original Work is granted hereunder except under this disclaimer. 8) Limitation of Liability. Under no circumstances and under no legal theory, whether in tort (including negligence), contract, or otherwise, shall the Licensor be liable to any person for any direct, indirect, special, incidental, or consequential damages of any character arising as a result of this License or the use of the Original Work including, without limitation, damages for loss of goodwill, work stoppage, computer failure or malfunction, or any and all other commercial damages or losses. This limitation of liability shall not apply to liability for death or personal injury resulting from Licensor's negligence to the extent applicable law prohibits such limitation. Some jurisdictions do not allow the exclusion or limitation of incidental or consequential damages, so this exclusion and limitation may not apply to You. 9) Acceptance and Termination. If You distribute copies of the Original Work or a Derivative Work, You must make a reasonable effort under the circumstances to obtain the express assent of recipients to the terms of this License. Nothing else but this License (or another written agreement between Licensor and You) grants You permission to create Derivative Works based upon the Original Work or to exercise any of the rights granted in Section 1 herein, and any attempt to do so except under the terms of this License (or another written agreement between Licensor and You) is expressly prohibited by U.S. copyright law, the equivalent laws of other countries, and by international treaty. Therefore, by exercising any of the rights granted to You in Section 1 herein, You indicate Your acceptance of this License and all of its terms and conditions. 10) Termination for Patent Action. This License shall terminate automatically and You may no longer exercise any of the rights granted to You by this License as of the date You commence an action, including a cross-claim or counterclaim, against Licensor or any licensee alleging that the Original Work infringes a patent. This termination provision shall not apply for an action alleging patent infringement by combinations of the Original Work with other software or hardware. 11) Jurisdiction, Venue and Governing Law. Any action or suit relating to this License may be brought only in the courts of a jurisdiction wherein the Licensor resides or in which Licensor conducts its primary business, and under the laws of that jurisdiction excluding its conflict-of-law provisions. The application of the United Nations Convention on Contracts for the International Sale of Goods is expressly excluded. Any use of the Original Work outside the scope of this License or after its termination shall be subject to the requirements and penalties of the U.S. Copyright Act, 17 U.S.C. § 101 et seq., the equivalent laws of other countries, and international treaty. This section shall survive the termination of this License. 12) Attorneys Fees. In any action to enforce the terms of this License or seeking damages relating thereto, the prevailing party shall be entitled to recover its costs and expenses, including, without limitation, reasonable attorneys' fees and costs incurred in connection with such action, including any appeal of such action. This section shall survive the termination of this License. 13) Miscellaneous. This License represents the complete agreement concerning the subject matter hereof. If any provision of this License is held to be unenforceable, such provision shall be reformed only to the extent necessary to make it enforceable. 14) Definition of "You" in This License. "You" throughout this License, whether in upper or lower case, means an individual or a legal entity exercising rights under, and complying with all of the terms of, this License. For legal entities, "You" includes any entity that controls, is controlled by, or is under common control with you. For purposes of this definition, "control" means (i) the power, direct or indirect, to cause the direction or management of such entity, whether by contract or otherwise, or (ii) ownership of fifty percent (50%) or more of the outstanding shares, or (iii) beneficial ownership of such entity. 15) Right to Use. You may use the Original Work in all ways not otherwise restricted or conditioned by this License or by law, and Licensor promises not to interfere with or be responsible for such uses by You. This license is Copyright (C) 2003-2004 Lawrence E. Rosen. All rights reserved. Permission is hereby granted to copy and distribute this license without modification. This license may not be modified without the express written permission of its copyright owner. ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000155�00000000000�011566� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/robotx.js��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/r0000644�0000000�0000000�00000001136�11360615634�027225� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* Copyright (c) 2004-2008, The Dojo Foundation All Rights Reserved. Available via Academic Free License >= 2.1 OR the modified BSD license. see: http://dojotoolkit.org/license for details */ if(!dojo._hasResource["dijit.robotx"]){dojo._hasResource["dijit.robotx"]=true;dojo.provide("dijit.robotx");dojo.require("dijit.robot");dojo.require("dojo.robotx");dojo.experimental("dijit.robotx");(function(){var _1=doh.robot._updateDocument;dojo.mixin(doh.robot,{_updateDocument:function(){_1();var _2=(dojo.doc.parentWindow||dojo.doc.defaultView);if(_2["dijit"]){dijit.registry=_2.dijit.registry;}}});})();}����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000161�00000000000�011563� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/_Templated.js����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/_0000644�0000000�0000000�00000010555�11360615644�027210� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* Copyright (c) 2004-2008, The Dojo Foundation All Rights Reserved. Available via Academic Free License >= 2.1 OR the modified BSD license. see: http://dojotoolkit.org/license for details */ if(!dojo._hasResource["dijit._Templated"]){dojo._hasResource["dijit._Templated"]=true;dojo.provide("dijit._Templated");dojo.require("dijit._Widget");dojo.require("dojo.string");dojo.require("dojo.parser");dojo.declare("dijit._Templated",null,{templateNode:null,templateString:null,templatePath:null,widgetsInTemplate:false,_skipNodeCache:false,_stringRepl:function(_1){var _2=this.declaredClass,_3=this;return dojo.string.substitute(_1,this,function(_4,_5){if(_5.charAt(0)=="!"){_4=_3[_5.substr(1)];}if(typeof _4=="undefined"){throw new Error(_2+" template:"+_5);}if(_4==null){return "";}return _5.charAt(0)=="!"?_4:_4.toString().replace(/"/g,""");},this);},buildRendering:function(){var _6=dijit._Templated.getCachedTemplate(this.templatePath,this.templateString,this._skipNodeCache);var _7;if(dojo.isString(_6)){_7=dijit._Templated._createNodesFromText(this._stringRepl(_6))[0];}else{_7=_6.cloneNode(true);}this.domNode=_7;this._attachTemplateNodes(_7);var _8=this.srcNodeRef;if(_8&&_8.parentNode){_8.parentNode.replaceChild(_7,_8);}if(this.widgetsInTemplate){var cw=(this._supportingWidgets=dojo.parser.parse(_7));this._attachTemplateNodes(cw,function(n,p){return n[p];});}this._fillContent(_8);},_fillContent:function(_c){var _d=this.containerNode;if(_c&&_d){while(_c.hasChildNodes()){_d.appendChild(_c.firstChild);}}},_attachTemplateNodes:function(_e,_f){_f=_f||function(n,p){return n.getAttribute(p);};var _12=dojo.isArray(_e)?_e:(_e.all||_e.getElementsByTagName("*"));var x=dojo.isArray(_e)?0:-1;var _14={};for(;x<_12.length;x++){var _15=(x==-1)?_e:_12[x];if(this.widgetsInTemplate&&_f(_15,"dojoType")){continue;}var _16=_f(_15,"dojoAttachPoint");if(_16){var _17,_18=_16.split(/\s*,\s*/);while((_17=_18.shift())){if(dojo.isArray(this[_17])){this[_17].push(_15);}else{this[_17]=_15;}}}var _19=_f(_15,"dojoAttachEvent");if(_19){var _1a,_1b=_19.split(/\s*,\s*/);var _1c=dojo.trim;while((_1a=_1b.shift())){if(_1a){var _1d=null;if(_1a.indexOf(":")!=-1){var _1e=_1a.split(":");_1a=_1c(_1e[0]);_1d=_1c(_1e[1]);}else{_1a=_1c(_1a);}if(!_1d){_1d=_1a;}this.connect(_15,_1a,_1d);}}}var _1f=_f(_15,"waiRole");if(_1f){dijit.setWaiRole(_15,_1f);}var _20=_f(_15,"waiState");if(_20){dojo.forEach(_20.split(/\s*,\s*/),function(_21){if(_21.indexOf("-")!=-1){var _22=_21.split("-");dijit.setWaiState(_15,_22[0],_22[1]);}});}}}});dijit._Templated._templateCache={};dijit._Templated.getCachedTemplate=function(_23,_24,_25){var _26=dijit._Templated._templateCache;var key=_24||_23;var _28=_26[key];if(_28){if(!_28.ownerDocument||_28.ownerDocument==dojo.doc){return _28;}dojo._destroyElement(_28);}if(!_24){_24=dijit._Templated._sanitizeTemplateString(dojo._getText(_23));}_24=dojo.string.trim(_24);if(_25||_24.match(/\$\{([^\}]+)\}/g)){return (_26[key]=_24);}else{return (_26[key]=dijit._Templated._createNodesFromText(_24)[0]);}};dijit._Templated._sanitizeTemplateString=function(_29){if(_29){_29=_29.replace(/^\s*<\?xml(\s)+version=[\'\"](\d)*.(\d)*[\'\"](\s)*\?>/im,"");var _2a=_29.match(/<body[^>]*>\s*([\s\S]+)\s*<\/body>/im);if(_2a){_29=_2a[1];}}else{_29="";}return _29;};if(dojo.isIE){dojo.addOnWindowUnload(function(){var _2b=dijit._Templated._templateCache;for(var key in _2b){var _2d=_2b[key];if(!isNaN(_2d.nodeType)){dojo._destroyElement(_2d);}delete _2b[key];}});}(function(){var _2e={cell:{re:/^<t[dh][\s\r\n>]/i,pre:"<table><tbody><tr>",post:"</tr></tbody></table>"},row:{re:/^<tr[\s\r\n>]/i,pre:"<table><tbody>",post:"</tbody></table>"},section:{re:/^<(thead|tbody|tfoot)[\s\r\n>]/i,pre:"<table>",post:"</table>"}};var tn;dijit._Templated._createNodesFromText=function(_30){if(tn&&tn.ownerDocument!=dojo.doc){dojo._destroyElement(tn);tn=undefined;}if(!tn){tn=dojo.doc.createElement("div");tn.style.display="none";dojo.body().appendChild(tn);}var _31="none";var _32=_30.replace(/^\s+/,"");for(var _33 in _2e){var map=_2e[_33];if(map.re.test(_32)){_31=_33;_30=map.pre+_30+map.post;break;}}tn.innerHTML=_30;if(tn.normalize){tn.normalize();}var tag={cell:"tr",row:"tbody",section:"table"}[_31];var _36=(typeof tag!="undefined")?tn.getElementsByTagName(tag)[0]:tn;var _37=[];while(_36.firstChild){_37.push(_36.removeChild(_36.firstChild));}tn.innerHTML="";return _37;};})();dojo.extend(dijit._Widget,{dojoAttachEvent:"",dojoAttachPoint:"",waiRole:"",waiState:""});}���������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000153�00000000000�011564� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/themes/����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/t0000755�0000000�0000000�00000000000�11360615644�027225� 5����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000164�00000000000�011566� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/themes/dijit.css�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/t0000644�0000000�0000000�00000076736�11360615632�027247� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* Essential styles that themes can inherit. In other words, works but doesn't look great. */ /**** GENERIC PIECES ****/ .dijitReset { /* Use this style to null out padding, margin, border in your template elements so that page specific styles don't break them. - Use in all TABLE, TR and TD tags. */ margin:0; border:0; padding:0; line-height:normal; font: inherit; color: inherit; } .dijitInline { /* To inline block elements. Similar to InlineBox below, but this has fewer side-effects in Moz. Also, apparently works on a DIV as well as a FIELDSET. */ display:-moz-inline-box; /* FF2 */ display:inline-block; /* webkit and FF3 */ #zoom: 1; /* set hasLayout:true to mimic inline-block */ #display:inline; /* don't use .dj_ie since that increases the priority */ border:0; padding:0; vertical-align:middle; #vertical-align: auto; /* makes TextBox,Button line up w/native counterparts on IE6 */ } .dj_ie INPUT.dijitTextBox, .dj_ie .dijitInputField INPUT { font-size: 100%; } .dj_ie .dijitInputField INPUT { /* try to get rid of IE implicit margin around INPUT */ margin: -1px 0 !important; } .dj_iequirks .dijitInputField INPUT { /* try to get rid of IE implicit margin around INPUT */ margin-top: -3px !important; } .dijitInlineTable { /* To inline tables with a given width set (otherwise, use dijitInline above) * Must also put style="-moz-inline-stack" on the node itself to workaround FF2 bugs */ display: -moz-inline-stack; /* FF2 */ display:inline-table; display:inline-block; /* webkit and FF3 */ #zoom: 1; /* set hasLayout:true to mimic inline-block */ #display:inline; /* don't use .dj_ie since that increases the priority */ box-sizing: content-box; -moz-box-sizing: content-box; border:0; padding:0; } .dijitTeeny { font-size:1px; line-height:1px; } /* * Popup items have a wrapper div (dijitPopup) * with the real popup inside, and maybe an iframe too */ .dijitPopup { position: absolute; background-color: transparent; margin: 0; border: 0; padding: 0; } .dijit_a11y .dijitPopup, .dijit_ally .dijitPopup div, .dijit_a11y .dijitPopup table, .dijit_a11y .dijitTooltipContainer { background-color: white !important; } .dijitInputField { overflow:hidden; #zoom:1; } .dijitPositionOnly { /* Null out all position-related properties */ padding: 0 !important; border: 0 !important; background-color: transparent !important; background-image: none !important; height: auto !important; width: auto !important; } .dijitNonPositionOnly { /* Null position-related properties */ float: none !important; position: static !important; margin: 0 0 0 0 !important; vertical-align: middle !important; } .dijitBackgroundIframe { /* * iframe used for FF2 in high-contrast mode to prevent menu * being transparent */ position: absolute; left: 0; top: 0; width: 100%; height: 100%; z-index: -1; border: 0; padding: 0; margin: 0; } .dijitClickableRegion { /* An InlineEditBox in view mode (click this to edit the text) */ background-color: #e2ebf2; cursor: text; } .dijitDisplayNone { /* hide something. Use this as a class rather than element.style so another class can override */ display:none !important; } .dijitContainer { /* for all layout containers */ overflow: hidden; /* need on IE so something can be reduced in size, and so scrollbars aren't temporarily displayed when resizing */ } /**** A11Y ****/ .dijit_a11y * { background-image:none !important; } .dijit_a11y .dijitCalendarIncrementControl .dijitA11ySideArrow { padding-left:.2em; visibility:visible !important; } .dj_ie6 .dijit_a11y .dijitCalendarIncrementControl { font-size:.75em !important; } .dijit_a11y .dijitCalendarSelectedDate { text-decoration:overline !important; } .dijitA11ySideArrow { vertical-align:top; margin-right:0em; margin-left:.2em; line-height:2em; text-align:center; } .dijit_a11y .dijit * { background:white !important; color:black !important; } .dijit_a11y .dijitButtonNode { border-color: black!important; border-style: outset!important; border-width: medium!important; } .dijit_a11y .dijitButtonDisabled .dijitButtonNode, .dijit_a11y .dijitDropDownButtonDisabled .dijitButtonNode, .dijit_a11y .dijitComboButtonDisabled .dijitButtonNode, .dijit_a11y .dijitComboBoxDisabled .dijitInputField, .dijit_a11y .dijitComboBoxDisabled .dijitButtonNode, .dijit_a11y .dijitSpinnerDisabled .dijitButtonNode, .dijit_a11y .dijitSpinnerDisabled .dijitInputField { border-style: outset!important; border-width: medium!important; border-color: #999 !important; color:#999 !important; } .dj_ff2 .dijit_a11y .dijitComboButton .dijitButtonContentsFocused, .dj_ff2 .dijit_a11y .dijitComboButton .dijitDownArrowButtonFocused { border: 1px dotted black !important; } /* button inner contents - labels, icons etc. */ .dijitButtonNode * { vertical-align: middle; } .dijit_a11y .dijitArrowButtonInner { width: 1.0em; display: none !important; } .dijitButtonNode .dijitArrowButtonInner { background:no-repeat center; width: 16px; } .dijitComboBox .dijitArrowButtonInner { display: block; } /* In high contrast mode, display the check symbol */ .dijit_a11y .dijitToggleButtonChecked .dijitToggleButtonIconChar { display: inline !important; } /**** 3-element borders: ( dijitLeft + dijitStretch + dijitRight ) ****/ .dijitLeft { /* Left part of a 3-element border */ background-position:left top; background-repeat:no-repeat; } .dijitStretch { /* Middle (stretchy) part of a 3-element border */ white-space:nowrap; /* MOW: move somewhere else */ background-repeat:repeat-x; } .dijitRight { /* Right part of a 3-element border */ #display:inline; /* IE7 sizes to outer size w/o this */ background-position:right top; background-repeat:no-repeat; } .dijitButton, .dijitDropDownButton, .dijitComboButton { /* outside of button */ margin: 0.2em; } .dijitToolbar .dijitButton, .dijitToolbar .dijitDropDownButton, .dijitToolbar .dijitComboButton { margin: 0; } .dj_ie .dijitToolbar button, .dj_safari .dijitToolbar button { /* FF adds implicit padding to buttons so make other browsers follow suit, * to avoid a bunch of browse specific rules in theme files */ padding: 1px 2px; } .dj_ie .dijitComboButton { /* hack to get inline-table to vertically align w/other buttons */ margin-bottom: -3px; } .dj_safari .dijitToolbar .dijitDropDownButton { padding-left: 0.3em; } .dj_gecko .dijitToolbar .dijitButtonNode::-moz-focus-inner { padding:0; } .dijitButtonNode { /* Node that is acting as a button -- may or may not be a BUTTON element */ border:1px solid gray; margin:0; line-height:normal; cursor:pointer; vertical-align: middle; #vertical-align: auto; text-align:center; white-space: nowrap; } /* .dijitButtonNode button { cursor: pointer; } */ .dj_ie .dijitButtonNode { /* ensure hasLayout */ zoom: 1; } .dj_ie .dijitButtonNode button { /* disgusting hack to get rid of spurious padding around button elements on IE. MSIE is truly the web's boat anchor. */ overflow: visible; cursor: pointer; } .dijitArrowButton { /* Node that is acting as a arrow button -- drop down (spinner has its own treatment). Also gets dijitButtonNode */ /* place AFTER dijitButtonNode so it overrides */ padding: 0 .4em; } DIV.dijitArrowButton { float: right; } .dijitSpinner .dijitInputLayoutContainer .dijitArrowButton { border-style: solid; border-width: 0 0 0 1px !important; padding: 0; position: absolute; right: 0; float: none; } .dijitSpinner .dijitInputLayoutContainer .dijitArrowButton { position: absolute; height: 50%; } .dijitSpinner .dijitInputLayoutContainer .dijitDownArrowButton { top: none; bottom: 0; border-top-width: 1px !important; } .dijitSpinner .dijitInputLayoutContainer .dijitUpArrowButton { top: 0; bottom: none; } TABLE.dijitComboButton { /* In ComboButton, borders are on each cell rather than on <table> itself */ border-collapse: collapse; border:0; padding:0; margin:0; } .dijitToolbar .dijitComboButton { /* because Toolbar only draws a border around the hovered thing */ border-collapse: separate; } .dj_ie BUTTON.dijitButtonNode { overflow: visible; /* eliminates arbitrary left and right padding on buttons */ } table .dijitButton .dijitButtonNode, table .dijitComboButton .dijitButtonNode { #overflow:hidden; /* visible messes up if the button is inside a table on IE */ } .dijitButtonNode IMG { /* make text and images line up cleanly */ vertical-align:middle; /*margin-bottom:.2em;*/ } /****** TextBox related. Everything that has an <input> *******/ .dijitTextBox, .dijitComboBox, .dijitSpinner { border: solid black 1px; #overflow: hidden; /* #6027, #6067 */ width: 15em; /* need to set default size on outer node since inner nodes say <input style="width:100%"> and <td width=100%>. user can override */ vertical-align: middle; #vertical-align: auto; } .dijitTimeTextBox { width: 8em; } /* rules for safari to deal with fuzzy blue focus border */ .dijitTextBox input:focus, .dijitComboBox input:focus, .dijitSpinner input:focus { outline: none; /* blue fuzzy line looks wrong on combobox or something w/validation icon showing */ } .dijitTextBoxFocused, .dijitComboBoxFocused, .dijitSpinnerFocused, .dijitTextAreaFocused { /* should we display focus like we do on other browsers, or use the safari standard focus indicator?? */ outline: auto 5px -webkit-focus-ring-color; } .dijitTextAreaFocused div { /* prevent dotted border on FF3 */ outline: none !important; } .dijitTextBox INPUT, .dijitComboBox INPUT, .dijitSpinner INPUT { border-left: solid black 1px; /* TODO: for RTL mode should be border-right */ display:inline; position:static !important; border:0 !important; margin:0 !important; vertical-align:top !important; visibility:visible !important; background-color:transparent !important; background-image:none !important; width:100% !important; } /* Display an "X" for invalid input. Themes will override these rules to display an icon instead. */ .dijitValidationIcon { visibility: hidden; display: block; padding: 0 2px; float: right; height: auto; } .dijitValidationIconText { visibility: hidden; display: none; float:right; font-family: sans-serif; font-style:italic; font-size: 0.45em; line-height: 190%; } .dijit_a11y .dijitValidationIcon { display: none !important; } .dijit_a11y .dijitValidationIconText { display: block !important; } .dijitError .dijitValidationIcon, .dijitError .dijitValidationIconText { visibility: visible; } .dijitTextBox .dijitArrowButton { /* this is for a combo box with no arrow displayed; we set baseClass=TextBox */ display:none; } /**** dijit.form.CheckBox & dijit.form.RadioButton ****/ .dijitCheckBox, .dijitRadio, .dijitCheckBoxInput { padding: 0; border: 0; width: 16px; height: 16px; background-position:center center; background-repeat:no-repeat; overflow: hidden; } .dijitCheckBox INPUT, .dijitRadio INPUT { margin: 0; padding: 0; display: block; } .dijitCheckBoxInput { /* place the actual input on top, but all-but-invisible */ opacity: 0.01; } .dj_ie .dijitCheckBoxInput { filter: alpha(opacity=0); } .dijit_a11y .dijitCheckBox, .dijit_a11y .dijitRadio { width: auto; height: auto; } .dijit_a11y .dijitCheckBoxInput { opacity: 1; filter: none; width: auto; height: auto; } /**** dijit.ProgressBar ****/ .dijitProgressBarEmpty{ /* outer container and background of the bar that's not finished yet*/ position:relative;overflow:hidden; border:1px solid black; /* a11y: border necessary for high-contrast mode */ z-index:0; /* establish a stacking context for this progress bar */ } .dijitProgressBarFull { /* outer container for background of bar that is finished */ position:absolute; overflow:hidden; z-index:-1; top:0; width:100%; } .dj_ie6 .dijitProgressBarFull { height:1.6em; } .dijitProgressBarTile { /* inner container for finished portion */ position:absolute; overflow:hidden; top:0; left:0; bottom:0; right:0; margin:0; padding:0; width:auto; height:auto; background-color:#aaa; background-attachment: fixed; } .dijit_a11y .dijitProgressBarTile{ /* a11y: The border provides visibility in high-contrast mode */ border-width:4px; border-style:solid; background-color:transparent !important; } .dj_ie6 .dijitProgressBarTile { /* width:auto works in IE6 with position:static but not position:absolute */ position:static; /* height:auto or 100% does not work in IE6 */ height:1.6em; } .dijitProgressBarIndeterminate .dijitProgressBarLabel { visibility:hidden; } .dijitProgressBarIndeterminate .dijitProgressBarTile { /* animated gif for 'indeterminate' mode */ } .dijitProgressBarIndeterminateHighContrastImage { display:none; } .dijit_a11y .dijitProgressBarIndeterminate .dijitProgressBarIndeterminateHighContrastImage { display:block; position:absolute; top:0; bottom:0; margin:0; padding:0; width:100%; height:auto; } .dijitProgressBarLabel { display:block; position:static; width:100%; text-align:center; background-color:transparent !important; } /**** dijit.Tooltip ****/ .dijitTooltip { position: absolute; z-index: 2000; display: block; /* make visible but off screen */ left: 50%; top: -10000px; overflow: visible; } .dijitTooltipContainer { border: solid black 2px; background: #b8b5b5; color: black; font-size: small; } .dijitTooltipFocusNode { padding: 2px 2px 2px 2px; } .dijitTooltipConnector { position: absolute; } .dijitTooltipData { display:none; } /* MOW: using actual images at this time /* draw an arrow with CSS only * / .dijitTooltipConnector { /* the border on the triangle * / font-size: 0; line-height: 0%; width: 0; border-top: none; border-bottom: 14px solid black; border-left: 7px solid transparent; border-right: 7px solid transparent; top: -14px; left: 3px; z-index: 2; } .dijitTooltipConnector div { /* the background of the triangle * / font-size: 0; line-height: 0%; width: 0; position: absolute; border-bottom: 10px solid #b8b5b5; border-left: 5px solid transparent; border-right: 5px solid transparent; top: 6px; left: -5px; z-index: 3; } */ /* Layout widgets. This is essential CSS to make layout work (it isn't "styling" CSS) make sure that the position:absolute in dijitAlign* overrides other classes */ .dijitLayoutContainer{ position: relative; display: block; overflow: hidden; } body .dijitAlignTop, body .dijitAlignBottom, body .dijitAlignLeft, body .dijitAlignRight { position: absolute; overflow: hidden; } body .dijitAlignClient { position: absolute; } /* * BorderContaienr * * .dijitBorderContainer is a stylized layout where panes have border and margin. * .dijitBorderContainerNoGutter is a raw layout. */ .dijitBorderContainer, .dijitBorderContainerNoGutter { position:relative; overflow: hidden; } .dijitBorderContainerPane, .dijitBorderContainerNoGutterPane { position: absolute !important; /* !important to override position:relative in dijitTabContainer etc. */ z-index: 2; /* above the splitters so that off-by-one browser errors don't cover up border of pane */ } .dijitBorderContainer > .dijitTextArea { /* On Safari, for SimpleTextArea inside a BorderContainer, don't want to display the grip to resize */ resize: none; } .dijitGutter { /* gutter is just a place holder for empty space between panes in BorderContainer */ position: absolute; font-size: 1px; /* needed by IE6 even though div is empty, otherwise goes to 15px */ } /* SplitContainer 'V' == container that splits vertically (up/down) 'H' = horizontal (left/right) */ .dijitSplitter { position: absolute; overflow: hidden; z-index: 1; /* behind the panes */ background-color: #fff; border-color: gray; border-style: solid; border-width: 0; z-index: 11; } .dijitSplitterActive { z-index: 11 !important; } .dijitSplitterCover{ position:absolute; z-index:1; top:0; left:0; width:100%; height:100%; } /* #6945: stop mouse events */ .dj_ie .dijitSplitterCover{ background: white; filter: alpha(opacity=0) } .dijitSplitterH { height: 7px; border-top:1px; border-bottom:1px; cursor: ns-resize; } .dijitSplitterV { width: 7px; border-left:1px; border-right:1px; cursor: ew-resize; } .dijitSplitContainer{ position: relative; overflow: hidden; display: block; } .dijitSplitPane{ position: absolute; } .dijitSplitContainerSizerH, .dijitSplitContainerSizerV { position:absolute; font-size: 1px; cursor: move; cursor: w-resize; background-color: ThreeDFace; border: 1px solid; border-color: ThreeDHighlight ThreeDShadow ThreeDShadow ThreeDHighlight; margin: 0; } .dijitSplitContainerSizerH .thumb, .dijitSplitterV .dijitSplitterThumb { overflow:hidden; position:absolute; top:49%; } .dijitSplitContainerSizerV .thumb, .dijitSplitterH .dijitSplitterThumb { position:absolute; left:49%; } .dijitSplitterShadow, .dijitSplitContainerVirtualSizerH, .dijitSplitContainerVirtualSizerV { font-size: 1px; background-color: ThreeDShadow; -moz-opacity: 0.5; opacity: 0.5; filter: Alpha(Opacity=50); margin: 0; } .dj_ie .dijitSplitterV, .dijitSplitContainerVirtualSizerH { cursor: w-resize; } .dj_ie .dijitSplitterH, .dijitSplitContainerSizerV, .dijitSplitContainerVirtualSizerV { cursor: n-resize; } .dijit_a11y .dijitSplitterH { border-top:1px solid #d3d3d3 !important; border-bottom:1px solid #d3d3d3 !important; } .dijit_a11y .dijitSplitterV { border-left:1px solid #d3d3d3 !important; border-right:1px solid #d3d3d3 !important; } /* ContentPane */ .dijitContentPane { display: block; overflow: auto; /* if we don't have this (or overflow:hidden), then Widget.resizeTo() doesn't make sense for ContentPane */ } /* TitlePane */ .dijitTitlePane { display: block; overflow: hidden; } .dj_ie7 .dijitTitlePaneTextNode { display:inline; } /* Color Palette */ .dijitColorPalette { border:1px solid #999; background:#fff; -moz-border-radius:3pt; } img.dijitColorPaletteUnder { border-style:none; position:absolute; left:0; top:0; } .dijitColorPaletteInner { position: relative; overflow:hidden; outline:0; } .dijitPaletteCell { width: 20px; height: 20px; position: absolute; overflow: hidden; z-index: 10; outline-width: 0; } .dijitPaletteImg { width: 16px; /*This is the width of one color in the provided palettes. */ height: 14px; /* Height of one color in the provided palettes. */ position: absolute; top: 1px; left: 1px; overflow: hidden; cursor: default; border:1px solid #999; /* -moz-border-radius:2pt; */ } .dijitPaletteCellHighlight img { width: 14px; /*This is the width of one color in the provided palettes. */ height: 12px; /* Height of one color in the provided palettes. */ position: absolute; top: 1px; left: 1px; overflow: hidden; cursor: default; border:2px solid #000; outline:1px solid #dedede; /* -moz-border-radius:0; */ } .dijit_a11y .dijitPaletteCell { background-color:transparent !important; } .dijit_a11y .dijitPaletteImg { background-color:transparent !important; } /* Accordion */ .dijitAccordionPane { overflow: hidden !important; /* prevent spurious scrollbars */ } .dijitAccordionPane .dijitAccordionBody { overflow: auto; } /* #7104 - workaround IE jankyness with overflows */ .dj_ie .dijitAccordionBody { position:relative; } .dijitAccordionContainer { border:1px solid #b7b7b7; border-top:0 !important; } .dijitAccordionTitle:hover { cursor: pointer; } /* images off, high-contrast mode styles */ .dijitAccordionPane .dijitAccordionTitle .arrowTextUp, .dijitAccordionPane .dijitAccordionTitle .arrowTextDown { display: none; font-size: 0.65em; font-weight: normal !important; } .dijit_a11y .dijitAccordionTitle .arrowTextUp { display: inline; } .dijit_a11y .dijitAccordionTitle-selected .arrowTextDown { display: inline; } .dijit_a11y .dijitAccordionTitle-selected .arrowTextUp { display: none; } /* Calendar */ .dijitCalendarContainer thead tr th, .dijitCalendarContainer thead tr td, .dijitCalendarContainer tbody tr td, .dijitCalendarContainer tfoot tr td { padding: 0; } .dijitCalendarNextYear { margin:0 0 0 0.55em; } .dijitCalendarPreviousYear { margin:0 0.55em 0 0; } .dijitCalendarIncrementControl { cursor:pointer; cursor:hand; width:1em; } .dijitCalendarDisabledDate { color:gray !important; } .dijitCalendarBodyContainer tbody tr td { cursor:pointer; cursor:hand; } .dijitCalendarPreviousMonthDisabled, .dijitCalendarCurrentMonthDisabled, .dijitCalendarNextMonthDisabled { cursor:default !important } .dijitCalendarDateTemplate, .dijitCalendarSelectedYear, .dijitCalendarNextYear, .dijitCalendarPreviousYear { cursor:pointer; } .dijitCalendarMonthLabelSpacer { /* don't display it, but make it affect the width */ position: relative; height: 1px; overflow: hidden; visibility: hidden; } /* Menu */ .dijitMenu { border:1px solid black; background-color:white; } .dijitMenuTable { margin:1px 0; border-collapse:collapse; border-width:0; background-color:white; } .dijitMenuItem{ text-align: left; white-space: nowrap; padding:.1em .2em; } .dijitMenuItemHover { cursor:pointer; cursor:hand; background-color:black; color:white; } .dijitMenuItemIcon { position: relative; background-repeat: no-repeat; } .dijitMenuItemDisabled * { /* for a disabled menu item, just set it to mostly transparent */ opacity:0.3; cursor:default; } .dj_ie .dijit_a11y .dijitMenuItemDisabled td, .dj_ie .dijitMenuItemDisabled *, .dj_ie .dijitMenuItemDisabled td { color:gray !important; filter: alpha(opacity=35); } .dijitMenuItemLabel { position: relative; vertical-align: middle; } .dijit_a11y .dijitMenuItemHover .dijitMenuItemLabel { border-width: 1px; border-style: solid; } .dijit_a11y .dijitMenuItemHover { border: 1px #fff dotted !important; } .dijitMenuExpandA11y { display: none; } .dijit_a11y .dijitMenuExpandA11y { display: inline; } /* separator can be two pixels -- set border of either one to 0 to have only one */ .dijitMenuSeparatorTop { height: 50%; margin: 0; margin-top:3px; font-size: 1px; } .dijitMenuSeparatorBottom { height: 50%; margin: 0; margin-bottom:3px; font-size: 1px; } /* the checked menu item */ .dijitCheckedMenuItemIconChar { vertical-align: middle; visibility:hidden; } .dijitCheckedMenuItemIconChecked .dijitCheckedMenuItemIconChar { visibility:visible !important; } .dijit_a11y .dijitCheckedMenuItemIconChar { display:block !important; } /* Tab */ .dijitTabContainerBottom-tabs, .dijitTabContainerTop-tabs, .dijitTabContainerLeft-tabs, .dijitTabContainerRight-tabs { z-index:10; overflow: visible !important; /* so tabs can cover up border adjacent to container */ } .dijitTabContainerBottom-container, .dijitTabContainerTop-container, .dijitTabContainerLeft-container, .dijitTabContainerRight-container { z-index:0; overflow: hidden; border: 1px solid black; } .dijitTabContainerTop-tabs { border-bottom: 1px solid black; } .dijitTabContainerTop-container { border-top: 0px; } .dijitTabContainerLeft-tabs { border-right: 1px solid black; } .dijitTabContainerLeft-container { border-left: 0px; } .dijitTabContainerBottom-tabs { border-top: 1px solid black; } .dijitTabContainerBottom-container { border-bottom: 0px; } .dijitTabContainerRight-tabs { border-left: 1px solid black } .dijitTabContainerRight-container { border-right: 0px; } .dijitTab { position:relative; cursor:pointer; white-space:nowrap; z-index:3; } .dijitTabContainerTop-tabs .dijitTab { top: 1px; /* to overlap border on .dijitTabContainerTop-tabs */ } .dijitTabContainerBottom-tabs .dijitTab { top: -1px; /* to overlap border on .dijitTabContainerBottom-tabs */ } .dijitTabContainerLeft-tabs .dijitTab { left: 1px; /* to overlap border on .dijitTabContainerLeft-tabs */ } .dijitTabContainerRight-tabs .dijitTab { left: -1px; /* to overlap border on .dijitTabContainerRight-tabs */ } .dijitTabContainerTop-tabs .dijitTab, .dijitTabContainerBottom-tabs .dijitTab { /* Inline-block */ display:-moz-inline-box; /* FF2 */ display:inline-block; /* webkit and FF3 */ #zoom: 1; /* set hasLayout:true to mimic inline-block */ #display:inline; /* don't use .dj_ie since that increases the priority */ } .dijitTabInnerDiv { position:relative; } .dijitTab .close { display: inline-block; cursor: default; font-size: small; } /* images off, high-contrast mode styles */ .dijitTab .closeText { display:none; padding: 0 2px; margin: 0 2px; } .dijit_a11y .closeText { display:inline; margin-left:6px; } .dijit_a11y .dijitTab .dijitClosable .closeImage { display:none; } .dijit_a11y .closeText:hover { border:thin solid; } .dijit_a11y .dijitTabChecked { border-style:dashed !important; } .dijit_a11y .dijitTabInnerDiv { border-left:none !important; } .dijitInlineEditor { /* span around an inline-editable value when in edit mode */ position:relative; vertical-align:bottom; } .dj_ie .dijitInlineEditor { vertical-align:middle; } .dijitInlineValue { /* span around an inline-editable value when NOT in edit mode */ } .dijitInlineEditor .dijitButtonContainer { /* div around the buttons -- makes them float below the field */ position:absolute; right:0; overflow:visible; } .dijitInlineEditor .saveButton, .dijitInlineEditor .cancelButton { } /* Tree */ .dijitTreeRow, .dijitTreeContent { white-space: nowrap; } .dijitTreeRow img { /* make the expando and folder icons line up with the label */ vertical-align: middle; } .dijitTreeContent { cursor: default; } .dijitExpandoText { display: none; } .dijit_a11y .dijitExpandoText { display: inline; padding-left: 10px; padding-right: 10px; font-family: monospace; border-style: solid; border-width: thin; cursor: pointer; } .dijitTreeLabel { margin: 0px 4px; } /* Dialog */ .dijitDialog { position: absolute; z-index: 999; padding: 1px; } .dijitDialogFixed div.dijitDialogTitleBar { cursor:default; } .dijitDialogUnderlayWrapper { position: absolute; left: 0; top: 0; z-index: 998; display: none; background: transparent !important; } .dijitDialogUnderlay { background: #eee; opacity: 0.5; } .dj_ie .dijitDialogUnderlay { filter: alpha(opacity=50); } /* images off, high-contrast mode styles */ .dijit_a11y .dijitInputLayoutContainer, .dijit_a11y .dijitDialog { opacity: 1 !important; background-color: white !important; } .dijitDialog .closeText { display:none; /* for the onhover border in high contrast on IE: */ position:absolute; } .dijit_a11y .dijitDialog .closeText { display:inline; } .dijitSliderMoveable { z-index:99; position:absolute !important; display:block; vertical-align:middle; } .dijitSliderMoveableH { right:0; } .dijit_a11y div.dijitSliderImageHandle, .dijitSliderImageHandle { margin:0; padding:0; position:absolute !important; border:8px solid gray; width:0; height:0; } .dijit_a11y .dijitSliderFocused .dijitSliderImageHandle { border:4px solid #000; height:8px; width:8px; } .dijitSliderImageHandleV { top:-8px; left:-6px; } .dijitSliderImageHandleH { left:-8px; top:-5px; vertical-align:top; } .dijitSliderBar { border-style:solid; border-color:black; } .dijitSliderBarContainerV { position:relative; height:100%; z-index:1; } .dijitSliderBarContainerH { position:relative; z-index:1; } .dijitSliderBarH { height:4px; border-width:1px 0; } .dijitSliderBarV { width:4px; border-width:0 1px; } .dijitSliderProgressBar { background-color:red; z-index:1; } .dijitSliderProgressBarV { position:static !important; height:0%; vertical-align:top; text-align:left; } .dijitSliderProgressBarH { position:absolute !important; width:0%; vertical-align:middle; overflow:visible; } .dijitSliderRemainingBar { overflow:hidden; background-color:transparent; z-index:1; } .dijitSliderRemainingBarV { height:100%; text-align:left; } .dijitSliderRemainingBarH { width:100% !important; } /* the slider bumper is the space consumed by the slider handle when it hangs over an edge */ .dijitSliderBumper { overflow:hidden; z-index:1; } .dijitSliderBumperV { width:4px; height:8px; border-width:0 1px; } .dijitSliderBumperH { width:8px; height:4px; border-width:1px 0; } .dijitSliderBottomBumper, .dijitSliderLeftBumper { background-color:red; } .dijitSliderTopBumper, .dijitSliderRightBumper { background-color:transparent; } .dijitSliderDecorationH { text-align:center; } .dijitSlider .dijitSliderButton { font-family:monospace; margin:0; padding:0; display:block; } .dijit_a11y .dijitSliderButtonInner { visibility:visible !important; } .dijitSliderButtonContainer { text-align:center; height:0; } .dijitSlider .dijitButtonNode { padding:0; display:block; } .dijitRuleContainer { position:relative; overflow:visible; } .dijitRuleContainerV { height:100%; line-height:0; float:left; text-align:left; } .dj_opera .dijitRuleContainerV { line-height:2%; } .dj_ie .dijitRuleContainerV { line-height:normal; } .dj_gecko .dijitRuleContainerV { margin:0 0 1px 0; /* mozilla bug workaround for float:left,height:100% block elements */ } .dijitRuleMark { position:absolute; border:1px solid black; line-height:0; height:100%; } .dijitRuleMarkH { width:0; border-top-width:0 !important; border-bottom-width:0 !important; border-left-width:0 !important; } .dijitRuleLabelContainer { position:absolute; } .dijitRuleLabelContainerH { text-align:center; display:inline-block; } .dijitRuleLabelH { position:relative; left:-50%; } .dijitRuleMarkV { height:0; border-right-width:0 !important; border-bottom-width:0 !important; border-left-width:0 !important; width:100%; left:0; } .dj_ie .dijitRuleLabelContainerV { margin-top:-.55em; } /* Toolbar A11y */ .dijit_a11y .dijitButtonContents .dijitButtonText { display: inline !important; } .dijitTextArea { width:100%; overflow: auto; /* w/out this IE's SimpleTextArea goes to overflow: scroll */ } .dijitTextArea > DIV { text-decoration:none; overflow:auto; min-height: 1.40em; } .dj_ie .dijitTextArea p { margin-top:0; margin-bottom:0; line-height: normal !important; } .dijitToolbarSeparator { height: 18px; width: 5px; padding: 0 1px; margin: 0; } /* Editor */ .dijitIEFixedToolbar { position:absolute; /* top:0; */ top: expression(eval((document.documentElement||document.body).scrollTop)); } /* TimePicker */ .dijitTimePickerItemInner { text-align:center; border:0; padding:2px 8px 2px 8px; } .dijitTimePickerTick, .dijitTimePickerMarker { border-bottom:1px solid gray; } .dijitTimePicker .dijitDownArrowButton { border-top: none !important; } .dijitTimePickerTick { color:#CCC; } .dijitTimePickerMarker { color:black; background-color:#CCC; } .dijitTimePickerItemSelected { font-weight:bold; color:#333; background-color:#b7cdee; } .dijitTimePickerItemHover { background-color:gray; color:white; cursor:pointer; } .dijit_a11y .dijitTimePickerItem { border-bottom:1px solid #333; } /* Disable the high contrast character */ .dijitToggleButtonIconChar { display:none !important; } .dijit_a11y .dijitToggleButtonIconChar { display:inline !important; } .dijit_a11y .dijitToggleButtonIconChar { visibility:hidden; } .dijit_a11y .dijitToggleButtonChecked .dijitToggleButtonIconChar { visibility:visible !important; } .dijitArrowButtonChar { display:none !important; } .dijit_a11y .dijitArrowButtonChar { display:inline !important; } .dijitInputLayoutContainer { position: relative; overflow: hidden; } .dijitSpinnerButtonContainer { float: right; width: 18px; position: relative; overflow: hidden; } .dijitSpinner .dijitInputLayoutContainer .dijitArrowButton { height: 50%; width: 16px; overflow: hidden; } .dijitSpinner .dijitInputLayoutContainer .dijitArrowButtonInner { overflow: hidden; line-height: 50%; } .dijit_a11y .dijitSpinner .dijitInputLayoutContainer .dijitArrowButton { width: 100%; } .dijit_a11y .dijitSpinner .dijitArrowButton .dijitArrowButtonChar { font-size: 0.4em; vertical-align: top; } .dijit_a11y .dijitSpinnerButtonContainer { width: 0.5em; margin-left: 2px; overflow: visible; } .dijit_a11y .dijitSpinnerButtonContainer .dijitButtonNode { border-width: 1px 0px 0px 1px; border-style: solid !important; } ����������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000161�00000000000�011563� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/themes/soria/����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/t0000755�0000000�0000000�00000000000�11360615644�027225� 5����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000171�00000000000�011564� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/themes/soria/Menu.css��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/t0000644�0000000�0000000�00000003200�11360615632�027217� 0����������������������������������������������������������������������������������������������������ustar �������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������� /* Menu */ .soria .dijitMenu { border: 1px solid #cbcbcb; margin: 0px; padding: 0px; background-color: #fff; } .soria .dijitMenuItem { background-color: #fff; font-family: sans-serif; margin: 0px; color: #243C5F; } .soria .dijitMenuPreviousButton, .soria .dijitMenuNextButton { font-style: italic; } .soria .dijitMenuItem TD { padding:1px; } .soria .dijitMenuItemHover { background-color: #d9e6f9; /* #95a0b0; #555555; #aaaaaa; #646464; #60a1ea; #848484; */ color: #243C5F; } .soria .dijitMenuItemIcon { width: 15px; height: 15px; /* padding-right: 3px; */ } .soria .dijitMenuExpand { /* margin-top:4px; */ width:15px; height:15px; background-image: url('images/spriteRoundedIconsSmall.png'); background-repeat: no-repeat; background-position: -30px top; display:block; } .dj_ie6 .soria .dijitMenuExpand { background-image: url('images/spriteRoundedIconsSmall.gif'); } .soria .dijitMenuSeparator { background-color: #fff; height: 1px; } /* separator can be two pixels -- set border of either one to 0px to have only one */ .soria .dijitMenuSeparatorTop { border-bottom: 1px solid #fff; /*97adcb; */ } .soria .dijitMenuSeparatorBottom { border-top: 1px solid #8ba0bd; } /* the checked menu item */ .soria .dijitCheckedMenuItemIconChar { display: none; } .soria .dijitCheckedMenuItemIcon { background-image: url('images/spriteCheckbox.gif'); background-position: -16px; } .soria .dijitCheckedMenuItemIconChecked { background-position: 0px; } .soria .dijitMenuItemHover .dijitCheckedMenuItemIcon { background-position: -80px; } .soria .dijitMenuItemHover .dijitCheckedMenuItemIconChecked { background-position: -64px; }������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000175�00000000000�011570� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/themes/soria/Menu_rtl.css����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/t0000644�0000000�0000000�00000000302�11360615636�027223� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* Menu */ .dijitRtl .soria .dijitMenuItem .dijitMenuItemIcon { padding-left: 3px; padding-right: 0px; } .dijitRtl .soria .dijitMenuItem .dijitMenuExpand { background-position: left top; } ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000173�00000000000�011566� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/themes/soria/Editor.css������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/t0000644�0000000�0000000�00000006716�11360615636�027242� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������.dijitIEFixedToolbar { position:absolute; /* top:0; */ top: expression(eval((document.documentElement||document.body).scrollTop)); } .soria .dijitToolbar .dijitToolbarSeparator { background: url('images/editor.gif'); } /**** ICONS *****/ .soria .dijitEditorIcon { background-image: url('images/editor.gif'); /* editor icons sprite image */ background-repeat: no-repeat; width: 18px; height: 18px; text-align: center; } .soria .dijitDisabled .dijitEditorIcon { background-image: url('images/editorDisabled.gif'); /* editor icons sprite image */ } .soria .dijitEditorIconSep { background-position: 0px; } .soria .dijitEditorIconBackColor { background-position: -18px; } .soria .dijitEditorIconBold { background-position: -36px; } .soria .dijitEditorIconCancel { background-position: -54px; } .soria .dijitEditorIconCopy { background-position: -72px; } .soria .dijitEditorIconCreateLink { background-position: -90px; } .soria .dijitEditorIconCut { background-position: -108px; } .soria .dijitEditorIconDelete { background-position: -126px; } .soria .dijitEditorIconForeColor { background-position: -144px; } .soria .dijitEditorIconHiliteColor { background-position: -162px; } .soria .dijitEditorIconIndent { background-position: -180px; } .soria .dijitEditorIconInsertHorizontalRule { background-position: -198px; } .soria .dijitEditorIconInsertImage { background-position: -216px; } .soria .dijitEditorIconInsertOrderedList { background-position: -234px; } .soria .dijitEditorIconInsertTable { background-position: -252px; } .soria .dijitEditorIconInsertUnorderedList { background-position: -270px; } .soria .dijitEditorIconItalic { background-position: -288px; } .soria .dijitEditorIconJustifyCenter { background-position: -306px; } .soria .dijitEditorIconJustifyFull { background-position: -324px; } .soria .dijitEditorIconJustifyLeft { background-position: -342px; } .soria .dijitEditorIconJustifyRight { background-position: -360px; } .soria .dijitEditorIconLeftToRight { background-position: -378px; } .soria .dijitEditorIconListBulletIndent { background-position: -396px; } .soria .dijitEditorIconListBulletOutdent { background-position: -414px; } .soria .dijitEditorIconListNumIndent { background-position: -432px; } .soria .dijitEditorIconListNumOutdent { background-position: -450px; } .soria .dijitEditorIconOutdent { background-position: -468px; } .soria .dijitEditorIconPaste { background-position: -486px; } .soria .dijitEditorIconRedo { background-position: -504px; } .soria .dijitEditorIconRemoveFormat { background-position: -522px; } .soria .dijitEditorIconRightToLeft { background-position: -540px; } .soria .dijitEditorIconSave { background-position: -558px; } .soria .dijitEditorIconSpace { background-position: -576px; } .soria .dijitEditorIconStrikethrough { background-position: -594px; } .soria .dijitEditorIconSubscript { background-position: -612px; } .soria .dijitEditorIconSuperscript { background-position: -630px; } .soria .dijitEditorIconUnderline { background-position: -648px; } .soria .dijitEditorIconUndo { background-position: -666px; } .soria .dijitEditorIconWikiword { background-position: -684px; } .soria .dijitEditorIconToggleDir { background-position: -540px; /* padding: 0; margin: 0; color:#555555; font-family:verdana,arial,sans-serif; font-weight: 800; font-size: 70%; */} .soria .dijitEditorIconTabIndent { background-position: -702px; } .soria .dijitEditorIconSelectAll { background-position: -720px; } .soria .dijitEditorIconUnlink { background-position: -738px; }��������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000175�00000000000�011570� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/themes/soria/Calendar.css����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/t0000644�0000000�0000000�00000006627�11360615642�027240� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* Calendar*/ .soria .dijitCalendarIncrementControl { /* next/prev month buttons */ width:15px; height:15px; background-image: url("images/spriteRoundedIconsSmall.png"); background-repeat: no-repeat; } .dj_ie6 .soria .dijitCalendarIncrementControl { font-size:.1em; background-image: url("images/spriteRoundedIconsSmall.gif"); } .soria .dijitCalendarIncreaseInner, .soria .dijitCalendarDecreaseInner { visibility:hidden; } .soria .dijitCalendarDecrease { background-position: top left; } .soria .dijitCalendarIncrease { background-position: -30px top; } .soria table.dijitCalendarContainer { font-size: 100%; border-spacing: 0; border-collapse: separate; border: 1px solid #b1badf; margin: 0; } .soria .dijitCalendarMonthContainer th { /* month header cell */ background:#bed7f0 url("images/titleBar.png") repeat-x top; padding-top:.3em; padding-bottom:.2em; text-align:center; } .dj_ie6 .soria .dijitCalendarMonthContainer th { padding-top:.2em; padding-bottom:.1em; } .soria .dijitCalendarDayLabelTemplate { /* day of week labels */ background:#bed7f0; font-weight:normal; padding-top:.15em; padding-bottom:.2em; border-bottom: 1px solid #b1badf; color:#293a4b; text-align:center; } .soria .dijitCalendarBodyContainer { border-bottom: 1px solid #eeeeee; } .soria .dijitCalendarMonthLabel { color:#293a4b; font-weight: bold; } .soria .dijitCalendarDateTemplate { /* style for each day cell */ font-size: 0.9em; font-weight: bold; text-align: center; padding: 0.3em 0.3em 0.05em 0.3em; letter-spacing: 1px; background-color: #fff; border:#fff solid 1px !important; } .dj_ie .soria .dijitCalendarDateTemplate { padding: 0.1em .33em 0.02em .33em; } .soria .dijitCalendarPreviousMonth, .soria .dijitCalendarNextMonth { /* days that are part of the previous or next month */ color:#999999; background-color:#fdfdfd !important; border:#fdfdfd solid 1px !important; } .soria .dijitCalendarPreviousMonthDisabled, .soria .dijitCalendarNextMonthDisabled { /* days that are part of the previous or next month - disabled*/ background-color:#a4a5a6 !important; } .soria .dijitCalendarCurrentMonth { /* days that are part of this month */ } .soria .dijitCalendarCurrentMonthDisabled { /* days that are part of this month - disabled */ background-color:#bbbbbc !important; } .soria .dijitCalendarDisabledDate { /* one or the other? */ /* background: url(images/noX.gif) no-repeat center center !important; */ text-decoration:line-through !important; cursor:default !important; } .soria .dijitCalendarCurrentDate { /* cell for today's date */ text-decoration:underline; font-weight:bold; } .soria .dijitCalendarSelectedDate { /* cell for the selected date */ background-color:#b9cbf1 !important; color:black !important; border:#4b5aaa solid 1px !important; } .soria .dijitCalendarYearContainer { /* footer of the table that contains the year display/selector */ background:white url("images/titleBar.png") repeat-x top; } .soria .dijitCalendarYearLabel { /* container for all of 3 year labels */ margin:0; padding:0.4em 0 0.25em 0; text-align:center; } .soria .dijitCalendarSelectedYear { /* label for selected year */ color:black; padding:0.2em; padding-bottom:0.1em; background-color:#b9cbf1 !important; border:#4b5aaa solid 1px !important; } .soria .dijitCalendarNextYear, .soria .dijitCalendarPreviousYear { /* label for next/prev years */ color:black !important; font-weight:normal; }���������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000171�00000000000�011564� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/themes/soria/Tree.css��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/t0000644�0000000�0000000�00000003365�11360615632�027233� 0����������������������������������������������������������������������������������������������������ustar �������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������� /* Tree */ .soria .dijitTreeNode { background : url('images/treeI.gif') no-repeat; background-position : top left; background-repeat : repeat-y; margin-left: 19px; zoom: 1; /* MOW: what the heck is this doing in here? */ } /* left vertical line (grid) for all nodes */ .soria .dijitTreeIsLast { background: url('images/treeI_half.gif') no-repeat; } .soria .dijitTreeLabel { font-weight: normal; margin-left: 3px; } .soria .dijitTreeIsRoot { margin-left: 0; background-image: none; } .soria .dijitTreeExpando { width: 18px; height: 18px; } .soria .dijitTreeContent { min-height: 18px; min-width: 18px; padding-left:1px; } .soria .dijitTreeExpand { width: 18px; height: 18px; background-repeat : no-repeat; } /* same style as IE selection */ .soria .dijitTreeNodeEmphasized { background-color: Highlight; color: HighlightText; } /* don't use :focus due to opera and IE's lack of support on div's */ .soria .dijitTreeLabelFocused { outline: 1px invert dotted; background:#dde7f2; } .soria .dijitTreeExpandoOpened { background: url('images/spriteTree.gif') no-repeat -18px top; } .soria .dijitTreeExpandoClosed { background-image: url('images/spriteTree.gif'); } .soria .dijitTreeExpandoLeaf { background: url('images/spriteTree.gif') no-repeat -36px top; } .soria .dijitTreeExpandoLoading { background-image: url('images/treeExpand_loading.gif'); } .soria .dijitTreeIcon { width: 16px; height: 16px; } .soria .dijitFolderOpened { background: url('images/spriteDivIcons.gif') no-repeat -16px top; } .soria .dijitFolderClosed { background: url('images/spriteDivIcons.gif') no-repeat top left; } .soria .dijitLeaf { background: url('images/spriteDivIcons.gif') no-repeat -32px top; }���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000172�00000000000�011565� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/themes/soria/soria.css�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/t0000644�0000000�0000000�00000002324�11360615636�027231� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* Adds cosmetic styling to Dijit. Users may swap with a custom theme CSS file. NOTES: --- Dialog.css contains css classes for both Dialog and Tooltip! This because currently a dijit.TooltipDialog exist. Until this is resolved you need to include Dialog.css for both dijits --- Toolbar.css contains classes also used in Editor. Until this is resolved you need to include Toolbar.css for both Toolbar and Editor --- Button.css contains classes for combobox, */ @import url("../dijit.css"); @import url("Common.css"); @import url("layout/ContentPane.css"); @import url("layout/TabContainer.css"); @import url("layout/AccordionContainer.css"); @import url("layout/SplitContainer.css"); @import url("layout/BorderContainer.css"); @import url("form/Common.css"); @import url("form/Button.css"); @import url("form/ComboBox.css"); @import url("form/Checkbox.css"); @import url("form/RadioButton.css"); @import url("form/Slider.css"); @import url("Tree.css"); @import url("ProgressBar.css"); @import url("TitlePane.css"); @import url("Calendar.css"); @import url("TimePicker.css"); @import url("Toolbar.css"); @import url("Dialog.css"); @import url("Menu.css"); @import url("Editor.css"); @import url("ColorPalette.css");������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000173�00000000000�011566� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/themes/soria/Dialog.css������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/t0000644�0000000�0000000�00000010275�11360615634�027233� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* Dialog */ .soria .dijitDialog { background: #eee; border: 1px solid #cbcbcb; -webkit-box-shadow: 0px 5px 10px #adadad; padding: 0px; } .soria .dijitDialog .dijitDialogTitle { border-top: none; border-left: none; border-right: none; font-size: 0.9em; color: #3243C5F; } .soria .dijitDialog .dijitDialogPaneContent { background: #ffffff; border:none; border-top: 1px solid #b1badf; /* w/out this, an <h1> on the top line causes a gap between the .content and .label */ padding:10px; } .soria .dijitDialogTitleBar { /* outer container for the titlebar of the dialog */ background: #fafafa url("images/titleBar.png") repeat-x top left; padding: 5px 6px 3px 6px; cursor: move; outline:0; /* remove this line if keyboard focus on dialog startup is an issue. tab still takes you to first focusable element */ } .soria .dijitDialogTitle { /* typography and styling of the dialog title */ font-weight: bold; padding: 4px; outline:0; } .soria .dijitDialogCloseIcon { /* the default close icon for the dialog */ background : url("images/spriteRoundedIconsSmallBl.png") no-repeat right top; position: absolute; vertical-align: middle; right: 6px; top: 4px; height: 15px; width: 15px; cursor: pointer; } .dj_ie .soria .dijitDialogCloseIcon { background : url("images/spriteRoundedIconsSmallBl.gif") no-repeat right top; } .soria .dijitDialogContent { /* the body of the dialog */ padding: 8px; } /* Tooltip and TooltipDialog */ .soria .dijitTooltip, .soria .dijitTooltipDialog { /* the outermost dom node, holding the connector and container */ background: transparent; /* make the area on the sides of the arrow transparent */ } .dijitTooltipBelow { /* leave room for arrow above content */ padding-top: 10px; } .dijitTooltipAbove { /* leave room for arrow below content */ padding-bottom: 10px; } .soria .dijitTooltipContainer { /* The part with the text. NOTE: FF doesn't clip images used as CSS bgs if you specify a border radius. If you use a solid color, it does. Webkit gets it right. Sigh. background: #ffffff url("images/popupMenuBg.gif") repeat-x bottom left; */ background-color: #fff; border:1px solid #cbcbcb; padding:0.45em; } .soria .dijitTooltipConnector { /* the arrow piece */ border:0px; z-index: 2; } .soria .dijitTooltipABRight .dijitTooltipConnector { /* above or below tooltip, but the arrow appears on the right, and the right edges of target and tooltip are aligned rather than the left */ left: auto !important; right: 6px; } .soria .dijitTooltipBelow .dijitTooltipConnector { /* the arrow piece for tooltips below an element */ top: 0px; left: 6px; background:url("images/tooltipConnectorUp.png") no-repeat top left; width:17px; height:11px; } .dj_ie .soria .dijitTooltipBelow .dijitTooltipConnector { background-image: url("images/tooltipConnectorUp.gif"); } .soria .dijitTooltipAbove .dijitTooltipConnector { /* the arrow piece for tooltips above an element */ bottom: 0px; left: 6px; background:url("images/tooltipConnectorDown.png") no-repeat top left; width:17px; height:11px; } .dj_ie .soria .dijitTooltipAbove .dijitTooltipConnector { background-image: url("images/tooltipConnectorDown.gif"); } .dj_ie6 .soria .dijitTooltipAbove .dijitTooltipConnector { background-image: url("images/tooltipConnectorDown.gif"); bottom: -5px; } .soria .dijitTooltipLeft { padding-right: 10px; } .dj_ie6 .soria .dijitTooltipLeft { padding-left: 11px; } .soria .dijitTooltipLeft .dijitTooltipConnector { /* the arrow piece for tooltips to the left of an element, bottom borders aligned */ right: 0px; bottom: 3px; background:url("images/tooltipConnectorRight.png") no-repeat top left; width:11px; height:17px; } .dj_ie .soria .dijitTooltipLeft .dijitTooltipConnector { background-image: url("images/tooltipConnectorRight.gif"); } .soria .dijitTooltipRight { padding-left: 10px; } .soria .dijitTooltipRight .dijitTooltipConnector { /* the arrow piece for tooltips to the right of an element, bottom borders aligned */ left: 0px; bottom: 3px; background:url("images/tooltipConnectorLeft.png") no-repeat top left; width:11px; height:17px; } .dj_ie .soria .dijitTooltipRight .dijitTooltipConnector { background-image: url("images/tooltipConnectorLeft.gif"); } �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000177�00000000000�011572� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/themes/soria/Editor_rtl.css��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/t0000644�0000000�0000000�00000000614�11360615642�027226� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* Editor */ .dijitRtl .soria .dijitEditorIcon { background-image: url('images/editor_rtl.gif'); /* editor icons sprite image */ } .dijitRtl .soria .dijitDisabled .dijitEditorIcon { background-image: url('images/editorDisabled_rtl.gif'); /* editor icons sprite image */ } /* Toolbar */ .dijitRtl .soria .dijitToolbar .dijitToolbarSeparator { background-image: url('images/editor_rtl.gif'); } ��������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000176�00000000000�011571� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/themes/soria/soria_rtl.css���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/t0000644�0000000�0000000�00000001607�11360615636�027234� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* Adds cosmetic styling to Dijit. Users may swap with a custom theme CSS file. NOTES: --- Dialog.css contains css classes for both Dialog and Tooltip! This because currently a dijit.TooltipDialog exist. Until this is resolved you need to include Dialog.css for both dijits --- Toolbar.css contains classes also used in Editor. Until this is resolved you need to include Toolbar.css for both Toolbar and Editor --- Button.css contains classes for combobox, */ @import url("../dijit_rtl.css"); @import url("layout/TabContainer_rtl.css"); @import url("layout/AccordionContainer_rtl.css"); @import url("form/Slider_rtl.css"); @import url("form/Button_rtl.css"); @import url("form/Common_rtl.css"); @import url("Tree_rtl.css"); @import url("TitlePane_rtl.css"); @import url("Calendar_rtl.css"); @import url("Dialog_rtl.css"); @import url("Menu_rtl.css"); @import url("Editor_rtl.css");�������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000170�00000000000�011563� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/themes/soria/images/���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/t0000755�0000000�0000000�00000000000�11360615646�027227� 5����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000204�00000000000�011561� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/themes/soria/images/titleBar.png���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/t0000644�0000000�0000000�00000000257�11360615634�027232� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������‰PNG  ��� IHDR������0���´f<Õ���tEXtSoftware�Adobe ImageReadyqÉe<���QIDATxÚÔQ €0 Cã܇Þÿ˜‚‚2ÖØ6Âv¡ðx!¡Ëq€z7ÈDD ÆÉúWºaXqó 4¿ž¦œ-QòëOQ÷mu¼ �wÂ3Ü%����IEND®B`‚�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000210�00000000000�011556� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/themes/soria/images/buttonActive.png�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/t0000644�0000000�0000000�00000000273�11360615642�027227� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������‰PNG  ��� IHDR������d���Ì» ���tEXtSoftware�Adobe ImageReadyqÉe<���]IDATxÚì“M €@F?'ï¾жÅ´J•@è«ÇóoõÑ~\ î§â)6ƒ“¾ˆŠŧ£âÖ­×HÊ9‹öí4¯8µX˜4éçÄ"‘DY´À38�àF2 zåÈý����IEND®B`‚�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000216�00000000000�011564� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/themes/soria/images/preciseSliderThumb.png�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/t0000644�0000000�0000000�00000000635�11360615632�027230� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������‰PNG  ��� IHDR��� ������Í£õ9���tEXtSoftware�Adobe ImageReadyqÉe<��?IDATxÚ„S;n„@ >é¸ âFÔÙ$J·MΖM"m‘P¤æ [ QDihpâ£(|â7ÚAÃì®bÉòØãçgFó<Y–µcŒmØÿòÔ4Íyt6®ëòÃ4M\…èºÎâû> ß™r™aØ8Ž' Ã0˜i.©WËižg®*1�ab˜jÓI’œ â8ÎÊ_PѶmΆʚ¦ñÖÄLgAH ö"H°© UL™E ¬™Dµ¥U7âKAÀ@M†8î‰ýB#a5êº~Œ¢hÅ$ ^UÕsÛ¶÷ØeJn‹¢Ø§iºb‚Ÿçù;Èí&Ivq³²,9 ,|Ú=Ýu`‘gl_Ôÿõáp`Y–1XÚÇmß÷Ÿtý‹/qöõøBæ; Ã[bxíºîƒüü�"çO€�ḭzšZˤ����IEND®B`‚���������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000216�00000000000�011564� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/themes/soria/images/tooltipConnectorUp.png�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/t0000644�0000000�0000000�00000000477�11360615640�027233� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������‰PNG  ��� IHDR������ ���™ f���tEXtSoftware�Adobe ImageReadyqÉe<���áIDATxÚb<}ú4 Ä™@<ˆïãRÄ„Ç�QFFÆ{222¥ È"Ç:III 0‚FR )åááÉRRR ÜÜÜ9 qb ±gffîRTTd�z,�¢•””˜˜˜º€\Kb É”——g`ggGñAâЀÆkH—°°p¸ö0Ê1�åbAêp’�´­jN   �r(lbÑ ‘ú{>Ôßx ÉCÃkH²!ÕÐ` �cc@P"X@ðòòf¢“X�J;Ÿ>}ÊùüùóS€��VK!½`�ñ����IEND®B`‚�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000203�00000000000�011560� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/themes/soria/images/dndMove.png����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/t0000644�0000000�0000000�00000001326�11360615636�027232� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������‰PNG  ��� IHDR���������óÿa���sRGB�®Îé���tEXtSoftware�Adobe ImageReadyqÉe<��kIDAT8Ë“_H“QÆŸÏmŠbi©Ò‹iäTh n¢V²¡‚eÚ$S‹Ê`) ®‚‚LMAœÒE⿼°Â(+ˆLñ_ÔUE[BzÕßÓ9ß6â…ïáá}¿sÎóûÞïãD@†DHY"ìèÊ­3z.4§Ô‘ºDO¤b-#x¿Ôj!¼QgЧ÷'?sp±ÍóÙðç>Ûÿ¶r`¾‡®g—Ômåè{uA>@1À°£R™{ýs˜õ¿î²bÆÁs3嬘v°îûMºw°jö4ߪÙð¥žñ•ºÙ�ÑN`K úKÆŠX6~’Åc…tÍ]§ UŒâ¹d¢HS v}ºÊèRôj�CBHfµ»ŒlÌ{—Ë+“NBŽŽfkkRÇFs´œÿÑF{“EÕïCÂ,ŠûÁ{Lu˜¥ï‹`~‘ʬ‘tMæ—iþ:ƒoòž…NqÞó³U,±q£P×eu™©Ï“™6œÂÝÕ[=0ß>Èœ·Vn6$$¡g/÷÷%0ör8ar`ʰ‰ÓK›ÄtmgìÓF^Ô»ÎFy‡ŒTj• !S‹ãœZZ•<#†6=C; uÀÅ„î”CDR²¢ª*Q*5Ê¡D+¨OC”°î¹ï›l^ ‘íâ|kRþÜ& 7DŽƒH†3%1²ðoAkW3µúÕ”3Ñ/�þˆD˜˜øÑ®Ñ%Hií6 =Vh²ûLm~s6æäÝY¹L+щީӌh÷zí ]¼Yç3¯¿¾Ï‰ƒIèF>¼(†SB…¢N‚1¢O›okÀ÷p?¬bŒÿ����IEND®B`‚����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000202�00000000000�011557� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/themes/soria/images/editor.gif�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/t0000644�0000000�0000000�00000007573�11360615632�027240� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������GIF89aô�æ�Që9YÆAn¾ÍÒÌ?£>SLI5™4³Äíw’Ü,+ÌÙõóóó¥¢ ¯ @@@111ÑllÆüüüƒƒ‚ÝÝÝQƒÊGh̘ʘržëÿ±°wvoR„ʽ½¼`†ïøùùêïúQqÑb~ÔÉÇÆM±Lööö…¥é«¹ÛîíícedbÆai˜êÿÌÌ—­äU~Ú‡·ˆýä1zèá>>Áº{ µêõøýu¨zÿÊ#ßåök´興çÁÁÖŽŽN¥ímÊòÐHH«¤eo޳žØŠ³Ü$WìÊ--t²]�ÿl—¥ýò•ÊÉ‚ƒÆ'öë÷ºÅدЮtœËûüþïí%Lwõ øÐË·ùXvÒö žâ�ZœMrÔ˜ÀÉOÙcí.Ô�êÿÖÞþû:tÜ̑ВÈQ¶|²WÌÉEüúذ-ev£Ê•¼ý÷÷ì­ð¹çÏÚAAE†ãÖQ|ûœÿkŽüúíìÍÓæ”骽•À­“ÿÍ´Í€ÿƒRƒÊ†”¾×•ÿÒÍ�óýççç'Œ&ÿÿÿÿÿÿ!ù���,����ô��ÿ€‚‚…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ ¡¢£‹HH¤¨©ª«†„¬ ±²²œ ¹¹~¯¾¿ÀÁÂÃÄÅÆ›6¦§ÇÌÍ·º»½Š®Ì ~ØÙ~×µ‡ßàß‹·LL&ê ’ÕÎòˆ�óö÷£õú©Pø(Ùx‘lYÀƒ¿È™C§Î;wˆâEò³DÇ1bæÔY2 Q� C�1Q (SJ¸&¡[!Ú° XD‚5M.\Pp€…$Þ)ÊaE"Dø,¢h£Fމ˜^̸±£=�ü1ØÊµ«W—�t°d$ˆ'U…Ki­$¬ûÿ²‚*@×”è2RÀWÁ AVALS� ˆ'ø‚ &"E–%WPäC—M»ÑWA¢' @š8Tv$ZA^Sou)hC×bop=»B¡š7sîìù3hDJ~€“fÊ”#‚|l¹sß!X:©%”OXÃŒ93‘„ t_pÑä� @â@tO‘vÊAd=¢àËO¾\³pâÆ!§sôaàöq‰j ²ÆO‚R�Vha…¸�ú@¨ #,ðd"M¤`â#Ph€ ´Ø¢!&ƈ"Š*®Xˆ1žH#+¾(È9ÎXáŠ,b²a‡Hÿ‡‚x¨Èƒ e’Be„$!ƒ]wý“D(‚Ád~ñÆ$¬ ¦š†pƉ�cŽe™s}J=•ÐW�˜ý¹ÈC|A&‰Xp€Òâz ¢AL”jÀÚP“m|žNã•w^zö B g á†yÐqÄ%áf`qÀ­Ì€€‘ Ò€Àë³S8t‡ˆ|Ü�êx.PC @à1k#|m ²-‰< î¸ãº «¬‡ ª*«æÆzm!WVIɤšÆdi!XU–È„öK@†…¸UÉ®,„ ˆ|$¬ð "Ã+ìpÄOL1ÿÃ""OÒñ#ù2r%ñþ‘¥–ä> ƒ `&òF¾X‘éÙ#i®ÁÍt[ˆÆ@r<K§ €fÀ à:C  Ðë'Q$¤‡(R" :ÌgB°Á…Ð[¯÷²µÑvÇl~pʬ³ ºí´Õ¾ûG¶ŽèÐFH¤±ÄÇ•�„RÏPt!A|4  ”{àƒ$4`l6á„cÈq8k÷´Ya7f,€Qðå0߆ìÀíï).帓°À„Ãzø!~.xï†#ŽHÉ–LzÅòÌ· Ä B”€ö¥ Ù`Ÿ À›X�vØiU"ÿÏô>ÉWšüåÊì³üe˜‡Ð�@ %”ÐB¡-è£o!d`3΃9DÏÈgˆ>½‰'·w‰�(î#CÄÑ@pˆ¤1PJRê�™èg?�Ð@l»zš÷àd³iƒ�Ø@Ú ‘©LQjmèDçҙΨSÝ!`—øð‡>,„zЃ,H ôCL@AC4 ²óÁø@äBs/ñ8(¥¬?,à�|¨¡Ý²À‚8aZfø�""PøÀƒ‡…Ð|ˆ,‚\| — †XDA�ˆB$¢Q(ï ßh�„ \©ÐAÕ$'IÉIr/PÔÁ#¹(ÿ‰ÑŽ:é"C©““è¤'}„¯¬T¨|ÁØŸ#d‰ˆB:¢�ìë8àgù•à/˜�¾À†"¢ÿ»Yÿt&ˆR¨€šN††€j"�H”„þ°ÍEl³›‹p ¼öÀCä‹ _�À Ôxƒx4!€”‘Él²l …°±BA´p6°¡ ÛdF1º€ŒfDã<[ PÊ…ðÈ0©•@ ÈhhJà½éœ rôvðÑ`Q@M¶£..€ |©ÁA¡gFÔ u‡€ ˆ’ƒ7útp€ñ� <Àv‚(EýøÐˆN´¢„´e’ ‘£Ì(Eªÿ,¡УH8A¨ŸôVȧG@X"VZƒuÉEi&°ÀBA±D\ c…¨˜$ê M~¼Ò|Šp+ÇÄòZ..€-›ä$\®Œ¥œãe!äw€É��lPAö‡LœåÌÌ„å+¥„XCü,!HÓ¬i "©’H°%"`ûÚ:"�B [!BP‚ þ�=àA1ðAA\¶¸…Ȥ ¨PYã‚ ®sÕ@>ýE€'ôSlÓT¦î C˜*@¦9ˆÁjZƒ¬á7p@4rѤJA PÅŒbS‚ØÊ£'Èï à³€üšÔX Ø"²\ê&L@(@0œp`$˜…`ÿNÿÀÆG >ð‘O# ‚%¢ï…ªz×ÛÞ?x!Ä…P¬Š 9ÕNݵaeóCІ0!VŒ<£uY5Æ&HBÑ.„¬‹KÉÇQw>JÀlg“ ¥ßNyD²“Ì ¯*ÿaÅŠ¥r”+ƒ”VG�’ ¢Ð\5oˆ=ÐB": @Ð"™­,m!N[†ÔÚà«õm$žEèBë$àlD¢ÃYð½E„‚«‚wâ�Qð�",„è| (“c¬ONï0”MÞæšz±À †@ à„Ä fhz!Vb9A .š Z §€€rubÂNÿ0€øàÙ ;é`@–' ð¶’_>LÀÁýÁ·`¢è@¬³0‰@»:n˜È€!| l?òºôvTµ¬¤ä=�/‚hèÔ¤5¬ À†;üáo+a)�*›¤ü¤ÆAYˆSªRㆠR‹¨dÊ!õhãæÔ37W¾ÁÂå‡U9Èdžˆ0wyÌ2øA™Iž§9Ÿ náçczV™vž-Ëó,Á7  }¶Á¢½‰aÛÈö¦laÛFüLl¬5Ĥƒ›�ÌA¨€€O â/¡¦Lpž œZ€ ¶Í€nß>ˆ¸Q@îÿBÀñ€âï€.tÁFˆ¼„}A^‘° Hà“°Á$LÚÓ"8(ÐE˜  H˜ƒQP€ä¥�`� ÁÆ 7‚Ž@ƒ·"€Ôp1àq<ä%ïÇÅ3^ø‘7Âä iH?�üùÇAqPwI`aPXövILX�p´]_œ0C¿üy=¿ùÕM¥ É’X,# ðƒú `½þù0ƒ¿$+rf„1€ÈZ…ð~ï—rM4�u 'a÷ »"hÜ”€‹vß”€Œ�* ~€�*à[Z�3üp303bó}߇à~hBšr]ÿ4Øj1ô¦‡ÿzªç`·æt{³gx qà�V°U„) i‚‡I—ç+@EuDV;@Òf,*e`m† `“z¬Ç'àm߆ 0úGæ¸÷a‚ ;à¢ð{{°G˜„U¾á�Dh„H¨„Lh%éãoV Ѝ‰¸ˆJP} ·pا} Ó}–IX`£ohKç ‘˜¡xsSEö—màmúgv p‚qt9³x€Ÿˆ/ Ø41¨ ؉ݓQ“ñ3�*ð4‹ð<\†WX�@l‰›cÕÙ ƒq£]®&†@† ‡·öwk(ÿY‡g0 ± ˆ\ÀEpŠ¢4 PTŒÐ�W˜V¸: …ŠpáÐ�]ô$`(`…2®{%fl䆌°-ñ;Ànvø{z G¸Ží8 爎êÈŽî˜X6/)TÚ°BQ‰ @.ù’/É�`1q’�)-�þÇ÷Iw–""r†Øb:¹“¬¤“ÀqE“IÉPV“à”P2¦ø�1h¦4à4³&k@‹�JHéuo'ýµ�Aຸ ·2Œ‘Ö”¿µ !`…+TÐ- [ÀÊh7�-~xi7™“¨“ˆ)“‡ÐB¯Ñÿ˜47·aù�kx1ÀºöôC×#)l*0š¤‰q‡yû˜š©¹…/a Ç�0~ ßö…0ââS°—µg{Š@GC•90‹p‡öŸšЙ>”œ"fBI -‰˜‰ Iü&/Æ—Ú©!WæeˆÀXp“¥2~|µ~w…çÙé© GýÖž%Ùcîé‚ Ÿ[”¥XTIz£w•Xi˜‹@€…Ñ ‡PRgYMh H𥠒 Ÿ×D˜I¡0WŒp}i~�˜ €—à)ž‡°Û¹˜w™€A›(ð…•¹0¶»)„©€�‘Øᇡø¨šªÉš(¥K)0 ù�( Ðz a«®Óh@œ‚P‡ˆ0.MF¢$Z+) 0"fÁ‰«Ð¥‚ ¦ô@sq1Šfå’Ô¦šþ!ð¦,§rú¦zy 6z£à'‘`L™°v!a Ö ¡q¡ð_ª °¡j´‡0¤ k;€¤­·•ɤ¦Ò 蘩±�¦œº'òð·‚¡:ªÅ�¤AJª¨Ê  z�j´ª¢ú k aå;”ª¶z«¸š«ºº«¼ê Tp£!F¬À:��;�������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000212�00000000000�011560� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/themes/soria/images/spriteCheckbox.png���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/t0000644�0000000�0000000�00000001303�11360615640�027220� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������‰PNG  ��� IHDR���`������éºzù���tEXtSoftware�Adobe ImageReadyqÉe<��eIDATxÚìXM!Q=E!d´¯¦§'l´¥ŽYJlý� ±˜þÓÉôß°œÞ K ¿@,h‰ˆ #Â!º¯©[ é._¥™W7y’WïwëÜS÷¾çqËåSÎxúÉçóËjµ*äõz¸UÿT|½^_v:Ùx‡Ã·Û}6¼’üE‰D0›ÍÀqœØ¤F™Bçy¤ÓiZ`=v*ž‚çóùdã+• ðlx%ùó« z½jµúàóù|«ªüÇðªm‹I÷…l6‹\.';Ťøc÷éü^¯‡~¿¯˜ÿÿÉ_%Uh:Š*­úµZ ©T ÏÏ…õ³]NߎêïÂ/‹wsÇã1Úí¶(� ÿ¬ùod@¡P@¹\'$ Úäpue’­þ®&Ç(УÑhŒF£!Š@µ“…Öü72 X,"™ü-~uOO¿P*•  …d‡Ú><‘nµZ˜L&h6›‡0™L°X,Lü³æÏ¿]€Òßf³!“Éàññ§ˆ6îîˆÅbâÑmUv½�Ótè%÷á5 ºÝ® À«Ðþ _ž.— Z­–‰Öü72 Ãï÷ i÷··^ÄãqØíöwµù˜¾íù>¼Õj…ÑøI(;/0 Bð?‹¢°òÏšÿ†�f³÷÷ßüD4Åõõ—亻ÒNžj=ù¤²ãt:¡Óé˜úgÍŸß¶ÐÍÍW<üx8ËîX#<Ýãñ(æŸ%ÿµ�”æÛþ@ÈupÁ ϯî&’ÉäQwÒþ)xÚàè´qÌ]Î9ñJòç.·¡ÊšêeíŸ��šˆˆÍÈrÊ����IEND®B`‚�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000225�00000000000�011564� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/themes/soria/images/spriteRoundedIconsSmallBl.png����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/t0000644�0000000�0000000�00000005702�11360615636�027234� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������‰PNG  ��� IHDR���K���-���æã–­���tEXtSoftware�Adobe ImageReadyqÉe<�� dIDATxÚìš{l[ÕÇ¿~ĉãÚIÇvÒ$Í;qÛ’6IЪÐþ1ª¬À¦µ°?&¤ Áûw°I“@•*¤IÀ€i(m%ŠF7`PJ“¦MólR§i¿bÇø}¯}wÎIíø:vâÐÂþñOºrüøÜïïüÎ9÷žóÍ•‚€Bäòlþã’[ˆ.{ÁGÃÊŠ (Ý‚çÝ*Éç„÷Âþó²Wˆ|à"!ÈŠ„Uã™Cúï]7_V’>²>ì_–óǼh¨ÓA[®B8ÂÁæðÂáPªÕã¹Gj²&p/,wÏßA7jk´ÐëÔXD`µ{àPRöpõ}×Ý,+*ÖŸÎŽ -Föõ4C.“ŠNl™]Äg—&±¥¦Ï6®¿ösãB]…÷µ¡¨H&úÎ<ãÄg_Ý„f[ž=d¸¯º›eS¿xï‚YØZ<¼·5úý~ô÷÷³¿›¶UáiLÈã\ÓCÙØôX}ÿâ¡¢˜Ã#w°BQ=ª›Œ–F=9oÂK‹êÒŽOïü|sæ¹xžO}²²©–…—œØ»»™‰Å8·W‡Fqcd Q.Á~ÓÚd@y1¿}aÝ’,xB@0‡/Äc9Ï‹íÙÕ�‰D‚bdtƒD—êGb<ËÇÔVb!ˆ¿åZW×í `ô¦‹žÀ¦rþèìY¼öú)¸ý\»1Ž—_~™,“•¯\à–¥BºÛs6ŒÜ¸ŽÙ3¢‘(–<JФ(WÉÉ5¥“ ´çÈdi‘.}}ýß|©TŠ8é-Þ€ŸýüdVöƒ+~! ¢ÚP†p,Á ¼`µÃµäÝéBgW7aŒ„-b¿Y,J—U—vÌì¬_üûlßمݽû¡TÈòÊùà‘Çñî›oàµ?üN»'~ù+p(¤é,Y‚€\.e ûCqÄb¬ówX¡¤w§U„[iL‘\!OõP&ÛÔÒcõV2´y(KUèz°'7›H°©ÇÅxƒ<KŽêQ]ªÏqÜÊyÃI6‘Sw™LÝáë‡B¸9>‹y*29:ts³èÕhlnÍʲJÐÛt€Ü}¼ŽM‡*2hÏÐWÑÐ%'wº—”¦>KgilQkÐÕÝK U ÓŽXñr±?Ý_.‰Å%dÊ…D:éú4ŸP4%OòbeNÝiR»mò"9)XÃCWóÎyúÛ)üùí7ðü ¿†J¥Æ{d”Åãü–Mç÷j$ï8õÂÔ­´·×’ª¡Ý´“ôzQJ”F0Áìœ Ú–ÚÔg™l²±‡üzC5kl.–†²B)³ ;¶ocï+uUl4Ò"'Ù@ Œ²ŒÐ›šsêR†™‘OÎ~Ÿ‡M½–6šÛ:ð¯Ï‚#³+’àEljQªª4`rj:••–hsk;hð|ƒ×nAYYƒ§÷iD·áL¶¤D‰Úú†Tc×céZÆ|k•Z ŒÆ üäø/D‘‹|ÿ�¹…êðTŸz]ÝÌÈ7ç÷ì]udJ>öøÓŒí¿<.bEë¬÷?üÖ´¶nE]m4šRD"1¸Ü~ŒÎ@ªÒâä㦬 ¼{aÿúŸyÁ7gFCƒõuzhµj²8Œ‘iµ„©©9H·èpòÇí÷]w³¬$soøÁ7>!Dn«Ÿ{eù//bÛŽõVÑ÷ƒ¥«é°ga¯\8@XŠÕålä=s°ê{ÓÝ +)l¤ói¡…b,š‚ES°h MÁ¢ÉfÑÄãq–ðØØÆÇÇS äcw¬lT$Ȧ—ù°I‹†Õ£ºTŸ6 _‹†Fˆl¢§§§É'¸©œÏ;‡S§N‘ÝB xå•Wò³hha6›ÉŠ6Â>£¡¶ËzvMðÊ•+øòË/ÙoicF#Nž<™•M·h’¶Ûíðz½p¹\سg Ù‚ÈÖµh’¬ÕjÅ… °k×.8p€iæ“ó“O>‰Ó§OãÕW_eçxñÅQZº²yÎiÑ$Ei…ïܹà EM-¹ìŽä÷¨­­eöŠJ¥BOOOnö®EC#q×~¡zT—êÓ<Äl"§.‰lT crr2ïœår9Ž= ‹Å‚šš´µµeeE uH颣ö }Mz×Rv»ƒ²44 z{{Y¡ºººXñr±I‹†ÞùÒ#]ŸæCY7”Õ¢IêÒâÌÏÏ3§„ìêÕ«yçLY:²^zé%¨ÕjöwòΊ,š‘‰ytwÖ3ÁÎÎNöš¥á[ãöœ ÍkíŽ$›lì±cÇRÍÅ&-š±Éôu7²÷z½žFZä$ëõ‡1oó@ojÊ©K;ˆ™‘O·M½íÛ·Ãd2áÌ™3lT܈Y4׆GPC® F}K”‚ô Áñq|~i %ÚìvG:«T*ÑаzÑ^¥k™‘‰!T®¾V‹'Nˆò¸øß‰œMºnfä›ó¾}ûVWédJ?~œ±Ÿ^±Y-š®µh%·lm… ¡pŒ,Ò|øfÐB‡Á†vÇwa“ ½ëµ5éa¨Ò ŠbvÎë£s¤¢•Z4?D΋¦`Ñ\‡B± MÁ¢)X4k,šf£}»éâoåÙ Û‚H07ïÚÐîø®lÒ¢yho+$RÙf K49a-·ÉZi}‹æ‡ÊYžnYÔ”=ÝÍì¹ú_`¯×YËöôô¢J¯ÅÃ}­øzęڮÇr¼�)‘(QH×e“Íþ½FÉF¼ÿ2êÛȶC%akj*q€°Ô¢1¬«ŒÄ™®Œo¤›Îº¼AÄâRR,Ë9Á‡ÉNb-+²hvíl€Óì# ó7®ÝÅÈØ8æÝ1Ø=1è:”)¸¬ve}æ\1Ì»¢°-Å`%G>lçŽz¸ý<a£ÃàõQL“é¬#«;Š­µúœMº®eÁGvfܶù7•ó‡gÎâ­?žÆÂbƒ7Æñ»ßþ3 ž5lšEC¶ä--–ÕæÄôäœduËÇ¢ð‡xÒc+;~ƒ¡G¦Ý±Â:¼F†®brø2™N¤§â<ÊȼôØsYÙ¤ESRª‚Íñ‡4Ü‹Nø|>,-¹Ñؾ Ù+R›¥J§#”iѬêÈÈ¢öÎèÀEÔ5ïD[g_Þ9ïè} ¶³o⣿¼ŸÛGžxN—Ÿ±)‹†&ä ÆÙ#8QR %ç<+m4½¬Eè#Aä{A¬±;R,™†ÚTèªÉPæQ\¢BC[wn–Ù#2øH‘„¥ÏXQ=þ®>ÇÅØÓ,ô òÅ‹&]7ðcfòb²é¶LÀ:kÎ;gA"ƒ©û\¶Y”‘=£~ksV6eÑнX˜lZãäó2­-;û ÑV¥èÅ/FzÊíYkw¬²%j4v솂>ïдÕõ-9YjÑp |ËðñÕYBu©>Í#A’‘ë×·Ö¢I×µÍ} ËF¶+rD#AÌL]Ï;g;a¿8ÿ6Ž<õJ”[ðùù·˜E“ÉŠ,ë¼*2mèõ&òZÄD“ GápxPÙºmÝ‘diЩ÷@ßQÖØ•ûKv6iÑØ­N¨u+SD]®#Ó¯›9ņÂp¹|ЛZrêR†™‘OΡ€‡ÉÔ«®oGu]†¾þ˜‹#¬ bEÕ<‚z2uŠÉ5„&Z]ßÊŽä”™³ÜF©.»Ý‘Î*ŠK 3Ö§»K×2¶[C—BIî€û>#jl‚ õ9³%§E#ÎYùæÜdZ}T‰>ضûàwÙi›Õ¢©0èIW X©OŸ¾ à².@¡®ÜÐîø.lÒ¢)ÓUBS¡E‰JÅØ�¹Ð{v(4UZ4?D΋¦`Ñ\‡ÿ{üO€�绲nä/­¯����IEND®B`‚��������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000212�00000000000�011560� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/themes/soria/images/editorDisabled.gif���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/t0000644�0000000�0000000�00000010360�11360615644�027227� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������GIF89aô�çÿ����  !!!"""###$$$%%%&&&'''((()))***+++,,,---...///000111222333444555666777888999:::;;;<<<===>>>???@@@AAABBBCCCDDDEEEFFFGGGHHHIIIJJJKKKLLLMMMNNNOOOPPPQQQRRRSSSTTTUUUVVVWWWXXXYYYZZZ[[[\\\]]]^^^___```aaabbbcccdddeeefffggghhhiiijjjkkklllmmmnnnooopppqqqrrrssstttuuuvvvwwwxxxyyyzzz{{{|||}}}~~~€€€‚‚‚ƒƒƒ„„„………†††‡‡‡ˆˆˆ‰‰‰ŠŠŠ‹‹‹ŒŒŒŽŽŽ‘‘‘’’’“““”””•••–––———˜˜˜™™™ššš›››œœœžžžŸŸŸ   ¡¡¡¢¢¢£££¤¤¤¥¥¥¦¦¦§§§¨¨¨©©©ªªª«««¬¬¬­­­®®®¯¯¯°°°±±±²²²³³³´´´µµµ¶¶¶···¸¸¸¹¹¹ººº»»»¼¼¼½½½¾¾¾¿¿¿ÀÀÀÁÁÁÂÂÂÃÃÃÄÄÄÅÅÅÆÆÆÇÇÇÈÈÈÉÉÉÊÊÊËËËÌÌÌÍÍÍÎÎÎÏÏÏÐÐÐÑÑÑÒÒÒÓÓÓÔÔÔÕÕÕÖÖÖ×××ØØØÙÙÙÚÚÚÛÛÛÜÜÜÝÝÝÞÞÞßßßàààáááâââãããäääåååæææçççèèèéééêêêëëëìììíííîîîïïïðððñññòòòóóóôôôõõõööö÷÷÷øøøùùùúúúûûûüüüýýýþþþÿÿÿ!ù��þ�,����ô��þ�ý $° Áƒ*\Ȱ¡Ã‡#JœH±¢Å‹3jÜȱ£Ç Cй+’(Sª\i ˇ«bÊ”#¿|óræÌ÷ï¥ÏŸ@ƒ J´¨ÑÉLž<Ê´iÛ:wöTè’éªX³þ»Zó`™¯`¿.¼ù®[4bÄr©Í–ŸÄAUÊEød®Ý»#ë6Ô›2F¸x)&—tiàÃ?ÉšE«6[·ãFüç.Ù¨GBír7á'* CSqS á*~¨Só»Ê¯kÁ2Z±–Yhï\7nÇxñÊF¬•¥\öÞ*ä4äZÂdTÎ-¤l³fÎ ™_μ¹³Ý'|ŠÚν»w׆žþ²˜ ´ȈQ†Oq½Dì{³ƒtBßo¸¿@è3ÌÆ?[9Ö5×€’MDÅ&&˜à`ã¦Q6¢‰VšHò áA4U9ýe“?n€–ËA冞w(nçš@{èÑ¢0îÑ¢ŒzTÛm¹íÖÛoÁEFÑ?ó„Š/À�“Š$Ÿ¼ …öWN­tšj¨õ’ÚŠ°Å6Û‡ïd“#/¨ƒ"ˆLƒž€ ”ÆCtr'Tœ©aCyd’)$‘F"©dBg*è g\”â¡+òEh 9!ã£Bê„kO`¢×¢…2Ô od(t ) &’ˆŒrȡƩ§ꪢŠJj©þq³j¨®îQjªñ2k«–j*F•^Š© tY*¦ )º¨@Ê›éAÎ2êÄ/¸Øwß_¿üâ„B›Tá-L4È5ä’›fDJ¢îº’0è`F6Ù_§!ÕU!ýQa¾ =RÞn’Äd¥A›C¯@vÄæ°+ú£‡Ã±Õè?]~æ˜eÊéϹ Ù3 +·Ü’Ê'©¤BŠ+=bHŒh¡U‹$Ù,,Ð*ùä¬s>½Ìdlañ³%BùœSŽnº¡‚ 1–X‚È$- ÈÐ lVE5< Å õÖ[£¬2ˉL²É^¯uAÑ>KQÃÇqAØU˜£‘ֽǤ¹WþÍ­ô¡Ð?ç.øàƒÄሠnxâ‰/Î8áí1*BzOTùCq3”yEiû3-µ\Ç€ .Ú&ôHÜØyëáCã^#ÌëÂH&ù¥K Ò¼¸‹œFT¼s-¤#‰Íá‘Ph Dph eóo¨‡{”ÙHrß~ÄvÛÿ¼mÐÿÐ8£‹à[\ôÑH+Í´ÓPû8Q2¥²â‹;îI "Ç_‹¾}ò™”öÈaæ# ɰÇ*~–•°„Å ó˜ÆÑ”Ö´\¸BiˆÃ<B6qb H'ªæ5)'kL¡=æƒú© ŸäG?ûÁ!³HÃèÃC'èÁþµp)º1ˆ8A+ÇÈJ³‚·¡zÖKOEä3;ÐNŠœ‹–ç²5º.’.[Û:>ž Péá_zÐ‹Ü 2a¸vp9íªh{m‚f1ÓÝ&ø‡*ìï%›CHïÜp˜ñnÌ2„·ÊHŠ4âãz4#ÞÕeíi|ÿà‡÷ 2±‰9 |WŒàQQÁ ¢"ƒ<H„Vº²•Ɇ.t1"A¶âÿèC.iUäd„i˜Ç9¨Œœ,ð5ÿ�‹Ã†æyã¤TZ.ZAЦYBï@È Rµ86$l¢Â’±®ƒk‘%-òÊWÆr–µ4D²C'|Eeþp…+b¦ÉDñ� ¨@ÚÄŒ¼ƒ`ºtˆ­L…*5$„UµZ(ª «…Nd¡ Åܲó(+e)Bæé'tÑ` £AÆHŠÿ¼£O`C7Â.v±“£eTG;Jâv¹ka$±GÞÝR"°òGR’Ô¥.Ät˜Þ·>°á µÈf9Hñ„G$}PX6rPb$T{þø$&7)N>*F. Ÿ@œ MKH“šÖĦû‡¡ ÷¨F5`q<RT ˆ )ž(¥väœi B'ÛŽc ¤ ü¨M–´ÂLgòÇ®¹b5÷pÍTrs›þ '4 …ÀƒMixþH ºƒ $°ƒe§_+XÂ$VAfEŠV £•Ì™ðY KTb«"""EZ'ìì:îΠz¹ˆ¼,d+C—ÇA® “y{Ê—Ž^Q!Ý¥œxÞCÝdÕW À5ˆpM:ºÍ6P¥#1LŒ'ô¡ºXcßøºËn§ï¥©…îˆÝ ¯¨ñF}Åa_!„ñC¨àŠì¤¤8$³t‰™ëþ(0ŒÉJ†\ÐaÀùnx+™V»í¡Ÿ™&+ö‹y6våÄ:1ZKŒ™‰¢’“¿Þ6[¾Å‚DŠZÀ¬±íó5Ø40WögóPfþÐ:ëb Âd€3",ñf2Ĺé ›‚Z‡àƒMlrSCbpŒ°Xf'•çaeÜ#Ñø®¤ý!Ü‹™·pÚû&0¡OL¬LŸMrAŒw¬eU7*ÇÐIªuRÐ`•šPšêÃÿ°HÔ„§ïMˆ«)mê]çYhÓ"Uƒ ëHKzžû=)•„`à8vv¥0¡ %$dÁ7u0Bæa ûÃv³j2xqaKwèN·nâÔ†´û©¤ˆbA$‘b„(Å•èªAˆ‡| „ Ÿ€Ò;úð޾Í:ÓjÅ [­>¸’OÈsms1†AX¢cÃ["eÄ5zºø*þŽW =°«nhÅŽ ²ŠÀµ#CHƒÌgY”Á,Çð¯=ÚÁfbl'Ìç„Ë| ¡‹Â ÄIF2:ø|ˆS_k"'CbЋà 9;=^¬ü·ÁE–ù™G`BœvÅ#%]fÁ§¤½ˆ»Üç.wîΗ"’ Ê"цúÝ¡©(Fýn_ÊYíÕ­þNÕ·DJeH|2ù…x;¤ŽgH~‰ k“’e°GXDßì´nâÅu¤vµkzSœ^#M‡<{IáY„;+÷FJ~r2¨œ©vˆˆ’®ëaØ ÷fqvðAŒM,É } ƒ$þŽ¼ï½’òÂ=þÉ=#çÂç¢�zÆÉ†1 Gg£”£ÁþöøØÆ,uÁ ’«¸f”dyàºÁ¦ÀÁ%p5ç@ÉÝÀLù Ÿ cgdà1N0¢@<Üä}Æâ4^E5¶•5¢ƒò7Kõç@Ð~î'‚óW‚òDOÿPv˜v OÐváƒÓ ‚£ƒ‚SPAn@òV^—8Q„Fˆ^Hx„KØSy´$ÕN°*e°hePzþ µðn7ÖÖ¬nt.±G>E 1`{H£.Ç÷4cnÑT²|sX‡OU Cè’P 榨ÃåP «s=@„þˆuˆ{hI³}Eö"0â"瘀 hg—ô!6³Jt× @€ ²� ¦H þ&H~x•7Ó Ã4NÝ0‹ƒÐ ÝPs?“Y¶ 9güP= Ø€½ÐA'td° ƒ …Äa#Æ&‡&BC€5 8¤hа@ =Št7Š¥xŠ©-ÂVvÀ¸ÐçØ6è÷å99¸ƒƒãƒqPAOQrs†@ÑŽt1S… R<<§…Ì— sm­;¯ÇTP8lZöS’n(‡‡ïÁˆ8!þàe•@ ñ‹¨‡à"’`r‡hþÐ0ËÆYáˆÜ§þ“ø‹’ŒNÐ øq㇌�æ‰3Þ˜ ™€ í°$ßö‘1C ^F tÀ‘þ° ´( ³X•Ép‹ q…a± Pfà5‹@:(fÛ´ŒShÑ éÔ\$ Di”S”A9”Ey”€2Žkƒ-©›d<÷% =T˜=$ àqw¡0z@^È×PÛ6*†GxâXi™™þ�x𥘟ÉøÈ޵FšñVˆ8Y¨øà¬S.åâM áPžI|w¤.e6Ÿð¹T@0¿ãõ6šüÈ}@‡3t�#&Ö2cQT B#dИ)„þi˜‡1$‰ØI6ò•Ý–e01P~' eé“ìÔN­„˜p zIr•pŸø¹ ×ÇrUÙŸý‰‹¯aq' ½�e™$t¼Ø ƒ 5 ±M{†17çò–Ÿ"ŸôÙðŸf—¡ ñk±ÜÙuÄyÄR(˜¢*J)ÆÂkÅ–­à™a^Q„7ú8a£ák½Ö¢ Jj.Š™£f¢Œ‚CZ¤psaQ€ZèlÙ¹c(›¾™ ’@Y»ITohT€Ÿ^ºGm™BÊ;×IeJâåœÐiÿ02ª1:£±¢+d܃“Vü€ 97×µ˜qª~Ú)! B˜¦Q韌  —…RP&Ý0adp Ñà€c‰g4ÔøBÒˆ[CktJ§EZœQyšb÷¸¬*±Š†ªÊŽ™§=tsþ¹š‡Ñ¾Ú À¬¾Úœa¨‡Jø—gÑd@p"hêïઞãC#y*©”Jq€©Ø çÉ©QÖAy®1ñªêZ/rñh¡¨ë¯E©‘*¯öÊîJ Ù”¯ðúe hH7ªt¯[°{°›° ëtp¨¡ñ á°;�;��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000220�00000000000�011557� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/themes/soria/images/tooltipConnectorLeft.png���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/t0000644�0000000�0000000�00000000551�11360615640�027224� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������‰PNG  ��� IHDR��� ������ áVÛ���tEXtSoftware�Adobe ImageReadyqÉe<�� IDATxڌҿjƒPð£ÔE!ˆüóÝòY2dLIÇ„®]“5µtëctvVtÑéêPtQµçìÐ&W?8 Þz>Qð}fæõa²ªªº›ÂkA>LÓÃ0€‡’$í]×EQ®7ná'œ­¦ikÇq@Å߃¿x‡GÛ¶A×õO±†ó&ËòÎó<À×ßÜ‹°‹%*@Eðún Â[˲®m§BÛ_ce Ã0‰SD Äç8Ž¡m[.¦|ã¼Ôu}Ãʲäâ1§®ë–I’|¦i }ßs1å gUÅ)hš†‹ÇpÿMEçù$¦¼cùGüZ*?çe8ÏUU±�¯\h�Ю3����IEND®B`‚�������������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000206�00000000000�011563� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/themes/soria/images/spriteTree.png�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/t0000644�0000000�0000000�00000000521�11360615640�027221� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������‰PNG  ��� IHDR���6������x-ý���tEXtSoftware�Adobe ImageReadyqÉe<���óIDATxÚì—Ë „0@‰Ýxôd;6`Š]éIðâÅBDŒâ,ˆëo׈ëJ £gò!á�ÀžˆÃŠMìߺ‘ç¹ñb ‚€ê£ò%†ø¾Ï„Ìq¶9Ž#†Eq(¥òØ©x6±$IìæqÛÍCÏŒ4M7£E‘êCʲ×u"Ïóø7æŒgMUUæ§ <y`dYMÓ@Û¶ÐuŠ8ާ6>Ç~|O³{žy˜z®ÆbÄú¾W;çï¢I)§èJ±ç™ÒÔC>5aªŸ<ËÚs‹5FÁ¯“Ú$V×5‰”Êsn¯-6±{ð`� ƒ(a=̲€����IEND®B`‚�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000210�00000000000�011556� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/themes/soria/images/spriteArrows.png�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/t0000644�0000000�0000000�00000001320�11360615636�027224� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������‰PNG  ��� IHDR���,��� ���-o���tEXtSoftware�Adobe ImageReadyqÉe<��rIDATxÚÌU¿kZQ>Oj¤nâ ‹N­Cí"økI vÅÿ ™ŠPhÿIöK:˜,/"ºT‡‘‚¨Câ nAD„VÑžïqŸ\_UJ]zàrór¿{îwÎùÎQY­Vtˆu:g¼e'“IÎáp¼ ƒµýóvÃ~~m;·èü9ošÍf®Ñhà_Ù}Dxi‚ÐNL¿ß¿Z.—?ùïÌ6ÌŒˆÇü¼Ž¤ó^w¼¾rÄ×&çI®ŽV«Õ¨Ûí’Ûí&q‘w\õzb±X’¿Sìïf ô´×ëQ«Õ¢D"qɸ·Œ»J»Ýö³³{dˆw‡ëC.±NÄçó‘×ë}eF&‹ÅU¥R!Îȯª*1F1‘Ug³Ùy±X¤ét ?ÇIQ”ŒýaÂÞ ð!—ËE©TŠl6Ûã>­%ÁLì½ÓéÜ ÃE~Œ<>åŒdËåòÙ™ÍÌçósMÓt²0ÜAUàCè_6,l4‚Ded·B¡‹@ °qQriÈb±œ˜š ‡Én·ï#û”µxY*•ôÇeƒ„X÷ê>ÍÃ$d$ãtÂLæ$"‘ˆ^2È $V«:ú&;‚4¸*gétZÊмaÉÁ`€’gkƒÌÆã1²—ãÀü»ƒ k^OÐZÃòXC#±65”)Y?[²¨¢äÈ"ˆE£Ñ/ŒcQ§¢‘ebw"¸¼<Ë28‚4Qm$µ¾Ñ Šy‹G²ÂÙõ_Œ¶ JlÊùcòsµZ}~‚D‡ÆTýá0ô BÖ¯,“ï‚ìã þŸÆì¾óß �IHÒCcÑ����IEND®B`‚����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000207�00000000000�011564� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/themes/soria/images/sliderThumb.gif������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/t0000644�0000000�0000000�00000000356�11360615646�027235� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������GIF89a� �Ä�ùùùøøøÈÈÈÙÙÙÂÂÂííí®®®¯¯¯ÃÃÃæææ¤¤¤ÆÆÆÜÜÜêêêÌÌÌÔÔÔÇÇÇËËËúúúüüüûûû¡¡¡ýýýþþþÿÿÿÿÿÿ������������������!ù���,����� ��k`&Žd™ UªªBYa˜EÍ“…ùNRà� €°(ˆ*^D”P,—bAZ&‘ z)VKÄB.C1 ò"6“/]CâÅ—áQÅCBÇû) /0x07'+�$IZ—$!�;����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000216�00000000000�011564� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/themes/soria/images/editorDisabled_rtl.gif�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/t0000644�0000000�0000000�00000010256�11360615634�027232� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������GIF89aô�çÿ����  !!!"""###$$$%%%&&&'''((()))***+++,,,---...///000111222333444555666777888999:::;;;<<<===>>>???@@@AAABBBCCCDDDEEEFFFGGGHHHIIIJJJKKKLLLMMMNNNOOOPPPQQQRRRSSSTTTUUUVVVWWWXXXYYYZZZ[[[\\\]]]^^^___```aaabbbcccdddeeefffggghhhiiijjjkkklllmmmnnnooopppqqqrrrssstttuuuvvvwwwxxxyyyzzz{{{|||}}}~~~€€€‚‚‚ƒƒƒ„„„………†††‡‡‡ˆˆˆ‰‰‰ŠŠŠ‹‹‹ŒŒŒŽŽŽ‘‘‘’’’“““”””•••–––———˜˜˜™™™ššš›››œœœžžžŸŸŸ   ¡¡¡¢¢¢£££¤¤¤¥¥¥¦¦¦§§§¨¨¨©©©ªªª«««¬¬¬­­­®®®¯¯¯°°°±±±²²²³³³´´´µµµ¶¶¶···¸¸¸¹¹¹ººº»»»¼¼¼½½½¾¾¾¿¿¿ÀÀÀÁÁÁÂÂÂÃÃÃÄÄÄÅÅÅÆÆÆÇÇÇÈÈÈÉÉÉÊÊÊËËËÌÌÌÍÍÍÎÎÎÏÏÏÐÐÐÑÑÑÒÒÒÓÓÓÔÔÔÕÕÕÖÖÖ×××ØØØÙÙÙÚÚÚÛÛÛÜÜÜÝÝÝÞÞÞßßßàààáááâââãããäääåååæææçççèèèéééêêêëëëìììíííîîîïïïðððñññòòòóóóôôôõõõööö÷÷÷øøøùùùúúúûûûüüüýýýþþþÿÿÿ!ù��þ�,����ô��þ�ý ¬%° Áƒ*\Ȱ¡Ã‡#JœH±¢Å‹3jÜȱ£Ç CŠüجÙÈ“(SªÄHp¥ÄqÌbÊ”©±ß>|8qîûç²§ÏŸ@ƒ J´(ƒ;]Êԣ͜:y*lÙtÜ?fÿ²j½ÚДׯ^ Ú¬·n7nÕÒ¢Û×o*Õ¦p7^ŠK·nǹ ñºÄn]ƒ%¿¹Sú·°Ý±eϦ­¶¶-·ÿÕû†L—.cÖêIEXŒ“çÏœTIC8®_?¬¦SŸîº5«©‚úâ­S×Íš5tÛœ«¦o!d†ÄKø­R¼…’)[Ƭ9aòÊ—3o6|ð’^DzkßÎ}D[—lþ-¬æY•cê(Á‹§¨^¢õ¼×GVšÏ—]_Fó |‡®?º„´( H‚¹3Ø0&˜ '¡h£ÉуQxè¼#Ðtb©âY5‘ÚyãpgbvÉ¢âŠ,®›l´Ù†›n¼%ô›Cÿà“]6<.ãK1Í!Ä †þ½#‹3•fÚ5ª¥Æ k­½æO?õ S›mÌt³ 7¹äRÎyÕrcB¢0Â1S ˜å¸c?Y›Çð˜@J•Êž|ö™ G'ê@~îYP|•ܢ袌.ZÉ ú§?—ŸAÎàFŠBÝÈôË/ŠÆË*¤’j¨±(úé§3=):þ­®ꨫdÍL²Î:*F•â%iŸõJh¡ é%©@Æþª,° U‚ 5õÙ×6ØT²Ð.𤢉&à DË9à‚K æË¹èú2 ƒ9H¤›j4×¥ Ù»ÙëàAÃl›í. ‘² :Hbªi’­´¦p+)*Üš,Qi¥m·jÉ¥—lú3&Cú Ó 5Ô0cÌ2Ë ãLoBn£Ê6,o#/èÄ+ÐL×ìcóÍû¸º)ý€õ”ûÄóÅ·2³0Âäò Ê6FD‹™ã ô´= bõÕW\òÉuüqÈZ›Œò²“j”°Ã­µéBÖ]—h£pßòèwá-³3;ÏþÞ|÷Ý·A~ηcý.¸X†þÐ- "Ô{uGÔ6C“;DvCÎ>‹õ W›:Ù¶mÀÑ¢ÍéÚˆÛã·DÄIƒ½ºøZĉÊ-KƒÌì2gÄðCŸmÓ»?fÐ.¢ûûŸBG¢ãËAwç-Ð8g£ýÏïÉòO‹,n/PÐCSÓÑI/ýEߨ¢J3ÙÔSÏÈäÒM½ÒÔîO1ÄŒ>߈²>�¤E%þ§3ƒ€Åg®>Ê1´˜ ΈI.Zß´$8fBSB08®2§j� ¡>ð1ˆ÷•L~IßúÚgÂøÍÏ—ÛHÂDgX8CÎ@ÆõÖ‘Jl¥þZ¢Væ¶R8ïyè©H|XçÖ%Ñr˵@FEjPËs‡B–-¶ d #—ØGéL‡ºsh#j i B/N vß`nh—NÔo$•žÊ²2ûíã]üb¶Àˆ,„œ+f1â¹Ö¬ÜÂa؈ö´§°I*E{`™1Á †)"f e( ‚Ž´P£^ΨÝöª¡ ýá¤8ñÀG™ˆq“Ä ûÊϸx0C1 2‚´VÔµ0SA±o˜©Œ LÕ®¬ ¤”Õ8¥?D)JRšò!­4Û?¬ã•X˜ÂÎhY?ÔöDuãðŒ'<‰˜‘zL þZ¨Je*„”JT‹ZM ’+QMä¨âgu®³¨&…^íÄH8R‰~…ŠÖ:”ud‘ŠKHã˜ï@FKwFÔ¥îŒ Q£¢ØØÆaø޶™Ýºê˜JŠÔ7mÈMsZ!iDÒ²¸£Aþˆ ÕC—H…,òXjÈBxLj=·O„9ò‘iûé$¹§"ïù½üe0sHLaó|a„˜)}˜ÃѨ2~¡>õqFÔ=p¢¦2}c¯ô°¥@p¥xè£g äF€I ófõdAÄDY1GƒÊTˆ=Ì$Ї bƒø`[ß×m®6¤±ü¡¾„Ī <mþÅ>ºdÎ_ãÃð¢Ù™Jd€7ëFpqFφ<!*«)¢ÊÃ%$q~œâ$â\–ꥡNTÈqµ9ˆ¼‡"ßUȯ ÒZŠv+¦À(«ñ‹¥nCŒÙÆH ò­’–¥ Qiv™š/—nŽsœiEP…PTøÀ 1pD¬Nà-EÈðã%¶Q}ÈW»¹”=«Ñ ÇWÊe®?¨×¸=²ZÝžÃ,ùUÅ¢˜Ä�1+ P„­aTpÂVèƒe¥­‚„ i¬L¯ôH²™Î‘ä$ Ö<óÙWð!%|0†µhÅ(´œ‹`dy[^ÇBØ*J "devÈþ º1ˆáÀÈÑñŽ{üãm”v¼u­+â Ë7ƒ$ ÒF1L†Nb®RÇÈO+•näÄÑ9). W+¬„à-OoWšÝ„T:ÑŸŽbU;ÞêDŠl|bmž'ú[ž5)½ ˨@(Q`X ¾ñ•íAêKÆÓ™Q©FÃk7úbÖ€Ý3dj¿ˆíÙжÍBxújWH,ˆ/"|}tx¨—°m5(‘RãHõE=.m?ê]’ ãjWófet`YË´�-‚cP„Ù C#×cr`cOæÄ/b‘.Y¨ÂË-3ø&ŠŠG“oO6=ôÞnŒcU®Æ6þ²“äxÔÌø G7N~Œ1ŸéÚ8“BöMkùµ!ƒ¸Æ ´aƒ#<Î/ˆÏ]Uêòú®HF1œQŒ@ cO;tS+qª[ýêV—ôB¶k_´Âá )0?ÇÞOŒÀªúÔ©ö¹ eTº"{­¬{Xà”!\w\wÛIlïöÝ ¥ˆÑRQ}€ÅðÔ05díZ×ú:‡üÁk“žØ±»Ýé.$—âæ¿îxƲ阑…7œ×)ª¼ú»zžÓ0ÞËÆÝŒ;!ªE+|‘îzxìVu$¼ BIëÑ[ä$§G<@áoQ€bå£hùdA9Žê[Ÿ�LÇÕþQ¯_Ø/f‹œÙÞ´73­co¹.ø½jã{ó(*1üT¢ÇŘ·éh2¾O#ZUs ƒ Ù·}qf}×w€ÔÂ}Áj‘0I‡4L' Nua|s Ø7ZW¤  ¤mÏÅg{#]&ˆ‚|¦‚еP¡y™–Øj;FeÆpƒŒG 4Tï Ëã-¿& BXwwç‚w.#zƒÀl!3Ͷv™·yª… ö $è¾à}Ò !È":äfH!‚ê3†WènÖs=ñ&o^µîñ Ì' óú7}i…u×ÀÛ€ Ñð‡Ì€kŦ…aOáçþ̰Ä@ ëp~Îdëqw~‡%%ÑÎów Ê'&`Æ µÀxÁL2·þçfT£ƒ@€ò }ø‡Ñ°?q¦‡|臀_1d6ýè”N¿ˆNØ[¿Õ7¸7Ǹ78ö$‚ùƒ’“0%u ±‹ QQô�ÛxƒÆ Š ‰´§ßÒk¨ƒyÓhjGè [±ÇFzᄞ†d!þ`d¿0<þ`aè1゜à 7†Ï8=ÕÓ$¦¡†Ä§b•äU˜è šHuûÀ|Ì7  Èx7Š­Â ·˜Å@“ç '0¹£ ÈÐ ö˜ˆßЈ,I ÄЈÇþ `Ae ¡Õ0 È›Sø×c‡&>¹k„j²­8<Ò‡ ’q¶‘y ©'¢&Nÿ€¤¼Å sÇ0^ù•_y <´u{W œà… !w¥¢d‡v¿�xn×lYvkésÇ]ëA–{QÕÈ6¾%^S™¦8¦ààˆü!ˆ�ò-á¢:Q+y鯯ŽÅrø€.±wœ@’,cdÜfj©²@ tÕ2­ *Ò3TïÀ ±0‚¢B h©–ÓÓ•` –Ò—=ÛÆÒc“8¹:  0Î = p ÄMf‚4ÅÐ LÙ}«²*Ã�|3Ò؉þw Çp “h‰Q•'7Ýp µ`5•u.ÇÙȵA˜WGÙ ÆàœÐ¹ÌÙœJwŸ§6—›¹©›ˆ¶ZY x ÊC f)–¦ héÑ‚%(¡A¡ a¡¼Â “æ'È¢¡Øˆ=بhý‰j©Ö,¦ ~^rˆéïÀ˜ä(„‚näRÿð‘)§.ò„¡pÓù)ëò„?9›´‰–"6T¶Ùÿ�›jCÊ l’  Ú0i(=â9 äIœç0µÐoꉇ(á â#(b‰˜Ù™qž±Éd5£àqôÇ“b¶—µûŸ±Šq5™&¥Rê[y˜yç©и…j‹Z,'uª…¦¦ð•…±"ÁˆN.’b:¦¤0$Á©¡{ŸA êÖ ÇTå±òÖ"mšLùF r:Ä@œu:M±‘¼š¨¾ê£yõÀ2Gú«ÆZkʦǺ¬=1¬Û°ªÄ:¡`fcŸÄ¬Øš­Úº­ÜÚ­ÞÚ­0¦ŸQ u$®âJ�;��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000207�00000000000�011564� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/themes/soria/images/spriteRadio.gif������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/t0000644�0000000�0000000�00000002161�11360615634�027226� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������GIF89a`��æX�öööüüüõõõ¢¢¢ÆÆÆ¡¡¡ÏÏÏûûûâââíííëëëþþþÎÎÎýýýßßßìììæææïïïÀÀÀîîîÁÁÁóóóñññÐÐЖ––   £££ÉÉÉêêê±±±ÇÇǘ˜˜ÊÊʯ¯¯àààòòò¦¦¦ðððÔÔÔÍÍÍÕÕÕÖÖÖ¿¿¿çççÒÒÒÑÑÑÞÞÞÓÓÓÿÿÿ®®®vvvÜÜÜŸŸŸãã㬬¬ÅÅÅ“““×××™™™¸¸¸ååå|||ôôô{{{‚‚‚¶¶¶›››´´´•••¤¤¤ªªª¥¥¥²²²èèèÛÛÛÙÙÙäääÚÚÚ¾¾¾ÄÄÄÝÝÝØØØúúú÷÷÷ùùùøøøÿÿÿ���������������������������������������������������������������������������������������������������������������������!ù��X�,����`���ÿ€X‚ƒ„…†‡ˆ‰Š‹Œ‰ ‘“•‰›Ÿ¡—’”–ˆ¨š‡V -¯±³µ·‡ >$V¾ÀÂÄÆ¹²´¶¸†°Î¼Ñ„"UÛWV…ØÚÜÞà…'@ÛUÝW;Ç„éëåïñƒãìÝßá×Ùúæú šP A• 4 À`ámÀ„A Z±råJ•†``¢ � X h�À 'V¼x¥$Ä‚.ÄøR"E‹4aà𑃄"Jd,¡rà�P¡r³ Q£‚F8�p%X aÄ ©I—6åêU'O > }z”§R¦+ÿÙ *�hHJØrÅDAt© ”b;¿ƒ ( 2…/¦H¹À@âŃ [¤lynÝ wóîíû׳`Âp—Æ"Aƒ%JÑ #I;ƒZ7ØÚðÜ‚BLhÀbĈL.œ¸bðÝ zãl.H7lÙ´mÿÎíš·æÛ€ë2È@¤†!+ªDXxÁ‚è©×_¦¢ E“'0¢¼¨" 3ÅT¸Ÿaý…GÅxå—ž|¦ @|«Q�lÄ3ð À.P0ˆ„�Äða7u8ˆS-@B;8pâT"FwÀM1~8a…f¸¡‰‚€X#‰‰Å$`ÅÎ*äWT°Áƒ ©¤{¨E9å 0Á’ Д•‰"H—_b©gf™ä’M>©%•‚X¹äYJI§ ˆ�‚ÝH‚Öðé' $Z(éX€è¨p >꤅ôùg V(šé¡œzšé�(tPA l°(Ÿ¤šŠªªÈ AÜÀŒ!¿ÈJ«­“B@«§¦º*¿–,¬‡( hàJ²Ë6û¬!œ0À¦ RíµÙBˬ³ªx+m¸Ž”kî¹è¦«îºì¶›H �;���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000206�00000000000�011563� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/themes/soria/images/spriteTree.gif�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/t0000644�0000000�0000000�00000000351�11360615632�027223� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������GIF89a6��³�ÓÓÓîîîìììýýý‹‹‹óóó÷÷÷ûûûðððõõõòòòÎÎÎùùùÅÅÅÿÿÿÿÿÿ!ù���,����6���–ðÉI«½8ëÍ»ÿ`(Ž$ÖœhÚ\j[R 384=0«ϵsç¯Ç®çñdÄ_P2tlF²§\6ŸE lZ«†a<> €À “Ëçôú²®×™ ƒAØZ y{…$   ˆB‹–‘“" œ“›žž™! §¨¨ ©¬¤ -*,°(Kµ¶·¸¹¶�;���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000216�00000000000�011564� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/themes/soria/images/sliderFullVertical.png�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/t0000644�0000000�0000000�00000000177�11360615632�027231� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������‰PNG  ��� IHDR���������ÔTR¯���tEXtSoftware�Adobe ImageReadyqÉe<���!IDATxÚbüøå߇ï?ÿüûó×&T€Î0�â± ¥¼ïG����IEND®B`‚�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000225�00000000000�011564� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/themes/soria/images/spriteRoundedIconsSmallBl.gif����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/t0000644�0000000�0000000�00000003563�11360615644�027236� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������GIF89aK�-�æ�åæì«Çñ¬ÐÌÑá»ÏïöùýøøùÃÉÛµ»Ãéìò¡©Æþþþƒ‹™ËÚò{€‰íòú¬³ÍŒŒŒÉÎÝÇÇÇ£¬Çâêõ¼ÄÙsy‚²¸Ð¦¾æ¡´ÚÄÄă„†ÕØå»ÁÖœ«ÏÅÖñ²´¸™¡À§°Êïðñ­¹ÓñõûÜÜÜ´Åäåíø•ž¾¨Âë ²ØøúýªÄÔÓÓÓ÷÷÷¦¼ä¾ÀÂâêøòóõdef‹–§®¾Ý¢µÛÝç÷¤¹à©ÃíÓÛ릦¦¼ÐïÞæòšž£¸¿Ôûüý‘’›¤ÂÚÝèÔàõŸ®ÅÑÕÚ¼Î윩½½ÍéÃÉÑÙÜç–Ÿ¿ÁÇÛÚåö˜£Å—¢Ã†‡‰ÐÕãÛãñÝàê¿Òð¥Ã¹ÌìµÈæ¿ÅÍÝãî§¶Ð]]] ±Öž¯Ô™¥Ç·ÊꞦĔ˜°½Ù§¶ÕØà良㛨ˣ¸Þ§¿è½Ìåˆ‹Ž”—œ¥ª°ÍÔÝ–£·ÚáëÅÍáÎÏÐÏÝôéïú¢±Éz|æîùüüüÿÿÿÿÿÿ!ù���,����K�-��ÿ€‚ƒ„…†‡ˆ‰Š‹Œ‚>;c-4Š‘“‰/=b;n”’ž–ˆb †¤¦¨ª¬†bfW$²„®§©«­¥¾±†cRE~É~YG»‚ÆÈÊÌÎ1.Ê~H#„ÐÙÓ…ßÒÍ„;DÊ%ÉHæèÙìîƒ= ~%ÊcïÉ ÷äù›Ñ'Ù móQ¹±ÀE‚g°ùÐíÏB?E œ8!‘â 6�ü,€Q#A{X ºX$Á’+^çÁ=þñ¡Àωr¬8àó` Žz@ÀÁ ‡3E 0bA>¬ÈéPÔB›¤~®J€#BET¤;•V°²Ç“³‚ÿXP( bNøð91@Lܹ|ê q�çÉÞ¾‚^˜q¡—ƒƒsTœ8°ãïUÁ„ óõûGîU>^Âì©p˜3U|*x‰“W/‘SG æ3¶¬kØ IóáÇ‹n ²NóaêôÌíØ¨ŸàðbÅ é׃ÄHÑ«â‰q>XFˆ>Ï Bôfß.Hƒ½gžÌÆ…üézã‹×Î}¸á C„Œô"Êù©‘Pþñ¡ÂlÈKW�X&V | FøGÿQ¨ !=Da|1€œqè!ˆ"’hÈQñŸv˜Ñ‚!~âˆ%Òsâ*¶¢+T¡Ë(?9ä!´ÁFÿc¨„d‘BR3H�PÙÈ•Xf©å–\véå—`† (‰TB&"™lRÑ!f^‚H›£ 0…ô2§”ïÕrK.RÚùKŸrþYÌ1à”ã ¡äPcDìp#¢É„sh4‘*È9鬃?ñlJ=øè“ ?œ¤L;äÇA¨®ÄP%l�C@:YtH�ÑZHÉÀ°A } ä¤­¡ÀP2µÎ2à4Q7<‰€p¬R¥%ÒVD`ŬآE@}p�äX ô‚5\›m´ Á8ÈpO¶rµûnS}‹Xg´[!ƒÀœ)ÖnNB°”ýe0ÿ 3lqÀ2„ñÿAÈ3܃÷án#ün¼¯ìjÀßÞAPÀÅ2·ÞÂ3Ë#€Üì,«2nïI² >Ãz„{b(ÝÇ Æ\ÂÓƒhp@À0,píE'uÊVc-HÔ}l°°@Üpµ{ý¥K¶X7Ù}Ðma�Qd÷ J(wÊzr÷ÜuÒá L …9 ²xã7<ù,Zî W(0£âQ0î8ä4†N¹åO%‘ª[Y§’L[g•xŠL»˜¸ç®ûî¼÷î»!p–ù‰›‡¤ÉɘÄ?|œ¯Zg ÄÌ¢'.®O=¼\/¥1.¸P@EH:ÿ÷Þƒ/¾ ÖའEl³æä¾¥ÏHѽüçŸSÀ6ü€€dPHÈôÇ?ð�€¬Çþðä¡�¤m0…ž €ï(@„`À/\P€TH€ ð†&0 Sx@²Dˆ‡¸…*ÜÕl€4á (<AJVÂB'˜À 0\¡ Îà�-€?ˆaRF¨ƒ8àAÁ€žŒ° È"¤HEä4@ p@txà+i¡@‡(N±Š !žˆ=p-rI‚LðÄ   8�gò¨…0 Œz�¤ ³= ‹0 =0 B‘Š$©‡0\€Ð ™ŒMÀ%’� €6J€¨T%Ò¨‚ <’JàB*!œŒ‹ZLå*EI�=à@ p�d4 ²˜ @¥ès6g  `è‚4©ù X“zx¦ÂVÍgšsšPsfÂÉ…tJ9I !ÃEAžæäB=§tÏyrAvëg>÷)!|>SŸúC‡Ò Ï2èà—[hCz9a¢Gøœ‰J�‡B´tõèål׺ÚQ©¤£€]šÄ:#™ôv¿‹©LgŠ¥@��;���������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000226�00000000000�011565� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/themes/soria/images/splitContainerSizerH-thumb.png���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/t0000644�0000000�0000000�00000000175�11360615632�027227� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������‰PNG  ��� IHDR���������þä£����tEXtSoftware�Adobe ImageReadyqÉe<���IDATxÚbüøåY€eÖšýäédüñë?y: �~Ðà›a¹E����IEND®B`‚���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000221�00000000000�011560� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/themes/soria/images/tooltipConnectorRight.png��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/t0000644�0000000�0000000�00000001755�11360615642�027235� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������‰PNG  ��� IHDR��� ������<?¦é���tIMEØ$ >^è��� pHYs�� �� ÒÝ~ü���PLTEþþþæææáááãããóóóûûûýýýÝÝÝÞÞÞùùùìììØØØÒÒÒÖÖÖäääàààíííÎÎÎååå×××ÍÍÍëëëôôôòòòøøøçççÌÌÌÿÿÿÿÿÿ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������/Ìi���tRNSÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ�Y†çj���WIDATxÚEÎIÀ @¶¥û¸ÿg/ÉiEŽUy9j0=­tMbÀ–†щty2j®Y ËýÎ}>x¿n’ãcxþü»ýÕõbÏ¥õÔ­ÿ·J–Ò^û����IEND®B`‚�������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000217�00000000000�011565� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/themes/soria/images/accordionItemActive.gif����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/t0000644�0000000�0000000�00000000256�11360615644�027232� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������GIF89a�0�Ä��ž¿îÞéú•¹ïÊÝü¥Ãïž¿ïÇÛü˜»î¾î×åûÚæúš¼îÔãû Àí—ºîÑáû™»îÜèúÎßûœ¾îéðü”¹ï������������������������������!ù�����,�����0��+ EA)J’0ÌóHÒ0FÓ��‚LÓ²@ÃÁá*ȤrÉl:ŸÐ ¡�;��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000216�00000000000�011564� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/themes/soria/images/tooltipConnectorUp.gif�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/t0000644�0000000�0000000�00000000315�11360615632�027223� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������GIF89a� �Ä�þþþæææáááãããóóóûûûýýýÝÝÝÞÞÞùùùìììØØØÒÒÒÖÖÖäääàààíííÎÎÎååå×××ÍÍÍëëëôôôòòòøøøçççÌÌÌÿÿÿÿÿÿ���������!ù���,����� ��J 'Ž6`dJZ¦ª*H›#Äd6Ðd8Î%‚Ù1î�1:ˆØ�ᬩ ÃPuŠQBcéV š„è0w·ÀÂÝ,2!�;�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000223�00000000000�011562� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/themes/soria/images/spriteRoundedIconsSmall.gif������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/t0000644�0000000�0000000�00000003621�11360615642�027227� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������GIF89aK�-�æ�«®¼ãë÷œ °ýýþíîð|—Üæö®²¾w|’ððòƒ‰áéõäåêöùýÀÏèéêíÀÂÍËÒߎ“¥¾ÁËíòú¶¹Ä‰‰‰¼¿ÉÑÓÚÌÎÕ|‰ÇÇÇÊÙò§¬ºsy±´À‚Š¢®¿Ü½ÄÓ•ž¶ÅÉÑ—›¬ÁÁÁƒ„†úúûÅÖñ±±±Ûãîõö÷ÛÛÛ¡¥´¸»Æ¢±Ë©Âsy‚ÔÜéÓÓÓ»ÏïpvdefÒÙånt‹´ÆåÛÝ⦦¦ö÷ø½Ðïéíñ‘‘‘Ôàõ𥻸úý¼Î쩽ïôûª»Ö…†‰‹ŒŽøøø¸Ç㧶пÒð¹Ìë¶Éçy•ÈÏØz|]]]€…šØÙà´·ÂøøúÖØÞˆŽ ÝÞäßàåÄÇÑóôõòöü¸Ëêúüþ”˜°¶Ç¬³ÄŸ£³w}ˆ’—©½Ìå‚‹˜ååå–£·”—œ¥ª°†‰Œ™¢ÏÝôœ ¥éïúÃÊÙóóóŽš´ ¯Æßßßµ¼Ìôøüùúûæîùüüüÿÿÿÿÿÿ!ù���,����K�-��ÿ€‚ƒ„…†‡ˆ‰Š‹Œ‚XZŠ‘“‰_ ”’ž–ˆV^0%W†¤¦¨ª¬†R/[f=­¥§©«¼¯¿²„��(~É~\…ÆÈÊÌÎÅ/YÊ~ÅÇØÓÏÞÒÍ„fÊ É/åçØëíƒh~ Ê$îÉöñúýˆV'›<AV Øä˜"É$t”ÐÏ�=HÀ@ô#qšk\ÒÀž‚ X$€!ÈÆŽUú°@!CŽ‚0 XñF‡›7ø ñS†£z`œPrbÌТ‚PxЀ†7ntPðÓÄQ?zøLY‚E(Q£t‚  „J/OÿÑ>PP5 'ø½ðAÐܪ,àhXBboß?_¤Ñ{bp¡›üÒåxpa$|%Wå㥠•�†£z�½�B›¼zÍd Z,Y½|TSdÁ¸ „zÑÈ’ Z)Ó1©Wÿá͇DJ”€–-è@Ø$€ó¡á!Ë çzYL1 —ºuA:èS¸;ŽןÆí==Ÿ ^øâ½ 8¯_°e!üúÁÆŸƒü€ëña€ü—_‚: ^’è@™f!†²À¡‡ƒhà ±GXra†vè"ˆ1’Xà[ìP€.ˆü€£Ž<2€è�7†ø˜ãÿŽ»¢$M6"å”TViå•Xf©å–\†J"•|‰H&› yH˜— ‚æ(½ÀL!®øË!´Ø‚K„Äé&1ƒè9Œ!Ð|CN7Ñ$N5×(£™:5ƒ8jè à½ãG: b<™ B=øèæïü£èAl:P2±CHBô‘N �ÁôGEýSëD‚|”L ø `J1%ó… _ìš’>,Á„ 7qÄ«Z¬±Â'ôaTií4ÀX ­g‰öO',±Â}påU·õá‚&[.¼0±D 9ذ­\ €Bœ`AÚföÇ\±àà BØða‰ÅÚ‡ÿã!ld ܇ÃK<€Â #lC)01±h?ôñC5Œð ÂIÕ²¼ô¢0³p·€°5dps »yÐ2¸âÖ°3Ë}@›ÁÎöAóu0 Œ‚ J÷ñ@uT#\‡ u ¼õw©~€p 6èÜçuðÛZsÝ\Õ&HÌ„uŒ=~=ÀÝG x}£ 6à‚ÿa ~×±Eƒ{î7âö 7å~À€¬ÈXÈ…šsî9!&vÀÅǰ8cè tnã oÞúè„<Éd?Þ.$‘F2zã’xb{ð]oüñÈ'¯üòŽ|’æ™Î+B&'^>oÈšB¶ù'œÚÏ9K-·äeÿŸÝ¿™gù| bLE4Ѐ‡F �ûîÃO©ú/ü FE °h8ô{_üÔ7¿ö ð~æh�@ƒ²€ÁU¤R`� À¢Šz @h°€9èaîPà(È †p„d )€p GP €[Yˆƒ v8ÃòêhÐBÕp„4ôð$,Ì¡’à€Ú‡cÐÀœøð(à@Ðp†�Aø�Zt’Å#Ì ‹j�£YÃ'œ !�ã ÞEÆ6:AløbÇh…,¡‹9ˆ6„'$A3˜Á €À2f.…äÁf 0Ò‘‚HL!oH $î‘€$Ÿ IJZ²‘TÀ&ïP…@á’‡‘ n�…;¨A‘7PÁjæYÞàŽl¸A.wI�“j¸r)¢ÍÒŒh&/gƒÜá g€‚.yv�ó1Pƒ0› ·?tS˜QpBÆYÎ A˜jˆÁ7›Ð¶æxó›ó,ç9‰ O(l! ä$~’€Ï„‰hAš89¡ Q°äGP|2ÔAýæE?4‚Ü€1Âë.Ôцôu&²Ay )´ès8()HE:#™žÔI¹#Þï 4 ÞàH¸Þøj—Ó¡2ï¨HMê"�;���������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000212�00000000000�011560� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/themes/soria/images/spriteTree_rtl.png���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/t0000644�0000000�0000000�00000000517�11360615634�027231� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������‰PNG  ��� IHDR���6������x-ý���tEXtSoftware�Adobe ImageReadyqÉe<���ñIDATxÚì–Q „ †U<N=u.Ð=ŒnUO=öÒA",Ée‚ÜÖVWCv·ðƒhê·±”ÝEcl¬ig·Y–aS.”Ψ)‘¦)¢”"BÈ!·, B ¶m?.JÇ‚nг±²,ïiìjЮë^6ø<Ϫÿ!ªª:üµ¢(ÖÜ I’˜LE=꺖Ã0Èq%ç| Ƙº†û‡çÞ½oÓÙ‡«Î™0NE¨8L2ŒŸE™¦IC¯´Î¾¨®:ÁÆýÖByž«öòA×ùÚ³}P~aÊj¬ïû „Ò‰gÅhì¢<�gÌ?¤–Ù©����IEND®B`‚���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000213�00000000000�011561� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/themes/soria/images/progressBarAnim.gif��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/t0000644�0000000�0000000�00000022130�11360615636�027226� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������GIF89a �d�æ�áëûäíûÈÜúÌßûâìû¬ÉñžÀñÆÚúÝéû¨ÄðÐàùÎàü½ïÙæû«ÈñŸ¾ï×äøíóýÒãüÕäûÔãûÎßùÒáùÎÞù©ÅîÒâùÐàú¢ÀïßêûËÞû°ËñÈÛú¯ÊòÓâû¥ÄðØåøÚçû ÀïÞéü®ÊñÔäûÖâøÎßû¢ÀðÚçùŸ¿ðÄÙúÞèùÞéú¤ÂïÙåù¢ÂïÌÝùïôý¬ÇðìòüÅÚú¦Äî¥ÃðªÆð Áñ¨Æñ¦Åñ£ÃñŸÀñ§Äð¢Âñ©Æð¦Äð©Æñ§Åñ¡Âñ¤ÃñÐáü¦Ãð¤ÂðÖãøËÝúÊÜúªÇñÔâøÕâø¤ÃðÊÝû«ÇðÛèû Àð©ÇñÍÞù£Âï­ÉñÑâü׿û¡Àï«Æð¨Åð¥ÂðÓâùËÝûÌÝúÕãú¡Áñ«ÇñÏßù©ÅðªÇïÓáøÔãø¥Äñ£ÂñÅÙú¢ÁïÔãúÑáúÉÜûËÜú¢Âð§Æñ¨ÆðÊÝú£Ãð×åûêñüœ¼ïàêú¦Åðÿÿÿ!ÿ NETSCAPE2.0���!ù���,���� �d��ÿ€8‚0/}0,Ž2MM#�Ž0#‘2–’00‘MŸ¦V™¦,’’,¹¹}¥¦�º¹°·À2MRQQM�Í�‘ÈM2ÎÍ lÉMÕÐMÉl”Í eQbbQVää&çêeíä$eéé ü÷�ÅôãG‚˜€z"˜ &ƒ b¬H”Ø @€$&JŒãPŽœ2$B†ÔcAŽˆ ÇÂI9!V’hàñ¤= ræ ¡ÁfJ ô˜´‰¢‹Q£4 YªAÓ§*HEç©S ²d¹P¡Ì„¯_ÑdÍRAد.d©±5…·ÿBd%C¦Ã xñ.èÀ—/—¼\”d!ãÄ \'Сpa%‰•(ÙëäÉ<$kPÙ²““ˆód·'cD«îPzŽëªES™# öœ¸qw0ý¡wîÜ´{˜Ó—/•Þ’S)ÞAÀ‡äo>P™>ýÉóorP§þ<‡ j‹þ†‡š*Ò«ßR…‡û âË¿ážÇ—òão!ŸG•ü œÀDð°Å "8 <$ˆàiD¡[TX!i€FDXX¡Dh¸aP@ˆ"aâŠÜÆò°¢‰(Šh¢8žFB$�8¢ €qF@†ÿL APBIÄM‚Å•XQÄ–B€aÄ—_.¹Ä˜;€ ¦EŒ9…>´éf;ìÃn¾ §SQ§vÀ G 1!è B,ÇŸK :¨¡‡Æðãq(Zì�é£Eh1©E\úƒ¦‡Î0E¤’šÇ ›–Z*ª“2¡jLÀ±Á‡N‘Ä­·:롸„¦^K©¯Ä*,Äú ¬°u�1ijC˜QB -”à´ÐzqE Wxaà‚«-µÝ† ®ã¶àEì¶{EÔÂÛ®»ð¶ÀÀ¼íÖËÀWôë/µðÁ�·þöÛBÀ¡ðÂÔÒ p +¼- 3`ÀÅ·@1 cŒñÆ·à±A �ùø�!ù���,���� �d��ÿ€6ƒ�/ƒ}„ƒ2Mƒ�‹„0#2“„Ž0š0R…Œ˜—V #MM¥ ,¥ƒ,Œ}—�¸„–·ŒMRQM�Œ£QM2Í„ lÉMÓÉl#Û eQbQV„&åbQeë„$eçƒ óƒöƒbŒH°ÓOŒ€„&ˆÉ Ç‚+Œ„è·"¡8 Y ÁH9 ðq¼h!äŸ#ñÉùcROF!4(@óÇÂKBz@BÑ…™ƒ4è9¥æ4q†ú™åÏ… e&0ÒP¡i9R …¸¥F– !(0ªJæO‡-èÀˆKÚAJÿ²qò‡Œ .Œt  ï µNžüÁÓAIÞÀƒœ,0LhÌ“9žŒYÀ¨ÃcB(¢2GÀ 9šu€ÜøT烰݌úÀŸTV§þàú5FOhÿy“ã6#Ú9Þü9à™í7.ÔTñpjKB7@œºñeЗÒ 9Ä£JöA'ªá¾å£-ã¹›g”†‘ƒ-Œx¤ó' ø„¡_¿ þAûBDîÝÆôñ@ €ü ²à g€‘€ üÁƒŒìWá`œá P€!„€xĈBqÊE "F0"â.ÆÈˆEÐ(„>œRăLÑ##-9ECbÇÉÄðǧ±1,%#SÃ>ù‡;pIÈp ¢EbRD™Ì0E§ÌÀ¦p2"'!LÔ9plðG™S$ÁH™~–)(!ZÀáÅ phÄ ,Z棈*Êh”bF -üQ‚CœâÅ-\á…¡2j§¦"Áˆ«FjÆ)WÑiWô@«­¡ë)¼þñÀ§túÀ ”Zì±ÈQ¬°|$ë,!¤2ˀϒ,¶Œtªm ÜÒ:ü±*‚E �!ù���,���� �d��ÿ€‚}}ƒ{ƒ‚2M‹Š0#ŠŒŽ0—‚0R‚‹ V£#Ž£,”,Š}±�´ƒªš³ŠRQM�˜MÂM2ǃ&lÃMÍ‚Ãl#Õ eQbQVÎÞbQeäƒ$eà‚ ë‚î‚bŠ$lbõbzøƒ&ˆÉ Ç‚+�¹…¨7ÏŠ¢8Y ¡H9 æQÇBÆ?r6“ó磞ŠBhP€æ”ƒô`üÓEEVVø£A"ž-iÆñ9(çÎ ÊLP¤¡B–?ä,M–Y.„ À4 ™?HHÙA—±ƒ¼:ùCFEÿ:¬¤ä­ rŸüÁÓA \'zÿ8YàwИ's><³@Qă4DeŽ�As& êØð�E–?ð™²è>Ì);HÀÔ©©(zòúÏ›²½Îñ&Ç˃^¿qñ§Š‡Ÿ[ªüQó爟7¾ðøóåÄóAÉ¿üáQ庠U¦oßrBQòA<Ê+R>ÈÁ–ŸiÀüICä½""òçW±/ÿ "(âÀ`!þ—Ÿ r ‘ÀvÜ¡ `œQ¡ P€!Äöwć€ÅOG!ˆ``¡ˆ‡K¬hÄOBã‡>üTÄ‚‘£"*ò¸„ŠØ±ã Gи¿1,‘¤"K†ñG ?踃”ZìPå G ¢E[öÈã3LÑÆO;Àá噊ˆ ¦ L°9ü¡æI(¢fjæ9ˆpx!Z�¡ç‚ªièŸZÇ¢‚˜QB ”àÅ?yqE Wxa¦ƒhJi§H(b†¨ˆšQê WAiWôðS«¯šñÓ® rÅ?QúÀ-pÚë¯0D¯üÊ@ DzÚ± €¬²-H«È³‚,k­ ”NÈC'*E �!ù���,���� �d��ÿ€‚}0‚08‚‚2MŒ‹0#Ž�’#‘‹0ŽRM ‹œRMV§#¤­,–,’}£—�¹‹°¤·¿‚ŽQ¥™¨MRQM2Ë‚&lÈMÒ›MÈl#ÚeQbQV’âbQeè‹$eä‚ ï‚ò‚b’$lbùÄèá·h‚˜ r,ˆ±BðOƒùîY‘¡ $& ÒcAŽ‚{$(ZøøGNI äü!â䢠Yér£Ç?h è"‰BÌ 4èѤaf4q†.ò ôB…2$i¨åO9Q_¢¹P#Ë…¤f!ó§Ã ’B Äí"dÿœü!£‚‹$%ä RbwQÞ'ðtP"i€Àœ, ¼hÌ“9žŒY ©ÃãE(/¢2G€ 9šu€Üxí¢Î 0-ˆJê>Ìé IÀر©HzrûÏ›©%ÝÎñ&ÇÏ‹n¿qáÛƒ¦-Uþ¨ùs„¦_xüùrÂú"èÙyTñ.èDíxl9! :zì%_ä`‹¦/`þ¤!b_üúUÑŸ �øhrGäÇC‚‹aà r ‘@zH"ᆀqF‡‚@†’(G "šQ„ B€…$'.A£šQ„Ž(ò(I;RÄšÌXäÒEø ‰D‰¤$B,±äS.be;ÄðC’;„Á„;|¹H”aü¡Efæ3Lц&;L!ˆsJ"‚‚0‘ç";lðL‘„$E Jè¡’Àá… phD£<J褋há(¤u`*ˆ%´ðG ^ ¡‰W´p…f˜ºª¢®Š„$fÀZ©³.rE¢qEšìÚ«ÀJ« ¿j"ê¨z…²Ì6„²0ÛB ÓêÚB´ @-³ ´à­$Û ,û‡U´ùÇ[�!ù���,���� �d��ÿ€}0/0{6‚‚2MŒˆ#�’ŒŽ#š‚0RM0“œRM #«®,–,“}£—�ºŒ±RQ¸À‚ÄM�“2MQQM2ÍŒ&Ã¥ÕÐl#ܯQbQV“ eåQeêÖeæ‚ ñ‚ó‚b“$lbô‰ÑÓÑ1äXc¥àŸ!ôá³2)NBAHP¤Ç‚øHT´�òœ"ëÉùS2DJA!4(@ÃRÏ$=ÿ Q §Ë$ 2+ÔD¥f4ql2*ôO…2&i¨Å©œ¨ŒB ¹%Ë…¤f©ñ§Ã “B èÀˆ ZF*ÿ:8ùCF—IJ²Ì¤ä.£NžüÁÓAɤ9Y`˜Ñ˜'s><³`RÈ+3¢2G€ 9šuˆìxÀ¤Î 0½9õ?æ°e$àÃkØTfÿybûÏ›¨L²ãMŽÂÙ~ãÂ÷mF[ªüQó§ T7¾ðøóåÄuèU´Wÿ.èD•íxl91):zì'gä` *ñiˆØŸ„þOš*û â@D€ `FzÒ· # 2FB$ž“1¡ `œ¡  Á BÄ"þ¨Q„ B€Å$`±ŒF "D7Š˜ã$Eì HGø�äB.Q„È‘ŒØäGè¸D’D9É”aì°Ä¨;ìÀ%#Of©Ec¹Ã—3LÑ*;LÁÄZ¼9‰S0„ŒÄùL‘Ä$;0±ÁŸ J¨‚À¡“äÉ( N£ÖQ© f”ÐÂ%x1*^\ÑÂ^˜1*#¥~Š*“˜Ñê©ÂÊÈA|Ä= ‚«®fô:I®‚ðŠÊ§üq**Ê&«ìÇþ‘¬®“˜êl D;-¶Ç:Ë�·Œ û$NrÄ 7ü�!ù���,���� �d��ÿ€0/„{8Š2MŠ2‹0#Ž�’‹#›Š0ŽRM0¡Œ¤M©#RM,©,—˜“}¤)�¹‹°RQ,ÀŠŽÄM�“2MQkM2΋&æÖMbl#ÝÉlàQV“ QQbQeë×eàŠ óŠ$bŠb“Âñû#FÀEÄdcAŒ•ƒ„觨Œ•Iq*²@â¢"=ä(¨H£…‘ä4(yOΔ!X* ¡Aš—z,Ò#ò*'Q¨Yá%Š€nVø©G¨†¢'LzšE‘©‹B ¹PõB S³ÔøÓa„I!t £ˆËÙE*ÿ:8ùCF—IJ²°U¤äî"µOþàé dÒ‚1ÿ8YPøï“9žŒYðñ_Ê‹¨Ì hfE /3`ÒæŠ”ÎŒúÀŸs:LðÁõk*²=©ýçÍT&ÕÎñ&Çà‹j¿qÑû�çE[ªüQ󧊇€7¾ðøóňIѵsÿ¾èD•튶œ�^õ“Ú+r°% ö4iˆÔŸ´=ÍŸ4Uì7D(BDAAÄ`üÁ‚‹8Pà".EB$à “œ††€q‡‹€!Ä"Dhà'†E@G¡ˆ``1‰‰KÌhD@B‘ã‰;NRÄŠq„BþAäÆE ¹ˆCyä$B,±äGde;,Ñâ"C†ÁD—?I$—Q&˜;ˆ¹Ãmô&hç$"LñLܹȜpü1E“ì@çZè¡phÄ$S0á¢< 餈Öa©"y”ÐÂ%x1D@^\ÑÂ^˜1ê"¥~Š*“˜Ñê©ÂºÈA|Ä=„«®fô:I®ŠðЧüqj@Ê&«ìÇþ‘¬®“˜ê첓 «ì{m Ý.¢­ƒN–(Ý��!ù���,���� �d��ÿ€{}//0}88Š2MŠ2‹0#Ž�’‹#›Š0ŽRM0¡Œ¤M©#RM,©,—˜�“}¤),“°RQ¦À‹ŽÄR¹œMQkŒÍŠ&ÃkMÓŒMbkl#ÛÈlbQV“ ÐbQeé‹&eÄŠ ðŠ$lŠb“qÄì£Çß"b2ȱ ÆŠAE!ö)*ceR…Š,¨¨H9 &’°h!ä9 FÖ“óÇd•5(@ÓROƒEz@þA£�å$ 2+´DÑe’šxêù©A¨¢ ŒVÈ¢¨BÔE!Ð\ ú'£Yj(Z aRˆÈ8ùÃ¥ì"ÿÖ’QÁe’’,dè(RRwÚµx:(™´`ÌEN öëd·'cü3ǯäEæP4çò"Ç‹Æ ˜¤ùƒ"£Q1}àχ9& øÐÚ5•ØŠžÐþóæÀ*“hçx“ã�ðE´ß¸à}`ó¢-Uþ¨ùSÅÿ_xüùâ�Ä$èÙ·Ÿ˜t¢ŠvEUÆ?7¿Hý"öŠlù—=Í"ó'i·Ÿ¦Jþø<aü`€ñ.â�“4¸ÈB$° “œA„…€q†‹ð Ä"D€¨GŒØ!ÿQ„"B€Å$`±ŒFü#D7Ž˜ã$Eì HGø�äB.Q„Ç‘‹ØäENbc’ñÏ;„±ÃBX¹Ha0±å@ ©åEùe–bþÑÆ?;LÁÄS¼9‰SüÁ„œv.çœt&1ÉsÆ�Ç‚ (Z�1‰œZüq¨£F*i”*’-üQ‚Cü£Å-\á…¡NBê¦"ñ«žêê"WÑiWôðO­·š¡ë$¶*’ë?>ðG©ÿkì±Wû‡±·ªÚ²¥1I±Çþa�±Ô±í"ØËâ"gl!Ä �!ù���,���� �d��ÿ€0}{6ƒƒ2MŠ‚‰0#Œ�Š“#—„ŒRM0œ‹MRMœ#¦,œ,™•—}ž),‰š¥Q �ºŒ½R,¿‰2MQkQƃ&RÊQÎÈbË#ÖÁlÙQVº ÊQeâ‰&eʃ éƒ$lƒbºqbz÷‰HˆÉ Ç‚+�•á§ÐÊ8‚ƒ,p˜È‚ IèÒ‡ñœÝÉùÓ1DÈA!4(@CROƒDz.þA£à£. *+DÑE—–h깩Aç  CÍ2¨B]!Ð\`ê‘‚Ï,5e‘�u@2NÈpášHE'ƒTpÑ¥$ :ƒÿ”¬MäÕÉ<”èZ0æÉ ' ôÒµûáɘøúÒEœ¨Ãƒæ0NDåC¢1tu`ù€Ìº,øóaN]œG“¦rzГ£ßø@%ôor¨ödCN´¥Ê5ªxÀwã ?_€ÐUÜ9ôÓ¨ò|P•샊wÿ³÷DUÊëržæõ‰ž·OÿDÚ)€ 0ƒðÀ_"ñ€ ˜ˆ`$àžºœ‘ß `œa|óýAÄ…ƒø'…PàCDƒø±D‰F¤XÄŠ¶¨K; RÄ>ÌøGK‘c"vÐh#Žº¨ÈãGà³Ä¼aì°„I&BcL8ùÃŒ56ùGWJÉd•t™ÈS0ñÇ"à#Â01ÅmàC¦™SL‘„.;˜ƒ™wâ©'Z�¡K™ZüÇ‚Z¨¡u$:HLZ‚Cà£-\á…•êâF hŠ>n\ꦣ&2D qEø\ÁêA˜«.³†zk" >ðG¦øüêë¯WàÓ믴êbê°™¡Ë± `,³AHËëÌZ;È7Ü��!ù���,���� �d��ÿ€/}{ˆMˆ2‰ˆ#Œ�‰2”#˜ˆ0ŒRM0žšMRM¦#ª,¦,›–ž}¡),‘¯RQ£�½ˆŒÁR¼‘2MQkQ‘&ÀkQ#�ËMbÏQÚ‰ÆlÝbVÒ‰ Îeçˆ&eê î$lëb‘qrþˆÑÃ/ 1�-”+ˆ¨L†De¬Dj &à $$& !GAC‘ôXðøGN‰’ Q ÐüQ §A"=ÿ Q`2˜f¢èIƒÌ ;õøÔQ¥‰˜fAT¡Ì„h.L-y5j–ˆ²„ˆb@2NÈ,IE'ˆÿ:p‰¤$ :œ(™›È¬“':(‰´` à9N îûwΓ1 úþ€h@äDžPþ3çr"*©ÃœÍHGšóçÀŸs:D¢òÁõk*²ÕþóæÀ*‘jçx“ã�pÝÞ¸à} t¢-Uþ¨ùSÅC¿_xüùâ�D$èÙ·ŸðŽèD툪GýŸ-'"OT%~¤ìiþðØÒO{~ýü%â�DäGDý@Aˆð€ €DüÁà&¢à„<8É2Æ&ÂC"""ý,ˆˆ``ÑÏK¼hD?Q£ÜI; RÄ>üøGKQdÎ"v�)$‘‘±’ÑÏ”aì°„V&dLhùÃAf™ã˜^î�fh&²ÃLü1…mD"Â01ÅuFòfœ{&ágœ10† ƒþQ¨@D§‰4ê(¤ÀQ‡¤ˆäÁ„p”àÅýpúÇ^˜j$nÀ1ªHôãÆ-üQj«‰ áF¬A\ÑC?C«»&‚„¯ˆèÚO¬ÀzŽ-$«ì±$‹k$W4‹H W ²°þaÀ±Î¶Ä·‰p +¹ˆqCtÔýáC �!ù���,���� �d��ÿ€�00{‡}M‡2ˆ‡#Œ�ˆ0“‘—ˆ“RM0œ2žM£#ŒRM,£,š•œ}ž),«RQ �»‡“¿Rº2MQkQ�ˆ&¾kQ#шÊbÍQÄlÜb ÌbæÒeék í‡$lêbßqr bzôÑcA1Vþ)“AΡ2VΉQpȉˆˆBø{H’žä4è˜ñÅ?!HÒ£A“z@ÚˆFHHZV0‰¢ $ /+ÔÔƒSÃÎCˆ"2šåP…22¢¹Ð4dÔ¥YjÊ‚BÆÈ8!³@$œêÀ’’,dÿèüq¢¢-"°NžÌUiÁ½sž,à{7oà1 ýùûáЀĈ:<iügdDTP3�R‡9”t†úÀŸs:@¢òÁôi*ª 0ýæÀ*žÈñ&Çܼqñ§¶�H[ªüQó§ŠÅ7¾ðøóÅäU¤S?qýЉ*ÓUé~(yø?[N@¨ŠzHÒÓüá±Eñtùóë#rÀƒˆ|"ÊA`BD8@Ĩ؀Îç�$gøF`œ1!"<¤qáDlx„‡€…b"X(vÇ*¡Ø ,ñ‡È ;RÄ>ÌØãE I=þñ£É‘*.1ä0Bâd;,!D”>îUþpdT*é%"HnÙ㘈ì0L!Bˆ0ÅLL±œ¨É¦x²›10fž€r $kjq‡"ªè!u4zHLh‡^ ¡˜¥‡xa†¦¸ÇWx„bnü1ª§§"2„¨qEŠ G ±šA+"H˜+©»ºúÇ´pÅŒ-[ì±àJ,®A@rE²‡-"Îû‡ŠQ[lÜb;lµá"FvP:0a �!ù���,���� �d��ÿ€}{†}/†2‡†#MM�އ0“#—‡‘RM0ž™MRM¥œ“©,¥,š†•ž}š¡), Q¢�¼†š¿R»2MQkQ�‡&RÌQ#чÊbÍQÙÄlÜb• Ìb$&eékÏ$lêqr rôè;DBŒë¬ 4T&ÿ?e¬œƒð…x±Ý!=å4ðh(„‚Š!Hþ©�Íz<2ù @™5(¨ðE—G\V°©ç < e(ziCÊLЈæÂÓ?r¦6ÍRÃP–4è@Æ ™©èàÄP.iÿ )ÉB†Î'*¸<ëäÉ]%Œñ;çIÀ‡ô-ügÁ¾Á p|¨Ã“ÈæP>DE�æ1u˜óáÀ¡‘6ôaN‡GTJ³¦òú�Óo| òèÉoràýèÃr (^åš?U<ì»ñ…ÇŸ/@<ÚR¥úõÚ ¨bÝP•ð†¸—ÿ³åÄ#ò‡ª¸T=Í[öY·?ÿ!<aUøgD€a<â�(Hû ¨àD8ðÈ‚‘�ghxixF†Xø‡`PøH‚+²ˆÅ>waˆFìóGB¬øGŽ€ÑãEáÃ>GìðÇÒEùH’†éä!K(¹Ä6>Re;,!D–Qî]þðHJrI¤™‡ 9¦’l²ÃLü1…m<"Â01Åy>2gjÈuÆÀ—Iš(™B§†ø¹Ï”V Ä#y0¡”±Ï§‡˜!ê#nÀaˆHìãÆªzaF«‡ ‘êA\ÑÃ>CÀa®fìz¿¢+¯p<ðG Wèh†²Ë6ûȯʶ€ë>-@ËlX[í`«máâ­!-”k[ñ{-�!ù���,���� �d��ÿ€{8…00…2†…#MQ�†0M–†RM0œ0MMRM£¨,£™…”£™Ÿ),Žž’M�»…²‘®ºŽ2‘kQ�†&RQkQ#ΆÈbÊQײlÚb”Ž Ób$ÏeçÔì†$lè Žqr r‘cAÁ V*“¡ßŸ2Vʉ1xDDC!>$áHO?4ä4àˆQÈ?!Hòhò=øJþAã/æJ *¸DÑÅQhêɧAg¡ C ÍR¨B™ Ñ\`ªÒ,5 e Aã€dœY Á‘ŠN uàR¶’,dÿèüq¢‚‹£¯NžÌUb·Ð‚1zç<é än^Áäü¡Ðņ:<iügdCTP3ÀQ‡9üÐÙè?>ÌéàˆJèB¨°6$@ô›ÔT=±ã@nGr¸øs[�ðÔü©â!Ÿƒ/<þ|q�"_èÒOT7T%z¡*Û ménhË G俟w=Í[òEwÿ>¾!<ˆ¸'RÅ~!(D€Q8â�H €èÈú‘�<8àiXF:àB€E>#–ùÜq‰B‘Ï Aâ2:†q„ùQÄK¤#GðèãÉ‘†±‘¼èH;„±ÃBHYU2qåù<ie`RD—O–iÈS0ñÇ"´áˆSüÁÄ;Èé›nâ©g!;¸V&±§ ^jH›Zr'ŽLѨ£’ZÀÑhŽdjˆCäㆠ!ê¤þa†©† 1j!WôÏp˜ñGfÈZª­°êÚj­´pÅŒfxQˆ°ù˜±ÂÁÞš,³Á^„#+üÁl O ж„¶†`Û-¸…œÅ ßý¡f �;����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000203�00000000000�011560� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/themes/soria/images/dndCopy.png����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/t0000644�0000000�0000000�00000001411�11360615636�027225� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������‰PNG  ��� IHDR���������óÿa���sRGB�®Îé���tEXtSoftware�Adobe ImageReadyqÉe<��žIDAT8Ë“ëK“aÆïMwð�nnºæ!çærŠ#·¥ls‘!BÚÔ55\•B³DÉ4­\sâ!ÍÙÁ„Be& 9gч ³òKü#üÞãêÙœª îOïû»îÓs””L¤¢€Ò~„Ó»KPr£™u©)ýö ¨ˆB ãuxº=‰ž¸ôÕ‰úõZ4|ªEóº¥=¨„BÑÁ¥žþþî­6ØBf”ÐyµÐ ä£p®�ª™<¨^…yþ4ø&~x¿ Ë›>×£ò­ Ö`9ª*±+ãŒ9ϳéÏ@ê£hýj>Z “„LõcvÜd™Ï1øLÈòÝ›]qƒ¶×!{,…tB‚¤a1xCIkH™‰†SÛ8û®¶5+ÊÞP´p77Üq×û¤Œ%C<"ßÇy"Ÿ<lv£‚»ó³–µ2 ‡e´ §|zÜ^Ù« }Ñ uo>´}ˆÚ ‡ò1“ó •v³i_DÕ뽞ÿ%å ä%ÌÈÐ}ö5h]¿úßÖùŠhÂ&fMÎ96.@;«ÁÝÍø·&1úmÁßÁ8°ôk ýýð|ñ eµtƒ„d'q$4R ™­¯ðUr§³!ŸJ‡xTÇŠ#nP½X ê£ð>íÌ€µbfCLÌ#“Ù_Œc³ÈyÆv=™¤1œ+θ}Ùzc°¨‹…*ö´¥ ²,!ó§C2ž†D_*æm{=ÏY÷°5ÊwRD<d¹øaÝ 5„l×</Ûu?ÁµêŠF´ôÌ‹À—)Lüƒ÷ÀL”. ©<i w€Xxc=÷”WXfÞácŠ+YG&E r;8yAÆBq‹¸ÌZ ¤êŸó7ʤÜÞ'n����IEND®B`‚�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000205�00000000000�011562� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/themes/soria/images/tabStripe.gif��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/t0000644�0000000�0000000�00000000066�11360615644�027231� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������GIF89a��‘�”´æ‹ ½ÿÿÿ���!ù���,�������”©�Q��;��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000223�00000000000�011562� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/themes/soria/images/tabBottomActiveSpriteLR.gif������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/t0000644�0000000�0000000�00000001345�11360615642�027230� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������GIF89a2�2�Õ=�œ¾îÝèú™¼î–ºîÒâû•¹ï×åû—ºîŸÀí¢Áíž¿îÏàûÔãû¾îÛçú—»î›½î™»îÍßüÙæû¡ÀíÊÝüÞéú£Âï¢Áïëñü¦Äïêñüìòü¬Èî¥Ãïíóü©Åîž¿ï¡Áïïôü¤ÃïŸÀï¡Àï»ÇØ ÀïàëüÞêýêñýëòüéðü¸ÄÕãíýíòüõøýæîûïõýåíüó÷ýáëúñöþäíüçîüãìû‹ ½”¸ïÿÿÿ������!ù��=�,����2�2��ÿ@×nH,Ȥ’xÚuL’&„¹\J’ç‚aH¢ô²5iP‘È"a4¤P)$¡Ð!ÐÃëûÿ€‚ƒ„<{…‰Š‹‡;|‹‘~’–‰”—š„™›žŸŸ¡¢›¤¥—§¨’ª«­®Š°±…³´ƒ¶·¹º ˆ½Œ¿À˜ÂÃœÅÆ‚¼ÃËÀͽ”ÒÓÔÕÖרÙCßàáâãäåæ"ëìíîïðñòC øùúûüýþÿêíð¡ Áƒ*\È0· HœH±¢Å‹3 Ð3‚Ç CŠI²$Ž �¨\ɲ¥Ë—0càè¡Í›8sêÜɳgÿJ´¨Ñ£H“*�Š ©Ó§P£JJA‡!(hÝʵ«×¯`ÃR¸ê$Ù³hÓª]˶m²**ÈK·®Ý»xóVP1$…„¿€ L¸°a |w¤XÀ¸±ãÇ#Kž¼àÅ2kÞ̹³çÏ  XVÌ ´éÓ¨S«^ÍšŽ!9 ÈžM»¶íÛ¸sX1DÆ„ßÀƒ N¼¸ñ ¼w°pÀ¼¹óçУKŸî€Ã ²kßν»÷ïàdrC‡…óèÓ«_Ͼ}{1v™1‚C† ÷[Œ¸cĆöÙ·ÿù÷A�8Â-|P`a,Ô°Ã =4±Ä†rˆa�;�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000223�00000000000�011562� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/themes/soria/images/preciseSliderThumbFocus.png������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/t0000644�0000000�0000000�00000000662�11360615644�027233� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������‰PNG  ��� IHDR��� ������Í£õ9���tEXtSoftware�Adobe ImageReadyqÉe<��TIDATxÚ„“½j„@Ç×h:mÅ'ļȅ"pyƒ[/)®I“NˆXå„€XXÙX)–‰‰_ÙYnÅvgw~óŸÅ‘ñ<åy~DíÐÿödÆ-v‡Ãl†a NeYâ`Žã@á;~^¦ë:Ô÷ýâ8ñü”z5íÆq$¾†à @XÏÆñë¦Ó4Ý<IJ¬E¼€ ¢išD *3 CZ£oú‚$š@!ˆa½Qµ5´6~®2)4÷‹J´Àº¥E7ôK»®‹Ú¶Ý$C çp;xÁG=`4ªªr}ß_(Ñp^×õ³®ë÷0Ó+1¸ãøEÑB â$I^5M{Äáפ4kå†!*Š‚¨À ± '|ý *d$lÛž I’JÜF™eÙ(Š(Ô4Í^Q”7|ý_bɲüQ–å;§k<Àªªð ?�Íù`�ýß’:‚Ö?����IEND®B`‚������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000226�00000000000�011565� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/themes/soria/images/splitContainerSizerV-thumb.png���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/t0000644�0000000�0000000�00000000171�11360615644�027226� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������‰PNG  ��� IHDR���������Úœ s���tEXtSoftware�Adobe ImageReadyqÉe<���IDATxÚbøøå_÷‚½?~ýgb€¡Ã0�¤Ñárò ����IEND®B`‚�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000205�00000000000�011562� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/themes/soria/images/treeI_rtl.gif��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/t0000644�0000000�0000000�00000000110�11360615634�027216� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������GIF89a��€�ÓÓÓÿÿÿ!ù���,�������Œ€Ë¦ ËlÒtk^v÷ü]!5F%t6©¶+׺M�;��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000215�00000000000�011563� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/themes/soria/images/tabBottomEnabledC.gif������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/t0000644�0000000�0000000�00000000521�11360615632�027222� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������GIF89a�2�Ä��ÁØñ¾×ð½ÖðèïýâìûäíüÖåøÔäøËÝóçîüÝéú½ÕðÀØñÂÙñÛèùñôþéïýÒã÷ßêúåíüÙæùàëû¿×ñÃÙòÐâ÷¹»Ý¼Õð���������������!ù�����,�����2��Î`&Ždi’Hª®l»jp,Ïtmßx®ï|ïÿÀ pH,ȤrÉl:Ÿ¼…tJ­Z©‚¬vËínà°xL[Îè´zf¸ßð¸¨Ûïøü½Áïûÿ€~ƒ„…†‡…Š‹ŒŽŒ‘’“”•“˜™š›œšŸ ¡¢£¡¦§¨©ª¨­®¯°±¯ ´µ¶·¸¶»¼½¾¿½ÂÃÄÅÆÄÉÊËÌÍËÐÑÒÓÔÒרÙÚÛÙ Þßàáâàåæçèéçìíîïðîóôõö÷õ'úû!�;�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000217�00000000000�011565� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/themes/soria/images/sliderEmptyVertical.png����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/t0000644�0000000�0000000�00000000162�11360615632�027223� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������‰PNG  ��� IHDR���������ÔTR¯���tEXtSoftware�Adobe ImageReadyqÉe<���IDATxÚbüÿÿ?`$À0� ‘û/ x¦����IEND®B`‚��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000220�00000000000�011557� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/themes/soria/images/tooltipConnectorDown.gif���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/t0000644�0000000�0000000�00000000315�11360615644�027226� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������GIF89a� �Ä�þþþæææáááãããóóóûûûýýýÝÝÝÞÞÞùùùìììØØØÒÒÒÖÖÖäääàààíííÎÎÎååå×××ÍÍÍëëëôôôòòòøøøçççÌÌÌÿÿÿÿÿÿ���������!ù���,����� ��J`¶�[ižåpB€¾ÁÃq‰F¼¦¥%3§0œQéÍb`ì!(È¡Ù#P0&LäBíe$À$Ó5 ‰ l,h2šÛˆ`º!�;�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000205�00000000000�011562� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/themes/soria/images/dndNoMove.png��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/t0000644�0000000�0000000�00000001245�11360615636�027232� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������‰PNG  ��� IHDR���������óÿa���sRGB�®Îé���tEXtSoftware�Adobe ImageReadyqÉe<��:IDAT8Ë“ßKQÇ¿3ëþpk×­5üQiˆ”ÔCm)=VÒÃBAÕCAQYI=dA!AA“ôCÓ¿ ¶Öˆ ÊZª…Ý~(³ BI+ óíÜiƦÍ|¸gιç{Ï\ÎI¸�­]À!ÔLÕ6S1¨2%v[r½ûÀÚÀȺ-,÷X<s–ÓÉÝü¹+É_ûösúD'ß´$¬kÐúe¯ÏS4HqôÌ®KœÚ¶ƒ…e,46Ñ”u²u3§æxà N®jáÄÎ${à{çŠÀ€†ËÀÀhMÇê—rtI-'Ö'h›eÉw ÇTNpýok7°[:±ö›^._É/ñ8ó±ÍÕk8k"‹Æìœ"WõÇÿ*¤"‹­=r'8-M|ßÞÁl8ÌÏuõüÇDàc¨’Ù›O•Ž¿0ÂÜ¢8;åbaèþÂxS3³¢:§‰ˆ«Tb&áoi>ƒ0s‘(çm"ò¶¢‚#‚è÷mµ™»}óx¥k|­ë¼)S€š^Èü쓹Dн÷9ãAÍȰì}!\Lz߃LI \Ä’ÓH¬œgBZ8&‹ í‘Ïgÿ'N›W«êà¡Ð.c#€vL{6)‘R>o·›rNK;9w=%Ã×Ç@P;êÞŸ ™ê¸í;±s@F½ÙÇ䊨N gÓs§À‹úÿ“rrµS\þíß‘¶ÚÊÅ^� Ý’¾"\_bÆVûóN×nÝoNŠ<Ãi3d����IEND®B`‚�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000214�00000000000�011562� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/themes/soria/images/sliderThumbFocus.gif�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/t0000644�0000000�0000000�00000000356�11360615632�027230� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������GIF89a� �Ä�øøøùùù®®®ÈÈÈåå妦¦¨¨¨{{{‰‰‰‹‹‹ÞÞÞ°°°ªªªááá´´´ÝÝÝÂÂÂ÷÷÷¬¬¬ËËËúúúüüüûûûýýývvvþþþÿÿÿÿÿÿ������������!ù���,����� ��kà&Žd¹ XªªB‰iÚeÍÕ¥%ùVàK¤ !ˆ0ބ¤X.™Áa°A^*“ š! ÖËäB.C52#6“3]ÄãÅ—áÑ„BÇû /0x07 �'+ $IZ—$!�;����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000211�00000000000�011557� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/themes/soria/images/tabStripeLeft.gif����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/t0000644�0000000�0000000�00000000066�11360615632�027226� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������GIF89a��‘�”´æ‹ ½ÿÿÿ���!ù���,�������”©�Q��;��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000206�00000000000�011563� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/themes/soria/images/editor_rtl.gif�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/t0000644�0000000�0000000�00000007571�11360615640�027235� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������GIF89aô�æ�Që9YÆAn¾ÍÒÌ?£>SLI5™4³Äíw’Ü,+ÌÙõóóó¥¢ ¯ @@@111Æüüüƒƒ‚ÑllÝÝÝQƒÊGh̘ʘržëwvoÿ±°R„Êøùù`†ï½½¼êïúQqÑÉÇÆb~ÔM±Lööö…¥é«¹ÛîíícedbÆai˜êÿÌÌ—­äU~Ú‡·ˆýä1zèá>>Áº{ µêõøýu¨zÿÊ#ßåö興k´ÖŽŽçÁÁN¥ímÊòÐHH«¤eo޳žØŠ³Ü$WìÊ--t²]�ÿl—¥ýò•ÊÉ‚ƒÆ'öë÷ºÅدЮtœËûüþïí%Lwõ øÐË·ùXvÒö žâ�ZœMrÔ˜ÀÉOÙcí.Ô�êÿÖÞþû:tÜ̑ВÈQ¶|²WÌÉEüúذ-ev£Ê•¼ý÷÷ì­ð¹çÏÚAAE†ãÖQ|ûœÿkŽüúíìÍÓæ”骽•À­“ÿÍ´Í€ÿƒRƒÊ†”¾×•ÿÒÍ�óýççç'Œ&ÿÿÿÿÿÿ!ù���,����ô��ÿ€‚‚…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ ¡¢ŸHH£§¨©ª˜„«’ ±²²š ¸¸~®½¾¿ÀÁÂÃÄŘ¥H6ÆËÌž¶¹º¼Š­Í~ ~ÙÚ×ÞßÞ…¶LL&é ÓÔÍð›�ñôõóø®Pö†¥l¼Pö¯ ½qåÎ¥3±®¢w‘ü,ÙqFŒ˜9u–HC$€Ç@Ì@4àIlRªlÐm[6…H𡠦Ʌ °pb‚Ä"ˆŒp@X‘h>‹$R´ˆQc"¥/fÜhð�}‚hÝʵë�H�tXdÂ#ˆ'UU…Ki­¤«ùÿ°Ž*@—”~è>tC_‰& Jà‹+V@“ GʃùPåCÜDµÐM*­ ]Sk=´¡Bë °7´–]!æÌš7sî왨#? À€I3eÊA>t óß"X ÒƒÊë, péæŸؼé¢É&@€ÄqøÐw" è8„ƒ{DÀ…7Ž\ù¡üÃw\rÒôaàöÁ‰j ~%H‚"WThá…à`!*ø�<Èe 9Y H)¤8Â`@0Âhˆ‹T¸âŠ)æXˆ9ª¸b‹/&PÈ=Þh!B^"ÿ>"ˆÈ’B¨ˆ> Be“X:ÉHIÈ`×]ý$‘D‹¼1ÄC "¬à¦›vØ@Ôi'4†ÉcÎýe¢&óˆ˜Hs~éY¡‚Ašg¾Ñˆ( ݈%N—w.epH˜nSÛwáwAy祷ÞC”pn¸‘GQ‚>!ÀX ë3  ÀŸ‚ÌâÄËAv‹8Ý Â7ÜDž ÔPxÔÚ[$ħ Ý‘Èä–[.¬²Òzˆª¬ºŠî¬µfé¡&—vºM.rVbè/‚%Ö"¾² ‚"~ð¡ð 3lHÃ/ìPG,NÿÅ?B�‹ˆ¸ÕÖÀ‘ìˈȎÈÛ—]šû€ 2Œ™ˆgî{•£†L ÁÍÀÙÈÆD€aI{ÁxjÉ­ ì:C D›I”yt€Ó@ú‘!oÈÌ(`ŠD§�‡|p!Ôk¯¦†làm³Ý!›Ÿ>­´.Pk-¶Úâ#;´Ñi,±„q%� 3ýGÒ� ;øÀ ”O@Ääȳ/ ²@ÑÖmmBÔ „ üÔŠPñá ˆÞþRãRn; <0¸¬†Ò÷ßï^øá˜¼É¥W$¯| BÌ D ~à[IÛ„ õÚ¼‰_ƒV%rñüGÿÏß—œåÉb²¬~Ëb’)¡•¤ÙB %´�� 5ÛŒó |«HÏâ3„ € Ù@W9)Z&¸QìH;DÒG�̯~g²Ÿ•Q§_‚{u²T²A�L¡­œâwÔ¶ÏnT.]é\pºÔboˆp€w¨ÃB( =È X`4?ˆÀ p.ŒÂ‡ÀG·È\!¶ã’o4ë 8�bX·,° N°–> : ħXÄâCì`æâƒ¹ñà ‚‡<ô!…èÏÉóF  !ì*ÒsÄ„BÀÈF:²‘ÚËÄ uDGÀE1’"bä" ÝHÿG…0Ò% 0‰QI“Š…Æ A=•ð£" °¹o¨Ï}Vº ¾�€ñ%¸_Íú‡³œõo�¬�ˆð&DËÓ‰H  šŽÀ&6m5*B 4DK°™Ì��_`à aLŒ‚˜ä*I¶zUˆ;8¡ R(›×ÌfmžÓ"]àE0Šž†Àá!À d ÃU€à¢ )÷w\è€ðÙAGO EAPqà –å9&ø¥u PÔÝP8Í©P\÷‡3*ññÁ#@ÐN•èúЈN´xUú dyˆ¥àF,ÿ2¥!2Àô RNPè½DŽìC†(€±BP,¶+’ð"�X�¡‹¨X"0Ö°‡eLz]¦>VI>EÈÕ° ƒ\(±XE4ÉSåIµ!€[ °*Pçð'ˆ³m"æþŽ™ˆdv‡jæ ˜@iV‚F¦¤‘li¤ÙF¶Š€ÆV”€‚�8@!hàY6ð "𤠍 ÜÎÖõ®–z¿J˜ÏM­ SœºCK_êÄ@3­A Ö€*H8�¸p(R¥ …§Zf1‰)Á rÅÑØ7>+°¯}Kúe1ë ðΠd�‚ ŒS`iìiÿ| ÀSD aÂòqÄBð�¢<”½O=/zÕû/€8JRšªŠ©J1¾.l«~(B†"̪a|‚Y£ú¨¥!ÈEsW¨&ÈJ!R„ÁW>Æ>P™…M”Œ¬¥)oƒ(~¬U8$¯IuÅTM«²®³,ËB =àAˆ8ÛÙ(°\üÓßÍâ\ÚñµÌQí€V†h*.B ´ o²ˆmBÂж*÷ €ß‚Qh® *¨‚ãj!Bt> ‚,Yqe#a ñÉšµÅ¦nk @±H`O p‚b'4€‰å`)¸`P*hÁD�@7X ó²Ýÿ¸0þ à$@i@›à�Z±/$Ðàœ Üf�„)¼ PXhh#dçÆF<ÀЀ!xíë;êºôþ5•µYz=!�/‚f†(zùšRcÿP�8üáx‘qXC € ÄfÄ(3ÉqTþ㰵ъf„É`ÉY5eÇ“”J¹’”O,b٢؅×–ZD¿AK€Ãç2ø pù4§+ÄÅÀrB+gœù¯/·ŠÍóì+] ¤ }V`&‚=l »¸}DØmÕ̰¹¶~ÀÀfxÜ\ Àé\<ã–ÒÆ¨3e]{ÁÍs×Îö ø@kÿø àF¸õ†ë8þñèBì`„ʫ؊ûU‘ÍÁ(,>P˜³«mÅÍ9ËA`€ÂŒ‚< /�P�áž:¢@¸ pÔq1à‘<å-ÇÇC^ø•7ÂåûøG€;à9 q>=†y`a×_ØÄ+aX`Ñ{u±Âü*~ò»Øü|•:"¢ÞdL„ù´Do€@¢kAfú¸Á ¸Æ¦8æÿ‡À~Ë4(Í„�Ò‚uàg¡à+Fr×s`sˆv(*�~€�*ðg 0›‘KûòvaÓ}݇Þç}j~§OÀO°Ñ‚ªÖBÀ¨§z|Àz´æt!ÿ{´Çxæqà�V°U0„)À˜w“´yÐ� @¡·FGAÎ6m¡·RÞað5ª×z0x8Õ` Dwitn‹€{&°#.Šð�¿·{„CX)P+àƒ@(„Dh„û&%ÇóV „¨ƒXˆJ@}ŠÖ‡} ³}“0IX`¢Ñ~o‘è °”Œpe’uà�Šô÷e˜OovmÒt7ót‰ïCvu² €�  (e¨Ð}"Q3�*@5@\ ``WX� l0‰•XOÚ@f)=Ö¥B.Á)0¸…Ð… ‡´VxcHt eÿ0 ±°‡\ÀEpËñŒ»Â+ PT KH;�…ú¨8�…ÎÖ�à`‰@&€Pè�*óz²Gbˆpnñ1‡ðQpô{z A˜Žë( åhŽè¨Žì˜e<– õ"#¤ fµPƒ @.ù’/É� s4gSÓÐŒ°r1¢r#`çÓ<éq‹ $,—×12·ˆ›8%håXC¹´10Š¥ˆ}‘ŠlÒ&o¢3†€”>S€~Þ¶�vrv—�¢4óøgr "`µ+TÐ-À[⤑pÐ߇—€“:y- “0¹x(7®Ñÿ˜-øw‚@I¹1ð�‡ ykæ…G:pM’À¦¤Yš€wÁ¢ª©šÎæ àV˜…†àÀm ä’Sd¸7gôˆÐFB•8àŠ…�‡ö )šà™Ÿ™Ešቘp˜ˆ™˜Âcra|ÜÙ USv,€8yŠ~ᇞ‚ žy…1œ`e€Ÿ'W>ö‡GvõÙe€H•@zÞPmXé7À•ñ„ ÔLe9Rx’ ( ïXš¦é‰PŸ£À–‚9˜8‰WâT˜à x9žåyÞé}g/Ÿò´i›!`™+ð�0k1{œ‰Ö �ñ}xÅ„«¹šÎVK²y ù�(0m®§¶;µh`œ†à†ˆP.Mv¢'ê+y KùD–¸ ]jcªpO)eS· ´ô£ð’!pÊr:§pª—–£:jÍñ$iú r÷Ði�@F`›ð§6¯A¤Fúj: ¤ –Ù¤ƒÐ 昩±¦œª‰ÂðºÂ¡:ªÅ ¤CJª¨Ú  z�†ªÃ°iÞuC©Z«¶z«¸š«ºº«ž@:úA°@¿ú«ô�;���������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000212�00000000000�011560� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/themes/soria/images/spriteCheckbox.gif���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/t0000644�0000000�0000000�00000001406�11360615632�027225� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������GIF89a`��Õ?�õõõÈÈÈîîîñññöööíííßßßÞÞÞDDDÃÃÃää䎎ÂÂÂÊÊÊÚÚÙœœœÌÌËKKKìììqqp………åååtttkkkôôôÖÖÖ}~}ŽuuuÝÝÜCCCÑÑÑJJJâââccbèèè||{yyxðððÛÛÛóóóØØØÑÑÐØØ×ÇÇÇ×××ÕÕÔÝÝÝÌÌÌÔÔÔïïïüüüýýýþþþùùùúúúøøøûûû÷÷÷ÉÉÉ¢¢¢ÿÿÿÿÿÿ!ù��?�,����`���ÿÀŸpH,ȤrÉl½¨tÚ ¡TªUhày¿`žaØ ‡ÇBlVºý©×ÕaoPÌîwAaГÓíx3z|C<‚{<…‡ƒ‹Bsuˆƒ}‘x•r856>ŸŸ658–?=œž >¢¤…¨ª«£?<¯ª¬³§°¬¥º© ½›À £¾¨À6ÂBµÄ ²®Ð¡¸ÃÌ ÆÈÙËͦ747:Ì ã¾âÄÌ¢ê…â4Ä�ã³<ìîÌ5ørâÈ™C/Ò>~þn¬£‘�D"<(ŽÆ¼ýQÔGC€7\ÄñÏ™¼Œ-ÞÈ%®áÈ´ˆR£ÌH9t|0Qaÿ täð•S‡Å£:„–⑆  H!4_Ñ£“æÈ•sgÏŸA‡Ê¹ŠU«¯ ŒQBŽ;ÎÞÀA·îÛ¸…Њ°¢ wó¡µ[n.´=Ô²u W.aºåÈA‚‡ näÈAÀ×ä7B‡ÞܹÐd /ZÈ ™s¾Ï¢G»–LÙ2æÖ¥#ÁŽMÚ€9h€°9Ç�¾/~|éï'2H` ßóå›çz.œxvär®co~‡ùóçÁGú½zZìÛ›¯^(¾|úëå§O®Ÿ|$I(`+ÿ h ´�h`€8ä£à‚:4¸ „I!x …–òÆml˜#Ee˜ñ?„(¢WÀÁFŠ*ÆáÄ‹0Æ(ãŒ4ÖhãH�;����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000212�00000000000�011560� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/themes/soria/images/buttonDisabled.png���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/t0000644�0000000�0000000�00000000273�11360615636�027232� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������‰PNG  ��� IHDR������d���Ì» ���tEXtSoftware�Adobe ImageReadyqÉe<���]IDATxÚìÓ; €@ EÑŒÌþW)þðƒXè€IÍK#¸‚¤:Ü&ÕKëvÒsiXŠ©wu3ÔNPãªÇãUV%ˆôÓ¼E11bÞ‹}« …|)Œ½±zß µK€�ë8D¡þí����IEND®B`‚�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000212�00000000000�011560� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/themes/soria/images/spriteDivIcons.gif���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/t0000644�0000000�0000000�00000001564�11360615640�027231� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������GIF89a0��æ�Üç÷jz‹CXm…˜«ÖÖÖÖáõÊÊÊéééÝÝݼÎíÐÐÐÌÚòøøø¾ÐîKa{ÇÖð‚–ªÔàõÂÒïTl…ÌÌÌÈÈÈáêø¾¾¾···ûûûÄÕðdyˆßßßÀÑîÃÃÃØäöÒßô®®®ˆš¬{¨âêùž­q‡Ÿn…ž‹œ­”ž¬j‚©©±¹ÌìZq…ÑÞôöööëëëÃÔïÛæ÷È×ñØØØåååäääãããôôôßéøÎÜóââânˆ¬?TtìììPfyîîîäíùµµµºÍí»ÍíóôõÊÙòÁÒïðððÆÕðõõõæææjƒ¥ÉØñ½ÏîÁÁÁ“©òòòóóóºÌípƒ‘}’©k•üüü©¹Ï×ãõ¶¿Å_nƒ£µÍbwˆÂÉÎÛå÷ËÚò³³³ZoTg‚ÓÓÓÛÛÛzŒ›BYr÷÷÷ÐÝóYrÄÄĹËìÏÏϪªªÊÙñÍÚ좢¢§§§\pÕÕÕ?Wi¬¼Ð®ÁÝÍÛòz¨™Ã]v“·´«¸Ëìÿÿÿÿÿÿ!ù���,����0���ÿ€EƒT{‡{?„ƒ‚„†ˆŠ‹ƒ|”•–”„ˆ{Lzz<šƒšœž ˆ“~©ª«©|{ž±²‡<*·¸¹¸{|~88/ÂÁ ª®uÉ]±j-Ï-{c)ÕÖ×ÕÒ½~ 4 0ÆfA$�"&&''V}ò}V{[¬ø~õÛ@0K>l܀ᣘ«rÈÈBG ˆÌë“gO€|¬ðò‚B Bä`À€W(d|ùPÀÅ‚1L™˜gB Œ«zlôã¦Â¨ÀÆÉ?"²ˆàB‡‘$Gœ° éà&ÎT:·íØq�H>W@¸HƒÇȃ˜i °¢­–U^ÑÚ®8£È—’(J¤ a€$ƒ”(ÀâÁ¦ÉÙ ¦Òc!ˆ�T䮘3d^‹m.<¢À@ÖÀpaÆŒbt:Q^ž9H(„c .w*»Þfà4èì s¥Õ(1bHèÐ qk×)È`éfÅ·y à¡Â4Ú”1>¢A' f>w4‹Ò†o &`3/϶DØ@r£ÆãŒ `h }H‰ Â�@�UŒ` *W%É…fˆ¡/º¢á‡ .rɈ�;��������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000212�00000000000�011560� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/themes/soria/images/titleBarActive.png���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/t0000644�0000000�0000000�00000000253�11360615640�027223� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������‰PNG  ��� IHDR������0���´f<Õ���tEXtSoftware�Adobe ImageReadyqÉe<���MIDATxÚb|ùáËןÿ@Ô¿ÿ `ê˜úûŸLAy(ÔŸÈr7Ÿ~„h þ‡˜&ᆡ By0 `A&†!L±r1üüÃ�`�rÛ)Ô(—Å#����IEND®B`‚�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000207�00000000000�011564� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/themes/soria/images/sliderThumb.png������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/t0000644�0000000�0000000�00000000635�11360615636�027234� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������‰PNG  ��� IHDR������ ��� »î$���tEXtSoftware�Adobe ImageReadyqÉe<��?IDATxÚ¤’½j„@ÇWÝtgãXØ ÁÆÂЇ° “”9yËARD‹Ô¾ƒ B -APü ÄÌ.·aOÌ%îŽ3ÿùïªàû>úOˆÀ˜ÿÀnM�žëºt3M…… QQ†^]×-¤·K4Æq\eŠã8HUÕ[(}ÎæyþV̲ŒN$0Ô*ÆÈ²,dšæ…$Iïº<rÀ¬òÖyXhš†lÛF²,ïakŠüyX!sÀ;á*Š‚t]'ËkqÙ|*XMY–(MSráϘ½àïá§Fyž£$IÈÅn»®{ÅËBÃ0VEȉãEñ“Ÿú¾ƒô^Náð“£(BUUíÛ¶½‡m|n6›‰<Aàýv~ö¡ù–=0@óÌþÄ«¦inàyH'4ÆCãÈ'¿�º…Ó@¡í����IEND®B`‚���������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000212�00000000000�011560� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/themes/soria/images/tabStripeRight.gif���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/t0000644�0000000�0000000�00000000066�11360615636�027232� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������GIF89a��‘�”´æ‹ ½ÿÿÿ���!ù���,������� ¢Ëí^��;��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000220�00000000000�011557� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/themes/soria/images/tooltipConnectorDown.png���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/t0000644�0000000�0000000�00000000526�11360615636�027233� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������‰PNG  ��� IHDR������ ���™ f���tEXtSoftware�Adobe ImageReadyqÉe<���øIDATxÚ”R; ƒP\ßR¤±ËÁ¹„R¶‚mÀ*ÇH• Xù´Q 5;¢`ä)ºÅûÌÎŒ»o%Û¶¯ŽãtmÛv{:Öß=Š¢0Ò4¥=‘$ ±Îäã] Ø#Žc*Ër“AUU> °Œ&Wwö<¸­Uä]×%æ_ ›š ¬º®uß÷WM‚ ðøø11ãhyž[Y–I 8Gœ{7Å…„k_ûqŽü\ 3ùpßÚÐw`Ç{5Mƒ Þ[L:OÀ&Г'g�—‘þY–Þð (J¦ª*EQ„jŽŒ}eD±2ˆœ…§0 uìKˆŸ��j;ËŒ�ÒÈ·����IEND®B`‚��������������������������������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000214�00000000000�011562� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/themes/soria/images/tabBottomActiveC.gif�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/t0000644�0000000�0000000�00000000742�11360615632�027227� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������GIF89a�2�Õ��¡ÀíÏàûÒâû•¹ïÍßüÙæûž¿îÊÝü—ºî¢ÁíŸÀíÝèú—»îÛçú–ºîÔãû›½î×åû™¼î™»îÞéú¾îœ¾îíóüïôü¡Áïìòü£Âï¡Àïëñü¦ÄïêñüŸÀï Àïž¿ïéðü¤Ãï¢Áïëòü¥Ãï‹ ½”¸ï������������������������������������������������������������������!ù�����,�����2��ÿ@”pH,‰¡Lf“á€NÐF´áxB%GD*yH©°xL.›Ïè´zÍn»ßð¸|N¯Ûïø¼~Ïïûÿ€mƒ„…†‡…Š‹ŒŽŒ‘’“”•“ ˜™š›œšŸ ¡¢£¡¦§¨©ª¨­®¯°±¯´µ¶·¸¶»¼½¾¿½ÂÃÄÅÆÄ ÉÊËÌÍË�ÐÑÒÓÔÒ ×ØÙÚÛÙÞßàáâàåæçèéçìíîïðîóôõö÷õúûüýþü H°àÀ*\ÈPaƒ‡#JœqÅ‹3jÄH¡£Ç C~Äpáà 0hЀÁD .tèpå…%/ÙÉE�;������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000201�00000000000�011556� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/themes/soria/images/treeI.gif������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/t0000644�0000000�0000000�00000000107�11360615636�027226� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������GIF89a��€�ÓÓÓÿÿÿ!ù���,�������Œ€Ë¦ S„o®jÎ’kÿ¸e¥uNi´Râèµ�;���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000215�00000000000�011563� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/themes/soria/images/validationInputBg.png������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/t0000644�0000000�0000000�00000000176�11360615634�027232� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������‰PNG  ��� IHDR���������5#ë���tEXtSoftware�Adobe ImageReadyqÉe<��� IDATxÚbúþý;###.Ìøÿÿ°< À�9ÝZ3����IEND®B`‚��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000220�00000000000�011557� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/themes/soria/images/tooltipConnectorLeft.gif���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/t0000644�0000000�0000000�00000000315�11360615632�027223� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������GIF89a ��Ä�þþþæææáááãããóóóûûûýýýÝÝÝÞÞÞùùùìììØØØÒÒÒÖÖÖäääàààíííÎÎÎååå×××ÍÍÍëëëôôôòòòøøøçççÌÌÌÿÿÿÿÿÿ���������!ù���,���� ���J 'ŽdF’‰°œ¢¢�;0Ķ‘rö-fEÏÆ)˜¡ £q�”¶AÚcJžÐ¢`’TŽ2ˆwt9 xÄÓÌ’>U^>Vâ±b!�;�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000205�00000000000�011562� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/themes/soria/images/dndNoCopy.png��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/t0000644�0000000�0000000�00000001273�11360615642�027230� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������‰PNG  ��� IHDR���������óÿa���sRGB�®Îé���tEXtSoftware�Adobe ImageReadyqÉe<��PIDAT8ËSßKSa~ÏÙ67×L ÛÜŠdѺQ³  ƒ.¼Š…"ÑWÑèO(Š"o*ˆ¤"älÍ™3]TŠ"ÎMbmB§È?âéùNg§4©^xøßùžç{ßç}?‘ Ñ!ÒÞ#2pS×'^/·ø}†{êŸü%\çD’“¡0Ö]0Z¡ÙRCŸ‰RcéšôñŒ:ûù¢HÑèêÆêþX ‘÷×"ãv#ítbÆåÆ4×Älm�—yvˆºY‘+á Á:äÌÕ×£Ó>Þ:Èé:^‹ çráüÏLD޳®‰Pˆ7ÇIÞ†¥­A,0Õ•Ö6[àSó>Liš‰q ¼"ñû¤òä,ÍY;uEÞ\±èócn‹åøA[`9ÃIYbŒH[k/¹Ò¯;Œ¯-m(°¶q³\ǘÁbk«-0c˜õ0õ§$ŽZ×E òÖÐí]ëjþWdèE†wyîñ±U (ímþoÙº ™E¿x¨;òÎ0[åÂÊá#XM$ð¥³߯^± ß.ô¡|ì(*':oŠ!E¢Êà®*ᨄ£øÈ^¿c«ÞÐ]eÖb¤ñ—;¶c„{) £–À5eb7[‘óÌ T¯§XŸ)Ø lóK‹X%=ÕѾ-ZrÞà h˜dÊaUg5fØÞßÒfýzÒžDÇòžèÅ÷,#kÝð‚Èïi2‘Ú@¾/Z±vã{°D’iÍiNZõpÚT&ðŒg“Çd§«ý†èƒâ0EƒÂ3Ñ µ×»ÉsþÔàÇ«ÞqYW����IEND®B`‚�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000220�00000000000�011557� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/themes/soria/images/splitContainerSizerV.png���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/t0000644�0000000�0000000�00000000174�11360615640�027225� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������‰PNG  ��� IHDR���������i#™���tEXtSoftware�Adobe ImageReadyqÉe<���IDATxÚb¼ù䇄�Û‡ï?ÿüûó×0�0�™* ¡,Qˆ����IEND®B`‚����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000214�00000000000�011562� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/themes/soria/images/progressBarEmpty.png�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/t0000644�0000000�0000000�00000000350�11360615634�027224� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������‰PNG  ��� IHDR��� ���d���ßl]þ���tEXtSoftware�Adobe ImageReadyqÉe<���ŠIDATxÚÔUA €0 «ºƒ7ÿÿÌ ¢°Œ%í9¬IšvSßV;oŒ³yÕà"̃ø]8<Œ VCKà ×uJS(0UqŒÁÃϺŽØý:~|ß9J‚úq%ÜÓH’ñ?:—ŸñWª¨ÍÚÛ”|¤Üä´¬CÁ±:³•aZ&c-ÛºŒ¯��òCÌ‚‹gô����IEND®B`‚����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000212�00000000000�011560� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/themes/soria/images/spriteDivIcons.png���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/t0000644�0000000�0000000�00000002132�11360615632�027222� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������‰PNG  ��� IHDR���0������P®ü±���tEXtSoftware�Adobe ImageReadyqÉe<��üIDATxÚÌV_h[UÿÝ&mb›¶KÚc×`·ÎªŒQ¶ÊŠ ‚°1|˜LV†>éÓEðM}Ù^tâÃÁ9a · >¬¸ÁèôAjb§&mfÓµùcÛÜ{Žçûî½É=MÖ.N˜?89¹'ç;çû}ßïûr±/oºzöÓÛðà™ÃG/oî4é]ËfR·¿ûüÃ0Ö੃¯Ü“½‹o/œ•h{ö4h6¤”ë¤fÜÙA4–Ð f±ŸÕÖNp”¹W{r^9ÔŒÿdÃ$ütù–­Ã„ÃòðÂu<ÙŒÊêjíµzk.SwFg(Vgï’ ”J%ž[ZZª{„üìóùÐÖÖVw¦ÿæÌ/úÊ|«P«„ X6ñØö§µ¿N]WéZÖÖærY<Ô7„?Ó?!¹ûñ¦"xîÒ÷ˆlÓÖR©H]]]XU¡ï+++ìx4Eooo=±'vâÕ#ãP±„ç.^ÄÜü &#ÔÍ]¡�ö?÷’f|þÂÊ:^;r )Ó39äÿ¶´µþþ~X–…J¥‚ŽŽŽúòò2!ÌÏÏ# !ÔôD"0-ÛI{Hì{v©˜6!“fSÂzmêŽ(·”4ÚÑ,R3³Ç¢ÚÚÄĉ²Ù,ü~?Ëgii ÝÝÝ0 år™©P{Ø9Ò­¥œ§gòSY%ä’k„R©€Ý»iš@¡XVô5Ó4y„ÚÛÛUmEXB"AÙðFß! "¬¤ÃrQÎS”i¸$\B”‹üW噜lmmUM#¼¡Ÿ¢Np£M›DBIÇΈ¬f£VVKøyú>;s¾ºõboòImß•ë?bú·ß«Ï¾VÁ­Õ‹žž®Ò>ɇ"NÒ¡™j­‡`0¸VBÂnYÕ¨S`“àlÜù?& ãí׫K µßn'NB6÷—¶ïòµ0þâ1>›ðæc8ýÅÇÚžÉÉIvô_,Ñ××ÇšššbÝS ‰¡¡!O„nß²&Ë3Öñ;wì`CÔ:Öø ‡‘¾ù€äIMâùýÛëlNlÕž©ÃÄãqv:ŸÏs¤IJÉd‹‹‹æìÔÕ�E N¡ §uŠ»pÞÍ9èÊŒæ`àlÛ2¨w1§«­Šn.—ãH“ã™LüLÅN§188¸¦´ Ôê@È»{5á& #­R¡ë@­8 AÚ`]4ÈQWóô²R(ÔëI'ßQWÄï;d¼óÑ—ÒyØð/Þ;~ˆO|ÿ“¯%-nUýtÈxÛr#{±X¬á=ÔBï»Ïßßq雯d³plì·Ñÿþíëô? �—4%ÛpRÄD����IEND®B`‚��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000212�00000000000�011560� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/themes/soria/images/spriteTree_rtl.gif���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/t0000644�0000000�0000000�00000000351�11360615642�027224� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������GIF89a6��³�ÓÓÓîîîìììýýý‹‹‹óóó÷÷÷ûûûðððõõõòòòÎÎÎùùùÅÅÅÿÿÿÿÿÿ!ù���,����6���–ðÉI«½8ëÍ»ÿ`(ŽäÖœhÚ\j[R 384=0«ϵsç¯Ç®çñdÄ_P2tlF²§\6ŸE lZ«Š�`À¢a8Îçƒ!“Íh‚šÝ®8„Á ð Zy{|KB  ‚L‹–‘“# œ™›žž™" §¨¨ ©¬¤!-*,°(‰µ¶·¸¹!�;���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000220�00000000000�011557� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/themes/soria/images/splitContainerSizerH.png���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/t0000644�0000000�0000000�00000000177�11360615634�027233� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������‰PNG  ��� IHDR���������F.°Ã���tEXtSoftware�Adobe ImageReadyqÉe<���!IDATxÚbúøåÓ‡ï™>ÿüËôó×&0�èï ®ê[Å����IEND®B`‚�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000213�00000000000�011561� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/themes/soria/images/tabBottomHoverC.gif��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/t0000644�0000000�0000000�00000000430�11360615636�027225� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������GIF89a�2�Ä��çòüßíúÄÚóËßõÀØòéôýÜëùÖçøâïû½ÕñÒä÷ÈÝôäñûñöþÏâöÙéù¹»Ý³Íë������������������������������������������!ù�����,�����2��• $Ždi’Qª®lë¾p,Ïtmßx®ï|ïÿÀ pH,ȤrÉl:w‰¨tJ­N جvËÕ ¾à°x^˜Ïè´=h»ßðøÛA¯Ûïx»bÏïûÿ}‚ƒ„…†„‰Š‹Œ‹‘’“”’—˜™š›™žŸ ¡¢  ¥¦§¨©§�¬­®¯°®³´µ¶·µ º»¼½¾¼'ÁÂ!�;����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000216�00000000000�011564� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/themes/soria/images/tabContainerSprite.gif�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/t0000644�0000000�0000000�00000005012�11360615634�027224� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������GIF89a�Âæ�¤Ãïïôü£Âï©ÅîÎßôîòý¬Èî¦ÄïÞêýô÷þæîûèðü¸ÄÕäíûó÷ýàëüäíüÂÙñÔäøÄÚóçòüÔãûÛèù¾×ðËÝóŸÀíÀØòÒâûž¿îàëû™»îÒä÷¡Àí¢ÁíÈÝôÏàûÊÝü×åûÜëùÐâ÷›½î—»îèïýÝéúÁØñ¾îÖåø½Õñâìû½ÖðÏâöçîüÙæùåíüÙæûßíúÛçúÖçø•¹ïäñûâïûÙéùÍßü™¼î—ºî¿×ñÃÙòÝèúÀØñ½Õðœ¾îÒã÷Ëßõßêú–ºîñôþéôýéïýñöþÞéúËÞó¢Áïëñüêñüìòüíóü¡Áïž¿ï¡ÀïŸÀï ÀïëòüÕÖêÖ×ëéðü»ÇØãíú¥ÃïíóýðóþÜèøÏÐäÌÞóÞéùèïüìñýëõýàêùÖäõêðüãíýêñýëðýíòýáëúåîûÚæøÔÕéõøýïõýíòüãìû‹ ½¹»Ý¼Õð”¸ï³Íëÿÿÿ!ù���,�����Â�ÿ€_z„…†‡ˆ„ƒ[RTRSTUSU^UTURR•zvrO¤¥¦§¨OzRC­®¯°±­zT8¶·¸¹º¶zo6¿ÀÁÂÿ½%ÇÈÉÊËÇzÐÑÒÓÔÐznÙÚÛÜÝÙ×#áâãäåáz>êëìíîêè$òóôõöòz!ûüýþÿûòH° ÁƒóeXȰ¡Ã‡ õà@±¢Å‹)JlÁ±£Ç 9ê`¤¤É“(S–‰¢¥Ë—0c¶ù£¦Í›8sÖÔƃϟ@ƒ õ)1…Ñ£H“*5*ˆÓ§P£JuªG€’«X³jÝz•§Ž¯`ÊûµjŸ³hÓª]{Ö,Û·lÿÝÂÛV�Ý»rï¾Í«w-ß¾iÿ®;8®ÝÂjV ˜q_Çz!ã=Œ­dº—çf†»y/åÊ}:myÀ•Z´XÉrå k�¢�¸‚ÅŠÔ°”¨·ïßÀ Uº”iS§OR¶h¢B‰ŠKRIŸþD–õëCviߎƒ˜÷ï6˜‰_¢šùó¼©_¿Áœû÷#ÞÉŸïãžýû$�êß¡ÿÿ @$à€ddà„¤à‚-¨äàƒFÈ$á„(èdá…? ¥á†,åá‡)L%âˆ@peâ‰J¥âŠ:æâ‹0Æ(ãŒ4Öhã8æ¨ãŽ<öèãjÁ&m¶á¦Ûd!@ÿYÔ&€mZ'唾}ñG%TLáˆ#Ÿà¡e�ÏAâH�wèÁ�uh>‘‡z`çf+RèÁÝœ¶l¡xxþ¢€äõyÌ z '(4èÁÞ¡ÙÔ |Œ†S(}ªS(~”ʃ€üeºz�èé@œ(êBœ"h*Eœ2¨*Gaèá«%  …´¶Ô*†¸Ö$+‡¼úÔ*ˆÀ%+‰Ä:e…(&{Õz°èìWQèñb´ÓJë"µ×ZK¶Ûj ·ßz[¸ãŠ‹¹çš[ºëª;»ïº ¼óÊÛ½÷Ú«¾ûê{W´a �YX@Vh±$�L Åi� Ì)•¾1ðGÿ{d¬ñÆwœ1Æ 8!òÈ$—l²{$ ,·ìòË03±ÇÔlóÍ8ç\óìàóÏ@-´Ï{ˆÁÃÑH'­ôÒGï±Å PG-õÔTC½Ç&d­õÖ\wõ ô öØd—m¶Ø{ ‘ÃÚl·íöÛkï1Çt×m÷ÝxÓ½2ôí÷߀Þ÷r aøáˆ'®¸á{¬!ÂãG.ùäïqƘg®ùæœc¾„.ú褗út¼ úꬷîºê{ø!ûì´×nûì±ß®»î¹ïî;î¿ïGïÂó^¼ïÄ_{òÊß¼íÌ?}óÓ+_ýñן½ðÛßýïß#ÿ<ÿôã/_>íáïž¾ñç˾þíï“ßþðóÓ?üæß_?÷ïÿÿ�ÜØÉH@'Äì€d‚ÎÈ@ íÜÓ&HAT킼×6ÈAœíƒ ìÜFHÂäí„(ü€àVÈB,î…0DåfHCtî†8œ€évÈC ¼î‡@|Aý†HÄ"ñˆHL¢—ÈÄ&:ñ‰PŒ¢§HÅ*ZñŠS  ·è?.ü¡€`tBöP‡š‘ jc×X³;ì!‚pôY�öPÁ:M {È ¡¶…=tðY›ÂBHH±-`%LäÚа‡:’nsØC 'Ù70ì!†˜4œöPÃN>nÿ {È¡(1w†=ôð”¡#ÂÈJÕÑè«,×¾YºO–¸ÔŸ.k™K^îò|¶´Ÿ/‡ Ì^ó—å ¦2™LfŽo™È|¦,¹è¿2\ŒšÙ¶ÉÍnzó›KHš@ÎršóœèlÂÆ ‚vºóðŒg;×9ƒzÚóžøÌg=÷P€øóŸ� ¨@ýÉOô M¨B º‡8ÀࡨD'úÐ=¤¡ͨF7ÊQŒîA I©HGJÒ’†tmXJWÊÒ–ºT¥{ð‚fJÓšÚô¦3M vÊÓžúô§;Ýà \@Ô¢õ¨H%ê ¦:õ©PjS÷Pƒ#XõªXÿͪV­º‡œà«` «XÇúÕ=@hM«Z×ÊV´š5p«\çJW¸š•xÍ«^÷ÊW¼š•€ ¬`KXÀîÁ AH¬bËØÆ&ö°ˆ¬d'KÙÊFvPˆf7ËÙÎzV³˜-‚hGKÚÒšV´˜åƒjWËÚÖºVµ©}­l_ÛÙÚ¶P¸­nk«[Ùò¶·®ý-pY+ÜáâÖ¸´Í-r[[\ã6w¸Ïnt{;ÝÝ*w¹«­îmµk[îÎÖ»¾½.vù�ÞäŽ7»lÀ€z×ËÞöºW½üæ|µÎúÚw é̯~› ÏþúWú °€g0и M°‚!@Ñ;°ÿ„;`Ò [8 /Ͱ†W€Ó{Ø@ ±ˆiÔ›ØRM±Š%°Õ»ød±ŒOÐÖÛXuͱŽ#Ð×û˜… ²‰àØ"9–M²’/ðÙ&;9§²”‹pÞ*[ùÊXβ–·Ìå.{ùË`³˜ÇLæ2›¹µïM³š10ß6wñ÷óÆX‡ýÚ¹ pã÷ÜÎ1uÀ€žŸLh` N´AýàF?4{˜°¤1š†=\øÒ!•Â6Ìi•¶aõL½°‡›z§Œ<±ª‰:ƒ=¬øÕMUÀ^Lk«Ö`3ÎõW°‡û­ØÃއ ×`ÿøØx ö—g Ø`ùÙ‰5ÖLíÈJûÉØÖ,ö0ån‹vÛVw•Å}^r×ÜØE÷rÕ\v×ÝÃ…7påÝ[zëÖÞ·Å·mõ=[~ËÖ߯¸kÞZ‚³Öà«E¸j·m¯ùáêeƒ›7V†@��;����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000213�00000000000�011561� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/themes/soria/images/tabStripeBottom.gif��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/t0000644�0000000�0000000�00000000066�11360615632�027226� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������GIF89a��‘�”´æ‹ ½ÿÿÿ���!ù���,������� ¢Ëí^��;��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000216�00000000000�011564� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/themes/soria/images/treeExpand_loading.gif�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/t0000644�0000000�0000000�00000001226�11360615636�027231� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������GIF89a��æP�÷÷÷×××ÚÚÚñññÓÓÓÙÙÙJJJÔÔÔôôôÞÞÞÊÊÊÉÉɲ²²···ÃÃÃÜÜÜáááäääÀÀÀŠŠŠÎÎΫ««íííððð¿¿¿ªªªÍÍÍÕÕÕ½½½ÌÌ̶¶¶µµµþþþoooóóó¹¹¹ßßß~~~ÇÇÇÛÛÛãããéééÁÁÁ¬¬¬¼¼¼ÈÈÈÖÖÖ±±±ìììËËËÏÏÏàààåååúúúÅÅŸ¸¸ŽŽŽòòòdddæææ®®®ûûûÝÝÝ´´´èèèÂÂÂÑÑÑêêêÄÄij³³¨¨¨»»»­­­¯¯¯ÒÒÒùùùºººöööõõõÿÿÿ���������������������������������������������������������������������������������������������������������������������������������������������!ù��P�,�������ó€P‚ƒ„…†…�161‡„> C  N�N£¡+4†5 ¢O®¯N3…2�¯,° ƒN£¹%¼°ƒ' ¸ÅǯBƒ N¯O8ÐO ƒ3¯; ê 0ƒ ×®9!!ù(Jƒ.&D¼JA `Á%\Hh2è‹ `s¥#E ‘ " �#†V� 4 ‚Š ?Pðˆ@"€†"œ0¡Âˆ ,0á@2 Yððâ F�Iò�’ $9ÒƒÃ&VÊK(�;��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000224�00000000000�011563� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/themes/soria/images/tabBottomEnabledSpriteLR.gif�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/t0000644�0000000�0000000�00000001244�11360615642�027226� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������GIF89a2�2�Õ/�ËÞóåíüçîüàëûÀØñ½ÖðÛèùèïý½ÕðÁØñÃÙòËÝóÂÙñäíüÙæùÝéúÔäøâìû¿×ñÒã÷ÖåøÐâ÷ßêú¾×ðéïýñôþÎßôîòýðóþÌÞóô÷þéðüìñýäíûëñüæîûèïüëðýÖ×ëíòýêðüÖäõÕÖêÔÕéÏÐ乻ݼÕðÿÿÿ������������������������������������������������!ù��/�,����2�2��ÿ@VkH,Ȥ’¨j¥ШtJ­Z¯‹Ôàêz¿à°xLv¶å´z}nq×ð¸·ý–ÛÓô»žœßû¿}‚{„…w‡ˆrŠ‹pŽj‘e“”c–—a™š€hlŸ x¢£|¥¦bœ£« ­t²³´µ¶·¸¹t½¾¿ÀÁÂÃÄmÉÊËÌÍÎÏÐCÖרÙÚÛÜÝÓ-ãäåæçèéêC ðñòóôõö÷ íá üýþÿ� È@Ÿ*\Ȱ¡Ã‡ ô…¨@±¢Å‹3jÜX!Ä�BŠI²¤É“('2‚Ë—0cÊœI³&„CPØÉ³§ÏÁŸ@ƒ ¥ ` H“*]Ê´©Ó§H ù` ªÕ«X³jÝÊÕÀ‡!(ˆK¶¬Ù³hÓ>@1D„…·pãÊK·®] "†€À·¯ß¿€ <�Ä+^̸±ãÇ#œ²¡å˘3kÞ̹sƒ ”ˆMº´éÓ¨S�Ý‚ƒ€×°cËžM»¶m†p8À»·ïßÀƒ ~ w %0(_μ¹óçС—ðÐbÅñ سkßν»wïÔM¼h²¤¼yóâƒ��;������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000223�00000000000�011562� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/themes/soria/images/sliderFullVerticalFocus.png������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/t0000644�0000000�0000000�00000000217�11360615644�027227� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������‰PNG  ��� IHDR���������ÔTR¯���tEXtSoftware�Adobe ImageReadyqÉe<���1IDATxÚb|þî×—_Œï¾0~úþÿõ»÷LÌŒ ðçÃßÿÿ™~ÿe€€��cÏIP,2F����IEND®B`‚���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000206�00000000000�011563� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/themes/soria/images/sliderFull.png�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/t0000644�0000000�0000000�00000000203�11360615640�027216� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������‰PNG  ��� IHDR���������Áõ���tEXtSoftware�Adobe ImageReadyqÉe<���%IDATxÚbúøå±|øþ— X>ÿ„±~þúa11À�@€�{ÆvçÄs–����IEND®B`‚���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000207�00000000000�011564� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/themes/soria/images/spriteRadio.png������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/t0000644�0000000�0000000�00000002061�11360615644�027226� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������‰PNG  ��� IHDR���`������éºzù���tEXtSoftware�Adobe ImageReadyqÉe<��ÓIDATxÚì˜ËJA†O;£3:Þ5o Š †¨ ¸™'%µOà!`ö†<@–n²•àÂ…+eŒ‚ˆŽ¯x¿NÎÒÕ´ew3‹é,,(ºëëÿœªsNU·555EA¶@õÕ/òøí#w¬J’{ƾþàÞÿÊg¾ñ9ð––“±Xl¼¯¯ZZZ¨¢¢‚...hww—‰î¿ñ˜/ñœy-&‹‹‹Ç„D"twwGççç´¿¿û¬ú¹òZÜÿÐðð°ºÿÚØØ8144Dp ¤¤„2™Œ\ëëë©««‹ãìL”ÇþöÏ‹ojjrx6~¢££ƒøJ¡PHx\ËÊÊä×××ñÛÛ[_ý|ø½½½@ýWÐÃF/ŒŒˆ±l(Kä„Ãay@mm-=<<Ðôô4Vò3\âÏø¢¢• ¨+~óâí èáÈ]noo—¨Åøûû{¢Ñ¨ü¾²²‚H~¡ïæýô½x;ó_ícX¡ÒÒRIÙµµ5ÚÙÙ‘ÔÙØØ ùùy:99!v’z{{e¼¶úƒ-Ërº¬2_ŸžžŒ|MMD Æb`G+]^^ÊdÜÜ܈ˆ.oÒ7ñAù¯àskk«À„§ ]]]I ;;;£ÅÅEyH[[›Œ× pxˆÁQÝ4_^^.<4Õä#bÐq{ÀWWWùlú~|Pþ‡íë;¤.ê%Äq ÀÀUÓP 0^3ÀáMÍăEÇd£+ýÇÇG‰~Ø¡jº‰Ï¦ïÇå¿Ê€4œ†³UUUtzz*©¯J�ŒR›%ÊÆkÏvx÷Ê»W_5?,:¢HiÃyL>&�µÍÞ|ùlú~|Pþ«ø…šãP£p|ÚÜÜ”tL&“R7å[[[2^{®Ãë¢î¿M<&|]]ü€cc*•¢t:-µ•O£˜ølú~|Pþ«ô}uuu G8¤Ñèè(ñß²ò¨™’Ž8™,--ÉxÍ€g<6ˆ©S€º7ñ¬5-ðÝÝÝttt$Ñ‚”ÅïÐGÇÂdãýôM|Pþ«÷€Þøb\ûâÍÍÍò½°± "ccœÅæ„—‰Ÿš/x÷ê›x;µØÁ—›8Îð’SYYé?‘ÞˆF^O}×õýxû= 0ÿÝ/b3œÆ1N½8@l*h8 ¯¯¯ÓÜÜœ‚ýÞóâ]/b3!1.q÷Ñ {�"q{{[Mž¯~>¼ëE,ÿ-qýö9õ÷÷ÜSvÍBÚ$^ñ-$'Þãc\Aõ=>ÆTßzûúÿ} }kl�FehÀæ–����IEND®B`‚�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000206�00000000000�011563� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/themes/soria/images/treeI_half.gif�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/t0000644�0000000�0000000�00000000101�11360615636�027220� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������GIF89a��€�ÓÓÓÿÿÿ!ù���,�������Œ€Ë¦ S„o®jÎ’kÿâH–扦�;���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000203�00000000000�011560� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/themes/soria/images/warning.png����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/t0000644�0000000�0000000�00000002373�11360615636�027235� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������‰PNG  ��� IHDR���������(-S���sRGB�®Îé��� cHRM��z%��€ƒ��ùÿ��€é��u0��ê`��:˜��o’_ÅF���PLTE  þýþÚÙÚ��„��''(ùúýF¦)X±§¸Ø:çîùæìöëóÿéïø;n°Ez½c“Ídy’ÔáñÞèôïôúX4e›0]P†Ãx¤Ó}§Ø’´Ù¶ÍæÆØìæî÷éðøìòù�fÌ?ŒØ+Kl²ääíöçï÷£Âàl Ëò÷ûöùû{­Éçóú¡ÑéêöüH‘¬¾êûÈêõÚòùëùüäïðŸÈÉj“™ÅŶää¦Ḭ̀ÒÒ¸ÖÖÀÛÛËââ×èè ßííëôôòøøò÷÷ùüüýþþÖ××äðïv°˜úüûðòñ�r6&iE�X%ÃâËRœ[�u�¢É¢´Õ´×ô×åýå  ýþý}ÅwÄä¾'~uµdÂ߸OOH##"!! UUS,,+++*þú‰|x4Ÿ›Sþòqêàøß8æÐ8þêXþöµÿûàÿýïÿä7‹†fþ÷ÌæÔyÿþùÓ½fÜË€ñã«ÞºIÈ¡-´-›h�àZ—vV¾¥—­…xñ*òkNÜ#�Ó�ý÷öÉ�nÍ7"ÒH5½�©¿(øïîÈULá �² �¤*!ÍgaôàßÅ�¦$!·<7Ñ|yד‘ìÍÌŽ£௮ þýýÿÿÿþþþýýýüüüúúúöööòòòðððïïïíííëëëèèèæææâââßßßÝÝÝÕÕÕÒÒÒÑÑÑÎÎÎÌÌÌËËËÅÅž¾¾´´´¬¬¬¦¦¦˜˜˜{{{qqqddd]]]DDD444(((&&& ���îîî������������������������������������������������ÌãU���ðtRNSÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ�”¡hG��� pHYs�� �� �šœ���lIDAT(Ï}ÊË Ä0EQ@ÁHDDz²z¹©L óbç¿ÈÝ�G¤ß«´Oà h ŸÀûDîÀÂ9D"Ÿ€• ]:Xq/¾jq1/ê¦Ó¤fÚ™›®«R*6Þ‹ÆÕŒ„Wé²4,àæ����IEND®B`‚���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000213�00000000000�011561� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/themes/soria/images/sliderFullFocus.png��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/t0000644�0000000�0000000�00000000222�11360615634�027222� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������‰PNG  ��� IHDR���������Áõ���tEXtSoftware�Adobe ImageReadyqÉe<���4IDATxÚb|õáÆ¿ÿXÞ|edef�–ÏßÀ€åÝ×ÿ Š (ûþÅÌÈ`�Õ†lƒ`����IEND®B`‚������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000223�00000000000�011562� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/themes/soria/images/spriteRoundedIconsSmall.png������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/t0000644�0000000�0000000�00000006163�11360615634�027234� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������‰PNG  ��� IHDR���K���-���æã–­���tEXtSoftware�Adobe ImageReadyqÉe<�� IDATxÚìšylTׯ¿ÙìñŠcÛï;1`lb@mìTIš„„„(TV©ª &mDáöÏHMª¤J„Š‚*…¨išDI•°$5¨Ø ØoØØõ†·±=^f<žÏîžsí™ÌîFŠ*Í•®fžçýÞwÞyç¾wïç'ùÍ·ñC¶CoÀÿK“ø{õ'©SŸ ~…úéyßìoþy}ÔR/§>Hý"%³9DÖG—ØÓß'+ñª,õ·V®X¶¿´$)I‰ÐŒèëÁ®þcôÛêghÞë¬, ø­Ø˜èƒùk±&=­=½ÃQ©?c–ö»àD—Ô%öì÷Áz'ë½­[6ì{êñíP(<‹®õv7>ùì4æLæ­‹ÕâÝî‹ådQЩ(/~å¹§k©ð`›Z:ñ1±V«mí{ÓÏ ‡¤Kì•ÿ••ºý~pCYá¾gw<ìu:nܸ!¾?Pš‡çž©á¯ûü$ʇuoÁX øùüÜŒWvïzT$ŠõX×Ùè¸àã`=tçççEQ×ÅÚí6Øl6×oz½Þ/랬}O<¶UˆY¬6ŒOÍ ¡© Í­·a¶:Äåй6u7}­òÒ,7»c³3Ffçì!±?©­‚T*¡hmkG#é²¾Ébñ<X¹I«V¼D'XLwJ«GÛLhô>ºÄŒùØñãxçÝC˜Ò™p³¹ ófe±<!>‹Æ.ô&ùú{`6™1­·A©"!FŽBº§ÜPñMø[o–“tåêuÜøö2¼vºZ‰IÉØý³½Ø(ªˆíٙ阳8D‚GTc˜œÖ`L=‰ue‘žšB¬ÙYiPOL?DL×bexèò…Pá¹S(.-Cye5¢"d~u½Ùm5OâÃ÷ßÃ;oÿ ê1öüò×°B .RwVê´Xg´Ãb±B5<(%•-ìb².œLDDoƺ]!6;·�)«Ó`£êŒŠŽAÙ†Š`ll$ýÍFU¡5ØDp¬Çº¬oµZŽ;gsÞËêÎÒÐm¹U9£wÚ[Ñ×ÓrÌR™m¯ÁÐ@’RV#+'Ï/ëLÖ ?}4³fH$¬¢jà+ßî>4¢æ¯îs+޲•”¨h•< ’„ §Ïàð˜ÖCÇ]Ÿã1š›âŸ:éöRrÆFG ç$ hij9æÞî.|ôÁ{xéåׇ¿S•ñ}Ì›•m®~„?m‡#^&“W­ÉH£!$ÃÊÄ$ºš‘t³ÕÒI—‰ƒj4Z|óÍ%:ãç´iYö`¹E—œ¼Ù9ù¼"ËM)‘Êj2³Öˆ úe+WP ™L&þ6=¥Á¹s—¹ò~ñè#ÕâNŸ¶¾âÒåj.¯¨ÂÆMŠDû‹™‹?–5+«¶"¯°l(I_›™ƒY½Áƒu¿Á¿sõJ=†‡T s º¢9y…xf׋b›‡æ×'Ïòçïøáu³ô`•Ê(¤gd"R© …=ÒPßD•qWl°ë²¾þs&;V‡cþ5z„Ûƒéz7w]bƼœ›_´0Y¤!ùؓϊ¡éÍ:+‹Û,=yºÛÚîì´ÙìTŽÑ¢h’ÖÛÓ/þù5&'§yRöºŸ¸<ØØ˜ÄĆÆR æº3Wïtüg7ï¥D||fgõèhïÂÉg¨:fþHû½éÍÒÕž%vɘ‰}ýû`%~Ö†Ëçü˜_G}Œ—‹3ð‹K¬î™u›Áó˜ûõ§#ÔO.΢ۖX®Ô 4ó¿V^H‡Þ¤·p²ÂMØ¢ [4a‹&lÑø±hìv»øöíÛhoowŠEÃ÷§%è¡°N‹†ë±.ëó „jÑp3Ò"º··—&–Ý`͉'pèÐ!š­[ÐÑу†fÑ𠎣±±===0™Lâo¼ü`Û%˜EÃ^¿~—.]ûòɦ¤¤`ïÞ½X—EãLðØØ´Z-Íž'±iÓ&Zc&‹5b0‹ÆÉªT*ÔÕÕaýúõزe‹Ðô§ëÍîØ±‡Æo¼!Žñꫯ"::ZТqŠr†E¢œ‹Yçoìçï………HOOöJ -{***‚±Â¢áe ÿ¾°6“ ]Öç8œl ‹Æù;Wb}}½¨ª––tvv†³\.Gmm-úúúššŠüü|¿¬‡Ec6[Dq5ð•áO÷Æ §“_»ƒYnñññ¨¬¬‰*++É Â ‹fZ£óÐq×çx˜÷oÑ8u99ÃÃÃtïRˆ„544„3³\Yû÷ïG\\œøî¼¸³M„B^••.®nRÒ‚E333#NšÛä”'¾ºà×¢q²Ü˜s^!Å¢E€&…\.«¡›¼Øà¡ÏÉ.))qUµzBƒ¯ê.ùµhœºiii¨®®FUU•H´¿˜½-'ÛÝÝmÛ¶¡´´T }NzNNftÖâ9óïè¿;â²hŠŠŠ°gϱm¶XÅ£ÔÀ¢qg£¢¢™™)>C`\¸| ýbƒõX×iÑ&|øñ×-w]ïæ®ëÏ¢q²œàâââ…Y: É]»vA&Wø°>Mã­Ž4§A\l´è³³ž áèßN`\Ü¢q±q1¢‡Â:-šæÖ®ÝºY#ÝX•HXGWU[Mwðѧ§¸:‚Z4KÅÌ¢¹6lÑ„-š°ëNVØ¢ [4a‹Æ¯EóÓG·A"•‰w$b "¡f>ý|i‹æ^Yw‹fçŽ1¿¡9•XɉmiíÂ'Ÿ/mÑ,¥Ì¢ •uŸg±eñ‡§w<ƒ™ÿn‡j\Ksf$¬\M Ú•HJŒgŸ‡ÿø¥‹Æƒ¡n0Ùa±ÍeOŸ½ö|^nÆ[»_x&«—®^‡] «C+±«S±"!í½2šôc³¸t5z´Ô &‡.±_b§us"fq^Ĭ¥9^zzŠëaÑÔ<\ µÖ‚ñ9ô NáfsíÜŽá) Æ4äÒò%ÍÂìÄŒC“ Oš1:mŠz(ì¶?ˆéY±fª¤Ûh¼Õ†Þ¡)ŠÃՔťÅ-wݾ‘´REÜÕùèú³hœì_ÇÑ¿ÆÈ„ÍíxóõߣDãú,š„„¸,(b æ“U£·³ jU?l3eÜFWyÁÈÎÎð±hœì¸ÆŠÖ¦t¶\£²–Âa·aÙŠ$<üø XaÑ,_•ŒQbù%© µXNOO!«`=¬´Fe›%##ÕÇ¢q×ÕÏÙ…½ÓVkrJ‘¿nsÀ˜½Ù’ÊÇ0zü}ûÇ»˜™ÇŸz zk&uVÖeÑðšˆK‘_Á1S‚¦ÕÃ"Q|Ò죙ø• ú¹Ýáb©„“Ós±<q5´jTÆ 3c066"BJ’žX~ÇŠõl‹úV«E¼ÍÂoØð¿Óƒéô:ôwÞ„Å4‡á¾¨zBŽy^"CÑÆí˜À²•ÉHJËñ˺,­vÆ9 ­°iͲ"¹¥›¿b•ëè|ó³Ð•âªó¶;¾c硌ŽCVa9"ø}‡ìb¬ÎÈ ÆN sƒSÓ:ØìßÙÁ¬Ëú‡c^"î?ãj_‹Æ]wt¨šÉQH) f“ý]·BŽyŒØ '?@ÍΗ¡ŒŠÅù“G…EãÍz¾E#—WÅSf¹ìã—'B®PÂh˜e-^Ò0Ì¢ñÛklŠù¾E³ÈrSDDÒC!)Te2™"+,©TV³|Uê‚CC?« i™âmÁêgpóúuþêaÑÔ¹âÒåjÎ-©DNq}nö³»EãΪU}È[W…ÔµE4ÖCKI_•š«ÉäÁzX4­7éêŒ;gTy¨®}^lÙmVÔ_>Ϩ_‹ÆˆT"1%ƒ’¦ …=ÒÑÖõèØ`=Ö]xˆV’×Οc#ίEã³gs×õgÑ8Ùì¢ Ò\xvðp/ßö”x›Æ›õ±h†úºw:h,ò0Фnž›£Ì¡áâYè´š 'ËÍ©3WGîöí6Óý†Ío šŒ ßíEÓÕóÐët-šSß\]2æ@ͽ²a‹&lÑ„]‡¼ýW€�„k—on¾ã����IEND®B`‚�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000212�00000000000�011560� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/themes/soria/images/tabLeftChecked.gif���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/t0000644�0000000�0000000�00000001433�11360615632�027225� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������GIF89a�2�æ��”µè”¶ê”·íÛçúÏàû•¹ïÊÝü¡À훽î×åûÙæûž¿îŸÀí¢Áí—»îÍßüÒâûÔãû™¼î–ºî—ºîÞéúÝèú¾î™»îíóüìòüïôü£Âï¦Äè¡Àï¡Áêëñü–¶è•·êž¿ï•¶èêñü£¿ê¤Ã꠽êŸÀ옺윽엷癹ê¯Èð¡½êÅÙ÷ÇÙ÷šºê´Ëð¦Áꖺ언ê ÀïÁÖøëòü¢Áï ¿í¥Ã隺雼엶çËÜ÷—·è°ÉñÃ×÷±ÊðÍÝöØäø¾ìÉÛ÷š¼ì¸Îð•¸í³Ëð·ÍðŸ¼ê¿Òñ›ºé–¶ç–·ê—¸êÎÝö¶Íð¡¾êš»ì¿ÕøÏÞöŸ¾ìž¾ì¹ÎðµÌðéðü”´æ‹ ½”¸ï������������������������������������������������������������������������!ù�����,�����2��ÿ€f‚ƒ„…†„(d##‰#>ŽLU9e ¡¢£¤_b)eª«¬­®ZP¨³´µ¶·KS"e ½¾¿ÀÁF[» ÆÇÈÉÊNc»ÏÐÑÒÓ68\eÙÚÛÜÝ5R4eãäåæçIJ,eíîïðñ=Hëö÷øùú^3Te� HŒ•e(\Ȱ¡Ã0CŠ”i@±¢Å‹›¹R†Ç CŠ„!ƒD (Sª\É’È “ bÊœI³æ“—eèÜɳ§Ï.YN”™@´¨Ñ£H_ìš¡©Ó§P£¾Àò¡Ìƒ«X³jݪ£DÕ `ÊKÖ…×2Òª]˶­Y�ex ÈK·®Ý(àžÙË·¯ß¿ò–ùK¸p`½…ó=<X±bÆŽ Žœ2e–/ûͬyñäÎ}9ƒÝ™´fÓ—QSV™µc×’ƒÞ »òçÙgj¾=›± ?T˜�"„@t0Ñ¡E‡ -ˆ¹q¤Ì¡ëØÍ�;�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000213�00000000000�011561� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/themes/soria/images/progressBarFull.png��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/t0000644�0000000�0000000�00000000373�11360615632�027227� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������‰PNG  ��� IHDR��� ���d���ßl]þ���tEXtSoftware�Adobe ImageReadyqÉe<���IDATxÚì—1 „0 …_jœîÿÿ6w7DjŸ–»UêPCÃ™é ¡ý^ ‘q aG$œ€HqŠ=&Ù8!á§5â2RžC.òž,ðFPã—ZÜ’ò<‡ŽÛ³Dj§78ä¯Üém5ý0g9æX‘=§´_êð¢µÅ¬Ú©é[&? o_LºýtéDò[@Ûü®¤¯>Eˆ8��…_‰Ëȇ¼����IEND®B`‚���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000221�00000000000�011560� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/themes/soria/images/tooltipConnectorRight.gif��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/t0000644�0000000�0000000�00000000314�11360615632�027222� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������GIF89a ��Ä�þþþæææáááãããóóóûûûýýýÝÝÝÞÞÞùùùìììØØØÒÒÒÖÖÖäääàààíííÎÎÎååå×××ÍÍÍëëëôôôòòòøøøçççÌÌÌÿÿÿÿÿÿ���������!ù���,���� ���I`Æd¹IY¦¨ã¶Ì�Ë›q D‰Ë Š(öÛ`‚§(84&.3$P&f’\þ ‘¡7‡8\|KíÖªÀ8‹Gêx“B�;��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000213�00000000000�011561� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/themes/soria/images/tabRightChecked.gif��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/t0000644�0000000�0000000�00000001431�11360615640�027222� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������GIF89a�2�æ��”µè”¶ê”·íÛçúÏàû•¹ïÊÝü¡À훽î×åûÙæûž¿îŸÀí¢Áí—»îÍßüÒâûÔãû™¼î–ºî—ºîÞéúÝèú¾î™»îíóüìòüïôü£Âï¦Äè¡Àï¡Áêëñü–¶è•·êž¿ï•¶èêñü£¿ê¤Ã꠽êŸÀ옺윽엷癹ê¯Èð¡½êÅÙ÷ÇÙ÷šºê´Ëð¦Áꖺ언ê ÀïÁÖøëòü¢Áï ¿í¥Ã隺雼엶çËÜ÷—·è°ÉñÃ×÷±ÊðÍÝöØäø¾ìÉÛ÷š¼ì¸Îð•¸í³Ëð·ÍðŸ¼ê¿Òñ›ºé–¶ç–·ê—¸êÎÝö¶Íð¡¾êš»ì¿ÕøÏÞöŸ¾ìž¾ì¹ÎðµÌðéðü”´æ‹ ½”¸ï������������������������������������������������������������������������!ù�����,�����2��ÿ€f‚ƒ„…†„e9UL>#(##‘d–e)b_¤¥¦§¨ PZ­®¯°±e"SK·¸¹º»³[F ÀÁÂÃijcN ÉÊËÌÍe\86ÓÔÕÖ×e4R5ÝÞßàáe,JIçèéêëãH=ðñòóôeT3^úûüýþe1¬€q@° ÁƒËæ€Ã‡#J,sEH“3jÜȱ 0ˆI²¤I+ˆ`Xɲ¥Ë—(Ÿ$˜I³¦Í›eNdé‚ §ÏŸ@ƒæÜñb‚Ñ£H“*-óË‹ P£JJ•i ²jÝʵ«UŠK¶l�%\PX˶­Û·gvD)@·®Ý»xã 8÷¯ß¿€õLX0áÃ} #>¬xñàÆŽÿBŽœ@€½”[ÆœÙïäÌŸ)‡Ž<Úqéŧ§f¼¹³äÖ®+_Ž-›sìÕ…aÓÆýøÈ !@´Ò¡E@xàá!Dp*~xPq¨ºu3��;���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000222�00000000000�011561� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/themes/soria/images/tabBottomHoverSpriteLR.gif�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/t0000644�0000000�0000000�00000001071�11360615644�027226� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������GIF89a2�2�Õ&�ÀØòÖçøÄÚóçòüÈÝôäñûâïûÜëùÙéù½ÕñßíúÏâöÒä÷Ëßõñöþéôýô÷þèðüÖ×ëáëúÕÖêïôüÜèøÞéùãíúëõýÚæøëòüèïüêñüïõýåîûàêùíóýÔÕéÏÐ乻ݳÍëÿÿÿ���������������������������������������������������������������������������!ù��&�,����2�2��ÿÀiH,Ȥ’H!•žÐ¨tJ­Z¡Ã«vË}f»à°×).o¿æ4­nÝð;nžÓÅö;8¯çòûZ€V‚ƒkd†]…‰Q‹Œogˆ‘„“”‡—WŽ›Œ‰Ÿ†¡ƒ£€¥}§z©w«t­qC ³´µ¶·¸¹º C�ÀÁÂÃÄÅÆÇ�CÍÎÏÐÑÒÓÔC ÚÛÜÝÞßàá C çèéêëìíî C ôõö÷øùúû C  H° Áƒ|Â!€Ã‡#JœH±b�C" ØÈ±£Ç CŠDaH‡(Sª\ɲ¥Ë—: Ù  ¦Í›8sêÜÉSÁ†V!! J´¨Ñ£H“1¤B§P£JJµªÕ†xÀµ«×¯`Ê;Àè]˶­Û·páf€@B òêÝË·¯ß¿éJ0Ñd‰áÇ�;�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000223�00000000000�011562� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/themes/soria/images/preciseSliderThumbFocus.gif������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/t0000644�0000000�0000000�00000000402�11360615634�027222� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������GIF89a ��Ä�õõõùùù®®®öööóóóåååÈÈȉ‰‰¦¦¦{{{¨¨¨‹‹‹ôôôÝÝÝÞÞÞ°°°´´´Â¬¬¬ááá÷÷÷ªªªËËËøøøüüüúúúûûûýýývvvþþþÿÿÿÿÿÿ!ù���,���� ���à'pdY ßÇyÞ¦½Ëuª§]C~i‡© €@d: 0ci6I æ`�.¤r¶É\(—ÌF Ü`2 f]uÌšu§·õ¼7ø1]´ÜÇ ?ˆˆ~)‰ Ž ™„—4—) GŽ!�;��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000207�00000000000�011564� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/themes/soria/images/buttonHover.png������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/t0000644�0000000�0000000�00000000240�11360615636�027224� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������‰PNG  ��� IHDR������d���ÈNÍ7���tEXtSoftware�Adobe ImageReadyqÉe<���BIDATxÚì1À ÃNùÿg‘ª‚IzÀÈÆÜÁ²—,Ay…&C =àìÅîAî8„§6X‚r?·ä¶?�r¿<Õöñ ����IEND®B`‚����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000210�00000000000�011556� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/themes/soria/images/spriteArrows.gif�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/t0000644�0000000�0000000�00000000676�11360615644�027240� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������GIF89a,� �Õ$�ÖÛâÇÇÇ“““ØâñÙæøÖÚß{{{ŒŒŒŽŽŽ‚‚‚………Ö×Ú£££×ÞèÔÔÔ}}}×ÞçËË˶¶¶ÑÑÑÖÙÝÓÓÓÐÐИ˜˜×ÜãØãòÙåö×ßëØà퉉‰ØáïØäôùùùÕÕÕØáîoooÿÿÿ���������������������������������������������������������������������������������!ù��$�,����,� ��Û@’pH,’4ÀÀÈŠÍ(1ƒa�FQA”•T8Æ€*/�Ü¡Çq)(ÅFà0ñ‚ŽeCü #‚i"‚#!D#D #  D ‹‚P$ B ‹C!‹iGm‚ `B"‘‚© # ² SŠ|D ­ ¿˜‚ B³‚·BœFWN� e!�KBØÉ²% ‡ †¤ÜÀ�C%…Q¨ƒ8 �„X3j$‚I�;������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000207�00000000000�011564� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/themes/soria/images/sliderEmpty.png������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/t0000644�0000000�0000000�00000000162�11360615636�027227� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������‰PNG  ��� IHDR���������Áõ���tEXtSoftware�Adobe ImageReadyqÉe<���IDATxÚbüÿÿ?0É0�£3÷£ 6����IEND®B`‚��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000214�00000000000�011562� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/themes/soria/images/sliderThumbFocus.png�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/t0000644�0000000�0000000�00000000645�11360615642�027232� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������‰PNG  ��� IHDR������ ��� »î$���tEXtSoftware�Adobe ImageReadyqÉe<��GIDATxÚ¤’?j„@ÆŸ“q/°Å‚"^aƒ ©÷[y€@ÐXfrÁÊb³I“ÎÊÞ:Ù"…žÀÆfa»$ÿåd¬˜M üpæùÞ7Ÿƒ’çyðdt`=f@;‚~Ó¶m—$I=„ÃÐÞív¯X^ ôjšf”º®{\×…ù|~…­·hzz`ÐuÝ·cžçý‰ ž€i2™€eY°\.Ï)¥/Xº8HÀ£ŠÑE¸LÓÇq`:n°~FÄïá<˜DLª( , ¶¼$Ãácâ=eYBš¦ Ëò=å/Ä{øii»ÝB’$¬¥ªê6†1jRUÄq Y–=â…ÞÍf³g,Ðá)bñä(Š`¿ßo4M»Æíó,Š¢e7¾ïÛ¿þ²„<à°Ëw¤ÆáŽÿ‰Ž®ë.>eääˆGó5؈ÅO�\÷WÏ—cõ����IEND®B`‚�������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000211�00000000000�011557� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/themes/soria/images/buttonEnabled.png����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/t0000644�0000000�0000000�00000000256�11360615640�027226� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������‰PNG  ��� IHDR������d���ÈNÍ7���tEXtSoftware�Adobe ImageReadyqÉe<���PIDATxÚìÈ; €@ „á!6vÞÿv"²ø@Ep É&c`ÁX[|üÃà¼óa˜ö‚Æ­`Xý¢b¤x0ÇÛúE’oÆ&X€ßW]Û< �_?4E…šÝc����IEND®B`‚��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000217�00000000000�011565� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/themes/soria/images/accordionItemActive.png����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/t0000644�0000000�0000000�00000000253�11360615636�027230� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������‰PNG  ��� IHDR������0���´f<Õ���tEXtSoftware�Adobe ImageReadyqÉe<���MIDATxÚb|ùáËןÿ@Ô¿ÿ `ê˜úûŸLAy(ÔŸÈr7Ÿ~„h þ‡˜&ᆡ By0 `A&†!L±r1üüÃ�`�rÛ)Ô(—Å#����IEND®B`‚�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000215�00000000000�011563� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/themes/soria/images/validationInputBg.gif������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/t0000644�0000000�0000000�00000000135�11360615642�027224� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������GIF89a��³��þþþûûûøøøüüüùùùýýýúúú÷÷÷ÿÿÿ���������������������!ù�����,������� ðAL Íy�;�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000216�00000000000�011564� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/themes/soria/images/preciseSliderThumb.gif�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/t0000644�0000000�0000000�00000000402�11360615636�027224� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������GIF89a ��Ä�õõõóóóöööÂÂÂÈÈÈÙÙÙíííùùù¯¯¯æææ®®®¤¤¤ÃÃÃÇÇÇÔÔÔÆÆÆôôôêêêÜÜÜÌÌÌ÷÷÷ËËËøøøüüüúúúûûûýýý¡¡¡þþþÿÿÿÿÿÿ���!ù���,���� ��� GldYž·u–½»qj—YBneÝv© @`8› Si6IàÅ€�,¤r¦ÁX(ŒF Ô\0Ìe]qÌ™5§·í¼5ø1]„ÈÜÇ ?ˆˆ 4)‰)) ™ „—  ~ — G—!�;��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000212�00000000000�011560� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/themes/soria/images/treeI_half_rtl.gif���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/t0000644�0000000�0000000�00000000102�11360615634�027217� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������GIF89a��€�ÓÓÓÿÿÿ!ù���,�������Œ€Ë¦ ËlÒtk^v÷ümâH–扦T�;��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000177�00000000000�011572� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/themes/soria/Dialog_rtl.css��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/t0000644�0000000�0000000�00000000147�11360615632�027226� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* Dialog */ .dijitRtl .soria .dijitDialogTitleBar .dijitDialogCloseIcon { right: auto; left: 5px; } �������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000177�00000000000�011572� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/themes/soria/TimePicker.css��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/t0000644�0000000�0000000�00000002306�11360615634�027227� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* Time Picker */ .soria .dijitTimePickerTick, .soria .dijitTimePickerMarker { border-color: #b1badf; } .soria .dijitTimePickerTick { color:white; } .soria .dijitTimePickerMarker { background:#bed7f0 url("images/titleBar.png") repeat-x top; color:#293a4b; font-weight: bold; } .soria .dijitTimePickerItemSelected { color: black; background: #b9cbf1 none; } .soria .dijitTimePickerItemHover { background: #60a1ea none; color:white; } .soria .dijitTimePickerItemHover, .soria .dijitTimePickerItemSelected { position: relative; z-index: 10; } .soria .dijitTimePickerTick .dijitTimePickerItemInner { font-size:0.4em; } .soria .dijitTimePickerItemHover .dijitTimePickerItemInner, .soria .dijitTimePickerItemSelected .dijitTimePickerItemInner { font-size:1em; } .soria .dijitTimePickerMarkerHover { border-top: 1px solid #94b9ef; } .soria .dijitTimePickerTickHover, .soria .dijitTimePickerTickSelected { margin-top:-0.3em; margin-bottom:-0.3em; border-bottom: none; } .dijit_a11y .dijitTimePickerTickHover { background-color: #CCC !important; border-top: 1px solid #333 !important; border-bottom: 1px solid #333 !important; } .dijit_a11y .dijitTimePickerMarkerHover { border-bottom-width: 2px; } ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000175�00000000000�011570� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/themes/soria/Tree_rtl.css����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/t0000644�0000000�0000000�00000001655�11360615632�027233� 0����������������������������������������������������������������������������������������������������ustar �������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������� /* Tree */ .dijitRtl .soria .dijitTreeContainer .dijitTreeNode { background-image : url('images/treeI_rtl.gif'); background-position : top right; margin-left: auto; margin-right: 19px; } .dijitRtl .soria .dijitTreeContainer .dijitTreeIsRoot { margin-left: auto; margin-right: 0; background-image: none; } .dijitRtl .soria .dijitTreeContainer .dijitTreeIsLast { background-image: url('images/treeI_half_rtl.gif'); } .dijitRtl .soria .dijitTreeContainer .dijitTreeContent { padding-left: auto; padding-right: 1px; } .dijitRtl .soria .dijitTreeContainer .dijitTreeExpandoOpened { background: url('images/spriteTree_rtl.gif') no-repeat -18px top; } .dijitRtl .soria .dijitTreeContainer .dijitTreeExpandoClosed { background-image: url('images/spriteTree_rtl.gif'); } .dijitRtl .soria .dijitTreeContainer .dijitTreeExpandoLeaf { background: url('images/spriteTree_rtl.gif') no-repeat -36px top; }�����������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000201�00000000000�011556� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/themes/soria/Calendar_rtl.css������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/t0000644�0000000�0000000�00000000251�11360615634�027224� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* Calendar */ .dijitRtl .soria .dijitCalendarDecrease { background-position: -30px top; } .dijitRtl .soria .dijitCalendarIncrease { background-position: 0px top; } �������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000202�00000000000�011557� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/themes/soria/TitlePane_rtl.css�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/t0000644�0000000�0000000�00000000303�11360615644�027223� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������.dijitRtl .soria .dijitTitlePane .dijitClosed .dijitArrowNode { background-position: 0px top; } .dj_ie6-rtl .soria .dijitTitlePane .dijitClosed .dijitArrowNode { background-position: 0px top; }�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000200�00000000000�011555� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/themes/soria/ProgressBar.css�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/t0000644�0000000�0000000�00000001567�11360615642�027236� 0����������������������������������������������������������������������������������������������������ustar �������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������� /**** dijit.ProgressBar ****/ .soria .dijitProgressBar { margin:2px 0px 2px 0px; } .soria .dijitProgressBarEmpty{ /* outer container and background of the bar that's not finished yet*/ background:#fff url("images/progressBarEmpty.png") repeat-x center center; border-color: #8ba0bd; } .soria .dijitProgressBarTile{ /* inner container for finished portion when in 'tile' (image) mode */ background:#f0f0f0 url("images/progressBarFull.png") repeat-x center center; } .soria .dijitProgressBarFull { border-right:1px solid #8ba0bd; } .soria .dijitProgressBarLabel { /* Set to a color that contrasts with both the "Empty" and "Full" parts. */ color:#293a4b; } .soria .dijitProgressBarIndeterminate .dijitProgressBarTile { /* use an animated gif for the progress bar in 'indeterminate' mode */ background:#cad2de url("images/progressBarAnim.gif") repeat-x center center; }�����������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000201�00000000000�011556� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/themes/soria/ColorPalette.css������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/t0000644�0000000�0000000�00000000150�11360615642�027221� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������.dijitColorPalette { border:1px solid #cbcbcb; background:#fff; -moz-border-radius: 0px !important; }������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000176�00000000000�011571� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/themes/soria/TitlePane.css���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/t0000644�0000000�0000000�00000003524�11360615634�027232� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������/** * dijit.layout.TitlePane * */ .soria .dijitTitlePane .dijitTitlePaneTitle { background: #cccccc; background:#fff url("images/titleBar.png") repeat-x top left; border:1px solid #bfbfbf; padding:3px 4px; cursor: pointer; font-size: 0.9em; font-weight: bold; color: #6d6d6d; } .soria .dijitTitlePaneTitle * { vertical-align: middle; } .soria .dijitTitlePane .dijitArrowNode { width:15px; height:15px; } .soria .dijitTitlePaneFocused .dijitTitlePaneTextNode { color: #243C5F; } .soria .dijitOpen .dijitTitlePaneTextNode { color: #243C5F; } .soria .dijitTitlePane .dijitClosed .dijitArrowNode { background: url('images/spriteRoundedIconsSmall.png') no-repeat -30px top; } .dj_ie6 .soria .dijitTitlePane .dijitClosed .dijitArrowNode { background:url('images/spriteRoundedIconsSmall.gif') no-repeat -30px top; } .soria .dijitTitlePane .dijitOpen .dijitArrowNode { background:url('images/spriteRoundedIconsSmall.png') no-repeat -15px top; } .dj_ie6 .soria .dijitTitlePane .dijitOpen .dijitArrowNode { background:url('images/spriteRoundedIconsSmall.gif') no-repeat -15px top; } .soria .dijitTitlePane .dijitArrowNodeInner { display:none; } .dijit_a11y .dijitTitlePane .dijitArrowNodeInner { display:inline !important; font-family:monospace; cursor: pointer; padding-bottom:.2em; } .dijit_a11y .dijitTitlePane .dijitArrowNode { display:none; } .soria .dijitTitlePaneContentOuter { background: #ffffff; border:1px solid #bfbfbf; border-top: 0px solid #3d3d3d; /* w/out this, an <h1> on the top line causes a gap between the .content and .label */ } .soria .dijitTitlePaneContentInner { padding:10px; } /* force hasLayout to ensure borders etc, show up */ .dj_ie6 .soria .dijitTitlePaneContentOuter, .dj_ie6 .soria .dijitTitlePane .dijitTitlePaneTitle { zoom: 1; } .soria .dijitTitlePaneTextNode { margin-left: 4px; margin-right: 4px; }����������������������������������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000174�00000000000�011567� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/themes/soria/Toolbar.css�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/t0000644�0000000�0000000�00000004054�11360615632�027227� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������.soria .dijitToolbar { border-bottom: 1px solid #ccc; background:#eaeaea url("images/titleBar.png") repeat-x top left; } /* setting a min-height on ditor toolbar */ .dj_ie6 .soria .dijitToolbar { height: 10px; } .soria .dijitToolbar .dijitButtonNode, .soria .dijitToolbar .dijitComboButton .dijitButtonContents, .soria .dijitToolbar .dijitComboButton .dijitDownArrowButton { background: none; margin: 0px; padding: 0px; border: none; font-size: 12px; } .soria .dijitToolbar .dijitButton, .soria .dijitToolbar .dijitToggleButton, .soria .dijitToolbar .dijitDropDownButton, .soria .dijitToolbar .dijitComboButton .dijitButtonContents, .soria .dijitToolbar .dijitComboButton .dijitDownArrowButton { background: none; padding: 1px; /* on hover etc., margin replaced w/border */ } .soria .dijitToolbar .dijitButtonChecked, .soria .dijitToolbar .dijitToggleButtonChecked { background-color:#d8e5f8; border:1px solid #316ac5; padding: 0px; } .soria .dijitToolbar .dijitButtonCheckedHover, .soria .dijitToolbar .dijitToggleButtonCheckedHover { background-color:#9abbea; border:1px solid #316ac5; padding: 0px; } .soria .dijitToolbar .dijitButtonHover, .soria .dijitToolbar .dijitToggleButtonHover, .soria .dijitToolbar .dijitDropDownButtonHover, .soria .dijitToolbar .dijitComboButtonHover .dijitButtonContents, .soria .dijitToolbar .dijitComboButtonDownArrowHover .dijitDownArrowButton { /* TODO: change this from Hover to Selected so that button is still highlighted while drop down is being used */ border: 1px solid #316ac5; padding: 0px; background-color:#9abbea; } .soria .dijitToolbar label { padding: 3px 3px 0 6px; } .dj_ie .soria .dijitToolbar .dijitComboButton .dijitButtonContentsFocused, .dj_ie .soria .dijitToolbar .dijitComboButton .dijitDownArrowButtonFocused, .dj_ff2 .soria.dijitToolbar .dijitComboButton .dijitButtonContentsFocused, .dj_ff2 .soria .dijitToolbar .dijitComboButton .dijitDownArrowButtonFocused { /* focus border doesn't appear on <td> for FF2 or IE, so need to add it manually */ border: 1px #777 dotted !important; padding: 0px; } ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000170�00000000000�011563� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/themes/soria/layout/���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/t0000755�0000000�0000000�00000000000�11360615646�027227� 5����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000213�00000000000�011561� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/themes/soria/layout/BorderContainer.css��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/t0000644�0000000�0000000�00000002013�11360615632�027220� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������/** * dijit.layout.BorderContainer * */ .soria .dijitBorderContainer { background-color: #e1ebfb; padding: 5px; } .soria .dijitBorderContainer-dijitBorderContainer { border: none; padding: 0px; } .soria .dijitSplitterH, .soria .dijitGutterH { background: #E1EBFB; border:0; border-left:0px solid #d3d3d3; border-right:0px solid #d3d3d3; height:5px; } .soria .dijitSplitterH .dijitSplitterThumb { background:url("../images/splitContainerSizerH-thumb.png") no-repeat; top:1px; width:19px; height:2px; } .soria .dijitSplitterV, .soria .dijitGutterV { background: #E1EBFB; border:0; border-top:0px solid #d3d3d3; border-bottom:0px solid #d3d3d3; width:5px; } .soria .dijitSplitterV .dijitSplitterThumb { background:url("../images/splitContainerSizerV-thumb.png") no-repeat; left:1px; height:19px; width:5px; } /* active splitter */ .soria .dijitSplitterActive { font-size: 1px; background-image: none; background-color: #aaa; -moz-opacity: 0.6; opacity: 0.6; filter: Alpha(Opacity=60); margin: 0; }���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000207�00000000000�011564� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/themes/soria/layout/ContentPane.css������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/t0000644�0000000�0000000�00000001074�11360615640�027225� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* ContentPane */ .soria .dijitContentPane { padding: 0px; } /* nested layouts */ .soria .dijitTabContainerTop-dijitContentPane, .soria .dijitTabContainerLeft-dijitContentPane, .soria .dijitTabContainerBottom-dijitContentPane, .soria .dijitTabContainerRight-dijitContentPane, .soria .dijitAccordionContainer-dijitContentPane { border: none; background-color: #fff; padding: 5px; } .soria .dijitSplitContainer-dijitContentPane, .soria .dijitBorderContainer-dijitContentPane { border: 1px #B1BADF solid; background-color: #fff; padding: 5px; }��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000222�00000000000�011561� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/themes/soria/layout/AccordionContainer_rtl.css�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/t0000644�0000000�0000000�00000000404�11360615646�027227� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������.dijitRtl .soria .dijitAccordionArrow { background-position: 0px top; } .dijitRtl .soria .dijitAccordionTitle-selected .dijitAccordionArrow { /* same rule as LTR mode, just listed to override previous rule in this file */ background-position: -15px top; } ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000214�00000000000�011562� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/themes/soria/layout/TabContainer_rtl.css�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/t0000644�0000000�0000000�00000001677�11360615644�027242� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������.dijitRtl .soria .dijitTab { margin-right:0; margin-left:2px; /* space between one tab and the next in top/bottom mode */ } /* tab strips */ .dijitRtl .soria .dijitTabContainerTopStrip, .dijitRtl .soria .dijitTabContainerBottomStrip { padding-right: 3px; padding-left: 0px; } .dijitRtl .soria .dijitTabContainerTop-tabs { padding-left: auto; padding-right: 3px; } .dijitRtl .soria .dijitTabContainerBottom-tabs { padding-left: auto; padding-right: 3px; } .dijitRtl .soria .dijitTabInnerDiv { padding-left: 3px; padding-right: 4px; } .dijitRtl .soria .dijitTabPaneWrapper { #zoom: 1; } .dj_ie-rtl .soria .dijitTabContainerLeft-tabs { margin-left: 0px !important; } .dj_ie-rtl .soria .dijitTabContainerRight-tabs { margin-right: 0px !important; } .dijitRtl .soria .dijitTabContainerLeft-tabs .dijitTab, .dijitRtl .soria .dijitTabContainerRight-tabs .dijitTab { margin-left:0px; } .dj_ie .soria .dijitTab .dijitTabInnerDiv{ width : 1%; }�����������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000216�00000000000�011564� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/themes/soria/layout/AccordionContainer.css�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/t0000644�0000000�0000000�00000002734�11360615640�027231� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������/** * dijit.layout.Accordioncontainer * */ .soria .dijitAccordionContainer { border-color: #b1badf; } /* nested classes */ .soria .dijitTabContainer-dijitAccordionContainer { border: none; } .soria .dijitAccordionContainer-dijitAccordionContainer { border: none; background-color: #fff; } .soria .dijitSplitContainer-dijitAccordionContainer, .soria .dijitBorderContainer-dijitAccordionContainer { border: 1px #B1BADF solid; background-color: #fff; } /* common */ .soria .dijitAccordionPane { background-color: #e7e7e7; font-size: 0.9em; font-weight: bold; color: #373941; } .soria .dijitAccordionTitle { background:#fafafa url("../images/titleBar.png") repeat-x top left; border-top: 1px solid #b9bbdd; padding: 5px 4px 6px 8px; cursor:pointer; } .soria .dijitAccordionTitle-selected { background: #f9f9f9 url("../images/accordionItemActive.png") top repeat-x; font-weight: bold; border-top: 1px solid #b9bbdd; border-bottom: 1px solid #b9bbdd; padding: 5px 4px 5px 8px; cursor: default; color: #243C5F; } .soria .dijitAccordionArrow { background:url("../images/spriteRoundedIconsSmallBl.gif") no-repeat -30px top; width:15px; height:15px; margin-top:-1px; } .soria .dijitAccordionTitle-selected .dijitAccordionArrow { background:url("../images/spriteRoundedIconsSmallBl.gif") no-repeat -15px top; margin-top:-1px; } .soria .dijitAccordionText { margin-left: 4px; margin-right: 4px; } .soria .dijitAccordionBody { background: #fff; }������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000212�00000000000�011560� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/themes/soria/layout/SplitContainer.css���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/t0000644�0000000�0000000�00000001370�11360615632�027225� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������/** * dijit.layout.SplitContainer * */ .soria .dijitSplitContainerSizerH { background:url("../images/splitContainerSizerV.png") repeat-y #cddef4; border:0; border-left:0px solid #436496; border-right:0px solid #436496; width:5px; } .soria .dijitSplitContainerSizerH .thumb { background:url("../images/splitContainerSizerV-thumb.png") no-repeat #ccc; left:1px; width:2px; height:19px; } .soria .dijitSplitContainerSizerV { background:url("../images/splitContainerSizerH.png") repeat-x #cddef4; border:0; border-top:0px solid #436496; border-bottom:0px solid #436496; height:2px; } .soria .dijitSplitContainerSizerV .thumb { background:url("../images/splitContainerSizerH-thumb.png") no-repeat #ccc; top:1px; width:19px; height:5px; }������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000210�00000000000�011556� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/themes/soria/layout/TabContainer.css�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/t0000644�0000000�0000000�00000024114�11360615642�027227� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������/** * dijit.layout.TabContainer * * To style TabContainer with rounded corners * you can use these classes: .dijitTab (left), .dijitTabContent (center), dijitTabInnerDiv (right) * For tabs aligned to top you can style a stripe div right underneath the tabs using .dijitTabStripe */ /* Classes for all types of tabs (top/bottom/left/right) */ /* Tabs, shared classes */ .soria .dijitTabPaneWrapper { background:#fff; border:1px solid #B1BADF; margin: 0; padding-left: 0px; } .soria .dijitTabInnerDiv { padding:0px 3px 0px 0px; margin: 0 0 0 4px; background: url("../images/tabContainerSprite.gif") no-repeat; background-position: right -400px; } .soria .dijitTab { line-height:normal; margin:0 2px 0 0; /* space between one tab and the next in top/bottom mode */ padding:0px; background: url("../images/tabContainerSprite.gif") no-repeat 0 -300px; color: #243C5F; border-bottom: 1px #B1BADF solid; } .soria .dijitTabInnerDiv .dijitTabContent { padding:5px 3px 4px 4px; background: url("../images/tabContainerSprite.gif") repeat-x 0 -350px; position: relative; } .dijitTabSpacer { font-size: 1px; } /* hovered tab */ .soria .dijitTabHover, .soria .dijitTabCloseButtonHover { color: #243C5F; background: url("../images/tabContainerSprite.gif") no-repeat 0px -150px; } .soria .dijitTabHover .dijitTabInnerDiv, .soria .dijitTabCloseButtonHover .dijitTabInnerDiv { background: url("../images/tabContainerSprite.gif") no-repeat right -250px; } .soria .dijitTabHover .dijitTabInnerDiv .dijitTabContent, .soria .dijitTabCloseButtonHover .dijitTabInnerDiv .dijitTabContent { background: url("../images/tabContainerSprite.gif") repeat-x 0 -200px; } /* checked tab*/ .soria .dijitTabChecked, .soria .dijitTabCloseButtonChecked { /* the selected tab (with or without hover) */ background: url("../images/tabContainerSprite.gif") no-repeat 0px -0px; } .soria .dijitTabChecked .dijitTabInnerDiv { background: url("../images/tabContainerSprite.gif") no-repeat right -100px; } .soria .dijitTabChecked .dijitTabInnerDiv .dijitTabContent { background: url("../images/tabContainerSprite.gif") repeat-x 0 -50px; color: #243C5F !important; } .soria .dijitTab .dijitClosable .closeNode { /* Inline-block */ display:-moz-inline-box; /* FF2 */ display:inline-block; /* webkit and FF3 */ #zoom: 1; /* set hasLayout:true to mimic inline-block */ #display:inline; /* don't use .dj_ie since that increases the priority */ vertical-align:top; width: 1.25em; height: 1.25em; padding: 0; margin: 0; } .soria .dijitTab .dijitClosable .closeImage { width: 15px; height: 15px; background: url("../images/spriteRoundedIconsSmall.png") no-repeat -60px top; } .dj_ie6 .dijitTab .dijitClosable .closeImage { background: url("../images/spriteRoundedIconsSmall.gif") no-repeat -60px top; } .soria .dijitTabCloseButton .dijitClosable .closeImage { background: url("../images/spriteRoundedIconsSmall.png") no-repeat -60px top; } .dj_ie6 .soria .dijitTabCloseButton .dijitClosable .closeImage { background: url("../images/spriteRoundedIconsSmall.gif") no-repeat -60px top; } .soria .dijitTabCloseButtonHover .dijitClosable .closeImage { background: url("../images/spriteRoundedIconsSmall.png") no-repeat -60px top; } .dj_ie6 .soria .dijitTabCloseButtonHover .dijitClosable .closeImage { background: url("../images/spriteRoundedIconsSmall.gif") no-repeat -60px top; } .soria .dijitTab .dijitTabButtonSpacer { height: 15px; width: 1px; } /* ================================ */ /* top tabs */ .soria .dijitTabContainerTop-tabs { margin-bottom: -1px; border-color: #ccc; padding-left: 3px; } /* top container */ .soria .dijitTabContainerTop-container { border-top: none; } /* checked tabs */ .soria .dijitTabContainerTop-tabs .dijitTabChecked { border-bottom-color: #94b4e6; } /* strip */ .soria .dijitTabContainerTopStrip { border: 1px solid #B1BADF; padding-top: 2px; padding-left: 3px; } .soria .dijitTabContainerTopStrip { background: #F0F4FC; } /* ================================ */ /* bottom tabs */ .soria .dijitTabContainerBottom-tabs { margin-top: -1px; border-color: #ccc; padding-left: 3px; } /* bottom container */ .soria .dijitTabContainerBottom-container { border-bottom: none; } .soria .dijitTabContainerBottom-tabs .dijitTab { border-bottom: none; border-top: 1px solid #B1BADF; background: url("../images/tabBottomEnabledSpriteLR.gif") no-repeat bottom left; } /* checked tabs */ .soria .dijitTabContainerBottom-tabs .dijitTabChecked { border-top-color:#94b4e6; } .soria .dijitTabContainerBottom-tabs .dijitTabInnerDiv .dijitTabContent { padding-top: 4px; padding-bottom: 5px; background: url("../images/tabBottomEnabledC.gif") repeat-x bottom left; } .soria .dijitTabContainerBottom-tabs .dijitTabInnerDiv { background: url("../images/tabBottomEnabledSpriteLR.gif") no-repeat bottom right; } .soria .dijitTabContainerBottom-tabs .dijitTabHover, .soria .dijitTabContainerBottom-tabs .dijitTabCloseButtonHover { color: #243C5F; background: url("../images/tabBottomHoverSpriteLR.gif") no-repeat bottom left; } .soria .dijitTabContainerBottom-tabs .dijitTabHover .dijitTabInnerDiv, .soria .dijitTabContainerBottom-tabs .dijitTabCloseButtonHover .dijitTabInnerDiv { background: url("../images/tabBottomHoverSpriteLR.gif") no-repeat bottom right; } .soria .dijitTabContainerBottom-tabs .dijitTabHover .dijitTabInnerDiv .dijitTabContent, .soria .dijitTabContainerBottom-tabs .dijitTabCloseButtonHover .dijitTabInnerDiv .dijitTabContent { background: url("../images/tabBottomHoverC.gif") repeat-x bottom left; } .soria .dijitTabContainerBottom-tabs .dijitTabChecked, .soria .dijitTabContainerBottom-tabs .dijitTabCloseButtonChecked { /* the selected tab (with or without hover) */ background: url("../images/tabBottomActiveSpriteLR.gif") no-repeat bottom left; } .soria .dijitTabContainerBottom-tabs .dijitTabChecked .dijitTabInnerDiv { background: url("../images/tabBottomActiveSpriteLR.gif") no-repeat bottom right; } .soria .dijitTabContainerBottom-tabs .dijitTabChecked .dijitTabInnerDiv .dijitTabContent { background: url("../images/tabBottomActiveC.gif") repeat-x bottom left; } /* strip */ .soria .dijitTabContainerBottomStrip { padding-bottom: 2px; padding-left: 3px; border: 1px solid #B1BADF; } .soria .dijitTabContainerBottomStrip { background: #F0F4FC; } /* top/bottom strip */ .soria .dijitTabContainerBottom-spacer, .soria .dijitTabContainerTop-spacer { height: 2px; border: 1px solid #8ba0bd; background: #94b4e6; } /* ================================ */ /* right tabs */ .soria .dijitTabContainerRight-tabs { margin-left: -1px; border-color: #ccc; padding-top: 3px; } /* right container */ .soria .dijitTabContainerRight-container { border-right: none; } .soria .dijitTabContainerRight-tabs .dijitTab { border-bottom: none; border-left: 1px solid #B1BADF; border-bottom: 1px solid #B1BADF !important; } /* some odd ie bug when borders dissapear when setting a bottom margin, this sortof helps */ .dj_ie .soria .dijitTabContainerRight-tabs .dijitTabInnerDiv { border-bottom: solid #fff 1px; } /* checked tabs */ .soria .dijitTabContainerRight-tabs .dijitTabChecked { border-left-color: #94b4e6; } .soria .dijitTabContainerRight-tabs .dijitTabChecked { background: url("../images/tabRightChecked.gif") no-repeat left top !important; } /* some odd ie bug when borders dissapear when setting a bottom margin, this sortof helps */ .dj_ie .soria .dijitTabContainerRight-tabs .dijitTabChecked .dijitTabInnerDiv, .dj_ie .soria .dijitTabContainerRight-tabs .dijitTabCheckedHover .dijitTabInnerDiv { border-bottom: solid #efefef 1px; } .soria .dijitTabContainerRight-tabs .dijitTab { background: url("../images/tabContainerSprite.gif") no-repeat left -350px; } .soria .dijitTabContainerRight-tabs .dijitTabHover .dijitTab { background: url("../images/tabContainerSprite.gif") no-repeat left -200px; } /* strip */ .soria .dijitTabContainerRightStrip { padding-right: 2px; padding-top: 3px; border: 1px solid #B1BADF; } .soria .dijitTabContainerRightStrip { background: #F0F4FC; } /* ================================ */ /* left tabs */ .soria .dijitTabContainerLeft-tabs { margin-right: -1px; border-color: #ccc; padding-top: 3px; } /* left conatiner */ .soria .dijitTabContainerLeft-container { border-left: none; } .soria .dijitTabContainerLeft-tabs .dijitTab { border-right: 1px solid #B1BADF; border-bottom: 1px solid #B1BADF; } /* checked tabs */ .soria .dijitTabContainerLeft-tabs .dijitTabChecked { border-right: 1px solid #94b4e6; } .soria .dijitTabContainerLeft-tabs .dijitTabInnerDiv { background: url("../images/tabContainerSprite.gif") no-repeat right -350px; } .soria .dijitTabContainerLeft-tabs .dijitTabHover .dijitTabInnerDiv { background: url("../images/tabContainerSprite.gif") no-repeat right -200px; } .soria .dijitTabContainerLeft-tabs .dijitTabChecked .dijitTabInnerDiv, .soria .dijitTabContainerLeft-tabs .dijitTabCheckedHover .dijitTabInnerDiv { background: url("../images/tabLeftChecked.gif") no-repeat right top; } .dj_ie .soria .dijitTabContainerLeft-tabs .dijitTabChecked .dijitTabInnerDiv, .dj_ie .soria .dijitTabContainerLeft-tabs .dijitTabCheckedHover .dijitTabInnerDiv { border-bottom: solid #efefef 1px; } .dj_ie .soria .dijitTabContainerLeft-tabs .dijitTabInnerDiv { border-bottom: solid #fff 1px; } /* strip */ .soria .dijitTabContainerLeftStrip { padding-left: 2px; padding-top: 3px; border: 1px solid #B1BADF; } .soria .dijitTabContainerLeftStrip { background: #F0F4FC; } /* ================================ */ /* left/right tabs */ .soria .dijitTabContainerLeft-tabs .dijitTab, .soria .dijitTabContainerRight-tabs .dijitTab { margin-right:auto; margin-bottom:2px; /* space between one tab and the next in left/right mode */ } /* left/right tabstrip */ .soria .dijitTabContainerLeft-spacer, .soria .dijitTabContainerRight-spacer { width: 2px; border: 1px solid #8ba0bd; background: #94b4e6; } /* ================================ */ /* this resets the tabcontainer stripe when within a contentpane */ .soria .dijitTabContainerTop-dijitContentPane .dijitTabContainerTop-tabs { border-left: 0px solid #ccc; border-top: 0px solid #ccc; border-right: 0px solid #ccc; padding-top: 0px; padding-left: 0px; } ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000173�00000000000�011566� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/themes/soria/Common.css������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/t0000644�0000000�0000000�00000003365�11360615636�027237� 0����������������������������������������������������������������������������������������������������ustar �������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������� /**** Disabled cursor *****/ .soria .dijitSliderDisabled *, .soria .dijitDisabledClickableRegion, /* a region the user would be able to click on, but it's disabled */ .soria .dijitSpinnerDisabled *, .soria .dijitButtonDisabled *, .soria .dijitDropDownButtonDisabled *, .soria .dijitComboButtonDisabled *, .soria .dijitComboBoxDisabled * { cursor: not-allowed !important; } /* DnD avatar-specific settings */ /* For now it uses a default set of rules. Some other DnD classes can be modified as well. */ .soria .dojoDndItemBefore { border-top: 2px solid #369; } .soria .dojoDndItemAfter { border-bottom: 2px solid #369; } .soria .dojoDndItemOver { cursor:pointer; } .soria table.dojoDndAvatar { -moz-border-radius: 0; border: 1px solid #ccc; border-collapse: collapse; background-color: #fff; font-size: 75%; color: black;} .soria .dojoDndAvatar td { border: none; } .soria .dojoDndAvatar tr { border: none; } .soria .dojoDndAvatarHeader td { height: 20px; padding: 0 0 0 21px; } .soria .dojoDndAvatarItem td { padding: 2px;} .soria.dojoDndMove .dojoDndAvatarHeader {background-color: #f58383; background-image: url(images/dndNoMove.png); background-repeat: no-repeat; background-position: 2px center;} .soria.dojoDndCopy .dojoDndAvatarHeader {background-color: #f58383; background-image: url(images/dndNoCopy.png); background-repeat: no-repeat; background-position: 2px center;} .soria.dojoDndMove .dojoDndAvatarCanDrop .dojoDndAvatarHeader {background-color: #97e68d; background-image: url(images/dndMove.png); background-repeat: no-repeat; background-position: 2px center;} .soria.dojoDndCopy .dojoDndAvatarCanDrop .dojoDndAvatarHeader {background-color: #97e68d; background-image: url(images/dndCopy.png); background-repeat: no-repeat; background-position: 2px center;} ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000166�00000000000�011570� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/themes/soria/form/�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/t0000755�0000000�0000000�00000000000�11360615644�027225� 5����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000204�00000000000�011561� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/themes/soria/form/Button_rtl.css���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/t0000644�0000000�0000000�00000000124�11360615640�027220� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������.dijitRtl .soria .dijitComboBox .dijitButtonNode { border-width: 0px 0px 0px 1px; }��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000205�00000000000�011562� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/themes/soria/form/TimeTextBox.css��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/t0000644�0000000�0000000�00000000021�11360615644�027220� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������@CHARSET "UTF-8";���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000204�00000000000�011561� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/themes/soria/form/Common_rtl.css���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/t0000644�0000000�0000000�00000000374�11360615632�027230� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������.dijitRtl .soria .dijitComboBox .dijitButtonNode, .dijitRtl .soria .dijitSpinner .dijitButtonNode { /* line between the input area and the drop down button */ border-color: #8ba0bd; border-left: 0px solid #8ba0bd; border-right: 1px solid #8ba0bd; }��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000200�00000000000�011555� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/themes/soria/form/Slider.css�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/t0000644�0000000�0000000�00000007611�11360615636�027235� 0����������������������������������������������������������������������������������������������������ustar �������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������� /**** SLIDER ****/ .soria .dijitSliderProgressBarH { border-color: #b1badf; background: #c0c2c5 url("../images/sliderFull.png") repeat-x top left; } .soria .dijitSliderProgressBarV { border-color: #b1badf; background: #c0c2c5 url("../images/sliderFullVertical.png") repeat-y bottom left; } .soria .dijitSliderFocused .dijitSliderProgressBarH, .soria .dijitSliderFocused .dijitSliderLeftBumper { background-image:url("../images/sliderFullFocus.png"); } .soria .dijitSliderFocused .dijitSliderProgressBarV, .soria .dijitSliderFocused .dijitSliderBottomBumper { background-image:url("../images/sliderFullVerticalFocus.png"); } .soria .dijitSliderRemainingBarV { border-color: #b4b4b4; background: #dcdcdc url("../images/sliderEmptyVertical.png") repeat-y bottom left; } .soria .dijitSliderRemainingBarH { border-color: #b4b4b4; background: #dcdcdc url("../images/sliderEmpty.png") repeat-x top left; } .soria .dijitSliderBar { border-style: solid; outline:1px; /* border-color: #b4b4b4; */ } .soria .dijitSliderFocused .dijitSliderBar { border-color:#8ba0bd; } .dijit_a11y .dijitSliderProgressBar { background-color:#333 !important; } .soria .dijitSliderImageHandleH { border:0px; width:15px; height:18px; background:url("../images/preciseSliderThumb.png") no-repeat center top; cursor:pointer; } .soria .dijitSliderFocused .dijitSliderImageHandleH { background-image:url("../images/preciseSliderThumbFocus.png"); #background-image:url("../images/preciseSliderThumbFocus.gif"); } .dj_ie6 .soria .dijitSliderImageHandleH { background-image:url("../images/preciseSliderThumb.gif"); } .soria .dijitSliderLeftBumper { border-left-width: 1px; border-color: #aab0bb; background: #c0c2c5 url("../images/sliderFull.png") repeat-x top left; } .soria .dijitSliderRightBumper { background: #dcdcdc url("../images/sliderEmpty.png") repeat-x top left; border-color: #b4b4b4; border-right-width: 1px; } .soria .dijitSliderImageHandleV { border:0px; width:20px; height:15px; background:url("../images/sliderThumb.png") no-repeat center center; #background:url("../images/sliderThumb.gif") no-repeat center center; cursor:pointer; } .soria .dijitSliderFocused .dijitSliderImageHandleV { background-image:url("../images/sliderThumbFocus.png"); #background-image:url("../images/sliderThumbFocus.gif"); } .soria .dijitSliderBottomBumper { border-bottom-width: 1px; border-color: #aab0bb; background: #c0c2c5 url("../images/sliderFullVertical.png") repeat-y bottom left; } .soria .dijitSliderTopBumper { background: #dcdcdc url("../images/sliderEmptyVertical.png") repeat-y top left; border-color: #b4b4b4; border-top-width: 1px; } .soria .dijitSliderIncrementIconH, .soria .dijitSliderIncrementIconV { background:url('../images/spriteRoundedIconsSmall.png') no-repeat -45px top; #background:url('../images/spriteRoundedIconsSmall.gif') no-repeat -45px top; width:15px; height:15px; cursor:pointer; } .soria .dijitSliderIncrementIconH { background:url('../images/spriteRoundedIconsSmall.png') no-repeat -30px top; #background:url('../images/spriteRoundedIconsSmall.gif') no-repeat -30px top; } .soria .dijitSliderDecrementIconH, .soria .dijitSliderDecrementIconV { width:15px; height:15px; cursor:pointer; background:url('../images/spriteRoundedIconsSmall.png') no-repeat -15px top; #background:url('../images/spriteRoundedIconsSmall.gif') no-repeat -15px top; } .soria .dijitSliderDecrementIconH { background:url('../images/spriteRoundedIconsSmall.png') no-repeat 0px top; #background:url('../images/spriteRoundedIconsSmall.gif') no-repeat 0px top; } .soria .dijitSliderButtonInner { visibility:hidden; } .soria .dijitSliderDisabled { opacity:0.6 !important; } .dj_ie6 .soria .dijitSliderDisabled, .dj_ie6 .soria .dijitSliderDisabled .dijitRuleContainer, .dj_ie6 .soria .dijitSliderDisabled .dijitSliderRemainingBar, .dj_ie6 .soria .dijitSliderDisabled .dijitSliderProgressBar { filter: gray() alpha(opacity=40); }�����������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000202�00000000000�011557� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/themes/soria/form/ComboBox.css�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/t0000644�0000000�0000000�00000000650�11360615634�027227� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������.soria .dijitComboBox .dijitArrowButton .dijitArrowButtonInner { background:url("../images/spriteArrows.png") no-repeat left center; width: 11px; } .dj_ie6 .soria .dijitComboBox .dijitArrowButton .dijitArrowButtonInner { background:url("../images/spriteArrows.gif") no-repeat left center; } .soria .dijitComboBoxHover .dijitArrowButtonInner { /* TODO: url("images/arrowDownHover.png") but in IE6 it flickers some? */ }����������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000204�00000000000�011561� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/themes/soria/form/Slider_rtl.css���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/t0000644�0000000�0000000�00000002012�11360615632�027217� 0����������������������������������������������������������������������������������������������������ustar �������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������� /* Slider */ .dijitRtl .soria .dijitSliderProgressBarH, .dijitRtl .soria .dijitSliderRemainingBarH, .dijitRtl .soria .dijitSliderLeftBumper, .dijitRtl .soria .dijitSliderRightBumper, .dijitRtl .soria .dijitSliderTopBumper { background-position: top right; } .dijitRtl .soria .dijitSliderProgressBarV, .dijitRtl .soria .dijitSliderRemainingBarV, .dijitRtl .soria .dijitSliderBottomBumper { background-position: bottom right; } .dijitRtl .soria .dijitSliderLeftBumper { border-left-width: 0px; border-right-width: 1px; } .dijitRtl .soria .dijitSliderRightBumper { border-left-width: 1px; border-right-width: 0px; } .dijitRtl .soria .dijitSliderIncrementIconH { background:url('../images/spriteRoundedIconsSmall.png') no-repeat left top; #background:url('../images/spriteRoundedIconsSmall.gif') no-repeat left top; } .dijitRtl .soria .dijitSliderDecrementIconH { background:url('../images/spriteRoundedIconsSmall.png') no-repeat -30px top; #background:url('../images/spriteRoundedIconsSmall.gif') no-repeat -30px top; } ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000205�00000000000�011562� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/themes/soria/form/RadioButton.css��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/t0000644�0000000�0000000�00000003007�11360615636�027230� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* * CheckBox and Radio Widgets, * and the CSS to embed a checkbox or radio icon inside a ToggleButton. * * Order of images in the default sprite (from L to R, checkbox and radio in same image): * checkbox normal - checked * - unchecked * disabled - checked * - unchecked * hover - checked * - unchecked * * radio normal - checked * - unchecked * disabled - checked * - unchecked * hover - checked * - unchecked */ .soria .dijitToggleButton .dijitRadio, .soria .dijitToggleButton .dijitRadioIcon { background-image: url('../images/spriteRadio.gif'); } .soria .dijitRadio, .soria .dijitRadioIcon { /* inside a toggle button */ background-image: url('../images/spriteRadio.gif'); /* checkbox sprite image */ background-repeat: no-repeat; width: 16px; height: 16px; margin: 0; padding: 0; } .soria .dijitRadio, .soria .dijitToggleButton .dijitRadioIcon { /* unselected */ background-position: -16px; } .soria .dijitRadioChecked, .soria .dijitToggleButtonChecked .dijitRadioIcon { /* selected */ background-position: 0px; } .soria .dijitRadioCheckedDisabled { /* selected but disabled */ background-position: -48px; } .soria .dijitRadioDisabled { /* unselected and disabled */ background-position: -32px; } .soria .dijitRadioHover { /* hovering over an unselected enabled radio button */ background-position: -80px; } .soria .dijitRadioCheckedHover { /* hovering over a selected enabled radio button */ background-position: -64px; }�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000200�00000000000�011555� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/themes/soria/form/Common.css�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/t0000644�0000000�0000000�00000005443�11360615640�027231� 0����������������������������������������������������������������������������������������������������ustar �������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������� /**** dijit.form.TextBox dijit.form.ValidationTextBox dijit.form.SerializableTextBox dijit.form.RangeBoundTextBox dijit.form.NumberTextBox dijit.form.CurrencyTextBox dijit.form.NumberSpinner dijit.form.ComboBox (partial) ****/ .soria .dijitInputField INPUT, .soria .dijitTextBox, .soria .dijitComboBox, .soria .dijitSpinner { margin: 0em 0.1em; } .soria .dijitTextBox, .soria .dijitComboBox, .soria .dijitSpinner, .soria .dijitInlineEditor input, .soria .dijitTextArea { /* For all except dijit.form.NumberSpinner: the actual input element. For TextBox, ComboBox, Spinner: the table that contains the input. Otherwise the actual input element. */ background:#fff url("../images/validationInputBg.png") repeat-x top left; border:1px solid #8ba0bd; line-height: normal; } .dj_ie6 .soria .dijitTextBox, .dj_ie6 .soria .dijitComboBox, .dj_ie6 .soria .dijitSpinner, .dj_ie6 .soria .dijitInlineEditor input, .dj_ie6 .soria .dijitTextArea { background:#fff url('../images/validationInputBg.gif') repeat-x top left; } .soria .dijitTextBoxDisabled, .soria .dijitComboBoxDisabled, .soria .dijitSpinnerDisabled, .soria .dijitTextAreaDisabled { color: gray; } .dj_safari .soria .dijitTextBoxDisabled, .dj_safari .soria .dijitComboBoxDisabled, .dj_safari .soria .dijitSpinnerDisabled, .dj_safari .soria .dijitTextareaDisabled { color: #eee; } .soria .dijitComboBox .dijitButtonNode { padding: 0 0.2em; } .soria .dijitComboBox .dijitButtonNode, .soria .dijitSpinner .dijitButtonNode { /* line between the input area and the drop down button */ border-color: #8ba0bd; border-left: 1px solid #8ba0bd; } .soria .dijitTextBoxFocused, .soria .dijitComboBoxFocused, .soria .dijitSpinnerFocused, .soria .dijitTextAreaFocused { /* input field when focused (ie: typing affects it) */ border-color:#406b9b; } .soria .dijitComboBoxFocused .dijitButtonNode, .soria .dijitSpinnerFocused .dijitButtonNode { border-left-color:#8ba0bd; } .soria .dijitSpinnerFocused .dijitDownArrowButton { border-top-color:#8ba0bd; } .soria .dijitError { border-color:#f3d118; background-color:#f9f7ba; background-image:none; } .dj_ie6 .soria .dijitError INPUT { /* background-color: transparent on an <input> doesn't work on IE6 */ background-color:#f9f7ba !important; } .soria .dijitErrorFocused { background-color:#ff6; background-image:none; } .dj_ie6 .soria .dijitErrorFocused INPUT { /* background-color: transparent on an <input> doesn't work on IE6 */ background-color:#ff6 !important; } /* Validation errors */ .soria .dijitValidationIcon { /* prevent height change when widget goes from valid to invalid state */ width: 16px; background: transparent url('../images/warning.png') no-repeat center center; } /* The highlight is shown in the ComboBox menu. */ .soria .dijitComboBoxHighlightMatch { background-color:#f9f7ba; }�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000200�00000000000�011555� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/themes/soria/form/Button.css�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/t0000644�0000000�0000000�00000006263�11360615634�027235� 0����������������������������������������������������������������������������������������������������ustar �������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������� /***** dijit.form.Button dijit.form.DropDownButton dijit.form.ComboButton dijit.form.ComboBox (partial) *****/ .soria .dijitButtonNode { /* enabled state - inner */ /* border:1px outset #a0a0a0; */ border: 1px solid #8ba0bd; border-bottom:1px solid #657c9c; padding: 0.1em 0.2em 0.2em 0.2em; background: #bcd5f0 url("../images/buttonEnabled.png") repeat-x top left; } .soria .dijitButtonNode button { border: 0px; background-color: transparent; } .soria .dijitButtonText { text-align: center; padding: 0 0.3em; } .soria .dijitComboBox .dijitButtonNode { border-width: 0px 0px 0px 1px; } .soria .dijitArrowButton { color: #111; } .soria .dijitComboButton .dijitDownArrowButton { padding-right:4px; } .dj_ff2 .soria .dijitComboButton .dijitButtonContentsFocused, .dj_ff2 .soria .dijitComboButton .dijitDownArrowButtonFocused { border: 1px black dotted !important; } .soria .dijitButtonDisabled .dijitButtonNode, .soria .dijitToggleButtonDisabled .dijitButtonNode, .soria .dijitDropDownButtonDisabled .dijitButtonNode, .soria .dijitComboButtonDisabled .dijitButtonNode, .soria .dijitComboBoxDisabled, .soria .dijitSpinnerDisabled, .soria .dijitSpinnerDisabled .dijitButtonNode { /* disabled state - inner */ border-color: #b9bbdd #b9bbdd #b9bbdd #b9bbdd; background:#c3d3e5 url("../images/buttonDisabled.png") top repeat-x; opacity: 0.60; /* Safari, Opera and Mozilla */ } .soria .dijitButtonHover .dijitButtonNode, .soria .dijitButtonNodeHover, .soria .dijitToggleButtonHover .dijitButtonNode, .soria .dijitDropDownButtonHover .dijitButtonNode, .soria .dijitComboButtonHover .dijitButtonContents, .soria .dijitComboButtonDownArrowHover .dijitDownArrowButton, .soria .dijitComboBoxHover .dijitDownArrowButton, .soria .dijitSpinnerUpArrowHover .dijitUpArrowButton, .soria .dijitSpinnerDownArrowHover .dijitDownArrowButton { /* hover state - inner */ /* TODO: change from Hover to Selected so that button is still highlighted while drop down is being used */ color:#243C5F; background:#acc5e2 url("../images/buttonHover.png") repeat-x top left; } .soria .dijitSpinnerUpArrowActive .dijitUpArrowButton, .soria .dijitSpinnerDownArrowActive .dijitDownArrowButton, .soria .dijitButtonActive .dijitButtonNode, .soria .dijitToggleButtonActive .dijitButtonNode, .soria .dijitDropDownButtonActive .dijitButtonNode, .soria .dijitComboButtonActive .dijitButtonContents, .soria .dijitDownArrowActive .dijitDownArrowButton, .soria .dijitComboBoxActive .dijitDownArrowButton { /* active state - inner (for when you are pressing a normal button, or * when a toggle button is in a depressed state */ border-color:#657c9c; background: #91b4e5 url("../images/buttonActive.png") top left repeat-x; } .soria .dijitArrowButtonInner { background:url("../images/spriteArrows.png") no-repeat left top; width: 11px; } .soria .dijitUpArrowButton .dijitArrowButtonInner { background:url("../images/spriteArrows.png") no-repeat -22px top; width: 11px; } .dj_ie6 .soria .dijitArrowButtonInner { background:url("../images/spriteArrows.gif") no-repeat left top; width: 11px; } .dj_ie6 .soria .dijitUpArrowButton .dijitArrowButtonInner { background:url("../images/spriteArrows.gif") no-repeat -22px top; width: 11px; } ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000202�00000000000�011557� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/themes/soria/form/Checkbox.css�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/t0000644�0000000�0000000�00000003026�11360615640�027224� 0����������������������������������������������������������������������������������������������������ustar �������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������� /* * CheckBox and Radio Widgets, * and the CSS to embed a checkbox or radio icon inside a ToggleButton. * * Order of images in the default sprite (from L to R, checkbox and radio in same image): * checkbox normal - checked * - unchecked * disabled - checked * - unchecked * hover - checked * - unchecked * * radio normal - checked * - unchecked * disabled - checked * - unchecked * hover - checked * - unchecked */ .soria .dijitToggleButton .dijitCheckBox, .soria .dijitToggleButton .dijitCheckBoxIcon { background-image: url('../images/spriteCheckbox.gif'); } .soria .dijitCheckBox, .soria .dijitCheckBoxIcon { /* inside a toggle button */ background-image: url('../images/spriteCheckbox.gif'); /* checkbox sprite image */ background-repeat: no-repeat; width: 16px; height: 16px; margin: 0; padding: 0; } .soria .dijitCheckBox, .soria .dijitToggleButton .dijitCheckBoxIcon { /* unchecked */ background-position: -16px; } .soria .dijitCheckBoxChecked, .soria .dijitToggleButtonChecked .dijitCheckBoxIcon { /* checked */ background-position: 0px; } .soria .dijitCheckBoxDisabled { /* disabled */ background-position: -48px; } .soria .dijitCheckBoxCheckedDisabled { /* disabled but checked */ background-position: -32px; } .soria .dijitCheckBoxHover { /* hovering over an unchecked enabled checkbox */ background-position: -80px; } .soria .dijitCheckBoxCheckedHover { /* hovering over a checked enabled checkbox */ background-position: -64px; }����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000160�00000000000�011562� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/themes/a11y/�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/t0000755�0000000�0000000�00000000000�11360615646�027227� 5����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000212�00000000000�011560� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/themes/a11y/indeterminate_progress.gif���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/t0000644�0000000�0000000�00000005533�11360615636�027236� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������GIF89a��÷�¿¿¿���ÿÿÿÿÿÿ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������!ÿ NETSCAPE2.0���!ù ��,�������<�ÿ H° Á‚*4˜p¡Ã†BŒÈâ‰b̸ÑbGŠ#†|˜ñàÈ‹%+¦$xRâJ–/5Æ�!ù ��,��������üHp Á‚*LX0 �!ù ��,��������ø'àÀ‚*4È0aÃ…# �!ù ��,���������ðO Aƒ&<¨¡Ã†J\HñáD‹ÿ�!ù ��,��������ðO Aƒ&<¨¡Ã†J\HñáD‹ÿ�!ù ��,��������ðO Aƒ&<¨¡Ã†J\HñáD‹ÿ�!ù ��,��������ðO Aƒ&<¨¡Ã†J\HñáD‹ÿ�!ù ��,��������ðO Aƒ&<¨¡Ã†J\HñáD‹ÿ�!ù ��,��������ðO Aƒ&<¨¡Ã†J\HñáD‹ÿ�!ù ��,��������ðO Aƒ&<¨¡Ã†J\HñáD‹ÿ�!ù ��,��������ðO Aƒ&<¨¡Ã†J\HñáD‹ÿ�!ù ��,��������ðO Aƒ&<¨¡Ã†J\HñáD‹ÿ�!ù ��, ��������ðO Aƒ&<¨¡Ã†J\HñáD‹ÿ�!ù ��, ��������ðO Aƒ&<¨¡Ã†J\HñáD‹ÿ�!ù ��, ��������ðO Aƒ&<¨¡Ã†J\HñáD‹ÿ�!ù ��, ��������ðO Aƒ&<¨¡Ã†J\HñáD‹ÿ�!ù ��, ��������ðO Aƒ&<¨¡Ã†J\HñáD‹ÿ�!ù ��,��������ðO Aƒ&<¨¡Ã†J\HñáD‹ÿ�!ù ��,��������ðO Aƒ&<¨¡Ã†J\HñáD‹ÿ�!ù ��,��������ðO Aƒ&<¨¡Ã†J\HñáD‹ÿ�!ù ��,��������Hp Á‚*LX0 �!ù ��,������ �H°`Á€�!ù ��,�������ÿHp Á‚*LX0 �!ù ��,�������ÿ� àÀ‚*4È0aÃ…# �!ù ��,�������ÿ�0@ Aƒ&<¨¡Ã†J\HñáD‹�!ù ��,�������ÿ�0@ Aƒ&<¨¡Ã†J\HñáD‹�!ù ��,�������ÿ�0@ Aƒ&<¨¡Ã†J\HñáD‹�!ù ��, �������ÿ�0@ Aƒ&<¨¡Ã†J\HñáD‹�!ù ��, �������ÿ�0@ Aƒ&<¨¡Ã†J\HñáD‹�!ù ��, �������ÿ�0@ Aƒ&<¨¡Ã†J\HñáD‹�!ù ��,�������� �!ù ��, �������ÿ�0@ Aƒ&<¨¡Ã†J\HñáD‹�!ù ��, �������ÿ�0@ Aƒ&<¨¡Ã†J\HñáD‹�!ù ��,�������ÿ�0@ Aƒ&<¨¡Ã†J\HñáD‹�!ù ��,�������ÿ�0@ Aƒ&<¨¡Ã†J\HñáD‹�!ù ��,�������ÿ�0@ Aƒ&<¨¡Ã†J\HñáD‹�!ù ��,�������ÿ�0@ Aƒ&<¨¡Ã†J\HñáD‹�!ù ��,�������ÿ�0@ Aƒ&<¨¡Ã†J\HñáD‹�!ù ��,�������ÿ�0@ Aƒ&<¨¡Ã†J\HñáD‹�!ù ��,�������ÿ�0@ Aƒ&<¨¡Ã†J\HñáD‹�!ù ��,�������ÿ�0@ Aƒ&<¨¡Ã†J\HñáD‹�!ù ��,��������ÿ�0@ Aƒ&<¨¡Ã†J\HñáD‹�!ù ��,������� Hp Á‚*LX0 �;���������������������������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000176�00000000000�011571� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/themes/a11y/colors7x10.png���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/t0000644�0000000�0000000�00000005121�11360615646�027230� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������‰PNG  ��� IHDR���Î���‘���‹Ç‡æ��� pHYs�� �� �šœ���gAMA��±Ž|ûQ“��� cHRM��z%��€ƒ��ùÿ��€é��u0��ê`��:˜��o’_ÅF�� ÇIDATxÚbœ9sæÿ´´4†Q0 Fq`Ö¬Y �ÄøFƒbŒÒ�@�1Á(¤€�Í8£`�ˆ[û�Öo5oÔ¼ád � 1ŠÈé<¡˜J™yKV£šïL™y ÷¢š—hB™yóÏ …Ÿ;…á·…ÿ?‰²n(ã<F¾X(eññj5j|¸S˜^v¢¥_ßDŠÌÛ¼y> ß…Ý…"óöü܃!@£MµQ0 È��4šqFÁ( �ÐhÆ£€ �@£gŒ2�@�fœQ0 È��4šqFÁ( �ÐhÆ£€ �@£gŒ2�@�fœQ0 È��4šqFÁ( �ÐhÆ£€ �@£gŒ2�@�fœQ0 È��„uu4µ–bÃÍC[ÝL±yh«›)6mu3Åæ¡­n¦ ¯n¦ ¯n¦ì¤rzA_ÝL)À¶º™R�@£[§GÁ( �ÐhSmŒ2�@�fœQ0 È��4šqFÁ( �Ð虣æšG‚y0�@XGÕ¬¬¬(²äرc¨–ªQdÞ¬›çPÍó֦̼­WÑÌ“¡Ð¼'(üpßÏ™·r3/ ÿ{èwŠÌã\͉Âo—¤È¼ÊçïQøïL);#@è4ê(Úé?!™gʲ…ú’²3V‹cŽBÐhSmŒ2�@�fœQ0 È��4šqFÁ( �ÐhÆ£€ �@£gŒ2�@�fœQ0 È��4šqFÁ( �ÐhÆ£€ �@£gŒ2�@�fœQ0 È��4šqFÁ( �ÐhÆ£€ �@£gŒ2�@�Ví˜��`˜Ÿá_øÊLAO]ݬU7ó/ºÙóú«nÖª›µêf­ºY«nÖ.ݬ­�=s`Œ2�@�6ÕFÁ( �ÐhÆ£€ �@£gŒ2�@�ž90jÞ¨y$˜�„uTM]]"KnÞ¼‰Âþœ"óVJJ¢ð£¹SdÞÒ¯–¨Â“N‘y³¾ÌDá‡úS¶§õFÔQ¯gi”¹OjªûÖ[Sd^à‰³(üw¦A™'tz ÿÑyÊÎ3DEs¼nK‘yû5cˆÐhSmŒ2�@�fœQ0 È��4šqFÁ( �ÐhÆ£€ �@£gŒ2�@�fœQ0 È��4šqFÁ( �ÐhÆ£€ �@£gŒ2�@�fœQ0 È��4šqFÁ( �ÐhÆ£€ �@£gŒ2�@�Rí˜��€a×û›} ƒ»£»›Uw³ênVÝͪ»Yu7«îfÕݬº›ÕÛÍjhôÌQ0 È��4ÚT£€ �@£gŒ2�@�fœQ0 È��4zæÀ¨y£æ‘` �ÖQµçž ‰6Š––Nážþ™¨£Jik(4/ͼϚNjf…gÌBE›iBÙ¨ZúT÷|SþF‘y\w¹Pø+.xPd^„ÁþŃ&™§o…¯¸ÇŠ"óî»`žl @£MµQ0 È��4šqFÁ( �ÐhÆ£€ �@£gŒ2�@�fœQ0 È��4šqFÁ( �ÐhÆ£€ �@£gŒ2�@�fœQ0 È��4šqFÁ( �ÐhÆ£€ �@£gŒ2�@�fœQ0 È��„uu´$•Ï@_ÝL±y!T6—ÊæQùŒ�ôÕÍ”ôÕÍ”ôÕÍ”ôÕÍ”l«›)�4zæÀ(d�€�mª‚Q@� ÑŒ3 F� €F3Î(d�€�=s`Ô¼QóH0�ë¨Ú… (²ÄÀÀ�…ï\½˜"óö¶Æ¢ð-/´RdÞqƒjÔ@y¶"ófIy¢šgGᙇPGå:?uRd^9_9 ê§}™—Íç„ÂOOO£È¼™3Q÷ÇIž™ÇŸ‡Ÿ3)Ë5é˜'ŸÐhSmŒ2�@�fœQ0 È��4šqFÁ( �ÐhÆ£€ �@£gŒ2�@�fœQ0 È��4šqFÁ( �ÐhÆ£€ �@£gŒ2�@�fœQ0 È��4šqFÁ( �ÐhÆ£€ �@£gŒ2�@�Vî˜�†ZAÖý›My�F óª£«›µêf­ºY«næ½¹ý¨nÖª›µêfíÓÍÚ¢›µ'€FÏ£€ �@£MµQ0 È��4šqFÁ( �ÐhÆ£€ �@£gŒš7j æÁ�@�aU›¶mE–dyy¡ð%;)Û3ÿ¼uTéÓš*ŠÌã iCá³ïœB‘y?ÝsPÝûœ²3$%QGåÒ)4o&ºyŸ>Qfªyé&”™7õäÎõK(s_` ªû>¥SfßL> 1€�mª‚Q@� ÑŒ3 F� €F3Î(d�€�Í8£`�h4㌂Q@� ÑŒ3 F� €F3Î(d�€�Í8£`�h4㌂Q@� ÑŒ3 F� €F3Î(d�€�Í8£`�h4㌂Q@� ¬«£ÑW7S ÐW7S ÐW7S ÐW7S ÐW7S fRÛ<>>ꚇ¶º™R€¾º™âô2“ê €FÏ£€ �@£MµQ0 È��4šqFÁ( �ÐhÆ£€ �@£gŒš7j æÁ�@�aUKO§pûLÔQ OšÇ‡fÞs Í“D3gâDŠÌû’ŸÂßsiEæ¹èe¡ÆÇi ãÃÕ¿ ×)2¯¡A-½<§0½H¢ð7¥¿¤È<¿™âhéå9…éEC €F›j£`�h4㌂Q@� ÑŒ3 F� €F3Î(d�€�Í8£`�h4㌂Q@� ÑŒ3 F� €F3Î(d�€�Í8£`�h4㌂Q@� ÑŒ3 F� €F3Î(d�€�Í8£`�ëêhôÕÍ”>*›'IeóÐW7S ÐW7S ÐW7S ÐW7Sì>,«‡)è«›)O/’TÏ8�4zæÀ(d�€�mª‚Q@� ÑŒ3 F� €F3Î(d�€�b¢ÖžìQ0 F �å€��É‹5&j°ûÙ����IEND®B`‚�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000175�00000000000�011570� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/themes/a11y/colors3x4.png����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/t0000644�0000000�0000000�00000001422�11360615632�027223� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������‰PNG  ��� IHDR���V���@���€Ù€q��� pHYs�� �� �šœ���gAMA��±Ž|ûQ“��� cHRM��z%��€ƒ��ùÿ��€é��u0��ê`��:˜��o’_ÅF��ˆIDATxÚb˜9sæÿQ@]� S€�b1FÕ@�1m�@�,�@�±  Ìš5‹*§¥¥Hó`� €XˆQD*@wlzZ:EæÍœ5Õ¼çš'‰f^:eþ93r�h´( � Ñ€¥� Ñ€¥� Ñ€¥� Ñ€¥� Ñ€¥� Ñ€¥� Ñ€¥� Ñ€¥� Ñ€¥� Ñ€¥� Ñ€¥� Ñ€¥� ¬£[ÔJƒôÑ)ŠÍ“¤²y3gQ=`htj†F� €F‹€� X€� X€�ó¢Ñœ@�am¨««SdÉÍ›7Ñ,¥lŽjZ«"Â9ªYh­€ôôç¶*$1Ä�h´( � Ñ€¥� Ñ€¥� Ñ€¥� Ñ€¥� Ñ€¥� Ñ€¥� Ñ€¥� Ñ€¥� Ñ€¥� Ñ€¥� Ñ€¥� Ñ€¥� ¬£[è£S”‚YTžóšEå9*l£S”€�ó¢� Ñ¢€F� €F–F� €F–F� €Fç¼h4ç@X[ÏŸS6$)‰Z˦¥S8ç5µUñœÂ9*I´V@:…î›9³Õ@£E�@�,�@�,�@�,�@�,�@�,�@�,�@�,�@�,�@�,�@�,�@�,�@�,�@�aÝB¢ÌšIÝ9/I*ÏQͤ²û@� €Fç¼h�h´( � Ñ€¥� ØÔ¥§Ãh} O€��™ÓÄnp�L‚����IEND®B`‚����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000172�00000000000�011565� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/themes/a11y/README.txt�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/t0000644�0000000�0000000�00000000236�11360615634�027227� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������This folder contains images used by all themes when in "high-contrast" mode. If you think you need to put something here, please talk to Becky or Bill first.������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000162�00000000000�011564� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/themes/tundra/���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/t0000755�0000000�0000000�00000000000�11360615646�027227� 5����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000172�00000000000�011565� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/themes/tundra/Menu.css�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/t0000644�0000000�0000000�00000003051�11360615632�027223� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������.tundra .dijitMenu { border: 1px solid #7eabcd; margin: 0px; padding: 0px; } .tundra .dijitMenuItem { background-color: #f7f7f7; font-family: sans-serif; margin: 0; } .tundra .dijitMenuPreviousButton, .tundra .dijitMenuNextButton { font-style: italic; } .tundra .dijitMenuItem td { padding:2px; } .tundra .dijitMenuItemHover { background-color: #3559ac; color:#fff; } .tundra .dijitMenuItemIcon { width: 16px; height: 16px; } .tundra .dijitMenuExpand { width: 7px; height: 7px; background-image: url('images/spriteArrows.png'); background-repeat: no-repeat; background-position: -14px 0px; font-size: 1px; display: block; } .dj_ie6 .tundra .dijitMenuExpand { background-image: url('images/spriteArrows.gif'); } .tundra .dijitMenuSeparator { background-color: #f7f7f7; } /* separator can be two pixels -- set border of either one to 0px to have only one */ .tundra .dijitMenuSeparatorTop { border-bottom: 1px solid #9b9b9b; } .tundra .dijitMenuSeparatorBottom { border-top: 1px solid #e8e8e8; } /* the checked menu item */ .tundra .dijitCheckedMenuItemIconChar { display: none; } .tundra .dijitCheckedMenuItemIcon { background-image: url('images/checkmark.png'); background-position: -16px; } .dj_ie6 .tundra .dijitCheckedMenuItemIcon { background-image: url('images/checkmark.gif'); } .tundra .dijitCheckedMenuItemIconChecked { background-position: 0px; } .tundra .dijitMenuItemHover .dijitCheckedMenuItemIcon { background-position: -80px; } .tundra .dijitMenuItemHover .dijitCheckedMenuItemIconChecked { background-position: -64px; }���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000176�00000000000�011571� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/themes/tundra/Menu_rtl.css���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/t0000644�0000000�0000000�00000000267�11360615634�027233� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������.dijitRtl .tundra .dijitMenuItem .dijitMenuItemIcon { padding-left: 3px; padding-right: 0px; } .dijitRtl .tundra .dijitMenuItem .dijitMenuExpand { background-position: -7px 0px; }�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000174�00000000000�011567� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/themes/tundra/Editor.css�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/t0000644�0000000�0000000�00000006751�11360615644�027240� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������.dijitIEFixedToolbar { position:absolute; /* top:0; */ top: expression(eval((document.documentElement||document.body).scrollTop)); } .tundra .dijitToolbar .dijitToolbarSeparator { background: url('images/editor.gif'); } .tundra .dijitEditorIcon { background-image: url('images/editor.gif'); /* editor icons sprite image */ background-repeat: no-repeat; width: 18px; height: 18px; text-align: center; } .tundra .dijitDisabled .dijitEditorIcon { background-image: url('images/editorDisabled.gif'); /* editor icons sprite image */ } .tundra .dijitEditorIconSep { background-position: 0px; } .tundra .dijitEditorIconBackColor { background-position: -18px; } .tundra .dijitEditorIconBold { background-position: -36px; } .tundra .dijitEditorIconCancel { background-position: -54px; } .tundra .dijitEditorIconCopy { background-position: -72px; } .tundra .dijitEditorIconCreateLink { background-position: -90px; } .tundra .dijitEditorIconCut { background-position: -108px; } .tundra .dijitEditorIconDelete { background-position: -126px; } .tundra .dijitEditorIconForeColor { background-position: -144px; } .tundra .dijitEditorIconHiliteColor { background-position: -162px; } .tundra .dijitEditorIconIndent { background-position: -180px; } .tundra .dijitEditorIconInsertHorizontalRule { background-position: -198px; } .tundra .dijitEditorIconInsertImage { background-position: -216px; } .tundra .dijitEditorIconInsertOrderedList { background-position: -234px; } .tundra .dijitEditorIconInsertTable { background-position: -252px; } .tundra .dijitEditorIconInsertUnorderedList { background-position: -270px; } .tundra .dijitEditorIconItalic { background-position: -288px; } .tundra .dijitEditorIconJustifyCenter { background-position: -306px; } .tundra .dijitEditorIconJustifyFull { background-position: -324px; } .tundra .dijitEditorIconJustifyLeft { background-position: -342px; } .tundra .dijitEditorIconJustifyRight { background-position: -360px; } .tundra .dijitEditorIconLeftToRight { background-position: -378px; } .tundra .dijitEditorIconListBulletIndent { background-position: -396px; } .tundra .dijitEditorIconListBulletOutdent { background-position: -414px; } .tundra .dijitEditorIconListNumIndent { background-position: -432px; } .tundra .dijitEditorIconListNumOutdent { background-position: -450px; } .tundra .dijitEditorIconOutdent { background-position: -468px; } .tundra .dijitEditorIconPaste { background-position: -486px; } .tundra .dijitEditorIconRedo { background-position: -504px; } .tundra .dijitEditorIconRemoveFormat { background-position: -522px; } .tundra .dijitEditorIconRightToLeft { background-position: -540px; } .tundra .dijitEditorIconSave { background-position: -558px; } .tundra .dijitEditorIconSpace { background-position: -576px; } .tundra .dijitEditorIconStrikethrough { background-position: -594px; } .tundra .dijitEditorIconSubscript { background-position: -612px; } .tundra .dijitEditorIconSuperscript { background-position: -630px; } .tundra .dijitEditorIconUnderline { background-position: -648px; } .tundra .dijitEditorIconUndo { background-position: -666px; } .tundra .dijitEditorIconWikiword { background-position: -684px; } .tundra .dijitEditorIconToggleDir { background-position: -540px; /* padding: 0; margin: 0; color:#555555; font-family:verdana,arial,sans-serif; font-weight: 800; font-size: 70%; */} .tundra .dijitEditorIconTabIndent { background-position: -702px; } .tundra .dijitEditorIconSelectAll { background-position: -720px; } .tundra .dijitEditorIconUnlink { background-position: -738px; } �����������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000174�00000000000�011567� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/themes/tundra/tundra.css�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/t0000644�0000000�0000000�00000002757�11360615632�027237� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* Adds cosmetic styling to Dijit. Users may swap with a custom theme CSS file. NOTES: --- Dialog.css contains css classes for both Dialog and Tooltip! This because currently a dijit.TooltipDialog exist. Until this is resolved you need to include Dialog.css for both dijits --- Toolbar.css contains classes also used in Editor. Until this is resolved you need to include Toolbar.css for both Toolbar and Editor --- Button.css contains classes for combobox, */ @import url("../dijit.css"); @import url("Common.css"); @import url("layout/ContentPane.css"); @import url("layout/TabContainer.css"); @import url("layout/AccordionContainer.css"); @import url("layout/SplitContainer.css"); @import url("layout/BorderContainer.css"); @import url("form/Common.css"); @import url("form/Button.css"); @import url("form/Checkbox.css"); @import url("form/RadioButton.css"); @import url("form/Slider.css"); @import url("Tree.css"); @import url("ProgressBar.css"); @import url("TitlePane.css"); @import url("Calendar.css"); @import url("TimePicker.css"); @import url("Toolbar.css"); @import url("Dialog.css"); @import url("Menu.css"); @import url("Editor.css"); @import url("ColorPalette.css"); /* RTL files */ @import url("../dijit_rtl.css"); @import url("Calendar_rtl.css"); @import url("Dialog_rtl.css"); @import url("Editor_rtl.css"); @import url("Menu_rtl.css"); @import url("Tree_rtl.css"); @import url("TitlePane_rtl.css"); @import url("layout/TabContainer_rtl.css"); @import url("form/Slider_rtl.css"); �����������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000176�00000000000�011571� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/themes/tundra/Calendar.css���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/t0000644�0000000�0000000�00000006546�11360615644�027242� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* Calendar*/ .tundra .dijitCalendarIncrementControl { /* next/prev month buttons */ width:15px; height:15px; background-image: url("images/spriteRoundedIconsSmall.png"); background-repeat: no-repeat } .dj_ie6 .tundra .dijitCalendarIncrementControl { font-size:.1em; background-image: url("images/spriteRoundedIconsSmall.gif"); } .tundra .dijitCalendarIncreaseInner, .tundra .dijitCalendarDecreaseInner { visibility:hidden; } .tundra .dijitCalendarDecrease { background-position: top left; } .tundra .dijitCalendarIncrease { background-position: -30px top; } .tundra table.dijitCalendarContainer { font-size: 100%; border-spacing: 0; border-collapse: separate; border: 1px solid #ccc; margin: 0; } .tundra .dijitCalendarMonthContainer th { /* month header cell */ background:#d3d3d3 url("images/titleBar.png") repeat-x top; padding-top:.3em; padding-bottom:.2em; text-align:center; } .dj_ie6 .tundra .dijitCalendarMonthContainer th { padding-top:.2em; padding-bottom:.1em; } .tundra .dijitCalendarDayLabelTemplate { /* day of week labels */ background:white url("images/calendarDayLabel.png") repeat-x bottom; font-weight:normal; padding-top:.15em; padding-bottom:0em; border-top: 1px solid #eeeeee; color:#293a4b; text-align:center; } .tundra .dijitCalendarBodyContainer { border-bottom: 1px solid #eeeeee; } .tundra .dijitCalendarMonthLabel { color:#293a4b; font-weight: bold; } .tundra .dijitCalendarDateTemplate { /* style for each day cell */ font-size: 0.9em; font-weight: bold; text-align: center; padding: 0.3em 0.3em 0.05em 0.3em; letter-spacing: 1px; } .dj_ie .tundra .dijitCalendarDateTemplate { padding: 0.1em .33em 0.02em .33em; } .tundra .dijitCalendarPreviousMonth, .tundra .dijitCalendarNextMonth { /* days that are part of the previous or next month */ color:#999999; background-color:#f8f8f8 !important; } .tundra .dijitCalendarPreviousMonthDisabled, .tundra .dijitCalendarNextMonthDisabled { /* days that are part of the previous or next month - disabled*/ background-color:#a4a5a6 !important; } .tundra .dijitCalendarCurrentMonth { /* days that are part of this month */ background-color:white !important; } .tundra .dijitCalendarCurrentMonthDisabled { /* days that are part of this month - disabled */ background-color:#bbbbbc !important; } .tundra .dijitCalendarCurrentDate { /* cell for today's date */ text-decoration:underline; font-weight:bold; } .tundra .dijitCalendarCurrentDate { /* cell for today's date */ text-decoration:underline; font-weight:bold; } .tundra .dijitCalendarHoveredDate { background-color: #e2ebf2 !important; } .tundra .dijitCalendarSelectedDate { /* cell for the selected date */ background-color:#bbc4d0 !important; color:black !important; } .tundra .dijitCalendarYearContainer { /* footer of the table that contains the year display/selector */ background:white url("images/calendarYearLabel.png") repeat-x bottom; border-top:1px solid #ccc; } .tundra .dijitCalendarYearLabel { /* container for all of 3 year labels */ margin:0; padding:0.4em 0 0.25em 0; text-align:center; } .tundra .dijitCalendarSelectedYear { /* label for selected year */ color:black; padding:0.2em; padding-bottom:0.1em; background-color:#bbc4d0 !important; } .tundra .dijitCalendarNextYear, .tundra .dijitCalendarPreviousYear { /* label for next/prev years */ color:black !important; font-weight:normal; }����������������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000172�00000000000�011565� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/themes/tundra/Tree.css�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/t0000644�0000000�0000000�00000003260�11360615632�027225� 0����������������������������������������������������������������������������������������������������ustar �������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������� /* Tree */ .tundra .dijitTreeNode { background-image : url('images/i.gif'); background-position : top left; background-repeat : repeat-y; margin-left: 19px; zoom: 1; /* MOW: what the heck is this doing in here? */ } /* left vertical line (grid) for all nodes */ .tundra .dijitTreeIsLast { background: url('images/i_half.gif') no-repeat; } .tundra .dijitTreeIsRoot { margin-left: 0; background-image: none; } .tundra .dijitTreeExpando { width: 18px; height: 18px; } .tundra .dijitTreeContent { min-height: 18px; min-width: 18px; } .tundra .dijitTreeExpand { width: 18px; height: 18px; background-repeat : no-repeat; } /* same style as IE selection */ .tundra .dijitTreeNodeEmphasized { background-color: Highlight; color: HighlightText; } /* don't use :focus due to opera and IE's lack of support on div's */ .tundra .dijitTreeLabelFocused { outline: 1px invert dotted; background:#dde7f2; } .tundra .dijitTreeNodeHover { background-color: #e2ebf2 !important; } .tundra .dijitTreeExpandoOpened { background-image: url('images/treeExpand_minus.gif'); } .tundra .dijitTreeExpandoClosed { background-image: url('images/treeExpand_plus.gif'); } .tundra .dijitTreeExpandoLeaf { background-image: url('images/treeExpand_leaf.gif'); } .tundra .dijitTreeExpandoLoading { background-image: url('images/treeExpand_loading.gif'); } .tundra .dijitTreeIcon { width: 16px; height: 16px; } .tundra .dijitFolderOpened { background: url('images/folderOpened.gif') no-repeat; } .tundra .dijitFolderClosed { background: url('images/folderClosed.gif') no-repeat; } .tundra .dijitLeaf { background: url('images/leaf.gif') no-repeat; } ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000174�00000000000�011567� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/themes/tundra/Dialog.css�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/t0000644�0000000�0000000�00000012133�11360615646�027231� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* Dialog */ .tundra .dijitDialog { background: #fff; border: 1px solid #7eabcd; /* filter: progid:DXImageTransform.Microsoft.DropShadow(OffX=5, OffY=5, Color='#adadad', Positive='true'); filter: progid:DXImageTransform.Microsoft.Blur(PixelRadius=3, ShadowOpacity=.30), progid:DXImageTransform.Microsoft.Alpha(Opacity=100); filter: progid:DXImageTransform.Microsoft.Blur(PixelRadius='5', MakeShadow='true', ShadowOpacity='0.50'); filter: progid:DXImageTransform.Microsoft.Shadow(color='#666666', ShadowOpacity=.30, Direction=135, Strength=3); */ padding: 0px; -webkit-box-shadow: 0px 5px 10px #adadad; } .tundra .dijitDialog .dijitDialogTitle { border-top: none; border-left: none; border-right: none; } .tundra .dijitDialog .dijitDialogPaneContent { background: #fff; border:none; border-top: 1px solid #d3d3d3; /* w/out this, an <h1> on the top line causes a gap between the .content and .label */ padding:10px; } .tundra .dijitDialogTitleBar { /* outer container for the titlebar of the dialog */ background: #fafafa url("images/titleBar.png") repeat-x top left; padding: 5px 6px 3px 6px; cursor: move; outline:0; /* remove this line if keyboard focus on dialog startup is an issue. tab still takes you to first focusable element */ } .tundra .dijitDialogTitle { /* typography and styling of the dialog title */ font-weight: bold; padding: 4px; outline:0; } .tundra .dijitDialogCloseIcon { /* the default close icon for the dialog */ /* background : url("images/spriteRoundedIconsSmall.png") no-repeat right top; */ background: url("images/tabClose.png") no-repeat right top; position: absolute; vertical-align: middle; right: 6px; top: 4px; height: 15px; width: 15px; cursor: pointer; } .dj_ie .tundra .dijitDialogCloseIcon { background : url("images/tabClose.gif") no-repeat right top; } .tundra .dijitDialogContent { /* the body of the dialog */ padding: 8px; } /* Tooltip and TooltipDialog */ .tundra .dijitTooltip, .tundra .dijitTooltipDialog { /* the outermost dom node, holding the connector and container */ background: transparent; /* make the area on the sides of the arrow transparent */ } .dijitTooltipBelow { /* leave room for arrow above content */ padding-top: 13px; } .dijitTooltipAbove { /* leave room for arrow below content */ padding-bottom: 13px; } .tundra .dijitTooltipContainer { /* The part with the text. */ background: #ffffff url("images/popupMenuBg.gif") repeat-x bottom left; border: 1px solid #7eabcd; padding: 0.45em; -webkit-border-radius: 3px; } .dj_ff3 .tundra .dijitTooltipContainer { /* only do this for FF3, because FF2 has problems with glitches */ -moz-border-radius: 3px; } .tundra .dijitTooltipConnector { /* the arrow piece */ border:0px; z-index: 2; } .tundra .dijitTooltipABRight .dijitTooltipConnector { /* above or below tooltip, but the arrow appears on the right, and the right edges of target and tooltip are aligned rather than the left */ left: auto !important; right: 3px; } .tundra .dijitTooltipBelow .dijitTooltipConnector { /* the arrow piece for tooltips below an element */ top: 0px; left: 3px; background:url("images/tooltipConnectorUp.png") no-repeat top left; width:16px; height:14px; } .dj_ie .tundra .dijitTooltipBelow .dijitTooltipConnector { /* use gif for IE7 too, due to png rendering problems on fade-in (see http://trac.dojotoolkit.org/ticket/6555) */ background-image: url("images/tooltipConnectorUp.gif"); } .tundra .dijitTooltipAbove .dijitTooltipConnector { /* the arrow piece for tooltips above an element */ bottom: 0px; left: 3px; background:url("images/tooltipConnectorDown.png") no-repeat top left; width:16px; height:14px; } .dj_ie .tundra .dijitTooltipAbove .dijitTooltipConnector { background-image: url("images/tooltipConnectorDown.gif"); } .dj_ie6 .tundra .dijitTooltipAbove .dijitTooltipConnector { bottom: -3px; } .tundra .dijitTooltipLeft { padding-right: 14px; } .dj_ie .tundra .dijitTooltipLeft { padding-left: 15px; } .tundra .dijitTooltipLeft .dijitTooltipConnector { /* the arrow piece for tooltips to the left of an element, bottom borders aligned */ right: 0px; bottom: 3px; background:url("images/tooltipConnectorRight.png") no-repeat top left; width:16px; height:14px; } .dj_ie .tundra .dijitTooltipLeft .dijitTooltipConnector { background-image: url("images/tooltipConnectorRight.gif"); } .tundra .dijitTooltipRight { padding-left: 14px; } .tundra .dijitTooltipRight .dijitTooltipConnector { /* the arrow piece for tooltips to the right of an element, bottom borders aligned */ left: 0px; bottom: 3px; background:url("images/tooltipConnectorLeft.png") no-repeat top left; width:16px; height:14px; } .dj_ie .tundra .dijitTooltipRight .dijitTooltipConnector { background-image: url("images/tooltipConnectorLeft.gif"); } .dj_safari .tundra .dijitPopup .dijitTooltipContainer, .dj_safari .tundra .dijitPopup .dijitMenu { /* -webkit-border-radius: 5px; */ -webkit-box-shadow: 0px 5px 10px #adadad; } /* .dj_ie6 .tundra .dijitPopup .dijitTooltipContainer, .dj_ie6 .tundra .dijitPopup .dijitMenu { filter: progid:DXImageTransform.Microsoft.Shadow(color='#666666', Direction=135, Strength=3); } */ �������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000200�00000000000�011555� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/themes/tundra/Editor_rtl.css�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/t0000644�0000000�0000000�00000000617�11360615632�027230� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* Editor */ .dijitRtl .tundra .dijitEditorIcon { background-image: url('images/editor_rtl.gif'); /* editor icons sprite image */ } .dijitRtl .tundra .dijitDisabled .dijitEditorIcon { background-image: url('images/editorDisabled_rtl.gif'); /* editor icons sprite image */ } /* Toolbar */ .dijitRtl .tundra .dijitToolbar .dijitToolbarSeparator { background-image: url('images/editor_rtl.gif'); } �����������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000171�00000000000�011564� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/themes/tundra/images/��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/t0000755�0000000�0000000�00000000000�11360615646�027227� 5����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000205�00000000000�011562� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/themes/tundra/images/titleBar.png��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/t0000644�0000000�0000000�00000000217�11360615644�027227� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������‰PNG  ��� IHDR������#���1$Là���tEXtSoftware�Adobe ImageReadyqÉe<���1IDATxÚbú,¿~ýb```b� !êß¿D b•ÃÇÃ'ÈÈȈp'¹@€�³K¸b����IEND®B`‚���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000216�00000000000�011564� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/themes/tundra/images/progressBarAnim-5.png�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/t0000644�0000000�0000000�00000000433�11360615634�027226� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������‰PNG  ��� IHDR��� ��� ���ôbÓQ���sRGB�®Îé���tEXtSoftware�Adobe ImageReadyqÉe<���°IDAT(Ï5É1R@ÁÑîþÿFRru’0¶>>¿$)I]Ú ÍpÚŽ$i…€ÿN8N¤9Bb ÀiËIj"´#‰#¢×¥Fhg;´„ž6 M©ºÝ‘`ÄÐ3â:ZµíΫ‡3BÂNBÿìŒ4pDÕ6±ã«xúس#qšˆ¨IœÔ–½ïÝc» U4ñum'ûö8çëçΨ-ö:÷æ:×9Ïç÷¶Il»÷rïüq«le£ìp����IEND®B`‚�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000220�00000000000�011557� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/themes/tundra/images/treeExpand_leaf_rtl.gif���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/t0000644�0000000�0000000�00000001511�11360615640�027221� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������GIF89a��÷�¿¿¿���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������!ù���,�������&�H° Áƒ*\Ȱ¡Ã‡#.€¢ÅŠ3jÜȱ£G‚�;���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000201�00000000000�011556� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/themes/tundra/images/menu.png������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/t0000644�0000000�0000000�00000000214�11360615634�027223� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������‰PNG  ��� IHDR���������Ç™Ë���sRGB�®Îé���tEXtSoftware�Adobe ImageReadyqÉe<���!IDATÓcüÿÿ? œÅÄ�6Yzˆ«�•†òý”—����IEND®B`‚������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000216�00000000000�011564� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/themes/tundra/images/calendarYearLabel.png�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/t0000644�0000000�0000000�00000000254�11360615640�027224� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������‰PNG  ��� IHDR���������6Ï¢���tEXtSoftware�Adobe ImageReadyqÉe<���NIDAT(Á À@à zÊþ#¿ _€+A#‰Â%%SÁ[Z¬VK‚õV«€UÀêña…° XùSO¸¼P++ø!Àø/˜P ‡±J����IEND®B`‚����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000216�00000000000�011564� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/themes/tundra/images/checkmarkNoBorder.gif�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/t0000644�0000000�0000000�00000003172�11360615632�027227� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������GIF89aÀ��÷�����ÿÿÿýýþ»¿ÇÆÍØÎÔÞÍÓÝ/?Vq|ŒƒŒšŠ“ “›§¤«µÃÊÔËÑÚÅÉÏëíð%>*C"3K%6N(9P2BX=Lam†§l„¤DSgk€œr†¢“­}‘«[hy]j{Ÿ¸|Œ¡‘¢¹„“§•¥»›«Á£³È¦¶Ë­¼Ñ£±Ä•¢³~ˆ–°¼ÌÇÔæØäôÖâò™¡¬˜ «²¸À¹¾ÅÜßãÛÞâÙÜàf£oˆ¨|“°—³‹ ¹t€’ ±¥°¾Öãó˜«ÁüýýýýýüüüøøøõõõóóóñññïïïìììéééçççæææåååäääãããáááßßßÜÜÜÚÚÚØØØ×××ÕÕÕÔÔÔÏÏÏÍÍÍÉÉÉÇÇÇÆÆÆÂÂÂÁÁÁ¿¿¿¾¾¾»»»¹¹¹µµµ³³³­­­¬¬¬«««©©©¦¦¦ŸŸŸžžž‘‘‘ŒŒŒŠŠŠ{{{zzzyyytttrrrjjjgggfffeeeWWWTTTPPPOOONNNGGG>>>666...---%%%###  ÿÿÿ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������!ù���,����À���ÿ�! H° Áƒ*\Ȱ¡Ã‡#JœH±¢Å‹ã̹3'ÎB=*Ùq¡™4jÒ˜Y胄>zà°ƒŒ8sêø† —%D–paóæ`ÏŸA‡5x¨P¢͈Ñ2ÅÉ-bV\ñÃ!üXq°Cˆ.`¸H¢ƒÃ*xv TbE.$=,¾ 3$€_¿CÂ,åÉ÷/`Á÷ö5x°@3[œ4™<ÙÉ­W4`8€€d v@ä…iÓ@P¸eˆˆÝ/OäÞ8ÀÀ"›¾fèì¡c&À×ow | p,gÚœÁ⻸@1’)Sv"¦àÎZœhQÀó‚!JŸÿ> $ÃA¾ÈÝ"fÉN#$<¨‡K�4|úèçƒ&�‘Ô7Ü_ÿ $ nÀ¡ Ìø˜ÒE¨f>8€&¡¡ à@LyÂx$¦pBHèñHìtE{ï! Á�FT4Çä!ÈŽ;æÀs tã€~)$Žg(¨ä?)PSD(Ýi D¨ÀÖ[ª�$ Ä $Žç •@r11FrÑA GXtbÈž{�w t'‘*Рm(©`…¤FtR6ᄉ D�;è ©¦; „m�C™§Á°AAg("‡‡øQ'FN€ÿQ•Y8Ó (p„ ¼j#Ž0"¬°4y$¡F 4d’Š2™,$PF:•VbYBØb[—a 4&©¦Y �$RÇ"Tä”Å`P†­8}A LPF®á�ü:²†� H¤ƒÚ‡ ’ <J;á@@@8Tœ‚‰ˆà¾`"AF¿læô„c¼©S D Ià$Ü4È¿¿$Üp9×rÊ1×ó@ÐEJuœ0#`,Àw…GjyQ„„Ô¨TtÅNI°pAÌ8)ÖYc‰Æb™½¶c@ie—¤g†}Ú@£‰WGžj q…]„ÞTRP1å“SJµ8âp?6UUWeuW^%ÖÞ¢•ÖZm.úè‘ B¦´QI ”fµô’ÆÍTÓ‰¤ç®ûî¼÷îûïÀë�;������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000211�00000000000�011557� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/themes/tundra/images/buttonActive.png����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/t0000644�0000000�0000000�00000000201�11360615644�027220� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������‰PNG  ��� IHDR��������� ÅÃn���tEXtSoftware�Adobe ImageReadyqÉe<���#IDATÓc|ûö- ###n àWG_Øô�uDA™ ¢����IEND®B`‚�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000217�00000000000�011565� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/themes/tundra/images/preciseSliderThumb.png����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/t0000644�0000000�0000000�00000000370�11360615646�027231� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������‰PNG  ��� IHDR���������ísO/���sRGB�®Îé���tEXtSoftware�Adobe ImageReadyqÉe<���IDAT8Ë­ÒK Ä EQ÷¿×áDPpA¢â'‚Ý U´ùH¨tà¾;’qÎûlü¨ßÿ­µÉóÜÇ@­•¥ äœI0R"Á@Œ‘@kÝC[ãÎò„"ÞûK0þݰï{X@Ä9·€ññþ)�¥T·ÖNã|5¾ @DJ9Ý·ˆìÆÃé¤0ˆ ò£¸����IEND®B`‚������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000217�00000000000�011565� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/themes/tundra/images/tooltipConnectorUp.png����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/t0000644�0000000�0000000�00000006024�11360615636�027232� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������‰PNG  ��� IHDR���������&/œŠ��� pHYs�� �� �šœ�� OiCCPPhotoshop ICC profile��xÚSgTSé=÷ÞôBKˆ€”KoR RB‹€‘&*! Jˆ!¡ÙQÁEEÈ ˆŽŽ€ŒQ, Š Øä!¢Žƒ£ˆŠÊûá{£kÖ¼÷æÍþµ×>ç¬ó³ÏÀ –H3Q5€ ©BàƒÇÄÆáä.@ $p�³d!sý#�ø~<<+"À¾�xÓ �ÀM›À0‡ÿêB™\€„Àt‘8K€�@zŽB¦�@F€˜&S� �`Ëcbã�P-�`'æÓ�€ø™{�[”! ‘� eˆD�h;�¬ÏVŠE�X0�fKÄ9�Ø-�0IWfH�°·�ÀÎ ²� �0Qˆ…)�{�`È##x�„™�FòW<ñ+®ç*��x™²<¹$9E[-qWW.(ÎI+6aaš@.Ây™24àóÌ�� ‘àƒóýxήÎÎ6޶_-ê¿ÿ"bbãþåÏ«p@��át~Ñþ,/³€;€mþ¢%îh^  u÷‹f²@µ� éÚWópø~<<E¡¹ÙÙåääØJÄB[aÊW}þgÂ_ÀWýlù~<ü÷õà¾â$2]GøàÂÌôL¥Ï’ „bÜæGü· ÿüÓ"ÄIb¹X*ãQqŽDšŒó2¥"‰B’)Å%Òÿdâß,û>ß5�°j>{‘-¨]cöK'XtÀâ÷��ò»oÁÔ(€hƒáÏwÿï?ýG %�€fI’q��^D$.Tʳ?Ç��D *°AôÁ,ÀÁÜÁ ü`6„B$ÄÂBB d€r`)¬‚B(†Í°*`/Ô@4ÀQh†“p.ÂU¸=púažÁ(¼ AÈa!ÚˆbŠX#Ž™…ø!ÁH‹$ ɈQ"K‘5H1RŠT UHò=r9‡\Fº‘;È�2‚ü†¼G1”²Q=Ô µC¹¨7„F¢ Ðdt1š ›Ðr´=Œ6¡çЫhÚ>CÇ0Àè3Äl0.ÆÃB±8, “c˱"¬ «Æ°V¬»‰õcϱwEÀ 6wB aAHXLXNØH¨ $4Ú 7 „QÂ'"“¨K´&ºùÄb21‡XH,#Ö/{ˆCÄ7$‰C2'¹I±¤TÒÒFÒnR#é,©›4H#“ÉÚdk²9”, +È…ääÃä3ää!ò[ b@q¤øSâ(RÊjJåå4åe˜2AU£šRݨ¡T5ZB­¡¶R¯Q‡¨4uš9̓IK¥­¢•Óhh÷i¯ètºÝ•N—ÐWÒËéGè—èôw †ƒÇˆg(›gw¯˜L¦Ó‹ÇT071ë˜ç™™oUX*¶*|‘Ê •J•&•*/T©ª¦ªÞª UóUËT©^S}®FU3Sã© Ô–«UªPëSSg©;¨‡ªg¨oT?¤~Yý‰YÃLÃOC¤Q ±_ã¼Æ c³x,!k «†u5Ä&±ÍÙ|v*»˜ý»‹=ª©¡9C3J3W³Ró”f?ã˜qøœtN ç(§—ó~ŠÞï)â)¦4L¹1e\kª–—–X«H«Q«Gë½6®í§¦½E»YûAÇJ'\'GgÎçSÙSݧ §M=:õ®.ªk¥¡»Dw¿n§î˜ž¾^€žLo§Þy½çú}/ýTýmú§õG X³ $Û Î<Å5qo</ÇÛñQC]Ã@C¥a•a—á„‘¹Ñ<£ÕFFŒiÆ\ã$ãmÆmÆ£&&!&KMêMîšRM¹¦)¦;L;LÇÍÌÍ¢ÍÖ™5›=1×2ç›ç›×›ß·`ZxZ,¶¨¶¸eI²äZ¦Yî¶¼n…Z9Y¥XUZ]³F­­%Ö»­»§§¹N“N«žÖgðñ¶É¶©·°åØÛ®¶m¶}agbg·Å®Ã“}º}ý= ‡Ù«Z~s´r:V:ޚΜî?}Åô–é/gXÏÏØ3ã¶Ë)ÄiS›ÓGgg¹sƒóˆ‹‰K‚Ë.—>.›ÆÝȽäJtõq]ázÒõ›³›Âí¨Û¯î6îiî‡ÜŸÌ4Ÿ)žY3sÐÃÈCàQåÑ? Ÿ•0k߬~OCOgµç#/c/‘W­×°·¥wª÷aï>ö>rŸã>ã<7Þ2ÞY_Ì7À·È·ËOÃož_…ßC#ÿdÿzÿÑ�§€%g‰A[ûøz|!¿Ž?:Ûeö²ÙíAŒ ¹AA‚­‚åÁ­!hÈì­!÷ç˜Î‘Îi…P~èÖÐaæa‹Ã~ '…‡…W†?ŽpˆXÑ1—5wÑÜCsßDúD–DÞ›g1O9¯-J5*>ª.j<Ú7º4º?Æ.fYÌÕXXIlK9.*®6nl¾ßüíó‡ââ ã{˜/È]py¡ÎÂô…§©.,:–@LˆN8”ðA*¨Œ%òw%Ž yÂÂg"/Ñ6шØC\*NòH*Mz’쑼5y$Å3¥,幄'©¼L LÝ›:žšv m2=:½1ƒ’‘qBª!M“¶gêgæfvˬe…²þÅn‹·/•Ék³¬Y- ¶B¦èTZ(×*²geWf¿Í‰Ê9–«ž+Íí̳ÊÛ7œïŸÿíÂá’¶¥†KW-X潬j9²<qyÛ ã+†V¬<¸Š¶*mÕO«íW—®~½&zMk^ÁÊ‚Áµkë U å…}ëÜ×í]OX/Yßµaú†>‰Š®Û—Ø(Üxå‡oÊ¿™Ü”´©«Ä¹dÏfÒféæÞ-ž[–ª—æ—n ÙÚ´ ßV´íõöEÛ/—Í(Û»ƒ¶C¹£¿<¸¼e§ÉÎÍ;?T¤TôTúT6îÒݵa×ønÑî{¼ö4ìÕÛ[¼÷ý>ɾÛUUMÕfÕeûIû³÷?®‰ªéø–ûm]­NmqíÇÒý#¶×¹ÔÕÒ=TRÖ+ëGǾþïw- 6 UœÆâ#pDyäé÷ ß÷ :ÚvŒ{¬áÓvg/jBšòšF›Sšû[b[ºOÌ>ÑÖêÞzüGÛœ4<YyJóTÉiÚé‚Ó“gòÏŒ•}~.ùÜ`Û¢¶{çcÎßjoïºtáÒEÿ‹ç;¼;Î\ò¸tò²ÛåW¸Wš¯:_mêtê<þ“ÓOÇ»œ»š®¹\k¹îz½µ{f÷éž7ÎÝô½yñÿÖÕž9=ݽózo÷Å÷õßÝ~r'ýÎË»Ùw'î­¼O¼_ô@íAÙC݇Õ?[þÜØïÜjÀw óÑÜG÷…ƒÏþ‘õC™Ë† †ëž8>99â?rýéü§CÏdÏ&žþ¢þË®/~øÕë×Îјѡ—ò—“¿m|¥ýêÀë¯ÛÆÂƾÉx31^ôVûíÁwÜwï£ßOä| (ÿhù±õSЧû“““ÿ˜óüc3-Û���gAMA��±Ž|ûQ“��� cHRM��z%��€ƒ��ùÿ��€é��u0��ê`��:˜��o’_ÅF��/IDATxÚ¤’ËJaÇÎ87'©4%º˜dÉ@aPB¹ ʨ)„_AôA»¡ÚôÑ­‚V-‚¯wèIZÅ´,l¼€gy.¿ó?—X† cCÚЀx¯ Jö€§¨x;¨þ„TQ9+À=ð <¬ T8{ü¸ 6‹ÆÃÛçuòÚª_ µnÅBªƒtÒž_ž÷ ^8x‰B*W×b­“í’pX+ft-v!¤Êz…Ëòì¨;æ9�x ‹RÖZ}BªCךJÞüë߯Ì9¶¡×…TkýÜì,å×±þV÷SÀm/ÀîHÂ\¯ù“zÔ\Ó餖öìœê( `­Æê”c™F×ç:­ûà p;yà¥\Èš½¾3åÚñã­ÅwÀø�É9¿Ÿ£Ä®����IEND®B`‚������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000205�00000000000�011562� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/themes/tundra/images/tabHover.gif��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/t0000644�0000000�0000000�00000000234�11360615634�027225� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������GIF89a�(�Ä��ïòõõõöäêòñóõùùøçíõìðõáéóüüûýüü÷ööþþþâëõóôõúúùþýýûûúøø÷ßéôåìõêïõßèóáêôÞèôÿÿÿçìò������������������!ù�����,�����(�� ¶< 9D¤Í�T11–t]Õ!d|ïû!�;��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000204�00000000000�011561� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/themes/tundra/images/dndMove.png���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/t0000644�0000000�0000000�00000001326�11360615634�027230� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������‰PNG  ��� IHDR���������óÿa���sRGB�®Îé���tEXtSoftware�Adobe ImageReadyqÉe<��kIDAT8Ë“_H“QÆŸÏmŠbi©Ò‹iäTh n¢V²¡‚eÚ$S‹Ê`) ®‚‚LMAœÒE⿼°Â(+ˆLñ_ÔUE[BzÕßÓ9ß6â…ïáá}¿sÎóûÞïãD@†DHY"ìèÊ­3z.4§Ô‘ºDO¤b-#x¿Ôj!¼QgЧ÷'?sp±ÍóÙðç>Ûÿ¶r`¾‡®g—Ômåè{uA>@1À°£R™{ýs˜õ¿î²bÆÁs3嬘v°îûMºw°jö4ߪÙð¥žñ•ºÙ�ÑN`K úKÆŠX6~’Åc…tÍ]§ UŒâ¹d¢HS v}ºÊèRôj�CBHfµ»ŒlÌ{—Ë+“NBŽŽfkkRÇFs´œÿÑF{“EÕïCÂ,ŠûÁ{Lu˜¥ï‹`~‘ʬ‘tMæ—iþ:ƒoòž…NqÞó³U,±q£P×eu™©Ï“™6œÂÝÕ[=0ß>Èœ·Vn6$$¡g/÷÷%0ör8ar`ʰ‰ÓK›ÄtmgìÓF^Ô»ÎFy‡ŒTj• !S‹ãœZZ•<#†6=C; uÀÅ„î”CDR²¢ª*Q*5Ê¡D+¨OC”°î¹ï›l^ ‘íâ|kRþÜ& 7DŽƒH†3%1²ðoAkW3µúÕ”3Ñ/�þˆD˜˜øÑ®Ñ%Hií6 =Vh²ûLm~s6æäÝY¹L+щީӌh÷zí ]¼Yç3¯¿¾Ï‰ƒIèF>¼(†SB…¢N‚1¢O›okÀ÷p?¬bŒÿ����IEND®B`‚����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000212�00000000000�011560� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/themes/tundra/images/tabCloseHover.gif���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/t0000644�0000000�0000000�00000000301�11360615644�027221� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������GIF89a � �Ä��ÿÿÿÿÿ�ÿ�ÿÿ���ÿÿ�ÿ���ÿ���ðñôáäêwˆ ‚’¨ª»¡­½»ÄÐÃËÕÿÿÿ���������������������������������������������!ù���,���� � ��> !³,̃ˆPÒ(pÜ$ãß ì�°’÷ë)L±/vJ–0ÔÐQ„¥vÆ_a»Ár­®Œ&"™P*Q�;�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000203�00000000000�011560� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/themes/tundra/images/editor.gif����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/t0000644�0000000�0000000�00000007573�11360615636�027244� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������GIF89aô�æ�Që9YÆAn¾ÍÒÌ?£>SLI5™4³Äíw’Ü,+ÌÙõóóó¥¢ ¯ @@@111ÑllÆüüüƒƒ‚ÝÝÝQƒÊGh̘ʘržëÿ±°wvoR„ʽ½¼`†ïøùùêïúQqÑb~ÔÉÇÆM±Lööö…¥é«¹ÛîíícedbÆai˜êÿÌÌ—­äU~Ú‡·ˆýä1zèá>>Áº{ µêõøýu¨zÿÊ#ßåök´興çÁÁÖŽŽN¥ímÊòÐHH«¤eo޳žØŠ³Ü$WìÊ--t²]�ÿl—¥ýò•ÊÉ‚ƒÆ'öë÷ºÅدЮtœËûüþïí%Lwõ øÐË·ùXvÒö žâ�ZœMrÔ˜ÀÉOÙcí.Ô�êÿÖÞþû:tÜ̑ВÈQ¶|²WÌÉEüúذ-ev£Ê•¼ý÷÷ì­ð¹çÏÚAAE†ãÖQ|ûœÿkŽüúíìÍÓæ”骽•À­“ÿÍ´Í€ÿƒRƒÊ†”¾×•ÿÒÍ�óýççç'Œ&ÿÿÿÿÿÿ!ù���,����ô��ÿ€‚‚…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ ¡¢£‹HH¤¨©ª«†„¬ ±²²œ ¹¹~¯¾¿ÀÁÂÃÄÅÆ›6¦§ÇÌÍ·º»½Š®Ì ~ØÙ~×µ‡ßàß‹·LL&ê ’ÕÎòˆ�óö÷£õú©Pø(Ùx‘lYÀƒ¿È™C§Î;wˆâEò³DÇ1bæÔY2 Q� C�1Q (SJ¸&¡[!Ú° XD‚5M.\Pp€…$Þ)ÊaE"Dø,¢h£Fމ˜^̸±£=�ü1ØÊµ«W—�t°d$ˆ'U…Ki­$¬ûÿ²‚*@×”è2RÀWÁ AVALS� ˆ'ø‚ &"E–%WPäC—M»ÑWA¢' @š8Tv$ZA^Sou)hC×bop=»B¡š7sîìù3hDJ~€“fÊ”#‚|l¹sß!X:©%”OXÃŒ93‘„ t_pÑä� @â@tO‘vÊAd=¢àËO¾\³pâÆ!§sôaàöq‰j ²ÆO‚R�Vha…¸�ú@¨ #,ðd"M¤`â#Ph€ ´Ø¢!&ƈ"Š*®Xˆ1žH#+¾(È9ÎXáŠ,b²a‡Hÿ‡‚x¨Èƒ e’Be„$!ƒ]wý“D(‚Ád~ñÆ$¬ ¦š†pƉ�cŽe™s}J=•ÐW�˜ý¹ÈC|A&‰Xp€Òâz ¢AL”jÀÚP“m|žNã•w^zö B g á†yÐqÄ%áf`qÀ­Ì€€‘ Ò€Àë³S8t‡ˆ|Ü�êx.PC @à1k#|m ²-‰< î¸ãº «¬‡ ª*«æÆzm!WVIɤšÆdi!XU–È„öK@†…¸UÉ®,„ ˆ|$¬ð "Ã+ìpÄOL1ÿÃ""OÒñ#ù2r%ñþ‘¥–ä> ƒ `&òF¾X‘éÙ#i®ÁÍt[ˆÆ@r<K§ €fÀ à:C  Ðë'Q$¤‡(R" :ÌgB°Á…Ð[¯÷²µÑvÇl~pʬ³ ºí´Õ¾ûG¶ŽèÐFH¤±ÄÇ•�„RÏPt!A|4  ”{àƒ$4`l6á„cÈq8k÷´Ya7f,€Qðå0߆ìÀíï).帓°À„Ãzø!~.xï†#ŽHÉ–LzÅòÌ· Ä B”€ö¥ Ù`Ÿ À›X�vØiU"ÿÏô>ÉWšüåÊì³üe˜‡Ð�@ %”ÐB¡-è£o!d`3΃9DÏÈgˆ>½‰'·w‰�(î#CÄÑ@pˆ¤1PJRê�™èg?�Ð@l»zš÷àd³iƒ�Ø@Ú ‘©LQjmèDçҙΨSÝ!`—øð‡>,„zЃ,H ôCL@AC4 ²óÁø@äBs/ñ8(¥¬?,à�|¨¡Ý²À‚8aZfø�""PøÀƒ‡…Ð|ˆ,‚\| — †XDA�ˆB$¢Q(ï ßh�„ \©ÐAÕ$'IÉIr/PÔÁ#¹(ÿ‰ÑŽ:é"C©““è¤'}„¯¬T¨|ÁØŸ#d‰ˆB:¢�ìë8àgù•à/˜�¾À†"¢ÿ»Yÿt&ˆR¨€šN††€j"�H”„þ°ÍEl³›‹p ¼öÀCä‹ _�À Ôxƒx4!€”‘Él²l …°±BA´p6°¡ ÛdF1º€ŒfDã<[ PÊ…ðÈ0©•@ ÈhhJà½éœ rôvðÑ`Q@M¶£..€ |©ÁA¡gFÔ u‡€ ˆ’ƒ7útp€ñ� <Àv‚(EýøÐˆN´¢„´e’ ‘£Ì(Eªÿ,¡УH8A¨ŸôVȧG@X"VZƒuÉEi&°ÀBA±D\ c…¨˜$ê M~¼Ò|Šp+ÇÄòZ..€-›ä$\®Œ¥œãe!äw€É��lPAö‡LœåÌÌ„å+¥„XCü,!HÓ¬i "©’H°%"`ûÚ:"�B [!BP‚ þ�=àA1ðAA\¶¸…Ȥ ¨PYã‚ ®sÕ@>ýE€'ôSlÓT¦î C˜*@¦9ˆÁjZƒ¬á7p@4rѤJA PÅŒbS‚ØÊ£'Èï à³€üšÔX Ø"²\ê&L@(@0œp`$˜…`ÿNÿÀÆG >ð‘O# ‚%¢ï…ªz×ÛÞ?x!Ä…P¬Š 9ÕNݵaeóCІ0!VŒ<£uY5Æ&HBÑ.„¬‹KÉÇQw>JÀlg“ ¥ßNyD²“Ì ¯*ÿaÅŠ¥r”+ƒ”VG�’ ¢Ð\5oˆ=ÐB": @Ð"™­,m!N[†ÔÚà«õm$žEèBë$àlD¢ÃYð½E„‚«‚wâ�Qð�",„è| (“c¬ONï0”MÞæšz±À †@ à„Ä fhz!Vb9A .š Z §€€rubÂNÿ0€øàÙ ;é`@–' ð¶’_>LÀÁýÁ·`¢è@¬³0‰@»:n˜È€!| l?òºôvTµ¬¤ä=�/‚hèÔ¤5¬ À†;üáo+a)�*›¤ü¤ÆAYˆSªRㆠR‹¨dÊ!õhãæÔ37W¾ÁÂå‡U9Èdžˆ0wyÌ2øA™Iž§9Ÿ náçczV™vž-Ëó,Á7  }¶Á¢½‰aÛÈö¦laÛFüLl¬5Ĥƒ›�ÌA¨€€O â/¡¦Lpž œZ€ ¶Í€nß>ˆ¸Q@îÿBÀñ€âï€.tÁFˆ¼„}A^‘° Hà“°Á$LÚÓ"8(ÐE˜  H˜ƒQP€ä¥�`� ÁÆ 7‚Ž@ƒ·"€Ôp1àq<ä%ïÇÅ3^ø‘7Âä iH?�üùÇAqPwI`aPXövILX�p´]_œ0C¿üy=¿ùÕM¥ É’X,# ðƒú `½þù0ƒ¿$+rf„1€ÈZ…ð~ï—rM4�u 'a÷ »"hÜ”€‹vß”€Œ�* ~€�*à[Z�3üp303bó}߇à~hBšr]ÿ4Øj1ô¦‡ÿzªç`·æt{³gx qà�V°U„) i‚‡I—ç+@EuDV;@Òf,*e`m† `“z¬Ç'àm߆ 0úGæ¸÷a‚ ;à¢ð{{°G˜„U¾á�Dh„H¨„Lh%éãoV Ѝ‰¸ˆJP} ·pا} Ó}–IX`£ohKç ‘˜¡xsSEö—màmúgv p‚qt9³x€Ÿˆ/ Ø41¨ ؉ݓQ“ñ3�*ð4‹ð<\†WX�@l‰›cÕÙ ƒq£]®&†@† ‡·öwk(ÿY‡g0 ± ˆ\ÀEpŠ¢4 PTŒÐ�W˜V¸: …ŠpáÐ�]ô$`(`…2®{%fl䆌°-ñ;Ànvø{z G¸Ží8 爎êÈŽî˜X6/)TÚ°BQ‰ @.ù’/É�`1q’�)-�þÇ÷Iw–""r†Øb:¹“¬¤“ÀqE“IÉPV“à”P2¦ø�1h¦4à4³&k@‹�JHéuo'ýµ�Aຸ ·2Œ‘Ö”¿µ !`…+TÐ- [ÀÊh7�-~xi7™“¨“ˆ)“‡ÐB¯Ñÿ˜47·aù�kx1ÀºöôC×#)l*0š¤‰q‡yû˜š©¹…/a Ç�0~ ßö…0ââS°—µg{Š@GC•90‹p‡öŸšЙ>”œ"fBI -‰˜‰ Iü&/Æ—Ú©!WæeˆÀXp“¥2~|µ~w…çÙé© GýÖž%Ùcîé‚ Ÿ[”¥XTIz£w•Xi˜‹@€…Ñ ‡PRgYMh H𥠒 Ÿ×D˜I¡0WŒp}i~�˜ €—à)ž‡°Û¹˜w™€A›(ð…•¹0¶»)„©€�‘Øᇡø¨šªÉš(¥K)0 ù�( Ðz a«®Óh@œ‚P‡ˆ0.MF¢$Z+) 0"fÁ‰«Ð¥‚ ¦ô@sq1Šfå’Ô¦šþ!ð¦,§rú¦zy 6z£à'‘`L™°v!a Ö ¡q¡ð_ª °¡j´‡0¤ k;€¤­·•ɤ¦Ò 蘩±�¦œº'òð·‚¡:ªÅ�¤AJª¨Ê  z�j´ª¢ú k aå;”ª¶z«¸š«ºº«¼ê Tp£!F¬À:��;�������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000210�00000000000�011556� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/themes/tundra/images/popupMenuBg.gif�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/t0000644�0000000�0000000�00000000227�11360615640�027224� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������GIF89a��Ä��÷÷÷ôôôúúúñññîîîûûûòòòïïïìììùùùöööðððýýýíííþþþøøøõõõüüüÿÿÿ���������������������������������������!ù�����,������� $9E…< @P` ËA4H�;�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000206�00000000000�011563� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/themes/tundra/images/tabActive.png�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/t0000644�0000000�0000000�00000000233�11360615640�027221� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������‰PNG  ��� IHDR���������6Ï¢���sRGB�®Îé���tEXtSoftware�Adobe ImageReadyqÉe<���0IDAT(ϵÍ+� ÄÀ½ÿ…ùPy]Q˨¸( †²:¬4aµ`µ¡üf”uñ¯‘–ïtkìšÉ����IEND®B`‚���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000213�00000000000�011561� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/themes/tundra/images/editorDisabled.gif��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/t0000644�0000000�0000000�00000010360�11360615640�027223� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������GIF89aô�çÿ����  !!!"""###$$$%%%&&&'''((()))***+++,,,---...///000111222333444555666777888999:::;;;<<<===>>>???@@@AAABBBCCCDDDEEEFFFGGGHHHIIIJJJKKKLLLMMMNNNOOOPPPQQQRRRSSSTTTUUUVVVWWWXXXYYYZZZ[[[\\\]]]^^^___```aaabbbcccdddeeefffggghhhiiijjjkkklllmmmnnnooopppqqqrrrssstttuuuvvvwwwxxxyyyzzz{{{|||}}}~~~€€€‚‚‚ƒƒƒ„„„………†††‡‡‡ˆˆˆ‰‰‰ŠŠŠ‹‹‹ŒŒŒŽŽŽ‘‘‘’’’“““”””•••–––———˜˜˜™™™ššš›››œœœžžžŸŸŸ   ¡¡¡¢¢¢£££¤¤¤¥¥¥¦¦¦§§§¨¨¨©©©ªªª«««¬¬¬­­­®®®¯¯¯°°°±±±²²²³³³´´´µµµ¶¶¶···¸¸¸¹¹¹ººº»»»¼¼¼½½½¾¾¾¿¿¿ÀÀÀÁÁÁÂÂÂÃÃÃÄÄÄÅÅÅÆÆÆÇÇÇÈÈÈÉÉÉÊÊÊËËËÌÌÌÍÍÍÎÎÎÏÏÏÐÐÐÑÑÑÒÒÒÓÓÓÔÔÔÕÕÕÖÖÖ×××ØØØÙÙÙÚÚÚÛÛÛÜÜÜÝÝÝÞÞÞßßßàààáááâââãããäääåååæææçççèèèéééêêêëëëìììíííîîîïïïðððñññòòòóóóôôôõõõööö÷÷÷øøøùùùúúúûûûüüüýýýþþþÿÿÿ!ù��þ�,����ô��þ�ý $° Áƒ*\Ȱ¡Ã‡#JœH±¢Å‹3jÜȱ£Ç Cй+’(Sª\i ˇ«bÊ”#¿|óræÌ÷ï¥ÏŸ@ƒ J´¨ÑÉLž<Ê´iÛ:wöTè’éªX³þ»Zó`™¯`¿.¼ù®[4bÄr©Í–ŸÄAUÊEød®Ý»#ë6Ô›2F¸x)&—tiàÃ?ÉšE«6[·ãFüç.Ù¨GBír7á'* CSqS á*~¨Só»Ê¯kÁ2Z±–Yhï\7nÇxñÊF¬•¥\öÞ*ä4äZÂdTÎ-¤l³fÎ ™_μ¹³Ý'|ŠÚν»w׆žþ²˜ ´ȈQ†Oq½Dì{³ƒtBßo¸¿@è3ÌÆ?[9Ö5×€’MDÅ&&˜à`ã¦Q6¢‰VšHò áA4U9ýe“?n€–ËA冞w(nçš@{èÑ¢0îÑ¢ŒzTÛm¹íÖÛoÁEFÑ?ó„Š/À�“Š$Ÿ¼ …öWN­tšj¨õ’ÚŠ°Å6Û‡ïd“#/¨ƒ"ˆLƒž€ ”ÆCtr'Tœ©aCyd’)$‘F"©dBg*è g\”â¡+òEh 9!ã£Bê„kO`¢×¢…2Ô od(t ) &’ˆŒrȡƩ§ꪢŠJj©þq³j¨®îQjªñ2k«–j*F•^Š© tY*¦ )º¨@Ê›éAÎ2êÄ/¸Øwß_¿üâ„B›Tá-L4È5ä’›fDJ¢îº’0è`F6Ù_§!ÕU!ýQa¾ =RÞn’Äd¥A›C¯@vÄæ°+ú£‡Ã±Õè?]~æ˜eÊéϹ Ù3 +·Ü’Ê'©¤BŠ+=bHŒh¡U‹$Ù,,Ð*ùä¬s>½Ìdlañ³%BùœSŽnº¡‚ 1–X‚È$- ÈÐ lVE5< Å õÖ[£¬2ˉL²É^¯uAÑ>KQÃÇqAØU˜£‘ֽǤ¹WþÍ­ô¡Ð?ç.øàƒÄሠnxâ‰/Î8áí1*BzOTùCq3”yEiû3-µ\Ç€ .Ú&ôHÜØyëáCã^#ÌëÂH&ù¥K Ò¼¸‹œFT¼s-¤#‰Íá‘Ph Dph eóo¨‡{”ÙHrß~ÄvÛÿ¼mÐÿÐ8£‹à[\ôÑH+Í´ÓPû8Q2¥²â‹;îI "Ç_‹¾}ò™”öÈaæ# ɰÇ*~–•°„Å ó˜ÆÑ”Ö´\¸BiˆÃ<B6qb H'ªæ5)'kL¡=æƒú© ŸäG?ûÁ!³HÃèÃC'èÁþµp)º1ˆ8A+ÇÈJ³‚·¡zÖKOEä3;ÐNŠœ‹–ç²5º.’.[Û:>ž Péá_zÐ‹Ü 2a¸vp9íªh{m‚f1ÓÝ&ø‡*ìï%›CHïÜp˜ñnÌ2„·ÊHŠ4âãz4#ÞÕeíi|ÿà‡÷ 2±‰9 |WŒàQQÁ ¢"ƒ<H„Vº²•Ɇ.t1"A¶âÿèC.iUäd„i˜Ç9¨Œœ,ð5ÿ�‹Ã†æyã¤TZ.ZAЦYBï@È Rµ86$l¢Â’±®ƒk‘%-òÊWÆr–µ4D²C'|Eeþp…+b¦ÉDñ� ¨@ÚÄŒ¼ƒ`ºtˆ­L…*5$„UµZ(ª «…Nd¡ Åܲó(+e)Bæé'tÑ` £AÆHŠÿ¼£O`C7Â.v±“£eTG;Jâv¹ka$±GÞÝR"°òGR’Ô¥.Ät˜Þ·>°á µÈf9Hñ„G$}PX6rPb$T{þø$&7)N>*F. Ÿ@œ MKH“šÖĦû‡¡ ÷¨F5`q<RT ˆ )ž(¥väœi B'ÛŽc ¤ ü¨M–´ÂLgòÇ®¹b5÷pÍTrs›þ '4 …ÀƒMixþH ºƒ $°ƒe§_+XÂ$VAfEŠV £•Ì™ðY KTb«"""EZ'ìì:îΠz¹ˆ¼,d+C—ÇA® “y{Ê—Ž^Q!Ý¥œxÞCÝdÕW À5ˆpM:ºÍ6P¥#1LŒ'ô¡ºXcßøºËn§ï¥©…îˆÝ ¯¨ñF}Åa_!„ñC¨àŠì¤¤8$³t‰™ëþ(0ŒÉJ†\ÐaÀùnx+™V»í¡Ÿ™&+ö‹y6våÄ:1ZKŒ™‰¢’“¿Þ6[¾Å‚DŠZÀ¬±íó5Ø40WögóPfþÐ:ëb Âd€3",ñf2Ĺé ›‚Z‡àƒMlrSCbpŒ°Xf'•çaeÜ#Ñø®¤ý!Ü‹™·pÚû&0¡OL¬LŸMrAŒw¬eU7*ÇÐIªuRÐ`•šPšêÃÿ°HÔ„§ïMˆ«)mê]çYhÓ"Uƒ ëHKzžû=)•„`à8vv¥0¡ %$dÁ7u0Bæa ûÃv³j2xqaKwèN·nâÔ†´û©¤ˆbA$‘b„(Å•èªAˆ‡| „ Ÿ€Ò;úð޾Í:ÓjÅ [­>¸’OÈsms1†AX¢cÃ["eÄ5zºø*þŽW =°«nhÅŽ ²ŠÀµ#CHƒÌgY”Á,Çð¯=ÚÁfbl'Ìç„Ë| ¡‹Â ÄIF2:ø|ˆS_k"'CbЋà 9;=^¬ü·ÁE–ù™G`BœvÅ#%]fÁ§¤½ˆ»Üç.wîΗ"’ Ê"цúÝ¡©(Fýn_ÊYíÕ­þNÕ·DJeH|2ù…x;¤ŽgH~‰ k“’e°GXDßì´nâÅu¤vµkzSœ^#M‡<{IáY„;+÷FJ~r2¨œ©vˆˆ’®ëaØ ÷fqvðAŒM,É } ƒ$þŽ¼ï½’òÂ=þÉ=#çÂç¢�zÆÉ†1 Gg£”£ÁþöøØÆ,uÁ ’«¸f”dyàºÁ¦ÀÁ%p5ç@ÉÝÀLù Ÿ cgdà1N0¢@<Üä}Æâ4^E5¶•5¢ƒò7Kõç@Ð~î'‚óW‚òDOÿPv˜v OÐváƒÓ ‚£ƒ‚SPAn@òV^—8Q„Fˆ^Hx„KØSy´$ÕN°*e°hePzþ µðn7ÖÖ¬nt.±G>E 1`{H£.Ç÷4cnÑT²|sX‡OU Cè’P 榨ÃåP «s=@„þˆuˆ{hI³}Eö"0â"瘀 hg—ô!6³Jt× @€ ²� ¦H þ&H~x•7Ó Ã4NÝ0‹ƒÐ ÝPs?“Y¶ 9güP= Ø€½ÐA'td° ƒ …Äa#Æ&‡&BC€5 8¤hа@ =Št7Š¥xŠ©-ÂVvÀ¸ÐçØ6è÷å99¸ƒƒãƒqPAOQrs†@ÑŽt1S… R<<§…Ì— sm­;¯ÇTP8lZöS’n(‡‡ïÁˆ8!þàe•@ ñ‹¨‡à"’`r‡hþÐ0ËÆYáˆÜ§þ“ø‹’ŒNÐ øq㇌�æ‰3Þ˜ ™€ í°$ßö‘1C ^F tÀ‘þ° ´( ³X•Ép‹ q…a± Pfà5‹@:(fÛ´ŒShÑ éÔ\$ Di”S”A9”Ey”€2Žkƒ-©›d<÷% =T˜=$ àqw¡0z@^È×PÛ6*†GxâXi™™þ�x𥘟ÉøÈ޵FšñVˆ8Y¨øà¬S.åâM áPžI|w¤.e6Ÿð¹T@0¿ãõ6šüÈ}@‡3t�#&Ö2cQT B#dИ)„þi˜‡1$‰ØI6ò•Ý–e01P~' eé“ìÔN­„˜p zIr•pŸø¹ ×ÇrUÙŸý‰‹¯aq' ½�e™$t¼Ø ƒ 5 ±M{†17çò–Ÿ"ŸôÙðŸf—¡ ñk±ÜÙuÄyÄR(˜¢*J)ÆÂkÅ–­à™a^Q„7ú8a£ák½Ö¢ Jj.Š™£f¢Œ‚CZ¤psaQ€ZèlÙ¹c(›¾™ ’@Y»ITohT€Ÿ^ºGm™BÊ;×IeJâåœÐiÿ02ª1:£±¢+d܃“Vü€ 97×µ˜qª~Ú)! B˜¦Q韌  —…RP&Ý0adp Ñà€c‰g4ÔøBÒˆ[CktJ§EZœQyšb÷¸¬*±Š†ªÊŽ™§=tsþ¹š‡Ñ¾Ú À¬¾Úœa¨‡Jø—gÑd@p"hêïઞãC#y*©”Jq€©Ø çÉ©QÖAy®1ñªêZ/rñh¡¨ë¯E©‘*¯öÊîJ Ù”¯ðúe hH7ªt¯[°{°›° ëtp¨¡ñ á°;�;��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000202�00000000000�011557� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/themes/tundra/images/i_rtl.gif�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/t0000644�0000000�0000000�00000000060�11360615640�027217� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������GIF89a��€�¿¿¿���!ù���,�������Œ© ë �;��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000221�00000000000�011560� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/themes/tundra/images/tooltipConnectorLeft.png��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/t0000644�0000000�0000000�00000006042�11360615632�027226� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������‰PNG  ��� IHDR���������&/œŠ��� pHYs�� �� �šœ�� OiCCPPhotoshop ICC profile��xÚSgTSé=÷ÞôBKˆ€”KoR RB‹€‘&*! Jˆ!¡ÙQÁEEÈ ˆŽŽ€ŒQ, Š Øä!¢Žƒ£ˆŠÊûá{£kÖ¼÷æÍþµ×>ç¬ó³ÏÀ –H3Q5€ ©BàƒÇÄÆáä.@ $p�³d!sý#�ø~<<+"À¾�xÓ �ÀM›À0‡ÿêB™\€„Àt‘8K€�@zŽB¦�@F€˜&S� �`Ëcbã�P-�`'æÓ�€ø™{�[”! ‘� eˆD�h;�¬ÏVŠE�X0�fKÄ9�Ø-�0IWfH�°·�ÀÎ ²� �0Qˆ…)�{�`È##x�„™�FòW<ñ+®ç*��x™²<¹$9E[-qWW.(ÎI+6aaš@.Ây™24àóÌ�� ‘àƒóýxήÎÎ6޶_-ê¿ÿ"bbãþåÏ«p@��át~Ñþ,/³€;€mþ¢%îh^  u÷‹f²@µ� éÚWópø~<<E¡¹ÙÙåääØJÄB[aÊW}þgÂ_ÀWýlù~<ü÷õà¾â$2]GøàÂÌôL¥Ï’ „bÜæGü· ÿüÓ"ÄIb¹X*ãQqŽDšŒó2¥"‰B’)Å%Òÿdâß,û>ß5�°j>{‘-¨]cöK'XtÀâ÷��ò»oÁÔ(€hƒáÏwÿï?ýG %�€fI’q��^D$.Tʳ?Ç��D *°AôÁ,ÀÁÜÁ ü`6„B$ÄÂBB d€r`)¬‚B(†Í°*`/Ô@4ÀQh†“p.ÂU¸=púažÁ(¼ AÈa!ÚˆbŠX#Ž™…ø!ÁH‹$ ɈQ"K‘5H1RŠT UHò=r9‡\Fº‘;È�2‚ü†¼G1”²Q=Ô µC¹¨7„F¢ Ðdt1š ›Ðr´=Œ6¡çЫhÚ>CÇ0Àè3Äl0.ÆÃB±8, “c˱"¬ «Æ°V¬»‰õcϱwEÀ 6wB aAHXLXNØH¨ $4Ú 7 „QÂ'"“¨K´&ºùÄb21‡XH,#Ö/{ˆCÄ7$‰C2'¹I±¤TÒÒFÒnR#é,©›4H#“ÉÚdk²9”, +È…ääÃä3ää!ò[ b@q¤øSâ(RÊjJåå4åe˜2AU£šRݨ¡T5ZB­¡¶R¯Q‡¨4uš9̓IK¥­¢•Óhh÷i¯ètºÝ•N—ÐWÒËéGè—èôw †ƒÇˆg(›gw¯˜L¦Ó‹ÇT071ë˜ç™™oUX*¶*|‘Ê •J•&•*/T©ª¦ªÞª UóUËT©^S}®FU3Sã© Ô–«UªPëSSg©;¨‡ªg¨oT?¤~Yý‰YÃLÃOC¤Q ±_ã¼Æ c³x,!k «†u5Ä&±ÍÙ|v*»˜ý»‹=ª©¡9C3J3W³Ró”f?ã˜qøœtN ç(§—ó~ŠÞï)â)¦4L¹1e\kª–—–X«H«Q«Gë½6®í§¦½E»YûAÇJ'\'GgÎçSÙSݧ §M=:õ®.ªk¥¡»Dw¿n§î˜ž¾^€žLo§Þy½çú}/ýTýmú§õG X³ $Û Î<Å5qo</ÇÛñQC]Ã@C¥a•a—á„‘¹Ñ<£ÕFFŒiÆ\ã$ãmÆmÆ£&&!&KMêMîšRM¹¦)¦;L;LÇÍÌÍ¢ÍÖ™5›=1×2ç›ç›×›ß·`ZxZ,¶¨¶¸eI²äZ¦Yî¶¼n…Z9Y¥XUZ]³F­­%Ö»­»§§¹N“N«žÖgðñ¶É¶©·°åØÛ®¶m¶}agbg·Å®Ã“}º}ý= ‡Ù«Z~s´r:V:ޚΜî?}Åô–é/gXÏÏØ3ã¶Ë)ÄiS›ÓGgg¹sƒóˆ‹‰K‚Ë.—>.›ÆÝȽäJtõq]ázÒõ›³›Âí¨Û¯î6îiî‡ÜŸÌ4Ÿ)žY3sÐÃÈCàQåÑ? Ÿ•0k߬~OCOgµç#/c/‘W­×°·¥wª÷aï>ö>rŸã>ã<7Þ2ÞY_Ì7À·È·ËOÃož_…ßC#ÿdÿzÿÑ�§€%g‰A[ûøz|!¿Ž?:Ûeö²ÙíAŒ ¹AA‚­‚åÁ­!hÈì­!÷ç˜Î‘Îi…P~èÖÐaæa‹Ã~ '…‡…W†?ŽpˆXÑ1—5wÑÜCsßDúD–DÞ›g1O9¯-J5*>ª.j<Ú7º4º?Æ.fYÌÕXXIlK9.*®6nl¾ßüíó‡ââ ã{˜/È]py¡ÎÂô…§©.,:–@LˆN8”ðA*¨Œ%òw%Ž yÂÂg"/Ñ6шØC\*NòH*Mz’쑼5y$Å3¥,幄'©¼L LÝ›:žšv m2=:½1ƒ’‘qBª!M“¶gêgæfvˬe…²þÅn‹·/•Ék³¬Y- ¶B¦èTZ(×*²geWf¿Í‰Ê9–«ž+Íí̳ÊÛ7œïŸÿíÂá’¶¥†KW-X潬j9²<qyÛ ã+†V¬<¸Š¶*mÕO«íW—®~½&zMk^ÁÊ‚Áµkë U å…}ëÜ×í]OX/Yßµaú†>‰Š®Û—Ø(Üxå‡oÊ¿™Ü”´©«Ä¹dÏfÒféæÞ-ž[–ª—æ—n ÙÚ´ ßV´íõöEÛ/—Í(Û»ƒ¶C¹£¿<¸¼e§ÉÎÍ;?T¤TôTúT6îÒݵa×ønÑî{¼ö4ìÕÛ[¼÷ý>ɾÛUUMÕfÕeûIû³÷?®‰ªéø–ûm]­NmqíÇÒý#¶×¹ÔÕÒ=TRÖ+ëGǾþïw- 6 UœÆâ#pDyäé÷ ß÷ :ÚvŒ{¬áÓvg/jBšòšF›Sšû[b[ºOÌ>ÑÖêÞzüGÛœ4<YyJóTÉiÚé‚Ó“gòÏŒ•}~.ùÜ`Û¢¶{çcÎßjoïºtáÒEÿ‹ç;¼;Î\ò¸tò²ÛåW¸Wš¯:_mêtê<þ“ÓOÇ»œ»š®¹\k¹îz½µ{f÷éž7ÎÝô½yñÿÖÕž9=ݽózo÷Å÷õßÝ~r'ýÎË»Ùw'î­¼O¼_ô@íAÙC݇Õ?[þÜØïÜjÀw óÑÜG÷…ƒÏþ‘õC™Ë† †ëž8>99â?rýéü§CÏdÏ&žþ¢þË®/~øÕë×Îјѡ—ò—“¿m|¥ýêÀë¯ÛÆÂƾÉx31^ôVûíÁwÜwï£ßOä| (ÿhù±õSЧû“““ÿ˜óüc3-Û���gAMA��±Ž|ûQ“��� cHRM��z%��€ƒ��ùÿ��€é��u0��ê`��:˜��o’_ÅF��=IDATxÚbüÿÿ?2Èw”ÀÃÀÀÀ99Éú5é ™á6ƒ ͦ‰òqHÆÛ© ÊsÏa``˜KŒ ½¬Ì! |ÆŠ"(zðÀÉÀÀPÄÌÄXb§)Áî¦'ÅÉÎÂÌ� ³ÿÿÿ3033ã4 ‘‘¡[Yœ7ÜBA@ˆ‡® `3 „a†…ªè¯`Sy1\a�[,¬g``ð<yçͳî-W?=yû o�1b3)-$031ö*ñxéK³ñr²¢¨ãàà`$”üý÷_þ̽·SÚ7]ùrðú‹¿þþcøÿÿ?Ü[Ä$¤/ Å¿ÿþ3ÙrþéîŽÍW?Þxöñ)ÀÀMÏß~ÅÍ;x÷QùŠóIM‰0°‰aƒ"Î@$��I3hÞË•~����IEND®B`‚����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000216�00000000000�011564� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/themes/tundra/images/progressBarAnim-7.png�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/t0000644�0000000�0000000�00000000434�11360615640�027224� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������‰PNG  ��� IHDR��� ��� ���ôbÓQ���sRGB�®Îé���tEXtSoftware�Adobe ImageReadyqÉe<���±IDAT(Ï51R� Ãl'-ÿ$#;Gc›¡ Uº?¿¾S$uÑ– „I,É!à_'!r‰’Ѐ�§-œ’’“¶@Eˆ 4©=‡àHFhôÝïëe”ŽH@„P7 öì–m;úÓ‚‚s6I‚¾‰Þcl;>ÆêcvD‚(Ûe“8©M{>3#�D–,ÑÄçÚNæùØ lZ�iϹË9ç<v$îëçÒ6‰m÷wzîÌè6W¬ˆ hÄ ����IEND®B`‚������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000211�00000000000�011557� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/themes/tundra/images/spriteArrows.png����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/t0000644�0000000�0000000�00000000522�11360615636�027227� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������‰PNG  ��� IHDR���8������]ªŽf���bKGD�ÿ�ÿ�ÿ ½§“��� pHYs�� �� �šœ���tIMEØ  H Ï���ßIDAT8Ë”QÄ Dg¼5'àØ³?bXZ³$ÆJx‚"é|“Ü*1Ö’@ò貤ÿ_vÌlôçîuŸÜ±vw˜ÙÑuûBVvþ×AìYƒ�ë ñ׿gMp�”/qíà~F=Á5°yÿ¹§˜C¿ƒûô×À¨ƒ ¹ºòÚä-\…,pÈSy¹;oá*äpNf†0.•)oJâ>3©€©p©L¯ý%;£?–·66Œ0’›L6>UÂ[ºŒæŒä&ótI“¬.sCÃáÔˆþ{ rÊd4¢[8�ø�;·8C*¸O����IEND®B`‚������������������������������������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000211�00000000000�011557� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/themes/tundra/images/smallArrowUp.png����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/t0000644�0000000�0000000�00000000206�11360615644�027225� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������‰PNG  ��� IHDR���������[6Åø���sRGB�®Îé���tEXtSoftware�Adobe ImageReadyqÉe<���IDATÓcøÿÿ?Á8&�ÃP>B�†òvæl'iÈ����IEND®B`‚������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000216�00000000000�011564� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/themes/tundra/images/progressBarAnim-3.png�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/t0000644�0000000�0000000�00000000440�11360615644�027225� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������‰PNG  ��� IHDR��� ��� ���ôbÓQ���sRGB�®Îé���tEXtSoftware�Adobe ImageReadyqÉe<���µIDAT(ÁÑA@CÁ—ìaÿúm"p›8£ïŸ§ÍX‚”¤[Úž¶ –$n9R[6•|„„ àHmIX"4–„…Åš´,4¶`̱0Ý&¡)U§c ŽÀÆán.´jÛñX§­ÁBb7 mÛv|vWBTm“ÝìUÖ}Ìy¿?3DÔ$›tW»sž¯÷×ãŒU*šìÝîîùýûÜÍ㌭¶@Ú»¹7çõzßë¯33¶”¶Ivwû|Ê¢jlÐŒ·����IEND®B`‚��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000221�00000000000�011560� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/themes/tundra/images/dojoTundraGradientBg.gif��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/t0000644�0000000�0000000�00000000101�11360615632�027214� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������GIF89a� �¢��ÅÅų³³¦¦¦œœœ–––“““‘‘‘ÿÿÿ!ù���,����� ��hE#'&�;���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000217�00000000000�011565� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/themes/tundra/images/editorDisabled_rtl.gif����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/t0000644�0000000�0000000�00000010256�11360615632�027230� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������GIF89aô�çÿ����  !!!"""###$$$%%%&&&'''((()))***+++,,,---...///000111222333444555666777888999:::;;;<<<===>>>???@@@AAABBBCCCDDDEEEFFFGGGHHHIIIJJJKKKLLLMMMNNNOOOPPPQQQRRRSSSTTTUUUVVVWWWXXXYYYZZZ[[[\\\]]]^^^___```aaabbbcccdddeeefffggghhhiiijjjkkklllmmmnnnooopppqqqrrrssstttuuuvvvwwwxxxyyyzzz{{{|||}}}~~~€€€‚‚‚ƒƒƒ„„„………†††‡‡‡ˆˆˆ‰‰‰ŠŠŠ‹‹‹ŒŒŒŽŽŽ‘‘‘’’’“““”””•••–––———˜˜˜™™™ššš›››œœœžžžŸŸŸ   ¡¡¡¢¢¢£££¤¤¤¥¥¥¦¦¦§§§¨¨¨©©©ªªª«««¬¬¬­­­®®®¯¯¯°°°±±±²²²³³³´´´µµµ¶¶¶···¸¸¸¹¹¹ººº»»»¼¼¼½½½¾¾¾¿¿¿ÀÀÀÁÁÁÂÂÂÃÃÃÄÄÄÅÅÅÆÆÆÇÇÇÈÈÈÉÉÉÊÊÊËËËÌÌÌÍÍÍÎÎÎÏÏÏÐÐÐÑÑÑÒÒÒÓÓÓÔÔÔÕÕÕÖÖÖ×××ØØØÙÙÙÚÚÚÛÛÛÜÜÜÝÝÝÞÞÞßßßàààáááâââãããäääåååæææçççèèèéééêêêëëëìììíííîîîïïïðððñññòòòóóóôôôõõõööö÷÷÷øøøùùùúúúûûûüüüýýýþþþÿÿÿ!ù��þ�,����ô��þ�ý ¬%° Áƒ*\Ȱ¡Ã‡#JœH±¢Å‹3jÜȱ£Ç CŠüجÙÈ“(SªÄHp¥ÄqÌbÊ”©±ß>|8qîûç²§ÏŸ@ƒ J´(ƒ;]Êԣ͜:y*lÙtÜ?fÿ²j½ÚДׯ^ Ú¬·n7nÕÒ¢Û×o*Õ¦p7^ŠK·nǹ ñºÄn]ƒ%¿¹Sú·°Ý±eϦ­¶¶-·ÿÕû†L—.cÖêIEXŒ“çÏœTIC8®_?¬¦SŸîº5«©‚úâ­S×Íš5tÛœ«¦o!d†ÄKø­R¼…’)[Ƭ9aòÊ—3o6|ð’^DzkßÎ}D[—lþ-¬æY•cê(Á‹§¨^¢õ¼×GVšÏ—]_Fó |‡®?º„´( H‚¹3Ø0&˜ '¡h£ÉуQxè¼#Ðtb©âY5‘ÚyãpgbvÉ¢âŠ,®›l´Ù†›n¼%ô›Cÿà“]6<.ãK1Í!Ä †þ½#‹3•fÚ5ª¥Æ k­½æO?õ S›mÌt³ 7¹äRÎyÕrcB¢0Â1S ˜å¸c?Y›Çð˜@J•Êž|ö™ G'ê@~îYP|•ܢ袌.ZÉ ú§?—ŸAÎàFŠBÝÈôË/ŠÆË*¤’j¨±(úé§3=):þ­®ꨫdÍL²Î:*F•â%iŸõJh¡ é%©@Æþª,° U‚ 5õÙ×6ØT²Ð.𤢉&à DË9à‚K æË¹èú2 ƒ9H¤›j4×¥ Ù»ÙëàAÃl›í. ‘² :Hbªi’­´¦p+)*Üš,Qi¥m·jÉ¥—lú3&Cú Ó 5Ô0cÌ2Ë ãLoBn£Ê6,o#/èÄ+ÐL×ìcóÍû¸º)ý€õ”ûÄóÅ·2³0Âäò Ê6FD‹™ã ô´= bõÕW\òÉuüqÈZ›Œò²“j”°Ã­µéBÖ]—h£pßòèwá-³3;ÏþÞ|÷Ý·A~ηcý.¸X†þÐ- "Ô{uGÔ6C“;DvCÎ>‹õ W›:Ù¶mÀÑ¢ÍéÚˆÛã·DÄIƒ½ºøZĉÊ-KƒÌì2gÄðCŸmÓ»?fÐ.¢ûûŸBG¢ãËAwç-Ð8g£ýÏïÉòO‹,n/PÐCSÓÑI/ýEߨ¢J3ÙÔSÏÈäÒM½ÒÔîO1ÄŒ>߈²>�¤E%þ§3ƒ€Åg®>Ê1´˜ ΈI.Zß´$8fBSB08®2§j� ¡>ð1ˆ÷•L~IßúÚgÂøÍÏ—ÛHÂDgX8CÎ@ÆõÖ‘Jl¥þZ¢Væ¶R8ïyè©H|XçÖ%Ñr˵@FEjPËs‡B–-¶ d #—ØGéL‡ºsh#j i B/N vß`nh—NÔo$•žÊ²2ûíã]üb¶Àˆ,„œ+f1â¹Ö¬ÜÂa؈ö´§°I*E{`™1Á †)"f e( ‚Ž´P£^ΨÝöª¡ ýá¤8ñÀG™ˆq“Ä ûÊϸx0C1 2‚´VÔµ0SA±o˜©Œ LÕ®¬ ¤”Õ8¥?D)JRšò!­4Û?¬ã•X˜ÂÎhY?ÔöDuãðŒ'<‰˜‘zL þZ¨Je*„”JT‹ZM ’+QMä¨âgu®³¨&…^íÄH8R‰~…ŠÖ:”ud‘ŠKHã˜ï@FKwFÔ¥îŒ Q£¢ØØÆaø޶™Ýºê˜JŠÔ7mÈMsZ!iDÒ²¸£Aþˆ ÕC—H…,òXjÈBxLj=·O„9ò‘iûé$¹§"ïù½üe0sHLaó|a„˜)}˜ÃѨ2~¡>õqFÔ=p¢¦2}c¯ô°¥@p¥xè£g äF€I ófõdAÄDY1GƒÊTˆ=Ì$Ї bƒø`[ß×m®6¤±ü¡¾„Ī <mþÅ>ºdÎ_ãÃð¢Ù™Jd€7ëFpqFφ<!*«)¢ÊÃ%$q~œâ$â\–ꥡNTÈqµ9ˆ¼‡"ßUȯ ÒZŠv+¦À(«ñ‹¥nCŒÙÆH ò­’–¥ Qiv™š/—nŽsœiEP…PTøÀ 1pD¬Nà-EÈðã%¶Q}ÈW»¹”=«Ñ ÇWÊe®?¨×¸=²ZÝžÃ,ùUÅ¢˜Ä�1+ P„­aTpÂVèƒe¥­‚„ i¬L¯ôH²™Î‘ä$ Ö<óÙWð!%|0†µhÅ(´œ‹`dy[^ÇBØ*J "devÈþ º1ˆáÀÈÑñŽ{üãm”v¼u­+â Ë7ƒ$ ÒF1L†Nb®RÇÈO+•näÄÑ9). W+¬„à-OoWšÝ„T:ÑŸŽbU;ÞêDŠl|bmž'ú[ž5)½ ˨@(Q`X ¾ñ•íAêKÆÓ™Q©FÃk7úbÖ€Ý3dj¿ˆíÙжÍBxújWH,ˆ/"|}tx¨—°m5(‘RãHõE=.m?ê]’ ãjWófet`YË´�-‚cP„Ù C#×cr`cOæÄ/b‘.Y¨ÂË-3ø&ŠŠG“oO6=ôÞnŒcU®Æ6þ²“äxÔÌø G7N~Œ1ŸéÚ8“BöMkùµ!ƒ¸Æ ´aƒ#<Î/ˆÏ]Uêòú®HF1œQŒ@ cO;tS+qª[ýêV—ôB¶k_´Âá )0?ÇÞOŒÀªúÔ©ö¹ eTº"{­¬{Xà”!\w\wÛIlïöÝ ¥ˆÑRQ}€ÅðÔ05díZ×ú:‡üÁk“žØ±»Ýé.$—âæ¿îxƲ阑…7œ×)ª¼ú»zžÓ0ÞËÆÝŒ;!ªE+|‘îzxìVu$¼ BIëÑ[ä$§G<@áoQ€bå£hùdA9Žê[Ÿ�LÇÕþQ¯_Ø/f‹œÙÞ´73­co¹.ø½jã{ó(*1üT¢ÇŘ·éh2¾O#ZUs ƒ Ù·}qf}×w€ÔÂ}Áj‘0I‡4L' Nua|s Ø7ZW¤  ¤mÏÅg{#]&ˆ‚|¦‚еP¡y™–Øj;FeÆpƒŒG 4Tï Ëã-¿& BXwwç‚w.#zƒÀl!3Ͷv™·yª… ö $è¾à}Ò !È":äfH!‚ê3†WènÖs=ñ&o^µîñ Ì' óú7}i…u×ÀÛ€ Ñð‡Ì€kŦ…aOáçþ̰Ä@ ëp~Îdëqw~‡%%ÑÎów Ê'&`Æ µÀxÁL2·þçfT£ƒ@€ò }ø‡Ñ°?q¦‡|臀_1d6ýè”N¿ˆNØ[¿Õ7¸7Ǹ78ö$‚ùƒ’“0%u ±‹ QQô�ÛxƒÆ Š ‰´§ßÒk¨ƒyÓhjGè [±ÇFzᄞ†d!þ`d¿0<þ`aè1゜à 7†Ï8=ÕÓ$¦¡†Ä§b•äU˜è šHuûÀ|Ì7  Èx7Š­Â ·˜Å@“ç '0¹£ ÈÐ ö˜ˆßЈ,I ÄЈÇþ `Ae ¡Õ0 È›Sø×c‡&>¹k„j²­8<Ò‡ ’q¶‘y ©'¢&Nÿ€¤¼Å sÇ0^ù•_y <´u{W œà… !w¥¢d‡v¿�xn×lYvkésÇ]ëA–{QÕÈ6¾%^S™¦8¦ààˆü!ˆ�ò-á¢:Q+y鯯ŽÅrø€.±wœ@’,cdÜfj©²@ tÕ2­ *Ò3TïÀ ±0‚¢B h©–ÓÓ•` –Ò—=ÛÆÒc“8¹:  0Î = p ÄMf‚4ÅÐ LÙ}«²*Ã�|3Ò؉þw Çp “h‰Q•'7Ýp µ`5•u.ÇÙȵA˜WGÙ ÆàœÐ¹ÌÙœJwŸ§6—›¹©›ˆ¶ZY x ÊC f)–¦ héÑ‚%(¡A¡ a¡¼Â “æ'È¢¡Øˆ=بhý‰j©Ö,¦ ~^rˆéïÀ˜ä(„‚näRÿð‘)§.ò„¡pÓù)ëò„?9›´‰–"6T¶Ùÿ�›jCÊ l’  Ú0i(=â9 äIœç0µÐoꉇ(á â#(b‰˜Ù™qž±Éd5£àqôÇ“b¶—µûŸ±Šq5™&¥Rê[y˜yç©и…j‹Z,'uª…¦¦ð•…±"ÁˆN.’b:¦¤0$Á©¡{ŸA êÖ ÇTå±òÖ"mšLùF r:Ä@œu:M±‘¼š¨¾ê£yõÀ2Gú«ÆZkʦǺ¬=1¬Û°ªÄ:¡`fcŸÄ¬Øš­Úº­ÜÚ­ÞÚ­0¦ŸQ u$®âJ�;��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000220�00000000000�011557� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/themes/tundra/images/treeExpand_plus_rtl.gif���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/t0000644�0000000�0000000�00000000327�11360615632�027226� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������GIF89a��Ä�èèèöööÍÍÍ,,,ÒÒÒ^^^ÅÅÅ111aaaÁÁÁâââÎÎÎßßßúúúÙÙÙýýýÔÔÔzzz›››���ÿÿÿ���������������������������������!ù���,�������T`%Ždižhª®«ä¾°tFTmÛ²Ißw^Fà!|øH‘†R1Q*£H P˜XS¨( “`¬­DhÃ�.Gð|î†ØïwwdÏï³þ€"!�;���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000221�00000000000�011560� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/themes/tundra/images/dojoTundraGradientBg.png��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/t0000644�0000000�0000000�00000000207�11360615642�027224� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������‰PNG  ��� IHDR������ ���uÒ4J���tEXtSoftware�Adobe ImageReadyqÉe<���)IDATÓcøû÷ï ñDÜ�;þýû7D4‚ˆtá" A„,�£>#X‘Ÿ}����IEND®B`‚�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000216�00000000000�011564� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/themes/tundra/images/radioButtonActive.png�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/t0000644�0000000�0000000�00000001046�11360615632�027225� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������‰PNG  ��� IHDR���������;Ö•J���sRGB�®Îé���tEXtSoftware�Adobe ImageReadyqÉe<��»IDAT8Ë“=KBqƃ h ‚@Á°)ð-Òäà6µ NƒKŸ@p›AÑÁADq4DôâEáâË ŸÎ9(øR ?.œÿùÎÿ¹÷ž�8ù/…p8|A¼ïÄçúé"ÎÊÔðLèù|ÍfNGž™LTWˆû_e:xÍf³‡X­V´ÛmðM<îÈT¸K$ÇX.—˜N§¨Õj( ¨T*˜ÏçRïv»<`B\nˉF£Åb~¿r¹ŒjµÊp»Ýƒ²Ÿ‹E®¿‰ÌAð:º®ƒ‰Çã"2| ƒÁ�»ÝŽP($ðpê¯lä›X,&b¯×ƒÏçC$ÙëõŠl2™dî™L&,/6²)b6›AQx<¶aÙápH¦irï|Jh£ÑH¦úý~Øl¶Ùb± Èù:õüv`œ,§Ýjµàt:aµZa6›a4ár¹ ªªœsÔïÝ– ¼J½^—µƒÇ!¥Ói©1¥R‰Å/âlÿ#yà ¸_Ë>¹\ŽE•þëó¼% `*•’ɤ¤OõquôÇX¹^ÿÌÓ¾´áß.‰�ݽÿ����IEND®B`‚������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000217�00000000000�011565� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/themes/tundra/images/sliderFullVertical.png����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/t0000644�0000000�0000000�00000000143�11360615632�027222� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������‰PNG  ��� IHDR���������ÔTR¯���sRGB�®Îé���IDATÓcøÿÿÿ·oßž?~íÚµ‡Ž2à�Ò¢(áßS����IEND®B`‚�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000177�00000000000�011572� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/themes/tundra/images/no.gif��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/t0000644�0000000�0000000�00000000263�11360615636�027231� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������GIF89a��³ �ÜX\ê í«­Ó.4öÕÖÖ<AÙJOüññÐ &ÿÿÿ������������������!ù�� �,�������`0É º&É)WxDG H!l‡�er€ÆÆã¤¶„ @€˜P5¸ô~¬KqCö¤N•sZÐŽ’¹+l¹AhÙ“Y 6œŠåBÀLkQ*Ö¡X0‚ƒ‚�;���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000227�00000000000�011566� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/themes/tundra/images/splitContainerSizerH-thumb.png��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/t0000644�0000000�0000000�00000000177�11360615632�027231� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������‰PNG  ��� IHDR���������þä£����sRGB�®Îé���tEXtSoftware�Adobe ImageReadyqÉe<���IDATÓcøE.`XF.`øO.��‰ •h)À‘����IEND®B`‚�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000222�00000000000�011561� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/themes/tundra/images/tooltipConnectorRight.png�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/t0000644�0000000�0000000�00000006061�11360615636�027233� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������‰PNG  ��� IHDR���������&/œŠ��� pHYs�� �� �šœ�� OiCCPPhotoshop ICC profile��xÚSgTSé=÷ÞôBKˆ€”KoR RB‹€‘&*! Jˆ!¡ÙQÁEEÈ ˆŽŽ€ŒQ, Š Øä!¢Žƒ£ˆŠÊûá{£kÖ¼÷æÍþµ×>ç¬ó³ÏÀ –H3Q5€ ©BàƒÇÄÆáä.@ $p�³d!sý#�ø~<<+"À¾�xÓ �ÀM›À0‡ÿêB™\€„Àt‘8K€�@zŽB¦�@F€˜&S� �`Ëcbã�P-�`'æÓ�€ø™{�[”! ‘� eˆD�h;�¬ÏVŠE�X0�fKÄ9�Ø-�0IWfH�°·�ÀÎ ²� �0Qˆ…)�{�`È##x�„™�FòW<ñ+®ç*��x™²<¹$9E[-qWW.(ÎI+6aaš@.Ây™24àóÌ�� ‘àƒóýxήÎÎ6޶_-ê¿ÿ"bbãþåÏ«p@��át~Ñþ,/³€;€mþ¢%îh^  u÷‹f²@µ� éÚWópø~<<E¡¹ÙÙåääØJÄB[aÊW}þgÂ_ÀWýlù~<ü÷õà¾â$2]GøàÂÌôL¥Ï’ „bÜæGü· ÿüÓ"ÄIb¹X*ãQqŽDšŒó2¥"‰B’)Å%Òÿdâß,û>ß5�°j>{‘-¨]cöK'XtÀâ÷��ò»oÁÔ(€hƒáÏwÿï?ýG %�€fI’q��^D$.Tʳ?Ç��D *°AôÁ,ÀÁÜÁ ü`6„B$ÄÂBB d€r`)¬‚B(†Í°*`/Ô@4ÀQh†“p.ÂU¸=púažÁ(¼ AÈa!ÚˆbŠX#Ž™…ø!ÁH‹$ ɈQ"K‘5H1RŠT UHò=r9‡\Fº‘;È�2‚ü†¼G1”²Q=Ô µC¹¨7„F¢ Ðdt1š ›Ðr´=Œ6¡çЫhÚ>CÇ0Àè3Äl0.ÆÃB±8, “c˱"¬ «Æ°V¬»‰õcϱwEÀ 6wB aAHXLXNØH¨ $4Ú 7 „QÂ'"“¨K´&ºùÄb21‡XH,#Ö/{ˆCÄ7$‰C2'¹I±¤TÒÒFÒnR#é,©›4H#“ÉÚdk²9”, +È…ääÃä3ää!ò[ b@q¤øSâ(RÊjJåå4åe˜2AU£šRݨ¡T5ZB­¡¶R¯Q‡¨4uš9̓IK¥­¢•Óhh÷i¯ètºÝ•N—ÐWÒËéGè—èôw †ƒÇˆg(›gw¯˜L¦Ó‹ÇT071ë˜ç™™oUX*¶*|‘Ê •J•&•*/T©ª¦ªÞª UóUËT©^S}®FU3Sã© Ô–«UªPëSSg©;¨‡ªg¨oT?¤~Yý‰YÃLÃOC¤Q ±_ã¼Æ c³x,!k «†u5Ä&±ÍÙ|v*»˜ý»‹=ª©¡9C3J3W³Ró”f?ã˜qøœtN ç(§—ó~ŠÞï)â)¦4L¹1e\kª–—–X«H«Q«Gë½6®í§¦½E»YûAÇJ'\'GgÎçSÙSݧ §M=:õ®.ªk¥¡»Dw¿n§î˜ž¾^€žLo§Þy½çú}/ýTýmú§õG X³ $Û Î<Å5qo</ÇÛñQC]Ã@C¥a•a—á„‘¹Ñ<£ÕFFŒiÆ\ã$ãmÆmÆ£&&!&KMêMîšRM¹¦)¦;L;LÇÍÌÍ¢ÍÖ™5›=1×2ç›ç›×›ß·`ZxZ,¶¨¶¸eI²äZ¦Yî¶¼n…Z9Y¥XUZ]³F­­%Ö»­»§§¹N“N«žÖgðñ¶É¶©·°åØÛ®¶m¶}agbg·Å®Ã“}º}ý= ‡Ù«Z~s´r:V:ޚΜî?}Åô–é/gXÏÏØ3ã¶Ë)ÄiS›ÓGgg¹sƒóˆ‹‰K‚Ë.—>.›ÆÝȽäJtõq]ázÒõ›³›Âí¨Û¯î6îiî‡ÜŸÌ4Ÿ)žY3sÐÃÈCàQåÑ? Ÿ•0k߬~OCOgµç#/c/‘W­×°·¥wª÷aï>ö>rŸã>ã<7Þ2ÞY_Ì7À·È·ËOÃož_…ßC#ÿdÿzÿÑ�§€%g‰A[ûøz|!¿Ž?:Ûeö²ÙíAŒ ¹AA‚­‚åÁ­!hÈì­!÷ç˜Î‘Îi…P~èÖÐaæa‹Ã~ '…‡…W†?ŽpˆXÑ1—5wÑÜCsßDúD–DÞ›g1O9¯-J5*>ª.j<Ú7º4º?Æ.fYÌÕXXIlK9.*®6nl¾ßüíó‡ââ ã{˜/È]py¡ÎÂô…§©.,:–@LˆN8”ðA*¨Œ%òw%Ž yÂÂg"/Ñ6шØC\*NòH*Mz’쑼5y$Å3¥,幄'©¼L LÝ›:žšv m2=:½1ƒ’‘qBª!M“¶gêgæfvˬe…²þÅn‹·/•Ék³¬Y- ¶B¦èTZ(×*²geWf¿Í‰Ê9–«ž+Íí̳ÊÛ7œïŸÿíÂá’¶¥†KW-X潬j9²<qyÛ ã+†V¬<¸Š¶*mÕO«íW—®~½&zMk^ÁÊ‚Áµkë U å…}ëÜ×í]OX/Yßµaú†>‰Š®Û—Ø(Üxå‡oÊ¿™Ü”´©«Ä¹dÏfÒféæÞ-ž[–ª—æ—n ÙÚ´ ßV´íõöEÛ/—Í(Û»ƒ¶C¹£¿<¸¼e§ÉÎÍ;?T¤TôTúT6îÒݵa×ønÑî{¼ö4ìÕÛ[¼÷ý>ɾÛUUMÕfÕeûIû³÷?®‰ªéø–ûm]­NmqíÇÒý#¶×¹ÔÕÒ=TRÖ+ëGǾþïw- 6 UœÆâ#pDyäé÷ ß÷ :ÚvŒ{¬áÓvg/jBšòšF›Sšû[b[ºOÌ>ÑÖêÞzüGÛœ4<YyJóTÉiÚé‚Ó“gòÏŒ•}~.ùÜ`Û¢¶{çcÎßjoïºtáÒEÿ‹ç;¼;Î\ò¸tò²ÛåW¸Wš¯:_mêtê<þ“ÓOÇ»œ»š®¹\k¹îz½µ{f÷éž7ÎÝô½yñÿÖÕž9=ݽózo÷Å÷õßÝ~r'ýÎË»Ùw'î­¼O¼_ô@íAÙC݇Õ?[þÜØïÜjÀw óÑÜG÷…ƒÏþ‘õC™Ë† †ëž8>99â?rýéü§CÏdÏ&žþ¢þË®/~øÕë×Îјѡ—ò—“¿m|¥ýêÀë¯ÛÆÂƾÉx31^ôVûíÁwÜwï£ßOä| (ÿhù±õSЧû“““ÿ˜óüc3-Û���gAMA��±Ž|ûQ“��� cHRM��z%��€ƒ��ùÿ��€é��u0��ê`��:˜��o’_ÅF��LIDATxÚ¤’»K‚a‡ŸOí¢A”aØeº,VS ÑXH‚cS-CQƒC4QCÔÒÒP´"$ÕæP%$©©)ßwZR°Ä ýàðò¾pÎá}aq×kR@‚2Ùœ)¸ë~Nf©2Šˆ ªª„¢Ÿ_ûÁh$– Àe5Ða6Õ­MÙÛ§G»íõ5ú3à�°–›@ i"‚ˆ0ÔÕbð¸Ìc¶6§^§Ü뀱$ ל«Z½ŽÉÁN㪣¿©ÇÚ¸¤(ÜΊ¹jn¨en¼¯u¸×bv�×o€¡Ô~¡h’Cßc,O¿óÀuQ€ˆ<ÆSYNo^2þ§÷„ª‰Ø+ö�ª&xÞÔóÛp*«jÛ€§œ\y@ Ë_=§>’° *É�°räß�&�7pR‰9‘¶�[µÍy•ÿ“ï�¬´˜;Hܪ����IEND®B`‚�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000220�00000000000�011557� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/themes/tundra/images/accordionItemActive.gif���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/t0000644�0000000�0000000�00000000153�11360615636�027227� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������GIF89a��³�����ÿÿÿþþþüüüûûûùùùøøøöööõõõóóóòòòïïïíííÿÿÿ������!ù�� �,�������0ÈI«½BŒAH)†qŒ‚$‰¢*˼L�;���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000217�00000000000�011565� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/themes/tundra/images/tooltipConnectorUp.gif����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/t0000644�0000000�0000000�00000000270�11360615644�027226� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������GIF89a��Ä�����ÿÿÿìò÷êðõv¥Ê|©Ì~ªÍ~«Í‹³Òœ½×¡ÁÙªÇÝáêñÔâìÞéñòõ÷ðõ÷øúúÿÿÿ���������������������������������������!ù���,�������5 $Ždižhª®æÁЇâ²H`° 3z,`¢×Š"éà8JQÁy$´Ô CyÈg!�;����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000221�00000000000�011560� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/themes/tundra/images/dijitProgressBarAnim.psd��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/t0000644�0000000�0000000�00000116316�11360615644�027237� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������8BPS����������� ��� ��������pÂ8BIM%���������������������8BIM$����9N<?xpacket begin="" id="W5M0MpCehiHzreSzNTczkc9d"?> <x:xmpmeta xmlns:x="adobe:ns:meta/" x:xmptk="Adobe XMP Core 4.1-c036 46.276720, Mon Feb 19 2007 22:13:43 "> <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"> <rdf:Description rdf:about="" xmlns:dc="http://purl.org/dc/elements/1.1/"> <dc:format>application/vnd.adobe.photoshop</dc:format> </rdf:Description> <rdf:Description rdf:about="" xmlns:xap="http://ns.adobe.com/xap/1.0/"> <xap:CreatorTool>Adobe Photoshop CS3 Macintosh</xap:CreatorTool> <xap:CreateDate>2007-05-22T18:31:45-07:00</xap:CreateDate> <xap:ModifyDate>2007-05-22T18:37:24-07:00</xap:ModifyDate> <xap:MetadataDate>2007-05-22T18:37:24-07:00</xap:MetadataDate> </rdf:Description> <rdf:Description rdf:about="" xmlns:xapMM="http://ns.adobe.com/xap/1.0/mm/"> <xapMM:DocumentID>uuid:1A07A801250ADC11B836C2ECBD9434A6</xapMM:DocumentID> <xapMM:InstanceID>uuid:4587F732250ADC11B836C2ECBD9434A6</xapMM:InstanceID> </rdf:Description> <rdf:Description rdf:about="" xmlns:tiff="http://ns.adobe.com/tiff/1.0/"> <tiff:Orientation>1</tiff:Orientation> <tiff:XResolution>720000/10000</tiff:XResolution> <tiff:YResolution>720000/10000</tiff:YResolution> <tiff:ResolutionUnit>2</tiff:ResolutionUnit> <tiff:NativeDigest>256,257,258,259,262,274,277,284,530,531,282,283,296,301,318,319,529,532,306,270,271,272,305,315,33432;3112FB7CBEEBEBC4C068CF78D4E49117</tiff:NativeDigest> </rdf:Description> <rdf:Description rdf:about="" xmlns:exif="http://ns.adobe.com/exif/1.0/"> <exif:PixelXDimension>9</exif:PixelXDimension> <exif:PixelYDimension>13</exif:PixelYDimension> <exif:ColorSpace>-1</exif:ColorSpace> <exif:NativeDigest>36864,40960,40961,37121,37122,40962,40963,37510,40964,36867,36868,33434,33437,34850,34852,34855,34856,37377,37378,37379,37380,37381,37382,37383,37384,37385,37386,37396,41483,41484,41486,41487,41488,41492,41493,41495,41728,41729,41730,41985,41986,41987,41988,41989,41990,41991,41992,41993,41994,41995,41996,42016,0,2,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,20,22,23,24,25,26,27,28,30;C47B2C9CBD023E5A0928BF46C1A8B5F0</exif:NativeDigest> </rdf:Description> <rdf:Description rdf:about="" xmlns:photoshop="http://ns.adobe.com/photoshop/1.0/"> <photoshop:ColorMode>3</photoshop:ColorMode> <photoshop:History/> </rdf:Description> </rdf:RDF> </x:xmpmeta> <?xpacket end="w"?>8BIMê����°<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> <plist version="1.0"> <dict> <key>com.apple.print.PageFormat.PMHorizontalRes</key> <dict> <key>com.apple.print.ticket.creator</key> <string>com.apple.printingmanager</string> <key>com.apple.print.ticket.itemArray</key> <array> <dict> <key>com.apple.print.PageFormat.PMHorizontalRes</key> <real>72</real> <key>com.apple.print.ticket.client</key> <string>com.apple.printingmanager</string> <key>com.apple.print.ticket.modDate</key> <date>2007-05-23T01:31:45Z</date> <key>com.apple.print.ticket.stateFlag</key> <integer>0</integer> </dict> </array> </dict> <key>com.apple.print.PageFormat.PMOrientation</key> <dict> <key>com.apple.print.ticket.creator</key> <string>com.apple.printingmanager</string> <key>com.apple.print.ticket.itemArray</key> <array> <dict> <key>com.apple.print.PageFormat.PMOrientation</key> <integer>1</integer> <key>com.apple.print.ticket.client</key> <string>com.apple.printingmanager</string> <key>com.apple.print.ticket.modDate</key> <date>2007-05-23T01:31:45Z</date> <key>com.apple.print.ticket.stateFlag</key> <integer>0</integer> </dict> </array> </dict> <key>com.apple.print.PageFormat.PMScaling</key> <dict> <key>com.apple.print.ticket.creator</key> <string>com.apple.printingmanager</string> <key>com.apple.print.ticket.itemArray</key> <array> <dict> <key>com.apple.print.PageFormat.PMScaling</key> <real>1</real> <key>com.apple.print.ticket.client</key> <string>com.apple.printingmanager</string> <key>com.apple.print.ticket.modDate</key> <date>2007-05-23T01:31:45Z</date> <key>com.apple.print.ticket.stateFlag</key> <integer>0</integer> </dict> </array> </dict> <key>com.apple.print.PageFormat.PMVerticalRes</key> <dict> <key>com.apple.print.ticket.creator</key> <string>com.apple.printingmanager</string> <key>com.apple.print.ticket.itemArray</key> <array> <dict> <key>com.apple.print.PageFormat.PMVerticalRes</key> <real>72</real> <key>com.apple.print.ticket.client</key> <string>com.apple.printingmanager</string> <key>com.apple.print.ticket.modDate</key> <date>2007-05-23T01:31:45Z</date> <key>com.apple.print.ticket.stateFlag</key> <integer>0</integer> </dict> </array> </dict> <key>com.apple.print.PageFormat.PMVerticalScaling</key> <dict> <key>com.apple.print.ticket.creator</key> <string>com.apple.printingmanager</string> <key>com.apple.print.ticket.itemArray</key> <array> <dict> <key>com.apple.print.PageFormat.PMVerticalScaling</key> <real>1</real> <key>com.apple.print.ticket.client</key> <string>com.apple.printingmanager</string> <key>com.apple.print.ticket.modDate</key> <date>2007-05-23T01:31:45Z</date> <key>com.apple.print.ticket.stateFlag</key> <integer>0</integer> </dict> </array> </dict> <key>com.apple.print.subTicket.paper_info_ticket</key> <dict> <key>com.apple.print.PageFormat.PMAdjustedPageRect</key> <dict> <key>com.apple.print.ticket.creator</key> <string>com.apple.printingmanager</string> <key>com.apple.print.ticket.itemArray</key> <array> <dict> <key>com.apple.print.PageFormat.PMAdjustedPageRect</key> <array> <real>0.0</real> <real>0.0</real> <real>734</real> <real>576</real> </array> <key>com.apple.print.ticket.client</key> <string>com.apple.printingmanager</string> <key>com.apple.print.ticket.modDate</key> <date>2007-05-23T01:31:45Z</date> <key>com.apple.print.ticket.stateFlag</key> <integer>0</integer> </dict> </array> </dict> <key>com.apple.print.PageFormat.PMAdjustedPaperRect</key> <dict> <key>com.apple.print.ticket.creator</key> <string>com.apple.printingmanager</string> <key>com.apple.print.ticket.itemArray</key> <array> <dict> <key>com.apple.print.PageFormat.PMAdjustedPaperRect</key> <array> <real>-18</real> <real>-18</real> <real>774</real> <real>594</real> </array> <key>com.apple.print.ticket.client</key> <string>com.apple.printingmanager</string> <key>com.apple.print.ticket.modDate</key> <date>2007-05-23T01:31:45Z</date> <key>com.apple.print.ticket.stateFlag</key> <integer>0</integer> </dict> </array> </dict> <key>com.apple.print.PaperInfo.PMPaperName</key> <dict> <key>com.apple.print.ticket.creator</key> <string>com.apple.print.pm.PostScript</string> <key>com.apple.print.ticket.itemArray</key> <array> <dict> <key>com.apple.print.PaperInfo.PMPaperName</key> <string>na-letter</string> <key>com.apple.print.ticket.client</key> <string>com.apple.print.pm.PostScript</string> <key>com.apple.print.ticket.modDate</key> <date>2003-07-01T17:49:36Z</date> <key>com.apple.print.ticket.stateFlag</key> <integer>1</integer> </dict> </array> </dict> <key>com.apple.print.PaperInfo.PMUnadjustedPageRect</key> <dict> <key>com.apple.print.ticket.creator</key> <string>com.apple.print.pm.PostScript</string> <key>com.apple.print.ticket.itemArray</key> <array> <dict> <key>com.apple.print.PaperInfo.PMUnadjustedPageRect</key> <array> <real>0.0</real> <real>0.0</real> <real>734</real> <real>576</real> </array> <key>com.apple.print.ticket.client</key> <string>com.apple.printingmanager</string> <key>com.apple.print.ticket.modDate</key> <date>2007-05-23T01:31:45Z</date> <key>com.apple.print.ticket.stateFlag</key> <integer>0</integer> </dict> </array> </dict> <key>com.apple.print.PaperInfo.PMUnadjustedPaperRect</key> <dict> <key>com.apple.print.ticket.creator</key> <string>com.apple.print.pm.PostScript</string> <key>com.apple.print.ticket.itemArray</key> <array> <dict> <key>com.apple.print.PaperInfo.PMUnadjustedPaperRect</key> <array> <real>-18</real> <real>-18</real> <real>774</real> <real>594</real> </array> <key>com.apple.print.ticket.client</key> <string>com.apple.printingmanager</string> <key>com.apple.print.ticket.modDate</key> <date>2007-05-23T01:31:45Z</date> <key>com.apple.print.ticket.stateFlag</key> <integer>0</integer> </dict> </array> </dict> <key>com.apple.print.PaperInfo.ppd.PMPaperName</key> <dict> <key>com.apple.print.ticket.creator</key> <string>com.apple.print.pm.PostScript</string> <key>com.apple.print.ticket.itemArray</key> <array> <dict> <key>com.apple.print.PaperInfo.ppd.PMPaperName</key> <string>US Letter</string> <key>com.apple.print.ticket.client</key> <string>com.apple.print.pm.PostScript</string> <key>com.apple.print.ticket.modDate</key> <date>2003-07-01T17:49:36Z</date> <key>com.apple.print.ticket.stateFlag</key> <integer>1</integer> </dict> </array> </dict> <key>com.apple.print.ticket.APIVersion</key> <string>00.20</string> <key>com.apple.print.ticket.privateLock</key> <false/> <key>com.apple.print.ticket.type</key> <string>com.apple.print.PaperInfoTicket</string> </dict> <key>com.apple.print.ticket.APIVersion</key> <string>00.20</string> <key>com.apple.print.ticket.privateLock</key> <false/> <key>com.apple.print.ticket.type</key> <string>com.apple.print.PageFormatTicket</string> </dict> </plist> 8BIMí������H�����H����8BIM&���������������?€��8BIM ��������x8BIM��������8BIMó����� ���������8BIM �������8BIM'����� ��������8BIMõ�����H�/ff��lff�������/ff��¡™š�������2����Z���������5����-��������8BIMø�����p��ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿè����ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿè����ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿè����ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿè��8BIM��������8BIM�����������������������8BIM0����� �8BIM-���������8BIM����������@��@����8BIM���������8BIM����ö���������������null������baseNameTEXT����U�s�e�r�����boundsObjc���������Rct1�������Top long��������Leftlong��������Btomlong��� ����Rghtlong��� ���slicesVlLs���Objc��������slice������sliceIDlong�������groupIDlong�������originenum��� ESliceOrigin��� autoGenerated����Typeenum��� ESliceType����Img ���boundsObjc���������Rct1�������Top long��������Leftlong��������Btomlong��� ����Rghtlong��� ���urlTEXT���������nullTEXT���������MsgeTEXT��������altTagTEXT��������cellTextIsHTMLbool���cellTextTEXT�������� horzAlignenum���ESliceHorzAlign���default��� vertAlignenum���ESliceVertAlign���default��� bgColorTypeenum���ESliceBGColorType����None��� topOutsetlong������� leftOutsetlong������� bottomOutsetlong������� rightOutsetlong����8BIM(����� ���?ð������8BIM������8BIM��������8BIM!�����U��������A�d�o�b�e� �P�h�o�t�o�s�h�o�p����A�d�o�b�e� �P�h�o�t�o�s�h�o�p� �C�S�3����8BIM"����.MM�*������������������b�������j(�������1�������r2�������‡i�������¤���Ð� ü€��'� ü€��'Adobe Photoshop CS3 Macintosh�2007:05:22 18:37:24�� ����ÿÿ�� �������  ������� ��������������������������&(�������������.���������������H������H���8BIM ����îmopt�����������������������������������������d�������������������ÿËËË����ÿÿÿÿ����ÿÿÿÿ����ÿÿÿÿ����ÿÿÿÿ��������ÿ���ÿ���ÿ���ÿ���ÿ���ÿ���ÿ���ÿ���ÿ���ÿ���ÿ���ÿ���ÿ���ÿ���ÿ���ÿ���ÿ���ÿ���ÿ���ÿ���ÿ���ÿ���ÿ���ÿ���ÿ���ÿ���ÿ���ÿ���ÿ���ÿ���ÿ���ÿ���ÿ���ÿ���ÿ���ÿ���ÿ���ÿ���ÿ���ÿ���ÿ���ÿ���ÿ���ÿ���ÿ���ÿ���ÿ���ÿ���ÿ���ÿ���ÿ���ÿ���ÿ���ÿ���ÿ���ÿ���ÿ���ÿ���ÿ���ÿ���ÿ���ÿ���ÿ���ÿ���ÿ���ÿ���ÿ���ÿ���ÿ���ÿ���ÿ���ÿ���ÿ���ÿ���ÿ���ÿ���ÿ���ÿ���ÿ���ÿ���ÿ���ÿ���ÿ���ÿ���ÿ���ÿ���ÿ���ÿ���ÿ���ÿ���ÿ���ÿ���ÿ���ÿ���ÿ���ÿ���ÿ���ÿ���ÿ���ÿ���ÿ���ÿ���ÿ���ÿ���ÿ���ÿ���ÿ���ÿ���ÿ���ÿ���ÿ���ÿ���ÿ���ÿ���ÿ���ÿ���ÿ���ÿ���ÿ���ÿ���ÿ���ÿ���ÿ���ÿ���ÿ���ÿ���ÿ���ÿ���ÿ���ÿ���ÿ���ÿ���ÿ���ÿ���ÿ���ÿ���ÿ���ÿ���ÿ���ÿ���ÿ���ÿ���ÿ���ÿ���ÿ���ÿ���ÿ���ÿ���ÿ���ÿ���ÿ���ÿ���ÿ���ÿ���ÿ���ÿ���ÿ���ÿ���ÿ���ÿ���ÿ���ÿ���ÿ���ÿ���ÿ���ÿ���ÿ���ÿ���ÿ���ÿ���ÿ���ÿ���ÿ���ÿ���ÿ���ÿ���ÿ���ÿ���ÿ���ÿ���ÿ���ÿ���ÿ���ÿ���ÿ���ÿ���ÿ���ÿ���ÿ���ÿ���ÿ���ÿ���ÿ���ÿ���ÿ���ÿ���ÿ���ÿ���ÿ���ÿ���ÿ���ÿ���ÿ���ÿ���ÿ���ÿ���ÿ���ÿ���ÿ���ÿ���ÿ���ÿ���ÿ���ÿ���ÿ���ÿ���ÿ���ÿ���ÿ���ÿ���ÿ���ÿ���ÿ���ÿ���ÿ���ÿ���ÿ���ÿ���ÿ���ÿ���ÿ���ÿ���ÿ���ÿ���ÿ���ÿ���ÿ���ÿ���ÿ���ÿ���ÿ���ÿ���ÿ���ÿ���ÿ���ÿ���ÿ���ÿ���ÿ���ÿ���ÿ���ÿ���ÿ���ÿ���ÿ���ÿ��������������l�����������TargetSettings�������ClrTObjc�������� ColorTable�������ClrsVlLs�������isExactbool�����MttCObjc�������� NativeQuad�������Bl long���Ë����Grn long���Ë����Rd long���Ë����Trnsbool���� addMetadatabool��� autoReducebool����colorTableControlObjc��������ColorTableControl������ lockedColorsVlLs������� shiftEntriesVlLs�������ditherAlgorithmenum���DitherAlgorithm����Dfsn��� ditherPercentlong���d��� fileFormatenum��� FileFormat���GIF��� interlacedbool����lossylong������� noMatteColorbool��� numColorslong������reductionAlgorithmenum���ReductionAlgorithm����Sele���rolloverMasterPalettebool����transparencyDitherAlgorithmenum���DitherAlgorithm����None���transparencyDitherAmountlong���d���webShiftPercentlong������� zonedDitherObjc�������� ZonedInfo������ channelIDlongÿÿÿÿ��� emphasizeTextbool����emphasizeVectorsbool����floorlong�������zonedHistogramWeightObjc�������� ZonedInfo������ channelIDlongÿÿÿÿ��� emphasizeTextbool����emphasizeVectorsbool����floorlong������� zonedLossyObjc�������� ZonedInfo������ channelIDlongÿÿÿÿ��� emphasizeTextbool����emphasizeVectorsbool����floorlong����8BIM¡����–mset�����������null������HTMLBackgroundSettingsObjc��������null������BackgroundColorBluelong���ÿ���BackgroundColorGreenlong���ÿ���BackgroundColorRedlong���ÿ���BackgroundColorStatelong�������BackgroundImagePathTEXT��������UseImageAsBackgroundbool���� HTMLSettingsObjc��������null������AlwaysAddAltAttributebool��� AttributeCaselong������ CloseAllTagsbool����Encodinglong�������EscapeDoubleByteURLCharsbool���FileSavingSettingsObjc��������null��� ���CopyBackgroundbool����DuplicateFileNameBehaviorlong������HtmlFileNameComponentsVlLs���long���long���long���long���long���long������ImageSubfolderNameTEXT����i�m�a�g�e�s����� IncludeXMPbool����NameCompatibilityObjc��������null������ NameCompatMacbool����NameCompatUNIXbool���NameCompatWindowsbool���OutputMultipleFilesbool����SavingFileNameComponentsVlLs��� long���long���long���long���long���long���long���long���long������SliceFileNameComponentsVlLs���TEXT����I�m�g�_��long���long���long���long���long������UseImageSubfolderbool���UseLongExtensionsbool����GoLiveCompatiblebool����ImageMapLocationlong������ ImageMapTypelong�������IncludeCommentsbool���IncludeZeroMarginsbool���Indentlongÿÿÿÿ��� LineEndingslong������ OutputXHTMLbool����QuoteAllAttributesbool���SpacersEmptyCellslong�������SpacersHorizontallong������SpacersVerticallong������ StylesFormatlong������ TDWidthHeightlong������TagCaselong������UseCSSbool���UseLongHTMLExtensionbool���MetadataOutputSettingsObjc��������null������ AddCustomIRbool���AddEXIFbool����AddXMPbool����AddXMPSourceFileURIbool����WriteMinimalXMPbool����WriteXMPToSidecarFilesbool����Versionlong����8BIM¢�����ms4w���8BIM£����ømaniIRFR��ì8BIMAnDs��Ì������������null�������AFStlong��������FrInVlLs��� Objc���������null�������FrIDlong9ŽfP����FrDllong��� Objc���������null�������FrIDlong@õÔ����FrDllong��� Objc���������null�������FrIDlongAè4@����FrDllong��� Objc���������null�������FrIDlongB¢����FrDllong��� Objc���������null�������FrIDlongBK÷����FrDllong��� Objc���������null�������FrIDlongB‚Ø����FrDllong��� Objc���������null�������FrIDlongB´Ý����FrDllong��� Objc���������null�������FrIDlongBê÷w����FrDllong��� Objc���������null�������FrIDlongC!UÃ����FrDllong��� ����FStsVlLs���Objc���������null�������FsIDlong��������AFrmlong�������FsFrVlLs��� long9ŽfPlong@õÔlongAè4@longB¢longBK÷longB‚ØlongB´ÝlongBê÷wlongC!UÃ����LCntlong������8BIMRoll�����������8BIM¤�����mfri��������� ������������+H��+� ����������� ��� �ÿÿ���6�����w����w����w8BIMnormÿ����Ü�������(��ÿÿ��ÿÿ��ÿÿ��ÿÿ��ÿÿ��ÿÿ��ÿÿ��ÿÿ��ÿÿ��ÿÿLayer 18BIMluni�������L�a�y�e�r� �1��8BIMlnsr���layr8BIMlyid������8BIMclbl������8BIMinfx�������8BIMknko�������8BIMlspf�������8BIMlclr�����������8BIMshmd��è���8BIMmlst������Ô������������null�������LaIDlong�������LaStVlLs��� Objc���������null�������FrLsVlLs���long9ŽfPObjc���������null�������FrLsVlLs���long@õÔObjc���������null�������FrLsVlLs���longAè4@Objc���������null�������FrLsVlLs���longB¢Objc���������null�������FrLsVlLs���longBK÷Objc���������null�������FrLsVlLs���longB‚ØObjc���������null�������FrLsVlLs���longB´ÝObjc���������null�������FrLsVlLs���longBê÷wObjc���������null�������FrLsVlLs���longC!UÃ8BIMfxrp������������������������������ ��� �ÿÿ���6�����w����w����w8BIMnormÿ����ø�������(��ÿÿ��ÿÿ��ÿÿ��ÿÿ��ÿÿ��ÿÿ��ÿÿ��ÿÿ��ÿÿ��ÿÿLayer 28BIMluni�������L�a�y�e�r� �2��8BIMlnsr���layr8BIMlyid������8BIMclbl������8BIMinfx�������8BIMknko�������8BIMlspf�������8BIMlclr�����������8BIMshmd�����8BIMmlst������ð������������null�������LaIDlong�������LaStVlLs��� Objc���������null�������enabbool�����FrLsVlLs���long9ŽfPObjc���������null�������enabbool����FrLsVlLs���long@õÔObjc���������null�������FrLsVlLs���longAè4@Objc���������null�������FrLsVlLs���longB¢Objc���������null�������FrLsVlLs���longBK÷Objc���������null�������FrLsVlLs���longB‚ØObjc���������null�������FrLsVlLs���longB´ÝObjc���������null�������FrLsVlLs���longBê÷wObjc���������null�������FrLsVlLs���longC!UÃ��8BIMfxrp������������������������������ ��� �ÿÿ���6�����w����w����w8BIMnormÿ����ø�������(��ÿÿ��ÿÿ��ÿÿ��ÿÿ��ÿÿ��ÿÿ��ÿÿ��ÿÿ��ÿÿ��ÿÿLayer 38BIMluni�������L�a�y�e�r� �3��8BIMlnsr���layr8BIMlyid������8BIMclbl������8BIMinfx�������8BIMknko�������8BIMlspf�������8BIMlclr�����������8BIMshmd�����8BIMmlst������ð������������null�������LaIDlong�������LaStVlLs��� Objc���������null�������enabbool�����FrLsVlLs���long9ŽfPObjc���������null�������FrLsVlLs���long@õÔObjc���������null�������enabbool����FrLsVlLs���longAè4@Objc���������null�������FrLsVlLs���longB¢Objc���������null�������FrLsVlLs���longBK÷Objc���������null�������FrLsVlLs���longB‚ØObjc���������null�������FrLsVlLs���longB´ÝObjc���������null�������FrLsVlLs���longBê÷wObjc���������null�������FrLsVlLs���longC!UÃ��8BIMfxrp������������������������������ ��� �ÿÿ���6�����w����w����w8BIMnormÿ����ø�������(��ÿÿ��ÿÿ��ÿÿ��ÿÿ��ÿÿ��ÿÿ��ÿÿ��ÿÿ��ÿÿ��ÿÿLayer 48BIMluni�������L�a�y�e�r� �4��8BIMlnsr���layr8BIMlyid������8BIMclbl������8BIMinfx�������8BIMknko�������8BIMlspf�������8BIMlclr�����������8BIMshmd�����8BIMmlst������ð������������null�������LaIDlong�������LaStVlLs��� Objc���������null�������enabbool�����FrLsVlLs���long9ŽfPObjc���������null�������FrLsVlLs���long@õÔObjc���������null�������FrLsVlLs���longAè4@Objc���������null�������enabbool����FrLsVlLs���longB¢Objc���������null�������FrLsVlLs���longBK÷Objc���������null�������FrLsVlLs���longB‚ØObjc���������null�������FrLsVlLs���longB´ÝObjc���������null�������FrLsVlLs���longBê÷wObjc���������null�������FrLsVlLs���longC!UÃ��8BIMfxrp������������������������������ ��� �ÿÿ���6�����w����w����w8BIMnormÿ����ø�������(��ÿÿ��ÿÿ��ÿÿ��ÿÿ��ÿÿ��ÿÿ��ÿÿ��ÿÿ��ÿÿ��ÿÿLayer 58BIMluni�������L�a�y�e�r� �5��8BIMlnsr���layr8BIMlyid������8BIMclbl������8BIMinfx�������8BIMknko�������8BIMlspf�������8BIMlclr�����������8BIMshmd�����8BIMmlst������ð������������null�������LaIDlong�������LaStVlLs��� Objc���������null�������enabbool�����FrLsVlLs���long9ŽfPObjc���������null�������FrLsVlLs���long@õÔObjc���������null�������FrLsVlLs���longAè4@Objc���������null�������FrLsVlLs���longB¢Objc���������null�������enabbool����FrLsVlLs���longBK÷Objc���������null�������FrLsVlLs���longB‚ØObjc���������null�������FrLsVlLs���longB´ÝObjc���������null�������FrLsVlLs���longBê÷wObjc���������null�������FrLsVlLs���longC!UÃ��8BIMfxrp������������������������������ ��� �ÿÿ���6�����w����w����w8BIMnormÿ����ø�������(��ÿÿ��ÿÿ��ÿÿ��ÿÿ��ÿÿ��ÿÿ��ÿÿ��ÿÿ��ÿÿ��ÿÿLayer 68BIMluni�������L�a�y�e�r� �6��8BIMlnsr���layr8BIMlyid������8BIMclbl������8BIMinfx�������8BIMknko�������8BIMlspf�������8BIMlclr�����������8BIMshmd�����8BIMmlst������ð������������null�������LaIDlong�������LaStVlLs��� Objc���������null�������enabbool�����FrLsVlLs���long9ŽfPObjc���������null�������FrLsVlLs���long@õÔObjc���������null�������FrLsVlLs���longAè4@Objc���������null�������FrLsVlLs���longB¢Objc���������null�������FrLsVlLs���longBK÷Objc���������null�������enabbool����FrLsVlLs���longB‚ØObjc���������null�������FrLsVlLs���longB´ÝObjc���������null�������FrLsVlLs���longBê÷wObjc���������null�������FrLsVlLs���longC!UÃ��8BIMfxrp������������������������������ ��� �ÿÿ���6�����w����w����w8BIMnormÿ����ø�������(��ÿÿ��ÿÿ��ÿÿ��ÿÿ��ÿÿ��ÿÿ��ÿÿ��ÿÿ��ÿÿ��ÿÿLayer 78BIMluni�������L�a�y�e�r� �7��8BIMlnsr���layr8BIMlyid������ 8BIMclbl������8BIMinfx�������8BIMknko�������8BIMlspf�������8BIMlclr�����������8BIMshmd�����8BIMmlst������ð������������null�������LaIDlong��� ����LaStVlLs��� Objc���������null�������enabbool�����FrLsVlLs���long9ŽfPObjc���������null�������FrLsVlLs���long@õÔObjc���������null�������FrLsVlLs���longAè4@Objc���������null�������FrLsVlLs���longB¢Objc���������null�������FrLsVlLs���longBK÷Objc���������null�������FrLsVlLs���longB‚ØObjc���������null�������enabbool����FrLsVlLs���longB´ÝObjc���������null�������FrLsVlLs���longBê÷wObjc���������null�������FrLsVlLs���longC!UÃ��8BIMfxrp������������������������������ ��� �ÿÿ���6�����w����w����w8BIMnormÿ����ø�������(��ÿÿ��ÿÿ��ÿÿ��ÿÿ��ÿÿ��ÿÿ��ÿÿ��ÿÿ��ÿÿ��ÿÿLayer 88BIMluni�������L�a�y�e�r� �8��8BIMlnsr���layr8BIMlyid������ 8BIMclbl������8BIMinfx�������8BIMknko�������8BIMlspf�������8BIMlclr�����������8BIMshmd�����8BIMmlst������ð������������null�������LaIDlong��� ����LaStVlLs��� Objc���������null�������enabbool�����FrLsVlLs���long9ŽfPObjc���������null�������FrLsVlLs���long@õÔObjc���������null�������FrLsVlLs���longAè4@Objc���������null�������FrLsVlLs���longB¢Objc���������null�������FrLsVlLs���longBK÷Objc���������null�������FrLsVlLs���longB‚ØObjc���������null�������FrLsVlLs���longB´ÝObjc���������null�������enabbool����FrLsVlLs���longBê÷wObjc���������null�������FrLsVlLs���longC!UÃ��8BIMfxrp������������������������������ ��� �ÿÿ���6�����w����w����w8BIMnormÿ����ø�������(��ÿÿ��ÿÿ��ÿÿ��ÿÿ��ÿÿ��ÿÿ��ÿÿ��ÿÿ��ÿÿ��ÿÿLayer 98BIMluni�������L�a�y�e�r� �9��8BIMlnsr���layr8BIMlyid������8BIMclbl������8BIMinfx�������8BIMknko�������8BIMlspf�������8BIMlclr�����������8BIMshmd�����8BIMmlst������ð������������null�������LaIDlong�������LaStVlLs��� Objc���������null�������enabbool�����FrLsVlLs���long9ŽfPObjc���������null�������FrLsVlLs���long@õÔObjc���������null�������FrLsVlLs���longAè4@Objc���������null�������FrLsVlLs���longB¢Objc���������null�������FrLsVlLs���longBK÷Objc���������null�������FrLsVlLs���longB‚ØObjc���������null�������FrLsVlLs���longB´ÝObjc���������null�������FrLsVlLs���longBê÷wObjc���������null�������enabbool����FrLsVlLs���longC!UÃ��8BIMfxrp���������������������������������øÿøÿøÿøÿøÿøÿøÿøÿøÿøÿøÿøÿøÿ��ÞÝÞàãäåãááÞÝÞâåææäåáÞÝßãçèèçãßÝÝàäçèèæâÝÛÜàåèççäßÚÙÛàäãæåáÜØ×ÚßÞâäãÞÙÕÕÙ×ÝáâßÚÔÑÒÏÔÛÞÞÛÕÏÍÉÌÒØÛÚÖÐËÅÅÈÎÓÕÔÐÉÃÀÁÄÊÍÏÍÈ��éèèêìííìêêèçèëíîîìíêèçéìîïïîëéççéìîïîíêçåæéìîííëçäãäèëêìëéåááãçæéêéæâßßâßäçèæáÝÚÛØÜáääáÜØÖÓÕÚßááÝØÔÐÏÒ×ÛÝÜØÓÍÊËÎÒÕÖÕÑ��÷ö÷÷øøøø÷÷ööö÷øùùø÷öõõõ÷øøø÷öôôôõö÷÷÷öôóòòôõ÷õõôòððñòôóôôòðîîïñðòóòðîììîëîððïíêèéåèëííëèåäàâåéêêçäáÞÞàãæçæäàÛÚÚÜßáâáÞ��������������øÿøÿøÿøÿøÿøÿøÿøÿøÿøÿøÿøÿøÿ��ÝÞàãäåãáÞÞÝÞâåææäááÞÝßãçèèåãßÝÝàäçèçæâÝÛÜàåèèçäßÚÙÛàäçæåáÜØ×ÚßãâäãÞÙÕÕÙÞÝáâßÚÔÑÒ×ÔÛÞÞÛÕÏÍÏÌÒØÛÚÖÐËÉÅÈÎÓÕÔÐÉÅÀÁÄÊÍÏÍÈÃ��èèêìííìêéèçèëíîîìêêèçéìîïïíëéççéìîïîíêçåæéìîîíëçäãäèëíìëéåááãçêéêéæâßßâæäçèæáÝÚÛßÜáääáÜØÖØÕÚßááÝØÔÓÏÒ×ÛÝÜØÓÐÊËÎÒÕÖÕÑÍ��ö÷÷øøøø÷÷ööö÷øùùø÷öõõõ÷øøø÷öôôôõö÷÷÷öôóòòôõ÷÷õôòððñòôõôôòðîîïñóòóòðîììîðîððïíêèéëèëííëèåäåâåéêêçäáàÞàãæçæäàÞÚÚÜßáâáÞÛ��������������øÿøÿøÿøÿøÿøÿøÿøÿøÿøÿøÿøÿøÿ��ÞàãäåãáÞÝÝÞâåææäáÞÞÝßãçèèåáßÝÝàäçèçãâÝÛÜàåèèæäßÚÙÛàäççåáÜØ×ÚßãæäãÞÙÕÕÙÞâáâßÚÔÑÒ×ÝÛÞÞÛÕÏÍÏÔÒØÛÚÖÐËÉÌÈÎÓÕÔÐÉÅÅÁÄÊÍÏÍÈÃÀ��èêìííìêéèçèëíîîìêèèçéìîïïíêéççéìîïîëêçåæéìîîíëçäãäèëííëéåááãçêìêéæâßßâæéçèæáÝÚÛßäáääáÜØÖØÜÚßááÝØÔÓÕÒ×ÛÝÜØÓÐÏËÎÒÕÖÕÑÍÊ��÷÷øøøø÷÷ööö÷øùùø÷öõõõ÷øøø÷öôôôõö÷÷÷öôóòòôõ÷÷öôòððñòôõõôòðîîïñóôóòðîììîðòððïíêèéëîëííëèåäåèåéêêçäáàâàãæçæäàÞÞÚÜßáâáÞÛÚ��������������øÿøÿøÿøÿøÿøÿøÿøÿøÿøÿøÿøÿøÿ��àãäåãáÞÝÞÞâåææäáÞÝÝßãçèèåáÞÝÝàäçèçãßÝÛÜàåèèæâßÚÙÛàäççäáÜØ×ÚßãæåãÞÙÕÕÙÞâäâßÚÔÑÒ×ÝáÞÞÛÕÏÍÏÔÛØÛÚÖÐËÉÌÒÎÓÕÔÐÉÅÅÈÄÊÍÏÍÈÃÀÁ��êìííìêéèèèëíîîìêèççéìîïïíêèççéìîïîëéçåæéìîîíêçäãäèëííëéåááãçêìëéæâßßâæéêèæáÝÚÛßäçääáÜØÖØÜáßááÝØÔÓÕÚ×ÛÝÜØÓÐÏÒÎÒÕÖÕÑÍÊË��÷øøøø÷÷ö÷ö÷øùùø÷ööõõ÷øøø÷öõôôõö÷÷÷öôóòòôõ÷÷öôòððñòôõõôòðîîïñóôôòðîììîðòóðïíêèéëîðííëèåäåèëéêêçäáàâåãæçæäàÞÞàÜßáâáÞÛÚÚ��������������øÿøÿøÿøÿøÿøÿøÿøÿøÿøÿøÿøÿøÿ��ãäåãáÞÝÞàâåææäáÞÝÞßãçèèåáÞÝÝàäçèçãßÝÛÜàåèèæâÝÚÙÛàäççäßÜØ×ÚßãæåáÞÙÕÕÙÞâäãßÚÔÑÒ×ÝáâÞÛÕÏÍÏÔÛÞÛÚÖÐËÉÌÒØÓÕÔÐÉÅÅÈÎÊÍÏÍÈÃÀÁÄ��ìííìêéèèêëíîîìêèçèéìîïïíêèççéìîïîëéçåæéìîîíêçäãäèëííëçåááãçêìëéæâßßâæéêéæáÝÚÛßäçèäáÜØÖØÜáäááÝØÔÓÕÚßÛÝÜØÓÐÏÒ×ÒÕÖÕÑÍÊËÎ��øøøø÷÷ö÷÷÷øùùø÷öööõ÷øøø÷öõõôõö÷÷÷öôôòòôõ÷÷öôóððñòôõõôòðîîïñóôôòðîììîðòóòïíêèéëîððíëèåäåèëíêêçäáàâåéæçæäàÞÞàãßáâáÞÛÚÚÜ��������������øÿøÿøÿøÿøÿøÿøÿøÿøÿøÿøÿøÿøÿ��äåãáÞÝÞàãåææäáÞÝÞâãçèèåáÞÝßàäçèçãßÝÝÜàåèèæâÝÛÙÛàäççäßÚØ×ÚßãæåáÜÙÕÕÙÞâäãÞÚÔÑÒ×ÝáâßÛÕÏÍÏÔÛÞÞÚÖÐËÉÌÒØÛÕÔÐÉÅÅÈÎÓÍÏÍÈÃÀÁÄÊ��ííìêéèèêìíîîìêèçèëìîïïíêèçééìîïîëéççæéìîîíêçåãäèëííëçäááãçêìëéåâßßâæéêéæáÝÚÛßäçèæáÜØÖØÜáääáÝØÔÓÕÚßáÝÜØÓÐÏÒ×ÛÕÖÕÑÍÊËÎÒ��øøø÷÷ö÷÷øøùùø÷ööö÷÷øøø÷öõõõõö÷÷÷öôôôòôõ÷÷öôóòðñòôõõôòðîîïñóôôòðîììîðòóòðíêèéëîððïëèåäåèëííêçäáàâåéêçæäàÞÞàãæáâáÞÛÚÚÜß��������������øÿøÿøÿøÿøÿøÿøÿøÿøÿøÿøÿøÿøÿ��åãáÞÝÞàãäææäáÞÝÞâåçèèåáÞÝßãäçèçãßÝÝààåèèæâÝÛÜÛàäççäßÚÙ×ÚßãæåáÜØÕÕÙÞâäãÞÙÔÑÒ×ÝáâßÚÕÏÍÏÔÛÞÞÛÖÐËÉÌÒØÛÚÔÐÉÅÅÈÎÓÕÏÍÈÃÀÁÄÊÍ��íìêéèèêìíîîìêèçèëíîïïíêèçéììîïîëéççééìîîíêçåæäèëííëçäãáãçêìëéåáßßâæéêéæâÝÚÛßäçèæáÜØÖØÜáääáÝØÔÓÕÚßááÜØÓÐÏÒ×ÛÝÖÕÑÍÊËÎÒÕ��øø÷÷ö÷÷øøùùø÷ööö÷øøøø÷öõõõ÷ö÷÷÷öôôôõôõ÷÷öôóòòñòôõõôòððîïñóôôòðîììîðòóòðîêèéëîððïíèåäåèëííëçäáàâåéêêæäàÞÞàãæçâáÞÛÚÚÜßá��������������øÿøÿøÿøÿøÿøÿøÿøÿøÿøÿøÿøÿøÿ��ãáÞÝÞàãäåæäáÞÝÞâåæèèåáÞÝßãççèçãßÝÝàäåèèæâÝÛÜààäççäßÚÙÛÚßãæåáÜØ×ÕÙÞâäãÞÙÕÑÒ×ÝáâßÚÔÏÍÏÔÛÞÞÛÕÐËÉÌÒØÛÚÖÐÉÅÅÈÎÓÕÔÍÈÃÀÁÄÊÍÏ��ìêéèèêìííîìêèçèëíîïïíêèçéìîîïîëéççéììîîíêçåæéèëííëçäãäãçêìëéåááßâæéêéæâßÚÛßäçèæáÝØÖØÜáääáÜØÔÓÕÚßááÝØÓÐÏÒ×ÛÝÜÕÑÍÊËÎÒÕÖ��ø÷÷ö÷÷øøøùø÷ööö÷øùøø÷öõõõ÷ø÷÷÷öôôôõöõ÷÷öôóòòôòôõõôòððñïñóôôòðîîìîðòóòðîìèéëîððïíêåäåèëííëèäáàâåéêêçäàÞÞàãæçæáÞÛÚÚÜßáâ��������������øÿøÿøÿøÿøÿøÿøÿøÿøÿøÿøÿøÿøÿ��áÞÝÞàãäåãäáÞÝÞâåææèåáÞÝßãçèèçãßÝÝàäçèèæâÝÛÜàåäççäßÚÙÛàßãæåáÜØ×ÚÙÞâäãÞÙÕÕÒ×ÝáâßÚÔÑÍÏÔÛÞÞÛÕÏËÉÌÒØÛÚÖÐÉÅÅÈÎÓÕÔÐÈÃÀÁÄÊÍÏÍ��êéèèêìííììêèçèëíîîïíêèçéìîïïîëéççéìîîîíêçåæéìëííëçäãäèçêìëéåááãâæéêéæâßßÛßäçèæáÝÚÖØÜáääáÜØÔÓÕÚßááÝØÓÐÏÒ×ÛÝÜØÑÍÊËÎÒÕÖÕ��÷÷ö÷÷øøøøø÷ööö÷øùùø÷öõõõ÷øø÷÷öôôôõö÷÷÷öôóòòôõôõõôòððñòñóôôòðîîïîðòóòðîììéëîððïíêèäåèëííëèåáàâåéêêçäàÞÞàãæçæäÞÛÚÚÜßáâá�����8BIMPatt����8BIMFMsk��� ��ÿÿ�������2����������������������������������������øÿøÿøÿøÿøÿøÿøÿøÿøÿøÿøÿøÿøÿøÿøÿøÿøÿøÿøÿøÿøÿøÿøÿøÿøÿøÿøÿøÿøÿøÿøÿøÿøÿøÿøÿøÿøÿøÿøÿ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000215�00000000000�011563� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/themes/tundra/images/radioButtonHover.png������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/t0000644�0000000�0000000�00000000761�11360615632�027230� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������‰PNG  ��� IHDR���������;Ö•J���sRGB�®Îé���tEXtSoftware�Adobe ImageReadyqÉe<��†IDAT8ËÓÍKÂpÇq!ºvêÔIèÚt ºví*ôtèTD§EÏ"BF‘j>åÚ|˜Î©¹ÍéP !>}¢`š:¼üö{u?6 �Ëu-̯îÙ!—Íë 2iÃù°»|DSàÅ|ãzäx�­«dòϘn,8Ü~h¥ Ê•òª¹P‚ªWðþY—Ȳ_dúWL [‡7Ð*¤\¢¬vaCú'´·Ê­=v¹’RñT¾§" ¸¾°K˜ùV´2^²)AÌAÊ*,·â±µm;29\\êKÓ ­xtyãi¹€!Ý—¢•X¬·âvR¶€Ÿ2Ià{Úl×í Ñ!.Ù“œWpêô°ØÖ’Ús$ˆ‡7Àuáãi¸èh_œ v¾$S¤~÷'ˆð9<ú"Ecäœn/ ߈µ×ë9N+›ç8¸ºmØ;saqý„…ÇdÄôÃh±6?f¶3jùÙ©ª³èi����IEND®B`‚���������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000224�00000000000�011563� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/themes/tundra/images/spriteRoundedIconsSmall.gif�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/t0000644�0000000�0000000�00000003507�11360615632�027231� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������GIF89aK�-�æv�ýýýþþþöööðððèèèùùù“““üüüæææ¨¨¨ûûûÂÂÂÀÀÀ©©©÷÷÷ÜÜÜ¿¿¿”””éééÚÚÚíííªªª§§§ÎÎÎêêê™™™ôôôºººóóó³³³ëëëÈÈȲ²²¥¥¥ììì¾¾¾¦¦¦ÅÅÅäääÃÃÃÌÌÌááᣣ£ççç•••ÇÇÇïïïòòòÖÖÖÄÄÄÐÐІ††ÞÞÞ···ÉÉÉžžž­­­µµµŸŸŸšššúúúÛÛÛÆÆÆ‰‰‰ÝÝݹ¹¹ÕÕÕ¼¼¼ÔÔÔååå»»»«««ŒŒŒ¬¬¬°°°¤¤¤½½½õõõ±±±ÁÁÁ´´´àààÍÍ͸¸¸¶¶¶îîî   ’’’âââøøø‹‹‹ŽŽŽÑÑшˆˆ‘‘‘‡‡‡fff×××ÏÏÏhhh€€€ÙÙÙÓÓÓÒÒÒ^^^›››eee¢¢¢ËËËØØØ¯¯¯ŠŠŠñññÿÿÿÿÿÿ���������������������������!ù��v�,����K�-��ÿ€v‚ƒ„…†‡ˆ‰Š‹Œ‚- Š‘“‰•’”š˜œ—†56429 ¡£¥§©«¤¦¨ª…¢±®´„¶­³… $1uÂÂ+¹v¿ÁÃuÅÇÉËÌÆ„ÏËÍÓÀÐÖƒ Ãt„ÜÐáãÛÝutÃâäêîè‚å Âuïƒ<¼ðqCX€#&üñ0Wç`BAÿ„Ýðñâ€<„ …5"À Fˆ  Q�ƒ ‡‚P€@‡-3„q!åÊu?´€ÑQgfM;*óÕ™±¥€4m }ðeÁ<ŸJë(@b& ‘žIí H€/E„?ê�(�…#®„˜qÆØ²gÿXü1#–dÍjE«–­Û¼q-¢QSFÁ[½ ppÐä/ ²hPò@PâÅ<&´aÀC2eËŠððÂå‚�Ï•í\vPÂËœ\Pƒ^œ† $Z4LNm§„šŒY£á „|§�£JñãÉkX3¦És䃔kÀýzô4¼x#ú   Ã~€ˆ %¡W?`½{øòÓ¯oÿ>þyýìÑqŸ‚Ì·Ÿ€ý"� Lô°BRè°€! 6ø`„*È ƒJHá†z¨¡…fX  d B R�Š*²è"Œ+¶xÈ‹)Ö8cŽ26âã@)äDiä‘H.’ ÿ(‡,¹‰%Ov‚ˆ“7²"Ë+µX‰ ,¼`©‹–½dyK˜ƒP3Œ6‚˜IŒ4ebS ›iºy&œÈȹæ1åóM8 ÀÃ}¦# ;îjO<óðé'>úðc¨X$AÃ$ñ¤0T‡¥þdZÇDÍÃ)DžnÔ‘0£bZ‡H$™´éCâÈãLÃ<ñS¬8éÄS¶¦dA¢D5O¯@ý* SN C,®SUu¯?!P<X|VC'è%í<t¬Õ¶ÚN+ ]vÉ“­#âvë¸è&:Xaìª� à ?È@©0¯<ÈÒ»o¿ÿðà 2ÀÀ–ýûAN;-ÌoÃô FÿH ÁÂ@Q� ¡Èì@ˆÇ kð@$›<Ê�è È�”|òÇôê[³Ë|ð`6ÿ§Í €ƒù}ÀI/Ý4ÒcIm4ÕJ3}5ÒYkxB` „'|øuØc—í5Øb“m6Ûi¿¶Û¡0ÐÀKl`cÝwç½÷‰}ë=càëb7Þ‚'©øâŒ7îøãòˆR6ÙåL2yåš_ιäžg>HT$°�€À1‚n:ꪳn‡ë§§¾z(¥×;î¯Ûκ!Œ {Ð ¼ðÃïLðÃÓ¡ü4Ì'o|ô>?ÈCHÀìQØ7ßýÿ÷áÓ‡zOHùõ¥O~ö¸Àžt¨ï¸@� ´×À¥ €øô¿û±'bð€} Ò=@(@ Á4H‚À@„ÀÀŠTО Üêƒt¸@H ‚È„)A!‚À„ à…'”&@ ûÀ((tÁ”P àР@2¨‚ˆÐVõW€¢ãG#&Èb‘?TñŠbÜ¢üà9€P‹ Á€<Ð,Áð�úe�9Vá ø@ò¸Ç8Š  AˆA(@H>ÊK œÐHCö =‚< GÞtÀ¤àd”à ¤�;‚ød(‹ †”ò”É¥ž09𕽑¥vùJ\ª² gbPXþ'Hf2Ð�Ù=È$�–ÙÌü S™`¦3¡‰ÍlVó˜ÝÔ¦†6�ƒLà70Ñ DNs¢S‚`g9ϙε“žð´ƒ<ÝYÏP@ GS(Üèþ©¢€ºˆ *0èªPT ‘‹¨D'ªˆ@��;�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000207�00000000000�011564� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/themes/tundra/images/i_half_rtl.gif������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/t0000644�0000000�0000000�00000000075�11360615642�027227� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������GIF89a��€�¿¿¿���!ù���,�������Œ€Ëí«žœ‰Z¯®»û†âH�;�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000221�00000000000�011560� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/themes/tundra/images/dijitProgressBarAnim.gif��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/t0000644�0000000�0000000�00000003214�11360615634�027226� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������GIF89a � �æ��Õßìåíøáê÷Ûáëçíõçî÷ãìøÞæðÉÓàæîùäëôÝçôèî÷ÞèöèïøÏØåÐØäÍÕáÙâîÞäíÁËÚßéõÙãðÔÜèÝäîÃÍÛÈÑÞÛáêÞé÷Þè÷ßçñäíøäìøãì÷âêôÝçóæíöÚãïáêöØáîÜåðÍÖäØßéÈÒàËÔáÓÛæâéòÊÒßÝèöÔÜæÕÜèàéôâë÷áéòåëôãëöÕÝçÎ×ãÏÖâÛäñÒÚåàéõÞèõÔÝêÝçõßçòãéòÅÏÞßæïÅÐÞèï÷Úáí×ßëáçðæìôÛåò×áîàèòÑÚèäìöàê÷ÚáêÖÝçâèðåí÷ÒÛéÄÎÜÜæòÚäðäêóçîøÌÕâßéôÝçöåìõãêóÀÊÚ���������������������������������������������������������������������������������������������!ÿ NETSCAPE2.0���!ù ���,���� � ��w€0P ] 4 T&>@!Z7\ =OF $"#KW3^  AX;M _J65('L%.YB��HISDG?NU2)[<*QR,EC+9-81`V/:�!ù ���,���� � ��w€0P ] 4 &>@!ZT7\ =OF$"#KW3^  AX;M J65('L%_.YB��ISDG?NUH2)[<*QR,C+9-81E`V/:�!ù ���,���� � ��w€P0] 4  >@!ZT&\ =OF7"#KW3^ $ AX;M 65('L%_JYB��.ISDG?NUH2)<*QR,[+9-81ECV/:`�!ù ���,���� � ��w€P0 4  ]@!ZT&> =OF7\#KW3^ $"AX;M  5('L%_J6B��.YSDG?NUHI2)*QR,[<9-81EC+V/:`�!ù ���,���� � ��w€0P4  ] !ZT&>@ =OF7\ KW3^ $"#X;M  A('L%_J65��.YBDG?NUHIS2)QR,[<*-81EC+9/:`V�!ù ���,���� � ��w€0P  ] 4!ZT&>@=OF7\ W3^ $"#K;M  AX'L%_J65(��.YBG?NUHISD2)QR,[<*81EC+9-:`V/�!ù ���,���� � ��w€0P  ] 4ZT&>@!OF7\ =3^ $"#KW;M  AXL%_J65('��.YB?NUHISDG2)R,[<*Q1EC+9-8:`V/�!ù ���,���� � ��v€0P  ] 4ŠT&>@!ZF7\ =O^ $"#KW3M  AX;%_J65('L�.YB�NUHISDG?)2,[<*QREC+9-81`V/:�!ù ���,���� � ��w€0P  ] 4 T&>@!ZF7\ =O $"#KW3^  AX;M_J65('L%.YB��UHISDG?N)2,[<*QREC+9-81`V/:�;������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000214�00000000000�011562� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/themes/tundra/images/progressBarAnim.psd�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/t0000644�0000000�0000000�00000116316�11360615634�027236� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������8BPS����������� ��� ��������pÂ8BIM%���������������������8BIM$����9N<?xpacket begin="" id="W5M0MpCehiHzreSzNTczkc9d"?> <x:xmpmeta xmlns:x="adobe:ns:meta/" x:xmptk="Adobe XMP Core 4.1-c036 46.276720, Mon Feb 19 2007 22:13:43 "> <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"> <rdf:Description rdf:about="" xmlns:dc="http://purl.org/dc/elements/1.1/"> <dc:format>application/vnd.adobe.photoshop</dc:format> </rdf:Description> <rdf:Description rdf:about="" xmlns:xap="http://ns.adobe.com/xap/1.0/"> <xap:CreatorTool>Adobe Photoshop CS3 Macintosh</xap:CreatorTool> <xap:CreateDate>2007-05-22T18:31:45-07:00</xap:CreateDate> <xap:ModifyDate>2007-05-22T18:37:24-07:00</xap:ModifyDate> <xap:MetadataDate>2007-05-22T18:37:24-07:00</xap:MetadataDate> </rdf:Description> <rdf:Description rdf:about="" xmlns:xapMM="http://ns.adobe.com/xap/1.0/mm/"> <xapMM:DocumentID>uuid:1A07A801250ADC11B836C2ECBD9434A6</xapMM:DocumentID> <xapMM:InstanceID>uuid:4587F732250ADC11B836C2ECBD9434A6</xapMM:InstanceID> </rdf:Description> <rdf:Description rdf:about="" xmlns:tiff="http://ns.adobe.com/tiff/1.0/"> <tiff:Orientation>1</tiff:Orientation> <tiff:XResolution>720000/10000</tiff:XResolution> <tiff:YResolution>720000/10000</tiff:YResolution> <tiff:ResolutionUnit>2</tiff:ResolutionUnit> <tiff:NativeDigest>256,257,258,259,262,274,277,284,530,531,282,283,296,301,318,319,529,532,306,270,271,272,305,315,33432;3112FB7CBEEBEBC4C068CF78D4E49117</tiff:NativeDigest> </rdf:Description> <rdf:Description rdf:about="" xmlns:exif="http://ns.adobe.com/exif/1.0/"> <exif:PixelXDimension>9</exif:PixelXDimension> <exif:PixelYDimension>13</exif:PixelYDimension> <exif:ColorSpace>-1</exif:ColorSpace> <exif:NativeDigest>36864,40960,40961,37121,37122,40962,40963,37510,40964,36867,36868,33434,33437,34850,34852,34855,34856,37377,37378,37379,37380,37381,37382,37383,37384,37385,37386,37396,41483,41484,41486,41487,41488,41492,41493,41495,41728,41729,41730,41985,41986,41987,41988,41989,41990,41991,41992,41993,41994,41995,41996,42016,0,2,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,20,22,23,24,25,26,27,28,30;C47B2C9CBD023E5A0928BF46C1A8B5F0</exif:NativeDigest> </rdf:Description> <rdf:Description rdf:about="" xmlns:photoshop="http://ns.adobe.com/photoshop/1.0/"> <photoshop:ColorMode>3</photoshop:ColorMode> <photoshop:History/> </rdf:Description> </rdf:RDF> </x:xmpmeta> <?xpacket end="w"?>8BIMê����°<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> <plist version="1.0"> <dict> <key>com.apple.print.PageFormat.PMHorizontalRes</key> <dict> <key>com.apple.print.ticket.creator</key> <string>com.apple.printingmanager</string> <key>com.apple.print.ticket.itemArray</key> <array> <dict> <key>com.apple.print.PageFormat.PMHorizontalRes</key> <real>72</real> <key>com.apple.print.ticket.client</key> <string>com.apple.printingmanager</string> <key>com.apple.print.ticket.modDate</key> <date>2007-05-23T01:31:45Z</date> <key>com.apple.print.ticket.stateFlag</key> <integer>0</integer> </dict> </array> </dict> <key>com.apple.print.PageFormat.PMOrientation</key> <dict> <key>com.apple.print.ticket.creator</key> <string>com.apple.printingmanager</string> <key>com.apple.print.ticket.itemArray</key> <array> <dict> <key>com.apple.print.PageFormat.PMOrientation</key> <integer>1</integer> <key>com.apple.print.ticket.client</key> <string>com.apple.printingmanager</string> <key>com.apple.print.ticket.modDate</key> <date>2007-05-23T01:31:45Z</date> <key>com.apple.print.ticket.stateFlag</key> <integer>0</integer> </dict> </array> </dict> <key>com.apple.print.PageFormat.PMScaling</key> <dict> <key>com.apple.print.ticket.creator</key> <string>com.apple.printingmanager</string> <key>com.apple.print.ticket.itemArray</key> <array> <dict> <key>com.apple.print.PageFormat.PMScaling</key> <real>1</real> <key>com.apple.print.ticket.client</key> <string>com.apple.printingmanager</string> <key>com.apple.print.ticket.modDate</key> <date>2007-05-23T01:31:45Z</date> <key>com.apple.print.ticket.stateFlag</key> <integer>0</integer> </dict> </array> </dict> <key>com.apple.print.PageFormat.PMVerticalRes</key> <dict> <key>com.apple.print.ticket.creator</key> <string>com.apple.printingmanager</string> <key>com.apple.print.ticket.itemArray</key> <array> <dict> <key>com.apple.print.PageFormat.PMVerticalRes</key> <real>72</real> <key>com.apple.print.ticket.client</key> <string>com.apple.printingmanager</string> <key>com.apple.print.ticket.modDate</key> <date>2007-05-23T01:31:45Z</date> <key>com.apple.print.ticket.stateFlag</key> <integer>0</integer> </dict> </array> </dict> <key>com.apple.print.PageFormat.PMVerticalScaling</key> <dict> <key>com.apple.print.ticket.creator</key> <string>com.apple.printingmanager</string> <key>com.apple.print.ticket.itemArray</key> <array> <dict> <key>com.apple.print.PageFormat.PMVerticalScaling</key> <real>1</real> <key>com.apple.print.ticket.client</key> <string>com.apple.printingmanager</string> <key>com.apple.print.ticket.modDate</key> <date>2007-05-23T01:31:45Z</date> <key>com.apple.print.ticket.stateFlag</key> <integer>0</integer> </dict> </array> </dict> <key>com.apple.print.subTicket.paper_info_ticket</key> <dict> <key>com.apple.print.PageFormat.PMAdjustedPageRect</key> <dict> <key>com.apple.print.ticket.creator</key> <string>com.apple.printingmanager</string> <key>com.apple.print.ticket.itemArray</key> <array> <dict> <key>com.apple.print.PageFormat.PMAdjustedPageRect</key> <array> <real>0.0</real> <real>0.0</real> <real>734</real> <real>576</real> </array> <key>com.apple.print.ticket.client</key> <string>com.apple.printingmanager</string> <key>com.apple.print.ticket.modDate</key> <date>2007-05-23T01:31:45Z</date> <key>com.apple.print.ticket.stateFlag</key> <integer>0</integer> </dict> </array> </dict> <key>com.apple.print.PageFormat.PMAdjustedPaperRect</key> <dict> <key>com.apple.print.ticket.creator</key> <string>com.apple.printingmanager</string> <key>com.apple.print.ticket.itemArray</key> <array> <dict> <key>com.apple.print.PageFormat.PMAdjustedPaperRect</key> <array> <real>-18</real> <real>-18</real> <real>774</real> <real>594</real> </array> <key>com.apple.print.ticket.client</key> <string>com.apple.printingmanager</string> <key>com.apple.print.ticket.modDate</key> <date>2007-05-23T01:31:45Z</date> <key>com.apple.print.ticket.stateFlag</key> <integer>0</integer> </dict> </array> </dict> <key>com.apple.print.PaperInfo.PMPaperName</key> <dict> <key>com.apple.print.ticket.creator</key> <string>com.apple.print.pm.PostScript</string> <key>com.apple.print.ticket.itemArray</key> <array> <dict> <key>com.apple.print.PaperInfo.PMPaperName</key> <string>na-letter</string> <key>com.apple.print.ticket.client</key> <string>com.apple.print.pm.PostScript</string> <key>com.apple.print.ticket.modDate</key> <date>2003-07-01T17:49:36Z</date> <key>com.apple.print.ticket.stateFlag</key> <integer>1</integer> </dict> </array> </dict> <key>com.apple.print.PaperInfo.PMUnadjustedPageRect</key> <dict> <key>com.apple.print.ticket.creator</key> <string>com.apple.print.pm.PostScript</string> <key>com.apple.print.ticket.itemArray</key> <array> <dict> <key>com.apple.print.PaperInfo.PMUnadjustedPageRect</key> <array> <real>0.0</real> <real>0.0</real> <real>734</real> <real>576</real> </array> <key>com.apple.print.ticket.client</key> <string>com.apple.printingmanager</string> <key>com.apple.print.ticket.modDate</key> <date>2007-05-23T01:31:45Z</date> <key>com.apple.print.ticket.stateFlag</key> <integer>0</integer> </dict> </array> </dict> <key>com.apple.print.PaperInfo.PMUnadjustedPaperRect</key> <dict> <key>com.apple.print.ticket.creator</key> <string>com.apple.print.pm.PostScript</string> <key>com.apple.print.ticket.itemArray</key> <array> <dict> <key>com.apple.print.PaperInfo.PMUnadjustedPaperRect</key> <array> <real>-18</real> <real>-18</real> <real>774</real> <real>594</real> </array> <key>com.apple.print.ticket.client</key> <string>com.apple.printingmanager</string> <key>com.apple.print.ticket.modDate</key> <date>2007-05-23T01:31:45Z</date> <key>com.apple.print.ticket.stateFlag</key> <integer>0</integer> </dict> </array> </dict> <key>com.apple.print.PaperInfo.ppd.PMPaperName</key> <dict> <key>com.apple.print.ticket.creator</key> <string>com.apple.print.pm.PostScript</string> <key>com.apple.print.ticket.itemArray</key> <array> <dict> <key>com.apple.print.PaperInfo.ppd.PMPaperName</key> <string>US Letter</string> <key>com.apple.print.ticket.client</key> <string>com.apple.print.pm.PostScript</string> <key>com.apple.print.ticket.modDate</key> <date>2003-07-01T17:49:36Z</date> <key>com.apple.print.ticket.stateFlag</key> <integer>1</integer> </dict> </array> </dict> <key>com.apple.print.ticket.APIVersion</key> <string>00.20</string> <key>com.apple.print.ticket.privateLock</key> <false/> <key>com.apple.print.ticket.type</key> <string>com.apple.print.PaperInfoTicket</string> </dict> <key>com.apple.print.ticket.APIVersion</key> <string>00.20</string> <key>com.apple.print.ticket.privateLock</key> <false/> <key>com.apple.print.ticket.type</key> <string>com.apple.print.PageFormatTicket</string> </dict> </plist> 8BIMí������H�����H����8BIM&���������������?€��8BIM ��������x8BIM��������8BIMó����� ���������8BIM �������8BIM'����� ��������8BIMõ�����H�/ff��lff�������/ff��¡™š�������2����Z���������5����-��������8BIMø�����p��ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿè����ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿè����ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿè����ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿè��8BIM��������8BIM�����������������������8BIM0����� �8BIM-���������8BIM����������@��@����8BIM���������8BIM����ö���������������null������baseNameTEXT����U�s�e�r�����boundsObjc���������Rct1�������Top long��������Leftlong��������Btomlong��� ����Rghtlong��� ���slicesVlLs���Objc��������slice������sliceIDlong�������groupIDlong�������originenum��� ESliceOrigin��� autoGenerated����Typeenum��� ESliceType����Img ���boundsObjc���������Rct1�������Top long��������Leftlong��������Btomlong��� ����Rghtlong��� ���urlTEXT���������nullTEXT���������MsgeTEXT��������altTagTEXT��������cellTextIsHTMLbool���cellTextTEXT�������� horzAlignenum���ESliceHorzAlign���default��� vertAlignenum���ESliceVertAlign���default��� bgColorTypeenum���ESliceBGColorType����None��� topOutsetlong������� leftOutsetlong������� bottomOutsetlong������� rightOutsetlong����8BIM(����� ���?ð������8BIM������8BIM��������8BIM!�����U��������A�d�o�b�e� �P�h�o�t�o�s�h�o�p����A�d�o�b�e� �P�h�o�t�o�s�h�o�p� �C�S�3����8BIM"����.MM�*������������������b�������j(�������1�������r2�������‡i�������¤���Ð� ü€��'� ü€��'Adobe Photoshop CS3 Macintosh�2007:05:22 18:37:24�� ����ÿÿ�� �������  ������� ��������������������������&(�������������.���������������H������H���8BIM ����îmopt�����������������������������������������d�������������������ÿËËË����ÿÿÿÿ����ÿÿÿÿ����ÿÿÿÿ����ÿÿÿÿ��������ÿ���ÿ���ÿ���ÿ���ÿ���ÿ���ÿ���ÿ���ÿ���ÿ���ÿ���ÿ���ÿ���ÿ���ÿ���ÿ���ÿ���ÿ���ÿ���ÿ���ÿ���ÿ���ÿ���ÿ���ÿ���ÿ���ÿ���ÿ���ÿ���ÿ���ÿ���ÿ���ÿ���ÿ���ÿ���ÿ���ÿ���ÿ���ÿ���ÿ���ÿ���ÿ���ÿ���ÿ���ÿ���ÿ���ÿ���ÿ���ÿ���ÿ���ÿ���ÿ���ÿ���ÿ���ÿ���ÿ���ÿ���ÿ���ÿ���ÿ���ÿ���ÿ���ÿ���ÿ���ÿ���ÿ���ÿ���ÿ���ÿ���ÿ���ÿ���ÿ���ÿ���ÿ���ÿ���ÿ���ÿ���ÿ���ÿ���ÿ���ÿ���ÿ���ÿ���ÿ���ÿ���ÿ���ÿ���ÿ���ÿ���ÿ���ÿ���ÿ���ÿ���ÿ���ÿ���ÿ���ÿ���ÿ���ÿ���ÿ���ÿ���ÿ���ÿ���ÿ���ÿ���ÿ���ÿ���ÿ���ÿ���ÿ���ÿ���ÿ���ÿ���ÿ���ÿ���ÿ���ÿ���ÿ���ÿ���ÿ���ÿ���ÿ���ÿ���ÿ���ÿ���ÿ���ÿ���ÿ���ÿ���ÿ���ÿ���ÿ���ÿ���ÿ���ÿ���ÿ���ÿ���ÿ���ÿ���ÿ���ÿ���ÿ���ÿ���ÿ���ÿ���ÿ���ÿ���ÿ���ÿ���ÿ���ÿ���ÿ���ÿ���ÿ���ÿ���ÿ���ÿ���ÿ���ÿ���ÿ���ÿ���ÿ���ÿ���ÿ���ÿ���ÿ���ÿ���ÿ���ÿ���ÿ���ÿ���ÿ���ÿ���ÿ���ÿ���ÿ���ÿ���ÿ���ÿ���ÿ���ÿ���ÿ���ÿ���ÿ���ÿ���ÿ���ÿ���ÿ���ÿ���ÿ���ÿ���ÿ���ÿ���ÿ���ÿ���ÿ���ÿ���ÿ���ÿ���ÿ���ÿ���ÿ���ÿ���ÿ���ÿ���ÿ���ÿ���ÿ���ÿ���ÿ���ÿ���ÿ���ÿ���ÿ���ÿ���ÿ���ÿ���ÿ���ÿ���ÿ���ÿ���ÿ���ÿ���ÿ���ÿ���ÿ���ÿ���ÿ���ÿ���ÿ���ÿ���ÿ���ÿ���ÿ���ÿ���ÿ���ÿ���ÿ���ÿ���ÿ���ÿ���ÿ���ÿ���ÿ���ÿ���ÿ���ÿ���ÿ���ÿ���ÿ���ÿ���ÿ���ÿ���ÿ���ÿ���ÿ��������������l�����������TargetSettings�������ClrTObjc�������� ColorTable�������ClrsVlLs�������isExactbool�����MttCObjc�������� NativeQuad�������Bl long���Ë����Grn long���Ë����Rd long���Ë����Trnsbool���� addMetadatabool��� autoReducebool����colorTableControlObjc��������ColorTableControl������ lockedColorsVlLs������� shiftEntriesVlLs�������ditherAlgorithmenum���DitherAlgorithm����Dfsn��� ditherPercentlong���d��� fileFormatenum��� FileFormat���GIF��� interlacedbool����lossylong������� noMatteColorbool��� numColorslong������reductionAlgorithmenum���ReductionAlgorithm����Sele���rolloverMasterPalettebool����transparencyDitherAlgorithmenum���DitherAlgorithm����None���transparencyDitherAmountlong���d���webShiftPercentlong������� zonedDitherObjc�������� ZonedInfo������ channelIDlongÿÿÿÿ��� emphasizeTextbool����emphasizeVectorsbool����floorlong�������zonedHistogramWeightObjc�������� ZonedInfo������ channelIDlongÿÿÿÿ��� emphasizeTextbool����emphasizeVectorsbool����floorlong������� zonedLossyObjc�������� ZonedInfo������ channelIDlongÿÿÿÿ��� emphasizeTextbool����emphasizeVectorsbool����floorlong����8BIM¡����–mset�����������null������HTMLBackgroundSettingsObjc��������null������BackgroundColorBluelong���ÿ���BackgroundColorGreenlong���ÿ���BackgroundColorRedlong���ÿ���BackgroundColorStatelong�������BackgroundImagePathTEXT��������UseImageAsBackgroundbool���� HTMLSettingsObjc��������null������AlwaysAddAltAttributebool��� AttributeCaselong������ CloseAllTagsbool����Encodinglong�������EscapeDoubleByteURLCharsbool���FileSavingSettingsObjc��������null��� ���CopyBackgroundbool����DuplicateFileNameBehaviorlong������HtmlFileNameComponentsVlLs���long���long���long���long���long���long������ImageSubfolderNameTEXT����i�m�a�g�e�s����� IncludeXMPbool����NameCompatibilityObjc��������null������ NameCompatMacbool����NameCompatUNIXbool���NameCompatWindowsbool���OutputMultipleFilesbool����SavingFileNameComponentsVlLs��� long���long���long���long���long���long���long���long���long������SliceFileNameComponentsVlLs���TEXT����I�m�g�_��long���long���long���long���long������UseImageSubfolderbool���UseLongExtensionsbool����GoLiveCompatiblebool����ImageMapLocationlong������ ImageMapTypelong�������IncludeCommentsbool���IncludeZeroMarginsbool���Indentlongÿÿÿÿ��� LineEndingslong������ OutputXHTMLbool����QuoteAllAttributesbool���SpacersEmptyCellslong�������SpacersHorizontallong������SpacersVerticallong������ StylesFormatlong������ TDWidthHeightlong������TagCaselong������UseCSSbool���UseLongHTMLExtensionbool���MetadataOutputSettingsObjc��������null������ AddCustomIRbool���AddEXIFbool����AddXMPbool����AddXMPSourceFileURIbool����WriteMinimalXMPbool����WriteXMPToSidecarFilesbool����Versionlong����8BIM¢�����ms4w���8BIM£����ømaniIRFR��ì8BIMAnDs��Ì������������null�������AFStlong��������FrInVlLs��� Objc���������null�������FrIDlong9ŽfP����FrDllong��� Objc���������null�������FrIDlong@õÔ����FrDllong��� Objc���������null�������FrIDlongAè4@����FrDllong��� Objc���������null�������FrIDlongB¢����FrDllong��� Objc���������null�������FrIDlongBK÷����FrDllong��� Objc���������null�������FrIDlongB‚Ø����FrDllong��� Objc���������null�������FrIDlongB´Ý����FrDllong��� Objc���������null�������FrIDlongBê÷w����FrDllong��� Objc���������null�������FrIDlongC!UÃ����FrDllong��� ����FStsVlLs���Objc���������null�������FsIDlong��������AFrmlong�������FsFrVlLs��� long9ŽfPlong@õÔlongAè4@longB¢longBK÷longB‚ØlongB´ÝlongBê÷wlongC!UÃ����LCntlong������8BIMRoll�����������8BIM¤�����mfri��������� ������������+H��+� ����������� ��� �ÿÿ���6�����w����w����w8BIMnormÿ����Ü�������(��ÿÿ��ÿÿ��ÿÿ��ÿÿ��ÿÿ��ÿÿ��ÿÿ��ÿÿ��ÿÿ��ÿÿLayer 18BIMluni�������L�a�y�e�r� �1��8BIMlnsr���layr8BIMlyid������8BIMclbl������8BIMinfx�������8BIMknko�������8BIMlspf�������8BIMlclr�����������8BIMshmd��è���8BIMmlst������Ô������������null�������LaIDlong�������LaStVlLs��� Objc���������null�������FrLsVlLs���long9ŽfPObjc���������null�������FrLsVlLs���long@õÔObjc���������null�������FrLsVlLs���longAè4@Objc���������null�������FrLsVlLs���longB¢Objc���������null�������FrLsVlLs���longBK÷Objc���������null�������FrLsVlLs���longB‚ØObjc���������null�������FrLsVlLs���longB´ÝObjc���������null�������FrLsVlLs���longBê÷wObjc���������null�������FrLsVlLs���longC!UÃ8BIMfxrp������������������������������ ��� �ÿÿ���6�����w����w����w8BIMnormÿ����ø�������(��ÿÿ��ÿÿ��ÿÿ��ÿÿ��ÿÿ��ÿÿ��ÿÿ��ÿÿ��ÿÿ��ÿÿLayer 28BIMluni�������L�a�y�e�r� �2��8BIMlnsr���layr8BIMlyid������8BIMclbl������8BIMinfx�������8BIMknko�������8BIMlspf�������8BIMlclr�����������8BIMshmd�����8BIMmlst������ð������������null�������LaIDlong�������LaStVlLs��� Objc���������null�������enabbool�����FrLsVlLs���long9ŽfPObjc���������null�������enabbool����FrLsVlLs���long@õÔObjc���������null�������FrLsVlLs���longAè4@Objc���������null�������FrLsVlLs���longB¢Objc���������null�������FrLsVlLs���longBK÷Objc���������null�������FrLsVlLs���longB‚ØObjc���������null�������FrLsVlLs���longB´ÝObjc���������null�������FrLsVlLs���longBê÷wObjc���������null�������FrLsVlLs���longC!UÃ��8BIMfxrp������������������������������ ��� �ÿÿ���6�����w����w����w8BIMnormÿ����ø�������(��ÿÿ��ÿÿ��ÿÿ��ÿÿ��ÿÿ��ÿÿ��ÿÿ��ÿÿ��ÿÿ��ÿÿLayer 38BIMluni�������L�a�y�e�r� �3��8BIMlnsr���layr8BIMlyid������8BIMclbl������8BIMinfx�������8BIMknko�������8BIMlspf�������8BIMlclr�����������8BIMshmd�����8BIMmlst������ð������������null�������LaIDlong�������LaStVlLs��� Objc���������null�������enabbool�����FrLsVlLs���long9ŽfPObjc���������null�������FrLsVlLs���long@õÔObjc���������null�������enabbool����FrLsVlLs���longAè4@Objc���������null�������FrLsVlLs���longB¢Objc���������null�������FrLsVlLs���longBK÷Objc���������null�������FrLsVlLs���longB‚ØObjc���������null�������FrLsVlLs���longB´ÝObjc���������null�������FrLsVlLs���longBê÷wObjc���������null�������FrLsVlLs���longC!UÃ��8BIMfxrp������������������������������ ��� �ÿÿ���6�����w����w����w8BIMnormÿ����ø�������(��ÿÿ��ÿÿ��ÿÿ��ÿÿ��ÿÿ��ÿÿ��ÿÿ��ÿÿ��ÿÿ��ÿÿLayer 48BIMluni�������L�a�y�e�r� �4��8BIMlnsr���layr8BIMlyid������8BIMclbl������8BIMinfx�������8BIMknko�������8BIMlspf�������8BIMlclr�����������8BIMshmd�����8BIMmlst������ð������������null�������LaIDlong�������LaStVlLs��� Objc���������null�������enabbool�����FrLsVlLs���long9ŽfPObjc���������null�������FrLsVlLs���long@õÔObjc���������null�������FrLsVlLs���longAè4@Objc���������null�������enabbool����FrLsVlLs���longB¢Objc���������null�������FrLsVlLs���longBK÷Objc���������null�������FrLsVlLs���longB‚ØObjc���������null�������FrLsVlLs���longB´ÝObjc���������null�������FrLsVlLs���longBê÷wObjc���������null�������FrLsVlLs���longC!UÃ��8BIMfxrp������������������������������ ��� �ÿÿ���6�����w����w����w8BIMnormÿ����ø�������(��ÿÿ��ÿÿ��ÿÿ��ÿÿ��ÿÿ��ÿÿ��ÿÿ��ÿÿ��ÿÿ��ÿÿLayer 58BIMluni�������L�a�y�e�r� �5��8BIMlnsr���layr8BIMlyid������8BIMclbl������8BIMinfx�������8BIMknko�������8BIMlspf�������8BIMlclr�����������8BIMshmd�����8BIMmlst������ð������������null�������LaIDlong�������LaStVlLs��� Objc���������null�������enabbool�����FrLsVlLs���long9ŽfPObjc���������null�������FrLsVlLs���long@õÔObjc���������null�������FrLsVlLs���longAè4@Objc���������null�������FrLsVlLs���longB¢Objc���������null�������enabbool����FrLsVlLs���longBK÷Objc���������null�������FrLsVlLs���longB‚ØObjc���������null�������FrLsVlLs���longB´ÝObjc���������null�������FrLsVlLs���longBê÷wObjc���������null�������FrLsVlLs���longC!UÃ��8BIMfxrp������������������������������ ��� �ÿÿ���6�����w����w����w8BIMnormÿ����ø�������(��ÿÿ��ÿÿ��ÿÿ��ÿÿ��ÿÿ��ÿÿ��ÿÿ��ÿÿ��ÿÿ��ÿÿLayer 68BIMluni�������L�a�y�e�r� �6��8BIMlnsr���layr8BIMlyid������8BIMclbl������8BIMinfx�������8BIMknko�������8BIMlspf�������8BIMlclr�����������8BIMshmd�����8BIMmlst������ð������������null�������LaIDlong�������LaStVlLs��� Objc���������null�������enabbool�����FrLsVlLs���long9ŽfPObjc���������null�������FrLsVlLs���long@õÔObjc���������null�������FrLsVlLs���longAè4@Objc���������null�������FrLsVlLs���longB¢Objc���������null�������FrLsVlLs���longBK÷Objc���������null�������enabbool����FrLsVlLs���longB‚ØObjc���������null�������FrLsVlLs���longB´ÝObjc���������null�������FrLsVlLs���longBê÷wObjc���������null�������FrLsVlLs���longC!UÃ��8BIMfxrp������������������������������ ��� �ÿÿ���6�����w����w����w8BIMnormÿ����ø�������(��ÿÿ��ÿÿ��ÿÿ��ÿÿ��ÿÿ��ÿÿ��ÿÿ��ÿÿ��ÿÿ��ÿÿLayer 78BIMluni�������L�a�y�e�r� �7��8BIMlnsr���layr8BIMlyid������ 8BIMclbl������8BIMinfx�������8BIMknko�������8BIMlspf�������8BIMlclr�����������8BIMshmd�����8BIMmlst������ð������������null�������LaIDlong��� ����LaStVlLs��� Objc���������null�������enabbool�����FrLsVlLs���long9ŽfPObjc���������null�������FrLsVlLs���long@õÔObjc���������null�������FrLsVlLs���longAè4@Objc���������null�������FrLsVlLs���longB¢Objc���������null�������FrLsVlLs���longBK÷Objc���������null�������FrLsVlLs���longB‚ØObjc���������null�������enabbool����FrLsVlLs���longB´ÝObjc���������null�������FrLsVlLs���longBê÷wObjc���������null�������FrLsVlLs���longC!UÃ��8BIMfxrp������������������������������ ��� �ÿÿ���6�����w����w����w8BIMnormÿ����ø�������(��ÿÿ��ÿÿ��ÿÿ��ÿÿ��ÿÿ��ÿÿ��ÿÿ��ÿÿ��ÿÿ��ÿÿLayer 88BIMluni�������L�a�y�e�r� �8��8BIMlnsr���layr8BIMlyid������ 8BIMclbl������8BIMinfx�������8BIMknko�������8BIMlspf�������8BIMlclr�����������8BIMshmd�����8BIMmlst������ð������������null�������LaIDlong��� ����LaStVlLs��� Objc���������null�������enabbool�����FrLsVlLs���long9ŽfPObjc���������null�������FrLsVlLs���long@õÔObjc���������null�������FrLsVlLs���longAè4@Objc���������null�������FrLsVlLs���longB¢Objc���������null�������FrLsVlLs���longBK÷Objc���������null�������FrLsVlLs���longB‚ØObjc���������null�������FrLsVlLs���longB´ÝObjc���������null�������enabbool����FrLsVlLs���longBê÷wObjc���������null�������FrLsVlLs���longC!UÃ��8BIMfxrp������������������������������ ��� �ÿÿ���6�����w����w����w8BIMnormÿ����ø�������(��ÿÿ��ÿÿ��ÿÿ��ÿÿ��ÿÿ��ÿÿ��ÿÿ��ÿÿ��ÿÿ��ÿÿLayer 98BIMluni�������L�a�y�e�r� �9��8BIMlnsr���layr8BIMlyid������8BIMclbl������8BIMinfx�������8BIMknko�������8BIMlspf�������8BIMlclr�����������8BIMshmd�����8BIMmlst������ð������������null�������LaIDlong�������LaStVlLs��� Objc���������null�������enabbool�����FrLsVlLs���long9ŽfPObjc���������null�������FrLsVlLs���long@õÔObjc���������null�������FrLsVlLs���longAè4@Objc���������null�������FrLsVlLs���longB¢Objc���������null�������FrLsVlLs���longBK÷Objc���������null�������FrLsVlLs���longB‚ØObjc���������null�������FrLsVlLs���longB´ÝObjc���������null�������FrLsVlLs���longBê÷wObjc���������null�������enabbool����FrLsVlLs���longC!UÃ��8BIMfxrp���������������������������������øÿøÿøÿøÿøÿøÿøÿøÿøÿøÿøÿøÿøÿ��ÞÝÞàãäåãááÞÝÞâåææäåáÞÝßãçèèçãßÝÝàäçèèæâÝÛÜàåèççäßÚÙÛàäãæåáÜØ×ÚßÞâäãÞÙÕÕÙ×ÝáâßÚÔÑÒÏÔÛÞÞÛÕÏÍÉÌÒØÛÚÖÐËÅÅÈÎÓÕÔÐÉÃÀÁÄÊÍÏÍÈ��éèèêìííìêêèçèëíîîìíêèçéìîïïîëéççéìîïîíêçåæéìîííëçäãäèëêìëéåááãçæéêéæâßßâßäçèæáÝÚÛØÜáääáÜØÖÓÕÚßááÝØÔÐÏÒ×ÛÝÜØÓÍÊËÎÒÕÖÕÑ��÷ö÷÷øøøø÷÷ööö÷øùùø÷öõõõ÷øøø÷öôôôõö÷÷÷öôóòòôõ÷õõôòððñòôóôôòðîîïñðòóòðîììîëîððïíêèéåèëííëèåäàâåéêêçäáÞÞàãæçæäàÛÚÚÜßáâáÞ��������������øÿøÿøÿøÿøÿøÿøÿøÿøÿøÿøÿøÿøÿ��ÝÞàãäåãáÞÞÝÞâåææäááÞÝßãçèèåãßÝÝàäçèçæâÝÛÜàåèèçäßÚÙÛàäçæåáÜØ×ÚßãâäãÞÙÕÕÙÞÝáâßÚÔÑÒ×ÔÛÞÞÛÕÏÍÏÌÒØÛÚÖÐËÉÅÈÎÓÕÔÐÉÅÀÁÄÊÍÏÍÈÃ��èèêìííìêéèçèëíîîìêêèçéìîïïíëéççéìîïîíêçåæéìîîíëçäãäèëíìëéåááãçêéêéæâßßâæäçèæáÝÚÛßÜáääáÜØÖØÕÚßááÝØÔÓÏÒ×ÛÝÜØÓÐÊËÎÒÕÖÕÑÍ��ö÷÷øøøø÷÷ööö÷øùùø÷öõõõ÷øøø÷öôôôõö÷÷÷öôóòòôõ÷÷õôòððñòôõôôòðîîïñóòóòðîììîðîððïíêèéëèëííëèåäåâåéêêçäáàÞàãæçæäàÞÚÚÜßáâáÞÛ��������������øÿøÿøÿøÿøÿøÿøÿøÿøÿøÿøÿøÿøÿ��ÞàãäåãáÞÝÝÞâåææäáÞÞÝßãçèèåáßÝÝàäçèçãâÝÛÜàåèèæäßÚÙÛàäççåáÜØ×ÚßãæäãÞÙÕÕÙÞâáâßÚÔÑÒ×ÝÛÞÞÛÕÏÍÏÔÒØÛÚÖÐËÉÌÈÎÓÕÔÐÉÅÅÁÄÊÍÏÍÈÃÀ��èêìííìêéèçèëíîîìêèèçéìîïïíêéççéìîïîëêçåæéìîîíëçäãäèëííëéåááãçêìêéæâßßâæéçèæáÝÚÛßäáääáÜØÖØÜÚßááÝØÔÓÕÒ×ÛÝÜØÓÐÏËÎÒÕÖÕÑÍÊ��÷÷øøøø÷÷ööö÷øùùø÷öõõõ÷øøø÷öôôôõö÷÷÷öôóòòôõ÷÷öôòððñòôõõôòðîîïñóôóòðîììîðòððïíêèéëîëííëèåäåèåéêêçäáàâàãæçæäàÞÞÚÜßáâáÞÛÚ��������������øÿøÿøÿøÿøÿøÿøÿøÿøÿøÿøÿøÿøÿ��àãäåãáÞÝÞÞâåææäáÞÝÝßãçèèåáÞÝÝàäçèçãßÝÛÜàåèèæâßÚÙÛàäççäáÜØ×ÚßãæåãÞÙÕÕÙÞâäâßÚÔÑÒ×ÝáÞÞÛÕÏÍÏÔÛØÛÚÖÐËÉÌÒÎÓÕÔÐÉÅÅÈÄÊÍÏÍÈÃÀÁ��êìííìêéèèèëíîîìêèççéìîïïíêèççéìîïîëéçåæéìîîíêçäãäèëííëéåááãçêìëéæâßßâæéêèæáÝÚÛßäçääáÜØÖØÜáßááÝØÔÓÕÚ×ÛÝÜØÓÐÏÒÎÒÕÖÕÑÍÊË��÷øøøø÷÷ö÷ö÷øùùø÷ööõõ÷øøø÷öõôôõö÷÷÷öôóòòôõ÷÷öôòððñòôõõôòðîîïñóôôòðîììîðòóðïíêèéëîðííëèåäåèëéêêçäáàâåãæçæäàÞÞàÜßáâáÞÛÚÚ��������������øÿøÿøÿøÿøÿøÿøÿøÿøÿøÿøÿøÿøÿ��ãäåãáÞÝÞàâåææäáÞÝÞßãçèèåáÞÝÝàäçèçãßÝÛÜàåèèæâÝÚÙÛàäççäßÜØ×ÚßãæåáÞÙÕÕÙÞâäãßÚÔÑÒ×ÝáâÞÛÕÏÍÏÔÛÞÛÚÖÐËÉÌÒØÓÕÔÐÉÅÅÈÎÊÍÏÍÈÃÀÁÄ��ìííìêéèèêëíîîìêèçèéìîïïíêèççéìîïîëéçåæéìîîíêçäãäèëííëçåááãçêìëéæâßßâæéêéæáÝÚÛßäçèäáÜØÖØÜáäááÝØÔÓÕÚßÛÝÜØÓÐÏÒ×ÒÕÖÕÑÍÊËÎ��øøøø÷÷ö÷÷÷øùùø÷öööõ÷øøø÷öõõôõö÷÷÷öôôòòôõ÷÷öôóððñòôõõôòðîîïñóôôòðîììîðòóòïíêèéëîððíëèåäåèëíêêçäáàâåéæçæäàÞÞàãßáâáÞÛÚÚÜ��������������øÿøÿøÿøÿøÿøÿøÿøÿøÿøÿøÿøÿøÿ��äåãáÞÝÞàãåææäáÞÝÞâãçèèåáÞÝßàäçèçãßÝÝÜàåèèæâÝÛÙÛàäççäßÚØ×ÚßãæåáÜÙÕÕÙÞâäãÞÚÔÑÒ×ÝáâßÛÕÏÍÏÔÛÞÞÚÖÐËÉÌÒØÛÕÔÐÉÅÅÈÎÓÍÏÍÈÃÀÁÄÊ��ííìêéèèêìíîîìêèçèëìîïïíêèçééìîïîëéççæéìîîíêçåãäèëííëçäááãçêìëéåâßßâæéêéæáÝÚÛßäçèæáÜØÖØÜáääáÝØÔÓÕÚßáÝÜØÓÐÏÒ×ÛÕÖÕÑÍÊËÎÒ��øøø÷÷ö÷÷øøùùø÷ööö÷÷øøø÷öõõõõö÷÷÷öôôôòôõ÷÷öôóòðñòôõõôòðîîïñóôôòðîììîðòóòðíêèéëîððïëèåäåèëííêçäáàâåéêçæäàÞÞàãæáâáÞÛÚÚÜß��������������øÿøÿøÿøÿøÿøÿøÿøÿøÿøÿøÿøÿøÿ��åãáÞÝÞàãäææäáÞÝÞâåçèèåáÞÝßãäçèçãßÝÝààåèèæâÝÛÜÛàäççäßÚÙ×ÚßãæåáÜØÕÕÙÞâäãÞÙÔÑÒ×ÝáâßÚÕÏÍÏÔÛÞÞÛÖÐËÉÌÒØÛÚÔÐÉÅÅÈÎÓÕÏÍÈÃÀÁÄÊÍ��íìêéèèêìíîîìêèçèëíîïïíêèçéììîïîëéççééìîîíêçåæäèëííëçäãáãçêìëéåáßßâæéêéæâÝÚÛßäçèæáÜØÖØÜáääáÝØÔÓÕÚßááÜØÓÐÏÒ×ÛÝÖÕÑÍÊËÎÒÕ��øø÷÷ö÷÷øøùùø÷ööö÷øøøø÷öõõõ÷ö÷÷÷öôôôõôõ÷÷öôóòòñòôõõôòððîïñóôôòðîììîðòóòðîêèéëîððïíèåäåèëííëçäáàâåéêêæäàÞÞàãæçâáÞÛÚÚÜßá��������������øÿøÿøÿøÿøÿøÿøÿøÿøÿøÿøÿøÿøÿ��ãáÞÝÞàãäåæäáÞÝÞâåæèèåáÞÝßãççèçãßÝÝàäåèèæâÝÛÜààäççäßÚÙÛÚßãæåáÜØ×ÕÙÞâäãÞÙÕÑÒ×ÝáâßÚÔÏÍÏÔÛÞÞÛÕÐËÉÌÒØÛÚÖÐÉÅÅÈÎÓÕÔÍÈÃÀÁÄÊÍÏ��ìêéèèêìííîìêèçèëíîïïíêèçéìîîïîëéççéììîîíêçåæéèëííëçäãäãçêìëéåááßâæéêéæâßÚÛßäçèæáÝØÖØÜáääáÜØÔÓÕÚßááÝØÓÐÏÒ×ÛÝÜÕÑÍÊËÎÒÕÖ��ø÷÷ö÷÷øøøùø÷ööö÷øùøø÷öõõõ÷ø÷÷÷öôôôõöõ÷÷öôóòòôòôõõôòððñïñóôôòðîîìîðòóòðîìèéëîððïíêåäåèëííëèäáàâåéêêçäàÞÞàãæçæáÞÛÚÚÜßáâ��������������øÿøÿøÿøÿøÿøÿøÿøÿøÿøÿøÿøÿøÿ��áÞÝÞàãäåãäáÞÝÞâåææèåáÞÝßãçèèçãßÝÝàäçèèæâÝÛÜàåäççäßÚÙÛàßãæåáÜØ×ÚÙÞâäãÞÙÕÕÒ×ÝáâßÚÔÑÍÏÔÛÞÞÛÕÏËÉÌÒØÛÚÖÐÉÅÅÈÎÓÕÔÐÈÃÀÁÄÊÍÏÍ��êéèèêìííììêèçèëíîîïíêèçéìîïïîëéççéìîîîíêçåæéìëííëçäãäèçêìëéåááãâæéêéæâßßÛßäçèæáÝÚÖØÜáääáÜØÔÓÕÚßááÝØÓÐÏÒ×ÛÝÜØÑÍÊËÎÒÕÖÕ��÷÷ö÷÷øøøøø÷ööö÷øùùø÷öõõõ÷øø÷÷öôôôõö÷÷÷öôóòòôõôõõôòððñòñóôôòðîîïîðòóòðîììéëîððïíêèäåèëííëèåáàâåéêêçäàÞÞàãæçæäÞÛÚÚÜßáâá�����8BIMPatt����8BIMFMsk��� ��ÿÿ�������2����������������������������������������øÿøÿøÿøÿøÿøÿøÿøÿøÿøÿøÿøÿøÿøÿøÿøÿøÿøÿøÿøÿøÿøÿøÿøÿøÿøÿøÿøÿøÿøÿøÿøÿøÿøÿøÿøÿøÿøÿøÿ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000205�00000000000�011562� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/themes/tundra/images/tabHover.png��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/t0000644�0000000�0000000�00000000232�11360615644�027224� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������‰PNG  ��� IHDR������(���°Ô ���tEXtSoftware�Adobe ImageReadyqÉe<���<IDATxÚ”ÌA À0 AEùÿ“ëJ]¹å0^°ÁüRuw… Å_ù©£Aß Iù•á9ðô·»´�‰Þ8˜vk¨����IEND®B`‚����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000214�00000000000�011562� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/themes/tundra/images/progressBarAnim.gif�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/t0000644�0000000�0000000�00000005100�11360615644�027223� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������GIF89a�y�Ä�ìììíííâââÞÞÞàààßßßÔÔÔÕÕÕØØØÖÖÖ×××ëëëÛÛÛÙÙÙÝÝÝÜÜÜáááÚÚÚäääêêêåååãããîîîèèèæææéééïïïççç������������!ÿ NETSCAPE2.0���!ù���,�����y��ÿ ¢ L!’T !#Ò8Dݘ9Qƒü3CÄP*†¯Ñˆ ˜TZ<zL'tJµö"Æ@•^6•ÂÃ.U6—x\¢v1Â[ž¹Hk4ˆˆO‡‰,‘“‰– ¥¥ž¬£¦§ªµo ¹¹–³¢¤�Ã� ¨¿À¯ÄÅÇ+ÀÂÄÆ¨+¸ß�)Û6‡ àá7)çó F6Céôõ gŒÙ0€ 5Xp`Áƒ öÁgæaB…&Œ›" "Âz¹t¼rcEƒ$3ÿš„c1¢J‘-?¾äcHš(]Þ<éÑæÊ‘:Ö, 3§Ì,ú,Ú“(Φ3y¦D ô¨P¥N¥e:õ*TªC£&ýêµ+×­OͦEë+C|m›¾-BÐíDºCçä'^¸»8øú³ðƾ~~â3L ñ<‹;þW8…$oà�°sg¹[S &\0BA‚"Ô ‹A@„N£n`âݯcŸ>@[š6 pÖÍÛ„¶mÁsï}¸pݳÿN>|7óéÏ—KGžÝúvçʽûæ>úxðÕÍ7§ûÀ ß–*‚ØîáËo^ÿ¾û÷ñͧnþå –@ÿ 0@À;6è Ä} 6ø m6@!ƒBX.È჌éð€† Žð€Œ-r " °¢aC¸ø‚*²ˆƒ0�AÃE,’„> Q„;(ñƒ ?)¤’EIÄ“D2idIV„”H¹dG⃄’Y<QÆU\ÁDfr†kjqfj–¹ibÁæhÂiçœoªÙÆgž‘Æ`„A(GhÔ‘¨d0z(ŠFjF£ˆj)˜RêrøáèyìGrz€zª€¬Aj«|ø몥º «ª³šúª­¼²ê뮲²j%¤*!5l¢# Rˆ³•@;6³ÇR²H#×N‹ì¶ÑbK-¸Ý6û­µÒš«­µ™1î%@âî·ðÆ+ 5¡çI¼\èf*û†��!ù���,�����y��ÿ  HR%L„(,Â%cäD ¢7Da@ ¥â`äv=Ìf¹¬ ¸F#2€(™'T:­^7—lᑊDøÂ¾HÆås¡²¾dÜ™Áxèz=‚ƒ'†UŒ‘’>¤iœž ¢® ³³—¬¹t�½�  Ä§¼¾ÀÂÄÆœ¾¿Á&" Ú�$Ó²ÛÜ2$1Œï Bë”îðòaB3Øj°Ð ¼� $x‡ÞÁ„˜àÉ3…ãQÄr1¢ÆŠK:.œ Ä‘-ÿžÌH’ãJ‰)C¾üè�F˜%E²ŒiҦǖ*}¢Ì9¨L¡;‰"ÅYó&Í NöŒÊS'S¨?«ÕºôéQªJÁ6Í–ìØ¡g3t¨dæÚ »¾}(·!\^ùÞq³{[Þx øÉøá`Áþ²ÞGoð5Åú7Nœm�têHP äiÁ„ ýì‘wƒ€ X} B3{¡P«fÝ €€p½ÚÀÚ·§åÞº÷oÛ¸uó¦\¸òẫ‹{>Û7ðäÄ«—>|¹õæÓ³¿î\|tìÞ‡[AêD˜ƒ»ýûøó×—Øí>~úÂÙçŸ|0ØSƒî%€ÿ °N 6à‚ >HA„2è c5< ¡‚0Ø„@±B øàX‰*° �)Ž(&º£AÌXÄð€c„ì¨C=ü�¤ F 飑@™$?6‰$Kæè$•IÀŠP~ÑÄQtaY€Écb¡E˜hzYæR´Iæšgz1§™qÚ’d˜qF_„Q~¢!@ |Æa(¢ƒöiÆ¢%Zhu°ñ†£rÐÑÆä±GÔÁ©§|€ª)£êQª§Ú‡ª|°*꫟ʺ)­«†ÚH ê"»b"‰@�¬%…R챂«¬"•4›,±Ð;-)"Õ";,¶ÆF;ȵËz›Á%£d2‰¸äB¢ am¸I&Æ,¢¦(ê:à`�!ù���,�����y��ÿ`ÁDˆb"L!’TA5HÝ8Dí˜ë04Ž‚)ö*ƒÇ¬Ñˆ ˜tƒA*™ÍgtZ-<F‘c Øn.=/X\¨œ/ð„àø2‚~Él(u8‰‚OˆŠŒŽ’”Š‹U¢§U ®¥¨©—¬¶n º ©U0¤¦�Ä� ª¿0ÂÅÆÈÉ+ÃÅÇr.¹ß�-:ˆ àá Tå-”ó í<éôõ�‹TŠlhfAƒA þá32@ÁƒõRM9Cð Â�§ {h0¢!bü(e£EMÿŠÌX2dÇ‘)]^dIÑáI˜ m®$Y“ãLž*_Ò ú3¦N¡@e¢ÌésiË£E™ÞªçÓ¦V{NM Õ©ÖF±Ríš•¨W³e•* E-@†n ŒË¶aÓµ ÷É£goá"zûõ͘ß{„©ž7Ã_Å{ÛaŽS:p�ÐP~×-*^"$8` ô9R š´é** `=º´°hÛ6»µmÜ*vKè]ûupmÃi»¾[8ñåÀu#þ»ùtåÕóÆn\úvßÝsg®=y£H¡øóé×·ßý½zùî¯Ã¿Ï>?o@ —@ 0@€9:¼àÿ€ˆ  6 `ƒVöÂ2XàI�%œðÀ&~H‚ 0â_Dx"Š*’ȃ‡?À ›ÑC @Ôpã:ÒØ£9!¤8a$H¹d>&dP©#V,‘U‘„–NpÉE–X„i–_–©E—d2a&›iº¹æ˜j„!f QAaŒQ†F]|a§Ÿyº¡€î)hŸx*ŸlìÁ‡t؇oôAiw\*©¦spzGŸúª¥¤fjj¥¦ÊǪ¢zªê¦¨XI"Œ2H!9ܺ ‚Âë!ä,!†øjì®É ,³½:««°ÍZò,!µÑZ‹I$šp¢í#ÜN¢ìpàrK 5|\P(™8Pa—!��;����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000204�00000000000�011561� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/themes/tundra/images/dndCopy.png���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/t0000644�0000000�0000000�00000001411�11360615640�027220� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������‰PNG  ��� IHDR���������óÿa���sRGB�®Îé���tEXtSoftware�Adobe ImageReadyqÉe<��žIDAT8Ë“ëK“aÆïMwð�nnºæ!çærŠ#·¥ls‘!BÚÔ55\•B³DÉ4­\sâ!ÍÙÁ„Be& 9gч ³òKü#üÞãêÙœª îOïû»îÓs””L¤¢€Ò~„Ó»KPr£™u©)ýö ¨ˆB ãuxº=‰ž¸ôÕ‰úõZ4|ªEóº¥=¨„BÑÁ¥žþþî­6ØBf”ÐyµÐ ä£p®�ª™<¨^…yþ4ø&~x¿ Ë›>×£ò­ Ö`9ª*±+ãŒ9ϳéÏ@ê£hýj>Z “„LõcvÜd™Ï1øLÈòÝ›]qƒ¶×!{,…tB‚¤a1xCIkH™‰†SÛ8û®¶5+ÊÞP´p77Üq×û¤Œ%C<"ßÇy"Ÿ<lv£‚»ó³–µ2 ‡e´ §|zÜ^Ù« }Ñ uo>´}ˆÚ ‡ò1“ó •v³i_DÕ뽞ÿ%å ä%ÌÈÐ}ö5h]¿úßÖùŠhÂ&fMÎ96.@;«ÁÝÍø·&1úmÁßÁ8°ôk ýýð|ñ eµtƒ„d'q$4R ™­¯ðUr§³!ŸJ‡xTÇŠ#nP½X ê£ð>íÌ€µbfCLÌ#“Ù_Œc³ÈyÆv=™¤1œ+θ}Ùzc°¨‹…*ö´¥ ²,!ó§C2ž†D_*æm{=ÏY÷°5ÊwRD<d¹øaÝ 5„l×</Ûu?ÁµêŠF´ôÌ‹À—)Lüƒ÷ÀL”. ©<i w€Xxc=÷”WXfÞácŠ+YG&E r;8yAÆBq‹¸ÌZ ¤êŸó7ʤÜÞ'n����IEND®B`‚�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000176�00000000000�011571� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/themes/tundra/images/i.gif���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/t0000644�0000000�0000000�00000000060�11360615640�027217� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������GIF89a��€�¿¿¿���!ù���,�������Œ©ë �;��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000207�00000000000�011564� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/themes/tundra/images/titleBarBg.gif������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/t0000644�0000000�0000000�00000000141�11360615632�027220� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������GIF89a��³��õõõööö÷÷÷ôôôøøøùùùóóóÿÿÿúúú���������������������!ù�����,�������É)‹%Xˆ�ƒ!�;�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000212�00000000000�011560� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/themes/tundra/images/tabCloseHover.png���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/t0000644�0000000�0000000�00000000334�11360615636�027230� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������‰PNG  ��� IHDR��� ��� ���Vu\ç���sRGB�®Îé���tEXtSoftware�Adobe ImageReadyqÉe<���qIDAT(Ïcøÿÿ?—w,â Þį x;TL¦¦Øˆ7�ñ$g Ö�5ŸbdM² P+Á‚ °ûȸ"40@݉¢�D#³‘4lg€zÃT,ŠAøYHvÉž&-XIŽ8R“�]Ä„Ìîox����IEND®B`‚����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000200�00000000000�011555� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/themes/tundra/images/noX.gif�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/t0000644�0000000�0000000�00000000120�11360615632�027215� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������GIF89a � �‘��RRR+++���ÿÿÿ!ù���,���� � ��!œ'! dæ­:¥xåd- ‰¤gvÌ6~Ãf¤]B�;������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000215�00000000000�011563� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/themes/tundra/images/calendarDayLabel.png������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/t0000644�0000000�0000000�00000000241�11360615632�027221� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������‰PNG  ��� IHDR���������—Tx���tEXtSoftware�Adobe ImageReadyqÉe<���CIDATÁÃ0!”¹þ;ίáUÀ’`]àM…×®ÓóÚÔºTÏî"Y°ëä±þ¡×rEowV•÷Z…Ë*ààž9Dõõu¤����IEND®B`‚���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000224�00000000000�011563� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/themes/tundra/images/preciseSliderThumbFocus.png�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/t0000644�0000000�0000000�00000000431�11360615632�027222� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������‰PNG  ��� IHDR���������ísO/���sRGB�®Îé��� cHRM��z%��€ƒ��ùÿ��€é��u0��ê`��:˜��o’_ÅF��� pHYs�� �� �šœ���’IDAT8Ë­ÒK à …a7œt& Y@K7â²DÅN[…s©m"å¶/8ðü#Ų\ê/Dûq¿ÿJ)ݾ߿‚ûÈ9³P ¥ÄB# B,ðÞ³P�¶íVsSíÎð”Rkí!Œ_7âùˆc¿ßÿ ²®×ªµîÚùh|@DJÙ§DfãæŠøÙ†����IEND®B`‚���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000226�00000000000�011565� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/themes/tundra/images/radioButtonActiveDisabled.png���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/t0000644�0000000�0000000�00000001005�11360615642�027221� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������‰PNG  ��� IHDR���������;Ö•J���sRGB�®Îé���tEXtSoftware�Adobe ImageReadyqÉe<��šIDAT8Ë“»jQ†…@ mªT©„´y€@Ú@Ú´i…<CZ±‹`@ÁT[ˆ`´£ºÞ/¬®w@ ˜Ì?슷X¤øX˜™ïœ³ÿžu‘ã¿ìÒéô)ãbž˜ëyÇœ”yàù,•JÔh4¨Ýn˳P(×Mæz¯ÌÇr¹L†aÐl6Û¡ÕjaoævCæÂU>Ÿq4Én©TŠâñ8%“Iê÷ûRo6›X௶.«º®Óp8¤b±HŠ¢P"‘ P(Dn·›ü~¿ˆèãt<ïA0?¦iJ3а3d‹Å3Nò›-_är99V­V#ÇC‘HDä`0¸’½^¯Ì Ès[>Ïf³4™L¨Ûí®†·ñù|2ƒÓ±3±å#„0%Õp8¼WVUUú½^òëz`Ïl±XH²@`CDØ}+0׺|Î|àØËå’¦Ó©¤Ž,ªÕªÔ@½^‡¨3ÇÛ—ä†ùÂ7žÏç;T*ˆãüëz^2Ä•š¦Q&“¨0g k§õs€ûmÉæ&°üYº½d����IEND®B`‚���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000227�00000000000�011566� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/themes/tundra/images/splitContainerSizerV-thumb.png��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/t0000644�0000000�0000000�00000000201�11360615644�027220� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������‰PNG  ��� IHDR���������Úœ s���sRGB�®Îé���tEXtSoftware�Adobe ImageReadyqÉe<���IDATÓcøõëײeËþÿÿÏ0Y�qÙ•hŒÈ^õ����IEND®B`‚�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000221�00000000000�011560� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/themes/tundra/images/treeExpand_minus_rtl.gif��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/t0000644�0000000�0000000�00000000322�11360615636�027225� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������GIF89a��Ä�èèèßßß���ÅÅÅYYYÆÆÆÊÊÊ...ÔÔÔöööÙÙÙýýýÐÐÐúúú›››‰‰‰ÿÿÿ���������������������������������������������!ù���,�������O`$Ždižhª®ëã¾ðs:LmÛ²é |ßç%‡bH$IŽ€Ò0hÇ‘� ®jTäHx¿ßmÄÑ(›ÍbÇbÍf§!ðx<í¨Ûלּ~/ �;��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000212�00000000000�011560� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/themes/tundra/images/doubleArrowUp.png���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/t0000644�0000000�0000000�00000000236�11360615642�027226� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������‰PNG  ��� IHDR��� ��� ���à‘���sRGB�®Îé���tEXtSoftware�Adobe ImageReadyqÉe<���3IDAT(Ïcüÿÿ?2`ddüÿÿÿFd1&tÈ4†"t d>&¼›º ��™ ¬–¶;����IEND®B`‚������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000220�00000000000�011557� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/themes/tundra/images/sliderEmptyVertical.png���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/t0000644�0000000�0000000�00000000130�11360615632�027216� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������‰PNG  ��� IHDR���������ÔTR¯���sRGB�®Îé���IDATÓcøîܹÃ@€�+™—±Üº����IEND®B`‚����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000204�00000000000�011561� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/themes/tundra/images/loading.gif���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/t0000644�0000000�0000000�00000001357�11360615634�027234� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������GIF89a��Ä�çççýýýõõõíííúúúþþþûûûëëëùùùðððêêêèèèÿÿÿñññóóóîîîôôôöööéééüüü÷÷÷òòòìììïïïøøøæææÿÿÿ���������������!ÿ NETSCAPE2.0���!ù ���,�������h &Ždižhª®lë–Q"'TÚGS&YŸU©Ao°óý‚∺å”=æK›Õ¦Ø¬0ö�¢€`L˜º^°áÍÎm5Ûû.¡òvt÷åépi"sF{#}_ƒzx"‘[”•,!�!ù ���,�������€ &Ždižhª®i¼oö°dfßÙ@ø­‹†Çà!@õl? `kÉeóÙK‡ÅÓ1·¹`ÌYwLîNh4¡0†ôQÀ‘¨W'7<ÜY%z7|~6€yoq†ˆŠ&ƒ6…‡$“…  %§¦le«¬­&!�!ù ���,�������” &Ždižhª®i!8P쌦dxž™¤g‚‚æðÃñ|ºà°¸+õ~JbñJÔ¤•i* `Å‚R»MK ‚Zˆƒ¸|ÀªÛao˜Ôðƒ n#B' 9†"(Ž’ � —8‘$ ž¡&b �› Œ&º¶x¾¿ÀÁx!�!ù���,�������ž &Ždižhª®ìÉAg@ MbÐ(’à"q"  €‚ÂЙhôQ´H‘fà"V¯Y'·K5R@xÛÍ”K†Æ``¹ ´ƒö›ÄÍD8-|ŠŠMˆŽ*’“ �m( w"˜š( Q4£m( Qª¬](@³™­'0ª«¼µŽ´RÉÊË%!�;���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000221�00000000000�011560� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/themes/tundra/images/tooltipConnectorDown.gif��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/t0000644�0000000�0000000�00000000263�11360615632�027225� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������GIF89a��„����ÿÿÿÛåîv¥Ê|©Ì~ªÍ~«Í‹³Òœ½×¡ÁÙªÇݵÍ߯ÙçÌÛçßéñéîòæíòìììÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ!ù���,�������0à÷Qiš†¨Íy¦ª8¸%¯‹ËÀ÷èò=¤�Q½^!rHFçHJ­Z¯XU�;���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000206�00000000000�011563� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/themes/tundra/images/dndNoMove.png�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/t0000644�0000000�0000000�00000001245�11360615634�027230� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������‰PNG  ��� IHDR���������óÿa���sRGB�®Îé���tEXtSoftware�Adobe ImageReadyqÉe<��:IDAT8Ë“ßKQÇ¿3ëþpk×­5üQiˆ”ÔCm)=VÒÃBAÕCAQYI=dA!AA“ôCÓ¿ ¶Öˆ ÊZª…Ý~(³ BI+ óíÜiƦÍ|¸gιç{Ï\ÎI¸�­]À!ÔLÕ6S1¨2%v[r½ûÀÚÀȺ-,÷X<s–ÓÉÝü¹+É_ûösúD'ß´$¬kÐúe¯ÏS4HqôÌ®KœÚ¶ƒ…e,46Ñ”u²u3§æxà N®jáÄÎ${à{çŠÀ€†ËÀÀhMÇê—rtI-'Ö'h›eÉw ÇTNpýok7°[:±ö›^._É/ñ8ó±ÍÕk8k"‹Æìœ"WõÇÿ*¤"‹­=r'8-M|ßÞÁl8ÌÏuõüÇDàc¨’Ù›O•Ž¿0ÂÜ¢8;åbaèþÂxS3³¢:§‰ˆ«Tb&áoi>ƒ0s‘(çm"ò¶¢‚#‚è÷mµ™»}óx¥k|­ë¼)S€š^Èü쓹Dн÷9ãAÍȰì}!\Lz߃LI \Ä’ÓH¬œgBZ8&‹ í‘Ïgÿ'N›W«êà¡Ð.c#€vL{6)‘R>o·›rNK;9w=%Ã×Ç@P;êÞŸ ™ê¸í;±s@F½ÙÇ䊨N gÓs§À‹úÿ“rrµS\þíß‘¶ÚÊÅ^� Ý’¾"\_bÆVûóN×nÝoNŠ<Ãi3d����IEND®B`‚�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000206�00000000000�011563� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/themes/tundra/images/checkmark.png�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/t0000644�0000000�0000000�00000012631�11360615632�027227� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������‰PNG  ��� IHDR���À������@âp(��� pHYs�� �� �šœ�� OiCCPPhotoshop ICC profile��xÚSgTSé=÷ÞôBKˆ€”KoR RB‹€‘&*! Jˆ!¡ÙQÁEEÈ ˆŽŽ€ŒQ, Š Øä!¢Žƒ£ˆŠÊûá{£kÖ¼÷æÍþµ×>ç¬ó³ÏÀ –H3Q5€ ©BàƒÇÄÆáä.@ $p�³d!sý#�ø~<<+"À¾�xÓ �ÀM›À0‡ÿêB™\€„Àt‘8K€�@zŽB¦�@F€˜&S� �`Ëcbã�P-�`'æÓ�€ø™{�[”! ‘� eˆD�h;�¬ÏVŠE�X0�fKÄ9�Ø-�0IWfH�°·�ÀÎ ²� �0Qˆ…)�{�`È##x�„™�FòW<ñ+®ç*��x™²<¹$9E[-qWW.(ÎI+6aaš@.Ây™24àóÌ�� ‘àƒóýxήÎÎ6޶_-ê¿ÿ"bbãþåÏ«p@��át~Ñþ,/³€;€mþ¢%îh^  u÷‹f²@µ� éÚWópø~<<E¡¹ÙÙåääØJÄB[aÊW}þgÂ_ÀWýlù~<ü÷õà¾â$2]GøàÂÌôL¥Ï’ „bÜæGü· ÿüÓ"ÄIb¹X*ãQqŽDšŒó2¥"‰B’)Å%Òÿdâß,û>ß5�°j>{‘-¨]cöK'XtÀâ÷��ò»oÁÔ(€hƒáÏwÿï?ýG %�€fI’q��^D$.Tʳ?Ç��D *°AôÁ,ÀÁÜÁ ü`6„B$ÄÂBB d€r`)¬‚B(†Í°*`/Ô@4ÀQh†“p.ÂU¸=púažÁ(¼ AÈa!ÚˆbŠX#Ž™…ø!ÁH‹$ ɈQ"K‘5H1RŠT UHò=r9‡\Fº‘;È�2‚ü†¼G1”²Q=Ô µC¹¨7„F¢ Ðdt1š ›Ðr´=Œ6¡çЫhÚ>CÇ0Àè3Äl0.ÆÃB±8, “c˱"¬ «Æ°V¬»‰õcϱwEÀ 6wB aAHXLXNØH¨ $4Ú 7 „QÂ'"“¨K´&ºùÄb21‡XH,#Ö/{ˆCÄ7$‰C2'¹I±¤TÒÒFÒnR#é,©›4H#“ÉÚdk²9”, +È…ääÃä3ää!ò[ b@q¤øSâ(RÊjJåå4åe˜2AU£šRݨ¡T5ZB­¡¶R¯Q‡¨4uš9̓IK¥­¢•Óhh÷i¯ètºÝ•N—ÐWÒËéGè—èôw †ƒÇˆg(›gw¯˜L¦Ó‹ÇT071ë˜ç™™oUX*¶*|‘Ê •J•&•*/T©ª¦ªÞª UóUËT©^S}®FU3Sã© Ô–«UªPëSSg©;¨‡ªg¨oT?¤~Yý‰YÃLÃOC¤Q ±_ã¼Æ c³x,!k «†u5Ä&±ÍÙ|v*»˜ý»‹=ª©¡9C3J3W³Ró”f?ã˜qøœtN ç(§—ó~ŠÞï)â)¦4L¹1e\kª–—–X«H«Q«Gë½6®í§¦½E»YûAÇJ'\'GgÎçSÙSݧ §M=:õ®.ªk¥¡»Dw¿n§î˜ž¾^€žLo§Þy½çú}/ýTýmú§õG X³ $Û Î<Å5qo</ÇÛñQC]Ã@C¥a•a—á„‘¹Ñ<£ÕFFŒiÆ\ã$ãmÆmÆ£&&!&KMêMîšRM¹¦)¦;L;LÇÍÌÍ¢ÍÖ™5›=1×2ç›ç›×›ß·`ZxZ,¶¨¶¸eI²äZ¦Yî¶¼n…Z9Y¥XUZ]³F­­%Ö»­»§§¹N“N«žÖgðñ¶É¶©·°åØÛ®¶m¶}agbg·Å®Ã“}º}ý= ‡Ù«Z~s´r:V:ޚΜî?}Åô–é/gXÏÏØ3ã¶Ë)ÄiS›ÓGgg¹sƒóˆ‹‰K‚Ë.—>.›ÆÝȽäJtõq]ázÒõ›³›Âí¨Û¯î6îiî‡ÜŸÌ4Ÿ)žY3sÐÃÈCàQåÑ? Ÿ•0k߬~OCOgµç#/c/‘W­×°·¥wª÷aï>ö>rŸã>ã<7Þ2ÞY_Ì7À·È·ËOÃož_…ßC#ÿdÿzÿÑ�§€%g‰A[ûøz|!¿Ž?:Ûeö²ÙíAŒ ¹AA‚­‚åÁ­!hÈì­!÷ç˜Î‘Îi…P~èÖÐaæa‹Ã~ '…‡…W†?ŽpˆXÑ1—5wÑÜCsßDúD–DÞ›g1O9¯-J5*>ª.j<Ú7º4º?Æ.fYÌÕXXIlK9.*®6nl¾ßüíó‡ââ ã{˜/È]py¡ÎÂô…§©.,:–@LˆN8”ðA*¨Œ%òw%Ž yÂÂg"/Ñ6шØC\*NòH*Mz’쑼5y$Å3¥,幄'©¼L LÝ›:žšv m2=:½1ƒ’‘qBª!M“¶gêgæfvˬe…²þÅn‹·/•Ék³¬Y- ¶B¦èTZ(×*²geWf¿Í‰Ê9–«ž+Íí̳ÊÛ7œïŸÿíÂá’¶¥†KW-X潬j9²<qyÛ ã+†V¬<¸Š¶*mÕO«íW—®~½&zMk^ÁÊ‚Áµkë U å…}ëÜ×í]OX/Yßµaú†>‰Š®Û—Ø(Üxå‡oÊ¿™Ü”´©«Ä¹dÏfÒféæÞ-ž[–ª—æ—n ÙÚ´ ßV´íõöEÛ/—Í(Û»ƒ¶C¹£¿<¸¼e§ÉÎÍ;?T¤TôTúT6îÒݵa×ønÑî{¼ö4ìÕÛ[¼÷ý>ɾÛUUMÕfÕeûIû³÷?®‰ªéø–ûm]­NmqíÇÒý#¶×¹ÔÕÒ=TRÖ+ëGǾþïw- 6 UœÆâ#pDyäé÷ ß÷ :ÚvŒ{¬áÓvg/jBšòšF›Sšû[b[ºOÌ>ÑÖêÞzüGÛœ4<YyJóTÉiÚé‚Ó“gòÏŒ•}~.ùÜ`Û¢¶{çcÎßjoïºtáÒEÿ‹ç;¼;Î\ò¸tò²ÛåW¸Wš¯:_mêtê<þ“ÓOÇ»œ»š®¹\k¹îz½µ{f÷éž7ÎÝô½yñÿÖÕž9=ݽózo÷Å÷õßÝ~r'ýÎË»Ùw'î­¼O¼_ô@íAÙC݇Õ?[þÜØïÜjÀw óÑÜG÷…ƒÏþ‘õC™Ë† †ëž8>99â?rýéü§CÏdÏ&žþ¢þË®/~øÕë×Îјѡ—ò—“¿m|¥ýêÀë¯ÛÆÂƾÉx31^ôVûíÁwÜwï£ßOä| (ÿhù±õSЧû“““ÿ˜óüc3-Û���gAMA��±Ž|ûQ“��� cHRM��z%��€ƒ��ùÿ��€é��u0��ê`��:˜��o’_ÅF�� ´IDATxÚìš{L[×Ç¿¾~\®ŸÄ. 5°ƒ) ¥ŠÖNª&Š¢Àp@ŠºNM]B¤²4©ò mWÚ¨jª¤!i”´ )¥QšUkË’Ò&ÒĪ0i…µ€)Æ ƒÁ6÷cãçþHpl°±‰C–©ùIG²Î=ÏÑýýÎý«±±1€Û´;v°šššn›¯®®fõ÷÷ß6Ÿ›››0ÿòÛÝ6ä¥gæqßþ§Æ€ÒÒÒeƒííí¡Ž¼l¾©©)øûX6?11qÇø#/=»lþå·?ºc<‹u+öØíö2š¦óœN§Œ¢(‹D"é‰Dm555'æÛ{’oii©òù|›½^o¡ÏçKc³Ù£§‹Íf©ÑhÎEâeë·{uÇž™YgcŸÍs͹eI$Ï"ñ{…|ªmÿ[õ-=ÍùÚÛöÌ:]e‡3oÎí–‘<žE  zùTR[ýé ‹x�$×Ks¹\HJJúÉÎãæ)¤ÊW¯ÈŸ?>Ëb±Ô“$Y¾~ýz"332™ ‹%E¯×?¡Ó銎?¾Q&“ÕjµÚ¡{oooWÌÍͽ!´R©”H$ ( N§ó!š¦²Z­šK—.ýŠ$Ƀ¥¥¥Æ…üé7wfY§íõ$SþðºB©cU²¶i{ŠÁh~bpØXôæ¾m¥É¢Ú¯^¤_··:‹ffêy\nyvf:±&5±43“26>ù„aÄT´«ú©±°öÐ;MCa_€ÐŽff³§N¡C‡=óù|wÅÍf3ärùÿßxú?|} ï_¸„#u»Vdü‹¥¾  `KQQ‚ÖËårÈårlذèèèØÒÝÝ �÷?77÷†B¡¨R(aþÄçóÁçó‘ššJÆ*£Ñ�ÛòÖi{}¾*cËã…¹ ˆ[üj©«¥<’÷3¢³«ËwÃõif¦~]Vú–õ«@„è¯JcU²9ë2‰žï¶ü0t=Œ+�L&6mÚ„×_=b[Ç“ÐËýF³þþ~deeEl¿”ÅêÿõÑ lÝ~�µ/<±m¢ãohhØC’dù¼ó}þùçèêêÂää$RRRPXXˆŠŠ Á`0”744ìp"É‚ˆ›ïëëÃÀÀ�FGG‘––•JµZ•oii©Ú…Îj, … Ãh[ZZ®8šö<Nù¼ów÷ ãú¸v§"ŠƒôT) Ôx¼0×ÇÌåÇ^ݦ_»sÛ—[¾ÐùÃÆÏbaýÃ*˜&,åµ;·yb¾sÑŠÇãV«…ÉdBVVV°>Ôü~ÿ²ËB^ª ÁívƒÇãë–ÃG*ËéÿΗcbÒ‚Œô5ûŸèøív{YNNA.^¼ˆææf Âf³appÍÍ͸xñ"‚@NNa·ÛË¢ñKY<|__®\¹ƒÁ�ǃÁ€+W® ¯¯/*ïóù6K¥R"ÖDÊb± •J ŸÏ·9´~fÖY–¡ ‚…o{õèÒ`Üæ€Ã5‡q›]º|Û«A°¡ ffaú³NW™ríƒCŸ`± \û 1ëtù˜PWW‡žž|ñÅ(((ˆ�‰:àRí&''a·Û‘ŸŸ[|¢úu‡Ыûþxú~¡þùŠèÓ4—™™ �¸zõ*L&Ìfs°˜L&\½z�™™ š¦ó¢ñ±,?00°(¥óù|ˆÊ{½ÞB‰D—¾D"×ë- ­cì³yJÅÔ¶_o´Ã{H™v¸Ð¯7�” 9ûl˜¾ÃáÌ[“š—þšÔ8μ¨)ÐÔÔx<Äb1:::ÐØØˆ“'ObãÆ ¥0KÙÂ1ÔŒF#T*Õ’m–z¶ÜÌ2mËH@¡ó_ßá£Ïþ‚Ãu»ñËGó¢Ž3Ññ;N™L&�tvvÂår-jc³ÙnìxÈdp:²h|,‹ÅŽŽFäæë#ñ>Ÿ/¢¨¸ô)Š‚ÏçK Û\™sËV%‹��ú1<ÞÅkªY§ûfN/‚kΦ?çvË$ba|(bÎ}‹û|ýõר°a>üðCx<¼øâ‹Ðh4¨ªªZôeX©X§ÓÁáp àÇ„\.—˽í|9ú»Ö…âÊçññŸÿŠ@ €W½‹ÍÅñÛ-O®¨>EQ‹ÅœaCgÿù2?C[,Pe‰ÆÇ±Ø^’OKK‹ÈÍ×GâÙlö¨ÓéŒ7ØÁf³Ã¢,‰äYlÓö‹^qRØì?_V‹oì>Ú¦íH"yaú$g¡™™¸ôif$ï �ǃ .`jj gΜÁ±cÇ`³Ùpôèш©ÑJ¬ÆÇÇáñx022‚™™x½^Èåò„R˜å¬>kù Û4Îý©'?Å4mÇÁÏÇì¢ã—H$½z½� Ñhàr¹@Ót°¸\.h4š3¤^‰DÒe±x•J6›•J•çp8]4MÇç€4 ‡ÓZ'ñ{ F3� @µ>¯Î9O°ø¼^¨Ö� F3Ä"~˜¾@@õŽOÆ¥?6> €ê]�$Iâ“O>ÁÑ£G111ÇãàÁƒHKK‹�wj–ËåÈÎΆÛíÆððpp×g¥`¾î½ÃðÆ˜§¬8ñþÇ8°K ™D¸âú"‘¨M§Óùý~?´Z-Ξ=‹’’ðù|”””àìÙ³ÐjµðûýÐét~‘HÔ•jÆâÕj5Š‹‹¡T*Áår¡T*Q\\ µZ•g³Ù_Z­V¬T0ÀjµúÙlö—¡õB>Õ68lôûý<öÈ:<½éQ¨3ä ¹¨3äxzÓ£xì‘uðû6ú…|*LŸO%µFL~ } �ÈÉϧ’Ú€ ˆ`Ùµköïßüü|TWW‡= -+•q8(•J…BqW àw•%xaûSP¯ËÂÖßüú®è×ÔÔœ°Ùl­˜‚Ë—/ÃápàòåËAçïèè€Ífk =‘ÄGsþxyµZÊÊJìÞ½•••AçÆk4šs Ü7K®“ŒF#†9z" �ûßúàÄ4ãhíìêÇ|ì~æIœzå)ì~æÉ ówvõcšq´†ž@ýé '˜GkÏ÷ˆþ@�=߀™q´†žs�€Ëå†ßQ9rÏ=÷\ܧ¾‰.BŸÏGzzú];á]ØÿÝÕ[ñt妸Çu'Æ/“Éj»»»a0ÊsrrBOb¡×ë¡Óéü6›­U&“ÕÞ‹<I’o:øÂ“`Ð4 «Õêgæ<I’#ñÒdQíwø>f.ÏÎP„žÃ`4cpØèŸf­ÒdQm”ÅmíC×aš°”+×>zŒ±ñIFL~fÆÑ* kÝZ˜ó@nnnÜ/Ïív'ôòcí_¯4©ÿb÷¸?�ܼ^PqæÌ™½ß|óMi{{{Ø]¡Pؾoß¾wîUþæõ†í---׆‰x¨²²ò\4þæõ†Šú?TïýG·®ô«¿w…ÝPIí¯¿Uÿæõ†Šý¿ß¶·§o°ôÚ?ÿvˆJJj·éÓE<ëþmÐû·AÊÆJtû¾Ý·ÿgûï�‡Í/Ù³ÁäR����IEND®B`‚�������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000215�00000000000�011563� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/themes/tundra/images/sliderThumbFocus.gif������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/t0000644�0000000�0000000�00000000330�11360615640�027217� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������GIF89a��Ä�����ÿÿÿeewjjzmm|ˆˆ—““¢¬üüü÷÷÷õõõôôôóóóòòòðððïïïîîîìììæææÿÿÿ������������������������������������!ù���,�������Uà$di’Â4Aë¾í1pí’Rì|Ÿ“‰ p8$)ŽÈd’´h:ŸOcJ­VI¬v»%9¾àp˜ô(›ÏgdÍn·I‘¸|>' ’¼~Ÿ7 T'v!�;��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000207�00000000000�011564� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/themes/tundra/images/editor_rtl.gif������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/t0000644�0000000�0000000�00000007571�11360615632�027236� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������GIF89aô�æ�Që9YÆAn¾ÍÒÌ?£>SLI5™4³Äíw’Ü,+ÌÙõóóó¥¢ ¯ @@@111Æüüüƒƒ‚ÑllÝÝÝQƒÊGh̘ʘržëwvoÿ±°R„Êøùù`†ï½½¼êïúQqÑÉÇÆb~ÔM±Lööö…¥é«¹ÛîíícedbÆai˜êÿÌÌ—­äU~Ú‡·ˆýä1zèá>>Áº{ µêõøýu¨zÿÊ#ßåö興k´ÖŽŽçÁÁN¥ímÊòÐHH«¤eo޳žØŠ³Ü$WìÊ--t²]�ÿl—¥ýò•ÊÉ‚ƒÆ'öë÷ºÅدЮtœËûüþïí%Lwõ øÐË·ùXvÒö žâ�ZœMrÔ˜ÀÉOÙcí.Ô�êÿÖÞþû:tÜ̑ВÈQ¶|²WÌÉEüúذ-ev£Ê•¼ý÷÷ì­ð¹çÏÚAAE†ãÖQ|ûœÿkŽüúíìÍÓæ”骽•À­“ÿÍ´Í€ÿƒRƒÊ†”¾×•ÿÒÍ�óýççç'Œ&ÿÿÿÿÿÿ!ù���,����ô��ÿ€‚‚…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ ¡¢ŸHH£§¨©ª˜„«’ ±²²š ¸¸~®½¾¿ÀÁÂÃÄŘ¥H6ÆËÌž¶¹º¼Š­Í~ ~ÙÚ×ÞßÞ…¶LL&é ÓÔÍð›�ñôõóø®Pö†¥l¼Pö¯ ½qåÎ¥3±®¢w‘ü,ÙqFŒ˜9u–HC$€Ç@Ì@4àIlRªlÐm[6…H𡠦Ʌ °pb‚Ä"ˆŒp@X‘h>‹$R´ˆQc"¥/fÜhð�}‚hÝʵë�H�tXdÂ#ˆ'UU…Ki­¤«ùÿ°Ž*@—”~è>tC_‰& Jà‹+V@“ GʃùPåCÜDµÐM*­ ]Sk=´¡Bë °7´–]!æÌš7sî왨#? À€I3eÊA>t óß"X ÒƒÊë, péæŸؼé¢É&@€ÄqøÐw" è8„ƒ{DÀ…7Ž\ù¡üÃw\rÒôaàöÁ‰j ~%H‚"WThá…à`!*ø�<Èe 9Y H)¤8Â`@0Âhˆ‹T¸âŠ)æXˆ9ª¸b‹/&PÈ=Þh!B^"ÿ>"ˆÈ’B¨ˆ> Be“X:ÉHIÈ`×]ý$‘D‹¼1ÄC "¬à¦›vØ@Ôi'4†ÉcÎýe¢&óˆ˜Hs~éY¡‚Ašg¾Ñˆ( ݈%N—w.epH˜nSÛwáwAy祷ÞC”pn¸‘GQ‚>!ÀX ë3  ÀŸ‚ÌâÄËAv‹8Ý Â7ÜDž ÔPxÔÚ[$ħ Ý‘Èä–[.¬²Òzˆª¬ºŠî¬µfé¡&—vºM.rVbè/‚%Ö"¾² ‚"~ð¡ð 3lHÃ/ìPG,NÿÅ?B�‹ˆ¸ÕÖÀ‘ìˈȎÈÛ—]šû€ 2Œ™ˆgî{•£†L ÁÍÀÙÈÆD€aI{ÁxjÉ­ ì:C D›I”yt€Ó@ú‘!oÈÌ(`ŠD§�‡|p!Ôk¯¦†làm³Ý!›Ÿ>­´.Pk-¶Úâ#;´Ñi,±„q%� 3ýGÒ� ;øÀ ”O@Ääȳ/ ²@ÑÖmmBÔ „ üÔŠPñá ˆÞþRãRn; <0¸¬†Ò÷ßï^øá˜¼É¥W$¯| BÌ D ~à[IÛ„ õÚ¼‰_ƒV%rñüGÿÏß—œåÉb²¬~Ëb’)¡•¤ÙB %´�� 5ÛŒó |«HÏâ3„ € Ù@W9)Z&¸QìH;DÒG�̯~g²Ÿ•Q§_‚{u²T²A�L¡­œâwÔ¶ÏnT.]é\pºÔboˆp€w¨ÃB( =È X`4?ˆÀ p.ŒÂ‡ÀG·È\!¶ã’o4ë 8�bX·,° N°–> : ħXÄâCì`æâƒ¹ñà ‚‡<ô!…èÏÉóF  !ì*ÒsÄ„BÀÈF:²‘ÚËÄ uDGÀE1’"bä" ÝHÿG…0Ò% 0‰QI“Š…Æ A=•ð£" °¹o¨Ï}Vº ¾�€ñ%¸_Íú‡³œõo�¬�ˆð&DËÓ‰H  šŽÀ&6m5*B 4DK°™Ì��_`à aLŒ‚˜ä*I¶zUˆ;8¡ R(›×ÌfmžÓ"]àE0Šž†Àá!À d ÃU€à¢ )÷w\è€ðÙAGO EAPqà –å9&ø¥u PÔÝP8Í©P\÷‡3*ññÁ#@ÐN•èúЈN´xUú dyˆ¥àF,ÿ2¥!2Àô RNPè½DŽìC†(€±BP,¶+’ð"�X�¡‹¨X"0Ö°‡eLz]¦>VI>EÈÕ° ƒ\(±XE4ÉSåIµ!€[ °*Pçð'ˆ³m"æþŽ™ˆdv‡jæ ˜@iV‚F¦¤‘li¤ÙF¶Š€ÆV”€‚�8@!hàY6ð "𤠍 ÜÎÖõ®–z¿J˜ÏM­ SœºCK_êÄ@3­A Ö€*H8�¸p(R¥ …§Zf1‰)Á rÅÑØ7>+°¯}Kúe1ë ðΠd�‚ ŒS`iìiÿ| ÀSD aÂòqÄBð�¢<”½O=/zÕû/€8JRšªŠ©J1¾.l«~(B†"̪a|‚Y£ú¨¥!ÈEsW¨&ÈJ!R„ÁW>Æ>P™…M”Œ¬¥)oƒ(~¬U8$¯IuÅTM«²®³,ËB =àAˆ8ÛÙ(°\üÓßÍâ\ÚñµÌQí€V†h*.B ´ o²ˆmBÂж*÷ €ß‚Qh® *¨‚ãj!Bt> ‚,Yqe#a ñÉšµÅ¦nk @±H`O p‚b'4€‰å`)¸`P*hÁD�@7X ó²Ýÿ¸0þ à$@i@›à�Z±/$Ðàœ Üf�„)¼ PXhh#dçÆF<ÀЀ!xíë;êºôþ5•µYz=!�/‚f†(zùšRcÿP�8üáx‘qXC € ÄfÄ(3ÉqTþ㰵ъf„É`ÉY5eÇ“”J¹’”O,b٢؅×–ZD¿AK€Ãç2ø pù4§+ÄÅÀrB+gœù¯/·ŠÍóì+] ¤ }V`&‚=l »¸}DØmÕ̰¹¶~ÀÀfxÜ\ Àé\<ã–ÒÆ¨3e]{ÁÍs×Îö ø@kÿø àF¸õ†ë8þñèBì`„ʫ؊ûU‘ÍÁ(,>P˜³«mÅÍ9ËA`€ÂŒ‚< /�P�áž:¢@¸ pÔq1à‘<å-ÇÇC^ø•7ÂåûøG€;à9 q>=†y`a×_ØÄ+aX`Ñ{u±Âü*~ò»Øü|•:"¢ÞdL„ù´Do€@¢kAfú¸Á ¸Æ¦8æÿ‡À~Ë4(Í„�Ò‚uàg¡à+Fr×s`sˆv(*�~€�*ðg 0›‘KûòvaÓ}݇Þç}j~§OÀO°Ñ‚ªÖBÀ¨§z|Àz´æt!ÿ{´Çxæqà�V°U0„)À˜w“´yÐ� @¡·FGAÎ6m¡·RÞað5ª×z0x8Õ` Dwitn‹€{&°#.Šð�¿·{„CX)P+àƒ@(„Dh„û&%ÇóV „¨ƒXˆJ@}ŠÖ‡} ³}“0IX`¢Ñ~o‘è °”Œpe’uà�Šô÷e˜OovmÒt7ót‰ïCvu² €�  (e¨Ð}"Q3�*@5@\ ``WX� l0‰•XOÚ@f)=Ö¥B.Á)0¸…Ð… ‡´VxcHt eÿ0 ±°‡\ÀEpËñŒ»Â+ PT KH;�…ú¨8�…ÎÖ�à`‰@&€Pè�*óz²Gbˆpnñ1‡ðQpô{z A˜Žë( åhŽè¨Žì˜e<– õ"#¤ fµPƒ @.ù’/É� s4gSÓÐŒ°r1¢r#`çÓ<éq‹ $,—×12·ˆ›8%håXC¹´10Š¥ˆ}‘ŠlÒ&o¢3†€”>S€~Þ¶�vrv—�¢4óøgr "`µ+TÐ-À[⤑pÐ߇—€“:y- “0¹x(7®Ñÿ˜-øw‚@I¹1ð�‡ ykæ…G:pM’À¦¤Yš€wÁ¢ª©šÎæ àV˜…†àÀm ä’Sd¸7gôˆÐFB•8àŠ…�‡ö )šà™Ÿ™Ešቘp˜ˆ™˜Âcra|ÜÙ USv,€8yŠ~ᇞ‚ žy…1œ`e€Ÿ'W>ö‡GvõÙe€H•@zÞPmXé7À•ñ„ ÔLe9Rx’ ( ïXš¦é‰PŸ£À–‚9˜8‰WâT˜à x9žåyÞé}g/Ÿò´i›!`™+ð�0k1{œ‰Ö �ñ}xÅ„«¹šÎVK²y ù�(0m®§¶;µh`œ†à†ˆP.Mv¢'ê+y KùD–¸ ]jcªpO)eS· ´ô£ð’!pÊr:§pª—–£:jÍñ$iú r÷Ði�@F`›ð§6¯A¤Fúj: ¤ –Ù¤ƒÐ 昩±¦œª‰ÂðºÂ¡:ªÅ ¤CJª¨Ú  z�†ªÃ°iÞuC©Z«¶z«¸š«ºº«ž@:úA°@¿ú«ô�;���������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000213�00000000000�011561� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/themes/tundra/images/buttonDisabled.png��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/t0000644�0000000�0000000�00000000207�11360615632�027223� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������‰PNG  ��� IHDR��������� ÅÃn���tEXtSoftware�Adobe ImageReadyqÉe<���)IDATxÚb|óæ 01À�‚ÅòÿÿÒĈ•%Ýd¬îcddD0�*¬êyå¹,����IEND®B`‚�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000214�00000000000�011562� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/themes/tundra/images/doubleArrowDown.png�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/t0000644�0000000�0000000�00000000230�11360615632�027217� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������‰PNG  ��� IHDR��� ��� ���à‘���sRGB�®Îé���tEXtSoftware�Adobe ImageReadyqÉe<���-IDAT(Ïcøÿÿ?üÇ…Áò —B¸Œ®E™Sˆ!†Åª†Áà&B�h|±Ï+ý³Ì����IEND®B`‚������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000210�00000000000�011556� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/themes/tundra/images/sliderThumb.png�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/t0000644�0000000�0000000�00000000361�11360615636�027230� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������‰PNG  ��� IHDR���������ísO/���sRGB�®Îé���tEXtSoftware�Adobe ImageReadyqÉe<���†IDAT8ËÓ= Ä „áÜ,mÎèil·òvÁmDÅl× ä«×+çí<”RçòYæ&lÎc]_kíÜ=Ø`‹Àd¶O`ŒñÐZÿå}/Þ;E­5Šj­ ”R(È9S$R¢H ÆH‘@"ï=å ÜÆ˜éœÛ‚ ¶\øÄoÄæú|Sð—R����IEND®B`‚�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000221�00000000000�011560� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/themes/tundra/images/tooltipConnectorDown.png��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/t0000644�0000000�0000000�00000000632�11360615642�027226� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������‰PNG  ��� IHDR���������&/œŠ���bKGD�ÿ�ÿ�ÿ ½§“��� pHYs�� �� �šœ���tIMEØ8oú“§��'IDAT(Ï¥‘ÍJqÅ3‘¯Rïà#´ˆ^AÚHÁÐ.ÈEËhã.Hj-r¹L¥‚¨•†ƒc ŠÎHóÕÌ¿E 6àYžsïî¹’‚T¶´$Ó«Ë›LQúâiÈgq@þõÀJ³ç¹“–þ¢ìÖÐ\@9¿mY“�'ÅZØa�@¾ÿé–µ\ïz_ºakÀѨ/‡æ¶ šȱ€\E5€°<{~pxùðö§‹ëzß²=ÿ ¸™�ؽW»ƒžóyRŒbµí�JÔirdÙPNË ଢ~øØÚ³�ŽuÓ®ªíõÝ0ƒqŸ D²ü¢Ç„`{ôïaIBˆÈ •--�k@.*Ï$⓳JfNÍ ø€®Eí_¢����IEND®B`‚������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000203�00000000000�011560� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/themes/tundra/images/i_half.gif����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/t0000644�0000000�0000000�00000000077�11360615640�027227� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������GIF89a��€�¿¿¿���!ù���,�������Œ€Ëí«žœ(Òë,ÞGó†âH–T�;�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000213�00000000000�011561� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/themes/tundra/images/smallArrowDown.png��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/t0000644�0000000�0000000�00000000206�11360615640�027221� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������‰PNG  ��� IHDR���������[6Åø���sRGB�®Îé���tEXtSoftware�Adobe ImageReadyqÉe<���IDATÓc```øÿÿÑ0DÀ$`l�£·æ ¾Z}����IEND®B`‚������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000211�00000000000�011557� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/themes/tundra/images/folderOpened.gif����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/t0000644�0000000�0000000�00000001655�11360615644�027236� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������GIF89a��÷��ÿÿÿÿÿÌÿÿ™ÿÿfÿÿ3ÿÿ�ÿÌÿÿÌÌÿÌ™ÿÌfÿÌ3ÿÌ�ÿ™ÿÿ™Ìÿ™™ÿ™fÿ™3ÿ™�ÿfÿÿfÌÿf™ÿffÿf3ÿf�ÿ3ÿÿ3Ìÿ3™ÿ3fÿ33ÿ3�ÿ�ÿÿ�Ìÿ�™ÿ�fÿ�3ÿ��ÌÿÿÌÿÌÌÿ™ÌÿfÌÿ3Ìÿ�ÌÌÿÌÌÌÌÌ™ÌÌfÌÌ3ÌÌ�Ì™ÿÌ™ÌÌ™™Ì™fÌ™3Ì™�ÌfÿÌfÌÌf™ÌffÌf3Ìf�Ì3ÿÌ3ÌÌ3™Ì3fÌ33Ì3�Ì�ÿÌ�ÌÌ�™Ì�fÌ�3Ì��™ÿÿ™ÿÌ™ÿ™™ÿf™ÿ3™ÿ�™Ìÿ™Ì̙̙™Ìf™Ì3™Ì�™™ÿ™™Ì™™™™™f™™3™™�™fÿ™fÌ™f™™ff™f3™f�™3ÿ™3Ì™3™™3f™33™3�™�ÿ™�Ì™�™™�f™�3™��fÿÿfÿÌfÿ™fÿffÿ3fÿ�fÌÿfÌÌfÌ™fÌffÌ3fÌ�f™ÿf™Ìf™™f™ff™3f™�ffÿffÌff™fffff3ff�f3ÿf3Ìf3™f3ff33f3�f�ÿf�Ìf�™f�ff�3f��3ÿÿ3ÿÌ3ÿ™3ÿf3ÿ33ÿ�3Ìÿ3ÌÌ3Ì™3Ìf3Ì33Ì�3™ÿ3™Ì3™™3™f3™33™�3fÿ3fÌ3f™3ff3f33f�33ÿ33Ì33™33f33333�3�ÿ3�Ì3�™3�f3�33���ÿÿ�ÿÌ�ÿ™�ÿf�ÿ3�ÿ��Ìÿ�ÌÌ�Ì™�Ìf�Ì3�Ì��™ÿ�™Ì�™™�™f�™3�™��fÿ�fÌ�f™�ff�f3�f��3ÿ�3Ì�3™�3f�33�3���ÿ��Ì��™��f��3���æçèßàáÔÕ×ÉË;À³¶¸ªªª¨«®¥¥¦œœœ‡‡‡ƒ¯¯°««¬¡¡¢ ¢¥‘’¬­®€‚ƒ ¢£cddÏÐÐÍÎκ»»¹ºº¡¢¢“””ñññÔÔÔÅÅŤ¤¤¡¡¡–––ŒŒŒ‹‹‹‰‰‰~~~uuuqqqÿÿÿ!ù��ÿ�,�������Š�ÿ H° @züĉóg ¾|Þ"ÞÛ®bE{ÅEÜÈ1b¸ŒC~¨Ñ>p(S¢Œ÷î9VÜa›I³&¶wåeÛɳçÎzÍiJ´¨¶tÿÄíÛÆ´©S¦ð’¢ãFµªUnëæýëw®›×¯`»•Èî›Ù³h¿k'0и·pãŽS×°®Ý»ÿ�;�����������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000216�00000000000�011564� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/themes/tundra/images/validationInputBg.png�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/t0000644�0000000�0000000�00000000245�11360615634�027227� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������‰PNG  ��� IHDR���������çï=î���sRGB�®Îé���tEXtSoftware�Adobe ImageReadyqÉe<���:IDAT(ÏcüðáÃ$ÀÂÈÈøE€‰‰éºŠè*î’.ðY€ñß¿(ÿÿ£¸‹‰ a�ˆe]`Ä‘����IEND®B`‚�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000207�00000000000�011564� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/themes/tundra/images/circleIcon.gif������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/t0000644�0000000�0000000�00000000314�11360615636�027226� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������GIF89a � �Ä�����ÿÿÿ¨¨¨§§§¦¦¦¥¥¥£££¢¢¢¡¡¡žžžœœœ›››ššš™™™˜˜˜———–––•••ÿÿÿ������������������������������������!ù���,���� � ��Ià$NB)Œc9 ˆQŽƒ’DÔ<È9 IÀÇI0€Dh@I$'00’PFéà€*%RÁÁ¥9†ÏkÒ "rkÅ eXܪL”B�;��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000216�00000000000�011564� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/themes/tundra/images/progressBarAnim-2.png�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/t0000644�0000000�0000000�00000000441�11360615634�027225� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������‰PNG  ��� IHDR��� ��� ���ôbÓQ���sRGB�®Îé���tEXtSoftware�Adobe ImageReadyqÉe<���¶IDAT(ÁÁA@ Á•|þ äO’³ÄŒ¾¾„lÆ’¤$Ýrm,,I! =c6mÙTò$ŽEÔ–„%BcIXœ1-¡I[ÀBc ލ…é6 M©:ë´Ø8ÜÍ…Vm;>wcÉ`!±›„¶mÏû}ÏXBTm“ÝìUÖç÷ùú|ÌŒ5É&ÝÕyþ½’ùxœ± RE“½Ûó÷ºws73¶Úiïæ¼ß÷^îõÇ™[JÛ$»ÿÐJ u뢄����IEND®B`‚�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000205�00000000000�011562� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/themes/tundra/images/tabClose.png��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/t0000644�0000000�0000000�00000000334�11360615632�027224� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������‰PNG  ��� IHDR��� ��� ���Vu\ç���sRGB�®Îé���tEXtSoftware�Adobe ImageReadyqÉe<���qIDAT(Ïcøÿÿ?¯X±Bˆ €x;¿‚âíP1Y˜:˜bK Þ�Äÿq`œ%XÔd|Š‘5É2@­ ‚À•+WàŠ@l@ÒTÀ�u'ŠÌFÒ°ê9 S±(áWdi ÙI${š´`%9âHM�F««Ä±[lË����IEND®B`‚����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000221�00000000000�011560� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/themes/tundra/images/tooltipConnectorLeft.gif��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/t0000644�0000000�0000000�00000000301�11360615636�027222� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������GIF89a��Ä�����ÿÿÿóôõÛåîv¥Ê|©Ì~ªÍ~«Í‹³Òœ½×¡ÁÙªÇݵÍ߯ÙçÌÛçßéñéîòæíòóö÷üüüûûûúúúùùùøøø÷÷÷öööõõõÿÿÿ������������!ù���,�������>à&ŽdižÛq äQ<› EÅè±HU_DÄB,šŠ‹r©Ìf.ÁX12CÉÈD‚Có©ÊhT�;�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000206�00000000000�011563� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/themes/tundra/images/dndNoCopy.png�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/t0000644�0000000�0000000�00000001273�11360615634�027231� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������‰PNG  ��� IHDR���������óÿa���sRGB�®Îé���tEXtSoftware�Adobe ImageReadyqÉe<��PIDAT8ËSßKSa~ÏÙ67×L ÛÜŠdѺQ³  ƒ.¼Š…"ÑWÑèO(Š"o*ˆ¤"älÍ™3]TŠ"ÎMbmB§È?âéùNg§4©^xøßùžç{ßç}?‘ Ñ!ÒÞ#2pS×'^/·ø}†{êŸü%\çD’“¡0Ö]0Z¡ÙRCŸ‰RcéšôñŒ:ûù¢HÑèêÆêþX ‘÷×"ãv#ítbÆåÆ4×Älm�—yvˆºY‘+á Á:äÌÕ×£Ó>Þ:Èé:^‹ çráüÏLD޳®‰Pˆ7ÇIÞ†¥­A,0Õ•Ö6[àSó>Liš‰q ¼"ñû¤òä,ÍY;uEÞ\±èócn‹åøA[`9ÃIYbŒH[k/¹Ò¯;Œ¯-m(°¶q³\ǘÁbk«-0c˜õ0õ§$ŽZ×E òÖÐí]ëjþWdèE†wyîñ±U (ímþoÙº ™E¿x¨;òÎ0[åÂÊá#XM$ð¥³߯^± ß.ô¡|ì(*':oŠ!E¢Êà®*ᨄ£øÈ^¿c«ÞÐ]eÖb¤ñ—;¶c„{) £–À5eb7[‘óÌ T¯§XŸ)Ø lóK‹X%=ÕѾ-ZrÞà h˜dÊaUg5fØÞßÒfýzÒžDÇòžèÅ÷,#kÝð‚Èïi2‘Ú@¾/Z±vã{°D’iÍiNZõpÚT&ðŒg“Çd§«ý†èƒâ0EƒÂ3Ñ µ×»ÉsþÔàÇ«ÞqYW����IEND®B`‚�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000221�00000000000�011560� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/themes/tundra/images/splitContainerSizerV.png��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/t0000644�0000000�0000000�00000000207�11360615632�027223� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������‰PNG  ��� IHDR���������i#™���sRGB�®Îé���tEXtSoftware�Adobe ImageReadyqÉe<���IDATWcüÿÿÿ?0øû÷ïïß¿þüùãÇ�ä®Ӗ¼����IEND®B`‚�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000215�00000000000�011563� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/themes/tundra/images/progressBarEmpty.png������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/t0000644�0000000�0000000�00000000244�11360615632�027224� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������‰PNG  ��� IHDR������È���)ò‹õ���bKGD�ÿ�ÿ�ÿ ½§“��� pHYs�� �� �šœ���tIMEØ50ŒºŒÍ���1IDAT(ÏcxöìÙ&†QbÈ,,,Ø fff†ÿÿÿ#ÇôçÏŸ1ÄF‰aC �ï˜L ´Õ����IEND®B`‚������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000216�00000000000�011564� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/themes/tundra/images/progressBarAnim-6.png�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/t0000644�0000000�0000000�00000000433�11360615644�027227� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������‰PNG  ��� IHDR��� ��� ���ôbÓQ���sRGB�®Îé���tEXtSoftware�Adobe ImageReadyqÉe<���°IDAT(Ï5É1R@ÁÑîÙüÿ¤ä.8I†N[Ÿ_/AJR—¶B3ìè$­ðß #NÚ#$f‘�œ¶8;NÚBGŒ Mz® #´3‚Zò>;M©ºÝ‘`ÄP7§É…Vm»ó×Ä#a'¡o;# Œ8j›ØñU<}ìÙ‘="j'µeïÇcw8¥RE_×v²ÏÇÙÑù¹n ¤½Î½¹ÎugÏëõ=RÚ&±íÞ˽ó<û ‰e¯tŽÎÛe����IEND®B`‚�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000223�00000000000�011562� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/themes/tundra/images/radioButtonActiveHover.png������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/t0000644�0000000�0000000�00000001206�11360615642�027224� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������‰PNG  ��� IHDR���������;Ö•J���sRGB�®Îé���tEXtSoftware�Adobe ImageReadyqÉe<��IDAT8O’]HSaÆ… è¶«®¼º.º¢ §´¼3»ŠèFPˆHK/**³!&‘¢‘aßÍdaµ-?VÎéÙÙvÎÎÙæ¶³³ÍÍͱXAðôÎVW]üxá9ÿßó~pê�Ôý/}ƒSG‰b‚˜9XÛˆ#µ³µb'ñcÎî'Ä EÓúúf~”g‰Óÿ”éÃÍyÇ:r…vJ»Hg‹P3dó%ìý܇I²‚_„¹J¦ qìõ'ä‹e(©mÈ›*ÜίËXr­"Kë¥2„fËìjFÙæcØT2à2xžG0ÄÇ/‹¸ÿp ÃGà"ئ‚…%Ž è2{â·–ÛNÀ:=£‹ Îëcƒè¹5ˆ¡Gôs JRc™¯"ŸC"¥a àn¿Îe·.OY?ër¯eíí¨\A._dY±"×?x:¸š{C@g×]0ÒÝ?Ž&“ 9-W`Y¾""ÊJ2¿CwÏ \î꫒ϵ]ÂÕk×!„H‘Ë\Æ{îpñ$Gõ#77·àŒ©Mæó8yªgÍ­ps"Ô´†÷6“;Œr=±»áa—°²êÅ“Ñg¸}g�“¯è-DHá8ì´Í…‰Ãµ?I ±¿øÝQŽÂãñÍã/„ ¨)ØkLÜ"ª~CÁ ‚³ŒZñrÖ©óâƒ÷FÞ1ñ-qÌ8_%Jؽ¸X+Uø5}ƒ”Ê/G²����IEND®B`‚������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000221�00000000000�011560� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/themes/tundra/images/splitContainerSizerH.png��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/t0000644�0000000�0000000�00000000214�11360615644�027224� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������‰PNG  ��� IHDR���������F.°Ã���sRGB�®Îé���tEXtSoftware�Adobe ImageReadyqÉe<���!IDATÓÁ �0±âþ+â}“wwh›Ú*‰l#Ó¹Ò… ä����IEND®B`‚������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000205�00000000000�011562� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/themes/tundra/images/tabClose.gif��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/t0000644�0000000�0000000�00000000301�11360615636�027222� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������GIF89a � �Ä��ÿÿÿÿÿ�ÿ�ÿÿ���ÿÿ�ÿ���ÿ���õõõìììÙÙÙÔÔÔÃÃÃÁÁÁ¯¯¯¨¨¨ÿÿÿ���������������������������������������������!ù���,���� � ��> !Jã8‚ˆPÂ<pÌ$ãß  ¼�°’÷ë=L±/vJ–0ÔpQ„¥vÆ_a»Ár­®Œ&"™P*Q�;�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000201�00000000000�011556� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/themes/tundra/images/leaf.gif������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/t0000644�0000000�0000000�00000000623�11360615632�027225� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������GIF89a��Õ5�ÅÅż¼¼ÁÁÁ···ÂÂÂÇÇÇÀÀÀÌÌÌèèèðððüüüøøø¾¾¾êêêÎÎÎààà´´´»»»÷÷÷ÊÊÊÆÆÆååå¶¶¶ÈÈÈæææÔÔÔÛÛÛöööôôôãããéééâââìììßßßñññ×××ÉÉÉÐÐÐóóóØØØûûû¸¸¸¿¿¿ÄÄÄýýýõõõ¹¹¹ÃÃÃúúúþþþºººùùùÿÿÿÿÿÿ������������������������������!ù��5�,�������°@ð*B£&û,fÐhT¢‘Õ\ ZlËåÒL.&*V¥\®$¢m¬2XŒÄÈ  ¢Ý‚Ë/{,|aq1 *2 ‡Lr**/# “‰–�žr* %’4-ˆ/ ±³ v)' -0,²”0+)�! (-)W((0RQ0 Ö5-ÚÜP0("5*�+ðñ+�î5A�;�������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000210�00000000000�011556� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/themes/tundra/images/tabDisabled.png�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/t0000644�0000000�0000000�00000000213�11360615632�027220� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������‰PNG  ��� IHDR������(���´!×���tEXtSoftware�Adobe ImageReadyqÉe<���-IDATxÚb|úô)01À�é,–ÿÿÿS.FSð‹au=###åa@@€�%ãûjÜné����IEND®B`‚�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000217�00000000000�011565� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/themes/tundra/images/treeExpand_loading.gif����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/t0000644�0000000�0000000�00000003630�11360615634�027230� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������GIF89a��÷ä�žžž¦¦¦÷÷÷ÇÇÇ£££ÖÖÖûûû¢¢¢ö÷÷ÊÊÊúúú­­­óóóìëëÎÎϧ§§ªªªòññöööÓÓÓ¦§¦çççëëëüüüððð°°¯©¨©ÊÊÉõõõ ¡ ëëìüûû²²±ÎÎÎÎÏÎÏÎΡ¢¢ýýýòòòüüû¬«¬²²²ðñ𨩩ÊÉÊ¡¡¡ÚÚÚ¬¬«ÄÅÄðïð ¡¡ûüû§¦§øùùÔÔÓÀÀÀÏÎÏÏÏÏðï£¢££ÄÄÄ¥¤¥¬««­¬­¬¬¬ýýü±²²ÊÊË©¨¨ÊËÊñòñðññÔÓÓ¬­­©©©ýüü©©¨­­¬üüý¢¡¢÷ö÷¤¥¤ÓÔÓ®®­ÛÛÚöö÷«¬¬ÄÅÅö÷öÅÄÅÛÚÚóôóÒÒÓÝÜÝÒÓÓïððÈÈɧ¦¦ÓÓÔÕÔÕ¢¡¡½½½ÔÓÔññòûúú¡¡¢­®­ËÌËùùùõõôûúû££¤¡¢¡ËËË·¶¶ØØØÏÏÎàààÉÈÈß  ¼¼¼ÕÔÔÔÔÔ¢¢¡ññ𤤥ùùøêéꪩ©ÜÝݶ¶¶ôóô·¸·ÃÃÃÚÛÚñññ££¢ïðïôôôþþÿ³³´­®®±²±³´´¡¡ Ö×Ö¾¾¾ëìëûüüêê릧§ÅÄĺººÂÃ驪üûüÝÝÞõôõ¤¥¥ôõõððïééêÆÇÇëìì°¯¯ÇÇȪª©íííûûú«¬«¡ ¡©ªª¿À¿ÝÝÝÜÜÜÉÉÉÀ¿Àúûû­­®À¿¿±±±±±²ííîÚÛÛñðñ²±²´³´¯°°ÞÝÝÎÏÏ¥¥¤ÂÂÃÈÉÉòòñæçç¡  ôôóìí좣¢äääÁÁÁŸŸŸÜÜÝËËÊððñËÊʦ¥¦¨¨©ììëúûú   ¹¹¹ÙØØþþþãâã²±±«««æææçææžŸžÉÉÊóóôÕÕÕüýý÷÷öÿÿÿ������������������������������������������������������������������������������������!ÿ NETSCAPE2.0���!ù �ä�,�������{�É H° ÁƒäÆ)DˆPáB†ä HøÁÀ@K J`EÂÁŽ &òƒ¡ $º ª\©ÒÅ+«äª"ðË„/+»Lè"PŽ‘g+›1²¨Ñ‘ ò:¨dÁ'1ˆ‰Æƒ­b5xàÀÀ>]†U  ,€£äÊ¢]�!ù �ä�,�����}�É (0&¬`A…Yˆ°1°Bƒ „Œ#cÈ3d$( FˆäŒ‰Dɲ¥KN @¸$§ƒ‚�¨Ìô€¡œ3-ƘI´(–Sè@€Ä 8(� ØQ…XX8P `à’·ÖÊÔRQ�AŠ’#�e@�!ù �ä�,�����{�É (p@&tE*B…ÕP¸2p€ƒ "ˆ#H"@A@°L�ÉY@# ¥Ë—0�€“œ€ãd’¨§Lš0ÌW³¨Q /#$<à ˆ¥L´¨&À H+™È’ÐjE-(uyc�އE„H�!ù �ä�,�����{�É (°ƒ”"&”j……H¨ÈÀ`aB”€Ä;#ÈlÐ"¹{\˜\ɲ%¹R\6PÁA°h.q¨á£ˆ—;/¸JtË' ñ„!Rá…qã Ën D¨Q òA4硲D⦠¢ä�…�!ù �ä�,�����n�É (€A‚<˜P >ˆŒÀ‚MšhÐÐpÉ Ž3d0Õ\†^Jª\É2A‚ ,Émp™d„˜IÆL€õjPLf^¼ÄJ4ÔJFßLS¦¡4ªŽ›:Ž(¹©©¥Zukׄ�!ù �ä�,�����€�É (U�&L±B�…s°À2pÈš�� x‡7 PÛ8ŽÉQ Ð!¥Ë—0Áx¨�“œC t4¨I¥•ß0ÔB BÍ£H¼Ô’°„‚, ŠHÀ”à ŽqKa‰:,Ð$gmÊK\bX@JATˆ�!ù �ä�,�����y�É (°À¯&ô5ÉB…gˆ0°Àˆ»´ Ø i³ýØ8pF”aÉÙZE2¥Ë—.Ç3�“…8�d~¨)†DÎq'j( ¦Ñ£^¢Hxb¢ˆ ^´$×4ÂS…)F&p¤bˆ‡ ‚¼ôTÀáQreS�!ù �ä�,�����z�É (pœA‚lô$á@ƒã^˜5ÐÄ"\!–pxl7‚×ÂpHn6;$Sª\ÉŠ•䈜ê&Õ%˜‡n˜ D,L=ÕÁJ” Qz(£äp uj2äÎç8á4yº©|ð瀤£-–‘ �;��������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000224�00000000000�011563� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/themes/tundra/images/sliderFullVerticalFocus.png�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/t0000644�0000000�0000000�00000000244�11360615634�027226� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������‰PNG  ��� IHDR���������ÔTR¯���sRGB�®Îé��� cHRM��z%��€ƒ��ùÿ��€é��u0��ê`��:˜��o’_ÅF��� pHYs�� �� �šœ���IDATÓcxðàÁ7NŸ>½gÏž•«Ö2à�[­#8¹ee����IEND®B`‚������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000214�00000000000�011562� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/themes/tundra/images/treeExpand_mius.gif�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/t0000644�0000000�0000000�00000000323�11360615632�027222� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������GIF89a��Ä�èèèßßß���ÅÅÅYYYÆÆÆÊÊÊ...ÔÔÔöööÙÙÙýýýÐÐÐúúú›››‰‰‰ÿÿÿ���������������������������������������������!ù���,�������P`$Ždižhª®èã¾ðs>LmÛÎŒì<Ÿ›…p8ü•Â`i8¤�pX Sèè‘èz½ZÑ£A.—ÑÇbÍf£¸\ŽvØïx4kÏ߇��;�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000216�00000000000�011564� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/themes/tundra/images/progressBarAnim-1.png�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/t0000644�0000000�0000000�00000000440�11360615640�027221� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������‰PNG  ��� IHDR��� ��� ���ôbÓQ���sRGB�®Îé���tEXtSoftware�Adobe ImageReadyqÉe<���µIDAT(ÁÑA�CÁ uÿýwm ‰wúþùM"TE—$v¦Å…$6%J’ÔB0Ó�ç$œ#Õ‰j¦D + 6‡…º$1‚.Lì$@ uÕ$”(r±M¢tfÏ]TQfÏ ‰’Ìg/]%”¸³M’y½>yôtIˆ(‰}ç[Íßë}×_î.@X±}væýùÜÝÏÇt) EľÙó®÷¼çÇt•’�NÆwwÙe·žÓÝU’“ØÿÎêŸvY$·����IEND®B`‚��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000207�00000000000�011564� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/themes/tundra/images/sliderFull.png������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/t0000644�0000000�0000000�00000000207�11360615632�027223� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������‰PNG  ��� IHDR���������Áõ���sRGB�®Îé���tEXtSoftware�Adobe ImageReadyqÉe<���IDATÓcø ß`€á9 0\ƒ†‡ŽB� †(” ð����IEND®B`‚�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000220�00000000000�011557� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/themes/tundra/images/radioButtonDisabled.png���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/t0000644�0000000�0000000�00000000623�11360615640�027224� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������‰PNG  ��� IHDR���������;Ö•J���sRGB�®Îé���tEXtSoftware�Adobe ImageReadyqÉe<��(IDAT8Ë“»JÄP†ÁÖÊj«[@°lmm|[_B°µ²²ĤX+›"„ܹ“‹ ‚ Œÿ„b²É.&ç&?sfD4û/ƒ‚ Ç` Àss^ƒ£InÁçf³!Ó4Éqœú\¯×„z .¶Êøp§ª*A@yž°m›|ƒ«?2 ç«Õª“$Ų,nðο֕_t]§(ŠvÂÓáþ}-sà'ŽcÚ×uY~kåSY–'Çí†!ËE+Ï%I¢,Ëö‚G‡“µò‡¦éÖ”ûø¾Ïòk7°G¬,Ë4-»ò|xžGUUb‹:8ì/É%øâ*Šb€¦i,`1¶žg@á�y%EQHEŸÀÉäÃhš,šÇÁÜô¥–_/Û/µAæ†����IEND®B`‚�������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000207�00000000000�011564� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/themes/tundra/images/tabEnabled.png������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/t0000644�0000000�0000000�00000000216�11360615634�027225� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������‰PNG  ��� IHDR������(���°Ô ���tEXtSoftware�Adobe ImageReadyqÉe<���0IDATxÚbúÿÿ? 3000!ó‘ñ¿ÿà46Œ¬f###ƒ�333XŒD `�-?ê”$¤����IEND®B`‚����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000207�00000000000�011564� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/themes/tundra/images/plusButton.gif������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/t0000644�0000000�0000000�00000000324�11360615636�027227� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������GIF89a��Ä��JJJHHHvvvooopppwwwììì÷÷÷qqquuuûûûèèèùùùæææýýýêêêäääåååÿÿÿ›››������������������������������������!ù�����,�������Qà$Žd)hzŠj+‰N…‹JžÓz.2@ @Ї„�P&"ƒA ¨©èÁå]®hA&ËdQc½ ØkQdN¯ÏE¼~Ÿ/ùI!�;������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000204�00000000000�011561� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/themes/tundra/images/warning.png���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/t0000644�0000000�0000000�00000002373�11360615640�027230� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������‰PNG  ��� IHDR���������(-S���sRGB�®Îé��� cHRM��z%��€ƒ��ùÿ��€é��u0��ê`��:˜��o’_ÅF���PLTE  þýþÚÙÚ��„��''(ùúýF¦)X±§¸Ø:çîùæìöëóÿéïø;n°Ez½c“Ídy’ÔáñÞèôïôúX4e›0]P†Ãx¤Ó}§Ø’´Ù¶ÍæÆØìæî÷éðøìòù�fÌ?ŒØ+Kl²ääíöçï÷£Âàl Ëò÷ûöùû{­Éçóú¡ÑéêöüH‘¬¾êûÈêõÚòùëùüäïðŸÈÉj“™ÅŶää¦Ḭ̀ÒÒ¸ÖÖÀÛÛËââ×èè ßííëôôòøøò÷÷ùüüýþþÖ××äðïv°˜úüûðòñ�r6&iE�X%ÃâËRœ[�u�¢É¢´Õ´×ô×åýå  ýþý}ÅwÄä¾'~uµdÂ߸OOH##"!! UUS,,+++*þú‰|x4Ÿ›Sþòqêàøß8æÐ8þêXþöµÿûàÿýïÿä7‹†fþ÷ÌæÔyÿþùÓ½fÜË€ñã«ÞºIÈ¡-´-›h�àZ—vV¾¥—­…xñ*òkNÜ#�Ó�ý÷öÉ�nÍ7"ÒH5½�©¿(øïîÈULá �² �¤*!ÍgaôàßÅ�¦$!·<7Ñ|yד‘ìÍÌŽ£௮ þýýÿÿÿþþþýýýüüüúúúöööòòòðððïïïíííëëëèèèæææâââßßßÝÝÝÕÕÕÒÒÒÑÑÑÎÎÎÌÌÌËËËÅÅž¾¾´´´¬¬¬¦¦¦˜˜˜{{{qqqddd]]]DDD444(((&&& ���îîî������������������������������������������������ÌãU���ðtRNSÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ�”¡hG��� pHYs�� �� �šœ���lIDAT(Ï}ÊË Ä0EQ@ÁHDDz²z¹©L óbç¿ÈÝ�G¤ß«´Oà h ŸÀûDîÀÂ9D"Ÿ€• ]:Xq/¾jq1/ê¦Ó¤fÚ™›®«R*6Þ‹ÆÕŒ„Wé²4,àæ����IEND®B`‚���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000210�00000000000�011556� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/themes/tundra/images/minusButton.gif�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/t0000644�0000000�0000000�00000000224�11360615636�027226� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������GIF89a��³��ììì÷÷÷qqquuuäääûûûèèèåååùùùæææýýýêêêÿÿÿ›››������!ù�����,�������A°ÉI+»8_©;“J(Ž¡TœhzJHë¾­Cm׳�Bï÷;ÉbH,%†¤r™”$žÐèSr¨Z¯U aËín+`J�;����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000214�00000000000�011562� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/themes/tundra/images/sliderFullFocus.png�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/t0000644�0000000�0000000�00000000243�11360615636�027227� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������‰PNG  ��� IHDR���������Áõ���sRGB�®Îé��� cHRM��z%��€ƒ��ùÿ��€é��u0��ê`��:˜��o’_ÅF��� pHYs�� �� �šœ���IDATÓcx� 7`€á4 0솕«ÖB�  #8DG/����IEND®B`‚�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000207�00000000000�011564� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/themes/tundra/images/circleIcon.png������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/t0000644�0000000�0000000�00000005637�11360615632�027237� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������‰PNG  ��� IHDR��� ��� ���Vu\ç�� 7iCCPPhotoshop ICC profile��(Ï’wTSÙÆÏ½7½Ð"Л¡—�Ò{“"E•˜%„ÐĆˆ Œ("ÒlȨ€ŽŽ€ŒQ,  ØdPÆÁQDÅò]ktÍ›÷Þ¼ùþ8÷·öÙûÜsö· ùòøi°�©|‘0ÌǾ4:†Ží0À °�€ÅÎ-ñùyyÐ3$Ià‹ �^ IW�n2|CètðÿIž-Š$Ç„HØŠÃÍ`K¸@Â)Y"4>#aêªd)Ã() %”°’”>óÂO9ŸÙUÊœT>GÂÒ; 8©)wIxK¦˜+a$PÂ…™<n–„oIX7EœÊ“ðkim*—•�Š$‹¸ìD ›K˜$ óð"�p¤„¯xÕW,âf‹¤òHäy ‰"º!ÛˆnaoϤûr³R¸"#„ÅNf 9t´T‹ŸÀç7’‚´·tI“m-ìmm–¦_5ê¿nþMI½ýL/B?yÑz¾Äþ*/­�欤7Û¿ÄVUж �¥»_bºû•øÖÚ÷Õ{hÒyI‰ffYYY¦<.ÛTÚÐ?ô?þ†¾úŸ©ô¸?ÚC÷䯳Ä)"º´oì´”4±ž!`±¹tÆŸ‡øþõ=†qã¹B._R)™2?Ab7ŸÃñÒøtÿ?™øËþ¤Ïs-¥þ ®4r}T€üÚP"@b÷J]ÿ÷@|$‘|£4'>Ïý'Aÿ~*\*]2x Ÿê<ÂÂél±0óóJº È*P@°vÀ¸/à‚A8ˆ+�$‚T Y l�… l»@5ØêAhÇA8 .€Ëà:¸Á=0ÆÁS0^y‚°¢@Ê&¤™@–r†¼ @( Іâ ˆ‰¡<h#T •AÕШú:]€®BýÐhš‚~‡ÞÂL‚©°:¬›ÁLØ €ÃáåpœçÂð6¸®ƒÂ­ðø:<ÀOáY D„†h! „‰x ÁH ‘µHRÔ!ÍHÒÜDFiä ƒ¢ è(Ê勊@±Q騵¨T5êªÕ…º‰EÍ > Éh5´ Úí‡^ŠN@g¡ ÑèCè“èKèAô8úƒ¡a 0v_L4& ³S‚ÙƒiÁœÇôcÆ0³X,Vk‚uÂcYX¶[…=Š=‡ÀŽc_ãˆ8Mœ%΃ããòq¸FÜYÜ�n7—ÃëáðÁx>_НÇwàûðãøy‚<Á€àD'$6* Í„K„û„D"Q›hO %òˆë‰•ÄcÄ+ÄQâ’ɘäAŠ%‰IÛH‡IçIwH/Èd²>Ù•C‘·‘ÈÉɯe(2¦2~2™u252­22Ïdñ²z²n²+dse+dOÈöÉNËáåôå<äXrkåjäNÉ ËÍÊSä-äƒåSåKäå¯ÊO*`ô¼8  .*ŒQŠѦl¤ÔS.QÆ©ªÕšD-¦~Gí¥Î(*(Z+F*f+Ö(žQ¡!4}š-…VJ;N¢½] ¾ÀmwÁÖÍ Ì)©*¹*q•Š”Z”•Þ*Ó•½”“•w(·)?PA©«„ªd©ìU¹¤2­JUuTe«©W½«««…©­V;¨Ö£6«®¡î£.P¯R¿¨>­AÓpÕHÒ(×8«1¥IÑtÖäi–kžÓ|BW¤»ÑSè•ô.úŒ–š–¯–Xë€V¯Ö¼¶v„v¾v‹ö‚S'^§\§SgFWS7H7O·I÷®^©—¨·[¯[oNß@?J³~›þ¤’ŸA®A“Á}C²¡‹aºaá-#ŒÓ(ÙhÑ cØØÆ8ѸƸÏ6±5á™ì1é_ˆ^h¿¿°ná0ƒÄpcd2š£¦4Ó@Ó|Ó6Ógfºf1f;̺Í>˜Û˜§˜×›ß³P°ð·È·è°øÝÒØ’mYcyËŠlåmµÎªÝê¹µ‰5×z¯õmŠMÍf›N›÷¶v¶BÛfÛ);]»8»Z»a&•Â,a^±GÛ»Û¯³?mÿÆÁÖAäpÜá7G†c²c£ãä"ƒEÜEõ‹Æœ´XNœFœéÎqÎûG\´\X.u.\u\9®‡\'܌ܒ܎º=s7wºŸtŸópðXãqÞñôñ,òìõRðŠðªözè­íàÝä=ãcã³Úç¼/Ú7Àw‡ï°ŸºÛ¯ÁoÆßÎW�)`I@uÀ£@ã@a`Gä´3èþb½ÅüÅmÁ Ø/xgðƒƒôC1¡!¡5¡Ã,Âòº—P–¬\Ò¸äU¸{xiø½ÃqDg¤ldldCä\”gTYÔÈR³¥k–^V‰æE·Ç`c"cÅÌ.óZ¶kÙx¬MlaìÐrƒåÙ˯®PY‘²âÌJÙ•¬•'âÐqQqqïXÁ¬:Öì*¿Uµ«fØìÝì§WN9gŠëÄ-ãNÄ;Å—ÅO&8%ìL˜JtI¬HœæyðªyÏ“|“ö%Í%'Nþ˜•Ò’ŠKK=ÅWà'ó»Ò4Ò²Óú&‚BÁHºCú®ôa€ðP”±<£]D D=bCñ&ñh¦sfMæë¬È¬ÙòÙüìž㜭9¹Þ¹ß®F­f¯îÌÓÊÛ7ºÆm͵ÐÚUk;×é¬+X7¾Þgý‘ „ É~Ê7Ï/˹1jcGzÁú‚±M>›š e ……Û7ïÛ‚ÚÂÛÒ»ÕjkÕÖEœ¢kÅæÅÅïJØ%×¾±ø¦ò›Ûâ·õ–Ú–îÝŽÙÎß>´ÃeÇ‘2ù²Ü²±A;[ËéåEå/w­ÜuµÂºbßnÂnñî‘ÊÀÊö*ݪíU磌kÜkZjÕj·ÖÎíáìØëº·yŸú¾â}o÷óöß>às µN¿®â æ`æÁÇõ‘õÝß2¿m8¤r¨øÐûÃüÃ#GÂŽt5Ø544ª5–6ÁM⦩£±Go|çù]{3£ù@ ­¥ø8&>öäû¸ï‡Žï<Á<ÑüƒÞµ')'‹Z¡ÖœÖ™¶Ä¶‘öèöþSþ§:;;NþhúãáÓZ§kÎ(ž)=K8[pöã¹Üs³çç§/$\ë\ÙyïâÒ‹·ºB»z/\ºrÙûòÅn·îsWœ®œ¾êpõÔ5æµ¶ë¶×[{lzNþdóÓÉ^ÛÞÖ>»¾öö7:úõŸp¸pÓóæå[~·®.슺=;<r›s{òNÊçw3ïÎß[}¿èÜƒŠ‡jë~6ú¹eÄvą̈çhÏ£%î±Çžþ’ñË»ñ‚ÇäÇš “–“§§¼§n<Yödü©àéütá¯ò¿Ö>3|öÃo®¿õÌ,.|þñ÷’Ê/¿´~Ù92ûðUê«ù¹¢×ʯ¼a¾é~õvb>ëö]å{£÷>Üÿ˜úñã¿�˜óüÛ��� cHRM��z%��€ƒ��ùÿ��€é��u0��ê`��:˜��o’_ÅF��� pHYs�� �� �šœ���âIDAT(Ïu’;Â0D¹HÄ9".力äÿ‘’(Ÿ2n8QJ :Xf,/2"£(»óÖ“u"r –e‰ Yh󲾩OÍ1´B2ϳt]ç4 ƒ°æ{±HÃtišFÚ¶•4M%IɲLʲ”<ÏŸ€ïŠ˜q]34ó©ôò'–1h" P(Ö‘^³VUõc Å>½èû^Š¢Ø5ê‰!` h¤�j$îù+ÒèWlôÂÖðÃÕÄw +põn­áÅqJ]׺ƒq§iº¢úÜôÞ¯‰Œ7è Õ÷*ňP,3€����IEND®B`‚�������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000224�00000000000�011563� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/themes/tundra/images/spriteRoundedIconsSmall.png�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/t0000644�0000000�0000000�00000004223�11360615640�027224� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������‰PNG  ��� IHDR���K���-���æã–­���tEXtSoftware�Adobe ImageReadyqÉe<��5IDATxÚìšËOYÆO7 JkÓ : >¢ñ¢"BÜ¢qcbÜè¸ö™hœÿÀ¥‰¯dv³d\iÔ %£Æ ƒ £¢QQ >@¤UaÎwôVnß®ª¾Eb“ôM*ÕTկνçœ{«ÎG…N:Eÿe;tèý_ZÄãxC(jž:ujÓׯ_»¿|ùÒÂÇþ²¼ç¤ÙÓ§O§±ìÌŸ† ™càÏiÓ¦5TWW'JJJhhhˆž>}:ôêÕ«¾ÏŸ?7ñ5ý6'Å"³¸³Y¾®ßc YcugE§L™Ò¹|ùòÊM›6¥eÃtîܹñ‰‰‰2—Ag…5̓Í*V' Î.[¶¬Báå›7oÊï9sæÐÎ;ÃlàoóÆn¬Þ‚°°»“ay`²e9ƒhllÌ97<<ìÊ:ÎÝ]__Ÿc<oéÇtïÞ=ºÿ¾s“ÒÒRŠÅb%ü³I7¬X¿uÁ–…=Ø…}ôýQ,gƒ/ûéÓ'zòä‰ìM»~ìùóç 3 ëêê¢cÇŽ‰ÃLVeB]QQQ’¹8þxóæ µµµÑÇ ^Wm||œfÏž]ÈçkùÏV7™qõêU ‡ÃbÚ»w¯«ÒppÞ¾}KuuuÒa7–PÇSؾ¾>ºté­Y³†8cˆÏY±;vìg?~œ^¾|)ëèôéÓ%X:«2«€7Áá‚‘‘,r⨼¼<ÇQ8Ç×á@žÑ:»téRš7o"G¼pÒúõë­YdìÁ.ìóSÉš}ÿþ½*™LRGGuww[³°¹eËzüø1•••Ñ’%K\Yå¬vŽf 0¶Y³fÑÆáU�ŽaðØ8âI¾þͰÃâ|4•ŒÀ~åÊ•TUUeÍb{° ûè‡:—‰ÅÔ}þü9E"™B7nܰ¶{÷î]d9rÓŽNž<)SÙdóš››±ã…¬‘#ù w4„ôEGy”)Á ¡tQãé9ÊúU3œÂ""à0ý-Zôí‚�lOOÕÖÖJtU {ðàA‡åŒã rXdĆ hݺu²ç§œ5ûèÑ#jll›˜Â½½½TYY)™­³ÎÏSoWggçÄÇIeØÂ… ñDß�[ZZy�¿›‹·É"­ËËËe”…=ØU}ªLRYjËÖÔÔH`Á!@Û·o—¾›¬ùRZÊs´—3)4þü9¬_XlÛÛÛ‡Ùø<{=ð&Ã~)ÍÈîß¿ÿ°Ç‹eÖØKmËÏÏ?Á7iâ蔳‡yZ¶ñM~ãs=*‡À¬ª ñ6íÅò5=Ê•¬°¡\!mß”k9gå$šœD““hr $ ŽÄ¤%ÖK¢±a½$šL¬ŸD£³)MCCƒ¯DƒšÍKfë·.زnbÝdu“hlX/‰Æd‰&‘H$ùÅÌW¢Aã¬ðõë×)2‹ÎzI46¬—DãÆBf)..NaÝ$ÖK¢1Ù‰FEMeJ4*Íó¾H“;Ô(ºM‰Æ–•ÊÞhlYµdè- ¥Â”hÜXG¢ˆ©ùŽôCdúZ€³.MîP,6HpµzõjG=°a•}Ø…}ôCÙÏÄbú@-àÒEÇÙÚÅÔ?sæ =zTú,SEµÎ¦I4œ!L!t”7™«V­ ¨Ð¯]»6:>>î*³€ÅpP/^,Q ÂB.³!± :{àÀW™ìܹs‰× ÑÁàh³Ï~ìƒhóæÍ´bÅ ™úpºR!tÖYà9õwq¥=¡/ŽP=÷ìÙãhR/^t•;LÎZ°`샲°»Ž7°f†Ú²p0–¥ÔB&‚&g²® G%Ğɓ…8º~ýºHÜ_‰&(«K4~ì¾}û|e–l°® {5M²àHXI4AY]¢ñbmd–l°9‰&§:äœõsK4üXÉ‚¡%šÉ°J*ÑÙ 2ËdÓ$þŒF£ üèO̘1Cj¤/^ ñ¢oddÄW¢™ «$šL¬ŸÌ’-6E¢á§B'¿HV®]»6-ãð8½|ù²§Ì’ ÖMfÉ&ë¬Y\&œ­ªªªÐA¼sàŸžhƶnÝêúEŠ«· ,ŠaUeM‰Æ–ÅË+þÁ«)®lX{SÞ]SS# @8 ¯ýØT›9s&j¾4™E±~ë‚- Ŧ®XSf1Y0ÈÝÙ6,J,~›—qCí¸råŠ8Ìd•³ê¸€LªZ ZªvÜ\YRÈ»ZíP ‹Lä2A¤’ .Pkk«5‹†"2 ¾[@]çÅBf1YÔ±·oßõÀÈ0_5,¤¥[·n‰Äƒ‚ÜdS$xÒÑ…wÕ •(ÈO W¹C±( ±PâZÔ†(HmYéÐw ’ ŽÙ²jÉÀ”Ÿ={&·eaµ,„C8 ýwc‰†3(†“€!STWWS<'5-Õ¹4¹C±ØP€â[ì+**Dn±eÕuw "Z³ÈDL! z„K[¶¿¿_¦á¶mÛdìÈ.$ŠÉz~Eò ¦Ä<½ŽŽß/aTåžH$ÄQêƒ2[–;'œŠ®Îú} S\\,Æ'NØ#P¶,lbŒ° eY¢Yª³)_Ñtuu‰d¡ÒšV}}½35yýñü"Egá,tQÊBžAF«¬šjË"8®ÒüálÙd]%^ðB™¦¼ûîÝ;ºsçÎ0§fƯh‚²ºDãÇfú&¬«DÃÓïg‡#Yð±6NY+‰&(«K4^¬Ì’ 6'ÑäT‡Óþ`�ÇÒ)9lCÍ����IEND®B`‚�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000206�00000000000�011563� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/themes/tundra/images/checkmark.gif�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/t0000644�0000000�0000000�00000004014�11360615640�027222� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������GIF89aÀ��ç��ÿÿÿÿÿ�ÿ�ÿÿ���ÿÿ�ÿ���ÿ���üüü÷÷÷õõõóóóïïïîîîìììéééæææåååãããÕÕÕ›››šššwˆ GGHVVWüüýijmº»¾}„ÌÏÖ»¿Ç€‚†JKMìîòæèìãåérsuÉÊÌÇËÒÅÉпÃÊÛßæ×ÛâÕÙàEKUž¨¸¹ÁιÀ˼ÂÌÉÏÙ’•šÚÝâÒÕÚÐÓØËÎÓäçì/?Vy‰¡v†|Œ£¦§„“©Š˜­q|Œajw”¡´26<™¥·ƒŒš¡¬½¤¯¿§²ÂŠ“ §±À¬¶Å¢ª¶±¹Å–œ¥ÇÎØÊÐÙº¾ÄÆÊÐÅÉÏÒÖÜoqtàäêßãéÄÆÉïñôåçê%>*C"3K%6N(9P2BX=LaDSgz‹¢r‚˜[hy]j{}ޤ‚’¨…•ª‡–«†•©LT_œ°’ ³–£µ~ˆ–s|ˆAFMƒ‹–¯¹Ç™¡¬´½É²¸ÀÐÖÞÒØà¹¾ÅÏÔÛÎÓÚÍÒÙËÐ×ÈÍÔÁÆÍØÝä×ÜãÓØßÑÖÝÐÕÜØÛßéìðåèìÜßãÛÞâÙÜàt€¡¬º­¸Æ½ÆÑÝâèÐÕÛËÏÔÍÔܲ·¼½ÀÊŒŽêíðçêíàãæÝàãòôöçéëÛÝߎúûü©ª«õ÷øEFFýþþúúúøøøöööôôôòòòðððíííëëëèèèçççäääâââáááàààßßßÜÜÜÚÚÚØØØ×××ÔÔÔÓÓÓÑÑÑÏÏÏÍÍÍËËËÊÊÊÉÉÉÆÆÆÄÄÄÂÂÂÁÁÁ¿¿¿½½½»»»¹¹¹¸¸¸···¶¶¶µµµ³³³±±±®®®¬¬¬ªªª¨¨¨§§§¥¥¥¢¢¢¡¡¡ŸŸŸžžžœœœ•••“““‘‘‘ŽŽŽŒŒŒŠŠŠ‰‰‰†††„„„{{{yyytttrrrooojjjfff___XXXTTTPPPNNNLLLHHHDDD666000...&&&### ÿÿÿ!ù��ÿ�,����À���þ�É H°à¿‚ þ›À°¡Ã‡ JløÏ‚Å‹3VÌÈñâ¿ CŠI²¤É“(SªI‚Ë—0_’;³¦Ë™èÜÉsç„…=ƒêüi€Ñ£HZ¨˜´©Ñ¥"»37®J©T­žÄZe³gÑž5CéÆÇnPò°@Æ–ªâÊ!îLrBƒâÌÛógN¾>™:5Êé©àÁJCn³öë‚¿¬m#¹¸ñãÈ“GVv Y2ÉfÅvÍŠ0kW±±#…r)Ã%(G„Dã†Î$H“è¸A’\ƒßÀ×B÷ûnðãÁ÷òýëp` ¢K—®ˆQô¥Ð§k—õß¶a’þf–ä÷ðHÇ—ÿx^<y‘Í|EˆÁjBLŒJ:Ê„ìh,‰É¼}D 6Èà÷XÃà]Vè N«d¨¡†Â¸’¡_†¸!Q ”hb‰‹àÀD‰Øèâ‰ÝY^3ã¤3N3�d`H2:¥#áÝâŒ6ÎÜ’ãŽ!3_M#ÒûMbvLÀ(GˆäÆ€IZ ¦"昩< ?ˆy™l’‰ÓpÆ §/ÅÄé—œxÊI”|öɧ\LÁ'v~ê'TÝü€3°ã(Î�ð‹Vÿ$ŠØ¤ Yz‹'Ütꉑ˜~ÔÌ.6¹´Ë}n@À$F´Úª•þP€ùtti+o„Ê®¼¢’Ž?ÊðzW¯ÄöúfžÔiçBy6KÔ)ÐF{ \x-vÒf+-Tã<�@:ñ„n:�<0HÝ"f.ºÞ:Ó黑®ûÑ3³” Á,Ï€äÃ%� áÆ¿ÿ"À%>€dÁ$¶v9 Täð*‹+¨,s€6Æ´ÀÅgŒ1N­tìq+ÆÀò±_—<rEg¢ÅzlQGÆØi,óÅP™ƒ��ôÔ£³Îô�€€9 ÙŒØÏA߬ͻjã3ÐE³¤MDÒá¥ÆÕW§‘ã ‘ÁeÂV@B†‚;ÃO8ªØÓŽÆwië6N/ So0ºÄä—½0µëþ^$ f‹]±„sëm;ý$žx;åžûQºƒÉûOºî"¯ãÿÐk/¾úòKDFD \ðGƒMà žÒ€;ìCN?´d{—¡´ãAº3 -ÃÜî{~ý.üïD‰YÆ_ÑE"lb׿óˆ*Z?TïO5’Rjé`¡Vªè¦ï~š=H£Ú{*H©ð[d´õ�±‚D«éVàª`ŸÝT¯¡w½è?N® ,Œ²�Ð~9 H”9a .³v,DÁ…§ðǰ÷£ô¨)I„D$#…ð#J‚š“B%õ ÁBx–´ôµ.} $ä8Q9èqŠÝe;í@ĉ†(Zü‚ˆHô —˜ÄŠa@N°#Eät§=éybÀãžõx‡‹Yôb|žæ’úÜç#ùÙRúó¨†aCµ3 1H"™¨Ä=.‘(=1„P°ãtÇ;Œá f(“ÈËxF3ìŒEšÑ”æ4$Q k\›6¨6·ÉÍnzƒÇ£Ü¥”F±Ýð†¼U (x{ vbé’C~„+”* .¯2•®œä+a9#IÊrY•d-mÉUo’ƒ0!™ˆD¢)M‡l¤#¹&61²’nzó›à §8ÇIÎršóœèLçG�;��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000213�00000000000�011561� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/themes/tundra/images/comboArrowDown.gif��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/t0000644�0000000�0000000�00000000061�11360615642�027222� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������GIF89a��€�������!ù���,�������„j Y(�;�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000211�00000000000�011557� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/themes/tundra/images/folderClosed.gif����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/t0000644�0000000�0000000�00000001645�11360615636�027236� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������GIF89a��÷��ÿÿÿÿÿÌÿÿ™ÿÿfÿÿ3ÿÿ�ÿÌÿÿÌÌÿÌ™ÿÌfÿÌ3ÿÌ�ÿ™ÿÿ™Ìÿ™™ÿ™fÿ™3ÿ™�ÿfÿÿfÌÿf™ÿffÿf3ÿf�ÿ3ÿÿ3Ìÿ3™ÿ3fÿ33ÿ3�ÿ�ÿÿ�Ìÿ�™ÿ�fÿ�3ÿ��ÌÿÿÌÿÌÌÿ™ÌÿfÌÿ3Ìÿ�ÌÌÿÌÌÌÌÌ™ÌÌfÌÌ3ÌÌ�Ì™ÿÌ™ÌÌ™™Ì™fÌ™3Ì™�ÌfÿÌfÌÌf™ÌffÌf3Ìf�Ì3ÿÌ3ÌÌ3™Ì3fÌ33Ì3�Ì�ÿÌ�ÌÌ�™Ì�fÌ�3Ì��™ÿÿ™ÿÌ™ÿ™™ÿf™ÿ3™ÿ�™Ìÿ™Ì̙̙™Ìf™Ì3™Ì�™™ÿ™™Ì™™™™™f™™3™™�™fÿ™fÌ™f™™ff™f3™f�™3ÿ™3Ì™3™™3f™33™3�™�ÿ™�Ì™�™™�f™�3™��fÿÿfÿÌfÿ™fÿffÿ3fÿ�fÌÿfÌÌfÌ™fÌffÌ3fÌ�f™ÿf™Ìf™™f™ff™3f™�ffÿffÌff™fffff3ff�f3ÿf3Ìf3™f3ff33f3�f�ÿf�Ìf�™f�ff�3f��3ÿÿ3ÿÌ3ÿ™3ÿf3ÿ33ÿ�3Ìÿ3ÌÌ3Ì™3Ìf3Ì33Ì�3™ÿ3™Ì3™™3™f3™33™�3fÿ3fÌ3f™3ff3f33f�33ÿ33Ì33™33f33333�3�ÿ3�Ì3�™3�f3�33���ÿÿ�ÿÌ�ÿ™�ÿf�ÿ3�ÿ��Ìÿ�ÌÌ�Ì™�Ìf�Ì3�Ì��™ÿ�™Ì�™™�™f�™3�™��fÿ�fÌ�f™�ff�f3�f��3ÿ�3Ì�3™�3f�33�3���ÿ��Ì��™��f��3���¨¨ª––—stv¡¢¤›œžÐÑÓ‡‰‹‚„†ÇÉË¿Áö¸º®°²áâãÙÚÛ¸¹º´µ¶®¯°¥¨ª”–—Ž‘†‡‡³³³ªªª¢¢¢¡¡¡žžžŽŽŽ‹‹‹yyyÿÿÿ������������������������������!ù��õ�,�������‚�ë H°à@zó¶380ž¼wî"΃G±b<ó"jܨqž@væBŠ2›ÀsäRª\™òœ@tåbÊœ@lÝrêÜ™›Àmà‚ t›@ná’*]š”›@uâ¢JUÀuã²jÝšu@oéŠÖ›@mßÒª]›V÷pã�;�������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000214�00000000000�011562� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/themes/tundra/images/progressBarFull.png�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/t0000644�0000000�0000000�00000000240�11360615636�027224� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������‰PNG  ��� IHDR������È���¢eÌŸ���tEXtSoftware�Adobe ImageReadyqÉe<���BIDATxÚbyöì01ÀÀ(k”5Ê¢5‹…‘‘‘ ¦üÿÿ·ëÇĸ? ¿ü~£ŽGY£¬Qn@€�ÈHAK4šÐ����IEND®B`‚����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000216�00000000000�011564� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/themes/tundra/images/progressBarAnim-4.png�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/t0000644�0000000�0000000�00000000437�11360615640�027227� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������‰PNG  ��� IHDR��� ��� ���ôbÓQ���sRGB�®Îé���tEXtSoftware�Adobe ImageReadyqÉe<���´IDAT(ÁÁA@ AI¾@ÿò¦€ÂYËŒ¿¾_Û²TÔ²°|ZbŶ=–%•EÀ¶Ø9–­ŒlIÚr$Z­jyb[±bՉ˓Xšt"–¶¢3Ll)ÖI”ên¯˜LléDŠek·­�€Iìµ0Ðîv¯»á1grî]IVMÛmÙõî|>æ¼ÿîÄH6íÞewÛ9ÏŸ÷ãLb@RánïíÝžçë÷ãÌLbh»»Ë½ú Ѧk©’Ä����IEND®B`‚���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000217�00000000000�011565� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/themes/tundra/images/calendarMonthLabel.png����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/t0000644�0000000�0000000�00000000242�11360615640�027221� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������‰PNG  ��� IHDR���������—Tx���tEXtSoftware�Adobe ImageReadyqÉe<���DIDATÁ�0�!Þ³ÒupÐ{˜JªM”Û¦ ­ÀmMî´RÛ bgr°5‚mrÉN£Ã6¹dS¹ìÔ‘VMœîø?jEnШ����IEND®B`‚��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000222�00000000000�011561� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/themes/tundra/images/tooltipConnectorRight.gif�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/t0000644�0000000�0000000�00000000302�11360615644�027222� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������GIF89a��Ä�����ÿÿÿóôõÛåîv¥Ê|©Ì~ªÍ~«Í‹³Òœ½×¡ÁÙªÇݵÍ߯ÙçÌÛçßéñéîòæíòóö÷üüüûûûúúúùùùøøø÷÷÷öööõõõÿÿÿ������������!ù���,�������?à&Žd)‡©nÓS¤ë8QTƒÆ[¥WÒ«– 0‚ø‘.È$Ra)‘CS„©b ‰é(“0n1ƒ -qè4.�;������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000224�00000000000�011563� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/themes/tundra/images/preciseSliderThumbFocus.gif�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/t0000644�0000000�0000000�00000000324�11360615640�027222� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������GIF89a��Ä�����ÿÿÿmm|ˆˆ—††•……”üüü÷÷÷õõõôôôóóóòòòðððïïïîîîìì샃ƒÿÿÿ������������������������������������������!ù���,�������Q  Žd)hªªçꢢa tmËâ¡ï</"À P(JH¤HÁl:¢…tJ¥’Œ¬6KE¾BcLî~Ï`‚cí0£Ñ‚ÂãQ¼ïÄ~Çóß!�;������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000210�00000000000�011556� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/themes/tundra/images/buttonHover.png�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/t0000644�0000000�0000000�00000000220�11360615636�027222� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������‰PNG  ��� IHDR���������2:r#���tEXtSoftware�Adobe ImageReadyqÉe<���2IDATÓ]ɱ À0€@Œ÷9GŠR + ²’k\¿MN8½â3?Ãî/\¤ ÷Ê-&Y7úñÀß4����IEND®B`‚��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000211�00000000000�011557� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/themes/tundra/images/spriteArrows.gif����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/t0000644�0000000�0000000�00000000164�11360615646�027232� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������GIF89a8��¡����xxxÿÿÿÿÿÿ!ù ��,����8���E”¸é’°Ð vÙj|ˆ•›rj)Ú|®(¸Òfc2¥ºÇoMóÁ^¤UÇË g ¥ð§átV•fmfÉN³Ù¦ÕQ��;������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000210�00000000000�011556� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/themes/tundra/images/sliderEmpty.png�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/t0000644�0000000�0000000�00000000174�11360615632�027226� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������‰PNG  ��� IHDR���������Áõ���sRGB�®Îé���tEXtSoftware�Adobe ImageReadyqÉe<���IDATÓcø øYw`��Zâ+™oW³ö����IEND®B`‚����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000215�00000000000�011563� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/themes/tundra/images/sliderThumbFocus.png������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/t0000644�0000000�0000000�00000000440�11360615632�027222� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������‰PNG  ��� IHDR���������ísO/���sRGB�®Îé��� cHRM��z%��€ƒ��ùÿ��€é��u0��ê`��:˜��o’_ÅF��� pHYs�� �� �šœ���™IDAT8Ë“1 !½YÚ\d›…­!Ø~‹€°Mê\(°u±Ì>!¿ŽïÃtÎT>¥µ¾LÓí³,6¸jžïnßßmôàÀU¨±·j­u}þÅï½J)8ŽƒB9g ¤”($c¤@BÞ{ 8ç($`­¥èó?Ûm{5cÌpàªsQWŒbtpà~Sà1…¾l0����IEND®B`‚��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000217�00000000000�011565� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/themes/tundra/images/accordionItemHover.gif����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/t0000644�0000000�0000000�00000000253�11360615634�027226� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������GIF89a� �Ä�����ÿÿÿøúýßéöëñùîóúÜçõÝèõàêöâëöåí÷èïøðõûÚæôäí÷çïøêñùíóúùûýÿÿÿ������������������������������������!ù���,����� ��( $0LQD‘I»@0ô,Ê3+¸â$HÂóÄ�q dÃÀl6•�;�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000216�00000000000�011564� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/themes/tundra/images/progressBarAnim-8.png�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/t0000644�0000000�0000000�00000000436�11360615634�027231� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������‰PNG  ��� IHDR��� ��� ���ôbÓQ���sRGB�®Îé���tEXtSoftware�Adobe ImageReadyqÉe<���³IDAT(Ï5AN�ÝÖÿ¿Ñ«0vÕ¹Î$~~}'uÑ– „IØ à_'!’äŠÕ€�§-œ’ZbÛ’ïa[$0Bp“ŒD`„A“¶�´¯s§ïUBÝ$hº?/·íèO Î9`_羉 ‚„½×ù«y"ʶÉ&NjÓžÇÌ�6K4ñ¹¶“y>vÄd@ÚsîrÎ9‰m×v“Øvïp§çÎŒDþ¤»¥—ÒŠÚ@����IEND®B`‚����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000217�00000000000�011565� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/themes/tundra/images/radioButtonEnabled.png����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/t0000644�0000000�0000000�00000000747�11360615640�027233� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������‰PNG  ��� IHDR���������;Ö•J���sRGB�®Îé���tEXtSoftware�Adobe ImageReadyqÉe<��|IDAT8Ë“±jÂP†…B¡k§NNB×>@¡k¡k×®BŸ¡k_¢ØI2ˆ‹B‰‚;¸E© Áh4MŒ9=ÿÁHªÆ¡ÃÇ…›|ÿ½çÜ{D”ø/{™LæœI3/ÌÛf¼gÎŽÊüÃ#c—Ëej4Ôétd,‹ÄóßÌÍA™?<U*Fäy-—KZ,äº.­V+j·Ûp™»?2O\«ªJ“É„Çy½^Säû¾ ;áM”•Õf³¹] ò.\­Vð,2Áøóù\dŒq  ×ëAþåË\.·mÛŽ2zÂŽÊIEQäÃl6“ºãÀö‡Ã!äŸP>A¦Ó©Ô4bY–t½ÕjA~6ìµV«Igbšæ¥R r:*'«ÛíÊa•Á`@ý~Ÿ ÃrP–®ë?™ÓÝKrË8õz]VÀ.pÎ8:„išñ‹IÅ]Ï+FG …‚Ïç)›ÍBT˜‹£c’Ú<ð°+…üpuÒÑ�«˜U����IEND®B`‚�������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000212�00000000000�011560� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/themes/tundra/images/buttonEnabled.png���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/t0000644�0000000�0000000�00000000170�11360615644�027225� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������‰PNG  ��� IHDR���������ޤaý��� pHYs�� �� �šœ���*IDAT™UŒ1 �0 „Žûÿ—£è âbÔ&é¨zljg¦ÀyIeã5Ñ Œpó����IEND®B`‚��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000215�00000000000�011563� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/themes/tundra/images/treeExpand_minus.gif������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/t0000644�0000000�0000000�00000000323�11360615632�027222� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������GIF89a��Ä�èèèßßß���ÅÅÅYYYÆÆÆÊÊÊ...ÔÔÔöööÙÙÙýýýÐÐÐúúú›››‰‰‰ÿÿÿ���������������������������������������������!ù���,�������P`$Ždižhª®èã¾ðs>LmÛÎŒì<Ÿ›…p8ü•Â`i8¤�pX Sèè‘èz½ZÑ£A.—ÑÇbÍf£¸\ŽvØïx4kÏ߇��;�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000214�00000000000�011562� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/themes/tundra/images/treeExpand_plus.gif�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/t0000644�0000000�0000000�00000000330�11360615640�027217� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������GIF89a��Ä�èèèöööÍÍÍ,,,ÒÒÒ^^^ÅÅÅ111aaaÁÁÁâââÎÎÎßßßúúúÙÙÙýýýÔÔÔzzz›››���ÿÿÿ���������������������������������!ù���,�������U`%Ždižhª®¨ä¾°tJTmÛÑ|ï¹)=À"øè•$dc¢PI’@à0©¤Ï‘À]L +’0ÎŒM®Hpx"Þ–@îx|;ÂïûÛ,‚!�;��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000216�00000000000�011564� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/themes/tundra/images/validationInputBg.gif�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/t0000644�0000000�0000000�00000000155�11360615642�027226� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������GIF89a��³��ÿÿÿþþþýýýüüüùùù÷÷÷õõõòòòðððÿÿÿ������������������!ù�� �,�������Itê1Ø”]ˆ'C8¤œ ®lë¾p,�;�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000216�00000000000�011564� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/themes/tundra/images/progressBarAnim-9.png�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/t0000644�0000000�0000000�00000000441�11360615644�027226� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������‰PNG  ��� IHDR��� ��� ���ôbÓQ���sRGB�®Îé���tEXtSoftware�Adobe ImageReadyqÉe<���¶IDAT(ÁÑQCAÁ‘ölò‘_ Ì»•èÖ÷Ïï–¶B6cIR<ÖAÛ¤m’Æ:g�6mÙTòjaµ%a‰ÐX‡"Óš´,tîîX ÓmšRçnÇc lîæB«ó÷lÛŽ-,$v“p>Ÿ'ë¾æŒ%DÕ6ÙÍyžgW»óõš"j’=ÉÞíî&ó~± REOÚ»¹7ws7¯3¶Ú§Ivw{/÷ú}fÆ–Òþb–ѳi����IEND®B`‚�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000217�00000000000�011565� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/themes/tundra/images/preciseSliderThumb.gif����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/t0000644�0000000�0000000�00000000324�11360615634�027225� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������GIF89a��Ä��ÿÿÿüüü÷÷÷õõõôôôóóóòòòðððïïïîîîìììÀÀÀ½½½¼¼¼¹¹¹šššÿÿÿ���������������������������������������������!ù���,�������Qà#Žd)hªªçê¢b,tmË¢ ï</À P("H¤¨Àl:"ƒtJ¥’‡¬6ËA¾bLî~Ï`Fb0£Ñ†BÑx¼ï‡Ã~Çóß!�;������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000214�00000000000�011562� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/themes/tundra/images/treeExpand_leaf.gif�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/t0000644�0000000�0000000�00000001507�11360615636�027233� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������GIF89a��÷�¿¿¿���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������!ù���,�������$�H° Áƒ*\Ȱ¡Ã‡#B€¢ÅŠ3jÜȱcÇ€�;�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000216�00000000000�011564� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/themes/tundra/images/checkmarkNoBorder.png�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/t0000644�0000000�0000000�00000010461�11360615642�027227� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������‰PNG  ��� IHDR���À������@âp(��� pHYs�� �� �šœ�� OiCCPPhotoshop ICC profile��xÚSgTSé=÷ÞôBKˆ€”KoR RB‹€‘&*! Jˆ!¡ÙQÁEEÈ ˆŽŽ€ŒQ, Š Øä!¢Žƒ£ˆŠÊûá{£kÖ¼÷æÍþµ×>ç¬ó³ÏÀ –H3Q5€ ©BàƒÇÄÆáä.@ $p�³d!sý#�ø~<<+"À¾�xÓ �ÀM›À0‡ÿêB™\€„Àt‘8K€�@zŽB¦�@F€˜&S� �`Ëcbã�P-�`'æÓ�€ø™{�[”! ‘� eˆD�h;�¬ÏVŠE�X0�fKÄ9�Ø-�0IWfH�°·�ÀÎ ²� �0Qˆ…)�{�`È##x�„™�FòW<ñ+®ç*��x™²<¹$9E[-qWW.(ÎI+6aaš@.Ây™24àóÌ�� ‘àƒóýxήÎÎ6޶_-ê¿ÿ"bbãþåÏ«p@��át~Ñþ,/³€;€mþ¢%îh^  u÷‹f²@µ� éÚWópø~<<E¡¹ÙÙåääØJÄB[aÊW}þgÂ_ÀWýlù~<ü÷õà¾â$2]GøàÂÌôL¥Ï’ „bÜæGü· ÿüÓ"ÄIb¹X*ãQqŽDšŒó2¥"‰B’)Å%Òÿdâß,û>ß5�°j>{‘-¨]cöK'XtÀâ÷��ò»oÁÔ(€hƒáÏwÿï?ýG %�€fI’q��^D$.Tʳ?Ç��D *°AôÁ,ÀÁÜÁ ü`6„B$ÄÂBB d€r`)¬‚B(†Í°*`/Ô@4ÀQh†“p.ÂU¸=púažÁ(¼ AÈa!ÚˆbŠX#Ž™…ø!ÁH‹$ ɈQ"K‘5H1RŠT UHò=r9‡\Fº‘;È�2‚ü†¼G1”²Q=Ô µC¹¨7„F¢ Ðdt1š ›Ðr´=Œ6¡çЫhÚ>CÇ0Àè3Äl0.ÆÃB±8, “c˱"¬ «Æ°V¬»‰õcϱwEÀ 6wB aAHXLXNØH¨ $4Ú 7 „QÂ'"“¨K´&ºùÄb21‡XH,#Ö/{ˆCÄ7$‰C2'¹I±¤TÒÒFÒnR#é,©›4H#“ÉÚdk²9”, +È…ääÃä3ää!ò[ b@q¤øSâ(RÊjJåå4åe˜2AU£šRݨ¡T5ZB­¡¶R¯Q‡¨4uš9̓IK¥­¢•Óhh÷i¯ètºÝ•N—ÐWÒËéGè—èôw †ƒÇˆg(›gw¯˜L¦Ó‹ÇT071ë˜ç™™oUX*¶*|‘Ê •J•&•*/T©ª¦ªÞª UóUËT©^S}®FU3Sã© Ô–«UªPëSSg©;¨‡ªg¨oT?¤~Yý‰YÃLÃOC¤Q ±_ã¼Æ c³x,!k «†u5Ä&±ÍÙ|v*»˜ý»‹=ª©¡9C3J3W³Ró”f?ã˜qøœtN ç(§—ó~ŠÞï)â)¦4L¹1e\kª–—–X«H«Q«Gë½6®í§¦½E»YûAÇJ'\'GgÎçSÙSݧ §M=:õ®.ªk¥¡»Dw¿n§î˜ž¾^€žLo§Þy½çú}/ýTýmú§õG X³ $Û Î<Å5qo</ÇÛñQC]Ã@C¥a•a—á„‘¹Ñ<£ÕFFŒiÆ\ã$ãmÆmÆ£&&!&KMêMîšRM¹¦)¦;L;LÇÍÌÍ¢ÍÖ™5›=1×2ç›ç›×›ß·`ZxZ,¶¨¶¸eI²äZ¦Yî¶¼n…Z9Y¥XUZ]³F­­%Ö»­»§§¹N“N«žÖgðñ¶É¶©·°åØÛ®¶m¶}agbg·Å®Ã“}º}ý= ‡Ù«Z~s´r:V:ޚΜî?}Åô–é/gXÏÏØ3ã¶Ë)ÄiS›ÓGgg¹sƒóˆ‹‰K‚Ë.—>.›ÆÝȽäJtõq]ázÒõ›³›Âí¨Û¯î6îiî‡ÜŸÌ4Ÿ)žY3sÐÃÈCàQåÑ? Ÿ•0k߬~OCOgµç#/c/‘W­×°·¥wª÷aï>ö>rŸã>ã<7Þ2ÞY_Ì7À·È·ËOÃož_…ßC#ÿdÿzÿÑ�§€%g‰A[ûøz|!¿Ž?:Ûeö²ÙíAŒ ¹AA‚­‚åÁ­!hÈì­!÷ç˜Î‘Îi…P~èÖÐaæa‹Ã~ '…‡…W†?ŽpˆXÑ1—5wÑÜCsßDúD–DÞ›g1O9¯-J5*>ª.j<Ú7º4º?Æ.fYÌÕXXIlK9.*®6nl¾ßüíó‡ââ ã{˜/È]py¡ÎÂô…§©.,:–@LˆN8”ðA*¨Œ%òw%Ž yÂÂg"/Ñ6шØC\*NòH*Mz’쑼5y$Å3¥,幄'©¼L LÝ›:žšv m2=:½1ƒ’‘qBª!M“¶gêgæfvˬe…²þÅn‹·/•Ék³¬Y- ¶B¦èTZ(×*²geWf¿Í‰Ê9–«ž+Íí̳ÊÛ7œïŸÿíÂá’¶¥†KW-X潬j9²<qyÛ ã+†V¬<¸Š¶*mÕO«íW—®~½&zMk^ÁÊ‚Áµkë U å…}ëÜ×í]OX/Yßµaú†>‰Š®Û—Ø(Üxå‡oÊ¿™Ü”´©«Ä¹dÏfÒféæÞ-ž[–ª—æ—n ÙÚ´ ßV´íõöEÛ/—Í(Û»ƒ¶C¹£¿<¸¼e§ÉÎÍ;?T¤TôTúT6îÒݵa×ønÑî{¼ö4ìÕÛ[¼÷ý>ɾÛUUMÕfÕeûIû³÷?®‰ªéø–ûm]­NmqíÇÒý#¶×¹ÔÕÒ=TRÖ+ëGǾþïw- 6 UœÆâ#pDyäé÷ ß÷ :ÚvŒ{¬áÓvg/jBšòšF›Sšû[b[ºOÌ>ÑÖêÞzüGÛœ4<YyJóTÉiÚé‚Ó“gòÏŒ•}~.ùÜ`Û¢¶{çcÎßjoïºtáÒEÿ‹ç;¼;Î\ò¸tò²ÛåW¸Wš¯:_mêtê<þ“ÓOÇ»œ»š®¹\k¹îz½µ{f÷éž7ÎÝô½yñÿÖÕž9=ݽózo÷Å÷õßÝ~r'ýÎË»Ùw'î­¼O¼_ô@íAÙC݇Õ?[þÜØïÜjÀw óÑÜG÷…ƒÏþ‘õC™Ë† †ëž8>99â?rýéü§CÏdÏ&žþ¢þË®/~øÕë×Îјѡ—ò—“¿m|¥ýêÀë¯ÛÆÂƾÉx31^ôVûíÁwÜwï£ßOä| (ÿhù±õSЧû“““ÿ˜óüc3-Û���gAMA��±Ž|ûQ“��� cHRM��z%��€ƒ��ùÿ��€é��u0��ê`��:˜��o’_ÅF��LIDATxÚìZ_LSWî$¾‰‰>˜˜HH4Ù“=Œ%s [Àdn,Yö0eQ—¥7¾Hq@FÀtT, TÑþ¡HYmOs±h¸^r/ˆB¼誢¥5-ò¯Ðð`ß”®Œ˜K[ûK¾·ûå;÷Þï;÷Üs~ �Š 2øP‘y[á%Ä”^¯WªÕjA¥R†¡*•*¨V«½^¯Œ½n«òY–=F!6›mÒjµ¾¶Ùl“„²ì±DüœƒßFa¼~[Ù`îªuíÁòºZ­k6˜;ãõÛÊØëñk›]ÊsZ»ÀÔX‚§*¯R¦Æ<§µ µÍ®¸üŒ·H�Ìfs®F£qF*Š"�"‘�DQ„Ñh¤Æi6›sã0ÝüÎÎÎ=„ÏóT’$x<ø|>x<H’žç)!ÄÐÙÙ¹'^�Úoôä6Z\Î6V ƒ#nLÏÌ#B)¦gæ18âF+ÐF‹ËÙ~£'7^�.´p¹:âÔ˜º(é(û1ö"Qöƒt@cê¢:â¼ÐÂå¾W�ÆÇÇqòäI¤Ë$¯^½ÂØØXÚôÿzúg*둬�h4§  ”"^QJ!43žÓÍ'„àóùà÷û×Àçóa``�„C¼�4Z\Î{ePú&þÜ{(£ÑârÆ @…Ž8­·1æ]ÄøÔÒŒya½5ˆ q¾W�öîÝ ƒÁ6öööbjj*-úžIüü;\³ßLо^¯WFºb>BÊÊÊpüøq”••5¡Ñh¤z½^¹?Qm–/Ë2´Z-dY^—ϲì1žçi"ódž€çyʲì±X¾ñúme+ÐóÉOÁv?B««l÷# ÉO£!hcj¼~{•~m³K©1uÑDæ ÆÔEk›]Êÿ€C‡!++ ===i1`?xžG0L¹~8Æ—ß”b÷þÃèNоZ­DQ�Øív”””àèÑ£Q”””Àn·�DQ„Z­ñ7ªø²,£¾¾uuuQÔ××GCO!’$­kþH’ò6ÑQ~ƒ¹Cq�¤ÇOpÅÞ‹K1¸bï…ôø �`pÄsÇ*ýsZ»@ºGÖ5ÿ H÷Îií¦°°°€'N ++ 7oÞÄÂÂBÊ 8:: žçR®½´´eyvï? þŽˆ¥¥¥¤ŒA¥RßÝJKKQPP°¥¥¥�€@ �•JLÄߨ6â;ŽUæ_ÃáHÈ·Ùl“gSðx<°Ùl“±üj]{pzf�ÐÚq˜¹5hí¸�˜ž™Gµ®}•>Sc вSe?˜KpSp¹\P(Ðjµi™ù_¾| Žãðüùó´èsBrò p¹ÅÅÅŤa‰D��ùùùÈËË[ƒüü|�@$Ã04£Úˆ¯Õjãàâò­Vëë–?±Ë «Õú:–_^×B#ï–_UzÊuìTé]oõ)Ey]Ë*ýS•WéØ‹Ð¦0ö"„S•WiÜ�8ìܹUUU˜™™Á¾}ûpäÈ‘¤¾üXøý~‚€•ÙäîÝ»†ßïO‰þ®ä*‚ZgF(ÂÇ_|Oª …’ª;cûöíkP\\üA|ÛxüzþÏ5hlã“ÿ(**‚B¡À®]»pöìYìØ±n·;e³ïÐÐ8ŽÃ;wàv»!|>_Êôøù,rò ðѧGð{]3ö}ò<“Þ¤ëÇ®ÁM&²³³¡P(¢ÈÎΆÉdú þHã8]} 'ªZ£8]} ¤ñäþ„Ãa„Ãa¨Õê胿xñbJ—SSSxöì8ŽKËÒgnnº+íÈÉ+@N^.™í˜››Kúþ½ c2™PXXˆmÛ¶¡°°0jþeè4­…Ã/5íÐZ¸¨ù“¾ ´¼¼Œååeœ9sHÚOßzðz½˜˜˜@__¼^oÊõgggñÛù&|öõO˜M‰~æ`‹D"ŒŽŽ¦mÏ?sœ9 Þr'Á¤¦¨©©‰‰×‹ÓÔÔÄl¦'ÝüÿÛ d°qL¼^ ƒc6Ó TsÙÅÄ몹ìb2½@déÍ ƒð÷�kèe)™é ����IEND®B`‚���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000200�00000000000�011555� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/themes/tundra/Dialog_rtl.css�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/t0000644�0000000�0000000�00000000150�11360615634�027222� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* Dialog */ .dijitRtl .tundra .dijitDialogTitleBar .dijitDialogCloseIcon { right: auto; left: 5px; } ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000200�00000000000�011555� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/themes/tundra/TimePicker.css�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/t0000644�0000000�0000000�00000002317�11360615640�027226� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* Time Picker */ .tundra .dijitTimePickerTick, .tundra .dijitTimePickerMarker { border-color: #ccc; } .tundra .dijitTimePickerTick { color:white; } .tundra .dijitTimePickerMarker { background:#d3d3d3 url("images/titleBar.png") repeat-x top; color:#293a4b; font-weight: bold; } .tundra .dijitTimePickerItemSelected { color: black; background: #bbc4d0 none; } .tundra .dijitTimePickerItemHover { background: #60a1ea none; color:white; } .tundra .dijitTimePickerItemHover, .tundra .dijitTimePickerItemSelected { position: relative; z-index: 10; } .tundra .dijitTimePickerTick .dijitTimePickerItemInner { font-size:0.4em; } .tundra .dijitTimePickerItemHover .dijitTimePickerItemInner, .tundra .dijitTimePickerItemSelected .dijitTimePickerItemInner { font-size:1em; } .tundra .dijitTimePickerMarkerHover { border-top: 1px solid #ccc; } .tundra .dijitTimePickerTickHover, .tundra .dijitTimePickerTickSelected { margin-top:-0.3em; margin-bottom:-0.3em; border-bottom: none; } .dijit_a11y .dijitTimePickerTickHover { background-color: #CCC !important; border-top: 1px solid #333 !important; border-bottom: 1px solid #333 !important; } .dijit_a11y .dijitTimePickerMarkerHover { border-bottom-width: 2px; } �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000176�00000000000�011571� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/themes/tundra/Tree_rtl.css���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/t0000644�0000000�0000000�00000001460�11360615632�027225� 0����������������������������������������������������������������������������������������������������ustar �������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������� /* Tree */ .dijitRtl .tundra .dijitTreeContainer .dijitTreeNode { background-image : url('images/i_rtl.gif'); background-position : top right; margin-left: auto; margin-right: 19px; } .dijitRtl .tundra .dijitTreeContainer .dijitTreeIsRoot { margin-left: auto; margin-right: 0; background-image: none; } .dijitRtl .tundra .dijitTreeContainer .dijitTreeIsLast { background-image: url('images/i_half_rtl.gif'); } .dijitRtl .tundra .dijitTreeContainer .dijitTreeExpandoOpened { background-image: url('images/treeExpand_minus_rtl.gif'); } .dijitRtl .tundra .dijitTreeContainer .dijitTreeExpandoClosed { background-image: url('images/treeExpand_plus_rtl.gif'); } .dijitRtl .tundra .dijitTreeContainer .dijitTreeExpandoLeaf { background-image: url('images/treeExpand_leaf_rtl.gif'); } ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000202�00000000000�011557� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/themes/tundra/Calendar_rtl.css�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/t0000644�0000000�0000000�00000000253�11360615640�027223� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* Calendar */ .dijitRtl .tundra .dijitCalendarDecrease { background-position: -30px top; } .dijitRtl .tundra .dijitCalendarIncrease { background-position: 0px top; } �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000203�00000000000�011560� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/themes/tundra/TitlePane_rtl.css����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/t0000644�0000000�0000000�00000000142�11360615636�027225� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������.dijitRtl .tundra .dijitTitlePane .dijitClosed .dijitArrowNode { background-position: -7px 0px; }������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000201�00000000000�011556� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/themes/tundra/ProgressBar.css������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/t0000644�0000000�0000000�00000001565�11360615632�027233� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������.tundra .dijitProgressBar { margin:2px 0px 2px 0px; } .tundra .dijitProgressBarEmpty { /* outer container and background of the bar that's not finished yet*/ background:#fff url("images/progressBarEmpty.png") repeat-x center center; border-color: #a2a2a2 #b8b8b8 #b8b8b8 #a2a2a2; } .tundra .dijitProgressBarTile { /* inner container for finished portion when in 'tile' (image) mode */ background:#f0f0f0 url("images/progressBarFull.png") repeat-x center center; } .tundra .dijitProgressBarFull { border-right:1px solid #b8b8b8; } .tundra .dijitProgressBarLabel { /* Set to a color that contrasts with both the "Empty" and "Full" parts. */ color:#293a4b; } .tundra .dijitProgressBarIndeterminate .dijitProgressBarTile { /* use an animated gif for the progress bar in 'indeterminate' mode */ background:#cad2de url("images/progressBarAnim.gif") repeat-x center center; } �������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000202�00000000000�011557� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/themes/tundra/ColorPalette.css�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/t0000644�0000000�0000000�00000000150�11360615632�027220� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������.dijitColorPalette { border:1px solid #7eabcd; background:#fff; -moz-border-radius: 0px !important; }������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000177�00000000000�011572� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/themes/tundra/TitlePane.css��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/t0000644�0000000�0000000�00000003051�11360615644�027226� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������.tundra .dijitTitlePane .dijitTitlePaneTitle { background: #cccccc; background:#fff url("images/titleBar.png") repeat-x bottom left; border:1px solid #bfbfbf; padding:3px 4px; cursor: pointer; } .tundra .dijitTitlePaneTitle * { vertical-align: middle; } .tundra .dijitTitlePane .dijitArrowNode { cursor: pointer; background-image: url('images/spriteArrows.png'); background-repeat: no-repeat; height: 7px; width: 7px; } .dj_ie6 .tundra .dijitTitlePane .dijitArrowNode { background-image: url('images/spriteArrows.gif'); } .tundra .dijitTitlePane .dijitOpen .dijitArrowNode { background-position: 0px 0px; } .tundra .dijitTitlePane .dijitClosed .dijitArrowNode { background-position: -14px 0px; } .tundra .dijitTitlePaneFocused .dijitTitlePaneTextNode { text-decoration:underline; } .tundra .dijitTitlePane .dijitArrowNodeInner { display:none; } .dijit_a11y .dijitTitlePane .dijitArrowNodeInner { display:inline !important; font-family:monospace; cursor: pointer; padding-bottom:.2em; } .dijit_a11y .dijitTitlePane .dijitArrowNode { display:none; } .tundra .dijitTitlePaneContentOuter { background: #ffffff; border:1px solid #bfbfbf; border-top: 1px solid #ccc; /* w/out this, an <h1> on the top line causes a gap between the .content and .label */ } .tundra .dijitTitlePaneContentInner { padding:10px; } /* force hasLayout to ensure borders etc, show up */ .dj_ie6 .tundra .dijitTitlePaneContentOuter, .dj_ie6 .tundra .dijitTitlePane .dijitTitlePaneTitle { zoom: 1; } .tundra .dijitTitlePaneTextNode { margin-left: 4px; margin-right: 4px; }���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000175�00000000000�011570� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/themes/tundra/Toolbar.css����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/t0000644�0000000�0000000�00000004320�11360615644�027226� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������.tundra .dijitToolbar { border-bottom: 1px solid #ccc; background:#eaeaea url("images/titleBar.png") repeat-x top left; } /* setting a min-height on ditor toolbar */ .dj_ie6 .tundra .dijitToolbar { height: 10px; } .tundra .dijitToolbar .dijitButtonNode, .tundra .dijitToolbar .dijitComboButton .dijitButtonContents, .tundra .dijitToolbar .dijitComboButton .dijitDownArrowButton { background: none; margin: 0px; padding: 0px; border: none; font-size: 12px; } .tundra .dijitToolbar .dijitButton, .tundra .dijitToolbar .dijitToggleButton, .tundra .dijitToolbar .dijitDropDownButton, .tundra .dijitToolbar .dijitComboButton .dijitButtonContents, .tundra .dijitToolbar .dijitComboButton .dijitDownArrowButton { background: none; padding: 1px; } .tundra .dijitToolbar .dijitButtonChecked, .tundra .dijitToolbar .dijitToggleButtonChecked { background-color:#d4dff2; border:1px solid #316ac5; padding: 0px; /* reduce padding to compensate for space taken by border */ } .tundra .dijitToolbar .dijitButtonCheckedHover, .tundra .dijitToolbar .dijitToggleButtonCheckedHover { background-color:#abc1e5; border:1px solid #316ac5; padding: 0px; /* reduce padding to compensate for space taken by border */ } .tundra .dijitToolbar .dijitButtonHover, .tundra .dijitToolbar .dijitToggleButtonHover, .tundra .dijitToolbar .dijitDropDownButtonHover, .tundra .dijitToolbar .dijitComboButtonHover .dijitButtonContents, .tundra .dijitToolbar .dijitComboButtonDownArrowHover .dijitDownArrowButton { /* TODO: change this from Hover to Selected so that button is still highlighted while drop down is being used */ border: 1px solid #869cbf; padding: 0px; /* reduce padding to compensate for space taken by border */ background-color:#e1e5f0; } .tundra .dijitToolbar label { padding: 3px 3px 0 6px; } .dj_ie .tundra .dijitToolbar .dijitComboButton .dijitButtonContentsFocused, .dj_ie .tundra .dijitToolbar .dijitComboButton .dijitDownArrowButtonFocused, .dj_ff2 .tundra .dijitToolbar .dijitComboButton .dijitButtonContentsFocused, .dj_ff2 .tundra .dijitToolbar .dijitComboButton .dijitDownArrowButtonFocused { /* focus border doesn't appear on <td> for FF2 or IE, so need to add it manually */ border: 1px #555 dotted !important; padding: 0px; } ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000171�00000000000�011564� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/themes/tundra/layout/��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/t0000755�0000000�0000000�00000000000�11360615644�027225� 5����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000214�00000000000�011562� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/themes/tundra/layout/BorderContainer.css�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/t0000644�0000000�0000000�00000001572�11360615636�027235� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* BorderContainer */ .tundra .dijitBorderContainer { background-color: #fcfcfc; padding: 5px; } .tundra .dijitBorderContainer-dijitBorderContainer { border: none; padding: 0px; } .tundra .dijitSplitterH, .tundra .dijitGutterH { background:#fcfcfc; border:0; height:5px; } .tundra .dijitSplitterH .dijitSplitterThumb { background:url("../images/splitContainerSizerH-thumb.png") no-repeat; top:1px; width:19px; height:2px; } .tundra .dijitSplitterV, .tundra .dijitGutterV { background:#fcfcfc; border:0; width:5px; } .tundra .dijitSplitterV .dijitSplitterThumb { background:url("../images/splitContainerSizerV-thumb.png") no-repeat; left:1px; height:19px; width:5px; } /* active splitter */ .tundra .dijitSplitterActive { font-size: 1px; background-image: none; background-color: #aaa; -moz-opacity: 0.6; opacity: 0.6; filter: Alpha(Opacity=60); margin: 0; } ��������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000210�00000000000�011556� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/themes/tundra/layout/ContentPane.css�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/t0000644�0000000�0000000�00000001101�11360615640�027214� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* ContentPane */ .tundra .dijitContentPane { padding: 0px; } /* nested layouts */ .tundra .dijitTabContainerTop-dijitContentPane, .tundra .dijitTabContainerLeft-dijitContentPane, .tundra .dijitTabContainerBottom-dijitContentPane, .tundra .dijitTabContainerRight-dijitContentPane, .tundra .dijitAccordionContainer-dijitContentPane { border: none; background-color: #fff; padding: 5px; } .tundra .dijitSplitContainer-dijitContentPane, .tundra .dijitBorderContainer-dijitContentPane { border: 1px #ccc solid; background-color: #fff; padding: 5px; }���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000215�00000000000�011563� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/themes/tundra/layout/TabContainer_rtl.css������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/t0000644�0000000�0000000�00000001465�11360615636�027236� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������.dijitRtl .tundra .dijitTab { margin-right:auto; margin-left:4px; /* space between one tab and the next in top/bottom mode */ -moz-box-orient:horizontal; text-align: right; } /* tab strips */ .dijitRtl .tundra .dijitTabContainerTopStrip, .dijitRtl .tundra .dijitTabContainerBottomStrip { padding-right: 3px; padding-left: 0px; } .dijitRtl .tundra .dijitTabInnerDiv { padding:6px 9px 5px 8px; } .dijitRtl .tundra .dijitTabPaneWrapper { #zoom: 1; } .dj_ie-rtl .tundra .dijitTabContainerLeft-tabs { margin-left: 1px !important; } .dj_ie-rtl .tundra .dijitTabContainerRight-tabs { margin-right: 1px !important; } .dijitRtl .tundra .dijitTabContainerLeft-tabs .dijitTab, .dijitRtl .tundra .dijitTabContainerRight-tabs .dijitTab { margin-left:0px; } .dj_ie .tundra .dijitTab .dijitTabInnerDiv{ width : 1%; }�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000217�00000000000�011565� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/themes/tundra/layout/AccordionContainer.css����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/t0000644�0000000�0000000�00000002154�11360615636�027232� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* Accordion */ .tundra .dijitAccordionContainer { border-color: #ccc; } /* nested classes */ .tundra .dijitTabContainer-dijitAccordionContainer { border: none; } .tundra .dijitAccordionContainer-dijitAccordionContainer { border: none; background-color: #fff; } .tundra .dijitSplitContainer-dijitAccordionContainer, .tundra .dijitBorderContainer-dijitAccordionContainer { border: 1px #ccc solid; background-color: #fff; } /* common */ .tundra .dijitAccordionPane { background-color: #e7e7e7; } .tundra .dijitAccordionTitle { background:#fafafa url("../images/titleBar.png") repeat-x bottom left; border-top: 1px solid #bfbfbf; padding: 4px 4px 4px 8px; cursor:pointer; } .tundra .dijitAccordionTitle-hover { background: #f8fafd url("../images/accordionItemHover.gif") bottom repeat-x; } .tundra .dijitAccordionTitle-selected { background: #f9f9f9 url("../images/accordionItemActive.gif") bottom repeat-x; font-weight: bold; border-top: 1px solid #aaaaaa; border-bottom: 1px solid #bfbfbf; padding: 4px 4px 4px 8px; cursor: default; } .tundra .dijitAccordionBody { background: #fff; } ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000213�00000000000�011561� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/themes/tundra/layout/SplitContainer.css��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/t0000644�0000000�0000000�00000001442�11360615632�027225� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������.tundra .dijitSplitContainerSizerH { background:url("../images/splitContainerSizerV.png") repeat-y #fff; border:0; border-left:1px solid #bfbfbf; border-right:1px solid #bfbfbf; width:7px; } .tundra .dijitSplitContainerSizerH .thumb { background:url("../images/splitContainerSizerV-thumb.png") no-repeat #ccc; left:1px; width:3px; height:19px; overflow: hidden; } .tundra .dijitSplitContainerSizerV { background:url("../images/splitContainerSizerH.png") repeat-x #fff; border:0; border-top:1px solid #bfbfbf; border-bottom:1px solid #bfbfbf; height:7px; } .tundra .dijitSplitContainerSizerV .thumb { background:url("../images/splitContainerSizerH-thumb.png") no-repeat #ccc; top:1px; width:19px; height:3px; overflow: hidden; } .tundra .dijitSplitter { border-color: #bfbfbf; }������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000211�00000000000�011557� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/themes/tundra/layout/TabContainer.css����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/t0000644�0000000�0000000�00000011655�11360615644�027237� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* Tabs, shared classes */ .tundra .dijitTabPaneWrapper { background:#fff; border:1px solid #ccc; margin: 0; padding: 0; } .tundra .dijitTab { line-height:normal; margin-right:4px; /* space between one tab and the next in top/bottom mode */ padding:0px; border:1px solid #ccc; background:#e2e2e2 url("../images/tabEnabled.png") repeat-x; } .tundra .dijitTabInnerDiv { padding:6px 8px 5px 9px; } .dijitTabSpacer { font-size: 1px; } /* checked tab*/ .tundra .dijitTabChecked { /* the selected tab (with or without hover) */ background-color:#fff; border-color: #ccc; background-image:none; } /* hovered tab */ .tundra .dijitTabHover { color: #243C5F; border-top-color:#92a0b3; border-left-color:#92a0b3; border-right-color:#92a0b3; background:#e2e2e2 url("../images/tabHover.gif") repeat-x; } .tundra .dijitTabCheckedHover { color: inherit; border:1px solid #ccc; background:#fff; } .tundra .dijitTab .dijitClosable .closeNode { /* Inline-block */ display:-moz-inline-box; /* FF2 */ display:inline-block; /* webkit and FF3 */ #zoom: 1; /* set hasLayout:true to mimic inline-block */ #display:inline; /* don't use .dj_ie since that increases the priority */ vertical-align:top; width: 1em; height: 1em; padding: 0; margin: 0; } .tundra .dijitTab .dijitClosable .closeImage { background: url("../images/tabClose.png") no-repeat right top; width: 12px; height: 12px; } .tundra .dijitTab .dijitTabButtonSpacer { height: 12px; width: 1px; } .dj_ie6 .dijitTab .dijitClosable .closeImage { background-image:url("../images/tabClose.gif"); } .tundra .dijitTabCloseButton .dijitClosable .closeImage { background-image : url("../images/tabClose.png"); } .dj_ie6 .tundra .dijitTabCloseButton .dijitClosable .closeImage { background-image : url("../images/tabClose.gif"); } .tundra .dijitTabCloseButtonHover .dijitClosable .closeImage { background-image : url("../images/tabCloseHover.png"); } .dj_ie6 .tundra .dijitTabCloseButtonHover .dijitClosable .closeImage { background-image : url("../images/tabCloseHover.gif"); } /* ================================ */ /* top tabs */ .tundra .dijitTabContainerTop-tabs { margin-bottom: -1px; border-color: #ccc; } /* top container */ .tundra .dijitTabContainerTop-container { border-top: none; } /* checked tabs */ .tundra .dijitTabContainerTop-tabs .dijitTabChecked { border-bottom-color:white; } /* strip */ .tundra .dijitTabContainerTopStrip { border: 1px solid #ccc; padding-top: 2px; padding-left: 3px; } .tundra .dijitTabContainerTopStrip { background: #f2f2f2; } /* ================================ */ /* bottom tabs */ .tundra .dijitTabContainerBottom-tabs { margin-top: -1px; border-color: #ccc; } /* bottom container */ .tundra .dijitTabContainerBottom-container { border-bottom: none; } /* checked tabs */ .tundra .dijitTabContainerBottom-tabs .dijitTabChecked { border-top-color:white; } /* strip */ .tundra .dijitTabContainerBottomStrip { padding-bottom: 2px; padding-left: 3px; border: 1px solid #ccc; } .tundra .dijitTabContainerBottomStrip { background: #f2f2f2; } /* top/bottom strip */ .tundra .dijitTabContainerBottom-spacer, .tundra .dijitTabContainerTop-spacer { height: 0px; border-top: 1px solid #ccc; background: #fff; } /* ================================ */ /* right tabs */ .tundra .dijitTabContainerRight-tabs { margin-left: -1px; border-color: #ccc; } /* right container */ .tundra .dijitTabContainerRight-container { border-right: none; } /* checked tabs */ .tundra .dijitTabContainerRight-tabs .dijitTabChecked { border-left-color:white; } /* strip */ .tundra .dijitTabContainerRightStrip { padding-right: 2px; padding-top: 3px; border: 1px solid #ccc; } .tundra .dijitTabContainerRightStrip { background: #f2f2f2; } /* ================================ */ /* left tabs */ .tundra .dijitTabContainerLeft-tabs { margin-right: -1px; border-color: #ccc; } /* left conatiner */ .tundra .dijitTabContainerLeft-container { border-left: none; } /* checked tabs */ .tundra .dijitTabContainerLeft-tabs .dijitTabChecked { border-right-color:white; } /* strip */ .tundra .dijitTabContainerLeftStrip { padding-left: 2px; padding-top: 3px; border: 1px solid #ccc; } .tundra .dijitTabContainerLeftStrip { background: #f2f2f2; } /* ================================ */ /* left/right tabs */ .tundra .dijitTabContainerLeft-tabs .dijitTab, .tundra .dijitTabContainerRight-tabs .dijitTab { margin-right:0px; margin-bottom:4px; /* space between one tab and the next in left/right mode */ } /* left/right tabstrip */ .tundra .dijitTabContainerLeft-spacer, .tundra .dijitTabContainerRight-spacer { width: 0px; border-left: 1px solid #ccc; background: #fff; } /* ================================ */ /* this resets the tabcontainer stripe when within a contentpane */ .tundra .dijitTabContainerTop-dijitContentPane .dijitTabContainerTop-tabs { border-left: 0px solid #ccc; border-top: 0px solid #ccc; border-right: 0px solid #ccc; padding-top: 0px; padding-left: 0px; } �����������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000174�00000000000�011567� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/themes/tundra/Common.css�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/t0000644�0000000�0000000�00000003763�11360615632�027235� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������/**** Disabled cursor *****/ .tundra .dijitSliderDisabled *, .tundra .dijitDisabledClickableRegion, /* a region the user would be able to click on, but it's disabled */ .tundra .dijitSpinnerDisabled *, .tundra .dijitButtonDisabled *, .tundra .dijitDropDownButtonDisabled *, .tundra .dijitComboButtonDisabled *, .tundra .dijitComboBoxDisabled * { cursor: not-allowed !important; } /* DnD avatar-specific settings */ /* For now it uses a default set of rules. Some other DnD classes can be modified as well. */ .tundra .dojoDndItemBefore { border-top: 2px solid #369; } .tundra .dojoDndItemAfter { border-bottom: 2px solid #369; } .tundra .dojoDndItemOver { cursor:pointer; } .tundra table.dojoDndAvatar { -moz-border-radius: 0; border: 1px solid #ccc; border-collapse: collapse; background-color: #fff; font-size: 75%; color: black;} .tundra .dojoDndAvatar td { border: none; } .tundra .dojoDndAvatar tr { border: none; } .tundra .dojoDndAvatarHeader td { height: 20px; padding: 0 0 0 21px; } .tundra .dojoDndAvatarItem td { padding: 2px;} .tundra.dojoDndMove .dojoDndAvatarHeader {background-color: #f58383; background-image: url(images/dndNoMove.png); background-repeat: no-repeat; background-position: 2px center;} .tundra.dojoDndCopy .dojoDndAvatarHeader {background-color: #f58383; background-image: url(images/dndNoCopy.png); background-repeat: no-repeat; background-position: 2px center;} .tundra.dojoDndMove .dojoDndAvatarCanDrop .dojoDndAvatarHeader {background-color: #97e68d; background-image: url(images/dndMove.png); background-repeat: no-repeat; background-position: 2px center;} .tundra.dojoDndCopy .dojoDndAvatarCanDrop .dojoDndAvatarHeader {background-color: #97e68d; background-image: url(images/dndCopy.png); background-repeat: no-repeat; background-position: 2px center;} .tundra .dijitContentPaneLoading { background:url('images/loading.gif') no-repeat left center; padding-left:25px; } .tundra .dijitContentPaneError { background:url('images/warning.png') no-repeat left center; padding-left:25px; } �������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000167�00000000000�011571� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/themes/tundra/form/����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/t0000755�0000000�0000000�00000000000�11360615646�027227� 5����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000205�00000000000�011562� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/themes/tundra/form/Common_rtl.css��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/t0000644�0000000�0000000�00000000324�11360615640�027222� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������.dijitRtl .tundra .dijitComboBox .dijitButtonNode, .dijitRtl .dijitSpinner .dijitButtonNode { /* line between the input area and the drop down button */ border-color: #9b9b9b; border-width: 0px 1px 0px 0px; }������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000201�00000000000�011556� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/themes/tundra/form/Slider.css������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/t0000644�0000000�0000000�00000007474�11360615642�027241� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������.tundra .dijitSliderProgressBarH { border-color: #aab0bb; background: #c0c2c5 url("../images/sliderFull.png") repeat-x top left; } .tundra .dijitSliderProgressBarV { border-color: #aab0bb; background: #c0c2c5 url("../images/sliderFullVertical.png") repeat-y bottom left; } .tundra .dijitSliderFocused .dijitSliderProgressBarH, .tundra .dijitSliderFocused .dijitSliderLeftBumper { background-image:url("../images/sliderFullFocus.png"); } .tundra .dijitSliderFocused .dijitSliderProgressBarV, .tundra .dijitSliderFocused .dijitSliderBottomBumper { background-image:url("../images/sliderFullVerticalFocus.png"); } .tundra .dijitSliderRemainingBarV { border-color: #b4b4b4; background: #dcdcdc url("../images/sliderEmptyVertical.png") repeat-y bottom left; } .tundra .dijitSliderRemainingBarH { border-color: #b4b4b4; background: #dcdcdc url("../images/sliderEmpty.png") repeat-x top left; } .tundra .dijitSliderBar { border-style: solid; outline:1px; } .tundra .dijitSliderFocused .dijitSliderBar { border-color:#888; } .dijit_a11y .dijitSliderProgressBar { background-color:#888 !important; } .tundra .dijitSliderImageHandleH { border:0px; width:16px; height:16px; background:url("../images/preciseSliderThumb.png") no-repeat center top; cursor:pointer; } .tundra .dijitSliderFocused .dijitSliderImageHandleH { background-image:url("../images/preciseSliderThumbFocus.png"); #background-image:url("../images/preciseSliderThumbFocus.gif"); } .dj_ie6 .tundra .dijitSliderImageHandleH { background-image:url("../images/preciseSliderThumb.gif"); } .tundra .dijitSliderLeftBumper { border-left-width: 1px; border-color: #aab0bb; background: #c0c2c5 url("../images/sliderFull.png") repeat-x top left; } .tundra .dijitSliderRightBumper { background: #dcdcdc url("../images/sliderEmpty.png") repeat-x top left; border-color: #b4b4b4; border-right-width: 1px; } .tundra .dijitSliderImageHandleV { border:0px; width:16px; height:16px; background:url("../images/sliderThumb.png") no-repeat center center; cursor:pointer; } .tundra .dijitSliderFocused .dijitSliderImageHandleV { background-image:url("../images/sliderThumbFocus.png"); } .dj_ie6 .tundra .dijitSliderFocused .dijitSliderImageHandleV { background-image:url("../images/sliderThumbFocus.gif"); } .tundra .dijitSliderBottomBumper { border-bottom-width: 1px; border-color: #aab0bb; background: #c0c2c5 url("../images/sliderFullVertical.png") repeat-y bottom left; } .tundra .dijitSliderTopBumper { background: #dcdcdc url("../images/sliderEmptyVertical.png") repeat-y top left; border-color: #b4b4b4; border-top-width: 1px; } .tundra .dijitSliderDecrementIconH, .tundra .dijitSliderDecrementIconV, .tundra .dijitSliderIncrementIconH, .tundra .dijitSliderIncrementIconV { cursor: pointer; background-image: url('../images/spriteArrows.png'); background-repeat: no-repeat; margin: 5px; height: 7px; width: 7px; font-size: 1px; } .dj_ie6 .tundra .dijitSliderDecrementIconH, .dj_ie6 .tundra .dijitSliderDecrementIconV, .dj_ie6 .tundra .dijitSliderIncrementIconH, .dj_ie6 .tundra .dijitSliderIncrementIconV { background-image: url('../images/spriteArrows.gif'); } .tundra .dijitSliderDecrementIconH { background-position: -7px 0px; } .tundra .dijitSliderIncrementIconH { background-position: -14px 0px; } .tundra .dijitSliderDecrementIconV { background-position: 0px 0px; } .tundra .dijitSliderIncrementIconV { background-position: -21px 0px; } .tundra .dijitSliderButtonInner { visibility:hidden; } .tundra .dijitSliderDisabled { opacity:0.6 !important; } .dj_ie6 .tundra .dijitSliderDisabled, .dj_ie6 .tundra .dijitSliderDisabled .dijitRuleContainer, .dj_ie6 .tundra .dijitSliderDisabled .dijitSliderRemainingBar, .dj_ie6 .tundra .dijitSliderDisabled .dijitSliderProgressBar { filter: gray() alpha(opacity=40); } .tundra .dijitSliderDisabled * { cursor: not-allowed !important; }����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000205�00000000000�011562� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/themes/tundra/form/Slider_rtl.css��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/t0000644�0000000�0000000�00000001420�11360615642�027222� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������.dijitRtl .tundra .dijitSliderProgressBarH, .dijitRtl .tundra .dijitSliderRemainingBarH, .dijitRtl .tundra .dijitSliderLeftBumper, .dijitRtl .tundra .dijitSliderRightBumper, .dijitRtl .tundra .dijitSliderTopBumper { background-position: top right; } .dijitRtl .tundra .dijitSliderProgressBarV, .dijitRtl .tundra .dijitSliderRemainingBarV, .dijitRtl .tundra .dijitSliderBottomBumper { background-position: bottom right; } .dijitRtl .tundra .dijitSliderLeftBumper { border-left-width: 0px; border-right-width: 1px; } .dijitRtl .tundra .dijitSliderRightBumper { border-left-width: 1px; border-right-width: 0px; } .dijitRtl .tundra .dijitSliderIncrementIconH { background-position: -7px 0px; } .dijitRtl .tundra .dijitSliderDecrementIconH { background-position: -14px 0px; } ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000206�00000000000�011563� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/themes/tundra/form/RadioButton.css�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/t0000644�0000000�0000000�00000002636�11360615632�027233� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������.tundra .dijitToggleButton .dijitRadio, .tundra .dijitToggleButton .dijitRadioIcon { background-image: url('../images/checkmarkNoBorder.png'); } .dj_ie6 .tundra .dijitToggleButton .dijitRadio, .dj_ie6 .tundra .dijitToggleButton .dijitRadioIcon { background-image: url('../images/checkmarkNoBorder.gif'); } .tundra .dijitRadio, .tundra .dijitRadioIcon { /* inside a toggle button */ background-image: url('../images/checkmark.png'); /* checkbox sprite image */ background-repeat: no-repeat; width: 16px; height: 16px; margin: 0; padding: 0; } .dj_ie6 .tundra .dijitRadio, .dj_ie6 .tundra .dijitRadioIcon { /* inside a toggle button */ background-image: url('../images/checkmark.gif'); /* checkbox sprite image */ } .tundra .dijitRadio, .tundra .dijitToggleButton .dijitRadioIcon { /* unselected */ background-position: -112px; } .tundra .dijitRadioDisabled { /* unselected and disabled */ background-position: -144px; } .tundra .dijitRadioCheckedDisabled { /* selected but disabled */ background-position: -128px; } .tundra .dijitRadioHover { /* hovering over an unselected enabled radio button */ background-position: -176px; } .tundra .dijitRadioChecked, .tundra .dijitRadioCheckedHover, .tundra .dijitToggleButtonChecked .dijitRadioIcon { /* selected. Since clicking a selected radio button doesn't change anything, there's * no hover effect on selected radio buttons. */ background-position: -96px; } ��������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000201�00000000000�011556� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/themes/tundra/form/Common.css������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/t0000644�0000000�0000000�00000010126�11360615642�027225� 0����������������������������������������������������������������������������������������������������ustar �������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������� /**** dijit.form.TextBox dijit.form.ValidationTextBox dijit.form.SerializableTextBox dijit.form.RangeBoundTextBox dijit.form.NumberTextBox dijit.form.CurrencyTextBox dijit.form.NumberSpinner dijit.form.ComboBox (partial) ****/ .tundra .dijitInputField INPUT, .tundra .dijitTextBox, .tundra .dijitComboBox, .tundra .dijitSpinner { margin: 0em 0.1em; } .tundra .dijitTextBox, .tundra .dijitComboBox, .tundra .dijitSpinner, .tundra .dijitTextArea { font-family: sans-serif; font-size: 100%; } .tundra .dijitTextArea { padding: 3px; } .tundra .dijitTextBox, .tundra .dijitComboBox, .tundra .dijitSpinner, .tundra .dijitTextArea, .tundra .dijitInlineEditor input { /* For all except dijit.form.NumberSpinner: the actual input element. For TextBox, ComboBox, Spinner: the div that contains the input. Otherwise the actual input element. */ background:#fff url("../images/validationInputBg.png") repeat-x top left; #background:#fff url('../images/validationInputBg.gif') repeat-x top left; border:1px solid #b3b3b3; line-height: normal; } .tundra .dijitTextBoxDisabled, .tundra .dijitComboBoxDisabled, .tundra .dijitSpinnerDisabled, .tundra .dijitTextAreaDisabled { color: gray; } .dj_safari .tundra .dijitTextBoxDisabled, .dj_safari .tundra .dijitComboBoxDisabled, .dj_safari .tundra .dijitSpinnerDisabled, .dj_safari .tundra .dijitTextAreaDisabled { color: #eee; } /* ComboBox specifix rules*/ .tundra .dijitComboBox .dijitInputField { padding: 1px 0; } .tundra .dijitComboBox .dijitButtonNode { padding: 1px 0.2em; } .tundra .dijitComboBox .dijitButtonNode, .tundra .dijitSpinner .dijitButtonNode { /* line between the input area and the drop down button */ border-color: #9b9b9b; border-width: 0px 0px 0px 1px; border-style: solid; } .tundra .dijitTextBoxFocused, .tundra .dijitComboBoxFocused, .tundra .dijitSpinnerFocused, .tundra .dijitTextAreaFocused { /* input field when focused (ie: typing affects it) */ border-color:#406b9b; } .tundra .dijitComboBoxFocused .dijitButtonNode, .tundra .dijitSpinnerFocused .dijitButtonNode { border-left-color:#366dba; } .tundra .dijitSpinnerFocused .dijitDownArrowButton { border-top-color:#366dba; } .tundra .dijitError { background-color:#f9f7ba; background-image:none; } .dj_ie6 .tundra .dijitError INPUT { /* background-color: transparent on an <input> doesn't work on IE6 */ background-color:#f9f7ba !important; } .tundra .dijitErrorFocused { background-color:#f9f999; background-image:none; } .dj_ie6 .tundra .dijitErrorFocused INPUT { /* background-color: transparent on an <input> doesn't work on IE6 */ background-color:#f9f999 !important; } /* Validation errors */ .tundra .dijitValidationIcon { /* prevent height change when widget goes from valid to invalid state */ width: 16px; background: transparent url('../images/warning.png') no-repeat center center; } /* inline edit boxen */ .tundra .dijitInlineValue { /* span around an inline-editable value when NOT in edit mode */ padding:3px; margin:4px; } /* MOW: trying to get this to look like a mini-dialog. Advised? */ .tundra .dijitInlineEditor { /* fieldset surrounding an inlineEditor in edit mode */ display: inline-block; display: -moz-inline-stack; #display:inline; /* border-style: solid; border-color: #7788a0 #344257 #344257 #7788a0; border-width:1px 2px 2px 1px; -moz-border-radius:0px 2px 0px 2px; make BL and TR corners indent on Moz so it looks like we have a shadow background-color:white; */ } .dijitInlineEditor .saveButton, .dijitInlineEditor .cancelButton { margin:3px 3px 3px 0px; } .RichTextEditable { border:1px solid #bfbfbf; border-top:0; } /* * IE6: can't display PNG images with gradient transparency. * Want to use filter property for those images, but then need to specify a path relative * to the main page, rather than relative to this file... using gifs for now */ /* The highlight is shown in the ComboBox menu. */ .tundra .dijitComboBoxHighlightMatch { background-color:#a5beda; } .tundra .dijitFocusedLabel { /* for checkboxes or radio buttons, hatch border around the corresponding label, to indicate focus */ outline: 1px dotted #666666; } ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000201�00000000000�011556� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/themes/tundra/form/Button.css������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/t0000644�0000000�0000000�00000010211�11360615640�027216� 0����������������������������������������������������������������������������������������������������ustar �������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������� /***** dijit.form.Button dijit.form.DropDownButton dijit.form.ComboButton dijit.form.ComboBox (partial) *****/ .tundra .dijitButtonNode { /* enabled state - inner */ border: 1px solid #c0c0c0; border-bottom: 1px solid #9b9b9b; padding: 0.1em 0.2em 0.2em 0.2em; background: #fff url("../images/buttonEnabled.png") repeat-x bottom left; } .tundra .dijitButtonNode button { border: 0px; background-color: transparent; } .tundra .dijitButtonText { text-align: center; padding: 0 0.3em; } .tundra .dijitDisabled .dijitButtonText { color: #7F7F7F; } /* .tundra .dijitComboBox .dijitButtonNode { border: 0px; } */ .tundra .dijitArrowButton { color: #111; } .tundra .dijitComboButton .dijitDownArrowButton { padding-right:4px; } .dj_ff2 .tundra .dijitComboButton .dijitButtonContentsFocused, .dj_ff2 .tundra .dijitComboButton .dijitDownArrowButtonFocused { border: 1px solid transparent; /*make transparent so FF2 focus rect. is visible */ } .tundra .dijitButtonDisabled .dijitButtonNode, .tundra .dijitToggleButtonDisabled .dijitButtonNode, .tundra .dijitDropDownButtonDisabled .dijitButtonNode, .tundra .dijitComboButtonDisabled .dijitButtonNode, .tundra .dijitComboBoxDisabled, .tundra .dijitSpinnerDisabled, .tundra .dijitSpinnerDisabled .dijitButtonNode { /* disabled state - inner */ /* border-color: #d5d5d5 #bdbdbd #bdbdbd #d5d5d5; */ border-color: #d5d5d5 #d5d5d5 #bdbdbd #d5d5d5; background:#e4e4e4 url("../images/buttonDisabled.png") top repeat-x; } .tundra .dijitButtonHover .dijitButtonNode, .tundra .dijitButtonNodeHover, .tundra .dijitToggleButtonHover .dijitButtonNode, .tundra .dijitDropDownButtonHover .dijitButtonNode, .tundra .dijitComboButtonHover .dijitButtonContents, .tundra .dijitComboButtonDownArrowHover .dijitDownArrowButton, .tundra .dijitComboBoxHover .dijitDownArrowButton, .tundra .dijitSpinnerUpArrowHover .dijitUpArrowButton, .tundra .dijitSpinnerDownArrowHover .dijitDownArrowButton { /* hover state - inner */ /* TODO: change from Hover to Selected so that button is still highlighted while drop down is being used */ border-color: #a5beda; border-bottom-color:#5c7590; color:#243C5F; background:#fcfdff url("../images/buttonHover.png") repeat-x bottom; } .tundra .dijitSpinnerUpArrowActive .dijitUpArrowButton, .tundra .dijitSpinnerDownArrowActive .dijitDownArrowButton, .tundra .dijitButtonActive .dijitButtonNode, .tundra .dijitToggleButtonActive .dijitButtonNode, .tundra .dijitDropDownButtonActive .dijitButtonNode, .tundra .dijitComboButtonActive .dijitButtonContents, .tundra .dijitDownArrowActive .dijitDownArrowButton, .tundra .dijitComboBoxActive .dijitDownArrowButton { /* active state - inner (for when you are pressing a normal button, or * when a toggle button is in a depressed state */ border-color:#366dba; background: #ededed url("../images/buttonActive.png") bottom repeat-x; } .tundra .dijitArrowButtonInner { background-image:url("../images/spriteArrows.png"); background-position: left top; width: 7px; height: 7px; font-size: 1px; margin: 0px 4px 0px 5px; } .dj_ie6 .tundra .dijitArrowButtonInner { background-image:url("../images/spriteArrows.gif"); } .tundra .dijitDisabled .dijitArrowButtonInner { background-position: -28px top; } .tundra .dijitUpArrowButton .dijitArrowButtonInner { background-position: -21px top; } .tundra .dijitDisabled .dijitUpArrowButton .dijitArrowButtonInner { background-position: -49px top; } /* Since ComboBox doesn't have it's own file... */ .tundra .dijitComboBox .dijitArrowButton .dijitArrowButtonInner { background-image: url("../images/comboArrowDown.gif"); background-repeat: no-repeat; background-attachment: scroll; background-position: center center; height: auto; font-size: 100%; font-size: inherit; } .tundra .dijitComboBoxHover .dijitArrowButtonInner { /* TODO: url("../images/arrowDownHover.png") but in IE6 it flickers some? */ } /* Since Spinner doesn't have it's own file */ .tundra .dijitSpinner .dijitArrowButtonInner { display: block; /* inline just isnt going to work for us here IMO */ position:absolute; top: 50%; margin-top: -4px; /* half its height */ left: 50%; margin-left: -4px; /* half its width */ line-height: 2px; } ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000203�00000000000�011560� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/themes/tundra/form/Checkbox.css����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/t0000644�0000000�0000000�00000002461�11360615646�027234� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������.tundra .dijitToggleButton .dijitCheckBoxIcon { background-image: url('../images/checkmarkNoBorder.png'); } .dj_ie6 .tundra .dijitToggleButton .dijitCheckBoxIcon { background-image: url('../images/checkmarkNoBorder.gif'); } .tundra .dijitCheckBox, .tundra .dijitCheckBoxIcon /* inside a toggle button */ { background-image: url('../images/checkmark.png'); /* checkbox sprite image */ background-repeat: no-repeat; width: 16px; height: 16px; margin: 0 2px 0 0; padding: 0; } .dj_ie6 .tundra .dijitCheckBox, .dj_ie6 .tundra .dijitCheckBoxIcon /* inside a toggle button */ { background-image: url('../images/checkmark.gif'); /* checkbox sprite image */ } .tundra .dijitCheckBox, .tundra .dijitToggleButton .dijitCheckBoxIcon { /* unchecked */ background-position: -16px; } .tundra .dijitCheckBoxChecked, .tundra .dijitToggleButtonChecked .dijitCheckBoxIcon { /* checked */ background-position: 0px; } .tundra .dijitCheckBoxDisabled { /* disabled */ background-position: -48px; } .tundra .dijitCheckBoxCheckedDisabled { /* disabled but checked */ background-position: -32px; } .tundra .dijitCheckBoxHover { /* hovering over an unchecked enabled checkbox */ background-position: -80px; } .tundra .dijitCheckBoxCheckedHover { /* hovering over a checked enabled checkbox */ background-position: -64px; } ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000162�00000000000�011564� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/themes/nihilo/���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/t0000755�0000000�0000000�00000000000�11360615644�027225� 5����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000172�00000000000�011565� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/themes/nihilo/Menu.css�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/t0000644�0000000�0000000�00000003220�11360615644�027224� 0����������������������������������������������������������������������������������������������������ustar �������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������� /* Menu */ .nihilo .dijitMenu { border: 1px solid #d3d3d3; margin: 0px; padding: 0px; background-color: #fff; } .nihilo .dijitMenuItem { background-color: #fff; font-family: sans-serif; margin: 0px; color: #243C5F; } .nihilo .dijitMenuPreviousButton, .nihilo .dijitMenuNextButton { font-style: italic; } .nihilo .dijitMenuItem TD { padding:1px; } .nihilo .dijitMenuItemHover { background-color: #ffe284; /* #95a0b0; #555555; #aaaaaa; #646464; #60a1ea; #848484; */ color: #243C5F; } .nihilo .dijitMenuItemIcon { width: 15px; height: 15px; /* padding-right: 3px; */ } .nihilo .dijitMenuExpand { /* margin-top:4px; */ width:15px; height:15px; background-image: url('images/spriteRoundedIconsSmall.png'); background-repeat: no-repeat; background-position: -30px top; display:block; } .dj_ie6 .nihilo .dijitMenuExpand { background-image:url('images/spriteRoundedIconsSmall.gif'); } .nihilo .dijitMenuSeparator { background-color: #fff; height: 1px; } /* separator can be two pixels -- set border of either one to 0px to have only one */ .nihilo .dijitMenuSeparatorTop { border-bottom: 1px solid #fff; /*97adcb; */ } .nihilo .dijitMenuSeparatorBottom { border-top: 1px solid #d3d3d3; } /* the checked menu item */ .nihilo .dijitCheckedMenuItemIconChar { display: none; } .nihilo .dijitCheckedMenuItemIcon { background-image: url('images/spriteCheckbox.gif'); background-position: -16px; } .nihilo .dijitCheckedMenuItemIconChecked { background-position: 0px; } .nihilo .dijitMenuItemHover .dijitCheckedMenuItemIcon { background-position: -80px; } .nihilo .dijitMenuItemHover .dijitCheckedMenuItemIconChecked { background-position: -64px; }��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000176�00000000000�011571� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/themes/nihilo/Menu_rtl.css���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/t0000644�0000000�0000000�00000000302�11360615636�027223� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* Menu */ .dijitRtl .nihilo .dijitMenuItem .dijitMenuItemIcon { padding-left: 3px; padding-right: 0px; } .dijitRtl .nihilo .dijitMenuItem .dijitMenuExpand { background-position: 0px top; }������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000174�00000000000�011567� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/themes/nihilo/Editor.css�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/t0000644�0000000�0000000�00000006774�11360615634�027244� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������.dijitIEFixedToolbar { position:absolute; /* top:0; */ top: expression(eval((document.documentElement||document.body).scrollTop)); } .nihilo .dijitToolbar .dijitToolbarSeparator { background: url('images/editor.gif'); } /**** ICONS *****/ .nihilo .dijitEditorIcon { background-image: url('images/editor.gif'); /* editor icons sprite image */ background-repeat: no-repeat; width: 18px; height: 18px; text-align: center; } .nihilo .dijitDisabled .dijitEditorIcon { background-image: url('images/editorDisabled.gif'); /* editor icons sprite image */ } .nihilo .dijitEditorIconSep { background-position: 0px; } .nihilo .dijitEditorIconBackColor { background-position: -18px; } .nihilo .dijitEditorIconBold { background-position: -36px; } .nihilo .dijitEditorIconCancel { background-position: -54px; } .nihilo .dijitEditorIconCopy { background-position: -72px; } .nihilo .dijitEditorIconCreateLink { background-position: -90px; } .nihilo .dijitEditorIconCut { background-position: -108px; } .nihilo .dijitEditorIconDelete { background-position: -126px; } .nihilo .dijitEditorIconForeColor { background-position: -144px; } .nihilo .dijitEditorIconHiliteColor { background-position: -162px; } .nihilo .dijitEditorIconIndent { background-position: -180px; } .nihilo .dijitEditorIconInsertHorizontalRule { background-position: -198px; } .nihilo .dijitEditorIconInsertImage { background-position: -216px; } .nihilo .dijitEditorIconInsertOrderedList { background-position: -234px; } .nihilo .dijitEditorIconInsertTable { background-position: -252px; } .nihilo .dijitEditorIconInsertUnorderedList { background-position: -270px; } .nihilo .dijitEditorIconItalic { background-position: -288px; } .nihilo .dijitEditorIconJustifyCenter { background-position: -306px; } .nihilo .dijitEditorIconJustifyFull { background-position: -324px; } .nihilo .dijitEditorIconJustifyLeft { background-position: -342px; } .nihilo .dijitEditorIconJustifyRight { background-position: -360px; } .nihilo .dijitEditorIconLeftToRight { background-position: -378px; } .nihilo .dijitEditorIconListBulletIndent { background-position: -396px; } .nihilo .dijitEditorIconListBulletOutdent { background-position: -414px; } .nihilo .dijitEditorIconListNumIndent { background-position: -432px; } .nihilo .dijitEditorIconListNumOutdent { background-position: -450px; } .nihilo .dijitEditorIconOutdent { background-position: -468px; } .nihilo .dijitEditorIconPaste { background-position: -486px; } .nihilo .dijitEditorIconRedo { background-position: -504px; } .nihilo .dijitEditorIconRemoveFormat { background-position: -522px; } .nihilo .dijitEditorIconRightToLeft { background-position: -540px; } .nihilo .dijitEditorIconSave { background-position: -558px; } .nihilo .dijitEditorIconSpace { background-position: -576px; } .nihilo .dijitEditorIconStrikethrough { background-position: -594px; } .nihilo .dijitEditorIconSubscript { background-position: -612px; } .nihilo .dijitEditorIconSuperscript { background-position: -630px; } .nihilo .dijitEditorIconUnderline { background-position: -648px; } .nihilo .dijitEditorIconUndo { background-position: -666px; } .nihilo .dijitEditorIconWikiword { background-position: -684px; } .nihilo .dijitEditorIconToggleDir { background-position: -540px; /* padding: 0; margin: 0; color:#555555; font-family:verdana,arial,sans-serif; font-weight: 800; font-size: 70%; */} .nihilo .dijitEditorIconTabIndent { background-position: -702px; } .nihilo .dijitEditorIconSelectAll { background-position: -720px; } .nihilo .dijitEditorIconUnlink { background-position: -738px; }����././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000176�00000000000�011571� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/themes/nihilo/Calendar.css���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/t0000644�0000000�0000000�00000006666�11360615642�027243� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* Calendar*/ .nihilo .dijitCalendarIncrementControl { /* next/prev month buttons */ width:15px; height:15px; background-image: url("images/spriteRoundedIconsSmall.png"); background-repeat: no-repeat } .dj_ie6 .nihilo .dijitCalendarIncrementControl { font-size:.1em; background-image: url("images/spriteRoundedIconsSmall.gif"); } .nihilo .dijitCalendarIncreaseInner, .nihilo .dijitCalendarDecreaseInner { visibility:hidden; } .nihilo .dijitCalendarDecrease { background-position: top left; } .nihilo .dijitCalendarIncrease { background-position: -30px top; } .nihilo table.dijitCalendarContainer { font-size: 100%; border-spacing: 0; border-collapse: separate; border: 1px solid #ccc; margin: 0; } .nihilo .dijitCalendarMonthContainer th { /* month header cell */ background:#d3d3d3 url("images/titleBar.png") repeat-x top; padding-top:.3em; padding-bottom:.2em; text-align:center; } .dj_ie6 .nihilo .dijitCalendarMonthContainer th { padding-top:.2em; padding-bottom:.1em; } .nihilo .dijitCalendarDayLabelTemplate { /* day of week labels */ background:#fefefe; font-weight:normal; padding-top:.15em; padding-bottom:.2em; border-bottom: 1px solid #eeeeee; color:#293a4b; text-align:center; } .nihilo .dijitCalendarBodyContainer { border-bottom: 1px solid #eeeeee; } .nihilo .dijitCalendarMonthLabel { color:#293a4b; font-weight: bold; } .nihilo .dijitCalendarDateTemplate { /* style for each day cell */ font-size: 0.9em; font-weight: bold; text-align: center; padding: 0.3em 0.3em 0.05em 0.3em; letter-spacing: 1px; background-color: #fdfdfd; border:#fdfdfd solid 1px !important; } .dj_ie .nihilo .dijitCalendarDateTemplate { padding: 0.1em .33em 0.02em .33em; } .nihilo .dijitCalendarPreviousMonth, .nihilo .dijitCalendarNextMonth { /* days that are part of the previous or next month */ color:#999999; background-color:#f5f5f5 !important; border:#f5f5f5 solid 1px !important; } .nihilo .dijitCalendarPreviousMonthDisabled, .nihilo .dijitCalendarNextMonthDisabled { /* days that are part of the previous or next month - disabled*/ background-color:#a4a5a6 !important; } .nihilo .dijitCalendarCurrentMonth { /* days that are part of this month */ } .nihilo .dijitCalendarCurrentMonthDisabled { /* days that are part of this month - disabled */ background-color:#bbbbbc !important; } .nihilo .dijitCalendarDisabledDate { /* one or the other? */ /* background: url(images/noX.gif) no-repeat center center !important; */ text-decoration:line-through !important; cursor:default !important; } .nihilo .dijitCalendarCurrentDate { /* cell for today's date */ text-decoration:underline; font-weight:bold; } .nihilo .dijitCalendarSelectedDate { /* cell for the selected date */ background-color:#ffe284 !important; color:black !important; border:#f7c95c solid 1px !important; } .nihilo .dijitCalendarYearContainer { /* footer of the table that contains the year display/selector */ background:white url("images/titleBar.png") repeat-x top; } .nihilo .dijitCalendarYearLabel { /* container for all of 3 year labels */ margin:0; padding:0.4em 0 0.25em 0; text-align:center; } .nihilo .dijitCalendarSelectedYear { /* label for selected year */ color:black; padding:0.2em; padding-bottom:0.1em; background-color:#ffe284 !important; border:#f7c95c solid 1px !important; } .nihilo .dijitCalendarNextYear, .nihilo .dijitCalendarPreviousYear { /* label for next/prev years */ color:black !important; font-weight:normal; }��������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000172�00000000000�011565� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/themes/nihilo/Tree.css�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/t0000644�0000000�0000000�00000003407�11360615632�027230� 0����������������������������������������������������������������������������������������������������ustar �������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������� /* Tree */ .nihilo .dijitTreeNode { background : url('images/treeI.gif') no-repeat; background-position : top left; background-repeat : repeat-y; margin-left: 19px; zoom: 1; /* MOW: what the heck is this doing in here? */ } /* left vertical line (grid) for all nodes */ .nihilo .dijitTreeIsLast { background: url('images/treeI_half.gif') no-repeat; } .nihilo .dijitTreeLabel { font-weight: normal; margin-left: 3px; } .nihilo .dijitTreeIsRoot { margin-left: 0; background-image: none; } .nihilo .dijitTreeExpando { width: 18px; height: 18px; } .nihilo .dijitTreeContent { min-height: 18px; min-width: 18px; padding-left:1px; } .nihilo .dijitTreeExpand { width: 18px; height: 18px; background-repeat : no-repeat; } /* same style as IE selection */ .nihilo .dijitTreeNodeEmphasized { background-color: Highlight; color: HighlightText; } /* don't use :focus due to opera and IE's lack of support on div's */ .nihilo .dijitTreeLabelFocused { outline: 1px invert dotted; background:#dde7f2; } .nihilo .dijitTreeExpandoOpened { background: url('images/spriteTree.gif') no-repeat -18px top; } .nihilo .dijitTreeExpandoClosed { background-image: url('images/spriteTree.gif'); } .nihilo .dijitTreeExpandoLeaf { background: url('images/spriteTree.gif') no-repeat -36px top; } .nihilo .dijitTreeExpandoLoading { background-image: url('images/treeExpand_loading.gif'); } .nihilo .dijitTreeIcon { width: 16px; height: 16px; } .nihilo .dijitFolderOpened { background: url('images/spriteDivIcons.gif') no-repeat -16px top; } .nihilo .dijitFolderClosed { background: url('images/spriteDivIcons.gif') no-repeat top left; } .nihilo .dijitLeaf { background: url('images/spriteDivIcons.gif') no-repeat -32px top; }���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000174�00000000000�011567� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/themes/nihilo/Dialog.css�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/t0000644�0000000�0000000�00000010227�11360615632�027226� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* Dialog */ .nihilo .dijitDialog { background: #eee; border: 1px solid #d3d3d3; -webkit-box-shadow: 0px 5px 10px #adadad; padding: 0px; } .nihilo .dijitDialog .dijitDialogTitle { border-top: none; border-left: none; border-right: none; font-size: 0.9em; color: #3243C5F; } .nihilo .dijitDialog .dijitDialogPaneContent { background: #ffffff; border:none; border-top: 1px solid #d3d3d3; /* w/out this, an <h1> on the top line causes a gap between the .content and .label */ padding:10px; } .nihilo .dijitDialogTitleBar { /* outer container for the titlebar of the dialog */ background: #fafafa url("images/titleBar.png") repeat-x top left; padding: 5px 6px 3px 6px; cursor: move; outline:0; /* remove this line if keyboard focus on dialog startup is an issue. tab still takes you to first focusable element */ } .nihilo .dijitDialogTitle { /* typography and styling of the dialog title */ font-weight: bold; padding: 4px; outline:0; } .nihilo .dijitDialogCloseIcon { /* the default close icon for the dialog */ background : url("images/spriteRoundedIconsSmall.png") no-repeat right top; position: absolute; vertical-align: middle; right: 6px; top: 4px; height: 15px; width: 15px; cursor: pointer; } .dj_ie .nihilo .dijitDialogCloseIcon { background : url("images/spriteRoundedIconsSmall.gif") no-repeat right top; } .nihilo .dijitDialogContent { /* the body of the dialog */ padding: 8px; } /* Tooltip and TooltipDialog */ .nihilo .dijitTooltip, .nihilo .dijitTooltipDialog { /* the outermost dom node, holding the connector and container */ background: transparent; /* make the area on the sides of the arrow transparent */ } .dijitTooltipBelow { /* leave room for arrow above content */ padding-top: 10px; } .dijitTooltipAbove { /* leave room for arrow below content */ padding-bottom: 10px; } .nihilo .dijitTooltipContainer { /* The part with the text. NOTE: FF doesn't clip images used as CSS bgs if you specify a border radius. If you use a solid color, it does. Webkit gets it right. Sigh. background: #ffffff url("images/popupMenuBg.gif") repeat-x bottom left; */ background-color: #fff; border:1px solid #d3d3d3; padding:0.45em; } .nihilo .dijitTooltipConnector { /* the arrow piece */ border:0px; z-index: 2; } .nihilo .dijitTooltipABRight .dijitTooltipConnector { /* above or below tooltip, but the arrow appears on the right, and the right edges of target and tooltip are aligned rather than the left */ left: auto !important; right: 6px; } .nihilo .dijitTooltipBelow .dijitTooltipConnector { /* the arrow piece for tooltips below an element */ top: 0px; left: 6px; background:url("images/tooltipConnectorUp.png") no-repeat top left; width:17px; height:11px; } .dj_ie .nihilo .dijitTooltipBelow .dijitTooltipConnector { background-image: url("images/tooltipConnectorUp.gif"); } .nihilo .dijitTooltipAbove .dijitTooltipConnector { /* the arrow piece for tooltips above an element */ bottom: 0px; left: 6px; background:url("images/tooltipConnectorDown.png") no-repeat top left; width:17px; height:11px; } .dj_ie .nihilo .dijitTooltipAbove .dijitTooltipConnector { background-image: url("images/tooltipConnectorDown.gif"); } .dj_ie6 .nihilo .dijitTooltipAbove .dijitTooltipConnector { bottom: -5px; } .nihilo .dijitTooltipLeft { padding-right: 10px; } .dj_ie6 .nihilo .dijitTooltipLeft { padding-left: 11px; } .nihilo .dijitTooltipLeft .dijitTooltipConnector { /* the arrow piece for tooltips to the left of an element, bottom borders aligned */ right: 0px; bottom: 3px; background:url("images/tooltipConnectorRight.png") no-repeat top left; width:11px; height:17px; } .dj_ie .nihilo .dijitTooltipLeft .dijitTooltipConnector { background-image: url("images/tooltipConnectorRight.gif"); } .nihilo .dijitTooltipRight { padding-left: 10px; } .nihilo .dijitTooltipRight .dijitTooltipConnector { /* the arrow piece for tooltips to the right of an element, bottom borders aligned */ left: 0px; bottom: 3px; background:url("images/tooltipConnectorLeft.png") no-repeat top left; width:11px; height:17px; } .dj_ie .nihilo .dijitTooltipRight .dijitTooltipConnector { background-image: url("images/tooltipConnectorLeft.gif"); } �������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000200�00000000000�011555� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/themes/nihilo/Editor_rtl.css�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/t0000644�0000000�0000000�00000000620�11360615636�027226� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* Editor */ .dijitRtl .nihilo .dijitEditorIcon { background-image: url('images/editor_rtl.gif'); /* editor icons sprite image */ } .dijitRtl .nihilo .dijitDisabled .dijitEditorIcon { background-image: url('images/editorDisabled_rtl.gif'); /* editor icons sprite image */ } /* Toolbar */ .dijitRtl .nihilo .dijitToolbar .dijitToolbarSeparator { background-image: url('images/editor_rtl.gif'); } ����������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000171�00000000000�011564� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/themes/nihilo/images/��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/t0000755�0000000�0000000�00000000000�11360615646�027227� 5����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000205�00000000000�011562� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/themes/nihilo/images/titleBar.png��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/t0000644�0000000�0000000�00000000210�11360615634�027217� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������‰PNG  ��� IHDR������0���´f<Õ���tEXtSoftware�Adobe ImageReadyqÉe<���*IDATxÚbú,¿~ýb```addQLLLˆI€"^%¹† `�å gßÈÈ¡����IEND®B`‚����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000211�00000000000�011557� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/themes/nihilo/images/buttonActive.png����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/t0000644�0000000�0000000�00000000213�11360615632�027220� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������‰PNG  ��� IHDR������d���Ì» ���tEXtSoftware�Adobe ImageReadyqÉe<���-IDATxÚbúL 0€`±�ÅÑÅHga3«Ø¿ÿH“¥ŽûFY£¬áÎ0�&¶!²üÈÍá����IEND®B`‚�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000217�00000000000�011565� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/themes/nihilo/images/preciseSliderThumb.png����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/t0000644�0000000�0000000�00000000635�11360615642�027231� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������‰PNG  ��� IHDR��� ������Í£õ9���tEXtSoftware�Adobe ImageReadyqÉe<��?IDATxÚ„S;n„@ >é¸ âFÔÙ$J·MΖM"m‘P¤æ [ QDihpâ£(|â7ÚAÃì®bÉòØãçgFó<Y–µcŒmØÿòÔ4Íyt6®ëòÃ4M\…èºÎâû> ß™r™aØ8Ž' Ã0˜i.©WËižg®*1�ab˜jÓI’œ â8ÎÊ_PѶmΆʚ¦ñÖÄLgAH ö"H°© UL™E ¬™Dµ¥U7âKAÀ@M†8î‰ýB#a5êº~Œ¢hÅ$ ^UÕsÛ¶÷ØeJn‹¢Ø§iºb‚Ÿçù;Èí&Ivq³²,9 ,|Ú=Ýu`‘gl_Ôÿõáp`Y–1XÚÇmß÷Ÿtý‹/qöõøBæ; Ã[bxíºîƒüü�"çO€�ḭzšZˤ����IEND®B`‚���������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000217�00000000000�011565� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/themes/nihilo/images/tooltipConnectorUp.png����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/t0000644�0000000�0000000�00000000477�11360615632�027234� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������‰PNG  ��� IHDR������ ���™ f���tEXtSoftware�Adobe ImageReadyqÉe<���áIDATxÚb<}ú4 Ä™@<ˆïãRÄ„Ç�QFFÆ{222¥ È"Ç:III 0‚FR )åááÉRRR ÜÜÜ9 qb ±gffîRTTd�z,�¢•””˜˜˜º€\Kb É”——g`ggGñAâЀÆkH—°°p¸ö0Ê1�åbAêp’�´­jN   �r(lbÑ ‘ú{>Ôßx ÉCÃkH²!ÕÐ` �cc@P"X@ðòòf¢“X�J;Ÿ>}ÊùüùóS€��VK!½`�ñ����IEND®B`‚�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000204�00000000000�011561� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/themes/nihilo/images/dndMove.png���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/t0000644�0000000�0000000�00000001326�11360615634�027230� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������‰PNG  ��� IHDR���������óÿa���sRGB�®Îé���tEXtSoftware�Adobe ImageReadyqÉe<��kIDAT8Ë“_H“QÆŸÏmŠbi©Ò‹iäTh n¢V²¡‚eÚ$S‹Ê`) ®‚‚LMAœÒE⿼°Â(+ˆLñ_ÔUE[BzÕßÓ9ß6â…ïáá}¿sÎóûÞïãD@†DHY"ìèÊ­3z.4§Ô‘ºDO¤b-#x¿Ôj!¼QgЧ÷'?sp±ÍóÙðç>Ûÿ¶r`¾‡®g—Ômåè{uA>@1À°£R™{ýs˜õ¿î²bÆÁs3嬘v°îûMºw°jö4ߪÙð¥žñ•ºÙ�ÑN`K úKÆŠX6~’Åc…tÍ]§ UŒâ¹d¢HS v}ºÊèRôj�CBHfµ»ŒlÌ{—Ë+“NBŽŽfkkRÇFs´œÿÑF{“EÕïCÂ,ŠûÁ{Lu˜¥ï‹`~‘ʬ‘tMæ—iþ:ƒoòž…NqÞó³U,±q£P×eu™©Ï“™6œÂÝÕ[=0ß>Èœ·Vn6$$¡g/÷÷%0ör8ar`ʰ‰ÓK›ÄtmgìÓF^Ô»ÎFy‡ŒTj• !S‹ãœZZ•<#†6=C; uÀÅ„î”CDR²¢ª*Q*5Ê¡D+¨OC”°î¹ï›l^ ‘íâ|kRþÜ& 7DŽƒH†3%1²ðoAkW3µúÕ”3Ñ/�þˆD˜˜øÑ®Ñ%Hií6 =Vh²ûLm~s6æäÝY¹L+щީӌh÷zí ]¼Yç3¯¿¾Ï‰ƒIèF>¼(†SB…¢N‚1¢O›okÀ÷p?¬bŒÿ����IEND®B`‚����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000203�00000000000�011560� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/themes/nihilo/images/editor.gif����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/t0000644�0000000�0000000�00000007573�11360615642�027241� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������GIF89aô�æ�Që9YÆAn¾ÍÒÌ?£>SLI5™4³Äíw’Ü,+ÌÙõóóó¥¢ ¯ @@@111ÑllÆüüüƒƒ‚ÝÝÝQƒÊGh̘ʘržëÿ±°wvoR„ʽ½¼`†ïøùùêïúQqÑb~ÔÉÇÆM±Lööö…¥é«¹ÛîíícedbÆai˜êÿÌÌ—­äU~Ú‡·ˆýä1zèá>>Áº{ µêõøýu¨zÿÊ#ßåök´興çÁÁÖŽŽN¥ímÊòÐHH«¤eo޳žØŠ³Ü$WìÊ--t²]�ÿl—¥ýò•ÊÉ‚ƒÆ'öë÷ºÅدЮtœËûüþïí%Lwõ øÐË·ùXvÒö žâ�ZœMrÔ˜ÀÉOÙcí.Ô�êÿÖÞþû:tÜ̑ВÈQ¶|²WÌÉEüúذ-ev£Ê•¼ý÷÷ì­ð¹çÏÚAAE†ãÖQ|ûœÿkŽüúíìÍÓæ”骽•À­“ÿÍ´Í€ÿƒRƒÊ†”¾×•ÿÒÍ�óýççç'Œ&ÿÿÿÿÿÿ!ù���,����ô��ÿ€‚‚…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ ¡¢£‹HH¤¨©ª«†„¬ ±²²œ ¹¹~¯¾¿ÀÁÂÃÄÅÆ›6¦§ÇÌÍ·º»½Š®Ì ~ØÙ~×µ‡ßàß‹·LL&ê ’ÕÎòˆ�óö÷£õú©Pø(Ùx‘lYÀƒ¿È™C§Î;wˆâEò³DÇ1bæÔY2 Q� C�1Q (SJ¸&¡[!Ú° XD‚5M.\Pp€…$Þ)ÊaE"Dø,¢h£Fމ˜^̸±£=�ü1ØÊµ«W—�t°d$ˆ'U…Ki­$¬ûÿ²‚*@×”è2RÀWÁ AVALS� ˆ'ø‚ &"E–%WPäC—M»ÑWA¢' @š8Tv$ZA^Sou)hC×bop=»B¡š7sîìù3hDJ~€“fÊ”#‚|l¹sß!X:©%”OXÃŒ93‘„ t_pÑä� @â@tO‘vÊAd=¢àËO¾\³pâÆ!§sôaàöq‰j ²ÆO‚R�Vha…¸�ú@¨ #,ðd"M¤`â#Ph€ ´Ø¢!&ƈ"Š*®Xˆ1žH#+¾(È9ÎXáŠ,b²a‡Hÿ‡‚x¨Èƒ e’Be„$!ƒ]wý“D(‚Ád~ñÆ$¬ ¦š†pƉ�cŽe™s}J=•ÐW�˜ý¹ÈC|A&‰Xp€Òâz ¢AL”jÀÚP“m|žNã•w^zö B g á†yÐqÄ%áf`qÀ­Ì€€‘ Ò€Àë³S8t‡ˆ|Ü�êx.PC @à1k#|m ²-‰< î¸ãº «¬‡ ª*«æÆzm!WVIɤšÆdi!XU–È„öK@†…¸UÉ®,„ ˆ|$¬ð "Ã+ìpÄOL1ÿÃ""OÒñ#ù2r%ñþ‘¥–ä> ƒ `&òF¾X‘éÙ#i®ÁÍt[ˆÆ@r<K§ €fÀ à:C  Ðë'Q$¤‡(R" :ÌgB°Á…Ð[¯÷²µÑvÇl~pʬ³ ºí´Õ¾ûG¶ŽèÐFH¤±ÄÇ•�„RÏPt!A|4  ”{àƒ$4`l6á„cÈq8k÷´Ya7f,€Qðå0߆ìÀíï).帓°À„Ãzø!~.xï†#ŽHÉ–LzÅòÌ· Ä B”€ö¥ Ù`Ÿ À›X�vØiU"ÿÏô>ÉWšüåÊì³üe˜‡Ð�@ %”ÐB¡-è£o!d`3΃9DÏÈgˆ>½‰'·w‰�(î#CÄÑ@pˆ¤1PJRê�™èg?�Ð@l»zš÷àd³iƒ�Ø@Ú ‘©LQjmèDçҙΨSÝ!`—øð‡>,„zЃ,H ôCL@AC4 ²óÁø@äBs/ñ8(¥¬?,à�|¨¡Ý²À‚8aZfø�""PøÀƒ‡…Ð|ˆ,‚\| — †XDA�ˆB$¢Q(ï ßh�„ \©ÐAÕ$'IÉIr/PÔÁ#¹(ÿ‰ÑŽ:é"C©““è¤'}„¯¬T¨|ÁØŸ#d‰ˆB:¢�ìë8àgù•à/˜�¾À†"¢ÿ»Yÿt&ˆR¨€šN††€j"�H”„þ°ÍEl³›‹p ¼öÀCä‹ _�À Ôxƒx4!€”‘Él²l …°±BA´p6°¡ ÛdF1º€ŒfDã<[ PÊ…ðÈ0©•@ ÈhhJà½éœ rôvðÑ`Q@M¶£..€ |©ÁA¡gFÔ u‡€ ˆ’ƒ7útp€ñ� <Àv‚(EýøÐˆN´¢„´e’ ‘£Ì(Eªÿ,¡УH8A¨ŸôVȧG@X"VZƒuÉEi&°ÀBA±D\ c…¨˜$ê M~¼Ò|Šp+ÇÄòZ..€-›ä$\®Œ¥œãe!äw€É��lPAö‡LœåÌÌ„å+¥„XCü,!HÓ¬i "©’H°%"`ûÚ:"�B [!BP‚ þ�=àA1ðAA\¶¸…Ȥ ¨PYã‚ ®sÕ@>ýE€'ôSlÓT¦î C˜*@¦9ˆÁjZƒ¬á7p@4rѤJA PÅŒbS‚ØÊ£'Èï à³€üšÔX Ø"²\ê&L@(@0œp`$˜…`ÿNÿÀÆG >ð‘O# ‚%¢ï…ªz×ÛÞ?x!Ä…P¬Š 9ÕNݵaeóCІ0!VŒ<£uY5Æ&HBÑ.„¬‹KÉÇQw>JÀlg“ ¥ßNyD²“Ì ¯*ÿaÅŠ¥r”+ƒ”VG�’ ¢Ð\5oˆ=ÐB": @Ð"™­,m!N[†ÔÚà«õm$žEèBë$àlD¢ÃYð½E„‚«‚wâ�Qð�",„è| (“c¬ONï0”MÞæšz±À †@ à„Ä fhz!Vb9A .š Z §€€rubÂNÿ0€øàÙ ;é`@–' ð¶’_>LÀÁýÁ·`¢è@¬³0‰@»:n˜È€!| l?òºôvTµ¬¤ä=�/‚hèÔ¤5¬ À†;üáo+a)�*›¤ü¤ÆAYˆSªRㆠR‹¨dÊ!õhãæÔ37W¾ÁÂå‡U9Èdžˆ0wyÌ2øA™Iž§9Ÿ náçczV™vž-Ëó,Á7  }¶Á¢½‰aÛÈö¦laÛFüLl¬5Ĥƒ›�ÌA¨€€O â/¡¦Lpž œZ€ ¶Í€nß>ˆ¸Q@îÿBÀñ€âï€.tÁFˆ¼„}A^‘° Hà“°Á$LÚÓ"8(ÐE˜  H˜ƒQP€ä¥�`� ÁÆ 7‚Ž@ƒ·"€Ôp1àq<ä%ïÇÅ3^ø‘7Âä iH?�üùÇAqPwI`aPXövILX�p´]_œ0C¿üy=¿ùÕM¥ É’X,# ðƒú `½þù0ƒ¿$+rf„1€ÈZ…ð~ï—rM4�u 'a÷ »"hÜ”€‹vß”€Œ�* ~€�*à[Z�3üp303bó}߇à~hBšr]ÿ4Øj1ô¦‡ÿzªç`·æt{³gx qà�V°U„) i‚‡I—ç+@EuDV;@Òf,*e`m† `“z¬Ç'àm߆ 0úGæ¸÷a‚ ;à¢ð{{°G˜„U¾á�Dh„H¨„Lh%éãoV Ѝ‰¸ˆJP} ·pا} Ó}–IX`£ohKç ‘˜¡xsSEö—màmúgv p‚qt9³x€Ÿˆ/ Ø41¨ ؉ݓQ“ñ3�*ð4‹ð<\†WX�@l‰›cÕÙ ƒq£]®&†@† ‡·öwk(ÿY‡g0 ± ˆ\ÀEpŠ¢4 PTŒÐ�W˜V¸: …ŠpáÐ�]ô$`(`…2®{%fl䆌°-ñ;Ànvø{z G¸Ží8 爎êÈŽî˜X6/)TÚ°BQ‰ @.ù’/É�`1q’�)-�þÇ÷Iw–""r†Øb:¹“¬¤“ÀqE“IÉPV“à”P2¦ø�1h¦4à4³&k@‹�JHéuo'ýµ�Aຸ ·2Œ‘Ö”¿µ !`…+TÐ- [ÀÊh7�-~xi7™“¨“ˆ)“‡ÐB¯Ñÿ˜47·aù�kx1ÀºöôC×#)l*0š¤‰q‡yû˜š©¹…/a Ç�0~ ßö…0ââS°—µg{Š@GC•90‹p‡öŸšЙ>”œ"fBI -‰˜‰ Iü&/Æ—Ú©!WæeˆÀXp“¥2~|µ~w…çÙé© GýÖž%Ùcîé‚ Ÿ[”¥XTIz£w•Xi˜‹@€…Ñ ‡PRgYMh H𥠒 Ÿ×D˜I¡0WŒp}i~�˜ €—à)ž‡°Û¹˜w™€A›(ð…•¹0¶»)„©€�‘Øᇡø¨šªÉš(¥K)0 ù�( Ðz a«®Óh@œ‚P‡ˆ0.MF¢$Z+) 0"fÁ‰«Ð¥‚ ¦ô@sq1Šfå’Ô¦šþ!ð¦,§rú¦zy 6z£à'‘`L™°v!a Ö ¡q¡ð_ª °¡j´‡0¤ k;€¤­·•ɤ¦Ò 蘩±�¦œº'òð·‚¡:ªÅ�¤AJª¨Ê  z�j´ª¢ú k aå;”ª¶z«¸š«ºº«¼ê Tp£!F¬À:��;�������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000213�00000000000�011561� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/themes/nihilo/images/spriteCheckbox.png��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/t0000644�0000000�0000000�00000001303�11360615640�027220� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������‰PNG  ��� IHDR���`������éºzù���tEXtSoftware�Adobe ImageReadyqÉe<��eIDATxÚìXM!Q=E!d´¯¦§'l´¥ŽYJlý� ±˜þÓÉôß°œÞ K ¿@,h‰ˆ #Â!º¯©[ é._¥™W7y’WïwëÜS÷¾çqËåSÎxúÉçóËjµ*äõz¸UÿT|½^_v:Ùx‡Ã·Û}6¼’üE‰D0›ÍÀqœØ¤F™Bçy¤ÓiZ`=v*ž‚çóùdã+• ðlx%ùó« z½jµúàóù|«ªüÇðªm‹I÷…l6‹\.';Ťøc÷éü^¯‡~¿¯˜ÿÿÉ_%Uh:Š*­úµZ ©T ÏÏ…õ³]NߎêïÂ/‹wsÇã1Úí¶(� ÿ¬ùod@¡P@¹\'$ Úäpue’­þ®&Ç(УÑhŒF£!Š@µ“…Öü72 X,"™ü-~uOO¿P*•  …d‡Ú><‘nµZ˜L&h6›‡0™L°X,Lü³æÏ¿]€Òßf³!“Éàññ§ˆ6îîˆÅbâÑmUv½�Ótè%÷á5 ºÝ® À«Ðþ _ž.— Z­–‰Öü72 Ãï÷ i÷··^ÄãqØíöwµù˜¾íù>¼Õj…ÑøI(;/0 Bð?‹¢°òÏšÿ†�f³÷÷ßüD4Åõõ—亻ÒNžj=ù¤²ãt:¡Óé˜úgÍŸß¶ÐÍÍW<üx8ËîX#<Ýãñ(æŸ%ÿµ�”æÛþ@ÈupÁ ϯî&’ÉäQwÒþ)xÚàè´qÌ]Î9ñJòç.·¡ÊšêeíŸ��šˆˆÍÈrÊ����IEND®B`‚�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000213�00000000000�011561� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/themes/nihilo/images/editorDisabled.gif��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/t0000644�0000000�0000000�00000010360�11360615644�027227� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������GIF89aô�çÿ����  !!!"""###$$$%%%&&&'''((()))***+++,,,---...///000111222333444555666777888999:::;;;<<<===>>>???@@@AAABBBCCCDDDEEEFFFGGGHHHIIIJJJKKKLLLMMMNNNOOOPPPQQQRRRSSSTTTUUUVVVWWWXXXYYYZZZ[[[\\\]]]^^^___```aaabbbcccdddeeefffggghhhiiijjjkkklllmmmnnnooopppqqqrrrssstttuuuvvvwwwxxxyyyzzz{{{|||}}}~~~€€€‚‚‚ƒƒƒ„„„………†††‡‡‡ˆˆˆ‰‰‰ŠŠŠ‹‹‹ŒŒŒŽŽŽ‘‘‘’’’“““”””•••–––———˜˜˜™™™ššš›››œœœžžžŸŸŸ   ¡¡¡¢¢¢£££¤¤¤¥¥¥¦¦¦§§§¨¨¨©©©ªªª«««¬¬¬­­­®®®¯¯¯°°°±±±²²²³³³´´´µµµ¶¶¶···¸¸¸¹¹¹ººº»»»¼¼¼½½½¾¾¾¿¿¿ÀÀÀÁÁÁÂÂÂÃÃÃÄÄÄÅÅÅÆÆÆÇÇÇÈÈÈÉÉÉÊÊÊËËËÌÌÌÍÍÍÎÎÎÏÏÏÐÐÐÑÑÑÒÒÒÓÓÓÔÔÔÕÕÕÖÖÖ×××ØØØÙÙÙÚÚÚÛÛÛÜÜÜÝÝÝÞÞÞßßßàààáááâââãããäääåååæææçççèèèéééêêêëëëìììíííîîîïïïðððñññòòòóóóôôôõõõööö÷÷÷øøøùùùúúúûûûüüüýýýþþþÿÿÿ!ù��þ�,����ô��þ�ý $° Áƒ*\Ȱ¡Ã‡#JœH±¢Å‹3jÜȱ£Ç Cй+’(Sª\i ˇ«bÊ”#¿|óræÌ÷ï¥ÏŸ@ƒ J´¨ÑÉLž<Ê´iÛ:wöTè’éªX³þ»Zó`™¯`¿.¼ù®[4bÄr©Í–ŸÄAUÊEød®Ý»#ë6Ô›2F¸x)&—tiàÃ?ÉšE«6[·ãFüç.Ù¨GBír7á'* CSqS á*~¨Só»Ê¯kÁ2Z±–Yhï\7nÇxñÊF¬•¥\öÞ*ä4äZÂdTÎ-¤l³fÎ ™_μ¹³Ý'|ŠÚν»w׆žþ²˜ ´ȈQ†Oq½Dì{³ƒtBßo¸¿@è3ÌÆ?[9Ö5×€’MDÅ&&˜à`ã¦Q6¢‰VšHò áA4U9ýe“?n€–ËA冞w(nçš@{èÑ¢0îÑ¢ŒzTÛm¹íÖÛoÁEFÑ?ó„Š/À�“Š$Ÿ¼ …öWN­tšj¨õ’ÚŠ°Å6Û‡ïd“#/¨ƒ"ˆLƒž€ ”ÆCtr'Tœ©aCyd’)$‘F"©dBg*è g\”â¡+òEh 9!ã£Bê„kO`¢×¢…2Ô od(t ) &’ˆŒrȡƩ§ꪢŠJj©þq³j¨®îQjªñ2k«–j*F•^Š© tY*¦ )º¨@Ê›éAÎ2êÄ/¸Øwß_¿üâ„B›Tá-L4È5ä’›fDJ¢îº’0è`F6Ù_§!ÕU!ýQa¾ =RÞn’Äd¥A›C¯@vÄæ°+ú£‡Ã±Õè?]~æ˜eÊéϹ Ù3 +·Ü’Ê'©¤BŠ+=bHŒh¡U‹$Ù,,Ð*ùä¬s>½Ìdlañ³%BùœSŽnº¡‚ 1–X‚È$- ÈÐ lVE5< Å õÖ[£¬2ˉL²É^¯uAÑ>KQÃÇqAØU˜£‘ֽǤ¹WþÍ­ô¡Ð?ç.øàƒÄሠnxâ‰/Î8áí1*BzOTùCq3”yEiû3-µ\Ç€ .Ú&ôHÜØyëáCã^#ÌëÂH&ù¥K Ò¼¸‹œFT¼s-¤#‰Íá‘Ph Dph eóo¨‡{”ÙHrß~ÄvÛÿ¼mÐÿÐ8£‹à[\ôÑH+Í´ÓPû8Q2¥²â‹;îI "Ç_‹¾}ò™”öÈaæ# ɰÇ*~–•°„Å ó˜ÆÑ”Ö´\¸BiˆÃ<B6qb H'ªæ5)'kL¡=æƒú© ŸäG?ûÁ!³HÃèÃC'èÁþµp)º1ˆ8A+ÇÈJ³‚·¡zÖKOEä3;ÐNŠœ‹–ç²5º.’.[Û:>ž Péá_zÐ‹Ü 2a¸vp9íªh{m‚f1ÓÝ&ø‡*ìï%›CHïÜp˜ñnÌ2„·ÊHŠ4âãz4#ÞÕeíi|ÿà‡÷ 2±‰9 |WŒàQQÁ ¢"ƒ<H„Vº²•Ɇ.t1"A¶âÿèC.iUäd„i˜Ç9¨Œœ,ð5ÿ�‹Ã†æyã¤TZ.ZAЦYBï@È Rµ86$l¢Â’±®ƒk‘%-òÊWÆr–µ4D²C'|Eeþp…+b¦ÉDñ� ¨@ÚÄŒ¼ƒ`ºtˆ­L…*5$„UµZ(ª «…Nd¡ Åܲó(+e)Bæé'tÑ` £AÆHŠÿ¼£O`C7Â.v±“£eTG;Jâv¹ka$±GÞÝR"°òGR’Ô¥.Ät˜Þ·>°á µÈf9Hñ„G$}PX6rPb$T{þø$&7)N>*F. Ÿ@œ MKH“šÖĦû‡¡ ÷¨F5`q<RT ˆ )ž(¥väœi B'ÛŽc ¤ ü¨M–´ÂLgòÇ®¹b5÷pÍTrs›þ '4 …ÀƒMixþH ºƒ $°ƒe§_+XÂ$VAfEŠV £•Ì™ðY KTb«"""EZ'ìì:îΠz¹ˆ¼,d+C—ÇA® “y{Ê—Ž^Q!Ý¥œxÞCÝdÕW À5ˆpM:ºÍ6P¥#1LŒ'ô¡ºXcßøºËn§ï¥©…îˆÝ ¯¨ñF}Åa_!„ñC¨àŠì¤¤8$³t‰™ëþ(0ŒÉJ†\ÐaÀùnx+™V»í¡Ÿ™&+ö‹y6våÄ:1ZKŒ™‰¢’“¿Þ6[¾Å‚DŠZÀ¬±íó5Ø40WögóPfþÐ:ëb Âd€3",ñf2Ĺé ›‚Z‡àƒMlrSCbpŒ°Xf'•çaeÜ#Ñø®¤ý!Ü‹™·pÚû&0¡OL¬LŸMrAŒw¬eU7*ÇÐIªuRÐ`•šPšêÃÿ°HÔ„§ïMˆ«)mê]çYhÓ"Uƒ ëHKzžû=)•„`à8vv¥0¡ %$dÁ7u0Bæa ûÃv³j2xqaKwèN·nâÔ†´û©¤ˆbA$‘b„(Å•èªAˆ‡| „ Ÿ€Ò;úð޾Í:ÓjÅ [­>¸’OÈsms1†AX¢cÃ["eÄ5zºø*þŽW =°«nhÅŽ ²ŠÀµ#CHƒÌgY”Á,Çð¯=ÚÁfbl'Ìç„Ë| ¡‹Â ÄIF2:ø|ˆS_k"'CbЋà 9;=^¬ü·ÁE–ù™G`BœvÅ#%]fÁ§¤½ˆ»Üç.wîΗ"’ Ê"цúÝ¡©(Fýn_ÊYíÕ­þNÕ·DJeH|2ù…x;¤ŽgH~‰ k“’e°GXDßì´nâÅu¤vµkzSœ^#M‡<{IáY„;+÷FJ~r2¨œ©vˆˆ’®ëaØ ÷fqvðAŒM,É } ƒ$þŽ¼ï½’òÂ=þÉ=#çÂç¢�zÆÉ†1 Gg£”£ÁþöøØÆ,uÁ ’«¸f”dyàºÁ¦ÀÁ%p5ç@ÉÝÀLù Ÿ cgdà1N0¢@<Üä}Æâ4^E5¶•5¢ƒò7Kõç@Ð~î'‚óW‚òDOÿPv˜v OÐváƒÓ ‚£ƒ‚SPAn@òV^—8Q„Fˆ^Hx„KØSy´$ÕN°*e°hePzþ µðn7ÖÖ¬nt.±G>E 1`{H£.Ç÷4cnÑT²|sX‡OU Cè’P 榨ÃåP «s=@„þˆuˆ{hI³}Eö"0â"瘀 hg—ô!6³Jt× @€ ²� ¦H þ&H~x•7Ó Ã4NÝ0‹ƒÐ ÝPs?“Y¶ 9güP= Ø€½ÐA'td° ƒ …Äa#Æ&‡&BC€5 8¤hа@ =Št7Š¥xŠ©-ÂVvÀ¸ÐçØ6è÷å99¸ƒƒãƒqPAOQrs†@ÑŽt1S… R<<§…Ì— sm­;¯ÇTP8lZöS’n(‡‡ïÁˆ8!þàe•@ ñ‹¨‡à"’`r‡hþÐ0ËÆYáˆÜ§þ“ø‹’ŒNÐ øq㇌�æ‰3Þ˜ ™€ í°$ßö‘1C ^F tÀ‘þ° ´( ³X•Ép‹ q…a± Pfà5‹@:(fÛ´ŒShÑ éÔ\$ Di”S”A9”Ey”€2Žkƒ-©›d<÷% =T˜=$ àqw¡0z@^È×PÛ6*†GxâXi™™þ�x𥘟ÉøÈ޵FšñVˆ8Y¨øà¬S.åâM áPžI|w¤.e6Ÿð¹T@0¿ãõ6šüÈ}@‡3t�#&Ö2cQT B#dИ)„þi˜‡1$‰ØI6ò•Ý–e01P~' eé“ìÔN­„˜p zIr•pŸø¹ ×ÇrUÙŸý‰‹¯aq' ½�e™$t¼Ø ƒ 5 ±M{†17çò–Ÿ"ŸôÙðŸf—¡ ñk±ÜÙuÄyÄR(˜¢*J)ÆÂkÅ–­à™a^Q„7ú8a£ák½Ö¢ Jj.Š™£f¢Œ‚CZ¤psaQ€ZèlÙ¹c(›¾™ ’@Y»ITohT€Ÿ^ºGm™BÊ;×IeJâåœÐiÿ02ª1:£±¢+d܃“Vü€ 97×µ˜qª~Ú)! B˜¦Q韌  —…RP&Ý0adp Ñà€c‰g4ÔøBÒˆ[CktJ§EZœQyšb÷¸¬*±Š†ªÊŽ™§=tsþ¹š‡Ñ¾Ú À¬¾Úœa¨‡Jø—gÑd@p"hêïઞãC#y*©”Jq€©Ø çÉ©QÖAy®1ñªêZ/rñh¡¨ë¯E©‘*¯öÊîJ Ù”¯ðúe hH7ªt¯[°{°›° ëtp¨¡ñ á°;�;��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000221�00000000000�011560� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/themes/nihilo/images/tooltipConnectorLeft.png��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/t0000644�0000000�0000000�00000000551�11360615636�027231� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������‰PNG  ��� IHDR��� ������ áVÛ���tEXtSoftware�Adobe ImageReadyqÉe<�� IDATxڌҿjƒPð£ÔE!ˆüóÝòY2dLIÇ„®]“5µtëctvVtÑéêPtQµçìÐ&W?8 Þz>Qð}fæõa²ªªº›ÂkA>LÓÃ0€‡’$í]×EQ®7ná'œ­¦ikÇq@Å߃¿x‡GÛ¶A×õO±†ó&ËòÎó<À×ßÜ‹°‹%*@Eðún Â[˲®m§BÛ_ce Ã0‰SD Äç8Ž¡m[.¦|ã¼Ôu}Ãʲäâ1§®ë–I’|¦i }ßs1å gUÅ)hš†‹ÇpÿMEçù$¦¼cùGüZ*?çe8ÏUU±�¯\h�Ю3����IEND®B`‚�������������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000207�00000000000�011564� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/themes/nihilo/images/spriteTree.png������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/t0000644�0000000�0000000�00000000521�11360615634�027224� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������‰PNG  ��� IHDR���6������x-ý���tEXtSoftware�Adobe ImageReadyqÉe<���óIDATxÚì—Ë „0@‰Ýxôd;6`Š]éIðâÅBDŒâ,ˆëo׈ëJ £gò!á�ÀžˆÃŠMìߺ‘ç¹ñb ‚€ê£ò%†ø¾Ï„Ìq¶9Ž#†Eq(¥òØ©x6±$IìæqÛÍCÏŒ4M7£E‘êCʲ×u"Ïóø7æŒgMUUæ§ <y`dYMÓ@Û¶ÐuŠ8ާ6>Ç~|O³{žy˜z®ÆbÄú¾W;çï¢I)§èJ±ç™ÒÔC>5aªŸ<ËÚs‹5FÁ¯“Ú$V×5‰”Êsn¯-6±{ð`� ƒ(a=̲€����IEND®B`‚�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000211�00000000000�011557� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/themes/nihilo/images/spriteArrows.png����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/t0000644�0000000�0000000�00000001320�11360615636�027224� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������‰PNG  ��� IHDR���,��� ���-o���tEXtSoftware�Adobe ImageReadyqÉe<��rIDATxÚÌU¿kZQ>Oj¤nâ ‹N­Cí"økI vÅÿ ™ŠPhÿIöK:˜,/"ºT‡‘‚¨Câ nAD„VÑžïqŸ\_UJ]zàrór¿{îwÎùÎQY­Vtˆu:g¼e'“IÎáp¼ ƒµýóvÃ~~m;·èü9ošÍf®Ñhà_Ù}Dxi‚ÐNL¿ß¿Z.—?ùïÌ6ÌŒˆÇü¼Ž¤ó^w¼¾rÄ×&çI®ŽV«Õ¨Ûí’Ûí&q‘w\õzb±X’¿Sìïf ô´×ëQ«Õ¢D"qɸ·Œ»J»Ýö³³{dˆw‡ëC.±NÄçó‘×ë}eF&‹ÅU¥R!Îȯª*1F1‘Ug³Ùy±X¤ét ?ÇIQ”ŒýaÂÞ ð!—ËE©TŠl6Ûã>­%ÁLì½ÓéÜ ÃE~Œ<>åŒdËåòÙ™ÍÌçósMÓt²0ÜAUàCè_6,l4‚Ded·B¡‹@ °qQriÈb±œ˜š ‡Én·ï#û”µxY*•ôÇeƒ„X÷ê>ÍÃ$d$ãtÂLæ$"‘ˆ^2È $V«:ú&;‚4¸*gétZÊмaÉÁ`€’gkƒÌÆã1²—ãÀü»ƒ k^OÐZÃòXC#±65”)Y?[²¨¢äÈ"ˆE£Ñ/ŒcQ§¢‘ebw"¸¼<Ë28‚4Qm$µ¾Ñ Šy‹G²ÂÙõ_Œ¶ JlÊùcòsµZ}~‚D‡ÆTýá0ô BÖ¯,“ï‚ìã þŸÆì¾óß �IHÒCcÑ����IEND®B`‚����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000210�00000000000�011556� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/themes/nihilo/images/sliderThumb.gif�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/t0000644�0000000�0000000�00000000356�11360615644�027233� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������GIF89a� �Ä�ùùùøøøÈÈÈÙÙÙÂÂÂííí®®®¯¯¯ÃÃÃæææ¤¤¤ÆÆÆÜÜÜêêêÌÌÌÔÔÔÇÇÇËËËúúúüüüûûû¡¡¡ýýýþþþÿÿÿÿÿÿ������������������!ù���,����� ��k`&Žd™ UªªBYa˜EÍ“…ùNRà� €°(ˆ*^D”P,—bAZ&‘ z)VKÄB.C1 ò"6“/]CâÅ—áQÅCBÇû) /0x07'+�$IZ—$!�;����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000217�00000000000�011565� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/themes/nihilo/images/editorDisabled_rtl.gif����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/t0000644�0000000�0000000�00000010256�11360615632�027230� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������GIF89aô�çÿ����  !!!"""###$$$%%%&&&'''((()))***+++,,,---...///000111222333444555666777888999:::;;;<<<===>>>???@@@AAABBBCCCDDDEEEFFFGGGHHHIIIJJJKKKLLLMMMNNNOOOPPPQQQRRRSSSTTTUUUVVVWWWXXXYYYZZZ[[[\\\]]]^^^___```aaabbbcccdddeeefffggghhhiiijjjkkklllmmmnnnooopppqqqrrrssstttuuuvvvwwwxxxyyyzzz{{{|||}}}~~~€€€‚‚‚ƒƒƒ„„„………†††‡‡‡ˆˆˆ‰‰‰ŠŠŠ‹‹‹ŒŒŒŽŽŽ‘‘‘’’’“““”””•••–––———˜˜˜™™™ššš›››œœœžžžŸŸŸ   ¡¡¡¢¢¢£££¤¤¤¥¥¥¦¦¦§§§¨¨¨©©©ªªª«««¬¬¬­­­®®®¯¯¯°°°±±±²²²³³³´´´µµµ¶¶¶···¸¸¸¹¹¹ººº»»»¼¼¼½½½¾¾¾¿¿¿ÀÀÀÁÁÁÂÂÂÃÃÃÄÄÄÅÅÅÆÆÆÇÇÇÈÈÈÉÉÉÊÊÊËËËÌÌÌÍÍÍÎÎÎÏÏÏÐÐÐÑÑÑÒÒÒÓÓÓÔÔÔÕÕÕÖÖÖ×××ØØØÙÙÙÚÚÚÛÛÛÜÜÜÝÝÝÞÞÞßßßàààáááâââãããäääåååæææçççèèèéééêêêëëëìììíííîîîïïïðððñññòòòóóóôôôõõõööö÷÷÷øøøùùùúúúûûûüüüýýýþþþÿÿÿ!ù��þ�,����ô��þ�ý ¬%° Áƒ*\Ȱ¡Ã‡#JœH±¢Å‹3jÜȱ£Ç CŠüجÙÈ“(SªÄHp¥ÄqÌbÊ”©±ß>|8qîûç²§ÏŸ@ƒ J´(ƒ;]Êԣ͜:y*lÙtÜ?fÿ²j½ÚДׯ^ Ú¬·n7nÕÒ¢Û×o*Õ¦p7^ŠK·nǹ ñºÄn]ƒ%¿¹Sú·°Ý±eϦ­¶¶-·ÿÕû†L—.cÖêIEXŒ“çÏœTIC8®_?¬¦SŸîº5«©‚úâ­S×Íš5tÛœ«¦o!d†ÄKø­R¼…’)[Ƭ9aòÊ—3o6|ð’^DzkßÎ}D[—lþ-¬æY•cê(Á‹§¨^¢õ¼×GVšÏ—]_Fó |‡®?º„´( H‚¹3Ø0&˜ '¡h£ÉуQxè¼#Ðtb©âY5‘ÚyãpgbvÉ¢âŠ,®›l´Ù†›n¼%ô›Cÿà“]6<.ãK1Í!Ä †þ½#‹3•fÚ5ª¥Æ k­½æO?õ S›mÌt³ 7¹äRÎyÕrcB¢0Â1S ˜å¸c?Y›Çð˜@J•Êž|ö™ G'ê@~îYP|•ܢ袌.ZÉ ú§?—ŸAÎàFŠBÝÈôË/ŠÆË*¤’j¨±(úé§3=):þ­®ꨫdÍL²Î:*F•â%iŸõJh¡ é%©@Æþª,° U‚ 5õÙ×6ØT²Ð.𤢉&à DË9à‚K æË¹èú2 ƒ9H¤›j4×¥ Ù»ÙëàAÃl›í. ‘² :Hbªi’­´¦p+)*Üš,Qi¥m·jÉ¥—lú3&Cú Ó 5Ô0cÌ2Ë ãLoBn£Ê6,o#/èÄ+ÐL×ìcóÍû¸º)ý€õ”ûÄóÅ·2³0Âäò Ê6FD‹™ã ô´= bõÕW\òÉuüqÈZ›Œò²“j”°Ã­µéBÖ]—h£pßòèwá-³3;ÏþÞ|÷Ý·A~ηcý.¸X†þÐ- "Ô{uGÔ6C“;DvCÎ>‹õ W›:Ù¶mÀÑ¢ÍéÚˆÛã·DÄIƒ½ºøZĉÊ-KƒÌì2gÄðCŸmÓ»?fÐ.¢ûûŸBG¢ãËAwç-Ð8g£ýÏïÉòO‹,n/PÐCSÓÑI/ýEߨ¢J3ÙÔSÏÈäÒM½ÒÔîO1ÄŒ>߈²>�¤E%þ§3ƒ€Åg®>Ê1´˜ ΈI.Zß´$8fBSB08®2§j� ¡>ð1ˆ÷•L~IßúÚgÂøÍÏ—ÛHÂDgX8CÎ@ÆõÖ‘Jl¥þZ¢Væ¶R8ïyè©H|XçÖ%Ñr˵@FEjPËs‡B–-¶ d #—ØGéL‡ºsh#j i B/N vß`nh—NÔo$•žÊ²2ûíã]üb¶Àˆ,„œ+f1â¹Ö¬ÜÂa؈ö´§°I*E{`™1Á †)"f e( ‚Ž´P£^ΨÝöª¡ ýá¤8ñÀG™ˆq“Ä ûÊϸx0C1 2‚´VÔµ0SA±o˜©Œ LÕ®¬ ¤”Õ8¥?D)JRšò!­4Û?¬ã•X˜ÂÎhY?ÔöDuãðŒ'<‰˜‘zL þZ¨Je*„”JT‹ZM ’+QMä¨âgu®³¨&…^íÄH8R‰~…ŠÖ:”ud‘ŠKHã˜ï@FKwFÔ¥îŒ Q£¢ØØÆaø޶™Ýºê˜JŠÔ7mÈMsZ!iDÒ²¸£Aþˆ ÕC—H…,òXjÈBxLj=·O„9ò‘iûé$¹§"ïù½üe0sHLaó|a„˜)}˜ÃѨ2~¡>õqFÔ=p¢¦2}c¯ô°¥@p¥xè£g äF€I ófõdAÄDY1GƒÊTˆ=Ì$Ї bƒø`[ß×m®6¤±ü¡¾„Ī <mþÅ>ºdÎ_ãÃð¢Ù™Jd€7ëFpqFφ<!*«)¢ÊÃ%$q~œâ$â\–ꥡNTÈqµ9ˆ¼‡"ßUȯ ÒZŠv+¦À(«ñ‹¥nCŒÙÆH ò­’–¥ Qiv™š/—nŽsœiEP…PTøÀ 1pD¬Nà-EÈðã%¶Q}ÈW»¹”=«Ñ ÇWÊe®?¨×¸=²ZÝžÃ,ùUÅ¢˜Ä�1+ P„­aTpÂVèƒe¥­‚„ i¬L¯ôH²™Î‘ä$ Ö<óÙWð!%|0†µhÅ(´œ‹`dy[^ÇBØ*J "devÈþ º1ˆáÀÈÑñŽ{üãm”v¼u­+â Ë7ƒ$ ÒF1L†Nb®RÇÈO+•näÄÑ9). W+¬„à-OoWšÝ„T:ÑŸŽbU;ÞêDŠl|bmž'ú[ž5)½ ˨@(Q`X ¾ñ•íAêKÆÓ™Q©FÃk7úbÖ€Ý3dj¿ˆíÙжÍBxújWH,ˆ/"|}tx¨—°m5(‘RãHõE=.m?ê]’ ãjWófet`YË´�-‚cP„Ù C#×cr`cOæÄ/b‘.Y¨ÂË-3ø&ŠŠG“oO6=ôÞnŒcU®Æ6þ²“äxÔÌø G7N~Œ1ŸéÚ8“BöMkùµ!ƒ¸Æ ´aƒ#<Î/ˆÏ]Uêòú®HF1œQŒ@ cO;tS+qª[ýêV—ôB¶k_´Âá )0?ÇÞOŒÀªúÔ©ö¹ eTº"{­¬{Xà”!\w\wÛIlïöÝ ¥ˆÑRQ}€ÅðÔ05díZ×ú:‡üÁk“žØ±»Ýé.$—âæ¿îxƲ阑…7œ×)ª¼ú»zžÓ0ÞËÆÝŒ;!ªE+|‘îzxìVu$¼ BIëÑ[ä$§G<@áoQ€bå£hùdA9Žê[Ÿ�LÇÕþQ¯_Ø/f‹œÙÞ´73­co¹.ø½jã{ó(*1üT¢ÇŘ·éh2¾O#ZUs ƒ Ù·}qf}×w€ÔÂ}Áj‘0I‡4L' Nua|s Ø7ZW¤  ¤mÏÅg{#]&ˆ‚|¦‚еP¡y™–Øj;FeÆpƒŒG 4Tï Ëã-¿& BXwwç‚w.#zƒÀl!3Ͷv™·yª… ö $è¾à}Ò !È":äfH!‚ê3†WènÖs=ñ&o^µîñ Ì' óú7}i…u×ÀÛ€ Ñð‡Ì€kŦ…aOáçþ̰Ä@ ëp~Îdëqw~‡%%ÑÎów Ê'&`Æ µÀxÁL2·þçfT£ƒ@€ò }ø‡Ñ°?q¦‡|臀_1d6ýè”N¿ˆNØ[¿Õ7¸7Ǹ78ö$‚ùƒ’“0%u ±‹ QQô�ÛxƒÆ Š ‰´§ßÒk¨ƒyÓhjGè [±ÇFzᄞ†d!þ`d¿0<þ`aè1゜à 7†Ï8=ÕÓ$¦¡†Ä§b•äU˜è šHuûÀ|Ì7  Èx7Š­Â ·˜Å@“ç '0¹£ ÈÐ ö˜ˆßЈ,I ÄЈÇþ `Ae ¡Õ0 È›Sø×c‡&>¹k„j²­8<Ò‡ ’q¶‘y ©'¢&Nÿ€¤¼Å sÇ0^ù•_y <´u{W œà… !w¥¢d‡v¿�xn×lYvkésÇ]ëA–{QÕÈ6¾%^S™¦8¦ààˆü!ˆ�ò-á¢:Q+y鯯ŽÅrø€.±wœ@’,cdÜfj©²@ tÕ2­ *Ò3TïÀ ±0‚¢B h©–ÓÓ•` –Ò—=ÛÆÒc“8¹:  0Î = p ÄMf‚4ÅÐ LÙ}«²*Ã�|3Ò؉þw Çp “h‰Q•'7Ýp µ`5•u.ÇÙȵA˜WGÙ ÆàœÐ¹ÌÙœJwŸ§6—›¹©›ˆ¶ZY x ÊC f)–¦ héÑ‚%(¡A¡ a¡¼Â “æ'È¢¡Øˆ=بhý‰j©Ö,¦ ~^rˆéïÀ˜ä(„‚näRÿð‘)§.ò„¡pÓù)ëò„?9›´‰–"6T¶Ùÿ�›jCÊ l’  Ú0i(=â9 äIœç0µÐoꉇ(á â#(b‰˜Ù™qž±Éd5£àqôÇ“b¶—µûŸ±Šq5™&¥Rê[y˜yç©и…j‹Z,'uª…¦¦ð•…±"ÁˆN.’b:¦¤0$Á©¡{ŸA êÖ ÇTå±òÖ"mšLùF r:Ä@œu:M±‘¼š¨¾ê£yõÀ2Gú«ÆZkʦǺ¬=1¬Û°ªÄ:¡`fcŸÄ¬Øš­Úº­ÜÚ­ÞÚ­0¦ŸQ u$®âJ�;��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000210�00000000000�011556� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/themes/nihilo/images/spriteRadio.gif�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/t0000644�0000000�0000000�00000002161�11360615632�027224� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������GIF89a`��æX�öööüüüõõõ¢¢¢ÆÆÆ¡¡¡ÏÏÏûûûâââíííëëëþþþÎÎÎýýýßßßìììæææïïïÀÀÀîîîÁÁÁóóóñññÐÐЖ––   £££ÉÉÉêêê±±±ÇÇǘ˜˜ÊÊʯ¯¯àààòòò¦¦¦ðððÔÔÔÍÍÍÕÕÕÖÖÖ¿¿¿çççÒÒÒÑÑÑÞÞÞÓÓÓÿÿÿ®®®vvvÜÜÜŸŸŸãã㬬¬ÅÅÅ“““×××™™™¸¸¸ååå|||ôôô{{{‚‚‚¶¶¶›››´´´•••¤¤¤ªªª¥¥¥²²²èèèÛÛÛÙÙÙäääÚÚÚ¾¾¾ÄÄÄÝÝÝØØØúúú÷÷÷ùùùøøøÿÿÿ���������������������������������������������������������������������������������������������������������������������!ù��X�,����`���ÿ€X‚ƒ„…†‡ˆ‰Š‹Œ‰ ‘“•‰›Ÿ¡—’”–ˆ¨š‡V -¯±³µ·‡ >$V¾ÀÂÄÆ¹²´¶¸†°Î¼Ñ„"UÛWV…ØÚÜÞà…'@ÛUÝW;Ç„éëåïñƒãìÝßá×Ùúæú šP A• 4 À`ámÀ„A Z±råJ•†``¢ � X h�À 'V¼x¥$Ä‚.ÄøR"E‹4aà𑃄"Jd,¡rà�P¡r³ Q£‚F8�p%X aÄ ©I—6åêU'O > }z”§R¦+ÿÙ *�hHJØrÅDAt© ”b;¿ƒ ( 2…/¦H¹À@âŃ [¤lynÝ wóîíû׳`Âp—Æ"Aƒ%JÑ #I;ƒZ7ØÚðÜ‚BLhÀbĈL.œ¸bðÝ zãl.H7lÙ´mÿÎíš·æÛ€ë2È@¤†!+ªDXxÁ‚è©×_¦¢ E“'0¢¼¨" 3ÅT¸Ÿaý…GÅxå—ž|¦ @|«Q�lÄ3ð À.P0ˆ„�Äða7u8ˆS-@B;8pâT"FwÀM1~8a…f¸¡‰‚€X#‰‰Å$`ÅÎ*äWT°Áƒ ©¤{¨E9å 0Á’ Д•‰"H—_b©gf™ä’M>©%•‚X¹äYJI§ ˆ�‚ÝH‚Öðé' $Z(éX€è¨p >꤅ôùg V(šé¡œzšé�(tPA l°(Ÿ¤šŠªªÈ AÜÀŒ!¿ÈJ«­“B@«§¦º*¿–,¬‡( hàJ²Ë6û¬!œ0À¦ RíµÙBˬ³ªx+m¸Ž”kî¹è¦«îºì¶›H �;���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000207�00000000000�011564� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/themes/nihilo/images/spriteTree.gif������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/t0000644�0000000�0000000�00000000351�11360615642�027224� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������GIF89a6��³�ÓÓÓîîîìììýýý‹‹‹óóó÷÷÷ûûûðððõõõòòòÎÎÎùùùÅÅÅÿÿÿÿÿÿ!ù���,����6���–ðÉI«½8ëÍ»ÿ`(Ž$ÖœhÚ\j[R 384=0«ϵsç¯Ç®çñdÄ_P2tlF²§\6ŸE lZ«†a<> €À “Ëçôú²®×™ ƒAØZ y{…$   ˆB‹–‘“" œ“›žž™! §¨¨ ©¬¤ -*,°(Kµ¶·¸¹¶�;���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000217�00000000000�011565� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/themes/nihilo/images/sliderFullVertical.png����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/t0000644�0000000�0000000�00000000176�11360615642�027231� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������‰PNG  ��� IHDR���������ÔTR¯���tEXtSoftware�Adobe ImageReadyqÉe<��� IDATxÚbü÷~# ÃÛU ,B¿™¤˜P: À�äƒz 2\����IEND®B`‚��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000177�00000000000�011572� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/themes/nihilo/images/no.gif��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/t0000644�0000000�0000000�00000000263�11360615640�027224� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������GIF89a��³ �ÜX\ê í«­Ó.4öÕÖÖ<AÙJOüññÐ &ÿÿÿ������������������!ù�� �,�������`0É º&É)WxDG H!l‡�er€ÆÆã¤¶„ @€˜P5¸ô~¬KqCö¤N•sZÐŽ’¹+l¹AhÙ“Y 6œŠåBÀLkQ*Ö¡X0‚ƒ‚�;���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000227�00000000000�011566� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/themes/nihilo/images/splitContainerSizerH-thumb.png��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/t0000644�0000000�0000000�00000000177�11360615644�027234� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������‰PNG  ��� IHDR���������þä£����sRGB�®Îé���tEXtSoftware�Adobe ImageReadyqÉe<���IDATÓcøE.`XF.`øO.��‰ •h)À‘����IEND®B`‚�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000222�00000000000�011561� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/themes/nihilo/images/tooltipConnectorRight.png�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/t0000644�0000000�0000000�00000000315�11360615632�027223� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������GIF89a ��Ä�þþþæææáááãããóóóûûûýýýÝÝÝÞÞÞùùùìììØØØÒÒÒÖÖÖäääàààíííÎÎÎååå×××ÍÍÍëëëôôôòòòøøøçççÌÌÌÿÿÿÿÿÿ���������!ù���,���� ���J`Àd¹<IYnV©ã¶YÌ�Ë›׊oH†ô“a&‚§(H4&.3P&¦‘\þ”aLf8 >B h)`œ… Ã9!�;�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000217�00000000000�011565� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/themes/nihilo/images/tooltipConnectorUp.gif����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/t0000644�0000000�0000000�00000000315�11360615640�027222� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������GIF89a� �Ä�þþþæææáááãããóóóûûûýýýÝÝÝÞÞÞùùùìììØØØÒÒÒÖÖÖäääàààíííÎÎÎååå×××ÍÍÍëëëôôôòòòøøøçççÌÌÌÿÿÿÿÿÿ���������!ù���,����� ��J 'Ž6`dJZ¦ª*H›#Äd6Ðd8Î%‚Ù1î�1:ˆØ�ᬩ ÃPuŠQBcéV š„è0w·ÀÂÝ,2!�;�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000224�00000000000�011563� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/themes/nihilo/images/spriteRoundedIconsSmall.gif�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/t0000644�0000000�0000000�00000003507�11360615642�027232� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������GIF89aK�-�æv�ýýýþþþöööðððèèèùùù“““üüüæææ¨¨¨ûûûÂÂÂÀÀÀ©©©÷÷÷ÜÜÜ¿¿¿”””éééÚÚÚíííªªª§§§ÎÎÎêêê™™™ôôôºººóóó³³³ëëëÈÈȲ²²¥¥¥ììì¾¾¾¦¦¦ÅÅÅäääÃÃÃÌÌÌááᣣ£ççç•••ÇÇÇïïïòòòÖÖÖÄÄÄÐÐІ††ÞÞÞ···ÉÉÉžžž­­­µµµŸŸŸšššúúúÛÛÛÆÆÆ‰‰‰ÝÝݹ¹¹ÕÕÕ¼¼¼ÔÔÔååå»»»«««ŒŒŒ¬¬¬°°°¤¤¤½½½õõõ±±±ÁÁÁ´´´àààÍÍ͸¸¸¶¶¶îîî   ’’’âââøøø‹‹‹ŽŽŽÑÑшˆˆ‘‘‘‡‡‡fff×××ÏÏÏhhh€€€ÙÙÙÓÓÓÒÒÒ^^^›››eee¢¢¢ËËËØØØ¯¯¯ŠŠŠñññÿÿÿÿÿÿ���������������������������!ù��v�,����K�-��ÿ€v‚ƒ„…†‡ˆ‰Š‹Œ‚- Š‘“‰•’”š˜œ—†56429 ¡£¥§©«¤¦¨ª…¢±®´„¶­³… $1uÂÂ+¹v¿ÁÃuÅÇÉËÌÆ„ÏËÍÓÀÐÖƒ Ãt„ÜÐáãÛÝutÃâäêîè‚å Âuïƒ<¼ðqCX€#&üñ0Wç`BAÿ„Ýðñâ€<„ …5"À Fˆ  Q�ƒ ‡‚P€@‡-3„q!åÊu?´€ÑQgfM;*óÕ™±¥€4m }ðeÁ<ŸJë(@b& ‘žIí H€/E„?ê�(�…#®„˜qÆØ²gÿXü1#–dÍjE«–­Û¼q-¢QSFÁ[½ ppÐä/ ²hPò@PâÅ<&´aÀC2eËŠððÂå‚�Ï•í\vPÂËœ\Pƒ^œ† $Z4LNm§„šŒY£á „|§�£JñãÉkX3¦És䃔kÀýzô4¼x#ú   Ã~€ˆ %¡W?`½{øòÓ¯oÿ>þyýìÑqŸ‚Ì·Ÿ€ý"� Lô°BRè°€! 6ø`„*È ƒJHá†z¨¡…fX  d B R�Š*²è"Œ+¶xÈ‹)Ö8cŽ26âã@)äDiä‘H.’ ÿ(‡,¹‰%Ov‚ˆ“7²"Ë+µX‰ ,¼`©‹–½dyK˜ƒP3Œ6‚˜IŒ4ebS ›iºy&œÈȹæ1åóM8 ÀÃ}¦# ;îjO<óðé'>úðc¨X$AÃ$ñ¤0T‡¥þdZÇDÍÃ)DžnÔ‘0£bZ‡H$™´éCâÈãLÃ<ñS¬8éÄS¶¦dA¢D5O¯@ý* SN C,®SUu¯?!P<X|VC'è%í<t¬Õ¶ÚN+ ]vÉ“­#âvë¸è&:Xaìª� à ?È@©0¯<ÈÒ»o¿ÿðà 2ÀÀ–ýûAN;-ÌoÃô FÿH ÁÂ@Q� ¡Èì@ˆÇ kð@$›<Ê�è È�”|òÇôê[³Ë|ð`6ÿ§Í €ƒù}ÀI/Ý4ÒcIm4ÕJ3}5ÒYkxB` „'|øuØc—í5Øb“m6Ûi¿¶Û¡0ÐÀKl`cÝwç½÷‰}ë=càëb7Þ‚'©øâŒ7îøãòˆR6ÙåL2yåš_ιäžg>HT$°�€À1‚n:ꪳn‡ë§§¾z(¥×;î¯Ûκ!Œ {Ð ¼ðÃïLðÃÓ¡ü4Ì'o|ô>?ÈCHÀìQØ7ßýÿ÷áÓ‡zOHùõ¥O~ö¸Àžt¨ï¸@� ´×À¥ €øô¿û±'bð€} Ò=@(@ Á4H‚À@„ÀÀŠTО Üêƒt¸@H ‚È„)A!‚À„ à…'”&@ ûÀ((tÁ”P àР@2¨‚ˆÐVõW€¢ãG#&Èb‘?TñŠbÜ¢üà9€P‹ Á€<Ð,Áð�úe�9Vá ø@ò¸Ç8Š  AˆA(@H>ÊK œÐHCö =‚< GÞtÀ¤àd”à ¤�;‚ød(‹ †”ò”É¥ž09𕽑¥vùJ\ª² gbPXþ'Hf2Ð�Ù=È$�–ÙÌü S™`¦3¡‰ÍlVó˜ÝÔ¦†6�ƒLà70Ñ DNs¢S‚`g9ϙε“žð´ƒ<ÝYÏP@ GS(Üèþ©¢€ºˆ *0èªPT ‘‹¨D'ªˆ@��;�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000213�00000000000�011561� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/themes/nihilo/images/spriteTree_rtl.png��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/t0000644�0000000�0000000�00000000517�11360615634�027231� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������‰PNG  ��� IHDR���6������x-ý���tEXtSoftware�Adobe ImageReadyqÉe<���ñIDATxÚì–Q „ †U<N=u.Ð=ŒnUO=öÒA",Ée‚ÜÖVWCv·ðƒhê·±”ÝEcl¬ig·Y–aS.”Ψ)‘¦)¢”"BÈ!·, B ¶m?.JÇ‚nг±²,ïiìjЮë^6ø<Ϫÿ!ªª:üµ¢(ÖÜ I’˜LE=꺖Ã0Èq%ç| Ƙº†û‡çÞ½oÓÙ‡«Î™0NE¨8L2ŒŸE™¦IC¯´Î¾¨®:ÁÆýÖByž«öòA×ùÚ³}P~aÊj¬ïû „Ò‰gÅhì¢<�gÌ?¤–Ù©����IEND®B`‚���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000214�00000000000�011562� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/themes/nihilo/images/progressBarAnim.gif�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/t0000644�0000000�0000000�00000015630�11360615644�027234� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������GIF89a �d�æ�ÿê£ÿÝrÿÜnÿÝpÿßxÿèœÿéžÿÕYÿÞzÿà€ÿÞuÿâ‘ÿôÐÿá‚ÿè™ÿà~ÿì¬ÿòÆÿõÕÿóÈÿñ¿ÿí®ÿØhÿÞtÿð½ÿÖ`ÿÚpÿâ†ÿà|ÿî¶ÿç–ÿç”ÿôÎÿâˆÿóÊÿè˜ÿÚnÿâ„ÿî´ÿÜvÿÜsÿ߃ÿòÄÿï¸ÿÜxÿØfÿÞ}ÿ×dÿõÒÿé ÿà‡ÿæ‘ÿÞÿÙjÿãˆÿà‰ÿð¼ÿÞ€ÿê¡ÿÖ]ÿÞƒÿãŠÿÛqÿí°ÿ×bÿÚlÿà„ÿñÁÿôÌÿäŒÿÝzÿØdÿáŠÿî²ÿãÿóÌÿæÿïºÿðºÿã‰ÿì©ÿÛsÿÕ\ÿáŒÿÖ\ÿÝ|ÿâŽÿÙkÿÚiÿã”ÿòÂÿí²ÿØbÿî°ÿñÄÿäÿÚhÿôÊÿè—ÿëªÿÕ_ÿï»ÿé¢ÿä•ÿíµÿë¨ÿë¦ÿë§ÿìªÿê¤ÿë©ÿì«ÿë¥ÿê¥ÿÝsÿë¤ÿáŽÿáƒÿß{ÿÙmÿê¦ÿÝ}ÿä˜ÿêŸÿê§ÿòÁÿÙfÿÿÿ!ÿ NETSCAPE2.0���!ù���,���� �d��ÿ€o„l ‡ ƒoll+ˆ [ŽP"‰’"•Pn& K–niK¡£l§D"0³?iik²³§¸k»³&·kjj³‡kÆjpPˆ‰Îqm‘K"ÇÖm8™KK+pÖ�n à""kmm�i¡éeíî¹òP��Í?"òEÀÁ¯™š€U´Ñq N’„Z:0|§O„*†P€£&Ž5^BjÇ @/)`(ÙoˆF 8¶Ôã×A%†2fê� G“&øéУ‚ÏÛ aÀI“*TH$jÀ�”+´h„££jÕ$\RèàÕ@�&(ØìZµ@jÿaþhë�˜>u¸-àÀÞ§IÜöu`âèŠ��àk‡?úŽc Âã[¶�áÁCÕÇ&¶ü¨ÐÙs4¡GW�ÐyoÕƒ<| `ô 6:f~s;1Š ¼å™Éœ‰¯3'1çÖk¬™‰Qàyg3íbÄHSúÃ�˜ÆxS ³÷^ǯ‘ýaÆŒUc8Á¤H'6l)‚p@À€àÃ5XD� @�X¼à@ 0€�0ø‚-�‘A fØ` /x(E"Êq…Pq�"^ €‡;p�ª¨@;¸HÅ~ £dp€R‘ÿr(P GJ‘A4Y �H±C/¼àƒ“!%/´PÀ àGdZ` WZÈe \qGœ±a Wp† ÊA'Ÿø b�røÀ' …>ˆ¨ŒA0êCG<ª€r0Å Xêd¡›aÁž '�Qé¥Úq ,ÑBN¶êª²VÙj€1( ¶>àBnÚy‚È> ¬‹j€,$@Œj� ² 4`§lêB´Ù¢ é¦FHÛ@øÐí«åf‹î >¼Ê‚.œ‹®›Î[… ÙÖìFì›Cu”`´FÐKC)|ðvœB 2l�m{´Ð0± + .ÃBÈpغK± HLî¹upœ²üº[Â(O³»oðòÍç–0sVX±ÀÂBÔQÇHO±À9ðP4Ò„ÐÃY0œÔØðÕ‡€tOô D'ßBZ÷ÐÙ"§œ¶Ø_´=j«­„��!ù���,���� �d��ÿ€ƒ00„‚„+‡„IoˆD „D„&“„lˆK „œ„Ÿ„?Pˆ"„¨¦«—nˆC„"iˆlµ£kˆ+ˆ½„p™ƒMjˆ Åip£¥ƒ8qˆK¹m„]°ƒ�ÔÛpÞƒI»ƒ+:ˆZæj郾1ˆ8^ˆÂƒk÷‹Ø£Cˆü @‘‰qƒ*`@$®ŽEïAqÂ0âÑ#Ô&#! nq’ãHB�JÂ3¨ò‡„樇hËLM¿P:@ä1áDnzþàÁ  D?cþ@D„ ˆÄ| d�êLjވ4•PY^“ŠƒQQB#þ)pvˆiÿÚþù°qÐŒ"ˆð"z€H Dä ²�Q€�ˆ ò3�QŽ F”¡1!ÀX”ÑÄ„€H,xPˆZ”´õe„‚Œ&d6¡#;ù @H@gD¼ Õx…DĶ€èÄæ?5jF$ç ``$þò³ú †/"Üö ' ›ÿ¡+ÁÙqOEü?Uò('ô@?¡Ç’€t„ØÁ×{ˆ°pà €Ç_sâBˆ‡H B@zÓ"u”P ÀˆHˆ . ²0)ªxa ˆ„� Œ{(Ã…ÀÜH "‚Ä…=2„¤P0 €hâ I²ÁŠ„X‘"2@9È”."¢"=<È��!ù���,���� �d��ÿ€‚0ƒ‚l†+…ƒ†D‹‚o†& †“ƒ –‚™‚œ‚?ˆƒD¦¥£¨ƒ&P†C"ƒDi†l‰µƒe†k†j½ƒM¿­¢ij† †p†̃lmƒI¬‚Õƒ"²ƒp�­¸ƒ+áƒ*ã‚k:ƒ‚M1Íïnƒi^†M÷ƒC†Üjœ¹Q 3„ƒA[8€±ó·‚œ¼Am*ÐO‰­:þicÂБ~„4d@å 9 ½jsƒ&$2ôCç4/GP2ôg„‡—%7mçRЈƒ T0¤ê  Ž}˜uŒ¡\áÑ%Ȫ ÊX*ÈÀÁ?lÿá¾ýPÄP]Cˆ1$@!?  x…Áƒ‚�á+ÀP‹ƒ¸4$À߆jâ‚y‚ $ÅБÑ2à+'ñêA-ZG.MÙï ÚƒüýLJîA‹ °“ø…!Ä [„ÀÍ‚ ]Ù;5 |/8÷aX»¡(†Ø¤àĠ㙄ⷠ#F„rŸ}rAhº/(‡¡’�vƒð÷‡†‘€!p7È‚¹7È ü·ž T(ˆ,U‡!Ô'È%ÌGÔ†Ðàß ! ˆa DÙ`ˆBÒQ2áˆH¨¡ 7øhHtò¡!VÌXâ =,`È. âä 2Dù‡Y ‚!gè�!ù���,���� �d��ÿ€0‚oii‚e0‡CЇ 0‚k‡•‡*ko‡ 0 ‡n ‚+ ¤‚ll‡" ‡®‡?²šlP "‚ P»‚D¾¨n‹¬"¿’‚k‡8k™‚Ò‚nkjÚjÞ‚?*³‚opp‡èpm´DK‡km�°ÆM�ú‚",;åߥ ÌÐÑ.­1¶9dñÐ ^½1`@/áàxhË ‡ �†C+Sbxyi¡ENˆ(O™:+¢ZÑáZŒŽ‚Ôt(*hÉr&’\{úG‡‰‡Ô( ñG…©\¨ð5i‡â@8dÂZAbÿÆ�}æ`Ì¥‡êzÐd➇½P± rðWŽ$‚ÿÌñðáÙCŠa­ f”zãæ‡šÿàv¨�“Ð�¨™'(³g8,ÿÌ(rè4“CE²ãC�d Õ"åIÙqˆÄ…�‡,ìÈpÈG�è‚€�y!ÈO€‡�9Þ÷¡-,:"�¼ j 2À‡ð+‡2 Àþŕ₀‡hpÀ!@ xÈ  Á r�€‚\á~,ž2d‚E@„G@‡ë¡wvØñ^zÕÙÁAtñí6£ Ô€Ÿ '<À_$hpÉ " ö ‚ÀÇEþáƒ(!dœ°!Šœp Æa™%—‚øpâ!QÅŠ.R… ‡ Ðâ!4Й<pH)@ö€‚$ç!.ð)H Iþ@º ²A%Ð@‡Da¥ <ºà Fòh ‚ØÁB¦‡”À© .¬yȨJd© BƒŸ‡„° ‡¤ð§ !Ð*ˆBÈpÈO@*ˆ 7@Öƒ°‚Ü0Å! X*ËjZG¬t,pHÓbÅY„ºÁ!=dÑ­¢­þÁ­�!ù���,���� �d��ÿ€…n†8„†C‰† 0†i†’†*k“ ™…lœ…+Ÿj“a ““[«l“* “²†µ†+…"“½iÀŠ–»¶¢…†Ë?θ¨Ï^p“oC“is““8m¬Å…P�“çêÏɆo:†nÔ¾ô»÷‡1†pû LJÒÍPÏ BX‚8ƒ&9Á0iϤ5e&UÈ7jÒŸ~†Ò¬˜‡á.™`b’“’¨œdàÇň†ð´2„³Ðˆ7ÞLÒ!¬À—ÞŽòlÉÓÃ@—N u±iHÌC:* ½jhÌÎBfðjÈ€XCmŽúÀ)϶†ÿfp-Ôã‰!;(<Ú™„%ä wxT0É”IäLÊà·Ÿ�0`IG* r䯀I,ÚñÙц°h.D⊡ )¸Ã7v¡¼†€(žtx3aC½ í.Fò&½¸,{’€“|$7ô¢Å¤é… .t‚ß“ì<Ø‹ñ¦5Lr1é„úI¿¹Gïq¾!ä“°¸îq¿!ØýáB×íe{ÿXH9„‡^!)Lbă!Ã$þqá xäQ‡íyÔ€„FL"D “TáІ<€ !LÒà$Ø`HÒƒ†ä¨£GþhÈ )áÑ“,p¤GuLÒƒ’0z´@†�!ù���,���� �d��ÿ€ƒƒn„8‚„*‡„ Šƒi„“Ž0„lk„+›„CŸ„a¢…j„& œCª„­„œ œŒœKœƒi"»™ƒ+œlÄÇ„¥ƒ[œ°ƒC*£ÕoØ„ipœCˆsÓÈmœN»�œiÌ…í„ðòÅÒ´1„jù„û«ºE2àj!¶ÎêB…ƒtð†ÁÖD‡M8]–‘ЀƒL¬àÔp€œÖ”üÁ¨•’¸Ûø'M-B4@˜ÉIÇÜ=K§¶8Ýû%)!2 ‰q:è‡ÒœÆÜäë ;ÿÍàç×LPf -¡Tÿÿô°AˆÃ Np „9œ2à àWŠß œvìà„˜–Å„&$˜Ÿ{û "€S‹„vt&4�´ãу‚Ô™œ+~'òA‚“ìAö&t—“œ¨ìN¹ò 9zSkD"ù åƒØ!$Àô Ó Y°À ‡È«9=àD¢6!;ã¸ÃÉHN(r¢Ñ= ^âƒXô„??'ÎýႜHÇIÿe7 ô÷!9à•!)pâÂ{„ÈІƒÔ¡!! 4ÀIx‰È œ4PG{x•À‰.p²ÁâE#ˆxýA!<àœ|8ˆ=‰WE"œ|‘ä HÐÁ‰#ZÁÉ.b%'��!ù���,���� �d��ÿ€‚‚lƒ‡*†ƒ ‰ƒnƒ‚’0‡oiƒ+šƒCƒD ‚jƒ&¦*©ƒ ‡?p ‡µƒK‡[‡n½À‡+"›£‚‡ÈIÊk‡Cƒ®‡*À¯‚ZCƒ8º§ßƒos‡8»m‡iê�‡Ëñƒ�Õ:¸ËúªÚƒ? ÒâåãuA((ÁƒÜ¼ô"8‡ 8¥Ì¦“Vd<ÔFd9†*˜9ÈÀʈ(Ýü8dÒ¡15ÿ�€@¤ 6˜þ°ñùÇ@³#EÌ¡õð`P)ÕA*<ý€M)×Ap ò0c(ËúpUP‡ÿNúCà€‡,8„÷P�9ƒ‚ìÈ{áP)~a¡r¨ÆÜƒí„%ƒ]|ûþÉ€yÐÝC~: ªaaÑP”daÀ!W‘™,HÁÆ€¡Ðà·ð "Yáƒ,"Q7ù\ä‚‚hNÝ\ŸÃíü^-è‡CA²óàPìA,Êÿæ=ÈE‚Cì½t"Ê¡ùôçVÿƒ€Å!è‚qˆû=Ç!ÚâB\ßÉ—‚ê òà FD(ˆ ‡Xø‡ HÜ7W‡ò}8W‡„ à u” à\ÌEC‰-’Ã\!"Ä„‚LñÄ!8ºuÈ7bE‡Ü0Å!J”x$ ’‡L±À!_�!ù���,���� �d��ÿ€‚lƒD‡*†ƒ‡?P‡ƒn‡0”‚oiƒ+šCƒD0‡kƒ&¦ƒ*©ƒ¬‚?jƒ ‡p‡ ‡[mƒPK‡ÁƒMĪ—•"‡£‚&§¯‚*­Õ„؃nµ­*ƒ»¶Z‡o䂃ǂPì¶�‡ƒCôƒm8§ú³‡†è(ÆMP’ŠÂ `À–Bƒ á'ˆa7ж8„ãÞ ±é7BHAš2à`ߊs-ýè°òКƒØDäfKÍA~œ;i¬ÂÏAoÞ )È�£¦LÿÄùö‡ÍˆC#ÒýqàáМqºp×£�|8ôAéØçÿé€;ÈÃÕAEl z€ C,j`0CÉpÈOáA@¤òqa–‡,(8$…ʡʃÀì�üXƃ(F-‹êA~^ ’òZkÿ "xPâCW—þƒ‚Ä¡�riÈœ|Ð Ç7Bq¨†tAvŠ)ø y2wA-Ž"]Ð�ÜÓË·î-ˆ�‡Arj{0ùÎ!ô?”àŠåƒ¸ÐÀ!QÓß œÀßw°à×!v1^1Uø§ž 9@˜†ó“„ "„‡lp‡¤8ˆ‡QÂ!=SG1.”¸Á!4#ÃŽ‚$ÀÃ!H„pȇ‡„ðÄ BÈpˆ5âä!JD)Å(A$‡|¡D �!ù���,���� �d��ÿ€‚o‚‚ †l†+‰†?Œ†P?n›†^ž†D0i†&¦Šk–¬‚Ij† ³†C¶ªq†l†mNK�""p&̆+©†*•†®´PÙ‚*Û‚¹ƒ*œÎ†Cº¾¿ë´Ã†ºÉ™ö‚?eú:š4J¢£Ñ›p‚�ÄhdN•FÞ%|(ˆÄ?h(ŠÃgÈ@Co8ú( G# ÁH+e¤'GÒÑ“ƒ[N6*ÓâT8IR† ýc PG—‚ÖPûóêä®Ê44§Q˜ ¶ãBAm>4úpVµ†ÿ–˜±Öj4úC ‘ZhdáH# �8±¡#Ë1„J#?I9ÐHŽC~,Sþl(™F¤‰lˆÄ`C-^n4@6èׂjX˜mHÎnØh_¡½÷NãÎhg6„"Š¡©ÿ 8Ñh¹!êŠûBÀØPô?† ùÐ.L‹F80ÿ-(ŠF$†2ò ‘|Cõ™'7ä"A£ý†$Ѐ!8à€×a'‚‚ØÁB#BìeÄ^ïáçB^êBC#'d(H)4bG~‚!C#$þQljøí%0(È{É‚ÔQB#8¢c#46²Áä°‘†ÙH!x•¢!S<Ñ‹†ôЃ!ÜÐÈW‚D‚(¡Ä��!ù���,���� �d��ÿ€o‚‚ †…†+‰†?l† †’†IK“P“"“*n“&0“i“§Šª—¬‚Ik†°”j“C‚&¸‚l»”q“8–†m œ†j�†&¡ÎŠ“³´Õ†Mׂ“¾‚?߆á*†CÆo^¨É†^ò‚pôÓ‚[†*øýÑcRVL€°Q©à´Ljc ×$4 QÐ'(£ ˜´¢ ¡#©1)¨‚ƒI[ÒñR™Gtê0)†‡R“Øü4ÄçÇ$)[V˜”t „£5¥ÉôBÔ?>r “¢C9¸‡5ìŸUšõàë¦iÿÿ´ykhFÜ?EžL*2éI®L² `R¾òÑbÒņZ�™$ €![6´ãÀ¤� ñl‹‚Id¤L’óWÕ†®´t$³!9”'ÒPØ…”?7ŽÜ[€Ã—7 º"XP åP˜4�÷b†ü„6t"ÊêÓ†¼ ^‚«gÿ1BY½‹#“NØ™4\ùã-Lb_rCLâÃt† ðÀ$ô•@|â âB“  à$çM’�„†°ÐW“¸PÅ$ô÷‡ }‰øG“Øqà$)d¸¢ u‘₆l0aHLB†‚„0Å$< bÅ$B”0I €ØW#’J¢D_ØhH‹† ‹}õ —!2LbE“t9‰`þ�!ù���,���� �d��ÿ€o… †„†+‰†?l† †"’†I–†™…"K†*P“&"“?n“*“i“0¦°†³†k“C…j†o½…À†8œ…+q“D¢†jm†ÎÉ�®¨†PÖ…“8Û…Þ†áI“¿“éÏ“o^±Ë†MC†^ÑÏ÷æ[“Ì�hÈ„¹ M&µÑ1i…:††Ö844ÇÀ¤$ê,‚h(Ƥ?RiLF°ŽÏp¤BY0áF'rƒiB‡I1<2ps’Έ[&éøYèÇG¢tT˜´‡e¡1Œ Ñ,T ”!§… è*”fĤô¨"n R¯"-0χI3ÿFþaÒcR&“8|ô1 K€IA> øha—Á†,¼˜$ào!@ ;.yR�9†°P™dáÂ$)R&¡P9tbÒ†€ìMÀ€ €[òS¹fC>3\Øõ�Î5 ™üÇÇÆÄh˜}»Ð‰å†xÆÝu!(&ɱþç C$d²cd’ñLÒ€þOoçv8Œïú¸!&ÝùèB;ôB.$0‰QL’@†pÂG²à$ ‚@y†QÂ$U|´Á$ô—×$4¤À¡"Þ—_…28I)ª8 .2ƒ“ô`ÅŠuLrc…ʘÅ$=ò#“(ñQ6LR¢ !OL"à “LQW!��;��������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000204�00000000000�011561� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/themes/nihilo/images/dndCopy.png���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/t0000644�0000000�0000000�00000001411�11360615636�027225� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������‰PNG  ��� IHDR���������óÿa���sRGB�®Îé���tEXtSoftware�Adobe ImageReadyqÉe<��žIDAT8Ë“ëK“aÆïMwð�nnºæ!çærŠ#·¥ls‘!BÚÔ55\•B³DÉ4­\sâ!ÍÙÁ„Be& 9gч ³òKü#üÞãêÙœª îOïû»îÓs””L¤¢€Ò~„Ó»KPr£™u©)ýö ¨ˆB ãuxº=‰ž¸ôÕ‰úõZ4|ªEóº¥=¨„BÑÁ¥žþþî­6ØBf”ÐyµÐ ä£p®�ª™<¨^…yþ4ø&~x¿ Ë›>×£ò­ Ö`9ª*±+ãŒ9ϳéÏ@ê£hýj>Z “„LõcvÜd™Ï1øLÈòÝ›]qƒ¶×!{,…tB‚¤a1xCIkH™‰†SÛ8û®¶5+ÊÞP´p77Üq×û¤Œ%C<"ßÇy"Ÿ<lv£‚»ó³–µ2 ‡e´ §|zÜ^Ù« }Ñ uo>´}ˆÚ ‡ò1“ó •v³i_DÕ뽞ÿ%å ä%ÌÈÐ}ö5h]¿úßÖùŠhÂ&fMÎ96.@;«ÁÝÍø·&1úmÁßÁ8°ôk ýýð|ñ eµtƒ„d'q$4R ™­¯ðUr§³!ŸJ‡xTÇŠ#nP½X ê£ð>íÌ€µbfCLÌ#“Ù_Œc³ÈyÆv=™¤1œ+θ}Ùzc°¨‹…*ö´¥ ²,!ó§C2ž†D_*æm{=ÏY÷°5ÊwRD<d¹øaÝ 5„l×</Ûu?ÁµêŠF´ôÌ‹À—)Lüƒ÷ÀL”. ©<i w€Xxc=÷”WXfÞácŠ+YG&E r;8yAÆBq‹¸ÌZ ¤êŸó7ʤÜÞ'n����IEND®B`‚�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000206�00000000000�011563� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/themes/nihilo/images/tabStripe.gif�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/t0000644�0000000�0000000�00000000066�11360615642�027227� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������GIF89a��‘�ÓÓÓ×××øøøÿÿÿ!ù���,�������œ© "Q��;��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000224�00000000000�011563� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/themes/nihilo/images/tabBottomActiveSpriteLR.gif�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/t0000644�0000000�0000000�00000000443�11360615636�027231� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������GIF89a2�2�³ �þþþõõõøøøåååùùùúúúööö÷÷÷ûûûÓÓÓüüüýýýÿÿÿ���������!ù�� �,����2�2��Ðp¤I«½8k*… `(ŽdišÆ1!!¼p,Ït=D1)|ïÿÀ pÈCLȤrÉl:Ÿ …1­Z¯ÒãuËMf©Ý°õ+.?Éæ´­V³Ûæ7\,Ÿwëö->?žòé~w‚z„…}Zˆ‰`‹U{Žk‡‘M”Q“—’ŠšK–”Ÿ‘¡Ž£‹¥ˆ§…©‚«­|¯y±vdD¶··~¸¼½=ºG¾Â¹»ÃÆAÀTÇË>ÉQÌÌÎÐÑÅÓÆ ÁÖËG�M �ãäåæçèéê�á ðññ �;�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000224�00000000000�011563� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/themes/nihilo/images/preciseSliderThumbFocus.png�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/t0000644�0000000�0000000�00000000662�11360615640�027227� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������‰PNG  ��� IHDR��� ������Í£õ9���tEXtSoftware�Adobe ImageReadyqÉe<��TIDATxÚ„“½j„@Ç×h:mÅ'ļȅ"pyƒ[/)®I“NˆXå„€XXÙX)–‰‰_ÙYnÅvgw~óŸÅ‘ñ<åy~DíÐÿödÆ-v‡Ãl†a NeYâ`Žã@á;~^¦ë:Ô÷ýâ8ñü”z5íÆq$¾†à @XÏÆñë¦Ó4Ý<IJ¬E¼€ ¢išD *3 CZ£oú‚$š@!ˆa½Qµ5´6~®2)4÷‹J´Àº¥E7ôK»®‹Ú¶Ý$C çp;xÁG=`4ªªr}ß_(Ñp^×õ³®ë÷0Ó+1¸ãøEÑB â$I^5M{Äáפ4kå†!*Š‚¨À ± '|ý *d$lÛž I’JÜF™eÙ(Š(Ô4Í^Q”7|ý_bɲüQ–å;§k<Àªªð ?�Íù`�ýß’:‚Ö?����IEND®B`‚������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000227�00000000000�011566� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/themes/nihilo/images/splitContainerSizerV-thumb.png��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/t0000644�0000000�0000000�00000000201�11360615636�027221� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������‰PNG  ��� IHDR���������Úœ s���sRGB�®Îé���tEXtSoftware�Adobe ImageReadyqÉe<���IDATÓcøõëײeËþÿÿÏ0Y�qÙ•hŒÈ^õ����IEND®B`‚�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000206�00000000000�011563� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/themes/nihilo/images/treeI_rtl.gif�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/t0000644�0000000�0000000�00000000110�11360615632�027214� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������GIF89a��€�ÓÓÓÿÿÿ!ù���,�������Œ€Ë¦ ËlÒtk^v÷ü]!5F%t6©¶+׺M�;��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000216�00000000000�011564� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/themes/nihilo/images/tabBottomEnabledC.gif�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/t0000644�0000000�0000000�00000000777�11360615632�027237� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������GIF89a�2�æ�ûûûöööøøøùùùõõõðððòòòåååìììóóóñññàààôôôþþþÞÞÞÓÓÓüüüÿÿÿ÷÷÷úúúýýý���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������!ù���,�����2��\€‚ƒ„…†„‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ ¡¢£¤¥¦§¨©ª«¬­®¯°•�³´µ¶·µ º»¼½¾¼ÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÕ‡ØÙ�;�././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000220�00000000000�011557� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/themes/nihilo/images/sliderEmptyVertical.png���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/t0000644�0000000�0000000�00000000162�11360615642�027224� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������‰PNG  ��� IHDR���������ÔTR¯���tEXtSoftware�Adobe ImageReadyqÉe<���IDATxÚbüÿÿ?`$À0� ‘û/ x¦����IEND®B`‚��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000221�00000000000�011560� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/themes/nihilo/images/tooltipConnectorDown.gif��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/t0000644�0000000�0000000�00000000315�11360615642�027224� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������GIF89a� �Ä�þþþæææáááãããóóóûûûýýýÝÝÝÞÞÞùùùìììØØØÒÒÒÖÖÖäääàààíííÎÎÎååå×××ÍÍÍëëëôôôòòòøøøçççÌÌÌÿÿÿÿÿÿ���������!ù���,����� ��J`¶�[ižåpB€¾ÁÃq‰F¼¦¥%3§0œQéÍb`ì!(È¡Ù#P0&LäBíe$À$Ó5 ‰ l,h2šÛˆ`º!�;�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000206�00000000000�011563� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/themes/nihilo/images/dndNoMove.png�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/t0000644�0000000�0000000�00000001245�11360615634�027230� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������‰PNG  ��� IHDR���������óÿa���sRGB�®Îé���tEXtSoftware�Adobe ImageReadyqÉe<��:IDAT8Ë“ßKQÇ¿3ëþpk×­5üQiˆ”ÔCm)=VÒÃBAÕCAQYI=dA!AA“ôCÓ¿ ¶Öˆ ÊZª…Ý~(³ BI+ óíÜiƦÍ|¸gιç{Ï\ÎI¸�­]À!ÔLÕ6S1¨2%v[r½ûÀÚÀȺ-,÷X<s–ÓÉÝü¹+É_ûösúD'ß´$¬kÐúe¯ÏS4HqôÌ®KœÚ¶ƒ…e,46Ñ”u²u3§æxà N®jáÄÎ${à{çŠÀ€†ËÀÀhMÇê—rtI-'Ö'h›eÉw ÇTNpýok7°[:±ö›^._É/ñ8ó±ÍÕk8k"‹Æìœ"WõÇÿ*¤"‹­=r'8-M|ßÞÁl8ÌÏuõüÇDàc¨’Ù›O•Ž¿0ÂÜ¢8;åbaèþÂxS3³¢:§‰ˆ«Tb&áoi>ƒ0s‘(çm"ò¶¢‚#‚è÷mµ™»}óx¥k|­ë¼)S€š^Èü쓹Dн÷9ãAÍȰì}!\Lz߃LI \Ä’ÓH¬œgBZ8&‹ í‘Ïgÿ'N›W«êà¡Ð.c#€vL{6)‘R>o·›rNK;9w=%Ã×Ç@P;êÞŸ ™ê¸í;±s@F½ÙÇ䊨N gÓs§À‹úÿ“rrµS\þíß‘¶ÚÊÅ^� Ý’¾"\_bÆVûóN×nÝoNŠ<Ãi3d����IEND®B`‚�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000215�00000000000�011563� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/themes/nihilo/images/sliderThumbFocus.gif������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/t0000644�0000000�0000000�00000000356�11360615642�027231� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������GIF89a� �Ä�øøøùùù®®®ÈÈÈåå妦¦¨¨¨{{{‰‰‰‹‹‹ÞÞÞ°°°ªªªááá´´´ÝÝÝÂÂÂ÷÷÷¬¬¬ËËËúúúüüüûûûýýývvvþþþÿÿÿÿÿÿ������������!ù���,����� ��kà&Žd¹ XªªB‰iÚeÍÕ¥%ùVàK¤ !ˆ0ބ¤X.™Áa°A^*“ š! ÖËäB.C52#6“3]ÄãÅ—áÑ„BÇû /0x07 �'+ $IZ—$!�;����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000212�00000000000�011560� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/themes/nihilo/images/tabStripeLeft.gif���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/t0000644�0000000�0000000�00000000660�11360615642�027227� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������GIF89a��æ�ÓÓÓ×××øøø���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������!ù���,������� €‚ƒ„…††��;��������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000207�00000000000�011564� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/themes/nihilo/images/editor_rtl.gif������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/t0000644�0000000�0000000�00000007571�11360615634�027240� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������GIF89aô�æ�Që9YÆAn¾ÍÒÌ?£>SLI5™4³Äíw’Ü,+ÌÙõóóó¥¢ ¯ @@@111Æüüüƒƒ‚ÑllÝÝÝQƒÊGh̘ʘržëwvoÿ±°R„Êøùù`†ï½½¼êïúQqÑÉÇÆb~ÔM±Lööö…¥é«¹ÛîíícedbÆai˜êÿÌÌ—­äU~Ú‡·ˆýä1zèá>>Áº{ µêõøýu¨zÿÊ#ßåö興k´ÖŽŽçÁÁN¥ímÊòÐHH«¤eo޳žØŠ³Ü$WìÊ--t²]�ÿl—¥ýò•ÊÉ‚ƒÆ'öë÷ºÅدЮtœËûüþïí%Lwõ øÐË·ùXvÒö žâ�ZœMrÔ˜ÀÉOÙcí.Ô�êÿÖÞþû:tÜ̑ВÈQ¶|²WÌÉEüúذ-ev£Ê•¼ý÷÷ì­ð¹çÏÚAAE†ãÖQ|ûœÿkŽüúíìÍÓæ”骽•À­“ÿÍ´Í€ÿƒRƒÊ†”¾×•ÿÒÍ�óýççç'Œ&ÿÿÿÿÿÿ!ù���,����ô��ÿ€‚‚…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ ¡¢ŸHH£§¨©ª˜„«’ ±²²š ¸¸~®½¾¿ÀÁÂÃÄŘ¥H6ÆËÌž¶¹º¼Š­Í~ ~ÙÚ×ÞßÞ…¶LL&é ÓÔÍð›�ñôõóø®Pö†¥l¼Pö¯ ½qåÎ¥3±®¢w‘ü,ÙqFŒ˜9u–HC$€Ç@Ì@4àIlRªlÐm[6…H𡠦Ʌ °pb‚Ä"ˆŒp@X‘h>‹$R´ˆQc"¥/fÜhð�}‚hÝʵë�H�tXdÂ#ˆ'UU…Ki­¤«ùÿ°Ž*@—”~è>tC_‰& Jà‹+V@“ GʃùPåCÜDµÐM*­ ]Sk=´¡Bë °7´–]!æÌš7sî왨#? À€I3eÊA>t óß"X ÒƒÊë, péæŸؼé¢É&@€ÄqøÐw" è8„ƒ{DÀ…7Ž\ù¡üÃw\rÒôaàöÁ‰j ~%H‚"WThá…à`!*ø�<Èe 9Y H)¤8Â`@0Âhˆ‹T¸âŠ)æXˆ9ª¸b‹/&PÈ=Þh!B^"ÿ>"ˆÈ’B¨ˆ> Be“X:ÉHIÈ`×]ý$‘D‹¼1ÄC "¬à¦›vØ@Ôi'4†ÉcÎýe¢&óˆ˜Hs~éY¡‚Ašg¾Ñˆ( ݈%N—w.epH˜nSÛwáwAy祷ÞC”pn¸‘GQ‚>!ÀX ë3  ÀŸ‚ÌâÄËAv‹8Ý Â7ÜDž ÔPxÔÚ[$ħ Ý‘Èä–[.¬²Òzˆª¬ºŠî¬µfé¡&—vºM.rVbè/‚%Ö"¾² ‚"~ð¡ð 3lHÃ/ìPG,NÿÅ?B�‹ˆ¸ÕÖÀ‘ìˈȎÈÛ—]šû€ 2Œ™ˆgî{•£†L ÁÍÀÙÈÆD€aI{ÁxjÉ­ ì:C D›I”yt€Ó@ú‘!oÈÌ(`ŠD§�‡|p!Ôk¯¦†làm³Ý!›Ÿ>­´.Pk-¶Úâ#;´Ñi,±„q%� 3ýGÒ� ;øÀ ”O@Ääȳ/ ²@ÑÖmmBÔ „ üÔŠPñá ˆÞþRãRn; <0¸¬†Ò÷ßï^øá˜¼É¥W$¯| BÌ D ~à[IÛ„ õÚ¼‰_ƒV%rñüGÿÏß—œåÉb²¬~Ëb’)¡•¤ÙB %´�� 5ÛŒó |«HÏâ3„ € Ù@W9)Z&¸QìH;DÒG�̯~g²Ÿ•Q§_‚{u²T²A�L¡­œâwÔ¶ÏnT.]é\pºÔboˆp€w¨ÃB( =È X`4?ˆÀ p.ŒÂ‡ÀG·È\!¶ã’o4ë 8�bX·,° N°–> : ħXÄâCì`æâƒ¹ñà ‚‡<ô!…èÏÉóF  !ì*ÒsÄ„BÀÈF:²‘ÚËÄ uDGÀE1’"bä" ÝHÿG…0Ò% 0‰QI“Š…Æ A=•ð£" °¹o¨Ï}Vº ¾�€ñ%¸_Íú‡³œõo�¬�ˆð&DËÓ‰H  šŽÀ&6m5*B 4DK°™Ì��_`à aLŒ‚˜ä*I¶zUˆ;8¡ R(›×ÌfmžÓ"]àE0Šž†Àá!À d ÃU€à¢ )÷w\è€ðÙAGO EAPqà –å9&ø¥u PÔÝP8Í©P\÷‡3*ññÁ#@ÐN•èúЈN´xUú dyˆ¥àF,ÿ2¥!2Àô RNPè½DŽìC†(€±BP,¶+’ð"�X�¡‹¨X"0Ö°‡eLz]¦>VI>EÈÕ° ƒ\(±XE4ÉSåIµ!€[ °*Pçð'ˆ³m"æþŽ™ˆdv‡jæ ˜@iV‚F¦¤‘li¤ÙF¶Š€ÆV”€‚�8@!hàY6ð "𤠍 ÜÎÖõ®–z¿J˜ÏM­ SœºCK_êÄ@3­A Ö€*H8�¸p(R¥ …§Zf1‰)Á rÅÑØ7>+°¯}Kúe1ë ðΠd�‚ ŒS`iìiÿ| ÀSD aÂòqÄBð�¢<”½O=/zÕû/€8JRšªŠ©J1¾.l«~(B†"̪a|‚Y£ú¨¥!ÈEsW¨&ÈJ!R„ÁW>Æ>P™…M”Œ¬¥)oƒ(~¬U8$¯IuÅTM«²®³,ËB =àAˆ8ÛÙ(°\üÓßÍâ\ÚñµÌQí€V†h*.B ´ o²ˆmBÂж*÷ €ß‚Qh® *¨‚ãj!Bt> ‚,Yqe#a ñÉšµÅ¦nk @±H`O p‚b'4€‰å`)¸`P*hÁD�@7X ó²Ýÿ¸0þ à$@i@›à�Z±/$Ðàœ Üf�„)¼ PXhh#dçÆF<ÀЀ!xíë;êºôþ5•µYz=!�/‚f†(zùšRcÿP�8üáx‘qXC € ÄfÄ(3ÉqTþ㰵ъf„É`ÉY5eÇ“”J¹’”O,b٢؅×–ZD¿AK€Ãç2ø pù4§+ÄÅÀrB+gœù¯/·ŠÍóì+] ¤ }V`&‚=l »¸}DØmÕ̰¹¶~ÀÀfxÜ\ Àé\<ã–ÒÆ¨3e]{ÁÍs×Îö ø@kÿø àF¸õ†ë8þñèBì`„ʫ؊ûU‘ÍÁ(,>P˜³«mÅÍ9ËA`€ÂŒ‚< /�P�áž:¢@¸ pÔq1à‘<å-ÇÇC^ø•7ÂåûøG€;à9 q>=†y`a×_ØÄ+aX`Ñ{u±Âü*~ò»Øü|•:"¢ÞdL„ù´Do€@¢kAfú¸Á ¸Æ¦8æÿ‡À~Ë4(Í„�Ò‚uàg¡à+Fr×s`sˆv(*�~€�*ðg 0›‘KûòvaÓ}݇Þç}j~§OÀO°Ñ‚ªÖBÀ¨§z|Àz´æt!ÿ{´Çxæqà�V°U0„)À˜w“´yÐ� @¡·FGAÎ6m¡·RÞað5ª×z0x8Õ` Dwitn‹€{&°#.Šð�¿·{„CX)P+àƒ@(„Dh„û&%ÇóV „¨ƒXˆJ@}ŠÖ‡} ³}“0IX`¢Ñ~o‘è °”Œpe’uà�Šô÷e˜OovmÒt7ót‰ïCvu² €�  (e¨Ð}"Q3�*@5@\ ``WX� l0‰•XOÚ@f)=Ö¥B.Á)0¸…Ð… ‡´VxcHt eÿ0 ±°‡\ÀEpËñŒ»Â+ PT KH;�…ú¨8�…ÎÖ�à`‰@&€Pè�*óz²Gbˆpnñ1‡ðQpô{z A˜Žë( åhŽè¨Žì˜e<– õ"#¤ fµPƒ @.ù’/É� s4gSÓÐŒ°r1¢r#`çÓ<éq‹ $,—×12·ˆ›8%håXC¹´10Š¥ˆ}‘ŠlÒ&o¢3†€”>S€~Þ¶�vrv—�¢4óøgr "`µ+TÐ-À[⤑pÐ߇—€“:y- “0¹x(7®Ñÿ˜-øw‚@I¹1ð�‡ ykæ…G:pM’À¦¤Yš€wÁ¢ª©šÎæ àV˜…†àÀm ä’Sd¸7gôˆÐFB•8àŠ…�‡ö )šà™Ÿ™Ešቘp˜ˆ™˜Âcra|ÜÙ USv,€8yŠ~ᇞ‚ žy…1œ`e€Ÿ'W>ö‡GvõÙe€H•@zÞPmXé7À•ñ„ ÔLe9Rx’ ( ïXš¦é‰PŸ£À–‚9˜8‰WâT˜à x9žåyÞé}g/Ÿò´i›!`™+ð�0k1{œ‰Ö �ñ}xÅ„«¹šÎVK²y ù�(0m®§¶;µh`œ†à†ˆP.Mv¢'ê+y KùD–¸ ]jcªpO)eS· ´ô£ð’!pÊr:§pª—–£:jÍñ$iú r÷Ði�@F`›ð§6¯A¤Fúj: ¤ –Ù¤ƒÐ 昩±¦œª‰ÂðºÂ¡:ªÅ ¤CJª¨Ú  z�†ªÃ°iÞuC©Z«¶z«¸š«ºº«ž@:úA°@¿ú«ô�;���������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000213�00000000000�011561� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/themes/nihilo/images/spriteCheckbox.gif��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/t0000644�0000000�0000000�00000001406�11360615632�027225� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������GIF89a`��Õ?�õõõÈÈÈîîîñññöööíííßßßÞÞÞDDDÃÃÃää䎎ÂÂÂÊÊÊÚÚÙœœœÌÌËKKKìììqqp………åååtttkkkôôôÖÖÖ}~}ŽuuuÝÝÜCCCÑÑÑJJJâââccbèèè||{yyxðððÛÛÛóóóØØØÑÑÐØØ×ÇÇÇ×××ÕÕÔÝÝÝÌÌÌÔÔÔïïïüüüýýýþþþùùùúúúøøøûûû÷÷÷ÉÉÉ¢¢¢ÿÿÿÿÿÿ!ù��?�,����`���ÿÀŸpH,ȤrÉl½¨tÚ ¡TªUhày¿`žaØ ‡ÇBlVºý©×ÕaoPÌîwAaГÓíx3z|C<‚{<…‡ƒ‹Bsuˆƒ}‘x•r856>ŸŸ658–?=œž >¢¤…¨ª«£?<¯ª¬³§°¬¥º© ½›À £¾¨À6ÂBµÄ ²®Ð¡¸ÃÌ ÆÈÙËͦ747:Ì ã¾âÄÌ¢ê…â4Ä�ã³<ìîÌ5ørâÈ™C/Ò>~þn¬£‘�D"<(ŽÆ¼ýQÔGC€7\ÄñÏ™¼Œ-ÞÈ%®áÈ´ˆR£ÌH9t|0Qaÿ täð•S‡Å£:„–⑆  H!4_Ñ£“æÈ•sgÏŸA‡Ê¹ŠU«¯ ŒQBŽ;ÎÞÀA·îÛ¸…Њ°¢ wó¡µ[n.´=Ô²u W.aºåÈA‚‡ näÈAÀ×ä7B‡ÞܹÐd /ZÈ ™s¾Ï¢G»–LÙ2æÖ¥#ÁŽMÚ€9h€°9Ç�¾/~|éï'2H` ßóå›çz.œxvär®co~‡ùóçÁGú½zZìÛ›¯^(¾|úëå§O®Ÿ|$I(`+ÿ h ´�h`€8ä£à‚:4¸ „I!x …–òÆml˜#Ee˜ñ?„(¢WÀÁFŠ*ÆáÄ‹0Æ(ãŒ4ÖhãH�;����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000213�00000000000�011561� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/themes/nihilo/images/buttonDisabled.png��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/t0000644�0000000�0000000�00000000213�11360615636�027224� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������‰PNG  ��� IHDR������d���Ì» ���tEXtSoftware�Adobe ImageReadyqÉe<���-IDATxÚbú,@Ì�L 0Àòÿÿ(‹‘‘,œ…e²FYƒ…`� µ)H÷¶����IEND®B`‚�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000213�00000000000�011561� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/themes/nihilo/images/spriteDivIcons.gif��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/t0000644�0000000�0000000�00000001553�11360615634�027232� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������GIF89a0��æ�ÊÊÊéééÿ߀ÿÜvÝÝÝÐÐÐøøøÿä•ÿâŽÿÝz•€GÎÍʹ¡aÈÈȾ¾¾···ÿå™ÿâŒûûûÿÞ~ÿÝxÿÛsßßßÿÙk¹ ]ÃÃÃÿæÿá‰ÿß‚ÿÞ|®®®ÿÜtÿÚoÿ襕ƒTÿà…¹R§ŽK¹£i¹žT³•F³”C£ ˜Á’¹±ÿç¡ÿÙiÖÖÖëëëÜ»[öööâââÿàƒØØØåå幟XãããäääÿÚmôôôÿà†ÿÛqóóóðððp[)æææ‹wE¹ŸZÅ– Ìšòòòÿᇎjõõõ¹ŸWüÖiìììîîîµµµÁÁÁÿãÿã’ÿÛp™}7}lD§ƒ*ÿÚpÏÏÏ”„^ÕÕÕ‹iÿä“ÛÛÛüüü~h2¹¤kÊĶíÉa³³³ÓÓÓÿå—ž‹Vzg9{i>÷÷÷|qÄÄħ”`¹¢fu1ªªª§§§¢¢¢šz+ÿ曌}VupdË™^XJ¹¤lÿçŸê­¹Q®ˆ'ÿØf·´«ÿÿÿÿÿÿ!ù���,����0���ÿ€‚‚H{†{BƒŠƒ…‡‰‹}’“”’ƒ‡{Dy›yE˜‚˜šœž‡‚}~¨©ª¨}{œ°±›†u+¶·¸·{‘~;;2À¿©­f"Ç"S°U Í g{T*ÓÔÕÓv»§5//0Äk-!-r&(())%=||%{t«÷~XÙ~M0ALrà€ÁdX«;æZh8�e àÉÓ³' ¾UföyX æ“7x�à§Õ x4@8€`‡ ¤Äã£'ŽŠ‹ª€ìsÓà �/^Ø £ä’2ŒÀC@‚ \Lôr'*¼fÌÐ_+6Q¶DÁ%Ä :¤Òô¢……[0ªÈ¸eᥠ¯$F’ø@cà‡F$´bAÙ#ŸÊ”GSÈh”™Ëbc> x9pðÄI�p^,Pc0#<F¼|ŠV-MPÈ@°$†ía.ëá��5²ÌÓ…Õ ’OèÀ:ªî!FàúòD^dhàÀB+\ŒI@žÂ€=ÒZ×sD+Õ­Óä`h€?pØbüÏÿJ(q $èaà‚¨à‚šbUD(á„>Ø …fI% �;�����������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000213�00000000000�011561� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/themes/nihilo/images/titleBarActive.png��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/t0000644�0000000�0000000�00000000224�11360615640�027221� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������‰PNG  ��� IHDR������0���´f<Õ���tEXtSoftware�Adobe ImageReadyqÉe<���6IDATxÚbúL `�¥X€"ª(/õïß?ÅÈÈ¢˜˜@ZY˜™™I²vR��+Gh±ÅQ ����IEND®B`‚����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000210�00000000000�011556� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/themes/nihilo/images/sliderThumb.png�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/t0000644�0000000�0000000�00000000635�11360615636�027234� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������‰PNG  ��� IHDR������ ��� »î$���tEXtSoftware�Adobe ImageReadyqÉe<��?IDATxÚ¤’½j„@ÇWÝtgãXØ ÁÆÂЇ° “”9yËARD‹Ô¾ƒ B -APü ÄÌ.·aOÌ%îŽ3ÿùïªàû>úOˆÀ˜ÿÀnM�žëºt3M…… QQ†^]×-¤·K4Æq\eŠã8HUÕ[(}ÎæyþV̲ŒN$0Ô*ÆÈ²,dšæ…$Iïº<rÀ¬òÖyXhš†lÛF²,ïakŠüyX!sÀ;á*Š‚t]'ËkqÙ|*XMY–(MSráϘ½àïá§Fyž£$IÈÅn»®{ÅËBÃ0VEȉãEñ“Ÿú¾ƒô^Náð“£(BUUíÛ¶½‡m|n6›‰<Aàýv~ö¡ù–=0@óÌþÄ«¦inàyH'4ÆCãÈ'¿�º…Ó@¡í����IEND®B`‚���������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000213�00000000000�011561� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/themes/nihilo/images/tabStripeRight.gif��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/t0000644�0000000�0000000�00000000660�11360615636�027232� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������GIF89a��æ�ÓÓÓ×××øøø���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������!ù���,������� €�†‡ˆ‰ŠŠ�;��������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000221�00000000000�011560� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/themes/nihilo/images/tooltipConnectorDown.png��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/t0000644�0000000�0000000�00000000526�11360615634�027231� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������‰PNG  ��� IHDR������ ���™ f���tEXtSoftware�Adobe ImageReadyqÉe<���øIDATxÚ”R; ƒP\ßR¤±ËÁ¹„R¶‚mÀ*ÇH• Xù´Q 5;¢`ä)ºÅûÌÎŒ»o%Û¶¯ŽãtmÛv{:Öß=Š¢0Ò4¥=‘$ ±Îäã] Ø#Žc*Ër“AUU> °Œ&Wwö<¸­Uä]×%æ_ ›š ¬º®uß÷WM‚ ðøø11ãhyž[Y–I 8Gœ{7Å…„k_ûqŽü\ 3ùpßÚÐw`Ç{5Mƒ Þ[L:OÀ&Г'g�—‘þY–Þð (J¦ª*EQ„jŽŒ}eD±2ˆœ…§0 uìKˆŸ��j;ËŒ�ÒÈ·����IEND®B`‚��������������������������������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000215�00000000000�011563� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/themes/nihilo/images/tabBottomActiveC.gif������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/t0000644�0000000�0000000�00000001006�11360615636�027225� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������GIF89a�2�æ�ûûûöööøøøùùùõõõðððòòòåååìììóóóñññàààôôôþþþÞÞÞÓÓÓüüüÿÿÿ÷÷÷úúúýýý���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������!ù���,�����2��c€‚ƒ„…†„‰Š‹Œ‹‘’“”’—˜™š›™žŸ ¡¢£¤¥¦§¨©ª«¬­®¯°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂÃĺœÇÈÉÊËÌÍÎÏÐÑÒÓÔε ØÙÚÛÜÚ‡ßà�;��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000202�00000000000�011557� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/themes/nihilo/images/treeI.gif�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/t0000644�0000000�0000000�00000000107�11360615644�027225� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������GIF89a��€�ÓÓÓÿÿÿ!ù���,�������Œ€Ë¦ S„o®jÎ’kÿ¸e¥uNi´Râèµ�;���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000216�00000000000�011564� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/themes/nihilo/images/validationInputBg.png�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/t0000644�0000000�0000000�00000000176�11360615636�027234� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������‰PNG  ��� IHDR���������5#ë���tEXtSoftware�Adobe ImageReadyqÉe<��� IDATxÚbúþý;###.Ìøÿÿ°< À�9ÝZ3����IEND®B`‚��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000221�00000000000�011560� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/themes/nihilo/images/tooltipConnectorLeft.gif��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/t0000644�0000000�0000000�00000000315�11360615632�027223� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������GIF89a ��Ä�þþþæææáááãããóóóûûûýýýÝÝÝÞÞÞùùùìììØØØÒÒÒÖÖÖäääàààíííÎÎÎååå×××ÍÍÍëëëôôôòòòøøøçççÌÌÌÿÿÿÿÿÿ���������!ù���,���� ���J 'ŽdF’‰°œ¢¢�;0Ķ‘rö-fEÏÆ)˜¡ £q�”¶AÚcJžÐ¢`’TŽ2ˆwt9 xÄÓÌ’>U^>Vâ±b!�;�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000206�00000000000�011563� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/themes/nihilo/images/dndNoCopy.png�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/t0000644�0000000�0000000�00000001273�11360615634�027231� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������‰PNG  ��� IHDR���������óÿa���sRGB�®Îé���tEXtSoftware�Adobe ImageReadyqÉe<��PIDAT8ËSßKSa~ÏÙ67×L ÛÜŠdѺQ³  ƒ.¼Š…"ÑWÑèO(Š"o*ˆ¤"älÍ™3]TŠ"ÎMbmB§È?âéùNg§4©^xøßùžç{ßç}?‘ Ñ!ÒÞ#2pS×'^/·ø}†{êŸü%\çD’“¡0Ö]0Z¡ÙRCŸ‰RcéšôñŒ:ûù¢HÑèêÆêþX ‘÷×"ãv#ítbÆåÆ4×Älm�—yvˆºY‘+á Á:äÌÕ×£Ó>Þ:Èé:^‹ çráüÏLD޳®‰Pˆ7ÇIÞ†¥­A,0Õ•Ö6[àSó>Liš‰q ¼"ñû¤òä,ÍY;uEÞ\±èócn‹åøA[`9ÃIYbŒH[k/¹Ò¯;Œ¯-m(°¶q³\ǘÁbk«-0c˜õ0õ§$ŽZ×E òÖÐí]ëjþWdèE†wyîñ±U (ímþoÙº ™E¿x¨;òÎ0[åÂÊá#XM$ð¥³߯^± ß.ô¡|ì(*':oŠ!E¢Êà®*ᨄ£øÈ^¿c«ÞÐ]eÖb¤ñ—;¶c„{) £–À5eb7[‘óÌ T¯§XŸ)Ø lóK‹X%=ÕѾ-ZrÞà h˜dÊaUg5fØÞßÒfýzÒžDÇòžèÅ÷,#kÝð‚Èïi2‘Ú@¾/Z±vã{°D’iÍiNZõpÚT&ðŒg“Çd§«ý†èƒâ0EƒÂ3Ñ µ×»ÉsþÔàÇ«ÞqYW����IEND®B`‚�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000221�00000000000�011560� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/themes/nihilo/images/splitContainerSizerV.png��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/t0000644�0000000�0000000�00000000164�11360615642�027226� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������‰PNG  ��� IHDR���������i#™���tEXtSoftware�Adobe ImageReadyqÉe<���IDATxÚbüóçÏÿÿÿÿÁ�„ `�åÒ¼C‡®����IEND®B`‚������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000215�00000000000�011563� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/themes/nihilo/images/progressBarEmpty.png������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/t0000644�0000000�0000000�00000000472�11360615646�027234� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������‰PNG  ��� IHDR������d���4[æý���tEXtSoftware�Adobe ImageReadyqÉe<���ÜIDATxÚì”KÂ0 D“È÷?(`„ôCâÚƒ ê6Y4Õ›z2r¬Vž÷2ý­Iê… ~ÑÔçl‚~·" ôG“4ÅE¦B¦B¦â¤W¡%ü×Äë½"XE*?XEZ Iª¬VR ê¬'aކ Eû”n~± 9%ã#Û)¢‰‚®ƒ"o03_Þ³¦ w˜)Ê&ÈTû$’oÞ~IÕ[+D*Â/-AŽ–©H¾í~‚ÉyQáŒÇ­”º¾ûçbUZ÷ê…÷^»£íÔ¡ÐéŸa S˜Â® /�E¬A¶üo’����IEND®B`‚������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000213�00000000000�011561� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/themes/nihilo/images/spriteDivIcons.png��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/t0000644�0000000�0000000�00000002046�11360615644�027231� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������‰PNG  ��� IHDR���0������P®ü±���tEXtSoftware�Adobe ImageReadyqÉe<��ÈIDATxÚÄVßkYþ¦™&5i›&iZjMÖºµl!`v)èC})Š"êúPQPvvEöoX_|ó±ú" ŠBaín¥ QDQ‹–ú3i«‰ä§É$3ã=w’ÌÜ$¥¦Š¸Ü¹'÷Ü|ß9ß¹3’®ë¨µÉ³êeFð=oÂé3ÿKø [Oü®êhÂöì;ÂÏ’ˆÀõ¿· Á½líM ¯âN¼J8ß¡¿žòC¾4žÀ3@Íà§NB¦?ßµõýšA_Ž«U€<Iä -U©<yë¨9A…Ï™®‹¯ Ëf³|ni1ÏÒ4¯m6ìv{.ùâˆÅ¥CVÞàPø¹°qæq/jÿn ºœÇŽ–1õpC‘æ2øß) /¾……":;;¡( . ¸ßïGwww=‘‘&~ÙÍÄdc¸T6LÏÜÃÜ’Û�ªk|ÖðÇ!–…-‹<øò¿oeyy3ŽŸø½)É7w²à PUÅb.—‹g=ŸÏ£Ò§ñxíííp8ÌêÊÞ®öò£TÇw3°Š8[Ìë¶#ûìÐ4k±×O±q@ôÍÎÎ" "‹A–e.ŸT*·Û I’Ëåøï‘HÄ$`d¹Dj3²MUà>Ý2Ã\C¼,Þ§dl 5M ›I×ùJ¬yh„œN'¼^/—‘ jX³oà²a’Ð¥2`U$d‘‘I´w)‚ø:6::ÊgÙÚÚ Ç³fŒÌÁ‘4X‰ €šA€µ\µLB3+R¶E–^>ÀôÔdÕçñõá§{…}îßFôõ³êÚåt°«U|-ø|>Þ¤}’eœ¤C3õD¥ÚÚÚ¬2׬€V\‰XIX¬Ëçǩ߶6:*ÃtÀù+7ñ!ö=¼{§ŽuU×㡟qîò aÏÜÜHúÏd2èïï皟Ÿçº§ ¡P¨FBuÐL)Y+Á‰ˆ6òÔråD¨˜ØÓƒèÒ-a_d¿«.v0 úè†éëëã ‰Ï4Iill Édáp˜W§A(¦´«RQkH”ê²o¼iøR’% gìQsØ`WñcÀÕtPvWVVx¦ x4ÅÀÀ�_Ss/..bpp°­`¹FµV50Å?°p¹¼¿°úÞ5Œ¤A@+š§gªJ:FGG&?yQš¾pT·¾‰ÍJXn 6þë5~âôäa}=€+ñëééi¸®ÐÕo!:èä%éK®¿Z ßÒ¤FŸÓßÃÖû9ýI€�Õ# ©ZÂ����IEND®B`‚������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000213�00000000000�011561� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/themes/nihilo/images/spriteTree_rtl.gif��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/t0000644�0000000�0000000�00000000351�11360615642�027224� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������GIF89a6��³�ÓÓÓîîîìììýýý‹‹‹óóó÷÷÷ûûûðððõõõòòòÎÎÎùùùÅÅÅÿÿÿÿÿÿ!ù���,����6���–ðÉI«½8ëÍ»ÿ`(ŽäÖœhÚ\j[R 384=0«ϵsç¯Ç®çñdÄ_P2tlF²§\6ŸE lZ«Š�`À¢a8Îçƒ!“Íh‚šÝ®8„Á ð Zy{|KB  ‚L‹–‘“# œ™›žž™" §¨¨ ©¬¤!-*,°(‰µ¶·¸¹!�;���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000221�00000000000�011560� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/themes/nihilo/images/splitContainerSizerH.png��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/t0000644�0000000�0000000�00000000171�11360615636�027227� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������‰PNG  ��� IHDR���������F.°Ã���tEXtSoftware�Adobe ImageReadyqÉe<���IDATxÚbúóçÓÿÿÿ™þýûÇP1€��$Gß[ëa’����IEND®B`‚�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000214�00000000000�011562� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/themes/nihilo/images/tabBottomHoverC.gif�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/t0000644�0000000�0000000�00000001036�11360615632�027224� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������GIF89a�2�æ�ûûûöööøøøùùùõõõðððòòòåååìììóóóñññàààôôôþþþÞÞÞÓÓÓüüüÿÿÿ÷÷÷úúúýýý���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������!ù���,�����2��{€‚ƒ„…†„‰Š‹Œ‹‘’“”’—˜™š›™žŸ ¡¢£¤¥¦§¨©ª«¬­®¯°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂÃÄ¡ÇÈÉÊËÉ�ÎÏÐÑÒÐÕÖרÙÚÛÜÝÞßàáâãäåæÝéêëìíë ðñòóôò‡÷ø�;��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000217�00000000000�011565� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/themes/nihilo/images/tabContainerSprite.gif����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/t0000644�0000000�0000000�00000002405�11360615632�027225� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������GIF89a�ÂÄ�ùùù÷÷÷úúúøøøôôôÝÝÝêêêìììßßßãããàààöööûûûóóóÞÞÞõõõþþþýýýüüüÿÿÿÿÿÿ���������������������������������!ù���,�����Â�ÿ u8diž(9Nlë¾0ëÄt=׸{OPïÿÀà.H,ÞŠHà1É\2‘³g“'…R{‘¬vËÝF»àpÄHÎè´ZM†˜×p8Ų̀×ø¼ÞnŸßõ�‚ƒ„d ‚Š‹„ކ‹“”•–”dˆ” žŸ  ‡�“ž¨©ª«¤¦¬²©®ˆ° ³³µ¥§¹¬»·¿À¯½±ÃªÁƸȴžͭÏÇÑÊÐÍÖÔØÓÌÕÜѨÙÝÛ¶ËàÒå×ÈâçìàîÞéÚëßïõñ¼êÃðäùóû÷ú ³'o²$”BE ¡Ã‡ „KA±¢Å‹&rhÜȱ#Ž* CŠI²¤É“RÄÿ„òKœ—0cÊäC³¦M;Žr:ÒƒG§O—‚`DTQ¨£H?[º´Ó§P£JuÚpªÕ«X³jÝʵ«×¯`ÊK¶¬Ù³hÓª]˶­Û·pãzH·îCŒxóV4@Ác üþ £†G¶H,r±Iœ”1ycÅ—;hɲ‡e™iº@ø N„Ñnª¶sæ´ž°c ¨#ÁõÏŸ³%@pP´wÑ@t;HŠt¨¢Ù»Ïyš€Ê;1w^ ú‚骃[ yvëØµGãî]|3òÔÁwO¿]úúïí¯¿7 =üñîË«×?ü~öøÉÇ_€þõ7ß÷—ÿ€ È`} &¡ƒc}Fˆá/"¸a..%� €€^‰€b +¶˜‹:°pÒœ‰Ac`ÐXÚQ¸±#Tà˜ã%õh’‘E)$7.©EN2YF”YÌAå“n\Ye–?²Áe—hÌfbŽyÆ o˜‰¦™gNæ˜k²§šn²ù\râIç›`Î §žòÙ¥Ÿ}Z¨ ?:¨¡‹"º£¢‰2©£¥Aú¨¤—R š¥•bÚ©j®(j^0–JSj©êv¶ªÆªY *묰Öjë­¸^éꮼöêë¯?æ*ì°Äkì±È&«ì²Ì6ëì³ÇÊ:ê´{õU*ÿ`¦ZVÙfZ¢¦*jfÆJ˜§y{¥g™…¤ídé‚dY·æžû.¼Üž»Ûª÷~ëJ¸®±ë¾áîfg¿þŽ;f“›p—|ðÂÁB¼cÃK\Å;¬°Æ [ Æáz,Ès±É‹ÉWŒòÅ*ÃÄrÇ/óK3OŒµ&¨Èó 3ò iL~¬f´²%­ÇšF¯†&MÛÔãÐ/M}%’$9‘µŒGr$‘#iv¶;ÀX¶‹g#FöÚ¦¦-˜Û~Áí‘ÜÑÍ‘Ýá­‘Þ9ðƒß6°}­àf޶áj·øÛ‹ÇÝøÜ×Íóä&ȺkÔM+­ù˜wî9»Ö:ë‚褗nzÙ¦®úꬷîúë°Ç.ûì´×nûí¸ç®ûî¼÷î{ï”Sλø‹Úç4¹¶yÒ ¸†<k ?ï\7¯Qî¼T¢‹Òº%Qö÷$yß=øŠYùÝççþÞë÷Ýþßï®øüƒÓ_¸ý‡ãŸxýüßßþÿÛŸÿ@ mÁ �;�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000214�00000000000�011562� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/themes/nihilo/images/tabStripeBottom.gif�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/t0000644�0000000�0000000�00000000660�11360615636�027232� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������GIF89a��æ�ÓÓÓ×××øøø���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������!ù���,������� €�†‡ˆ‰ŠŠ�;��������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000217�00000000000�011565� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/themes/nihilo/images/treeExpand_loading.gif����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/t0000644�0000000�0000000�00000001226�11360615632�027225� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������GIF89a��æP�÷÷÷×××ÚÚÚñññÓÓÓÙÙÙJJJÔÔÔôôôÞÞÞÊÊÊÉÉɲ²²···ÃÃÃÜÜÜáááäääÀÀÀŠŠŠÎÎΫ««íííððð¿¿¿ªªªÍÍÍÕÕÕ½½½ÌÌ̶¶¶µµµþþþoooóóó¹¹¹ßßß~~~ÇÇÇÛÛÛãããéééÁÁÁ¬¬¬¼¼¼ÈÈÈÖÖÖ±±±ìììËËËÏÏÏàààåååúúúÅÅŸ¸¸ŽŽŽòòòdddæææ®®®ûûûÝÝÝ´´´èèèÂÂÂÑÑÑêêêÄÄij³³¨¨¨»»»­­­¯¯¯ÒÒÒùùùºººöööõõõÿÿÿ���������������������������������������������������������������������������������������������������������������������������������������������!ù��P�,�������ó€P‚ƒ„…†…�161‡„> C  N�N£¡+4†5 ¢O®¯N3…2�¯,° ƒN£¹%¼°ƒ' ¸ÅǯBƒ N¯O8ÐO ƒ3¯; ê 0ƒ ×®9!!ù(Jƒ.&D¼JA `Á%\Hh2è‹ `s¥#E ‘ " �#†V� 4 ‚Š ?Pðˆ@"€†"œ0¡Âˆ ,0á@2 Yððâ F�Iò�’ $9ÒƒÃ&VÊK(�;��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000225�00000000000�011564� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/themes/nihilo/images/tabBottomEnabledSpriteLR.gif����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/t0000644�0000000�0000000�00000000412�11360615640�027220� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������GIF89a2�2�³ �ûûûìììýýýüüüàààþþþÞÞÞÿÿÿúúúÿÿÿ������������������!ù�� �,����2�2��·0˜I«½8k*‘ÿ`(ŽdùMfª®ʾpkÄôêÖøxç¼Üÿˆ°&ÆŠÆ2i›1i˧)*%Q«¢+¤Ýú¼ª®W¼%cÍU´Týd3ÝI¸Q>¤í?|OÏãçü8€D�…†‡ˆ‰Š‹Œ†‘’“”•–—˜žŸ ¡¢£¤¥œ¦ª«¬¨¬±²Ÿ®°³·ªµ¸»¥¯¼Á¡ºÂÅÄÅÁÇÈ»ÊË·¨μ ØÙÙÕ�;������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000224�00000000000�011563� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/themes/nihilo/images/sliderFullVerticalFocus.png�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/t0000644�0000000�0000000�00000000176�11360615644�027233� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������‰PNG  ��� IHDR���������ÔTR¯���tEXtSoftware�Adobe ImageReadyqÉe<��� IDATxÚbü÷~##Ë) ¿™P: À�Û9À£����IEND®B`‚��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000207�00000000000�011564� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/themes/nihilo/images/sliderFull.png������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/t0000644�0000000�0000000�00000000202�11360615634�027220� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������‰PNG  ��� IHDR���������Áõ���tEXtSoftware�Adobe ImageReadyqÉe<���$IDATxÚbü÷~°02±@Y oWÁX,BPÖo&) À�¹Ú†xYм����IEND®B`‚����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000210�00000000000�011556� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/themes/nihilo/images/spriteRadio.png�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/t0000644�0000000�0000000�00000002061�11360615640�027222� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������‰PNG  ��� IHDR���`������éºzù���tEXtSoftware�Adobe ImageReadyqÉe<��ÓIDATxÚì˜ËJA†O;£3:Þ5o Š †¨ ¸™'%µOà!`ö†<@–n²•àÂ…+eŒ‚ˆŽ¯x¿NÎÒÕ´ew3‹é,,(ºëëÿœªsNU·555EA¶@õÕ/òøí#w¬J’{ƾþàÞÿÊg¾ñ9ð––“±Xl¼¯¯ZZZ¨¢¢‚...hww—‰î¿ñ˜/ñœy-&‹‹‹Ç„D"twwGççç´¿¿û¬ú¹òZÜÿÐðð°ºÿÚØØ8144Dp ¤¤„2™Œ\ëëë©««‹ãìL”ÇþöÏ‹ojjrx6~¢££ƒøJ¡PHx\ËÊÊä×××ñÛÛ[_ý|ø½½½@ýWÐÃF/ŒŒˆ±l(Kä„Ãay@mm-=<<Ðôô4Vò3\âÏø¢¢• ¨+~óâí èáÈ]noo—¨Åøûû{¢Ñ¨ü¾²²‚H~¡ïæýô½x;ó_ícX¡ÒÒRIÙµµ5ÚÙÙ‘ÔÙØØ ùùy:99!v’z{{e¼¶úƒ-Ërº¬2_ŸžžŒ|MMD Æb`G+]^^ÊdÜÜ܈ˆ.oÒ7ñAù¯àskk«À„§ ]]]I ;;;£ÅÅEyH[[›Œ× pxˆÁQÝ4_^^.<4Õä#bÐq{ÀWWWùlú~|Pþ‡íë;¤.ê%Äq ÀÀUÓP 0^3ÀáMÍăEÇd£+ýÇÇG‰~Ø¡jº‰Ï¦ïÇå¿Ê€4œ†³UUUtzz*©¯J�ŒR›%ÊÆkÏvx÷Ê»W_5?,:¢HiÃyL>&�µÍÞ|ùlú~|Pþ«ø…šãP£p|ÚÜÜ”tL&“R7å[[[2^{®Ãë¢î¿M<&|]]ü€cc*•¢t:-µ•O£˜ølú~|Pþ«ô}uuu G8¤Ñèè(ñß²ò¨™’Ž8™,--ÉxÍ€g<6ˆ©S€º7ñ¬5-ðÝÝÝttt$Ñ‚”ÅïÐGÇÂdãýôM|Pþ«÷€Þøb\ûâÍÍÍò½°± "ccœÅæ„—‰Ÿš/x÷ê›x;µØÁ—›8Îð’SYYé?‘ÞˆF^O}×õýxû= 0ÿÝ/b3œÆ1N½8@l*h8 ¯¯¯ÓÜÜœ‚ýÞóâ]/b3!1.q÷Ñ {�"q{{[Mž¯~>¼ëE,ÿ-qýö9õ÷÷ÜSvÍBÚ$^ñ-$'Þãc\Aõ=>ÆTßzûúÿ} }kl�FehÀæ–����IEND®B`‚�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000207�00000000000�011564� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/themes/nihilo/images/treeI_half.gif������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/t0000644�0000000�0000000�00000000101�11360615632�027214� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������GIF89a��€�ÓÓÓÿÿÿ!ù���,�������Œ€Ë¦ S„o®jÎ’kÿâH–扦�;���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000204�00000000000�011561� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/themes/nihilo/images/warning.png���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/t0000644�0000000�0000000�00000002373�11360615636�027235� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������‰PNG  ��� IHDR���������(-S���sRGB�®Îé��� cHRM��z%��€ƒ��ùÿ��€é��u0��ê`��:˜��o’_ÅF���PLTE  þýþÚÙÚ��„��''(ùúýF¦)X±§¸Ø:çîùæìöëóÿéïø;n°Ez½c“Ídy’ÔáñÞèôïôúX4e›0]P†Ãx¤Ó}§Ø’´Ù¶ÍæÆØìæî÷éðøìòù�fÌ?ŒØ+Kl²ääíöçï÷£Âàl Ëò÷ûöùû{­Éçóú¡ÑéêöüH‘¬¾êûÈêõÚòùëùüäïðŸÈÉj“™ÅŶää¦Ḭ̀ÒÒ¸ÖÖÀÛÛËââ×èè ßííëôôòøøò÷÷ùüüýþþÖ××äðïv°˜úüûðòñ�r6&iE�X%ÃâËRœ[�u�¢É¢´Õ´×ô×åýå  ýþý}ÅwÄä¾'~uµdÂ߸OOH##"!! UUS,,+++*þú‰|x4Ÿ›Sþòqêàøß8æÐ8þêXþöµÿûàÿýïÿä7‹†fþ÷ÌæÔyÿþùÓ½fÜË€ñã«ÞºIÈ¡-´-›h�àZ—vV¾¥—­…xñ*òkNÜ#�Ó�ý÷öÉ�nÍ7"ÒH5½�©¿(øïîÈULá �² �¤*!ÍgaôàßÅ�¦$!·<7Ñ|yד‘ìÍÌŽ£௮ þýýÿÿÿþþþýýýüüüúúúöööòòòðððïïïíííëëëèèèæææâââßßßÝÝÝÕÕÕÒÒÒÑÑÑÎÎÎÌÌÌËËËÅÅž¾¾´´´¬¬¬¦¦¦˜˜˜{{{qqqddd]]]DDD444(((&&& ���îîî������������������������������������������������ÌãU���ðtRNSÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ�”¡hG��� pHYs�� �� �šœ���lIDAT(Ï}ÊË Ä0EQ@ÁHDDz²z¹©L óbç¿ÈÝ�G¤ß«´Oà h ŸÀûDîÀÂ9D"Ÿ€• ]:Xq/¾jq1/ê¦Ó¤fÚ™›®«R*6Þ‹ÆÕŒ„Wé²4,àæ����IEND®B`‚���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000214�00000000000�011562� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/themes/nihilo/images/sliderFullFocus.png�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/t0000644�0000000�0000000�00000000204�11360615640�027217� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������‰PNG  ��� IHDR���������Áõ���tEXtSoftware�Adobe ImageReadyqÉe<���&IDATxÚbü÷~°02B Œÿo@XL 0Àò›AÂ0�Çîë§ÁFá����IEND®B`‚��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000224�00000000000�011563� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/themes/nihilo/images/spriteRoundedIconsSmall.png�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/t0000644�0000000�0000000�00000004223�11360615634�027227� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������‰PNG  ��� IHDR���K���-���æã–­���tEXtSoftware�Adobe ImageReadyqÉe<��5IDATxÚìšËOYÆO7 JkÓ : >¢ñ¢"BÜ¢qcbÜè¸ö™hœÿÀ¥‰¯dv³d\iÔ %£Æ ƒ £¢QQ >@¤UaÎwôVnß®ª¾Eb“ôM*ÕTկνçœ{«ÎG…N:Eÿe;tèý_ZÄãxC(jž:ujÓׯ_»¿|ùÒÂÇþ²¼ç¤ÙÓ§O§±ìÌŸ† ™càÏiÓ¦5TWW'JJJhhhˆž>}:ôêÕ«¾ÏŸ?7ñ5ý6'Å"³¸³Y¾®ßc YcugE§L™Ò¹|ùòÊM›6¥eÃtîܹñ‰‰‰2—Ag…5̓Í*V' Î.[¶¬Báå›7oÊï9sæÐÎ;ÃlàoóÆn¬Þ‚°°»“ay`²e9ƒhllÌ97<<ìÊ:ÎÝ]__Ÿc<oéÇtïÞ=ºÿ¾s“ÒÒRŠÅb%ü³I7¬X¿uÁ–…=Ø…}ôýQ,gƒ/ûéÓ'zòä‰ìM»~ìùóç 3 ëêê¢cÇŽ‰ÃLVeB]QQQ’¹8þxóæ µµµÑÇ ^Wm||œfÏž]ÈçkùÏV7™qõêU ‡ÃbÚ»w¯«ÒppÞ¾}KuuuÒa7–PÇSؾ¾>ºté­Y³†8cˆÏY±;vìg?~œ^¾|)ëèôéÓ%X:«2«€7Áá‚‘‘,r⨼¼<ÇQ8Ç×á@žÑ:»téRš7o"G¼pÒúõë­YdìÁ.ìóSÉš}ÿþ½*™LRGGuww[³°¹eËzüø1•••Ñ’%K\Yå¬vŽf 0¶Y³fÑÆáU�ŽaðØ8âI¾þͰÃâ|4•ŒÀ~åÊ•TUUeÍb{° ûè‡:—‰ÅÔ}þü9E"™B7nܰ¶{÷î]d9rÓŽNž<)SÙdóš››±ã…¬‘#ù w4„ôEGy”)Á ¡tQãé9ÊúU3œÂ""à0ý-Zôí‚�lOOÕÖÖJtU {ðàA‡åŒã rXdĆ hݺu²ç§œ5ûèÑ#jll›˜Â½½½TYY)™­³ÎÏSoWggçÄÇIeØÂ… ñDß�[ZZy�¿›‹·É"­ËËËe”…=ØU}ªLRYjËÖÔÔH`Á!@Û·o—¾›¬ùRZÊs´—3)4þü9¬_XlÛÛÛ‡Ùø<{=ð&Ã~)ÍÈîß¿ÿ°Ç‹eÖØKmËÏÏ?Á7iâ蔳‡yZ¶ñM~ãs=*‡À¬ª ñ6íÅò5=Ê•¬°¡\!mß”k9gå$šœD““hr $ ŽÄ¤%ÖK¢±a½$šL¬ŸD£³)MCCƒ¯DƒšÍKfë·.زnbÝdu“hlX/‰Æd‰&‘H$ùÅÌW¢Aã¬ðõë×)2‹ÎzI46¬—DãÆBf)..NaÝ$ÖK¢1Ù‰FEMeJ4*Íó¾H“;Ô(ºM‰Æ–•ÊÞhlYµdè- ¥Â”hÜXG¢ˆ©ùŽôCdúZ€³.MîP,6HpµzõjG=°a•}Ø…}ôCÙÏÄbú@-àÒEÇÙÚÅÔ?sæ =zTú,SEµÎ¦I4œ!L!t”7™«V­ ¨Ð¯]»6:>>î*³€ÅpP/^,Q ÂB.³!± :{àÀW™ìܹs‰× ÑÁàh³Ï~ìƒhóæÍ´bÅ ™úpºR!tÖYà9õwq¥=¡/ŽP=÷ìÙãhR/^t•;LÎZ°`샲°»Ž7°f†Ú²p0–¥ÔB&‚&g²® G%Ğɓ…8º~ýºHÜ_‰&(«K4~ì¾}û|e–l°® {5M²àHXI4AY]¢ñbmd–l°9‰&§:äœõsK4üXÉ‚¡%šÉ°J*ÑÙ 2ËdÓ$þŒF£ üèO̘1Cj¤/^ ñ¢oddÄW¢™ «$šL¬ŸÌ’-6E¢á§B'¿HV®]»6-ãð8½|ù²§Ì’ ÖMfÉ&ë¬Y\&œ­ªªªÐA¼sàŸžhƶnÝêúEŠ«· ,ŠaUeM‰Æ–ÅË+þÁ«)®lX{SÞ]SS# @8 ¯ýØT›9s&j¾4™E±~ë‚- Ŧ®XSf1Y0ÈÝÙ6,J,~›—qCí¸råŠ8Ìd•³ê¸€LªZ ZªvÜ\YRÈ»ZíP ‹Lä2A¤’ .Pkk«5‹†"2 ¾[@]çÅBf1YÔ±·oßõÀÈ0_5,¤¥[·n‰Äƒ‚ÜdS$xÒÑ…wÕ •(ÈO W¹C±( ±PâZÔ†(HmYéÐw ’ ŽÙ²jÉÀ”Ÿ={&·eaµ,„C8 ýwc‰†3(†“€!STWWS<'5-Õ¹4¹C±ØP€â[ì+**Dn±eÕuw "Z³ÈDL! z„K[¶¿¿_¦á¶mÛdìÈ.$ŠÉz~Eò ¦Ä<½ŽŽß/aTåžH$ÄQêƒ2[–;'œŠ®Îú} S\\,Æ'NØ#P¶,lbŒ° eY¢Yª³)_Ñtuu‰d¡ÒšV}}½35yýñü"Egá,tQÊBžAF«¬šjË"8®ÒüálÙd]%^ðB™¦¼ûîÝ;ºsçÎ0§fƯh‚²ºDãÇfú&¬«DÃÓïg‡#Yð±6NY+‰&(«K4^¬Ì’ 6'ÑäT‡Óþ`�ÇÒ)9lCÍ����IEND®B`‚�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000213�00000000000�011561� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/themes/nihilo/images/tabLeftChecked.gif��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/t0000644�0000000�0000000�00000000457�11360615632�027232� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������GIF89a�2�³��úúúüüûøø÷ûûûýýý÷÷÷ôôôÞÞÞüüüöööùùùøøøõõõþþþÿÿÿóóó!ù�����,�����2��ÜðÈI«¥.ëÍyCƒ²t$ù…c©f§Ø¼p,˸s>×÷¢ÿ0B òpÅÜÑ—TÚÍØQ}®µAËíz¯ bL.›ÍZñy}N‹ð¸|Nï-�ø¼bÏïûE ƒ„€‡ˆ‡‹Œ‡ ‘’“”•‹ ™š›œ ¢£Ÿ©ª«¬ª ¥­²²¯±³·©µ¸¸º ¼·¾À³ÂÃ­ÅÆ«Èɹ°»Ì®Î¿ÐͶÔËÌØÉÚÆÜÃÞÀà¼â½ÒÔÕÏ׿çäÁëêÖÐíÄÒ§ö÷øù°¥ýþ��;�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000214�00000000000�011562� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/themes/nihilo/images/progressBarFull.png�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/t0000644�0000000�0000000�00000001352�11360615640�027224� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������‰PNG  ��� IHDR��� ���d���ßl]þ���tEXtSoftware�Adobe ImageReadyqÉe<��ŒIDATxÚtUI¶! ³î¼ìs‚d•,’Æ©²á׫GS ²$šõ÷wzUZ?öªF_(Ÿ=Ôq€˜ÖöJÝ·C`ÿY¡'~ùD È‘QÃïÎ\¹ùIá­¸µ\uºCãæÒ áã^±/UˆVÈŽi¥R,–¿­£áêiÂjuµÚbiŒË™L_=!·G. C‹§o󬱊¤˜[=1bݘš`ëÈ@­`ÇC'Ôiq΢X -«I*�ÆæOµ|z=¤Zˆ½Bk-v]™ÎŠd§’ºc÷+Œh§\r¦% £»tÀH/σŠ×X¦j6ÔæØ„â˜»#ÇõÒÅHXÊ}h¼UÓ¯ÃQ§;@ó4}„¼|äæf¹ƒ—µìV,dª_ìr(R«LyD¥tQvó”ûtÞNïƒñ÷gR³ÎnßibôçÇÖís¢Ý—gúiŒ_¶éý·Äÿ[û¿ù Ãüdˆ’#ç,fW̽^ ¬•¬ U#¸çÞWµˆM„·oÔI°{½+ T¯Å–äñ:¶Ãoìu˜g‘Š,¯> �°‹Û’QaD‘`ÊðJö×"©�en:@<Š9ùÕG‘Š$&øi‹(R¡®?m©À¦ºÈð$+Cûî@Ì*Dáj9ÒÜÙçpIJF|Qû¯L³ƒ–¬¿˜h×´òú\£ç]ªàΔ à ZÒ(i†n-‘—ä†^]çæ=ºI•5ũĺ•³`原¶Ê™zÁiÂpÚ°ä\K–d=)—ú¸[j¹Øjê€`±•!/_㇬Ž>˜ªÄÑlK²W!C-z›ªî|¿dÊpôóRS_ê´ÜA\oº»Ð('>ç´Üû/À�£X±)SÞù����IEND®B`‚��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000222�00000000000�011561� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/themes/nihilo/images/tooltipConnectorRight.gif�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/t0000644�0000000�0000000�00000000314�11360615636�027226� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������GIF89a ��Ä�þþþæææáááãããóóóûûûýýýÝÝÝÞÞÞùùùìììØØØÒÒÒÖÖÖäääàààíííÎÎÎååå×××ÍÍÍëëëôôôòòòøøøçççÌÌÌÿÿÿÿÿÿ���������!ù���,���� ���I`Æd¹IY¦¨ã¶Ì�Ë›q D‰Ë Š(öÛ`‚§(84&.3$P&f’\þ ‘¡7‡8\|KíÖªÀ8‹Gêx“B�;��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000214�00000000000�011562� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/themes/nihilo/images/tabRightChecked.gif�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/t0000644�0000000�0000000�00000000454�11360615644�027232� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������GIF89a�2�³��úúúüüûøø÷ûûûýýý÷÷÷ôôôÞÞÞüüüöööùùùøøøõõõþþþÿÿÿóóó!ù�����,�����2��ÙðÈI«¥K Ôœÿ`f['ž"É¡ì—ÑÌtmÛo|ïûȼà,òˆÆ 2¹(`Efíµ!X£IjìÊíz /ÀA.›ÏæðÍ>/¨ƒ¸|N§¿3м~Ïøÿw|‚ƒ{w‡ˆ‰wŒ ‡ ‘’“”•o š›œž—™ž¢¢™¨©ª«©¥ §¬³¬°²´¸¶¹¹»¼´¾¿µ˜±Â³ÁÆ©ÈɺķÌͦÐÊÎÓ¨ËÉØÆÚÂܿ޼à½ÕÖâ¸æÀäÓèÇêÐìÃÒ嘦®ö÷øøûü�;��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000223�00000000000�011562� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/themes/nihilo/images/tabBottomHoverSpriteLR.gif������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/t0000644�0000000�0000000�00000000604�11360615632�027224� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������GIF89a2�2�Ä�ùùùþþþýýýðððòòòøøøúúúåååóóóñññõõõôôôûûûöööÓÓÓüüü÷÷÷ÿÿÿ������������������������������������������!ù���,����2�2��ÿàáŒdižhª’"’$C,Ïtmßv‚ŒÍ‚À pH,‰„bi8ŸÐ¨tJ­:GˆvËíz¿àðÕ‘ ›Ïhí¸œn»› ì{Ž^Óï`;~¿Õó÷~w‚s„…n‡ˆiŠ‹gŽbqd‘o•^—˜\š›j“lž’r¢fž§›©˜«•­‘¯Ž±‹³ˆµ…·‚¹»|½€ ¥¦“�ÅÆÇÈÉÊËÌ�Y# ÑÒÓÔÕÖר �#ÞßàáâãäåÚÝæêëëèìðñàîòõìôöùäøúýßüþúEKЃXȰ¡Ã‡#J|à@D€‹3jÜȱ£Ç�#ˆXA²dÉB��;����������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000224�00000000000�011563� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/themes/nihilo/images/preciseSliderThumbFocus.gif�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/t0000644�0000000�0000000�00000000402�11360615632�027220� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������GIF89a ��Ä�õõõùùù®®®öööóóóåååÈÈȉ‰‰¦¦¦{{{¨¨¨‹‹‹ôôôÝÝÝÞÞÞ°°°´´´Â¬¬¬ááá÷÷÷ªªªËËËøøøüüüúúúûûûýýývvvþþþÿÿÿÿÿÿ!ù���,���� ���à'pdY ßÇyÞ¦½Ëuª§]C~i‡© €@d: 0ci6I æ`�.¤r¶É\(—ÌF Ü`2 f]uÌšu§·õ¼7ø1]´ÜÇ ?ˆˆ~)‰ Ž ™„—4—) GŽ!�;��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000210�00000000000�011556� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/themes/nihilo/images/buttonHover.png�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/t0000644�0000000�0000000�00000000206�11360615636�027226� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������‰PNG  ��� IHDR������d���ÈNÍ7���tEXtSoftware�Adobe ImageReadyqÉe<���(IDATxÚbúÿÿ?ˆFfƒhFFF0±‘ÅÑ1.ñQL20�ÃR½$ëÓÐ����IEND®B`‚������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000211�00000000000�011557� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/themes/nihilo/images/spriteArrows.gif����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/t0000644�0000000�0000000�00000000676�11360615644�027240� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������GIF89a,� �Õ$�ÖÛâÇÇÇ“““ØâñÙæøÖÚß{{{ŒŒŒŽŽŽ‚‚‚………Ö×Ú£££×ÞèÔÔÔ}}}×ÞçËË˶¶¶ÑÑÑÖÙÝÓÓÓÐÐИ˜˜×ÜãØãòÙåö×ßëØà퉉‰ØáïØäôùùùÕÕÕØáîoooÿÿÿ���������������������������������������������������������������������������������!ù��$�,����,� ��Û@’pH,’4ÀÀÈŠÍ(1ƒa�FQA”•T8Æ€*/�Ü¡Çq)(ÅFà0ñ‚ŽeCü #‚i"‚#!D#D #  D ‹‚P$ B ‹C!‹iGm‚ `B"‘‚© # ² SŠ|D ­ ¿˜‚ B³‚·BœFWN� e!�KBØÉ²% ‡ †¤ÜÀ�C%…Q¨ƒ8 �„X3j$‚I�;������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000210�00000000000�011556� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/themes/nihilo/images/sliderEmpty.png�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/t0000644�0000000�0000000�00000000162�11360615632�027223� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������‰PNG  ��� IHDR���������Áõ���tEXtSoftware�Adobe ImageReadyqÉe<���IDATxÚbüÿÿ?0É0�£3÷£ 6����IEND®B`‚��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000215�00000000000�011563� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/themes/nihilo/images/sliderThumbFocus.png������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/t0000644�0000000�0000000�00000000645�11360615634�027233� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������‰PNG  ��� IHDR������ ��� »î$���tEXtSoftware�Adobe ImageReadyqÉe<��GIDATxÚ¤’?j„@ÆŸ“q/°Å‚"^aƒ ©÷[y€@ÐXfrÁÊb³I“ÎÊÞ:Ù"…žÀÆfa»$ÿåd¬˜M üpæùÞ7Ÿƒ’çyðdt`=f@;‚~Ó¶m—$I=„ÃÐÞív¯X^ ôjšf”º®{\×…ù|~…­·hzz`ÐuÝ·cžçý‰ ž€i2™€eY°\.Ï)¥/Xº8HÀ£ŠÑE¸LÓÇq`:n°~FÄïá<˜DLª( , ¶¼$Ãácâ=eYBš¦ Ëò=å/Ä{øii»ÝB’$¬¥ªê6†1jRUÄq Y–=â…ÞÍf³g,Ðá)bñä(Š`¿ßo4M»Æíó,Š¢e7¾ïÛ¿þ²„<à°Ëw¤ÆáŽÿ‰Ž®ë.>eääˆGó5؈ÅO�\÷WÏ—cõ����IEND®B`‚�������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000212�00000000000�011560� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/themes/nihilo/images/buttonEnabled.png���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/t0000644�0000000�0000000�00000000207�11360615634�027225� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������‰PNG  ��� IHDR������d���ÈNÍ7���tEXtSoftware�Adobe ImageReadyqÉe<���)IDATxÚbú÷ïÿÿÿŒ™À4 ƒøè—ø(¦�úD Æ8«Ýõ����IEND®B`‚�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000220�00000000000�011557� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/themes/nihilo/images/accordionItemActive.png���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/t0000644�0000000�0000000�00000000224�11360615644�027225� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������‰PNG  ��� IHDR������0���´f<Õ���tEXtSoftware�Adobe ImageReadyqÉe<���6IDATxÚbúL `�¥X€"ª(/õïß?ÅÈÈ¢˜˜@ZY˜™™I²vR��+Gh±ÅQ ����IEND®B`‚����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000216�00000000000�011564� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/themes/nihilo/images/validationInputBg.gif�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/t0000644�0000000�0000000�00000000135�11360615644�027226� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������GIF89a��³��þþþûûûøøøüüüùùùýýýúúú÷÷÷ÿÿÿ���������������������!ù�����,������� ðAL Íy�;�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000217�00000000000�011565� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/themes/nihilo/images/preciseSliderThumb.gif����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/t0000644�0000000�0000000�00000000402�11360615632�027220� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������GIF89a ��Ä�õõõóóóöööÂÂÂÈÈÈÙÙÙíííùùù¯¯¯æææ®®®¤¤¤ÃÃÃÇÇÇÔÔÔÆÆÆôôôêêêÜÜÜÌÌÌ÷÷÷ËËËøøøüüüúúúûûûýýý¡¡¡þþþÿÿÿÿÿÿ���!ù���,���� ��� GldYž·u–½»qj—YBneÝv© @`8› Si6IàÅ€�,¤r¦ÁX(ŒF Ô\0Ìe]qÌ™5§·í¼5ø1]„ÈÜÇ ?ˆˆ 4)‰)) ™ „—  ~ — G—!�;��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000213�00000000000�011561� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/themes/nihilo/images/treeI_half_rtl.gif��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/t0000644�0000000�0000000�00000000102�11360615634�027217� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������GIF89a��€�ÓÓÓÿÿÿ!ù���,�������Œ€Ë¦ ËlÒtk^v÷ümâH–扦T�;��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000200�00000000000�011555� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/themes/nihilo/nihilo_rtl.css�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/t0000644�0000000�0000000�00000001607�11360615644�027233� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* Adds cosmetic styling to Dijit. Users may swap with a custom theme CSS file. NOTES: --- Dialog.css contains css classes for both Dialog and Tooltip! This because currently a dijit.TooltipDialog exist. Until this is resolved you need to include Dialog.css for both dijits --- Toolbar.css contains classes also used in Editor. Until this is resolved you need to include Toolbar.css for both Toolbar and Editor --- Button.css contains classes for combobox, */ @import url("../dijit_rtl.css"); @import url("layout/TabContainer_rtl.css"); @import url("layout/AccordionContainer_rtl.css"); @import url("form/Slider_rtl.css"); @import url("form/Button_rtl.css"); @import url("form/Common_rtl.css"); @import url("Tree_rtl.css"); @import url("TitlePane_rtl.css"); @import url("Calendar_rtl.css"); @import url("Dialog_rtl.css"); @import url("Menu_rtl.css"); @import url("Editor_rtl.css");�������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000200�00000000000�011555� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/themes/nihilo/Dialog_rtl.css�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/t0000644�0000000�0000000�00000000151�11360615642�027222� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* Dialog */ .dijitRtl .nihilo .dijitDialogTitleBar .dijitDialogCloseIcon { right: auto; left: 5px; } �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000200�00000000000�011555� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/themes/nihilo/TimePicker.css�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/t0000644�0000000�0000000�00000002324�11360615632�027225� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* Time Picker */ .nihilo .dijitTimePickerTick, .nihilo .dijitTimePickerMarker { border-color: #eeeeee; } .nihilo .dijitTimePickerTick { color:white; } .nihilo .dijitTimePickerMarker { background:#d3d3d3 url("images/titleBar.png") repeat-x top; color:#293a4b; font-weight: bold; } .nihilo .dijitTimePickerItemSelected { color: black; background: #ffe284 none; } .nihilo .dijitTimePickerItemHover { background: #d6d6dd none; color:black; } .nihilo .dijitTimePickerItemHover, .nihilo .dijitTimePickerItemSelected { position: relative; z-index: 10; } .nihilo .dijitTimePickerTick .dijitTimePickerItemInner { font-size:0.4em; } .nihilo .dijitTimePickerItemHover .dijitTimePickerItemInner, .nihilo .dijitTimePickerItemSelected .dijitTimePickerItemInner { font-size:1em; } .nihilo .dijitTimePickerMarkerHover { border-top: 1px solid #eeeeee; } .nihilo .dijitTimePickerTickHover, .nihilo .dijitTimePickerTickSelected { margin-top:-0.3em; margin-bottom:-0.3em; border-bottom: none; } .dijit_a11y .dijitTimePickerTickHover { background-color: #CCC !important; border-top: 1px solid #333 !important; border-bottom: 1px solid #333 !important; } .dijit_a11y .dijitTimePickerMarkerHover { border-bottom-width: 2px; } ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000176�00000000000�011571� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/themes/nihilo/Tree_rtl.css���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/t0000644�0000000�0000000�00000001664�11360615632�027233� 0����������������������������������������������������������������������������������������������������ustar �������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������� /* Tree */ .dijitRtl .nihilo .dijitTreeContainer .dijitTreeNode { background-image : url('images/treeI_rtl.gif'); background-position : top right; margin-left: auto; margin-right: 19px; } .dijitRtl .nihilo .dijitTreeContainer .dijitTreeIsRoot { margin-left: auto; margin-right: 0; background-image: none; } .dijitRtl .nihilo .dijitTreeContainer .dijitTreeIsLast { background-image: url('images/treeI_half_rtl.gif'); } .dijitRtl .nihilo .dijitTreeContainer .dijitTreeContent { padding-left: auto; padding-right: 1px; } .dijitRtl .nihilo .dijitTreeContainer .dijitTreeExpandoOpened { background: url('images/spriteTree_rtl.gif') no-repeat -18px top; } .dijitRtl .nihilo .dijitTreeContainer .dijitTreeExpandoClosed { background-image: url('images/spriteTree_rtl.gif'); } .dijitRtl .nihilo .dijitTreeContainer .dijitTreeExpandoLeaf { background: url('images/spriteTree_rtl.gif') no-repeat -36px top; }����������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000202�00000000000�011557� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/themes/nihilo/Calendar_rtl.css�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/t0000644�0000000�0000000�00000000253�11360615640�027223� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* Calendar */ .dijitRtl .nihilo .dijitCalendarDecrease { background-position: -30px top; } .dijitRtl .nihilo .dijitCalendarIncrease { background-position: 0px top; } �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000203�00000000000�011560� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/themes/nihilo/TitlePane_rtl.css����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/t0000644�0000000�0000000�00000000305�11360615642�027223� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������.dijitRtl .nihilo .dijitTitlePane .dijitClosed .dijitArrowNode { background-position: 0px top; } .dj_ie6-rtl .nihilo .dijitTitlePane .dijitClosed .dijitArrowNode { background-position: 0px top; }���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000201�00000000000�011556� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/themes/nihilo/ProgressBar.css������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/t0000644�0000000�0000000�00000001625�11360615634�027232� 0����������������������������������������������������������������������������������������������������ustar �������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������� /**** dijit.ProgressBar ****/ .nihilo .dijitProgressBar { margin:2px 0px 2px 0px; } .nihilo .dijitProgressBarEmpty{ /* outer container and background of the bar that's not finished yet*/ background:#fff url("images/progressBarEmpty.png") repeat-x center center; border-color: #f8d582 #f8d582 #f8d582 #f8d582; } .nihilo .dijitProgressBarTile{ /* inner container for finished portion when in 'tile' (image) mode */ background:#f0f0f0 url("images/progressBarFull.png") repeat-x center center; } .nihilo .dijitProgressBarFull { border-right:1px solid #f8d582; } .nihilo .dijitProgressBarLabel { /* Set to a color that contrasts with both the "Empty" and "Full" parts. */ color:#293a4b; } .nihilo .dijitProgressBarIndeterminate .dijitProgressBarTile { /* use an animated gif for the progress bar in 'indeterminate' mode */ background:#cad2de url("images/progressBarAnim.gif") repeat-x center center; }�����������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000202�00000000000�011557� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/themes/nihilo/ColorPalette.css�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/t0000644�0000000�0000000�00000000150�11360615632�027220� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������.dijitColorPalette { border:1px solid #d3d3d3; background:#fff; -moz-border-radius: 0px !important; }������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000177�00000000000�011572� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/themes/nihilo/TitlePane.css��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/t0000644�0000000�0000000�00000003542�11360615632�027230� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������/** * dijit.layout.TitlePane * */ .nihilo .dijitTitlePane .dijitTitlePaneTitle { background: #cccccc; background:#fff url("images/titleBar.png") repeat-x top left; border:1px solid #bfbfbf; padding:3px 4px; cursor: pointer; font-size: 0.9em; font-weight: bold; color: #6d6d6d; } .nihilo .dijitTitlePaneTitle * { vertical-align: middle; } .nihilo .dijitTitlePane .dijitArrowNode { width:15px; height:15px; } .nihilo .dijitTitlePaneFocused .dijitTitlePaneTextNode { color: #243C5F; } .nihilo .dijitOpen .dijitTitlePaneTextNode { color: #243C5F; } .nihilo .dijitTitlePane .dijitClosed .dijitArrowNode { background: url('images/spriteRoundedIconsSmall.png') no-repeat -30px top; } .dj_ie6 .nihilo .dijitTitlePane .dijitClosed .dijitArrowNode { background:url('images/spriteRoundedIconsSmall.gif') no-repeat -30px top; } .nihilo .dijitTitlePane .dijitOpen .dijitArrowNode { background:url('images/spriteRoundedIconsSmall.png') no-repeat -15px top; } .dj_ie6 .nihilo .dijitTitlePane .dijitOpen .dijitArrowNode { background:url('images/spriteRoundedIconsSmall.gif') no-repeat -15px top; } .nihilo .dijitTitlePane .dijitArrowNodeInner { display:none; } .dijit_a11y .dijitTitlePane .dijitArrowNodeInner { display:inline !important; font-family:monospace; cursor: pointer; padding-bottom:.2em; } .dijit_a11y .dijitTitlePane .dijitArrowNode { display:none; } .nihilo .dijitTitlePaneContentOuter { background: #ffffff; border:1px solid #bfbfbf; border-top: 0px solid #3d3d3d; /* w/out this, an <h1> on the top line causes a gap between the .content and .label */ } .nihilo .dijitTitlePaneContentInner { padding:10px; } /* force hasLayout to ensure borders etc, show up */ .dj_ie6 .nihilo .dijitTitlePaneContentOuter, .dj_ie6 .nihilo .dijitTitlePane .dijitTitlePaneTitle { zoom: 1; } .nihilo .dijitTitlePaneTextNode { margin-left: 4px; margin-right: 4px; }��������������������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000174�00000000000�011567� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/themes/nihilo/nihilo.css�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/t0000644�0000000�0000000�00000002324�11360615640�027224� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* Adds cosmetic styling to Dijit. Users may swap with a custom theme CSS file. NOTES: --- Dialog.css contains css classes for both Dialog and Tooltip! This because currently a dijit.TooltipDialog exist. Until this is resolved you need to include Dialog.css for both dijits --- Toolbar.css contains classes also used in Editor. Until this is resolved you need to include Toolbar.css for both Toolbar and Editor --- Button.css contains classes for combobox, */ @import url("../dijit.css"); @import url("Common.css"); @import url("layout/ContentPane.css"); @import url("layout/TabContainer.css"); @import url("layout/AccordionContainer.css"); @import url("layout/SplitContainer.css"); @import url("layout/BorderContainer.css"); @import url("form/Common.css"); @import url("form/Button.css"); @import url("form/ComboBox.css"); @import url("form/Checkbox.css"); @import url("form/RadioButton.css"); @import url("form/Slider.css"); @import url("Tree.css"); @import url("ProgressBar.css"); @import url("TitlePane.css"); @import url("Calendar.css"); @import url("TimePicker.css"); @import url("Toolbar.css"); @import url("Dialog.css"); @import url("Menu.css"); @import url("Editor.css"); @import url("ColorPalette.css");������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000175�00000000000�011570� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/themes/nihilo/Toolbar.css����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/t0000644�0000000�0000000�00000004076�11360615632�027233� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������.nihilo .dijitToolbar { border-bottom: 1px solid #ccc; background:#eaeaea url("images/titleBar.png") repeat-x top left; } /* setting a min-height on ditor toolbar */ .dj_ie6 .nihilo .dijitToolbar { height: 10px; } .nihilo .dijitToolbar .dijitButtonNode, .nihilo .dijitToolbar .dijitComboButton .dijitButtonContents, .nihilo .dijitToolbar .dijitComboButton .dijitDownArrowButton { background: none; margin: 0px; padding: 0px; border: none; font-size: 12px; } .nihilo .dijitToolbar .dijitButton, .nihilo .dijitToolbar .dijitToggleButton, .nihilo .dijitToolbar .dijitDropDownButton, .nihilo .dijitToolbar .dijitComboButton .dijitButtonContents, .nihilo .dijitToolbar .dijitComboButton .dijitDownArrowButton { background: none; padding: 1px; /* on hover etc., margin replaced w/border */ } .nihilo .dijitToolbar .dijitButtonChecked, .nihilo .dijitToolbar .dijitToggleButtonChecked { background-color:#ffeeb9; border:1px solid #f7c95c; padding: 0; } .nihilo .dijitToolbar .dijitButtonCheckedHover, .nihilo .dijitToolbar .dijitToggleButtonCheckedHover { background-color:#ffe284; border:1px solid #f7c95c; padding: 0; } .nihilo .dijitToolbar .dijitButtonHover, .nihilo .dijitToolbar .dijitToggleButtonHover, .nihilo .dijitToolbar .dijitDropDownButtonHover, .nihilo .dijitToolbar .dijitComboButtonHover .dijitButtonContents, .nihilo .dijitToolbar .dijitComboButtonDownArrowHover .dijitDownArrowButton { /* TODO: change this from Hover to Selected so that button is still highlighted while drop down is being used */ border: 1px solid #f7c95c; padding: 0; background-color:#ffe284; } .nihilo .dijitToolbar label { padding: 3px 3px 0 6px; } .dj_ie .nihilo .dijitToolbar .dijitComboButton .dijitButtonContentsFocused, .dj_ie .nihilo .dijitToolbar .dijitComboButton .dijitDownArrowButtonFocused, .dj_ff2 .nihilo.dijitToolbar .dijitComboButton .dijitButtonContentsFocused, .dj_ff2 .nihilo .dijitToolbar .dijitComboButton .dijitDownArrowButtonFocused { /* focus border doesn't appear on <td> for FF2 or IE, so need to add it manually */ border: 1px #555 dotted !important; padding: 0px; }������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000171�00000000000�011564� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/themes/nihilo/layout/��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/t0000755�0000000�0000000�00000000000�11360615642�027223� 5����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000214�00000000000�011562� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/themes/nihilo/layout/BorderContainer.css�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/t0000644�0000000�0000000�00000002023�11360615636�027225� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������/** * dijit.layout.BorderContainer * */ .nihilo .dijitBorderContainer { background-color: #fcfcfc; padding: 5px; } .nihilo .dijitBorderContainer-dijitBorderContainer { border: none; padding: 0px; } .nihilo .dijitSplitterH, .nihilo .dijitGutterH { background:#FCFCFC; border:0; border-left:0px solid #d3d3d3; border-right:0px solid #d3d3d3; height:5px; } .nihilo .dijitSplitterH .dijitSplitterThumb { background:url("../images/splitContainerSizerH-thumb.png") no-repeat; top:1px; width:19px; height:2px; } .nihilo .dijitSplitterV, .nihilo .dijitGutterV { background:#FCFCFC; border:0; border-top:0px solid #d3d3d3; border-bottom:0px solid #d3d3d3; width:5px; } .nihilo .dijitSplitterV .dijitSplitterThumb { background:url("../images/splitContainerSizerV-thumb.png") no-repeat; left:1px; height:19px; width:5px; } /* active splitter */ .nihilo .dijitSplitterActive { font-size: 1px; background-image: none; background-color: #aaa; -moz-opacity: 0.6; opacity: 0.6; filter: Alpha(Opacity=60); margin: 0; }�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000210�00000000000�011556� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/themes/nihilo/layout/ContentPane.css�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/t0000644�0000000�0000000�00000001101�11360615640�027214� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* ContentPane */ .nihilo .dijitContentPane { padding: 0px; } /* nested layouts */ .nihilo .dijitTabContainerTop-dijitContentPane, .nihilo .dijitTabContainerLeft-dijitContentPane, .nihilo .dijitTabContainerRight-dijitContentPane, .nihilo .dijitTabContainerBottom-dijitContentPane, .nihilo .dijitAccordionContainer-dijitContentPane { border: none; background-color: #fff; padding: 5px; } .nihilo .dijitSplitContainer-dijitContentPane, .nihilo .dijitBorderContainer-dijitContentPane { border: 1px #ccc solid; background-color: #fff; padding: 5px; }���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000223�00000000000�011562� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/themes/nihilo/layout/AccordionContainer_rtl.css������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/t0000644�0000000�0000000�00000000406�11360615632�027224� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������.dijitRtl .nihilo .dijitAccordionArrow { background-position: 0px top; } .dijitRtl .nihilo .dijitAccordionTitle-selected .dijitAccordionArrow { /* same rule as LTR mode, just listed to override previous rule in this file */ background-position: -15px top; } ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000215�00000000000�011563� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/themes/nihilo/layout/TabContainer_rtl.css������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/t0000644�0000000�0000000�00000001713�11360615636�027232� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������.dijitRtl .nihilo .dijitTab { margin-right:0; margin-left:2px; /* space between one tab and the next in top/bottom mode */ } /* tab strips */ .dijitRtl .nihilo .dijitTabContainerTopStrip, .dijitRtl .nihilo .dijitTabContainerBottomStrip { padding-right: 3px; padding-left: 0px; } .dijitRtl .nihilo .dijitTabContainerTop-tabs { padding-left: auto; padding-right: 3px; } .dijitRtl .nihilo .dijitTabContainerBottom-tabs { padding-left: auto; padding-right: 3px; } .dijitRtl .nihilo .dijitTabInnerDiv { padding-left: 3px; padding-right: 4px; } .dijitRtl .nihilo .dijitTabPaneWrapper { #zoom: 1; } .dj_ie-rtl .nihilo .dijitTabContainerLeft-tabs { margin-left: 0px !important; } .dj_ie-rtl .nihilo .dijitTabContainerRight-tabs { margin-right: 0px !important; } .dijitRtl .nihilo .dijitTabContainerLeft-tabs .dijitTab, .dijitRtl .nihilo .dijitTabContainerRight-tabs .dijitTab { margin-left:0px; } .dj_ie .nihilo .dijitTab .dijitTabInnerDiv{ width : 1%; }�����������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000217�00000000000�011565� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/themes/nihilo/layout/AccordionContainer.css����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/t0000644�0000000�0000000�00000002735�11360615632�027233� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������/** * dijit.layout.Accordioncontainer * */ .nihilo .dijitAccordionContainer { border-color: #ccc; } /* nested classes */ .nihilo .dijitTabContainer-dijitAccordionContainer { border: none; } .nihilo .dijitAccordionContainer-dijitAccordionContainer { border: none; background-color: #fff; } .nihilo .dijitSplitContainer-dijitAccordionContainer, .nihilo .dijitBorderContainer-dijitAccordionContainer { border: 1px #ccc solid; background-color: #fff; } /* common */ .nihilo .dijitAccordionPane { background-color: #e7e7e7; font-size: 0.9em; font-weight: bold; color: #6d6d6d; } .nihilo .dijitAccordionTitle { background:#fafafa url("../images/titleBar.png") repeat-x top left; border-top: 1px solid #dedede; padding: 5px 4px 6px 8px; cursor:pointer; } .nihilo .dijitAccordionTitle-selected { background: #f9f9f9 url("../images/accordionItemActive.png") top repeat-x; font-weight: bold; border-top: 1px solid #dedede; border-bottom: 1px solid #dedede; padding: 5px 4px 5px 8px; cursor: default; color: #243C5F; } .nihilo .dijitAccordionArrow { background:url("../images/spriteRoundedIconsSmall.gif") no-repeat -30px top; width:15px; height:15px; margin-top:-1px; } .nihilo .dijitAccordionTitle-selected .dijitAccordionArrow { background:url("../images/spriteRoundedIconsSmall.gif") no-repeat -15px top; margin-top:-1px; } .nihilo .dijitAccordionText { margin-left: 4px; margin-right: 4px; } .nihilo .dijitAccordionBody { background: #fff; }�����������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000213�00000000000�011561� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/themes/nihilo/layout/SplitContainer.css��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/t0000644�0000000�0000000�00000001354�11360615632�027227� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������/** * dijit.layout.SplitContainer * */ .nihilo .dijitSplitContainerSizerH { background:url("../images/splitContainerSizerV.png") repeat-y #fff; border:0; border-left:0px solid #d3d3d3; border-right:0px solid #d3d3d3; width:5px; } .nihilo .dijitSplitContainerSizerH .thumb { background:url("../images/splitContainerSizerV-thumb.png") no-repeat; left:1px; width:2px; height:19px; } .nihilo .dijitSplitContainerSizerV { background:url("../images/splitContainerSizerH.png") repeat-x #fff; border:0; border-top:0px solid #d3d3d3; border-bottom:0px solid #d3d3d3; height:2px; } .nihilo .dijitSplitContainerSizerV .thumb { background:url("../images/splitContainerSizerH-thumb.png") no-repeat; top:1px; width:19px; height:5px; }������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000211�00000000000�011557� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/themes/nihilo/layout/TabContainer.css����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/t0000644�0000000�0000000�00000024156�11360615642�027235� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������/** * dijit.layout.TabContainer * * To style TabContainer with rounded corners * you can use these classes: .dijitTab (left), .dijitTabContent (center), dijitTabInnerDiv (right) * For tabs aligned to top you can style a stripe div right underneath the tabs using .dijitTabStripe */ /* Classes for all types of tabs (top/bottom/left/right) */ /* Tabs, shared classes */ .nihilo .dijitTabPaneWrapper { background:#fff; border:1px solid #ccc; margin: 0; padding: 0; } .nihilo .dijitTabInnerDiv { padding:0px 3px 0px 0px; margin: 0 0 0 4px; background: url("../images/tabContainerSprite.gif") no-repeat; background-position: right -400px; } .nihilo .dijitTab { line-height:normal; margin:0 2px 0 0; /* space between one tab and the next in top/bottom mode */ padding:0px; background: url("../images/tabContainerSprite.gif") no-repeat 0 -300px; color: #6d6d6d; border-bottom: 1px #ccc solid; } .nihilo .dijitTabInnerDiv .dijitTabContent { padding:5px 3px 4px 4px; background: url("../images/tabContainerSprite.gif") repeat-x 0 -350px; position: relative; } .dijitTabSpacer { font-size: 1px; } /* hovered tab */ .nihilo .dijitTabHover, .nihilo .dijitTabCloseButtonHover { color: #243C5F; background: url("../images/tabContainerSprite.gif") no-repeat 0px -150px; } .nihilo .dijitTabHover .dijitTabInnerDiv, .nihilo .dijitTabCloseButtonHover .dijitTabInnerDiv { background: url("../images/tabContainerSprite.gif") no-repeat right -250px; } .nihilo .dijitTabHover .dijitTabInnerDiv .dijitTabContent, .nihilo .dijitTabCloseButtonHover .dijitTabInnerDiv .dijitTabContent { background: url("../images/tabContainerSprite.gif") repeat-x 0 -200px; } /* checked tab*/ .nihilo .dijitTabChecked, .nihilo .dijitTabCloseButtonChecked { /* the selected tab (with or without hover) */ background: url("../images/tabContainerSprite.gif") no-repeat 0px -0px; } .nihilo .dijitTabChecked .dijitTabInnerDiv { background: url("../images/tabContainerSprite.gif") no-repeat right -100px; } .nihilo .dijitTabChecked .dijitTabInnerDiv .dijitTabContent { background: url("../images/tabContainerSprite.gif") repeat-x 0 -50px; color: #243C5F !important; } .nihilo .dijitTab .dijitClosable .closeNode { /* Inline-block */ display:-moz-inline-box; /* FF2 */ display:inline-block; /* webkit and FF3 */ #zoom: 1; /* set hasLayout:true to mimic inline-block */ #display:inline; /* don't use .dj_ie since that increases the priority */ vertical-align:top; width: 1.25em; height: 1.25em; padding: 0; margin: 0; } .nihilo .dijitTab .dijitClosable .closeImage { background: url("../images/spriteRoundedIconsSmall.png") no-repeat -60px top; width: 15px; height: 15px; } .dj_ie6 .dijitTab .dijitClosable .closeImage { background: url("../images/spriteRoundedIconsSmall.gif") no-repeat -60px top; } .nihilo .dijitTabCloseButton .dijitClosable .closeImage { background: url("../images/spriteRoundedIconsSmall.png") no-repeat -60px top; } .dj_ie6 .nihilo .dijitTabCloseButton .dijitClosable .closeImage { background: url("../images/spriteRoundedIconsSmall.gif") no-repeat -60px top; } .nihilo .dijitTabCloseButtonHover .dijitClosable .closeImage { background: url("../images/spriteRoundedIconsSmall.png") no-repeat -60px top; } .dj_ie6 .nihilo .dijitTabCloseButtonHover .dijitClosable .closeImage { background: url("../images/spriteRoundedIconsSmall.gif") no-repeat -60px top; } .nihilo .dijitTab .dijitTabButtonSpacer { height: 15px; width: 1px; } /* ================================ */ /* top tabs */ .nihilo .dijitTabContainerTop-tabs { margin-bottom: -1px; border-color: #ccc; padding-left: 3px; } /* top container */ .nihilo .dijitTabContainerTop-container { border-top: none; } /* checked tabs */ .nihilo .dijitTabContainerTop-tabs .dijitTabChecked { border-bottom-color: #f8f8f8; } /* strip */ .nihilo .dijitTabContainerTopStrip { border: 1px solid #ccc; padding-top: 2px; padding-left: 3px; } .nihilo .dijitTabContainerTopStrip { background: #f2f2f2; } /* ================================ */ /* bottom tabs */ .nihilo .dijitTabContainerBottom-tabs { margin-top: -1px; border-color: #ccc; padding-left: 3px; } /* bottom container */ .nihilo .dijitTabContainerBottom-container { border-bottom: none; } .nihilo .dijitTabContainerBottom-tabs .dijitTab { border-bottom: none; border-top: 1px solid #ccc; background: url("../images/tabBottomEnabledSpriteLR.gif") no-repeat bottom left; } /* checked tabs */ .nihilo .dijitTabContainerBottom-tabs .dijitTabChecked { border-top-color:#f8f8f8; } .nihilo .dijitTabContainerBottom-tabs .dijitTabInnerDiv .dijitTabContent { padding-top: 4px; padding-bottom: 5px; background: url("../images/tabBottomEnabledC.gif") repeat-x bottom left; } .nihilo .dijitTabContainerBottom-tabs .dijitTabInnerDiv { background: url("../images/tabBottomEnabledSpriteLR.gif") no-repeat bottom right; } .nihilo .dijitTabContainerBottom-tabs .dijitTabHover, .nihilo .dijitTabContainerBottom-tabs .dijitTabCloseButtonHover { color: #243C5F; background: url("../images/tabBottomHoverSpriteLR.gif") no-repeat bottom left; } .nihilo .dijitTabContainerBottom-tabs .dijitTabHover .dijitTabInnerDiv, .nihilo .dijitTabContainerBottom-tabs .dijitTabCloseButtonHover .dijitTabInnerDiv { background: url("../images/tabBottomHoverSpriteLR.gif") no-repeat bottom right; } .nihilo .dijitTabContainerBottom-tabs .dijitTabHover .dijitTabInnerDiv .dijitTabContent, .nihilo .dijitTabContainerBottom-tabs .dijitTabCloseButtonHover .dijitTabInnerDiv .dijitTabContent { background: url("../images/tabBottomHoverC.gif") repeat-x bottom left; } .nihilo .dijitTabContainerBottom-tabs .dijitTabChecked, .nihilo .dijitTabContainerBottom-tabs .dijitTabCloseButtonChecked { /* the selected tab (with or without hover) */ background: url("../images/tabBottomActiveSpriteLR.gif") no-repeat bottom left; } .nihilo .dijitTabContainerBottom-tabs .dijitTabChecked .dijitTabInnerDiv { background: url("../images/tabBottomActiveSpriteLR.gif") no-repeat bottom right; } .nihilo .dijitTabContainerBottom-tabs .dijitTabChecked .dijitTabInnerDiv .dijitTabContent { background: url("../images/tabBottomActiveC.gif") repeat-x bottom left; } /* strip */ .nihilo .dijitTabContainerBottomStrip { padding-bottom: 2px; padding-left: 3px; border: 1px solid #ccc; } .nihilo .dijitTabContainerBottomStrip { background: #f2f2f2; } /* top/bottom strip */ .nihilo .dijitTabContainerBottom-spacer, .nihilo .dijitTabContainerTop-spacer { height: 2px; border: 1px solid #ccc; background: #f8f8f8; } /* ================================ */ /* right tabs */ .nihilo .dijitTabContainerRight-tabs { margin-left: -1px; border-color: #ccc; padding-top: 3px; } /* right container */ .nihilo .dijitTabContainerRight-container { border-right: none; } .nihilo .dijitTabContainerRight-tabs .dijitTab { border-bottom: none; border-left: 1px solid #ccc; border-bottom: 1px solid #dedede !important; } /* some odd ie bug when borders dissapear when setting a bottom margin, this sortof helps */ .dj_ie .nihilo .dijitTabContainerRight-tabs .dijitTabInnerDiv { border-bottom: solid #fff 1px; } /* checked tabs */ .nihilo .dijitTabContainerRight-tabs .dijitTabChecked { border-left-color: #f8f8f8; } .nihilo .dijitTabContainerRight-tabs .dijitTabChecked { background: url("../images/tabRightChecked.gif") no-repeat left top !important; } /* some odd ie bug when borders dissapear when setting a bottom margin, this sortof helps */ .dj_ie .nihilo .dijitTabContainerRight-tabs .dijitTabChecked .dijitTabInnerDiv, .dj_ie .nihilo .dijitTabContainerRight-tabs .dijitTabCheckedHover .dijitTabInnerDiv { border-bottom: solid #efefef 1px; } .nihilo .dijitTabContainerRight-tabs .dijitTab { background: url("../images/tabContainerSprite.gif") no-repeat left -350px; } .nihilo .dijitTabContainerRight-tabs .dijitTabHover .dijitTab { background: url("../images/tabContainerSprite.gif") no-repeat left -200px; } /* strip */ .nihilo .dijitTabContainerRightStrip { padding-right: 2px; padding-top: 3px; border: 1px solid #ccc; } .nihilo .dijitTabContainerRightStrip { background: #f2f2f2; } /* ================================ */ /* left tabs */ .nihilo .dijitTabContainerLeft-tabs { margin-right: -1px; border-color: #ccc; padding-top: 3px; } /* left conatiner */ .nihilo .dijitTabContainerLeft-container { border-left: none; } .nihilo .dijitTabContainerLeft-tabs .dijitTab { border-right: 1px solid #ccc; border-bottom: 1px solid #dedede; } /* checked tabs */ .nihilo .dijitTabContainerLeft-tabs .dijitTabChecked { border-right: 1px solid #f8f8f8; } .nihilo .dijitTabContainerLeft-tabs .dijitTabInnerDiv { background: url("../images/tabContainerSprite.gif") no-repeat right -350px; } .nihilo .dijitTabContainerLeft-tabs .dijitTabHover .dijitTabInnerDiv { background: url("../images/tabContainerSprite.gif") no-repeat right -200px; } .nihilo .dijitTabContainerLeft-tabs .dijitTabChecked .dijitTabInnerDiv, .nihilo .dijitTabContainerLeft-tabs .dijitTabCheckedHover .dijitTabInnerDiv { background: url("../images/tabLeftChecked.gif") no-repeat right top; } .dj_ie .nihilo .dijitTabContainerLeft-tabs .dijitTabChecked .dijitTabInnerDiv, .dj_ie .nihilo .dijitTabContainerLeft-tabs .dijitTabCheckedHover .dijitTabInnerDiv { border-bottom: solid #efefef 1px; } .dj_ie .nihilo .dijitTabContainerLeft-tabs .dijitTabInnerDiv { border-bottom: solid #fff 1px; } /* strip */ .nihilo .dijitTabContainerLeftStrip { padding-left: 2px; padding-top: 3px; border: 1px solid #ccc; } .nihilo .dijitTabContainerLeftStrip { background: #f2f2f2; } /* ================================ */ /* left/right tabs */ .nihilo .dijitTabContainerLeft-tabs .dijitTab, .nihilo .dijitTabContainerRight-tabs .dijitTab { margin-right:auto; margin-bottom:2px; /* space between one tab and the next in left/right mode */ } /* left/right tabstrip */ .nihilo .dijitTabContainerLeft-spacer, .nihilo .dijitTabContainerRight-spacer { width: 2px; border: 1px solid #ccc; background: #f8f8f8; } /* ================================ */ /* this resets the tabcontainer stripe when within a contentpane */ .nihilo .dijitTabContainerTop-dijitContentPane .dijitTabContainerTop-tabs { border-left: 0px solid #ccc; border-top: 0px solid #ccc; border-right: 0px solid #ccc; padding-top: 0px; padding-left: 0px; } ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000174�00000000000�011567� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/themes/nihilo/Common.css�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/t0000644�0000000�0000000�00000003411�11360615634�027225� 0����������������������������������������������������������������������������������������������������ustar �������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������� /**** Disabled cursor *****/ .nihilo .dijitSliderDisabled *, .nihilo .dijitDisabledClickableRegion, /* a region the user would be able to click on, but it's disabled */ .nihilo .dijitSpinnerDisabled *, .nihilo .dijitButtonDisabled *, .nihilo .dijitDropDownButtonDisabled *, .nihilo .dijitComboButtonDisabled *, .nihilo .dijitComboBoxDisabled * { cursor: not-allowed !important; } /* DnD avatar-specific settings */ /* For now it uses a default set of rules. Some other DnD classes can be modified as well. */ .nihilo .dojoDndItemBefore { border-top: 2px solid #369; } .nihilo .dojoDndItemAfter { border-bottom: 2px solid #369; } .nihilo .dojoDndItemOver { cursor:pointer; } .nihilo table.dojoDndAvatar { -moz-border-radius: 0; border: 1px solid #ccc; border-collapse: collapse; background-color: #fff; font-size: 75%; color: black;} .nihilo .dojoDndAvatar td { border: none; } .nihilo .dojoDndAvatar tr { border: none; } .nihilo .dojoDndAvatarHeader td { height: 20px; padding: 0 0 0 21px; } .nihilo .dojoDndAvatarItem td { padding: 2px;} .nihilo.dojoDndMove .dojoDndAvatarHeader {background-color: #f58383; background-image: url(images/dndNoMove.png); background-repeat: no-repeat; background-position: 2px center;} .nihilo.dojoDndCopy .dojoDndAvatarHeader {background-color: #f58383; background-image: url(images/dndNoCopy.png); background-repeat: no-repeat; background-position: 2px center;} .nihilo.dojoDndMove .dojoDndAvatarCanDrop .dojoDndAvatarHeader {background-color: #97e68d; background-image: url(images/dndMove.png); background-repeat: no-repeat; background-position: 2px center;} .nihilo.dojoDndCopy .dojoDndAvatarCanDrop .dojoDndAvatarHeader {background-color: #97e68d; background-image: url(images/dndCopy.png); background-repeat: no-repeat; background-position: 2px center;} �������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000167�00000000000�011571� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/themes/nihilo/form/����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/t0000755�0000000�0000000�00000000000�11360615644�027225� 5����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000205�00000000000�011562� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/themes/nihilo/form/Button_rtl.css��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/t0000644�0000000�0000000�00000000125�11360615642�027223� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������.dijitRtl .nihilo .dijitComboBox .dijitButtonNode { border-width: 0px 0px 0px 1px; }�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000206�00000000000�011563� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/themes/nihilo/form/TimeTextBox.css�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/t0000644�0000000�0000000�00000000021�11360615640�027214� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������@CHARSET "UTF-8";���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000205�00000000000�011562� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/themes/nihilo/form/Common_rtl.css��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/t0000644�0000000�0000000�00000000376�11360615632�027232� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������.dijitRtl .nihilo .dijitComboBox .dijitButtonNode, .dijitRtl .nihilo .dijitSpinner .dijitButtonNode { /* line between the input area and the drop down button */ border-color: #8ba0bd; border-left: 0px solid #8ba0bd; border-right: 1px solid #8ba0bd; }������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000201�00000000000�011556� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/themes/nihilo/form/Slider.css������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/t0000644�0000000�0000000�00000007614�11360615642�027235� 0����������������������������������������������������������������������������������������������������ustar �������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������� /**** SLIDER ****/ .nihilo .dijitSliderProgressBarH { border-color: #aab0bb; background: #c0c2c5 url("../images/sliderFull.png") repeat-x top left; } .nihilo .dijitSliderProgressBarV { border-color: #aab0bb; background: #c0c2c5 url("../images/sliderFullVertical.png") repeat-y bottom left; } .nihilo .dijitSliderFocused .dijitSliderProgressBarH, .nihilo .dijitSliderFocused .dijitSliderLeftBumper { background-image:url("../images/sliderFullFocus.png"); } .nihilo .dijitSliderFocused .dijitSliderProgressBarV, .nihilo .dijitSliderFocused .dijitSliderBottomBumper { background-image:url("../images/sliderFullVerticalFocus.png"); } .nihilo .dijitSliderRemainingBarV { border-color: #b4b4b4; background: #dcdcdc url("../images/sliderEmptyVertical.png") repeat-y bottom left; } .nihilo .dijitSliderRemainingBarH { border-color: #b4b4b4; background: #dcdcdc url("../images/sliderEmpty.png") repeat-x top left; } .nihilo .dijitSliderBar { border-style: solid; outline:1px; /* border-color: #b4b4b4; */ } .nihilo .dijitSliderFocused .dijitSliderBar { border-color:#727272; } .dijit_a11y .dijitSliderProgressBar { background-color:#333 !important; } .nihilo .dijitSliderImageHandleH { border:0px; width:15px; height:18px; background:url("../images/preciseSliderThumb.png") no-repeat center top; #background:url("../images/preciseSliderThumb.gif") no-repeat center top; cursor:pointer; } .nihilo .dijitSliderFocused .dijitSliderImageHandleH { background-image:url("../images/preciseSliderThumbFocus.png"); #background-image:url("../images/preciseSliderThumbFocus.gif"); } .nihilo .dijitSliderLeftBumper { border-left-width: 1px; border-color: #aab0bb; background: #c0c2c5 url("../images/sliderFull.png") repeat-x top left; } .nihilo .dijitSliderRightBumper { background: #dcdcdc url("../images/sliderEmpty.png") repeat-x top left; border-color: #b4b4b4; border-right-width: 1px; } .nihilo .dijitSliderImageHandleV { border:0px; width:20px; height:15px; background:url("../images/sliderThumb.png") no-repeat center center; #background:url("../images/sliderThumb.gif") no-repeat center center; cursor:pointer; } .nihilo .dijitSliderFocused .dijitSliderImageHandleV { background-image:url("../images/sliderThumbFocus.png"); #background-image:url("../images/sliderThumbFocus.gif"); } .nihilo .dijitSliderBottomBumper { border-bottom-width: 1px; border-color: #aab0bb; background: #c0c2c5 url("../images/sliderFullVertical.png") repeat-y bottom left; } .nihilo .dijitSliderTopBumper { background: #dcdcdc url("../images/sliderEmptyVertical.png") repeat-y top left; border-color: #b4b4b4; border-top-width: 1px; } .nihilo .dijitSliderIncrementIconH, .nihilo .dijitSliderIncrementIconV { background:url('../images/spriteRoundedIconsSmall.png') no-repeat -45px top; #background:url('../images/spriteRoundedIconsSmall.gif') no-repeat -45px top; width:15px; height:15px; cursor:pointer; } .nihilo .dijitSliderIncrementIconH { background:url('../images/spriteRoundedIconsSmall.png') no-repeat -30px top; #background:url('../images/spriteRoundedIconsSmall.gif') no-repeat -30px top; } .nihilo .dijitSliderDecrementIconH, .nihilo .dijitSliderDecrementIconV { width:15px; height:15px; cursor:pointer; background:url('../images/spriteRoundedIconsSmall.png') no-repeat -15px top; #background:url('../images/spriteRoundedIconsSmall.gif') no-repeat -15px top; } .nihilo .dijitSliderDecrementIconH { background:url('../images/spriteRoundedIconsSmall.png') no-repeat 0px top; #background:url('../images/spriteRoundedIconsSmall.gif') no-repeat 0px top; } .nihilo .dijitSliderButtonInner { visibility:hidden; } .nihilo .dijitSliderDisabled { opacity:0.6 !important; } .dj_ie6 .nihilo .dijitSliderDisabled, .dj_ie6 .nihilo .dijitSliderDisabled .dijitRuleContainer, .dj_ie6 .nihilo .dijitSliderDisabled .dijitSliderRemainingBar, .dj_ie6 .nihilo .dijitSliderDisabled .dijitSliderProgressBar { filter: gray() alpha(opacity=40); }��������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000203�00000000000�011560� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/themes/nihilo/form/ComboBox.css����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/t0000644�0000000�0000000�00000000653�11360615632�027230� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������.nihilo .dijitComboBox .dijitArrowButton .dijitArrowButtonInner { background:url("../images/spriteArrows.png") no-repeat left center; width: 11px; } .dj_ie6 .nihilo .dijitComboBox .dijitArrowButton .dijitArrowButtonInner { background:url("../images/spriteArrows.gif") no-repeat left center; } .nihilo .dijitComboBoxHover .dijitArrowButtonInner { /* TODO: url("images/arrowDownHover.png") but in IE6 it flickers some? */ }�������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000205�00000000000�011562� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/themes/nihilo/form/Slider_rtl.css��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/t0000644�0000000�0000000�00000002026�11360615632�027224� 0����������������������������������������������������������������������������������������������������ustar �������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������� /* Slider */ .dijitRtl .nihilo .dijitSliderProgressBarH, .dijitRtl .nihilo .dijitSliderRemainingBarH, .dijitRtl .nihilo .dijitSliderLeftBumper, .dijitRtl .nihilo .dijitSliderRightBumper, .dijitRtl .nihilo .dijitSliderTopBumper { background-position: top right; } .dijitRtl .nihilo .dijitSliderProgressBarV, .dijitRtl .nihilo .dijitSliderRemainingBarV, .dijitRtl .nihilo .dijitSliderBottomBumper { background-position: bottom right; } .dijitRtl .nihilo .dijitSliderLeftBumper { border-left-width: 0px; border-right-width: 1px; } .dijitRtl .nihilo .dijitSliderRightBumper { border-left-width: 1px; border-right-width: 0px; } .dijitRtl .nihilo .dijitSliderIncrementIconH { background:url('../images/spriteRoundedIconsSmall.png') no-repeat left top; #background:url('../images/spriteRoundedIconsSmall.gif') no-repeat left top; } .dijitRtl .nihilo .dijitSliderDecrementIconH { background:url('../images/spriteRoundedIconsSmall.png') no-repeat -30px top; #background:url('../images/spriteRoundedIconsSmall.gif') no-repeat -30px top; } ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000206�00000000000�011563� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/themes/nihilo/form/RadioButton.css�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/t0000644�0000000�0000000�00000003023�11360615632�027222� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* * CheckBox and Radio Widgets, * and the CSS to embed a checkbox or radio icon inside a ToggleButton. * * Order of images in the default sprite (from L to R, checkbox and radio in same image): * checkbox normal - checked * - unchecked * disabled - checked * - unchecked * hover - checked * - unchecked * * radio normal - checked * - unchecked * disabled - checked * - unchecked * hover - checked * - unchecked */ .nihilo .dijitToggleButton .dijitRadio, .nihilo .dijitToggleButton .dijitRadioIcon { background-image: url('../images/spriteRadio.gif'); } .nihilo .dijitRadio, .nihilo .dijitRadioIcon { /* inside a toggle button */ background-image: url('../images/spriteRadio.gif'); /* checkbox sprite image */ background-repeat: no-repeat; width: 16px; height: 16px; margin: 0; padding: 0; } .nihilo .dijitRadio, .nihilo .dijitToggleButton .dijitRadioIcon { /* unselected */ background-position: -16px; } .nihilo .dijitRadioChecked, .nihilo .dijitToggleButtonChecked .dijitRadioIcon { /* selected */ background-position: 0px; } .nihilo .dijitRadioCheckedDisabled { /* selected but disabled */ background-position: -48px; } .nihilo .dijitRadioDisabled { /* unselected and disabled */ background-position: -32px; } .nihilo .dijitRadioHover { /* hovering over an unselected enabled radio button */ background-position: -80px; } .nihilo .dijitRadioCheckedHover { /* hovering over a selected enabled radio button */ background-position: -64px; }�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000201�00000000000�011556� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/themes/nihilo/form/Common.css������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/t0000644�0000000�0000000�00000005511�11360615644�027231� 0����������������������������������������������������������������������������������������������������ustar �������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������� /**** dijit.form.TextBox dijit.form.ValidationTextBox dijit.form.SerializableTextBox dijit.form.RangeBoundTextBox dijit.form.NumberTextBox dijit.form.CurrencyTextBox dijit.form.NumberSpinner dijit.form.ComboBox (partial) ****/ .nihilo .dijitInputField INPUT, .nihilo .dijitTextBox, .nihilo .dijitComboBox, .nihilo .dijitSpinner { margin: 0em 0.1em; } .nihilo .dijitTextBox, .nihilo .dijitComboBox, .nihilo .dijitSpinner, .nihilo .dijitInlineEditor input, .nihilo .dijitTextArea { /* For all except dijit.form.NumberSpinner: the actual input element. For TextBox, ComboBox, Spinner: the table that contains the input. Otherwise the actual input element. */ background:#fff url("../images/validationInputBg.png") repeat-x top left; border:1px solid #d3d3d3; line-height: normal; } .dj_ie6 .nihilo .dijitTextBox, .dj_ie6 .nihilo .dijitComboBox, .dj_ie6 .nihilo .dijitSpinner, .dj_ie6 .nihilo .dijitInlineEditor input, .dj_ie6 .nihilo .dijitTextArea { background:#fff url('../images/validationInputBg.gif') repeat-x top left; } .nihilo .dijitComboBox .dijitButtonNode { padding: 0 0.2em; } .nihilo .dijitComboBox .dijitButtonNode, .nihilo .dijitSpinner .dijitButtonNode { /* line between the input area and the drop down button */ border-color: #d3d3d3; border-left: 1px solid #d3d3d3; } .nihilo .dijitTextBoxDisabled, .nihilo .dijitComboBoxDisabled, .nihilo .dijitSpinnerDisabled, .nihilo .dijitTextAreaDisabled { color: gray; } .dj_safari .nihilo .dijitTextBoxDisabled, .dj_safari .nihilo .dijitComboBoxDisabled, .dj_safari .nihilo .dijitSpinnerDisabled, .dj_safari .nihilo .dijitTextareaDisabled { color: #eee; } .nihilo .dijitTextBoxFocused, .nihilo .dijitComboBoxFocused, .nihilo .dijitSpinnerFocused, .nihilo .dijitTextAreaFocused { /* input field when focused (ie: typing affects it) */ border-color:#b3b3b3; } .nihilo .dijitComboBoxFocused .dijitButtonNode, .nihilo .dijitSpinnerFocused .dijitButtonNode { border-left-color:#d3d3d3; } .nihilo .dijitSpinnerFocused .dijitDownArrowButton { border-top-color:#d3d3d3; } .nihilo .dijitError { border-color:#b3b3b3; background-color:#f9f7ba; background-image:none; } .dj_ie6 .nihilo .dijitError INPUT { /* background-color: transparent on an <input> doesn't work on IE6 */ background-color:#f9f7ba !important; } .nihilo .dijitErrorFocused { background-color:#ff6; background-image:none; } .dj_ie6 .nihilo .dijitErrorFocused INPUT { /* background-color: transparent on an <input> doesn't work on IE6 */ background-color:#ff6 !important; } /* Validation errors */ .nihilo .dijitValidationIcon { /* prevent height change when widget goes from valid to invalid state */ width: 16px; background: transparent url('../images/warning.png') no-repeat center center; } /* The highlight is shown in the ComboBox menu. */ .nihilo .dijitComboBoxHighlightMatch { background-color:#d3d3d3; }���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000201�00000000000�011556� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/themes/nihilo/form/Button.css������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/t0000644�0000000�0000000�00000006273�11360615640�027233� 0����������������������������������������������������������������������������������������������������ustar �������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������� /***** dijit.form.Button dijit.form.DropDownButton dijit.form.ComboButton dijit.form.ComboBox (partial) *****/ .nihilo .dijitButtonNode { /* enabled state - inner */ /* border:1px outset #a0a0a0; */ border:1px solid #dedede; border-bottom:1px solid #dedede; padding: 0.1em 0.2em 0.2em 0.2em; background: #fff url("../images/buttonEnabled.png") repeat-x top left; } .nihilo .dijitButtonNode button { border: 0px; background-color: transparent; } .nihilo .dijitButtonText { text-align: center; padding: 0 0.3em; } .nihilo .dijitComboBox .dijitButtonNode { border-width: 0px 0px 0px 1px; } .nihilo .dijitArrowButton { color: #111; } .nihilo .dijitComboButton .dijitDownArrowButton { padding-right:4px; } .dj_ff2 .nihilo .dijitComboButton .dijitButtonContentsFocused, .dj_ff2 .nihilo .dijitComboButton .dijitDownArrowButtonFocused { border: 1px black dotted !important; } .nihilo .dijitButtonDisabled .dijitButtonNode, .nihilo .dijitToggleButtonDisabled .dijitButtonNode, .nihilo .dijitDropDownButtonDisabled .dijitButtonNode, .nihilo .dijitComboButtonDisabled .dijitButtonNode, .nihilo .dijitComboBoxDisabled, .nihilo .dijitSpinnerDisabled, .nihilo .dijitSpinnerDisabled .dijitButtonNode { /* disabled state - inner */ border-color: #dedede; background:#fafafa url("../images/buttonDisabled.png") top repeat-x; opacity: 0.60; /* Safari, Opera and Mozilla */ } .nihilo .dijitButtonHover .dijitButtonNode, .nihilo .dijitButtonNodeHover, .nihilo .dijitToggleButtonHover .dijitButtonNode, .nihilo .dijitDropDownButtonHover .dijitButtonNode, .nihilo .dijitComboButtonHover .dijitButtonContents, .nihilo .dijitComboButtonDownArrowHover .dijitDownArrowButton, .nihilo .dijitComboBoxHover .dijitDownArrowButton, .nihilo .dijitSpinnerUpArrowHover .dijitUpArrowButton, .nihilo .dijitSpinnerDownArrowHover .dijitDownArrowButton { /* hover state - inner */ /* TODO: change from Hover to Selected so that button is still highlighted while drop down is being used */ color:#243C5F; background:#fcfcfc url("../images/buttonHover.png") repeat-x top left; } .nihilo .dijitSpinnerUpArrowActive .dijitUpArrowButton, .nihilo .dijitSpinnerDownArrowActive .dijitDownArrowButton, .nihilo .dijitButtonActive .dijitButtonNode, .nihilo .dijitToggleButtonActive .dijitButtonNode, .nihilo .dijitDropDownButtonActive .dijitButtonNode, .nihilo .dijitComboButtonActive .dijitButtonContents, .nihilo .dijitDownArrowActive .dijitDownArrowButton, .nihilo .dijitComboBoxActive .dijitDownArrowButton { /* active state - inner (for when you are pressing a normal button, or * when a toggle button is in a depressed state */ border-color:#dedede; background: #f5f5f5 url("../images/buttonActive.png") top left repeat-x; } .nihilo .dijitArrowButtonInner { background:url("../images/spriteArrows.png") no-repeat left top; width: 11px; } .nihilo .dijitUpArrowButton .dijitArrowButtonInner { background:url("../images/spriteArrows.png") no-repeat -22px top; width: 11px; } .dj_ie6 .nihilo .dijitArrowButtonInner { background:url("../images/spriteArrows.gif") no-repeat left top; width: 11px; } .dj_ie6 .nihilo .dijitUpArrowButton .dijitArrowButtonInner { background:url("../images/spriteArrows.gif") no-repeat -22px top; width: 11px; } �������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000203�00000000000�011560� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/themes/nihilo/form/Checkbox.css����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/t0000644�0000000�0000000�00000003042�11360615634�027225� 0����������������������������������������������������������������������������������������������������ustar �������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������� /* * CheckBox and Radio Widgets, * and the CSS to embed a checkbox or radio icon inside a ToggleButton. * * Order of images in the default sprite (from L to R, checkbox and radio in same image): * checkbox normal - checked * - unchecked * disabled - checked * - unchecked * hover - checked * - unchecked * * radio normal - checked * - unchecked * disabled - checked * - unchecked * hover - checked * - unchecked */ .nihilo .dijitToggleButton .dijitCheckBox, .nihilo .dijitToggleButton .dijitCheckBoxIcon { background-image: url('../images/spriteCheckbox.gif'); } .nihilo .dijitCheckBox, .nihilo .dijitCheckBoxIcon { /* inside a toggle button */ background-image: url('../images/spriteCheckbox.gif'); /* checkbox sprite image */ background-repeat: no-repeat; width: 16px; height: 16px; margin: 0; padding: 0; } .nihilo .dijitCheckBox, .nihilo .dijitToggleButton .dijitCheckBoxIcon { /* unchecked */ background-position: -16px; } .nihilo .dijitCheckBoxChecked, .nihilo .dijitToggleButtonChecked .dijitCheckBoxIcon { /* checked */ background-position: 0px; } .nihilo .dijitCheckBoxDisabled { /* disabled */ background-position: -48px; } .nihilo .dijitCheckBoxCheckedDisabled { /* disabled but checked */ background-position: -32px; } .nihilo .dijitCheckBoxHover { /* hovering over an unchecked enabled checkbox */ background-position: -80px; } .nihilo .dijitCheckBoxCheckedHover { /* hovering over a checked enabled checkbox */ background-position: -64px; }����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000170�00000000000�011563� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/themes/dijit_rtl.css���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/t0000644�0000000�0000000�00000003510�11360615644�027226� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������.dj_gecko-rtl .dijitInputField { direction: ltr; /* Firefox needs this - probably a bug */ } .dj_gecko-rtl .dijitInputField * { direction: rtl; /* Firefox needs dijitInputField to be ltr, so fix the contained tags */ } /* ComboBox */ .dijitRtl .dijitMenuItem { text-align: right; } /* Tree */ .dijitRtl .dijitComboBox .dijitInputField { border-right-width:1px !important; border-left-width:0 !important; } /* Calendar */ .dijitRtl .dijitCalendarNextYear { margin:0 0.55em 0 0; } .dijitRtl .dijitCalendarPreviousYear { margin:0 0 0 0.55em; } .dijitRtl .dijitProgressBarFull .dijitProgressBarLabel { right:0; /* FF workaround */ } .dijitRtl .dijitA11ySideArrow { margin-left:1em; margin-right:0; } /* Slider */ .dijitRtl .dijitSliderImageHandleV { left:auto; right:-6px; } .dj_ie-rtl .dijitSliderImageHandleV { right:-10px; } .dijitRtl .dijitSliderMoveableH { right:auto; left:0; } .dijitRtl .dijitRuleContainerV { float:right; } .dj_gecko-rtl .dijitRuleContainerV { float:left; } .dj_ie-rtl .dijitRuleContainerV { text-align:right; } .dj_ie-rtl .dijitRuleLabelV { text-align:left; } .dj_ie-rtl .dijitRuleLabelH { zoom:1; } .dj_ie-rtl .dijitSliderProgressBarH { right:0; left:auto; } .dj_gecko-rtl .dijitSliderProgressBarH { float:right; right:0; left:auto; } /* Spinner */ .dijitRtl .dijitSpinner .dijitInputLayoutContainer .dijitArrowButton { right: auto; left: 0; border-width: 0 1px 0 0 !important; } .dijitRtl .dijitSpinnerButtonContainer { float: left; } .dijitRtl .dijit_a11y .dijitSpinnerButtonContainer { margin-left: none; margin-right: 2px; } .dijitRtl DIV.dijitArrowButton, .dijitRtl .dijitValidationIcon, .dijitRtl .dijitValidationIconText { float: left; } /* ContentPane*/ .dijitRtl .dijitContentPaneLoading, .dijitRtl .dijitContentPaneError { background-position:right; padding-right:25px; } ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000156�00000000000�011567� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/_Widget.js�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/_0000644�0000000�0000000�00000015675�11360615642�027216� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* Copyright (c) 2004-2008, The Dojo Foundation All Rights Reserved. Available via Academic Free License >= 2.1 OR the modified BSD license. see: http://dojotoolkit.org/license for details */ if(!dojo._hasResource["dijit._Widget"]){dojo._hasResource["dijit._Widget"]=true;dojo.provide("dijit._Widget");dojo.require("dijit._base");dojo.connect(dojo,"connect",function(_1,_2){if(_1&&dojo.isFunction(_1._onConnect)){_1._onConnect(_2);}});dijit._connectOnUseEventHandler=function(_3){};(function(){var _4={};var _5=function(dc){if(!_4[dc]){var r=[];var _8;var _9=dojo.getObject(dc).prototype;for(var _a in _9){if(dojo.isFunction(_9[_a])&&(_8=_a.match(/^_set([a-zA-Z]*)Attr$/))&&_8[1]){r.push(_8[1].charAt(0).toLowerCase()+_8[1].substr(1));}}_4[dc]=r;}return _4[dc]||[];};dojo.declare("dijit._Widget",null,{id:"",lang:"",dir:"","class":"",style:"",title:"",srcNodeRef:null,domNode:null,containerNode:null,attributeMap:{id:"",dir:"",lang:"","class":"",style:"",title:""},_deferredConnects:{onClick:"",onDblClick:"",onKeyDown:"",onKeyPress:"",onKeyUp:"",onMouseMove:"",onMouseDown:"",onMouseOut:"",onMouseOver:"",onMouseLeave:"",onMouseEnter:"",onMouseUp:""},onClick:dijit._connectOnUseEventHandler,onDblClick:dijit._connectOnUseEventHandler,onKeyDown:dijit._connectOnUseEventHandler,onKeyPress:dijit._connectOnUseEventHandler,onKeyUp:dijit._connectOnUseEventHandler,onMouseDown:dijit._connectOnUseEventHandler,onMouseMove:dijit._connectOnUseEventHandler,onMouseOut:dijit._connectOnUseEventHandler,onMouseOver:dijit._connectOnUseEventHandler,onMouseLeave:dijit._connectOnUseEventHandler,onMouseEnter:dijit._connectOnUseEventHandler,onMouseUp:dijit._connectOnUseEventHandler,_blankGif:(dojo.config.blankGif||dojo.moduleUrl("dojo","resources/blank.gif")),postscript:function(_b,_c){this.create(_b,_c);},create:function(_d,_e){this.srcNodeRef=dojo.byId(_e);this._connects=[];this._deferredConnects=dojo.clone(this._deferredConnects);for(var _f in this.attributeMap){delete this._deferredConnects[_f];}for(_f in this._deferredConnects){if(this[_f]!==dijit._connectOnUseEventHandler){delete this._deferredConnects[_f];}}if(this.srcNodeRef&&(typeof this.srcNodeRef.id=="string")){this.id=this.srcNodeRef.id;}if(_d){this.params=_d;dojo.mixin(this,_d);}this.postMixInProperties();if(!this.id){this.id=dijit.getUniqueId(this.declaredClass.replace(/\./g,"_"));}dijit.registry.add(this);this.buildRendering();if(this.domNode){this._applyAttributes();for(_f in this.params){this._onConnect(_f);}}if(this.domNode){this.domNode.setAttribute("widgetId",this.id);}this.postCreate();if(this.srcNodeRef&&!this.srcNodeRef.parentNode){delete this.srcNodeRef;}this._created=true;},_applyAttributes:function(){var _10=function(_11,_12){if((_12.params&&_11 in _12.params)||_12[_11]){_12.attr(_11,_12[_11]);}};for(var _13 in this.attributeMap){_10(_13,this);}dojo.forEach(_5(this.declaredClass),function(a){if(!(a in this.attributeMap)){_10(a,this);}},this);},postMixInProperties:function(){},buildRendering:function(){this.domNode=this.srcNodeRef||dojo.doc.createElement("div");},postCreate:function(){},startup:function(){this._started=true;},destroyRecursive:function(_15){this.destroyDescendants(_15);this.destroy(_15);},destroy:function(_16){this.uninitialize();dojo.forEach(this._connects,function(_17){dojo.forEach(_17,dojo.disconnect);});dojo.forEach(this._supportingWidgets||[],function(w){if(w.destroy){w.destroy();}});this.destroyRendering(_16);dijit.registry.remove(this.id);},destroyRendering:function(_19){if(this.bgIframe){this.bgIframe.destroy(_19);delete this.bgIframe;}if(this.domNode){if(!_19){dojo._destroyElement(this.domNode);}delete this.domNode;}if(this.srcNodeRef){if(!_19){dojo._destroyElement(this.srcNodeRef);}delete this.srcNodeRef;}},destroyDescendants:function(_1a){dojo.forEach(this.getDescendants(),function(_1b){if(_1b.destroy){_1b.destroy(_1a);}});},uninitialize:function(){return false;},onFocus:function(){},onBlur:function(){},_onFocus:function(e){this.onFocus();},_onBlur:function(){this.onBlur();},_onConnect:function(_1d){if(_1d in this._deferredConnects){var _1e=this[this._deferredConnects[_1d]||"domNode"];this.connect(_1e,_1d.toLowerCase(),this[_1d]);delete this._deferredConnects[_1d];}},_setClassAttr:function(_1f){var _20=this[this.attributeMap["class"]||"domNode"];dojo.removeClass(_20,this["class"]);this["class"]=_1f;dojo.addClass(_20,_1f);},_setStyleAttr:function(_21){var _22=this[this.attributeMap["style"]||"domNode"];if(_22.style.cssText){_22.style.cssText+="; "+_21;}else{_22.style.cssText=_21;}this["style"]=_21;},setAttribute:function(_23,_24){dojo.deprecated(this.declaredClass+"::setAttribute() is deprecated. Use attr() instead.","","2.0");this.attr(_23,_24);},_attrToDom:function(_25,_26){var _27=this.attributeMap[_25];dojo.forEach(dojo.isArray(_27)?_27:[_27],function(_28){var _29=this[_28.node||_28||"domNode"];var _2a=_28.type||"attribute";switch(_2a){case "attribute":if(dojo.isFunction(_26)){_26=dojo.hitch(this,_26);}if(/^on[A-Z][a-zA-Z]*$/.test(_25)){_25=_25.toLowerCase();}dojo.attr(_29,_25,_26);break;case "innerHTML":_29.innerHTML=_26;break;case "class":dojo.removeClass(_29,this[_25]);dojo.addClass(_29,_26);break;}},this);this[_25]=_26;},attr:function(_2b,_2c){var _2d=arguments.length;if(_2d==1&&!dojo.isString(_2b)){for(var x in _2b){this.attr(x,_2b[x]);}return this;}var _2f=this._getAttrNames(_2b);if(_2d==2){if(this[_2f.s]){return this[_2f.s](_2c)||this;}else{if(_2b in this.attributeMap){this._attrToDom(_2b,_2c);}this[_2b]=_2c;}return this;}else{if(this[_2f.g]){return this[_2f.g]();}else{return this[_2b];}}},_attrPairNames:{},_getAttrNames:function(_30){var apn=this._attrPairNames;if(apn[_30]){return apn[_30];}var uc=_30.charAt(0).toUpperCase()+_30.substr(1);return apn[_30]={n:_30+"Node",s:"_set"+uc+"Attr",g:"_get"+uc+"Attr"};},toString:function(){return "[Widget "+this.declaredClass+", "+(this.id||"NO ID")+"]";},getDescendants:function(){if(this.containerNode){var _33=dojo.query("[widgetId]",this.containerNode);return _33.map(dijit.byNode);}else{return [];}},nodesWithKeyClick:["input","button"],connect:function(obj,_35,_36){var d=dojo;var dco=d.hitch(d,"connect",obj);var _39=[];if(_35=="ondijitclick"){if(!this.nodesWithKeyClick[obj.nodeName]){var m=d.hitch(this,_36);_39.push(dco("onkeydown",this,function(e){if(!d.isFF&&e.keyCode==d.keys.ENTER){return m(e);}else{if(e.keyCode==d.keys.SPACE){d.stopEvent(e);}}}),dco("onkeyup",this,function(e){if(e.keyCode==d.keys.SPACE){return m(e);}}));if(d.isFF){_39.push(dco("onkeypress",this,function(e){if(e.keyCode==d.keys.ENTER){return m(e);}}));}}_35="onclick";}_39.push(dco(_35,this,_36));this._connects.push(_39);return _39;},disconnect:function(_3e){for(var i=0;i<this._connects.length;i++){if(this._connects[i]==_3e){dojo.forEach(_3e,dojo.disconnect);this._connects.splice(i,1);return;}}},isLeftToRight:function(){return dojo._isBodyLtr();},isFocusable:function(){return this.focus&&(dojo.style(this.domNode,"display")!="none");},placeAt:function(_40,_41){if(_40["declaredClass"]&&_40["addChild"]){_40.addChild(this,_41);}else{dojo.place(this.domNode,_40,_41);}return this;}});})();}�������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000155�00000000000�011566� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/Editor.js��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/E0000644�0000000�0000000�00000020447�11360615634�027156� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* Copyright (c) 2004-2008, The Dojo Foundation All Rights Reserved. Available via Academic Free License >= 2.1 OR the modified BSD license. see: http://dojotoolkit.org/license for details */ if(!dojo._hasResource["dijit.Editor"]){dojo._hasResource["dijit.Editor"]=true;dojo.provide("dijit.Editor");dojo.require("dijit._editor.RichText");dojo.require("dijit.Toolbar");dojo.require("dijit._editor._Plugin");dojo.require("dijit._editor.plugins.EnterKeyHandling");dojo.require("dijit._editor.range");dojo.require("dijit._Container");dojo.require("dojo.i18n");dojo.requireLocalization("dijit._editor","commands",null,"ar,ca,ROOT,cs,da,de,el,es,fi,fr,he,hu,it,ja,ko,nb,nl,pl,pt,pt-pt,ru,sk,sl,sv,th,tr,zh,zh-tw");dojo.declare("dijit.Editor",dijit._editor.RichText,{plugins:null,extraPlugins:null,constructor:function(){if(!dojo.isArray(this.plugins)){this.plugins=["undo","redo","|","cut","copy","paste","|","bold","italic","underline","strikethrough","|","insertOrderedList","insertUnorderedList","indent","outdent","|","justifyLeft","justifyRight","justifyCenter","justifyFull","dijit._editor.plugins.EnterKeyHandling"];}this._plugins=[];this._editInterval=this.editActionInterval*1000;if(dojo.isIE){this.events.push("onBeforeDeactivate");}},postCreate:function(){if(this.customUndo){dojo["require"]("dijit._editor.range");this._steps=this._steps.slice(0);this._undoedSteps=this._undoedSteps.slice(0);}if(dojo.isArray(this.extraPlugins)){this.plugins=this.plugins.concat(this.extraPlugins);}this.inherited(arguments);this.commands=dojo.i18n.getLocalization("dijit._editor","commands",this.lang);if(!this.toolbar){this.toolbar=new dijit.Toolbar({});dojo.place(this.toolbar.domNode,this.editingArea,"before");}dojo.forEach(this.plugins,this.addPlugin,this);this.onNormalizedDisplayChanged();this.toolbar.startup();},destroy:function(){dojo.forEach(this._plugins,function(p){if(p&&p.destroy){p.destroy();}});this._plugins=[];this.toolbar.destroy();delete this.toolbar;this.inherited(arguments);},addPlugin:function(_2,_3){var _4=dojo.isString(_2)?{name:_2}:_2;if(!_4.setEditor){var o={"args":_4,"plugin":null,"editor":this};dojo.publish(dijit._scopeName+".Editor.getPlugin",[o]);if(!o.plugin){var pc=dojo.getObject(_4.name);if(pc){o.plugin=new pc(_4);}}if(!o.plugin){console.warn("Cannot find plugin",_2);return;}_2=o.plugin;}if(arguments.length>1){this._plugins[_3]=_2;}else{this._plugins.push(_2);}_2.setEditor(this);if(dojo.isFunction(_2.setToolbar)){_2.setToolbar(this.toolbar);}},startup:function(){},resize:function(){dijit.layout._LayoutWidget.prototype.resize.apply(this,arguments);},layout:function(){this.editingArea.style.height=(this._contentBox.h-dojo.marginBox(this.toolbar.domNode).h)+"px";if(this.iframe){this.iframe.style.height="100%";}this._layoutMode=true;},onBeforeDeactivate:function(e){if(this.customUndo){this.endEditing(true);}this._saveSelection();},customUndo:dojo.isIE,editActionInterval:3,beginEditing:function(_8){if(!this._inEditing){this._inEditing=true;this._beginEditing(_8);}if(this.editActionInterval>0){if(this._editTimer){clearTimeout(this._editTimer);}this._editTimer=setTimeout(dojo.hitch(this,this.endEditing),this._editInterval);}},_steps:[],_undoedSteps:[],execCommand:function(_9){if(this.customUndo&&(_9=="undo"||_9=="redo")){return this[_9]();}else{if(this.customUndo){this.endEditing();this._beginEditing();}try{var r=this.inherited("execCommand",arguments);if(dojo.isSafari&&_9=="paste"&&!r){var su=dojo.string.substitute,_c=navigator.userAgent.indexOf("Macintosh")!=-1;alert(su(this.commands.systemShortcut,[this.commands[_9],su(this.commands[_c?"appleKey":"ctrlKey"],["V"])]));}}catch(e){if(dojo.isMoz&&/copy|cut|paste/.test(_9)){var _d=dojo.string.substitute,_e={cut:"X",copy:"C",paste:"V"},_f=navigator.userAgent.indexOf("Macintosh")!=-1;alert(_d(this.commands.systemShortcutFF,[this.commands[_9],_d(this.commands[_f?"appleKey":"ctrlKey"],[_e[_9]])]));}r=false;}if(this.customUndo){this._endEditing();}return r;}},queryCommandEnabled:function(cmd){if(this.customUndo&&(cmd=="undo"||cmd=="redo")){return cmd=="undo"?(this._steps.length>1):(this._undoedSteps.length>0);}else{return this.inherited("queryCommandEnabled",arguments);}},focus:function(){var _11=0;if(this._savedSelection&&dojo.isIE){_11=dijit._curFocus!=this.editNode;}this.inherited(arguments);if(_11){this._restoreSelection();}},_moveToBookmark:function(b){var _13=b;if(dojo.isIE){if(dojo.isArray(b)){_13=[];dojo.forEach(b,function(n){_13.push(dijit.range.getNode(n,this.editNode));},this);}}else{var r=dijit.range.create();r.setStart(dijit.range.getNode(b.startContainer,this.editNode),b.startOffset);r.setEnd(dijit.range.getNode(b.endContainer,this.editNode),b.endOffset);_13=r;}dojo.withGlobal(this.window,"moveToBookmark",dijit,[_13]);},_changeToStep:function(_16,to){this.setValue(to.text);var b=to.bookmark;if(!b){return;}this._moveToBookmark(b);},undo:function(){this.endEditing(true);var s=this._steps.pop();if(this._steps.length>0){this.focus();this._changeToStep(s,this._steps[this._steps.length-1]);this._undoedSteps.push(s);this.onDisplayChanged();return true;}return false;},redo:function(){this.endEditing(true);var s=this._undoedSteps.pop();if(s&&this._steps.length>0){this.focus();this._changeToStep(this._steps[this._steps.length-1],s);this._steps.push(s);this.onDisplayChanged();return true;}return false;},endEditing:function(_1b){if(this._editTimer){clearTimeout(this._editTimer);}if(this._inEditing){this._endEditing(_1b);this._inEditing=false;}},_getBookmark:function(){var b=dojo.withGlobal(this.window,dijit.getBookmark);var tmp=[];if(dojo.isIE){if(dojo.isArray(b)){dojo.forEach(b,function(n){tmp.push(dijit.range.getIndex(n,this.editNode).o);},this);b=tmp;}}else{tmp=dijit.range.getIndex(b.startContainer,this.editNode).o;b={startContainer:tmp,startOffset:b.startOffset,endContainer:b.endContainer===b.startContainer?tmp:dijit.range.getIndex(b.endContainer,this.editNode).o,endOffset:b.endOffset};}return b;},_beginEditing:function(cmd){if(this._steps.length===0){this._steps.push({"text":this.savedContent,"bookmark":this._getBookmark()});}},_endEditing:function(_20){var v=this.getValue(true);this._undoedSteps=[];this._steps.push({text:v,bookmark:this._getBookmark()});},onKeyDown:function(e){if(!dojo.isIE&&!this.iframe&&e.keyCode==dojo.keys.TAB&&!this.tabIndent){this._saveSelection();}if(!this.customUndo){this.inherited("onKeyDown",arguments);return;}var k=e.keyCode,ks=dojo.keys;if(e.ctrlKey&&!e.altKey){if(k==90||k==122){dojo.stopEvent(e);this.undo();return;}else{if(k==89||k==121){dojo.stopEvent(e);this.redo();return;}}}this.inherited("onKeyDown",arguments);switch(k){case ks.ENTER:case ks.BACKSPACE:case ks.DELETE:this.beginEditing();break;case 88:case 86:if(e.ctrlKey&&!e.altKey&&!e.metaKey){this.endEditing();if(e.keyCode==88){this.beginEditing("cut");setTimeout(dojo.hitch(this,this.endEditing),1);}else{this.beginEditing("paste");setTimeout(dojo.hitch(this,this.endEditing),1);}break;}default:if(!e.ctrlKey&&!e.altKey&&!e.metaKey&&(e.keyCode<dojo.keys.F1||e.keyCode>dojo.keys.F15)){this.beginEditing();break;}case ks.ALT:this.endEditing();break;case ks.UP_ARROW:case ks.DOWN_ARROW:case ks.LEFT_ARROW:case ks.RIGHT_ARROW:case ks.HOME:case ks.END:case ks.PAGE_UP:case ks.PAGE_DOWN:this.endEditing(true);break;case ks.CTRL:case ks.SHIFT:case ks.TAB:break;}},_onBlur:function(){this.inherited("_onBlur",arguments);this.endEditing(true);},_saveSelection:function(){this._savedSelection=this._getBookmark();},_restoreSelection:function(){if(this._savedSelection){this._moveToBookmark(this._savedSelection);delete this._savedSelection;}},_onFocus:function(){this._restoreSelection();this.inherited(arguments);},onClick:function(){this.endEditing(true);this.inherited("onClick",arguments);}});dojo.subscribe(dijit._scopeName+".Editor.getPlugin",null,function(o){if(o.plugin){return;}var _26=o.args,p;var _p=dijit._editor._Plugin;var _29=_26.name;switch(_29){case "undo":case "redo":case "cut":case "copy":case "paste":case "insertOrderedList":case "insertUnorderedList":case "indent":case "outdent":case "justifyCenter":case "justifyFull":case "justifyLeft":case "justifyRight":case "delete":case "selectAll":case "removeFormat":case "unlink":case "insertHorizontalRule":p=new _p({command:_29});break;case "bold":case "italic":case "underline":case "strikethrough":case "subscript":case "superscript":p=new _p({buttonClass:dijit.form.ToggleButton,command:_29});break;case "|":p=new _p({button:new dijit.ToolbarSeparator()});}o.plugin=p;});}�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000161�00000000000�011563� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/_Container.js����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/_0000644�0000000�0000000�00000012253�11360615632�027202� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* Copyright (c) 2004-2008, The Dojo Foundation All Rights Reserved. Available via Academic Free License >= 2.1 OR the modified BSD license. see: http://dojotoolkit.org/license for details */ if(!dojo._hasResource["dijit._Container"]){dojo._hasResource["dijit._Container"]=true;dojo.provide("dijit._Container");dojo.declare("dijit._Contained",null,{getParent:function(){for(var p=this.domNode.parentNode;p;p=p.parentNode){var id=p.getAttribute&&p.getAttribute("widgetId");if(id){var _3=dijit.byId(id);return _3.isContainer?_3:null;}}return null;},_getSibling:function(_4){var _5=this.domNode;do{_5=_5[_4+"Sibling"];}while(_5&&_5.nodeType!=1);if(!_5){return null;}var id=_5.getAttribute("widgetId");return dijit.byId(id);},getPreviousSibling:function(){return this._getSibling("previous");},getNextSibling:function(){return this._getSibling("next");},getIndexInParent:function(){var p=this.getParent();if(!p||!p.getIndexOfChild){return -1;}return p.getIndexOfChild(this);}});dojo.declare("dijit._Container",null,{isContainer:true,buildRendering:function(){this.inherited(arguments);if(!this.containerNode){this.containerNode=this.domNode;}},addChild:function(_8,_9){var _a=this.containerNode;if(_9&&typeof _9=="number"){var _b=dojo.query("> [widgetId]",_a);if(_b&&_b.length>=_9){_a=_b[_9-1];_9="after";}}dojo.place(_8.domNode,_a,_9);if(this._started&&!_8._started){_8.startup();}},removeChild:function(_c){if(typeof _c=="number"&&_c>0){_c=this.getChildren()[_c];}if(!_c||!_c.domNode){return;}var _d=_c.domNode;_d.parentNode.removeChild(_d);},_nextElement:function(_e){do{_e=_e.nextSibling;}while(_e&&_e.nodeType!=1);return _e;},_firstElement:function(_f){_f=_f.firstChild;if(_f&&_f.nodeType!=1){_f=this._nextElement(_f);}return _f;},getChildren:function(){return dojo.query("> [widgetId]",this.containerNode).map(dijit.byNode);},hasChildren:function(){return !!this._firstElement(this.containerNode);},destroyDescendants:function(_10){dojo.forEach(this.getChildren(),function(_11){_11.destroyRecursive(_10);});},_getSiblingOfChild:function(_12,dir){var _14=_12.domNode;var _15=(dir>0?"nextSibling":"previousSibling");do{_14=_14[_15];}while(_14&&(_14.nodeType!=1||!dijit.byNode(_14)));return _14?dijit.byNode(_14):null;},getIndexOfChild:function(_16){var _17=this.getChildren();for(var i=0,c;c=_17[i];i++){if(c==_16){return i;}}return -1;}});dojo.declare("dijit._KeyNavContainer",[dijit._Container],{_keyNavCodes:{},connectKeyNavHandlers:function(_1a,_1b){var _1c=this._keyNavCodes={};var _1d=dojo.hitch(this,this.focusPrev);var _1e=dojo.hitch(this,this.focusNext);dojo.forEach(_1a,function(_1f){_1c[_1f]=_1d;});dojo.forEach(_1b,function(_20){_1c[_20]=_1e;});this.connect(this.domNode,"onkeypress","_onContainerKeypress");this.connect(this.domNode,"onfocus","_onContainerFocus");},startupKeyNavChildren:function(){dojo.forEach(this.getChildren(),dojo.hitch(this,"_startupChild"));},addChild:function(_21,_22){dijit._KeyNavContainer.superclass.addChild.apply(this,arguments);this._startupChild(_21);},focus:function(){this.focusFirstChild();},focusFirstChild:function(){this.focusChild(this._getFirstFocusableChild());},focusNext:function(){if(this.focusedChild&&this.focusedChild.hasNextFocalNode&&this.focusedChild.hasNextFocalNode()){this.focusedChild.focusNext();return;}var _23=this._getNextFocusableChild(this.focusedChild,1);if(_23.getFocalNodes){this.focusChild(_23,_23.getFocalNodes()[0]);}else{this.focusChild(_23);}},focusPrev:function(){if(this.focusedChild&&this.focusedChild.hasPrevFocalNode&&this.focusedChild.hasPrevFocalNode()){this.focusedChild.focusPrev();return;}var _24=this._getNextFocusableChild(this.focusedChild,-1);if(_24.getFocalNodes){var _25=_24.getFocalNodes();this.focusChild(_24,_25[_25.length-1]);}else{this.focusChild(_24);}},focusChild:function(_26,_27){if(_26){if(this.focusedChild&&_26!==this.focusedChild){this._onChildBlur(this.focusedChild);}this.focusedChild=_26;if(_27&&_26.focusFocalNode){_26.focusFocalNode(_27);}else{_26.focus();}}},_startupChild:function(_28){if(_28.getFocalNodes){dojo.forEach(_28.getFocalNodes(),function(_29){dojo.attr(_29,"tabindex",-1);this._connectNode(_29);},this);}else{var _2a=_28.focusNode||_28.domNode;if(_28.isFocusable()){dojo.attr(_2a,"tabindex",-1);}this._connectNode(_2a);}},_connectNode:function(_2b){this.connect(_2b,"onfocus","_onNodeFocus");this.connect(_2b,"onblur","_onNodeBlur");},_onContainerFocus:function(evt){if(evt.target===this.domNode){this.focusFirstChild();}},_onContainerKeypress:function(evt){if(evt.ctrlKey||evt.altKey){return;}var _2e=this._keyNavCodes[evt.charOrCode];if(_2e){_2e();dojo.stopEvent(evt);}},_onNodeFocus:function(evt){dojo.attr(this.domNode,"tabindex",-1);var _30=dijit.getEnclosingWidget(evt.target);if(_30&&_30.isFocusable()){this.focusedChild=_30;}dojo.stopEvent(evt);},_onNodeBlur:function(evt){if(this.tabIndex){dojo.attr(this.domNode,"tabindex",this.tabIndex);}dojo.stopEvent(evt);},_onChildBlur:function(_32){},_getFirstFocusableChild:function(){return this._getNextFocusableChild(null,1);},_getNextFocusableChild:function(_33,dir){if(_33){_33=this._getSiblingOfChild(_33,dir);}var _35=this.getChildren();for(var i=0;i<_35.length;i++){if(!_33){_33=_35[(dir>0)?0:(_35.length-1)];}if(_33.isFocusable()){return _33;}_33=this._getSiblingOfChild(_33,dir);}return null;}});}�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000152�00000000000�011563� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/_tree/�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/_0000755�0000000�0000000�00000000000�11360615640�027174� 5����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000163�00000000000�011565� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/_tree/Node.html��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/_0000644�0000000�0000000�00000001630�11360615640�027176� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������<div class="dijitTreeNode" waiRole="presentation" ><div dojoAttachPoint="rowNode" class="dijitTreeRow" waiRole="presentation" ><img src="${_blankGif}" alt="" dojoAttachPoint="expandoNode" class="dijitTreeExpando" waiRole="presentation" ><span dojoAttachPoint="expandoNodeText" class="dijitExpandoText" waiRole="presentation" ></span ><span dojoAttachPoint="contentNode" dojoAttachEvent="onmouseenter:_onMouseEnter, onmouseleave:_onMouseLeave" class="dijitTreeContent" waiRole="presentation"> <img src="${_blankGif}" alt="" dojoAttachPoint="iconNode" class="dijitTreeIcon" waiRole="presentation" ><span dojoAttachPoint="labelNode" class="dijitTreeLabel" wairole="treeitem" tabindex="-1" waiState="selected-false" dojoAttachEvent="onfocus:_onNodeFocus"></span> </span ></div> <div dojoAttachPoint="containerNode" class="dijitTreeContainer" waiRole="presentation" style="display: none;"></div> </div> ��������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000171�00000000000�011564� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/_tree/dndContainer.js��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/_0000644�0000000�0000000�00000004410�11360615632�027176� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* Copyright (c) 2004-2008, The Dojo Foundation All Rights Reserved. Available via Academic Free License >= 2.1 OR the modified BSD license. see: http://dojotoolkit.org/license for details */ if(!dojo._hasResource["dijit._tree.dndContainer"]){dojo._hasResource["dijit._tree.dndContainer"]=true;dojo.provide("dijit._tree.dndContainer");dojo.require("dojo.dnd.common");dojo.require("dojo.dnd.Container");dojo.declare("dijit._tree.dndContainer",null,{constructor:function(_1,_2){this.tree=_1;this.node=_1.domNode;dojo.mixin(this,_2);this.map={};this.current=null;this.containerState="";dojo.addClass(this.node,"dojoDndContainer");if(!(_2&&_2._skipStartup)){this.startup();}this.events=[dojo.connect(this.node,"onmouseover",this,"onMouseOver"),dojo.connect(this.node,"onmouseout",this,"onMouseOut"),dojo.connect(this.node,"ondragstart",dojo,"stopEvent"),dojo.connect(this.node,"onselectstart",dojo,"stopEvent")];},getItem:function(_3){return this.selection[_3];},destroy:function(){dojo.forEach(this.events,dojo.disconnect);this.node=this.parent=this.current;},onMouseOver:function(e){var rt=e.relatedTarget;while(rt){if(rt==this.node){break;}try{rt=rt.parentNode;}catch(x){rt=null;}}if(!rt){this._changeState("Container","Over");this.onOverEvent();}var n=this._getChildByEvent(e);if(this.current==n){return;}if(this.current){this._removeItemClass(this.current,"Over");}if(n){this._addItemClass(n,"Over");}this.current=n;},onMouseOut:function(e){for(var n=e.relatedTarget;n;){if(n==this.node){return;}try{n=n.parentNode;}catch(x){n=null;}}if(this.current){this._removeItemClass(this.current,"Over");this.current=null;}this._changeState("Container","");this.onOutEvent();},_changeState:function(_9,_a){var _b="dojoDnd"+_9;var _c=_9.toLowerCase()+"State";dojo.removeClass(this.node,_b+this[_c]);dojo.addClass(this.node,_b+_a);this[_c]=_a;},_getChildByEvent:function(e){var _e=e.target;if(_e){for(var _f=_e.parentNode;_f;_e=_f,_f=_e.parentNode){if(dojo.hasClass(_e,"dijitTreeContent")){return _e;}}}return null;},markupFactory:function(_10,_11){_11._skipStartup=true;return new dijit._tree.dndContainer(_10,_11);},_addItemClass:function(_12,_13){dojo.addClass(_12,"dojoDndItem"+_13);},_removeItemClass:function(_14,_15){dojo.removeClass(_14,"dojoDndItem"+_15);},onOverEvent:function(){},onOutEvent:function(){}});}��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000162�00000000000�011564� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/_tree/model.js���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/_0000644�0000000�0000000�00000001000�11360615636�027172� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* Copyright (c) 2004-2008, The Dojo Foundation All Rights Reserved. Available via Academic Free License >= 2.1 OR the modified BSD license. see: http://dojotoolkit.org/license for details */ dojo.declare("dijit.tree.model",null,{destroy:function(){},getRoot:function(_1){},mayHaveChildren:function(_2){},getChildren:function(_3,_4){},getIdentity:function(_5){},getLabel:function(_6){},newItem:function(_7,_8){},pasteItem:function(_9,_a,_b,_c){},onChange:function(_d){},onChildrenChange:function(_e,_f){}});././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000166�00000000000�011570� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/_tree/dndSource.js�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/_0000644�0000000�0000000�00000013574�11360615634�027213� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* Copyright (c) 2004-2008, The Dojo Foundation All Rights Reserved. Available via Academic Free License >= 2.1 OR the modified BSD license. see: http://dojotoolkit.org/license for details */ if(!dojo._hasResource["dijit._tree.dndSource"]){dojo._hasResource["dijit._tree.dndSource"]=true;dojo.provide("dijit._tree.dndSource");dojo.require("dijit._tree.dndSelector");dojo.require("dojo.dnd.Manager");dojo.declare("dijit._tree.dndSource",dijit._tree.dndSelector,{isSource:true,copyOnly:false,skipForm:false,dragThreshold:0,accept:["text"],constructor:function(_1,_2){if(!_2){_2={};}dojo.mixin(this,_2);this.isSource=typeof _2.isSource=="undefined"?true:_2.isSource;var _3=_2.accept instanceof Array?_2.accept:["text"];this.accept=null;if(_3.length){this.accept={};for(var i=0;i<_3.length;++i){this.accept[_3[i]]=1;}}this.isDragging=false;this.mouseDown=false;this.targetAnchor=null;this.targetBox=null;this.before=true;this._lastX=0;this._lastY=0;this.sourceState="";if(this.isSource){dojo.addClass(this.node,"dojoDndSource");}this.targetState="";if(this.accept){dojo.addClass(this.node,"dojoDndTarget");}if(this.horizontal){dojo.addClass(this.node,"dojoDndHorizontal");}this.topics=[dojo.subscribe("/dnd/source/over",this,"onDndSourceOver"),dojo.subscribe("/dnd/start",this,"onDndStart"),dojo.subscribe("/dnd/drop",this,"onDndDrop"),dojo.subscribe("/dnd/cancel",this,"onDndCancel")];},startup:function(){},checkAcceptance:function(_5,_6){return true;},copyState:function(_7){return this.copyOnly||_7;},destroy:function(){this.inherited("destroy",arguments);dojo.forEach(this.topics,dojo.unsubscribe);this.targetAnchor=null;},markupFactory:function(_8,_9){_8._skipStartup=true;return new dijit._tree.dndSource(_9,_8);},onMouseMove:function(e){if(this.isDragging&&this.targetState=="Disabled"){return;}this.inherited("onMouseMove",arguments);var m=dojo.dnd.manager();if(this.isDragging){if(this.allowBetween){var _c=false;if(this.current){if(!this.targetBox||this.targetAnchor!=this.current){this.targetBox={xy:dojo.coords(this.current,true),w:this.current.offsetWidth,h:this.current.offsetHeight};}if(this.horizontal){_c=(e.pageX-this.targetBox.xy.x)<(this.targetBox.w/2);}else{_c=(e.pageY-this.targetBox.xy.y)<(this.targetBox.h/2);}}if(this.current!=this.targetAnchor||_c!=this.before){this._markTargetAnchor(_c);m.canDrop(!this.current||m.source!=this||!(this.current.id in this.selection));}}}else{if(this.mouseDown&&this.isSource&&(Math.abs(e.pageX-this._lastX)>=this.dragThreshold||Math.abs(e.pageY-this._lastY)>=this.dragThreshold)){var n=this.getSelectedNodes();var _e=[];for(var i in n){_e.push(n[i]);}if(_e.length){m.startDrag(this,_e,this.copyState(dojo.dnd.getCopyKeyState(e)));}}}},onMouseDown:function(e){this.mouseDown=true;this.mouseButton=e.button;this._lastX=e.pageX;this._lastY=e.pageY;this.inherited("onMouseDown",arguments);},onMouseUp:function(e){if(this.mouseDown){this.mouseDown=false;this.inherited("onMouseUp",arguments);}},onMouseOver:function(e){var rt=e.relatedTarget;while(rt){if(rt==this.node){break;}try{rt=rt.parentNode;}catch(x){rt=null;}}if(!rt){this._changeState("Container","Over");this.onOverEvent();}var n=this._getChildByEvent(e);if(this.current==n){return;}if(this.current){this._removeItemClass(this.current,"Over");}var m=dojo.dnd.manager();if(n){this._addItemClass(n,"Over");if(this.isDragging){if(this.checkItemAcceptance(n,m.source)){m.canDrop(this.targetState!="Disabled"&&(!this.current||m.source!=this||!(n in this.selection)));}}}else{if(this.isDragging){m.canDrop(false);}}this.current=n;},checkItemAcceptance:function(_16,_17){return true;},onDndSourceOver:function(_18){if(this!=_18){this.mouseDown=false;if(this.targetAnchor){this._unmarkTargetAnchor();}}else{if(this.isDragging){var m=dojo.dnd.manager();m.canDrop(false);}}},onDndStart:function(_1a,_1b,_1c){if(this.isSource){this._changeState("Source",this==_1a?(_1c?"Copied":"Moved"):"");}var _1d=this.checkAcceptance(_1a,_1b);this._changeState("Target",_1d?"":"Disabled");if(_1d){dojo.dnd.manager().overSource(this);}this.isDragging=true;},itemCreator:function(_1e){return dojo.map(_1e,function(_1f){return {"id":_1f.id,"name":_1f.textContent||_1f.innerText||""};});},onDndDrop:function(_20,_21,_22){if(this.containerState=="Over"){var _23=this.tree,_24=_23.model,_25=this.current,_26=false;this.isDragging=false;var _27=dijit.getEnclosingWidget(_25),_28=(_27&&_27.item)||_23.item;var _29;if(_20!=this){_29=this.itemCreator(_21,_25);}dojo.forEach(_21,function(_2a,idx){if(_20==this){var _2c=dijit.getEnclosingWidget(_2a),_2d=_2c.item,_2e=_2c.getParent().item;_24.pasteItem(_2d,_2e,_28,_22);}else{_24.newItem(_29[idx],_28);}},this);this.tree._expandNode(_27);}this.onDndCancel();},onDndCancel:function(){if(this.targetAnchor){this._unmarkTargetAnchor();this.targetAnchor=null;}this.before=true;this.isDragging=false;this.mouseDown=false;delete this.mouseButton;this._changeState("Source","");this._changeState("Target","");},onOverEvent:function(){this.inherited("onOverEvent",arguments);dojo.dnd.manager().overSource(this);},onOutEvent:function(){this.inherited("onOutEvent",arguments);dojo.dnd.manager().outSource(this);},_markTargetAnchor:function(_2f){if(this.current==this.targetAnchor&&this.before==_2f){return;}if(this.targetAnchor){this._removeItemClass(this.targetAnchor,this.before?"Before":"After");}this.targetAnchor=this.current;this.targetBox=null;this.before=_2f;if(this.targetAnchor){this._addItemClass(this.targetAnchor,this.before?"Before":"After");}},_unmarkTargetAnchor:function(){if(!this.targetAnchor){return;}this._removeItemClass(this.targetAnchor,this.before?"Before":"After");this.targetAnchor=null;this.targetBox=null;this.before=true;},_markDndStatus:function(_30){this._changeState("Source",_30?"Copied":"Moved");}});dojo.declare("dijit._tree.dndTarget",dijit._tree.dndSource,{constructor:function(_31,_32){this.isSource=false;dojo.removeClass(this.node,"dojoDndSource");},markupFactory:function(_33,_34){_33._skipStartup=true;return new dijit._tree.dndTarget(_34,_33);}});}������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000163�00000000000�011565� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/_tree/Tree.html��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/_0000644�0000000�0000000�00000000162�11360615640�027175� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������<div class="dijitTreeContainer" waiRole="tree" dojoAttachEvent="onclick:_onClick,onkeypress:_onKeyPress"> </div> ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000170�00000000000�011563� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/_tree/dndSelector.js���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/_0000644�0000000�0000000�00000006251�11360615632�027203� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* Copyright (c) 2004-2008, The Dojo Foundation All Rights Reserved. Available via Academic Free License >= 2.1 OR the modified BSD license. see: http://dojotoolkit.org/license for details */ if(!dojo._hasResource["dijit._tree.dndSelector"]){dojo._hasResource["dijit._tree.dndSelector"]=true;dojo.provide("dijit._tree.dndSelector");dojo.require("dojo.dnd.common");dojo.require("dijit._tree.dndContainer");dojo.declare("dijit._tree.dndSelector",dijit._tree.dndContainer,{constructor:function(_1,_2){this.selection={};this.anchor=null;this.simpleSelection=false;this.events.push(dojo.connect(this.tree.domNode,"onmousedown",this,"onMouseDown"),dojo.connect(this.tree.domNode,"onmouseup",this,"onMouseUp"));},singular:false,getSelectedItems:function(){var _3=[];for(var i in this.selection){_3.push(dijit.getEnclosingWidget(this.selection[i]).item);}return _3;},getSelectedNodes:function(){return this.selection;},selectNone:function(){return this._removeSelection()._removeAnchor();},insertItems:function(_5,_6){},destroy:function(){dijit._tree.dndSelector.superclass.destroy.call(this);this.selection=this.anchor=null;},onMouseDown:function(e){if(!this.current){return;}var _8=dijit.getEnclosingWidget(this.current).item;var id=this.tree.model.getIdentity(_8);if(!this.current.id){this.current.id=id;}if(!this.current.type){this.current.type="data";}if(!this.singular&&!dojo.dnd.getCopyKeyState(e)&&!e.shiftKey&&(this.current.id in this.selection)){this.simpleSelection=true;dojo.stopEvent(e);return;}if(this.singular){if(this.anchor==this.current){if(dojo.dnd.getCopyKeyState(e)){this.selectNone();}}else{this.selectNone();this.anchor=this.current;this._addItemClass(this.anchor,"Anchor");this.selection[this.current.id]=this.current;}}else{if(!this.singular&&e.shiftKey){if(dojo.dnd.getCopyKeyState(e)){}else{}}else{if(dojo.dnd.getCopyKeyState(e)){if(this.anchor==this.current){delete this.selection[this.anchor.id];this._removeAnchor();}else{if(this.current.id in this.selection){this._removeItemClass(this.current,"Selected");delete this.selection[this.current.id];}else{if(this.anchor){this._removeItemClass(this.anchor,"Anchor");this._addItemClass(this.anchor,"Selected");}this.anchor=this.current;this._addItemClass(this.current,"Anchor");this.selection[this.current.id]=this.current;}}}else{var _8=dijit.getEnclosingWidget(this.current).item;var id=this.tree.model.getIdentity(_8);if(!(id in this.selection)){this.selectNone();this.anchor=this.current;this._addItemClass(this.current,"Anchor");this.selection[id]=this.current;}}}}dojo.stopEvent(e);},onMouseMove:function(){},onOverEvent:function(){this.onmousemoveEvent=dojo.connect(this.node,"onmousemove",this,"onMouseMove");},onMouseUp:function(e){if(!this.simpleSelection){return;}this.simpleSelection=false;this.selectNone();if(this.current){this.anchor=this.current;this._addItemClass(this.anchor,"Anchor");this.selection[this.current.id]=this.current;}},_removeSelection:function(){var e=dojo.dnd._empty;for(var i in this.selection){if(i in e){continue;}var _d=dojo.byId(i);if(_d){this._removeItemClass(_d,"Selected");}}this.selection={};return this;},_removeAnchor:function(){if(this.anchor){this._removeItemClass(this.anchor,"Anchor");this.anchor=null;}return this;}});}�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000153�00000000000�011564� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/Menu.js����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/M0000644�0000000�0000000�00000022421�11360615632�027156� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* Copyright (c) 2004-2008, The Dojo Foundation All Rights Reserved. Available via Academic Free License >= 2.1 OR the modified BSD license. see: http://dojotoolkit.org/license for details */ if(!dojo._hasResource["dijit.Menu"]){dojo._hasResource["dijit.Menu"]=true;dojo.provide("dijit.Menu");dojo.require("dijit._Widget");dojo.require("dijit._Container");dojo.require("dijit._Templated");dojo.declare("dijit.Menu",[dijit._Widget,dijit._Templated,dijit._KeyNavContainer],{constructor:function(){this._bindings=[];},templateString:"<table class=\"dijit dijitMenu dijitReset dijitMenuTable\" waiRole=\"menu\" dojoAttachEvent=\"onkeypress:_onKeyPress\">"+"<tbody class=\"dijitReset\" dojoAttachPoint=\"containerNode\"></tbody>"+"</table>",targetNodeIds:[],contextMenuForWindow:false,leftClickToOpen:false,parentMenu:null,popupDelay:500,_contextMenuWithMouse:false,postCreate:function(){if(this.contextMenuForWindow){this.bindDomNode(dojo.body());}else{dojo.forEach(this.targetNodeIds,this.bindDomNode,this);}this.connectKeyNavHandlers([dojo.keys.UP_ARROW],[dojo.keys.DOWN_ARROW]);},startup:function(){if(this._started){return;}dojo.forEach(this.getChildren(),function(_1){_1.startup();});this.startupKeyNavChildren();this.inherited(arguments);},onExecute:function(){},onCancel:function(_2){},_moveToPopup:function(_3){if(this.focusedChild&&this.focusedChild.popup&&!this.focusedChild.disabled){this.focusedChild._onClick(_3);}},_onKeyPress:function(_4){if(_4.ctrlKey||_4.altKey){return;}switch(_4.charOrCode){case dojo.keys.RIGHT_ARROW:this._moveToPopup(_4);dojo.stopEvent(_4);break;case dojo.keys.LEFT_ARROW:if(this.parentMenu){this.onCancel(false);}else{dojo.stopEvent(_4);}break;}},onItemHover:function(_5){this.focusChild(_5);if(this.focusedChild.popup&&!this.focusedChild.disabled&&!this.hover_timer){this.hover_timer=setTimeout(dojo.hitch(this,"_openPopup"),this.popupDelay);}},_onChildBlur:function(_6){dijit.popup.close(_6.popup);_6._blur();this._stopPopupTimer();},onItemUnhover:function(_7){},_stopPopupTimer:function(){if(this.hover_timer){clearTimeout(this.hover_timer);this.hover_timer=null;}},_getTopMenu:function(){for(var _8=this;_8.parentMenu;_8=_8.parentMenu){}return _8;},onItemClick:function(_9,_a){if(_9.disabled){return false;}if(_9.popup){if(!this.is_open){this._openPopup();}}else{this.onExecute();_9.onClick(_a);}},_iframeContentWindow:function(_b){var _c=dijit.getDocumentWindow(dijit.Menu._iframeContentDocument(_b))||dijit.Menu._iframeContentDocument(_b)["__parent__"]||(_b.name&&dojo.doc.frames[_b.name])||null;return _c;},_iframeContentDocument:function(_d){var _e=_d.contentDocument||(_d.contentWindow&&_d.contentWindow.document)||(_d.name&&dojo.doc.frames[_d.name]&&dojo.doc.frames[_d.name].document)||null;return _e;},bindDomNode:function(_f){_f=dojo.byId(_f);var win=dijit.getDocumentWindow(_f.ownerDocument);if(_f.tagName.toLowerCase()=="iframe"){win=this._iframeContentWindow(_f);_f=dojo.withGlobal(win,dojo.body);}var cn=(_f==dojo.body()?dojo.doc:_f);_f[this.id]=this._bindings.push([dojo.connect(cn,(this.leftClickToOpen)?"onclick":"oncontextmenu",this,"_openMyself"),dojo.connect(cn,"onkeydown",this,"_contextKey"),dojo.connect(cn,"onmousedown",this,"_contextMouse")]);},unBindDomNode:function(_12){var _13=dojo.byId(_12);if(_13){var bid=_13[this.id]-1,b=this._bindings[bid];dojo.forEach(b,dojo.disconnect);delete this._bindings[bid];}},_contextKey:function(e){this._contextMenuWithMouse=false;if(e.keyCode==dojo.keys.F10){dojo.stopEvent(e);if(e.shiftKey&&e.type=="keydown"){var _e={target:e.target,pageX:e.pageX,pageY:e.pageY};_e.preventDefault=_e.stopPropagation=function(){};window.setTimeout(dojo.hitch(this,function(){this._openMyself(_e);}),1);}}},_contextMouse:function(e){this._contextMenuWithMouse=true;},_openMyself:function(e){if(this.leftClickToOpen&&e.button>0){return;}dojo.stopEvent(e);var x,y;if(dojo.isSafari||this._contextMenuWithMouse){x=e.pageX;y=e.pageY;}else{var _1c=dojo.coords(e.target,true);x=_1c.x+10;y=_1c.y+10;}var _1d=this;var _1e=dijit.getFocus(this);function closeAndRestoreFocus(){dijit.focus(_1e);dijit.popup.close(_1d);};dijit.popup.open({popup:this,x:x,y:y,onExecute:closeAndRestoreFocus,onCancel:closeAndRestoreFocus,orient:this.isLeftToRight()?"L":"R"});this.focus();this._onBlur=function(){this.inherited("_onBlur",arguments);dijit.popup.close(this);};},onOpen:function(e){this.isShowingNow=true;},onClose:function(){this._stopPopupTimer();this.parentMenu=null;this.isShowingNow=false;this.currentPopup=null;if(this.focusedChild){this._onChildBlur(this.focusedChild);this.focusedChild=null;}},_openPopup:function(){this._stopPopupTimer();var _20=this.focusedChild;var _21=_20.popup;if(_21.isShowingNow){return;}_21.parentMenu=this;var _22=this;dijit.popup.open({parent:this,popup:_21,around:_20.domNode,orient:this.isLeftToRight()?{"TR":"TL","TL":"TR"}:{"TL":"TR","TR":"TL"},onCancel:function(){dijit.popup.close(_21);_20.focus();_22.currentPopup=null;}});this.currentPopup=_21;if(_21.focus){_21.focus();}},uninitialize:function(){dojo.forEach(this.targetNodeIds,this.unBindDomNode,this);this.inherited(arguments);}});dojo.declare("dijit.MenuItem",[dijit._Widget,dijit._Templated,dijit._Contained],{templateString:"<tr class=\"dijitReset dijitMenuItem\" dojoAttachPoint=\"focusNode\" waiRole=\"menuitem\" tabIndex=\"-1\""+"dojoAttachEvent=\"onmouseenter:_onHover,onmouseleave:_onUnhover,ondijitclick:_onClick\">"+"<td class=\"dijitReset\" waiRole=\"presentation\"><div class=\"dijitMenuItemIcon\" dojoAttachPoint=\"iconNode\"></div></td>"+"<td class=\"dijitReset dijitMenuItemLabel\" dojoAttachPoint=\"containerNode\"></td>"+"<td class=\"dijitReset dijitMenuArrowCell\" waiRole=\"presentation\">"+"<div dojoAttachPoint=\"arrowWrapper\" style=\"display: none\">"+"<div class=\"dijitMenuExpand\"></div>"+"<span class=\"dijitMenuExpandA11y\">+</span>"+"</div>"+"</td>"+"</tr>",attributeMap:dojo.mixin(dojo.clone(dijit._Widget.prototype.attributeMap),{label:{node:"containerNode",type:"innerHTML"},iconClass:{node:"iconNode",type:"class"}}),label:"",iconClass:"",disabled:false,_fillContent:function(_23){if(_23&&!("label" in this.params)){this.attr("label",_23.innerHTML);}},postCreate:function(){dojo.setSelectable(this.domNode,false);dojo.attr(this.containerNode,"id",this.id+"_text");dijit.setWaiState(this.domNode,"labelledby",this.id+"_text");},_onHover:function(){this.getParent().onItemHover(this);},_onUnhover:function(){this.getParent().onItemUnhover(this);},_onClick:function(evt){this.getParent().onItemClick(this,evt);dojo.stopEvent(evt);},onClick:function(evt){},focus:function(){dojo.addClass(this.domNode,"dijitMenuItemHover");try{dijit.focus(this.focusNode);}catch(e){}},_blur:function(){dojo.removeClass(this.domNode,"dijitMenuItemHover");},setLabel:function(_26){dojo.deprecated("dijit.MenuItem.setLabel() is deprecated. Use attr('label', ...) instead.","","2.0");this.attr("label",_26);},setDisabled:function(_27){dojo.deprecated("dijit.Menu.setDisabled() is deprecated. Use attr('disabled', bool) instead.","","2.0");this.attr("disabled",_27);},_setDisabledAttr:function(_28){this.disabled=_28;dojo[_28?"addClass":"removeClass"](this.domNode,"dijitMenuItemDisabled");dijit.setWaiState(this.focusNode,"disabled",_28?"true":"false");}});dojo.declare("dijit.PopupMenuItem",dijit.MenuItem,{_fillContent:function(){if(this.srcNodeRef){var _29=dojo.query("*",this.srcNodeRef);dijit.PopupMenuItem.superclass._fillContent.call(this,_29[0]);this.dropDownContainer=this.srcNodeRef;}},startup:function(){if(this._started){return;}this.inherited(arguments);if(!this.popup){var _2a=dojo.query("[widgetId]",this.dropDownContainer)[0];this.popup=dijit.byNode(_2a);}dojo.body().appendChild(this.popup.domNode);this.popup.domNode.style.display="none";dojo.style(this.arrowWrapper,"display","");dijit.setWaiState(this.focusNode,"haspopup","true");},destroyDescendants:function(){if(this.popup){this.popup.destroyRecursive();delete this.popup;}this.inherited(arguments);}});dojo.declare("dijit.MenuSeparator",[dijit._Widget,dijit._Templated,dijit._Contained],{templateString:"<tr class=\"dijitMenuSeparator\"><td colspan=3>"+"<div class=\"dijitMenuSeparatorTop\"></div>"+"<div class=\"dijitMenuSeparatorBottom\"></div>"+"</td></tr>",postCreate:function(){dojo.setSelectable(this.domNode,false);},isFocusable:function(){return false;}});dojo.declare("dijit.CheckedMenuItem",dijit.MenuItem,{templateString:"<tr class=\"dijitReset dijitMenuItem\" dojoAttachPoint=\"focusNode\" waiRole=\"menuitemcheckbox\" tabIndex=\"-1\""+"dojoAttachEvent=\"onmouseenter:_onHover,onmouseleave:_onUnhover,ondijitclick:_onClick\">"+"<td class=\"dijitReset\" waiRole=\"presentation\"><div class=\"dijitMenuItemIcon dijitCheckedMenuItemIcon\" dojoAttachPoint=\"iconNode\">"+"<div class=\"dijitCheckedMenuItemIconChar\">✓</div>"+"</div></td>"+"<td class=\"dijitReset dijitMenuItemLabel\" dojoAttachPoint=\"containerNode,labelNode\"></td>"+"<td class=\"dijitReset dijitMenuArrowCell\" waiRole=\"presentation\">"+"<div dojoAttachPoint=\"arrowWrapper\" style=\"display: none\">"+"<div class=\"dijitMenuExpand\"></div>"+"<span class=\"dijitMenuExpandA11y\">+</span>"+"</div>"+"</td>"+"</tr>",checked:false,_setCheckedAttr:function(_2b){dojo.toggleClass(this.iconNode,"dijitCheckedMenuItemIconChecked",_2b);dijit.setWaiState(this.domNode,"checked",_2b);this.checked=_2b;},onChange:function(_2c){},_onClick:function(e){if(!this.disabled){this.attr("checked",!this.checked);this.onChange(this.checked);}this.inherited(arguments);}});}�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000153�00000000000�011564� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/Tree.js����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/T0000644�0000000�0000000�00000043650�11360615640�027173� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* Copyright (c) 2004-2008, The Dojo Foundation All Rights Reserved. Available via Academic Free License >= 2.1 OR the modified BSD license. see: http://dojotoolkit.org/license for details */ if(!dojo._hasResource["dijit.Tree"]){dojo._hasResource["dijit.Tree"]=true;dojo.provide("dijit.Tree");dojo.require("dojo.fx");dojo.require("dijit._Widget");dojo.require("dijit._Templated");dojo.require("dijit._Container");dojo.require("dojo.cookie");dojo.declare("dijit._TreeNode",[dijit._Widget,dijit._Templated,dijit._Container,dijit._Contained],{item:null,isTreeNode:true,label:"",isExpandable:null,isExpanded:false,state:"UNCHECKED",templateString:"<div class=\"dijitTreeNode\" waiRole=\"presentation\"\n\t><div dojoAttachPoint=\"rowNode\" class=\"dijitTreeRow\" waiRole=\"presentation\"\n\t\t><img src=\"${_blankGif}\" alt=\"\" dojoAttachPoint=\"expandoNode\" class=\"dijitTreeExpando\" waiRole=\"presentation\"\n\t\t><span dojoAttachPoint=\"expandoNodeText\" class=\"dijitExpandoText\" waiRole=\"presentation\"\n\t\t></span\n\t\t><span dojoAttachPoint=\"contentNode\" dojoAttachEvent=\"onmouseenter:_onMouseEnter, onmouseleave:_onMouseLeave\"\n\t\t\tclass=\"dijitTreeContent\" waiRole=\"presentation\">\n\t\t\t<img src=\"${_blankGif}\" alt=\"\" dojoAttachPoint=\"iconNode\" class=\"dijitTreeIcon\" waiRole=\"presentation\"\n\t\t\t><span dojoAttachPoint=\"labelNode\" class=\"dijitTreeLabel\" wairole=\"treeitem\" tabindex=\"-1\" waiState=\"selected-false\" dojoAttachEvent=\"onfocus:_onNodeFocus\"></span>\n\t\t</span\n\t></div>\n\t<div dojoAttachPoint=\"containerNode\" class=\"dijitTreeContainer\" waiRole=\"presentation\" style=\"display: none;\"></div>\n</div>\n",postCreate:function(){this.setLabelNode(this.label);this._setExpando();this._updateItemClasses(this.item);if(this.isExpandable){dijit.setWaiState(this.labelNode,"expanded",this.isExpanded);}},markProcessing:function(){this.state="LOADING";this._setExpando(true);},unmarkProcessing:function(){this._setExpando(false);},_updateItemClasses:function(_1){var _2=this.tree,_3=_2.model;if(_2._v10Compat&&_1===_3.root){_1=null;}this.iconNode.className="dijitTreeIcon "+_2.getIconClass(_1,this.isExpanded);this.labelNode.className="dijitTreeLabel "+_2.getLabelClass(_1,this.isExpanded);},_updateLayout:function(){var _4=this.getParent();if(!_4||_4.rowNode.style.display=="none"){dojo.addClass(this.domNode,"dijitTreeIsRoot");}else{dojo.toggleClass(this.domNode,"dijitTreeIsLast",!this.getNextSibling());}},_setExpando:function(_5){var _6=["dijitTreeExpandoLoading","dijitTreeExpandoOpened","dijitTreeExpandoClosed","dijitTreeExpandoLeaf"];var _7=["*","-","+","*"];var _8=_5?0:(this.isExpandable?(this.isExpanded?1:2):3);dojo.forEach(_6,function(s){dojo.removeClass(this.expandoNode,s);},this);dojo.addClass(this.expandoNode,_6[_8]);this.expandoNodeText.innerHTML=_7[_8];},expand:function(){if(this.isExpanded){return;}this._wipeOut&&this._wipeOut.stop();this.isExpanded=true;dijit.setWaiState(this.labelNode,"expanded","true");dijit.setWaiRole(this.containerNode,"group");this.contentNode.className="dijitTreeContent dijitTreeContentExpanded";this._setExpando();this._updateItemClasses(this.item);if(!this._wipeIn){this._wipeIn=dojo.fx.wipeIn({node:this.containerNode,duration:dijit.defaultDuration});}this._wipeIn.play();},collapse:function(){if(!this.isExpanded){return;}this._wipeIn&&this._wipeIn.stop();this.isExpanded=false;dijit.setWaiState(this.labelNode,"expanded","false");this.contentNode.className="dijitTreeContent";this._setExpando();this._updateItemClasses(this.item);if(!this._wipeOut){this._wipeOut=dojo.fx.wipeOut({node:this.containerNode,duration:dijit.defaultDuration});}this._wipeOut.play();},setLabelNode:function(_a){this.labelNode.innerHTML="";this.labelNode.appendChild(dojo.doc.createTextNode(_a));},setChildItems:function(_b){var _c=this.tree,_d=_c.model;this.getChildren().forEach(function(_e){dijit._Container.prototype.removeChild.call(this,_e);},this);this.state="LOADED";if(_b&&_b.length>0){this.isExpandable=true;dojo.forEach(_b,function(_f){var id=_d.getIdentity(_f),_11=_c._itemNodeMap[id],_12=(_11&&!_11.getParent())?_11:this.tree._createTreeNode({item:_f,tree:_c,isExpandable:_d.mayHaveChildren(_f),label:_c.getLabel(_f)});this.addChild(_12);_c._itemNodeMap[id]=_12;if(this.tree.persist){if(_c._openedItemIds[id]){_c._expandNode(_12);}}},this);dojo.forEach(this.getChildren(),function(_13,idx){_13._updateLayout();});}else{this.isExpandable=false;}if(this._setExpando){this._setExpando(false);}if(this==_c.rootNode){var fc=this.tree.showRoot?this:this.getChildren()[0],_16=fc?fc.labelNode:this.domNode;_16.setAttribute("tabIndex","0");_c.lastFocused=fc;}},removeChild:function(_17){this.inherited(arguments);var _18=this.getChildren();if(_18.length==0){this.isExpandable=false;this.collapse();}dojo.forEach(_18,function(_19){_19._updateLayout();});},makeExpandable:function(){this.isExpandable=true;this._setExpando(false);},_onNodeFocus:function(evt){var _1b=dijit.getEnclosingWidget(evt.target);this.tree._onTreeFocus(_1b);},_onMouseEnter:function(evt){dojo.addClass(this.contentNode,"dijitTreeNodeHover");},_onMouseLeave:function(evt){dojo.removeClass(this.contentNode,"dijitTreeNodeHover");}});dojo.declare("dijit.Tree",[dijit._Widget,dijit._Templated],{store:null,model:null,query:null,label:"",showRoot:true,childrenAttr:["children"],openOnClick:false,templateString:"<div class=\"dijitTreeContainer\" waiRole=\"tree\"\n\tdojoAttachEvent=\"onclick:_onClick,onkeypress:_onKeyPress\">\n</div>\n",isExpandable:true,isTree:true,persist:true,dndController:null,dndParams:["onDndDrop","itemCreator","onDndCancel","checkAcceptance","checkItemAcceptance","dragThreshold"],onDndDrop:null,itemCreator:null,onDndCancel:null,checkAcceptance:null,checkItemAcceptance:null,dragThreshold:0,_publish:function(_1e,_1f){dojo.publish(this.id,[dojo.mixin({tree:this,event:_1e},_1f||{})]);},postMixInProperties:function(){this.tree=this;this._itemNodeMap={};if(!this.cookieName){this.cookieName=this.id+"SaveStateCookie";}},postCreate:function(){if(this.persist){var _20=dojo.cookie(this.cookieName);this._openedItemIds={};if(_20){dojo.forEach(_20.split(","),function(_21){this._openedItemIds[_21]=true;},this);}}if(!this.model){this._store2model();}this.connect(this.model,"onChange","_onItemChange");this.connect(this.model,"onChildrenChange","_onItemChildrenChange");this.connect(this.model,"onDelete","_onItemDelete");this._load();this.inherited(arguments);if(this.dndController){if(dojo.isString(this.dndController)){this.dndController=dojo.getObject(this.dndController);}var _22={};for(var i=0;i<this.dndParams.length;i++){if(this[this.dndParams[i]]){_22[this.dndParams[i]]=this[this.dndParams[i]];}}this.dndController=new this.dndController(this,_22);}},_store2model:function(){this._v10Compat=true;dojo.deprecated("Tree: from version 2.0, should specify a model object rather than a store/query");var _24={id:this.id+"_ForestStoreModel",store:this.store,query:this.query,childrenAttrs:this.childrenAttr};if(this.params.mayHaveChildren){_24.mayHaveChildren=dojo.hitch(this,"mayHaveChildren");}if(this.params.getItemChildren){_24.getChildren=dojo.hitch(this,function(_25,_26,_27){this.getItemChildren((this._v10Compat&&_25===this.model.root)?null:_25,_26,_27);});}this.model=new dijit.tree.ForestStoreModel(_24);this.showRoot=Boolean(this.label);},_load:function(){this.model.getRoot(dojo.hitch(this,function(_28){var rn=this.rootNode=this.tree._createTreeNode({item:_28,tree:this,isExpandable:true,label:this.label||this.getLabel(_28)});if(!this.showRoot){rn.rowNode.style.display="none";}this.domNode.appendChild(rn.domNode);this._itemNodeMap[this.model.getIdentity(_28)]=rn;rn._updateLayout();this._expandNode(rn);}),function(err){console.error(this,": error loading root: ",err);});},mayHaveChildren:function(_2b){},getItemChildren:function(_2c,_2d){},getLabel:function(_2e){return this.model.getLabel(_2e);},getIconClass:function(_2f,_30){return (!_2f||this.model.mayHaveChildren(_2f))?(_30?"dijitFolderOpened":"dijitFolderClosed"):"dijitLeaf";},getLabelClass:function(_31,_32){},_onKeyPress:function(e){if(e.altKey){return;}var dk=dojo.keys;var _35=dijit.getEnclosingWidget(e.target);if(!_35){return;}var key=e.charOrCode;if(typeof key=="string"){if(!e.altKey&&!e.ctrlKey&&!e.shiftKey&&!e.metaKey){this._onLetterKeyNav({node:_35,key:key.toLowerCase()});dojo.stopEvent(e);}}else{var map=this._keyHandlerMap;if(!map){map={};map[dk.ENTER]="_onEnterKey";map[this.isLeftToRight()?dk.LEFT_ARROW:dk.RIGHT_ARROW]="_onLeftArrow";map[this.isLeftToRight()?dk.RIGHT_ARROW:dk.LEFT_ARROW]="_onRightArrow";map[dk.UP_ARROW]="_onUpArrow";map[dk.DOWN_ARROW]="_onDownArrow";map[dk.HOME]="_onHomeKey";map[dk.END]="_onEndKey";this._keyHandlerMap=map;}if(this._keyHandlerMap[key]){this[this._keyHandlerMap[key]]({node:_35,item:_35.item});dojo.stopEvent(e);}}},_onEnterKey:function(_38){this._publish("execute",{item:_38.item,node:_38.node});this.onClick(_38.item,_38.node);},_onDownArrow:function(_39){var _3a=this._getNextNode(_39.node);if(_3a&&_3a.isTreeNode){this.focusNode(_3a);}},_onUpArrow:function(_3b){var _3c=_3b.node;var _3d=_3c.getPreviousSibling();if(_3d){_3c=_3d;while(_3c.isExpandable&&_3c.isExpanded&&_3c.hasChildren()){var _3e=_3c.getChildren();_3c=_3e[_3e.length-1];}}else{var _3f=_3c.getParent();if(!(!this.showRoot&&_3f===this.rootNode)){_3c=_3f;}}if(_3c&&_3c.isTreeNode){this.focusNode(_3c);}},_onRightArrow:function(_40){var _41=_40.node;if(_41.isExpandable&&!_41.isExpanded){this._expandNode(_41);}else{if(_41.hasChildren()){_41=_41.getChildren()[0];if(_41&&_41.isTreeNode){this.focusNode(_41);}}}},_onLeftArrow:function(_42){var _43=_42.node;if(_43.isExpandable&&_43.isExpanded){this._collapseNode(_43);}else{var _44=_43.getParent();if(_44&&_44.isTreeNode&&!(!this.showRoot&&_44===this.rootNode)){this.focusNode(_44);}}},_onHomeKey:function(){var _45=this._getRootOrFirstNode();if(_45){this.focusNode(_45);}},_onEndKey:function(_46){var _47=this;while(_47.isExpanded){var c=_47.getChildren();_47=c[c.length-1];}if(_47&&_47.isTreeNode){this.focusNode(_47);}},_onLetterKeyNav:function(_49){var _4a=_49.node,_4b=_4a,key=_49.key;do{_4a=this._getNextNode(_4a);if(!_4a){_4a=this._getRootOrFirstNode();}}while(_4a!==_4b&&(_4a.label.charAt(0).toLowerCase()!=key));if(_4a&&_4a.isTreeNode){if(_4a!==_4b){this.focusNode(_4a);}}},_onClick:function(e){var _4e=e.target;var _4f=dijit.getEnclosingWidget(_4e);if(!_4f||!_4f.isTreeNode){return;}if((this.openOnClick&&_4f.isExpandable)||(_4e==_4f.expandoNode||_4e==_4f.expandoNodeText)){if(_4f.isExpandable){this._onExpandoClick({node:_4f});}}else{this._publish("execute",{item:_4f.item,node:_4f});this.onClick(_4f.item,_4f);this.focusNode(_4f);}dojo.stopEvent(e);},_onExpandoClick:function(_50){var _51=_50.node;this.focusNode(_51);if(_51.isExpanded){this._collapseNode(_51);}else{this._expandNode(_51);}},onClick:function(_52,_53){},onOpen:function(_54,_55){},onClose:function(_56,_57){},_getNextNode:function(_58){if(_58.isExpandable&&_58.isExpanded&&_58.hasChildren()){return _58.getChildren()[0];}else{while(_58&&_58.isTreeNode){var _59=_58.getNextSibling();if(_59){return _59;}_58=_58.getParent();}return null;}},_getRootOrFirstNode:function(){return this.showRoot?this.rootNode:this.rootNode.getChildren()[0];},_collapseNode:function(_5a){if(_5a.isExpandable){if(_5a.state=="LOADING"){return;}_5a.collapse();this.onClose(_5a.item,_5a);if(this.persist&&_5a.item){delete this._openedItemIds[this.model.getIdentity(_5a.item)];this._saveState();}}},_expandNode:function(_5b){if(!_5b.isExpandable){return;}var _5c=this.model,_5d=_5b.item;switch(_5b.state){case "LOADING":return;case "UNCHECKED":_5b.markProcessing();var _5e=this;_5c.getChildren(_5d,function(_5f){_5b.unmarkProcessing();_5b.setChildItems(_5f);_5e._expandNode(_5b);},function(err){console.error(_5e,": error loading root children: ",err);});break;default:_5b.expand();this.onOpen(_5b.item,_5b);if(this.persist&&_5d){this._openedItemIds[_5c.getIdentity(_5d)]=true;this._saveState();}}},blurNode:function(){var _61=this.lastFocused;if(!_61){return;}var _62=_61.labelNode;dojo.removeClass(_62,"dijitTreeLabelFocused");_62.setAttribute("tabIndex","-1");dijit.setWaiState(_62,"selected",false);this.lastFocused=null;},focusNode:function(_63){_63.labelNode.focus();},_onBlur:function(){this.inherited(arguments);if(this.lastFocused){var _64=this.lastFocused.labelNode;dojo.removeClass(_64,"dijitTreeLabelFocused");}},_onTreeFocus:function(_65){if(_65){if(_65!=this.lastFocused){this.blurNode();}var _66=_65.labelNode;_66.setAttribute("tabIndex","0");dijit.setWaiState(_66,"selected",true);dojo.addClass(_66,"dijitTreeLabelFocused");this.lastFocused=_65;}},_onItemDelete:function(_67){var _68=this.model.getIdentity(_67);var _69=this._itemNodeMap[_68];if(_69){var _6a=_69.getParent();if(_6a){_6a.removeChild(_69);}delete this._itemNodeMap[_68];_69.destroyRecursive();}},_onItemChange:function(_6b){var _6c=this.model,_6d=_6c.getIdentity(_6b),_6e=this._itemNodeMap[_6d];if(_6e){_6e.setLabelNode(this.getLabel(_6b));_6e._updateItemClasses(_6b);}},_onItemChildrenChange:function(_6f,_70){var _71=this.model,_72=_71.getIdentity(_6f),_73=this._itemNodeMap[_72];if(_73){_73.setChildItems(_70);}},_onItemDelete:function(_74){var _75=this.model,_76=_75.getIdentity(_74),_77=this._itemNodeMap[_76];if(_77){_77.destroyRecursive();delete this._itemNodeMap[_76];}},_saveState:function(){if(!this.persist){return;}var ary=[];for(var id in this._openedItemIds){ary.push(id);}dojo.cookie(this.cookieName,ary.join(","),{expires:365});},destroy:function(){if(this.rootNode){this.rootNode.destroyRecursive();}if(this.dndController&&!dojo.isString(this.dndController)){this.dndController.destroy();}this.rootNode=null;this.inherited(arguments);},destroyRecursive:function(){this.destroy();},_createTreeNode:function(_7a){return new dijit._TreeNode(_7a);}});dojo.declare("dijit.tree.TreeStoreModel",null,{store:null,childrenAttrs:["children"],labelAttr:"",root:null,query:null,constructor:function(_7b){dojo.mixin(this,_7b);this.connects=[];var _7c=this.store;if(!_7c.getFeatures()["dojo.data.api.Identity"]){throw new Error("dijit.Tree: store must support dojo.data.Identity");}if(_7c.getFeatures()["dojo.data.api.Notification"]){this.connects=this.connects.concat([dojo.connect(_7c,"onNew",this,"_onNewItem"),dojo.connect(_7c,"onDelete",this,"_onDeleteItem"),dojo.connect(_7c,"onSet",this,"_onSetItem")]);}},destroy:function(){dojo.forEach(this.connects,dojo.disconnect);},getRoot:function(_7d,_7e){if(this.root){_7d(this.root);}else{this.store.fetch({query:this.query,onComplete:dojo.hitch(this,function(_7f){if(_7f.length!=1){throw new Error(this.declaredClass+": query "+dojo.toJson(this.query)+" returned "+_7f.length+" items, but must return exactly one item");}this.root=_7f[0];_7d(this.root);}),onError:_7e});}},mayHaveChildren:function(_80){return dojo.some(this.childrenAttrs,function(_81){return this.store.hasAttribute(_80,_81);},this);},getChildren:function(_82,_83,_84){var _85=this.store;var _86=[];for(var i=0;i<this.childrenAttrs.length;i++){var _88=_85.getValues(_82,this.childrenAttrs[i]);_86=_86.concat(_88);}var _89=0;dojo.forEach(_86,function(_8a){if(!_85.isItemLoaded(_8a)){_89++;}});if(_89==0){_83(_86);}else{var _8b=function _8b(_8c){if(--_89==0){_83(_86);}};dojo.forEach(_86,function(_8d){if(!_85.isItemLoaded(_8d)){_85.loadItem({item:_8d,onItem:_8b,onError:_84});}});}},getIdentity:function(_8e){return this.store.getIdentity(_8e);},getLabel:function(_8f){if(this.labelAttr){return this.store.getValue(_8f,this.labelAttr);}else{return this.store.getLabel(_8f);}},newItem:function(_90,_91){var _92={parent:_91,attribute:this.childrenAttrs[0]};return this.store.newItem(_90,_92);},pasteItem:function(_93,_94,_95,_96){var _97=this.store,_98=this.childrenAttrs[0];if(_94){dojo.forEach(this.childrenAttrs,function(_99){if(_97.containsValue(_94,_99,_93)){if(!_96){var _9a=dojo.filter(_97.getValues(_94,_99),function(x){return x!=_93;});_97.setValues(_94,_99,_9a);}_98=_99;}});}if(_95){_97.setValues(_95,_98,_97.getValues(_95,_98).concat(_93));}},onChange:function(_9c){},onChildrenChange:function(_9d,_9e){},onDelete:function(_9f,_a0){},_onNewItem:function(_a1,_a2){if(!_a2){return;}this.getChildren(_a2.item,dojo.hitch(this,function(_a3){this.onChildrenChange(_a2.item,_a3);}));},_onDeleteItem:function(_a4){this.onDelete(_a4);},_onSetItem:function(_a5,_a6,_a7,_a8){if(dojo.indexOf(this.childrenAttrs,_a6)!=-1){this.getChildren(_a5,dojo.hitch(this,function(_a9){this.onChildrenChange(_a5,_a9);}));}else{this.onChange(_a5);}}});dojo.declare("dijit.tree.ForestStoreModel",dijit.tree.TreeStoreModel,{rootId:"$root$",rootLabel:"ROOT",query:null,constructor:function(_aa){this.root={store:this,root:true,id:_aa.rootId,label:_aa.rootLabel,children:_aa.rootChildren};},mayHaveChildren:function(_ab){return _ab===this.root||this.inherited(arguments);},getChildren:function(_ac,_ad,_ae){if(_ac===this.root){if(this.root.children){_ad(this.root.children);}else{this.store.fetch({query:this.query,onComplete:dojo.hitch(this,function(_af){this.root.children=_af;_ad(_af);}),onError:_ae});}}else{this.inherited(arguments);}},getIdentity:function(_b0){return (_b0===this.root)?this.root.id:this.inherited(arguments);},getLabel:function(_b1){return (_b1===this.root)?this.root.label:this.inherited(arguments);},newItem:function(_b2,_b3){if(_b3===this.root){this.onNewRootItem(_b2);return this.store.newItem(_b2);}else{return this.inherited(arguments);}},onNewRootItem:function(_b4){},pasteItem:function(_b5,_b6,_b7,_b8){if(_b6===this.root){if(!_b8){this.onLeaveRoot(_b5);}}dijit.tree.TreeStoreModel.prototype.pasteItem.call(this,_b5,_b6===this.root?null:_b6,_b7===this.root?null:_b7);if(_b7===this.root){this.onAddToRoot(_b5);}},onAddToRoot:function(_b9){console.log(this,": item ",_b9," added to root");},onLeaveRoot:function(_ba){console.log(this,": item ",_ba," removed from root");},_requeryTop:function(){var _bb=this.root.children||[];this.store.fetch({query:this.query,onComplete:dojo.hitch(this,function(_bc){this.root.children=_bc;if(_bb.length!=_bc.length||dojo.some(_bb,function(_bd,idx){return _bc[idx]!=_bd;})){this.onChildrenChange(this.root,_bc);}})});},_onNewItem:function(_bf,_c0){this._requeryTop();this.inherited(arguments);},_onDeleteItem:function(_c1){if(dojo.indexOf(this.root.children,_c1)!=-1){this._requeryTop();}this.inherited(arguments);}});}����������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000152�00000000000�011563� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/_base/�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/_0000755�0000000�0000000�00000000000�11360615646�027202� 5����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000164�00000000000�011566� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/_base/manager.js�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/_0000644�0000000�0000000�00000006010�11360615632�027174� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* Copyright (c) 2004-2008, The Dojo Foundation All Rights Reserved. Available via Academic Free License >= 2.1 OR the modified BSD license. see: http://dojotoolkit.org/license for details */ if(!dojo._hasResource["dijit._base.manager"]){dojo._hasResource["dijit._base.manager"]=true;dojo.provide("dijit._base.manager");dojo.declare("dijit.WidgetSet",null,{constructor:function(){this._hash={};},add:function(_1){if(this._hash[_1.id]){throw new Error("Tried to register widget with id=="+_1.id+" but that id is already registered");}this._hash[_1.id]=_1;},remove:function(id){delete this._hash[id];},forEach:function(_3){for(var id in this._hash){_3(this._hash[id]);}},filter:function(_5){var _6=new dijit.WidgetSet();this.forEach(function(_7){if(_5(_7)){_6.add(_7);}});return _6;},byId:function(id){return this._hash[id];},byClass:function(_9){return this.filter(function(_a){return _a.declaredClass==_9;});}});dijit.registry=new dijit.WidgetSet();dijit._widgetTypeCtr={};dijit.getUniqueId=function(_b){var id;do{id=_b+"_"+(_b in dijit._widgetTypeCtr?++dijit._widgetTypeCtr[_b]:dijit._widgetTypeCtr[_b]=0);}while(dijit.byId(id));return id;};if(dojo.isIE){dojo.addOnWindowUnload(function(){dijit.registry.forEach(function(_d){_d.destroy();});});}dijit.byId=function(id){return (dojo.isString(id))?dijit.registry.byId(id):id;};dijit.byNode=function(_f){return dijit.registry.byId(_f.getAttribute("widgetId"));};dijit.getEnclosingWidget=function(_10){while(_10){if(_10.getAttribute&&_10.getAttribute("widgetId")){return dijit.registry.byId(_10.getAttribute("widgetId"));}_10=_10.parentNode;}return null;};dijit._tabElements={area:true,button:true,input:true,object:true,select:true,textarea:true};dijit._isElementShown=function(_11){var _12=dojo.style(_11);return (_12.visibility!="hidden")&&(_12.visibility!="collapsed")&&(_12.display!="none")&&(dojo.attr(_11,"type")!="hidden");};dijit.isTabNavigable=function(_13){if(dojo.hasAttr(_13,"disabled")){return false;}var _14=dojo.hasAttr(_13,"tabindex");var _15=dojo.attr(_13,"tabindex");if(_14&&_15>=0){return true;}var _16=_13.nodeName.toLowerCase();if(((_16=="a"&&dojo.hasAttr(_13,"href"))||dijit._tabElements[_16])&&(!_14||_15>=0)){return true;}return false;};dijit._getTabNavigable=function(_17){var _18,_19,_1a,_1b,_1c,_1d;var _1e=function(_1f){dojo.query("> *",_1f).forEach(function(_20){var _21=dijit._isElementShown(_20);if(_21&&dijit.isTabNavigable(_20)){var _22=dojo.attr(_20,"tabindex");if(!dojo.hasAttr(_20,"tabindex")||_22==0){if(!_18){_18=_20;}_19=_20;}else{if(_22>0){if(!_1a||_22<_1b){_1b=_22;_1a=_20;}if(!_1c||_22>=_1d){_1d=_22;_1c=_20;}}}}if(_21&&_20.nodeName.toUpperCase()!="SELECT"){_1e(_20);}});};if(dijit._isElementShown(_17)){_1e(_17);}return {first:_18,last:_19,lowest:_1a,highest:_1c};};dijit.getFirstInTabbingOrder=function(_23){var _24=dijit._getTabNavigable(dojo.byId(_23));return _24.lowest?_24.lowest:_24.first;};dijit.getLastInTabbingOrder=function(_25){var _26=dijit._getTabNavigable(dojo.byId(_25));return _26.last?_26.last:_26.highest;};dijit.defaultDuration=dojo.config["defaultDuration"]||200;}������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000162�00000000000�011564� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/_base/focus.js���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/_0000644�0000000�0000000�00000011230�11360615640�027173� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* Copyright (c) 2004-2008, The Dojo Foundation All Rights Reserved. Available via Academic Free License >= 2.1 OR the modified BSD license. see: http://dojotoolkit.org/license for details */ if(!dojo._hasResource["dijit._base.focus"]){dojo._hasResource["dijit._base.focus"]=true;dojo.provide("dijit._base.focus");dojo.mixin(dijit,{_curFocus:null,_prevFocus:null,isCollapsed:function(){var _1=dojo.doc;if(_1.selection){var s=_1.selection;if(s.type=="Text"){return !s.createRange().htmlText.length;}else{return !s.createRange().length;}}else{var _3=dojo.global;var _4=_3.getSelection();if(dojo.isString(_4)){return !_4;}else{return _4.isCollapsed||!_4.toString();}}},getBookmark:function(){var _5,_6=dojo.doc.selection;if(_6){var _7=_6.createRange();if(_6.type.toUpperCase()=="CONTROL"){if(_7.length){_5=[];var i=0,_9=_7.length;while(i<_9){_5.push(_7.item(i++));}}else{_5=null;}}else{_5=_7.getBookmark();}}else{if(window.getSelection){_6=dojo.global.getSelection();if(_6){_7=_6.getRangeAt(0);_5=_7.cloneRange();}}else{console.warn("No idea how to store the current selection for this browser!");}}return _5;},moveToBookmark:function(_a){var _b=dojo.doc;if(_b.selection){var _c;if(dojo.isArray(_a)){_c=_b.body.createControlRange();dojo.forEach(_a,function(n){_c.addElement(n);});}else{_c=_b.selection.createRange();_c.moveToBookmark(_a);}_c.select();}else{var _e=dojo.global.getSelection&&dojo.global.getSelection();if(_e&&_e.removeAllRanges){_e.removeAllRanges();_e.addRange(_a);}else{console.warn("No idea how to restore selection for this browser!");}}},getFocus:function(_f,_10){return {node:_f&&dojo.isDescendant(dijit._curFocus,_f.domNode)?dijit._prevFocus:dijit._curFocus,bookmark:!dojo.withGlobal(_10||dojo.global,dijit.isCollapsed)?dojo.withGlobal(_10||dojo.global,dijit.getBookmark):null,openedForWindow:_10};},focus:function(_11){if(!_11){return;}var _12="node" in _11?_11.node:_11,_13=_11.bookmark,_14=_11.openedForWindow;if(_12){var _15=(_12.tagName.toLowerCase()=="iframe")?_12.contentWindow:_12;if(_15&&_15.focus){try{_15.focus();}catch(e){}}dijit._onFocusNode(_12);}if(_13&&dojo.withGlobal(_14||dojo.global,dijit.isCollapsed)){if(_14){_14.focus();}try{dojo.withGlobal(_14||dojo.global,dijit.moveToBookmark,null,[_13]);}catch(e){}}},_activeStack:[],registerWin:function(_16){if(!_16){_16=window;}dojo.connect(_16.document,"onmousedown",function(evt){dijit._justMouseDowned=true;setTimeout(function(){dijit._justMouseDowned=false;},0);dijit._onTouchNode(evt.target||evt.srcElement);});var doc=_16.document;if(doc){if(dojo.isIE){doc.attachEvent("onactivate",function(evt){if(evt.srcElement.tagName.toLowerCase()!="#document"){dijit._onFocusNode(evt.srcElement);}});doc.attachEvent("ondeactivate",function(evt){dijit._onBlurNode(evt.srcElement);});}else{doc.addEventListener("focus",function(evt){dijit._onFocusNode(evt.target);},true);doc.addEventListener("blur",function(evt){dijit._onBlurNode(evt.target);},true);}}doc=null;},_onBlurNode:function(_1d){dijit._prevFocus=dijit._curFocus;dijit._curFocus=null;if(dijit._justMouseDowned){return;}if(dijit._clearActiveWidgetsTimer){clearTimeout(dijit._clearActiveWidgetsTimer);}dijit._clearActiveWidgetsTimer=setTimeout(function(){delete dijit._clearActiveWidgetsTimer;dijit._setStack([]);dijit._prevFocus=null;},100);},_onTouchNode:function(_1e){if(dijit._clearActiveWidgetsTimer){clearTimeout(dijit._clearActiveWidgetsTimer);delete dijit._clearActiveWidgetsTimer;}var _1f=[];try{while(_1e){if(_1e.dijitPopupParent){_1e=dijit.byId(_1e.dijitPopupParent).domNode;}else{if(_1e.tagName&&_1e.tagName.toLowerCase()=="body"){if(_1e===dojo.body()){break;}_1e=dijit.getDocumentWindow(_1e.ownerDocument).frameElement;}else{var id=_1e.getAttribute&&_1e.getAttribute("widgetId");if(id){_1f.unshift(id);}_1e=_1e.parentNode;}}}}catch(e){}dijit._setStack(_1f);},_onFocusNode:function(_21){if(!_21){return;}if(_21.nodeType==9){return;}if(_21.nodeType==9){var _22=dijit.getDocumentWindow(_21).frameElement;if(!_22){return;}_21=_22;}dijit._onTouchNode(_21);if(_21==dijit._curFocus){return;}if(dijit._curFocus){dijit._prevFocus=dijit._curFocus;}dijit._curFocus=_21;dojo.publish("focusNode",[_21]);},_setStack:function(_23){var _24=dijit._activeStack;dijit._activeStack=_23;for(var _25=0;_25<Math.min(_24.length,_23.length);_25++){if(_24[_25]!=_23[_25]){break;}}for(var i=_24.length-1;i>=_25;i--){var _27=dijit.byId(_24[i]);if(_27){_27._focused=false;_27._hasBeenBlurred=true;if(_27._onBlur){_27._onBlur();}if(_27._setStateClass){_27._setStateClass();}dojo.publish("widgetBlur",[_27]);}}for(i=_25;i<_23.length;i++){_27=dijit.byId(_23[i]);if(_27){_27._focused=true;if(_27._onFocus){_27._onFocus();}if(_27._setStateClass){_27._setStateClass();}dojo.publish("widgetFocus",[_27]);}}}});dojo.addOnLoad(dijit.registerWin);}������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000163�00000000000�011565� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/_base/scroll.js��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/_0000644�0000000�0000000�00000006033�11360615632�027201� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* Copyright (c) 2004-2008, The Dojo Foundation All Rights Reserved. Available via Academic Free License >= 2.1 OR the modified BSD license. see: http://dojotoolkit.org/license for details */ if(!dojo._hasResource["dijit._base.scroll"]){dojo._hasResource["dijit._base.scroll"]=true;dojo.provide("dijit._base.scroll");dijit.scrollIntoView=function(_1){_1=dojo.byId(_1);var _2=_1.ownerDocument.body;var _3=_2.parentNode;if(dojo.isFF==2||_1==_2||_1==_3){_1.scrollIntoView(false);return;}var _4=!dojo._isBodyLtr();var _5=dojo.doc.compatMode!="BackCompat";var _6=(_5&&!dojo.isSafari)?_3:_2;function addPseudoAttrs(_7){var _8=_7.parentNode;var _9=_7.offsetParent;if(_9==null){_7=_6;_9=_3;_8=null;}_7._offsetParent=(_9==_2)?_6:_9;_7._parent=(_8==_2)?_6:_8;_7._start={H:_7.offsetLeft,V:_7.offsetTop};_7._scroll={H:_7.scrollLeft,V:_7.scrollTop};_7._renderedSize={H:_7.offsetWidth,V:_7.offsetHeight};var bp=dojo._getBorderExtents(_7);_7._borderStart={H:bp.l,V:bp.t};_7._borderSize={H:bp.w,V:bp.h};_7._clientSize=(_7._offsetParent==_3&&dojo.isSafari&&_5)?{H:_3.clientWidth,V:_3.clientHeight}:{H:_7.clientWidth,V:_7.clientHeight};_7._scrollBarSize={V:null,H:null};for(var _b in _7._scrollBarSize){var _c=_7._renderedSize[_b]-_7._clientSize[_b]-_7._borderSize[_b];_7._scrollBarSize[_b]=(_7._clientSize[_b]>0&&_c>=15&&_c<=17)?_c:0;}_7._isScrollable={V:null,H:null};for(_b in _7._isScrollable){var _d=_b=="H"?"V":"H";_7._isScrollable[_b]=_7==_6||_7._scroll[_b]||_7._scrollBarSize[_d];}};var _e=_1;while(_e!=null){addPseudoAttrs(_e);var _f=_e._parent;if(_f){_f._child=_e;}_e=_f;}for(var dir in _6._renderedSize){_6._renderedSize[dir]=Math.min(_6._clientSize[dir],_6._renderedSize[dir]);}var _11=_1;while(_11!=_6){_e=_11._parent;if(_e.tagName=="TD"){var _12=_e._parent._parent._parent;if(_12._offsetParent==_11._offsetParent&&_e._offsetParent!=_11._offsetParent){_e=_12;}}var _13=_11==_6||(_e._offsetParent!=_11._offsetParent);for(dir in _11._start){var _14=dir=="H"?"V":"H";if(_4&&dir=="H"&&(dojo.isSafari||dojo.isIE)&&_e._clientSize.H>0){var _15=_e.scrollWidth-_e._clientSize.H;if(_15>0){_e._scroll.H-=_15;}}if(dojo.isIE&&_e._offsetParent.tagName=="TABLE"){_e._start[dir]-=_e._offsetParent._borderStart[dir];_e._borderStart[dir]=_e._borderSize[dir]=0;}if(_e._clientSize[dir]==0){_e._renderedSize[dir]=_e._clientSize[dir]=_e._child._clientSize[dir];if(_4&&dir=="H"){_e._start[dir]-=_e._renderedSize[dir];}}else{_e._renderedSize[dir]-=_e._borderSize[dir]+_e._scrollBarSize[dir];}_e._start[dir]+=_e._borderStart[dir];var _16=_11._start[dir]-(_13?0:_e._start[dir])-_e._scroll[dir];var _17=_16+_11._renderedSize[dir]-_e._renderedSize[dir];var _18,_19=(dir=="H")?"scrollLeft":"scrollTop";var _1a=(dir=="H"&&_4);var _1b=_1a?-_17:_16;var _1c=_1a?-_16:_17;if(_1b<=0){_18=_1b;}else{if(_1c<=0){_18=0;}else{if(_1b<_1c){_18=_1b;}else{_18=_1c;}}}var _1d=0;if(_18!=0){var _1e=_e[_19];_e[_19]+=_1a?-_18:_18;_1d=_e[_19]-_1e;_16-=_1d;_1c-=_1a?-_1d:_1d;}_e._renderedSize[dir]=_11._renderedSize[dir]+_e._scrollBarSize[dir]-((_e._isScrollable[dir]&&_1c>0)?_1c:0);_e._start[dir]+=(_16>=0||!_e._isScrollable[dir])?_16:0;}_11=_e;}};}�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000163�00000000000�011565� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/_base/window.js��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/_0000644�0000000�0000000�00000001151�11360615646�027202� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* Copyright (c) 2004-2008, The Dojo Foundation All Rights Reserved. Available via Academic Free License >= 2.1 OR the modified BSD license. see: http://dojotoolkit.org/license for details */ if(!dojo._hasResource["dijit._base.window"]){dojo._hasResource["dijit._base.window"]=true;dojo.provide("dijit._base.window");dijit.getDocumentWindow=function(_1){if(dojo.isIE&&window!==document.parentWindow&&!_1._parentWindow){_1.parentWindow.execScript("document._parentWindow = window;","Javascript");var _2=_1._parentWindow;_1._parentWindow=null;return _2;}return _1._parentWindow||_1.parentWindow||_1.defaultView;};}�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000162�00000000000�011564� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/_base/place.js���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/_0000644�0000000�0000000�00000006426�11360615646�027214� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* Copyright (c) 2004-2008, The Dojo Foundation All Rights Reserved. Available via Academic Free License >= 2.1 OR the modified BSD license. see: http://dojotoolkit.org/license for details */ if(!dojo._hasResource["dijit._base.place"]){dojo._hasResource["dijit._base.place"]=true;dojo.provide("dijit._base.place");dojo.require("dojo.AdapterRegistry");dijit.getViewport=function(){var _1=dojo.global;var _2=dojo.doc;var w=0,h=0;var de=_2.documentElement;var _6=de.clientWidth,_7=de.clientHeight;if(dojo.isMozilla){var _8,_9,_a,_b;var _c=_2.body.clientWidth;if(_c>_6){_8=_6;_a=_c;}else{_a=_6;_8=_c;}var _d=_2.body.clientHeight;if(_d>_7){_9=_7;_b=_d;}else{_b=_7;_9=_d;}w=(_a>_1.innerWidth)?_8:_a;h=(_b>_1.innerHeight)?_9:_b;}else{if(!dojo.isOpera&&_1.innerWidth){w=_1.innerWidth;h=_1.innerHeight;}else{if(dojo.isIE&&de&&_7){w=_6;h=_7;}else{if(dojo.body().clientWidth){w=dojo.body().clientWidth;h=dojo.body().clientHeight;}}}}var _e=dojo._docScroll();return {w:w,h:h,l:_e.x,t:_e.y};};dijit.placeOnScreen=function(_f,pos,_11,_12){var _13=dojo.map(_11,function(_14){return {corner:_14,pos:pos};});return dijit._place(_f,_13);};dijit._place=function(_15,_16,_17){var _18=dijit.getViewport();if(!_15.parentNode||String(_15.parentNode.tagName).toLowerCase()!="body"){dojo.body().appendChild(_15);}var _19=null;dojo.some(_16,function(_1a){var _1b=_1a.corner;var pos=_1a.pos;if(_17){_17(_15,_1a.aroundCorner,_1b);}var _1d=_15.style;var _1e=_1d.display;var _1f=_1d.visibility;_1d.visibility="hidden";_1d.display="";var mb=dojo.marginBox(_15);_1d.display=_1e;_1d.visibility=_1f;var _21=(_1b.charAt(1)=="L"?pos.x:Math.max(_18.l,pos.x-mb.w)),_22=(_1b.charAt(0)=="T"?pos.y:Math.max(_18.t,pos.y-mb.h)),_23=(_1b.charAt(1)=="L"?Math.min(_18.l+_18.w,_21+mb.w):pos.x),_24=(_1b.charAt(0)=="T"?Math.min(_18.t+_18.h,_22+mb.h):pos.y),_25=_23-_21,_26=_24-_22,_27=(mb.w-_25)+(mb.h-_26);if(_19==null||_27<_19.overflow){_19={corner:_1b,aroundCorner:_1a.aroundCorner,x:_21,y:_22,w:_25,h:_26,overflow:_27};}return !_27;});_15.style.left=_19.x+"px";_15.style.top=_19.y+"px";if(_19.overflow&&_17){_17(_15,_19.aroundCorner,_19.corner);}return _19;};dijit.placeOnScreenAroundNode=function(_28,_29,_2a,_2b){_29=dojo.byId(_29);var _2c=_29.style.display;_29.style.display="";var _2d=_29.offsetWidth;var _2e=_29.offsetHeight;var _2f=dojo.coords(_29,true);_29.style.display=_2c;return dijit._placeOnScreenAroundRect(_28,_2f.x,_2f.y,_2d,_2e,_2a,_2b);};dijit.placeOnScreenAroundRectangle=function(_30,_31,_32,_33){return dijit._placeOnScreenAroundRect(_30,_31.x,_31.y,_31.width,_31.height,_32,_33);};dijit._placeOnScreenAroundRect=function(_34,x,y,_37,_38,_39,_3a){var _3b=[];for(var _3c in _39){_3b.push({aroundCorner:_3c,corner:_39[_3c],pos:{x:x+(_3c.charAt(1)=="L"?0:_37),y:y+(_3c.charAt(0)=="T"?0:_38)}});}return dijit._place(_34,_3b,_3a);};dijit.placementRegistry=new dojo.AdapterRegistry();dijit.placementRegistry.register("node",function(n,x){return typeof x=="object"&&typeof x.offsetWidth!="undefined"&&typeof x.offsetHeight!="undefined";},dijit.placeOnScreenAroundNode);dijit.placementRegistry.register("rect",function(n,x){return typeof x=="object"&&"x" in x&&"y" in x&&"width" in x&&"height" in x;},dijit.placeOnScreenAroundRectangle);dijit.placeOnScreenAroundElement=function(_41,_42,_43,_44){return dijit.placementRegistry.match.apply(dijit.placementRegistry,arguments);};}������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000160�00000000000�011562� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/_base/wai.js�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/_0000644�0000000�0000000�00000005062�11360615642�027203� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* Copyright (c) 2004-2008, The Dojo Foundation All Rights Reserved. Available via Academic Free License >= 2.1 OR the modified BSD license. see: http://dojotoolkit.org/license for details */ if(!dojo._hasResource["dijit._base.wai"]){dojo._hasResource["dijit._base.wai"]=true;dojo.provide("dijit._base.wai");dijit.wai={onload:function(){var _1=dojo.doc.createElement("div");_1.id="a11yTestNode";_1.style.cssText="border: 1px solid;"+"border-color:red green;"+"position: absolute;"+"height: 5px;"+"top: -999px;"+"background-image: url(\""+(dojo.config.blankGif||dojo.moduleUrl("dojo","resources/blank.gif"))+"\");";dojo.body().appendChild(_1);var cs=dojo.getComputedStyle(_1);if(cs){var _3=cs.backgroundImage;var _4=(cs.borderTopColor==cs.borderRightColor)||(_3!=null&&(_3=="none"||_3=="url(invalid-url:)"));dojo[_4?"addClass":"removeClass"](dojo.body(),"dijit_a11y");if(dojo.isIE){_1.outerHTML="";}else{dojo.body().removeChild(_1);}}}};if(dojo.isIE||dojo.isMoz){dojo._loaders.unshift(dijit.wai.onload);}dojo.mixin(dijit,{_XhtmlRoles:/banner|contentinfo|definition|main|navigation|search|note|secondary|seealso/,hasWaiRole:function(_5,_6){var _7=this.getWaiRole(_5);if(_6){return (_7.indexOf(_6)>-1);}else{return (_7.length>0);}},getWaiRole:function(_8){return dojo.trim((dojo.attr(_8,"role")||"").replace(this._XhtmlRoles,"").replace("wairole:",""));},setWaiRole:function(_9,_a){var _b=dojo.attr(_9,"role")||"";if(dojo.isFF<3||!this._XhtmlRoles.test(_b)){dojo.attr(_9,"role",dojo.isFF<3?"wairole:"+_a:_a);}else{if((" "+_b+" ").indexOf(" "+_a+" ")<0){var _c=dojo.trim(_b.replace(this._XhtmlRoles,""));var _d=dojo.trim(_b.replace(_c,""));dojo.attr(_9,"role",_d+(_d?" ":"")+_a);}}},removeWaiRole:function(_e,_f){var _10=dojo.attr(_e,"role");if(!_10){return;}if(_f){var _11=dojo.isFF<3?"wairole:"+_f:_f;var t=dojo.trim((" "+_10+" ").replace(" "+_11+" "," "));dojo.attr(_e,"role",t);}else{_e.removeAttribute("role");}},hasWaiState:function(_13,_14){if(dojo.isFF<3){return _13.hasAttributeNS("http://www.w3.org/2005/07/aaa",_14);}else{return _13.hasAttribute?_13.hasAttribute("aria-"+_14):!!_13.getAttribute("aria-"+_14);}},getWaiState:function(_15,_16){if(dojo.isFF<3){return _15.getAttributeNS("http://www.w3.org/2005/07/aaa",_16);}else{var _17=_15.getAttribute("aria-"+_16);return _17?_17:"";}},setWaiState:function(_18,_19,_1a){if(dojo.isFF<3){_18.setAttributeNS("http://www.w3.org/2005/07/aaa","aaa:"+_19,_1a);}else{_18.setAttribute("aria-"+_19,_1a);}},removeWaiState:function(_1b,_1c){if(dojo.isFF<3){_1b.removeAttributeNS("http://www.w3.org/2005/07/aaa",_1c);}else{_1b.removeAttribute("aria-"+_1c);}}});}������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000162�00000000000�011564� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/_base/sniff.js���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/_0000644�0000000�0000000�00000001667�11360615632�027211� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* Copyright (c) 2004-2008, The Dojo Foundation All Rights Reserved. Available via Academic Free License >= 2.1 OR the modified BSD license. see: http://dojotoolkit.org/license for details */ if(!dojo._hasResource["dijit._base.sniff"]){dojo._hasResource["dijit._base.sniff"]=true;dojo.provide("dijit._base.sniff");(function(){var d=dojo;var ie=d.isIE;var _3=d.isOpera;var _4=Math.floor;var ff=d.isFF;var _6=d.boxModel.replace(/-/,"");var _7={dj_ie:ie,dj_ie6:_4(ie)==6,dj_ie7:_4(ie)==7,dj_iequirks:ie&&d.isQuirks,dj_opera:_3,dj_opera8:_4(_3)==8,dj_opera9:_4(_3)==9,dj_khtml:d.isKhtml,dj_safari:d.isSafari,dj_gecko:d.isMozilla,dj_ff2:_4(ff)==2,dj_ff3:_4(ff)==3};_7["dj_"+_6]=true;var _8=dojo.doc.documentElement;for(var p in _7){if(_7[p]){if(_8.className){_8.className+=" "+p;}else{_8.className=p;}}}dojo._loaders.unshift(function(){if(!dojo._isBodyLtr()){_8.className+=" dijitRtl";for(var p in _7){if(_7[p]){_8.className+=" "+p+"-rtl";}}}});})();}�������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000162�00000000000�011564� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/_base/popup.js���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/_0000644�0000000�0000000�00000007520�11360615632�027203� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* Copyright (c) 2004-2008, The Dojo Foundation All Rights Reserved. Available via Academic Free License >= 2.1 OR the modified BSD license. see: http://dojotoolkit.org/license for details */ if(!dojo._hasResource["dijit._base.popup"]){dojo._hasResource["dijit._base.popup"]=true;dojo.provide("dijit._base.popup");dojo.require("dijit._base.focus");dojo.require("dijit._base.place");dojo.require("dijit._base.window");dijit.popup=new function(){var _1=[],_2=1000,_3=1;this.prepare=function(_4){dojo.body().appendChild(_4);var s=_4.style;if(s.display=="none"){s.display="";}s.visibility="hidden";s.position="absolute";s.top="-9999px";};this.open=function(_6){var _7=_6.popup,_8=_6.orient||{"BL":"TL","TL":"BL"},_9=_6.around,id=(_6.around&&_6.around.id)?(_6.around.id+"_dropdown"):("popup_"+_3++);var _b=dojo.doc.createElement("div");dijit.setWaiRole(_b,"presentation");_b.id=id;_b.className="dijitPopup";_b.style.zIndex=_2+_1.length;_b.style.left=_b.style.top="0px";_b.style.visibility="hidden";if(_6.parent){_b.dijitPopupParent=_6.parent.id;}dojo.body().appendChild(_b);var s=_7.domNode.style;s.display="";s.visibility="";s.position="";_b.appendChild(_7.domNode);var _d=new dijit.BackgroundIframe(_b);var _e=_9?dijit.placeOnScreenAroundElement(_b,_9,_8,_7.orient?dojo.hitch(_7,"orient"):null):dijit.placeOnScreen(_b,_6,_8=="R"?["TR","BR","TL","BL"]:["TL","BL","TR","BR"]);_b.style.visibility="visible";var _f=[];var _10=function(){for(var pi=_1.length-1;pi>0&&_1[pi].parent===_1[pi-1].widget;pi--){}return _1[pi];};_f.push(dojo.connect(_b,"onkeypress",this,function(evt){if(evt.charOrCode==dojo.keys.ESCAPE&&_6.onCancel){dojo.stopEvent(evt);_6.onCancel();}else{if(evt.charOrCode===dojo.keys.TAB){dojo.stopEvent(evt);var _13=_10();if(_13&&_13.onCancel){_13.onCancel();}}}}));if(_7.onCancel){_f.push(dojo.connect(_7,"onCancel",null,_6.onCancel));}_f.push(dojo.connect(_7,_7.onExecute?"onExecute":"onChange",null,function(){var _14=_10();if(_14&&_14.onExecute){_14.onExecute();}}));_1.push({wrapper:_b,iframe:_d,widget:_7,parent:_6.parent,onExecute:_6.onExecute,onCancel:_6.onCancel,onClose:_6.onClose,handlers:_f});if(_7.onOpen){_7.onOpen(_e);}return _e;};this.close=function(_15){while(dojo.some(_1,function(_16){return _16.widget==_15;})){var top=_1.pop(),_18=top.wrapper,_19=top.iframe,_1a=top.widget,_1b=top.onClose;if(_1a.onClose){_1a.onClose();}dojo.forEach(top.handlers,dojo.disconnect);if(!_1a||!_1a.domNode){return;}this.prepare(_1a.domNode);_19.destroy();dojo._destroyElement(_18);if(_1b){_1b();}}};}();dijit._frames=new function(){var _1c=[];this.pop=function(){var _1d;if(_1c.length){_1d=_1c.pop();_1d.style.display="";}else{if(dojo.isIE){var _1e=dojo.config["dojoBlankHtmlUrl"]||(dojo.moduleUrl("dojo","resources/blank.html")+"")||"javascript:\"\"";var _1f="<iframe src='"+_1e+"'"+" style='position: absolute; left: 0px; top: 0px;"+"z-index: -1; filter:Alpha(Opacity=\"0\");'>";_1d=dojo.doc.createElement(_1f);}else{_1d=dojo.doc.createElement("iframe");_1d.src="javascript:\"\"";_1d.className="dijitBackgroundIframe";}_1d.tabIndex=-1;dojo.body().appendChild(_1d);}return _1d;};this.push=function(_20){_20.style.display="";if(dojo.isIE){_20.style.removeExpression("width");_20.style.removeExpression("height");}_1c.push(_20);};}();if(dojo.isIE<7){dojo.addOnLoad(function(){var f=dijit._frames;dojo.forEach([f.pop()],f.push);});}dijit.BackgroundIframe=function(_22){if(!_22.id){throw new Error("no id");}if((dojo.isIE&&dojo.isIE<7)||(dojo.isFF&&dojo.isFF<3&&dojo.hasClass(dojo.body(),"dijit_a11y"))){var _23=dijit._frames.pop();_22.appendChild(_23);if(dojo.isIE){_23.style.setExpression("width",dojo._scopeName+".doc.getElementById('"+_22.id+"').offsetWidth");_23.style.setExpression("height",dojo._scopeName+".doc.getElementById('"+_22.id+"').offsetHeight");}this.iframe=_23;}};dojo.extend(dijit.BackgroundIframe,{destroy:function(){if(this.iframe){dijit._frames.push(this.iframe);delete this.iframe;}}});}��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000166�00000000000�011570� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/_base/typematic.js�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/_0000644�0000000�0000000�00000005307�11360615642�027205� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* Copyright (c) 2004-2008, The Dojo Foundation All Rights Reserved. Available via Academic Free License >= 2.1 OR the modified BSD license. see: http://dojotoolkit.org/license for details */ if(!dojo._hasResource["dijit._base.typematic"]){dojo._hasResource["dijit._base.typematic"]=true;dojo.provide("dijit._base.typematic");dijit.typematic={_fireEventAndReload:function(){this._timer=null;this._callback(++this._count,this._node,this._evt);this._currentTimeout=(this._currentTimeout<0)?this._initialDelay:((this._subsequentDelay>1)?this._subsequentDelay:Math.round(this._currentTimeout*this._subsequentDelay));this._timer=setTimeout(dojo.hitch(this,"_fireEventAndReload"),this._currentTimeout);},trigger:function(_1,_2,_3,_4,_5,_6,_7){if(_5!=this._obj){this.stop();this._initialDelay=_7||500;this._subsequentDelay=_6||0.9;this._obj=_5;this._evt=_1;this._node=_3;this._currentTimeout=-1;this._count=-1;this._callback=dojo.hitch(_2,_4);this._fireEventAndReload();}},stop:function(){if(this._timer){clearTimeout(this._timer);this._timer=null;}if(this._obj){this._callback(-1,this._node,this._evt);this._obj=null;}},addKeyListener:function(_8,_9,_a,_b,_c,_d){if(_9.keyCode){_9.charOrCode=_9.keyCode;dojo.deprecated("keyCode attribute parameter for dijit.typematic.addKeyListener is deprecated. Use charOrCode instead.","","2.0");}else{if(_9.charCode){_9.charOrCode=String.fromCharCode(_9.charCode);dojo.deprecated("charCode attribute parameter for dijit.typematic.addKeyListener is deprecated. Use charOrCode instead.","","2.0");}}return [dojo.connect(_8,"onkeypress",this,function(_e){if(_e.charOrCode==_9.charOrCode&&(_9.ctrlKey===undefined||_9.ctrlKey==_e.ctrlKey)&&(_9.altKey===undefined||_9.altKey==_e.ctrlKey)&&(_9.shiftKey===undefined||_9.shiftKey==_e.ctrlKey)){dojo.stopEvent(_e);dijit.typematic.trigger(_9,_a,_8,_b,_9,_c,_d);}else{if(dijit.typematic._obj==_9){dijit.typematic.stop();}}}),dojo.connect(_8,"onkeyup",this,function(_f){if(dijit.typematic._obj==_9){dijit.typematic.stop();}})];},addMouseListener:function(_10,_11,_12,_13,_14){var dc=dojo.connect;return [dc(_10,"mousedown",this,function(evt){dojo.stopEvent(evt);dijit.typematic.trigger(evt,_11,_10,_12,_10,_13,_14);}),dc(_10,"mouseup",this,function(evt){dojo.stopEvent(evt);dijit.typematic.stop();}),dc(_10,"mouseout",this,function(evt){dojo.stopEvent(evt);dijit.typematic.stop();}),dc(_10,"mousemove",this,function(evt){dojo.stopEvent(evt);}),dc(_10,"dblclick",this,function(evt){dojo.stopEvent(evt);if(dojo.isIE){dijit.typematic.trigger(evt,_11,_10,_12,_10,_13,_14);setTimeout(dojo.hitch(this,dijit.typematic.stop),50);}})];},addListener:function(_1b,_1c,_1d,_1e,_1f,_20,_21){return this.addKeyListener(_1c,_1d,_1e,_1f,_20,_21).concat(this.addMouseListener(_1b,_1e,_1f,_20,_21));}};}�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000153�00000000000�011564� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/layout/����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/l0000755�0000000�0000000�00000000000�11360615640�027211� 5����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000171�00000000000�011564� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/layout/ContentPane.js��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/l0000644�0000000�0000000�00000014507�11360615640�027222� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* Copyright (c) 2004-2008, The Dojo Foundation All Rights Reserved. Available via Academic Free License >= 2.1 OR the modified BSD license. see: http://dojotoolkit.org/license for details */ if(!dojo._hasResource["dijit.layout.ContentPane"]){dojo._hasResource["dijit.layout.ContentPane"]=true;dojo.provide("dijit.layout.ContentPane");dojo.require("dijit._Widget");dojo.require("dijit.layout._LayoutWidget");dojo.require("dojo.parser");dojo.require("dojo.string");dojo.require("dojo.html");dojo.requireLocalization("dijit","loading",null,"ar,ca,cs,da,de,el,es,fi,fr,he,hu,it,ja,ko,ROOT,nb,nl,pl,pt,pt-pt,ru,sk,sl,sv,th,tr,zh,zh-tw");dojo.declare("dijit.layout.ContentPane",dijit._Widget,{href:"",extractContent:false,parseOnLoad:true,preventCache:false,preload:false,refreshOnShow:false,loadingMessage:"<span class='dijitContentPaneLoading'>${loadingState}</span>",errorMessage:"<span class='dijitContentPaneError'>${errorState}</span>",isLoaded:false,baseClass:"dijitContentPane",doLayout:true,_isRealContent:true,postMixInProperties:function(){this.inherited(arguments);var _1=dojo.i18n.getLocalization("dijit","loading",this.lang);this.loadingMessage=dojo.string.substitute(this.loadingMessage,_1);this.errorMessage=dojo.string.substitute(this.errorMessage,_1);},buildRendering:function(){this.inherited(arguments);if(!this.containerNode){this.containerNode=this.domNode;}},postCreate:function(){this.domNode.title="";if(!dijit.hasWaiRole(this.domNode)){dijit.setWaiRole(this.domNode,"group");}dojo.addClass(this.domNode,this.baseClass);},startup:function(){if(this._started){return;}if(this.doLayout!="false"&&this.doLayout!==false){this._checkIfSingleChild();if(this._singleChild){this._singleChild.startup();}}this._loadCheck();this.inherited(arguments);},_checkIfSingleChild:function(){var _2=dojo.query(">",this.containerNode),_3=_2.filter(function(_4){return dojo.hasAttr(_4,"dojoType")||dojo.hasAttr(_4,"widgetId");}),_5=dojo.filter(_3.map(dijit.byNode),function(_6){return _6&&_6.domNode&&_6.resize;});if(_2.length==_3.length&&_5.length==1){this.isContainer=true;this._singleChild=_5[0];}else{delete this.isContainer;delete this._singleChild;}},refresh:function(){return this._prepareLoad(true);},setHref:function(_7){dojo.deprecated("dijit.layout.ContentPane.setHref() is deprecated.\tUse attr('href', ...) instead.","","2.0");return this.attr("href",_7);},_setHrefAttr:function(_8){this.href=_8;if(this._created){return this._prepareLoad();}},setContent:function(_9){dojo.deprecated("dijit.layout.ContentPane.setContent() is deprecated. Use attr('content', ...) instead.","","2.0");this.attr("content",_9);},_setContentAttr:function(_a){this.href="";this.cancel();this._setContent(_a||"");this._isDownloaded=false;},_getContentAttr:function(){return this.containerNode.innerHTML;},cancel:function(){if(this._xhrDfd&&(this._xhrDfd.fired==-1)){this._xhrDfd.cancel();}delete this._xhrDfd;},destroyRecursive:function(_b){if(this._beingDestroyed){return;}this._beingDestroyed=true;this.inherited(arguments);},resize:function(_c){dojo.marginBox(this.domNode,_c);var _d=this.containerNode,mb=dojo.mixin(dojo.marginBox(_d),_c||{});var cb=this._contentBox=dijit.layout.marginBox2contentBox(_d,mb);if(this._singleChild&&this._singleChild.resize){this._singleChild.resize({w:cb.w,h:cb.h});}},_prepareLoad:function(_10){this.cancel();this.isLoaded=false;this._loadCheck(_10);},_isShown:function(){if("open" in this){return this.open;}else{var _11=this.domNode;return (_11.style.display!="none")&&(_11.style.visibility!="hidden");}},_loadCheck:function(_12){var _13=this._isShown();if(this.href&&(_12||(this.preload&&!this.isLoaded&&!this._xhrDfd)||(this.refreshOnShow&&_13&&!this._xhrDfd)||(!this.isLoaded&&_13&&!this._xhrDfd))){this._downloadExternalContent();}},_downloadExternalContent:function(){this._setContent(this.onDownloadStart(),true);var _14=this;var _15={preventCache:(this.preventCache||this.refreshOnShow),url:this.href,handleAs:"text"};if(dojo.isObject(this.ioArgs)){dojo.mixin(_15,this.ioArgs);}var _16=this._xhrDfd=(this.ioMethod||dojo.xhrGet)(_15);_16.addCallback(function(_17){try{_14._isDownloaded=true;_14._setContent(_17,false);_14.onDownloadEnd();}catch(err){_14._onError("Content",err);}delete _14._xhrDfd;return _17;});_16.addErrback(function(err){if(!_16.cancelled){_14._onError("Download",err);}delete _14._xhrDfd;return err;});},_onLoadHandler:function(_19){this.isLoaded=true;try{this.onLoad(_19);}catch(e){console.error("Error "+this.widgetId+" running custom onLoad code");}},_onUnloadHandler:function(){this.isLoaded=false;try{this.onUnload();}catch(e){console.error("Error "+this.widgetId+" running custom onUnload code");}},destroyDescendants:function(){if(this._isRealContent){this._onUnloadHandler();}var _1a=this._contentSetter;if(_1a){_1a.empty();}else{this.inherited(arguments);dojo.html._emptyNode(this.containerNode);}},_setContent:function(_1b,_1c){this.destroyDescendants();this._isRealContent=!_1c;var _1d=this._contentSetter;if(!(_1d&&_1d instanceof dojo.html._ContentSetter)){_1d=this._contentSetter=new dojo.html._ContentSetter({node:this.containerNode,_onError:dojo.hitch(this,this._onError),onContentError:dojo.hitch(this,function(e){var _1f=this.onContentError(e);try{this.containerNode.innerHTML=_1f;}catch(e){console.error("Fatal "+this.id+" could not change content due to "+e.message,e);}})});}var _20=dojo.mixin({cleanContent:this.cleanContent,extractContent:this.extractContent,parseContent:this.parseOnLoad},this._contentSetterParams||{});dojo.mixin(_1d,_20);_1d.set((dojo.isObject(_1b)&&_1b.domNode)?_1b.domNode:_1b);delete this._contentSetterParams;if(!_1c){if(this.doLayout!="false"&&this.doLayout!==false){this._checkIfSingleChild();if(this._singleChild&&this._singleChild.resize){this._singleChild.startup();var cb=this._contentBox||dojo.contentBox(this.containerNode);this._singleChild.resize({w:cb.w,h:cb.h});}}this._onLoadHandler(_1b);}},_onError:function(_22,err,_24){var _25=this["on"+_22+"Error"].call(this,err);if(_24){console.error(_24,err);}else{if(_25){this._setContent(_25,true);}}},_createSubWidgets:function(){try{dojo.parser.parse(this.containerNode,true);}catch(e){this._onError("Content",e,"Couldn't create widgets in "+this.id+(this.href?" from "+this.href:""));}},onLoad:function(_26){},onUnload:function(){},onDownloadStart:function(){return this.loadingMessage;},onContentError:function(_27){},onDownloadError:function(_28){return this.errorMessage;},onDownloadEnd:function(){}});}�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000175�00000000000�011570� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/layout/BorderContainer.js����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/l0000644�0000000�0000000�00000024060�11360615636�027222� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* Copyright (c) 2004-2008, The Dojo Foundation All Rights Reserved. Available via Academic Free License >= 2.1 OR the modified BSD license. see: http://dojotoolkit.org/license for details */ if(!dojo._hasResource["dijit.layout.BorderContainer"]){dojo._hasResource["dijit.layout.BorderContainer"]=true;dojo.provide("dijit.layout.BorderContainer");dojo.require("dijit.layout._LayoutWidget");dojo.require("dojo.cookie");dojo.declare("dijit.layout.BorderContainer",dijit.layout._LayoutWidget,{design:"headline",gutters:true,liveSplitters:true,persist:false,baseClass:"dijitBorderContainer",_splitterClass:"dijit.layout._Splitter",postMixInProperties:function(){if(!this.gutters){this.baseClass+="NoGutter";}this.inherited(arguments);},postCreate:function(){this.inherited(arguments);this._splitters={};this._splitterThickness={};},startup:function(){if(this._started){return;}dojo.forEach(this.getChildren(),this._setupChild,this);this.inherited(arguments);},_setupChild:function(_1){var _2=_1.region;if(_2){this.inherited(arguments);dojo.addClass(_1.domNode,this.baseClass+"Pane");var _3=this.isLeftToRight();if(_2=="leading"){_2=_3?"left":"right";}if(_2=="trailing"){_2=_3?"right":"left";}this["_"+_2]=_1.domNode;this["_"+_2+"Widget"]=_1;if((_1.splitter||this.gutters)&&!this._splitters[_2]){var _4=dojo.getObject(_1.splitter?this._splitterClass:"dijit.layout._Gutter");var _5={left:"right",right:"left",top:"bottom",bottom:"top",leading:"trailing",trailing:"leading"};var _6=new _4({container:this,child:_1,region:_2,oppNode:dojo.query("[region="+_5[_1.region]+"]",this.domNode)[0],live:this.liveSplitters});_6.isSplitter=true;this._splitters[_2]=_6.domNode;dojo.place(this._splitters[_2],_1.domNode,"after");_6.startup();}_1.region=_2;}},_computeSplitterThickness:function(_7){this._splitterThickness[_7]=this._splitterThickness[_7]||dojo.marginBox(this._splitters[_7])[(/top|bottom/.test(_7)?"h":"w")];},layout:function(){for(var _8 in this._splitters){this._computeSplitterThickness(_8);}this._layoutChildren();},addChild:function(_9,_a){this.inherited(arguments);if(this._started){this._layoutChildren();}},removeChild:function(_b){var _c=_b.region;var _d=this._splitters[_c];if(_d){dijit.byNode(_d).destroy();delete this._splitters[_c];delete this._splitterThickness[_c];}this.inherited(arguments);delete this["_"+_c];delete this["_"+_c+"Widget"];if(this._started){this._layoutChildren(_b.region);}dojo.removeClass(_b.domNode,this.baseClass+"Pane");},getChildren:function(){return dojo.filter(this.inherited(arguments),function(_e){return !_e.isSplitter;});},getSplitter:function(_f){var _10=this._splitters[_f];return _10?dijit.byNode(_10):null;},resize:function(_11,_12){if(!this.cs||!this.pe){var _13=this.domNode;this.cs=dojo.getComputedStyle(_13);this.pe=dojo._getPadExtents(_13,this.cs);this.pe.r=dojo._toPixelValue(_13,this.cs.paddingRight);this.pe.b=dojo._toPixelValue(_13,this.cs.paddingBottom);dojo.style(_13,"padding","0px");}this.inherited(arguments);},_layoutChildren:function(_14){var _15=(this.design=="sidebar");var _16=0,_17=0,_18=0,_19=0;var _1a={},_1b={},_1c={},_1d={},_1e=(this._center&&this._center.style)||{};var _1f=/left|right/.test(_14);var _20=!_14||(!_1f&&!_15);var _21=!_14||(_1f&&_15);if(this._top){_1a=_21&&this._top.style;_16=dojo.marginBox(this._top).h;}if(this._left){_1b=_20&&this._left.style;_18=dojo.marginBox(this._left).w;}if(this._right){_1c=_20&&this._right.style;_19=dojo.marginBox(this._right).w;}if(this._bottom){_1d=_21&&this._bottom.style;_17=dojo.marginBox(this._bottom).h;}var _22=this._splitters;var _23=_22.top,_24=_22.bottom,_25=_22.left,_26=_22.right;var _27=this._splitterThickness;var _28=_27.top||0,_29=_27.left||0,_2a=_27.right||0,_2b=_27.bottom||0;if(_29>50||_2a>50){setTimeout(dojo.hitch(this,function(){this._splitterThickness={};for(var _2c in this._splitters){this._computeSplitterThickness(_2c);}this._layoutChildren();}),50);return false;}var pe=this.pe;var _2e={left:(_15?_18+_29:0)+pe.l+"px",right:(_15?_19+_2a:0)+pe.r+"px"};if(_23){dojo.mixin(_23.style,_2e);_23.style.top=_16+pe.t+"px";}if(_24){dojo.mixin(_24.style,_2e);_24.style.bottom=_17+pe.b+"px";}_2e={top:(_15?0:_16+_28)+pe.t+"px",bottom:(_15?0:_17+_2b)+pe.b+"px"};if(_25){dojo.mixin(_25.style,_2e);_25.style.left=_18+pe.l+"px";}if(_26){dojo.mixin(_26.style,_2e);_26.style.right=_19+pe.r+"px";}dojo.mixin(_1e,{top:pe.t+_16+_28+"px",left:pe.l+_18+_29+"px",right:pe.r+_19+_2a+"px",bottom:pe.b+_17+_2b+"px"});var _2f={top:_15?pe.t+"px":_1e.top,bottom:_15?pe.b+"px":_1e.bottom};dojo.mixin(_1b,_2f);dojo.mixin(_1c,_2f);_1b.left=pe.l+"px";_1c.right=pe.r+"px";_1a.top=pe.t+"px";_1d.bottom=pe.b+"px";if(_15){_1a.left=_1d.left=_18+_29+pe.l+"px";_1a.right=_1d.right=_19+_2a+pe.r+"px";}else{_1a.left=_1d.left=pe.l+"px";_1a.right=_1d.right=pe.r+"px";}var _30=this._borderBox.h-pe.t-pe.b,_31=_30-(_16+_28+_17+_2b),_32=_15?_30:_31;var _33=this._borderBox.w-pe.l-pe.r,_34=_33-(_18+_29+_19+_2a),_35=_15?_34:_33;var dim={top:{w:_35,h:_16},bottom:{w:_35,h:_17},left:{w:_18,h:_32},right:{w:_19,h:_32},center:{h:_31,w:_34}};var _37=dojo.isIE||dojo.some(this.getChildren(),function(_38){return _38.domNode.tagName=="TEXTAREA"||_38.domNode.tagName=="INPUT";});if(_37){var _39=function(_3a,_3b,_3c){if(_3a){(_3a.resize?_3a.resize(_3b,_3c):dojo.marginBox(_3a.domNode,_3b));}};if(_25){_25.style.height=_32;}if(_26){_26.style.height=_32;}_39(this._leftWidget,{h:_32},dim.left);_39(this._rightWidget,{h:_32},dim.right);if(_23){_23.style.width=_35;}if(_24){_24.style.width=_35;}_39(this._topWidget,{w:_35},dim.top);_39(this._bottomWidget,{w:_35},dim.bottom);_39(this._centerWidget,dim.center);}else{var _3d={};if(_14){_3d[_14]=_3d.center=true;if(/top|bottom/.test(_14)&&this.design!="sidebar"){_3d.left=_3d.right=true;}else{if(/left|right/.test(_14)&&this.design=="sidebar"){_3d.top=_3d.bottom=true;}}}dojo.forEach(this.getChildren(),function(_3e){if(_3e.resize&&(!_14||_3e.region in _3d)){_3e.resize(null,dim[_3e.region]);}},this);}},destroy:function(){for(region in this._splitters){var _3f=this._splitters[region];dijit.byNode(_3f).destroy();dojo._destroyElement(_3f);}delete this._splitters;delete this._splitterThickness;this.inherited(arguments);}});dojo.extend(dijit._Widget,{region:"",splitter:false,minSize:0,maxSize:Infinity});dojo.require("dijit._Templated");dojo.declare("dijit.layout._Splitter",[dijit._Widget,dijit._Templated],{live:true,templateString:"<div class=\"dijitSplitter\" dojoAttachEvent=\"onkeypress:_onKeyPress,onmousedown:_startDrag\" tabIndex=\"0\" waiRole=\"separator\"><div class=\"dijitSplitterThumb\"></div></div>",postCreate:function(){this.inherited(arguments);this.horizontal=/top|bottom/.test(this.region);dojo.addClass(this.domNode,"dijitSplitter"+(this.horizontal?"H":"V"));this._factor=/top|left/.test(this.region)?1:-1;this._minSize=this.child.minSize;this.child.domNode._recalc=true;this.connect(this.container,"resize",function(){this.child.domNode._recalc=true;});this._cookieName=this.container.id+"_"+this.region;if(this.container.persist){var _40=dojo.cookie(this._cookieName);if(_40){this.child.domNode.style[this.horizontal?"height":"width"]=_40;}}},_computeMaxSize:function(){var dim=this.horizontal?"h":"w",_42=this.container._splitterThickness[this.region];var _43=dojo.contentBox(this.container.domNode)[dim]-(this.oppNode?dojo.marginBox(this.oppNode)[dim]:0)-20-_42*2;this._maxSize=Math.min(this.child.maxSize,_43);},_startDrag:function(e){if(this.child.domNode._recalc){this._computeMaxSize();this.child.domNode._recalc=false;}if(!this.cover){this.cover=dojo.doc.createElement("div");dojo.addClass(this.cover,"dijitSplitterCover");dojo.place(this.cover,this.child.domNode,"after");}else{this.cover.style.zIndex=1;}if(this.fake){dojo._destroyElement(this.fake);}if(!(this._resize=this.live)){(this.fake=this.domNode.cloneNode(true)).removeAttribute("id");dojo.addClass(this.domNode,"dijitSplitterShadow");dojo.place(this.fake,this.domNode,"after");}dojo.addClass(this.domNode,"dijitSplitterActive");var _45=this._factor,max=this._maxSize,min=this._minSize||20,_48=this.horizontal,_49=_48?"pageY":"pageX",_4a=e[_49],_4b=this.domNode.style,dim=_48?"h":"w",_4d=dojo.marginBox(this.child.domNode)[dim],_4e=this.region,_4f=parseInt(this.domNode.style[_4e],10),_50=this._resize,mb={},_52=this.child.domNode,_53=dojo.hitch(this.container,this.container._layoutChildren),de=dojo.doc.body;this._handlers=(this._handlers||[]).concat([dojo.connect(de,"onmousemove",this._drag=function(e,_56){var _57=e[_49]-_4a,_58=_45*_57+_4d,_59=Math.max(Math.min(_58,max),min);if(_50||_56){mb[dim]=_59;dojo.marginBox(_52,mb);_53(_4e);}_4b[_4e]=_45*_57+_4f+(_59-_58)+"px";}),dojo.connect(de,"onmouseup",this,"_stopDrag")]);dojo.stopEvent(e);},_stopDrag:function(e){try{if(this.cover){this.cover.style.zIndex=-1;}if(this.fake){dojo._destroyElement(this.fake);}dojo.removeClass(this.domNode,"dijitSplitterActive");dojo.removeClass(this.domNode,"dijitSplitterShadow");this._drag(e);this._drag(e,true);}finally{this._cleanupHandlers();if(this.oppNode){this.oppNode._recalc=true;}delete this._drag;}if(this.container.persist){dojo.cookie(this._cookieName,this.child.domNode.style[this.horizontal?"height":"width"],{expires:365});}},_cleanupHandlers:function(){dojo.forEach(this._handlers,dojo.disconnect);delete this._handlers;},_onKeyPress:function(e){if(this.child.domNode._recalc){this._computeMaxSize();this.child.domNode._recalc=false;}this._resize=true;var _5c=this.horizontal;var _5d=1;var dk=dojo.keys;switch(e.charOrCode){case _5c?dk.UP_ARROW:dk.LEFT_ARROW:_5d*=-1;case _5c?dk.DOWN_ARROW:dk.RIGHT_ARROW:break;default:return;}var _5f=dojo.marginBox(this.child.domNode)[_5c?"h":"w"]+this._factor*_5d;var mb={};mb[this.horizontal?"h":"w"]=Math.max(Math.min(_5f,this._maxSize),this._minSize);dojo.marginBox(this.child.domNode,mb);if(this.oppNode){this.oppNode._recalc=true;}this.container._layoutChildren(this.region);dojo.stopEvent(e);},destroy:function(){this._cleanupHandlers();delete this.child;delete this.container;delete this.fake;this.inherited(arguments);}});dojo.declare("dijit.layout._Gutter",[dijit._Widget,dijit._Templated],{templateString:"<div class=\"dijitGutter\" waiRole=\"presentation\"></div>",postCreate:function(){this.horizontal=/top|bottom/.test(this.region);dojo.addClass(this.domNode,"dijitGutter"+(this.horizontal?"H":"V"));}});}��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000173�00000000000�011566� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/layout/_LayoutWidget.js������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/l0000644�0000000�0000000�00000006074�11360615632�027223� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* Copyright (c) 2004-2008, The Dojo Foundation All Rights Reserved. Available via Academic Free License >= 2.1 OR the modified BSD license. see: http://dojotoolkit.org/license for details */ if(!dojo._hasResource["dijit.layout._LayoutWidget"]){dojo._hasResource["dijit.layout._LayoutWidget"]=true;dojo.provide("dijit.layout._LayoutWidget");dojo.require("dijit._Widget");dojo.require("dijit._Container");dojo.declare("dijit.layout._LayoutWidget",[dijit._Widget,dijit._Container,dijit._Contained],{baseClass:"dijitLayoutContainer",isLayoutContainer:true,postCreate:function(){dojo.addClass(this.domNode,"dijitContainer");dojo.addClass(this.domNode,this.baseClass);},startup:function(){if(this._started){return;}dojo.forEach(this.getChildren(),function(_1){_1.startup();});if(!this.getParent||!this.getParent()){this.resize();this.connect(dojo.global,"onresize","resize");}this.inherited(arguments);},resize:function(_2,_3){var _4=this.domNode;if(_2){dojo.marginBox(_4,_2);if(_2.t){_4.style.top=_2.t+"px";}if(_2.l){_4.style.left=_2.l+"px";}}var mb=_3||{};dojo.mixin(mb,_2||{});if(!("h" in mb)||!("w" in mb)){mb=dojo.mixin(dojo.marginBox(_4),mb);}var cs=dojo.getComputedStyle(_4);var me=dojo._getMarginExtents(_4,cs);var be=dojo._getBorderExtents(_4,cs);var bb=this._borderBox={w:mb.w-(me.w+be.w),h:mb.h-(me.h+be.h)};var pe=dojo._getPadExtents(_4,cs);this._contentBox={l:dojo._toPixelValue(_4,cs.paddingLeft),t:dojo._toPixelValue(_4,cs.paddingTop),w:bb.w-pe.w,h:bb.h-pe.h};this.layout();},layout:function(){},_setupChild:function(_b){if(_b.baseClass){dojo.addClass(_b.domNode,this.baseClass+"-"+_b.baseClass);}},addChild:function(_c,_d){this.inherited(arguments);if(this._started){this._setupChild(_c);}},removeChild:function(_e){if(_e.baseClass){dojo.removeClass(_e.domNode,this.baseClass+"-"+_e.baseClass);}this.inherited(arguments);}});dijit.layout.marginBox2contentBox=function(_f,mb){var cs=dojo.getComputedStyle(_f);var me=dojo._getMarginExtents(_f,cs);var pb=dojo._getPadBorderExtents(_f,cs);return {l:dojo._toPixelValue(_f,cs.paddingLeft),t:dojo._toPixelValue(_f,cs.paddingTop),w:mb.w-(me.w+pb.w),h:mb.h-(me.h+pb.h)};};(function(){var _14=function(_15){return _15.substring(0,1).toUpperCase()+_15.substring(1);};var _16=function(_17,dim){_17.resize?_17.resize(dim):dojo.marginBox(_17.domNode,dim);dojo.mixin(_17,dojo.marginBox(_17.domNode));dojo.mixin(_17,dim);};dijit.layout.layoutChildren=function(_19,dim,_1b){dim=dojo.mixin({},dim);dojo.addClass(_19,"dijitLayoutContainer");_1b=dojo.filter(_1b,function(_1c){return _1c.layoutAlign!="client";}).concat(dojo.filter(_1b,function(_1d){return _1d.layoutAlign=="client";}));dojo.forEach(_1b,function(_1e){var elm=_1e.domNode,pos=_1e.layoutAlign;var _21=elm.style;_21.left=dim.l+"px";_21.top=dim.t+"px";_21.bottom=_21.right="auto";dojo.addClass(elm,"dijitAlign"+_14(pos));if(pos=="top"||pos=="bottom"){_16(_1e,{w:dim.w});dim.h-=_1e.h;if(pos=="top"){dim.t+=_1e.h;}else{_21.top=dim.t+dim.h+"px";}}else{if(pos=="left"||pos=="right"){_16(_1e,{h:dim.h});dim.w-=_1e.w;if(pos=="left"){dim.l+=_1e.w;}else{_21.left=dim.l+dim.w+"px";}}else{if(pos=="client"){_16(_1e,dim);}}}});};})();}��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000166�00000000000�011570� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/layout/LinkPane.js�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/l0000644�0000000�0000000�00000001357�11360615632�027222� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* Copyright (c) 2004-2008, The Dojo Foundation All Rights Reserved. Available via Academic Free License >= 2.1 OR the modified BSD license. see: http://dojotoolkit.org/license for details */ if(!dojo._hasResource["dijit.layout.LinkPane"]){dojo._hasResource["dijit.layout.LinkPane"]=true;dojo.provide("dijit.layout.LinkPane");dojo.require("dijit.layout.ContentPane");dojo.require("dijit._Templated");dojo.declare("dijit.layout.LinkPane",[dijit.layout.ContentPane,dijit._Templated],{templateString:"<div class=\"dijitLinkPane\"></div>",buildRendering:function(){this.inherited(arguments);this.containerNode=this.domNode;},postCreate:function(){if(this.srcNodeRef){this.title+=this.srcNodeRef.innerHTML;}this.inherited("postCreate",arguments);}});}���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000174�00000000000�011567� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/layout/SplitContainer.js�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/l0000644�0000000�0000000�00000020376�11360615634�027226� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* Copyright (c) 2004-2008, The Dojo Foundation All Rights Reserved. Available via Academic Free License >= 2.1 OR the modified BSD license. see: http://dojotoolkit.org/license for details */ if(!dojo._hasResource["dijit.layout.SplitContainer"]){dojo._hasResource["dijit.layout.SplitContainer"]=true;dojo.provide("dijit.layout.SplitContainer");dojo.require("dojo.cookie");dojo.require("dijit.layout._LayoutWidget");dojo.declare("dijit.layout.SplitContainer",dijit.layout._LayoutWidget,{constructor:function(){dojo.deprecated("dijit.layout.SplitContainer is deprecated","use BorderContainer with splitter instead",2);},activeSizing:false,sizerWidth:7,orientation:"horizontal",persist:true,baseClass:"dijitSplitContainer",postMixInProperties:function(){this.inherited("postMixInProperties",arguments);this.isHorizontal=(this.orientation=="horizontal");},postCreate:function(){this.inherited(arguments);this.sizers=[];if(dojo.isMozilla){this.domNode.style.overflow="-moz-scrollbars-none";}if(typeof this.sizerWidth=="object"){try{this.sizerWidth=parseInt(this.sizerWidth.toString());}catch(e){this.sizerWidth=7;}}var _1=this.virtualSizer=dojo.doc.createElement("div");_1.style.position="relative";_1.style.zIndex=10;_1.className=this.isHorizontal?"dijitSplitContainerVirtualSizerH":"dijitSplitContainerVirtualSizerV";this.domNode.appendChild(_1);dojo.setSelectable(_1,false);},destroy:function(){delete this.virtualSizer;dojo.forEach(this._ownconnects,dojo.disconnect);this.inherited(arguments);},startup:function(){if(this._started){return;}dojo.forEach(this.getChildren(),function(_2,i,_4){this._setupChild(_2);if(i<_4.length-1){this._addSizer();}},this);if(this.persist){this._restoreState();}this.inherited(arguments);},_setupChild:function(_5){this.inherited(arguments);_5.domNode.style.position="absolute";dojo.addClass(_5.domNode,"dijitSplitPane");},_addSizer:function(){var i=this.sizers.length;var _7=this.sizers[i]=dojo.doc.createElement("div");this.domNode.appendChild(_7);_7.className=this.isHorizontal?"dijitSplitContainerSizerH":"dijitSplitContainerSizerV";var _8=dojo.doc.createElement("div");_8.className="thumb";_7.appendChild(_8);var _9=this;var _a=(function(){var _b=i;return function(e){_9.beginSizing(e,_b);};})();this.connect(_7,"onmousedown",_a);dojo.setSelectable(_7,false);},removeChild:function(_d){if(this.sizers.length){var i=dojo.indexOf(this.getChildren(),_d);if(i!=-1){if(i==this.sizers.length){i--;}dojo._destroyElement(this.sizers[i]);this.sizers.splice(i,1);}}this.inherited(arguments);if(this._started){this.layout();}},addChild:function(_f,_10){this.inherited(arguments);if(this._started){var _11=this.getChildren();if(_11.length>1){this._addSizer();}this.layout();}},layout:function(){this.paneWidth=this._contentBox.w;this.paneHeight=this._contentBox.h;var _12=this.getChildren();if(!_12.length){return;}var _13=this.isHorizontal?this.paneWidth:this.paneHeight;if(_12.length>1){_13-=this.sizerWidth*(_12.length-1);}var _14=0;dojo.forEach(_12,function(_15){_14+=_15.sizeShare;});var _16=_13/_14;var _17=0;dojo.forEach(_12.slice(0,_12.length-1),function(_18){var _19=Math.round(_16*_18.sizeShare);_18.sizeActual=_19;_17+=_19;});_12[_12.length-1].sizeActual=_13-_17;this._checkSizes();var pos=0;var _1b=_12[0].sizeActual;this._movePanel(_12[0],pos,_1b);_12[0].position=pos;pos+=_1b;if(!this.sizers){return;}dojo.some(_12.slice(1),function(_1c,i){if(!this.sizers[i]){return true;}this._moveSlider(this.sizers[i],pos,this.sizerWidth);this.sizers[i].position=pos;pos+=this.sizerWidth;_1b=_1c.sizeActual;this._movePanel(_1c,pos,_1b);_1c.position=pos;pos+=_1b;},this);},_movePanel:function(_1e,pos,_20){if(this.isHorizontal){_1e.domNode.style.left=pos+"px";_1e.domNode.style.top=0;var box={w:_20,h:this.paneHeight};if(_1e.resize){_1e.resize(box);}else{dojo.marginBox(_1e.domNode,box);}}else{_1e.domNode.style.left=0;_1e.domNode.style.top=pos+"px";var box={w:this.paneWidth,h:_20};if(_1e.resize){_1e.resize(box);}else{dojo.marginBox(_1e.domNode,box);}}},_moveSlider:function(_22,pos,_24){if(this.isHorizontal){_22.style.left=pos+"px";_22.style.top=0;dojo.marginBox(_22,{w:_24,h:this.paneHeight});}else{_22.style.left=0;_22.style.top=pos+"px";dojo.marginBox(_22,{w:this.paneWidth,h:_24});}},_growPane:function(_25,_26){if(_25>0){if(_26.sizeActual>_26.sizeMin){if((_26.sizeActual-_26.sizeMin)>_25){_26.sizeActual=_26.sizeActual-_25;_25=0;}else{_25-=_26.sizeActual-_26.sizeMin;_26.sizeActual=_26.sizeMin;}}}return _25;},_checkSizes:function(){var _27=0;var _28=0;var _29=this.getChildren();dojo.forEach(_29,function(_2a){_28+=_2a.sizeActual;_27+=_2a.sizeMin;});if(_27<=_28){var _2b=0;dojo.forEach(_29,function(_2c){if(_2c.sizeActual<_2c.sizeMin){_2b+=_2c.sizeMin-_2c.sizeActual;_2c.sizeActual=_2c.sizeMin;}});if(_2b>0){var _2d=this.isDraggingLeft?_29.reverse():_29;dojo.forEach(_2d,function(_2e){_2b=this._growPane(_2b,_2e);},this);}}else{dojo.forEach(_29,function(_2f){_2f.sizeActual=Math.round(_28*(_2f.sizeMin/_27));});}},beginSizing:function(e,i){var _32=this.getChildren();this.paneBefore=_32[i];this.paneAfter=_32[i+1];this.isSizing=true;this.sizingSplitter=this.sizers[i];if(!this.cover){this.cover=dojo.doc.createElement("div");this.domNode.appendChild(this.cover);var s=this.cover.style;s.position="absolute";s.zIndex=1;s.top=0;s.left=0;s.width="100%";s.height="100%";}else{this.cover.style.zIndex=1;}this.sizingSplitter.style.zIndex=2;this.originPos=dojo.coords(_32[0].domNode,true);if(this.isHorizontal){var _34=e.layerX||e.offsetX||0;var _35=e.pageX;this.originPos=this.originPos.x;}else{var _34=e.layerY||e.offsetY||0;var _35=e.pageY;this.originPos=this.originPos.y;}this.startPoint=this.lastPoint=_35;this.screenToClientOffset=_35-_34;this.dragOffset=this.lastPoint-this.paneBefore.sizeActual-this.originPos-this.paneBefore.position;if(!this.activeSizing){this._showSizingLine();}this._ownconnects=[];this._ownconnects.push(dojo.connect(dojo.doc.documentElement,"onmousemove",this,"changeSizing"));this._ownconnects.push(dojo.connect(dojo.doc.documentElement,"onmouseup",this,"endSizing"));dojo.stopEvent(e);},changeSizing:function(e){if(!this.isSizing){return;}this.lastPoint=this.isHorizontal?e.pageX:e.pageY;this.movePoint();if(this.activeSizing){this._updateSize();}else{this._moveSizingLine();}dojo.stopEvent(e);},endSizing:function(e){if(!this.isSizing){return;}if(this.cover){this.cover.style.zIndex=-1;}if(!this.activeSizing){this._hideSizingLine();}this._updateSize();this.isSizing=false;if(this.persist){this._saveState(this);}dojo.forEach(this._ownconnects,dojo.disconnect);},movePoint:function(){var p=this.lastPoint-this.screenToClientOffset;var a=p-this.dragOffset;a=this.legaliseSplitPoint(a);p=a+this.dragOffset;this.lastPoint=p+this.screenToClientOffset;},legaliseSplitPoint:function(a){a+=this.sizingSplitter.position;this.isDraggingLeft=!!(a>0);if(!this.activeSizing){var min=this.paneBefore.position+this.paneBefore.sizeMin;if(a<min){a=min;}var max=this.paneAfter.position+(this.paneAfter.sizeActual-(this.sizerWidth+this.paneAfter.sizeMin));if(a>max){a=max;}}a-=this.sizingSplitter.position;this._checkSizes();return a;},_updateSize:function(){var pos=this.lastPoint-this.dragOffset-this.originPos;var _3e=this.paneBefore.position;var _3f=this.paneAfter.position+this.paneAfter.sizeActual;this.paneBefore.sizeActual=pos-_3e;this.paneAfter.position=pos+this.sizerWidth;this.paneAfter.sizeActual=_3f-this.paneAfter.position;dojo.forEach(this.getChildren(),function(_40){_40.sizeShare=_40.sizeActual;});if(this._started){this.layout();}},_showSizingLine:function(){this._moveSizingLine();dojo.marginBox(this.virtualSizer,this.isHorizontal?{w:this.sizerWidth,h:this.paneHeight}:{w:this.paneWidth,h:this.sizerWidth});this.virtualSizer.style.display="block";},_hideSizingLine:function(){this.virtualSizer.style.display="none";},_moveSizingLine:function(){var pos=(this.lastPoint-this.startPoint)+this.sizingSplitter.position;dojo.style(this.virtualSizer,(this.isHorizontal?"left":"top"),pos+"px");},_getCookieName:function(i){return this.id+"_"+i;},_restoreState:function(){dojo.forEach(this.getChildren(),function(_43,i){var _45=this._getCookieName(i);var _46=dojo.cookie(_45);if(_46){var pos=parseInt(_46);if(typeof pos=="number"){_43.sizeShare=pos;}}},this);},_saveState:function(){if(!this.persist){return;}dojo.forEach(this.getChildren(),function(_48,i){dojo.cookie(this._getCookieName(i),_48.sizeShare,{expires:365});},this);}});dojo.extend(dijit._Widget,{sizeMin:10,sizeShare:10});}������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000172�00000000000�011565� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/layout/TabContainer.js�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/l0000644�0000000�0000000�00000010507�11360615632�027217� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* Copyright (c) 2004-2008, The Dojo Foundation All Rights Reserved. Available via Academic Free License >= 2.1 OR the modified BSD license. see: http://dojotoolkit.org/license for details */ if(!dojo._hasResource["dijit.layout.TabContainer"]){dojo._hasResource["dijit.layout.TabContainer"]=true;dojo.provide("dijit.layout.TabContainer");dojo.require("dijit.layout.StackContainer");dojo.require("dijit._Templated");dojo.requireLocalization("dijit","common",null,"ar,ca,ROOT,cs,da,de,el,es,fi,fr,he,hu,it,ja,ko,nb,nl,pl,pt,pt-pt,ru,sk,sl,sv,th,tr,zh,zh-tw");dojo.declare("dijit.layout.TabContainer",[dijit.layout.StackContainer,dijit._Templated],{tabPosition:"top",baseClass:"dijitTabContainer",tabStrip:false,templateString:null,templateString:"<div class=\"dijitTabContainer\">\n\t<div dojoAttachPoint=\"tablistNode\"></div>\n\t<div dojoAttachPoint=\"tablistSpacer\" class=\"dijitTabSpacer ${baseClass}-spacer\"></div>\n\t<div class=\"dijitTabPaneWrapper ${baseClass}-container\" dojoAttachPoint=\"containerNode\"></div>\n</div>\n",_controllerWidget:"dijit.layout.TabController",postMixInProperties:function(){this.baseClass+=this.tabPosition.charAt(0).toUpperCase()+this.tabPosition.substr(1).replace(/-.*/,"");this.inherited(arguments);},postCreate:function(){this.inherited(arguments);var _1=dojo.getObject(this._controllerWidget);this.tablist=new _1({id:this.id+"_tablist",tabPosition:this.tabPosition,doLayout:this.doLayout,containerId:this.id,"class":this.baseClass+"-tabs"+(this.doLayout?"":" dijitTabNoLayout")},this.tablistNode);if(this.tabStrip){dojo.addClass(this.tablist.domNode,this.baseClass+"Strip");}},_setupChild:function(_2){dojo.addClass(_2.domNode,"dijitTabPane");this.inherited(arguments);return _2;},startup:function(){if(this._started){return;}this.tablist.startup();this.inherited(arguments);},layout:function(){if(!this.doLayout){return;}var _3=this.tabPosition.replace(/-h/,"");var _4=[{domNode:this.tablist.domNode,layoutAlign:_3},{domNode:this.tablistSpacer,layoutAlign:_3},{domNode:this.containerNode,layoutAlign:"client"}];dijit.layout.layoutChildren(this.domNode,this._contentBox,_4);this._containerContentBox=dijit.layout.marginBox2contentBox(this.containerNode,_4[2]);if(this.selectedChildWidget){this._showChild(this.selectedChildWidget);if(this.doLayout&&this.selectedChildWidget.resize){this.selectedChildWidget.resize(this._containerContentBox);}}},destroy:function(){if(this.tablist){this.tablist.destroy();}this.inherited(arguments);}});dojo.declare("dijit.layout.TabController",dijit.layout.StackController,{templateString:"<div wairole='tablist' dojoAttachEvent='onkeypress:onkeypress'></div>",tabPosition:"top",doLayout:true,buttonWidget:"dijit.layout._TabButton",_rectifyRtlTabList:function(){if(0>=this.tabPosition.indexOf("-h")){return;}if(!this.pane2button){return;}var _5=0;for(var _6 in this.pane2button){var ow=this.pane2button[_6].innerDiv.scrollWidth;_5=Math.max(_5,ow);}for(_6 in this.pane2button){this.pane2button[_6].innerDiv.style.width=_5+"px";}}});dojo.declare("dijit.layout._TabButton",dijit.layout._StackButton,{baseClass:"dijitTab",templateString:"<div waiRole=\"presentation\" dojoAttachEvent='onclick:onClick,onmouseenter:_onMouse,onmouseleave:_onMouse'>\n <div waiRole=\"presentation\" class='dijitTabInnerDiv' dojoAttachPoint='innerDiv'>\n <div waiRole=\"presentation\" class='dijitTabContent' dojoAttachPoint='tabContent'>\n\t <span dojoAttachPoint='containerNode,focusNode' class='tabLabel'>${!label}</span><img class =\"dijitTabButtonSpacer\" src=\"${_blankGif}\" />\n\t <div class=\"dijitInline closeNode\" dojoAttachPoint='closeNode' dojoAttachEvent='onclick:onClickCloseButton'>\n\t \t<img src=\"${_blankGif}\" alt=\"\" dojoAttachPoint='closeButtonNode' class='closeImage' dojoAttachEvent='onmouseenter:_onMouse, onmouseleave:_onMouse' stateModifier='CloseButton' waiRole=\"presentation\"/>\n\t <span dojoAttachPoint='closeText' class='closeText'>x</span>\n\t </div>\n </div>\n </div>\n</div>\n",_scroll:false,postCreate:function(){if(this.closeButton){dojo.addClass(this.innerDiv,"dijitClosable");var _8=dojo.i18n.getLocalization("dijit","common");if(this.closeNode){dojo.attr(this.closeNode,"title",_8.itemClose);dojo.attr(this.closeButtonNode,"title",_8.itemClose);}}else{this.closeNode.style.display="none";}this.inherited(arguments);dojo.setSelectable(this.containerNode,false);}});}�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000175�00000000000�011570� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/layout/LayoutContainer.js����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/l0000644�0000000�0000000�00000002054�11360615634�027217� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* Copyright (c) 2004-2008, The Dojo Foundation All Rights Reserved. Available via Academic Free License >= 2.1 OR the modified BSD license. see: http://dojotoolkit.org/license for details */ if(!dojo._hasResource["dijit.layout.LayoutContainer"]){dojo._hasResource["dijit.layout.LayoutContainer"]=true;dojo.provide("dijit.layout.LayoutContainer");dojo.require("dijit.layout._LayoutWidget");dojo.declare("dijit.layout.LayoutContainer",dijit.layout._LayoutWidget,{baseClass:"dijitLayoutContainer",constructor:function(){dojo.deprecated("dijit.layout.LayoutContainer is deprecated","use BorderContainer instead",2);},layout:function(){dijit.layout.layoutChildren(this.domNode,this._contentBox,this.getChildren());},addChild:function(_1,_2){this.inherited(arguments);if(this._started){dijit.layout.layoutChildren(this.domNode,this._contentBox,this.getChildren());}},removeChild:function(_3){this.inherited(arguments);if(this._started){dijit.layout.layoutChildren(this.domNode,this._contentBox,this.getChildren());}}});dojo.extend(dijit._Widget,{layoutAlign:"none"});}������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000174�00000000000�011567� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/layout/StackContainer.js�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/l0000644�0000000�0000000�00000017314�11360615634�027224� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* Copyright (c) 2004-2008, The Dojo Foundation All Rights Reserved. Available via Academic Free License >= 2.1 OR the modified BSD license. see: http://dojotoolkit.org/license for details */ if(!dojo._hasResource["dijit.layout.StackContainer"]){dojo._hasResource["dijit.layout.StackContainer"]=true;dojo.provide("dijit.layout.StackContainer");dojo.require("dijit._Templated");dojo.require("dijit.layout._LayoutWidget");dojo.require("dijit.form.Button");dojo.require("dijit.Menu");dojo.requireLocalization("dijit","common",null,"ar,ca,ROOT,cs,da,de,el,es,fi,fr,he,hu,it,ja,ko,nb,nl,pl,pt,pt-pt,ru,sk,sl,sv,th,tr,zh,zh-tw");dojo.declare("dijit.layout.StackContainer",dijit.layout._LayoutWidget,{doLayout:true,baseClass:"dijitStackContainer",_started:false,postCreate:function(){this.inherited(arguments);dijit.setWaiRole(this.containerNode,"tabpanel");this.connect(this.domNode,"onkeypress",this._onKeyPress);},startup:function(){if(this._started){return;}var _1=this.getChildren();dojo.forEach(_1,this._setupChild,this);dojo.some(_1,function(_2){if(_2.selected){this.selectedChildWidget=_2;}return _2.selected;},this);var _3=this.selectedChildWidget;if(!_3&&_1[0]){_3=this.selectedChildWidget=_1[0];_3.selected=true;}if(_3){this._showChild(_3);}dojo.publish(this.id+"-startup",[{children:_1,selected:_3}]);this.inherited(arguments);},_setupChild:function(_4){this.inherited(arguments);_4.domNode.style.display="none";_4.domNode.style.position="relative";_4.domNode.title="";return _4;},addChild:function(_5,_6){this.inherited(arguments);if(this._started){dojo.publish(this.id+"-addChild",[_5,_6]);this.layout();if(!this.selectedChildWidget){this.selectChild(_5);}}},removeChild:function(_7){this.inherited(arguments);if(this._beingDestroyed){return;}if(this._started){dojo.publish(this.id+"-removeChild",[_7]);this.layout();}if(this.selectedChildWidget===_7){this.selectedChildWidget=undefined;if(this._started){var _8=this.getChildren();if(_8.length){this.selectChild(_8[0]);}}}},selectChild:function(_9){_9=dijit.byId(_9);if(this.selectedChildWidget!=_9){this._transition(_9,this.selectedChildWidget);this.selectedChildWidget=_9;dojo.publish(this.id+"-selectChild",[_9]);}},_transition:function(_a,_b){if(_b){this._hideChild(_b);}this._showChild(_a);if(this.doLayout&&_a.resize){_a.resize(this._containerContentBox||this._contentBox);}},_adjacent:function(_c){var _d=this.getChildren();var _e=dojo.indexOf(_d,this.selectedChildWidget);_e+=_c?1:_d.length-1;return _d[_e%_d.length];},forward:function(){this.selectChild(this._adjacent(true));},back:function(){this.selectChild(this._adjacent(false));},_onKeyPress:function(e){dojo.publish(this.id+"-containerKeyPress",[{e:e,page:this}]);},layout:function(){if(this.doLayout&&this.selectedChildWidget&&this.selectedChildWidget.resize){this.selectedChildWidget.resize(this._contentBox);}},_showChild:function(_10){var _11=this.getChildren();_10.isFirstChild=(_10==_11[0]);_10.isLastChild=(_10==_11[_11.length-1]);_10.selected=true;_10.domNode.style.display="";if(_10._loadCheck){_10._loadCheck();}if(_10.onShow){_10.onShow();}},_hideChild:function(_12){_12.selected=false;_12.domNode.style.display="none";if(_12.onHide){_12.onHide();}},closeChild:function(_13){var _14=_13.onClose(this,_13);if(_14){this.removeChild(_13);_13.destroyRecursive();}},destroy:function(){this._beingDestroyed=true;this.inherited(arguments);}});dojo.declare("dijit.layout.StackController",[dijit._Widget,dijit._Templated,dijit._Container],{templateString:"<span wairole='tablist' dojoAttachEvent='onkeypress' class='dijitStackController'></span>",containerId:"",buttonWidget:"dijit.layout._StackButton",postCreate:function(){dijit.setWaiRole(this.domNode,"tablist");this.pane2button={};this.pane2handles={};this.pane2menu={};this._subscriptions=[dojo.subscribe(this.containerId+"-startup",this,"onStartup"),dojo.subscribe(this.containerId+"-addChild",this,"onAddChild"),dojo.subscribe(this.containerId+"-removeChild",this,"onRemoveChild"),dojo.subscribe(this.containerId+"-selectChild",this,"onSelectChild"),dojo.subscribe(this.containerId+"-containerKeyPress",this,"onContainerKeyPress")];},onStartup:function(_15){dojo.forEach(_15.children,this.onAddChild,this);this.onSelectChild(_15.selected);},destroy:function(){for(var _16 in this.pane2button){this.onRemoveChild(_16);}dojo.forEach(this._subscriptions,dojo.unsubscribe);this.inherited(arguments);},onAddChild:function(_17,_18){var _19=dojo.doc.createElement("span");this.domNode.appendChild(_19);var cls=dojo.getObject(this.buttonWidget);var _1b=new cls({label:_17.title,closeButton:_17.closable},_19);this.addChild(_1b,_18);this.pane2button[_17]=_1b;_17.controlButton=_1b;var _1c=[];_1c.push(dojo.connect(_1b,"onClick",dojo.hitch(this,"onButtonClick",_17)));if(_17.closable){_1c.push(dojo.connect(_1b,"onClickCloseButton",dojo.hitch(this,"onCloseButtonClick",_17)));var _1d=dojo.i18n.getLocalization("dijit","common");var _1e=new dijit.Menu({targetNodeIds:[_1b.id],id:_1b.id+"_Menu"});var _1f=new dijit.MenuItem({label:_1d.itemClose});_1c.push(dojo.connect(_1f,"onClick",dojo.hitch(this,"onCloseButtonClick",_17)));_1e.addChild(_1f);this.pane2menu[_17]=_1e;}this.pane2handles[_17]=_1c;if(!this._currentChild){_1b.focusNode.setAttribute("tabIndex","0");this._currentChild=_17;}if(!this.isLeftToRight()&&dojo.isIE&&this._rectifyRtlTabList){this._rectifyRtlTabList();}},onRemoveChild:function(_20){if(this._currentChild===_20){this._currentChild=null;}dojo.forEach(this.pane2handles[_20],dojo.disconnect);delete this.pane2handles[_20];var _21=this.pane2menu[_20];if(_21){_21.destroyRecursive();delete this.pane2menu[_20];}var _22=this.pane2button[_20];if(_22){_22.destroy();delete this.pane2button[_20];}},onSelectChild:function(_23){if(!_23){return;}if(this._currentChild){var _24=this.pane2button[this._currentChild];_24.attr("checked",false);_24.focusNode.setAttribute("tabIndex","-1");}var _25=this.pane2button[_23];_25.attr("checked",true);this._currentChild=_23;_25.focusNode.setAttribute("tabIndex","0");var _26=dijit.byId(this.containerId);dijit.setWaiState(_26.containerNode,"labelledby",_25.id);},onButtonClick:function(_27){var _28=dijit.byId(this.containerId);_28.selectChild(_27);},onCloseButtonClick:function(_29){var _2a=dijit.byId(this.containerId);_2a.closeChild(_29);var b=this.pane2button[this._currentChild];if(b){dijit.focus(b.focusNode||b.domNode);}},adjacent:function(_2c){if(!this.isLeftToRight()&&(!this.tabPosition||/top|bottom/.test(this.tabPosition))){_2c=!_2c;}var _2d=this.getChildren();var _2e=dojo.indexOf(_2d,this.pane2button[this._currentChild]);var _2f=_2c?1:_2d.length-1;return _2d[(_2e+_2f)%_2d.length];},onkeypress:function(e){if(this.disabled||e.altKey){return;}var _31=null;if(e.ctrlKey||!e._djpage){var k=dojo.keys;switch(e.charOrCode){case k.LEFT_ARROW:case k.UP_ARROW:if(!e._djpage){_31=false;}break;case k.PAGE_UP:if(e.ctrlKey){_31=false;}break;case k.RIGHT_ARROW:case k.DOWN_ARROW:if(!e._djpage){_31=true;}break;case k.PAGE_DOWN:if(e.ctrlKey){_31=true;}break;case k.DELETE:if(this._currentChild.closable){this.onCloseButtonClick(this._currentChild);}dojo.stopEvent(e);break;default:if(e.ctrlKey){if(e.charOrCode===k.TAB){this.adjacent(!e.shiftKey).onClick();dojo.stopEvent(e);}else{if(e.charOrCode=="w"){if(this._currentChild.closable){this.onCloseButtonClick(this._currentChild);}dojo.stopEvent(e);}}}}if(_31!==null){this.adjacent(_31).onClick();dojo.stopEvent(e);}}},onContainerKeyPress:function(_33){_33.e._djpage=_33.page;this.onkeypress(_33.e);}});dojo.declare("dijit.layout._StackButton",dijit.form.ToggleButton,{tabIndex:"-1",postCreate:function(evt){dijit.setWaiRole((this.focusNode||this.domNode),"tab");this.inherited(arguments);},onClick:function(evt){dijit.focus(this.focusNode);},onClickCloseButton:function(evt){evt.stopPropagation();}});dojo.extend(dijit._Widget,{title:"",selected:false,closable:false,onClose:function(){return true;}});}��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000200�00000000000�011555� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/layout/AccordionContainer.js�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/l0000644�0000000�0000000�00000012430�11360615634�027216� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* Copyright (c) 2004-2008, The Dojo Foundation All Rights Reserved. Available via Academic Free License >= 2.1 OR the modified BSD license. see: http://dojotoolkit.org/license for details */ if(!dojo._hasResource["dijit.layout.AccordionContainer"]){dojo._hasResource["dijit.layout.AccordionContainer"]=true;dojo.provide("dijit.layout.AccordionContainer");dojo.require("dojo.fx");dojo.require("dijit._Container");dojo.require("dijit._Templated");dojo.require("dijit.layout.StackContainer");dojo.require("dijit.layout.ContentPane");dojo.declare("dijit.layout.AccordionContainer",dijit.layout.StackContainer,{duration:dijit.defaultDuration,_verticalSpace:0,baseClass:"dijitAccordionContainer",postCreate:function(){this.domNode.style.overflow="hidden";this.inherited(arguments);dijit.setWaiRole(this.domNode,"tablist");},startup:function(){if(this._started){return;}this.inherited(arguments);if(this.selectedChildWidget){var _1=this.selectedChildWidget.containerNode.style;_1.display="";_1.overflow="auto";this.selectedChildWidget._setSelectedState(true);}},_getTargetHeight:function(_2){var cs=dojo.getComputedStyle(_2);return Math.max(this._verticalSpace-dojo._getPadBorderExtents(_2,cs).h,0);},layout:function(){var _4=this.selectedChildWidget;var _5=0;dojo.forEach(this.getChildren(),function(_6){_5+=_6.getTitleHeight();});var _7=this._contentBox;this._verticalSpace=_7.h-_5;this._containerContentBox={h:this._verticalSpace+_4.getTitleHeight(),w:_7.w};if(_4){_4.resize(this._containerContentBox);}},_setupChild:function(_8){return _8;},_transition:function(_9,_a){if(this._inTransition){return;}this._inTransition=true;var _b=[];var _c=this._verticalSpace;if(_9){_9.setSelected(true);var _d=_9.containerNode;_d.style.display="";_c=this._getTargetHeight(_9.containerNode);_b.push(dojo.animateProperty({node:_d,duration:this.duration,properties:{height:{start:1,end:_c}},onEnd:function(){_d.style.overflow="auto";}}));}if(_a){_a.setSelected(false);var _e=_a.containerNode;_e.style.overflow="hidden";_c=this._getTargetHeight(_a.containerNode);_b.push(dojo.animateProperty({node:_e,duration:this.duration,properties:{height:{start:_c,end:"1"}},onEnd:function(){_e.style.display="none";}}));}this._inTransition=false;dojo.fx.combine(_b).play();},_onKeyPress:function(e){if(this.disabled||e.altKey||!(e._dijitWidget||e.ctrlKey)){return;}var k=dojo.keys;var _11=e._dijitWidget;switch(e.charOrCode){case k.LEFT_ARROW:case k.UP_ARROW:if(_11){this._adjacent(false)._onTitleClick();dojo.stopEvent(e);}break;case k.PAGE_UP:if(e.ctrlKey){this._adjacent(false)._onTitleClick();dojo.stopEvent(e);}break;case k.RIGHT_ARROW:case k.DOWN_ARROW:if(_11){this._adjacent(true)._onTitleClick();dojo.stopEvent(e);}break;case k.PAGE_DOWN:if(e.ctrlKey){this._adjacent(true)._onTitleClick();dojo.stopEvent(e);}break;default:if(e.ctrlKey&&e.charOrCode===k.TAB){this._adjacent(e._dijitWidget,!e.shiftKey)._onTitleClick();dojo.stopEvent(e);}}}});dojo.declare("dijit.layout.AccordionPane",[dijit.layout.ContentPane,dijit._Templated,dijit._Contained],{templateString:"<div waiRole=\"presentation\"\n\t><div dojoAttachPoint='titleNode,focusNode' dojoAttachEvent='ondijitclick:_onTitleClick,onkeypress:_onTitleKeyPress,onfocus:_handleFocus,onblur:_handleFocus,onmouseenter:_onTitleEnter,onmouseleave:_onTitleLeave'\n\t\tclass='dijitAccordionTitle' wairole=\"tab\" waiState=\"expanded-false\"\n\t\t><span class='dijitInline dijitAccordionArrow' waiRole=\"presentation\"></span\n\t\t><span class='arrowTextUp' waiRole=\"presentation\">+</span\n\t\t><span class='arrowTextDown' waiRole=\"presentation\">-</span\n\t\t><span waiRole=\"presentation\" dojoAttachPoint='titleTextNode' class='dijitAccordionText'></span></div\n\t><div waiRole=\"presentation\"><div dojoAttachPoint='containerNode' style='overflow: hidden; height: 1px; display: none'\n\t\tclass='dijitAccordionBody' wairole=\"tabpanel\"\n\t></div></div>\n</div>\n",attributeMap:dojo.mixin(dojo.clone(dijit.layout.ContentPane.prototype.attributeMap),{title:{node:"titleTextNode",type:"innerHTML"}}),baseClass:"dijitAccordionPane",postCreate:function(){this.inherited(arguments);dojo.setSelectable(this.titleNode,false);this.setSelected(this.selected);dojo.attr(this.titleTextNode,"id",this.domNode.id+"_title");dijit.setWaiState(this.focusNode,"labelledby",dojo.attr(this.titleTextNode,"id"));},getTitleHeight:function(){return dojo.marginBox(this.titleNode).h;},_onTitleClick:function(){var _12=this.getParent();if(!_12._inTransition){_12.selectChild(this);dijit.focus(this.focusNode);}},_onTitleEnter:function(){dojo.addClass(this.focusNode,"dijitAccordionTitle-hover");},_onTitleLeave:function(){dojo.removeClass(this.focusNode,"dijitAccordionTitle-hover");},_onTitleKeyPress:function(evt){evt._dijitWidget=this;return this.getParent()._onKeyPress(evt);},_setSelectedState:function(_14){this.selected=_14;dojo[(_14?"addClass":"removeClass")](this.titleNode,"dijitAccordionTitle-selected");dijit.setWaiState(this.focusNode,"expanded",_14);this.focusNode.setAttribute("tabIndex",_14?"0":"-1");},_handleFocus:function(e){dojo[(e.type=="focus"?"addClass":"removeClass")](this.focusNode,"dijitAccordionFocused");},setSelected:function(_16){this._setSelectedState(_16);if(_16){this.onSelected();this._loadCheck();}},onSelected:function(){},resize:function(_17){var cb=this._contentBox={h:_17.h-this.getTitleHeight(),w:_17.w};dojo.marginBox(this.containerNode,{h:cb.h});}});}����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000154�00000000000�011565� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/dijit.js���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/d0000644�0000000�0000000�00000001030�11360615634�027200� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* Copyright (c) 2004-2008, The Dojo Foundation All Rights Reserved. Available via Academic Free License >= 2.1 OR the modified BSD license. see: http://dojotoolkit.org/license for details */ if(!dojo._hasResource["dijit.dijit"]){dojo._hasResource["dijit.dijit"]=true;dojo.provide("dijit.dijit");dojo.require("dijit._base");dojo.require("dojo.parser");dojo.require("dijit._Widget");dojo.require("dijit._Templated");dojo.require("dijit._Container");dojo.require("dijit.layout._LayoutWidget");dojo.require("dijit.form._FormWidget");}��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000154�00000000000�011565� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/_editor/���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/_0000755�0000000�0000000�00000000000�11360615646�027202� 5����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000163�00000000000�011565� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/_editor/html.js��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/_0000644�0000000�0000000�00000003774�11360615644�027215� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* Copyright (c) 2004-2008, The Dojo Foundation All Rights Reserved. Available via Academic Free License >= 2.1 OR the modified BSD license. see: http://dojotoolkit.org/license for details */ if(!dojo._hasResource["dijit._editor.html"]){dojo._hasResource["dijit._editor.html"]=true;dojo.provide("dijit._editor.html");dijit._editor.escapeXml=function(_1,_2){_1=_1.replace(/&/gm,"&").replace(/</gm,"<").replace(/>/gm,">").replace(/"/gm,""");if(!_2){_1=_1.replace(/'/gm,"'");}return _1;};dijit._editor.getNodeHtml=function(_3){var _4;switch(_3.nodeType){case 1:_4="<"+_3.nodeName.toLowerCase();var _5=[];if(dojo.isIE&&_3.outerHTML){var s=_3.outerHTML;s=s.substr(0,s.indexOf(">")).replace(/(['"])[^"']*\1/g,"");var _7=/([^\s=]+)=/g;var m,_9;while((m=_7.exec(s))){_9=m[1];if(_9.substr(0,3)!="_dj"){if(_9=="src"||_9=="href"){if(_3.getAttribute("_djrealurl")){_5.push([_9,_3.getAttribute("_djrealurl")]);continue;}}var _a;switch(_9){case "style":_a=_3.style.cssText.toLowerCase();break;case "class":_a=_3.className;break;default:_a=_3.getAttribute(_9);}_5.push([_9,_a.toString()]);}}}else{var _b,i=0;while((_b=_3.attributes[i++])){var n=_b.name;if(n.substr(0,3)!="_dj"){var v=_b.value;if(n=="src"||n=="href"){if(_3.getAttribute("_djrealurl")){v=_3.getAttribute("_djrealurl");}}_5.push([n,v]);}}}_5.sort(function(a,b){return a[0]<b[0]?-1:(a[0]==b[0]?0:1);});var j=0;while((_b=_5[j++])){_4+=" "+_b[0]+"=\""+(dojo.isString(_b[1])?dijit._editor.escapeXml(_b[1],true):_b[1])+"\"";}if(_3.childNodes.length){_4+=">"+dijit._editor.getChildrenHtml(_3)+"</"+_3.nodeName.toLowerCase()+">";}else{_4+=" />";}break;case 3:_4=dijit._editor.escapeXml(_3.nodeValue,true);break;case 8:_4="<!--"+dijit._editor.escapeXml(_3.nodeValue,true)+"-->";break;default:_4="<!-- Element not recognized - Type: "+_3.nodeType+" Name: "+_3.nodeName+"-->";}return _4;};dijit._editor.getChildrenHtml=function(dom){var out="";if(!dom){return out;}var _14=dom["childNodes"]||dom;var _15,i=0;while((_15=_14[i++])){out+=dijit._editor.getNodeHtml(_15);}return out;};}����././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000166�00000000000�011570� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/_editor/_Plugin.js�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/_0000644�0000000�0000000�00000004202�11360615632�027175� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* Copyright (c) 2004-2008, The Dojo Foundation All Rights Reserved. Available via Academic Free License >= 2.1 OR the modified BSD license. see: http://dojotoolkit.org/license for details */ if(!dojo._hasResource["dijit._editor._Plugin"]){dojo._hasResource["dijit._editor._Plugin"]=true;dojo.provide("dijit._editor._Plugin");dojo.require("dijit._Widget");dojo.require("dijit.Editor");dojo.require("dijit.form.Button");dojo.declare("dijit._editor._Plugin",null,{constructor:function(_1,_2){if(_1){dojo.mixin(this,_1);}this._connects=[];},editor:null,iconClassPrefix:"dijitEditorIcon",button:null,queryCommand:null,command:"",commandArg:null,useDefaultCommand:true,buttonClass:dijit.form.Button,getLabel:function(_3){return this.editor.commands[_3];},_initButton:function(_4){if(this.command.length){var _5=this.getLabel(this.command);var _6=this.iconClassPrefix+" "+this.iconClassPrefix+this.command.charAt(0).toUpperCase()+this.command.substr(1);if(!this.button){_4=dojo.mixin({label:_5,showLabel:false,iconClass:_6,dropDown:this.dropDown,tabIndex:"-1"},_4||{});this.button=new this.buttonClass(_4);}}},destroy:function(f){dojo.forEach(this._connects,dojo.disconnect);},connect:function(o,f,tf){this._connects.push(dojo.connect(o,f,this,tf));},updateState:function(){var _e=this.editor;var _c=this.command;if(!_e){return;}if(!_e.isLoaded){return;}if(!_c.length){return;}if(this.button){try{var _d=_e.queryCommandEnabled(_c);if(this.enabled!==_d){this.enabled=_d;this.button.attr("disabled",!_d);}if(typeof this.button.checked=="boolean"){var _e=_e.queryCommandState(_c);if(this.checked!==_e){this.checked=_e;this.button.attr("checked",_e.queryCommandState(_c));}}}catch(e){console.debug(e);}}},setEditor:function(_f){this.editor=_f;this._initButton();if(this.command.length&&!this.editor.queryCommandAvailable(this.command)){if(this.button){this.button.domNode.style.display="none";}}if(this.button&&this.useDefaultCommand){this.connect(this.button,"onClick",dojo.hitch(this.editor,"execCommand",this.command,this.commandArg));}this.connect(this.editor,"onNormalizedDisplayChanged","updateState");},setToolbar:function(_10){if(this.button){_10.addChild(this.button);}}});}����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000160�00000000000�011562� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/_editor/nls/�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/_0000755�0000000�0000000�00000000000�11360615642�027176� 5����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000163�00000000000�011565� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/_editor/nls/fr/��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/_0000755�0000000�0000000�00000000000�11360615640�027174� 5����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000200�00000000000�011555� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/_editor/nls/fr/LinkDialog.js�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/_0000644�0000000�0000000�00000000217�11360615634�027201� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������({"set":"Définir","text":"Description :","insertImageTitle":"Propriétés de l'image","url":"URL :","createLinkTitle":"Propriétés du lien"})���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000176�00000000000�011571� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/_editor/nls/fr/commands.js���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/_0000644�0000000�0000000�00000002771�11360615640�027205� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������({"removeFormat":"Supprimer la mise en forme","copy":"Copier","paste":"Coller","selectAll":"Sélectionner tout","insertOrderedList":"Liste numérotée","insertTable":"Insérer/Modifier un tableau","underline":"Souligner","foreColor":"Couleur d'avant-plan","htmlToggle":"Source HTML","formatBlock":"Style de paragraphe","insertHorizontalRule":"Règle horizontale","delete":"Supprimer","insertUnorderedList":"Liste à puces","tableProp":"Propriété du tableau","insertImage":"Insérer une image","superscript":"Exposant","subscript":"Indice","createLink":"Créer un lien","undo":"Annuler","italic":"Italique","fontName":"Nom de police","justifyLeft":"Aligner à gauche","unlink":"Supprimer le lien","toggleTableBorder":"Afficher/Masquer la bordure du tableau","fontSize":"Taille de police","systemShortcut":"L'action \"${0}\" est seulement possible dans votre navigateur à l'aide d'un raccourci-clavier. Veuillez utiliser ${1}.","indent":"Retrait","redo":"Rétablir","strikethrough":"Barrer","justifyFull":"Justifier","justifyCenter":"Aligner au centre","hiliteColor":"Couleur d'arrière-plan","deleteTable":"Supprimer le tableau","outdent":"Retrait négatif","cut":"Couper","plainFormatBlock":"Style de paragraphe","toggleDir":"Afficher/Masquer la direction","bold":"Gras","tabIndent":"Retrait par tabulation","systemShortcutFF":"L'action \"${0}\" est disponible dans Mozilla Firefox uniquement, par le biais d'un raccourci-clavier. Utilisez ${1}.","justifyRight":"Aligner à droite","appleKey":"⌘${0}","ctrlKey":"ctrl+${0}"})�������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000200�00000000000�011555� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/_editor/nls/fr/FontChoice.js�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/_0000644�0000000�0000000�00000000550�11360615636�027203� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������({"1":"xxs","2":"xs","formatBlock":"Mise en forme","3":"s","4":"m","5":"l","6":"xl","7":"xxl","fantasy":"fantaisie","serif":"serif","p":"Paragraphe","pre":"Pré-mise en forme","sans-serif":"sans serif","fontName":"Police","h1":"En-tête","h2":"Sous-en-tête","h3":"Sous-sous-en-tête","monospace":"espacement constant","fontSize":"Taille","cursive":"cursive"})��������������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000163�00000000000�011565� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/_editor/nls/nb/��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/_0000755�0000000�0000000�00000000000�11360615644�027200� 5����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000200�00000000000�011555� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/_editor/nls/nb/LinkDialog.js�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/_0000644�0000000�0000000�00000000202�11360615644�027174� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������({"set":"Definer","text":"Beskrivelse:","insertImageTitle":"Bildeegenskaper","url":"URL:","createLinkTitle":"Koblingsegenskaper"})����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000176�00000000000�011571� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/_editor/nls/nb/commands.js���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/_0000644�0000000�0000000�00000002464�11360615640�027204� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������({"removeFormat":"Fjern format","copy":"Kopier","paste":"Lim inn","selectAll":"Velg alle","insertOrderedList":"Nummerert liste","insertTable":"Sett inn/rediger tabell","underline":"Understreking","foreColor":"Forgrunnsfarge","htmlToggle":"HTML-kilde","formatBlock":"Avsnittsstil","insertHorizontalRule":"Vannrett strek","delete":"Slett","insertUnorderedList":"Punktliste","tableProp":"Tabellegenskap","insertImage":"Sett inn bilde","superscript":"Hevet skrift","subscript":"Senket skrift","createLink":"Opprett kobling","undo":"Angre","italic":"Kursiv","fontName":"Skriftnavn","justifyLeft":"Venstrejuster","unlink":"Fjern kobling","toggleTableBorder":"Bytt tabellkant","fontSize":"Skriftstørrelse","indent":"Innrykk","redo":"Gjør om","strikethrough":"Gjennomstreking","justifyFull":"Juster","justifyCenter":"Midtstill","hiliteColor":"Bakgrunnsfarge","deleteTable":"Slett tabell","outdent":"Fjern innrykk","cut":"Klipp ut","plainFormatBlock":"Avsnittsstil","toggleDir":"Bytt retning","bold":"Fet","systemShortcutFF":"Handlingen \"${0}\" er bare tilgjengelig i Mozilla Firefox ved hjelp av en tastatursnarvei. Bruk ${1}.","justifyRight":"Høyrejuster","appleKey":"⌘${0}","ctrlKey":"ctrl+${0}","systemShortcut":"The \"${0}\" action is only available in your browser using a keyboard shortcut. Use ${1}.","tabIndent":"Tab Indent"})������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000200�00000000000�011555� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/_editor/nls/nb/FontChoice.js�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/_0000644�0000000�0000000�00000000573�11360615644�027207� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������({"1":"xx-liten","2":"x-liten","formatBlock":"Format","3":"liten","4":"middels","5":"stor","6":"x-stor","7":"xx-stor","fantasy":"fantasi","serif":"serif","p":"Avsnitt","pre":"ForhÃ¥ndsformatert","sans-serif":"sans-serif","fontName":"Skrift","h1":"Overskrift","h2":"Undertittel","h3":"Under-undertittel","monospace":"ikke-proporsjonal","fontSize":"Størrelse","cursive":"kursiv"})�������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000163�00000000000�011565� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/_editor/nls/zh/��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/_0000755�0000000�0000000�00000000000�11360615644�027200� 5����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000200�00000000000�011555� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/_editor/nls/zh/LinkDialog.js�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/_0000644�0000000�0000000�00000000167�11360615634�027205� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������({"set":"确定","text":"æè¿°ï¼š","insertImageTitle":"图åƒå±žæ€§","url":"URL:","createLinkTitle":"链接属性"})���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000176�00000000000�011571� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/_editor/nls/zh/commands.js���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/_0000644�0000000�0000000�00000002352�11360615644�027204� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������({"removeFormat":"除去格å¼","copy":"å¤åˆ¶","paste":"粘贴","selectAll":"全选","insertOrderedList":"ç¼–å·åˆ—表","insertTable":"æ’å…¥/编辑表","underline":"下划线","foreColor":"剿™¯è‰²","htmlToggle":"HTML æºä»£ç ","formatBlock":"æ®µè½æ ·å¼","insertHorizontalRule":"水平线","delete":"删除","insertUnorderedList":"符å·åˆ—表","tableProp":"表属性","insertImage":"æ’入图åƒ","superscript":"上标","subscript":"下标","createLink":"创建链接","undo":"撤销","italic":"斜体","fontName":"字体åç§°","justifyLeft":"左对é½","unlink":"除去链接","toggleTableBorder":"切æ¢è¡¨è¾¹æ¡†","fontSize":"字体大å°","indent":"增加缩进","redo":"é‡åš","strikethrough":"删除线","justifyFull":"对é½","justifyCenter":"居中","hiliteColor":"背景色","deleteTable":"删除表","outdent":"å‡å°‘缩进","cut":"剪切","plainFormatBlock":"æ®µè½æ ·å¼","toggleDir":"固定方å‘","bold":"粗体","systemShortcutFF":"åªèƒ½åœ¨ Mozilla Firefox ä¸­é€šè¿‡é”®ç›˜å¿«æ·æ–¹å¼æ‰§è¡Œâ€œ${0}â€æ“作。请使用 ${1}。","justifyRight":"å³å¯¹é½","appleKey":"⌘${0}","ctrlKey":"ctrl+${0}","systemShortcut":"The \"${0}\" action is only available in your browser using a keyboard shortcut. Use ${1}.","tabIndent":"Tab Indent"})��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000200�00000000000�011555� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/_editor/nls/zh/FontChoice.js�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/_0000644�0000000�0000000�00000000542�11360615636�027204� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������({"1":"XXS å·","2":"XS å·","formatBlock":"æ ¼å¼","3":"S å·","4":"M å·","5":"L å·","6":"XL å·","7":"XXL å·","fantasy":"虚线","serif":"有衬线","p":"段è½","pre":"预设有格å¼çš„","sans-serif":"无衬线","fontName":"字体","h1":"标题","h2":"å­æ ‡é¢˜","h3":"äºŒçº§å­æ ‡é¢˜","monospace":"等宽","fontSize":"大å°","cursive":"è‰ä¹¦"})��������������������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000163�00000000000�011565� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/_editor/nls/pl/��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/_0000755�0000000�0000000�00000000000�11360615636�027201� 5����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000200�00000000000�011555� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/_editor/nls/pl/LinkDialog.js�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/_0000644�0000000�0000000�00000000214�11360615632�027174� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������({"set":"Ustaw","text":"Opis:","insertImageTitle":"WÅ‚aÅ›ciwoÅ›ci obrazu","url":"Adres URL:","createLinkTitle":"WÅ‚aÅ›ciwoÅ›ci odsyÅ‚acza"})������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000176�00000000000�011571� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/_editor/nls/pl/commands.js���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/_0000644�0000000�0000000�00000002666�11360615636�027215� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������({"removeFormat":"UsuÅ„ formatowanie","copy":"Kopiuj","paste":"Wklej","selectAll":"Wybierz wszystko","insertOrderedList":"Lista numerowana","insertTable":"Wstaw/edytuj tabelÄ™","underline":"PodkreÅ›lenie","foreColor":"Kolor pierwszego planu","htmlToggle":"ŹródÅ‚o HTML","formatBlock":"Styl akapitu","insertHorizontalRule":"Linia pozioma","delete":"UsuÅ„","insertUnorderedList":"Lista wypunktowana","tableProp":"WÅ‚aÅ›ciwość tabeli","insertImage":"Wstaw obraz","superscript":"Indeks górny","subscript":"Indeks dolny","createLink":"Utwórz odsyÅ‚acz","undo":"Cofnij","italic":"Kursywa","fontName":"Nazwa czcionki","justifyLeft":"Wyrównaj do lewej","unlink":"UsuÅ„ odsyÅ‚acz","toggleTableBorder":"Przełącz ramkÄ™ tabeli","fontSize":"Wielkość czcionki","indent":"WciÄ™cie","redo":"Przywróć","strikethrough":"PrzekreÅ›lenie","justifyFull":"Wyrównaj do lewej i prawej","justifyCenter":"Wyrównaj do Å›rodka","hiliteColor":"Kolor tÅ‚a","deleteTable":"UsuÅ„ tabelÄ™","outdent":"UsuÅ„ wciÄ™cie","cut":"Wytnij","plainFormatBlock":"Styl akapitu","toggleDir":"Przełącz kierunek","bold":"Pogrubienie","systemShortcutFF":"DziaÅ‚anie ${0} jest dostÄ™pne w przeglÄ…darce Mozilla Firefox wyłącznie za pomocÄ… skrótu klawiaturowego. Użyj ${1}.","justifyRight":"Wyrównaj do prawej","appleKey":"⌘${0}","ctrlKey":"ctrl+${0}","systemShortcut":"The \"${0}\" action is only available in your browser using a keyboard shortcut. Use ${1}.","tabIndent":"Tab Indent"})��������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000200�00000000000�011555� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/_editor/nls/pl/FontChoice.js�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/_0000644�0000000�0000000�00000000652�11360615632�027202� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������({"1":"najmniejsza","2":"mniejsza","formatBlock":"Format","3":"maÅ‚a","4":"Å›rednia","5":"duża","6":"wiÄ™ksza","7":"najwiÄ™ksza","fantasy":"fantazyjna","serif":"szeryfowa","p":"Akapit","pre":"WstÄ™pnie sformatowane","sans-serif":"bezszeryfowa","fontName":"Czcionka","h1":"Nagłówek","h2":"Nagłówek 2-go poziomu","h3":"Nagłówek 3-go poziomu","monospace":"staÅ‚ej szerokoÅ›ci","fontSize":"Wielkość","cursive":"kursywa"})��������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000175�00000000000�011570� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/_editor/nls/LinkDialog.js����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/_0000644�0000000�0000000�00000000174�11360615642�027202� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������({"set":"Set","text":"Description:","insertImageTitle":"Image Properties","url":"URL:","createLinkTitle":"Link Properties"})����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000166�00000000000�011570� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/_editor/nls/zh-tw/�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/_0000755�0000000�0000000�00000000000�11360615642�027176� 5����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000203�00000000000�011560� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/_editor/nls/zh-tw/LinkDialog.js����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/_0000644�0000000�0000000�00000000172�11360615642�027200� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������({"set":"設定","text":"說明:","insertImageTitle":"å½±åƒæª”內容","url":"URL:","createLinkTitle":"éˆçµå…§å®¹"})������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000201�00000000000�011556� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/_editor/nls/zh-tw/commands.js������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/_0000644�0000000�0000000�00000002376�11360615632�027207� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������({"removeFormat":"移除格å¼","copy":"複製","paste":"貼上","selectAll":"å…¨é¸","insertOrderedList":"編號清單","insertTable":"æ’å…¥/編輯表格","underline":"底線","foreColor":"剿™¯é¡è‰²","htmlToggle":"HTML 原始檔","formatBlock":"æ®µè½æ¨£å¼","insertHorizontalRule":"水平尺è¦","delete":"刪除","insertUnorderedList":"項目符號清單","tableProp":"表格內容","insertImage":"æ’入影åƒ","superscript":"上標","subscript":"下標","createLink":"建立éˆçµ","undo":"復原","italic":"斜體","fontName":"å­—åž‹å稱","justifyLeft":"é å·¦å°é½Š","unlink":"移除éˆçµ","toggleTableBorder":"切æ›è¡¨æ ¼é‚Šæ¡†","fontSize":"字型大å°","indent":"縮排","redo":"é‡åš","strikethrough":"加刪除線","justifyFull":"å°é½Š","justifyCenter":"置中å°é½Š","hiliteColor":"背景é¡è‰²","deleteTable":"刪除表格","outdent":"凸排","cut":"剪下","plainFormatBlock":"æ®µè½æ¨£å¼","toggleDir":"åˆ‡æ›æ–¹å‘","bold":"ç²—é«”","systemShortcutFF":"\"${0}\" 動作在 Mozilla Firefox 中,åªèƒ½ä½¿ç”¨éµç›¤å¿«é€Ÿéµã€‚請使用 ${1}。","justifyRight":"é å³å°é½Š","appleKey":"⌘${0}","ctrlKey":"ctrl+${0}","systemShortcut":"The \"${0}\" action is only available in your browser using a keyboard shortcut. Use ${1}.","tabIndent":"Tab Indent"})������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000203�00000000000�011560� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/_editor/nls/zh-tw/FontChoice.js����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/_0000644�0000000�0000000�00000000534�11360615642�027202� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������({"1":"最å°","2":"較å°","formatBlock":"æ ¼å¼","3":"å°","4":"中","5":"大","6":"較大","7":"最大","fantasy":"Fantasy","serif":"新細明體","p":"段è½","pre":"é å…ˆæ ¼å¼åŒ–","sans-serif":"新細明體","fontName":"å­—åž‹","h1":"標題","h2":"å­æ¨™é¡Œ","h3":"æ¬¡å­æ¨™é¡Œ","monospace":"å–®è·","fontSize":"大å°","cursive":"Cursive"})��������������������������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000163�00000000000�011565� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/_editor/nls/ar/��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/_0000755�0000000�0000000�00000000000�11360615636�027201� 5����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000200�00000000000�011555� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/_editor/nls/ar/LinkDialog.js�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/_0000644�0000000�0000000�00000000237�11360615632�027201� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������({"set":"تحديد","text":"الوصÙ: ","insertImageTitle":"خصائص الصورة ","url":"عنوان URL:","createLinkTitle":"خصائص الوصلة "})�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000176�00000000000�011571� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/_editor/nls/ar/commands.js���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/_0000644�0000000�0000000�00000003177�11360615634�027211� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������({"removeFormat":"ازالة النسق","copy":"نسخ","paste":"لصق","selectAll":"اختيار كل","insertOrderedList":"كش٠مرقم","insertTable":"ادراج/تحرير جدول ","underline":"تسطير","foreColor":"لون الواجهة الأمامية","htmlToggle":"مصدر HTML","formatBlock":"نمط الÙقرة","insertHorizontalRule":"مسطرة Ø£Ùقية","delete":"حذÙ","insertUnorderedList":"كش٠نقطي","tableProp":"خصائص الجدول ","insertImage":"ادراج صورة","superscript":"رمز علوي","subscript":"رمز سÙلي","createLink":"تكوين وصلة","undo":"تراجع","italic":"مائل","fontName":"اسم طاقم الطباعة","justifyLeft":"محاذاة الى اليسار","unlink":"ازالة وصلة","toggleTableBorder":"تبديل حدود الجدول ","fontSize":"حجم طاقم الطباعة","indent":"ازاحة للداخل","redo":"اعادة","strikethrough":"تشطيب","justifyFull":"ضبط","justifyCenter":"محاذاة ÙÙŠ الوسط","hiliteColor":"لون الخلÙية","deleteTable":"حذ٠جدول ","outdent":"ازاحة للخارج","cut":"قص","plainFormatBlock":"نمط الÙقرة","toggleDir":"تبديل الاتجاه ","bold":"عريض","systemShortcutFF":"يكون التصر٠\"${0}\" متاحا Ùقط ÙÙŠ برنامج Mozilla Firefox باستخدام اختصارات لوحة Ø§Ù„Ù…ÙØ§ØªÙŠØ­. استخدم ${1}.","justifyRight":"محاذاة الى اليمين","appleKey":"⌘${0}","ctrlKey":"ctrl+${0}","systemShortcut":"The \"${0}\" action is only available in your browser using a keyboard shortcut. Use ${1}.","tabIndent":"Tab Indent"})�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000200�00000000000�011555� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/_editor/nls/ar/FontChoice.js�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/_0000644�0000000�0000000�00000001032�11360615636�027177� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������({"1":"صغير جدا جدا ","2":"صغير جدا ","formatBlock":"النسق","3":"صغير ","4":"متوسط ","5":"كبير ","6":"كبير جدا ","7":"كبير جدا جدا ","fantasy":"خيالي ","serif":"serif","p":"Ùقرة ","pre":"منسق Ø¨ØµÙØ© مسبقة ","sans-serif":"sans-serif","fontName":"طاقم طباعة","h1":"عنوان","h2":"عنوان ÙØ±Ø¹ÙŠ ","h3":"ÙØ±Ø¹ÙŠ-عنوان ÙØ±Ø¹ÙŠ ","monospace":"خط أحادي Ø§Ù„Ù…Ø³Ø§ÙØ© ","fontSize":"الحجم","cursive":"كتابة بحرو٠متصلة "})������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000163�00000000000�011565� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/_editor/nls/nl/��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/_0000755�0000000�0000000�00000000000�11360615636�027201� 5����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000200�00000000000�011555� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/_editor/nls/nl/LinkDialog.js�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/_0000644�0000000�0000000�00000000215�11360615636�027201� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������({"set":"Instellen","text":"Beschrijving:","insertImageTitle":"Afbeeldingseigenschappen","url":"URL:","createLinkTitle":"Linkeigenschappen"})�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000176�00000000000�011571� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/_editor/nls/nl/commands.js���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/_0000644�0000000�0000000�00000002560�11360615632�027202� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������({"removeFormat":"Opmaak verwijderen","copy":"Kopiëren","paste":"Plakken","selectAll":"Alles selecteren","insertOrderedList":"Genummerde lijst","insertTable":"Tabel invoegen/bewerken","underline":"Onderstrepen","foreColor":"Voorgrondkleur","htmlToggle":"HTML-bron","formatBlock":"Alineastijl","insertHorizontalRule":"Horizontale liniaal","delete":"Wissen","insertUnorderedList":"Lijst met opsommingstekens","tableProp":"Tabeleigenschap","insertImage":"Afbeelding invoegen","superscript":"Superscript","subscript":"Subscript","createLink":"Link maken","undo":"Ongedaan maken","italic":"Cursief","fontName":"Lettertype","justifyLeft":"Links uitlijnen","unlink":"Link verwijderen","toggleTableBorder":"Tabelkader wijzigen","ctrlKey":"Ctrl+${0}","fontSize":"Lettergrootte","indent":"Inspringen","redo":"Opnieuw","strikethrough":"Doorhalen","justifyFull":"Uitvullen","justifyCenter":"Centreren","hiliteColor":"Achtergrondkleur","deleteTable":"Tabel wissen","outdent":"Uitspringen","cut":"Knippen","plainFormatBlock":"Alineastijl","toggleDir":"Schrijfrichting wijzigen","bold":"Vet","systemShortcutFF":"De actie \"${0}\" is alleen beschikbaar in Mozilla Firefox via een sneltoestcombinatie. Gebruik ${1}.","justifyRight":"Rechts uitlijnen","appleKey":"⌘${0}","systemShortcut":"The \"${0}\" action is only available in your browser using a keyboard shortcut. Use ${1}.","tabIndent":"Tab Indent"})������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000200�00000000000�011555� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/_editor/nls/nl/FontChoice.js�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/_0000644�0000000�0000000�00000000544�11360615636�027206� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������({"1":"xx-klein","2":"x-klein","formatBlock":"Opmaak","3":"klein","4":"gemiddeld","5":"groot","6":"x-groot","7":"xx-groot","fantasy":"fantasy","serif":"serif","p":"Alinea","pre":"Vooraf opgemaakt","sans-serif":"sans-serif","fontName":"Lettertype","h1":"Kop","h2":"Subkop","h3":"Sub-subkop","monospace":"monospace","fontSize":"Grootte","cursive":"cursief"})������������������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000163�00000000000�011565� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/_editor/nls/it/��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/_0000755�0000000�0000000�00000000000�11360615642�027176� 5����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000200�00000000000�011555� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/_editor/nls/it/LinkDialog.js�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/_0000644�0000000�0000000�00000000213�11360615632�027173� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������({"set":"Imposta","text":"Descrizione:","insertImageTitle":"Proprietà immagine","url":"URL:","createLinkTitle":"Proprietà collegamento"})�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000176�00000000000�011571� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/_editor/nls/it/commands.js���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/_0000644�0000000�0000000�00000002651�11360615642�027204� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������({"removeFormat":"Rimuovi formato","copy":"Copia","paste":"Incolla","selectAll":"Seleziona tutto","insertOrderedList":"Elenco numerato","insertTable":"Inserisci/Modifica tabella","underline":"Sottolineato","foreColor":"Colore primo piano","htmlToggle":"Origine HTML","formatBlock":"Stile paragrafo","insertHorizontalRule":"Righello orizzontale","delete":"Elimina","insertUnorderedList":"Elenco puntato","tableProp":"Proprietà tabella","insertImage":"Inserisci immagine","superscript":"Apice","subscript":"Pedice","createLink":"Crea collegamento","undo":"Annulla","italic":"Corsivo","fontName":"Nome carattere","justifyLeft":"Allinea a sinistra","unlink":"Rimuovi collegamento","toggleTableBorder":"Mostra/Nascondi margine tabella","fontSize":"Dimensione carattere","systemShortcut":"L'azione \"${0}\" è disponibile solo nel proprio browser tramite i tasti di scelta rapida. Utilizzare ${1}.","indent":"Rientra","redo":"Ripristina","strikethrough":"Barrato","justifyFull":"Giustifica","justifyCenter":"Allinea al centro","hiliteColor":"Colore sfondo","deleteTable":"Elimina tabella","outdent":"Rimuovi rientro","cut":"Taglia","plainFormatBlock":"Stile paragrafo","toggleDir":"Inverti direzione","bold":"Grassetto","tabIndent":"Scheda Rientra","systemShortcutFF":"L'azione \"${0}\" è disponibile solo in Mozilla Firefox tramite tasti di scelta rapida. Utilizzare ${1}.","justifyRight":"Allinea a destra","appleKey":"⌘${0}","ctrlKey":"ctrl+${0}"})���������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000200�00000000000�011555� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/_editor/nls/it/FontChoice.js�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/_0000644�0000000�0000000�00000000612�11360615632�027176� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������({"1":"xx-small","2":"x-small","formatBlock":"Formato","3":"small","4":"medium","5":"large","6":"x-large","7":"xx-large","fantasy":"fantasy","serif":"serif","p":"Paragrafo","pre":"Preformattato","sans-serif":"sans-serif","fontName":"Carattere","h1":"Intestazione","h2":"Sottointestazione","h3":"Sottointestazione secondaria","monospace":"monospace","fontSize":"Dimensione","cursive":"cursive"})����������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000163�00000000000�011565� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/_editor/nls/ca/��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/_0000755�0000000�0000000�00000000000�11360615646�027202� 5����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000200�00000000000�011555� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/_editor/nls/ca/LinkDialog.js�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/_0000644�0000000�0000000�00000000220�11360615644�027174� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������({"set":"Defineix","text":"Descripció:","insertImageTitle":"Propietats de la imatge","url":"URL:","createLinkTitle":"Propietats de l'enllaç"})��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000176�00000000000�011571� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/_editor/nls/ca/commands.js���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/_0000644�0000000�0000000�00000002660�11360615636�027207� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������({"removeFormat":"Elimina el format","copy":"Copia","paste":"Enganxa","selectAll":"Selecciona-ho tot","insertOrderedList":"Llista numerada","insertTable":"Insereix/edita la taula","underline":"Subratllat","foreColor":"Color de primer pla","htmlToggle":"Font HTML","formatBlock":"Estil de paràgraf","insertHorizontalRule":"Regla horitzontal","delete":"Suprimeix","insertUnorderedList":"Llista de pics","tableProp":"Propietats de la taula","insertImage":"Insereix una imatge","superscript":"Superíndex","subscript":"Subíndex","createLink":"Crea un enllaç","undo":"Desfés","italic":"Cursiva","fontName":"Nom del tipus de lletra","justifyLeft":"Alineació esquerra","unlink":"Elimina l'enllaç","toggleTableBorder":"Inverteix els contorns de taula","fontSize":"Mida de la lletra","indent":"Sagna","redo":"Refés","strikethrough":"Ratllat","justifyFull":"Justificació","justifyCenter":"Alineació centrada","hiliteColor":"Color de fons","deleteTable":"Suprimeix la taula","outdent":"Sagna a l'esquerra","cut":"Retalla","plainFormatBlock":"Estil de paràgraf","toggleDir":"Inverteix la direcció","bold":"Negreta","systemShortcutFF":"L'acció \"${0}\" només està disponible per a Mozilla Firefox amb la drecera del teclat. Feu servir ${1}.","justifyRight":"Alineació dreta","appleKey":"⌘${0}","ctrlKey":"ctrl+${0}","systemShortcut":"The \"${0}\" action is only available in your browser using a keyboard shortcut. Use ${1}.","tabIndent":"Tab Indent"})��������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000200�00000000000�011555� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/_editor/nls/ca/FontChoice.js�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/_0000644�0000000�0000000�00000000550�11360615646�027204� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������({"1":"xx-petit","2":"x-petit","formatBlock":"Format","3":"petit","4":"mitjà","5":"gran","6":"x-gran","7":"xx-gran","fantasy":"Fantasia","serif":"serif","p":"Paràgraf","pre":"Format previ","sans-serif":"sans-serif","fontName":"Tipus de lletra","h1":"Títol","h2":"Subtítol","h3":"Subsubtítol","monospace":"monoespai","fontSize":"Mida","cursive":"Cursiva"})��������������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000163�00000000000�011565� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/_editor/nls/cs/��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/_0000755�0000000�0000000�00000000000�11360615634�027177� 5����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000200�00000000000�011555� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/_editor/nls/cs/LinkDialog.js�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/_0000644�0000000�0000000�00000000207�11360615634�027200� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������({"set":"Nastavit","text":"Popis:","insertImageTitle":"Vlastnosti obrázku","url":"Adresa URL:","createLinkTitle":"Vlastnosti odkazu"})�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000176�00000000000�011571� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/_editor/nls/cs/commands.js���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/_0000644�0000000�0000000�00000002631�11360615632�027201� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������({"removeFormat":"Odebrat formát","copy":"Kopírovat","paste":"Vložit","selectAll":"Vybrat vÅ¡e","insertOrderedList":"Číslovaný seznam","insertTable":"Vložit/upravit tabulku","underline":"Podtržení","foreColor":"Barva popÅ™edí","htmlToggle":"Zdroj HTML","formatBlock":"Styl odstavce","insertHorizontalRule":"Vodorovná Äára","delete":"Odstranit","insertUnorderedList":"Seznam s odrážkami","tableProp":"Vlastnost tabulky","insertImage":"Vložit obrázek","superscript":"Horní index","subscript":"Dolní index","createLink":"VytvoÅ™it odkaz","undo":"ZpÄ›t","italic":"Kurzíva","fontName":"Název písma","justifyLeft":"Zarovnat vlevo","unlink":"Odebrat odkaz","toggleTableBorder":"PÅ™epnout ohraniÄení tabulky","ctrlKey":"Ctrl+${0}","fontSize":"Velikost písma","indent":"Odsadit","redo":"Opakovat","strikethrough":"PÅ™eÅ¡krtnutí","justifyFull":"Do bloku","justifyCenter":"Zarovnat na stÅ™ed","hiliteColor":"Barva pozadí","deleteTable":"Odstranit tabulku","outdent":"PÅ™edsadit","cut":"Vyjmout","plainFormatBlock":"Styl odstavce","toggleDir":"PÅ™epnout smÄ›r","bold":"TuÄné","systemShortcutFF":"Akce \"${0}\" je v prohlížeÄi Mozilla Firefox dostupná pouze prostÅ™ednictvím klávesové zkratky. Použijte klávesy ${1}.","justifyRight":"Zarovnat vpravo","appleKey":"⌘${0}","systemShortcut":"The \"${0}\" action is only available in your browser using a keyboard shortcut. Use ${1}.","tabIndent":"Tab Indent"})�������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000200�00000000000�011555� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/_editor/nls/cs/FontChoice.js�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/_0000644�0000000�0000000�00000000576�11360615634�027211� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������({"1":"extra malé","2":"velmi malé","formatBlock":"Formát","3":"malé","4":"stÅ™ední","5":"velké","6":"velmi velké","7":"extra velké","fantasy":"fantasy","serif":"serif","p":"Odstavec","pre":"PÅ™edformátované","sans-serif":"sans-serif","fontName":"Písmo","h1":"Nadpis","h2":"Podnadpis","h3":"Podnadpis 2","monospace":"monospace","fontSize":"Velikost","cursive":"cursive"})����������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000163�00000000000�011565� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/_editor/nls/sk/��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/_0000755�0000000�0000000�00000000000�11360615634�027177� 5����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000200�00000000000�011555� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/_editor/nls/sk/LinkDialog.js�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/_0000644�0000000�0000000�00000000201�11360615632�027170� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������({"set":"NastaviÅ¥","text":"Popis:","insertImageTitle":"Vlastnosti obrázku","url":"URL:","createLinkTitle":"Vlastnosti odkazu"})�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000176�00000000000�011571� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/_editor/nls/sk/commands.js���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/_0000644�0000000�0000000�00000002723�11360615634�027205� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������({"removeFormat":"OdstrániÅ¥ formátovanie","copy":"KopírovaÅ¥","paste":"PrilepiÅ¥","selectAll":"VybraÅ¥ vÅ¡etko","insertOrderedList":"Číslovaný zoznam","insertTable":"VložiÅ¥/upraviÅ¥ tabuľku","underline":"PodÄiarknuté","foreColor":"Farba popredia","htmlToggle":"Zdrojový kód HTML","formatBlock":"Å týl odseku","insertHorizontalRule":"Horizontálna Äiara","delete":"VymazaÅ¥","insertUnorderedList":"Zoznam s odrážkami","tableProp":"VlastnosÅ¥ tabuľky","insertImage":"VložiÅ¥ obrázok","superscript":"Horný index","subscript":"Dolný index","createLink":"VytvoriÅ¥ odkaz","undo":"Späť","italic":"Kurzíva","fontName":"Názov písma","justifyLeft":"ZarovnaÅ¥ vľavo","unlink":"OdstrániÅ¥ odkaz","toggleTableBorder":"Prepnúť ohraniÄenie tabuľky","fontSize":"VeľkosÅ¥ písma","indent":"OdsadiÅ¥","redo":"OpakovaÅ¥","strikethrough":"PreÄiarknuté","justifyFull":"ZarovnaÅ¥ k okrajom","justifyCenter":"ZarovnaÅ¥ na stred","hiliteColor":"Farba pozadia","deleteTable":"VymazaÅ¥ tabuľku","outdent":"ZruÅ¡iÅ¥ odsadenie","cut":"Vystrihnúť","plainFormatBlock":"Å týl odseku","toggleDir":"Prepnúť smer","bold":"TuÄné","systemShortcutFF":"Akcia \"${0}\" je dostupná len v prehliadaÄi Mozilla Firefox prostredníctvom klávesovej skratky. Použite ${1}.","justifyRight":"ZarovnaÅ¥ vpravo","appleKey":"⌘${0}","ctrlKey":"ctrl+${0}","systemShortcut":"The \"${0}\" action is only available in your browser using a keyboard shortcut. Use ${1}.","tabIndent":"Tab Indent"})���������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000200�00000000000�011555� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/_editor/nls/sk/FontChoice.js�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/_0000644�0000000�0000000�00000000562�11360615632�027202� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������({"1":"xx-small","2":"x-small","formatBlock":"Formát","3":"small","4":"medium","5":"large","6":"x-large","7":"xx-large","fantasy":"fantasy","serif":"serif","p":"Odsek","pre":"Predformátované","sans-serif":"sans-serif","fontName":"Písmo","h1":"HlaviÄka","h2":"PodhlaviÄka","h3":"Pod-podhlaviÄka","monospace":"monospace","fontSize":"VeľkosÅ¥","cursive":"cursive"})����������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000173�00000000000�011566� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/_editor/nls/commands.js������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/_0000644�0000000�0000000�00000002414�11360615632�027200� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������({"removeFormat":"Remove Format","copy":"Copy","paste":"Paste","selectAll":"Select All","insertOrderedList":"Numbered List","insertTable":"Insert/Edit Table","underline":"Underline","foreColor":"Foreground Color","htmlToggle":"HTML Source","formatBlock":"Paragraph Style","insertHorizontalRule":"Horizontal Rule","delete":"Delete","appleKey":"⌘${0}","insertUnorderedList":"Bullet List","tableProp":"Table Property","insertImage":"Insert Image","superscript":"Superscript","subscript":"Subscript","createLink":"Create Link","undo":"Undo","italic":"Italic","fontName":"Font Name","justifyLeft":"Align Left","unlink":"Remove Link","toggleTableBorder":"Toggle Table Border","ctrlKey":"ctrl+${0}","fontSize":"Font Size","systemShortcut":"The \"${0}\" action is only available in your browser using a keyboard shortcut. Use ${1}.","indent":"Indent","redo":"Redo","strikethrough":"Strikethrough","justifyFull":"Justify","justifyCenter":"Align Center","hiliteColor":"Background Color","deleteTable":"Delete Table","outdent":"Outdent","cut":"Cut","plainFormatBlock":"Paragraph Style","toggleDir":"Toggle Direction","bold":"Bold","tabIndent":"Tab Indent","systemShortcutFF":"The \"${0}\" action is only available in Mozilla Firefox using a keyboard shortcut. Use ${1}.","justifyRight":"Align Right"})����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000163�00000000000�011565� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/_editor/nls/fi/��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/_0000755�0000000�0000000�00000000000�11360615634�027177� 5����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000200�00000000000�011555� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/_editor/nls/fi/LinkDialog.js�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/_0000644�0000000�0000000�00000000206�11360615634�027177� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������({"set":"Aseta","text":"Kuvaus:","insertImageTitle":"Kuvan ominaisuudet","url":"URL-osoite:","createLinkTitle":"Linkin ominaisuudet"})������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000176�00000000000�011571� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/_editor/nls/fi/commands.js���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/_0000644�0000000�0000000�00000002647�11360615634�027212� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������({"removeFormat":"Poista muotoilu","copy":"Kopioi","paste":"Liitä","selectAll":"Valitse kaikki","insertOrderedList":"Numeroitu luettelo","insertTable":"Lisää taulukko/muokkaa taulukkoa","underline":"Alleviivaus","foreColor":"Edustaväri","htmlToggle":"HTML-lähde","formatBlock":"Kappaletyyli","insertHorizontalRule":"Vaakasuuntainen viiva","delete":"Poista","insertUnorderedList":"Numeroimaton luettelo","tableProp":"Taulukon ominaisuudet","insertImage":"Lisää kuva","superscript":"Yläindeksi","subscript":"Alaindeksi","createLink":"Luo linkki","undo":"Kumoa","italic":"Kursivointi","fontName":"Fontin nimi","justifyLeft":"Tasaus vasemmalle","unlink":"Poista linkki","toggleTableBorder":"Ota taulukon kehys käyttöön/poista kehys käytöstä","fontSize":"Fontin koko","indent":"Sisennä","redo":"Tee uudelleen","strikethrough":"Yliviivaus","justifyFull":"Tasaus","justifyCenter":"Tasaus keskelle","hiliteColor":"Taustaväri","deleteTable":"Poista taulukko","outdent":"Ulonna","cut":"Leikkaa","plainFormatBlock":"Kappaletyyli","toggleDir":"Vaihda suuntaa","bold":"Lihavointi","systemShortcutFF":"Toiminto \"${0}\" on käytettävissä vain Mozilla Firefox -ohjelmassa, kun käytetään pikanäppäimiä. Käytä kohdetta ${1}.","justifyRight":"Tasaus oikealle","appleKey":"⌘${0}","ctrlKey":"ctrl+${0}","systemShortcut":"The \"${0}\" action is only available in your browser using a keyboard shortcut. Use ${1}.","tabIndent":"Tab Indent"})�����������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000200�00000000000�011555� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/_editor/nls/fi/FontChoice.js�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/_0000644�0000000�0000000�00000000557�11360615634�027210� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������({"1":"xx-small","2":"x-small","formatBlock":"Muoto","3":"small","4":"medium","5":"large","6":"x-large","7":"xx-large","fantasy":"fantasy","serif":"serif","p":"Kappale","pre":"Esimuotoiltu","sans-serif":"sans-serif","fontName":"Fontti","h1":"Otsikko","h2":"Alatason otsikko","h3":"Alimman tason otsikko","monospace":"monospace","fontSize":"Koko","cursive":"cursive"})�������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000163�00000000000�011565� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/_editor/nls/he/��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/_0000755�0000000�0000000�00000000000�11360615646�027202� 5����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000200�00000000000�011555� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/_editor/nls/he/LinkDialog.js�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/_0000644�0000000�0000000�00000000221�11360615646�027177� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������({"set":"הגדרה","text":"תי×ור:","insertImageTitle":"תכונות תמונה","url":"URL:","createLinkTitle":"תכונות קישור"})�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000176�00000000000�011571� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/_editor/nls/he/commands.js���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/_0000644�0000000�0000000�00000003142�11360615634�027201� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������({"removeFormat":"סילוק עיצוב","copy":"העתקה","paste":"הדבקה","selectAll":"בחירת הכל","insertOrderedList":"רשימה ממוספרת","insertTable":"הוספת/עריכת טבלה","underline":"קו תחתי","foreColor":"צבע חזית ","htmlToggle":"מקור HTML","formatBlock":"סגנון פיסקה","insertHorizontalRule":"קו ×ופקי","delete":"מחיקה","insertUnorderedList":"רשימה ×¢× ×ª×‘×œ×™×˜×™×","tableProp":"תכונת טבלה","insertImage":"הוספת תמונה","superscript":"כתב עילי","subscript":"כתב תחתי","createLink":"יצירת קישור","undo":"ביטול פעולה","italic":"נטוי","fontName":"×©× ×’×•×¤×Ÿ","justifyLeft":"יישור לשמ×ל","unlink":"סילוק הקישור","toggleTableBorder":"מיתוג גבול טבלה","fontSize":"גופן יחסי","indent":"הגדלת כניסה","redo":"שחזור פעולה","strikethrough":"קו חוצה","justifyFull":"יישור דו-צדדי","justifyCenter":"יישור למרכז","hiliteColor":"צבע רקע","deleteTable":"מחיקת טבלה","outdent":"הקטנת כניסה","cut":"גזירה","plainFormatBlock":"סגנון פיסקה","toggleDir":"מיתוג כיוון ","bold":"מודגש","systemShortcutFF":"הפעולה \"${0}\" זמינה בדפדפן Mozilla Firefox רק ב×מצעות קיצור דרך במקלדת. × × ×œ×”×©×ª×ž×© ב-${1}.","justifyRight":"יישור לימין","appleKey":"⌘${0}","ctrlKey":"ctrl+${0}","systemShortcut":"The \"${0}\" action is only available in your browser using a keyboard shortcut. Use ${1}.","tabIndent":"Tab Indent"})������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000200�00000000000�011555� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/_editor/nls/he/FontChoice.js�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/_0000644�0000000�0000000�00000000665�11360615632�027206� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������({"1":"קטן ביות","2":"קטן מ×וד","formatBlock":"עיצוב","3":"קטן ","4":"בינוני","5":"גדול","6":"גדול מ×וד","7":"גדול ביותר","fantasy":"fantasy","serif":"serif","p":"פיסקה","pre":"מעוצב מר×ש","sans-serif":"sans-serif","fontName":"גופן","h1":"כותרת","h2":"תת-כותרת","h3":"תת-תת-כותרת","monospace":"monospace","fontSize":"גודל","cursive":"cursive"})���������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000163�00000000000�011565� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/_editor/nls/el/��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/_0000755�0000000�0000000�00000000000�11360615640�027174� 5����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000200�00000000000�011555� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/_editor/nls/el/LinkDialog.js�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/_0000644�0000000�0000000�00000000314�11360615634�027177� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������({"set":"ΟÏισμός","text":"ΠεÏιγÏαφή:","insertImageTitle":"Ιδιότητες εικόνας","url":"ΔιεÏθυνση URL:","createLinkTitle":"Ιδιότητες διασÏνδεσης"})��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000176�00000000000�011571� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/_editor/nls/el/commands.js���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/_0000644�0000000�0000000�00000004064�11360615640�027202� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������({"removeFormat":"ΑφαίÏεση μοÏφοποίησης","copy":"ΑντιγÏαφή","paste":"Επικόλληση","selectAll":"Επιλογή όλων","insertOrderedList":"ΑÏιθμημένη λίστα","insertTable":"Εισαγωγή/ΤÏοποποίηση πίνακα","underline":"ΥπογÏάμμιση","foreColor":"ΧÏώμα Ï€Ïοσκηνίου","htmlToggle":"ΠÏωτογενής κώδικας HTML","formatBlock":"Στυλ παÏαγÏάφου","insertHorizontalRule":"ΟÏιζόντια γÏαμμή","delete":"ΔιαγÏαφή","insertUnorderedList":"Λίστα με κουκίδες","tableProp":"Ιδιότητα πίνακα","insertImage":"Εισαγωγή εικόνας","superscript":"Εκθέτης","subscript":"Δείκτης","createLink":"ΔημιουÏγία διασÏνδεσης","undo":"ΑναίÏεση","italic":"Πλάγια","fontName":"Όνομα γÏαμματοσειÏάς","justifyLeft":"Στοίχιση αÏιστεÏά","unlink":"ΑφαίÏεση διασÏνδεσης","toggleTableBorder":"Εναλλαγή εμφάνισης πεÏιγÏάμματος πίνακα","fontSize":"Μέγεθος γÏαμματοσειÏάς","indent":"Εσοχή","redo":"Επανάληψη","strikethrough":"ΔιαγÏάμμιση","justifyFull":"ΠλήÏης στοίχιση","justifyCenter":"Στοίχιση στο κέντÏο","hiliteColor":"ΧÏώμα φόντου","deleteTable":"ΔιαγÏαφή πίνακα","outdent":"Μείωση πεÏιθωÏίου","cut":"Αποκοπή","plainFormatBlock":"Στυλ παÏαγÏάφου","toggleDir":"Εναλλαγή κατεÏθυνσης","bold":"Έντονα","systemShortcutFF":"Η ενέÏγεια \"${0}\" είναι διαθέσιμη μόνο στο Mozilla Firefox με τη χÏήση συντόμευσης πληκτÏολογίου. ΧÏησιμοποιήστε το ${1}.","justifyRight":"Στοίχιση δεξιά","appleKey":"⌘${0}","ctrlKey":"ctrl+${0}","systemShortcut":"The \"${0}\" action is only available in your browser using a keyboard shortcut. Use ${1}.","tabIndent":"Tab Indent"})����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000200�00000000000�011555� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/_editor/nls/el/FontChoice.js�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/_0000644�0000000�0000000�00000001242�11360615636�027202� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������({"1":"xx-μικÏά","2":"x-μικÏά","formatBlock":"ΜοÏφή","3":"μικÏά","4":"μεσαία","5":"μεγάλα","6":"x-μεγάλα","7":"xx-μεγάλα","fantasy":"φαντασίας","serif":"με πατοÏÏες (serif)","p":"ΠαÏάγÏαφος","pre":"ΠÏο-μοÏφοποιημένο","sans-serif":"χωÏίς πατοÏÏες (sans-serif)","fontName":"ΓÏαμματοσειÏά","h1":"Επικεφαλίδα","h2":"ΔευτεÏεÏουσα επικεφαλίδα","h3":"ΔευτεÏεÏουσα επικεφαλίδα Ï„Ïίτου επιπέδου","monospace":"σταθεÏÎ¿Ï Ï€Î»Î¬Ï„Î¿Ï…Ï‚","fontSize":"Μέγεθος","cursive":"πλάγιοι"})��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000163�00000000000�011565� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/_editor/nls/sl/��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/_0000755�0000000�0000000�00000000000�11360615640�027174� 5����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000200�00000000000�011555� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/_editor/nls/sl/LinkDialog.js�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/_0000644�0000000�0000000�00000000173�11360615640�027177� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������({"set":"Nastavi","text":"Opis:","insertImageTitle":"Lastnosti slike","url":"URL:","createLinkTitle":"Lastnosti povezave"})�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000176�00000000000�011571� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/_editor/nls/sl/commands.js���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/_0000644�0000000�0000000�00000002611�11360615636�027203� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������({"removeFormat":"Odstrani oblikovanje","copy":"Prekopiraj","paste":"Prilepi","selectAll":"Izberi vse","insertOrderedList":"OÅ¡tevilÄen seznam","insertTable":"Vstavi/uredi tabelo","underline":"PodÄrtano","foreColor":"Barva ospredja","htmlToggle":"Izvorna HTML koda","formatBlock":"Slog odstavka","insertHorizontalRule":"Vodoravno ravnilo","delete":"IzbriÅ¡i","insertUnorderedList":"Seznam z oznakami","tableProp":"Lastnost tabele","insertImage":"Vstavi sliko","superscript":"Nadpisano","subscript":"Podpisano","createLink":"Ustvari povezavo","undo":"Razveljavi","italic":"LežeÄe","fontName":"Ime pisave","justifyLeft":"Poravnaj levo","unlink":"Odstrani povezavo","toggleTableBorder":"Preklopi obrobo tabele","fontSize":"Velikost pisave","indent":"Zamakni","redo":"Ponovno uveljavi","strikethrough":"PreÄrtano","justifyFull":"Poravnaj obojestransko","justifyCenter":"Poravnaj na sredino","hiliteColor":"Barva ozadja","deleteTable":"IzbriÅ¡i tabelo","outdent":"Zamakni navzven","cut":"Izreži","plainFormatBlock":"Slog odstavka","toggleDir":"Preklopi smer","bold":"Krepko","systemShortcutFF":"Dejanje \"${0}\" je na voljo samo v brskalniku Mozilla Firefox prek bližnjic na tipkovnici. Uporabite ${1}.","justifyRight":"Poravnaj desno","appleKey":"⌘${0}","ctrlKey":"ctrl+${0}","systemShortcut":"The \"${0}\" action is only available in your browser using a keyboard shortcut. Use ${1}.","tabIndent":"Tab Indent"})�����������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000200�00000000000�011555� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/_editor/nls/sl/FontChoice.js�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/_0000644�0000000�0000000�00000000562�11360615640�027201� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������({"1":"xx-majhno","2":"x-majhno","formatBlock":"Oblika","3":"majhno","4":"srednje","5":"veliko","6":"x-veliko","7":"xx-veliko","fantasy":"fantasy","serif":"serif","p":"Odstavek","pre":"Vnaprej oblikovano","sans-serif":"sans-serif","fontName":"Pisava","h1":"Naslov","h2":"Podnaslov","h3":"Pod podnaslov","monospace":"monospace","fontSize":"Velikost","cursive":"cursive"})����������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000163�00000000000�011565� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/_editor/nls/es/��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/_0000755�0000000�0000000�00000000000�11360615640�027174� 5����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000200�00000000000�011555� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/_editor/nls/es/LinkDialog.js�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/_0000644�0000000�0000000�00000000223�11360615640�027173� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������({"set":"Establecer","text":"Descripción:","insertImageTitle":"Propiedades de la imagen","url":"URL:","createLinkTitle":"Propiedades del enlace"})�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000176�00000000000�011571� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/_editor/nls/es/commands.js���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/_0000644�0000000�0000000�00000002643�11360615636�027210� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������({"removeFormat":"Eliminar formato","copy":"Copiar","paste":"Pegar","selectAll":"Seleccionar todo","insertOrderedList":"Lista numerada","insertTable":"Insertar/Editar tabla","underline":"Subrayado","foreColor":"Color de primer plano","htmlToggle":"Fuente HTML","formatBlock":"Estilo de párrafo","insertHorizontalRule":"Regla horizontal","delete":"Suprimir","insertUnorderedList":"Lista con viñetas","tableProp":"Propiedad de tabla","insertImage":"Insertar imagen","superscript":"Superíndice","subscript":"Subíndice","createLink":"Crear enlace","undo":"Deshacer","italic":"Cursiva","fontName":"Nombre de font","justifyLeft":"Alinear izquierda","unlink":"Eliminar enlace","toggleTableBorder":"Conmutar borde de tabla","ctrlKey":"Control+${0}","fontSize":"Tamaño de font","systemShortcut":"La acción \"${0}\" sólo está disponible en su navegador mediante un atajo de teclado. Utilice ${1}.","indent":"Sangría","redo":"Rehacer","strikethrough":"Tachado","justifyFull":"Justificar","justifyCenter":"Alinear centro","hiliteColor":"Color de segundo plano","deleteTable":"Suprimir tabla","outdent":"Anular sangría","cut":"Cortar","plainFormatBlock":"Estilo de párrafo","toggleDir":"Conmutar dirección","bold":"Negrita","tabIndent":"Sangrado de tabulación","systemShortcutFF":"La acción \"${0}\" sólo está disponible en Mozilla Firefox mediante un atajo de teclado. Utilice ${1}.","justifyRight":"Alinear derecha","appleKey":"⌘${0}"})���������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000200�00000000000�011555� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/_editor/nls/es/FontChoice.js�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/_0000644�0000000�0000000�00000000571�11360615640�027201� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������({"1":"xx-pequeño","2":"x-pequeño","formatBlock":"Formato","3":"pequeño","4":"medio","5":"grande","6":"x-grande","7":"xx-grande","fantasy":"fantasía","serif":"serif","p":"Párrafo","pre":"Preformateado","sans-serif":"sans-serif","fontName":"Font","h1":"Cabecera","h2":"Subcabecera","h3":"Sub-subcabecera","monospace":"monoespacio","fontSize":"Tamaño","cursive":"cursiva"})���������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000166�00000000000�011570� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/_editor/nls/pt-pt/�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/_0000755�0000000�0000000�00000000000�11360615640�027174� 5����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000203�00000000000�011560� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/_editor/nls/pt-pt/LinkDialog.js����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/_0000644�0000000�0000000�00000000217�11360615636�027203� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������({"set":"Definir","text":"Descrição:","insertImageTitle":"Propriedades da imagem","url":"URL:","createLinkTitle":"Propriedade da ligação"})���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000201�00000000000�011556� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/_editor/nls/pt-pt/commands.js������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/_0000644�0000000�0000000�00000002711�11360615632�027200� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������({"removeFormat":"Remover formato","copy":"Copiar","paste":"Colar","selectAll":"Seleccionar tudo","insertOrderedList":"Lista numerada","insertTable":"Inserir/Editar tabela","underline":"Sublinhado","foreColor":"Cor de primeiro plano","htmlToggle":"Origem HTML","formatBlock":"Estilo de parágrafo","insertHorizontalRule":"Régua horizontal","delete":"Eliminar","insertUnorderedList":"Lista marcada","tableProp":"Propriedades da tabela","insertImage":"Inserir imagem","superscript":"Superior à linha","subscript":"Inferior à linha","createLink":"Criar ligação","undo":"Anular","italic":"Itálico","fontName":"Nome do tipo de letra","justifyLeft":"Alinhar à esquerda","unlink":"Remover ligação","toggleTableBorder":"Alternar limite da tabela","fontSize":"Tamanho do tipo de letra","indent":"Indentar","redo":"Repetir","strikethrough":"Rasurado","justifyFull":"Justificar","justifyCenter":"Alinhar ao centro","hiliteColor":"Cor de segundo plano","deleteTable":"Eliminar tabela","outdent":"Recuar","cut":"Cortar","plainFormatBlock":"Estilo de parágrafo","toggleDir":"Alternar direcção","bold":"Negrito","systemShortcutFF":"A acção \"${0}\" apenas está disponível no Mozilla Firefox utilizando um atalho de teclado. Utilize ${1}.","justifyRight":"Alinhar à direita","systemShortcut":"A ação \"${0}\" está apenas disponível em seu navegador utilizando um atalho de teclado. Utilize ${1}.","tabIndent":"Recuo da Tabulação","appleKey":"⌘${0}","ctrlKey":"ctrl+${0}"})�������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000203�00000000000�011560� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/_editor/nls/pt-pt/FontChoice.js����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/_0000644�0000000�0000000�00000000540�11360615640�027175� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������({"1":"xxs","2":"xs","formatBlock":"Formato","3":"small","4":"medium","5":"large","6":"xl","7":"xxl","fantasy":"fantasy","serif":"serif","p":"Parágrafo","pre":"Pré-formatado","sans-serif":"sans-serif","fontName":"Tipo de letra","h1":"Título","h2":"Sub-título","h3":"Sub-subtítulo","monospace":"monospace","fontSize":"Tamanho","cursive":"cursive"})����������������������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000163�00000000000�011565� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/_editor/nls/tr/��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/_0000755�0000000�0000000�00000000000�11360615640�027174� 5����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000200�00000000000�011555� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/_editor/nls/tr/LinkDialog.js�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/_0000644�0000000�0000000�00000000210�11360615640�027167� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������({"set":"Ayarla","text":"Açıklama:","insertImageTitle":"Resim Özellikleri","url":"URL:","createLinkTitle":"BaÄŸlantı Özellikleri"})����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000176�00000000000�011571� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/_editor/nls/tr/commands.js���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/_0000644�0000000�0000000�00000002577�11360615640�027211� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������({"removeFormat":"Biçimi Kaldır","copy":"Kopyala","paste":"Yapıştır","selectAll":"Tümünü Seç","insertOrderedList":"Numaralı Liste","insertTable":"Tablo Ekle/Düzenle","underline":"Altı Çizili","foreColor":"Ön Plan Rengi","htmlToggle":"HTML Kaynağı","formatBlock":"Paragraf Stili","insertHorizontalRule":"Yatay Kural","delete":"Sil","insertUnorderedList":"Madde İşaretli Liste","tableProp":"Tablo ÖzelliÄŸi","insertImage":"Resim Ekle","superscript":"Üst Simge","subscript":"Alt Simge","createLink":"BaÄŸlantı OluÅŸtur","undo":"Geri Al","italic":"İtalik","fontName":"Yazı Tipi Adı","justifyLeft":"Sola Hizala","unlink":"BaÄŸlantıyı Kaldır","toggleTableBorder":"Tablo Kenarlığını Göster/Gizle","fontSize":"Yazı Tipi Boyutu","indent":"Girinti","redo":"Yinele","strikethrough":"Üstü Çizili","justifyFull":"Yasla","justifyCenter":"Ortaya Hizala","hiliteColor":"Arka Plan Rengi","deleteTable":"Tabloyu Sil","outdent":"Çıkıntı","cut":"Kes","plainFormatBlock":"Paragraf Stili","toggleDir":"Yönü DeÄŸiÅŸtir","bold":"Kalın","systemShortcutFF":"\"${0}\" iÅŸlemi yalnızca Mozilla Firefox'ta bir klavye kısayoluyla birlikte kullanılabilir. ${1} iÅŸlemini kullanın.","justifyRight":"SaÄŸa Hizala","appleKey":"⌘${0}","ctrlKey":"ctrl+${0}","systemShortcut":"The \"${0}\" action is only available in your browser using a keyboard shortcut. Use ${1}.","tabIndent":"Tab Indent"})���������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000200�00000000000�011555� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/_editor/nls/tr/FontChoice.js�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/_0000644�0000000�0000000�00000000622�11360615640�027176� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������({"1":"xx-küçük","2":"x-küçük","formatBlock":"Biçim","3":"küçük","4":"orta","5":"büyük","6":"x-büyük","7":"xx-büyük","fantasy":"fantazi","serif":"serif","p":"Paragraf","pre":"Önceden BiçimlendirilmiÅŸ","sans-serif":"sans-serif","fontName":"Yazı Tipi","h1":"BaÅŸlık","h2":"Alt BaÅŸlık","h3":"Alt Alt BaÅŸlık","monospace":"eÅŸaralıklı","fontSize":"Boyut","cursive":"el yazısı"})��������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000163�00000000000�011565� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/_editor/nls/pt/��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/_0000755�0000000�0000000�00000000000�11360615640�027174� 5����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000200�00000000000�011555� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/_editor/nls/pt/LinkDialog.js�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/_0000644�0000000�0000000�00000000213�11360615636�027177� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������({"set":"Definir","text":"Descrição:","insertImageTitle":"Propriedades de Imagem","url":"URL:","createLinkTitle":"Propriedades de Link"})�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000176�00000000000�011571� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/_editor/nls/pt/commands.js���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/_0000644�0000000�0000000�00000002664�11360615640�027206� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������({"removeFormat":"Remover Formato","copy":"Copiar","paste":"Colar","selectAll":"Selecionar Todos","insertOrderedList":"Lista Numerada","insertTable":"Inserir/Editar Tabela","underline":"Sublinhado","foreColor":"Cor do Primeiro Plano","htmlToggle":"Origem HTML","formatBlock":"Estilo de Parágrafo","insertHorizontalRule":"Régua Horizontal","delete":"Excluir ","insertUnorderedList":"Lista com Marcadores","tableProp":"Propriedade da Tabela","insertImage":"Inserir Imagem","superscript":"Sobrescrito","subscript":"Subscrito","createLink":"Criar Link","undo":"Desfazer","italic":"Itálico","fontName":"Nome da Fonte","justifyLeft":"Alinhar pela Esquerda","unlink":"Remover Link","toggleTableBorder":"Alternar Moldura da Tabela","fontSize":"Tamanho da Fonte","systemShortcut":"A ação \"${0}\" está apenas disponível em seu navegador utilizando um atalho de teclado. Utilize ${1}.","indent":"Recuar","redo":"Refazer","strikethrough":"Tachado","justifyFull":"Justificar","justifyCenter":"Alinhar pelo Centro","hiliteColor":"Cor de segundo plano","deleteTable":"Excluir Tabela","outdent":"Não-chanfrado","cut":"Recortar","plainFormatBlock":"Estilo de Parágrafo","toggleDir":"Alternar Direção","bold":"Negrito","tabIndent":"Recuo da Tabulação","systemShortcutFF":"A ação \"${0}\" está disponível apenas no Mozilla Firefox utilizando um atalho do teclado. Utilize ${1}.","justifyRight":"Alinhar pela Direita","appleKey":"⌘${0}","ctrlKey":"ctrl+${0}"})����������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000200�00000000000�011555� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/_editor/nls/pt/FontChoice.js�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/_0000644�0000000�0000000�00000000566�11360615640�027205� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������({"1":"xx-small","2":"x-small","formatBlock":"Formato","3":"small","4":"medium","5":"large","6":"x-large","7":"xx-large ","fantasy":"fantasy","serif":"serif","p":"Parágrafo","pre":"Pré-formatado","sans-serif":"sans-serif","fontName":"Fonte","h1":"Título","h2":"Subcabeçalho","h3":"Sub-subcabeçalho","monospace":"monoespaçado","fontSize":"Tamanho","cursive":"cursive"})������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000163�00000000000�011565� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/_editor/nls/ja/��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/_0000755�0000000�0000000�00000000000�11360615636�027201� 5����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000200�00000000000�011555� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/_editor/nls/ja/LinkDialog.js�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/_0000644�0000000�0000000�00000000232�11360615636�027200� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������({"set":"設定","text":"説明:","insertImageTitle":"イメージ・プロパティー","url":"URL:","createLinkTitle":"リンク・プロパティー"})����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000176�00000000000�011571� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/_editor/nls/ja/commands.js���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/_0000644�0000000�0000000�00000003223�11360615634�027201� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������({"removeFormat":"å½¢å¼ã®é™¤åŽ»","copy":"コピー","paste":"貼り付ã‘","selectAll":"ã™ã¹ã¦é¸æŠž","insertOrderedList":"番å·ä»˜ãリスト","insertTable":"ãƒ†ãƒ¼ãƒ–ãƒ«ã®æŒ¿å…¥/編集","underline":"下線","foreColor":"剿™¯è‰²","htmlToggle":"HTML ソース","formatBlock":"段è½ã‚¹ã‚¿ã‚¤ãƒ«","insertHorizontalRule":"水平罫線","delete":"削除","insertUnorderedList":"黒丸付ãリスト","tableProp":"テーブル・プロパティー","insertImage":"ã‚¤ãƒ¡ãƒ¼ã‚¸ã®æŒ¿å…¥","superscript":"ä¸Šä»˜ãæ–‡å­—","subscript":"ä¸‹ä»˜ãæ–‡å­—","createLink":"リンクã®ä½œæˆ","undo":"å…ƒã«æˆ»ã™","italic":"イタリック","fontName":"フォントå","justifyLeft":"å·¦æƒãˆ","unlink":"リンクã®é™¤åŽ»","toggleTableBorder":"テーブル・ボーダーã®åˆ‡ã‚Šæ›¿ãˆ","fontSize":"フォント・サイズ","systemShortcut":"\"${0}\" アクションã¯ã€ã”使用ã®ãƒ–ラウザーã§ã‚­ãƒ¼ãƒœãƒ¼ãƒ‰ãƒ»ã‚·ãƒ§ãƒ¼ãƒˆã‚«ãƒƒãƒˆã‚’使用ã™ã‚‹å ´åˆã®ã¿ä½¿ç”¨å¯èƒ½ã§ã™ã€‚${1} を使用ã—ã¦ãã ã•ã„。","indent":"インデント","redo":"やり直ã—","strikethrough":"å–り消ã—ç·š","justifyFull":"両端æƒãˆ","justifyCenter":"中央æƒãˆ","hiliteColor":"背景色","deleteTable":"テーブルã®å‰Šé™¤","outdent":"アウトデント","cut":"切りå–り","plainFormatBlock":"段è½ã‚¹ã‚¿ã‚¤ãƒ«","toggleDir":"æ–¹å‘ã®åˆ‡ã‚Šæ›¿ãˆ","bold":"太字","tabIndent":"タブ・インデント","systemShortcutFF":"\"${0}\" アクションã¯ã€Mozilla Firefox ã§ã‚­ãƒ¼ãƒœãƒ¼ãƒ‰ãƒ»ã‚·ãƒ§ãƒ¼ãƒˆã‚«ãƒƒãƒˆã‚’使用ã™ã‚‹å ´åˆã®ã¿ä½¿ç”¨å¯èƒ½ã§ã™ã€‚${1} を使用ã—ã¦ãã ã•ã„。","justifyRight":"峿ƒãˆ","appleKey":"⌘${0}","ctrlKey":"ctrl+${0}"})�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000200�00000000000�011555� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/_editor/nls/ja/FontChoice.js�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/_0000644�0000000�0000000�00000000630�11360615636�027202� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������({"1":"超極å°","2":"極å°","formatBlock":"フォーマット","3":"å°","4":"標準","5":"大","6":"特大","7":"超特大","fantasy":"fantasy","serif":"serif","p":"段è½","pre":"事å‰ãƒ•ォーマット済ã¿","sans-serif":"sans-serif","fontName":"フォント","h1":"見出ã—","h2":"副見出ã—","h3":"副見出ã—ã®å‰¯è¦‹å‡ºã—","monospace":"monospace","fontSize":"サイズ","cursive":"cursive"})��������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000163�00000000000�011565� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/_editor/nls/sv/��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/_0000755�0000000�0000000�00000000000�11360615640�027174� 5����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000200�00000000000�011555� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/_editor/nls/sv/LinkDialog.js�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/_0000644�0000000�0000000�00000000202�11360615632�027171� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������({"set":"Ange","text":"Beskrivning:","insertImageTitle":"Bildegenskaper","url":"URL-adress:","createLinkTitle":"Länkegenskaper"})����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000176�00000000000�011571� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/_editor/nls/sv/commands.js���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/_0000644�0000000�0000000�00000002526�11360615640�027203� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������({"removeFormat":"Ta bort format","copy":"Kopiera","paste":"Klistra in","selectAll":"Markera allt","insertOrderedList":"Numrerad lista","insertTable":"Infoga/redigera tabell","underline":"Understrykning","foreColor":"Förgrundsfärg","htmlToggle":"HTML-källkod","formatBlock":"Styckeformat","insertHorizontalRule":"Horisontell linjal","delete":"Ta bort","insertUnorderedList":"Punktlista","tableProp":"Tabellegenskap","insertImage":"Infoga bild","superscript":"Upphöjt","subscript":"Nedsänkt","createLink":"Skapa länk","undo":"Ã…ngra","italic":"Kursiv","fontName":"Teckensnittsnamn","justifyLeft":"Vänsterjustera","unlink":"Ta bort länk","toggleTableBorder":"Aktivera/avaktivera tabellram","ctrlKey":"Ctrl+${0}","fontSize":"Teckenstorlek","indent":"Indrag","redo":"Gör om","strikethrough":"Genomstruken","justifyFull":"Marginaljustera","justifyCenter":"Centrera","hiliteColor":"Bakgrundsfärg","deleteTable":"Ta bort tabell","outdent":"Utdrag","cut":"Klipp ut","plainFormatBlock":"Styckeformat","toggleDir":"Växla riktning","bold":"Fetstil","systemShortcutFF":"Ã…tgärden \"${0}\" är endast tillgänglig i Mozilla Firefox med hjälp av ett kortkommando. Använd ${1}.","justifyRight":"Högerjustera","appleKey":"⌘${0}","systemShortcut":"The \"${0}\" action is only available in your browser using a keyboard shortcut. Use ${1}.","tabIndent":"Tab Indent"})��������������������������������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000200�00000000000�011555� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/_editor/nls/sv/FontChoice.js�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/_0000644�0000000�0000000�00000000632�11360615634�027202� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������({"1":"mycket, mycket litet","2":"mycket litet","formatBlock":"Format","3":"litet","4":"medelstort","5":"stort","6":"extra stort","7":"extra extra stort","fantasy":"fantasy","serif":"serif","p":"Stycke","pre":"Förformaterat","sans-serif":"sans-serif","fontName":"Teckensnitt","h1":"Rubrik","h2":"Underrubrik","h3":"Underunderrubrik","monospace":"fast teckenavstÃ¥nd","fontSize":"Storlek","cursive":"kursivt"})������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000163�00000000000�011565� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/_editor/nls/da/��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/_0000755�0000000�0000000�00000000000�11360615644�027200� 5����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000200�00000000000�011555� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/_editor/nls/da/LinkDialog.js�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/_0000644�0000000�0000000�00000000200�11360615632�027167� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������({"set":"Definér","text":"Beskrivelse:","insertImageTitle":"Billedegenskaber","url":"URL:","createLinkTitle":"Linkegenskaber"})������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000176�00000000000�011571� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/_editor/nls/da/commands.js���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/_0000644�0000000�0000000�00000002467�11360615644�027213� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������({"removeFormat":"Fjern format","copy":"Kopiér","paste":"Sæt ind","selectAll":"Markér alle","insertOrderedList":"Nummereret liste","insertTable":"Indsæt/redigér tabel","underline":"Understreget","foreColor":"Forgrundsfarve","htmlToggle":"HTML-kilde","formatBlock":"Afsnitstypografi","insertHorizontalRule":"Vandret linje","delete":"Slet","insertUnorderedList":"Punktliste","tableProp":"Tabelegenskab","insertImage":"Indsæt billede","superscript":"Hævet skrift","subscript":"Sænket skrift","createLink":"Opret link","undo":"Fortryd","italic":"Kursiv","fontName":"Skriftnavn","justifyLeft":"Venstrejusteret","unlink":"Fjern link","toggleTableBorder":"Skift tabelramme","fontSize":"Skriftstørrelse","indent":"Indrykning","redo":"Annullér Fortryd","strikethrough":"Gennemstreget","justifyFull":"Lige margener","justifyCenter":"Centreret","hiliteColor":"Baggrundsfarve","deleteTable":"Slet tabel","outdent":"Udrykning","cut":"Klip","plainFormatBlock":"Afsnitstypografi","toggleDir":"Skift retning","bold":"Fed","systemShortcutFF":"Funktionen \"${0}\" kan kun bruges i Mozilla Firefox med en tastaturgenvej. Brug ${1}.","justifyRight":"Højrejusteret","appleKey":"⌘${0}","ctrlKey":"ctrl+${0}","systemShortcut":"The \"${0}\" action is only available in your browser using a keyboard shortcut. Use ${1}.","tabIndent":"Tab Indent"})���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000200�00000000000�011555� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/_editor/nls/da/FontChoice.js�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/_0000644�0000000�0000000�00000000574�11360615634�027207� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������({"1":"xx-small","2":"x-small","formatBlock":"Format","3":"small","4":"medium","5":"large","6":"x-large","7":"xx-large","fantasy":"fantasy","serif":"serif","p":"Afsnit","pre":"Forudformateret","sans-serif":"sans-serif","fontName":"Skrifttype","h1":"Overskrift","h2":"Underoverskrift","h3":"Underunderoverskrift","monospace":"monospace","fontSize":"Størrelse","cursive":"kursiv"})������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000163�00000000000�011565� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/_editor/nls/ko/��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/_0000755�0000000�0000000�00000000000�11360615640�027174� 5����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000200�00000000000�011555� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/_editor/nls/ko/LinkDialog.js�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/_0000644�0000000�0000000�00000000206�11360615632�027175� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������({"set":"설정","text":"설명:","insertImageTitle":"ì´ë¯¸ì§€ ë“±ë¡ ì •ë³´","url":"URL:","createLinkTitle":"ë§í¬ ë“±ë¡ ì •ë³´"})������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000176�00000000000�011571� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/_editor/nls/ko/commands.js���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/_0000644�0000000�0000000�00000002576�11360615640�027210� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������({"removeFormat":"í˜•ì‹ ì œê±°","copy":"복사","paste":"붙여넣기","selectAll":"ëª¨ë‘ ì„ íƒ","insertOrderedList":"번호 목ë¡","insertTable":"í…Œì´ë¸” 삽입/편집","underline":"밑줄","foreColor":"전경색","htmlToggle":"HTML 소스","formatBlock":"ë‹¨ë½ ì–‘ì‹","insertHorizontalRule":"ìˆ˜í‰ ìž","delete":"ì‚­ì œ","insertUnorderedList":"글머리표 목ë¡","tableProp":"í…Œì´ë¸” 특성","insertImage":"ì´ë¯¸ì§€ 삽입","superscript":"위첨ìž","subscript":"아래첨ìž","createLink":"ë§í¬ 작성","undo":"실행 취소","italic":"ì´íƒ¤ë¦­ì²´","fontName":"글꼴 ì´ë¦„","justifyLeft":"왼쪽 맞춤","unlink":"ë§í¬ 제거","toggleTableBorder":"토글 í…Œì´ë¸” 경계","fontSize":"글꼴 í¬ê¸°","indent":"들여쓰기","redo":"다시 실행","strikethrough":"취소선","justifyFull":"양쪽 맞춤","justifyCenter":"ê°€ìš´ë° ë§žì¶¤","hiliteColor":"배경색","deleteTable":"í…Œì´ë¸” ì‚­ì œ","outdent":"내어쓰기","cut":"잘ë¼ë‚´ê¸°","plainFormatBlock":"ë‹¨ë½ ì–‘ì‹","toggleDir":"토글 ë°©í–¥","bold":"êµµì€ì²´","systemShortcutFF":"\"${0}\" 조치는 키보드 바로 가기를 사용하는 Mozilla Firefoxì—서만 사용 가능합니다. ${1} 사용.","justifyRight":"오른쪽 맞춤","appleKey":"⌘${0}","ctrlKey":"ctrl+${0}","systemShortcut":"The \"${0}\" action is only available in your browser using a keyboard shortcut. Use ${1}.","tabIndent":"Tab Indent"})����������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000200�00000000000�011555� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/_editor/nls/ko/FontChoice.js�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/_0000644�0000000�0000000�00000000603�11360615632�027176� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������({"1":"가장 작게","2":"조금 작게","formatBlock":"서ì‹","3":"작게","4":"중간","5":"í¬ê²Œ","6":"조금 í¬ê²Œ","7":"가장 í¬ê²Œ","fantasy":"fantasy","serif":"serif","p":"단ë½","pre":"서ì‹ì´ 지정ë¨","sans-serif":"sans-serif","fontName":"글꼴","h1":"제목","h2":"부제목","h3":"하위 부제목","monospace":"monospace","fontSize":"í¬ê¸°","cursive":"cursive"})�����������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000163�00000000000�011565� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/_editor/nls/ru/��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/_0000755�0000000�0000000�00000000000�11360615640�027174� 5����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000200�00000000000�011555� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/_editor/nls/ru/LinkDialog.js�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/_0000644�0000000�0000000�00000000257�11360615634�027205� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������({"set":"Задать","text":"ОпиÑание:","insertImageTitle":"СвойÑтва изображениÑ","url":"URL:","createLinkTitle":"СвойÑтва ÑÑылки"})�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000176�00000000000�011571� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/_editor/nls/ru/commands.js���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/_0000644�0000000�0000000�00000003553�11360615636�027211� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������({"removeFormat":"Удалить формат","copy":"Копировать","paste":"Ð’Ñтавить","selectAll":"Выбрать вÑе","insertOrderedList":"Ðумерованный ÑпиÑок","insertTable":"Ð’Ñтавить/изменить таблицу","underline":"Подчеркивание","foreColor":"Цвет текÑта","htmlToggle":"Код HTML","formatBlock":"Стиль абзаца","insertHorizontalRule":"Ð“Ð¾Ñ€Ð¸Ð·Ð¾Ð½Ñ‚Ð°Ð»ÑŒÐ½Ð°Ñ Ð»Ð¸Ð½ÐµÐ¹ÐºÐ°","delete":"Удалить","insertUnorderedList":"СпиÑок Ñ Ð¼Ð°Ñ€ÐºÐµÑ€Ð°Ð¼Ð¸","tableProp":"СвойÑтва таблицы","insertImage":"Ð’Ñтавить изображение","superscript":"Верхний индекÑ","subscript":"Ðижний индекÑ","createLink":"Создать ÑÑылку","undo":"Отменить","italic":"КурÑив","fontName":"Ðазвание шрифта","justifyLeft":"По левому краю","unlink":"Удалить ÑÑылку","toggleTableBorder":"Переключить рамку таблицы","fontSize":"Размер шрифта","indent":"ОтÑтуп","redo":"Повторить","strikethrough":"Перечеркивание","justifyFull":"По ширине","justifyCenter":"По центру","hiliteColor":"Цвет фона","deleteTable":"Удалить таблицу","outdent":"Ð’Ñ‚Ñжка","cut":"Вырезать","plainFormatBlock":"Стиль абзаца","toggleDir":"Изменить направление","bold":"Полужирный","systemShortcutFF":"ДейÑтвие \"${0}\" доÑтупно в Mozilla Firefox только через Ñочетание клавиш. ИÑпользуйте ${1}.","justifyRight":"По правому краю","appleKey":"⌘${0}","ctrlKey":"ctrl+${0}","systemShortcut":"The \"${0}\" action is only available in your browser using a keyboard shortcut. Use ${1}.","tabIndent":"Tab Indent"})�����������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000200�00000000000�011555� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/_editor/nls/ru/FontChoice.js�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/_0000644�0000000�0000000�00000001215�11360615640�027175� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������({"1":"Ñамый маленький","2":"очень маленький","formatBlock":"Формат","3":"маленький","4":"Ñредний","5":"большой","6":"очень большой","7":"Ñамый большой","fantasy":"артиÑтичеÑкий","serif":"Ñ Ð·Ð°Ñечками","p":"Ðбзац","pre":"Заранее отформатированный","sans-serif":"без заÑечек","fontName":"Шрифт","h1":"Заголовок","h2":"Подзаголовок","h3":"Вложенный подзаголовок","monospace":"непропорциональный","fontSize":"Размер","cursive":"курÑив"})�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000163�00000000000�011565� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/_editor/nls/hu/��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/_0000755�0000000�0000000�00000000000�11360615640�027174� 5����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000200�00000000000�011555� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/_editor/nls/hu/LinkDialog.js�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/_0000644�0000000�0000000�00000000220�11360615634�027173� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������({"set":"Beállítás","text":"Leírás:","insertImageTitle":"Kép tulajdonságai","url":"URL:","createLinkTitle":"Hivatkozás tulajdonságai"})��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000176�00000000000�011571� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/_editor/nls/hu/commands.js���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/_0000644�0000000�0000000�00000003013�11360615640�027173� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������({"removeFormat":"Formázás eltávolítása","copy":"Másolás","paste":"Beillesztés","selectAll":"Összes kijelölése","insertOrderedList":"Számozott lista","insertTable":"Táblázat beszúrása/szerkesztése","underline":"Aláhúzott","foreColor":"ElÅ‘térszín","htmlToggle":"HTML forrás","formatBlock":"Bekezdés stílusa","insertHorizontalRule":"Vízszintes vonalzó","delete":"Törlés","insertUnorderedList":"Felsorolásjeles lista","tableProp":"Táblázat tulajdonságai","insertImage":"Kép beszúrása","superscript":"FelsÅ‘ index","subscript":"Alsó index","createLink":"Hivatkozás létrehozása","undo":"Visszavonás","italic":"DÅ‘lt","fontName":"Betűtípus","justifyLeft":"Balra igazítás","unlink":"Hivatkozás eltávolítása","toggleTableBorder":"Táblázatszegély ki-/bekapcsolása","fontSize":"Betűméret","indent":"Behúzás","redo":"Újra","strikethrough":"Ãthúzott","justifyFull":"Sorkizárás","justifyCenter":"Középre igazítás","hiliteColor":"Háttérszín","deleteTable":"Táblázat törlése","outdent":"Negatív behúzás","cut":"Kivágás","plainFormatBlock":"Bekezdés stílusa","toggleDir":"Irányváltás","bold":"Félkövér","systemShortcutFF":"A(z) \"${0}\" művelet csak Mozilla Firefox böngészÅ‘ben érhetÅ‘ el billentyűparancs használatával. Használja a következÅ‘t: ${1}.","justifyRight":"Jobbra igazítás","appleKey":"⌘${0}","ctrlKey":"ctrl+${0}","systemShortcut":"The \"${0}\" action is only available in your browser using a keyboard shortcut. Use ${1}.","tabIndent":"Tab Indent"})���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000200�00000000000�011555� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/_editor/nls/hu/FontChoice.js�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/_0000644�0000000�0000000�00000000553�11360615634�027204� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������({"1":"xx-kicsi","2":"x-kicsi","formatBlock":"Formátum","3":"kicsi","4":"közepes","5":"nagy","6":"x-nagy","7":"xx-nagy","fantasy":"fantázia","serif":"talpas","p":"Bekezdés","pre":"ElÅ‘formázott","sans-serif":"talpatlan","fontName":"Betűtípus","h1":"Címsor","h2":"Alcím","h3":"Al-alcím","monospace":"egyenközű","fontSize":"Méret","cursive":"kurzív"})�����������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000175�00000000000�011570� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/_editor/nls/FontChoice.js����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/_0000644�0000000�0000000�00000000544�11360615642�027203� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������({"1":"xx-small","2":"x-small","formatBlock":"Format","3":"small","4":"medium","5":"large","6":"x-large","7":"xx-large","fantasy":"fantasy","serif":"serif","p":"Paragraph","pre":"Pre-formatted","sans-serif":"sans-serif","fontName":"Font","h1":"Heading","h2":"Subheading","h3":"Sub-subheading","monospace":"monospace","fontSize":"Size","cursive":"cursive"})������������������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000163�00000000000�011565� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/_editor/nls/th/��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/_0000755�0000000�0000000�00000000000�11360615632�027175� 5����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000200�00000000000�011555� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/_editor/nls/th/LinkDialog.js�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/_0000644�0000000�0000000�00000000330�11360615632�027173� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������({"set":"ตั้งค่า","text":"รายละเอียด","insertImageTitle":"คุณสมบัติอิมเมจ","url":"URL:","createLinkTitle":"คุณสมบัติลิงà¸à¹Œ"})��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000176�00000000000�011571� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/_editor/nls/th/commands.js���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/_0000644�0000000�0000000�00000004063�11360615632�027202� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������({"removeFormat":"ลบรูปà¹à¸šà¸š","copy":"คัดลอà¸","paste":"วาง","selectAll":"เลือà¸à¸—ั้งหมด","insertOrderedList":"รายà¸à¸²à¸£à¹à¸šà¸šà¸•ัวเลข","insertTable":"à¹à¸—รà¸/à¹à¸à¹‰à¹„ขตาราง","underline":"ขีดเส้นใต้","foreColor":"สีพื้นหน้า","htmlToggle":"ซอร์ส HTML","formatBlock":"ลัà¸à¸©à¸“ะย่อหน้า","insertHorizontalRule":"ไม้บรรทัดà¹à¸™à¸§à¸™à¸­à¸™","delete":"ลบ","insertUnorderedList":"รายà¸à¸²à¸£à¸ªà¸±à¸à¸¥à¸±à¸à¸©à¸“์à¹à¸ªà¸”งหัวข้อย่อย","tableProp":"คุณสมบัติตาราง","insertImage":"à¹à¸—รà¸à¸­à¸´à¸¡à¹€à¸¡à¸ˆ","superscript":"ตัวยà¸","subscript":"ตัวห้อย","createLink":"สร้างลิงà¸à¹Œ","undo":"เลิà¸à¸—ำ","italic":"ตัวเอียง","fontName":"ชื่อฟอนต์","justifyLeft":"ชิดขอบซ้าย","unlink":"ลบลิงà¸à¹Œ","toggleTableBorder":"สลับเส้นขอบตาราง","fontSize":"ขนาดฟอนต์","indent":"ย่อหน้า","redo":"ทำซ้ำ","strikethrough":"ขีดคั่น","justifyFull":"ชิดขอบ","justifyCenter":"จัดà¸à¸¶à¹ˆà¸‡à¸à¸¥à¸²à¸‡","hiliteColor":"สีพื้นหลัง","deleteTable":"ลบตาราง","outdent":"ขยับย่อหน้าออà¸","cut":"ตัด","plainFormatBlock":"ลัà¸à¸©à¸“ะย่อหน้า","toggleDir":"ทิศทางà¸à¸²à¸£à¸ªà¸¥à¸±à¸š","bold":"ตัวหนา","systemShortcutFF":"à¸à¸²à¸£à¸”ำเนินà¸à¸²à¸£ \"${0}\" สามารถใช้งานได้เฉพาะใน Mozilla Firefox โดยใช้à¹à¸›à¹‰à¸™à¸žà¸´à¸¡à¸žà¹Œà¸¥à¸±à¸” ใช้ ${1}","justifyRight":"ชิดขอบขวา","appleKey":"⌘${0}","ctrlKey":"ctrl+${0}","systemShortcut":"The \"${0}\" action is only available in your browser using a keyboard shortcut. Use ${1}.","tabIndent":"Tab Indent"})�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000200�00000000000�011555� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/_editor/nls/th/FontChoice.js�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/_0000644�0000000�0000000�00000001035�11360615632�027176� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������({"1":"xx-small","2":"x-small","formatBlock":"รูปà¹à¸šà¸š","3":"small","4":"medium","5":"large","6":"x-large","7":"xx-large","fantasy":"fantasy","serif":"serif","p":"ย่อหน้า","pre":"à¸à¸²à¸£à¸à¸³à¸«à¸™à¸”รูปà¹à¸šà¸šà¸¥à¹ˆà¸§à¸‡à¸«à¸™à¹‰à¸²","sans-serif":"sans-serif","fontName":"ฟอนต์","h1":"ส่วนหัว","h2":"ส่วนหัวย่อย","h3":"ส่วนย่อยของส่วนหัวย่อย","monospace":"monospace","fontSize":"ขนาด","cursive":"cursive"})���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000163�00000000000�011565� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/_editor/nls/de/��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/_0000755�0000000�0000000�00000000000�11360615634�027177� 5����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000200�00000000000�011555� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/_editor/nls/de/LinkDialog.js�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/_0000644�0000000�0000000�00000000210�11360615632�027170� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������({"set":"Festlegen","text":"Beschreibung:","insertImageTitle":"Grafikeigenschaften","url":"URL:","createLinkTitle":"Linkeigenschaften"})����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000176�00000000000�011571� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/_editor/nls/de/commands.js���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/_0000644�0000000�0000000�00000002671�11360615634�027207� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������({"removeFormat":"Formatierung entfernen","copy":"Kopieren","paste":"Einfügen","selectAll":"Alles auswählen","insertOrderedList":"Nummerierung","insertTable":"Tabelle einfügen/bearbeiten","underline":"Unterstrichen","foreColor":"Vordergrundfarbe","htmlToggle":"HTML-Quelltext","formatBlock":"Absatzstil","insertHorizontalRule":"Horizontaler Strich","delete":"Löschen","insertUnorderedList":"Aufzählungszeichen","tableProp":"Tabelleneigenschaft","insertImage":"Grafik einfügen","superscript":"Hochgestellt","subscript":"Tiefgestellt","createLink":"Link erstellen","undo":"Rückgängig","italic":"Kursiv","fontName":"Schriftartname","justifyLeft":"Linksbündig","unlink":"Link entfernen","toggleTableBorder":"Tabellenumrandung ein-/ausschalten","ctrlKey":"Strg+${0}","fontSize":"Schriftgröße","systemShortcut":"Die Aktion \"${0}\" ist in Ihrem Browser über einen Tastaturkurzbefehl verfügbar. Verwenden Sie ${1}.","indent":"Einrücken","redo":"Wiederherstellen","strikethrough":"Durchgestrichen","justifyFull":"Blocksatz","justifyCenter":"Zentriert","hiliteColor":"Hintergrundfarbe","deleteTable":"Tabelle löschen","outdent":"Ausrücken","cut":"Ausschneiden","plainFormatBlock":"Absatzstil","toggleDir":"Richtung wechseln","bold":"Fett","tabIndent":"Tabulatoreinrückung","systemShortcutFF":"Die Aktion \"${0}\" ist in Mozilla Firefox nur über einen Tastaturkurzbefehl verfügbar. Verwenden Sie ${1}.","justifyRight":"Rechtsbündig","appleKey":"⌘${0}"})�����������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000200�00000000000�011555� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/_editor/nls/de/FontChoice.js�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/_0000644�0000000�0000000�00000000536�11360615632�027203� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������({"1":"XXS","2":"XS","formatBlock":"Format","3":"S","4":"M","5":"L","6":"XL","7":"XXL","fantasy":"Fantasie","serif":"Serife","p":"Absatz","pre":"Vorformatiert","sans-serif":"Serifenlos","fontName":"Schriftart","h1":"Überschrift","h2":"Unterüberschrift","h3":"Unterunterüberschrift","monospace":"Monospace","fontSize":"Größe","cursive":"Kursiv"})������������������������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000167�00000000000�011571� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/_editor/RichText.js����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/_0000644�0000000�0000000�00000062313�11360615646�027211� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* Copyright (c) 2004-2008, The Dojo Foundation All Rights Reserved. Available via Academic Free License >= 2.1 OR the modified BSD license. see: http://dojotoolkit.org/license for details */ if(!dojo._hasResource["dijit._editor.RichText"]){dojo._hasResource["dijit._editor.RichText"]=true;dojo.provide("dijit._editor.RichText");dojo.require("dijit._Widget");dojo.require("dijit._editor.selection");dojo.require("dijit._editor.range");dojo.require("dijit._editor.html");dojo.require("dojo.i18n");dojo.requireLocalization("dijit.form","Textarea",null,"ar,ca,cs,da,de,el,es,fi,fr,he,hu,it,ja,ko,nb,nl,pl,pt,pt-pt,ru,sk,sl,sv,ROOT,th,tr,zh,zh-tw");if(!dojo.config["useXDomain"]||dojo.config["allowXdRichTextSave"]){if(dojo._postLoad){(function(){var _1=dojo.doc.createElement("textarea");_1.id=dijit._scopeName+"._editor.RichText.savedContent";var s=_1.style;s.display="none";s.position="absolute";s.top="-100px";s.left="-100px";s.height="3px";s.width="3px";dojo.body().appendChild(_1);})();}else{try{dojo.doc.write("<textarea id=\""+dijit._scopeName+"._editor.RichText.savedContent\" "+"style=\"display:none;position:absolute;top:-100px;left:-100px;height:3px;width:3px;overflow:hidden;\"></textarea>");}catch(e){}}}dojo.declare("dijit._editor.RichText",dijit._Widget,{constructor:function(_3){this.contentPreFilters=[];this.contentPostFilters=[];this.contentDomPreFilters=[];this.contentDomPostFilters=[];this.editingAreaStyleSheets=[];this._keyHandlers={};this.contentPreFilters.push(dojo.hitch(this,"_preFixUrlAttributes"));if(dojo.isMoz){this.contentPreFilters.push(this._fixContentForMoz);this.contentPostFilters.push(this._removeMozBogus);}if(dojo.isSafari){this.contentPostFilters.push(this._removeSafariBogus);}this.onLoadDeferred=new dojo.Deferred();},inheritWidth:false,focusOnLoad:false,name:"",styleSheets:"",_content:"",height:"300px",minHeight:"1em",isClosed:true,isLoaded:false,_SEPARATOR:"@@**%%__RICHTEXTBOUNDRY__%%**@@",onLoadDeferred:null,isTabIndent:false,postCreate:function(){if("textarea"==this.domNode.tagName.toLowerCase()){console.warn("RichText should not be used with the TEXTAREA tag. See dijit._editor.RichText docs.");}dojo.publish(dijit._scopeName+"._editor.RichText::init",[this]);this.open();this.setupDefaultShortcuts();},setupDefaultShortcuts:function(){var _4=dojo.hitch(this,function(_5,_6){return function(){return !this.execCommand(_5,_6);};});var _7={b:_4("bold"),i:_4("italic"),u:_4("underline"),a:_4("selectall"),s:function(){this.save(true);},m:function(){this.isTabIndent=!this.isTabIndent;},"1":_4("formatblock","h1"),"2":_4("formatblock","h2"),"3":_4("formatblock","h3"),"4":_4("formatblock","h4"),"\\":_4("insertunorderedlist")};if(!dojo.isIE){_7.Z=_4("redo");}for(var _8 in _7){this.addKeyHandler(_8,true,false,_7[_8]);}},events:["onKeyPress","onKeyDown","onKeyUp","onClick"],captureEvents:[],_editorCommandsLocalized:false,_localizeEditorCommands:function(){if(this._editorCommandsLocalized){return;}this._editorCommandsLocalized=true;var _9=["div","p","pre","h1","h2","h3","h4","h5","h6","ol","ul","address"];var _a="",_b,i=0;while((_b=_9[i++])){if(_b.charAt(1)!="l"){_a+="<"+_b+"><span>content</span></"+_b+"><br/>";}else{_a+="<"+_b+"><li>content</li></"+_b+"><br/>";}}var _d=dojo.doc.createElement("div");dojo.style(_d,{position:"absolute",left:"-2000px",top:"-2000px"});dojo.doc.body.appendChild(_d);_d.innerHTML=_a;var _e=_d.firstChild;while(_e){dijit._editor.selection.selectElement(_e.firstChild);dojo.withGlobal(this.window,"selectElement",dijit._editor.selection,[_e.firstChild]);var _f=_e.tagName.toLowerCase();this._local2NativeFormatNames[_f]=document.queryCommandValue("formatblock");this._native2LocalFormatNames[this._local2NativeFormatNames[_f]]=_f;_e=_e.nextSibling.nextSibling;}dojo.body().removeChild(_d);},open:function(_10){if((!this.onLoadDeferred)||(this.onLoadDeferred.fired>=0)){this.onLoadDeferred=new dojo.Deferred();}if(!this.isClosed){this.close();}dojo.publish(dijit._scopeName+"._editor.RichText::open",[this]);this._content="";if((arguments.length==1)&&(_10["nodeName"])){this.domNode=_10;}var dn=this.domNode;var _12;if((dn["nodeName"])&&(dn.nodeName.toLowerCase()=="textarea")){var ta=this.textarea=dn;this.name=ta.name;_12=this._preFilterContent(ta.value);dn=this.domNode=dojo.doc.createElement("div");dn.setAttribute("widgetId",this.id);ta.removeAttribute("widgetId");dn.cssText=ta.cssText;dn.className+=" "+ta.className;dojo.place(dn,ta,"before");var _14=dojo.hitch(this,function(){with(ta.style){display="block";position="absolute";left=top="-1000px";if(dojo.isIE){this.__overflow=overflow;overflow="hidden";}}});if(dojo.isIE){setTimeout(_14,10);}else{_14();}if(ta.form){dojo.connect(ta.form,"onsubmit",this,function(){ta.value=this.getValue();});}}else{_12=this._preFilterContent(dijit._editor.getChildrenHtml(dn));dn.innerHTML="";}if(_12==""){_12=" ";}var _15=dojo.contentBox(dn);this._oldHeight=_15.h;this._oldWidth=_15.w;this.savedContent=_12;if((dn["nodeName"])&&(dn.nodeName=="LI")){dn.innerHTML=" <br>";}this.editingArea=dn.ownerDocument.createElement("div");dn.appendChild(this.editingArea);if(this.name!=""&&(!dojo.config["useXDomain"]||dojo.config["allowXdRichTextSave"])){var _16=dojo.byId(dijit._scopeName+"._editor.RichText.savedContent");if(_16.value!=""){var _17=_16.value.split(this._SEPARATOR),i=0,dat;while((dat=_17[i++])){var _1a=dat.split(":");if(_1a[0]==this.name){_12=_1a[1];_17.splice(i,1);break;}}}this.connect(window,"onbeforeunload","_saveContent");}this.isClosed=false;if(dojo.isIE||dojo.isSafari||dojo.isOpera){var _1b=dojo.config["dojoBlankHtmlUrl"]||(dojo.moduleUrl("dojo","resources/blank.html")+"");var ifr=this.editorObject=this.iframe=dojo.doc.createElement("iframe");ifr.id=this.id+"_iframe";ifr.src=_1b;ifr.style.border="none";ifr.style.width="100%";ifr.frameBorder=0;this.editingArea.appendChild(ifr);var h=null;var _1e=dojo.hitch(this,function(){if(h){dojo.disconnect(h);h=null;}this.window=ifr.contentWindow;var d=this.document=this.window.document;d.open();d.write(this._getIframeDocTxt(_12));d.close();if(this._layoutMode){ifr.style.height="100%";}else{if(dojo.isIE>=7){if(this.height){ifr.style.height=this.height;}if(this.minHeight){ifr.style.minHeight=this.minHeight;}}else{ifr.style.height=this.height?this.height:this.minHeight;}}if(dojo.isIE){this._localizeEditorCommands();}this.onLoad();this.savedContent=this.getValue(true);});if(dojo.isIE&&dojo.isIE<=7){var t=setInterval(function(){if(ifr.contentWindow.isLoaded){clearInterval(t);_1e();}},100);}else{h=dojo.connect(((dojo.isIE)?ifr.contentWindow:ifr),"onload",_1e);}}else{this._drawIframe(_12);this.savedContent=this.getValue(true);}if(dn.nodeName=="LI"){dn.lastChild.style.marginTop="-1.2em";}if(this.domNode.nodeName=="LI"){this.domNode.lastChild.style.marginTop="-1.2em";}dojo.addClass(this.domNode,"RichTextEditable");},_local2NativeFormatNames:{},_native2LocalFormatNames:{},_localizedIframeTitles:null,_getIframeDocTxt:function(_21){var _cs=dojo.getComputedStyle(this.domNode);if(dojo.isIE||(!this.height&&!dojo.isMoz)){_21="<div>"+_21+"</div>";}var _23=[_cs.fontWeight,_cs.fontSize,_cs.fontFamily].join(" ");var _24=_cs.lineHeight;if(_24.indexOf("px")>=0){_24=parseFloat(_24)/parseFloat(_cs.fontSize);}else{if(_24.indexOf("em")>=0){_24=parseFloat(_24);}else{_24="1.0";}}var _25="";this.style.replace(/(^|;)(line-|font-?)[^;]+/g,function(_26){_25+=_26.replace(/^;/g,"")+";";});return [this.isLeftToRight()?"<html><head>":"<html dir='rtl'><head>",(dojo.isMoz?"<title>"+this._localizedIframeTitles.iframeEditTitle+"":""),"",this._applyEditingAreaStyleSheets(),""+_21+""].join("");},_drawIframe:function(_27){if(!this.iframe){var ifr=this.iframe=dojo.doc.createElement("iframe");ifr.id=this.id+"_iframe";var _29=ifr.style;_29.border="none";_29.lineHeight="0";_29.verticalAlign="bottom";this.editorObject=this.iframe;this._localizedIframeTitles=dojo.i18n.getLocalization("dijit.form","Textarea");var _2a=dojo.query("label[for=\""+this.id+"\"]");if(_2a.length){this._localizedIframeTitles.iframeEditTitle=_2a[0].innerHTML+" "+this._localizedIframeTitles.iframeEditTitle;}}this.iframe.style.width=this.inheritWidth?this._oldWidth:"100%";if(this._layoutMode){this.iframe.style.height="100%";}else{if(this.height){this.iframe.style.height=this.height;}else{this.iframe.height=this._oldHeight;}}var _2b;if(this.textarea){_2b=this.srcNodeRef;}else{_2b=dojo.doc.createElement("div");_2b.style.display="none";_2b.innerHTML=_27;this.editingArea.appendChild(_2b);}this.editingArea.appendChild(this.iframe);var _2c=dojo.hitch(this,function(){if(!this.editNode){if(!this.document){try{if(this.iframe.contentWindow){this.window=this.iframe.contentWindow;this.document=this.iframe.contentWindow.document;}else{if(this.iframe.contentDocument){this.window=this.iframe.contentDocument.window;this.document=this.iframe.contentDocument;}}}catch(e){}if(!this.document){setTimeout(_2c,50);return;}var _2d=this.document;_2d.open();if(dojo.isAIR){_2d.body.innerHTML=_27;}else{_2d.write(this._getIframeDocTxt(_27));}_2d.close();dojo._destroyElement(_2b);}if(!this.document.body){setTimeout(_2c,50);return;}this.onLoad();}else{dojo._destroyElement(_2b);this.editNode.innerHTML=_27;this.onDisplayChanged();}this._preDomFilterContent(this.editNode);});_2c();},_applyEditingAreaStyleSheets:function(){var _2e=[];if(this.styleSheets){_2e=this.styleSheets.split(";");this.styleSheets="";}_2e=_2e.concat(this.editingAreaStyleSheets);this.editingAreaStyleSheets=[];var _2f="",i=0,url;while((url=_2e[i++])){var _32=(new dojo._Url(dojo.global.location,url)).toString();this.editingAreaStyleSheets.push(_32);_2f+="";}return _2f;},addStyleSheet:function(uri){var url=uri.toString();if(url.charAt(0)=="."||(url.charAt(0)!="/"&&!uri.host)){url=(new dojo._Url(dojo.global.location,url)).toString();}if(dojo.indexOf(this.editingAreaStyleSheets,url)>-1){return;}this.editingAreaStyleSheets.push(url);if(this.document.createStyleSheet){this.document.createStyleSheet(url);}else{var _35=this.document.getElementsByTagName("head")[0];var _36=this.document.createElement("link");with(_36){rel="stylesheet";type="text/css";href=url;}_35.appendChild(_36);}},removeStyleSheet:function(uri){var url=uri.toString();if(url.charAt(0)=="."||(url.charAt(0)!="/"&&!uri.host)){url=(new dojo._Url(dojo.global.location,url)).toString();}var _39=dojo.indexOf(this.editingAreaStyleSheets,url);if(_39==-1){return;}delete this.editingAreaStyleSheets[_39];dojo.withGlobal(this.window,"query",dojo,["link:[href=\""+url+"\"]"]).orphan();},disabled:true,_mozSettingProps:["styleWithCSS","insertBrOnReturn"],_setDisabledAttr:function(_3a){if(!this.editNode||"_delayedDisabled" in this){this._delayedDisabled=_3a;return;}_3a=Boolean(_3a);if(dojo.isIE||dojo.isSafari||dojo.isOpera){var _3b=dojo.isIE&&(this.isLoaded||!this.focusOnLoad);if(_3b){this.editNode.unselectable="on";}this.editNode.contentEditable=!_3a;if(_3b){var _3c=this;setTimeout(function(){_3c.editNode.unselectable="off";},0);}}else{if(_3a){this._mozSettings=[false,this.blockNodeForEnter==="BR"];}this.document.designMode=(_3a?"off":"on");if(!_3a&&this._mozSettingProps){var ps=this._mozSettingProps;for(var n in ps){if(ps.hasOwnProperty(n)){try{this.document.execCommand(n,false,ps[n]);}catch(e){}}}}}this.disabled=_3a;},_isResized:function(){return false;},onLoad:function(e){if(!this.window.__registeredWindow){this.window.__registeredWindow=true;dijit.registerWin(this.window);}if(!dojo.isIE&&(this.height||dojo.isMoz)){this.editNode=this.document.body;}else{this.editNode=this.document.body.firstChild;var _40=this;if(dojo.isIE){var _41=this.tabStop=dojo.doc.createElement("
");this.editingArea.appendChild(_41);this.iframe.onfocus=function(){_40.editNode.setActive();};}}this.focusNode=this.editNode;try{this.attr("disabled",false);}catch(e){var _42=dojo.connect(this,"onClick",this,function(){this.attr("disabled",false);dojo.disconnect(_42);});}this._preDomFilterContent(this.editNode);var _43=this.events.concat(this.captureEvents);var ap=(this.iframe)?this.document:this.editNode;dojo.forEach(_43,function(_45){this.connect(ap,_45.toLowerCase(),_45);},this);if(dojo.isIE){this.connect(this.document,"onmousedown","_onIEMouseDown");this.editNode.style.zoom=1;}if(this.focusOnLoad){dojo.addOnLoad(dojo.hitch(this,"focus"));}this.onDisplayChanged(e);if("_delayedDisabled" in this){var d=this._delayedDisabled;delete this._delayedDisabled;this.attr("disabled",d);}this.isLoaded=true;if(this.onLoadDeferred){this.onLoadDeferred.callback(true);}},onKeyDown:function(e){if(e.keyCode===dojo.keys.TAB&&this.isTabIndent){dojo.stopEvent(e);if(this.queryCommandEnabled((e.shiftKey?"outdent":"indent"))){this.execCommand((e.shiftKey?"outdent":"indent"));}}if(dojo.isIE){if(e.keyCode==dojo.keys.TAB&&!this.isTabIndent){if(e.shiftKey&&!e.ctrlKey&&!e.altKey){this.iframe.focus();}else{if(!e.shiftKey&&!e.ctrlKey&&!e.altKey){this.tabStop.focus();}}}else{if(e.keyCode===dojo.keys.BACKSPACE&&this.document.selection.type==="Control"){dojo.stopEvent(e);this.execCommand("delete");}else{if((65<=e.keyCode&&e.keyCode<=90)||(e.keyCode>=37&&e.keyCode<=40)){e.charCode=e.keyCode;this.onKeyPress(e);}}}}else{if(dojo.isMoz&&!this.isTabIndent){if(e.keyCode==dojo.keys.TAB&&!e.shiftKey&&!e.ctrlKey&&!e.altKey&&this.iframe){var _48=dojo.isFF<3?this.iframe.contentDocument:this.iframe;_48.title=this._localizedIframeTitles.iframeFocusTitle;this.iframe.focus();dojo.stopEvent(e);}else{if(e.keyCode==dojo.keys.TAB&&e.shiftKey){if(this.toolbar){this.toolbar.focus();}dojo.stopEvent(e);}}}}return true;},onKeyUp:function(e){return;},setDisabled:function(_4a){dojo.deprecated("dijit.Editor::setDisabled is deprecated","use dijit.Editor::attr(\"disabled\",boolean) instead",2);this.attr("disabled",_4a);},_setValueAttr:function(_4b){this.setValue(_4b);},onKeyPress:function(e){var c=(e.keyChar&&e.keyChar.toLowerCase())||e.keyCode;var _4e=this._keyHandlers[c];var _4f=arguments;if(_4e&&!e.altKey){dojo.forEach(_4e,function(h){if((!!h.shift==!!e.shiftKey)&&(!!h.ctrl==!!e.ctrlKey)){if(!h.handler.apply(this,_4f)){e.preventDefault();}}},this);}if(!this._onKeyHitch){this._onKeyHitch=dojo.hitch(this,"onKeyPressed");}setTimeout(this._onKeyHitch,1);return true;},addKeyHandler:function(key,_52,_53,_54){if(!dojo.isArray(this._keyHandlers[key])){this._keyHandlers[key]=[];}this._keyHandlers[key].push({shift:_53||false,ctrl:_52||false,handler:_54});},onKeyPressed:function(){this.onDisplayChanged();},onClick:function(e){this.onDisplayChanged(e);},_onIEMouseDown:function(e){if(!this._focused&&!this.disabled){this.focus();}},_onBlur:function(e){this.inherited(arguments);var _c=this.getValue(true);if(_c!=this.savedContent){this.onChange(_c);this.savedContent=_c;}if(dojo.isMoz&&this.iframe){var _59=dojo.isFF<3?this.iframe.contentDocument:this.iframe;_59.title=this._localizedIframeTitles.iframeEditTitle;}},_initialFocus:true,_onFocus:function(e){if(dojo.isMoz&&this._initialFocus){this._initialFocus=false;if(this.editNode.innerHTML.replace(/^\s+|\s+$/g,"")==" "){this.placeCursorAtStart();}}this.inherited(arguments);},blur:function(){if(!dojo.isIE&&this.window.document.documentElement&&this.window.document.documentElement.focus){this.window.document.documentElement.focus();}else{if(dojo.doc.body.focus){dojo.doc.body.focus();}}},focus:function(){if(!dojo.isIE){dijit.focus(this.iframe);}else{if(this.editNode&&this.editNode.focus){this.iframe.fireEvent("onfocus",document.createEventObject());}}},updateInterval:200,_updateTimer:null,onDisplayChanged:function(e){if(this._updateTimer){clearTimeout(this._updateTimer);}if(!this._updateHandler){this._updateHandler=dojo.hitch(this,"onNormalizedDisplayChanged");}this._updateTimer=setTimeout(this._updateHandler,this.updateInterval);},onNormalizedDisplayChanged:function(){delete this._updateTimer;},onChange:function(_5c){},_normalizeCommand:function(cmd){var _5e=cmd.toLowerCase();if(_5e=="formatblock"){if(dojo.isSafari){_5e="heading";}}else{if(_5e=="hilitecolor"&&!dojo.isMoz){_5e="backcolor";}}return _5e;},_qcaCache:{},queryCommandAvailable:function(_5f){var ca=this._qcaCache[_5f];if(ca!=undefined){return ca;}return this._qcaCache[_5f]=this._queryCommandAvailable(_5f);},_queryCommandAvailable:function(_61){var ie=1;var _63=1<<1;var _64=1<<2;var _65=1<<3;var _66=1<<4;var _67=dojo.isSafari;function isSupportedBy(_68){return {ie:Boolean(_68&ie),mozilla:Boolean(_68&_63),safari:Boolean(_68&_64),safari420:Boolean(_68&_66),opera:Boolean(_68&_65)};};var _69=null;switch(_61.toLowerCase()){case "bold":case "italic":case "underline":case "subscript":case "superscript":case "fontname":case "fontsize":case "forecolor":case "hilitecolor":case "justifycenter":case "justifyfull":case "justifyleft":case "justifyright":case "delete":case "selectall":case "toggledir":_69=isSupportedBy(_63|ie|_64|_65);break;case "createlink":case "unlink":case "removeformat":case "inserthorizontalrule":case "insertimage":case "insertorderedlist":case "insertunorderedlist":case "indent":case "outdent":case "formatblock":case "inserthtml":case "undo":case "redo":case "strikethrough":case "tabindent":_69=isSupportedBy(_63|ie|_65|_66);break;case "blockdirltr":case "blockdirrtl":case "dirltr":case "dirrtl":case "inlinedirltr":case "inlinedirrtl":_69=isSupportedBy(ie);break;case "cut":case "copy":case "paste":_69=isSupportedBy(ie|_63|_66);break;case "inserttable":_69=isSupportedBy(_63|ie);break;case "insertcell":case "insertcol":case "insertrow":case "deletecells":case "deletecols":case "deleterows":case "mergecells":case "splitcell":_69=isSupportedBy(ie|_63);break;default:return false;}return (dojo.isIE&&_69.ie)||(dojo.isMoz&&_69.mozilla)||(dojo.isSafari&&_69.safari)||(_67&&_69.safari420)||(dojo.isOpera&&_69.opera);},execCommand:function(_6a,_6b){var _6c;this.focus();_6a=this._normalizeCommand(_6a);if(_6b!=undefined){if(_6a=="heading"){throw new Error("unimplemented");}else{if((_6a=="formatblock")&&dojo.isIE){_6b="<"+_6b+">";}}}if(_6a=="inserthtml"){_6b=this._preFilterContent(_6b);_6c=true;if(dojo.isIE){var _6d=this.document.selection.createRange();if(this.document.selection.type.toUpperCase()=="CONTROL"){var n=_6d.item(0);while(_6d.length){_6d.remove(_6d.item(0));}n.outerHTML=_6b;}else{_6d.pasteHTML(_6b);}_6d.select();}else{if(dojo.isMoz&&!_6b.length){this._sCall("remove");}else{_6c=this.document.execCommand(_6a,false,_6b);}}}else{if((_6a=="unlink")&&(this.queryCommandEnabled("unlink"))&&(dojo.isMoz||dojo.isSafari)){var a=this._sCall("getAncestorElement",["a"]);this._sCall("selectElement",[a]);_6c=this.document.execCommand("unlink",false,null);}else{if((_6a=="hilitecolor")&&(dojo.isMoz)){this.document.execCommand("styleWithCSS",false,true);_6c=this.document.execCommand(_6a,false,_6b);this.document.execCommand("styleWithCSS",false,false);}else{if((dojo.isIE)&&((_6a=="backcolor")||(_6a=="forecolor"))){_6b=arguments.length>1?_6b:null;_6c=this.document.execCommand(_6a,false,_6b);}else{_6b=arguments.length>1?_6b:null;if(_6b||_6a!="createlink"){_6c=this.document.execCommand(_6a,false,_6b);}}}}}this.onDisplayChanged();return _6c;},queryCommandEnabled:function(_70){if(this.disabled){return false;}_70=this._normalizeCommand(_70);if(dojo.isMoz||dojo.isSafari){if(_70=="unlink"){this._sCall("hasAncestorElement",["a"]);}else{if(_70=="inserttable"){return true;}}}if(dojo.isSafari){if(_70=="copy"){_70="cut";}else{if(_70=="paste"){return true;}}}if(_70=="indent"){var li=this._sCall("getAncestorElement",["li"]);var n=li&&li.previousSibling;while(n){if(n.nodeType==1){return true;}n=n.previousSibling;}return false;}else{if(_70=="outdent"){return this._sCall("hasAncestorElement",["li"]);}}var _73=dojo.isIE?this.document.selection.createRange():this.document;return _73.queryCommandEnabled(_70);},queryCommandState:function(_74){if(this.disabled){return false;}_74=this._normalizeCommand(_74);return this.document.queryCommandState(_74);},queryCommandValue:function(_75){if(this.disabled){return false;}var r;_75=this._normalizeCommand(_75);if(dojo.isIE&&_75=="formatblock"){r=this._native2LocalFormatNames[this.document.queryCommandValue(_75)];}else{r=this.document.queryCommandValue(_75);}return r;},_sCall:function(_77,_78){return dojo.withGlobal(this.window,_77,dijit._editor.selection,_78);},placeCursorAtStart:function(){this.focus();var _79=false;if(dojo.isMoz){var _7a=this.editNode.firstChild;while(_7a){if(_7a.nodeType==3){if(_7a.nodeValue.replace(/^\s+|\s+$/g,"").length>0){_79=true;this._sCall("selectElement",[_7a]);break;}}else{if(_7a.nodeType==1){_79=true;this._sCall("selectElementChildren",[_7a]);break;}}_7a=_7a.nextSibling;}}else{_79=true;this._sCall("selectElementChildren",[this.editNode]);}if(_79){this._sCall("collapse",[true]);}},placeCursorAtEnd:function(){this.focus();var _7b=false;if(dojo.isMoz){var _7c=this.editNode.lastChild;while(_7c){if(_7c.nodeType==3){if(_7c.nodeValue.replace(/^\s+|\s+$/g,"").length>0){_7b=true;this._sCall("selectElement",[_7c]);break;}}else{if(_7c.nodeType==1){_7b=true;if(_7c.lastChild){this._sCall("selectElement",[_7c.lastChild]);}else{this._sCall("selectElement",[_7c]);}break;}}_7c=_7c.previousSibling;}}else{_7b=true;this._sCall("selectElementChildren",[this.editNode]);}if(_7b){this._sCall("collapse",[false]);}},getValue:function(_7d){if(this.textarea){if(this.isClosed||!this.isLoaded){return this.textarea.value;}}return this._postFilterContent(null,_7d);},_getValueAttr:function(){return this.getValue();},setValue:function(_7e){if(!this.isLoaded){this.onLoadDeferred.addCallback(dojo.hitch(this,function(){this.setValue(_7e);}));return;}if(this.textarea&&(this.isClosed||!this.isLoaded)){this.textarea.value=_7e;}else{_7e=this._preFilterContent(_7e);var _7f=this.isClosed?this.domNode:this.editNode;_7f.innerHTML=_7e;this._preDomFilterContent(_7f);}this.onDisplayChanged();},replaceValue:function(_80){if(this.isClosed){this.setValue(_80);}else{if(this.window&&this.window.getSelection&&!dojo.isMoz){this.setValue(_80);}else{if(this.window&&this.window.getSelection){_80=this._preFilterContent(_80);this.execCommand("selectall");if(dojo.isMoz&&!_80){_80=" ";}this.execCommand("inserthtml",_80);this._preDomFilterContent(this.editNode);}else{if(this.document&&this.document.selection){this.setValue(_80);}}}}},_preFilterContent:function(_81){var ec=_81;dojo.forEach(this.contentPreFilters,function(ef){if(ef){ec=ef(ec);}});return ec;},_preDomFilterContent:function(dom){dom=dom||this.editNode;dojo.forEach(this.contentDomPreFilters,function(ef){if(ef&&dojo.isFunction(ef)){ef(dom);}},this);},_postFilterContent:function(dom,_87){var ec;if(!dojo.isString(dom)){dom=dom||this.editNode;if(this.contentDomPostFilters.length){if(_87){dom=dojo.clone(dom);}dojo.forEach(this.contentDomPostFilters,function(ef){dom=ef(dom);});}ec=dijit._editor.getChildrenHtml(dom);}else{ec=dom;}if(!dojo.trim(ec.replace(/^\xA0\xA0*/,"").replace(/\xA0\xA0*$/,"")).length){ec="";}dojo.forEach(this.contentPostFilters,function(ef){ec=ef(ec);});return ec;},_saveContent:function(e){var _8c=dojo.byId(dijit._scopeName+"._editor.RichText.savedContent");_8c.value+=this._SEPARATOR+this.name+":"+this.getValue();},escapeXml:function(str,_8e){str=str.replace(/&/gm,"&").replace(//gm,">").replace(/"/gm,""");if(!_8e){str=str.replace(/'/gm,"'");}return str;},getNodeHtml:function(_8f){dojo.deprecated("dijit.Editor::getNodeHtml is deprecated","use dijit._editor.getNodeHtml instead",2);return dijit._editor.getNodeHtml(_8f);},getNodeChildrenHtml:function(dom){dojo.deprecated("dijit.Editor::getNodeChildrenHtml is deprecated","use dijit._editor.getChildrenHtml instead",2);return dijit._editor.getChildrenHtml(dom);},close:function(_91,_92){if(this.isClosed){return false;}if(!arguments.length){_91=true;}this._content=this.getValue();var _93=(this.savedContent!=this._content);if(this.interval){clearInterval(this.interval);}if(this.textarea){with(this.textarea.style){position="";left=top="";if(dojo.isIE){overflow=this.__overflow;this.__overflow=null;}}this.textarea.value=_91?this._content:this.savedContent;dojo._destroyElement(this.domNode);this.domNode=this.textarea;}else{this.domNode.innerHTML=_91?this._content:this.savedContent;}dojo.removeClass(this.domNode,"RichTextEditable");this.isClosed=true;this.isLoaded=false;delete this.editNode;if(this.window&&this.window._frameElement){this.window._frameElement=null;}this.window=null;this.document=null;this.editingArea=null;this.editorObject=null;return _93;},destroyRendering:function(){},destroy:function(){this.destroyRendering();if(!this.isClosed){this.close(false);}this.inherited("destroy",arguments);},_removeMozBogus:function(_94){return _94.replace(/\stype="_moz"/gi,"").replace(/\s_moz_dirty=""/gi,"");},_removeSafariBogus:function(_95){return _95.replace(/\sclass="webkit-block-placeholder"/gi,"");},_fixContentForMoz:function(_96){return _96.replace(/<(\/)?strong([ \>])/gi,"<$1b$2").replace(/<(\/)?em([ \>])/gi,"<$1i$2");},_preFixUrlAttributes:function(_97){return _97.replace(/(?:(]+))/gi,"$1$4$2$3$5$2 _djrealurl=$2$3$5$2").replace(/(?:(]+))/gi,"$1$4$2$3$5$2 _djrealurl=$2$3$5$2");}});}././@LongLink0000000000000000000000000000016400000000000011566 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/_editor/range.jslibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/_0000644000000000000000000002245311360615644027210 0ustar /* Copyright (c) 2004-2008, The Dojo Foundation All Rights Reserved. Available via Academic Free License >= 2.1 OR the modified BSD license. see: http://dojotoolkit.org/license for details */ if(!dojo._hasResource["dijit._editor.range"]){dojo._hasResource["dijit._editor.range"]=true;dojo.provide("dijit._editor.range");dijit.range={};dijit.range.getIndex=function(_1,_2){var _3=[],_4=[];var _5=_2;var _6=_1;var _7,n;while(_1!=_5){var i=0;_7=_1.parentNode;while((n=_7.childNodes[i++])){if(n===_1){--i;break;}}if(i>=_7.childNodes.length){dojo.debug("Error finding index of a node in dijit.range.getIndex");}_3.unshift(i);_4.unshift(i-_7.childNodes.length);_1=_7;}if(_3.length>0&&_6.nodeType==3){n=_6.previousSibling;while(n&&n.nodeType==3){_3[_3.length-1]--;n=n.previousSibling;}n=_6.nextSibling;while(n&&n.nodeType==3){_4[_4.length-1]++;n=n.nextSibling;}}return {o:_3,r:_4};};dijit.range.getNode=function(_a,_b){if(!dojo.isArray(_a)||_a.length==0){return _b;}var _c=_b;dojo.every(_a,function(i){if(i>=0&&i<_c.childNodes.length){_c=_c.childNodes[i];}else{_c=null;console.debug("Error: can not find node with index",_a,"under parent node",_b);return false;}return true;});return _c;};dijit.range.getCommonAncestor=function(n1,n2){var _10=function(n){var as=[];while(n){as.unshift(n);if(n.nodeName!="BODY"){n=n.parentNode;}else{break;}}return as;};var _13=_10(n1);var _14=_10(n2);var m=Math.min(_13.length,_14.length);var com=_13[0];for(var i=1;i0){dojo.every(_49.childNodes,function(_4d,i){var _4f;if(_4d.nodeType!=3){_47.moveToElementText(_4d);if(_47.compareEndPoints(_48,_45)>0){_4a=_4d.previousSibling;if(_4c&&_4c.nodeType==3){_4a=_4c;_4f=true;}else{_4a=_49;_4b=i;return false;}}else{if(i==_49.childNodes.length-1){_4a=_49;_4b=_49.childNodes.length;return false;}}}else{if(i==_49.childNodes.length-1){_4a=_4d;_4f=true;}}if(_4f&&_4a){var _50=dijit.range.adjacentNoneTextNode(_4a)[0];if(_50){_4a=_50.nextSibling;}else{_4a=_49.firstChild;}var _51=dijit.range.adjacentNoneTextNode(_4a);_50=_51[0];var _52=_51[1];if(_50){_47.moveToElementText(_50);_47.collapse(false);}else{_47.moveToElementText(_49);}_47.setEndPoint(_48,_45);_4b=_47.text.length-_52;return false;}_4c=_4d;return true;});}else{_4a=_49;_4b=0;}if(!end&&_4a.nodeType!=3&&_4b==_4a.childNodes.length){if(_4a.nextSibling&&_4a.nextSibling.nodeType==3){_4a=_4a.nextSibling;_4b=0;}}return [_4a,_4b];},setEndPoint:function(_53,_54,_55){var _56=_53.duplicate(),_57,len;if(_54.nodeType!=3){_56.moveToElementText(_54);_56.collapse(true);if(_55==_54.childNodes.length){if(_55>0){_57=_54.lastChild;len=0;while(_57&&_57.nodeType==3){len+=_57.length;_54=_57;_57=_57.previousSibling;}if(_57){_56.moveToElementText(_57);}_56.collapse(false);_55=len;}else{_56.moveToElementText(_54);_56.collapse(true);}}else{if(_55>0){_57=_54.childNodes[_55-1];if(_57.nodeType==3){_54=_57;_55=_57.length;}else{_56.moveToElementText(_57);_56.collapse(false);}}}}if(_54.nodeType==3){var _59=dijit.range.adjacentNoneTextNode(_54);var _5a=_59[0];len=_59[1];if(_5a){_56.moveToElementText(_5a);_56.collapse(false);if(_5a.contentEditable!="inherit"){len++;}}else{_56.moveToElementText(_54.parentNode);_56.collapse(true);}_55+=len;if(_55>0){if(_56.move("character",_55)!=_55){console.error("Error when moving!");}}}return _56;},decomposeTextRange:function(_5b){var _5c=dijit.range.ie.getEndPoint(_5b);var _5d=_5c[0],_5e=_5c[1];var _5f=_5c[0],_60=_5c[1];if(_5b.htmlText.length){if(_5b.htmlText==_5b.text){_60=_5e+_5b.text.length;}else{_5c=dijit.range.ie.getEndPoint(_5b,true);_5f=_5c[0],_60=_5c[1];}}return [[_5d,_5e],[_5f,_60]];},setRange:function(_61,_62,_63,_64,_65,_66){var _67=dijit.range.ie.setEndPoint(_61,_62,_63);_61.setEndPoint("StartToStart",_67);var _68=_67;if(!_66){_68=dijit.range.ie.setEndPoint(_61,_64,_65);}_61.setEndPoint("EndToEnd",_68);return _61;}};dojo.declare("dijit.range.W3CRange",null,{constructor:function(){if(arguments.length>0){this.setStart(arguments[0][0][0],arguments[0][0][1]);this.setEnd(arguments[0][1][0],arguments[0][1][1]);}else{this.commonAncestorContainer=null;this.startContainer=null;this.startOffset=0;this.endContainer=null;this.endOffset=0;this.collapsed=true;}},_simpleSetEndPoint:function(_69,_6a,end){var r=(this._body||_69.ownerDocument.body).createTextRange();if(_69.nodeType!=1){r.moveToElementText(_69.parentNode);}else{r.moveToElementText(_69);}r.collapse(true);_6a.setEndPoint(end?"EndToEnd":"StartToStart",r);},_updateInternal:function(){if(this.startContainer!==this.endContainer){this.commonAncestorContainer=dijit.range.getCommonAncestor(this.startContainer,this.endContainer);}else{this.commonAncestorContainer=this.startContainer;}this.collapsed=(this.startContainer===this.endContainer)&&(this.startOffset==this.endOffset);},setStart:function(_6d,_6e){_6e=parseInt(_6e);if(this.startContainer===_6d&&this.startOffset==_6e){return;}delete this._cachedBookmark;this.startContainer=_6d;this.startOffset=_6e;if(!this.endContainer){this.setEnd(_6d,_6e);}else{this._updateInternal();}},setEnd:function(_6f,_70){_70=parseInt(_70);if(this.endContainer===_6f&&this.endOffset==_70){return;}delete this._cachedBookmark;this.endContainer=_6f;this.endOffset=_70;if(!this.startContainer){this.setStart(_6f,_70);}else{this._updateInternal();}},setStartAfter:function(_71,_72){this._setPoint("setStart",_71,_72,1);},setStartBefore:function(_73,_74){this._setPoint("setStart",_73,_74,0);},setEndAfter:function(_75,_76){this._setPoint("setEnd",_75,_76,1);},setEndBefore:function(_77,_78){this._setPoint("setEnd",_77,_78,0);},_setPoint:function(_79,_7a,_7b,ext){var _7d=dijit.range.getIndex(_7a,_7a.parentNode).o;this[_79](_7a.parentNode,_7d.pop()+ext);},_getIERange:function(){var r=(this._body||this.endContainer.ownerDocument.body).createTextRange();dijit.range.ie.setRange(r,this.startContainer,this.startOffset,this.endContainer,this.endOffset,this.collapsed);return r;},getBookmark:function(_7f){this._getIERange();return this._cachedBookmark;},_select:function(){var r=this._getIERange();r.select();},deleteContents:function(){var r=this._getIERange();r.pasteHTML("");this.endContainer=this.startContainer;this.endOffset=this.startOffset;this.collapsed=true;},cloneRange:function(){var r=new dijit.range.W3CRange([[this.startContainer,this.startOffset],[this.endContainer,this.endOffset]]);r._body=this._body;return r;},detach:function(){this._body=null;this.commonAncestorContainer=null;this.startContainer=null;this.startOffset=0;this.endContainer=null;this.endOffset=0;this.collapsed=true;}});}}././@LongLink0000000000000000000000000000016400000000000011566 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/_editor/plugins/libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/_0000755000000000000000000000000011360615646027202 5ustar ././@LongLink0000000000000000000000000000020100000000000011556 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/_editor/plugins/LinkDialog.jslibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/_0000644000000000000000000001171711360615646027213 0ustar /* Copyright (c) 2004-2008, The Dojo Foundation All Rights Reserved. Available via Academic Free License >= 2.1 OR the modified BSD license. see: http://dojotoolkit.org/license for details */ if(!dojo._hasResource["dijit._editor.plugins.LinkDialog"]){dojo._hasResource["dijit._editor.plugins.LinkDialog"]=true;dojo.provide("dijit._editor.plugins.LinkDialog");dojo.require("dijit._Widget");dojo.require("dijit._Templated");dojo.require("dijit._editor._Plugin");dojo.require("dijit.Dialog");dojo.require("dijit.form.Button");dojo.require("dijit.form.ValidationTextBox");dojo.require("dojo.i18n");dojo.require("dojo.string");dojo.requireLocalization("dijit._editor","LinkDialog",null,"ar,ca,cs,da,de,el,es,fi,fr,he,hu,it,ja,ko,ROOT,nb,nl,pl,pt,pt-pt,ru,sk,sl,sv,th,tr,zh,zh-tw");dojo.declare("dijit._editor.plugins.LinkDialog",dijit._editor._Plugin,{buttonClass:dijit.form.DropDownButton,useDefaultCommand:false,urlRegExp:"((https?|ftps?)\\://|)(([0-9a-zA-Z]([-0-9a-zA-Z]{0,61}[0-9a-zA-Z])?\\.)+(arpa|aero|biz|com|coop|edu|gov|info|int|mil|museum|name|net|org|pro|travel|xxx|jobs|mobi|post|ac|ad|ae|af|ag|ai|al|am|an|ao|aq|ar|as|at|au|aw|az|ba|bb|bd|be|bf|bg|bh|bi|bj|bm|bn|bo|br|bs|bt|bv|bw|by|bz|ca|cc|cd|cf|cg|ch|ci|ck|cl|cm|cn|co|cr|cu|cv|cx|cy|cz|de|dj|dk|dm|do|dz|ec|ee|eg|er|eu|es|et|fi|fj|fk|fm|fo|fr|ga|gd|ge|gf|gg|gh|gi|gl|gm|gn|gp|gq|gr|gs|gt|gu|gw|gy|hk|hm|hn|hr|ht|hu|id|ie|il|im|in|io|ir|is|it|je|jm|jo|jp|ke|kg|kh|ki|km|kn|kr|kw|ky|kz|la|lb|lc|li|lk|lr|ls|lt|lu|lv|ly|ma|mc|md|mg|mh|mk|ml|mm|mn|mo|mp|mq|mr|ms|mt|mu|mv|mw|mx|my|mz|na|nc|ne|nf|ng|ni|nl|no|np|nr|nu|nz|om|pa|pe|pf|pg|ph|pk|pl|pm|pn|pr|ps|pt|pw|py|qa|re|ro|ru|rw|sa|sb|sc|sd|se|sg|sh|si|sk|sl|sm|sn|sr|st|su|sv|sy|sz|tc|td|tf|tg|th|tj|tk|tm|tn|to|tr|tt|tv|tw|tz|ua|ug|uk|us|uy|uz|va|vc|ve|vg|vi|vn|vu|wf|ws|ye|yt|yu|za|zm|zw)|(((\\d|[1-9]\\d|1\\d\\d|2[0-4]\\d|25[0-5])\\.){3}(\\d|[1-9]\\d|1\\d\\d|2[0-4]\\d|25[0-5])|(0[xX]0*[\\da-fA-F]?[\\da-fA-F]\\.){3}0[xX]0*[\\da-fA-F]?[\\da-fA-F]|(0+[0-3][0-7][0-7]\\.){3}0+[0-3][0-7][0-7]|(0|[1-9]\\d{0,8}|[1-3]\\d{9}|4[01]\\d{8}|42[0-8]\\d{7}|429[0-3]\\d{6}|4294[0-8]\\d{5}|42949[0-5]\\d{4}|429496[0-6]\\d{3}|4294967[01]\\d{2}|42949672[0-8]\\d|429496729[0-5])|0[xX]0*[\\da-fA-F]{1,8}|([\\da-fA-F]{1,4}\\:){7}[\\da-fA-F]{1,4}|([\\da-fA-F]{1,4}\\:){6}((\\d|[1-9]\\d|1\\d\\d|2[0-4]\\d|25[0-5])\\.){3}(\\d|[1-9]\\d|1\\d\\d|2[0-4]\\d|25[0-5])))(\\:(0|[1-9]\\d*))?(/([^?#\\s/]+/)*)?([^?#\\s/]+(\\?[^?#\\s/]*)?(#[A-Za-z][\\w.:-]*)?)?",linkDialogTemplate:["
","","","","
","","","","
","","
"].join(""),_initButton:function(){var _1=this;this.tag=this.command=="insertImage"?"img":"a";var _2=dojo.i18n.getLocalization("dijit._editor","LinkDialog",this.lang);var _3=(this.dropDown=new dijit.TooltipDialog({title:_2[this.command+"Title"],execute:dojo.hitch(this,"setValue"),onOpen:function(){_1._onOpenDialog();dijit.TooltipDialog.prototype.onOpen.apply(this,arguments);},onCancel:function(){setTimeout(dojo.hitch(_1,"_onCloseDialog"),0);},onClose:dojo.hitch(this,"_onCloseDialog")}));_2.urlRegExp=this.urlRegExp;_2.id=dijit.getUniqueId(this.editor.id);this._setContent(_3.title+"
"+dojo.string.substitute(this.linkDialogTemplate,_2));_3.startup();this.inherited(arguments);},_setContent:function(_4){this.dropDown.attr("content",_4);},setValue:function(_5){this._onCloseDialog();if(dojo.isIE){var a=dojo.withGlobal(this.editor.window,"getAncestorElement",dijit._editor.selection,[this.tag]);if(a){dojo.withGlobal(this.editor.window,"selectElement",dijit._editor.selection,[a]);}}_5.tag=this.tag;_5.refAttr=this.tag=="img"?"src":"href";var _7="<${tag} ${refAttr}='${urlInput}' _djrealurl='${urlInput}'"+(_5.tag=="img"?" alt='${textInput}'>":">${textInput}")+"";this.editor.execCommand("inserthtml",dojo.string.substitute(_7,_5));},_onCloseDialog:function(){this.editor.focus();},_onOpenDialog:function(){var a=dojo.withGlobal(this.editor.window,"getAncestorElement",dijit._editor.selection,[this.tag]);var _9,_a;if(a){_9=a.getAttribute("_djrealurl");_a=this.tag=="img"?a.getAttribute("alt"):a.textContent||a.innerText;dojo.withGlobal(this.editor.window,"selectElement",dijit._editor.selection,[a,true]);}else{_a=dojo.withGlobal(this.editor.window,dijit._editor.selection.getSelectedText);}this.dropDown.reset();this.dropDown.setValues({urlInput:_9||"",textInput:_a||""});}});dojo.subscribe(dijit._scopeName+".Editor.getPlugin",null,function(o){if(o.plugin){return;}switch(o.args.name){case "createLink":case "insertImage":o.plugin=new dijit._editor.plugins.LinkDialog({command:o.args.name});}});}././@LongLink0000000000000000000000000000020000000000000011555 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/_editor/plugins/TabIndent.jslibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/_0000644000000000000000000000236311360615632027203 0ustar /* Copyright (c) 2004-2008, The Dojo Foundation All Rights Reserved. Available via Academic Free License >= 2.1 OR the modified BSD license. see: http://dojotoolkit.org/license for details */ if(!dojo._hasResource["dijit._editor.plugins.TabIndent"]){dojo._hasResource["dijit._editor.plugins.TabIndent"]=true;dojo.provide("dijit._editor.plugins.TabIndent");dojo.experimental("dijit._editor.plugins.TabIndent");dojo.require("dijit._editor._Plugin");dojo.declare("dijit._editor.plugins.TabIndent",dijit._editor._Plugin,{useDefaultCommand:false,buttonClass:dijit.form.ToggleButton,command:"tabIndent",_initButton:function(){this.inherited("_initButton",arguments);this.connect(this.button,"onClick",this._tabIndent);},updateState:function(){var _e=this.editor;var _c=this.command;if(!_e){return;}if(!_e.isLoaded){return;}if(!_c.length){return;}if(this.button){try{var _3=_e.isTabIndent;if(typeof this.button.checked=="boolean"){this.button.attr("checked",_3);}}catch(e){console.debug(e);}}},_tabIndent:function(){this.editor.isTabIndent=!this.editor.isTabIndent;}});dojo.subscribe(dijit._scopeName+".Editor.getPlugin",null,function(o){if(o.plugin){return;}switch(o.args.name){case "tabIndent":o.plugin=new dijit._editor.plugins.TabIndent({command:o.args.name});}});}././@LongLink0000000000000000000000000000020700000000000011564 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/_editor/plugins/EnterKeyHandling.jslibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/_0000644000000000000000000002232411360615644027205 0ustar /* Copyright (c) 2004-2008, The Dojo Foundation All Rights Reserved. Available via Academic Free License >= 2.1 OR the modified BSD license. see: http://dojotoolkit.org/license for details */ if(!dojo._hasResource["dijit._editor.plugins.EnterKeyHandling"]){dojo._hasResource["dijit._editor.plugins.EnterKeyHandling"]=true;dojo.provide("dijit._editor.plugins.EnterKeyHandling");dojo.declare("dijit._editor.plugins.EnterKeyHandling",dijit._editor._Plugin,{blockNodeForEnter:"BR",constructor:function(_1){if(_1){dojo.mixin(this,_1);}},setEditor:function(_2){this.editor=_2;if(this.blockNodeForEnter=="BR"){if(dojo.isIE){_2.contentDomPreFilters.push(dojo.hitch(this,"regularPsToSingleLinePs"));_2.contentDomPostFilters.push(dojo.hitch(this,"singleLinePsToRegularPs"));_2.onLoadDeferred.addCallback(dojo.hitch(this,"_fixNewLineBehaviorForIE"));}else{_2.onLoadDeferred.addCallback(dojo.hitch(this,function(d){try{this.editor.document.execCommand("insertBrOnReturn",false,true);}catch(e){}return d;}));}}else{if(this.blockNodeForEnter){dojo["require"]("dijit._editor.range");var h=dojo.hitch(this,this.handleEnterKey);_2.addKeyHandler(13,0,0,h);_2.addKeyHandler(13,0,1,h);this.connect(this.editor,"onKeyPressed","onKeyPressed");}}},connect:function(o,f,tf){if(!this._connects){this._connects=[];}this._connects.push(dojo.connect(o,f,this,tf));},destroy:function(){dojo.forEach(this._connects,dojo.disconnect);this._connects=[];},onKeyPressed:function(e){if(this._checkListLater){if(dojo.withGlobal(this.editor.window,"isCollapsed",dijit)){var _9=dojo.withGlobal(this.editor.window,"getAncestorElement",dijit._editor.selection,["LI"]);if(!_9){dijit._editor.RichText.prototype.execCommand.call(this.editor,"formatblock",this.blockNodeForEnter);var _a=dojo.withGlobal(this.editor.window,"getAncestorElement",dijit._editor.selection,[this.blockNodeForEnter]);if(_a){_a.innerHTML=this.bogusHtmlContent;if(dojo.isIE){var r=this.editor.document.selection.createRange();r.move("character",-1);r.select();}}else{alert("onKeyPressed: Can not find the new block node");}}else{if(dojo.isMoz){if(_9.parentNode.parentNode.nodeName=="LI"){_9=_9.parentNode.parentNode;}}var fc=_9.firstChild;if(fc&&fc.nodeType==1&&(fc.nodeName=="UL"||fc.nodeName=="OL")){_9.insertBefore(fc.ownerDocument.createTextNode(" "),fc);var _d=dijit.range.create();_d.setStart(_9.firstChild,0);var _e=dijit.range.getSelection(this.editor.window,true);_e.removeAllRanges();_e.addRange(_d);}}}this._checkListLater=false;}if(this._pressedEnterInBlock){if(this._pressedEnterInBlock.previousSibling){this.removeTrailingBr(this._pressedEnterInBlock.previousSibling);}delete this._pressedEnterInBlock;}},bogusHtmlContent:" ",blockNodes:/^(?:P|H1|H2|H3|H4|H5|H6|LI)$/,handleEnterKey:function(e){if(!this.blockNodeForEnter){return true;}var _10,_11,_12,doc=this.editor.document,br;if(e.shiftKey||this.blockNodeForEnter=="BR"){var _15=dojo.withGlobal(this.editor.window,"getParentElement",dijit._editor.selection);var _16=dijit.range.getAncestor(_15,this.blockNodes);if(_16){if(!e.shiftKey&&_16.tagName=="LI"){return true;}_10=dijit.range.getSelection(this.editor.window);_11=_10.getRangeAt(0);if(!_11.collapsed){_11.deleteContents();}if(dijit.range.atBeginningOfContainer(_16,_11.startContainer,_11.startOffset)){if(e.shiftKey){br=doc.createElement("br");_12=dijit.range.create();_16.insertBefore(br,_16.firstChild);_12.setStartBefore(br.nextSibling);_10.removeAllRanges();_10.addRange(_12);}else{dojo.place(br,_16,"before");}}else{if(dijit.range.atEndOfContainer(_16,_11.startContainer,_11.startOffset)){_12=dijit.range.create();br=doc.createElement("br");if(e.shiftKey){_16.appendChild(br);_16.appendChild(doc.createTextNode(" "));_12.setStart(_16.lastChild,0);}else{dojo.place(br,_16,"after");_12.setStartAfter(_16);}_10.removeAllRanges();_10.addRange(_12);}else{return true;}}}else{dijit._editor.RichText.prototype.execCommand.call(this.editor,"inserthtml","
");}return false;}var _17=true;_10=dijit.range.getSelection(this.editor.window);_11=_10.getRangeAt(0);if(!_11.collapsed){_11.deleteContents();}var _18=dijit.range.getBlockAncestor(_11.endContainer,null,this.editor.editNode);var _19=_18.blockNode;if((this._checkListLater=(_19&&(_19.nodeName=="LI"||_19.parentNode.nodeName=="LI")))){if(dojo.isMoz){this._pressedEnterInBlock=_19;}if(/^(?:\s| )$/.test(_19.innerHTML)){_19.innerHTML="";}return true;}if(!_18.blockNode||_18.blockNode===this.editor.editNode){dijit._editor.RichText.prototype.execCommand.call(this.editor,"formatblock",this.blockNodeForEnter);_18={blockNode:dojo.withGlobal(this.editor.window,"getAncestorElement",dijit._editor.selection,[this.blockNodeForEnter]),blockContainer:this.editor.editNode};if(_18.blockNode){if(!(_18.blockNode.textContent||_18.blockNode.innerHTML).replace(/^\s+|\s+$/g,"").length){this.removeTrailingBr(_18.blockNode);return false;}}else{_18.blockNode=this.editor.editNode;}_10=dijit.range.getSelection(this.editor.window);_11=_10.getRangeAt(0);}var _1a=doc.createElement(this.blockNodeForEnter);_1a.innerHTML=this.bogusHtmlContent;this.removeTrailingBr(_18.blockNode);if(dijit.range.atEndOfContainer(_18.blockNode,_11.endContainer,_11.endOffset)){if(_18.blockNode===_18.blockContainer){_18.blockNode.appendChild(_1a);}else{dojo.place(_1a,_18.blockNode,"after");}_17=false;_12=dijit.range.create();_12.setStart(_1a,0);_10.removeAllRanges();_10.addRange(_12);if(this.editor.height){_1a.scrollIntoView(false);}}else{if(dijit.range.atBeginningOfContainer(_18.blockNode,_11.startContainer,_11.startOffset)){dojo.place(_1a,_18.blockNode,_18.blockNode===_18.blockContainer?"first":"before");if(_1a.nextSibling&&this.editor.height){_1a.nextSibling.scrollIntoView(false);}_17=false;}else{if(dojo.isMoz){this._pressedEnterInBlock=_18.blockNode;}}}return _17;},removeTrailingBr:function(_1b){var _1c=/P|DIV|LI/i.test(_1b.tagName)?_1b:dijit._editor.selection.getParentOfType(_1b,["P","DIV","LI"]);if(!_1c){return;}if(_1c.lastChild){if((_1c.childNodes.length>1&&_1c.lastChild.nodeType==3&&/^[\s\xAD]*$/.test(_1c.lastChild.nodeValue))||(_1c.lastChild&&_1c.lastChild.tagName=="BR")){dojo._destroyElement(_1c.lastChild);}}if(!_1c.childNodes.length){_1c.innerHTML=this.bogusHtmlContent;}},_fixNewLineBehaviorForIE:function(d){if(this.editor.document.__INSERTED_EDITIOR_NEWLINE_CSS===undefined){var _1e="p{margin:0 !important;}";var _1f=function(_20,doc,URI){if(!_20){return null;}if(!doc){doc=document;}var _23=doc.createElement("style");_23.setAttribute("type","text/css");var _24=doc.getElementsByTagName("head")[0];if(!_24){console.debug("No head tag in document, aborting styles");return null;}else{_24.appendChild(_23);}if(_23.styleSheet){var _25=function(){try{_23.styleSheet.cssText=_20;}catch(e){console.debug(e);}};if(_23.styleSheet.disabled){setTimeout(_25,10);}else{_25();}}else{var _26=doc.createTextNode(_20);_23.appendChild(_26);}return _23;};_1f(_1e,this.editor.document);this.editor.document.__INSERTED_EDITIOR_NEWLINE_CSS=true;return d;}return null;},regularPsToSingleLinePs:function(_27,_28){function wrapLinesInPs(el){function wrapNodes(_2a){var _2b=_2a[0].ownerDocument.createElement("p");_2a[0].parentNode.insertBefore(_2b,_2a[0]);dojo.forEach(_2a,function(_2c){_2b.appendChild(_2c);});};var _2d=0;var _2e=[];var _2f;while(_2d=0;i--){_32=el.childNodes[i];if(_32.nodeName=="BR"){var _36=_32.ownerDocument.createElement("p");dojo.place(_36,el,"after");if(_33.length==0&&i!=_34){_36.innerHTML=" ";}dojo.forEach(_33,function(_37){_36.appendChild(_37);});dojo._destroyElement(_32);_33=[];}else{_33.unshift(_32);}}};var _38=[];var ps=_27.getElementsByTagName("p");dojo.forEach(ps,function(p){_38.push(p);});dojo.forEach(_38,function(p){if((p.previousSibling)&&(p.previousSibling.nodeName=="P"||dojo.style(p.previousSibling,"display")!="block")){var _3c=p.parentNode.insertBefore(this.document.createElement("p"),p);_3c.innerHTML=_28?"":" ";}splitP(p);},this.editor);wrapLinesInPs(_27);return _27;},singleLinePsToRegularPs:function(_3d){function getParagraphParents(_3e){var ps=_3e.getElementsByTagName("p");var _40=[];for(var i=0;i= 2.1 OR the modified BSD license. see: http://dojotoolkit.org/license for details */ if(!dojo._hasResource["dijit._editor.plugins.AlwaysShowToolbar"]){dojo._hasResource["dijit._editor.plugins.AlwaysShowToolbar"]=true;dojo.provide("dijit._editor.plugins.AlwaysShowToolbar");dojo.declare("dijit._editor.plugins.AlwaysShowToolbar",dijit._editor._Plugin,{_handleScroll:true,setEditor:function(e){if(!e.iframe){console.log("Port AlwaysShowToolbar plugin to work with Editor without iframe");return;}this.editor=e;e.onLoadDeferred.addCallback(dojo.hitch(this,this.enable));},enable:function(d){this._updateHeight();this.connect(window,"onscroll","globalOnScrollHandler");this.connect(this.editor,"onNormalizedDisplayChanged","_updateHeight");return d;},_updateHeight:function(){var e=this.editor;if(!e.isLoaded){return;}if(e.height){return;}var _4=dojo.marginBox(e.editNode).h;if(dojo.isOpera){_4=e.editNode.scrollHeight;}if(!_4){_4=dojo.marginBox(e.document.body).h;}if(_4==0){console.debug("Can not figure out the height of the editing area!");return;}if(_4!=this._lastHeight){this._lastHeight=_4;dojo.marginBox(e.iframe,{h:this._lastHeight});}},_lastHeight:0,globalOnScrollHandler:function(){var _5=dojo.isIE<7;if(!this._handleScroll){return;}var _6=this.editor.toolbar.domNode;var db=dojo.body;if(!this._scrollSetUp){this._scrollSetUp=true;this._scrollThreshold=dojo._abs(_6,true).y;}var _8=dojo._docScroll().y;var s=_6.style;if(_8>this._scrollThreshold&&_8this._scrollThreshold+_b)?"none":"";}else{if(this._fixEnabled){this.editor.iframe.style.marginTop="";s.position="";s.top="";s.zIndex="";s.display="";if(_5){s.left="";dojo.removeClass(_6,"dijitIEFixedToolbar");if(this._IEOriginalPos){dojo.place(_6,this._IEOriginalPos[1],this._IEOriginalPos[0]);this._IEOriginalPos=null;}else{dojo.place(_6,this.editor.iframe,"before");}}s.width="";this._fixEnabled=false;}}},destroy:function(){this._IEOriginalPos=null;this._handleScroll=false;dojo.forEach(this._connects,dojo.disconnect);if(dojo.isIE<7){dojo.removeClass(this.editor.toolbar.domNode,"dijitIEFixedToolbar");}}});}././@LongLink0000000000000000000000000000020000000000000011555 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/_editor/plugins/ToggleDir.jslibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/_0000644000000000000000000000206511360615632027202 0ustar /* Copyright (c) 2004-2008, The Dojo Foundation All Rights Reserved. Available via Academic Free License >= 2.1 OR the modified BSD license. see: http://dojotoolkit.org/license for details */ if(!dojo._hasResource["dijit._editor.plugins.ToggleDir"]){dojo._hasResource["dijit._editor.plugins.ToggleDir"]=true;dojo.provide("dijit._editor.plugins.ToggleDir");dojo.experimental("dijit._editor.plugins.ToggleDir");dojo.require("dijit._editor._Plugin");dojo.declare("dijit._editor.plugins.ToggleDir",dijit._editor._Plugin,{useDefaultCommand:false,command:"toggleDir",_initButton:function(){this.inherited("_initButton",arguments);this.connect(this.button,"onClick",this._toggleDir);},updateState:function(){},_toggleDir:function(){var _1=this.editor.editorObject.contentWindow.document.documentElement;var _2=dojo.getComputedStyle(_1).direction=="ltr";_1.dir=_2?"rtl":"ltr";}});dojo.subscribe(dijit._scopeName+".Editor.getPlugin",null,function(o){if(o.plugin){return;}switch(o.args.name){case "toggleDir":o.plugin=new dijit._editor.plugins.ToggleDir({command:o.args.name});}});}././@LongLink0000000000000000000000000000020000000000000011555 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/_editor/plugins/TextColor.jslibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/_0000644000000000000000000000163211360615632027201 0ustar /* Copyright (c) 2004-2008, The Dojo Foundation All Rights Reserved. Available via Academic Free License >= 2.1 OR the modified BSD license. see: http://dojotoolkit.org/license for details */ if(!dojo._hasResource["dijit._editor.plugins.TextColor"]){dojo._hasResource["dijit._editor.plugins.TextColor"]=true;dojo.provide("dijit._editor.plugins.TextColor");dojo.require("dijit._editor._Plugin");dojo.require("dijit.ColorPalette");dojo.declare("dijit._editor.plugins.TextColor",dijit._editor._Plugin,{buttonClass:dijit.form.DropDownButton,constructor:function(){this.dropDown=new dijit.ColorPalette();this.connect(this.dropDown,"onChange",function(_1){this.editor.execCommand(this.command,_1);});}});dojo.subscribe(dijit._scopeName+".Editor.getPlugin",null,function(o){if(o.plugin){return;}switch(o.args.name){case "foreColor":case "hiliteColor":o.plugin=new dijit._editor.plugins.TextColor({command:o.args.name});}});}././@LongLink0000000000000000000000000000020100000000000011556 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/_editor/plugins/FontChoice.jslibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/_0000644000000000000000000000672611360615632027212 0ustar /* Copyright (c) 2004-2008, The Dojo Foundation All Rights Reserved. Available via Academic Free License >= 2.1 OR the modified BSD license. see: http://dojotoolkit.org/license for details */ if(!dojo._hasResource["dijit._editor.plugins.FontChoice"]){dojo._hasResource["dijit._editor.plugins.FontChoice"]=true;dojo.provide("dijit._editor.plugins.FontChoice");dojo.require("dijit._editor._Plugin");dojo.require("dijit.form.FilteringSelect");dojo.require("dojo.data.ItemFileReadStore");dojo.require("dojo.i18n");dojo.requireLocalization("dijit._editor","FontChoice",null,"ar,ca,cs,da,de,el,es,fi,ROOT,fr,he,hu,it,ja,ko,nb,nl,pl,pt,pt-pt,ru,sk,sl,sv,th,tr,zh,zh-tw");dojo.declare("dijit._editor.plugins.FontChoice",dijit._editor._Plugin,{_uniqueId:0,buttonClass:dijit.form.FilteringSelect,useDefaultCommand:false,_initButton:function(){var _1=this.command;var _2=this.custom||{fontName:this.generic?["serif","sans-serif","monospace","cursive","fantasy"]:["Arial","Times New Roman","Comic Sans MS","Courier New"],fontSize:[1,2,3,4,5,6,7],formatBlock:["p","h1","h2","h3","pre"]}[_1];this._availableValues=_2;var _3=dojo.i18n.getLocalization("dijit._editor","FontChoice");var _4=dojo.map(_2,function(_5){var _6=_3[_5]||_5;var _7=_6;switch(_1){case "fontName":_7="
"+_6+"
";break;case "fontSize":_7=""+_6+"";break;case "formatBlock":_7="<"+_5+">"+_6+"";}return {label:_7,name:_6,value:_5};});this.inherited(arguments,[{required:false,labelType:"html",labelAttr:"label",searchAttr:"name",store:new dojo.data.ItemFileReadStore({data:{identifier:"value",items:_4}})}]);this.button.attr("value","");this.connect(this.button,"onChange",function(_8){if(this.updating){return;}if(dojo.isIE||!this._focusHandle){this.editor.focus();}else{dijit.focus(this._focusHandle);}if(this.command=="fontName"&&_8.indexOf(" ")!=-1){_8="'"+_8+"'";}this.editor.execCommand(this.editor._normalizeCommand(this.command),_8);});},updateState:function(){this.inherited(arguments);var _e=this.editor;var _c=this.command;if(!_e||!_e.isLoaded||!_c.length){return;}if(this.button){var _b;try{_b=_e.queryCommandValue(_c)||"";}catch(e){_b="";}var _c=dojo.isString(_b)&&_b.match(/'([^']*)'/);if(_c){_b=_c[1];}if(this.generic&&_c=="fontName"){var _d={"Arial":"sans-serif","Helvetica":"sans-serif","Myriad":"sans-serif","Times":"serif","Times New Roman":"serif","Comic Sans MS":"cursive","Apple Chancery":"cursive","Courier":"monospace","Courier New":"monospace","Papyrus":"fantasy"};_b=_d[_b]||_b;}else{if(_c=="fontSize"&&_b.indexOf&&_b.indexOf("px")!=-1){var _e=parseInt(_b);_b={10:1,13:2,16:3,18:4,24:5,32:6,48:7}[_e]||_b;}}this.updating=true;this.button.attr("value",dojo.indexOf(this._availableValues,_b)<0?"":_b);delete this.updating;}if(this.editor.iframe){this._focusHandle=dijit.getFocus(this.editor.iframe);}},setToolbar:function(){this.inherited(arguments);var _f=this.button;if(!_f.id){_f.id=dijit._scopeName+"EditorButton-"+this.command+(this._uniqueId++);}var _10=dojo.doc.createElement("label");dojo.addClass(_10,"dijit dijitReset dijitLeft dijitInline");_10.setAttribute("for",_f.id);var _11=dojo.i18n.getLocalization("dijit._editor","FontChoice");_10.appendChild(dojo.doc.createTextNode(_11[this.command]));dojo.place(_10,this.button.domNode,"before");}});dojo.subscribe(dijit._scopeName+".Editor.getPlugin",null,function(o){if(o.plugin){return;}switch(o.args.name){case "fontName":case "fontSize":case "formatBlock":o.plugin=new dijit._editor.plugins.FontChoice({command:o.args.name});}});}././@LongLink0000000000000000000000000000017000000000000011563 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/_editor/selection.jslibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/_0000644000000000000000000000751211360615640027203 0ustar /* Copyright (c) 2004-2008, The Dojo Foundation All Rights Reserved. Available via Academic Free License >= 2.1 OR the modified BSD license. see: http://dojotoolkit.org/license for details */ if(!dojo._hasResource["dijit._editor.selection"]){dojo._hasResource["dijit._editor.selection"]=true;dojo.provide("dijit._editor.selection");dojo.mixin(dijit._editor.selection,{getType:function(){if(dojo.doc.selection){return dojo.doc.selection.type.toLowerCase();}else{var _1="text";var _2;try{_2=dojo.global.getSelection();}catch(e){}if(_2&&_2.rangeCount==1){var _3=_2.getRangeAt(0);if((_3.startContainer==_3.endContainer)&&((_3.endOffset-_3.startOffset)==1)&&(_3.startContainer.nodeType!=3)){_1="control";}}return _1;}},getSelectedText:function(){if(dojo.doc.selection){if(dijit._editor.selection.getType()=="control"){return null;}return dojo.doc.selection.createRange().text;}else{var _4=dojo.global.getSelection();if(_4){return _4.toString();}}return "";},getSelectedHtml:function(){if(dojo.doc.selection){if(dijit._editor.selection.getType()=="control"){return null;}return dojo.doc.selection.createRange().htmlText;}else{var _5=dojo.global.getSelection();if(_5&&_5.rangeCount){var _6=_5.getRangeAt(0).cloneContents();var _7=dojo.doc.createElement("div");_7.appendChild(_6);return _7.innerHTML;}return null;}},getSelectedElement:function(){if(dijit._editor.selection.getType()=="control"){if(dojo.doc.selection){var _8=dojo.doc.selection.createRange();if(_8&&_8.item){return dojo.doc.selection.createRange().item(0);}}else{var _9=dojo.global.getSelection();return _9.anchorNode.childNodes[_9.anchorOffset];}}return null;},getParentElement:function(){if(dijit._editor.selection.getType()=="control"){var p=this.getSelectedElement();if(p){return p.parentNode;}}else{if(dojo.doc.selection){var r=dojo.doc.selection.createRange();r.collapse(true);return r.parentElement();}else{var _c=dojo.global.getSelection();if(_c){var _d=_c.anchorNode;while(_d&&(_d.nodeType!=1)){_d=_d.parentNode;}return _d;}}}return null;},hasAncestorElement:function(_e){return this.getAncestorElement.apply(this,arguments)!=null;},getAncestorElement:function(_f){var _10=this.getSelectedElement()||this.getParentElement();return this.getParentOfType(_10,arguments);},isTag:function(_11,_12){if(_11&&_11.tagName){var _13=_11.tagName.toLowerCase();for(var i=0;i<_12.length;i++){var _15=String(_12[i]).toLowerCase();if(_13==_15){return _15;}}}return "";},getParentOfType:function(_16,_17){while(_16){if(this.isTag(_16,_17).length){return _16;}_16=_16.parentNode;}return null;},collapse:function(_18){if(window["getSelection"]){var _19=dojo.global.getSelection();if(_19.removeAllRanges){if(_18){_19.collapseToStart();}else{_19.collapseToEnd();}}else{_19.collapse(_18);}}else{if(dojo.doc.selection){var _1a=dojo.doc.selection.createRange();_1a.collapse(_18);_1a.select();}}},remove:function(){var _s=dojo.doc.selection;if(_s){if(_s.type.toLowerCase()!="none"){_s.clear();}return _s;}else{_s=dojo.global.getSelection();_s.deleteFromDocument();return _s;}},selectElementChildren:function(_1c,_1d){var _1e=dojo.global;var _1f=dojo.doc;_1c=dojo.byId(_1c);if(_1f.selection&&dojo.body().createTextRange){var _20=_1c.ownerDocument.body.createTextRange();_20.moveToElementText(_1c);if(!_1d){try{_20.select();}catch(e){}}}else{if(_1e.getSelection){var _21=_1e.getSelection();if(_21.setBaseAndExtent){_21.setBaseAndExtent(_1c,0,_1c,_1c.innerText.length-1);}else{if(_21.selectAllChildren){_21.selectAllChildren(_1c);}}}}},selectElement:function(_22,_23){var _24,_25=dojo.doc;_22=dojo.byId(_22);if(_25.selection&&dojo.body().createTextRange){try{_24=dojo.body().createControlRange();_24.addElement(_22);if(!_23){_24.select();}}catch(e){this.selectElementChildren(_22,_23);}}else{if(dojo.global.getSelection){var _26=dojo.global.getSelection();if(_26.removeAllRanges){_24=_25.createRange();_24.selectNode(_22);_26.removeAllRanges();_26.addRange(_24);}}}}});}././@LongLink0000000000000000000000000000016000000000000011562 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/TitlePane.jslibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/T0000644000000000000000000000714011360615644027171 0ustar /* Copyright (c) 2004-2008, The Dojo Foundation All Rights Reserved. Available via Academic Free License >= 2.1 OR the modified BSD license. see: http://dojotoolkit.org/license for details */ if(!dojo._hasResource["dijit.TitlePane"]){dojo._hasResource["dijit.TitlePane"]=true;dojo.provide("dijit.TitlePane");dojo.require("dojo.fx");dojo.require("dijit._Templated");dojo.require("dijit.layout.ContentPane");dojo.declare("dijit.TitlePane",[dijit.layout.ContentPane,dijit._Templated],{title:"",open:true,duration:dijit.defaultDuration,baseClass:"dijitTitlePane",templateString:"
\n\t
\n\t\t\"\"\n\t
\n\t
\n\t\t
\n\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t
\n\t
\n
\n",attributeMap:dojo.mixin(dojo.clone(dijit.layout.ContentPane.prototype.attributeMap),{title:{node:"titleNode",type:"innerHTML"}}),postCreate:function(){if(!this.open){this.hideNode.style.display=this.wipeNode.style.display="none";}this._setCss();dojo.setSelectable(this.titleNode,false);dijit.setWaiState(this.containerNode,"labelledby",this.titleNode.id);dijit.setWaiState(this.focusNode,"haspopup","true");var _1=this.hideNode,_2=this.wipeNode;this._wipeIn=dojo.fx.wipeIn({node:this.wipeNode,duration:this.duration,beforeBegin:function(){_1.style.display="";}});this._wipeOut=dojo.fx.wipeOut({node:this.wipeNode,duration:this.duration,onEnd:function(){_1.style.display="none";}});this.inherited(arguments);},_setOpenAttr:function(_3){if(this.open!==_3){this.toggle();}},_setContentAttr:function(_4){if(!this.open||!this._wipeOut||this._wipeOut.status()=="playing"){this.inherited(arguments);}else{if(this._wipeIn&&this._wipeIn.status()=="playing"){this._wipeIn.stop();}dojo.marginBox(this.wipeNode,{h:dojo.marginBox(this.wipeNode).h});this.inherited(arguments);if(this._wipeIn){this._wipeIn.play();}else{this.hideNode.style.display="";}}},toggle:function(){dojo.forEach([this._wipeIn,this._wipeOut],function(_5){if(_5&&_5.status()=="playing"){_5.stop();}});var _6=this[this.open?"_wipeOut":"_wipeIn"];if(_6){_6.play();}else{this._hideNode.style.display=this.open?"":"none";}this.open=!this.open;this._loadCheck();this._setCss();},_setCss:function(){var _7=["dijitClosed","dijitOpen"];var _8=this.open;var _9=this.titleBarNode||this.focusNode;dojo.removeClass(_9,_7[!_8+0]);_9.className+=" "+_7[_8+0];this.arrowNodeInner.innerHTML=this.open?"-":"+";},_onTitleKey:function(e){if(e.charOrCode==dojo.keys.ENTER||e.charOrCode==" "){this.toggle();}else{if(e.charOrCode==dojo.keys.DOWN_ARROW&&this.open){this.containerNode.focus();e.preventDefault();}}},_handleFocus:function(e){dojo[(e.type=="focus"?"addClass":"removeClass")](this.focusNode,this.baseClass+"Focused");},setTitle:function(_c){dojo.deprecated("dijit.TitlePane.setTitle() is deprecated. Use attr('title', ...) instead.","","2.0");this.titleNode.innerHTML=_c;}});}././@LongLink0000000000000000000000000000015400000000000011565 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/_base.jslibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/_0000644000000000000000000000114611360615640027200 0ustar /* Copyright (c) 2004-2008, The Dojo Foundation All Rights Reserved. Available via Academic Free License >= 2.1 OR the modified BSD license. see: http://dojotoolkit.org/license for details */ if(!dojo._hasResource["dijit._base"]){dojo._hasResource["dijit._base"]=true;dojo.provide("dijit._base");dojo.require("dijit._base.focus");dojo.require("dijit._base.manager");dojo.require("dijit._base.place");dojo.require("dijit._base.popup");dojo.require("dijit._base.scroll");dojo.require("dijit._base.sniff");dojo.require("dijit._base.typematic");dojo.require("dijit._base.wai");dojo.require("dijit._base.window");}././@LongLink0000000000000000000000000000016000000000000011562 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/dijit-all.jslibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/d0000644000000000000000000000337311360615632027212 0ustar /* Copyright (c) 2004-2008, The Dojo Foundation All Rights Reserved. Available via Academic Free License >= 2.1 OR the modified BSD license. see: http://dojotoolkit.org/license for details */ if(!dojo._hasResource["dijit.dijit-all"]){dojo._hasResource["dijit.dijit-all"]=true;console.warn("dijit-all may include much more code than your application actually requires. We strongly recommend that you investigate a custom build or the web build tool");dojo.provide("dijit.dijit-all");dojo.require("dijit.dijit");dojo.require("dijit.ColorPalette");dojo.require("dijit.Declaration");dojo.require("dijit.Dialog");dojo.require("dijit.Editor");dojo.require("dijit.Menu");dojo.require("dijit.ProgressBar");dojo.require("dijit.TitlePane");dojo.require("dijit.Toolbar");dojo.require("dijit.Tooltip");dojo.require("dijit.Tree");dojo.require("dijit.InlineEditBox");dojo.require("dijit.form.Button");dojo.require("dijit.form.CheckBox");dojo.require("dijit.form.ComboBox");dojo.require("dijit.form.CurrencyTextBox");dojo.require("dijit.form.DateTextBox");dojo.require("dijit.form.FilteringSelect");dojo.require("dijit.form.NumberSpinner");dojo.require("dijit.form.NumberTextBox");dojo.require("dijit.form.Slider");dojo.require("dijit.form.Textarea");dojo.require("dijit.form.TextBox");dojo.require("dijit.form.ValidationTextBox");dojo.require("dijit.form._FormWidget");dojo.require("dijit.form._Spinner");dojo.require("dijit.layout.AccordionContainer");dojo.require("dijit.layout.ContentPane");dojo.require("dijit.layout.BorderContainer");dojo.require("dijit.layout.LayoutContainer");dojo.require("dijit.layout.LinkPane");dojo.require("dijit.layout.SplitContainer");dojo.require("dijit.layout.StackContainer");dojo.require("dijit.layout.TabContainer");dojo.require("dijit.layout._LayoutWidget");}././@LongLink0000000000000000000000000000015400000000000011565 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/robot.jslibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/r0000644000000000000000000000073711360615634027233 0ustar /* Copyright (c) 2004-2008, The Dojo Foundation All Rights Reserved. Available via Academic Free License >= 2.1 OR the modified BSD license. see: http://dojotoolkit.org/license for details */ if(!dojo._hasResource["dijit.robot"]){dojo._hasResource["dijit.robot"]=true;dojo.provide("dijit.robot");dojo.require("dojo.robot");dojo.require("dijit._base.scroll");dojo.mixin(doh.robot,{_scrollIntoView:function(_1){if(typeof _1=="function"){_1=_1();}dijit.scrollIntoView(_1);}});}././@LongLink0000000000000000000000000000015100000000000011562 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/form/libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/f0000755000000000000000000000000011360615646027211 5ustar ././@LongLink0000000000000000000000000000017100000000000011564 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/form/NumberTextBox.jslibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/f0000644000000000000000000000245411360615640027212 0ustar /* Copyright (c) 2004-2008, The Dojo Foundation All Rights Reserved. Available via Academic Free License >= 2.1 OR the modified BSD license. see: http://dojotoolkit.org/license for details */ if(!dojo._hasResource["dijit.form.NumberTextBox"]){dojo._hasResource["dijit.form.NumberTextBox"]=true;dojo.provide("dijit.form.NumberTextBox");dojo.require("dijit.form.ValidationTextBox");dojo.require("dojo.number");dojo.declare("dijit.form.NumberTextBoxMixin",null,{regExpGen:dojo.number.regexp,editOptions:{pattern:"#.######"},_onFocus:function(){this._setValueAttr(this.attr("value"),false);this.inherited(arguments);},_formatter:dojo.number.format,format:function(_1,_2){if(typeof _1=="string"){return _1;}if(isNaN(_1)){return "";}if(this.editOptions&&this._focused){_2=dojo.mixin(dojo.mixin({},this.editOptions),this.constraints);}return this._formatter(_1,_2);},parse:dojo.number.parse,filter:function(_3){return (_3===null||_3===""||_3===undefined)?NaN:this.inherited(arguments);},serialize:function(_4,_5){return (typeof _4!="number"||isNaN(_4))?"":this.inherited(arguments);},_getValueAttr:function(){var v=this.inherited(arguments);if(isNaN(v)&&this.textbox.value!==""){return undefined;}return v;},value:NaN});dojo.declare("dijit.form.NumberTextBox",[dijit.form.RangeBoundTextBox,dijit.form.NumberTextBoxMixin],{});}././@LongLink0000000000000000000000000000017300000000000011566 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/form/CurrencyTextBox.jslibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/f0000644000000000000000000000150511360615646027214 0ustar /* Copyright (c) 2004-2008, The Dojo Foundation All Rights Reserved. Available via Academic Free License >= 2.1 OR the modified BSD license. see: http://dojotoolkit.org/license for details */ if(!dojo._hasResource["dijit.form.CurrencyTextBox"]){dojo._hasResource["dijit.form.CurrencyTextBox"]=true;dojo.provide("dijit.form.CurrencyTextBox");dojo.require("dojo.currency");dojo.require("dijit.form.NumberTextBox");dojo.declare("dijit.form.CurrencyTextBox",dijit.form.NumberTextBox,{currency:"",regExpGen:dojo.currency.regexp,_formatter:dojo.currency.format,parse:dojo.currency.parse,postMixInProperties:function(){if(this.constraints===dijit.form.ValidationTextBox.prototype.constraints){this.constraints={};}this.constraints.currency=this.currency;dijit.form.CurrencyTextBox.superclass.postMixInProperties.apply(this,arguments);}});}././@LongLink0000000000000000000000000000016300000000000011565 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/form/TextBox.jslibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/f0000644000000000000000000000602111360615636027211 0ustar /* Copyright (c) 2004-2008, The Dojo Foundation All Rights Reserved. Available via Academic Free License >= 2.1 OR the modified BSD license. see: http://dojotoolkit.org/license for details */ if(!dojo._hasResource["dijit.form.TextBox"]){dojo._hasResource["dijit.form.TextBox"]=true;dojo.provide("dijit.form.TextBox");dojo.require("dijit.form._FormWidget");dojo.declare("dijit.form.TextBox",dijit.form._FormValueWidget,{trim:false,uppercase:false,lowercase:false,propercase:false,maxLength:"",templateString:"\n",baseClass:"dijitTextBox",attributeMap:dojo.mixin(dojo.clone(dijit.form._FormValueWidget.prototype.attributeMap),{maxLength:"focusNode"}),_getValueAttr:function(){return this.parse(this.attr("displayedValue"),this.constraints);},_setValueAttr:function(_1,_2,_3){var _4;if(_1!==undefined){_4=this.filter(_1);if(_4!==null&&((typeof _4!="number")||!isNaN(_4))){if(typeof _3!="string"){_3=this.format(_4,this.constraints);}}else{_3="";}}if(_3!=null&&_3!=undefined){this.textbox.value=_3;}dijit.form.TextBox.superclass._setValueAttr.call(this,_4,_2);},displayedValue:"",getDisplayedValue:function(){dojo.deprecated(this.declaredClass+"::getDisplayedValue() is deprecated. Use attr('displayedValue') instead.","","2.0");return this.attr("displayedValue");},_getDisplayedValueAttr:function(){return this.filter(this.textbox.value);},setDisplayedValue:function(_5){dojo.deprecated(this.declaredClass+"::setDisplayedValue() is deprecated. Use attr('displayedValue', ...) instead.","","2.0");this.attr("displayedValue",_5);},_setDisplayedValueAttr:function(_6){this.textbox.value=_6;this._setValueAttr(this.attr("value"));},format:function(_7,_8){return ((_7==null||_7==undefined)?"":(_7.toString?_7.toString():_7));},parse:function(_9,_a){return _9;},postCreate:function(){this.textbox.setAttribute("value",this.textbox.value);this.inherited(arguments);this._layoutHack();},filter:function(_b){if(typeof _b!="string"){return _b;}if(this.trim){_b=dojo.trim(_b);}if(this.uppercase){_b=_b.toUpperCase();}if(this.lowercase){_b=_b.toLowerCase();}if(this.propercase){_b=_b.replace(/[^\s]+/g,function(_c){return _c.substring(0,1).toUpperCase()+_c.substring(1);});}return _b;},_setBlurValue:function(){this._setValueAttr(this.attr("value"),(this.isValid?this.isValid():true));},_onBlur:function(){this._setBlurValue();this.inherited(arguments);}});dijit.selectInputText=function(_d,_e,_f){var _10=dojo.global;var _11=dojo.doc;_d=dojo.byId(_d);if(isNaN(_e)){_e=0;}if(isNaN(_f)){_f=_d.value?_d.value.length:0;}_d.focus();if(_11["selection"]&&dojo.body()["createTextRange"]){if(_d.createTextRange){var _12=_d.createTextRange();with(_12){collapse(true);moveStart("character",_e);moveEnd("character",_f);select();}}}else{if(_10["getSelection"]){var _13=_10.getSelection();if(_d.setSelectionRange){_d.setSelectionRange(_e,_f);}}}};}././@LongLink0000000000000000000000000000016700000000000011571 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/form/DateTextBox.jslibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/f0000644000000000000000000000107011360615632027204 0ustar /* Copyright (c) 2004-2008, The Dojo Foundation All Rights Reserved. Available via Academic Free License >= 2.1 OR the modified BSD license. see: http://dojotoolkit.org/license for details */ if(!dojo._hasResource["dijit.form.DateTextBox"]){dojo._hasResource["dijit.form.DateTextBox"]=true;dojo.provide("dijit.form.DateTextBox");dojo.require("dijit._Calendar");dojo.require("dijit.form._DateTimeTextBox");dojo.declare("dijit.form.DateTextBox",dijit.form._DateTimeTextBox,{baseClass:"dijitTextBox dijitDateTextBox",popupClass:"dijit._Calendar",_selector:"date"});}././@LongLink0000000000000000000000000000016400000000000011566 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/form/CheckBox.jslibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/f0000644000000000000000000000374111360615642027214 0ustar /* Copyright (c) 2004-2008, The Dojo Foundation All Rights Reserved. Available via Academic Free License >= 2.1 OR the modified BSD license. see: http://dojotoolkit.org/license for details */ if(!dojo._hasResource["dijit.form.CheckBox"]){dojo._hasResource["dijit.form.CheckBox"]=true;dojo.provide("dijit.form.CheckBox");dojo.require("dijit.form.Button");dojo.declare("dijit.form.CheckBox",dijit.form.ToggleButton,{templateString:"
\n",baseClass:"dijitCheckBox",type:"checkbox",value:"on",_setValueAttr:function(_1){if(typeof _1=="string"){this.value=_1;dojo.attr(this.focusNode,"value",_1);_1=true;}if(this._created){this.attr("checked",_1);}},_getValueAttr:function(){return (this.checked?this.value:false);},postMixInProperties:function(){if(this.value==""){this.value="on";}this.inherited(arguments);},_fillContent:function(_2){},reset:function(){this._hasBeenBlurred=false;this.attr("checked",this.params.checked||false);this.value=this.params.value||"on";dojo.attr(this.focusNode,"value",this.value);},_onFocus:function(){if(this.id){dojo.query("label[for='"+this.id+"']").addClass("dijitFocusedLabel");}},_onBlur:function(){if(this.id){dojo.query("label[for='"+this.id+"']").removeClass("dijitFocusedLabel");}}});dojo.declare("dijit.form.RadioButton",dijit.form.CheckBox,{type:"radio",baseClass:"dijitRadio",_setCheckedAttr:function(_3){this.inherited(arguments);if(!this._created){return;}if(_3){var _4=this;dojo.query("INPUT[type=radio][name="+this.name+"]",this.focusNode.form||dojo.doc).forEach(function(_5){if(_5!=_4.focusNode&&_5.form==_4.focusNode.form){var _6=dijit.getEnclosingWidget(_5);if(_6&&_6.checked){_6.attr("checked",false);}}});}},_clicked:function(e){if(!this.checked){this.attr("checked",true);}}});}././@LongLink0000000000000000000000000000017500000000000011570 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/form/ValidationTextBox.jslibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/f0000644000000000000000000001525411360615632027215 0ustar /* Copyright (c) 2004-2008, The Dojo Foundation All Rights Reserved. Available via Academic Free License >= 2.1 OR the modified BSD license. see: http://dojotoolkit.org/license for details */ if(!dojo._hasResource["dijit.form.ValidationTextBox"]){dojo._hasResource["dijit.form.ValidationTextBox"]=true;dojo.provide("dijit.form.ValidationTextBox");dojo.require("dojo.i18n");dojo.require("dijit.form.TextBox");dojo.require("dijit.Tooltip");dojo.requireLocalization("dijit.form","validate",null,"ar,ca,cs,da,de,el,es,fi,fr,he,hu,it,ja,ko,nb,nl,pl,pt,pt-pt,ru,sk,sl,sv,th,tr,ROOT,zh,zh-tw");dojo.declare("dijit.form.ValidationTextBox",dijit.form.TextBox,{templateString:"

Χ
\n",baseClass:"dijitTextBox",required:false,promptMessage:"",invalidMessage:"$_unset_$",constraints:{},regExp:".*",regExpGen:function(_1){return this.regExp;},state:"",tooltipPosition:[],_setValueAttr:function(){this.inherited(arguments);this.validate(this._focused);},validator:function(_2,_3){return (new RegExp("^(?:"+this.regExpGen(_3)+")"+(this.required?"":"?")+"$")).test(_2)&&(!this.required||!this._isEmpty(_2))&&(this._isEmpty(_2)||this.parse(_2,_3)!==undefined);},_isValidSubset:function(){return this.textbox.value.search(this._partialre)==0;},isValid:function(_4){return this.validator(this.textbox.value,this.constraints);},_isEmpty:function(_5){return /^\s*$/.test(_5);},getErrorMessage:function(_6){return this.invalidMessage;},getPromptMessage:function(_7){return this.promptMessage;},_maskValidSubsetError:true,validate:function(_8){var _9="";var _a=this.disabled||this.isValid(_8);if(_a){this._maskValidSubsetError=true;}var _b=!_a&&_8&&this._isValidSubset();var _c=this._isEmpty(this.textbox.value);this.state=(_a||(!this._hasBeenBlurred&&_c)||_b)?"":"Error";if(this.state=="Error"){this._maskValidSubsetError=false;}this._setStateClass();dijit.setWaiState(this.focusNode,"invalid",_a?"false":"true");if(_8){if(_c){_9=this.getPromptMessage(true);}if(!_9&&(this.state=="Error"||(_b&&!this._maskValidSubsetError))){_9=this.getErrorMessage(true);}}this.displayMessage(_9);return _a;},_message:"",displayMessage:function(_d){if(this._message==_d){return;}this._message=_d;dijit.hideTooltip(this.domNode);if(_d){dijit.showTooltip(_d,this.domNode,this.tooltipPosition);}},_refreshState:function(){this.validate(this._focused);},_update:function(e){this._refreshState();this._onMouse(e);},constructor:function(){this.constraints={};},postMixInProperties:function(){this.inherited(arguments);this.constraints.locale=this.lang;this.messages=dojo.i18n.getLocalization("dijit.form","validate",this.lang);if(this.invalidMessage=="$_unset_$"){this.invalidMessage=this.messages.invalidMessage;}var p=this.regExpGen(this.constraints);this.regExp=p;var _10="";if(p!=".*"){this.regExp.replace(/\\.|\[\]|\[.*?[^\\]{1}\]|\{.*?\}|\(\?[=:!]|./g,function(re){switch(re.charAt(0)){case "{":case "+":case "?":case "*":case "^":case "$":case "|":case "(":_10+=re;break;case ")":_10+="|$)";break;default:_10+="(?:"+re+"|$)";break;}});}try{"".search(_10);}catch(e){_10=this.regExp;console.debug("RegExp error in "+this.declaredClass+": "+this.regExp);}this._partialre="^(?:"+_10+")$";},_setDisabledAttr:function(_12){this.inherited(arguments);if(this.valueNode){this.valueNode.disabled=_12;}this._refreshState();},_setRequiredAttr:function(_13){this.required=_13;dijit.setWaiState(this.focusNode,"required",_13);this._refreshState();},postCreate:function(){if(dojo.isIE){var s=dojo.getComputedStyle(this.focusNode);if(s){var ff=s.fontFamily;if(ff){this.focusNode.style.fontFamily=ff;}}}this.inherited(arguments);}});dojo.declare("dijit.form.MappedTextBox",dijit.form.ValidationTextBox,{serialize:function(val,_17){return val.toString?val.toString():"";},toString:function(){var val=this.filter(this.attr("value"));return val!=null?(typeof val=="string"?val:this.serialize(val,this.constraints)):"";},validate:function(){this.valueNode.value=this.toString();return this.inherited(arguments);},buildRendering:function(){this.inherited(arguments);var _19=this.textbox;var _1a=(this.valueNode=dojo.doc.createElement("input"));_1a.setAttribute("type",_19.type);dojo.style(_1a,"display","none");this.valueNode.name=this.textbox.name;dojo.place(_1a,_19,"after");this.textbox.name=this.textbox.name+"_displayed_";this.textbox.removeAttribute("name");},_setDisabledAttr:function(_1b){this.inherited(arguments);dojo.attr(this.valueNode,"disabled",_1b);}});dojo.declare("dijit.form.RangeBoundTextBox",dijit.form.MappedTextBox,{rangeMessage:"",rangeCheck:function(_1c,_1d){var _1e="min" in _1d;var _1f="max" in _1d;if(_1e||_1f){return (!_1e||this.compare(_1c,_1d.min)>=0)&&(!_1f||this.compare(_1c,_1d.max)<=0);}return true;},isInRange:function(_20){return this.rangeCheck(this.attr("value"),this.constraints);},_isDefinitelyOutOfRange:function(){var val=this.attr("value");var _22=false;var _23=false;if("min" in this.constraints){var min=this.constraints.min;val=this.compare(val,((typeof min=="number")&&min>=0&&val!=0)?0:min);_22=(typeof val=="number")&&val<0;}if("max" in this.constraints){var max=this.constraints.max;val=this.compare(val,((typeof max!="number")||max>0)?max:0);_23=(typeof val=="number")&&val>0;}return _22||_23;},_isValidSubset:function(){return this.inherited(arguments)&&!this._isDefinitelyOutOfRange();},isValid:function(_26){return this.inherited(arguments)&&((this._isEmpty(this.textbox.value)&&!this.required)||this.isInRange(_26));},getErrorMessage:function(_27){if(dijit.form.RangeBoundTextBox.superclass.isValid.call(this,false)&&!this.isInRange(_27)){return this.rangeMessage;}return this.inherited(arguments);},postMixInProperties:function(){this.inherited(arguments);if(!this.rangeMessage){this.messages=dojo.i18n.getLocalization("dijit.form","validate",this.lang);this.rangeMessage=this.messages.rangeMessage;}},postCreate:function(){this.inherited(arguments);if(this.constraints.min!==undefined){dijit.setWaiState(this.focusNode,"valuemin",this.constraints.min);}if(this.constraints.max!==undefined){dijit.setWaiState(this.focusNode,"valuemax",this.constraints.max);}},_setValueAttr:function(_28,_29){dijit.setWaiState(this.focusNode,"valuenow",_28);this.inherited(arguments);}});}././@LongLink0000000000000000000000000000016400000000000011566 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/form/Textarea.jslibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/f0000644000000000000000000001514011360615634027211 0ustar /* Copyright (c) 2004-2008, The Dojo Foundation All Rights Reserved. Available via Academic Free License >= 2.1 OR the modified BSD license. see: http://dojotoolkit.org/license for details */ if(!dojo._hasResource["dijit.form.Textarea"]){dojo._hasResource["dijit.form.Textarea"]=true;dojo.provide("dijit.form.Textarea");dojo.require("dijit.form._FormWidget");dojo.require("dojo.i18n");dojo.requireLocalization("dijit.form","Textarea",null,"ar,ca,cs,da,de,el,es,fi,fr,he,hu,it,ja,ko,nb,nl,pl,pt,pt-pt,ru,sk,sl,sv,ROOT,th,tr,zh,zh-tw");dojo.declare("dijit.form.Textarea",dijit.form._FormValueWidget,{attributeMap:dojo.mixin(dojo.clone(dijit.form._FormValueWidget.prototype.attributeMap),{style:"styleNode","class":"styleNode"}),templateString:(dojo.isIE||dojo.isSafari||dojo.isFF)?((dojo.isIE||dojo.isSafari||dojo.isFF>=3)?"
":""+"")+""+((dojo.isIE||dojo.isSafari||dojo.isFF>=3)?"
":""):"",baseClass:"dijitTextArea",_setDisabledAttr:function(_1){this.inherited(arguments);this.formValueNode.disabled=this.disabled;this._adjustWritable();},_setReadOnlyAttr:function(_2){this.readOnly=_2;this._adjustWritable();},_adjustWritable:function(){if(dojo.isIE||dojo.isSafari||dojo.isFF>=3){this.editNode.contentEditable=(!this.disabled&&!this.readOnly);}else{if(dojo.isFF){this.iframe.contentDocument.designMode=(this.disabled||this.readOnly)?"off":"on";}}},focus:function(){if(!this.disabled&&!this.readOnly){this._changing();}dijit.focus(this.iframe||this.focusNode);},_setValueAttr:function(_3,_4){var _5=this.editNode;if(typeof _3=="string"){_5.innerHTML="";if(_3.split){var _6=this;var _7=true;dojo.forEach(_3.split("\n"),function(_8){if(_7){_7=false;}else{_5.appendChild(dojo.doc.createElement("BR"));}if(_8){_5.appendChild(dojo.doc.createTextNode(_8));}});}else{if(_3){_5.appendChild(dojo.doc.createTextNode(_3));}}if(!dojo.isIE){_5.appendChild(dojo.doc.createElement("BR"));}}else{_3=_5.innerHTML;if(this.iframe){_3=_3.replace(/
<\/div>\r?\n?$/i,"");}_3=_3.replace(/\s*\r?\n|^\s+|\s+$| /g,"").replace(/>\s+<").replace(/<\/(p|div)>$|^<(p|div)[^>]*>/gi,"").replace(/([^>])
/g,"$1\n").replace(/<\/p>\s*]*>|]*>|<\/div>\s*]*>/gi,"\n").replace(/<[^>]*>/g,"").replace(/&/gi,"&").replace(/</gi,"<").replace(/>/gi,">");if(!dojo.isIE){_3=_3.replace(/\n$/,"");}}this.value=this.formValueNode.value=_3;if(this.iframe){var _9=dojo.doc.createElement("div");_5.appendChild(_9);var _a=_9.offsetTop;if(_5.scrollWidth>_5.clientWidth){_a+=16;}if(this.lastHeight!=_a){if(_a==0){_a=16;}dojo.contentBox(this.iframe,{h:_a});this.lastHeight=_a;}_5.removeChild(_9);}dijit.form.Textarea.superclass._setValueAttr.call(this,this.attr("value"),_4);},_getValueAttr:function(){return this.value.replace(/\r/g,"");},postMixInProperties:function(){this.inherited(arguments);if(this.srcNodeRef&&this.srcNodeRef.innerHTML!=""){this.value=this.srcNodeRef.innerHTML;this.srcNodeRef.innerHTML="";}if((!this.value||this.value=="")&&this.srcNodeRef&&this.srcNodeRef.value){this.value=this.srcNodeRef.value;}if(!this.value){this.value="";}this.value=this.value.replace(/\r\n/g,"\n").replace(/>/g,">").replace(/</g,"<").replace(/&/g,"&");if(dojo.isFF==2){var _b=dojo.i18n.getLocalization("dijit.form","Textarea");this._iframeEditTitle=_b.iframeEditTitle;this._iframeFocusTitle=_b.iframeFocusTitle;var _c=dojo.query("label[for=\""+this.id+"\"]");if(_c.length){this._iframeEditTitle=_c[0].innerHTML+" "+this._iframeEditTitle;}this.focusNode=this.editNode=dojo.doc.createElement("BODY");}},postCreate:function(){var _d="";if(dojo.isIE||dojo.isSafari||dojo.isFF>=3){this.domNode.style.overflowY="hidden";}else{if(dojo.isFF){var w=this.iframe.contentWindow;var _f="";try{_f=this.iframe.contentDocument.title;}catch(e){}if(!w||!_f){this.iframe.postCreate=dojo.hitch(this,this.postCreate);return;}var d=w.document;d.getElementsByTagName("HTML")[0].replaceChild(this.editNode,d.getElementsByTagName("BODY")[0]);if(!this.isLeftToRight()){d.getElementsByTagName("HTML")[0].dir="rtl";}this.iframe.style.overflowY="hidden";this.eventNode=d;w.addEventListener("resize",dojo.hitch(this,this._changed),false);dijit.registerWin(w);_d="margin:0px;padding:0px;border:0px;";}else{this.focusNode=this.domNode;}}this.style.replace(/(^|;)(line-|font-?)[^;]+/g,function(_11){_d+=_11.replace(/^;/g,"")+";";});dojo.attr(this.focusNode,"style",_d);if(this.eventNode){this.connect(this.eventNode,"keypress",this._onKeyPress);this.connect(this.eventNode,"mousemove",this._changed);this.connect(this.eventNode,"focus",this._focusedEventNode);this.connect(this.eventNode,"blur",this._blurredEventNode);}if(this.editNode){this.connect(this.editNode,"change",this._changed);}this.inherited("postCreate",arguments);},_focusedEventNode:function(e){this._focused=true;this._setStateClass();this._changed(e);},_blurredEventNode:function(e){this._focused=false;this._setStateClass();this._changed(e,true);},_onIframeBlur:function(){this.iframe.contentDocument.title=this._iframeEditTitle;},_onKeyPress:function(e){if(e.charOrCode===dojo.keys.TAB&&!e.shiftKey&&!e.ctrlKey&&!e.altKey&&this.iframe){this.iframe.contentDocument.title=this._iframeFocusTitle;this.iframe.focus();dojo.stopEvent(e);}else{if(e.charOrCode==dojo.keys.ENTER){e.stopPropagation();}else{if(this.inherited("_onKeyPress",arguments)&&this.iframe){var te=dojo.doc.createEvent("KeyEvents");te.initKeyEvent("keypress",true,true,null,e.ctrlKey,e.altKey,e.shiftKey,e.metaKey,e.keyCode,e.charCode);this.iframe.dispatchEvent(te);}}}this._changing();},_changing:function(e){setTimeout(dojo.hitch(this,"_changed",e,false),1);},_changed:function(e,_18){if(this.iframe&&this.iframe.contentDocument.designMode!="on"&&!this.disabled&&!this.readOnly){this.iframe.contentDocument.designMode="on";}this._setValueAttr(null,_18||false);}});}././@LongLink0000000000000000000000000000015500000000000011566 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/form/nls/libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/f0000755000000000000000000000000011360615644027207 5ustar ././@LongLink0000000000000000000000000000016000000000000011562 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/form/nls/fr/libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/f0000755000000000000000000000000011360615644027207 5ustar ././@LongLink0000000000000000000000000000017300000000000011566 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/form/nls/fr/Textarea.jslibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/f0000644000000000000000000000013011360615640027177 0ustar ({"iframeEditTitle":"zone d'édition","iframeFocusTitle":"cadre de la zone d'édition"})././@LongLink0000000000000000000000000000017300000000000011566 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/form/nls/fr/validate.jslibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/f0000644000000000000000000000026611360615644027215 0ustar ({"rangeMessage":"Cette valeur n'est pas comprise dans la plage autorisée.","invalidMessage":"La valeur indiquée n'est pas correcte.","missingMessage":"Cette valeur est requise."})././@LongLink0000000000000000000000000000017300000000000011566 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/form/nls/fr/ComboBox.jslibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/f0000644000000000000000000000011011360615642027177 0ustar ({"previousMessage":"Choix précédents","nextMessage":"Plus de choix"})././@LongLink0000000000000000000000000000016000000000000011562 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/form/nls/nb/libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/f0000755000000000000000000000000011360615646027211 5ustar ././@LongLink0000000000000000000000000000017300000000000011566 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/form/nls/nb/Textarea.jslibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/f0000644000000000000000000000013411360615644027207 0ustar ({"iframeEditTitle":"redigeringsomrÃ¥de","iframeFocusTitle":"ramme for redigeringsomrÃ¥de"})././@LongLink0000000000000000000000000000017300000000000011566 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/form/nls/nb/validate.jslibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/f0000644000000000000000000000024611360615646027215 0ustar ({"rangeMessage":"Denne verdien er utenfor gyldig omrÃ¥de.","invalidMessage":"Den angitte verdien er ikke gyldig.","missingMessage":"Denne verdien er obligatorisk."})././@LongLink0000000000000000000000000000017300000000000011566 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/form/nls/nb/ComboBox.jslibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/f0000644000000000000000000000010111360615644027201 0ustar ({"previousMessage":"Tidligere valg","nextMessage":"Flere valg"})././@LongLink0000000000000000000000000000016000000000000011562 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/form/nls/zh/libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/f0000755000000000000000000000000011360615644027207 5ustar ././@LongLink0000000000000000000000000000017300000000000011566 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/form/nls/zh/Textarea.jslibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/f0000644000000000000000000000010611360615644027206 0ustar ({"iframeEditTitle":"编辑区","iframeFocusTitle":"编辑区框架"})././@LongLink0000000000000000000000000000017300000000000011566 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/form/nls/zh/validate.jslibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/f0000644000000000000000000000017411360615632027210 0ustar ({"rangeMessage":"此值超出范围。","invalidMessage":"输入的值无效。","missingMessage":"此值是必需值。"})././@LongLink0000000000000000000000000000017300000000000011566 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/form/nls/zh/ComboBox.jslibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/f0000644000000000000000000000010111360615644027201 0ustar ({"previousMessage":"å…ˆå‰é€‰é¡¹","nextMessage":"更多选项"})././@LongLink0000000000000000000000000000016000000000000011562 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/form/nls/pl/libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/f0000755000000000000000000000000011360615644027207 5ustar ././@LongLink0000000000000000000000000000017300000000000011566 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/form/nls/pl/Textarea.jslibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/f0000644000000000000000000000011711360615642027206 0ustar ({"iframeEditTitle":"obszar edycji","iframeFocusTitle":"ramka obszaru edycji"})././@LongLink0000000000000000000000000000017300000000000011566 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/form/nls/pl/validate.jslibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/f0000644000000000000000000000023711360615644027213 0ustar ({"rangeMessage":"Ta wartość jest spoza zakresu.","invalidMessage":"Wprowadzona wartość jest niepoprawna.","missingMessage":"Ta wartość jest wymagana."})././@LongLink0000000000000000000000000000017300000000000011566 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/form/nls/pl/ComboBox.jslibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/f0000644000000000000000000000011211360615642027201 0ustar ({"previousMessage":"Poprzednie wybory","nextMessage":"WiÄ™cej wyborów"})././@LongLink0000000000000000000000000000016300000000000011565 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/form/nls/zh-tw/libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/f0000755000000000000000000000000011360615642027205 5ustar ././@LongLink0000000000000000000000000000017600000000000011571 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/form/nls/zh-tw/Textarea.jslibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/f0000644000000000000000000000010311360615640027177 0ustar ({"iframeEditTitle":"編輯å€","iframeFocusTitle":"ç·¨è¼¯å€æ¡†"})././@LongLink0000000000000000000000000000017600000000000011571 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/form/nls/zh-tw/validate.jslibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/f0000644000000000000000000000017411360615642027211 0ustar ({"rangeMessage":"此值超出範åœã€‚","invalidMessage":"輸入的值無效。","missingMessage":"å¿…é ˆæä¾›æ­¤å€¼ã€‚"})././@LongLink0000000000000000000000000000017600000000000011571 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/form/nls/zh-tw/ComboBox.jslibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/f0000644000000000000000000000011211360615640027177 0ustar ({"previousMessage":"å‰ä¸€å€‹é¸æ“‡é …","nextMessage":"其他鏿“‡é …"})././@LongLink0000000000000000000000000000017000000000000011563 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/form/nls/Textarea.jslibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/f0000644000000000000000000000010611360615632027203 0ustar ({"iframeEditTitle":"edit area","iframeFocusTitle":"edit area frame"})././@LongLink0000000000000000000000000000016000000000000011562 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/form/nls/ar/libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/f0000755000000000000000000000000011360615640027203 5ustar ././@LongLink0000000000000000000000000000017300000000000011566 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/form/nls/ar/Textarea.jslibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/f0000644000000000000000000000015111360615636027207 0ustar ({"iframeEditTitle":"مساحة التحرير","iframeFocusTitle":"اطار مساحة التحرير"})././@LongLink0000000000000000000000000000017300000000000011566 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/form/nls/ar/validate.jslibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/f0000644000000000000000000000032711360615640027207 0ustar ({"rangeMessage":"هذه القيمة ليس بالمدى الصحيح. ","invalidMessage":"القيمة التي تم ادخالها غير صحيحة. ","missingMessage":"يجب ادخال هذه القيمة. "})././@LongLink0000000000000000000000000000017300000000000011566 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/form/nls/ar/ComboBox.jslibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/f0000644000000000000000000000016011360615640027202 0ustar ({"previousMessage":"الاختيارات السابقة ","nextMessage":"مزيد من الاختيارات "})././@LongLink0000000000000000000000000000016000000000000011562 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/form/nls/nl/libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/f0000755000000000000000000000000011360615632027204 5ustar ././@LongLink0000000000000000000000000000017300000000000011566 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/form/nls/nl/Textarea.jslibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/f0000644000000000000000000000011511360615632027203 0ustar ({"iframeEditTitle":"veld bewerken","iframeFocusTitle":"veldkader bewerken"})././@LongLink0000000000000000000000000000017300000000000011566 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/form/nls/nl/validate.jslibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/f0000644000000000000000000000022511360615632027205 0ustar ({"rangeMessage":"Deze waarde is niet toegestaan.","invalidMessage":"De opgegeven waarde is ongeldig.","missingMessage":"Deze waarde is verplicht."})././@LongLink0000000000000000000000000000017300000000000011566 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/form/nls/nl/ComboBox.jslibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/f0000644000000000000000000000010211360615632027177 0ustar ({"previousMessage":"Eerdere opties","nextMessage":"Meer opties"})././@LongLink0000000000000000000000000000016000000000000011562 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/form/nls/it/libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/f0000755000000000000000000000000011360615644027207 5ustar ././@LongLink0000000000000000000000000000017300000000000011566 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/form/nls/it/Textarea.jslibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/f0000644000000000000000000000011611360615642027205 0ustar ({"iframeEditTitle":"modifica area","iframeFocusTitle":"modifica frame area"})././@LongLink0000000000000000000000000000017300000000000011566 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/form/nls/it/validate.jslibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/f0000644000000000000000000000025111360615644027207 0ustar ({"rangeMessage":"Questo valore non è compreso nell'intervallo.","invalidMessage":"Il valore immesso non è valido.","missingMessage":"Questo valore è obbligatorio."})././@LongLink0000000000000000000000000000017300000000000011566 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/form/nls/it/ComboBox.jslibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/f0000644000000000000000000000010611360615644027206 0ustar ({"previousMessage":"Scelte precedenti","nextMessage":"Altre scelte"})././@LongLink0000000000000000000000000000016000000000000011562 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/form/nls/ca/libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/f0000755000000000000000000000000011360615644027207 5ustar ././@LongLink0000000000000000000000000000017300000000000011566 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/form/nls/ca/Textarea.jslibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/f0000644000000000000000000000012611360615636027211 0ustar ({"iframeEditTitle":"Àrea d'edició","iframeFocusTitle":"Marc de l'àrea d'edició"})././@LongLink0000000000000000000000000000017300000000000011566 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/form/nls/ca/validate.jslibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/f0000644000000000000000000000023311360615644027207 0ustar ({"rangeMessage":"Aquest valor és fora de l'interval","invalidMessage":"El valor introduït no és vàlid","missingMessage":"Aquest valor és necessari"})././@LongLink0000000000000000000000000000017300000000000011566 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/form/nls/ca/ComboBox.jslibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/f0000644000000000000000000000010611360615644027206 0ustar ({"previousMessage":"Opcions anteriors","nextMessage":"Més opcions"})././@LongLink0000000000000000000000000000016000000000000011562 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/form/nls/cs/libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/f0000755000000000000000000000000011360615634027206 5ustar ././@LongLink0000000000000000000000000000017300000000000011566 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/form/nls/cs/Textarea.jslibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/f0000644000000000000000000000012011360615632027177 0ustar ({"iframeEditTitle":"oblast úprav","iframeFocusTitle":"rámec oblasti úprav"})././@LongLink0000000000000000000000000000017300000000000011566 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/form/nls/cs/validate.jslibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/f0000644000000000000000000000022411360615634027206 0ustar ({"rangeMessage":"Tato hodnota je mimo rozsah.","invalidMessage":"Zadaná hodnota není platná.","missingMessage":"Tato hodnota je vyžadována."})././@LongLink0000000000000000000000000000017300000000000011566 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/form/nls/cs/ComboBox.jslibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/f0000644000000000000000000000010711360615632027204 0ustar ({"previousMessage":"PÅ™edchozí volby","nextMessage":"Další volby"})././@LongLink0000000000000000000000000000016000000000000011562 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/form/nls/sk/libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/f0000755000000000000000000000000011360615636027210 5ustar ././@LongLink0000000000000000000000000000017300000000000011566 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/form/nls/sk/Textarea.jslibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/f0000644000000000000000000000012111360615634027202 0ustar ({"iframeEditTitle":"oblasÅ¥ úprav","iframeFocusTitle":"rámec oblasti úprav"})././@LongLink0000000000000000000000000000017300000000000011566 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/form/nls/sk/validate.jslibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/f0000644000000000000000000000022711360615636027213 0ustar ({"rangeMessage":"Táto hodnota je mimo rozsah.","invalidMessage":"Zadaná hodnota nie je platná.","missingMessage":"Táto hodnota je vyžadovaná."})././@LongLink0000000000000000000000000000017300000000000011566 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/form/nls/sk/ComboBox.jslibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/f0000644000000000000000000000011711360615634027207 0ustar ({"previousMessage":"Predchádzajúce voľby","nextMessage":"ÄŽalÅ¡ie voľby"})././@LongLink0000000000000000000000000000016000000000000011562 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/form/nls/fi/libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/f0000755000000000000000000000000011360615642027205 5ustar ././@LongLink0000000000000000000000000000017300000000000011566 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/form/nls/fi/Textarea.jslibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/f0000644000000000000000000000011611360615640027203 0ustar ({"iframeEditTitle":"muokkausalue","iframeFocusTitle":"muokkausalueen kehys"})././@LongLink0000000000000000000000000000017300000000000011566 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/form/nls/fi/validate.jslibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/f0000644000000000000000000000023211360615642027204 0ustar ({"rangeMessage":"Tämä arvo on sallitun alueen ulkopuolella.","invalidMessage":"Annettu arvo ei kelpaa.","missingMessage":"Tämä arvo on pakollinen."})././@LongLink0000000000000000000000000000017300000000000011566 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/form/nls/fi/ComboBox.jslibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/f0000644000000000000000000000011411360615642027203 0ustar ({"previousMessage":"Edelliset valinnat","nextMessage":"Lisää valintoja"})././@LongLink0000000000000000000000000000016000000000000011562 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/form/nls/he/libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/f0000755000000000000000000000000011360615642027205 5ustar ././@LongLink0000000000000000000000000000017300000000000011566 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/form/nls/he/Textarea.jslibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/f0000644000000000000000000000013711360615640027206 0ustar ({"iframeEditTitle":"×זור עריכה","iframeFocusTitle":"מסגרת ×זור עריכה"})././@LongLink0000000000000000000000000000017300000000000011566 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/form/nls/he/validate.jslibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/f0000644000000000000000000000023111360615642027203 0ustar ({"rangeMessage":"הערך מחוץ לטווח. ","invalidMessage":"הערך שצוין ×ינו חוקי.","missingMessage":"זהו ערך דרוש. "})././@LongLink0000000000000000000000000000017300000000000011566 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/form/nls/he/ComboBox.jslibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/f0000644000000000000000000000014711360615640027207 0ustar ({"previousMessage":"×”×פשרויות הקודמות","nextMessage":"×פשרויות נוספות"})././@LongLink0000000000000000000000000000017000000000000011563 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/form/nls/validate.jslibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/f0000644000000000000000000000021611360615634027207 0ustar ({"rangeMessage":"This value is out of range.","invalidMessage":"The value entered is not valid.","missingMessage":"This value is required."})././@LongLink0000000000000000000000000000016000000000000011562 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/form/nls/el/libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/f0000755000000000000000000000000011360615646027211 5ustar ././@LongLink0000000000000000000000000000017300000000000011566 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/form/nls/el/Textarea.jslibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/f0000644000000000000000000000021511360615640027203 0ustar ({"iframeEditTitle":"πεÏιοχή επεξεÏγασίας","iframeFocusTitle":"πλαίσιο πεÏιοχής επεξεÏγασίας"})././@LongLink0000000000000000000000000000017300000000000011566 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/form/nls/el/validate.jslibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/f0000644000000000000000000000045611360615646027220 0ustar ({"rangeMessage":"Η τιμή αυτή δεν ανήκει στο εÏÏος έγκυÏων τιμών.","invalidMessage":"Η τιμή που καταχωÏήσατε δεν είναι έγκυÏη.","missingMessage":"Η τιμή αυτή Ï€Ïέπει απαÏαίτητα να καθοÏιστεί."})././@LongLink0000000000000000000000000000017300000000000011566 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/form/nls/el/ComboBox.jslibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/f0000644000000000000000000000017311360615644027212 0ustar ({"previousMessage":"ΠÏοηγοÏμενες επιλογές","nextMessage":"ΠεÏισσότεÏες επιλογές"})././@LongLink0000000000000000000000000000016000000000000011562 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/form/nls/sl/libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/f0000755000000000000000000000000011360615640027203 5ustar ././@LongLink0000000000000000000000000000017300000000000011566 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/form/nls/sl/Textarea.jslibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/f0000644000000000000000000000013611360615636027212 0ustar ({"iframeEditTitle":"urejevalno podroÄje","iframeFocusTitle":"okvir urejevalnega podroÄja"})././@LongLink0000000000000000000000000000017300000000000011566 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/form/nls/sl/validate.jslibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/f0000644000000000000000000000022011360615640027177 0ustar ({"rangeMessage":"Ta vrednost je zunaj obsega. ","invalidMessage":"Vnesena vrednost ni veljavna.","missingMessage":"Ta vrednost je zahtevana."})././@LongLink0000000000000000000000000000017300000000000011566 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/form/nls/sl/ComboBox.jslibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/f0000644000000000000000000000011511360615636027207 0ustar ({"previousMessage":"PrejÅ¡nje možnosti","nextMessage":"Dodatne možnosti"})././@LongLink0000000000000000000000000000016000000000000011562 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/form/nls/es/libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/f0000755000000000000000000000000011360615644027207 5ustar ././@LongLink0000000000000000000000000000017300000000000011566 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/form/nls/es/Textarea.jslibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/f0000644000000000000000000000013211360615636027206 0ustar ({"iframeEditTitle":"área de edición","iframeFocusTitle":"marco del área de edición"})././@LongLink0000000000000000000000000000017300000000000011566 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/form/nls/es/validate.jslibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/f0000644000000000000000000000023611360615644027212 0ustar ({"rangeMessage":"Este valor está fuera del intervalo.","invalidMessage":"El valor especificado no es válido.","missingMessage":"Este valor es necesario."})././@LongLink0000000000000000000000000000017300000000000011566 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/form/nls/es/ComboBox.jslibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/f0000644000000000000000000000011111360615644027202 0ustar ({"previousMessage":"Opciones anteriores","nextMessage":"Más opciones"})././@LongLink0000000000000000000000000000017000000000000011563 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/form/nls/ComboBox.jslibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/f0000644000000000000000000000010511360615632027202 0ustar ({"previousMessage":"Previous choices","nextMessage":"More choices"})././@LongLink0000000000000000000000000000016300000000000011565 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/form/nls/pt-pt/libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/f0000755000000000000000000000000011360615642027205 5ustar ././@LongLink0000000000000000000000000000017600000000000011571 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/form/nls/pt-pt/Textarea.jslibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/f0000644000000000000000000000013211360615640027201 0ustar ({"iframeEditTitle":"área de edição","iframeFocusTitle":"painel da área de edição"})././@LongLink0000000000000000000000000000017600000000000011571 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/form/nls/pt-pt/validate.jslibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/f0000644000000000000000000000023711360615642027211 0ustar ({"rangeMessage":"Este valor encontra-se fora do intervalo.","invalidMessage":"O valor introduzido não é válido.","missingMessage":"O valor é requerido."})././@LongLink0000000000000000000000000000017600000000000011571 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/form/nls/pt-pt/ComboBox.jslibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/f0000644000000000000000000000011111360615640027176 0ustar ({"previousMessage":"Opções anteriores","nextMessage":"Mais opções"})././@LongLink0000000000000000000000000000016000000000000011562 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/form/nls/tr/libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/f0000755000000000000000000000000011360615642027205 5ustar ././@LongLink0000000000000000000000000000017300000000000011566 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/form/nls/tr/Textarea.jslibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/f0000644000000000000000000000013411360615640027203 0ustar ({"iframeEditTitle":"düzenleme alanı","iframeFocusTitle":"düzenleme alanı çerçevesi"})././@LongLink0000000000000000000000000000017300000000000011566 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/form/nls/tr/validate.jslibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/f0000644000000000000000000000020511360615642027204 0ustar ({"rangeMessage":"Bu deÄŸer aralık dışında.","invalidMessage":"Girilen deÄŸer geçersiz.","missingMessage":"Bu deÄŸer gerekli."})././@LongLink0000000000000000000000000000017300000000000011566 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/form/nls/tr/ComboBox.jslibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/f0000644000000000000000000000011611360615640027203 0ustar ({"previousMessage":"Önceki seçenekler","nextMessage":"DiÄŸer seçenekler"})././@LongLink0000000000000000000000000000016000000000000011562 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/form/nls/pt/libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/f0000755000000000000000000000000011360615644027207 5ustar ././@LongLink0000000000000000000000000000017300000000000011566 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/form/nls/pt/Textarea.jslibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/f0000644000000000000000000000013211360615644027205 0ustar ({"iframeEditTitle":"área de edição","iframeFocusTitle":"quadro da área de edição"})././@LongLink0000000000000000000000000000017300000000000011566 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/form/nls/pt/validate.jslibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/f0000644000000000000000000000023211360615632027203 0ustar ({"rangeMessage":"Este valor está fora dos limites.","invalidMessage":"O valor inserido não é válido.","missingMessage":"Este valor é necessário."})././@LongLink0000000000000000000000000000017300000000000011566 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/form/nls/pt/ComboBox.jslibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/f0000644000000000000000000000011111360615644027202 0ustar ({"previousMessage":"Opções anteriores","nextMessage":"Mais opções"})././@LongLink0000000000000000000000000000016000000000000011562 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/form/nls/ja/libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/f0000755000000000000000000000000011360615642027205 5ustar ././@LongLink0000000000000000000000000000017300000000000011566 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/form/nls/ja/Textarea.jslibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/f0000644000000000000000000000011411360615640027201 0ustar ({"iframeEditTitle":"編集域","iframeFocusTitle":"編集域フレーム"})././@LongLink0000000000000000000000000000017300000000000011566 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/form/nls/ja/validate.jslibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/f0000644000000000000000000000022711360615642027210 0ustar ({"rangeMessage":"ã“ã®å€¤ã¯ç¯„囲外ã§ã™ã€‚","invalidMessage":"入力ã—ãŸå€¤ã¯ç„¡åйã§ã™ã€‚","missingMessage":"ã“ã®å€¤ã¯å¿…é ˆã§ã™ã€‚"})././@LongLink0000000000000000000000000000017300000000000011566 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/form/nls/ja/ComboBox.jslibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/f0000644000000000000000000000012311360615640027201 0ustar ({"previousMessage":"以å‰ã®é¸æŠžé …ç›®","nextMessage":"追加ã®é¸æŠžé …ç›®"})././@LongLink0000000000000000000000000000016000000000000011562 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/form/nls/sv/libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/f0000755000000000000000000000000011360615644027207 5ustar ././@LongLink0000000000000000000000000000017300000000000011566 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/form/nls/sv/Textarea.jslibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/f0000644000000000000000000000012611360615644027210 0ustar ({"iframeEditTitle":"redigeringsomrÃ¥de","iframeFocusTitle":"redigeringsomrÃ¥desram"})././@LongLink0000000000000000000000000000017300000000000011566 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/form/nls/sv/validate.jslibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/f0000644000000000000000000000023111360615632027202 0ustar ({"rangeMessage":"Värdet är utanför intervallet.","invalidMessage":"Det angivna värdet är ogiltigt.","missingMessage":"Värdet är obligatoriskt."})././@LongLink0000000000000000000000000000017300000000000011566 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/form/nls/sv/ComboBox.jslibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/f0000644000000000000000000000011711360615632027205 0ustar ({"previousMessage":"FöregÃ¥ende alternativ","nextMessage":"Fler alternativ"})././@LongLink0000000000000000000000000000016000000000000011562 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/form/nls/da/libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/f0000755000000000000000000000000011360615644027207 5ustar ././@LongLink0000000000000000000000000000017300000000000011566 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/form/nls/da/Textarea.jslibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/f0000644000000000000000000000013311360615644027206 0ustar ({"iframeEditTitle":"redigeringsomrÃ¥de","iframeFocusTitle":"ramme om redigeringsomrÃ¥de"})././@LongLink0000000000000000000000000000017300000000000011566 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/form/nls/da/validate.jslibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/f0000644000000000000000000000022311360615632027203 0ustar ({"rangeMessage":"Værdien er uden for intervallet.","invalidMessage":"Den angivne værdi er ugyldig.","missingMessage":"Værdien er pÃ¥krævet."})././@LongLink0000000000000000000000000000017300000000000011566 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/form/nls/da/ComboBox.jslibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/f0000644000000000000000000000007711360615644027215 0ustar ({"previousMessage":"Forrige valg","nextMessage":"Flere valg"})././@LongLink0000000000000000000000000000016000000000000011562 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/form/nls/ko/libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/f0000755000000000000000000000000011360615646027211 5ustar ././@LongLink0000000000000000000000000000017300000000000011566 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/form/nls/ko/Textarea.jslibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/f0000644000000000000000000000012211360615642027202 0ustar ({"iframeEditTitle":"편집 ì˜ì—­","iframeFocusTitle":"편집 ì˜ì—­ 프레임"})././@LongLink0000000000000000000000000000017300000000000011566 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/form/nls/ko/validate.jslibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/f0000644000000000000000000000025011360615646027210 0ustar ({"rangeMessage":"ì´ ê°’ì€ ë²”ìœ„ë¥¼ 벗어납니다.","invalidMessage":"ìž…ë ¥ëœ ê°’ì´ ì˜¬ë°”ë¥´ì§€ 않습니다.","missingMessage":"ì´ ê°’ì€ í•„ìˆ˜ìž…ë‹ˆë‹¤."})././@LongLink0000000000000000000000000000017300000000000011566 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/form/nls/ko/ComboBox.jslibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/f0000644000000000000000000000011711360615644027210 0ustar ({"previousMessage":"ì´ì „ ì„ íƒì‚¬í•­","nextMessage":"기타 ì„ íƒì‚¬í•­"})././@LongLink0000000000000000000000000000016000000000000011562 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/form/nls/ru/libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/f0000755000000000000000000000000011360615640027203 5ustar ././@LongLink0000000000000000000000000000017300000000000011566 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/form/nls/ru/Textarea.jslibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/f0000644000000000000000000000021711360615636027212 0ustar ({"iframeEditTitle":"облаÑть редактированиÑ","iframeFocusTitle":"фрейм облаÑти редактированиÑ"})././@LongLink0000000000000000000000000000017300000000000011566 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/form/nls/ru/validate.jslibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/f0000644000000000000000000000033111360615640027202 0ustar ({"rangeMessage":"Это значение вне диапазона.","invalidMessage":"Указано недопуÑтимое значение.","missingMessage":"Это обÑзательное значение."})././@LongLink0000000000000000000000000000017300000000000011566 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/form/nls/ru/ComboBox.jslibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/f0000644000000000000000000000016111360615636027210 0ustar ({"previousMessage":"Предыдущие варианты","nextMessage":"Следующие варианты"})././@LongLink0000000000000000000000000000016000000000000011562 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/form/nls/hu/libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/f0000755000000000000000000000000011360615644027207 5ustar ././@LongLink0000000000000000000000000000017300000000000011566 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/form/nls/hu/Textarea.jslibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/f0000644000000000000000000000014011360615640027200 0ustar ({"iframeEditTitle":"szerkesztési terület","iframeFocusTitle":"szerkesztési terület keret"})././@LongLink0000000000000000000000000000017300000000000011566 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/form/nls/hu/validate.jslibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/f0000644000000000000000000000025711360615632027212 0ustar ({"rangeMessage":"Az érték kívül van a megengedett tartományon. ","invalidMessage":"A megadott érték érvénytelen. ","missingMessage":"Meg kell adni egy értéket. "})././@LongLink0000000000000000000000000000017300000000000011566 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/form/nls/hu/ComboBox.jslibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/f0000644000000000000000000000012011360615644027202 0ustar ({"previousMessage":"ElÅ‘zÅ‘ menüpontok","nextMessage":"További menüpontok"})././@LongLink0000000000000000000000000000016000000000000011562 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/form/nls/th/libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/f0000755000000000000000000000000011360615636027210 5ustar ././@LongLink0000000000000000000000000000017300000000000011566 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/form/nls/th/Textarea.jslibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/f0000644000000000000000000000020211360615632027200 0ustar ({"iframeEditTitle":"พื้นที่à¹à¸à¹‰à¹„ข","iframeFocusTitle":"à¸à¸£à¸­à¸šà¸žà¸·à¹‰à¸™à¸—ี่à¹à¸à¹‰à¹„ข"})././@LongLink0000000000000000000000000000017300000000000011566 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/form/nls/th/validate.jslibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/f0000644000000000000000000000033111360615636027207 0ustar ({"rangeMessage":"ค่านี้เà¸à¸´à¸™à¸Šà¹ˆà¸§à¸‡","invalidMessage":"ค่าที่ป้อนไม่ถูà¸à¸•้อง","missingMessage":"จำเป็นต้องมีค่านี้"})././@LongLink0000000000000000000000000000017300000000000011566 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/form/nls/th/ComboBox.jslibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/f0000644000000000000000000000021411360615636027207 0ustar ({"previousMessage":"à¸à¸²à¸£à¹€à¸¥à¸·à¸­à¸à¸à¹ˆà¸­à¸™à¸«à¸™à¹‰à¸²","nextMessage":"à¸à¸²à¸£à¹€à¸¥à¸·à¸­à¸à¹€à¸žà¸´à¹ˆà¸¡à¹€à¸•ิม"})././@LongLink0000000000000000000000000000016000000000000011562 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/form/nls/de/libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/f0000755000000000000000000000000011360615640027203 5ustar ././@LongLink0000000000000000000000000000017300000000000011566 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/form/nls/de/Textarea.jslibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/f0000644000000000000000000000012611360615636027211 0ustar ({"iframeEditTitle":"Editierbereich","iframeFocusTitle":"Rahmen für Editierbereich"})././@LongLink0000000000000000000000000000017300000000000011566 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/form/nls/de/validate.jslibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/f0000644000000000000000000000026311360615640027206 0ustar ({"rangeMessage":"Dieser Wert liegt außerhalb des gültigen Bereichs. ","invalidMessage":"Der eingegebene Wert ist ungültig. ","missingMessage":"Dieser Wert ist erforderlich."})././@LongLink0000000000000000000000000000017300000000000011566 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/form/nls/de/ComboBox.jslibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/f0000644000000000000000000000012711360615640027205 0ustar ({"previousMessage":"Vorherige Auswahl","nextMessage":"Weitere Auswahlmöglichkeiten"})././@LongLink0000000000000000000000000000016400000000000011566 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/form/_Spinner.jslibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/f0000644000000000000000000001105711360615632027212 0ustar /* Copyright (c) 2004-2008, The Dojo Foundation All Rights Reserved. Available via Academic Free License >= 2.1 OR the modified BSD license. see: http://dojotoolkit.org/license for details */ if(!dojo._hasResource["dijit.form._Spinner"]){dojo._hasResource["dijit.form._Spinner"]=true;dojo.provide("dijit.form._Spinner");dojo.require("dijit.form.ValidationTextBox");dojo.declare("dijit.form._Spinner",dijit.form.RangeBoundTextBox,{defaultTimeout:500,timeoutChangeRate:0.9,smallDelta:1,largeDelta:10,templateString:"
 

Χ
\n",baseClass:"dijitSpinner",adjust:function(_1,_2){return _1;},_arrowState:function(_3,_4){this._active=_4;this.stateModifier=_3.getAttribute("stateModifier")||"";this._setStateClass();},_arrowPressed:function(_5,_6,_7){if(this.disabled||this.readOnly){return;}this._arrowState(_5,true);this._setValueAttr(this.adjust(this.attr("value"),_6*_7),false);dijit.selectInputText(this.textbox,this.textbox.value.length);},_arrowReleased:function(_8){this._wheelTimer=null;if(this.disabled||this.readOnly){return;}this._arrowState(_8,false);},_typematicCallback:function(_9,_a,_b){var _c=this.smallDelta;if(_a==this.textbox){k=dojo.keys;var _d=_b.charOrCode;_c=(_d==k.PAGE_UP||_d==k.PAGE_DOWN)?this.largeDelta:this.smallDelta;_a=(_d==k.UP_ARROW||_d==k.PAGE_UP)?this.upArrowNode:this.downArrowNode;}if(_9==-1){this._arrowReleased(_a);}else{this._arrowPressed(_a,(_a==this.upArrowNode)?1:-1,_c);}},_wheelTimer:null,_mouseWheeled:function(_e){dojo.stopEvent(_e);var _f=_e.detail?(_e.detail*-1):(_e.wheelDelta/120);if(_f!==0){var _10=this[(_f>0?"upArrowNode":"downArrowNode")];this._arrowPressed(_10,_f,this.smallDelta);if(!this._wheelTimer){clearTimeout(this._wheelTimer);}this._wheelTimer=setTimeout(dojo.hitch(this,"_arrowReleased",_10),50);}},postCreate:function(){this.inherited("postCreate",arguments);this.connect(this.domNode,!dojo.isMozilla?"onmousewheel":"DOMMouseScroll","_mouseWheeled");this._connects.push(dijit.typematic.addListener(this.upArrowNode,this.textbox,{charOrCode:dojo.keys.UP_ARROW,ctrlKey:false,altKey:false,shiftKey:false},this,"_typematicCallback",this.timeoutChangeRate,this.defaultTimeout));this._connects.push(dijit.typematic.addListener(this.downArrowNode,this.textbox,{charOrCode:dojo.keys.DOWN_ARROW,ctrlKey:false,altKey:false,shiftKey:false},this,"_typematicCallback",this.timeoutChangeRate,this.defaultTimeout));this._connects.push(dijit.typematic.addListener(this.upArrowNode,this.textbox,{charOrCode:dojo.keys.PAGE_UP,ctrlKey:false,altKey:false,shiftKey:false},this,"_typematicCallback",this.timeoutChangeRate,this.defaultTimeout));this._connects.push(dijit.typematic.addListener(this.downArrowNode,this.textbox,{charOrCode:dojo.keys.PAGE_DOWN,ctrlKey:false,altKey:false,shiftKey:false},this,"_typematicCallback",this.timeoutChangeRate,this.defaultTimeout));if(dojo.isIE){var _11=this;this.connect(this.domNode,"onresize",function(){setTimeout(dojo.hitch(_11,function(){var sz=this.upArrowNode.parentNode.offsetHeight;if(sz){this.upArrowNode.style.height=sz>>1;this.downArrowNode.style.height=sz-(sz>>1);this.focusNode.parentNode.style.height=sz;}this._setStateClass();}),0);});}}});}././@LongLink0000000000000000000000000000016000000000000011562 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/form/Form.jslibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/f0000644000000000000000000001162411360615634027214 0ustar /* Copyright (c) 2004-2008, The Dojo Foundation All Rights Reserved. Available via Academic Free License >= 2.1 OR the modified BSD license. see: http://dojotoolkit.org/license for details */ if(!dojo._hasResource["dijit.form.Form"]){dojo._hasResource["dijit.form.Form"]=true;dojo.provide("dijit.form.Form");dojo.require("dijit._Widget");dojo.require("dijit._Templated");dojo.declare("dijit.form._FormMixin",null,{reset:function(){dojo.forEach(this.getDescendants(),function(_1){if(_1.reset){_1.reset();}});},validate:function(){var _2=false;return dojo.every(dojo.map(this.getDescendants(),function(_3){_3._hasBeenBlurred=true;var _4=_3.disabled||!_3.validate||_3.validate();if(!_4&&!_2){dijit.scrollIntoView(_3.containerNode||_3.domNode);_3.focus();_2=true;}return _4;}),function(_5){return _5;});},setValues:function(_6){dojo.deprecated(this.declaredClass+"::setValues() is deprecated. Use attr('value', val) instead.","","2.0");return this.attr("value",_6);},_setValueAttr:function(_7){var _8={};dojo.forEach(this.getDescendants(),function(_9){if(!_9.name){return;}var _a=_8[_9.name]||(_8[_9.name]=[]);_a.push(_9);});for(var _b in _8){if(!_8.hasOwnProperty(_b)){continue;}var _c=_8[_b],_d=dojo.getObject(_b,false,_7);if(_d===undefined){continue;}if(!dojo.isArray(_d)){_d=[_d];}if(typeof _c[0].checked=="boolean"){dojo.forEach(_c,function(w,i){w.attr("value",dojo.indexOf(_d,w.value)!=-1);});}else{if(_c[0]._multiValue){_c[0].attr("value",_d);}else{dojo.forEach(_c,function(w,i){w.attr("value",_d[i]);});}}}},getValues:function(){dojo.deprecated(this.declaredClass+"::getValues() is deprecated. Use attr('value') instead.","","2.0");return this.attr("value");},_getValueAttr:function(){var obj={};dojo.forEach(this.getDescendants(),function(_13){var _14=_13.name;if(!_14||_13.disabled){return;}var _15=_13.attr("value");if(typeof _13.checked=="boolean"){if(/Radio/.test(_13.declaredClass)){if(_15!==false){dojo.setObject(_14,_15,obj);}}else{var ary=dojo.getObject(_14,false,obj);if(!ary){ary=[];dojo.setObject(_14,ary,obj);}if(_15!==false){ary.push(_15);}}}else{dojo.setObject(_14,_15,obj);}});return obj;},isValid:function(){this._invalidWidgets=[];return dojo.every(this.getDescendants(),function(_17){var _18=_17.disabled||!_17.isValid||_17.isValid();if(!_18){this._invalidWidgets.push(_17);}return _18;},this);},onValidStateChange:function(_19){},_widgetChange:function(_1a){var _1b=this._lastValidState;if(!_1a||this._lastValidState===undefined){_1b=this.isValid();if(this._lastValidState===undefined){this._lastValidState=_1b;}}else{if(_1a.isValid){this._invalidWidgets=dojo.filter(this._invalidWidgets||[],function(w){return (w!=_1a);},this);if(!_1a.isValid()&&!_1a.attr("disabled")){this._invalidWidgets.push(_1a);}_1b=(this._invalidWidgets.length===0);}}if(_1b!==this._lastValidState){this._lastValidState=_1b;this.onValidStateChange(_1b);}},connectChildren:function(){dojo.forEach(this._changeConnections,dojo.hitch(this,"disconnect"));var _1d=this;var _1e=this._changeConnections=[];dojo.forEach(dojo.filter(this.getDescendants(),function(_1f){return _1f.validate;}),function(_20){_1e.push(_1d.connect(_20,"validate",dojo.hitch(_1d,"_widgetChange",_20)));_1e.push(_1d.connect(_20,"_setDisabledAttr",dojo.hitch(_1d,"_widgetChange",_20)));});this._widgetChange(null);},startup:function(){this.inherited(arguments);this._changeConnections=[];this.connectChildren();}});dojo.declare("dijit.form.Form",[dijit._Widget,dijit._Templated,dijit.form._FormMixin],{name:"",action:"",method:"",encType:"","accept-charset":"",accept:"",target:"",templateString:"
",attributeMap:dojo.mixin(dojo.clone(dijit._Widget.prototype.attributeMap),{action:"",method:"",encType:"","accept-charset":"",accept:"",target:""}),execute:function(_21){},onExecute:function(){},_setEncTypeAttr:function(_22){this.encType=_22;dojo.attr(this.domNode,"encType",_22);if(dojo.isIE){this.domNode.encoding=_22;}},postCreate:function(){if(dojo.isIE&&this.srcNodeRef&&this.srcNodeRef.attributes){var _23=this.srcNodeRef.attributes.getNamedItem("encType");if(_23&&!_23.specified&&(typeof _23.value=="string")){this.attr("encType",_23.value);}}this.inherited(arguments);},onReset:function(e){return true;},_onReset:function(e){var _26={returnValue:true,preventDefault:function(){this.returnValue=false;},stopPropagation:function(){},currentTarget:e.currentTarget,target:e.target};if(!(this.onReset(_26)===false)&&_26.returnValue){this.reset();}dojo.stopEvent(e);return false;},_onSubmit:function(e){var fp=dijit.form.Form.prototype;if(this.execute!=fp.execute||this.onExecute!=fp.onExecute){dojo.deprecated("dijit.form.Form:execute()/onExecute() are deprecated. Use onSubmit() instead.","","2.0");this.onExecute();this.execute(this.getValues());}if(this.onSubmit(e)===false){dojo.stopEvent(e);}},onSubmit:function(e){return this.isValid();},submit:function(){if(!(this.onSubmit()===false)){this.containerNode.submit();}}});}././@LongLink0000000000000000000000000000016400000000000011566 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/form/ComboBox.jslibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/f0000644000000000000000000004421611360615636027221 0ustar /* Copyright (c) 2004-2008, The Dojo Foundation All Rights Reserved. Available via Academic Free License >= 2.1 OR the modified BSD license. see: http://dojotoolkit.org/license for details */ if(!dojo._hasResource["dijit.form.ComboBox"]){dojo._hasResource["dijit.form.ComboBox"]=true;dojo.provide("dijit.form.ComboBox");dojo.require("dijit.form.ValidationTextBox");dojo.require("dojo.data.util.simpleFetch");dojo.require("dojo.data.util.filter");dojo.requireLocalization("dijit.form","ComboBox",null,"ar,ca,ROOT,cs,da,de,el,es,fi,fr,he,hu,it,ja,ko,nb,nl,pl,pt,pt-pt,ru,sk,sl,sv,th,tr,zh,zh-tw");dojo.declare("dijit.form.ComboBoxMixin",null,{item:null,pageSize:Infinity,store:null,fetchProperties:{},query:{},autoComplete:true,highlightMatch:"first",searchDelay:100,searchAttr:"name",labelAttr:"",labelType:"text",queryExpr:"${0}*",ignoreCase:true,hasDownArrow:true,templateString:"

Χ
\n",baseClass:"dijitComboBox",_getCaretPos:function(_1){var _2=0;if(typeof (_1.selectionStart)=="number"){_2=_1.selectionStart;}else{if(dojo.isIE){var tr=dojo.doc.selection.createRange().duplicate();var _4=_1.createTextRange();tr.move("character",0);_4.move("character",0);try{_4.setEndPoint("EndToEnd",tr);_2=String(_4.text).replace(/\r/g,"").length;}catch(e){}}}return _2;},_setCaretPos:function(_5,_6){_6=parseInt(_6);dijit.selectInputText(_5,_6,_6);},_setDisabledAttr:function(_7){dijit.setWaiState(this.comboNode,"disabled",_7);},_onKeyPress:function(_8){var _9=_8.charOrCode;if(_8.altKey||(_8.ctrlKey&&(_9!="x"&&_9!="v"))||_8.key==dojo.keys.SHIFT){return;}var _a=false;var pw=this._popupWidget;var dk=dojo.keys;if(this._isShowingNow){pw.handleKey(_9);}switch(_9){case dk.PAGE_DOWN:case dk.DOWN_ARROW:if(!this._isShowingNow||this._prev_key_esc){this._arrowPressed();_a=true;}else{this._announceOption(pw.getHighlightedOption());}dojo.stopEvent(_8);this._prev_key_backspace=false;this._prev_key_esc=false;break;case dk.PAGE_UP:case dk.UP_ARROW:if(this._isShowingNow){this._announceOption(pw.getHighlightedOption());}dojo.stopEvent(_8);this._prev_key_backspace=false;this._prev_key_esc=false;break;case dk.ENTER:var _d;if(this._isShowingNow&&(_d=pw.getHighlightedOption())){if(_d==pw.nextButton){this._nextSearch(1);dojo.stopEvent(_8);break;}else{if(_d==pw.previousButton){this._nextSearch(-1);dojo.stopEvent(_8);break;}}}else{this._setDisplayedValueAttr(this.attr("displayedValue"),true);}_8.preventDefault();case dk.TAB:var _e=this.attr("displayedValue");if(pw&&(_e==pw._messages["previousMessage"]||_e==pw._messages["nextMessage"])){break;}if(this._isShowingNow){this._prev_key_backspace=false;this._prev_key_esc=false;if(pw.getHighlightedOption()){pw.attr("value",{target:pw.getHighlightedOption()});}this._lastQuery=null;this._hideResultList();}break;case " ":this._prev_key_backspace=false;this._prev_key_esc=false;if(this._isShowingNow&&pw.getHighlightedOption()){dojo.stopEvent(_8);this._selectOption();this._hideResultList();}else{_a=true;}break;case dk.ESCAPE:this._prev_key_backspace=false;this._prev_key_esc=true;if(this._isShowingNow){dojo.stopEvent(_8);this._hideResultList();}else{this.inherited(arguments);}break;case dk.DELETE:case dk.BACKSPACE:this._prev_key_esc=false;this._prev_key_backspace=true;_a=true;break;case dk.RIGHT_ARROW:case dk.LEFT_ARROW:this._prev_key_backspace=false;this._prev_key_esc=false;break;default:this._prev_key_backspace=false;this._prev_key_esc=false;_a=typeof _9=="string";}if(this.searchTimer){clearTimeout(this.searchTimer);}if(_a){setTimeout(dojo.hitch(this,"_startSearchFromInput"),1);}},_autoCompleteText:function(_f){var fn=this.focusNode;dijit.selectInputText(fn,fn.value.length);var _11=this.ignoreCase?"toLowerCase":"substr";if(_f[_11](0).indexOf(this.focusNode.value[_11](0))==0){var _12=this._getCaretPos(fn);if((_12+1)>fn.value.length){fn.value=_f;dijit.selectInputText(fn,_12);}}else{fn.value=_f;dijit.selectInputText(fn);}},_openResultList:function(_13,_14){if(this.disabled||this.readOnly||(_14.query[this.searchAttr]!=this._lastQuery)){return;}this._popupWidget.clearResultList();if(!_13.length){this._hideResultList();return;}var _15=new String(this.store.getValue(_13[0],this.searchAttr));if(_15&&this.autoComplete&&!this._prev_key_backspace&&(_14.query[this.searchAttr]!="*")){this._autoCompleteText(_15);}_14._maxOptions=this._maxOptions;this._popupWidget.createOptions(_13,_14,dojo.hitch(this,"_getMenuLabelFromItem"));this._showResultList();if(_14.direction){if(1==_14.direction){this._popupWidget.highlightFirstOption();}else{if(-1==_14.direction){this._popupWidget.highlightLastOption();}}this._announceOption(this._popupWidget.getHighlightedOption());}},_showResultList:function(){this._hideResultList();var _16=this._popupWidget.getItems(),_17=Math.min(_16.length,this.maxListLength);this._arrowPressed();this.displayMessage("");dojo.style(this._popupWidget.domNode,{width:"",height:""});var _18=this.open();var _19=dojo.marginBox(this._popupWidget.domNode);this._popupWidget.domNode.style.overflow=((_18.h==_19.h)&&(_18.w==_19.w))?"hidden":"auto";var _1a=_18.w;if(_18.h$1");if(_3c==ret){ret=_3c.replace(new RegExp(" ("+_3a+")",_3b)," $1");}return ret;},_escapeHtml:function(str){str=String(str).replace(/&/gm,"&").replace(//gm,">").replace(/"/gm,""");return str;},open:function(){this._isShowingNow=true;return dijit.popup.open({popup:this._popupWidget,around:this.domNode,parent:this});},reset:function(){this.item=null;this.inherited(arguments);}});dojo.declare("dijit.form._ComboBoxMenu",[dijit._Widget,dijit._Templated],{templateString:"
    "+"
  • "+"
  • "+"
",_messages:null,postMixInProperties:function(){this._messages=dojo.i18n.getLocalization("dijit.form","ComboBox",this.lang);this.inherited("postMixInProperties",arguments);},_setValueAttr:function(_3f){this.value=_3f;this.onChange(_3f);},onChange:function(_40){},onPage:function(_41){},postCreate:function(){this.previousButton.innerHTML=this._messages["previousMessage"];this.nextButton.innerHTML=this._messages["nextMessage"];this.inherited(arguments);},onClose:function(){this._blurOptionNode();},_createOption:function(_42,_43){var _44=_43(_42);var _45=dojo.doc.createElement("li");dijit.setWaiRole(_45,"option");if(_44.html){_45.innerHTML=_44.label;}else{_45.appendChild(dojo.doc.createTextNode(_44.label));}if(_45.innerHTML==""){_45.innerHTML=" ";}_45.item=_42;return _45;},createOptions:function(_46,_47,_48){this.previousButton.style.display=(_47.start==0)?"none":"";dojo.attr(this.previousButton,"id",this.id+"_prev");dojo.forEach(_46,function(_49,i){var _4b=this._createOption(_49,_48);_4b.className="dijitReset dijitMenuItem";dojo.attr(_4b,"id",this.id+i);this.domNode.insertBefore(_4b,this.nextButton);},this);var _4c=false;if(_47._maxOptions&&_47._maxOptions!=-1){if((_47.start+_47.count)<_47._maxOptions){_4c=true;}else{if((_47.start+_47.count)>(_47._maxOptions-1)){if(_47.count==_46.length){_4c=true;}}}}else{if(_47.count==_46.length){_4c=true;}}this.nextButton.style.display=_4c?"":"none";dojo.attr(this.nextButton,"id",this.id+"_next");},clearResultList:function(){while(this.domNode.childNodes.length>2){this.domNode.removeChild(this.domNode.childNodes[this.domNode.childNodes.length-2]);}},getItems:function(){return this.domNode.childNodes;},getListLength:function(){return this.domNode.childNodes.length-2;},_onMouseDown:function(evt){dojo.stopEvent(evt);},_onMouseUp:function(evt){if(evt.target===this.domNode){return;}else{if(evt.target==this.previousButton){this.onPage(-1);}else{if(evt.target==this.nextButton){this.onPage(1);}else{var tgt=evt.target;while(!tgt.item){tgt=tgt.parentNode;}this._setValueAttr({target:tgt},true);}}}},_onMouseOver:function(evt){if(evt.target===this.domNode){return;}var tgt=evt.target;if(!(tgt==this.previousButton||tgt==this.nextButton)){while(!tgt.item){tgt=tgt.parentNode;}}this._focusOptionNode(tgt);},_onMouseOut:function(evt){if(evt.target===this.domNode){return;}this._blurOptionNode();},_focusOptionNode:function(_53){if(this._highlighted_option!=_53){this._blurOptionNode();this._highlighted_option=_53;dojo.addClass(this._highlighted_option,"dijitMenuItemHover");}},_blurOptionNode:function(){if(this._highlighted_option){dojo.removeClass(this._highlighted_option,"dijitMenuItemHover");this._highlighted_option=null;}},_highlightNextOption:function(){var fc=this.domNode.firstChild;if(!this.getHighlightedOption()){this._focusOptionNode(fc.style.display=="none"?fc.nextSibling:fc);}else{var ns=this._highlighted_option.nextSibling;if(ns&&ns.style.display!="none"){this._focusOptionNode(ns);}}dijit.scrollIntoView(this._highlighted_option);},highlightFirstOption:function(){this._focusOptionNode(this.domNode.firstChild.nextSibling);dijit.scrollIntoView(this._highlighted_option);},highlightLastOption:function(){this._focusOptionNode(this.domNode.lastChild.previousSibling);dijit.scrollIntoView(this._highlighted_option);},_highlightPrevOption:function(){var lc=this.domNode.lastChild;if(!this.getHighlightedOption()){this._focusOptionNode(lc.style.display=="none"?lc.previousSibling:lc);}else{var ps=this._highlighted_option.previousSibling;if(ps&&ps.style.display!="none"){this._focusOptionNode(ps);}}dijit.scrollIntoView(this._highlighted_option);},_page:function(up){var _59=0;var _5a=this.domNode.scrollTop;var _5b=dojo.style(this.domNode,"height");if(!this.getHighlightedOption()){this._highlightNextOption();}while(_59<_5b){if(up){if(!this.getHighlightedOption().previousSibling||this._highlighted_option.previousSibling.style.display=="none"){break;}this._highlightPrevOption();}else{if(!this.getHighlightedOption().nextSibling||this._highlighted_option.nextSibling.style.display=="none"){break;}this._highlightNextOption();}var _5c=this.domNode.scrollTop;_59+=(_5c-_5a)*(up?-1:1);_5a=_5c;}},pageUp:function(){this._page(true);},pageDown:function(){this._page(false);},getHighlightedOption:function(){var ho=this._highlighted_option;return (ho&&ho.parentNode)?ho:null;},handleKey:function(key){switch(key){case dojo.keys.DOWN_ARROW:this._highlightNextOption();break;case dojo.keys.PAGE_DOWN:this.pageDown();break;case dojo.keys.UP_ARROW:this._highlightPrevOption();break;case dojo.keys.PAGE_UP:this.pageUp();break;}}});dojo.declare("dijit.form.ComboBox",[dijit.form.ValidationTextBox,dijit.form.ComboBoxMixin],{postMixInProperties:function(){dijit.form.ComboBoxMixin.prototype.postMixInProperties.apply(this,arguments);dijit.form.ValidationTextBox.prototype.postMixInProperties.apply(this,arguments);},postCreate:function(){dijit.form.ComboBoxMixin.prototype._postCreate.apply(this,arguments);dijit.form.ValidationTextBox.prototype.postCreate.apply(this,arguments);},_setDisabledAttr:function(_5f){dijit.form.ValidationTextBox.prototype._setDisabledAttr.apply(this,arguments);dijit.form.ComboBoxMixin.prototype._setDisabledAttr.apply(this,arguments);},_setValueAttr:function(_60,_61){if(!_60){_60="";}dijit.form.ValidationTextBox.prototype._setValueAttr.call(this,_60,_61);}});dojo.declare("dijit.form._ComboBoxDataStore",null,{constructor:function(_62){this.root=_62;dojo.query("> option",_62).forEach(function(_63){_63.innerHTML=dojo.trim(_63.innerHTML);});},getValue:function(_64,_65,_66){return (_65=="value")?_64.value:(_64.innerText||_64.textContent||"");},isItemLoaded:function(_67){return true;},getFeatures:function(){return {"dojo.data.api.Read":true,"dojo.data.api.Identity":true};},_fetchItems:function(_68,_69,_6a){if(!_68.query){_68.query={};}if(!_68.query.name){_68.query.name="";}if(!_68.queryOptions){_68.queryOptions={};}var _6b=dojo.data.util.filter.patternToRegExp(_68.query.name,_68.queryOptions.ignoreCase),_6c=dojo.query("> option",this.root).filter(function(_6d){return (_6d.innerText||_6d.textContent||"").match(_6b);});if(_68.sort){_6c.sort(dojo.data.util.sorter.createSortFunction(_68.sort,this));}_69(_6c,_68);},close:function(_6e){return;},getLabel:function(_6f){return _6f.innerHTML;},getIdentity:function(_70){return dojo.attr(_70,"value");},fetchItemByIdentity:function(_71){var _72=dojo.query("option[value='"+_71.identity+"']",this.root)[0];_71.onItem(_72);},fetchSelectedItem:function(){var _73=this.root,si=_73.selectedIndex;return dojo.query("> option:nth-child("+(si!=-1?si+1:1)+")",_73)[0];}});dojo.extend(dijit.form._ComboBoxDataStore,dojo.data.util.simpleFetch);}././@LongLink0000000000000000000000000000017400000000000011567 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/form/_DateTimeTextBox.jslibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/f0000644000000000000000000000667311360615632027222 0ustar /* Copyright (c) 2004-2008, The Dojo Foundation All Rights Reserved. Available via Academic Free License >= 2.1 OR the modified BSD license. see: http://dojotoolkit.org/license for details */ if(!dojo._hasResource["dijit.form._DateTimeTextBox"]){dojo._hasResource["dijit.form._DateTimeTextBox"]=true;dojo.provide("dijit.form._DateTimeTextBox");dojo.require("dojo.date");dojo.require("dojo.date.locale");dojo.require("dojo.date.stamp");dojo.require("dijit.form.ValidationTextBox");dojo.declare("dijit.form._DateTimeTextBox",dijit.form.RangeBoundTextBox,{regExpGen:dojo.date.locale.regexp,compare:dojo.date.compare,format:function(_1,_2){if(!_1){return "";}return dojo.date.locale.format(_1,_2);},parse:function(_3,_4){return dojo.date.locale.parse(_3,_4)||(this._isEmpty(_3)?null:undefined);},serialize:dojo.date.stamp.toISOString,value:new Date(""),popupClass:"",_selector:"",postMixInProperties:function(){this.inherited(arguments);if(!this.value||this.value.toString()==dijit.form._DateTimeTextBox.prototype.value.toString()){this.value=null;}var _5=this.constraints;_5.selector=this._selector;_5.fullYear=true;var _6=dojo.date.stamp.fromISOString;if(typeof _5.min=="string"){_5.min=_6(_5.min);}if(typeof _5.max=="string"){_5.max=_6(_5.max);}},_onFocus:function(_7){this._open();},_setValueAttr:function(_8,_9,_a){this.inherited(arguments);if(this._picker){if(!_8){_8=new Date();}this._picker.attr("value",_8);}},_open:function(){if(this.disabled||this.readOnly||!this.popupClass){return;}var _b=this;if(!this._picker){var _c=dojo.getObject(this.popupClass,false);this._picker=new _c({onValueSelected:function(_d){if(_b._tabbingAway){delete _b._tabbingAway;}else{_b.focus();}setTimeout(dojo.hitch(_b,"_close"),1);dijit.form._DateTimeTextBox.superclass._setValueAttr.call(_b,_d,true);},lang:_b.lang,constraints:_b.constraints,isDisabledDate:function(_e){var _f=dojo.date.compare;var _10=_b.constraints;return _10&&(_10.min&&(_f(_10.min,_e,"date")>0)||(_10.max&&_f(_10.max,_e,"date")<0));}});this._picker.attr("value",this.attr("value")||new Date());}if(!this._opened){dijit.popup.open({parent:this,popup:this._picker,around:this.domNode,onCancel:dojo.hitch(this,this._close),onClose:function(){_b._opened=false;}});this._opened=true;}dojo.marginBox(this._picker.domNode,{w:this.domNode.offsetWidth});},_close:function(){if(this._opened){dijit.popup.close(this._picker);this._opened=false;}},_onBlur:function(){this._close();if(this._picker){this._picker.destroy();delete this._picker;}this.inherited(arguments);},_getDisplayedValueAttr:function(){return this.textbox.value;},_setDisplayedValueAttr:function(_11,_12){this._setValueAttr(this.parse(_11,this.constraints),_12,_11);},destroy:function(){if(this._picker){this._picker.destroy();delete this._picker;}this.inherited(arguments);},_onKeyPress:function(e){var p=this._picker,dk=dojo.keys;if(p&&this._opened&&p.handleKey){if(p.handleKey(e)===false){return;}}if(this._opened&&e.charOrCode==dk.ESCAPE&&!e.shiftKey&&!e.ctrlKey&&!e.altKey){this._close();dojo.stopEvent(e);}else{if(!this._opened&&e.charOrCode==dk.DOWN_ARROW){this._open();dojo.stopEvent(e);}else{if(dijit.form._DateTimeTextBox.superclass._onKeyPress.apply(this,arguments)){if(e.charOrCode===dk.TAB){this._tabbingAway=true;}else{if(this._opened&&(e.keyChar||e.charOrCode===dk.BACKSPACE||e.charOrCode==dk.DELETE)){setTimeout(dojo.hitch(this,function(){dijit.placeOnScreenAroundElement(p.domNode.parentNode,this.domNode,{"BL":"TL","TL":"BL"},p.orient?dojo.hitch(p,"orient"):null);}),1);}}}}}}});}././@LongLink0000000000000000000000000000017300000000000011566 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/form/FilteringSelect.jslibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/f0000644000000000000000000000671311360615640027214 0ustar /* Copyright (c) 2004-2008, The Dojo Foundation All Rights Reserved. Available via Academic Free License >= 2.1 OR the modified BSD license. see: http://dojotoolkit.org/license for details */ if(!dojo._hasResource["dijit.form.FilteringSelect"]){dojo._hasResource["dijit.form.FilteringSelect"]=true;dojo.provide("dijit.form.FilteringSelect");dojo.require("dijit.form.ComboBox");dojo.declare("dijit.form.FilteringSelect",[dijit.form.MappedTextBox,dijit.form.ComboBoxMixin],{_isvalid:true,required:true,_lastDisplayedValue:"",isValid:function(){return this._isvalid||(!this.required&&this.attr("displayedValue")=="");},_callbackSetLabel:function(_1,_2,_3){if((_2&&_2.query[this.searchAttr]!=this._lastQuery)||(!_2&&_1.length&&this.store.getIdentity(_1[0])!=this._lastQuery)){return;}if(!_1.length){if(_3||!this._focused){this.valueNode.value="";}dijit.form.TextBox.superclass._setValueAttr.call(this,"",_3||!this._focused);this._isvalid=false;this.validate(this._focused);this.item=null;}else{this._setValueFromItem(_1[0],_3);}},_openResultList:function(_4,_5){if(_5.query[this.searchAttr]!=this._lastQuery){return;}this._isvalid=_4.length!=0;this.validate(true);dijit.form.ComboBoxMixin.prototype._openResultList.apply(this,arguments);},_getValueAttr:function(){return this.valueNode.value;},_getValueField:function(){return "value";},_setValue:function(_6,_7,_8){this.valueNode.value=_6;dijit.form.FilteringSelect.superclass._setValueAttr.call(this,_6,_8,_7);this._lastDisplayedValue=_7;},_setValueAttr:function(_9,_a){if(!this._onChangeActive){_a=null;}this._lastQuery=_9;if(_9===null){this._setDisplayedValueAttr("",_a);return;}var _b=this;var _c=function(_d,_e){if(_d){if(_b.store.isItemLoaded(_d)){_b._callbackSetLabel([_d],undefined,_e);}else{_b.store.loadItem({item:_d,onItem:function(_f,_10){_b._callbackSetLabel(_f,_10,_e);}});}}else{_b._isvalid=false;_b.validate(false);}};this.store.fetchItemByIdentity({identity:_9,onItem:function(_11){_c(_11,_a);}});},_setValueFromItem:function(_12,_13){this._isvalid=true;this.item=_12;this._setValue(this.store.getIdentity(_12),this.labelFunc(_12,this.store),_13);},labelFunc:function(_14,_15){return _15.getValue(_14,this.searchAttr);},_doSelect:function(tgt){this._setValueFromItem(tgt.item,true);},_setDisplayedValueAttr:function(_17,_18){if(!this._created){_18=false;}if(this.store){var _19=dojo.clone(this.query);this._lastQuery=_19[this.searchAttr]=_17.replace(/([\\\*\?])/g,"\\$1");this.textbox.value=_17;this._lastDisplayedValue=_17;var _1a=this;var _1b={query:_19,queryOptions:{ignoreCase:this.ignoreCase,deep:true},onComplete:function(_1c,_1d){dojo.hitch(_1a,"_callbackSetLabel")(_1c,_1d,_18);},onError:function(_1e){console.error("dijit.form.FilteringSelect: "+_1e);dojo.hitch(_1a,"_setValue")("",_17,false);}};dojo.mixin(_1b,this.fetchProperties);this.store.fetch(_1b);}},postMixInProperties:function(){dijit.form.ComboBoxMixin.prototype.postMixInProperties.apply(this,arguments);dijit.form.MappedTextBox.prototype.postMixInProperties.apply(this,arguments);},postCreate:function(){dijit.form.ComboBoxMixin.prototype._postCreate.apply(this,arguments);dijit.form.MappedTextBox.prototype.postCreate.apply(this,arguments);},_setDisabledAttr:function(_1f,_20){dijit.form.MappedTextBox.prototype._setDisabledAttr.apply(this,arguments);dijit.form.ComboBoxMixin.prototype._setDisabledAttr.apply(this,arguments);},undo:function(){this.attr("displayedValue",this._lastDisplayedValue);},_valueChanged:function(){return this.attr("displayedValue")!=this._lastDisplayedValue;}});}././@LongLink0000000000000000000000000000016700000000000011571 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/form/TimeTextBox.jslibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/f0000644000000000000000000000107411360615632027210 0ustar /* Copyright (c) 2004-2008, The Dojo Foundation All Rights Reserved. Available via Academic Free License >= 2.1 OR the modified BSD license. see: http://dojotoolkit.org/license for details */ if(!dojo._hasResource["dijit.form.TimeTextBox"]){dojo._hasResource["dijit.form.TimeTextBox"]=true;dojo.provide("dijit.form.TimeTextBox");dojo.require("dijit._TimePicker");dojo.require("dijit.form._DateTimeTextBox");dojo.declare("dijit.form.TimeTextBox",dijit.form._DateTimeTextBox,{baseClass:"dijitTextBox dijitTimeTextBox",popupClass:"dijit._TimePicker",_selector:"time"});}././@LongLink0000000000000000000000000000016200000000000011564 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/form/Button.jslibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dijit/f0000644000000000000000000002405211360615632027211 0ustar /* Copyright (c) 2004-2008, The Dojo Foundation All Rights Reserved. Available via Academic Free License >= 2.1 OR the modified BSD license. see: http://dojotoolkit.org/license for details */ if(!dojo._hasResource["dijit.form.Button"]){dojo._hasResource["dijit.form.Button"]=true;dojo.provide("dijit.form.Button");dojo.require("dijit.form._FormWidget");dojo.require("dijit._Container");dojo.declare("dijit.form.Button",dijit.form._FormWidget,{label:"",showLabel:true,iconClass:"",type:"button",baseClass:"dijitButton",templateString:"
",_positionPrefix:"
",labelStyle:"",labels:[],numericMargin:0,minimum:0,maximum:1,constraints:{pattern:"#%"},_positionPrefix:"
",_suffix:"
",_calcPosition:function(pos){return pos;},_genHTML:function(pos,ndx){return this._positionPrefix+this._calcPosition(pos)+this._positionSuffix+this.labelStyle+this._labelPrefix+this.labels[ndx]+this._suffix;},getLabels:function(){var _38=this.labels;if(!_38.length){_38=dojo.query("> li",this.srcNodeRef).map(function(_39){return String(_39.innerHTML);});}this.srcNodeRef.innerHTML="";if(!_38.length&&this.count>1){var _3a=this.minimum;var inc=(this.maximum-_3a)/(this.count-1);for(var i=0;i=(this.count-this.numericMargin))?"":dojo.number.format(_3a,this.constraints));_3a+=inc;}}return _38;},postMixInProperties:function(){this.inherited(arguments);this.labels=this.getLabels();this.count=this.labels.length;}});dojo.declare("dijit.form.VerticalRuleLabels",dijit.form.HorizontalRuleLabels,{templateString:"
",_positionPrefix:"
",_calcPosition:function(pos){return 100-pos;},_isHorizontal:false});}libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dojo/0000755000000000000000000000000011360615646026673 5ustar ././@LongLink0000000000000000000000000000015000000000000011561 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dojo/date/libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dojo/da0000755000000000000000000000000011360615642027174 5ustar ././@LongLink0000000000000000000000000000016100000000000011563 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dojo/date/locale.jslibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dojo/da0000644000000000000000000002005011360615642027173 0ustar /* Copyright (c) 2004-2008, The Dojo Foundation All Rights Reserved. Available via Academic Free License >= 2.1 OR the modified BSD license. see: http://dojotoolkit.org/license for details */ if(!dojo._hasResource["dojo.date.locale"]){dojo._hasResource["dojo.date.locale"]=true;dojo.provide("dojo.date.locale");dojo.require("dojo.date");dojo.require("dojo.cldr.supplemental");dojo.require("dojo.regexp");dojo.require("dojo.string");dojo.require("dojo.i18n");dojo.requireLocalization("dojo.cldr","gregorian",null,"de,en,en-au,en-ca,en-gb,es,es-es,fr,ROOT,it,it-it,ja,ko,ko-kr,pt,pt-br,zh,zh-cn,zh-tw");(function(){function formatPattern(_1,_2,_3,_4){return _4.replace(/([a-z])\1*/ig,function(_5){var s,_7;var c=_5.charAt(0);var l=_5.length;var _a=["abbr","wide","narrow"];switch(c){case "G":s=_2[(l<4)?"eraAbbr":"eraNames"][_1.getFullYear()<0?0:1];break;case "y":s=_1.getFullYear();switch(l){case 1:break;case 2:if(!_3){s=String(s);s=s.substr(s.length-2);break;}default:_7=true;}break;case "Q":case "q":s=Math.ceil((_1.getMonth()+1)/3);_7=true;break;case "M":var m=_1.getMonth();if(l<3){s=m+1;_7=true;}else{var _c=["months","format",_a[l-3]].join("-");s=_2[_c][m];}break;case "w":var _d=0;s=dojo.date.locale._getWeekOfYear(_1,_d);_7=true;break;case "d":s=_1.getDate();_7=true;break;case "D":s=dojo.date.locale._getDayOfYear(_1);_7=true;break;case "E":var d=_1.getDay();if(l<3){s=d+1;_7=true;}else{var _f=["days","format",_a[l-3]].join("-");s=_2[_f][d];}break;case "a":var _10=(_1.getHours()<12)?"am":"pm";s=_2[_10];break;case "h":case "H":case "K":case "k":var h=_1.getHours();switch(c){case "h":s=(h%12)||12;break;case "H":s=h;break;case "K":s=(h%12);break;case "k":s=h||24;break;}_7=true;break;case "m":s=_1.getMinutes();_7=true;break;case "s":s=_1.getSeconds();_7=true;break;case "S":s=Math.round(_1.getMilliseconds()*Math.pow(10,l-3));_7=true;break;case "v":case "z":s=dojo.date.getTimezoneName(_1);if(s){break;}l=4;case "Z":var _12=_1.getTimezoneOffset();var tz=[(_12<=0?"+":"-"),dojo.string.pad(Math.floor(Math.abs(_12)/60),2),dojo.string.pad(Math.abs(_12)%60,2)];if(l==4){tz.splice(0,0,"GMT");tz.splice(3,0,":");}s=tz.join("");break;default:throw new Error("dojo.date.locale.format: invalid pattern char: "+_4);}if(_7){s=dojo.string.pad(s,l);}return s;});};dojo.date.locale.format=function(_14,_15){_15=_15||{};var _16=dojo.i18n.normalizeLocale(_15.locale);var _17=_15.formatLength||"short";var _18=dojo.date.locale._getGregorianBundle(_16);var str=[];var _1a=dojo.hitch(this,formatPattern,_14,_18,_15.fullYear);if(_15.selector=="year"){var _1b=_14.getFullYear();if(_16.match(/^zh|^ja/)){_1b+="年";}return _1b;}if(_15.selector!="time"){var _1c=_15.datePattern||_18["dateFormat-"+_17];if(_1c){str.push(_processPattern(_1c,_1a));}}if(_15.selector!="date"){var _1d=_15.timePattern||_18["timeFormat-"+_17];if(_1d){str.push(_processPattern(_1d,_1a));}}var _1e=str.join(" ");return _1e;};dojo.date.locale.regexp=function(_1f){return dojo.date.locale._parseInfo(_1f).regexp;};dojo.date.locale._parseInfo=function(_20){_20=_20||{};var _21=dojo.i18n.normalizeLocale(_20.locale);var _22=dojo.date.locale._getGregorianBundle(_21);var _23=_20.formatLength||"short";var _24=_20.datePattern||_22["dateFormat-"+_23];var _25=_20.timePattern||_22["timeFormat-"+_23];var _26;if(_20.selector=="date"){_26=_24;}else{if(_20.selector=="time"){_26=_25;}else{_26=_24+" "+_25;}}var _27=[];var re=_processPattern(_26,dojo.hitch(this,_buildDateTimeRE,_27,_22,_20));return {regexp:re,tokens:_27,bundle:_22};};dojo.date.locale.parse=function(_29,_2a){var _2b=dojo.date.locale._parseInfo(_2a);var _2c=_2b.tokens,_2d=_2b.bundle;var re=new RegExp("^"+_2b.regexp+"$",_2b.strict?"":"i");var _2f=re.exec(_29);if(!_2f){return null;}var _30=["abbr","wide","narrow"];var _31=[1970,0,1,0,0,0,0];var _32="";var _33=dojo.every(_2f,function(v,i){if(!i){return true;}var _36=_2c[i-1];var l=_36.length;switch(_36.charAt(0)){case "y":if(l!=2&&_2a.strict){_31[0]=v;}else{if(v<100){v=Number(v);var _38=""+new Date().getFullYear();var _39=_38.substring(0,2)*100;var _3a=Math.min(Number(_38.substring(2,4))+20,99);var num=(v<_3a)?_39+v:_39-100+v;_31[0]=num;}else{if(_2a.strict){return false;}_31[0]=v;}}break;case "M":if(l>2){var _3c=_2d["months-format-"+_30[l-3]].concat();if(!_2a.strict){v=v.replace(".","").toLowerCase();_3c=dojo.map(_3c,function(s){return s.replace(".","").toLowerCase();});}v=dojo.indexOf(_3c,v);if(v==-1){return false;}}else{v--;}_31[1]=v;break;case "E":case "e":var _3e=_2d["days-format-"+_30[l-3]].concat();if(!_2a.strict){v=v.toLowerCase();_3e=dojo.map(_3e,function(d){return d.toLowerCase();});}v=dojo.indexOf(_3e,v);if(v==-1){return false;}break;case "D":_31[1]=0;case "d":_31[2]=v;break;case "a":var am=_2a.am||_2d.am;var pm=_2a.pm||_2d.pm;if(!_2a.strict){var _42=/\./g;v=v.replace(_42,"").toLowerCase();am=am.replace(_42,"").toLowerCase();pm=pm.replace(_42,"").toLowerCase();}if(_2a.strict&&v!=am&&v!=pm){return false;}_32=(v==pm)?"p":(v==am)?"a":"";break;case "K":if(v==24){v=0;}case "h":case "H":case "k":if(v>23){return false;}_31[3]=v;break;case "m":_31[4]=v;break;case "s":_31[5]=v;break;case "S":_31[6]=v;}return true;});var _43=+_31[3];if(_32==="p"&&_43<12){_31[3]=_43+12;}else{if(_32==="a"&&_43==12){_31[3]=0;}}var _44=new Date(_31[0],_31[1],_31[2],_31[3],_31[4],_31[5],_31[6]);if(_2a.strict){_44.setFullYear(_31[0]);}var _45=_2c.join("");if(!_33||(_45.indexOf("M")!=-1&&_44.getMonth()!=_31[1])||(_45.indexOf("d")!=-1&&_44.getDate()!=_31[2])){return null;}return _44;};function _processPattern(_46,_47,_48,_49){var _4a=function(x){return x;};_47=_47||_4a;_48=_48||_4a;_49=_49||_4a;var _4c=_46.match(/(''|[^'])+/g);var _4d=_46.charAt(0)=="'";dojo.forEach(_4c,function(_4e,i){if(!_4e){_4c[i]="";}else{_4c[i]=(_4d?_48:_47)(_4e);_4d=!_4d;}});return _49(_4c.join(""));};function _buildDateTimeRE(_50,_51,_52,_53){_53=dojo.regexp.escapeString(_53);if(!_52.strict){_53=_53.replace(" a"," ?a");}return _53.replace(/([a-z])\1*/ig,function(_54){var s;var c=_54.charAt(0);var l=_54.length;var p2="",p3="";if(_52.strict){if(l>1){p2="0"+"{"+(l-1)+"}";}if(l>2){p3="0"+"{"+(l-2)+"}";}}else{p2="0?";p3="0{0,2}";}switch(c){case "y":s="\\d{2,4}";break;case "M":s=(l>2)?"\\S+?":p2+"[1-9]|1[0-2]";break;case "D":s=p2+"[1-9]|"+p3+"[1-9][0-9]|[12][0-9][0-9]|3[0-5][0-9]|36[0-6]";break;case "d":s="[12]\\d|"+p2+"[1-9]|3[01]";break;case "w":s=p2+"[1-9]|[1-4][0-9]|5[0-3]";break;case "E":s="\\S+";break;case "h":s=p2+"[1-9]|1[0-2]";break;case "k":s=p2+"\\d|1[01]";break;case "H":s=p2+"\\d|1\\d|2[0-3]";break;case "K":s=p2+"[1-9]|1\\d|2[0-4]";break;case "m":case "s":s="[0-5]\\d";break;case "S":s="\\d{"+l+"}";break;case "a":var am=_52.am||_51.am||"AM";var pm=_52.pm||_51.pm||"PM";if(_52.strict){s=am+"|"+pm;}else{s=am+"|"+pm;if(am!=am.toLowerCase()){s+="|"+am.toLowerCase();}if(pm!=pm.toLowerCase()){s+="|"+pm.toLowerCase();}if(s.indexOf(".")!=-1){s+="|"+s.replace(/\./g,"");}}s=s.replace(/\./g,"\\.");break;default:s=".*";}if(_50){_50.push(_54);}return "("+s+")";}).replace(/[\xa0 ]/g,"[\\s\\xa0]");};})();(function(){var _5c=[];dojo.date.locale.addCustomFormats=function(_5d,_5e){_5c.push({pkg:_5d,name:_5e});};dojo.date.locale._getGregorianBundle=function(_5f){var _60={};dojo.forEach(_5c,function(_61){var _62=dojo.i18n.getLocalization(_61.pkg,_61.name,_5f);_60=dojo.mixin(_60,_62);},this);return _60;};})();dojo.date.locale.addCustomFormats("dojo.cldr","gregorian");dojo.date.locale.getNames=function(_63,_64,use,_66){var _67;var _68=dojo.date.locale._getGregorianBundle(_66);var _69=[_63,use,_64];if(use=="standAlone"){var key=_69.join("-");_67=_68[key];if(_67[0]==1){_67=undefined;}}_69[1]="format";return (_67||_68[_69.join("-")]).concat();};dojo.date.locale.isWeekend=function(_6b,_6c){var _6d=dojo.cldr.supplemental.getWeekend(_6c);var day=(_6b||new Date()).getDay();if(_6d.end<_6d.start){_6d.end+=7;if(day<_6d.start){day+=7;}}return day>=_6d.start&&day<=_6d.end;};dojo.date.locale._getDayOfYear=function(_6f){return dojo.date.difference(new Date(_6f.getFullYear(),0,1,_6f.getHours()),_6f)+1;};dojo.date.locale._getWeekOfYear=function(_70,_71){if(arguments.length==1){_71=0;}var _72=new Date(_70.getFullYear(),0,1).getDay();var adj=(_72-_71+7)%7;var _74=Math.floor((dojo.date.locale._getDayOfYear(_70)+adj-1)/7);if(_72==_71){_74++;}return _74;};}././@LongLink0000000000000000000000000000016000000000000011562 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dojo/date/stamp.jslibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dojo/da0000644000000000000000000000344311360615634027203 0ustar /* Copyright (c) 2004-2008, The Dojo Foundation All Rights Reserved. Available via Academic Free License >= 2.1 OR the modified BSD license. see: http://dojotoolkit.org/license for details */ if(!dojo._hasResource["dojo.date.stamp"]){dojo._hasResource["dojo.date.stamp"]=true;dojo.provide("dojo.date.stamp");dojo.date.stamp.fromISOString=function(_1,_2){if(!dojo.date.stamp._isoRegExp){dojo.date.stamp._isoRegExp=/^(?:(\d{4})(?:-(\d{2})(?:-(\d{2}))?)?)?(?:T(\d{2}):(\d{2})(?::(\d{2})(.\d+)?)?((?:[+-](\d{2}):(\d{2}))|Z)?)?$/;}var _3=dojo.date.stamp._isoRegExp.exec(_1);var _4=null;if(_3){_3.shift();if(_3[1]){_3[1]--;}if(_3[6]){_3[6]*=1000;}if(_2){_2=new Date(_2);dojo.map(["FullYear","Month","Date","Hours","Minutes","Seconds","Milliseconds"],function(_5){return _2["get"+_5]();}).forEach(function(_6,_7){if(_3[_7]===undefined){_3[_7]=_6;}});}_4=new Date(_3[0]||1970,_3[1]||0,_3[2]||1,_3[3]||0,_3[4]||0,_3[5]||0,_3[6]||0);var _8=0;var _9=_3[7]&&_3[7].charAt(0);if(_9!="Z"){_8=((_3[8]||0)*60)+(Number(_3[9])||0);if(_9!="-"){_8*=-1;}}if(_9){_8-=_4.getTimezoneOffset();}if(_8){_4.setTime(_4.getTime()+_8*60000);}}return _4;};dojo.date.stamp.toISOString=function(_a,_b){var _=function(n){return (n<10)?"0"+n:n;};_b=_b||{};var _e=[];var _f=_b.zulu?"getUTC":"get";var _10="";if(_b.selector!="time"){var _11=_a[_f+"FullYear"]();_10=["0000".substr((_11+"").length)+_11,_(_a[_f+"Month"]()+1),_(_a[_f+"Date"]())].join("-");}_e.push(_10);if(_b.selector!="date"){var _12=[_(_a[_f+"Hours"]()),_(_a[_f+"Minutes"]()),_(_a[_f+"Seconds"]())].join(":");var _13=_a[_f+"Milliseconds"]();if(_b.milliseconds){_12+="."+(_13<100?"0":"")+_(_13);}if(_b.zulu){_12+="Z";}else{if(_b.selector!="time"){var _14=_a.getTimezoneOffset();var _15=Math.abs(_14);_12+=(_14>0?"-":"+")+_(Math.floor(_15/60))+":"+_(_15%60);}}_e.push(_12);}return _e.join("T");};}././@LongLink0000000000000000000000000000016500000000000011567 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dojo/AdapterRegistry.jslibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dojo/Ad0000644000000000000000000000162311360615632027137 0ustar /* Copyright (c) 2004-2008, The Dojo Foundation All Rights Reserved. Available via Academic Free License >= 2.1 OR the modified BSD license. see: http://dojotoolkit.org/license for details */ if(!dojo._hasResource["dojo.AdapterRegistry"]){dojo._hasResource["dojo.AdapterRegistry"]=true;dojo.provide("dojo.AdapterRegistry");dojo.AdapterRegistry=function(_1){this.pairs=[];this.returnWrappers=_1||false;};dojo.extend(dojo.AdapterRegistry,{register:function(_2,_3,_4,_5,_6){this.pairs[((_6)?"unshift":"push")]([_2,_3,_4,_5]);},match:function(){for(var i=0;i= 2.1 OR the modified BSD license. see: http://dojotoolkit.org/license for details */ /* This is a compiled version of Dojo, built for deployment and not for development. To get an editable version, please visit: http://dojotoolkit.org for documentation and information on getting the source. */ (function(){var _1=null;if((_1||(typeof djConfig!="undefined"&&djConfig.scopeMap))&&(typeof window!="undefined")){var _2="",_3="",_4="",_5={},_6={};_1=_1||djConfig.scopeMap;for(var i=0;i<_1.length;i++){var _8=_1[i];_2+="var "+_8[0]+" = {}; "+_8[1]+" = "+_8[0]+";"+_8[1]+"._scopeName = '"+_8[1]+"';";_3+=(i==0?"":",")+_8[0];_4+=(i==0?"":",")+_8[1];_5[_8[0]]=_8[1];_6[_8[1]]=_8[0];}eval(_2+"dojo._scopeArgs = ["+_4+"];");dojo._scopePrefixArgs=_3;dojo._scopePrefix="(function("+_3+"){";dojo._scopeSuffix="})("+_4+")";dojo._scopeMap=_5;dojo._scopeMapRev=_6;}(function(){if(!this["console"]){this.console={};}var cn=["assert","count","debug","dir","dirxml","error","group","groupEnd","info","profile","profileEnd","time","timeEnd","trace","warn","log"];var i=0,tn;while((tn=cn[i++])){if(!console[tn]){(function(){var _c=tn+"";console[_c]=("log" in console)?function(){var a=Array.apply({},arguments);a.unshift(_c+":");console["log"](a.join(" "));}:function(){};})();}}if(typeof dojo=="undefined"){this.dojo={_scopeName:"dojo",_scopePrefix:"",_scopePrefixArgs:"",_scopeSuffix:"",_scopeMap:{},_scopeMapRev:{}};}var d=dojo;if(typeof dijit=="undefined"){this.dijit={_scopeName:"dijit"};}if(typeof dojox=="undefined"){this.dojox={_scopeName:"dojox"};}if(!d._scopeArgs){d._scopeArgs=[dojo,dijit,dojox];}d.global=this;d.config={isDebug:false,debugAtAllCosts:false};if(typeof djConfig!="undefined"){for(var _f in djConfig){d.config[_f]=djConfig[_f];}}var _10=["Browser","Rhino","Spidermonkey","Mobile"];var t;while((t=_10.shift())){d["is"+t]=false;}dojo.locale=d.config.locale;var rev="$Rev: 21540 $".match(/\d+/);dojo.version={major:0,minor:0,patch:0,flag:"dev",revision:rev?+rev[0]:999999,toString:function(){with(d.version){return major+"."+minor+"."+patch+flag+" ("+revision+")";}}};if(typeof OpenAjax!="undefined"){OpenAjax.hub.registerLibrary(dojo._scopeName,"http://dojotoolkit.org",d.version.toString());}dojo._mixin=function(obj,_14){var _15={};for(var x in _14){if(_15[x]===undefined||_15[x]!=_14[x]){obj[x]=_14[x];}}if(d["isIE"]&&_14){var p=_14.toString;if(typeof p=="function"&&p!=obj.toString&&p!=_15.toString&&p!="\nfunction toString() {\n [native code]\n}\n"){obj.toString=_14.toString;}}return obj;};dojo.mixin=function(obj,_19){for(var i=1,l=arguments.length;i0){console.warn("files still in flight!");return;}d._callLoaded();};dojo._callLoaded=function(){if(typeof setTimeout=="object"||(dojo.config.useXDomain&&d.isOpera)){if(dojo.isAIR){setTimeout(function(){dojo.loaded();},0);}else{setTimeout(dojo._scopeName+".loaded();",0);}}else{d.loaded();}};dojo._getModuleSymbols=function(_4b){var _4c=_4b.split(".");for(var i=_4c.length;i>0;i--){var _4e=_4c.slice(0,i).join(".");if((i==1)&&!this._moduleHasPrefix(_4e)){_4c[0]="../"+_4c[0];}else{var _4f=this._getModulePrefix(_4e);if(_4f!=_4e){_4c.splice(0,i,_4f);break;}}}return _4c;};dojo._global_omit_module_check=false;dojo.loadInit=function(_50){_50();};dojo._loadModule=dojo.require=function(_51,_52){_52=this._global_omit_module_check||_52;var _53=this._loadedModules[_51];if(_53){return _53;}var _54=this._getModuleSymbols(_51).join("/")+".js";var _55=(!_52)?_51:null;var ok=this._loadPath(_54,_55);if(!ok&&!_52){throw new Error("Could not load '"+_51+"'; last tried '"+_54+"'");}if(!_52&&!this._isXDomain){_53=this._loadedModules[_51];if(!_53){throw new Error("symbol '"+_51+"' is not defined after loading '"+_54+"'");}}return _53;};dojo.provide=function(_57){_57=_57+"";return (d._loadedModules[_57]=d.getObject(_57,true));};dojo.platformRequire=function(_58){var _59=_58.common||[];var _5a=_59.concat(_58[d._name]||_58["default"]||[]);for(var x=0;x<_5a.length;x++){var _5c=_5a[x];if(_5c.constructor==Array){d._loadModule.apply(d,_5c);}else{d._loadModule(_5c);}}};dojo.requireIf=function(_5d,_5e){if(_5d===true){var _5f=[];for(var i=1;i0&&!(j==1&&_70[0]=="")&&_70[j]==".."&&_70[j-1]!=".."){if(j==(_70.length-1)){_70.splice(j,1);_70[j-1]="";}else{_70.splice(j-1,2);j-=2;}}}}_6d.path=_70.join("/");}}}}uri=[];if(_6d.scheme){uri.push(_6d.scheme,":");}if(_6d.authority){uri.push("//",_6d.authority);}uri.push(_6d.path);if(_6d.query){uri.push("?",_6d.query);}if(_6d.fragment){uri.push("#",_6d.fragment);}}this.uri=uri.join("");var r=this.uri.match(ore);this.scheme=r[2]||(r[1]?"":n);this.authority=r[4]||(r[3]?"":n);this.path=r[5];this.query=r[7]||(r[6]?"":n);this.fragment=r[9]||(r[8]?"":n);if(this.authority!=n){r=this.authority.match(ire);this.user=r[3]||n;this.password=r[4]||n;this.host=r[6]||r[7];this.port=r[9]||n;}};dojo._Url.prototype.toString=function(){return this.uri;};dojo.moduleUrl=function(_73,url){var loc=d._getModuleSymbols(_73).join("/");if(!loc){return null;}if(loc.lastIndexOf("/")!=loc.length-1){loc+="/";}var _76=loc.indexOf(":");if(loc.charAt(0)!="/"&&(_76==-1||_76>loc.indexOf("/"))){loc=d.baseUrl+loc;}return new d._Url(loc,url);};})();if(typeof window!="undefined"){dojo.isBrowser=true;dojo._name="browser";(function(){var d=dojo;if(document&&document.getElementsByTagName){var _78=document.getElementsByTagName("script");var _79=/dojo(\.xd)?\.js(\W|$)/i;for(var i=0;i<_78.length;i++){var src=_78[i].getAttribute("src");if(!src){continue;}var m=src.match(_79);if(m){if(!d.config.baseUrl){d.config.baseUrl=src.substring(0,m.index);}var cfg=_78[i].getAttribute("djConfig");if(cfg){var _7e=eval("({ "+cfg+" })");for(var x in _7e){dojo.config[x]=_7e[x];}}break;}}}d.baseUrl=d.config.baseUrl;var n=navigator;var dua=n.userAgent;var dav=n.appVersion;var tv=parseFloat(dav);if(dua.indexOf("Opera")>=0){d.isOpera=tv;}var _84=Math.max(dav.indexOf("WebKit"),dav.indexOf("Safari"),0);if(_84){d.isSafari=parseFloat(dav.split("Version/")[1])||(parseFloat(dav.substr(_84+7))>419.3)?3:2;}if(dua.indexOf("AdobeAIR")>=0){d.isAIR=1;}if(dav.indexOf("Konqueror")>=0||d.isSafari){d.isKhtml=tv;}if(dua.indexOf("Gecko")>=0&&!d.isKhtml){d.isMozilla=d.isMoz=tv;}if(d.isMoz){d.isFF=parseFloat(dua.split("Firefox/")[1])||undefined;}if(document.all&&!d.isOpera){d.isIE=parseFloat(dav.split("MSIE ")[1])||undefined;}if(dojo.isIE&&window.location.protocol==="file:"){dojo.config.ieForceActiveXXhr=true;}var cm=document.compatMode;d.isQuirks=cm=="BackCompat"||cm=="QuirksMode"||d.isIE<6;d.locale=dojo.config.locale||(d.isIE?n.userLanguage:n.language).toLowerCase();d._XMLHTTP_PROGIDS=["Msxml2.XMLHTTP","Microsoft.XMLHTTP","Msxml2.XMLHTTP.4.0"];d._xhrObj=function(){var _86=null;var _87=null;if(!dojo.isIE||!dojo.config.ieForceActiveXXhr){try{_86=new XMLHttpRequest();}catch(e){}}if(!_86){for(var i=0;i<3;++i){var _89=d._XMLHTTP_PROGIDS[i];try{_86=new ActiveXObject(_89);}catch(e){_87=e;}if(_86){d._XMLHTTP_PROGIDS=[_89];break;}}}if(!_86){throw new Error("XMLHTTP not available: "+_87);}return _86;};d._isDocumentOk=function(_8a){var _8b=_8a.status||0;return (_8b>=200&&_8b<300)||_8b==304||_8b==1223||(!_8b&&(location.protocol=="file:"||location.protocol=="chrome:"));};var _8c=window.location+"";var _8d=document.getElementsByTagName("base");var _8e=(_8d&&_8d.length>0);d._getText=function(uri,_90){var _91=this._xhrObj();if(!_8e&&dojo._Url){uri=(new dojo._Url(_8c,uri)).toString();}if(d.config.cacheBust){uri+="";uri+=(uri.indexOf("?")==-1?"?":"&")+String(d.config.cacheBust).replace(/\W+/g,"");}_91.open("GET",uri,false);try{_91.send(null);if(!d._isDocumentOk(_91)){var err=Error("Unable to load "+uri+" status:"+_91.status);err.status=_91.status;err.responseText=_91.responseText;throw err;}}catch(e){if(_90){return null;}throw e;}return _91.responseText;};d._windowUnloaders=[];d.windowUnloaded=function(){var mll=this._windowUnloaders;while(mll.length){(mll.pop())();}};d.addOnWindowUnload=function(obj,_95){d._onto(d._windowUnloaders,obj,_95);};})();dojo._initFired=false;dojo._loadInit=function(e){dojo._initFired=true;var _97=(e&&e.type)?e.type.toLowerCase():"load";if(arguments.callee.initialized||(_97!="domcontentloaded"&&_97!="load")){return;}arguments.callee.initialized=true;if("_khtmlTimer" in dojo){clearInterval(dojo._khtmlTimer);delete dojo._khtmlTimer;}if(dojo._inFlightCount==0){dojo._modulesLoaded();}};dojo._fakeLoadInit=function(){dojo._loadInit({type:"load"});};if(!dojo.config.afterOnLoad){if(document.addEventListener){if(dojo.isOpera||dojo.isFF>=3||(dojo.isMoz&&dojo.config.enableMozDomContentLoaded===true)){document.addEventListener("DOMContentLoaded",dojo._loadInit,null);}window.addEventListener("load",dojo._loadInit,null);}if(dojo.isAIR){window.addEventListener("load",dojo._loadInit,null);}else{if(/(WebKit|khtml)/i.test(navigator.userAgent)){dojo._khtmlTimer=setInterval(function(){if(/loaded|complete/.test(document.readyState)){dojo._loadInit();}},10);}}}(function(){var _w=window;var _99=function(_9a,fp){var _9c=_w[_9a]||function(){};_w[_9a]=function(){fp.apply(_w,arguments);_9c.apply(_w,arguments);};};if(dojo.isIE){if(!dojo.config.afterOnLoad){document.write(""+"");}try{document.namespaces.add("v","urn:schemas-microsoft-com:vml");document.createStyleSheet().addRule("v\\:*","behavior:url(#default#VML)");}catch(e){}}_99("onbeforeunload",function(){dojo.unloaded();});_99("onunload",function(){dojo.windowUnloaded();});})();}(function(){var mp=dojo.config["modulePaths"];if(mp){for(var _9e in mp){dojo.registerModulePath(_9e,mp[_9e]);}}})();if(dojo.config.isDebug){dojo.require("dojo._firebug.firebug");}if(dojo.config.debugAtAllCosts){dojo.config.useXDomain=true;dojo.require("dojo._base._loader.loader_xd");dojo.require("dojo._base._loader.loader_debug");}if(!dojo._hasResource["dojo._base.lang"]){dojo._hasResource["dojo._base.lang"]=true;dojo.provide("dojo._base.lang");dojo.isString=function(it){return !!arguments.length&&it!=null&&(typeof it=="string"||it instanceof String);};dojo.isArray=function(it){return it&&(it instanceof Array||typeof it=="array");};dojo.isFunction=(function(){var _a1=function(it){return it&&(typeof it=="function"||it instanceof Function);};return dojo.isSafari?function(it){if(typeof it=="function"&&it=="[object NodeList]"){return false;}return _a1(it);}:_a1;})();dojo.isObject=function(it){return it!==undefined&&(it===null||typeof it=="object"||dojo.isArray(it)||dojo.isFunction(it));};dojo.isArrayLike=function(it){var d=dojo;return it&&it!==undefined&&!d.isString(it)&&!d.isFunction(it)&&!(it.tagName&&it.tagName.toLowerCase()=="form")&&(d.isArray(it)||isFinite(it.length));};dojo.isAlien=function(it){return it&&!dojo.isFunction(it)&&/\{\s*\[native code\]\s*\}/.test(String(it));};dojo.extend=function(_a8,_a9){for(var i=1,l=arguments.length;i2){return dojo._hitchArgs.apply(dojo,arguments);}if(!_b3){_b3=_b2;_b2=null;}if(dojo.isString(_b3)){_b2=_b2||dojo.global;if(!_b2[_b3]){throw (["dojo.hitch: scope[\"",_b3,"\"] is null (scope=\"",_b2,"\")"].join(""));}return function(){return _b2[_b3].apply(_b2,arguments||[]);};}return !_b2?_b3:function(){return _b3.apply(_b2,arguments||[]);};};dojo.delegate=dojo._delegate=(function(){function TMP(){};return function(obj,_b5){TMP.prototype=obj;var tmp=new TMP();if(_b5){dojo._mixin(tmp,_b5);}return tmp;};})();(function(){var _b7=function(obj,_b9,_ba){return (_ba||[]).concat(Array.prototype.slice.call(obj,_b9||0));};var _bb=function(obj,_bd,_be){var arr=_be||[];for(var x=_bd||0;x=0){this._fire();}return this;},_fire:function(){var _134=this.chain;var _135=this.fired;var res=this.results[_135];var self=this;var cb=null;while((_134.length>0)&&(this.paused==0)){var f=_134.shift()[_135];if(!f){continue;}var func=function(){var ret=f(res);if(typeof ret!="undefined"){res=ret;}_135=((res instanceof Error)?1:0);if(res instanceof dojo.Deferred){cb=function(res){self._resback(res);self.paused--;if((self.paused==0)&&(self.fired>=0)){self._fire();}};this.paused++;}};if(dojo.config.isDebug){func.call(this);}else{try{func.call(this);}catch(err){_135=1;res=err;}}}this.fired=_135;this.results[_135]=res;if((cb)&&(this.paused)){res.addBoth(cb);}}});}if(!dojo._hasResource["dojo._base.json"]){dojo._hasResource["dojo._base.json"]=true;dojo.provide("dojo._base.json");dojo.fromJson=function(json){return eval("("+json+")");};dojo._escapeString=function(str){return ("\""+str.replace(/(["\\])/g,"\\$1")+"\"").replace(/[\f]/g,"\\f").replace(/[\b]/g,"\\b").replace(/[\n]/g,"\\n").replace(/[\t]/g,"\\t").replace(/[\r]/g,"\\r");};dojo.toJsonIndentStr="\t";dojo.toJson=function(it,_140,_141){if(it===undefined){return "undefined";}var _142=typeof it;if(_142=="number"||_142=="boolean"){return it+"";}if(it===null){return "null";}if(dojo.isString(it)){return dojo._escapeString(it);}var _143=arguments.callee;var _144;_141=_141||"";var _145=_140?_141+dojo.toJsonIndentStr:"";var tf=it.__json__||it.json;if(dojo.isFunction(tf)){_144=tf.call(it);if(it!==_144){return _143(_144,_140,_145);}}if(it.nodeType&&it.cloneNode){throw new Error("Can't serialize DOM nodes");}var sep=_140?" ":"";var _148=_140?"\n":"";if(dojo.isArray(it)){var res=dojo.map(it,function(obj){var val=_143(obj,_140,_145);if(typeof val!="string"){val="undefined";}return _148+_145+val;});return "["+res.join(","+sep)+_148+_141+"]";}if(_142=="function"){return null;}var _14c=[],key;for(key in it){var _14e,val;if(typeof key=="number"){_14e="\""+key+"\"";}else{if(typeof key=="string"){_14e=dojo._escapeString(key);}else{continue;}}val=_143(it[key],_140,_145);if(typeof val!="string"){continue;}_14c.push(_148+_145+_14e+":"+sep+val);}return "{"+_14c.join(","+sep)+_148+_141+"}";};}if(!dojo._hasResource["dojo._base.array"]){dojo._hasResource["dojo._base.array"]=true;dojo.provide("dojo._base.array");(function(){var _150=function(arr,obj,cb){return [dojo.isString(arr)?arr.split(""):arr,obj||dojo.global,dojo.isString(cb)?new Function("item","index","array",cb):cb];};dojo.mixin(dojo,{indexOf:function(_154,_155,_156,_157){var step=1,end=_154.length||0,i=0;if(_157){i=end-1;step=end=-1;}if(_156!=undefined){i=_156;}if((_157&&i>end)||i>=bits;t[x]=bits==4?17*c:c;});t.a=1;return t;};dojo.colorFromArray=function(a,obj){var t=obj||new dojo.Color();t._set(Number(a[0]),Number(a[1]),Number(a[2]),Number(a[3]));if(isNaN(t.a)){t.a=1;}return t.sanitize();};dojo.colorFromString=function(str,obj){var a=dojo.Color.named[str];return a&&dojo.colorFromArray(a,obj)||dojo.colorFromRgb(str,obj)||dojo.colorFromHex(str,obj);};}if(!dojo._hasResource["dojo._base"]){dojo._hasResource["dojo._base"]=true;dojo.provide("dojo._base");}if(!dojo._hasResource["dojo._base.window"]){dojo._hasResource["dojo._base.window"]=true;dojo.provide("dojo._base.window");dojo.doc=window["document"]||null;dojo.body=function(){return dojo.doc.body||dojo.doc.getElementsByTagName("body")[0];};dojo.setContext=function(_1a7,_1a8){dojo.global=_1a7;dojo.doc=_1a8;};dojo._fireCallback=function(_1a9,_1aa,_1ab){if(_1aa&&dojo.isString(_1a9)){_1a9=_1aa[_1a9];}return _1a9.apply(_1aa,_1ab||[]);};dojo.withGlobal=function(_1ac,_1ad,_1ae,_1af){var rval;var _1b1=dojo.global;var _1b2=dojo.doc;try{dojo.setContext(_1ac,_1ac.document);rval=dojo._fireCallback(_1ad,_1ae,_1af);}finally{dojo.setContext(_1b1,_1b2);}return rval;};dojo.withDoc=function(_1b3,_1b4,_1b5,_1b6){var rval;var _1b8=dojo.doc;try{dojo.doc=_1b3;rval=dojo._fireCallback(_1b4,_1b5,_1b6);}finally{dojo.doc=_1b8;}return rval;};}if(!dojo._hasResource["dojo._base.event"]){dojo._hasResource["dojo._base.event"]=true;dojo.provide("dojo._base.event");(function(){var del=(dojo._event_listener={add:function(node,name,fp){if(!node){return;}name=del._normalizeEventName(name);fp=del._fixCallback(name,fp);var _1bd=name;if(!dojo.isIE&&(name=="mouseenter"||name=="mouseleave")){var ofp=fp;name=(name=="mouseenter")?"mouseover":"mouseout";fp=function(e){try{e.relatedTarget.tagName;}catch(e2){return;}if(!dojo.isDescendant(e.relatedTarget,node)){return ofp.call(this,e);}};}node.addEventListener(name,fp,false);return fp;},remove:function(node,_1c1,_1c2){if(node){_1c1=del._normalizeEventName(_1c1);if(!dojo.isIE&&(_1c1=="mouseenter"||_1c1=="mouseleave")){_1c1=(_1c1=="mouseenter")?"mouseover":"mouseout";}node.removeEventListener(_1c1,_1c2,false);}},_normalizeEventName:function(name){return name.slice(0,2)=="on"?name.slice(2):name;},_fixCallback:function(name,fp){return name!="keypress"?fp:function(e){return fp.call(this,del._fixEvent(e,this));};},_fixEvent:function(evt,_1c8){switch(evt.type){case "keypress":del._setKeyChar(evt);break;}return evt;},_setKeyChar:function(evt){evt.keyChar=evt.charCode?String.fromCharCode(evt.charCode):"";evt.charOrCode=evt.keyChar||evt.keyCode;},_punctMap:{106:42,111:47,186:59,187:43,188:44,189:45,190:46,191:47,192:96,219:91,220:92,221:93,222:39}});dojo.fixEvent=function(evt,_1cb){return del._fixEvent(evt,_1cb);};dojo.stopEvent=function(evt){evt.preventDefault();evt.stopPropagation();};var _1cd=dojo._listener;dojo._connect=function(obj,_1cf,_1d0,_1d1,_1d2){var _1d3=obj&&(obj.nodeType||obj.attachEvent||obj.addEventListener);var lid=!_1d3?0:(!_1d2?1:2),l=[dojo._listener,del,_1cd][lid];var h=l.add(obj,_1cf,dojo.hitch(_1d0,_1d1));return [obj,_1cf,h,lid];};dojo._disconnect=function(obj,_1d8,_1d9,_1da){([dojo._listener,del,_1cd][_1da]).remove(obj,_1d8,_1d9);};dojo.keys={BACKSPACE:8,TAB:9,CLEAR:12,ENTER:13,SHIFT:16,CTRL:17,ALT:18,PAUSE:19,CAPS_LOCK:20,ESCAPE:27,SPACE:32,PAGE_UP:33,PAGE_DOWN:34,END:35,HOME:36,LEFT_ARROW:37,UP_ARROW:38,RIGHT_ARROW:39,DOWN_ARROW:40,INSERT:45,DELETE:46,HELP:47,LEFT_WINDOW:91,RIGHT_WINDOW:92,SELECT:93,NUMPAD_0:96,NUMPAD_1:97,NUMPAD_2:98,NUMPAD_3:99,NUMPAD_4:100,NUMPAD_5:101,NUMPAD_6:102,NUMPAD_7:103,NUMPAD_8:104,NUMPAD_9:105,NUMPAD_MULTIPLY:106,NUMPAD_PLUS:107,NUMPAD_ENTER:108,NUMPAD_MINUS:109,NUMPAD_PERIOD:110,NUMPAD_DIVIDE:111,F1:112,F2:113,F3:114,F4:115,F5:116,F6:117,F7:118,F8:119,F9:120,F10:121,F11:122,F12:123,F13:124,F14:125,F15:126,NUM_LOCK:144,SCROLL_LOCK:145};if(dojo.isIE){var _1db=function(e,code){try{return (e.keyCode=code);}catch(e){return 0;}};var iel=dojo._listener;var _1df=dojo._ieListenersName="_"+dojo._scopeName+"_listeners";if(!dojo.config._allow_leaks){_1cd=iel=dojo._ie_listener={handlers:[],add:function(_1e0,_1e1,_1e2){_1e0=_1e0||dojo.global;var f=_1e0[_1e1];if(!f||!f[_1df]){var d=dojo._getIeDispatcher();d.target=f&&(ieh.push(f)-1);d[_1df]=[];f=_1e0[_1e1]=d;}return f[_1df].push(ieh.push(_1e2)-1);},remove:function(_1e6,_1e7,_1e8){var f=(_1e6||dojo.global)[_1e7],l=f&&f[_1df];if(f&&l&&_1e8--){delete ieh[l[_1e8]];delete l[_1e8];}}};var ieh=iel.handlers;}dojo.mixin(del,{add:function(node,_1ec,fp){if(!node){return;}_1ec=del._normalizeEventName(_1ec);if(_1ec=="onkeypress"){var kd=node.onkeydown;if(!kd||!kd[_1df]||!kd._stealthKeydownHandle){var h=del.add(node,"onkeydown",del._stealthKeyDown);kd=node.onkeydown;kd._stealthKeydownHandle=h;kd._stealthKeydownRefs=1;}else{kd._stealthKeydownRefs++;}}return iel.add(node,_1ec,del._fixCallback(fp));},remove:function(node,_1f1,_1f2){_1f1=del._normalizeEventName(_1f1);iel.remove(node,_1f1,_1f2);if(_1f1=="onkeypress"){var kd=node.onkeydown;if(--kd._stealthKeydownRefs<=0){iel.remove(node,"onkeydown",kd._stealthKeydownHandle);delete kd._stealthKeydownHandle;}}},_normalizeEventName:function(_1f4){return _1f4.slice(0,2)!="on"?"on"+_1f4:_1f4;},_nop:function(){},_fixEvent:function(evt,_1f6){if(!evt){var w=_1f6&&(_1f6.ownerDocument||_1f6.document||_1f6).parentWindow||window;evt=w.event;}if(!evt){return (evt);}evt.target=evt.srcElement;evt.currentTarget=(_1f6||evt.srcElement);evt.layerX=evt.offsetX;evt.layerY=evt.offsetY;var se=evt.srcElement,doc=(se&&se.ownerDocument)||document;var _1fa=((dojo.isIE<6)||(doc["compatMode"]=="BackCompat"))?doc.body:doc.documentElement;var _1fb=dojo._getIeDocumentElementOffset();evt.pageX=evt.clientX+dojo._fixIeBiDiScrollLeft(_1fa.scrollLeft||0)-_1fb.x;evt.pageY=evt.clientY+(_1fa.scrollTop||0)-_1fb.y;if(evt.type=="mouseover"){evt.relatedTarget=evt.fromElement;}if(evt.type=="mouseout"){evt.relatedTarget=evt.toElement;}evt.stopPropagation=del._stopPropagation;evt.preventDefault=del._preventDefault;return del._fixKeys(evt);},_fixKeys:function(evt){switch(evt.type){case "keypress":var c=("charCode" in evt?evt.charCode:evt.keyCode);if(c==10){c=0;evt.keyCode=13;}else{if(c==13||c==27){c=0;}else{if(c==3){c=99;}}}evt.charCode=c;del._setKeyChar(evt);break;}return evt;},_stealthKeyDown:function(evt){var kp=evt.currentTarget.onkeypress;if(!kp||!kp[_1df]){return;}var k=evt.keyCode;var _201=(k!=13)&&(k!=32)&&(k!=27)&&(k<48||k>90)&&(k<96||k>111)&&(k<186||k>192)&&(k<219||k>222);if(_201||evt.ctrlKey){var c=_201?0:k;if(evt.ctrlKey){if(k==3||k==13){return;}else{if(c>95&&c<106){c-=48;}else{if((!evt.shiftKey)&&(c>=65&&c<=90)){c+=32;}else{c=del._punctMap[c]||c;}}}}var faux=del._synthesizeEvent(evt,{type:"keypress",faux:true,charCode:c});kp.call(evt.currentTarget,faux);evt.cancelBubble=faux.cancelBubble;evt.returnValue=faux.returnValue;_1db(evt,faux.keyCode);}},_stopPropagation:function(){this.cancelBubble=true;},_preventDefault:function(){this.bubbledKeyCode=this.keyCode;if(this.ctrlKey){_1db(this,0);}this.returnValue=false;}});dojo.stopEvent=function(evt){evt=evt||window.event;del._stopPropagation.call(evt);del._preventDefault.call(evt);};}del._synthesizeEvent=function(evt,_206){var faux=dojo.mixin({},evt,_206);del._setKeyChar(faux);faux.preventDefault=function(){evt.preventDefault();};faux.stopPropagation=function(){evt.stopPropagation();};return faux;};if(dojo.isOpera){dojo.mixin(del,{_fixEvent:function(evt,_209){switch(evt.type){case "keypress":var c=evt.which;if(c==3){c=99;}c=((c<41)&&(!evt.shiftKey)?0:c);if((evt.ctrlKey)&&(!evt.shiftKey)&&(c>=65)&&(c<=90)){c+=32;}return del._synthesizeEvent(evt,{charCode:c});}return evt;}});}if(dojo.isSafari){del._add=del.add;del._remove=del.remove;dojo.mixin(del,{add:function(node,_20c,fp){if(!node){return;}var _20e=del._add(node,_20c,fp);if(del._normalizeEventName(_20c)=="keypress"){_20e._stealthKeyDownHandle=del._add(node,"keydown",function(evt){var k=evt.keyCode;var _211=(k!=13)&&(k!=32)&&(k!=27)&&(k<48||k>90)&&(k<96||k>111)&&(k<186||k>192)&&(k<219||k>222);if(_211||evt.ctrlKey){var c=_211?0:k;if(evt.ctrlKey){if(k==3||k==13){return;}else{if(c>95&&c<106){c-=48;}else{if((!evt.shiftKey)&&(c>=65&&c<=90)){c+=32;}else{c=del._punctMap[c]||c;}}}}var faux=del._synthesizeEvent(evt,{type:"keypress",faux:true,charCode:c});fp.call(evt.currentTarget,faux);}});}return _20e;},remove:function(node,_215,_216){if(node){if(_216._stealthKeyDownHandle){del._remove(node,"keydown",_216._stealthKeyDownHandle);}del._remove(node,_215,_216);}},_fixEvent:function(evt,_218){switch(evt.type){case "keypress":if(evt.faux){return evt;}var c=evt.charCode;c=c>=32?c:0;return del._synthesizeEvent(evt,{charCode:c,faux:true});}return evt;}});}})();if(dojo.isIE){dojo._ieDispatcher=function(args,_21b){var ap=Array.prototype,h=dojo._ie_listener.handlers,c=args.callee,ls=c[dojo._ieListenersName],t=h[c.target];var r=t&&t.apply(_21b,args);var lls=[].concat(ls);for(var i in lls){if(!(i in ap)){h[lls[i]].apply(_21b,args);}}return r;};dojo._getIeDispatcher=function(){return new Function(dojo._scopeName+"._ieDispatcher(arguments, this)");};dojo._event_listener._fixCallback=function(fp){var f=dojo._event_listener._fixEvent;return function(e){return fp.call(this,f(e,this));};};}}if(!dojo._hasResource["dojo._base.html"]){dojo._hasResource["dojo._base.html"]=true;dojo.provide("dojo._base.html");try{document.execCommand("BackgroundImageCache",false,true);}catch(e){}if(dojo.isIE||dojo.isOpera){dojo.byId=function(id,doc){if(dojo.isString(id)){var _d=doc||dojo.doc;var te=_d.getElementById(id);if(te&&te.attributes.id.value==id){return te;}else{var eles=_d.all[id];if(!eles||!eles.length){return eles;}var i=0;while((te=eles[i++])){if(te.attributes.id.value==id){return te;}}}}else{return id;}};}else{dojo.byId=function(id,doc){return dojo.isString(id)?(doc||dojo.doc).getElementById(id):id;};}(function(){var d=dojo;var _230=null;dojo.addOnWindowUnload(function(){_230=null;});dojo._destroyElement=function(node){node=d.byId(node);try{if(!_230||_230.ownerDocument!=node.ownerDocument){_230=node.ownerDocument.createElement("div");}_230.appendChild(node.parentNode?node.parentNode.removeChild(node):node);_230.innerHTML="";}catch(e){}};dojo.isDescendant=function(node,_233){try{node=d.byId(node);_233=d.byId(_233);while(node){if(node===_233){return true;}node=node.parentNode;}}catch(e){}return false;};dojo.setSelectable=function(node,_235){node=d.byId(node);if(d.isMozilla){node.style.MozUserSelect=_235?"":"none";}else{if(d.isKhtml){node.style.KhtmlUserSelect=_235?"auto":"none";}else{if(d.isIE){var v=(node.unselectable=_235?"":"on");d.query("*",node).forEach("item.unselectable = '"+v+"'");}}}};var _237=function(node,ref){ref.parentNode.insertBefore(node,ref);return true;};var _23a=function(node,ref){var pn=ref.parentNode;if(ref==pn.lastChild){pn.appendChild(node);}else{return _237(node,ref.nextSibling);}return true;};dojo.place=function(node,_23f,_240){if(!node||!_23f){return false;}node=d.byId(node);_23f=d.byId(_23f);if(typeof _240=="number"){var cn=_23f.childNodes;if(!cn.length||cn.length<=_240){_23f.appendChild(node);return true;}return _237(node,_240<=0?_23f.firstChild:cn[_240]);}switch(_240){case "before":return _237(node,_23f);case "after":return _23a(node,_23f);case "first":if(_23f.firstChild){return _237(node,_23f.firstChild);}default:_23f.appendChild(node);return true;}};dojo.boxModel="content-box";if(d.isIE){var _dcm=document.compatMode;d.boxModel=_dcm=="BackCompat"||_dcm=="QuirksMode"||d.isIE<6?"border-box":"content-box";}var gcs;if(d.isSafari){gcs=function(node){var s;if(node instanceof HTMLElement){var dv=node.ownerDocument.defaultView;s=dv.getComputedStyle(node,null);if(!s&&node.style){node.style.display="";s=dv.getComputedStyle(node,null);}}return s||{};};}else{if(d.isIE){gcs=function(node){return node.nodeType==1?node.currentStyle:{};};}else{gcs=function(node){return node instanceof HTMLElement?node.ownerDocument.defaultView.getComputedStyle(node,null):{};};}}dojo.getComputedStyle=gcs;if(!d.isIE){dojo._toPixelValue=function(_249,_24a){return parseFloat(_24a)||0;};}else{dojo._toPixelValue=function(_24b,_24c){if(!_24c){return 0;}if(_24c=="medium"){return 4;}if(_24c.slice&&(_24c.slice(-2)=="px")){return parseFloat(_24c);}with(_24b){var _24d=style.left;var _24e=runtimeStyle.left;runtimeStyle.left=currentStyle.left;try{style.left=_24c;_24c=style.pixelLeft;}catch(e){_24c=0;}style.left=_24d;runtimeStyle.left=_24e;}return _24c;};}var px=d._toPixelValue;var astr="DXImageTransform.Microsoft.Alpha";var af=function(n,f){try{return n.filters.item(astr);}catch(e){return f?{}:null;}};dojo._getOpacity=d.isIE?function(node){try{return af(node).Opacity/100;}catch(e){return 1;}}:function(node){return gcs(node).opacity;};dojo._setOpacity=d.isIE?function(node,_257){var ov=_257*100;node.style.zoom=1;af(node,1).Enabled=(_257==1?false:true);if(!af(node)){node.style.filter+=" progid:"+astr+"(Opacity="+ov+")";}else{af(node,1).Opacity=ov;}if(node.nodeName.toLowerCase()=="tr"){d.query("> td",node).forEach(function(i){d._setOpacity(i,_257);});}return _257;}:function(node,_25b){return node.style.opacity=_25b;};var _25c={left:true,top:true};var _25d=/margin|padding|width|height|max|min|offset/;var _25e=function(node,type,_261){type=type.toLowerCase();if(d.isIE){if(_261=="auto"){if(type=="height"){return node.offsetHeight;}if(type=="width"){return node.offsetWidth;}}if(type=="fontweight"){switch(_261){case 700:return "bold";case 400:default:return "normal";}}}if(!(type in _25c)){_25c[type]=_25d.test(type);}return _25c[type]?px(node,_261):_261;};var _262=d.isIE?"styleFloat":"cssFloat";var _263={"cssFloat":_262,"styleFloat":_262,"float":_262};dojo.style=function(node,_265,_266){var n=d.byId(node),args=arguments.length,op=(_265=="opacity");_265=_263[_265]||_265;if(args==3){return op?d._setOpacity(n,_266):n.style[_265]=_266;}if(args==2&&op){return d._getOpacity(n);}var s=gcs(n);if(args==2&&!d.isString(_265)){for(var x in _265){d.style(node,x,_265[x]);}return s;}return (args==1)?s:_25e(n,_265,s[_265]||n.style[_265]);};dojo._getPadExtents=function(n,_26d){var s=_26d||gcs(n),l=px(n,s.paddingLeft),t=px(n,s.paddingTop);return {l:l,t:t,w:l+px(n,s.paddingRight),h:t+px(n,s.paddingBottom)};};dojo._getBorderExtents=function(n,_272){var ne="none",s=_272||gcs(n),bl=(s.borderLeftStyle!=ne?px(n,s.borderLeftWidth):0),bt=(s.borderTopStyle!=ne?px(n,s.borderTopWidth):0);return {l:bl,t:bt,w:bl+(s.borderRightStyle!=ne?px(n,s.borderRightWidth):0),h:bt+(s.borderBottomStyle!=ne?px(n,s.borderBottomWidth):0)};};dojo._getPadBorderExtents=function(n,_278){var s=_278||gcs(n),p=d._getPadExtents(n,s),b=d._getBorderExtents(n,s);return {l:p.l+b.l,t:p.t+b.t,w:p.w+b.w,h:p.h+b.h};};dojo._getMarginExtents=function(n,_27d){var s=_27d||gcs(n),l=px(n,s.marginLeft),t=px(n,s.marginTop),r=px(n,s.marginRight),b=px(n,s.marginBottom);if(d.isSafari&&(s.position!="absolute")){r=l;}return {l:l,t:t,w:l+r,h:t+b};};dojo._getMarginBox=function(node,_284){var s=_284||gcs(node),me=d._getMarginExtents(node,s);var l=node.offsetLeft-me.l,t=node.offsetTop-me.t,p=node.parentNode;if(d.isMoz){var sl=parseFloat(s.left),st=parseFloat(s.top);if(!isNaN(sl)&&!isNaN(st)){l=sl,t=st;}else{if(p&&p.style){var pcs=gcs(p);if(pcs.overflow!="visible"){var be=d._getBorderExtents(p,pcs);l+=be.l,t+=be.t;}}}}else{if(d.isOpera){if(p){var be=d._getBorderExtents(p);l-=be.l;t-=be.t;}}}return {l:l,t:t,w:node.offsetWidth+me.w,h:node.offsetHeight+me.h};};dojo._getContentBox=function(node,_28f){var s=_28f||gcs(node),pe=d._getPadExtents(node,s),be=d._getBorderExtents(node,s),w=node.clientWidth,h;if(!w){w=node.offsetWidth,h=node.offsetHeight;}else{h=node.clientHeight,be.w=be.h=0;}if(d.isOpera){pe.l+=be.l;pe.t+=be.t;}return {l:pe.l,t:pe.t,w:w-pe.w-be.w,h:h-pe.h-be.h};};dojo._getBorderBox=function(node,_296){var s=_296||gcs(node),pe=d._getPadExtents(node,s),cb=d._getContentBox(node,s);return {l:cb.l-pe.l,t:cb.t-pe.t,w:cb.w+pe.w,h:cb.h+pe.h};};dojo._setBox=function(node,l,t,w,h,u){u=u||"px";var s=node.style;if(!isNaN(l)){s.left=l+u;}if(!isNaN(t)){s.top=t+u;}if(w>=0){s.width=w+u;}if(h>=0){s.height=h+u;}};dojo._isButtonTag=function(node){return node.tagName=="BUTTON"||node.tagName=="INPUT"&&node.getAttribute("type").toUpperCase()=="BUTTON";};dojo._usesBorderBox=function(node){var n=node.tagName;return d.boxModel=="border-box"||n=="TABLE"||dojo._isButtonTag(node);};dojo._setContentSize=function(node,_2a5,_2a6,_2a7){if(d._usesBorderBox(node)){var pb=d._getPadBorderExtents(node,_2a7);if(_2a5>=0){_2a5+=pb.w;}if(_2a6>=0){_2a6+=pb.h;}}d._setBox(node,NaN,NaN,_2a5,_2a6);};dojo._setMarginBox=function(node,_2aa,_2ab,_2ac,_2ad,_2ae){var s=_2ae||gcs(node);var bb=d._usesBorderBox(node),pb=bb?_2b2:d._getPadBorderExtents(node,s);if(dojo.isSafari){if(dojo._isButtonTag(node)){var ns=node.style;if(_2ac>=0&&!ns.width){ns.width="4px";}if(_2ad>=0&&!ns.height){ns.height="4px";}}}var mb=d._getMarginExtents(node,s);if(_2ac>=0){_2ac=Math.max(_2ac-pb.w-mb.w,0);}if(_2ad>=0){_2ad=Math.max(_2ad-pb.h-mb.h,0);}d._setBox(node,_2aa,_2ab,_2ac,_2ad);};var _2b2={l:0,t:0,w:0,h:0};dojo.marginBox=function(node,box){var n=d.byId(node),s=gcs(n),b=box;return !b?d._getMarginBox(n,s):d._setMarginBox(n,b.l,b.t,b.w,b.h,s);};dojo.contentBox=function(node,box){var n=d.byId(node),s=gcs(n),b=box;return !b?d._getContentBox(n,s):d._setContentSize(n,b.w,b.h,s);};var _2bf=function(node,prop){if(!(node=(node||0).parentNode)){return 0;}var val,_2c3=0,_b=d.body();while(node&&node.style){if(gcs(node).position=="fixed"){return 0;}val=node[prop];if(val){_2c3+=val-0;if(node==_b){break;}}node=node.parentNode;}return _2c3;};dojo._docScroll=function(){var _b=d.body(),_w=d.global,de=d.doc.documentElement;return {y:(_w.pageYOffset||de.scrollTop||_b.scrollTop||0),x:(_w.pageXOffset||d._fixIeBiDiScrollLeft(de.scrollLeft)||_b.scrollLeft||0)};};dojo._isBodyLtr=function(){return !("_bodyLtr" in d)?d._bodyLtr=gcs(d.body()).direction=="ltr":d._bodyLtr;};dojo._getIeDocumentElementOffset=function(){var de=d.doc.documentElement;return (d.isIE>=7)?{x:de.getBoundingClientRect().left,y:de.getBoundingClientRect().top}:{x:d._isBodyLtr()||window.parent==window?de.clientLeft:de.offsetWidth-de.clientWidth-de.clientLeft,y:de.clientTop};};dojo._fixIeBiDiScrollLeft=function(_2c9){var dd=d.doc;if(d.isIE&&!dojo._isBodyLtr()){var de=dd.compatMode=="BackCompat"?dd.body:dd.documentElement;return _2c9+de.clientWidth-de.scrollWidth;}return _2c9;};dojo._abs=function(node,_2cd){var _2ce=node.ownerDocument;var ret={x:0,y:0};var db=d.body();if(d.isIE||(d.isFF>=3)){var _2d1=node.getBoundingClientRect();var cs;if(d.isFF){var dv=node.ownerDocument.defaultView;cs=dv.getComputedStyle(db.parentNode,null);}var _2d4=(d.isIE)?d._getIeDocumentElementOffset():{x:px(db.parentNode,cs.marginLeft),y:px(db.parentNode,cs.marginTop)};ret.x=_2d1.left-_2d4.x;ret.y=_2d1.top-_2d4.y;}else{if(node["offsetParent"]){var _2d5;if(d.isSafari&&(gcs(node).position=="absolute")&&(node.parentNode==db)){_2d5=db;}else{_2d5=db.parentNode;}var cs=gcs(node);var n=node;if(d.isOpera&&cs.position!="absolute"){n=n.offsetParent;}ret.x-=_2bf(n,"scrollLeft");ret.y-=_2bf(n,"scrollTop");var _2d7=node;do{var n=_2d7.offsetLeft;if(!d.isOpera||n>0){ret.x+=isNaN(n)?0:n;}var t=_2d7.offsetTop;ret.y+=isNaN(t)?0:t;var cs=gcs(_2d7);if(_2d7!=node){if(d.isSafari){ret.x+=px(_2d7,cs.borderLeftWidth);ret.y+=px(_2d7,cs.borderTopWidth);}else{if(d.isFF){ret.x+=2*px(_2d7,cs.borderLeftWidth);ret.y+=2*px(_2d7,cs.borderTopWidth);}}}if(d.isFF&&cs.position=="static"){var _2d9=_2d7.parentNode;while(_2d9!=_2d7.offsetParent){var pcs=gcs(_2d9);if(pcs.position=="static"){ret.x+=px(_2d7,pcs.borderLeftWidth);ret.y+=px(_2d7,pcs.borderTopWidth);}_2d9=_2d9.parentNode;}}_2d7=_2d7.offsetParent;}while((_2d7!=_2d5)&&_2d7);}else{if(node.x&&node.y){ret.x+=isNaN(node.x)?0:node.x;ret.y+=isNaN(node.y)?0:node.y;}}}if(_2cd){var _2db=d._docScroll();ret.y+=_2db.y;ret.x+=_2db.x;}return ret;};dojo.coords=function(node,_2dd){var n=d.byId(node),s=gcs(n),mb=d._getMarginBox(n,s);var abs=d._abs(n,_2dd);mb.x=abs.x;mb.y=abs.y;return mb;};var _2e2=d.isIE<8;var _2e3=function(name){switch(name.toLowerCase()){case "tabindex":return _2e2?"tabIndex":"tabindex";case "for":case "htmlfor":return _2e2?"htmlFor":"for";case "class":return d.isIE?"className":"class";default:return name;}};var _2e5={colspan:"colSpan",enctype:"enctype",frameborder:"frameborder",method:"method",rowspan:"rowSpan",scrolling:"scrolling",shape:"shape",span:"span",type:"type",valuetype:"valueType"};dojo.hasAttr=function(node,name){node=d.byId(node);var _2e8=_2e3(name);_2e8=_2e8=="htmlFor"?"for":_2e8;var attr=node.getAttributeNode&&node.getAttributeNode(_2e8);return attr?attr.specified:false;};var _2ea={};var _ctr=0;var _2ec=dojo._scopeName+"attrid";dojo.attr=function(node,name,_2ef){var args=arguments.length;if(args==2&&!d.isString(name)){for(var x in name){d.attr(node,x,name[x]);}return;}node=d.byId(node);name=_2e3(name);if(args==3){if(d.isFunction(_2ef)){var _2f2=d.attr(node,_2ec);if(!_2f2){_2f2=_ctr++;d.attr(node,_2ec,_2f2);}if(!_2ea[_2f2]){_2ea[_2f2]={};}var h=_2ea[_2f2][name];if(h){d.disconnect(h);}else{try{delete node[name];}catch(e){}}_2ea[_2f2][name]=d.connect(node,name,_2ef);}else{if((typeof _2ef=="boolean")||(name=="innerHTML")){node[name]=_2ef;}else{if((name=="style")&&(!d.isString(_2ef))){d.style(node,_2ef);}else{node.setAttribute(name,_2ef);}}}return;}else{var prop=_2e5[name.toLowerCase()];if(prop){return node[prop];}else{var _2f5=node[name];return (typeof _2f5=="boolean"||typeof _2f5=="function")?_2f5:(d.hasAttr(node,name)?node.getAttribute(name):null);}}};dojo.removeAttr=function(node,name){d.byId(node).removeAttribute(_2e3(name));};var _2f8="className";dojo.hasClass=function(node,_2fa){return ((" "+d.byId(node)[_2f8]+" ").indexOf(" "+_2fa+" ")>=0);};dojo.addClass=function(node,_2fc){node=d.byId(node);var cls=node[_2f8];if((" "+cls+" ").indexOf(" "+_2fc+" ")<0){node[_2f8]=cls+(cls?" ":"")+_2fc;}};dojo.removeClass=function(node,_2ff){node=d.byId(node);var t=d.trim((" "+node[_2f8]+" ").replace(" "+_2ff+" "," "));if(node[_2f8]!=t){node[_2f8]=t;}};dojo.toggleClass=function(node,_302,_303){if(_303===undefined){_303=!d.hasClass(node,_302);}d[_303?"addClass":"removeClass"](node,_302);};})();}if(!dojo._hasResource["dojo._base.NodeList"]){dojo._hasResource["dojo._base.NodeList"]=true;dojo.provide("dojo._base.NodeList");(function(){var d=dojo;var tnl=function(arr){arr.constructor=dojo.NodeList;dojo._mixin(arr,dojo.NodeList.prototype);return arr;};var _307=function(func,_309){return function(){var _a=arguments;var aa=d._toArray(_a,0,[null]);var s=this.map(function(i){aa[0]=i;return d[func].apply(d,aa);});return (_309||((_a.length>1)||!d.isString(_a[0])))?this:s;};};dojo.NodeList=function(){return tnl(Array.apply(null,arguments));};dojo.NodeList._wrap=tnl;dojo.extend(dojo.NodeList,{slice:function(){var a=d._toArray(arguments);return tnl(a.slice.apply(this,a));},splice:function(){var a=d._toArray(arguments);return tnl(a.splice.apply(this,a));},concat:function(){var a=d._toArray(arguments,0,[this]);return tnl(a.concat.apply([],a));},indexOf:function(_311,_312){return d.indexOf(this,_311,_312);},lastIndexOf:function(){return d.lastIndexOf.apply(d,d._toArray(arguments,0,[this]));},every:function(_313,_314){return d.every(this,_313,_314);},some:function(_315,_316){return d.some(this,_315,_316);},map:function(func,obj){return d.map(this,func,obj,d.NodeList);},forEach:function(_319,_31a){d.forEach(this,_319,_31a);return this;},coords:function(){return d.map(this,d.coords);},attr:_307("attr"),style:_307("style"),addClass:_307("addClass",true),removeClass:_307("removeClass",true),toggleClass:_307("toggleClass",true),connect:_307("connect",true),place:function(_31b,_31c){var item=d.query(_31b)[0];return this.forEach(function(i){d.place(i,item,_31c);});},orphan:function(_31f){return (_31f?d._filterQueryResult(this,_31f):this).forEach("if(item.parentNode){ item.parentNode.removeChild(item); }");},adopt:function(_320,_321){var item=this[0];return d.query(_320).forEach(function(ai){d.place(ai,item,_321||"last");});},query:function(_324){if(!_324){return this;}var ret=d.NodeList();this.forEach(function(item){ret=ret.concat(d.query(_324,item).filter(function(_327){return (_327!==undefined);}));});return ret;},filter:function(_328){var _329=this;var _a=arguments;var r=d.NodeList();var rp=function(t){if(t!==undefined){r.push(t);}};if(d.isString(_328)){_329=d._filterQueryResult(this,_a[0]);if(_a.length==1){return _329;}_a.shift();}d.forEach(d.filter(_329,_a[0],_a[1]),rp);return r;},addContent:function(_32e,_32f){var ta=d.doc.createElement("span");if(d.isString(_32e)){ta.innerHTML=_32e;}else{ta.appendChild(_32e);}if(_32f===undefined){_32f="last";}var ct=(_32f=="first"||_32f=="after")?"lastChild":"firstChild";this.forEach(function(item){var tn=ta.cloneNode(true);while(tn[ct]){d.place(tn[ct],item,_32f);}});return this;},empty:function(){return this.forEach("item.innerHTML='';");},instantiate:function(_334,_335){var c=d.isFunction(_334)?_334:d.getObject(_334);return this.forEach(function(i){new c(_335||{},i);});},at:function(){var nl=new dojo.NodeList();dojo.forEach(arguments,function(i){if(this[i]){nl.push(this[i]);}},this);return nl;}});d.forEach(["blur","focus","click","keydown","keypress","keyup","mousedown","mouseenter","mouseleave","mousemove","mouseout","mouseover","mouseup","submit","load","error"],function(evt){var _oe="on"+evt;d.NodeList.prototype[_oe]=function(a,b){return this.connect(_oe,a,b);};});})();}if(!dojo._hasResource["dojo._base.query"]){dojo._hasResource["dojo._base.query"]=true;dojo.provide("dojo._base.query");(function(){var d=dojo;var _33f=dojo.isIE?"children":"childNodes";var _340=false;var _341=function(_342){if(">~+".indexOf(_342.charAt(_342.length-1))>=0){_342+=" *";}_342+=" ";var ts=function(s,e){return d.trim(_342.slice(s,e));};var _346=[];var _347=-1;var _348=-1;var _349=-1;var _34a=-1;var _34b=-1;var inId=-1;var _34d=-1;var lc="";var cc="";var _350;var x=0;var ql=_342.length;var _353=null;var _cp=null;var _355=function(){if(_34d>=0){var tv=(_34d==x)?null:ts(_34d,x);_353[(">~+".indexOf(tv)<0)?"tag":"oper"]=tv;_34d=-1;}};var _357=function(){if(inId>=0){_353.id=ts(inId,x).replace(/\\/g,"");inId=-1;}};var _358=function(){if(_34b>=0){_353.classes.push(ts(_34b+1,x).replace(/\\/g,""));_34b=-1;}};var _359=function(){_357();_355();_358();};for(;lc=cc,cc=_342.charAt(x),x=0){if(cc=="]"){if(!_cp.attr){_cp.attr=ts(_347+1,x);}else{_cp.matchFor=ts((_349||_347+1),x);}var cmf=_cp.matchFor;if(cmf){if((cmf.charAt(0)=="\"")||(cmf.charAt(0)=="'")){_cp.matchFor=cmf.substring(1,cmf.length-1);}}_353.attrs.push(_cp);_cp=null;_347=_349=-1;}else{if(cc=="="){var _35b=("|~^$*".indexOf(lc)>=0)?lc:"";_cp.type=_35b+cc;_cp.attr=ts(_347+1,x-_35b.length);_349=x+1;}}}else{if(_348>=0){if(cc==")"){if(_34a>=0){_cp.value=ts(_348+1,x);}_34a=_348=-1;}}else{if(cc=="#"){_359();inId=x+1;}else{if(cc=="."){_359();_34b=x;}else{if(cc==":"){_359();_34a=x;}else{if(cc=="["){_359();_347=x;_cp={};}else{if(cc=="("){if(_34a>=0){_cp={name:ts(_34a+1,x),value:null};_353.pseudos.push(_cp);}_348=x;}else{if(cc==" "&&lc!=cc){_359();if(_34a>=0){_353.pseudos.push({name:ts(_34a+1,x)});}_353.hasLoops=(_353.pseudos.length||_353.attrs.length||_353.classes.length);_353.query=ts(_350,x);_353.otag=_353.tag=(_353["oper"])?null:(_353.tag||"*");if(_353.tag){_353.tag=_353.tag.toUpperCase();}_346.push(_353);_353=null;}}}}}}}}}return _346;};var _35c={"*=":function(attr,_35e){return "[contains(@"+attr+", '"+_35e+"')]";},"^=":function(attr,_360){return "[starts-with(@"+attr+", '"+_360+"')]";},"$=":function(attr,_362){return "[substring(@"+attr+", string-length(@"+attr+")-"+(_362.length-1)+")='"+_362+"']";},"~=":function(attr,_364){return "[contains(concat(' ',@"+attr+",' '), ' "+_364+" ')]";},"|=":function(attr,_366){return "[contains(concat(' ',@"+attr+",' '), ' "+_366+"-')]";},"=":function(attr,_368){return "[@"+attr+"='"+_368+"']";}};var _369=function(_36a,_36b,_36c,_36d){d.forEach(_36b.attrs,function(attr){var _36f;if(attr.type&&_36a[attr.type]){_36f=_36a[attr.type](attr.attr,attr.matchFor);}else{if(attr.attr.length){_36f=_36c(attr.attr);}}if(_36f){_36d(_36f);}});};var _370=function(_371){var _372=".";var _373=_341(d.trim(_371));while(_373.length){var tqp=_373.shift();var _375;var _376="";if(tqp.oper==">"){_375="/";tqp=_373.shift();}else{if(tqp.oper=="~"){_375="/following-sibling::";tqp=_373.shift();}else{if(tqp.oper=="+"){_375="/following-sibling::";_376="[position()=1]";tqp=_373.shift();}else{_375="//";}}}_372+=_375+tqp.tag+_376;if(tqp.id){_372+="[@id='"+tqp.id+"'][1]";}d.forEach(tqp.classes,function(cn){var cnl=cn.length;var _379=" ";if(cn.charAt(cnl-1)=="*"){_379="";cn=cn.substr(0,cnl-1);}_372+="[contains(concat(' ',@class,' '), ' "+cn+_379+"')]";});_369(_35c,tqp,function(_37a){return "[@"+_37a+"]";},function(_37b){_372+=_37b;});}return _372;};var _37c={};var _37d=function(path){if(_37c[path]){return _37c[path];}var doc=d.doc;var _380=_370(path);var tf=function(_382){var ret=[];var _384;var tdoc=doc;if(_382){tdoc=(_382.nodeType==9)?_382:_382.ownerDocument;}try{_384=tdoc.evaluate(_380,_382,null,XPathResult.ANY_TYPE,null);}catch(e){console.debug("failure in exprssion:",_380,"under:",_382);console.debug(e);}var _386=_384.iterateNext();while(_386){ret.push(_386);_386=_384.iterateNext();}return ret;};return _37c[path]=tf;};var _387={};var _388={};var _389=function(_38a,_38b){if(!_38a){return _38b;}if(!_38b){return _38a;}return function(){return _38a.apply(window,arguments)&&_38b.apply(window,arguments);};};var _38c=function(root){var ret=[];var te,x=0,tret=root[_33f];while((te=tret[x++])){if(te.nodeType==1){ret.push(te);}}return ret;};var _392=function(root,_394){var ret=[];var te=root;while(te=te.nextSibling){if(te.nodeType==1){ret.push(te);if(_394){break;}}}return ret;};var _397=function(_398,_399,_39a,idx){var nidx=idx+1;var _39d=(_399.length==nidx);var tqp=_399[idx];if(tqp.oper){var ecn=(tqp.oper==">")?_38c(_398):_392(_398,(tqp.oper=="+"));if(!ecn||!ecn.length){return;}nidx++;_39d=(_399.length==nidx);var tf=_3a1(_399[idx+1]);for(var x=0,ecnl=ecn.length,te;x=0);};},"^=":function(attr,_3c6){return function(elem){return (_3be(elem,attr).indexOf(_3c6)==0);};},"$=":function(attr,_3c9){var tval=" "+_3c9;return function(elem){var ea=" "+_3be(elem,attr);return (ea.lastIndexOf(_3c9)==(ea.length-_3c9.length));};},"~=":function(attr,_3ce){var tval=" "+_3ce+" ";return function(elem){var ea=" "+_3be(elem,attr)+" ";return (ea.indexOf(tval)>=0);};},"|=":function(attr,_3d3){var _3d4=" "+_3d3+"-";return function(elem){var ea=" "+(elem.getAttribute(attr,2)||"");return ((ea==_3d3)||(ea.indexOf(_3d4)==0));};},"=":function(attr,_3d8){return function(elem){return (_3be(elem,attr)==_3d8);};}};var _3da={"checked":function(name,_3dc){return function(elem){return !!d.attr(elem,"checked");};},"first-child":function(name,_3df){return function(elem){if(elem.nodeType!=1){return false;}var fc=elem.previousSibling;while(fc&&(fc.nodeType!=1)){fc=fc.previousSibling;}return (!fc);};},"last-child":function(name,_3e3){return function(elem){if(elem.nodeType!=1){return false;}var nc=elem.nextSibling;while(nc&&(nc.nodeType!=1)){nc=nc.nextSibling;}return (!nc);};},"empty":function(name,_3e7){return function(elem){var cn=elem.childNodes;var cnl=elem.childNodes.length;for(var x=cnl-1;x>=0;x--){var nt=cn[x].nodeType;if((nt==1)||(nt==3)){return false;}}return true;};},"contains":function(name,_3ee){return function(elem){if(_3ee.charAt(0)=="\""||_3ee.charAt(0)=="'"){_3ee=_3ee.substr(1,_3ee.length-2);}return (elem.innerHTML.indexOf(_3ee)>=0);};},"not":function(name,_3f1){var ntf=_3a1(_341(_3f1)[0]);return function(elem){return (!ntf(elem));};},"nth-child":function(name,_3f5){var pi=parseInt;if(_3f5=="odd"){_3f5="2n+1";}else{if(_3f5=="even"){_3f5="2n";}}if(_3f5.indexOf("n")!=-1){var _3f7=_3f5.split("n",2);var pred=_3f7[0]?(_3f7[0]=="-"?-1:pi(_3f7[0])):1;var idx=_3f7[1]?pi(_3f7[1]):0;var lb=0,ub=-1;if(pred>0){if(idx<0){idx=(idx%pred)&&(pred+(idx%pred));}else{if(idx>0){if(idx>=pred){lb=idx-idx%pred;}idx=idx%pred;}}}else{if(pred<0){pred*=-1;if(idx>0){ub=idx;idx=idx%pred;}}}if(pred>0){return function(elem){var i=_3b3(elem);return (i>=lb)&&(ub<0||i<=ub)&&((i%pred)==idx);};}else{_3f5=idx;}}var _3fe=pi(_3f5);return function(elem){return (_3b3(elem)==_3fe);};}};var _400=(d.isIE)?function(cond){var clc=cond.toLowerCase();return function(elem){return (_340?elem.getAttribute(cond):elem[cond]||elem[clc]);};}:function(cond){return function(elem){return (elem&&elem.getAttribute&&elem.hasAttribute(cond));};};var _3b2=function(_406){var _407=(_388[_406.query]||_387[_406.query]);if(_407){return _407;}var ff=null;if(_406.id){if(_406.tag!="*"){ff=_389(ff,function(elem){return (elem.tagName==_406[_340?"otag":"tag"]);});}}d.forEach(_406.classes,function(_40a,idx,arr){var _40d=_40a.charAt(_40a.length-1)=="*";if(_40d){_40a=_40a.substr(0,_40a.length-1);}var re=new RegExp("(?:^|\\s)"+_40a+(_40d?".*":"")+"(?:\\s|$)");ff=_389(ff,function(elem){return re.test(elem.className);});ff.count=idx;});d.forEach(_406.pseudos,function(_410){if(_3da[_410.name]){ff=_389(ff,_3da[_410.name](_410.name,_410.value));}});_369(_3c1,_406,_400,function(_411){ff=_389(ff,_411);});if(!ff){ff=function(){return true;};}return _388[_406.query]=ff;};var _412={};var _3a6=function(_413,root){var fHit=_412[_413.query];if(fHit){return fHit;}if(_413.id&&!_413.hasLoops&&!_413.tag){return _412[_413.query]=function(root){return [d.byId(_413.id)];};}var _417=_3b2(_413);var _418;if(_413.tag&&_413.id&&!_413.hasLoops){_418=function(root){var te=d.byId(_413.id,(root.ownerDocument||root));if(_417(te)){return [te];}};}else{var tret;if(!_413.hasLoops){_418=function(root){var ret=[];var te,x=0,tret=root.getElementsByTagName(_413[_340?"otag":"tag"]);while((te=tret[x++])){ret.push(te);}return ret;};}else{_418=function(root){var ret=[];var te,x=0,tret=root.getElementsByTagName(_413[_340?"otag":"tag"]);while((te=tret[x++])){if(_417(te)){ret.push(te);}}return ret;};}}return _412[_413.query]=_418;};var _424={};var _425={"*":d.isIE?function(root){return root.all;}:function(root){return root.getElementsByTagName("*");},"~":_392,"+":function(root){return _392(root,true);},">":_38c};var _429=function(_42a){var _42b=_341(d.trim(_42a));if(_42b.length==1){var tt=_3a6(_42b[0]);tt.nozip=true;return tt;}var sqf=function(root){var _42f=_42b.slice(0);var _430;if(_42f[0].oper==">"){_430=[root];}else{_430=_3a6(_42f.shift())(root);}return _3a7(_430,_42f);};return sqf;};var _431=((document["evaluate"]&&!d.isSafari)?function(_432,root){var _434=_432.split(" ");if((!_340)&&(document["evaluate"])&&(_432.indexOf(":")==-1)&&(_432.indexOf("+")==-1)){if(((_434.length>2)&&(_432.indexOf(">")==-1))||(_434.length>3)||(_432.indexOf("[")>=0)||((1==_434.length)&&(0<=_432.indexOf(".")))){return _37d(_432);}}return _429(_432);}:_429);var _435=function(_436){if(_425[_436]){return _425[_436];}if(0>_436.indexOf(",")){return _425[_436]=_431(_436);}else{var _437=_436.split(/\s*,\s*/);var tf=function(root){var _43a=0;var ret=[];var tp;while((tp=_437[_43a++])){ret=ret.concat(_431(tp,tp.indexOf(" "))(root));}return ret;};return _425[_436]=tf;}};var _43d=0;var _zip=function(arr){if(arr&&arr.nozip){return d.NodeList._wrap(arr);}var ret=new d.NodeList();if(!arr){return ret;}if(arr[0]){ret.push(arr[0]);}if(arr.length<2){return ret;}_43d++;if(d.isIE&&_340){var _441=_43d+"";arr[0].setAttribute("_zipIdx",_441);for(var x=1,te;te=arr[x];x++){if(arr[x].getAttribute("_zipIdx")!=_441){ret.push(te);}te.setAttribute("_zipIdx",_441);}}else{arr[0]["_zipIdx"]=_43d;for(var x=1,te;te=arr[x];x++){if(arr[x]["_zipIdx"]!=_43d){ret.push(te);}te["_zipIdx"]=_43d;}}return ret;};d.query=function(_444,root){if(_444.constructor==d.NodeList){return _444;}if(!d.isString(_444)){return new d.NodeList(_444);}if(d.isString(root)){root=d.byId(root);}root=root||d.doc;var od=root.ownerDocument||root.documentElement;_340=(root.contentType&&root.contentType=="application/xml")||(!!od)&&(d.isIE?od.xml:(root.xmlVersion||od.xmlVersion));return _zip(_435(_444)(root));};d.query.pseudos=_3da;d._filterQueryResult=function(_447,_448){var tnl=new d.NodeList();var ff=(_448)?_3a1(_341(_448)[0]):function(){return true;};for(var x=0,te;te=_447[x];x++){if(ff(te)){tnl.push(te);}}return tnl;};})();}if(!dojo._hasResource["dojo._base.xhr"]){dojo._hasResource["dojo._base.xhr"]=true;dojo.provide("dojo._base.xhr");(function(){var _d=dojo;function setValue(obj,name,_450){var val=obj[name];if(_d.isString(val)){obj[name]=[val,_450];}else{if(_d.isArray(val)){val.push(_450);}else{obj[name]=_450;}}};dojo.formToObject=function(_452){var ret={};var _454="file|submit|image|reset|button|";_d.forEach(dojo.byId(_452).elements,function(item){var _in=item.name;var type=(item.type||"").toLowerCase();if(_in&&type&&_454.indexOf(type)==-1&&!item.disabled){if(type=="radio"||type=="checkbox"){if(item.checked){setValue(ret,_in,item.value);}}else{if(item.multiple){ret[_in]=[];_d.query("option",item).forEach(function(opt){if(opt.selected){setValue(ret,_in,opt.value);}});}else{setValue(ret,_in,item.value);if(type=="image"){ret[_in+".x"]=ret[_in+".y"]=ret[_in].x=ret[_in].y=0;}}}}});return ret;};dojo.objectToQuery=function(map){var enc=encodeURIComponent;var _45b=[];var _45c={};for(var name in map){var _45e=map[name];if(_45e!=_45c[name]){var _45f=enc(name)+"=";if(_d.isArray(_45e)){for(var i=0;i<_45e.length;i++){_45b.push(_45f+enc(_45e[i]));}}else{_45b.push(_45f+enc(_45e));}}}return _45b.join("&");};dojo.formToQuery=function(_461){return _d.objectToQuery(_d.formToObject(_461));};dojo.formToJson=function(_462,_463){return _d.toJson(_d.formToObject(_462),_463);};dojo.queryToObject=function(str){var ret={};var qp=str.split("&");var dec=decodeURIComponent;_d.forEach(qp,function(item){if(item.length){var _469=item.split("=");var name=dec(_469.shift());var val=dec(_469.join("="));if(_d.isString(ret[name])){ret[name]=[ret[name]];}if(_d.isArray(ret[name])){ret[name].push(val);}else{ret[name]=val;}}});return ret;};dojo._blockAsync=false;dojo._contentHandlers={"text":function(xhr){return xhr.responseText;},"json":function(xhr){return _d.fromJson(xhr.responseText||null);},"json-comment-filtered":function(xhr){if(!dojo.config.useCommentedJson){console.warn("Consider using the standard mimetype:application/json."+" json-commenting can introduce security issues. To"+" decrease the chances of hijacking, use the standard the 'json' handler and"+" prefix your json with: {}&&\n"+"Use djConfig.useCommentedJson=true to turn off this message.");}var _46f=xhr.responseText;var _470=_46f.indexOf("/*");var _471=_46f.lastIndexOf("*/");if(_470==-1||_471==-1){throw new Error("JSON was not comment filtered");}return _d.fromJson(_46f.substring(_470+2,_471));},"javascript":function(xhr){return _d.eval(xhr.responseText);},"xml":function(xhr){var _474=xhr.responseXML;if(_d.isIE&&(!_474||_474.documentElement==null)){_d.forEach(["MSXML2","Microsoft","MSXML","MSXML3"],function(_475){try{var dom=new ActiveXObject(_475+".XMLDOM");dom.async=false;dom.loadXML(xhr.responseText);_474=dom;}catch(e){}});}return _474;}};dojo._contentHandlers["json-comment-optional"]=function(xhr){var _478=_d._contentHandlers;if(xhr.responseText&&xhr.responseText.indexOf("/*")!=-1){return _478["json-comment-filtered"](xhr);}else{return _478["json"](xhr);}};dojo._ioSetArgs=function(args,_47a,_47b,_47c){var _47d={args:args,url:args.url};var _47e=null;if(args.form){var form=_d.byId(args.form);var _480=form.getAttributeNode("action");_47d.url=_47d.url||(_480?_480.value:null);_47e=_d.formToObject(form);}var _481=[{}];if(_47e){_481.push(_47e);}if(args.content){_481.push(args.content);}if(args.preventCache){_481.push({"dojo.preventCache":new Date().valueOf()});}_47d.query=_d.objectToQuery(_d.mixin.apply(null,_481));_47d.handleAs=args.handleAs||"text";var d=new _d.Deferred(_47a);d.addCallbacks(_47b,function(_483){return _47c(_483,d);});var ld=args.load;if(ld&&_d.isFunction(ld)){d.addCallback(function(_485){return ld.call(args,_485,_47d);});}var err=args.error;if(err&&_d.isFunction(err)){d.addErrback(function(_487){return err.call(args,_487,_47d);});}var _488=args.handle;if(_488&&_d.isFunction(_488)){d.addBoth(function(_489){return _488.call(args,_489,_47d);});}d.ioArgs=_47d;return d;};var _48a=function(dfd){dfd.canceled=true;var xhr=dfd.ioArgs.xhr;var _at=typeof xhr.abort;if(_at=="function"||_at=="object"||_at=="unknown"){xhr.abort();}var err=dfd.ioArgs.error;if(!err){err=new Error("xhr cancelled");err.dojoType="cancel";}return err;};var _48f=function(dfd){var ret=_d._contentHandlers[dfd.ioArgs.handleAs](dfd.ioArgs.xhr);return (typeof ret=="undefined")?null:ret;};var _492=function(_493,dfd){console.debug(_493);return _493;};var _495=null;var _496=[];var _497=function(){var now=(new Date()).getTime();if(!_d._blockAsync){for(var i=0,tif;i<_496.length&&(tif=_496[i]);i++){var dfd=tif.dfd;var func=function(){if(!dfd||dfd.canceled||!tif.validCheck(dfd)){_496.splice(i--,1);}else{if(tif.ioCheck(dfd)){_496.splice(i--,1);tif.resHandle(dfd);}else{if(dfd.startTime){if(dfd.startTime+(dfd.ioArgs.args.timeout||0)0){setTimeout(_p,de);return _t;}_p();return _t;},_play:function(_4c4){var _t=this;_t._startTime=new Date().valueOf();if(_t._paused){_t._startTime-=_t.duration*_t._percent;}_t._endTime=_t._startTime+_t.duration;_t._active=true;_t._paused=false;var _4c6=_t.curve.getValue(_t._percent);if(!_t._percent){if(!_t._startRepeatCount){_t._startRepeatCount=_t.repeat;}_t._fire("onBegin",[_4c6]);}_t._fire("onPlay",[_4c6]);_t._cycle();return _t;},pause:function(){this._stopTimer();if(!this._active){return this;}this._paused=true;this._fire("onPause",[this.curve.getValue(this._percent)]);return this;},gotoPercent:function(_4c7,_4c8){this._stopTimer();this._active=this._paused=true;this._percent=_4c7;if(_4c8){this.play();}return this;},stop:function(_4c9){if(!this._timer){return this;}this._stopTimer();if(_4c9){this._percent=1;}this._fire("onStop",[this.curve.getValue(this._percent)]);this._active=this._paused=false;return this;},status:function(){if(this._active){return this._paused?"paused":"playing";}return "stopped";},_cycle:function(){var _t=this;if(_t._active){var curr=new Date().valueOf();var step=(curr-_t._startTime)/(_t._endTime-_t._startTime);if(step>=1){step=1;}_t._percent=step;if(_t.easing){step=_t.easing(step);}_t._fire("onAnimate",[_t.curve.getValue(step)]);if(_t._percent<1){_t._startTimer();}else{_t._active=false;if(_t.repeat>0){_t.repeat--;_t.play(null,true);}else{if(_t.repeat==-1){_t.play(null,true);}else{if(_t._startRepeatCount){_t.repeat=_t._startRepeatCount;_t._startRepeatCount=0;}}}_t._percent=0;_t._fire("onEnd");_t._stopTimer();}}return _t;}});var ctr=0;var _4ce=[];var _4cf={run:function(){}};var _4d0=null;dojo._Animation.prototype._startTimer=function(){if(!this._timer){this._timer=d.connect(_4cf,"run",this,"_cycle");ctr++;}if(!_4d0){_4d0=setInterval(d.hitch(_4cf,"run"),this.rate);}};dojo._Animation.prototype._stopTimer=function(){if(this._timer){d.disconnect(this._timer);this._timer=null;ctr--;}if(ctr<=0){clearInterval(_4d0);_4d0=null;ctr=0;}};var _4d1=(d.isIE)?function(node){var ns=node.style;if(!ns.width.length&&d.style(node,"width")=="auto"){ns.width="auto";}}:function(){};dojo._fade=function(args){args.node=d.byId(args.node);var _4d5=d.mixin({properties:{}},args);var _4d6=(_4d5.properties.opacity={});_4d6.start=!("start" in _4d5)?function(){return Number(d.style(_4d5.node,"opacity"));}:_4d5.start;_4d6.end=_4d5.end;var anim=d.animateProperty(_4d5);d.connect(anim,"beforeBegin",d.partial(_4d1,_4d5.node));return anim;};dojo.fadeIn=function(args){return d._fade(d.mixin({end:1},args));};dojo.fadeOut=function(args){return d._fade(d.mixin({end:0},args));};dojo._defaultEasing=function(n){return 0.5+((Math.sin((n+1.5)*Math.PI))/2);};var _4db=function(_4dc){this._properties=_4dc;for(var p in _4dc){var prop=_4dc[p];if(prop.start instanceof d.Color){prop.tempColor=new d.Color();}}this.getValue=function(r){var ret={};for(var p in this._properties){var prop=this._properties[p];var _4e3=prop.start;if(_4e3 instanceof d.Color){ret[p]=d.blendColors(_4e3,prop.end,r,prop.tempColor).toCss();}else{if(!d.isArray(_4e3)){ret[p]=((prop.end-_4e3)*r)+_4e3+(p!="opacity"?prop.units||"px":"");}}}return ret;};};dojo.animateProperty=function(args){args.node=d.byId(args.node);if(!args.easing){args.easing=d._defaultEasing;}var anim=new d._Animation(args);d.connect(anim,"beforeBegin",anim,function(){var pm={};for(var p in this.properties){if(p=="width"||p=="height"){this.node.display="block";}var prop=this.properties[p];prop=pm[p]=d.mixin({},(d.isObject(prop)?prop:{end:prop}));if(d.isFunction(prop.start)){prop.start=prop.start();}if(d.isFunction(prop.end)){prop.end=prop.end();}var _4e9=(p.toLowerCase().indexOf("color")>=0);function getStyle(node,p){var v=({height:node.offsetHeight,width:node.offsetWidth})[p];if(v!==undefined){return v;}v=d.style(node,p);return (p=="opacity")?Number(v):(_4e9?v:parseFloat(v));};if(!("end" in prop)){prop.end=getStyle(this.node,p);}else{if(!("start" in prop)){prop.start=getStyle(this.node,p);}}if(_4e9){prop.start=new d.Color(prop.start);prop.end=new d.Color(prop.end);}else{prop.start=(p=="opacity")?Number(prop.start):parseFloat(prop.start);}}this.curve=new _4db(pm);});d.connect(anim,"onAnimate",d.hitch(d,"style",anim.node));return anim;};dojo.anim=function(node,_4ee,_4ef,_4f0,_4f1,_4f2){return d.animateProperty({node:node,duration:_4ef||d._Animation.prototype.duration,properties:_4ee,easing:_4f0,onEnd:_4f1}).play(_4f2||0);};})();}if(!dojo._hasResource["dojo._base.browser"]){dojo._hasResource["dojo._base.browser"]=true;dojo.provide("dojo._base.browser");if(dojo.config.require){dojo.forEach(dojo.config.require,"dojo['require'](item);");}}if(!dojo._hasResource["dojo.i18n"]){dojo._hasResource["dojo.i18n"]=true;dojo.provide("dojo.i18n");dojo.i18n.getLocalization=function(_4f3,_4f4,_4f5){_4f5=dojo.i18n.normalizeLocale(_4f5);var _4f6=_4f5.split("-");var _4f7=[_4f3,"nls",_4f4].join(".");var _4f8=dojo._loadedModules[_4f7];if(_4f8){var _4f9;for(var i=_4f6.length;i>0;i--){var loc=_4f6.slice(0,i).join("_");if(_4f8[loc]){_4f9=_4f8[loc];break;}}if(!_4f9){_4f9=_4f8.ROOT;}if(_4f9){var _4fc=function(){};_4fc.prototype=_4f9;return new _4fc();}}throw new Error("Bundle not found: "+_4f4+" in "+_4f3+" , locale="+_4f5);};dojo.i18n.normalizeLocale=function(_4fd){var _4fe=_4fd?_4fd.toLowerCase():dojo.locale;if(_4fe=="root"){_4fe="ROOT";}return _4fe;};dojo.i18n._requireLocalization=function(_4ff,_500,_501,_502){var _503=dojo.i18n.normalizeLocale(_501);var _504=[_4ff,"nls",_500].join(".");var _505="";if(_502){var _506=_502.split(",");for(var i=0;i<_506.length;i++){if(_503["indexOf"](_506[i])==0){if(_506[i].length>_505.length){_505=_506[i];}}}if(!_505){_505="ROOT";}}var _508=_502?_505:_503;var _509=dojo._loadedModules[_504];var _50a=null;if(_509){if(dojo.config.localizationComplete&&_509._built){return;}var _50b=_508.replace(/-/g,"_");var _50c=_504+"."+_50b;_50a=dojo._loadedModules[_50c];}if(!_50a){_509=dojo["provide"](_504);var syms=dojo._getModuleSymbols(_4ff);var _50e=syms.concat("nls").join("/");var _50f;dojo.i18n._searchLocalePath(_508,_502,function(loc){var _511=loc.replace(/-/g,"_");var _512=_504+"."+_511;var _513=false;if(!dojo._loadedModules[_512]){dojo["provide"](_512);var _514=[_50e];if(loc!="ROOT"){_514.push(loc);}_514.push(_500);var _515=_514.join("/")+".js";_513=dojo._loadPath(_515,null,function(hash){var _517=function(){};_517.prototype=_50f;_509[_511]=new _517();for(var j in hash){_509[_511][j]=hash[j];}});}else{_513=true;}if(_513&&_509[_511]){_50f=_509[_511];}else{_509[_511]=_50f;}if(_502){return true;}});}if(_502&&_503!=_505){_509[_503.replace(/-/g,"_")]=_509[_505.replace(/-/g,"_")];}};(function(){var _519=dojo.config.extraLocale;if(_519){if(!_519 instanceof Array){_519=[_519];}var req=dojo.i18n._requireLocalization;dojo.i18n._requireLocalization=function(m,b,_51d,_51e){req(m,b,_51d,_51e);if(_51d){return;}for(var i=0;i<_519.length;i++){req(m,b,_519[i],_51e);}};}})();dojo.i18n._searchLocalePath=function(_520,down,_522){_520=dojo.i18n.normalizeLocale(_520);var _523=_520.split("-");var _524=[];for(var i=_523.length;i>0;i--){_524.push(_523.slice(0,i).join("-"));}_524.push(false);if(down){_524.reverse();}for(var j=_524.length-1;j>=0;j--){var loc=_524[j]||"ROOT";var stop=_522(loc);if(stop){break;}}};dojo.i18n._preloadLocalizations=function(_529,_52a){function preload(_52b){_52b=dojo.i18n.normalizeLocale(_52b);dojo.i18n._searchLocalePath(_52b,true,function(loc){for(var i=0;i<_52a.length;i++){if(_52a[i]==loc){dojo["require"](_529+"_"+loc);return true;}}return false;});};preload();var _52e=dojo.config.extraLocale||[];for(var i=0;i<_52e.length;i++){preload(_52e[i]);}};}if(!dojo._hasResource["dijit._base.focus"]){dojo._hasResource["dijit._base.focus"]=true;dojo.provide("dijit._base.focus");dojo.mixin(dijit,{_curFocus:null,_prevFocus:null,isCollapsed:function(){var _530=dojo.doc;if(_530.selection){var s=_530.selection;if(s.type=="Text"){return !s.createRange().htmlText.length;}else{return !s.createRange().length;}}else{var _532=dojo.global;var _533=_532.getSelection();if(dojo.isString(_533)){return !_533;}else{return _533.isCollapsed||!_533.toString();}}},getBookmark:function(){var _534,_535=dojo.doc.selection;if(_535){var _536=_535.createRange();if(_535.type.toUpperCase()=="CONTROL"){if(_536.length){_534=[];var i=0,len=_536.length;while(i=_554;i--){var _556=dijit.byId(_553[i]);if(_556){_556._focused=false;_556._hasBeenBlurred=true;if(_556._onBlur){_556._onBlur();}if(_556._setStateClass){_556._setStateClass();}dojo.publish("widgetBlur",[_556]);}}for(i=_554;i<_552.length;i++){_556=dijit.byId(_552[i]);if(_556){_556._focused=true;if(_556._onFocus){_556._onFocus();}if(_556._setStateClass){_556._setStateClass();}dojo.publish("widgetFocus",[_556]);}}}});dojo.addOnLoad(dijit.registerWin);}if(!dojo._hasResource["dijit._base.manager"]){dojo._hasResource["dijit._base.manager"]=true;dojo.provide("dijit._base.manager");dojo.declare("dijit.WidgetSet",null,{constructor:function(){this._hash={};},add:function(_557){if(this._hash[_557.id]){throw new Error("Tried to register widget with id=="+_557.id+" but that id is already registered");}this._hash[_557.id]=_557;},remove:function(id){delete this._hash[id];},forEach:function(func){for(var id in this._hash){func(this._hash[id]);}},filter:function(_55b){var res=new dijit.WidgetSet();this.forEach(function(_55d){if(_55b(_55d)){res.add(_55d);}});return res;},byId:function(id){return this._hash[id];},byClass:function(cls){return this.filter(function(_560){return _560.declaredClass==cls;});}});dijit.registry=new dijit.WidgetSet();dijit._widgetTypeCtr={};dijit.getUniqueId=function(_561){var id;do{id=_561+"_"+(_561 in dijit._widgetTypeCtr?++dijit._widgetTypeCtr[_561]:dijit._widgetTypeCtr[_561]=0);}while(dijit.byId(id));return id;};if(dojo.isIE){dojo.addOnWindowUnload(function(){dijit.registry.forEach(function(_563){_563.destroy();});});}dijit.byId=function(id){return (dojo.isString(id))?dijit.registry.byId(id):id;};dijit.byNode=function(node){return dijit.registry.byId(node.getAttribute("widgetId"));};dijit.getEnclosingWidget=function(node){while(node){if(node.getAttribute&&node.getAttribute("widgetId")){return dijit.registry.byId(node.getAttribute("widgetId"));}node=node.parentNode;}return null;};dijit._tabElements={area:true,button:true,input:true,object:true,select:true,textarea:true};dijit._isElementShown=function(elem){var _568=dojo.style(elem);return (_568.visibility!="hidden")&&(_568.visibility!="collapsed")&&(_568.display!="none")&&(dojo.attr(elem,"type")!="hidden");};dijit.isTabNavigable=function(elem){if(dojo.hasAttr(elem,"disabled")){return false;}var _56a=dojo.hasAttr(elem,"tabindex");var _56b=dojo.attr(elem,"tabindex");if(_56a&&_56b>=0){return true;}var name=elem.nodeName.toLowerCase();if(((name=="a"&&dojo.hasAttr(elem,"href"))||dijit._tabElements[name])&&(!_56a||_56b>=0)){return true;}return false;};dijit._getTabNavigable=function(root){var _56e,last,_570,_571,_572,_573;var _574=function(_575){dojo.query("> *",_575).forEach(function(_576){var _577=dijit._isElementShown(_576);if(_577&&dijit.isTabNavigable(_576)){var _578=dojo.attr(_576,"tabindex");if(!dojo.hasAttr(_576,"tabindex")||_578==0){if(!_56e){_56e=_576;}last=_576;}else{if(_578>0){if(!_570||_578<_571){_571=_578;_570=_576;}if(!_572||_578>=_573){_573=_578;_572=_576;}}}}if(_577&&_576.nodeName.toUpperCase()!="SELECT"){_574(_576);}});};if(dijit._isElementShown(root)){_574(root);}return {first:_56e,last:last,lowest:_570,highest:_572};};dijit.getFirstInTabbingOrder=function(root){var _57a=dijit._getTabNavigable(dojo.byId(root));return _57a.lowest?_57a.lowest:_57a.first;};dijit.getLastInTabbingOrder=function(root){var _57c=dijit._getTabNavigable(dojo.byId(root));return _57c.last?_57c.last:_57c.highest;};dijit.defaultDuration=dojo.config["defaultDuration"]||200;}if(!dojo._hasResource["dojo.AdapterRegistry"]){dojo._hasResource["dojo.AdapterRegistry"]=true;dojo.provide("dojo.AdapterRegistry");dojo.AdapterRegistry=function(_57d){this.pairs=[];this.returnWrappers=_57d||false;};dojo.extend(dojo.AdapterRegistry,{register:function(name,_57f,wrap,_581,_582){this.pairs[((_582)?"unshift":"push")]([name,_57f,wrap,_581]);},match:function(){for(var i=0;idew){minw=dew;maxw=dbw;}else{maxw=dew;minw=dbw;}var dbh=_589.body.clientHeight;if(dbh>deh){minh=deh;maxh=dbh;}else{maxh=deh;minh=dbh;}w=(maxw>_588.innerWidth)?minw:maxw;h=(maxh>_588.innerHeight)?minh:maxh;}else{if(!dojo.isOpera&&_588.innerWidth){w=_588.innerWidth;h=_588.innerHeight;}else{if(dojo.isIE&&de&&deh){w=dew;h=deh;}else{if(dojo.body().clientWidth){w=dojo.body().clientWidth;h=dojo.body().clientHeight;}}}}var _595=dojo._docScroll();return {w:w,h:h,l:_595.x,t:_595.y};};dijit.placeOnScreen=function(node,pos,_598,_599){var _59a=dojo.map(_598,function(_59b){return {corner:_59b,pos:pos};});return dijit._place(node,_59a);};dijit._place=function(node,_59d,_59e){var view=dijit.getViewport();if(!node.parentNode||String(node.parentNode.tagName).toLowerCase()!="body"){dojo.body().appendChild(node);}var best=null;dojo.some(_59d,function(_5a1){var _5a2=_5a1.corner;var pos=_5a1.pos;if(_59e){_59e(node,_5a1.aroundCorner,_5a2);}var _5a4=node.style;var _5a5=_5a4.display;var _5a6=_5a4.visibility;_5a4.visibility="hidden";_5a4.display="";var mb=dojo.marginBox(node);_5a4.display=_5a5;_5a4.visibility=_5a6;var _5a8=(_5a2.charAt(1)=="L"?pos.x:Math.max(view.l,pos.x-mb.w)),_5a9=(_5a2.charAt(0)=="T"?pos.y:Math.max(view.t,pos.y-mb.h)),endX=(_5a2.charAt(1)=="L"?Math.min(view.l+view.w,_5a8+mb.w):pos.x),endY=(_5a2.charAt(0)=="T"?Math.min(view.t+view.h,_5a9+mb.h):pos.y),_5ac=endX-_5a8,_5ad=endY-_5a9,_5ae=(mb.w-_5ac)+(mb.h-_5ad);if(best==null||_5ae0&&_5ce[pi].parent===_5ce[pi-1].widget;pi--){}return _5ce[pi];};_5dc.push(dojo.connect(_5d8,"onkeypress",this,function(evt){if(evt.charOrCode==dojo.keys.ESCAPE&&args.onCancel){dojo.stopEvent(evt);args.onCancel();}else{if(evt.charOrCode===dojo.keys.TAB){dojo.stopEvent(evt);var _5e0=_5dd();if(_5e0&&_5e0.onCancel){_5e0.onCancel();}}}}));if(_5d4.onCancel){_5dc.push(dojo.connect(_5d4,"onCancel",null,args.onCancel));}_5dc.push(dojo.connect(_5d4,_5d4.onExecute?"onExecute":"onChange",null,function(){var _5e1=_5dd();if(_5e1&&_5e1.onExecute){_5e1.onExecute();}}));_5ce.push({wrapper:_5d8,iframe:_5da,widget:_5d4,parent:args.parent,onExecute:args.onExecute,onCancel:args.onCancel,onClose:args.onClose,handlers:_5dc});if(_5d4.onOpen){_5d4.onOpen(best);}return best;};this.close=function(_5e2){while(dojo.some(_5ce,function(elem){return elem.widget==_5e2;})){var top=_5ce.pop(),_5e5=top.wrapper,_5e6=top.iframe,_5e7=top.widget,_5e8=top.onClose;if(_5e7.onClose){_5e7.onClose();}dojo.forEach(top.handlers,dojo.disconnect);if(!_5e7||!_5e7.domNode){return;}this.prepare(_5e7.domNode);_5e6.destroy();dojo._destroyElement(_5e5);if(_5e8){_5e8();}}};}();dijit._frames=new function(){var _5e9=[];this.pop=function(){var _5ea;if(_5e9.length){_5ea=_5e9.pop();_5ea.style.display="";}else{if(dojo.isIE){var burl=dojo.config["dojoBlankHtmlUrl"]||(dojo.moduleUrl("dojo","resources/blank.html")+"")||"javascript:\"\"";var html="");};_1.setInitialState=function(_1c){_7=createState(_5,_1c,_6);};_1.addToHistory=function(_1d){_b=[];var _1e=null;var url=null;if(!_a){if(dojo.config["useXDomain"]&&!dojo.config["dojoIframeHistoryUrl"]){console.warn("dojo.back: When using cross-domain Dojo builds,"+" please save iframe_history.html to your domain and set djConfig.dojoIframeHistoryUrl"+" to the path on your domain to iframe_history.html");}_a=window.frames["dj_history"];}if(!_9){_9=document.createElement("a");dojo.body().appendChild(_9);_9.style.display="none";}if(_1d["changeUrl"]){_1e=""+((_1d["changeUrl"]!==true)?_1d["changeUrl"]:(new Date()).getTime());if(_c.length==0&&_7.urlHash==_1e){_7=createState(url,_1d,_1e);return;}else{if(_c.length>0&&_c[_c.length-1].urlHash==_1e){_c[_c.length-1]=createState(url,_1d,_1e);return;}}_e=true;setTimeout(function(){setHash(_1e);_e=false;},1);_9.href=_1e;if(dojo.isIE){url=loadIframeHistory();var _20=_1d["back"]||_1d["backButton"]||_1d["handle"];var tcb=function(_22){if(getHash()!=""){setTimeout(function(){setHash(_1e);},1);}_20.apply(this,[_22]);};if(_1d["back"]){_1d.back=tcb;}else{if(_1d["backButton"]){_1d.backButton=tcb;}else{if(_1d["handle"]){_1d.handle=tcb;}}}var _23=_1d["forward"]||_1d["forwardButton"]||_1d["handle"];var tfw=function(_25){if(getHash()!=""){setHash(_1e);}if(_23){_23.apply(this,[_25]);}};if(_1d["forward"]){_1d.forward=tfw;}else{if(_1d["forwardButton"]){_1d.forwardButton=tfw;}else{if(_1d["handle"]){_1d.handle=tfw;}}}}else{if(!dojo.isIE){if(!_8){_8=setInterval(checkLocation,200);}}}}else{url=loadIframeHistory();}_c.push(createState(url,_1d,_1e));};_1._iframeLoaded=function(evt,_27){var _28=getUrlQuery(_27.href);if(_28==null){if(_c.length==1){handleBackButton();}return;}if(_d){_d=false;return;}if(_c.length>=2&&_28==getUrlQuery(_c[_c.length-2].url)){handleBackButton();}else{if(_b.length>0&&_28==getUrlQuery(_b[_b.length-1].url)){handleForwardButton();}}};})();}././@LongLink0000000000000000000000000000015400000000000011565 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dojo/number.jslibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dojo/nu0000644000000000000000000001573711360615646027255 0ustar /* Copyright (c) 2004-2008, The Dojo Foundation All Rights Reserved. Available via Academic Free License >= 2.1 OR the modified BSD license. see: http://dojotoolkit.org/license for details */ if(!dojo._hasResource["dojo.number"]){dojo._hasResource["dojo.number"]=true;dojo.provide("dojo.number");dojo.require("dojo.i18n");dojo.requireLocalization("dojo.cldr","number",null,"de,de-de,en,en-au,en-gb,en-us,es,es-es,fr,it,ja,ja-jp,ko,ko-kr,ROOT,pt,zh,zh-cn,zh-tw");dojo.require("dojo.string");dojo.require("dojo.regexp");dojo.number.format=function(_1,_2){_2=dojo.mixin({},_2||{});var _3=dojo.i18n.normalizeLocale(_2.locale);var _4=dojo.i18n.getLocalization("dojo.cldr","number",_3);_2.customs=_4;var _5=_2.pattern||_4[(_2.type||"decimal")+"Format"];if(isNaN(_1)){return null;}return dojo.number._applyPattern(_1,_5,_2);};dojo.number._numberPatternRE=/[#0,]*[#0](?:\.0*#*)?/;dojo.number._applyPattern=function(_6,_7,_8){_8=_8||{};var _9=_8.customs.group;var _a=_8.customs.decimal;var _b=_7.split(";");var _c=_b[0];_7=_b[(_6<0)?1:0]||("-"+_c);if(_7.indexOf("%")!=-1){_6*=100;}else{if(_7.indexOf("‰")!=-1){_6*=1000;}else{if(_7.indexOf("¤")!=-1){_9=_8.customs.currencyGroup||_9;_a=_8.customs.currencyDecimal||_a;_7=_7.replace(/\u00a4{1,3}/,function(_d){var _e=["symbol","currency","displayName"][_d.length-1];return _8[_e]||_8.currency||"";});}else{if(_7.indexOf("E")!=-1){throw new Error("exponential notation not supported");}}}}var _f=dojo.number._numberPatternRE;var _10=_c.match(_f);if(!_10){throw new Error("unable to find a number expression in pattern: "+_7);}if(_8.fractional===false){_8.places=0;}return _7.replace(_f,dojo.number._formatAbsolute(_6,_10[0],{decimal:_a,group:_9,places:_8.places,round:_8.round}));};dojo.number.round=function(_11,_12,_13){var _14=String(_11).split(".");var _15=(_14[1]&&_14[1].length)||0;if(_15>_12){var _16=Math.pow(10,_12);if(_13>0){_16*=10/_13;_12++;}_11=Math.round(_11*_16)/_16;_14=String(_11).split(".");_15=(_14[1]&&_14[1].length)||0;if(_15>_12){_14[1]=_14[1].substr(0,_12);_11=Number(_14.join("."));}}return _11;};dojo.number._formatAbsolute=function(_17,_18,_19){_19=_19||{};if(_19.places===true){_19.places=0;}if(_19.places===Infinity){_19.places=6;}var _1a=_18.split(".");var _1b=(_19.places>=0)?_19.places:(_1a[1]&&_1a[1].length)||0;if(!(_19.round<0)){_17=dojo.number.round(_17,_1b,_19.round);}var _1c=String(Math.abs(_17)).split(".");var _1d=_1c[1]||"";if(_19.places){var _1e=dojo.isString(_19.places)&&_19.places.indexOf(",");if(_1e){_19.places=_19.places.substring(_1e+1);}_1c[1]=dojo.string.pad(_1d.substr(0,_19.places),_19.places,"0",true);}else{if(_1a[1]&&_19.places!==0){var pad=_1a[1].lastIndexOf("0")+1;if(pad>_1d.length){_1c[1]=dojo.string.pad(_1d,pad,"0",true);}var _20=_1a[1].length;if(_20<_1d.length){_1c[1]=_1d.substr(0,_20);}}else{if(_1c[1]){_1c.pop();}}}var _21=_1a[0].replace(",","");pad=_21.indexOf("0");if(pad!=-1){pad=_21.length-pad;if(pad>_1c[0].length){_1c[0]=dojo.string.pad(_1c[0],pad);}if(_21.indexOf("#")==-1){_1c[0]=_1c[0].substr(_1c[0].length-pad);}}var _22=_1a[0].lastIndexOf(",");var _23,_24;if(_22!=-1){_23=_1a[0].length-_22-1;var _25=_1a[0].substr(0,_22);_22=_25.lastIndexOf(",");if(_22!=-1){_24=_25.length-_22-1;}}var _26=[];for(var _27=_1c[0];_27;){var off=_27.length-_23;_26.push((off>0)?_27.substr(off):_27);_27=(off>0)?_27.slice(0,off):"";if(_24){_23=_24;delete _24;}}_1c[0]=_26.reverse().join(_19.group||",");return _1c.join(_19.decimal||".");};dojo.number.regexp=function(_29){return dojo.number._parseInfo(_29).regexp;};dojo.number._parseInfo=function(_2a){_2a=_2a||{};var _2b=dojo.i18n.normalizeLocale(_2a.locale);var _2c=dojo.i18n.getLocalization("dojo.cldr","number",_2b);var _2d=_2a.pattern||_2c[(_2a.type||"decimal")+"Format"];var _2e=_2c.group;var _2f=_2c.decimal;var _30=1;if(_2d.indexOf("%")!=-1){_30/=100;}else{if(_2d.indexOf("‰")!=-1){_30/=1000;}else{var _31=_2d.indexOf("¤")!=-1;if(_31){_2e=_2c.currencyGroup||_2e;_2f=_2c.currencyDecimal||_2f;}}}var _32=_2d.split(";");if(_32.length==1){_32.push("-"+_32[0]);}var re=dojo.regexp.buildGroupRE(_32,function(_34){_34="(?:"+dojo.regexp.escapeString(_34,".")+")";return _34.replace(dojo.number._numberPatternRE,function(_35){var _36={signed:false,separator:_2a.strict?_2e:[_2e,""],fractional:_2a.fractional,decimal:_2f,exponent:false};var _37=_35.split(".");var _38=_2a.places;if(_37.length==1||_38===0){_36.fractional=false;}else{if(_38===undefined){_38=_2a.pattern?_37[1].lastIndexOf("0")+1:Infinity;}if(_38&&_2a.fractional==undefined){_36.fractional=true;}if(!_2a.places&&(_38<_37[1].length)){_38+=","+_37[1].length;}_36.places=_38;}var _39=_37[0].split(",");if(_39.length>1){_36.groupSize=_39.pop().length;if(_39.length>1){_36.groupSize2=_39.pop().length;}}return "("+dojo.number._realNumberRegexp(_36)+")";});},true);if(_31){re=re.replace(/([\s\xa0]*)(\u00a4{1,3})([\s\xa0]*)/g,function(_3a,_3b,_3c,_3d){var _3e=["symbol","currency","displayName"][_3c.length-1];var _3f=dojo.regexp.escapeString(_2a[_3e]||_2a.currency||"");_3b=_3b?"[\\s\\xa0]":"";_3d=_3d?"[\\s\\xa0]":"";if(!_2a.strict){if(_3b){_3b+="*";}if(_3d){_3d+="*";}return "(?:"+_3b+_3f+_3d+")?";}return _3b+_3f+_3d;});}return {regexp:re.replace(/[\xa0 ]/g,"[\\s\\xa0]"),group:_2e,decimal:_2f,factor:_30};};dojo.number.parse=function(_40,_41){var _42=dojo.number._parseInfo(_41);var _43=(new RegExp("^"+_42.regexp+"$")).exec(_40);if(!_43){return NaN;}var _44=_43[1];if(!_43[1]){if(!_43[2]){return NaN;}_44=_43[2];_42.factor*=-1;}_44=_44.replace(new RegExp("["+_42.group+"\\s\\xa0"+"]","g"),"").replace(_42.decimal,".");return Number(_44)*_42.factor;};dojo.number._realNumberRegexp=function(_45){_45=_45||{};if(!("places" in _45)){_45.places=Infinity;}if(typeof _45.decimal!="string"){_45.decimal=".";}if(!("fractional" in _45)||/^0/.test(_45.places)){_45.fractional=[true,false];}if(!("exponent" in _45)){_45.exponent=[true,false];}if(!("eSigned" in _45)){_45.eSigned=[true,false];}var _46=dojo.number._integerRegexp(_45);var _47=dojo.regexp.buildGroupRE(_45.fractional,function(q){var re="";if(q&&(_45.places!==0)){re="\\"+_45.decimal;if(_45.places==Infinity){re="(?:"+re+"\\d+)?";}else{re+="\\d{"+_45.places+"}";}}return re;},true);var _4a=dojo.regexp.buildGroupRE(_45.exponent,function(q){if(q){return "([eE]"+dojo.number._integerRegexp({signed:_45.eSigned})+")";}return "";});var _4c=_46+_47;if(_47){_4c="(?:(?:"+_4c+")|(?:"+_47+"))";}return _4c+_4a;};dojo.number._integerRegexp=function(_4d){_4d=_4d||{};if(!("signed" in _4d)){_4d.signed=[true,false];}if(!("separator" in _4d)){_4d.separator="";}else{if(!("groupSize" in _4d)){_4d.groupSize=3;}}var _4e=dojo.regexp.buildGroupRE(_4d.signed,function(q){return q?"[-+]":"";},true);var _50=dojo.regexp.buildGroupRE(_4d.separator,function(sep){if(!sep){return "(?:0|[1-9]\\d*)";}sep=dojo.regexp.escapeString(sep);if(sep==" "){sep="\\s";}else{if(sep==" "){sep="\\s\\xa0";}}var grp=_4d.groupSize,_53=_4d.groupSize2;if(_53){var _54="(?:0|[1-9]\\d{0,"+(_53-1)+"}(?:["+sep+"]\\d{"+_53+"})*["+sep+"]\\d{"+grp+"})";return ((grp-_53)>0)?"(?:"+_54+"|(?:0|[1-9]\\d{0,"+(grp-1)+"}))":_54;}return "(?:0|[1-9]\\d{0,"+(grp-1)+"}(?:["+sep+"]\\d{"+grp+"})*)";},true);return _4e+_50;};}././@LongLink0000000000000000000000000000015400000000000011565 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dojo/cookie.jslibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dojo/co0000644000000000000000000000215711360615644027222 0ustar /* Copyright (c) 2004-2008, The Dojo Foundation All Rights Reserved. Available via Academic Free License >= 2.1 OR the modified BSD license. see: http://dojotoolkit.org/license for details */ if(!dojo._hasResource["dojo.cookie"]){dojo._hasResource["dojo.cookie"]=true;dojo.provide("dojo.cookie");dojo.require("dojo.regexp");dojo.cookie=function(_1,_2,_3){var c=document.cookie;if(arguments.length==1){var _5=c.match(new RegExp("(?:^|; )"+dojo.regexp.escapeString(_1)+"=([^;]*)"));return _5?decodeURIComponent(_5[1]):undefined;}else{_3=_3||{};var _6=_3.expires;if(typeof _6=="number"){var d=new Date();d.setTime(d.getTime()+_6*24*60*60*1000);_6=_3.expires=d;}if(_6&&_6.toUTCString){_3.expires=_6.toUTCString();}_2=encodeURIComponent(_2);var _8=_1+"="+_2,_9;for(_9 in _3){_8+="; "+_9;var _a=_3[_9];if(_a!==true){_8+="="+_a;}}document.cookie=_8;}};dojo.cookie.isSupported=function(){if(!("cookieEnabled" in navigator)){this("__djCookieTest__","CookiesAllowed");navigator.cookieEnabled=this("__djCookieTest__")=="CookiesAllowed";if(navigator.cookieEnabled){this("__djCookieTest__","",{expires:-1});}}return navigator.cookieEnabled;};}././@LongLink0000000000000000000000000000015100000000000011562 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dojo/_base/libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dojo/_b0000755000000000000000000000000011360615644027172 5ustar ././@LongLink0000000000000000000000000000016300000000000011565 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dojo/_base/declare.jslibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dojo/_b0000644000000000000000000000532711360615634027202 0ustar /* Copyright (c) 2004-2008, The Dojo Foundation All Rights Reserved. Available via Academic Free License >= 2.1 OR the modified BSD license. see: http://dojotoolkit.org/license for details */ if(!dojo._hasResource["dojo._base.declare"]){dojo._hasResource["dojo._base.declare"]=true;dojo.provide("dojo._base.declare");dojo.require("dojo._base.lang");dojo.declare=function(_1,_2,_3){var dd=arguments.callee,_5;if(dojo.isArray(_2)){_5=_2;_2=_5.shift();}if(_5){dojo.forEach(_5,function(m){if(!m){throw (_1+": mixin #"+i+" is null");}_2=dd._delegate(_2,m);});}var _7=dd._delegate(_2);_3=_3||{};_7.extend(_3);dojo.extend(_7,{declaredClass:_1,_constructor:_3.constructor});_7.prototype.constructor=_7;return dojo.setObject(_1,_7);};dojo.mixin(dojo.declare,{_delegate:function(_8,_9){var bp=(_8||0).prototype,mp=(_9||0).prototype,dd=dojo.declare;var _d=dd._makeCtor();dojo.mixin(_d,{superclass:bp,mixin:mp,extend:dd._extend});if(_8){_d.prototype=dojo._delegate(bp);}dojo.extend(_d,dd._core,mp||0,{_constructor:null,preamble:null});_d.prototype.constructor=_d;_d.prototype.declaredClass=(bp||0).declaredClass+"_"+(mp||0).declaredClass;return _d;},_extend:function(_e){var i,fn;for(i in _e){if(dojo.isFunction(fn=_e[i])&&!0[i]){fn.nom=i;fn.ctor=this;}}dojo.extend(this,_e);},_makeCtor:function(){return function(){this._construct(arguments);};},_core:{_construct:function(_11){var c=_11.callee,s=c.superclass,ct=s&&s.constructor,m=c.mixin,mct=m&&m.constructor,a=_11,ii,fn;if(a[0]){if(((fn=a[0].preamble))){a=fn.apply(this,a)||a;}}if((fn=c.prototype.preamble)){a=fn.apply(this,a)||a;}if(ct&&ct.apply){ct.apply(this,a);}if(mct&&mct.apply){mct.apply(this,a);}if((ii=c.prototype._constructor)){ii.apply(this,_11);}if(this.constructor.prototype==c.prototype&&(ct=this.postscript)){ct.apply(this,_11);}},_findMixin:function(_1a){var c=this.constructor,p,m;while(c){p=c.superclass;m=c.mixin;if(m==_1a||(m instanceof _1a.constructor)){return p;}if(m&&m._findMixin&&(m=m._findMixin(_1a))){return m;}c=p&&p.constructor;}},_findMethod:function(_1e,_1f,_20,has){var p=_20,c,m,f;do{c=p.constructor;m=c.mixin;if(m&&(m=this._findMethod(_1e,_1f,m,has))){return m;}if((f=p[_1e])&&(has==(f==_1f))){return p;}p=c.superclass;}while(p);return !has&&(p=this._findMixin(_20))&&this._findMethod(_1e,_1f,p,has);},inherited:function(_26,_27,_28){var a=arguments;if(!dojo.isString(a[0])){_28=_27;_27=_26;_26=_27.callee.nom;}a=_28||_27;var c=_27.callee,p=this.constructor.prototype,fn,mp;if(this[_26]!=c||p[_26]==c){mp=(c.ctor||0).superclass||this._findMethod(_26,c,p,true);if(!mp){throw (this.declaredClass+": inherited method \""+_26+"\" mismatch");}p=this._findMethod(_26,c,mp,false);}fn=p&&p[_26];if(!fn){throw (mp.declaredClass+": inherited method \""+_26+"\" not found");}return fn.apply(this,a);}}});}././@LongLink0000000000000000000000000000016300000000000011565 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dojo/_base/connect.jslibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dojo/_b0000644000000000000000000000363111360615632027174 0ustar /* Copyright (c) 2004-2008, The Dojo Foundation All Rights Reserved. Available via Academic Free License >= 2.1 OR the modified BSD license. see: http://dojotoolkit.org/license for details */ if(!dojo._hasResource["dojo._base.connect"]){dojo._hasResource["dojo._base.connect"]=true;dojo.provide("dojo._base.connect");dojo.require("dojo._base.lang");dojo._listener={getDispatcher:function(){return function(){var ap=Array.prototype,c=arguments.callee,ls=c._listeners,t=c.target;var r=t&&t.apply(this,arguments);var _6;_6=[].concat(ls);for(var i in _6){if(!(i in ap)){_6[i].apply(this,arguments);}}return r;};},add:function(_8,_9,_a){_8=_8||dojo.global;var f=_8[_9];if(!f||!f._listeners){var d=dojo._listener.getDispatcher();d.target=f;d._listeners=[];f=_8[_9]=d;}return f._listeners.push(_a);},remove:function(_d,_e,_f){var f=(_d||dojo.global)[_e];if(f&&f._listeners&&_f--){delete f._listeners[_f];}}};dojo.connect=function(obj,_12,_13,_14,_15){var a=arguments,_17=[],i=0;_17.push(dojo.isString(a[0])?null:a[i++],a[i++]);var a1=a[i+1];_17.push(dojo.isString(a1)||dojo.isFunction(a1)?a[i++]:null,a[i++]);for(var l=a.length;i= 2.1 OR the modified BSD license. see: http://dojotoolkit.org/license for details */ if(!dojo._hasResource["dojo._base.fx"]){dojo._hasResource["dojo._base.fx"]=true;dojo.provide("dojo._base.fx");dojo.require("dojo._base.Color");dojo.require("dojo._base.connect");dojo.require("dojo._base.declare");dojo.require("dojo._base.lang");dojo.require("dojo._base.html");(function(){var d=dojo;dojo._Line=function(_2,_3){this.start=_2;this.end=_3;this.getValue=function(n){return ((this.end-this.start)*n)+this.start;};};d.declare("dojo._Animation",null,{constructor:function(_5){d.mixin(this,_5);if(d.isArray(this.curve)){this.curve=new d._Line(this.curve[0],this.curve[1]);}},duration:350,repeat:0,rate:10,_percent:0,_startRepeatCount:0,_fire:function(_6,_7){if(this[_6]){if(dojo.config.isDebug){this[_6].apply(this,_7||[]);}else{try{this[_6].apply(this,_7||[]);}catch(e){console.error("exception in animation handler for:",_6);console.error(e);}}}return this;},play:function(_8,_9){var _t=this;if(_9){_t._stopTimer();_t._active=_t._paused=false;_t._percent=0;}else{if(_t._active&&!_t._paused){return _t;}}_t._fire("beforeBegin");var de=_8||_t.delay;var _p=dojo.hitch(_t,"_play",_9);if(de>0){setTimeout(_p,de);return _t;}_p();return _t;},_play:function(_d){var _t=this;_t._startTime=new Date().valueOf();if(_t._paused){_t._startTime-=_t.duration*_t._percent;}_t._endTime=_t._startTime+_t.duration;_t._active=true;_t._paused=false;var _f=_t.curve.getValue(_t._percent);if(!_t._percent){if(!_t._startRepeatCount){_t._startRepeatCount=_t.repeat;}_t._fire("onBegin",[_f]);}_t._fire("onPlay",[_f]);_t._cycle();return _t;},pause:function(){this._stopTimer();if(!this._active){return this;}this._paused=true;this._fire("onPause",[this.curve.getValue(this._percent)]);return this;},gotoPercent:function(_10,_11){this._stopTimer();this._active=this._paused=true;this._percent=_10;if(_11){this.play();}return this;},stop:function(_12){if(!this._timer){return this;}this._stopTimer();if(_12){this._percent=1;}this._fire("onStop",[this.curve.getValue(this._percent)]);this._active=this._paused=false;return this;},status:function(){if(this._active){return this._paused?"paused":"playing";}return "stopped";},_cycle:function(){var _t=this;if(_t._active){var _14=new Date().valueOf();var _15=(_14-_t._startTime)/(_t._endTime-_t._startTime);if(_15>=1){_15=1;}_t._percent=_15;if(_t.easing){_15=_t.easing(_15);}_t._fire("onAnimate",[_t.curve.getValue(_15)]);if(_t._percent<1){_t._startTimer();}else{_t._active=false;if(_t.repeat>0){_t.repeat--;_t.play(null,true);}else{if(_t.repeat==-1){_t.play(null,true);}else{if(_t._startRepeatCount){_t.repeat=_t._startRepeatCount;_t._startRepeatCount=0;}}}_t._percent=0;_t._fire("onEnd");_t._stopTimer();}}return _t;}});var ctr=0;var _17=[];var _18={run:function(){}};var _19=null;dojo._Animation.prototype._startTimer=function(){if(!this._timer){this._timer=d.connect(_18,"run",this,"_cycle");ctr++;}if(!_19){_19=setInterval(d.hitch(_18,"run"),this.rate);}};dojo._Animation.prototype._stopTimer=function(){if(this._timer){d.disconnect(this._timer);this._timer=null;ctr--;}if(ctr<=0){clearInterval(_19);_19=null;ctr=0;}};var _1a=(d.isIE)?function(_1b){var ns=_1b.style;if(!ns.width.length&&d.style(_1b,"width")=="auto"){ns.width="auto";}}:function(){};dojo._fade=function(_1d){_1d.node=d.byId(_1d.node);var _1e=d.mixin({properties:{}},_1d);var _1f=(_1e.properties.opacity={});_1f.start=!("start" in _1e)?function(){return Number(d.style(_1e.node,"opacity"));}:_1e.start;_1f.end=_1e.end;var _20=d.animateProperty(_1e);d.connect(_20,"beforeBegin",d.partial(_1a,_1e.node));return _20;};dojo.fadeIn=function(_21){return d._fade(d.mixin({end:1},_21));};dojo.fadeOut=function(_22){return d._fade(d.mixin({end:0},_22));};dojo._defaultEasing=function(n){return 0.5+((Math.sin((n+1.5)*Math.PI))/2);};var _24=function(_25){this._properties=_25;for(var p in _25){var _27=_25[p];if(_27.start instanceof d.Color){_27.tempColor=new d.Color();}}this.getValue=function(r){var ret={};for(var p in this._properties){var _2b=this._properties[p];var _2c=_2b.start;if(_2c instanceof d.Color){ret[p]=d.blendColors(_2c,_2b.end,r,_2b.tempColor).toCss();}else{if(!d.isArray(_2c)){ret[p]=((_2b.end-_2c)*r)+_2c+(p!="opacity"?_2b.units||"px":"");}}}return ret;};};dojo.animateProperty=function(_2d){_2d.node=d.byId(_2d.node);if(!_2d.easing){_2d.easing=d._defaultEasing;}var _2e=new d._Animation(_2d);d.connect(_2e,"beforeBegin",_2e,function(){var pm={};for(var p in this.properties){if(p=="width"||p=="height"){this.node.display="block";}var _31=this.properties[p];_31=pm[p]=d.mixin({},(d.isObject(_31)?_31:{end:_31}));if(d.isFunction(_31.start)){_31.start=_31.start();}if(d.isFunction(_31.end)){_31.end=_31.end();}var _32=(p.toLowerCase().indexOf("color")>=0);function getStyle(_33,p){var v=({height:_33.offsetHeight,width:_33.offsetWidth})[p];if(v!==undefined){return v;}v=d.style(_33,p);return (p=="opacity")?Number(v):(_32?v:parseFloat(v));};if(!("end" in _31)){_31.end=getStyle(this.node,p);}else{if(!("start" in _31)){_31.start=getStyle(this.node,p);}}if(_32){_31.start=new d.Color(_31.start);_31.end=new d.Color(_31.end);}else{_31.start=(p=="opacity")?Number(_31.start):parseFloat(_31.start);}}this.curve=new _24(pm);});d.connect(_2e,"onAnimate",d.hitch(d,"style",_2e.node));return _2e;};dojo.anim=function(_36,_37,_38,_39,_3a,_3b){return d.animateProperty({node:_36,duration:_38||d._Animation.prototype.duration,properties:_37,easing:_39,onEnd:_3a}).play(_3b||0);};})();}././@LongLink0000000000000000000000000000016000000000000011562 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dojo/_base/html.jslibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dojo/_b0000644000000000000000000003044511360615636027203 0ustar /* Copyright (c) 2004-2008, The Dojo Foundation All Rights Reserved. Available via Academic Free License >= 2.1 OR the modified BSD license. see: http://dojotoolkit.org/license for details */ if(!dojo._hasResource["dojo._base.html"]){dojo._hasResource["dojo._base.html"]=true;dojo.require("dojo._base.lang");dojo.provide("dojo._base.html");try{document.execCommand("BackgroundImageCache",false,true);}catch(e){}if(dojo.isIE||dojo.isOpera){dojo.byId=function(id,_2){if(dojo.isString(id)){var _d=_2||dojo.doc;var te=_d.getElementById(id);if(te&&te.attributes.id.value==id){return te;}else{var _5=_d.all[id];if(!_5||!_5.length){return _5;}var i=0;while((te=_5[i++])){if(te.attributes.id.value==id){return te;}}}}else{return id;}};}else{dojo.byId=function(id,_8){return dojo.isString(id)?(_8||dojo.doc).getElementById(id):id;};}(function(){var d=dojo;var _a=null;dojo.addOnWindowUnload(function(){_a=null;});dojo._destroyElement=function(_b){_b=d.byId(_b);try{if(!_a||_a.ownerDocument!=_b.ownerDocument){_a=_b.ownerDocument.createElement("div");}_a.appendChild(_b.parentNode?_b.parentNode.removeChild(_b):_b);_a.innerHTML="";}catch(e){}};dojo.isDescendant=function(_c,_d){try{_c=d.byId(_c);_d=d.byId(_d);while(_c){if(_c===_d){return true;}_c=_c.parentNode;}}catch(e){}return false;};dojo.setSelectable=function(_e,_f){_e=d.byId(_e);if(d.isMozilla){_e.style.MozUserSelect=_f?"":"none";}else{if(d.isKhtml){_e.style.KhtmlUserSelect=_f?"auto":"none";}else{if(d.isIE){var v=(_e.unselectable=_f?"":"on");d.query("*",_e).forEach("item.unselectable = '"+v+"'");}}}};var _11=function(_12,ref){ref.parentNode.insertBefore(_12,ref);return true;};var _14=function(_15,ref){var pn=ref.parentNode;if(ref==pn.lastChild){pn.appendChild(_15);}else{return _11(_15,ref.nextSibling);}return true;};dojo.place=function(_18,_19,_1a){if(!_18||!_19){return false;}_18=d.byId(_18);_19=d.byId(_19);if(typeof _1a=="number"){var cn=_19.childNodes;if(!cn.length||cn.length<=_1a){_19.appendChild(_18);return true;}return _11(_18,_1a<=0?_19.firstChild:cn[_1a]);}switch(_1a){case "before":return _11(_18,_19);case "after":return _14(_18,_19);case "first":if(_19.firstChild){return _11(_18,_19.firstChild);}default:_19.appendChild(_18);return true;}};dojo.boxModel="content-box";if(d.isIE){var _1c=document.compatMode;d.boxModel=_1c=="BackCompat"||_1c=="QuirksMode"||d.isIE<6?"border-box":"content-box";}var gcs;if(d.isSafari){gcs=function(_1e){var s;if(_1e instanceof HTMLElement){var dv=_1e.ownerDocument.defaultView;s=dv.getComputedStyle(_1e,null);if(!s&&_1e.style){_1e.style.display="";s=dv.getComputedStyle(_1e,null);}}return s||{};};}else{if(d.isIE){gcs=function(_21){return _21.nodeType==1?_21.currentStyle:{};};}else{gcs=function(_22){return _22 instanceof HTMLElement?_22.ownerDocument.defaultView.getComputedStyle(_22,null):{};};}}dojo.getComputedStyle=gcs;if(!d.isIE){dojo._toPixelValue=function(_23,_24){return parseFloat(_24)||0;};}else{dojo._toPixelValue=function(_25,_26){if(!_26){return 0;}if(_26=="medium"){return 4;}if(_26.slice&&(_26.slice(-2)=="px")){return parseFloat(_26);}with(_25){var _27=style.left;var _28=runtimeStyle.left;runtimeStyle.left=currentStyle.left;try{style.left=_26;_26=style.pixelLeft;}catch(e){_26=0;}style.left=_27;runtimeStyle.left=_28;}return _26;};}var px=d._toPixelValue;var _2a="DXImageTransform.Microsoft.Alpha";var af=function(n,f){try{return n.filters.item(_2a);}catch(e){return f?{}:null;}};dojo._getOpacity=d.isIE?function(_2e){try{return af(_2e).Opacity/100;}catch(e){return 1;}}:function(_2f){return gcs(_2f).opacity;};dojo._setOpacity=d.isIE?function(_30,_31){var ov=_31*100;_30.style.zoom=1;af(_30,1).Enabled=(_31==1?false:true);if(!af(_30)){_30.style.filter+=" progid:"+_2a+"(Opacity="+ov+")";}else{af(_30,1).Opacity=ov;}if(_30.nodeName.toLowerCase()=="tr"){d.query("> td",_30).forEach(function(i){d._setOpacity(i,_31);});}return _31;}:function(_34,_35){return _34.style.opacity=_35;};var _36={left:true,top:true};var _37=/margin|padding|width|height|max|min|offset/;var _38=function(_39,_3a,_3b){_3a=_3a.toLowerCase();if(d.isIE){if(_3b=="auto"){if(_3a=="height"){return _39.offsetHeight;}if(_3a=="width"){return _39.offsetWidth;}}if(_3a=="fontweight"){switch(_3b){case 700:return "bold";case 400:default:return "normal";}}}if(!(_3a in _36)){_36[_3a]=_37.test(_3a);}return _36[_3a]?px(_39,_3b):_3b;};var _3c=d.isIE?"styleFloat":"cssFloat";var _3d={"cssFloat":_3c,"styleFloat":_3c,"float":_3c};dojo.style=function(_3e,_3f,_40){var n=d.byId(_3e),_42=arguments.length,op=(_3f=="opacity");_3f=_3d[_3f]||_3f;if(_42==3){return op?d._setOpacity(n,_40):n.style[_3f]=_40;}if(_42==2&&op){return d._getOpacity(n);}var s=gcs(n);if(_42==2&&!d.isString(_3f)){for(var x in _3f){d.style(_3e,x,_3f[x]);}return s;}return (_42==1)?s:_38(n,_3f,s[_3f]||n.style[_3f]);};dojo._getPadExtents=function(n,_47){var s=_47||gcs(n),l=px(n,s.paddingLeft),t=px(n,s.paddingTop);return {l:l,t:t,w:l+px(n,s.paddingRight),h:t+px(n,s.paddingBottom)};};dojo._getBorderExtents=function(n,_4c){var ne="none",s=_4c||gcs(n),bl=(s.borderLeftStyle!=ne?px(n,s.borderLeftWidth):0),bt=(s.borderTopStyle!=ne?px(n,s.borderTopWidth):0);return {l:bl,t:bt,w:bl+(s.borderRightStyle!=ne?px(n,s.borderRightWidth):0),h:bt+(s.borderBottomStyle!=ne?px(n,s.borderBottomWidth):0)};};dojo._getPadBorderExtents=function(n,_52){var s=_52||gcs(n),p=d._getPadExtents(n,s),b=d._getBorderExtents(n,s);return {l:p.l+b.l,t:p.t+b.t,w:p.w+b.w,h:p.h+b.h};};dojo._getMarginExtents=function(n,_57){var s=_57||gcs(n),l=px(n,s.marginLeft),t=px(n,s.marginTop),r=px(n,s.marginRight),b=px(n,s.marginBottom);if(d.isSafari&&(s.position!="absolute")){r=l;}return {l:l,t:t,w:l+r,h:t+b};};dojo._getMarginBox=function(_5d,_5e){var s=_5e||gcs(_5d),me=d._getMarginExtents(_5d,s);var l=_5d.offsetLeft-me.l,t=_5d.offsetTop-me.t,p=_5d.parentNode;if(d.isMoz){var sl=parseFloat(s.left),st=parseFloat(s.top);if(!isNaN(sl)&&!isNaN(st)){l=sl,t=st;}else{if(p&&p.style){var pcs=gcs(p);if(pcs.overflow!="visible"){var be=d._getBorderExtents(p,pcs);l+=be.l,t+=be.t;}}}}else{if(d.isOpera){if(p){var be=d._getBorderExtents(p);l-=be.l;t-=be.t;}}}return {l:l,t:t,w:_5d.offsetWidth+me.w,h:_5d.offsetHeight+me.h};};dojo._getContentBox=function(_68,_69){var s=_69||gcs(_68),pe=d._getPadExtents(_68,s),be=d._getBorderExtents(_68,s),w=_68.clientWidth,h;if(!w){w=_68.offsetWidth,h=_68.offsetHeight;}else{h=_68.clientHeight,be.w=be.h=0;}if(d.isOpera){pe.l+=be.l;pe.t+=be.t;}return {l:pe.l,t:pe.t,w:w-pe.w-be.w,h:h-pe.h-be.h};};dojo._getBorderBox=function(_6f,_70){var s=_70||gcs(_6f),pe=d._getPadExtents(_6f,s),cb=d._getContentBox(_6f,s);return {l:cb.l-pe.l,t:cb.t-pe.t,w:cb.w+pe.w,h:cb.h+pe.h};};dojo._setBox=function(_74,l,t,w,h,u){u=u||"px";var s=_74.style;if(!isNaN(l)){s.left=l+u;}if(!isNaN(t)){s.top=t+u;}if(w>=0){s.width=w+u;}if(h>=0){s.height=h+u;}};dojo._isButtonTag=function(_7b){return _7b.tagName=="BUTTON"||_7b.tagName=="INPUT"&&_7b.getAttribute("type").toUpperCase()=="BUTTON";};dojo._usesBorderBox=function(_7c){var n=_7c.tagName;return d.boxModel=="border-box"||n=="TABLE"||dojo._isButtonTag(_7c);};dojo._setContentSize=function(_7e,_7f,_80,_81){if(d._usesBorderBox(_7e)){var pb=d._getPadBorderExtents(_7e,_81);if(_7f>=0){_7f+=pb.w;}if(_80>=0){_80+=pb.h;}}d._setBox(_7e,NaN,NaN,_7f,_80);};dojo._setMarginBox=function(_83,_84,_85,_86,_87,_88){var s=_88||gcs(_83);var bb=d._usesBorderBox(_83),pb=bb?_8c:d._getPadBorderExtents(_83,s);if(dojo.isSafari){if(dojo._isButtonTag(_83)){var ns=_83.style;if(_86>=0&&!ns.width){ns.width="4px";}if(_87>=0&&!ns.height){ns.height="4px";}}}var mb=d._getMarginExtents(_83,s);if(_86>=0){_86=Math.max(_86-pb.w-mb.w,0);}if(_87>=0){_87=Math.max(_87-pb.h-mb.h,0);}d._setBox(_83,_84,_85,_86,_87);};var _8c={l:0,t:0,w:0,h:0};dojo.marginBox=function(_8f,box){var n=d.byId(_8f),s=gcs(n),b=box;return !b?d._getMarginBox(n,s):d._setMarginBox(n,b.l,b.t,b.w,b.h,s);};dojo.contentBox=function(_94,box){var n=d.byId(_94),s=gcs(n),b=box;return !b?d._getContentBox(n,s):d._setContentSize(n,b.w,b.h,s);};var _99=function(_9a,_9b){if(!(_9a=(_9a||0).parentNode)){return 0;}var val,_9d=0,_b=d.body();while(_9a&&_9a.style){if(gcs(_9a).position=="fixed"){return 0;}val=_9a[_9b];if(val){_9d+=val-0;if(_9a==_b){break;}}_9a=_9a.parentNode;}return _9d;};dojo._docScroll=function(){var _b=d.body(),_w=d.global,de=d.doc.documentElement;return {y:(_w.pageYOffset||de.scrollTop||_b.scrollTop||0),x:(_w.pageXOffset||d._fixIeBiDiScrollLeft(de.scrollLeft)||_b.scrollLeft||0)};};dojo._isBodyLtr=function(){return !("_bodyLtr" in d)?d._bodyLtr=gcs(d.body()).direction=="ltr":d._bodyLtr;};dojo._getIeDocumentElementOffset=function(){var de=d.doc.documentElement;return (d.isIE>=7)?{x:de.getBoundingClientRect().left,y:de.getBoundingClientRect().top}:{x:d._isBodyLtr()||window.parent==window?de.clientLeft:de.offsetWidth-de.clientWidth-de.clientLeft,y:de.clientTop};};dojo._fixIeBiDiScrollLeft=function(_a3){var dd=d.doc;if(d.isIE&&!dojo._isBodyLtr()){var de=dd.compatMode=="BackCompat"?dd.body:dd.documentElement;return _a3+de.clientWidth-de.scrollWidth;}return _a3;};dojo._abs=function(_a6,_a7){var _a8=_a6.ownerDocument;var ret={x:0,y:0};var db=d.body();if(d.isIE||(d.isFF>=3)){var _ab=_a6.getBoundingClientRect();var cs;if(d.isFF){var dv=_a6.ownerDocument.defaultView;cs=dv.getComputedStyle(db.parentNode,null);}var _ae=(d.isIE)?d._getIeDocumentElementOffset():{x:px(db.parentNode,cs.marginLeft),y:px(db.parentNode,cs.marginTop)};ret.x=_ab.left-_ae.x;ret.y=_ab.top-_ae.y;}else{if(_a6["offsetParent"]){var _af;if(d.isSafari&&(gcs(_a6).position=="absolute")&&(_a6.parentNode==db)){_af=db;}else{_af=db.parentNode;}var cs=gcs(_a6);var n=_a6;if(d.isOpera&&cs.position!="absolute"){n=n.offsetParent;}ret.x-=_99(n,"scrollLeft");ret.y-=_99(n,"scrollTop");var _b1=_a6;do{var n=_b1.offsetLeft;if(!d.isOpera||n>0){ret.x+=isNaN(n)?0:n;}var t=_b1.offsetTop;ret.y+=isNaN(t)?0:t;var cs=gcs(_b1);if(_b1!=_a6){if(d.isSafari){ret.x+=px(_b1,cs.borderLeftWidth);ret.y+=px(_b1,cs.borderTopWidth);}else{if(d.isFF){ret.x+=2*px(_b1,cs.borderLeftWidth);ret.y+=2*px(_b1,cs.borderTopWidth);}}}if(d.isFF&&cs.position=="static"){var _b3=_b1.parentNode;while(_b3!=_b1.offsetParent){var pcs=gcs(_b3);if(pcs.position=="static"){ret.x+=px(_b1,pcs.borderLeftWidth);ret.y+=px(_b1,pcs.borderTopWidth);}_b3=_b3.parentNode;}}_b1=_b1.offsetParent;}while((_b1!=_af)&&_b1);}else{if(_a6.x&&_a6.y){ret.x+=isNaN(_a6.x)?0:_a6.x;ret.y+=isNaN(_a6.y)?0:_a6.y;}}}if(_a7){var _b5=d._docScroll();ret.y+=_b5.y;ret.x+=_b5.x;}return ret;};dojo.coords=function(_b6,_b7){var n=d.byId(_b6),s=gcs(n),mb=d._getMarginBox(n,s);var abs=d._abs(n,_b7);mb.x=abs.x;mb.y=abs.y;return mb;};var _bc=d.isIE<8;var _bd=function(_be){switch(_be.toLowerCase()){case "tabindex":return _bc?"tabIndex":"tabindex";case "for":case "htmlfor":return _bc?"htmlFor":"for";case "class":return d.isIE?"className":"class";default:return _be;}};var _bf={colspan:"colSpan",enctype:"enctype",frameborder:"frameborder",method:"method",rowspan:"rowSpan",scrolling:"scrolling",shape:"shape",span:"span",type:"type",valuetype:"valueType"};dojo.hasAttr=function(_c0,_c1){_c0=d.byId(_c0);var _c2=_bd(_c1);_c2=_c2=="htmlFor"?"for":_c2;var _c3=_c0.getAttributeNode&&_c0.getAttributeNode(_c2);return _c3?_c3.specified:false;};var _c4={};var _c5=0;var _c6=dojo._scopeName+"attrid";dojo.attr=function(_c7,_c8,_c9){var _ca=arguments.length;if(_ca==2&&!d.isString(_c8)){for(var x in _c8){d.attr(_c7,x,_c8[x]);}return;}_c7=d.byId(_c7);_c8=_bd(_c8);if(_ca==3){if(d.isFunction(_c9)){var _cc=d.attr(_c7,_c6);if(!_cc){_cc=_c5++;d.attr(_c7,_c6,_cc);}if(!_c4[_cc]){_c4[_cc]={};}var h=_c4[_cc][_c8];if(h){d.disconnect(h);}else{try{delete _c7[_c8];}catch(e){}}_c4[_cc][_c8]=d.connect(_c7,_c8,_c9);}else{if((typeof _c9=="boolean")||(_c8=="innerHTML")){_c7[_c8]=_c9;}else{if((_c8=="style")&&(!d.isString(_c9))){d.style(_c7,_c9);}else{_c7.setAttribute(_c8,_c9);}}}return;}else{var _ce=_bf[_c8.toLowerCase()];if(_ce){return _c7[_ce];}else{var _cf=_c7[_c8];return (typeof _cf=="boolean"||typeof _cf=="function")?_cf:(d.hasAttr(_c7,_c8)?_c7.getAttribute(_c8):null);}}};dojo.removeAttr=function(_d0,_d1){d.byId(_d0).removeAttribute(_bd(_d1));};var _d2="className";dojo.hasClass=function(_d3,_d4){return ((" "+d.byId(_d3)[_d2]+" ").indexOf(" "+_d4+" ")>=0);};dojo.addClass=function(_d5,_d6){_d5=d.byId(_d5);var cls=_d5[_d2];if((" "+cls+" ").indexOf(" "+_d6+" ")<0){_d5[_d2]=cls+(cls?" ":"")+_d6;}};dojo.removeClass=function(_d8,_d9){_d8=d.byId(_d8);var t=d.trim((" "+_d8[_d2]+" ").replace(" "+_d9+" "," "));if(_d8[_d2]!=t){_d8[_d2]=t;}};dojo.toggleClass=function(_db,_dc,_dd){if(_dd===undefined){_dd=!d.hasClass(_db,_dc);}d[_dd?"addClass":"removeClass"](_db,_dc);};})();}././@LongLink0000000000000000000000000000016100000000000011563 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dojo/_base/_loader/libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dojo/_b0000755000000000000000000000000011360615642027170 5ustar ././@LongLink0000000000000000000000000000020100000000000011556 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dojo/_base/_loader/hostenv_rhino.jslibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dojo/_b0000644000000000000000000000664511360615636027210 0ustar /* Copyright (c) 2004-2008, The Dojo Foundation All Rights Reserved. Available via Academic Free License >= 2.1 OR the modified BSD license. see: http://dojotoolkit.org/license for details */ if(dojo.config["baseUrl"]){dojo.baseUrl=dojo.config["baseUrl"];}else{dojo.baseUrl="./";}dojo.locale=dojo.locale||String(java.util.Locale.getDefault().toString().replace("_","-").toLowerCase());dojo._name="rhino";dojo.isRhino=true;if(typeof print=="function"){console.debug=print;}if(typeof dojo["byId"]=="undefined"){dojo.byId=function(id,_2){if(id&&(typeof id=="string"||id instanceof String)){if(!_2){_2=document;}return _2.getElementById(id);}return id;};}dojo._loadUri=function(_3,cb){try{var _5=(new java.io.File(_3)).exists();if(!_5){try{var _6=(new java.net.URL(_3)).openStream();_6.close();}catch(e){return false;}}if(cb){var _7=(_5?readText:readUri)(_3,"UTF-8");cb(eval("("+_7+")"));}else{load(_3);}return true;}catch(e){console.debug("rhino load('"+_3+"') failed. Exception: "+e);return false;}};dojo.exit=function(_8){quit(_8);};dojo._rhinoCurrentScriptViaJava=function(_9){var _a=Packages.org.mozilla.javascript.Context.getCurrentContext().getOptimizationLevel();var _b=new java.io.CharArrayWriter();var pw=new java.io.PrintWriter(_b);var _d=new java.lang.Exception();var s=_b.toString();var _f=s.match(/[^\(]*\.js\)/gi);if(!_f){throw Error("cannot parse printStackTrace output: "+s);}var _10=((typeof _9!="undefined")&&(_9))?_f[_9+1]:_f[_f.length-1];_10=_f[3];if(!_10){_10=_f[1];}if(!_10){throw Error("could not find js file in printStackTrace output: "+s);}return _10;};function readText(_11,_12){_12=_12||"utf-8";var jf=new java.io.File(_11);var is=new java.io.FileInputStream(jf);return dj_readInputStream(is,_12);};function readUri(uri,_16){var _17=(new java.net.URL(uri)).openConnection();_16=_16||_17.getContentEncoding()||"utf-8";var is=_17.getInputStream();return dj_readInputStream(is,_16);};function dj_readInputStream(is,_1a){var _1b=new java.io.BufferedReader(new java.io.InputStreamReader(is,_1a));try{var sb=new java.lang.StringBuffer();var _1d="";while((_1d=_1b.readLine())!==null){sb.append(_1d);sb.append(java.lang.System.getProperty("line.separator"));}return sb.toString();}finally{_1b.close();}};if((!dojo.config.libraryScriptUri)||(!dojo.config.libraryScriptUri.length)){try{dojo.config.libraryScriptUri=dojo._rhinoCurrentScriptViaJava(1);}catch(e){if(dojo.config["isDebug"]){print("\n");print("we have no idea where Dojo is located.");print("Please try loading rhino in a non-interpreted mode or set a");print("\n\tdjConfig.libraryScriptUri\n");print("Setting the dojo path to './'");print("This is probably wrong!");print("\n");print("Dojo will try to load anyway");}dojo.config.libraryScriptUri="./";}}dojo.doc=typeof (document)!="undefined"?document:null;dojo.body=function(){return document.body;};try{setTimeout;clearTimeout;}catch(e){dojo._timeouts=[];function clearTimeout(idx){if(!dojo._timeouts[idx]){return;}dojo._timeouts[idx].stop();};function setTimeout(_1f,_20){var def={sleepTime:_20,hasSlept:false,run:function(){if(!this.hasSlept){this.hasSlept=true;java.lang.Thread.currentThread().sleep(this.sleepTime);}try{_1f();}catch(e){console.debug("Error running setTimeout thread:"+e);}}};var _22=new java.lang.Runnable(def);var _23=new java.lang.Thread(_22);_23.start();return dojo._timeouts.push(_23)-1;};}if(dojo.config["modulePaths"]){for(var param in dojo.config["modulePaths"]){dojo.registerModulePath(param,dojo.config["modulePaths"][param]);}}././@LongLink0000000000000000000000000000021000000000000011556 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dojo/_base/_loader/hostenv_spidermonkey.jslibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dojo/_b0000644000000000000000000000206611360615632027175 0ustar /* Copyright (c) 2004-2008, The Dojo Foundation All Rights Reserved. Available via Academic Free License >= 2.1 OR the modified BSD license. see: http://dojotoolkit.org/license for details */ if(dojo.config["baseUrl"]){dojo.baseUrl=dojo.config["baseUrl"];}else{dojo.baseUrl="./";}dojo._name="spidermonkey";dojo.isSpidermonkey=true;dojo.exit=function(_1){quit(_1);};if(typeof print=="function"){console.debug=print;}if(typeof line2pc=="undefined"){throw new Error("attempt to use SpiderMonkey host environment when no 'line2pc' global");}dojo._spidermonkeyCurrentFile=function(_2){var s="";try{throw Error("whatever");}catch(e){s=e.stack;}var _4=s.match(/[^@]*\.js/gi);if(!_4){throw Error("could not parse stack string: '"+s+"'");}var _5=(typeof _2!="undefined"&&_2)?_4[_2+1]:_4[_4.length-1];if(!_5){throw Error("could not find file name in stack string '"+s+"'");}return _5;};dojo._loadUri=function(_6){var ok=load(_6);return 1;};if(dojo.config["modulePaths"]){for(var param in dojo.config["modulePaths"]){dojo.registerModulePath(param,dojo.config["modulePaths"][param]);}}././@LongLink0000000000000000000000000000020000000000000011555 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dojo/_base/_loader/loader_debug.jslibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dojo/_b0000644000000000000000000000267411360615642027203 0ustar /* Copyright (c) 2004-2008, The Dojo Foundation All Rights Reserved. Available via Academic Free License >= 2.1 OR the modified BSD license. see: http://dojotoolkit.org/license for details */ if(!dojo._hasResource["dojo._base._loader.loader_debug"]){dojo._hasResource["dojo._base._loader.loader_debug"]=true;dojo.provide("dojo._base._loader.loader_debug");dojo.nonDebugProvide=dojo.provide;dojo.provide=function(_1){var _2=dojo["_xdDebugQueue"];if(_2&&_2.length>0&&_1==_2["currentResourceName"]){if(dojo.isAIR){window.setTimeout(function(){dojo._xdDebugFileLoaded(_1);},1);}else{window.setTimeout(dojo._scopeName+"._xdDebugFileLoaded('"+_1+"')",1);}}return dojo.nonDebugProvide.apply(dojo,arguments);};dojo._xdDebugFileLoaded=function(_3){if(!this._xdDebugScopeChecked){if(dojo._scopeName!="dojo"){window.dojo=window[dojo.config.scopeMap[0][1]];window.dijit=window[dojo.config.scopeMap[1][1]];window.dojox=window[dojo.config.scopeMap[2][1]];}this._xdDebugScopeChecked=true;}var _4=this._xdDebugQueue;if(_3&&_3==_4.currentResourceName){_4.shift();}if(_4.length==0){dojo._xdWatchInFlight();}if(_4.length==0){_4.currentResourceName=null;for(var _5 in this._xdInFlight){if(this._xdInFlight[_5]===true){return;}}this._xdNotifyLoaded();}else{if(_3==_4.currentResourceName){_4.currentResourceName=_4[0].resourceName;var _6=document.createElement("script");_6.type="text/javascript";_6.src=_4[0].resourcePath;document.getElementsByTagName("head")[0].appendChild(_6);}}};}././@LongLink0000000000000000000000000000020300000000000011560 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dojo/_base/_loader/hostenv_browser.jslibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dojo/_b0000644000000000000000000001137311360615632027176 0ustar /* Copyright (c) 2004-2008, The Dojo Foundation All Rights Reserved. Available via Academic Free License >= 2.1 OR the modified BSD license. see: http://dojotoolkit.org/license for details */ if(typeof window!="undefined"){dojo.isBrowser=true;dojo._name="browser";(function(){var d=dojo;if(document&&document.getElementsByTagName){var _2=document.getElementsByTagName("script");var _3=/dojo(\.xd)?\.js(\W|$)/i;for(var i=0;i<_2.length;i++){var _5=_2[i].getAttribute("src");if(!_5){continue;}var m=_5.match(_3);if(m){if(!d.config.baseUrl){d.config.baseUrl=_5.substring(0,m.index);}var _7=_2[i].getAttribute("djConfig");if(_7){var _8=eval("({ "+_7+" })");for(var x in _8){dojo.config[x]=_8[x];}}break;}}}d.baseUrl=d.config.baseUrl;var n=navigator;var _b=n.userAgent;var _c=n.appVersion;var tv=parseFloat(_c);if(_b.indexOf("Opera")>=0){d.isOpera=tv;}var _e=Math.max(_c.indexOf("WebKit"),_c.indexOf("Safari"),0);if(_e){d.isSafari=parseFloat(_c.split("Version/")[1])||(parseFloat(_c.substr(_e+7))>419.3)?3:2;}if(_b.indexOf("AdobeAIR")>=0){d.isAIR=1;}if(_c.indexOf("Konqueror")>=0||d.isSafari){d.isKhtml=tv;}if(_b.indexOf("Gecko")>=0&&!d.isKhtml){d.isMozilla=d.isMoz=tv;}if(d.isMoz){d.isFF=parseFloat(_b.split("Firefox/")[1])||undefined;}if(document.all&&!d.isOpera){d.isIE=parseFloat(_c.split("MSIE ")[1])||undefined;}if(dojo.isIE&&window.location.protocol==="file:"){dojo.config.ieForceActiveXXhr=true;}var cm=document.compatMode;d.isQuirks=cm=="BackCompat"||cm=="QuirksMode"||d.isIE<6;d.locale=dojo.config.locale||(d.isIE?n.userLanguage:n.language).toLowerCase();d._XMLHTTP_PROGIDS=["Msxml2.XMLHTTP","Microsoft.XMLHTTP","Msxml2.XMLHTTP.4.0"];d._xhrObj=function(){var _10=null;var _11=null;if(!dojo.isIE||!dojo.config.ieForceActiveXXhr){try{_10=new XMLHttpRequest();}catch(e){}}if(!_10){for(var i=0;i<3;++i){var _13=d._XMLHTTP_PROGIDS[i];try{_10=new ActiveXObject(_13);}catch(e){_11=e;}if(_10){d._XMLHTTP_PROGIDS=[_13];break;}}}if(!_10){throw new Error("XMLHTTP not available: "+_11);}return _10;};d._isDocumentOk=function(_14){var _15=_14.status||0;return (_15>=200&&_15<300)||_15==304||_15==1223||(!_15&&(location.protocol=="file:"||location.protocol=="chrome:"));};var _16=window.location+"";var _17=document.getElementsByTagName("base");var _18=(_17&&_17.length>0);d._getText=function(uri,_1a){var _1b=this._xhrObj();if(!_18&&dojo._Url){uri=(new dojo._Url(_16,uri)).toString();}if(d.config.cacheBust){uri+="";uri+=(uri.indexOf("?")==-1?"?":"&")+String(d.config.cacheBust).replace(/\W+/g,"");}_1b.open("GET",uri,false);try{_1b.send(null);if(!d._isDocumentOk(_1b)){var err=Error("Unable to load "+uri+" status:"+_1b.status);err.status=_1b.status;err.responseText=_1b.responseText;throw err;}}catch(e){if(_1a){return null;}throw e;}return _1b.responseText;};d._windowUnloaders=[];d.windowUnloaded=function(){var mll=this._windowUnloaders;while(mll.length){(mll.pop())();}};d.addOnWindowUnload=function(obj,_1f){d._onto(d._windowUnloaders,obj,_1f);};})();dojo._initFired=false;dojo._loadInit=function(e){dojo._initFired=true;var _21=(e&&e.type)?e.type.toLowerCase():"load";if(arguments.callee.initialized||(_21!="domcontentloaded"&&_21!="load")){return;}arguments.callee.initialized=true;if("_khtmlTimer" in dojo){clearInterval(dojo._khtmlTimer);delete dojo._khtmlTimer;}if(dojo._inFlightCount==0){dojo._modulesLoaded();}};dojo._fakeLoadInit=function(){dojo._loadInit({type:"load"});};if(!dojo.config.afterOnLoad){if(document.addEventListener){if(dojo.isOpera||dojo.isFF>=3||(dojo.isMoz&&dojo.config.enableMozDomContentLoaded===true)){document.addEventListener("DOMContentLoaded",dojo._loadInit,null);}window.addEventListener("load",dojo._loadInit,null);}if(dojo.isAIR){window.addEventListener("load",dojo._loadInit,null);}else{if(/(WebKit|khtml)/i.test(navigator.userAgent)){dojo._khtmlTimer=setInterval(function(){if(/loaded|complete/.test(document.readyState)){dojo._loadInit();}},10);}}}(function(){var _w=window;var _23=function(_24,fp){var _26=_w[_24]||function(){};_w[_24]=function(){fp.apply(_w,arguments);_26.apply(_w,arguments);};};if(dojo.isIE){if(!dojo.config.afterOnLoad){document.write(""+"");}try{document.namespaces.add("v","urn:schemas-microsoft-com:vml");document.createStyleSheet().addRule("v\\:*","behavior:url(#default#VML)");}catch(e){}}_23("onbeforeunload",function(){dojo.unloaded();});_23("onunload",function(){dojo.windowUnloaded();});})();}(function(){var mp=dojo.config["modulePaths"];if(mp){for(var _28 in mp){dojo.registerModulePath(_28,mp[_28]);}}})();if(dojo.config.isDebug){dojo.require("dojo._firebug.firebug");}if(dojo.config.debugAtAllCosts){dojo.config.useXDomain=true;dojo.require("dojo._base._loader.loader_xd");dojo.require("dojo._base._loader.loader_debug");dojo.require("dojo.i18n");}././@LongLink0000000000000000000000000000017200000000000011565 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dojo/_base/_loader/loader.jslibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dojo/_b0000644000000000000000000001355511360615634027204 0ustar /* Copyright (c) 2004-2008, The Dojo Foundation All Rights Reserved. Available via Academic Free License >= 2.1 OR the modified BSD license. see: http://dojotoolkit.org/license for details */ if(!dojo._hasResource["dojo.foo"]){dojo._hasResource["dojo.foo"]=true;(function(){var d=dojo;d.mixin(d,{_loadedModules:{},_inFlightCount:0,_hasResource:{},_modulePrefixes:{dojo:{name:"dojo",value:"."},doh:{name:"doh",value:"../util/doh"},tests:{name:"tests",value:"tests"}},_moduleHasPrefix:function(_2){var mp=this._modulePrefixes;return !!(mp[_2]&&mp[_2].value);},_getModulePrefix:function(_4){var mp=this._modulePrefixes;if(this._moduleHasPrefix(_4)){return mp[_4].value;}return _4;},_loadedUrls:[],_postLoad:false,_loaders:[],_unloaders:[],_loadNotifying:false});dojo._loadPath=function(_6,_7,cb){var _9=((_6.charAt(0)=="/"||_6.match(/^\w+:/))?"":this.baseUrl)+_6;try{return !_7?this._loadUri(_9,cb):this._loadUriAndCheck(_9,_7,cb);}catch(e){console.error(e);return false;}};dojo._loadUri=function(_a,cb){if(this._loadedUrls[_a]){return true;}var _c=this._getText(_a,true);if(!_c){return false;}this._loadedUrls[_a]=true;this._loadedUrls.push(_a);if(cb){_c="("+_c+")";}else{_c=this._scopePrefix+_c+this._scopeSuffix;}if(d.isMoz){_c+="\r\n//@ sourceURL="+_a;}var _d=d["eval"](_c);if(cb){cb(_d);}return true;};dojo._loadUriAndCheck=function(_e,_f,cb){var ok=false;try{ok=this._loadUri(_e,cb);}catch(e){console.error("failed loading "+_e+" with error: "+e);}return !!(ok&&this._loadedModules[_f]);};dojo.loaded=function(){this._loadNotifying=true;this._postLoad=true;var mll=d._loaders;this._loaders=[];for(var x=0;x0){console.warn("files still in flight!");return;}d._callLoaded();};dojo._callLoaded=function(){if(typeof setTimeout=="object"||(dojo.config.useXDomain&&d.isOpera)){if(dojo.isAIR){setTimeout(function(){dojo.loaded();},0);}else{setTimeout(dojo._scopeName+".loaded();",0);}}else{d.loaded();}};dojo._getModuleSymbols=function(_1e){var _1f=_1e.split(".");for(var i=_1f.length;i>0;i--){var _21=_1f.slice(0,i).join(".");if((i==1)&&!this._moduleHasPrefix(_21)){_1f[0]="../"+_1f[0];}else{var _22=this._getModulePrefix(_21);if(_22!=_21){_1f.splice(0,i,_22);break;}}}return _1f;};dojo._global_omit_module_check=false;dojo.loadInit=function(_23){_23();};dojo._loadModule=dojo.require=function(_24,_25){_25=this._global_omit_module_check||_25;var _26=this._loadedModules[_24];if(_26){return _26;}var _27=this._getModuleSymbols(_24).join("/")+".js";var _28=(!_25)?_24:null;var ok=this._loadPath(_27,_28);if(!ok&&!_25){throw new Error("Could not load '"+_24+"'; last tried '"+_27+"'");}if(!_25&&!this._isXDomain){_26=this._loadedModules[_24];if(!_26){throw new Error("symbol '"+_24+"' is not defined after loading '"+_27+"'");}}return _26;};dojo.provide=function(_2a){_2a=_2a+"";return (d._loadedModules[_2a]=d.getObject(_2a,true));};dojo.platformRequire=function(_2b){var _2c=_2b.common||[];var _2d=_2c.concat(_2b[d._name]||_2b["default"]||[]);for(var x=0;x<_2d.length;x++){var _2f=_2d[x];if(_2f.constructor==Array){d._loadModule.apply(d,_2f);}else{d._loadModule(_2f);}}};dojo.requireIf=function(_30,_31){if(_30===true){var _32=[];for(var i=1;i0&&!(j==1&&_43[0]=="")&&_43[j]==".."&&_43[j-1]!=".."){if(j==(_43.length-1)){_43.splice(j,1);_43[j-1]="";}else{_43.splice(j-1,2);j-=2;}}}}_40.path=_43.join("/");}}}}uri=[];if(_40.scheme){uri.push(_40.scheme,":");}if(_40.authority){uri.push("//",_40.authority);}uri.push(_40.path);if(_40.query){uri.push("?",_40.query);}if(_40.fragment){uri.push("#",_40.fragment);}}this.uri=uri.join("");var r=this.uri.match(ore);this.scheme=r[2]||(r[1]?"":n);this.authority=r[4]||(r[3]?"":n);this.path=r[5];this.query=r[7]||(r[6]?"":n);this.fragment=r[9]||(r[8]?"":n);if(this.authority!=n){r=this.authority.match(ire);this.user=r[3]||n;this.password=r[4]||n;this.host=r[6]||r[7];this.port=r[9]||n;}};dojo._Url.prototype.toString=function(){return this.uri;};dojo.moduleUrl=function(_46,url){var loc=d._getModuleSymbols(_46).join("/");if(!loc){return null;}if(loc.lastIndexOf("/")!=loc.length-1){loc+="/";}var _49=loc.indexOf(":");if(loc.charAt(0)!="/"&&(_49==-1||_49>loc.indexOf("/"))){loc=d.baseUrl+loc;}return new d._Url(loc,url);};})();}././@LongLink0000000000000000000000000000017500000000000011570 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dojo/_base/_loader/bootstrap.jslibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dojo/_b0000644000000000000000000000477111360615632027202 0ustar /* Copyright (c) 2004-2008, The Dojo Foundation All Rights Reserved. Available via Academic Free License >= 2.1 OR the modified BSD license. see: http://dojotoolkit.org/license for details */ (function(){if(!this["console"]){this.console={};}var cn=["assert","count","debug","dir","dirxml","error","group","groupEnd","info","profile","profileEnd","time","timeEnd","trace","warn","log"];var i=0,tn;while((tn=cn[i++])){if(!console[tn]){(function(){var _4=tn+"";console[_4]=("log" in console)?function(){var a=Array.apply({},arguments);a.unshift(_4+":");console["log"](a.join(" "));}:function(){};})();}}if(typeof dojo=="undefined"){this.dojo={_scopeName:"dojo",_scopePrefix:"",_scopePrefixArgs:"",_scopeSuffix:"",_scopeMap:{},_scopeMapRev:{}};}var d=dojo;if(typeof dijit=="undefined"){this.dijit={_scopeName:"dijit"};}if(typeof dojox=="undefined"){this.dojox={_scopeName:"dojox"};}if(!d._scopeArgs){d._scopeArgs=[dojo,dijit,dojox];}d.global=this;d.config={isDebug:false,debugAtAllCosts:false};if(typeof djConfig!="undefined"){for(var _7 in djConfig){d.config[_7]=djConfig[_7];}}var _8=["Browser","Rhino","Spidermonkey","Mobile"];var t;while((t=_8.shift())){d["is"+t]=false;}dojo.locale=d.config.locale;var _a="$Rev: 21540 $".match(/\d+/);dojo.version={major:1,minor:2,patch:4,flag:"",revision:_a?+_a[0]:999999,toString:function(){with(d.version){return major+"."+minor+"."+patch+flag+" ("+revision+")";}}};if(typeof OpenAjax!="undefined"){OpenAjax.hub.registerLibrary(dojo._scopeName,"http://dojotoolkit.org",d.version.toString());}dojo._mixin=function(_b,_c){var _d={};for(var x in _c){if(_d[x]===undefined||_d[x]!=_c[x]){_b[x]=_c[x];}}if(d["isIE"]&&_c){var p=_c.toString;if(typeof p=="function"&&p!=_b.toString&&p!=_d.toString&&p!="\nfunction toString() {\n [native code]\n}\n"){_b.toString=_c.toString;}}return _b;};dojo.mixin=function(obj,_11){for(var i=1,l=arguments.length;i= 2.1 OR the modified BSD license. see: http://dojotoolkit.org/license for details */ if(!dojo._hasResource["dojo._base._loader.loader_xd"]){dojo._hasResource["dojo._base._loader.loader_xd"]=true;dojo.provide("dojo._base._loader.loader_xd");dojo._xdReset=function(){this._isXDomain=dojo.config.useXDomain||false;this._xdTimer=0;this._xdInFlight={};this._xdOrderedReqs=[];this._xdDepMap={};this._xdContents=[];this._xdDefList=[];};dojo._xdReset();dojo._xdCreateResource=function(_1,_2,_3){var _4=_1.replace(/(\/\*([\s\S]*?)\*\/|\/\/(.*)$)/mg,"");var _5=[];var _6=/dojo.(require|requireIf|provide|requireAfterIf|platformRequire|requireLocalization)\s*\(([\w\W]*?)\)/mg;var _7;while((_7=_6.exec(_4))!=null){if(_7[1]=="requireLocalization"){eval(_7[0]);}else{_5.push("\""+_7[1]+"\", "+_7[2]);}}var _8=[];_8.push(dojo._scopeName+"._xdResourceLoaded(function("+dojo._scopePrefixArgs+"){\n");var _9=dojo._xdExtractLoadInits(_1);if(_9){_1=_9[0];for(var i=1;i<_9.length;i++){_8.push(_9[i]+";\n");}}_8.push("return {");if(_5.length>0){_8.push("depends: [");for(i=0;i<_5.length;i++){if(i>0){_8.push(",\n");}_8.push("["+_5[i]+"]");}_8.push("],");}_8.push("\ndefineResource: function("+dojo._scopePrefixArgs+"){");if(!dojo.config["debugAtAllCosts"]||_2=="dojo._base._loader.loader_debug"){_8.push(_1);}_8.push("\n}, resourceName: '"+_2+"', resourcePath: '"+_3+"'};});");return _8.join("");};dojo._xdExtractLoadInits=function(_b){var _c=/dojo.loadInit\s*\(/g;_c.lastIndex=0;var _d=/[\(\)]/g;_d.lastIndex=0;var _e=[];var _f;while((_f=_c.exec(_b))){_d.lastIndex=_c.lastIndex;var _10=1;var _11;while((_11=_d.exec(_b))){if(_11[0]==")"){_10-=1;}else{_10+=1;}if(_10==0){break;}}if(_10!=0){throw "unmatched paren around character "+_d.lastIndex+" in: "+_b;}var _12=_c.lastIndex-_f[0].length;_e.push(_b.substring(_12,_d.lastIndex));var _13=_d.lastIndex-_12;_b=_b.substring(0,_12)+_b.substring(_d.lastIndex,_b.length);_c.lastIndex=_d.lastIndex-_13;_c.lastIndex=_d.lastIndex;}if(_e.length>0){_e.unshift(_b);}return (_e.length?_e:null);};dojo._xdIsXDomainPath=function(_14){var _15=_14.indexOf(":");var _16=_14.indexOf("/");if(_15>0&&_15<_16){return true;}else{var url=this.baseUrl;_15=url.indexOf(":");_16=url.indexOf("/");if(_15>0&&_15<_16&&(!location.host||url.indexOf("http://"+location.host)!=0)){return true;}}return false;};dojo._loadPath=function(_18,_19,cb){var _1b=this._xdIsXDomainPath(_18);this._isXDomain|=_1b;var uri=((_18.charAt(0)=="/"||_18.match(/^\w+:/))?"":this.baseUrl)+_18;try{return ((!_19||this._isXDomain)?this._loadUri(uri,cb,_1b,_19):this._loadUriAndCheck(uri,_19,cb));}catch(e){console.error(e);return false;}};dojo._loadUri=function(uri,cb,_1f,_20){if(this._loadedUrls[uri]){return 1;}if(this._isXDomain&&_20&&_20!="dojo.i18n"){this._xdOrderedReqs.push(_20);if(_1f||uri.indexOf("/nls/")==-1){this._xdInFlight[_20]=true;this._inFlightCount++;}if(!this._xdTimer){if(dojo.isAIR){this._xdTimer=setInterval(function(){dojo._xdWatchInFlight();},100);}else{this._xdTimer=setInterval(dojo._scopeName+"._xdWatchInFlight();",100);}}this._xdStartTime=(new Date()).getTime();}if(_1f){var _21=uri.lastIndexOf(".");if(_21<=0){_21=uri.length-1;}var _22=uri.substring(0,_21)+".xd";if(_21!=uri.length-1){_22+=uri.substring(_21,uri.length);}if(dojo.isAIR){_22=_22.replace("app:/","/");}var _23=document.createElement("script");_23.type="text/javascript";_23.src=_22;if(!this.headElement){this._headElement=document.getElementsByTagName("head")[0];if(!this._headElement){this._headElement=document.getElementsByTagName("html")[0];}}this._headElement.appendChild(_23);}else{var _24=this._getText(uri,null,true);if(_24==null){return 0;}if(this._isXDomain&&uri.indexOf("/nls/")==-1&&_20!="dojo.i18n"){var res=this._xdCreateResource(_24,_20,uri);dojo.eval(res);}else{if(cb){_24="("+_24+")";}else{_24=this._scopePrefix+_24+this._scopeSuffix;}var _26=dojo["eval"](_24+"\r\n//@ sourceURL="+uri);if(cb){cb(_26);}}}this._loadedUrls[uri]=true;this._loadedUrls.push(uri);return true;};dojo._xdResourceLoaded=function(res){res=res.apply(dojo.global,dojo._scopeArgs);var _28=res.depends;var _29=null;var _2a=null;var _2b=[];if(_28&&_28.length>0){var dep=null;var _2d=0;var _2e=false;for(var i=0;i<_28.length;i++){dep=_28[i];if(dep[0]=="provide"){_2b.push(dep[1]);}else{if(!_29){_29=[];}if(!_2a){_2a=[];}var _30=this._xdUnpackDependency(dep);if(_30.requires){_29=_29.concat(_30.requires);}if(_30.requiresAfter){_2a=_2a.concat(_30.requiresAfter);}}var _31=dep[0];var _32=_31.split(".");if(_32.length==2){dojo[_32[0]][_32[1]].apply(dojo[_32[0]],dep.slice(1));}else{dojo[_31].apply(dojo,dep.slice(1));}}if(_2b.length==1&&_2b[0]=="dojo._base._loader.loader_debug"){res.defineResource(dojo);}else{var _33=this._xdContents.push({content:res.defineResource,resourceName:res["resourceName"],resourcePath:res["resourcePath"],isDefined:false})-1;for(i=0;i<_2b.length;i++){this._xdDepMap[_2b[i]]={requires:_29,requiresAfter:_2a,contentIndex:_33};}}for(i=0;i<_2b.length;i++){this._xdInFlight[_2b[i]]=false;}}};dojo._xdLoadFlattenedBundle=function(_34,_35,_36,_37){_36=_36||"root";var _38=dojo.i18n.normalizeLocale(_36).replace("-","_");var _39=[_34,"nls",_35].join(".");var _3a=dojo["provide"](_39);_3a[_38]=_37;var _3b=[_34,_38,_35].join(".");var _3c=dojo._xdBundleMap[_3b];if(_3c){for(var _3d in _3c){_3a[_3d]=_37;}}};dojo._xdInitExtraLocales=function(){var _3e=dojo.config.extraLocale;if(_3e){if(!_3e instanceof Array){_3e=[_3e];}dojo._xdReqLoc=dojo.xdRequireLocalization;dojo.xdRequireLocalization=function(m,b,_41,_42){dojo._xdReqLoc(m,b,_41,_42);if(_41){return;}for(var i=0;i<_3e.length;i++){dojo._xdReqLoc(m,b,_3e[i],_42);}};}};dojo._xdBundleMap={};dojo.xdRequireLocalization=function(_44,_45,_46,_47){if(dojo._xdInitExtraLocales){dojo._xdInitExtraLocales();dojo._xdInitExtraLocales=null;dojo.xdRequireLocalization.apply(dojo,arguments);return;}var _48=_47.split(",");var _49=dojo.i18n.normalizeLocale(_46);var _4a="";for(var i=0;i<_48.length;i++){if(_49.indexOf(_48[i])==0){if(_48[i].length>_4a.length){_4a=_48[i];}}}var _4c=_4a.replace("-","_");var _4d=dojo.getObject([_44,"nls",_45].join("."));if(_4d&&_4d[_4c]){bundle[_49.replace("-","_")]=_4d[_4c];}else{var _4e=[_44,(_4c||"root"),_45].join(".");var _4f=dojo._xdBundleMap[_4e];if(!_4f){_4f=dojo._xdBundleMap[_4e]={};}_4f[_49.replace("-","_")]=true;dojo.require(_44+".nls"+(_4a?"."+_4a:"")+"."+_45);}};dojo._xdRealRequireLocalization=dojo.requireLocalization;dojo.requireLocalization=function(_50,_51,_52,_53){var _54=this.moduleUrl(_50).toString();if(this._xdIsXDomainPath(_54)){return dojo.xdRequireLocalization.apply(dojo,arguments);}else{return dojo._xdRealRequireLocalization.apply(dojo,arguments);}};dojo._xdUnpackDependency=function(dep){var _56=null;var _57=null;switch(dep[0]){case "requireIf":case "requireAfterIf":if(dep[1]===true){_56=[{name:dep[2],content:null}];}break;case "platformRequire":var _58=dep[1];var _59=_58["common"]||[];_56=(_58[dojo.hostenv.name_])?_59.concat(_58[dojo.hostenv.name_]||[]):_59.concat(_58["default"]||[]);if(_56){for(var i=0;i<_56.length;i++){if(_56[i] instanceof Array){_56[i]={name:_56[i][0],content:null};}else{_56[i]={name:_56[i],content:null};}}}break;case "require":_56=[{name:dep[1],content:null}];break;case "i18n._preloadLocalizations":dojo.i18n._preloadLocalizations.apply(dojo.i18n._preloadLocalizations,dep.slice(1));break;}if(dep[0]=="requireAfterIf"||dep[0]=="requireIf"){_57=_56;_56=null;}return {requires:_56,requiresAfter:_57};};dojo._xdWalkReqs=function(){var _5b=null;var req;for(var i=0;i0){var req=_5e[_5e.length-1];var res=this._xdDepMap[req];var i,_62,_63;if(res){_62=res.requires;if(_62&&_62.length>0){for(i=0;i<_62.length;i++){_63=_62[i].name;if(_63&&!_5e[_63]){_5e.push(_63);_5e[_63]=true;this._xdEvalReqs(_5e);}}}var _64=this._xdContents[res.contentIndex];if(!_64.isDefined){var _65=_64.content;_65["resourceName"]=_64["resourceName"];_65["resourcePath"]=_64["resourcePath"];this._xdDefList.push(_65);_64.isDefined=true;}this._xdDepMap[req]=null;_62=res.requiresAfter;if(_62&&_62.length>0){for(i=0;i<_62.length;i++){_63=_62[i].name;if(_63&&!_5e[_63]){_5e.push(_63);_5e[_63]=true;this._xdEvalReqs(_5e);}}}}_5e.pop();}};dojo._xdClearInterval=function(){clearInterval(this._xdTimer);this._xdTimer=0;};dojo._xdWatchInFlight=function(){var _66="";var _67=(dojo.config.xdWaitSeconds||15)*1000;var _68=(this._xdStartTime+_67)<(new Date()).getTime();for(var _69 in this._xdInFlight){if(this._xdInFlight[_69]===true){if(_68){_66+=_69+" ";}else{return;}}}this._xdClearInterval();if(_68){throw "Could not load cross-domain resources: "+_66;}this._xdWalkReqs();var _6a=this._xdDefList.length;for(var i=0;i<_6a;i++){var _6c=dojo._xdDefList[i];if(dojo.config["debugAtAllCosts"]&&_6c["resourceName"]){if(!this["_xdDebugQueue"]){this._xdDebugQueue=[];}this._xdDebugQueue.push({resourceName:_6c.resourceName,resourcePath:_6c.resourcePath});}else{_6c.apply(dojo.global,dojo._scopeArgs);}}for(i=0;i0){this._xdDebugFileLoaded();}else{this._xdNotifyLoaded();}};dojo._xdNotifyLoaded=function(){this._inFlightCount=0;if(this._initFired&&!this._loadNotifying){this._callLoaded();}};}././@LongLink0000000000000000000000000000016100000000000011563 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dojo/_base/event.jslibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dojo/_b0000644000000000000000000001725311360615634027203 0ustar /* Copyright (c) 2004-2008, The Dojo Foundation All Rights Reserved. Available via Academic Free License >= 2.1 OR the modified BSD license. see: http://dojotoolkit.org/license for details */ if(!dojo._hasResource["dojo._base.event"]){dojo._hasResource["dojo._base.event"]=true;dojo.provide("dojo._base.event");dojo.require("dojo._base.connect");(function(){var _1=(dojo._event_listener={add:function(_2,_3,fp){if(!_2){return;}_3=_1._normalizeEventName(_3);fp=_1._fixCallback(_3,fp);var _5=_3;if(!dojo.isIE&&(_3=="mouseenter"||_3=="mouseleave")){var _6=fp;_3=(_3=="mouseenter")?"mouseover":"mouseout";fp=function(e){try{e.relatedTarget.tagName;}catch(e2){return;}if(!dojo.isDescendant(e.relatedTarget,_2)){return _6.call(this,e);}};}_2.addEventListener(_3,fp,false);return fp;},remove:function(_8,_9,_a){if(_8){_9=_1._normalizeEventName(_9);if(!dojo.isIE&&(_9=="mouseenter"||_9=="mouseleave")){_9=(_9=="mouseenter")?"mouseover":"mouseout";}_8.removeEventListener(_9,_a,false);}},_normalizeEventName:function(_b){return _b.slice(0,2)=="on"?_b.slice(2):_b;},_fixCallback:function(_c,fp){return _c!="keypress"?fp:function(e){return fp.call(this,_1._fixEvent(e,this));};},_fixEvent:function(_f,_10){switch(_f.type){case "keypress":_1._setKeyChar(_f);break;}return _f;},_setKeyChar:function(evt){evt.keyChar=evt.charCode?String.fromCharCode(evt.charCode):"";evt.charOrCode=evt.keyChar||evt.keyCode;},_punctMap:{106:42,111:47,186:59,187:43,188:44,189:45,190:46,191:47,192:96,219:91,220:92,221:93,222:39}});dojo.fixEvent=function(evt,_13){return _1._fixEvent(evt,_13);};dojo.stopEvent=function(evt){evt.preventDefault();evt.stopPropagation();};var _15=dojo._listener;dojo._connect=function(obj,_17,_18,_19,_1a){var _1b=obj&&(obj.nodeType||obj.attachEvent||obj.addEventListener);var lid=!_1b?0:(!_1a?1:2),l=[dojo._listener,_1,_15][lid];var h=l.add(obj,_17,dojo.hitch(_18,_19));return [obj,_17,h,lid];};dojo._disconnect=function(obj,_20,_21,_22){([dojo._listener,_1,_15][_22]).remove(obj,_20,_21);};dojo.keys={BACKSPACE:8,TAB:9,CLEAR:12,ENTER:13,SHIFT:16,CTRL:17,ALT:18,PAUSE:19,CAPS_LOCK:20,ESCAPE:27,SPACE:32,PAGE_UP:33,PAGE_DOWN:34,END:35,HOME:36,LEFT_ARROW:37,UP_ARROW:38,RIGHT_ARROW:39,DOWN_ARROW:40,INSERT:45,DELETE:46,HELP:47,LEFT_WINDOW:91,RIGHT_WINDOW:92,SELECT:93,NUMPAD_0:96,NUMPAD_1:97,NUMPAD_2:98,NUMPAD_3:99,NUMPAD_4:100,NUMPAD_5:101,NUMPAD_6:102,NUMPAD_7:103,NUMPAD_8:104,NUMPAD_9:105,NUMPAD_MULTIPLY:106,NUMPAD_PLUS:107,NUMPAD_ENTER:108,NUMPAD_MINUS:109,NUMPAD_PERIOD:110,NUMPAD_DIVIDE:111,F1:112,F2:113,F3:114,F4:115,F5:116,F6:117,F7:118,F8:119,F9:120,F10:121,F11:122,F12:123,F13:124,F14:125,F15:126,NUM_LOCK:144,SCROLL_LOCK:145};if(dojo.isIE){var _23=function(e,_25){try{return (e.keyCode=_25);}catch(e){return 0;}};var iel=dojo._listener;var _27=dojo._ieListenersName="_"+dojo._scopeName+"_listeners";if(!dojo.config._allow_leaks){_15=iel=dojo._ie_listener={handlers:[],add:function(_28,_29,_2a){_28=_28||dojo.global;var f=_28[_29];if(!f||!f[_27]){var d=dojo._getIeDispatcher();d.target=f&&(ieh.push(f)-1);d[_27]=[];f=_28[_29]=d;}return f[_27].push(ieh.push(_2a)-1);},remove:function(_2e,_2f,_30){var f=(_2e||dojo.global)[_2f],l=f&&f[_27];if(f&&l&&_30--){delete ieh[l[_30]];delete l[_30];}}};var ieh=iel.handlers;}dojo.mixin(_1,{add:function(_33,_34,fp){if(!_33){return;}_34=_1._normalizeEventName(_34);if(_34=="onkeypress"){var kd=_33.onkeydown;if(!kd||!kd[_27]||!kd._stealthKeydownHandle){var h=_1.add(_33,"onkeydown",_1._stealthKeyDown);kd=_33.onkeydown;kd._stealthKeydownHandle=h;kd._stealthKeydownRefs=1;}else{kd._stealthKeydownRefs++;}}return iel.add(_33,_34,_1._fixCallback(fp));},remove:function(_38,_39,_3a){_39=_1._normalizeEventName(_39);iel.remove(_38,_39,_3a);if(_39=="onkeypress"){var kd=_38.onkeydown;if(--kd._stealthKeydownRefs<=0){iel.remove(_38,"onkeydown",kd._stealthKeydownHandle);delete kd._stealthKeydownHandle;}}},_normalizeEventName:function(_3c){return _3c.slice(0,2)!="on"?"on"+_3c:_3c;},_nop:function(){},_fixEvent:function(evt,_3e){if(!evt){var w=_3e&&(_3e.ownerDocument||_3e.document||_3e).parentWindow||window;evt=w.event;}if(!evt){return (evt);}evt.target=evt.srcElement;evt.currentTarget=(_3e||evt.srcElement);evt.layerX=evt.offsetX;evt.layerY=evt.offsetY;var se=evt.srcElement,doc=(se&&se.ownerDocument)||document;var _42=((dojo.isIE<6)||(doc["compatMode"]=="BackCompat"))?doc.body:doc.documentElement;var _43=dojo._getIeDocumentElementOffset();evt.pageX=evt.clientX+dojo._fixIeBiDiScrollLeft(_42.scrollLeft||0)-_43.x;evt.pageY=evt.clientY+(_42.scrollTop||0)-_43.y;if(evt.type=="mouseover"){evt.relatedTarget=evt.fromElement;}if(evt.type=="mouseout"){evt.relatedTarget=evt.toElement;}evt.stopPropagation=_1._stopPropagation;evt.preventDefault=_1._preventDefault;return _1._fixKeys(evt);},_fixKeys:function(evt){switch(evt.type){case "keypress":var c=("charCode" in evt?evt.charCode:evt.keyCode);if(c==10){c=0;evt.keyCode=13;}else{if(c==13||c==27){c=0;}else{if(c==3){c=99;}}}evt.charCode=c;_1._setKeyChar(evt);break;}return evt;},_stealthKeyDown:function(evt){var kp=evt.currentTarget.onkeypress;if(!kp||!kp[_27]){return;}var k=evt.keyCode;var _49=(k!=13)&&(k!=32)&&(k!=27)&&(k<48||k>90)&&(k<96||k>111)&&(k<186||k>192)&&(k<219||k>222);if(_49||evt.ctrlKey){var c=_49?0:k;if(evt.ctrlKey){if(k==3||k==13){return;}else{if(c>95&&c<106){c-=48;}else{if((!evt.shiftKey)&&(c>=65&&c<=90)){c+=32;}else{c=_1._punctMap[c]||c;}}}}var _4b=_1._synthesizeEvent(evt,{type:"keypress",faux:true,charCode:c});kp.call(evt.currentTarget,_4b);evt.cancelBubble=_4b.cancelBubble;evt.returnValue=_4b.returnValue;_23(evt,_4b.keyCode);}},_stopPropagation:function(){this.cancelBubble=true;},_preventDefault:function(){this.bubbledKeyCode=this.keyCode;if(this.ctrlKey){_23(this,0);}this.returnValue=false;}});dojo.stopEvent=function(evt){evt=evt||window.event;_1._stopPropagation.call(evt);_1._preventDefault.call(evt);};}_1._synthesizeEvent=function(evt,_4e){var _4f=dojo.mixin({},evt,_4e);_1._setKeyChar(_4f);_4f.preventDefault=function(){evt.preventDefault();};_4f.stopPropagation=function(){evt.stopPropagation();};return _4f;};if(dojo.isOpera){dojo.mixin(_1,{_fixEvent:function(evt,_51){switch(evt.type){case "keypress":var c=evt.which;if(c==3){c=99;}c=((c<41)&&(!evt.shiftKey)?0:c);if((evt.ctrlKey)&&(!evt.shiftKey)&&(c>=65)&&(c<=90)){c+=32;}return _1._synthesizeEvent(evt,{charCode:c});}return evt;}});}if(dojo.isSafari){_1._add=_1.add;_1._remove=_1.remove;dojo.mixin(_1,{add:function(_53,_54,fp){if(!_53){return;}var _56=_1._add(_53,_54,fp);if(_1._normalizeEventName(_54)=="keypress"){_56._stealthKeyDownHandle=_1._add(_53,"keydown",function(evt){var k=evt.keyCode;var _59=(k!=13)&&(k!=32)&&(k!=27)&&(k<48||k>90)&&(k<96||k>111)&&(k<186||k>192)&&(k<219||k>222);if(_59||evt.ctrlKey){var c=_59?0:k;if(evt.ctrlKey){if(k==3||k==13){return;}else{if(c>95&&c<106){c-=48;}else{if((!evt.shiftKey)&&(c>=65&&c<=90)){c+=32;}else{c=_1._punctMap[c]||c;}}}}var _5b=_1._synthesizeEvent(evt,{type:"keypress",faux:true,charCode:c});fp.call(evt.currentTarget,_5b);}});}return _56;},remove:function(_5c,_5d,_5e){if(_5c){if(_5e._stealthKeyDownHandle){_1._remove(_5c,"keydown",_5e._stealthKeyDownHandle);}_1._remove(_5c,_5d,_5e);}},_fixEvent:function(evt,_60){switch(evt.type){case "keypress":if(evt.faux){return evt;}var c=evt.charCode;c=c>=32?c:0;return _1._synthesizeEvent(evt,{charCode:c,faux:true});}return evt;}});}})();if(dojo.isIE){dojo._ieDispatcher=function(_62,_63){var ap=Array.prototype,h=dojo._ie_listener.handlers,c=_62.callee,ls=c[dojo._ieListenersName],t=h[c.target];var r=t&&t.apply(_63,_62);var lls=[].concat(ls);for(var i in lls){if(!(i in ap)){h[lls[i]].apply(_63,_62);}}return r;};dojo._getIeDispatcher=function(){return new Function(dojo._scopeName+"._ieDispatcher(arguments, this)");};dojo._event_listener._fixCallback=function(fp){var f=dojo._event_listener._fixEvent;return function(e){return fp.call(this,f(e,this));};};}}././@LongLink0000000000000000000000000000016200000000000011564 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dojo/_base/window.jslibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dojo/_b0000644000000000000000000000166111360615632027175 0ustar /* Copyright (c) 2004-2008, The Dojo Foundation All Rights Reserved. Available via Academic Free License >= 2.1 OR the modified BSD license. see: http://dojotoolkit.org/license for details */ if(!dojo._hasResource["dojo._base.window"]){dojo._hasResource["dojo._base.window"]=true;dojo.provide("dojo._base.window");dojo.doc=window["document"]||null;dojo.body=function(){return dojo.doc.body||dojo.doc.getElementsByTagName("body")[0];};dojo.setContext=function(_1,_2){dojo.global=_1;dojo.doc=_2;};dojo._fireCallback=function(_3,_4,_5){if(_4&&dojo.isString(_3)){_3=_4[_3];}return _3.apply(_4,_5||[]);};dojo.withGlobal=function(_6,_7,_8,_9){var _a;var _b=dojo.global;var _c=dojo.doc;try{dojo.setContext(_6,_6.document);_a=dojo._fireCallback(_7,_8,_9);}finally{dojo.setContext(_b,_c);}return _a;};dojo.withDoc=function(_d,_e,_f,_10){var _11;var _12=dojo.doc;try{dojo.doc=_d;_11=dojo._fireCallback(_e,_f,_10);}finally{dojo.doc=_12;}return _11;};}././@LongLink0000000000000000000000000000016100000000000011563 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dojo/_base/Color.jslibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dojo/_b0000644000000000000000000000463311360615636027203 0ustar /* Copyright (c) 2004-2008, The Dojo Foundation All Rights Reserved. Available via Academic Free License >= 2.1 OR the modified BSD license. see: http://dojotoolkit.org/license for details */ if(!dojo._hasResource["dojo._base.Color"]){dojo._hasResource["dojo._base.Color"]=true;dojo.provide("dojo._base.Color");dojo.require("dojo._base.array");dojo.require("dojo._base.lang");dojo.Color=function(_1){if(_1){this.setColor(_1);}};dojo.Color.named={black:[0,0,0],silver:[192,192,192],gray:[128,128,128],white:[255,255,255],maroon:[128,0,0],red:[255,0,0],purple:[128,0,128],fuchsia:[255,0,255],green:[0,128,0],lime:[0,255,0],olive:[128,128,0],yellow:[255,255,0],navy:[0,0,128],blue:[0,0,255],teal:[0,128,128],aqua:[0,255,255]};dojo.extend(dojo.Color,{r:255,g:255,b:255,a:1,_set:function(r,g,b,a){var t=this;t.r=r;t.g=g;t.b=b;t.a=a;},setColor:function(_7){var d=dojo;if(d.isString(_7)){d.colorFromString(_7,this);}else{if(d.isArray(_7)){d.colorFromArray(_7,this);}else{this._set(_7.r,_7.g,_7.b,_7.a);if(!(_7 instanceof d.Color)){this.sanitize();}}}return this;},sanitize:function(){return this;},toRgb:function(){var t=this;return [t.r,t.g,t.b];},toRgba:function(){var t=this;return [t.r,t.g,t.b,t.a];},toHex:function(){var _b=dojo.map(["r","g","b"],function(x){var s=this[x].toString(16);return s.length<2?"0"+s:s;},this);return "#"+_b.join("");},toCss:function(_e){var t=this,rgb=t.r+", "+t.g+", "+t.b;return (_e?"rgba("+rgb+", "+t.a:"rgb("+rgb)+")";},toString:function(){return this.toCss(true);}});dojo.blendColors=function(_11,end,_13,obj){var d=dojo,t=obj||new dojo.Color();d.forEach(["r","g","b","a"],function(x){t[x]=_11[x]+(end[x]-_11[x])*_13;if(x!="a"){t[x]=Math.round(t[x]);}});return t.sanitize();};dojo.colorFromRgb=function(_18,obj){var m=_18.toLowerCase().match(/^rgba?\(([\s\.,0-9]+)\)/);return m&&dojo.colorFromArray(m[1].split(/\s*,\s*/),obj);};dojo.colorFromHex=function(_1b,obj){var d=dojo,t=obj||new d.Color(),_1f=(_1b.length==4)?4:8,_20=(1<<_1f)-1;_1b=Number("0x"+_1b.substr(1));if(isNaN(_1b)){return null;}d.forEach(["b","g","r"],function(x){var c=_1b&_20;_1b>>=_1f;t[x]=_1f==4?17*c:c;});t.a=1;return t;};dojo.colorFromArray=function(a,obj){var t=obj||new dojo.Color();t._set(Number(a[0]),Number(a[1]),Number(a[2]),Number(a[3]));if(isNaN(t.a)){t.a=1;}return t.sanitize();};dojo.colorFromString=function(str,obj){var a=dojo.Color.named[str];return a&&dojo.colorFromArray(a,obj)||dojo.colorFromRgb(str,obj)||dojo.colorFromHex(str,obj);};}././@LongLink0000000000000000000000000000016000000000000011562 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dojo/_base/json.jslibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dojo/_b0000644000000000000000000000306411360615644027177 0ustar /* Copyright (c) 2004-2008, The Dojo Foundation All Rights Reserved. Available via Academic Free License >= 2.1 OR the modified BSD license. see: http://dojotoolkit.org/license for details */ if(!dojo._hasResource["dojo._base.json"]){dojo._hasResource["dojo._base.json"]=true;dojo.provide("dojo._base.json");dojo.fromJson=function(_1){return eval("("+_1+")");};dojo._escapeString=function(_2){return ("\""+_2.replace(/(["\\])/g,"\\$1")+"\"").replace(/[\f]/g,"\\f").replace(/[\b]/g,"\\b").replace(/[\n]/g,"\\n").replace(/[\t]/g,"\\t").replace(/[\r]/g,"\\r");};dojo.toJsonIndentStr="\t";dojo.toJson=function(it,_4,_5){if(it===undefined){return "undefined";}var _6=typeof it;if(_6=="number"||_6=="boolean"){return it+"";}if(it===null){return "null";}if(dojo.isString(it)){return dojo._escapeString(it);}var _7=arguments.callee;var _8;_5=_5||"";var _9=_4?_5+dojo.toJsonIndentStr:"";var tf=it.__json__||it.json;if(dojo.isFunction(tf)){_8=tf.call(it);if(it!==_8){return _7(_8,_4,_9);}}if(it.nodeType&&it.cloneNode){throw new Error("Can't serialize DOM nodes");}var _b=_4?" ":"";var _c=_4?"\n":"";if(dojo.isArray(it)){var _d=dojo.map(it,function(_e){var _f=_7(_e,_4,_9);if(typeof _f!="string"){_f="undefined";}return _c+_9+_f;});return "["+_d.join(","+_b)+_c+_5+"]";}if(_6=="function"){return null;}var _10=[],key;for(key in it){var _12,val;if(typeof key=="number"){_12="\""+key+"\"";}else{if(typeof key=="string"){_12=dojo._escapeString(key);}else{continue;}}val=_7(it[key],_4,_9);if(typeof val!="string"){continue;}_10.push(_c+_9+_12+":"+_b+val);}return "{"+_10.join(","+_b)+_c+_5+"}";};}././@LongLink0000000000000000000000000000016100000000000011563 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dojo/_base/array.jslibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dojo/_b0000644000000000000000000000314611360615634027177 0ustar /* Copyright (c) 2004-2008, The Dojo Foundation All Rights Reserved. Available via Academic Free License >= 2.1 OR the modified BSD license. see: http://dojotoolkit.org/license for details */ if(!dojo._hasResource["dojo._base.array"]){dojo._hasResource["dojo._base.array"]=true;dojo.require("dojo._base.lang");dojo.provide("dojo._base.array");(function(){var _1=function(_2,_3,cb){return [dojo.isString(_2)?_2.split(""):_2,_3||dojo.global,dojo.isString(cb)?new Function("item","index","array",cb):cb];};dojo.mixin(dojo,{indexOf:function(_5,_6,_7,_8){var _9=1,_a=_5.length||0,i=0;if(_8){i=_a-1;_9=_a=-1;}if(_7!=undefined){i=_7;}if((_8&&i>_a)||i<_a){for(;i!=_a;i+=_9){if(_5[i]==_6){return i;}}}return -1;},lastIndexOf:function(_c,_d,_e){return dojo.indexOf(_c,_d,_e,true);},forEach:function(_f,_10,_11){if(!_f||!_f.length){return;}var _p=_1(_f,_11,_10);_f=_p[0];for(var i=0,l=_f.length;i= 2.1 OR the modified BSD license. see: http://dojotoolkit.org/license for details */ if(!dojo._hasResource["dojo._base.query"]){dojo._hasResource["dojo._base.query"]=true;dojo.provide("dojo._base.query");dojo.require("dojo._base.NodeList");(function(){var d=dojo;var _2=dojo.isIE?"children":"childNodes";var _3=false;var _4=function(_5){if(">~+".indexOf(_5.charAt(_5.length-1))>=0){_5+=" *";}_5+=" ";var ts=function(s,e){return d.trim(_5.slice(s,e));};var _9=[];var _a=-1;var _b=-1;var _c=-1;var _d=-1;var _e=-1;var _f=-1;var _10=-1;var lc="";var cc="";var _13;var x=0;var ql=_5.length;var _16=null;var _cp=null;var _18=function(){if(_10>=0){var tv=(_10==x)?null:ts(_10,x);_16[(">~+".indexOf(tv)<0)?"tag":"oper"]=tv;_10=-1;}};var _1a=function(){if(_f>=0){_16.id=ts(_f,x).replace(/\\/g,"");_f=-1;}};var _1b=function(){if(_e>=0){_16.classes.push(ts(_e+1,x).replace(/\\/g,""));_e=-1;}};var _1c=function(){_1a();_18();_1b();};for(;lc=cc,cc=_5.charAt(x),x=0){if(cc=="]"){if(!_cp.attr){_cp.attr=ts(_a+1,x);}else{_cp.matchFor=ts((_c||_a+1),x);}var cmf=_cp.matchFor;if(cmf){if((cmf.charAt(0)=="\"")||(cmf.charAt(0)=="'")){_cp.matchFor=cmf.substring(1,cmf.length-1);}}_16.attrs.push(_cp);_cp=null;_a=_c=-1;}else{if(cc=="="){var _1e=("|~^$*".indexOf(lc)>=0)?lc:"";_cp.type=_1e+cc;_cp.attr=ts(_a+1,x-_1e.length);_c=x+1;}}}else{if(_b>=0){if(cc==")"){if(_d>=0){_cp.value=ts(_b+1,x);}_d=_b=-1;}}else{if(cc=="#"){_1c();_f=x+1;}else{if(cc=="."){_1c();_e=x;}else{if(cc==":"){_1c();_d=x;}else{if(cc=="["){_1c();_a=x;_cp={};}else{if(cc=="("){if(_d>=0){_cp={name:ts(_d+1,x),value:null};_16.pseudos.push(_cp);}_b=x;}else{if(cc==" "&&lc!=cc){_1c();if(_d>=0){_16.pseudos.push({name:ts(_d+1,x)});}_16.hasLoops=(_16.pseudos.length||_16.attrs.length||_16.classes.length);_16.query=ts(_13,x);_16.otag=_16.tag=(_16["oper"])?null:(_16.tag||"*");if(_16.tag){_16.tag=_16.tag.toUpperCase();}_9.push(_16);_16=null;}}}}}}}}}return _9;};var _1f={"*=":function(_20,_21){return "[contains(@"+_20+", '"+_21+"')]";},"^=":function(_22,_23){return "[starts-with(@"+_22+", '"+_23+"')]";},"$=":function(_24,_25){return "[substring(@"+_24+", string-length(@"+_24+")-"+(_25.length-1)+")='"+_25+"']";},"~=":function(_26,_27){return "[contains(concat(' ',@"+_26+",' '), ' "+_27+" ')]";},"|=":function(_28,_29){return "[contains(concat(' ',@"+_28+",' '), ' "+_29+"-')]";},"=":function(_2a,_2b){return "[@"+_2a+"='"+_2b+"']";}};var _2c=function(_2d,_2e,_2f,_30){d.forEach(_2e.attrs,function(_31){var _32;if(_31.type&&_2d[_31.type]){_32=_2d[_31.type](_31.attr,_31.matchFor);}else{if(_31.attr.length){_32=_2f(_31.attr);}}if(_32){_30(_32);}});};var _33=function(_34){var _35=".";var _36=_4(d.trim(_34));while(_36.length){var tqp=_36.shift();var _38;var _39="";if(tqp.oper==">"){_38="/";tqp=_36.shift();}else{if(tqp.oper=="~"){_38="/following-sibling::";tqp=_36.shift();}else{if(tqp.oper=="+"){_38="/following-sibling::";_39="[position()=1]";tqp=_36.shift();}else{_38="//";}}}_35+=_38+tqp.tag+_39;if(tqp.id){_35+="[@id='"+tqp.id+"'][1]";}d.forEach(tqp.classes,function(cn){var cnl=cn.length;var _3c=" ";if(cn.charAt(cnl-1)=="*"){_3c="";cn=cn.substr(0,cnl-1);}_35+="[contains(concat(' ',@class,' '), ' "+cn+_3c+"')]";});_2c(_1f,tqp,function(_3d){return "[@"+_3d+"]";},function(_3e){_35+=_3e;});}return _35;};var _3f={};var _40=function(_41){if(_3f[_41]){return _3f[_41];}var doc=d.doc;var _43=_33(_41);var tf=function(_45){var ret=[];var _47;var _48=doc;if(_45){_48=(_45.nodeType==9)?_45:_45.ownerDocument;}try{_47=_48.evaluate(_43,_45,null,XPathResult.ANY_TYPE,null);}catch(e){console.debug("failure in exprssion:",_43,"under:",_45);console.debug(e);}var _49=_47.iterateNext();while(_49){ret.push(_49);_49=_47.iterateNext();}return ret;};return _3f[_41]=tf;};var _4a={};var _4b={};var _4c=function(_4d,_4e){if(!_4d){return _4e;}if(!_4e){return _4d;}return function(){return _4d.apply(window,arguments)&&_4e.apply(window,arguments);};};var _4f=function(_50){var ret=[];var te,x=0,_54=_50[_2];while((te=_54[x++])){if(te.nodeType==1){ret.push(te);}}return ret;};var _55=function(_56,_57){var ret=[];var te=_56;while(te=te.nextSibling){if(te.nodeType==1){ret.push(te);if(_57){break;}}}return ret;};var _5a=function(_5b,_5c,_5d,idx){var _5f=idx+1;var _60=(_5c.length==_5f);var tqp=_5c[idx];if(tqp.oper){var ecn=(tqp.oper==">")?_4f(_5b):_55(_5b,(tqp.oper=="+"));if(!ecn||!ecn.length){return;}_5f++;_60=(_5c.length==_5f);var tf=_64(_5c[idx+1]);for(var x=0,_66=ecn.length,te;x<_66,te=ecn[x];x++){if(tf(te)){if(_60){_5d.push(te);}else{_5a(te,_5c,_5d,_5f);}}}}var _68=_69(tqp)(_5b);if(_60){while(_68.length){_5d.push(_68.shift());}}else{while(_68.length){_5a(_68.shift(),_5c,_5d,_5f);}}};var _6a=function(_6b,_6c){var ret=[];var x=_6b.length-1,te;while((te=_6b[x--])){_5a(te,_6c,ret,0);}return ret;};var _64=function(q){if(_4a[q.query]){return _4a[q.query];}var ff=null;if(q.tag){if(q.tag=="*"){ff=_4c(ff,function(_72){return (_72.nodeType==1);});}else{ff=_4c(ff,function(_73){return ((_73.nodeType==1)&&(q[_3?"otag":"tag"]==_73.tagName));});}}if(q.id){ff=_4c(ff,function(_74){return ((_74.nodeType==1)&&(_74.id==q.id));});}if(q.hasLoops){ff=_4c(ff,_75(q));}return _4a[q.query]=ff;};var _76=function(_77){var pn=_77.parentNode;var pnc=pn.childNodes;var _7a=-1;var _7b=pn.firstChild;if(!_7b){return _7a;}var ci=_77["__cachedIndex"];var cl=pn["__cachedLength"];if(((typeof cl=="number")&&(cl!=pnc.length))||(typeof ci!="number")){pn["__cachedLength"]=pnc.length;var idx=1;do{if(_7b===_77){_7a=idx;}if(_7b.nodeType==1){_7b["__cachedIndex"]=idx;idx++;}_7b=_7b.nextSibling;}while(_7b);}else{_7a=ci;}return _7a;};var _7f=0;var _80="";var _81=function(_82,_83){if(_83=="class"){return _82.className||_80;}if(_83=="for"){return _82.htmlFor||_80;}if(_83=="style"){return _82.style.cssText||_80;}return (_3?_82.getAttribute(_83):_82.getAttribute(_83,2))||_80;};var _84={"*=":function(_85,_86){return function(_87){return (_81(_87,_85).indexOf(_86)>=0);};},"^=":function(_88,_89){return function(_8a){return (_81(_8a,_88).indexOf(_89)==0);};},"$=":function(_8b,_8c){var _8d=" "+_8c;return function(_8e){var ea=" "+_81(_8e,_8b);return (ea.lastIndexOf(_8c)==(ea.length-_8c.length));};},"~=":function(_90,_91){var _92=" "+_91+" ";return function(_93){var ea=" "+_81(_93,_90)+" ";return (ea.indexOf(_92)>=0);};},"|=":function(_95,_96){var _97=" "+_96+"-";return function(_98){var ea=" "+(_98.getAttribute(_95,2)||"");return ((ea==_96)||(ea.indexOf(_97)==0));};},"=":function(_9a,_9b){return function(_9c){return (_81(_9c,_9a)==_9b);};}};var _9d={"checked":function(_9e,_9f){return function(_a0){return !!d.attr(_a0,"checked");};},"first-child":function(_a1,_a2){return function(_a3){if(_a3.nodeType!=1){return false;}var fc=_a3.previousSibling;while(fc&&(fc.nodeType!=1)){fc=fc.previousSibling;}return (!fc);};},"last-child":function(_a5,_a6){return function(_a7){if(_a7.nodeType!=1){return false;}var nc=_a7.nextSibling;while(nc&&(nc.nodeType!=1)){nc=nc.nextSibling;}return (!nc);};},"empty":function(_a9,_aa){return function(_ab){var cn=_ab.childNodes;var cnl=_ab.childNodes.length;for(var x=cnl-1;x>=0;x--){var nt=cn[x].nodeType;if((nt==1)||(nt==3)){return false;}}return true;};},"contains":function(_b0,_b1){return function(_b2){if(_b1.charAt(0)=="\""||_b1.charAt(0)=="'"){_b1=_b1.substr(1,_b1.length-2);}return (_b2.innerHTML.indexOf(_b1)>=0);};},"not":function(_b3,_b4){var ntf=_64(_4(_b4)[0]);return function(_b6){return (!ntf(_b6));};},"nth-child":function(_b7,_b8){var pi=parseInt;if(_b8=="odd"){_b8="2n+1";}else{if(_b8=="even"){_b8="2n";}}if(_b8.indexOf("n")!=-1){var _ba=_b8.split("n",2);var _bb=_ba[0]?(_ba[0]=="-"?-1:pi(_ba[0])):1;var idx=_ba[1]?pi(_ba[1]):0;var lb=0,ub=-1;if(_bb>0){if(idx<0){idx=(idx%_bb)&&(_bb+(idx%_bb));}else{if(idx>0){if(idx>=_bb){lb=idx-idx%_bb;}idx=idx%_bb;}}}else{if(_bb<0){_bb*=-1;if(idx>0){ub=idx;idx=idx%_bb;}}}if(_bb>0){return function(_bf){var i=_76(_bf);return (i>=lb)&&(ub<0||i<=ub)&&((i%_bb)==idx);};}else{_b8=idx;}}var _c1=pi(_b8);return function(_c2){return (_76(_c2)==_c1);};}};var _c3=(d.isIE)?function(_c4){var clc=_c4.toLowerCase();return function(_c6){return (_3?_c6.getAttribute(_c4):_c6[_c4]||_c6[clc]);};}:function(_c7){return function(_c8){return (_c8&&_c8.getAttribute&&_c8.hasAttribute(_c7));};};var _75=function(_c9){var _ca=(_4b[_c9.query]||_4a[_c9.query]);if(_ca){return _ca;}var ff=null;if(_c9.id){if(_c9.tag!="*"){ff=_4c(ff,function(_cc){return (_cc.tagName==_c9[_3?"otag":"tag"]);});}}d.forEach(_c9.classes,function(_cd,idx,arr){var _d0=_cd.charAt(_cd.length-1)=="*";if(_d0){_cd=_cd.substr(0,_cd.length-1);}var re=new RegExp("(?:^|\\s)"+_cd+(_d0?".*":"")+"(?:\\s|$)");ff=_4c(ff,function(_d2){return re.test(_d2.className);});ff.count=idx;});d.forEach(_c9.pseudos,function(_d3){if(_9d[_d3.name]){ff=_4c(ff,_9d[_d3.name](_d3.name,_d3.value));}});_2c(_84,_c9,_c3,function(_d4){ff=_4c(ff,_d4);});if(!ff){ff=function(){return true;};}return _4b[_c9.query]=ff;};var _d5={};var _69=function(_d6,_d7){var _d8=_d5[_d6.query];if(_d8){return _d8;}if(_d6.id&&!_d6.hasLoops&&!_d6.tag){return _d5[_d6.query]=function(_d9){return [d.byId(_d6.id)];};}var _da=_75(_d6);var _db;if(_d6.tag&&_d6.id&&!_d6.hasLoops){_db=function(_dc){var te=d.byId(_d6.id,(_dc.ownerDocument||_dc));if(_da(te)){return [te];}};}else{var _de;if(!_d6.hasLoops){_db=function(_df){var ret=[];var te,x=0,_de=_df.getElementsByTagName(_d6[_3?"otag":"tag"]);while((te=_de[x++])){ret.push(te);}return ret;};}else{_db=function(_e3){var ret=[];var te,x=0,_de=_e3.getElementsByTagName(_d6[_3?"otag":"tag"]);while((te=_de[x++])){if(_da(te)){ret.push(te);}}return ret;};}}return _d5[_d6.query]=_db;};var _e7={};var _e8={"*":d.isIE?function(_e9){return _e9.all;}:function(_ea){return _ea.getElementsByTagName("*");},"~":_55,"+":function(_eb){return _55(_eb,true);},">":_4f};var _ec=function(_ed){var _ee=_4(d.trim(_ed));if(_ee.length==1){var tt=_69(_ee[0]);tt.nozip=true;return tt;}var sqf=function(_f1){var _f2=_ee.slice(0);var _f3;if(_f2[0].oper==">"){_f3=[_f1];}else{_f3=_69(_f2.shift())(_f1);}return _6a(_f3,_f2);};return sqf;};var _f4=((document["evaluate"]&&!d.isSafari)?function(_f5,_f6){var _f7=_f5.split(" ");if((!_3)&&(document["evaluate"])&&(_f5.indexOf(":")==-1)&&(_f5.indexOf("+")==-1)){if(((_f7.length>2)&&(_f5.indexOf(">")==-1))||(_f7.length>3)||(_f5.indexOf("[")>=0)||((1==_f7.length)&&(0<=_f5.indexOf(".")))){return _40(_f5);}}return _ec(_f5);}:_ec);var _f8=function(_f9){if(_e8[_f9]){return _e8[_f9];}if(0>_f9.indexOf(",")){return _e8[_f9]=_f4(_f9);}else{var _fa=_f9.split(/\s*,\s*/);var tf=function(_fc){var _fd=0;var ret=[];var tp;while((tp=_fa[_fd++])){ret=ret.concat(_f4(tp,tp.indexOf(" "))(_fc));}return ret;};return _e8[_f9]=tf;}};var _100=0;var _zip=function(arr){if(arr&&arr.nozip){return d.NodeList._wrap(arr);}var ret=new d.NodeList();if(!arr){return ret;}if(arr[0]){ret.push(arr[0]);}if(arr.length<2){return ret;}_100++;if(d.isIE&&_3){var _104=_100+"";arr[0].setAttribute("_zipIdx",_104);for(var x=1,te;te=arr[x];x++){if(arr[x].getAttribute("_zipIdx")!=_104){ret.push(te);}te.setAttribute("_zipIdx",_104);}}else{arr[0]["_zipIdx"]=_100;for(var x=1,te;te=arr[x];x++){if(arr[x]["_zipIdx"]!=_100){ret.push(te);}te["_zipIdx"]=_100;}}return ret;};d.query=function(_107,root){if(_107.constructor==d.NodeList){return _107;}if(!d.isString(_107)){return new d.NodeList(_107);}if(d.isString(root)){root=d.byId(root);}root=root||d.doc;var od=root.ownerDocument||root.documentElement;_3=(root.contentType&&root.contentType=="application/xml")||(!!od)&&(d.isIE?od.xml:(root.xmlVersion||od.xmlVersion));return _zip(_f8(_107)(root));};d.query.pseudos=_9d;d._filterQueryResult=function(_10a,_10b){var tnl=new d.NodeList();var ff=(_10b)?_64(_4(_10b)[0]):function(){return true;};for(var x=0,te;te=_10a[x];x++){if(ff(te)){tnl.push(te);}}return tnl;};})();}././@LongLink0000000000000000000000000000016300000000000011565 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dojo/_base/browser.jslibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dojo/_b0000644000000000000000000000117411360615640027173 0ustar /* Copyright (c) 2004-2008, The Dojo Foundation All Rights Reserved. Available via Academic Free License >= 2.1 OR the modified BSD license. see: http://dojotoolkit.org/license for details */ if(!dojo._hasResource["dojo._base.browser"]){dojo._hasResource["dojo._base.browser"]=true;dojo.provide("dojo._base.browser");dojo.require("dojo._base.window");dojo.require("dojo._base.event");dojo.require("dojo._base.html");dojo.require("dojo._base.NodeList");dojo.require("dojo._base.query");dojo.require("dojo._base.xhr");dojo.require("dojo._base.fx");if(dojo.config.require){dojo.forEach(dojo.config.require,"dojo['require'](item);");}}././@LongLink0000000000000000000000000000015700000000000011570 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dojo/_base/xhr.jslibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dojo/_b0000644000000000000000000001611011360615636027174 0ustar /* Copyright (c) 2004-2008, The Dojo Foundation All Rights Reserved. Available via Academic Free License >= 2.1 OR the modified BSD license. see: http://dojotoolkit.org/license for details */ if(!dojo._hasResource["dojo._base.xhr"]){dojo._hasResource["dojo._base.xhr"]=true;dojo.provide("dojo._base.xhr");dojo.require("dojo._base.Deferred");dojo.require("dojo._base.json");dojo.require("dojo._base.lang");dojo.require("dojo._base.query");(function(){var _d=dojo;function setValue(_2,_3,_4){var _5=_2[_3];if(_d.isString(_5)){_2[_3]=[_5,_4];}else{if(_d.isArray(_5)){_5.push(_4);}else{_2[_3]=_4;}}};dojo.formToObject=function(_6){var _7={};var _8="file|submit|image|reset|button|";_d.forEach(dojo.byId(_6).elements,function(_9){var _a=_9.name;var _b=(_9.type||"").toLowerCase();if(_a&&_b&&_8.indexOf(_b)==-1&&!_9.disabled){if(_b=="radio"||_b=="checkbox"){if(_9.checked){setValue(_7,_a,_9.value);}}else{if(_9.multiple){_7[_a]=[];_d.query("option",_9).forEach(function(_c){if(_c.selected){setValue(_7,_a,_c.value);}});}else{setValue(_7,_a,_9.value);if(_b=="image"){_7[_a+".x"]=_7[_a+".y"]=_7[_a].x=_7[_a].y=0;}}}}});return _7;};dojo.objectToQuery=function(_d){var _e=encodeURIComponent;var _f=[];var _10={};for(var _11 in _d){var _12=_d[_11];if(_12!=_10[_11]){var _13=_e(_11)+"=";if(_d.isArray(_12)){for(var i=0;i<_12.length;i++){_f.push(_13+_e(_12[i]));}}else{_f.push(_13+_e(_12));}}}return _f.join("&");};dojo.formToQuery=function(_15){return _d.objectToQuery(_d.formToObject(_15));};dojo.formToJson=function(_16,_17){return _d.toJson(_d.formToObject(_16),_17);};dojo.queryToObject=function(str){var ret={};var qp=str.split("&");var dec=decodeURIComponent;_d.forEach(qp,function(_1c){if(_1c.length){var _1d=_1c.split("=");var _1e=dec(_1d.shift());var val=dec(_1d.join("="));if(_d.isString(ret[_1e])){ret[_1e]=[ret[_1e]];}if(_d.isArray(ret[_1e])){ret[_1e].push(val);}else{ret[_1e]=val;}}});return ret;};dojo._blockAsync=false;dojo._contentHandlers={"text":function(xhr){return xhr.responseText;},"json":function(xhr){return _d.fromJson(xhr.responseText||null);},"json-comment-filtered":function(xhr){if(!dojo.config.useCommentedJson){console.warn("Consider using the standard mimetype:application/json."+" json-commenting can introduce security issues. To"+" decrease the chances of hijacking, use the standard the 'json' handler and"+" prefix your json with: {}&&\n"+"Use djConfig.useCommentedJson=true to turn off this message.");}var _23=xhr.responseText;var _24=_23.indexOf("/*");var _25=_23.lastIndexOf("*/");if(_24==-1||_25==-1){throw new Error("JSON was not comment filtered");}return _d.fromJson(_23.substring(_24+2,_25));},"javascript":function(xhr){return _d.eval(xhr.responseText);},"xml":function(xhr){var _28=xhr.responseXML;if(_d.isIE&&(!_28||_28.documentElement==null)){_d.forEach(["MSXML2","Microsoft","MSXML","MSXML3"],function(_29){try{var dom=new ActiveXObject(_29+".XMLDOM");dom.async=false;dom.loadXML(xhr.responseText);_28=dom;}catch(e){}});}return _28;}};dojo._contentHandlers["json-comment-optional"]=function(xhr){var _2c=_d._contentHandlers;if(xhr.responseText&&xhr.responseText.indexOf("/*")!=-1){return _2c["json-comment-filtered"](xhr);}else{return _2c["json"](xhr);}};dojo._ioSetArgs=function(_2d,_2e,_2f,_30){var _31={args:_2d,url:_2d.url};var _32=null;if(_2d.form){var _33=_d.byId(_2d.form);var _34=_33.getAttributeNode("action");_31.url=_31.url||(_34?_34.value:null);_32=_d.formToObject(_33);}var _35=[{}];if(_32){_35.push(_32);}if(_2d.content){_35.push(_2d.content);}if(_2d.preventCache){_35.push({"dojo.preventCache":new Date().valueOf()});}_31.query=_d.objectToQuery(_d.mixin.apply(null,_35));_31.handleAs=_2d.handleAs||"text";var d=new _d.Deferred(_2e);d.addCallbacks(_2f,function(_37){return _30(_37,d);});var ld=_2d.load;if(ld&&_d.isFunction(ld)){d.addCallback(function(_39){return ld.call(_2d,_39,_31);});}var err=_2d.error;if(err&&_d.isFunction(err)){d.addErrback(function(_3b){return err.call(_2d,_3b,_31);});}var _3c=_2d.handle;if(_3c&&_d.isFunction(_3c)){d.addBoth(function(_3d){return _3c.call(_2d,_3d,_31);});}d.ioArgs=_31;return d;};var _3e=function(dfd){dfd.canceled=true;var xhr=dfd.ioArgs.xhr;var _at=typeof xhr.abort;if(_at=="function"||_at=="object"||_at=="unknown"){xhr.abort();}var err=dfd.ioArgs.error;if(!err){err=new Error("xhr cancelled");err.dojoType="cancel";}return err;};var _43=function(dfd){var ret=_d._contentHandlers[dfd.ioArgs.handleAs](dfd.ioArgs.xhr);return (typeof ret=="undefined")?null:ret;};var _46=function(_47,dfd){console.debug(_47);return _47;};var _49=null;var _4a=[];var _4b=function(){var now=(new Date()).getTime();if(!_d._blockAsync){for(var i=0,tif;i<_4a.length&&(tif=_4a[i]);i++){var dfd=tif.dfd;var _50=function(){if(!dfd||dfd.canceled||!tif.validCheck(dfd)){_4a.splice(i--,1);}else{if(tif.ioCheck(dfd)){_4a.splice(i--,1);tif.resHandle(dfd);}else{if(dfd.startTime){if(dfd.startTime+(dfd.ioArgs.args.timeout||0)= 2.1 OR the modified BSD license. see: http://dojotoolkit.org/license for details */ if(!dojo._hasResource["dojo._base.lang"]){dojo._hasResource["dojo._base.lang"]=true;dojo.provide("dojo._base.lang");dojo.isString=function(it){return !!arguments.length&&it!=null&&(typeof it=="string"||it instanceof String);};dojo.isArray=function(it){return it&&(it instanceof Array||typeof it=="array");};dojo.isFunction=(function(){var _3=function(it){return it&&(typeof it=="function"||it instanceof Function);};return dojo.isSafari?function(it){if(typeof it=="function"&&it=="[object NodeList]"){return false;}return _3(it);}:_3;})();dojo.isObject=function(it){return it!==undefined&&(it===null||typeof it=="object"||dojo.isArray(it)||dojo.isFunction(it));};dojo.isArrayLike=function(it){var d=dojo;return it&&it!==undefined&&!d.isString(it)&&!d.isFunction(it)&&!(it.tagName&&it.tagName.toLowerCase()=="form")&&(d.isArray(it)||isFinite(it.length));};dojo.isAlien=function(it){return it&&!dojo.isFunction(it)&&/\{\s*\[native code\]\s*\}/.test(String(it));};dojo.extend=function(_a,_b){for(var i=1,l=arguments.length;i2){return dojo._hitchArgs.apply(dojo,arguments);}if(!_15){_15=_14;_14=null;}if(dojo.isString(_15)){_14=_14||dojo.global;if(!_14[_15]){throw (["dojo.hitch: scope[\"",_15,"\"] is null (scope=\"",_14,"\")"].join(""));}return function(){return _14[_15].apply(_14,arguments||[]);};}return !_14?_15:function(){return _15.apply(_14,arguments||[]);};};dojo.delegate=dojo._delegate=(function(){function TMP(){};return function(obj,_17){TMP.prototype=obj;var tmp=new TMP();if(_17){dojo._mixin(tmp,_17);}return tmp;};})();(function(){var _19=function(obj,_1b,_1c){return (_1c||[]).concat(Array.prototype.slice.call(obj,_1b||0));};var _1d=function(obj,_1f,_20){var arr=_20||[];for(var x=_1f||0;x= 2.1 OR the modified BSD license. see: http://dojotoolkit.org/license for details */ if(!dojo._hasResource["dojo._base.NodeList"]){dojo._hasResource["dojo._base.NodeList"]=true;dojo.provide("dojo._base.NodeList");dojo.require("dojo._base.lang");dojo.require("dojo._base.array");(function(){var d=dojo;var _2=function(_3){_3.constructor=dojo.NodeList;dojo._mixin(_3,dojo.NodeList.prototype);return _3;};var _4=function(_5,_6){return function(){var _a=arguments;var aa=d._toArray(_a,0,[null]);var s=this.map(function(i){aa[0]=i;return d[_5].apply(d,aa);});return (_6||((_a.length>1)||!d.isString(_a[0])))?this:s;};};dojo.NodeList=function(){return _2(Array.apply(null,arguments));};dojo.NodeList._wrap=_2;dojo.extend(dojo.NodeList,{slice:function(){var a=d._toArray(arguments);return _2(a.slice.apply(this,a));},splice:function(){var a=d._toArray(arguments);return _2(a.splice.apply(this,a));},concat:function(){var a=d._toArray(arguments,0,[this]);return _2(a.concat.apply([],a));},indexOf:function(_e,_f){return d.indexOf(this,_e,_f);},lastIndexOf:function(){return d.lastIndexOf.apply(d,d._toArray(arguments,0,[this]));},every:function(_10,_11){return d.every(this,_10,_11);},some:function(_12,_13){return d.some(this,_12,_13);},map:function(_14,obj){return d.map(this,_14,obj,d.NodeList);},forEach:function(_16,_17){d.forEach(this,_16,_17);return this;},coords:function(){return d.map(this,d.coords);},attr:_4("attr"),style:_4("style"),addClass:_4("addClass",true),removeClass:_4("removeClass",true),toggleClass:_4("toggleClass",true),connect:_4("connect",true),place:function(_18,_19){var _1a=d.query(_18)[0];return this.forEach(function(i){d.place(i,_1a,_19);});},orphan:function(_1c){return (_1c?d._filterQueryResult(this,_1c):this).forEach("if(item.parentNode){ item.parentNode.removeChild(item); }");},adopt:function(_1d,_1e){var _1f=this[0];return d.query(_1d).forEach(function(ai){d.place(ai,_1f,_1e||"last");});},query:function(_21){if(!_21){return this;}var ret=d.NodeList();this.forEach(function(_23){ret=ret.concat(d.query(_21,_23).filter(function(_24){return (_24!==undefined);}));});return ret;},filter:function(_25){var _26=this;var _a=arguments;var r=d.NodeList();var rp=function(t){if(t!==undefined){r.push(t);}};if(d.isString(_25)){_26=d._filterQueryResult(this,_a[0]);if(_a.length==1){return _26;}_a.shift();}d.forEach(d.filter(_26,_a[0],_a[1]),rp);return r;},addContent:function(_2b,_2c){var ta=d.doc.createElement("span");if(d.isString(_2b)){ta.innerHTML=_2b;}else{ta.appendChild(_2b);}if(_2c===undefined){_2c="last";}var ct=(_2c=="first"||_2c=="after")?"lastChild":"firstChild";this.forEach(function(_2f){var tn=ta.cloneNode(true);while(tn[ct]){d.place(tn[ct],_2f,_2c);}});return this;},empty:function(){return this.forEach("item.innerHTML='';");},instantiate:function(_31,_32){var c=d.isFunction(_31)?_31:d.getObject(_31);return this.forEach(function(i){new c(_32||{},i);});},at:function(){var nl=new dojo.NodeList();dojo.forEach(arguments,function(i){if(this[i]){nl.push(this[i]);}},this);return nl;}});d.forEach(["blur","focus","click","keydown","keypress","keyup","mousedown","mouseenter","mouseleave","mousemove","mouseout","mouseover","mouseup","submit","load","error"],function(evt){var _oe="on"+evt;d.NodeList.prototype[_oe]=function(a,b){return this.connect(_oe,a,b);};});})();}././@LongLink0000000000000000000000000000016400000000000011566 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dojo/_base/Deferred.jslibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dojo/_b0000644000000000000000000000451411360615640027174 0ustar /* Copyright (c) 2004-2008, The Dojo Foundation All Rights Reserved. Available via Academic Free License >= 2.1 OR the modified BSD license. see: http://dojotoolkit.org/license for details */ if(!dojo._hasResource["dojo._base.Deferred"]){dojo._hasResource["dojo._base.Deferred"]=true;dojo.provide("dojo._base.Deferred");dojo.require("dojo._base.lang");dojo.Deferred=function(_1){this.chain=[];this.id=this._nextId();this.fired=-1;this.paused=0;this.results=[null,null];this.canceller=_1;this.silentlyCancelled=false;};dojo.extend(dojo.Deferred,{_nextId:(function(){var n=1;return function(){return n++;};})(),cancel:function(){var _3;if(this.fired==-1){if(this.canceller){_3=this.canceller(this);}else{this.silentlyCancelled=true;}if(this.fired==-1){if(!(_3 instanceof Error)){var _4=_3;_3=new Error("Deferred Cancelled");_3.dojoType="cancel";_3.cancelResult=_4;}this.errback(_3);}}else{if((this.fired==0)&&(this.results[0] instanceof dojo.Deferred)){this.results[0].cancel();}}},_resback:function(_5){this.fired=((_5 instanceof Error)?1:0);this.results[this.fired]=_5;this._fire();},_check:function(){if(this.fired!=-1){if(!this.silentlyCancelled){throw new Error("already called!");}this.silentlyCancelled=false;return;}},callback:function(_6){this._check();this._resback(_6);},errback:function(_7){this._check();if(!(_7 instanceof Error)){_7=new Error(_7);}this._resback(_7);},addBoth:function(cb,_9){var _a=dojo.hitch.apply(dojo,arguments);return this.addCallbacks(_a,_a);},addCallback:function(cb,_c){return this.addCallbacks(dojo.hitch.apply(dojo,arguments));},addErrback:function(cb,_e){return this.addCallbacks(null,dojo.hitch.apply(dojo,arguments));},addCallbacks:function(cb,eb){this.chain.push([cb,eb]);if(this.fired>=0){this._fire();}return this;},_fire:function(){var _11=this.chain;var _12=this.fired;var res=this.results[_12];var _14=this;var cb=null;while((_11.length>0)&&(this.paused==0)){var f=_11.shift()[_12];if(!f){continue;}var _17=function(){var ret=f(res);if(typeof ret!="undefined"){res=ret;}_12=((res instanceof Error)?1:0);if(res instanceof dojo.Deferred){cb=function(res){_14._resback(res);_14.paused--;if((_14.paused==0)&&(_14.fired>=0)){_14._fire();}};this.paused++;}};if(dojo.config.isDebug){_17.call(this);}else{try{_17.call(this);}catch(err){_12=1;res=err;}}}this.fired=_12;this.results[_12]=res;if((cb)&&(this.paused)){res.addBoth(cb);}}});}././@LongLink0000000000000000000000000000015400000000000011565 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dojo/build.txtlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dojo/bu0000644000000000000000000000535211360615634027226 0ustar Files baked into this build: dojo.js: ./jslib/dojoGuardStart.jsfrag ./../../dojo/_base/_loader/bootstrap.js ./../../dojo/_base/_loader/loader.js ./../../dojo/_base/_loader/hostenv_browser.js ./../../release/dojo/dojo/_base/lang.js ./../../release/dojo/dojo/_base/declare.js ./../../release/dojo/dojo/_base/connect.js ./../../release/dojo/dojo/_base/Deferred.js ./../../release/dojo/dojo/_base/json.js ./../../release/dojo/dojo/_base/array.js ./../../release/dojo/dojo/_base/Color.js ./../../release/dojo/dojo/_base.js ./../../release/dojo/dojo/_base/window.js ./../../release/dojo/dojo/_base/event.js ./../../release/dojo/dojo/_base/html.js ./../../release/dojo/dojo/_base/NodeList.js ./../../release/dojo/dojo/_base/query.js ./../../release/dojo/dojo/_base/xhr.js ./../../release/dojo/dojo/_base/fx.js ./../../release/dojo/dojo/_base/browser.js ./../../release/dojo/dojo/i18n.js ./../../release/dojo/dijit/_base/focus.js ./../../release/dojo/dijit/_base/manager.js ./../../release/dojo/dojo/AdapterRegistry.js ./../../release/dojo/dijit/_base/place.js ./../../release/dojo/dijit/_base/window.js ./../../release/dojo/dijit/_base/popup.js ./../../release/dojo/dijit/_base/scroll.js ./../../release/dojo/dijit/_base/sniff.js ./../../release/dojo/dijit/_base/typematic.js ./../../release/dojo/dijit/_base/wai.js ./../../release/dojo/dijit/_base.js ./../../release/dojo/dijit/_Widget.js ./../../release/dojo/dojo/string.js ./../../release/dojo/dojo/date/stamp.js ./../../release/dojo/dojo/parser.js ./../../release/dojo/dijit/_Templated.js ./../../release/dojo/dijit/form/_FormWidget.js ./../../release/dojo/dijit/form/TextBox.js ./../../release/dojo/dijit/Tooltip.js ./../../release/dojo/dijit/form/ValidationTextBox.js ./../../release/dojo/dojo/regexp.js ./../../release/dojo/dojo/number.js ./../../release/dojo/dijit/form/NumberTextBox.js ./../../release/dojo/dojo/cldr/supplemental.js ./../../release/dojo/dojo/date.js ./../../release/dojo/dojo/date/locale.js ./../../release/dojo/dijit/_Calendar.js ./../../release/dojo/dijit/form/_DateTimeTextBox.js ./../../release/dojo/dijit/form/DateTextBox.js ./../../release/dojo/dojo/cldr/monetary.js ./../../release/dojo/dojo/currency.js ./../../release/dojo/dijit/form/CurrencyTextBox.js ./../../release/dojo/dojo/dnd/common.js ./../../release/dojo/dojo/dnd/autoscroll.js ./../../release/dojo/dojo/dnd/Mover.js ./../../release/dojo/dojo/dnd/Moveable.js ./../../release/dojo/dojo/dnd/move.js ./../../release/dojo/dojo/dnd/TimedMoveable.js ./../../release/dojo/dojo/fx.js ./../../release/dojo/dijit/_Container.js ./../../release/dojo/dijit/layout/_LayoutWidget.js ./../../release/dojo/dojo/html.js ./../../release/dojo/dijit/layout/ContentPane.js ./../../release/dojo/dijit/form/Form.js ./../../release/dojo/dijit/Dialog.js ./jslib/dojoGuardEnd.jsfrag ././@LongLink0000000000000000000000000000015400000000000011565 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dojo/string.jslibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dojo/st0000644000000000000000000000211011360615644027234 0ustar /* Copyright (c) 2004-2008, The Dojo Foundation All Rights Reserved. Available via Academic Free License >= 2.1 OR the modified BSD license. see: http://dojotoolkit.org/license for details */ if(!dojo._hasResource["dojo.string"]){dojo._hasResource["dojo.string"]=true;dojo.provide("dojo.string");dojo.string.rep=function(_1,_2){if(_2<=0||!_1){return "";}var _3=[];for(;;){if(_2&1){_3.push(_1);}if(!(_2>>=1)){break;}_1+=_1;}return _3.join("");};dojo.string.pad=function(_4,_5,ch,_7){if(!ch){ch="0";}var _8=String(_4),_9=dojo.string.rep(ch,Math.ceil((_5-_8.length)/ch.length));return _7?_8+_9:_9+_8;};dojo.string.substitute=function(_a,_b,_c,_d){_d=_d||dojo.global;_c=(!_c)?function(v){return v;}:dojo.hitch(_d,_c);return _a.replace(/\$\{([^\s\:\}]+)(?:\:([^\s\:\}]+))?\}/g,function(_f,key,_11){var _12=dojo.getObject(key,false,_b);if(_11){_12=dojo.getObject(_11,false,_d).call(_d,_12,key);}return _c(_12,key).toString();});};dojo.string.trim=function(str){str=str.replace(/^\s+/,"");for(var i=str.length-1;i>=0;i--){if(/\S/.test(str.charAt(i))){str=str.substring(0,i+1);break;}}return str;};}././@LongLink0000000000000000000000000000015300000000000011564 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dojo/gears.jslibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dojo/ge0000644000000000000000000000170311360615644027210 0ustar /* Copyright (c) 2004-2008, The Dojo Foundation All Rights Reserved. Available via Academic Free License >= 2.1 OR the modified BSD license. see: http://dojotoolkit.org/license for details */ if(!dojo._hasResource["dojo.gears"]){dojo._hasResource["dojo.gears"]=true;dojo.provide("dojo.gears");dojo.gears._gearsObject=function(){var _1;var _2;var _3=dojo.getObject("google.gears");if(_3){return _3;}if(typeof GearsFactory!="undefined"){_1=new GearsFactory();}else{if(dojo.isIE){try{_1=new ActiveXObject("Gears.Factory");}catch(e){}}else{if(navigator.mimeTypes["application/x-googlegears"]){_1=document.createElement("object");_1.setAttribute("type","application/x-googlegears");_1.setAttribute("width",0);_1.setAttribute("height",0);_1.style.display="none";document.documentElement.appendChild(_1);}}}if(!_1){return null;}dojo.setObject("google.gears.factory",_1);return dojo.getObject("google.gears");};dojo.gears.available=(!!dojo.gears._gearsObject())||0;}././@LongLink0000000000000000000000000000015300000000000011564 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dojo/_base.jslibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dojo/_b0000644000000000000000000000111311360615634027167 0ustar /* Copyright (c) 2004-2008, The Dojo Foundation All Rights Reserved. Available via Academic Free License >= 2.1 OR the modified BSD license. see: http://dojotoolkit.org/license for details */ if(!dojo._hasResource["dojo._base"]){dojo._hasResource["dojo._base"]=true;dojo.provide("dojo._base");dojo.require("dojo._base.lang");dojo.require("dojo._base.declare");dojo.require("dojo._base.connect");dojo.require("dojo._base.Deferred");dojo.require("dojo._base.json");dojo.require("dojo._base.array");dojo.require("dojo._base.Color");dojo.requireIf(dojo.isBrowser,"dojo._base.browser");}././@LongLink0000000000000000000000000000016300000000000011565 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dojo/NodeList-html.jslibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dojo/No0000644000000000000000000000101211360615644027162 0ustar /* Copyright (c) 2004-2008, The Dojo Foundation All Rights Reserved. Available via Academic Free License >= 2.1 OR the modified BSD license. see: http://dojotoolkit.org/license for details */ if(!dojo._hasResource["dojo.NodeList-html"]){dojo._hasResource["dojo.NodeList-html"]=true;dojo.provide("dojo.NodeList-html");dojo.require("dojo.html");dojo.extend(dojo.NodeList,{html:function(_1,_2){var _3=new dojo.html._ContentSetter(_2||{});this.forEach(function(_4){_3.node=_4;_3.set(_1);_3.tearDown();});return this;}});}././@LongLink0000000000000000000000000000015300000000000011564 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dojo/robot.jslibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dojo/ro0000644000000000000000000000166711360615646027250 0ustar /* Copyright (c) 2004-2008, The Dojo Foundation All Rights Reserved. Available via Academic Free License >= 2.1 OR the modified BSD license. see: http://dojotoolkit.org/license for details */ if(!dojo._hasResource["dojo.robot"]){dojo._hasResource["dojo.robot"]=true;dojo.provide("dojo.robot");dojo.experimental("dojo.robot");dojo.require("doh.robot");(function(){dojo.mixin(doh.robot,{_scrollIntoView:function(_1){if(typeof _1=="function"){_1=_1();}_1.scrollIntoView(false);},scrollIntoView:function(_2,_3){doh.robot.sequence(function(){doh.robot._scrollIntoView(_2);},_3);},mouseMoveAt:function(_4,_5,_6,_7,_8){doh.robot._assertRobot();_6=_6||100;this.sequence(function(){if(typeof _4=="function"){_4=_4();}if(!_4){return;}_4=dojo.byId(_4);if(_8===undefined){var _9=dojo.contentBox(_4);_7=_9.w/2;_8=_9.h/2;}var x=_7;var y=_8;doh.robot._scrollIntoView(_4);var c=dojo.coords(_4);x+=c.x;y+=c.y;doh.robot._mouseMove(x,y,false,_6);},_5,_6);}});})();}././@LongLink0000000000000000000000000000015000000000000011561 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dojo/data/libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dojo/da0000755000000000000000000000000011360615640027172 5ustar ././@LongLink0000000000000000000000000000015500000000000011566 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dojo/data/util/libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dojo/da0000755000000000000000000000000011360615634027175 5ustar ././@LongLink0000000000000000000000000000016600000000000011570 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dojo/data/util/filter.jslibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dojo/da0000644000000000000000000000137211360615632027200 0ustar /* Copyright (c) 2004-2008, The Dojo Foundation All Rights Reserved. Available via Academic Free License >= 2.1 OR the modified BSD license. see: http://dojotoolkit.org/license for details */ if(!dojo._hasResource["dojo.data.util.filter"]){dojo._hasResource["dojo.data.util.filter"]=true;dojo.provide("dojo.data.util.filter");dojo.data.util.filter.patternToRegExp=function(_1,_2){var _3="^";var c=null;for(var i=0;i<_1.length;i++){c=_1.charAt(i);switch(c){case "\\":_3+=c;i++;_3+=_1.charAt(i);break;case "*":_3+=".*";break;case "?":_3+=".";break;case "$":case "^":case "/":case "+":case ".":case "|":case "(":case ")":case "{":case "}":case "[":case "]":_3+="\\";default:_3+=c;}}_3+="$";if(_2){return new RegExp(_3,"mi");}else{return new RegExp(_3,"m");}};}././@LongLink0000000000000000000000000000016600000000000011570 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dojo/data/util/sorter.jslibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dojo/da0000644000000000000000000000217511360615634027204 0ustar /* Copyright (c) 2004-2008, The Dojo Foundation All Rights Reserved. Available via Academic Free License >= 2.1 OR the modified BSD license. see: http://dojotoolkit.org/license for details */ if(!dojo._hasResource["dojo.data.util.sorter"]){dojo._hasResource["dojo.data.util.sorter"]=true;dojo.provide("dojo.data.util.sorter");dojo.data.util.sorter.basicComparator=function(a,b){var _3=0;if(a>b||typeof a==="undefined"||a===null){_3=1;}else{if(a= 2.1 OR the modified BSD license. see: http://dojotoolkit.org/license for details */ if(!dojo._hasResource["dojo.data.util.simpleFetch"]){dojo._hasResource["dojo.data.util.simpleFetch"]=true;dojo.provide("dojo.data.util.simpleFetch");dojo.require("dojo.data.util.sorter");dojo.data.util.simpleFetch.fetch=function(_1){_1=_1||{};if(!_1.store){_1.store=this;}var _2=this;var _3=function(_4,_5){if(_5.onError){var _6=_5.scope||dojo.global;_5.onError.call(_6,_4,_5);}};var _7=function(_8,_9){var _a=_9.abort||null;var _b=false;var _c=_9.start?_9.start:0;var _d=(_9.count&&(_9.count!==Infinity))?(_c+_9.count):_8.length;_9.abort=function(){_b=true;if(_a){_a.call(_9);}};var _e=_9.scope||dojo.global;if(!_9.store){_9.store=_2;}if(_9.onBegin){_9.onBegin.call(_e,_8.length,_9);}if(_9.sort){_8.sort(dojo.data.util.sorter.createSortFunction(_9.sort,_2));}if(_9.onItem){for(var i=_c;(i<_8.length)&&(i<_d);++i){var _10=_8[i];if(!_b){_9.onItem.call(_e,_10,_9);}}}if(_9.onComplete&&!_b){var _11=null;if(!_9.onItem){_11=_8.slice(_c,_d);}_9.onComplete.call(_e,_11,_9);}};this._fetchItems(_1,_7,_3);return _1;};}././@LongLink0000000000000000000000000000015400000000000011565 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dojo/data/api/libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dojo/da0000755000000000000000000000000011360615644027176 5ustar ././@LongLink0000000000000000000000000000016700000000000011571 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dojo/data/api/Identity.jslibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dojo/da0000644000000000000000000000163311360615632027200 0ustar /* Copyright (c) 2004-2008, The Dojo Foundation All Rights Reserved. Available via Academic Free License >= 2.1 OR the modified BSD license. see: http://dojotoolkit.org/license for details */ if(!dojo._hasResource["dojo.data.api.Identity"]){dojo._hasResource["dojo.data.api.Identity"]=true;dojo.provide("dojo.data.api.Identity");dojo.require("dojo.data.api.Read");dojo.declare("dojo.data.api.Identity",dojo.data.api.Read,{getFeatures:function(){return {"dojo.data.api.Read":true,"dojo.data.api.Identity":true};},getIdentity:function(_1){throw new Error("Unimplemented API: dojo.data.api.Identity.getIdentity");var _2=null;return _2;},getIdentityAttributes:function(_3){throw new Error("Unimplemented API: dojo.data.api.Identity.getIdentityAttributes");return null;},fetchItemByIdentity:function(_4){if(!this.isItemLoaded(_4.item)){throw new Error("Unimplemented API: dojo.data.api.Identity.fetchItemByIdentity");}}});}././@LongLink0000000000000000000000000000016300000000000011565 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dojo/data/api/Read.jslibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dojo/da0000644000000000000000000000342211360615632027176 0ustar /* Copyright (c) 2004-2008, The Dojo Foundation All Rights Reserved. Available via Academic Free License >= 2.1 OR the modified BSD license. see: http://dojotoolkit.org/license for details */ if(!dojo._hasResource["dojo.data.api.Read"]){dojo._hasResource["dojo.data.api.Read"]=true;dojo.provide("dojo.data.api.Read");dojo.require("dojo.data.api.Request");dojo.declare("dojo.data.api.Read",null,{getValue:function(_1,_2,_3){var _4=null;throw new Error("Unimplemented API: dojo.data.api.Read.getValue");return _4;},getValues:function(_5,_6){var _7=[];throw new Error("Unimplemented API: dojo.data.api.Read.getValues");return _7;},getAttributes:function(_8){var _9=[];throw new Error("Unimplemented API: dojo.data.api.Read.getAttributes");return _9;},hasAttribute:function(_a,_b){throw new Error("Unimplemented API: dojo.data.api.Read.hasAttribute");return false;},containsValue:function(_c,_d,_e){throw new Error("Unimplemented API: dojo.data.api.Read.containsValue");return false;},isItem:function(_f){throw new Error("Unimplemented API: dojo.data.api.Read.isItem");return false;},isItemLoaded:function(_10){throw new Error("Unimplemented API: dojo.data.api.Read.isItemLoaded");return false;},loadItem:function(_11){if(!this.isItemLoaded(_11.item)){throw new Error("Unimplemented API: dojo.data.api.Read.loadItem");}},fetch:function(_12){var _13=null;throw new Error("Unimplemented API: dojo.data.api.Read.fetch");return _13;},getFeatures:function(){return {"dojo.data.api.Read":true};},close:function(_14){throw new Error("Unimplemented API: dojo.data.api.Read.close");},getLabel:function(_15){throw new Error("Unimplemented API: dojo.data.api.Read.getLabel");return undefined;},getLabelAttributes:function(_16){throw new Error("Unimplemented API: dojo.data.api.Read.getLabelAttributes");return null;}});}././@LongLink0000000000000000000000000000016400000000000011566 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dojo/data/api/Write.jslibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dojo/da0000644000000000000000000000247111360615642027202 0ustar /* Copyright (c) 2004-2008, The Dojo Foundation All Rights Reserved. Available via Academic Free License >= 2.1 OR the modified BSD license. see: http://dojotoolkit.org/license for details */ if(!dojo._hasResource["dojo.data.api.Write"]){dojo._hasResource["dojo.data.api.Write"]=true;dojo.provide("dojo.data.api.Write");dojo.require("dojo.data.api.Read");dojo.declare("dojo.data.api.Write",dojo.data.api.Read,{getFeatures:function(){return {"dojo.data.api.Read":true,"dojo.data.api.Write":true};},newItem:function(_1,_2){var _3;throw new Error("Unimplemented API: dojo.data.api.Write.newItem");return _3;},deleteItem:function(_4){throw new Error("Unimplemented API: dojo.data.api.Write.deleteItem");return false;},setValue:function(_5,_6,_7){throw new Error("Unimplemented API: dojo.data.api.Write.setValue");return false;},setValues:function(_8,_9,_a){throw new Error("Unimplemented API: dojo.data.api.Write.setValues");return false;},unsetAttribute:function(_b,_c){throw new Error("Unimplemented API: dojo.data.api.Write.clear");return false;},save:function(_d){throw new Error("Unimplemented API: dojo.data.api.Write.save");},revert:function(){throw new Error("Unimplemented API: dojo.data.api.Write.revert");return false;},isDirty:function(_e){throw new Error("Unimplemented API: dojo.data.api.Write.isDirty");return false;}});}././@LongLink0000000000000000000000000000016600000000000011570 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dojo/data/api/Request.jslibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dojo/da0000644000000000000000000000071611360615636027205 0ustar /* Copyright (c) 2004-2008, The Dojo Foundation All Rights Reserved. Available via Academic Free License >= 2.1 OR the modified BSD license. see: http://dojotoolkit.org/license for details */ if(!dojo._hasResource["dojo.data.api.Request"]){dojo._hasResource["dojo.data.api.Request"]=true;dojo.provide("dojo.data.api.Request");dojo.declare("dojo.data.api.Request",null,{abort:function(){throw new Error("Unimplemented API: dojo.data.api.Request.abort");}});}././@LongLink0000000000000000000000000000017300000000000011566 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dojo/data/api/Notification.jslibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dojo/da0000644000000000000000000000150211360615644027176 0ustar /* Copyright (c) 2004-2008, The Dojo Foundation All Rights Reserved. Available via Academic Free License >= 2.1 OR the modified BSD license. see: http://dojotoolkit.org/license for details */ if(!dojo._hasResource["dojo.data.api.Notification"]){dojo._hasResource["dojo.data.api.Notification"]=true;dojo.provide("dojo.data.api.Notification");dojo.require("dojo.data.api.Read");dojo.declare("dojo.data.api.Notification",dojo.data.api.Read,{getFeatures:function(){return {"dojo.data.api.Read":true,"dojo.data.api.Notification":true};},onSet:function(_1,_2,_3,_4){throw new Error("Unimplemented API: dojo.data.api.Notification.onSet");},onNew:function(_5,_6){throw new Error("Unimplemented API: dojo.data.api.Notification.onNew");},onDelete:function(_7){throw new Error("Unimplemented API: dojo.data.api.Notification.onDelete");}});}././@LongLink0000000000000000000000000000017500000000000011570 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dojo/data/ItemFileWriteStore.jslibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/resources/META-INF/dojo/da0000644000000000000000000002746111360615640027206 0ustar /* Copyright (c) 2004-2008, The Dojo Foundation All Rights Reserved. Available via Academic Free License >= 2.1 OR the modified BSD license. see: http://dojotoolkit.org/license for details */ if(!dojo._hasResource["dojo.data.ItemFileWriteStore"]){dojo._hasResource["dojo.data.ItemFileWriteStore"]=true;dojo.provide("dojo.data.ItemFileWriteStore");dojo.require("dojo.data.ItemFileReadStore");dojo.declare("dojo.data.ItemFileWriteStore",dojo.data.ItemFileReadStore,{constructor:function(_1){this._features["dojo.data.api.Write"]=true;this._features["dojo.data.api.Notification"]=true;this._pending={_newItems:{},_modifiedItems:{},_deletedItems:{}};if(!this._datatypeMap["Date"].serialize){this._datatypeMap["Date"].serialize=function(_2){return dojo.date.stamp.toISOString(_2,{zulu:true});};}if(_1&&(_1.referenceIntegrity===false)){this.referenceIntegrity=false;}this._saveInProgress=false;},referenceIntegrity:true,_assert:function(_3){if(!_3){throw new Error("assertion failed in ItemFileWriteStore");}},_getIdentifierAttribute:function(){var _4=this.getFeatures()["dojo.data.api.Identity"];return _4;},newItem:function(_5,_6){this._assert(!this._saveInProgress);if(!this._loadFinished){this._forceLoad();}if(typeof _5!="object"&&typeof _5!="undefined"){throw new Error("newItem() was passed something other than an object");}var _7=null;var _8=this._getIdentifierAttribute();if(_8===Number){_7=this._arrayOfAllItems.length;}else{_7=_5[_8];if(typeof _7==="undefined"){throw new Error("newItem() was not passed an identity for the new item");}if(dojo.isArray(_7)){throw new Error("newItem() was not passed an single-valued identity");}}if(this._itemsByIdentity){this._assert(typeof this._itemsByIdentity[_7]==="undefined");}this._assert(typeof this._pending._newItems[_7]==="undefined");this._assert(typeof this._pending._deletedItems[_7]==="undefined");var _9={};_9[this._storeRefPropName]=this;_9[this._itemNumPropName]=this._arrayOfAllItems.length;if(this._itemsByIdentity){this._itemsByIdentity[_7]=_9;_9[_8]=[_7];}this._arrayOfAllItems.push(_9);var _a=null;if(_6&&_6.parent&&_6.attribute){_a={item:_6.parent,attribute:_6.attribute,oldValue:undefined};var _b=this.getValues(_6.parent,_6.attribute);if(_b&&_b.length>0){var _c=_b.slice(0,_b.length);if(_b.length===1){_a.oldValue=_b[0];}else{_a.oldValue=_b.slice(0,_b.length);}_c.push(_9);this._setValueOrValues(_6.parent,_6.attribute,_c,false);_a.newValue=this.getValues(_6.parent,_6.attribute);}else{this._setValueOrValues(_6.parent,_6.attribute,_9,false);_a.newValue=_9;}}else{_9[this._rootItemPropName]=true;this._arrayOfTopLevelItems.push(_9);}this._pending._newItems[_7]=_9;for(var _d in _5){if(_d===this._storeRefPropName||_d===this._itemNumPropName){throw new Error("encountered bug in ItemFileWriteStore.newItem");}var _e=_5[_d];if(!dojo.isArray(_e)){_e=[_e];}_9[_d]=_e;if(this.referenceIntegrity){for(var i=0;i<_e.length;i++){var val=_e[i];if(this.isItem(val)){this._addReferenceToMap(val,_9,_d);}}}}this.onNew(_9,_a);return _9;},_removeArrayElement:function(_11,_12){var _13=dojo.indexOf(_11,_12);if(_13!=-1){_11.splice(_13,1);return true;}return false;},deleteItem:function(_14){this._assert(!this._saveInProgress);this._assertIsItem(_14);var _15=_14[this._itemNumPropName];var _16=this.getIdentity(_14);if(this.referenceIntegrity){var _17=this.getAttributes(_14);if(_14[this._reverseRefMap]){_14["backup_"+this._reverseRefMap]=dojo.clone(_14[this._reverseRefMap]);}dojo.forEach(_17,function(_18){dojo.forEach(this.getValues(_14,_18),function(_19){if(this.isItem(_19)){if(!_14["backupRefs_"+this._reverseRefMap]){_14["backupRefs_"+this._reverseRefMap]=[];}_14["backupRefs_"+this._reverseRefMap].push({id:this.getIdentity(_19),attr:_18});this._removeReferenceFromMap(_19,_14,_18);}},this);},this);var _1a=_14[this._reverseRefMap];if(_1a){for(var _1b in _1a){var _1c=null;if(this._itemsByIdentity){_1c=this._itemsByIdentity[_1b];}else{_1c=this._arrayOfAllItems[_1b];}if(_1c){for(var _1d in _1a[_1b]){var _1e=this.getValues(_1c,_1d)||[];var _1f=dojo.filter(_1e,function(_20){return !(this.isItem(_20)&&this.getIdentity(_20)==_16);},this);this._removeReferenceFromMap(_14,_1c,_1d);if(_1f.length<_1e.length){this._setValueOrValues(_1c,_1d,_1f,true);}}}}}}this._arrayOfAllItems[_15]=null;_14[this._storeRefPropName]=null;if(this._itemsByIdentity){delete this._itemsByIdentity[_16];}this._pending._deletedItems[_16]=_14;if(_14[this._rootItemPropName]){this._removeArrayElement(this._arrayOfTopLevelItems,_14);}this.onDelete(_14);return true;},setValue:function(_21,_22,_23){return this._setValueOrValues(_21,_22,_23,true);},setValues:function(_24,_25,_26){return this._setValueOrValues(_24,_25,_26,true);},unsetAttribute:function(_27,_28){return this._setValueOrValues(_27,_28,[],true);},_setValueOrValues:function(_29,_2a,_2b,_2c){this._assert(!this._saveInProgress);this._assertIsItem(_29);this._assert(dojo.isString(_2a));this._assert(typeof _2b!=="undefined");var _2d=this._getIdentifierAttribute();if(_2a==_2d){throw new Error("ItemFileWriteStore does not have support for changing the value of an item's identifier.");}var _2e=this._getValueOrValues(_29,_2a);var _2f=this.getIdentity(_29);if(!this._pending._modifiedItems[_2f]){var _30={};for(var key in _29){if((key===this._storeRefPropName)||(key===this._itemNumPropName)||(key===this._rootItemPropName)){_30[key]=_29[key];}else{if(key===this._reverseRefMap){_30[key]=dojo.clone(_29[key]);}else{_30[key]=_29[key].slice(0,_29[key].length);}}}this._pending._modifiedItems[_2f]=_30;}var _32=false;if(dojo.isArray(_2b)&&_2b.length===0){_32=delete _29[_2a];_2b=undefined;if(this.referenceIntegrity&&_2e){var _33=_2e;if(!dojo.isArray(_33)){_33=[_33];}for(var i=0;i<_33.length;i++){var _35=_33[i];if(this.isItem(_35)){this._removeReferenceFromMap(_35,_29,_2a);}}}}else{var _36;if(dojo.isArray(_2b)){var _37=_2b;_36=_2b.slice(0,_2b.length);}else{_36=[_2b];}if(this.referenceIntegrity){if(_2e){var _33=_2e;if(!dojo.isArray(_33)){_33=[_33];}var map={};dojo.forEach(_33,function(_39){if(this.isItem(_39)){var id=this.getIdentity(_39);map[id.toString()]=true;}},this);dojo.forEach(_36,function(_3b){if(this.isItem(_3b)){var id=this.getIdentity(_3b);if(map[id.toString()]){delete map[id.toString()];}else{this._addReferenceToMap(_3b,_29,_2a);}}},this);for(var rId in map){var _3e;if(this._itemsByIdentity){_3e=this._itemsByIdentity[rId];}else{_3e=this._arrayOfAllItems[rId];}this._removeReferenceFromMap(_3e,_29,_2a);}}else{for(var i=0;i<_36.length;i++){var _35=_36[i];if(this.isItem(_35)){this._addReferenceToMap(_35,_29,_2a);}}}}_29[_2a]=_36;_32=true;}if(_2c){this.onSet(_29,_2a,_2e,_2b);}return _32;},_addReferenceToMap:function(_3f,_40,_41){var _42=this.getIdentity(_40);var _43=_3f[this._reverseRefMap];if(!_43){_43=_3f[this._reverseRefMap]={};}var _44=_43[_42];if(!_44){_44=_43[_42]={};}_44[_41]=true;},_removeReferenceFromMap:function(_45,_46,_47){var _48=this.getIdentity(_46);var _49=_45[this._reverseRefMap];var _4a;if(_49){for(_4a in _49){if(_4a==_48){delete _49[_4a][_47];if(this._isEmpty(_49[_4a])){delete _49[_4a];}}}if(this._isEmpty(_49)){delete _45[this._reverseRefMap];}}},_dumpReferenceMap:function(){var i;for(i=0;i0){_63=false;}}}return _63;},save:function(_65){this._assert(!this._saveInProgress);this._saveInProgress=true;var _66=this;var _67=function(){_66._pending={_newItems:{},_modifiedItems:{},_deletedItems:{}};_66._saveInProgress=false;if(_65&&_65.onComplete){var _68=_65.scope||dojo.global;_65.onComplete.call(_68);}};var _69=function(err){_66._saveInProgress=false;if(_65&&_65.onError){var _6b=_65.scope||dojo.global;_65.onError.call(_6b,err);}};if(this._saveEverything){var _6c=this._getNewFileContentString();this._saveEverything(_67,_69,_6c);}if(this._saveCustom){this._saveCustom(_67,_69);}if(!this._saveEverything&&!this._saveCustom){_67();}},revert:function(){this._assert(!this._saveInProgress);var _6d;for(_6d in this._pending._modifiedItems){var _6e=this._pending._modifiedItems[_6d];var _6f=null;if(this._itemsByIdentity){_6f=this._itemsByIdentity[_6d];}else{_6f=this._arrayOfAllItems[_6d];}_6e[this._storeRefPropName]=this;_6f[this._storeRefPropName]=null;var _70=_6f[this._itemNumPropName];this._arrayOfAllItems[_70]=_6e;if(_6f[this._rootItemPropName]){var i;for(i=0;i= 2.1 OR the modified BSD license. see: http://dojotoolkit.org/license for details */ if(!dojo._hasResource["dojo.data.ItemFileReadStore"]){dojo._hasResource["dojo.data.ItemFileReadStore"]=true;dojo.provide("dojo.data.ItemFileReadStore");dojo.require("dojo.data.util.filter");dojo.require("dojo.data.util.simpleFetch");dojo.require("dojo.date.stamp");dojo.declare("dojo.data.ItemFileReadStore",null,{constructor:function(_1){this._arrayOfAllItems=[];this._arrayOfTopLevelItems=[];this._loadFinished=false;this._jsonFileUrl=_1.url;this._jsonData=_1.data;this._datatypeMap=_1.typeMap||{};if(!this._datatypeMap["Date"]){this._datatypeMap["Date"]={type:Date,deserialize:function(_2){return dojo.date.stamp.fromISOString(_2);}};}this._features={"dojo.data.api.Read":true,"dojo.data.api.Identity":true};this._itemsByIdentity=null;this._storeRefPropName="_S";this._itemNumPropName="_0";this._rootItemPropName="_RI";this._reverseRefMap="_RRM";this._loadInProgress=false;this._queuedFetches=[];if(_1.urlPreventCache!==undefined){this.urlPreventCache=_1.urlPreventCache?true:false;}if(_1.clearOnClose){this.clearOnClose=true;}},url:"",data:null,typeMap:null,clearOnClose:false,urlPreventCache:false,_assertIsItem:function(_3){if(!this.isItem(_3)){throw new Error("dojo.data.ItemFileReadStore: Invalid item argument.");}},_assertIsAttribute:function(_4){if(typeof _4!=="string"){throw new Error("dojo.data.ItemFileReadStore: Invalid attribute argument.");}},getValue:function(_5,_6,_7){var _8=this.getValues(_5,_6);return (_8.length>0)?_8[0]:_7;},getValues:function(_9,_a){this._assertIsItem(_9);this._assertIsAttribute(_a);return _9[_a]||[];},getAttributes:function(_b){this._assertIsItem(_b);var _c=[];for(var _d in _b){if((_d!==this._storeRefPropName)&&(_d!==this._itemNumPropName)&&(_d!==this._rootItemPropName)&&(_d!==this._reverseRefMap)){_c.push(_d);}}return _c;},hasAttribute:function(_e,_f){return this.getValues(_e,_f).length>0;},containsValue:function(_10,_11,_12){var _13=undefined;if(typeof _12==="string"){_13=dojo.data.util.filter.patternToRegExp(_12,false);}return this._containsValue(_10,_11,_12,_13);},_containsValue:function(_14,_15,_16,_17){return dojo.some(this.getValues(_14,_15),function(_18){if(_18!==null&&!dojo.isObject(_18)&&_17){if(_18.toString().match(_17)){return true;}}else{if(_16===_18){return true;}}});},isItem:function(_19){if(_19&&_19[this._storeRefPropName]===this){if(this._arrayOfAllItems[_19[this._itemNumPropName]]===_19){return true;}}return false;},isItemLoaded:function(_1a){return this.isItem(_1a);},loadItem:function(_1b){this._assertIsItem(_1b.item);},getFeatures:function(){return this._features;},getLabel:function(_1c){if(this._labelAttr&&this.isItem(_1c)){return this.getValue(_1c,this._labelAttr);}return undefined;},getLabelAttributes:function(_1d){if(this._labelAttr){return [this._labelAttr];}return null;},_fetchItems:function(_1e,_1f,_20){var _21=this;var _22=function(_23,_24){var _25=[];if(_23.query){var _26=_23.queryOptions?_23.queryOptions.ignoreCase:false;var _27={};for(var key in _23.query){var _29=_23.query[key];if(typeof _29==="string"){_27[key]=dojo.data.util.filter.patternToRegExp(_29,_26);}}for(var i=0;i<_24.length;++i){var _2b=true;var _2c=_24[i];if(_2c===null){_2b=false;}else{for(var key in _23.query){var _29=_23.query[key];if(!_21._containsValue(_2c,key,_29,_27[key])){_2b=false;}}}if(_2b){_25.push(_2c);}}_1f(_25,_23);}else{for(var i=0;i<_24.length;++i){var _2d=_24[i];if(_2d!==null){_25.push(_2d);}}_1f(_25,_23);}};if(this._loadFinished){_22(_1e,this._getItemsArray(_1e.queryOptions));}else{if(this._jsonFileUrl){if(this._loadInProgress){this._queuedFetches.push({args:_1e,filter:_22});}else{this._loadInProgress=true;var _2e={url:_21._jsonFileUrl,handleAs:"json-comment-optional",preventCache:this.urlPreventCache};var _2f=dojo.xhrGet(_2e);_2f.addCallback(function(_30){try{_21._getItemsFromLoadedData(_30);_21._loadFinished=true;_21._loadInProgress=false;_22(_1e,_21._getItemsArray(_1e.queryOptions));_21._handleQueuedFetches();}catch(e){_21._loadFinished=true;_21._loadInProgress=false;_20(e,_1e);}});_2f.addErrback(function(_31){_21._loadInProgress=false;_20(_31,_1e);});}}else{if(this._jsonData){try{this._loadFinished=true;this._getItemsFromLoadedData(this._jsonData);this._jsonData=null;_22(_1e,this._getItemsArray(_1e.queryOptions));}catch(e){_20(e,_1e);}}else{_20(new Error("dojo.data.ItemFileReadStore: No JSON source data was provided as either URL or a nested Javascript object."),_1e);}}}},_handleQueuedFetches:function(){if(this._queuedFetches.length>0){for(var i=0;i * Redirect requires special behavior on an Ajax request. */ protected View createView(String viewName, Locale locale) throws Exception { // If this resolver is not supposed to handle the given view, // return null to pass on to the next resolver in the chain. if (!canHandle(viewName, locale)) { return null; } // Check for special "redirect:" prefix. if (viewName.startsWith(REDIRECT_URL_PREFIX)) { String redirectUrl = viewName.substring(REDIRECT_URL_PREFIX.length()); return new AjaxRedirectView(redirectUrl, isRedirectContextRelative(), isRedirectHttp10Compatible()); } return super.createView(viewName, locale); } private class AjaxRedirectView extends RedirectView implements View { private AjaxHandler ajaxHandler = new SpringJavascriptAjaxHandler(); public AjaxRedirectView(String redirectUrl, boolean redirectContextRelative, boolean redirectHttp10Compatible) { super(redirectUrl, redirectContextRelative, redirectHttp10Compatible); } protected void sendRedirect(HttpServletRequest request, HttpServletResponse response, String targetUrl, boolean http10Compatible) throws IOException { if (ajaxHandler.isAjaxRequest(request, response)) { ajaxHandler.sendAjaxRedirect(targetUrl, request, response, false); } else { super.sendRedirect(request, response, targetUrl, http10Compatible); } } } } ././@LongLink0000000000000000000000000000021400000000000011562 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/java/org/springframework/js/ajax/SpringJavascriptAjaxHandler.javalibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/java/org/springframework/j0000644000000000000000000000437511360615640027675 0ustar /* * Copyright 2004-2008 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.springframework.js.ajax; import java.io.IOException; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.springframework.util.StringUtils; /** * Ajax handler for Spring Javascript (Spring.js). * * @author Jeremy Grelle * @author Keith Donald */ public class SpringJavascriptAjaxHandler implements AjaxHandler { /** * The response header to be set on an Ajax redirect */ public static final String REDIRECT_URL_HEADER = "Spring-Redirect-URL"; /** * The response header to be set on an redirect that should be issued from a popup window. */ public static final String POPUP_VIEW_HEADER = "Spring-Modal-View"; /** * The accept header value that signifies an Ajax request. */ public static final String AJAX_ACCEPT_CONTENT_TYPE = "text/html;type=ajax"; /** * Alternate request parameter to indicate an Ajax request for cases when control of the header is not available. */ public static final String AJAX_SOURCE_PARAM = "ajaxSource"; public boolean isAjaxRequest(HttpServletRequest request, HttpServletResponse response) { String acceptHeader = request.getHeader("Accept"); String ajaxParam = request.getParameter(AJAX_SOURCE_PARAM); if (AJAX_ACCEPT_CONTENT_TYPE.equals(acceptHeader) || StringUtils.hasText(ajaxParam)) { return true; } else { return false; } } public void sendAjaxRedirect(String targetUrl, HttpServletRequest request, HttpServletResponse response, boolean popup) throws IOException { if (popup) { response.setHeader(POPUP_VIEW_HEADER, "true"); } response.setHeader(REDIRECT_URL_HEADER, response.encodeRedirectURL(targetUrl)); } }././@LongLink0000000000000000000000000000017400000000000011567 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/java/org/springframework/js/ajax/AjaxHandler.javalibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/java/org/springframework/j0000644000000000000000000000326111360615634027671 0ustar /* * Copyright 2004-2008 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.springframework.js.ajax; import java.io.IOException; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; /** * Strategy interface that encapsulates knowledge about a client-side ajax system and how to communicate with that * system. * * @author Keith Donald */ public interface AjaxHandler { /** * Is the current request an Ajax request? * @param request the current request * @param response the current response */ public boolean isAjaxRequest(HttpServletRequest request, HttpServletResponse response); /** * Send a redirect request to the Ajax client. This should cause the client-side agent to send a new request to the * specified target url. * @param request the current request * @param response the current response * @param targetUrl the target url to redirect to * @param popup wheter the redirect should be sent from a new popup dialog window */ public void sendAjaxRedirect(String targetUrl, HttpServletRequest request, HttpServletResponse response, boolean popup) throws IOException; } ././@LongLink0000000000000000000000000000017000000000000011563 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/java/org/springframework/js/ajax/package.htmllibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/java/org/springframework/j0000644000000000000000000000016211360615644027667 0ustar

Contains the server-side support for handling Spring.js Ajax requests.

././@LongLink0000000000000000000000000000016300000000000011565 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/java/org/springframework/js/ajax/tiles2/libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/java/org/springframework/j0000755000000000000000000000000011360615640027662 5ustar ././@LongLink0000000000000000000000000000020500000000000011562 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/java/org/springframework/js/ajax/tiles2/AjaxTilesView.javalibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/java/org/springframework/j0000644000000000000000000001575011360615640027674 0ustar /* * Copyright 2004-2008 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.springframework.js.ajax.tiles2; import java.util.HashMap; import java.util.Iterator; import java.util.Map; import javax.servlet.ServletContext; import javax.servlet.ServletException; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.apache.tiles.Attribute; import org.apache.tiles.AttributeContext; import org.apache.tiles.Definition; import org.apache.tiles.Attribute.AttributeType; import org.apache.tiles.access.TilesAccess; import org.apache.tiles.context.TilesRequestContext; import org.apache.tiles.definition.DefinitionsFactoryException; import org.apache.tiles.impl.BasicTilesContainer; import org.springframework.js.ajax.AjaxHandler; import org.springframework.js.ajax.SpringJavascriptAjaxHandler; import org.springframework.util.StringUtils; import org.springframework.web.servlet.support.JstlUtils; import org.springframework.web.servlet.support.RequestContext; import org.springframework.web.servlet.view.tiles2.TilesView; /** * Tiles view implementation that is able to handle partial rendering for Spring Javascript Ajax requests. * *

* This implementation uses the {@link SpringJavascriptAjaxHandler} by default to determine whether the current request * is an Ajax request. On an Ajax request, a "fragments" parameter will be extracted from the request in order to * determine which attributes to render from the current tiles view. *

* * @author Jeremy Grelle * @author David Winterfeldt */ public class AjaxTilesView extends TilesView { private static final String FRAGMENTS_PARAM = "fragments"; private AjaxHandler ajaxHandler = new SpringJavascriptAjaxHandler(); public AjaxHandler getAjaxHandler() { return ajaxHandler; } public void setAjaxHandler(AjaxHandler ajaxHandler) { this.ajaxHandler = ajaxHandler; } protected void renderMergedOutputModel(Map model, HttpServletRequest request, HttpServletResponse response) throws Exception { ServletContext servletContext = getServletContext(); if (ajaxHandler.isAjaxRequest(request, response)) { String[] attrNames = getRenderFragments(model, request, response); if (attrNames.length == 0) { logger.warn("An Ajax request was detected, but no fragments were specified to be re-rendered. " + "Falling back to full page render. This can cause unpredictable results when processing " + "the ajax response on the client."); super.renderMergedOutputModel(model, request, response); return; } BasicTilesContainer container = (BasicTilesContainer) TilesAccess.getContainer(servletContext); if (container == null) { throw new ServletException("Tiles container is not initialized. " + "Have you added a TilesConfigurer to your web application context?"); } exposeModelAsRequestAttributes(model, request); JstlUtils.exposeLocalizationContext(new RequestContext(request, servletContext)); TilesRequestContext tilesRequestContext = container.getContextFactory().createRequestContext( container.getApplicationContext(), new Object[] { request, response }); Definition compositeDefinition = container.getDefinitionsFactory().getDefinition(getUrl(), tilesRequestContext); Map flattenedAttributeMap = new HashMap(); flattenAttributeMap(container, tilesRequestContext, flattenedAttributeMap, compositeDefinition, request, response); // initialize the session before rendering any fragments. Otherwise views that require the session which has // not otherwise been initialized will fail to render request.getSession(); response.flushBuffer(); for (int i = 0; i < attrNames.length; i++) { Attribute attributeToRender = (Attribute) flattenedAttributeMap.get(attrNames[i]); if (attributeToRender == null) { throw new ServletException("No tiles attribute with a name of '" + attrNames[i] + "' could be found for the current view: " + this); } else { container.render(attributeToRender, response.getWriter(), new Object[] { request, response }); } } } else { super.renderMergedOutputModel(model, request, response); } } protected String[] getRenderFragments(Map model, HttpServletRequest request, HttpServletResponse response) { String attrName = request.getParameter(FRAGMENTS_PARAM); String[] renderFragments = StringUtils.commaDelimitedListToStringArray(attrName); return StringUtils.trimArrayElements(renderFragments); } protected void flattenAttributeMap(BasicTilesContainer container, TilesRequestContext requestContext, Map resultMap, Definition compositeDefinition, HttpServletRequest request, HttpServletResponse response) throws Exception { if (compositeDefinition.getAttributes() != null && compositeDefinition.getAttributes().size() > 0) { Iterator i = compositeDefinition.getAttributes().keySet().iterator(); while (i.hasNext()) { Object key = i.next(); Attribute attr = (Attribute) compositeDefinition.getAttributes().get(key); AttributeType attrType = attr.getType() != null ? attr.getType() : detectType(container, requestContext, attr); if (AttributeType.DEFINITION.equals(attrType) || AttributeType.TEMPLATE.equals(attrType)) { resultMap.put(key, attr); if (AttributeType.DEFINITION.equals(attrType)) { Definition nestedDefinition = container.getDefinitionsFactory().getDefinition( attr.getValue().toString(), requestContext); if (nestedDefinition != null && nestedDefinition != compositeDefinition) { flattenAttributeMap(container, requestContext, resultMap, nestedDefinition, request, response); } } } } } // Process dynamic attributes AttributeContext attributeContext = container.getAttributeContext(new Object[] { request, response }); for (Iterator i = attributeContext.getAttributeNames(); i.hasNext();) { String key = (String) i.next(); Attribute attr = attributeContext.getAttribute(key); resultMap.put(key, attr); } } private AttributeType detectType(BasicTilesContainer container, TilesRequestContext requestContext, Attribute attr) throws DefinitionsFactoryException { if (attr.getValue() instanceof String) { if (container.getDefinitionsFactory().getDefinition(attr.getValue().toString(), requestContext) != null) { return AttributeType.DEFINITION; } else if (attr.getValue().toString().startsWith("/")) { return AttributeType.TEMPLATE; } else { return AttributeType.STRING; } } return AttributeType.OBJECT; } } ././@LongLink0000000000000000000000000000017700000000000011572 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/java/org/springframework/js/ajax/tiles2/package.htmllibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/java/org/springframework/j0000644000000000000000000000016011360615640027661 0ustar

The Ajax integration between Spring.js and the Tiles2 layout system.

././@LongLink0000000000000000000000000000016000000000000011562 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/java/org/springframework/js/resource/libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/java/org/springframework/j0000755000000000000000000000000011360615642027664 5ustar ././@LongLink0000000000000000000000000000020400000000000011561 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/java/org/springframework/js/resource/ResourceServlet.javalibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/java/org/springframework/j0000644000000000000000000003210011360615642027662 0ustar /* * Copyright 2004-2008 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.springframework.js.resource; import java.io.ByteArrayOutputStream; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; import java.net.MalformedURLException; import java.net.URL; import java.net.URLConnection; import java.util.Arrays; import java.util.HashMap; import java.util.HashSet; import java.util.Iterator; import java.util.Map; import java.util.Set; import java.util.zip.GZIPOutputStream; import javax.servlet.ServletException; import javax.servlet.ServletOutputStream; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.springframework.util.AntPathMatcher; import org.springframework.util.ClassUtils; import org.springframework.util.PathMatcher; import org.springframework.util.StringUtils; import org.springframework.web.servlet.HttpServletBean; /** * Special resource servlet for efficiently resolving and rendering static resources from within a JAR file. * * @author Jeremy Grelle * @author Scott Andrews */ public class ResourceServlet extends HttpServletBean { private static final String HTTP_CONTENT_LENGTH_HEADER = "Content-Length"; private static final String HTTP_LAST_MODIFIED_HEADER = "Last-Modified"; private static final String HTTP_EXPIRES_HEADER = "Expires"; private static final String HTTP_CACHE_CONTROL_HEADER = "Cache-Control"; private static final Log log = LogFactory.getLog(ResourceServlet.class); private final String protectedPath = "/?WEB-INF/.*"; private String jarPathPrefix = "META-INF"; private boolean gzipEnabled = true; private Set allowedResourcePaths = new HashSet(); { allowedResourcePaths.add("/**/*.css"); allowedResourcePaths.add("/**/*.gif"); allowedResourcePaths.add("/**/*.ico"); allowedResourcePaths.add("/**/*.jpeg"); allowedResourcePaths.add("/**/*.jpg"); allowedResourcePaths.add("/**/*.js"); allowedResourcePaths.add("/**/*.png"); allowedResourcePaths.add("META-INF/**/*.css"); allowedResourcePaths.add("META-INF/**/*.gif"); allowedResourcePaths.add("META-INF/**/*.ico"); allowedResourcePaths.add("META-INF/**/*.jpeg"); allowedResourcePaths.add("META-INF/**/*.jpg"); allowedResourcePaths.add("META-INF/**/*.js"); allowedResourcePaths.add("META-INF/**/*.png"); }; private Map defaultMimeTypes = new HashMap(); { defaultMimeTypes.put(".css", "text/css"); defaultMimeTypes.put(".gif", "image/gif"); defaultMimeTypes.put(".ico", "image/vnd.microsoft.icon"); defaultMimeTypes.put(".jpeg", "image/jpeg"); defaultMimeTypes.put(".jpg", "image/jpeg"); defaultMimeTypes.put(".js", "text/javascript"); defaultMimeTypes.put(".png", "image/png"); } private Set compressedMimeTypes = new HashSet(); { compressedMimeTypes.add("text/*"); } private int cacheTimeout = 31556926; protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { String rawResourcePath = request.getPathInfo(); if (log.isDebugEnabled()) { log.debug("Attempting to GET resource: " + rawResourcePath); } URL[] resources = getRequestResourceURLs(request); if (resources == null || resources.length == 0) { if (log.isDebugEnabled()) { log.debug("Resource not found: " + rawResourcePath); } response.sendError(HttpServletResponse.SC_NOT_FOUND); return; } prepareResponse(response, resources, rawResourcePath); OutputStream out = selectOutputStream(request, response); try { for (int i = 0; i < resources.length; i++) { URLConnection resourceConn = resources[i].openConnection(); InputStream in = resourceConn.getInputStream(); try { byte[] buffer = new byte[1024]; int bytesRead = -1; while ((bytesRead = in.read(buffer)) != -1) { out.write(buffer, 0, bytesRead); } } finally { in.close(); } } } finally { out.close(); } } private OutputStream selectOutputStream(HttpServletRequest request, HttpServletResponse response) throws IOException { String acceptEncoding = request.getHeader("Accept-Encoding"); String mimeType = response.getContentType(); if (gzipEnabled && StringUtils.hasText(acceptEncoding) && acceptEncoding.indexOf("gzip") > -1 && matchesCompressedMimeTypes(mimeType)) { log.debug("Enabling GZIP compression for the current response."); return new GZIPResponseStream(response); } else { return response.getOutputStream(); } } private boolean matchesCompressedMimeTypes(String mimeType) { PathMatcher pathMatcher = new AntPathMatcher(); Iterator compressedMimeTypesIt = compressedMimeTypes.iterator(); while (compressedMimeTypesIt.hasNext()) { String compressedMimeType = (String) compressedMimeTypesIt.next(); if (pathMatcher.match(compressedMimeType, mimeType)) { return true; } } return false; } private void prepareResponse(HttpServletResponse response, URL[] resources, String rawResourcePath) throws IOException { long lastModified = -1; int contentLength = 0; String mimeType = null; for (int i = 0; i < resources.length; i++) { URLConnection resourceConn = resources[i].openConnection(); if (resourceConn.getLastModified() > lastModified) { lastModified = resourceConn.getLastModified(); } String currentMimeType = getServletContext().getMimeType(resources[i].getPath()); if (currentMimeType == null) { String extension = resources[i].getPath().substring(resources[i].getPath().lastIndexOf('.')); currentMimeType = (String) defaultMimeTypes.get(extension); } if (mimeType == null) { mimeType = currentMimeType; } else if (!mimeType.equals(currentMimeType)) { throw new MalformedURLException("Combined resource path: " + rawResourcePath + " is invalid. All resources in a combined resource path must be of the same mime type."); } contentLength += resourceConn.getContentLength(); } response.setContentType(mimeType); response.setHeader(HTTP_CONTENT_LENGTH_HEADER, Long.toString(contentLength)); response.setDateHeader(HTTP_LAST_MODIFIED_HEADER, lastModified); if (cacheTimeout > 0) { configureCaching(response, cacheTimeout); } } protected long getLastModified(HttpServletRequest request) { if (log.isDebugEnabled()) { log.debug("Checking last modified of resource: " + request.getPathInfo()); } URL[] resources; try { resources = getRequestResourceURLs(request); } catch (MalformedURLException e) { return -1; } if (resources == null || resources.length == 0) { return -1; } long lastModified = -1; for (int i = 0; i < resources.length; i++) { URLConnection resourceConn; try { resourceConn = resources[i].openConnection(); } catch (IOException e) { return -1; } if (resourceConn.getLastModified() > lastModified) { lastModified = resourceConn.getLastModified(); } } return lastModified; } private URL[] getRequestResourceURLs(HttpServletRequest request) throws MalformedURLException { String rawResourcePath = request.getPathInfo(); String appendedPaths = request.getParameter("appended"); if (StringUtils.hasText(appendedPaths)) { rawResourcePath = rawResourcePath + "," + appendedPaths; } String[] localResourcePaths = StringUtils.delimitedListToStringArray(rawResourcePath, ","); URL[] resources = new URL[localResourcePaths.length]; for (int i = 0; i < localResourcePaths.length; i++) { String localResourcePath = localResourcePaths[i]; if (!isAllowed(localResourcePath)) { if (log.isWarnEnabled()) { log.warn("An attempt to access a protected resource at " + localResourcePath + " was disallowed."); } return null; } URL resource = getServletContext().getResource(localResourcePath); if (resource == null) { String jarResourcePath = jarPathPrefix + localResourcePath; if (!isAllowed(jarResourcePath)) { if (log.isWarnEnabled()) { log .warn("An attempt to access a protected resource at " + jarResourcePath + " was disallowed."); } return null; } if (jarResourcePath.startsWith("/")) { jarResourcePath = jarResourcePath.substring(1); } if (log.isDebugEnabled()) { log.debug("Searching classpath for resource: " + jarResourcePath); } resource = ClassUtils.getDefaultClassLoader().getResource(jarResourcePath); } if (resource == null) { if (resources.length > 1) { log.debug("Combined resource not found: " + localResourcePath); } return null; } else { resources[i] = resource; } } return resources; } private boolean isAllowed(String resourcePath) { if (resourcePath.matches(protectedPath)) { return false; } PathMatcher pathMatcher = new AntPathMatcher(); Iterator allowedResourcePathsIt = allowedResourcePaths.iterator(); while (allowedResourcePathsIt.hasNext()) { String pattern = (String) allowedResourcePathsIt.next(); if (pathMatcher.match(pattern, resourcePath)) { return true; } } return false; } /** * Set HTTP headers to allow caching for the given number of seconds. * @param seconds number of seconds into the future that the response should be cacheable for */ private void configureCaching(HttpServletResponse response, int seconds) { // HTTP 1.0 header response.setDateHeader(HTTP_EXPIRES_HEADER, System.currentTimeMillis() + seconds * 1000L); // HTTP 1.1 header response.setHeader(HTTP_CACHE_CONTROL_HEADER, "max-age=" + seconds); } private class GZIPResponseStream extends ServletOutputStream { private ByteArrayOutputStream byteStream = null; private GZIPOutputStream gzipStream = null; private boolean closed = false; private HttpServletResponse response = null; private ServletOutputStream servletStream = null; public GZIPResponseStream(HttpServletResponse response) throws IOException { super(); closed = false; this.response = response; this.servletStream = response.getOutputStream(); byteStream = new ByteArrayOutputStream(); gzipStream = new GZIPOutputStream(byteStream); } public void close() throws IOException { if (closed) { throw new IOException("This output stream has already been closed"); } gzipStream.finish(); byte[] bytes = byteStream.toByteArray(); response.setContentLength(bytes.length); response.addHeader("Content-Encoding", "gzip"); servletStream.write(bytes); servletStream.flush(); servletStream.close(); closed = true; } public void flush() throws IOException { if (closed) { throw new IOException("Cannot flush a closed output stream"); } gzipStream.flush(); } public void write(int b) throws IOException { if (closed) { throw new IOException("Cannot write to a closed output stream"); } gzipStream.write((byte) b); } public void write(byte b[]) throws IOException { write(b, 0, b.length); } public void write(byte b[], int off, int len) throws IOException { if (closed) { throw new IOException("Cannot write to a closed output stream"); } gzipStream.write(b, off, len); } public boolean closed() { return (this.closed); } public void reset() { // noop } } /** * Set whether to apply gzip compression to resources if the requesting client supports it. */ public void setGzipEnabled(boolean gzipEnabled) { this.gzipEnabled = gzipEnabled; } /** * Set allowed resources as an comma separated String of URL patterns, e.g. "META-INF/** /*.js", The paths may be * any Ant-style pattern parsable by AntPathMatcher. * * @see AntPathMatcher */ public void setAllowedResourcePaths(String allowedResourcePaths) { this.allowedResourcePaths = new HashSet(Arrays.asList(StringUtils.tokenizeToStringArray(allowedResourcePaths, ",", true, true))); } /** * Set comma separated MIME types that should have gzip compression applied. Typically, gzip compression is only * useful for text based content. Ant-style patterns are supported, e.g. "text/*". * * @see AntPathMatcher */ public void setCompressedMimeTypes(String compressedMimeTypes) { this.compressedMimeTypes = new HashSet(Arrays.asList(StringUtils.tokenizeToStringArray(compressedMimeTypes, ",", true, true))); } /** * Set the default path prefix to apply to resources being served from jar files. Default is "META-INF". */ public void setJarPathPrefix(String jarPathPrefix) { this.jarPathPrefix = jarPathPrefix; } /** * Set the number of seconds resources should be cached by the client. Zero disables caching. Default is one year. */ public void setCacheTimeout(int cacheTimeout) { this.cacheTimeout = cacheTimeout; } } ././@LongLink0000000000000000000000000000017400000000000011567 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/java/org/springframework/js/resource/package.htmllibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/main/java/org/springframework/j0000644000000000000000000000020711360615640027663 0ustar

Contains the generic ResourceServlet for serving web resources such as Javascript and CSS.

libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/test/0000755000000000000000000000000011360615634022616 5ustar libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/test/resources/0000755000000000000000000000000011360615634024630 5ustar libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/test/resources/log4j.xml0000644000000000000000000000214411360615634026372 0ustar libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/test/java/0000755000000000000000000000000011360615634023537 5ustar libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/test/java/org/0000755000000000000000000000000011360615634024326 5ustar libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/test/java/org/springframework/0000755000000000000000000000000011360615634027546 5ustar ././@LongLink0000000000000000000000000000014700000000000011567 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/test/java/org/springframework/js/libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/test/java/org/springframework/j0000755000000000000000000000000011360615636027722 5ustar ././@LongLink0000000000000000000000000000015400000000000011565 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/test/java/org/springframework/js/ajax/libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/test/java/org/springframework/j0000755000000000000000000000000011360615634027720 5ustar ././@LongLink0000000000000000000000000000016300000000000011565 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/test/java/org/springframework/js/ajax/tiles2/libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/test/java/org/springframework/j0000755000000000000000000000000011360615642027717 5ustar ././@LongLink0000000000000000000000000000021000000000000011556 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/test/java/org/springframework/js/ajax/tiles2/tiles-definitions.xmllibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/test/java/org/springframework/j0000644000000000000000000000137311360615634027726 0ustar ././@LongLink0000000000000000000000000000021200000000000011560 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/test/java/org/springframework/js/ajax/tiles2/AjaxTilesViewTests.javalibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/test/java/org/springframework/j0000644000000000000000000001054011360615642027721 0ustar package org.springframework.js.ajax.tiles2; import java.util.HashMap; import java.util.Map; import junit.framework.TestCase; import org.apache.tiles.Attribute; import org.apache.tiles.Definition; import org.apache.tiles.access.TilesAccess; import org.apache.tiles.context.TilesRequestContext; import org.apache.tiles.impl.BasicTilesContainer; import org.springframework.js.ajax.SpringJavascriptAjaxHandler; import org.springframework.mock.web.MockHttpServletRequest; import org.springframework.mock.web.MockHttpServletResponse; import org.springframework.mock.web.MockServletContext; import org.springframework.web.context.support.StaticWebApplicationContext; import org.springframework.web.servlet.support.RequestContext; import org.springframework.web.servlet.view.tiles2.TilesConfigurer; public class AjaxTilesViewTests extends TestCase { private AjaxTilesView ajaxTilesView; private MockHttpServletRequest request; private MockHttpServletResponse response; private MockServletContext servletContext; protected void setUp() throws Exception { servletContext = new MockServletContext("/org/springframework/js/ajax/tiles2/"); request = new MockHttpServletRequest(servletContext); response = new MockHttpServletResponse(); TilesConfigurer tc = new TilesConfigurer(); tc.setDefinitions(new String[] { "tiles-definitions.xml" }); tc.setValidateDefinitions(true); tc.setServletContext(servletContext); tc.afterPropertiesSet(); ajaxTilesView = new AjaxTilesView(); } private void setupStaticWebApplicationContext() { StaticWebApplicationContext wac = new StaticWebApplicationContext(); wac.setServletContext(servletContext); wac.refresh(); request.setAttribute(RequestContext.WEB_APPLICATION_CONTEXT_ATTRIBUTE, wac); ajaxTilesView.setApplicationContext(wac); } public void testFullPageRendering() throws Exception { setupStaticWebApplicationContext(); ajaxTilesView.setUrl("search"); ajaxTilesView.renderMergedOutputModel(new HashMap(), request, response); assertEquals("/WEB-INF/layout.jsp", response.getForwardedUrl()); } public void testAjaxRequestNoFragments() throws Exception { setupStaticWebApplicationContext(); request.addHeader("Accept", SpringJavascriptAjaxHandler.AJAX_ACCEPT_CONTENT_TYPE); ajaxTilesView.setUrl("search"); ajaxTilesView.renderMergedOutputModel(new HashMap(), request, response); assertEquals("/WEB-INF/layout.jsp", response.getForwardedUrl()); } public void testRenderFragment_Template() throws Exception { setupStaticWebApplicationContext(); request.addHeader("Accept", SpringJavascriptAjaxHandler.AJAX_ACCEPT_CONTENT_TYPE); request.addParameter("fragments", "searchResults"); ajaxTilesView.setUrl("search"); ajaxTilesView.renderMergedOutputModel(new HashMap(), request, response); assertEquals("/WEB-INF/searchResults.jsp", response.getIncludedUrl()); } public void testRenderFragment_Definition() throws Exception { setupStaticWebApplicationContext(); request.addHeader("Accept", SpringJavascriptAjaxHandler.AJAX_ACCEPT_CONTENT_TYPE); request.addParameter("fragments", "body"); ajaxTilesView.setUrl("search"); ajaxTilesView.renderMergedOutputModel(new HashMap(), request, response); assertEquals("/WEB-INF/search.jsp", response.getIncludedUrl()); } public void testFlattenAttributeMap() throws Exception { BasicTilesContainer container = (BasicTilesContainer) TilesAccess.getContainer(servletContext); TilesRequestContext tilesRequestContext = container.getContextFactory().createRequestContext( container.getApplicationContext(), new Object[] { request, response }); Definition compositeDefinition = container.getDefinitionsFactory().getDefinition("search", tilesRequestContext); Map resultMap = new HashMap(); ajaxTilesView.flattenAttributeMap(container, tilesRequestContext, resultMap, compositeDefinition, request, response); assertNotNull(resultMap.get("body")); assertNotNull(resultMap.get("searchForm")); assertEquals("/WEB-INF/searchForm.jsp", ((Attribute) resultMap.get("searchForm")).getValue()); assertNotNull(resultMap.get("searchResults")); } public void testGetRenderFragments() throws Exception { Map model = new HashMap(); request.setParameter("fragments", "f1,f2, f3"); String[] fragments = ajaxTilesView.getRenderFragments(model, request, response); assertEquals("f1", fragments[0]); assertEquals("f2", fragments[1]); assertEquals("f3", fragments[2]); } } ././@LongLink0000000000000000000000000000016000000000000011562 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/test/java/org/springframework/js/resource/libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/test/java/org/springframework/j0000755000000000000000000000000011360615636027722 5ustar ././@LongLink0000000000000000000000000000021100000000000011557 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/test/java/org/springframework/js/resource/ResourceServletTests.javalibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/src/test/java/org/springframework/j0000644000000000000000000000523411360615636027730 0ustar package org.springframework.js.resource; import java.util.HashMap; import java.util.Map; import javax.servlet.ServletConfig; import javax.servlet.ServletContext; import junit.framework.TestCase; import org.springframework.mock.web.MockHttpServletRequest; import org.springframework.mock.web.MockHttpServletResponse; import org.springframework.mock.web.MockServletConfig; import org.springframework.mock.web.MockServletContext; public class ResourceServletTests extends TestCase { ServletContext servletContext = new ResourceTestMockServletContext(); ServletConfig config = new MockServletConfig(servletContext); MockHttpServletResponse response = new MockHttpServletResponse(); MockHttpServletRequest request = new MockHttpServletRequest(); String[] requestElements; ResourceServlet servlet; protected void setUp() throws Exception { servlet = new ResourceServlet(); servlet.init(config); } public final void testExecute() throws Exception { String requestPath = "/dojo/dojo.js"; request.setPathInfo(requestPath); servlet.doGet(request, response); assertEquals(200, response.getStatus()); assertNull(response.getHeader("Content-Encoding")); } public final void testExecute_CombinedResources() throws Exception { String requestPath = "/dojo/dojo.js"; request.setPathInfo(requestPath); Map params = new HashMap(); params.put("appended", "/dijit/dijit.js,/dijit/Dialog.js"); request.setParameters(params); servlet.doGet(request, response); assertEquals(200, response.getStatus()); } public final void testExecute_CompressedResponse() throws Exception { String requestPath = "/dojo/dojo.js"; request.setPathInfo(requestPath); request.addHeader("Accept-Encoding", "gzip"); servlet.doGet(request, response); assertEquals(200, response.getStatus()); assertEquals("gzip", response.getHeader("Content-Encoding")); } public final void testExecute_ResourceNotFound() throws Exception { String requestPath = "/xxx/xxx.js"; request.setPathInfo(requestPath); servlet.doGet(request, response); assertEquals(404, response.getStatus()); } public final void testExecute_ProtectedPath() throws Exception { String requestPath = "/WEB-INF/web.xml"; request.setPathInfo(requestPath); servlet.doGet(request, response); assertEquals(404, response.getStatus()); } public final void testExecute_DisallowedPath() throws Exception { String requestPath = "/persistence.xml"; request.setPathInfo(requestPath); servlet.doGet(request, response); assertEquals(404, response.getStatus()); } private class ResourceTestMockServletContext extends MockServletContext { public String getMimeType(String filePath) { return null; } } } libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/pom.xml0000644000000000000000000000421011360615642022361 0ustar 4.0.0 org.springframework.webflow spring-js jar Spring JavaScript 2.0.9.RELEASE commons-logging commons-logging 1.1.1 org.springframework spring-beans ${spring.version} org.springframework spring-context ${spring.version} org.springframework spring-core ${spring.version} javax.servlet servlet-api 2.4 provided org.apache.tiles tiles-api 2.0.5 true org.apache.tiles tiles-core 2.0.5 true org.apache.tiles tiles-jsp 2.0.5 true org.springframework spring-web ${spring.version} true org.springframework spring-webmvc ${spring.version} true 2.5.6.SEC01 libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/.settings/0000755000000000000000000000000011360615632022764 5ustar libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/.settings/org.eclipse.jdt.ui.prefs0000644000000000000000000002034011360615632027432 0ustar #Tue Sep 25 14:14:24 EDT 2007 eclipse.preferences.version=1 editor_save_participant_org.eclipse.jdt.ui.postsavelistener.cleanup=true formatter_profile=_Spring Java Conventions formatter_settings_version=11 org.eclipse.jdt.ui.exception.name=e org.eclipse.jdt.ui.gettersetter.use.is=false org.eclipse.jdt.ui.javadoc=false org.eclipse.jdt.ui.keywordthis=false org.eclipse.jdt.ui.overrideannotation=false org.eclipse.jdt.ui.text.custom_code_templates= sp_cleanup.add_default_serial_version_id=true sp_cleanup.add_generated_serial_version_id=false sp_cleanup.add_missing_annotations=true sp_cleanup.add_missing_deprecated_annotations=true sp_cleanup.add_missing_nls_tags=false sp_cleanup.add_missing_override_annotations=true sp_cleanup.add_serial_version_id=false sp_cleanup.always_use_blocks=true sp_cleanup.always_use_parentheses_in_expressions=false sp_cleanup.always_use_this_for_non_static_field_access=false sp_cleanup.always_use_this_for_non_static_method_access=false sp_cleanup.convert_to_enhanced_for_loop=false sp_cleanup.format_source_code=true sp_cleanup.make_local_variable_final=false sp_cleanup.make_parameters_final=false sp_cleanup.make_private_fields_final=true sp_cleanup.make_variable_declarations_final=true sp_cleanup.never_use_blocks=false sp_cleanup.never_use_parentheses_in_expressions=true sp_cleanup.on_save_use_additional_actions=false sp_cleanup.organize_imports=true sp_cleanup.qualify_static_field_accesses_with_declaring_class=false sp_cleanup.qualify_static_member_accesses_through_instances_with_declaring_class=true sp_cleanup.qualify_static_member_accesses_through_subtypes_with_declaring_class=true sp_cleanup.qualify_static_member_accesses_with_declaring_class=false sp_cleanup.qualify_static_method_accesses_with_declaring_class=false sp_cleanup.remove_private_constructors=true sp_cleanup.remove_trailing_whitespaces=false sp_cleanup.remove_trailing_whitespaces_all=true sp_cleanup.remove_trailing_whitespaces_ignore_empty=false sp_cleanup.remove_unnecessary_casts=true sp_cleanup.remove_unnecessary_nls_tags=false sp_cleanup.remove_unused_imports=false sp_cleanup.remove_unused_local_variables=false sp_cleanup.remove_unused_private_fields=true sp_cleanup.remove_unused_private_members=false sp_cleanup.remove_unused_private_methods=true sp_cleanup.remove_unused_private_types=true sp_cleanup.sort_members=false sp_cleanup.sort_members_all=false sp_cleanup.use_blocks=false sp_cleanup.use_blocks_only_for_return_and_throw=false sp_cleanup.use_parentheses_in_expressions=false sp_cleanup.use_this_for_non_static_field_access=false sp_cleanup.use_this_for_non_static_field_access_only_if_necessary=true sp_cleanup.use_this_for_non_static_method_access=false sp_cleanup.use_this_for_non_static_method_access_only_if_necessary=true ././@LongLink0000000000000000000000000000014600000000000011566 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/.settings/org.eclipse.jdt.core.prefslibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/.settings/org.eclipse.jdt.core.pref0000644000000000000000000006441311360615632027573 0ustar #Thu Jul 10 09:40:30 BST 2008 eclipse.preferences.version=1 org.eclipse.jdt.core.codeComplete.argumentPrefixes= org.eclipse.jdt.core.codeComplete.argumentSuffixes= org.eclipse.jdt.core.codeComplete.fieldPrefixes= org.eclipse.jdt.core.codeComplete.fieldSuffixes= org.eclipse.jdt.core.codeComplete.localPrefixes= org.eclipse.jdt.core.codeComplete.localSuffixes= org.eclipse.jdt.core.codeComplete.staticFieldPrefixes= org.eclipse.jdt.core.codeComplete.staticFieldSuffixes= org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.2 org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve org.eclipse.jdt.core.compiler.compliance=1.4 org.eclipse.jdt.core.compiler.debug.lineNumber=generate org.eclipse.jdt.core.compiler.debug.localVariable=generate org.eclipse.jdt.core.compiler.debug.sourceFile=generate org.eclipse.jdt.core.compiler.doc.comment.support=enabled org.eclipse.jdt.core.compiler.problem.annotationSuperInterface=warning org.eclipse.jdt.core.compiler.problem.assertIdentifier=warning org.eclipse.jdt.core.compiler.problem.autoboxing=ignore org.eclipse.jdt.core.compiler.problem.deprecation=warning org.eclipse.jdt.core.compiler.problem.deprecationInDeprecatedCode=disabled org.eclipse.jdt.core.compiler.problem.deprecationWhenOverridingDeprecatedMethod=disabled org.eclipse.jdt.core.compiler.problem.discouragedReference=warning org.eclipse.jdt.core.compiler.problem.emptyStatement=ignore org.eclipse.jdt.core.compiler.problem.enumIdentifier=warning org.eclipse.jdt.core.compiler.problem.fallthroughCase=ignore org.eclipse.jdt.core.compiler.problem.fieldHiding=ignore org.eclipse.jdt.core.compiler.problem.finalParameterBound=warning org.eclipse.jdt.core.compiler.problem.finallyBlockNotCompletingNormally=warning org.eclipse.jdt.core.compiler.problem.forbiddenReference=error org.eclipse.jdt.core.compiler.problem.hiddenCatchBlock=warning org.eclipse.jdt.core.compiler.problem.incompatibleNonInheritedInterfaceMethod=warning org.eclipse.jdt.core.compiler.problem.incompleteEnumSwitch=ignore org.eclipse.jdt.core.compiler.problem.indirectStaticAccess=ignore org.eclipse.jdt.core.compiler.problem.invalidJavadoc=warning org.eclipse.jdt.core.compiler.problem.invalidJavadocTags=enabled org.eclipse.jdt.core.compiler.problem.invalidJavadocTagsDeprecatedRef=disabled org.eclipse.jdt.core.compiler.problem.invalidJavadocTagsNotVisibleRef=enabled org.eclipse.jdt.core.compiler.problem.invalidJavadocTagsVisibility=protected org.eclipse.jdt.core.compiler.problem.localVariableHiding=ignore org.eclipse.jdt.core.compiler.problem.methodWithConstructorName=warning org.eclipse.jdt.core.compiler.problem.missingDeprecatedAnnotation=ignore org.eclipse.jdt.core.compiler.problem.missingJavadocComments=ignore org.eclipse.jdt.core.compiler.problem.missingJavadocCommentsOverriding=disabled org.eclipse.jdt.core.compiler.problem.missingJavadocCommentsVisibility=public org.eclipse.jdt.core.compiler.problem.missingJavadocTags=ignore org.eclipse.jdt.core.compiler.problem.missingJavadocTagsOverriding=disabled org.eclipse.jdt.core.compiler.problem.missingJavadocTagsVisibility=public org.eclipse.jdt.core.compiler.problem.missingOverrideAnnotation=ignore org.eclipse.jdt.core.compiler.problem.missingSerialVersion=ignore org.eclipse.jdt.core.compiler.problem.noEffectAssignment=warning org.eclipse.jdt.core.compiler.problem.noImplicitStringConversion=warning org.eclipse.jdt.core.compiler.problem.nonExternalizedStringLiteral=ignore org.eclipse.jdt.core.compiler.problem.nullReference=ignore org.eclipse.jdt.core.compiler.problem.overridingPackageDefaultMethod=warning org.eclipse.jdt.core.compiler.problem.parameterAssignment=ignore org.eclipse.jdt.core.compiler.problem.possibleAccidentalBooleanAssignment=ignore org.eclipse.jdt.core.compiler.problem.rawTypeReference=ignore org.eclipse.jdt.core.compiler.problem.specialParameterHidingField=disabled org.eclipse.jdt.core.compiler.problem.staticAccessReceiver=warning org.eclipse.jdt.core.compiler.problem.suppressWarnings=enabled org.eclipse.jdt.core.compiler.problem.syntheticAccessEmulation=ignore org.eclipse.jdt.core.compiler.problem.typeParameterHiding=warning org.eclipse.jdt.core.compiler.problem.uncheckedTypeOperation=warning org.eclipse.jdt.core.compiler.problem.undocumentedEmptyBlock=ignore org.eclipse.jdt.core.compiler.problem.unhandledWarningToken=warning org.eclipse.jdt.core.compiler.problem.unnecessaryElse=ignore org.eclipse.jdt.core.compiler.problem.unnecessaryTypeCheck=warning org.eclipse.jdt.core.compiler.problem.unqualifiedFieldAccess=ignore org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownException=ignore org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionWhenOverriding=disabled org.eclipse.jdt.core.compiler.problem.unusedImport=warning org.eclipse.jdt.core.compiler.problem.unusedLabel=warning org.eclipse.jdt.core.compiler.problem.unusedLocal=warning org.eclipse.jdt.core.compiler.problem.unusedParameter=ignore org.eclipse.jdt.core.compiler.problem.unusedParameterWhenImplementingAbstract=disabled org.eclipse.jdt.core.compiler.problem.unusedParameterWhenOverridingConcrete=disabled org.eclipse.jdt.core.compiler.problem.unusedPrivateMember=warning org.eclipse.jdt.core.compiler.problem.varargsArgumentNeedCast=warning org.eclipse.jdt.core.compiler.source=1.3 org.eclipse.jdt.core.formatter.align_type_members_on_columns=false org.eclipse.jdt.core.formatter.alignment_for_arguments_in_allocation_expression=16 org.eclipse.jdt.core.formatter.alignment_for_arguments_in_enum_constant=16 org.eclipse.jdt.core.formatter.alignment_for_arguments_in_explicit_constructor_call=16 org.eclipse.jdt.core.formatter.alignment_for_arguments_in_method_invocation=16 org.eclipse.jdt.core.formatter.alignment_for_arguments_in_qualified_allocation_expression=16 org.eclipse.jdt.core.formatter.alignment_for_assignment=0 org.eclipse.jdt.core.formatter.alignment_for_binary_expression=16 org.eclipse.jdt.core.formatter.alignment_for_compact_if=16 org.eclipse.jdt.core.formatter.alignment_for_conditional_expression=80 org.eclipse.jdt.core.formatter.alignment_for_enum_constants=0 org.eclipse.jdt.core.formatter.alignment_for_expressions_in_array_initializer=16 org.eclipse.jdt.core.formatter.alignment_for_multiple_fields=16 org.eclipse.jdt.core.formatter.alignment_for_parameters_in_constructor_declaration=16 org.eclipse.jdt.core.formatter.alignment_for_parameters_in_method_declaration=16 org.eclipse.jdt.core.formatter.alignment_for_selector_in_method_invocation=16 org.eclipse.jdt.core.formatter.alignment_for_superclass_in_type_declaration=16 org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_enum_declaration=16 org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_type_declaration=16 org.eclipse.jdt.core.formatter.alignment_for_throws_clause_in_constructor_declaration=16 org.eclipse.jdt.core.formatter.alignment_for_throws_clause_in_method_declaration=16 org.eclipse.jdt.core.formatter.blank_lines_after_imports=1 org.eclipse.jdt.core.formatter.blank_lines_after_package=1 org.eclipse.jdt.core.formatter.blank_lines_before_field=0 org.eclipse.jdt.core.formatter.blank_lines_before_first_class_body_declaration=0 org.eclipse.jdt.core.formatter.blank_lines_before_imports=1 org.eclipse.jdt.core.formatter.blank_lines_before_member_type=1 org.eclipse.jdt.core.formatter.blank_lines_before_method=1 org.eclipse.jdt.core.formatter.blank_lines_before_new_chunk=1 org.eclipse.jdt.core.formatter.blank_lines_before_package=0 org.eclipse.jdt.core.formatter.blank_lines_between_import_groups=1 org.eclipse.jdt.core.formatter.blank_lines_between_type_declarations=1 org.eclipse.jdt.core.formatter.brace_position_for_annotation_type_declaration=end_of_line org.eclipse.jdt.core.formatter.brace_position_for_anonymous_type_declaration=end_of_line org.eclipse.jdt.core.formatter.brace_position_for_array_initializer=end_of_line org.eclipse.jdt.core.formatter.brace_position_for_block=end_of_line org.eclipse.jdt.core.formatter.brace_position_for_block_in_case=end_of_line org.eclipse.jdt.core.formatter.brace_position_for_constructor_declaration=end_of_line org.eclipse.jdt.core.formatter.brace_position_for_enum_constant=end_of_line org.eclipse.jdt.core.formatter.brace_position_for_enum_declaration=end_of_line org.eclipse.jdt.core.formatter.brace_position_for_method_declaration=end_of_line org.eclipse.jdt.core.formatter.brace_position_for_switch=end_of_line org.eclipse.jdt.core.formatter.brace_position_for_type_declaration=end_of_line org.eclipse.jdt.core.formatter.comment.clear_blank_lines_in_block_comment=false org.eclipse.jdt.core.formatter.comment.clear_blank_lines_in_javadoc_comment=false org.eclipse.jdt.core.formatter.comment.format_block_comments=true org.eclipse.jdt.core.formatter.comment.format_header=false org.eclipse.jdt.core.formatter.comment.format_html=true org.eclipse.jdt.core.formatter.comment.format_javadoc_comments=true org.eclipse.jdt.core.formatter.comment.format_line_comments=true org.eclipse.jdt.core.formatter.comment.format_source_code=true org.eclipse.jdt.core.formatter.comment.indent_parameter_description=true org.eclipse.jdt.core.formatter.comment.indent_root_tags=false org.eclipse.jdt.core.formatter.comment.insert_new_line_before_root_tags=do not insert org.eclipse.jdt.core.formatter.comment.insert_new_line_for_parameter=do not insert org.eclipse.jdt.core.formatter.comment.line_length=120 org.eclipse.jdt.core.formatter.compact_else_if=true org.eclipse.jdt.core.formatter.continuation_indentation=2 org.eclipse.jdt.core.formatter.continuation_indentation_for_array_initializer=2 org.eclipse.jdt.core.formatter.format_guardian_clause_on_one_line=false org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_annotation_declaration_header=true org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_enum_constant_header=true org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_enum_declaration_header=true org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_type_header=true org.eclipse.jdt.core.formatter.indent_breaks_compare_to_cases=true org.eclipse.jdt.core.formatter.indent_empty_lines=false org.eclipse.jdt.core.formatter.indent_statements_compare_to_block=true org.eclipse.jdt.core.formatter.indent_statements_compare_to_body=true org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_cases=true org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_switch=false org.eclipse.jdt.core.formatter.indentation.size=8 org.eclipse.jdt.core.formatter.insert_new_line_after_annotation=insert org.eclipse.jdt.core.formatter.insert_new_line_after_opening_brace_in_array_initializer=do not insert org.eclipse.jdt.core.formatter.insert_new_line_at_end_of_file_if_missing=do not insert org.eclipse.jdt.core.formatter.insert_new_line_before_catch_in_try_statement=do not insert org.eclipse.jdt.core.formatter.insert_new_line_before_closing_brace_in_array_initializer=do not insert org.eclipse.jdt.core.formatter.insert_new_line_before_else_in_if_statement=do not insert org.eclipse.jdt.core.formatter.insert_new_line_before_finally_in_try_statement=do not insert org.eclipse.jdt.core.formatter.insert_new_line_before_while_in_do_statement=do not insert org.eclipse.jdt.core.formatter.insert_new_line_in_empty_annotation_declaration=insert org.eclipse.jdt.core.formatter.insert_new_line_in_empty_anonymous_type_declaration=insert org.eclipse.jdt.core.formatter.insert_new_line_in_empty_block=insert org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_constant=insert org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_declaration=insert org.eclipse.jdt.core.formatter.insert_new_line_in_empty_method_body=insert org.eclipse.jdt.core.formatter.insert_new_line_in_empty_type_declaration=insert org.eclipse.jdt.core.formatter.insert_space_after_and_in_type_parameter=insert org.eclipse.jdt.core.formatter.insert_space_after_assignment_operator=insert org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation=do not insert org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation_type_declaration=do not insert org.eclipse.jdt.core.formatter.insert_space_after_binary_operator=insert org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_arguments=insert org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_parameters=insert org.eclipse.jdt.core.formatter.insert_space_after_closing_brace_in_block=insert org.eclipse.jdt.core.formatter.insert_space_after_closing_paren_in_cast=insert org.eclipse.jdt.core.formatter.insert_space_after_colon_in_assert=insert org.eclipse.jdt.core.formatter.insert_space_after_colon_in_case=insert org.eclipse.jdt.core.formatter.insert_space_after_colon_in_conditional=insert org.eclipse.jdt.core.formatter.insert_space_after_colon_in_for=insert org.eclipse.jdt.core.formatter.insert_space_after_colon_in_labeled_statement=insert org.eclipse.jdt.core.formatter.insert_space_after_comma_in_allocation_expression=insert org.eclipse.jdt.core.formatter.insert_space_after_comma_in_annotation=insert org.eclipse.jdt.core.formatter.insert_space_after_comma_in_array_initializer=insert org.eclipse.jdt.core.formatter.insert_space_after_comma_in_constructor_declaration_parameters=insert org.eclipse.jdt.core.formatter.insert_space_after_comma_in_constructor_declaration_throws=insert org.eclipse.jdt.core.formatter.insert_space_after_comma_in_enum_constant_arguments=insert org.eclipse.jdt.core.formatter.insert_space_after_comma_in_enum_declarations=insert org.eclipse.jdt.core.formatter.insert_space_after_comma_in_explicitconstructorcall_arguments=insert org.eclipse.jdt.core.formatter.insert_space_after_comma_in_for_increments=insert org.eclipse.jdt.core.formatter.insert_space_after_comma_in_for_inits=insert org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_declaration_parameters=insert org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_declaration_throws=insert org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_invocation_arguments=insert org.eclipse.jdt.core.formatter.insert_space_after_comma_in_multiple_field_declarations=insert org.eclipse.jdt.core.formatter.insert_space_after_comma_in_multiple_local_declarations=insert org.eclipse.jdt.core.formatter.insert_space_after_comma_in_parameterized_type_reference=insert org.eclipse.jdt.core.formatter.insert_space_after_comma_in_superinterfaces=insert org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_arguments=insert org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_parameters=insert org.eclipse.jdt.core.formatter.insert_space_after_ellipsis=insert org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_parameterized_type_reference=do not insert org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_arguments=do not insert org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_parameters=do not insert org.eclipse.jdt.core.formatter.insert_space_after_opening_brace_in_array_initializer=insert org.eclipse.jdt.core.formatter.insert_space_after_opening_bracket_in_array_allocation_expression=do not insert org.eclipse.jdt.core.formatter.insert_space_after_opening_bracket_in_array_reference=do not insert org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_annotation=do not insert org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_cast=do not insert org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_catch=do not insert org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_constructor_declaration=do not insert org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_enum_constant=do not insert org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_for=do not insert org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_if=do not insert org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_method_declaration=do not insert org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_method_invocation=do not insert org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_parenthesized_expression=do not insert org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_switch=do not insert org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_synchronized=do not insert org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_while=do not insert org.eclipse.jdt.core.formatter.insert_space_after_postfix_operator=do not insert org.eclipse.jdt.core.formatter.insert_space_after_prefix_operator=do not insert org.eclipse.jdt.core.formatter.insert_space_after_question_in_conditional=insert org.eclipse.jdt.core.formatter.insert_space_after_question_in_wildcard=do not insert org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_for=insert org.eclipse.jdt.core.formatter.insert_space_after_unary_operator=do not insert org.eclipse.jdt.core.formatter.insert_space_before_and_in_type_parameter=insert org.eclipse.jdt.core.formatter.insert_space_before_assignment_operator=insert org.eclipse.jdt.core.formatter.insert_space_before_at_in_annotation_type_declaration=insert org.eclipse.jdt.core.formatter.insert_space_before_binary_operator=insert org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_parameterized_type_reference=do not insert org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_arguments=do not insert org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_parameters=do not insert org.eclipse.jdt.core.formatter.insert_space_before_closing_brace_in_array_initializer=insert org.eclipse.jdt.core.formatter.insert_space_before_closing_bracket_in_array_allocation_expression=do not insert org.eclipse.jdt.core.formatter.insert_space_before_closing_bracket_in_array_reference=do not insert org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_annotation=do not insert org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_cast=do not insert org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_catch=do not insert org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_constructor_declaration=do not insert org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_enum_constant=do not insert org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_for=do not insert org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_if=do not insert org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_method_declaration=do not insert org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_method_invocation=do not insert org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_parenthesized_expression=do not insert org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_switch=do not insert org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_synchronized=do not insert org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_while=do not insert org.eclipse.jdt.core.formatter.insert_space_before_colon_in_assert=insert org.eclipse.jdt.core.formatter.insert_space_before_colon_in_case=do not insert org.eclipse.jdt.core.formatter.insert_space_before_colon_in_conditional=insert org.eclipse.jdt.core.formatter.insert_space_before_colon_in_default=do not insert org.eclipse.jdt.core.formatter.insert_space_before_colon_in_for=insert org.eclipse.jdt.core.formatter.insert_space_before_colon_in_labeled_statement=do not insert org.eclipse.jdt.core.formatter.insert_space_before_comma_in_allocation_expression=do not insert org.eclipse.jdt.core.formatter.insert_space_before_comma_in_annotation=do not insert org.eclipse.jdt.core.formatter.insert_space_before_comma_in_array_initializer=do not insert org.eclipse.jdt.core.formatter.insert_space_before_comma_in_constructor_declaration_parameters=do not insert org.eclipse.jdt.core.formatter.insert_space_before_comma_in_constructor_declaration_throws=do not insert org.eclipse.jdt.core.formatter.insert_space_before_comma_in_enum_constant_arguments=do not insert org.eclipse.jdt.core.formatter.insert_space_before_comma_in_enum_declarations=do not insert org.eclipse.jdt.core.formatter.insert_space_before_comma_in_explicitconstructorcall_arguments=do not insert org.eclipse.jdt.core.formatter.insert_space_before_comma_in_for_increments=do not insert org.eclipse.jdt.core.formatter.insert_space_before_comma_in_for_inits=do not insert org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_declaration_parameters=do not insert org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_declaration_throws=do not insert org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_invocation_arguments=do not insert org.eclipse.jdt.core.formatter.insert_space_before_comma_in_multiple_field_declarations=do not insert org.eclipse.jdt.core.formatter.insert_space_before_comma_in_multiple_local_declarations=do not insert org.eclipse.jdt.core.formatter.insert_space_before_comma_in_parameterized_type_reference=do not insert org.eclipse.jdt.core.formatter.insert_space_before_comma_in_superinterfaces=do not insert org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_arguments=do not insert org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_parameters=do not insert org.eclipse.jdt.core.formatter.insert_space_before_ellipsis=do not insert org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_parameterized_type_reference=do not insert org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_arguments=do not insert org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_parameters=do not insert org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_annotation_type_declaration=insert org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_anonymous_type_declaration=insert org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_array_initializer=insert org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_block=insert org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_constructor_declaration=insert org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_enum_constant=insert org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_enum_declaration=insert org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_method_declaration=insert org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_switch=insert org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_type_declaration=insert org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_allocation_expression=do not insert org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_reference=do not insert org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_type_reference=do not insert org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_annotation=do not insert org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_annotation_type_member_declaration=do not insert org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_catch=insert org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_constructor_declaration=do not insert org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_enum_constant=do not insert org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_for=insert org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_if=insert org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_method_declaration=do not insert org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_method_invocation=do not insert org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_parenthesized_expression=do not insert org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_switch=insert org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_synchronized=insert org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_while=insert org.eclipse.jdt.core.formatter.insert_space_before_parenthesized_expression_in_return=insert org.eclipse.jdt.core.formatter.insert_space_before_parenthesized_expression_in_throw=insert org.eclipse.jdt.core.formatter.insert_space_before_postfix_operator=do not insert org.eclipse.jdt.core.formatter.insert_space_before_prefix_operator=do not insert org.eclipse.jdt.core.formatter.insert_space_before_question_in_conditional=insert org.eclipse.jdt.core.formatter.insert_space_before_question_in_wildcard=do not insert org.eclipse.jdt.core.formatter.insert_space_before_semicolon=do not insert org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_for=do not insert org.eclipse.jdt.core.formatter.insert_space_before_unary_operator=do not insert org.eclipse.jdt.core.formatter.insert_space_between_brackets_in_array_type_reference=do not insert org.eclipse.jdt.core.formatter.insert_space_between_empty_braces_in_array_initializer=do not insert org.eclipse.jdt.core.formatter.insert_space_between_empty_brackets_in_array_allocation_expression=do not insert org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_annotation_type_member_declaration=do not insert org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_constructor_declaration=do not insert org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_enum_constant=do not insert org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_method_declaration=do not insert org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_method_invocation=do not insert org.eclipse.jdt.core.formatter.keep_else_statement_on_same_line=false org.eclipse.jdt.core.formatter.keep_empty_array_initializer_on_one_line=false org.eclipse.jdt.core.formatter.keep_imple_if_on_one_line=false org.eclipse.jdt.core.formatter.keep_then_statement_on_same_line=false org.eclipse.jdt.core.formatter.lineSplit=120 org.eclipse.jdt.core.formatter.never_indent_block_comments_on_first_column=false org.eclipse.jdt.core.formatter.never_indent_line_comments_on_first_column=false org.eclipse.jdt.core.formatter.number_of_blank_lines_at_beginning_of_method_body=0 org.eclipse.jdt.core.formatter.number_of_empty_lines_to_preserve=1 org.eclipse.jdt.core.formatter.put_empty_statement_on_new_line=true org.eclipse.jdt.core.formatter.tabulation.char=tab org.eclipse.jdt.core.formatter.tabulation.size=4 org.eclipse.jdt.core.formatter.use_tabs_only_for_leading_indentations=false org.eclipse.jdt.core.formatter.wrap_before_binary_operator=true ././@LongLink0000000000000000000000000000015400000000000011565 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/.settings/org.eclipse.wst.validation.prefslibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/.settings/org.eclipse.wst.validatio0000644000000000000000000000317711360615632027720 0ustar #Fri May 05 18:13:37 EDT 2006 DELEGATES_PREFERENCE=delegateValidatorListorg.eclipse.wst.wsdl.validation.internal.eclipse.WSDLDelegatingValidator\=org.eclipse.wst.wsdl.validation.internal.eclipse.Validator;org.eclipse.wst.xsd.core.internal.validation.eclipse.XSDDelegatingValidator\=org.eclipse.wst.xsd.core.internal.validation.eclipse.Validator; USER_BUILD_PREFERENCE=enabledBuildValidatorListorg.eclipse.wst.xsd.core.internal.validation.eclipse.XSDDelegatingValidator;org.eclipse.wst.xml.core.internal.validation.eclipse.Validator;org.eclipse.jst.jsp.core.internal.validation.JSPELValidator;org.eclipse.wst.wsdl.validation.internal.eclipse.WSDLDelegatingValidator;org.eclipse.wst.html.internal.validation.HTMLValidator;org.eclipse.wst.wsi.ui.internal.WSIMessageValidator;org.eclipse.jst.jsp.core.internal.validation.JSPJavaValidator;org.eclipse.wst.dtd.core.internal.validation.eclipse.Validator;org.eclipse.jst.jsp.core.internal.validation.JSPDirectiveValidator; USER_MANUAL_PREFERENCE=enabledManualValidatorListorg.eclipse.wst.xsd.core.internal.validation.eclipse.XSDDelegatingValidator;org.eclipse.wst.xml.core.internal.validation.eclipse.Validator;org.eclipse.jst.jsp.core.internal.validation.JSPELValidator;org.eclipse.wst.wsdl.validation.internal.eclipse.WSDLDelegatingValidator;org.eclipse.wst.html.internal.validation.HTMLValidator;org.eclipse.wst.wsi.ui.internal.WSIMessageValidator;org.eclipse.jst.jsp.core.internal.validation.JSPJavaValidator;org.eclipse.wst.dtd.core.internal.validation.eclipse.Validator;org.eclipse.jst.jsp.core.internal.validation.JSPDirectiveValidator; USER_PREFERENCE=overrideGlobalPreferencesfalse eclipse.preferences.version=1 libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/build.xml0000644000000000000000000000043011360615636022670 0ustar libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/.classpath0000644000000000000000000001210311360615634023030 0ustar libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-js/ivy.xml0000644000000000000000000000523311360615642022403 0ustar libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/build.properties0000644000000000000000000000074311360615646022360 0ustar version=2.0.9 #release.type=integration natural.name=spring-webflow project.key=SWF ivy.cache.dir=${basedir}/../ivy-cache integration.repo.dir=${basedir}/../integration-repo source.version=1.4 javadoc.exclude.package.names=org/springframework/webflow/samples/** javadoc.max.memory=256M test.vm.args=-XX:MaxPermSize=128M # For when releasing release.type=integration # For when releasing milestones #release.type=integration # # For development in trunk #release.type=integration libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-binding/0000755000000000000000000000000011360615644022047 5ustar libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-binding/template.mf0000644000000000000000000000105611360615636024211 0ustar Bundle-SymbolicName: org.springframework.binding Bundle-Name: Spring Binding Bundle-Vendor: SpringSource Bundle-ManifestVersion: 2 Import-Package: ognl;version="[2.6.9, 3.0.0)";resolution:=optional, org.jboss.el;version="[2.0.0, 3.0.0)";resolution:=optional Import-Template: org.springframework.*;version="[2.5.6.SEC01, 3.1.0)", org.apache.commons.logging;version="[1.1.1, 2.0.0)", javax.el;version="[1.0.0, 2.0.0)";resolution:=optional, ognl;version="[2.6.9, 3.0.0)";resolution:=optional, org.jboss.el;version="[2.0.0, 3.0.0)";resolution:=optional libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-binding/.project0000644000000000000000000000056511360615640023520 0ustar spring-binding org.eclipse.jdt.core.javabuilder org.eclipse.jdt.core.javanature libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-binding/src/0000755000000000000000000000000011360615632022633 5ustar libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-binding/src/main/0000755000000000000000000000000011360615646023564 5ustar libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-binding/src/main/resources/0000755000000000000000000000000011360615646025576 5ustar libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-binding/src/main/resources/META-INF/0000755000000000000000000000000011360615646026736 5ustar libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-binding/src/main/java/0000755000000000000000000000000011360615634024502 5ustar libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-binding/src/main/java/org/0000755000000000000000000000000011360615632025267 5ustar ././@LongLink0000000000000000000000000000015100000000000011562 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-binding/src/main/java/org/springframework/libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-binding/src/main/java/org/springframew0000755000000000000000000000000011360615632027714 5ustar ././@LongLink0000000000000000000000000000016100000000000011563 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-binding/src/main/java/org/springframework/binding/libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-binding/src/main/java/org/springframew0000755000000000000000000000000011360615642027715 5ustar ././@LongLink0000000000000000000000000000017400000000000011567 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-binding/src/main/java/org/springframework/binding/validation/libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-binding/src/main/java/org/springframew0000755000000000000000000000000011360615644027717 5ustar ././@LongLink0000000000000000000000000000022200000000000011561 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-binding/src/main/java/org/springframework/binding/validation/ValidationContext.javalibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-binding/src/main/java/org/springframew0000644000000000000000000000276211360615642027726 0ustar /* * Copyright 2008 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.springframework.binding.validation; import java.security.Principal; import org.springframework.binding.message.MessageContext; /** * A context for a validator to use to access user data and report validation failures. * * @author Keith Donald * @author Scott Andrews */ public interface ValidationContext { /** * A context for adding failure messages to display to the user directly. */ public MessageContext getMessageContext(); /** * The current user. */ public Principal getUserPrincipal(); /** * The current user event that triggered validation. */ public String getUserEvent(); /** * Obtain the value entered by the current user in the UI field bound to the property provided. * @param property the name of a bound property * @return the value the user entered in the field bound to the property */ public Object getUserValue(String property); } ././@LongLink0000000000000000000000000000021000000000000011556 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-binding/src/main/java/org/springframework/binding/validation/package.htmllibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-binding/src/main/java/org/springframew0000644000000000000000000000010411360615644027714 0ustar

Common validation interfaces.

././@LongLink0000000000000000000000000000017400000000000011567 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-binding/src/main/java/org/springframework/binding/expression/libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-binding/src/main/java/org/springframew0000755000000000000000000000000011360615646027721 5ustar ././@LongLink0000000000000000000000000000020100000000000011556 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-binding/src/main/java/org/springframework/binding/expression/ognl/libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-binding/src/main/java/org/springframew0000755000000000000000000000000011360615640027713 5ustar ././@LongLink0000000000000000000000000000023200000000000011562 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-binding/src/main/java/org/springframework/binding/expression/ognl/OgnlExpressionParser.javalibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-binding/src/main/java/org/springframew0000644000000000000000000000527511360615640027726 0ustar /* * Copyright 2004-2008 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.springframework.binding.expression.ognl; import ognl.Ognl; import ognl.OgnlException; import ognl.OgnlRuntime; import ognl.PropertyAccessor; import org.springframework.binding.convert.ConversionService; import org.springframework.binding.convert.service.DefaultConversionService; import org.springframework.binding.expression.Expression; import org.springframework.binding.expression.ParserContext; import org.springframework.binding.expression.ParserException; import org.springframework.binding.expression.support.AbstractExpressionParser; /** * An expression parser that parses Ognl expressions. * * @author Keith Donald */ public class OgnlExpressionParser extends AbstractExpressionParser { private ConversionService conversionService = new DefaultConversionService(); /** * The conversion service to use to perform type conversions as needed by the OGNL system. If not specified, the * default is an instance of {@link DefaultConversionService}. */ public ConversionService getConversionService() { return conversionService; } /** * Sets the conversion service to use to perform type conversions as needed by the OGNL system. * @param conversionService the conversion service to use */ public void setConversionService(ConversionService conversionService) { this.conversionService = conversionService; } /** * Add a property access strategy for the given class. * @param clazz the class that contains properties needing access * @param propertyAccessor the property access strategy */ public void addPropertyAccessor(Class clazz, PropertyAccessor propertyAccessor) { OgnlRuntime.setPropertyAccessor(clazz, propertyAccessor); } protected Expression doParseExpression(String expressionString, ParserContext context) throws ParserException { try { return new OgnlExpression(Ognl.parseExpression(expressionString), parseVariableExpressions(context .getExpressionVariables()), context.getExpectedEvaluationResultType(), expressionString, conversionService); } catch (OgnlException e) { throw new ParserException(expressionString, e); } } }././@LongLink0000000000000000000000000000022400000000000011563 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-binding/src/main/java/org/springframework/binding/expression/ognl/OgnlExpression.javalibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-binding/src/main/java/org/springframew0000644000000000000000000001371211360615640027721 0ustar /* * Copyright 2004-2008 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.springframework.binding.expression.ognl; import java.lang.reflect.Member; import java.util.Collections; import java.util.HashMap; import java.util.Iterator; import java.util.Map; import ognl.NoSuchPropertyException; import ognl.Ognl; import ognl.OgnlException; import ognl.TypeConverter; import org.springframework.beans.BeanWrapperImpl; import org.springframework.beans.BeansException; import org.springframework.beans.InvalidPropertyException; import org.springframework.binding.convert.ConversionException; import org.springframework.binding.convert.ConversionService; import org.springframework.binding.expression.EvaluationException; import org.springframework.binding.expression.Expression; import org.springframework.binding.expression.PropertyNotFoundException; import org.springframework.binding.expression.ValueCoercionException; /** * Evaluates a parsed Ognl expression. * * @author Keith Donald * @author Scott Andrews */ class OgnlExpression implements Expression { private Object expression; private Map variableExpressions; private Class expectedResultType; private String expressionString; private ConversionService conversionService; /** * Creates a new OGNL expression. */ public OgnlExpression(Object expression, Map variableExpressions, Class expectedResultType, String expressionString, ConversionService conversionService) { this.expression = expression; this.variableExpressions = variableExpressions; this.expectedResultType = expectedResultType; this.expressionString = expressionString; this.conversionService = conversionService; } public boolean equals(Object o) { if (!(o instanceof OgnlExpression)) { return false; } OgnlExpression other = (OgnlExpression) o; return expressionString.equals(other.expressionString); } public int hashCode() { return expressionString.hashCode(); } public Object getValue(Object context) throws EvaluationException { try { Map evaluationContext = Ognl.addDefaultContext(context, getVariables(context)); Ognl.setTypeConverter(evaluationContext, createTypeConverter()); return Ognl.getValue(expression, evaluationContext, context, expectedResultType); } catch (NoSuchPropertyException e) { throw new PropertyNotFoundException(context.getClass(), getExpressionString(), e); } catch (OgnlException e) { if (e.getReason() instanceof ValueCoercionException) { throw (ValueCoercionException) e.getReason(); } else { throw new EvaluationException(context.getClass(), getExpressionString(), "An OgnlException occurred getting the value for expression '" + getExpressionString() + "' on context [" + context.getClass() + "]", causeFor(e)); } } } public void setValue(Object context, Object value) { try { Map evaluationContext = Ognl.addDefaultContext(context, getVariables(context)); Ognl.setTypeConverter(evaluationContext, createTypeConverter()); Ognl.setValue(expression, evaluationContext, context, value); } catch (NoSuchPropertyException e) { throw new PropertyNotFoundException(context.getClass(), getExpressionString(), e); } catch (OgnlException e) { if (e.getReason() instanceof ValueCoercionException) { throw (ValueCoercionException) e.getReason(); } else { throw new EvaluationException(context.getClass(), getExpressionString(), "An OgnlException occurred setting the value of expression '" + getExpressionString() + "' on context [" + context.getClass() + "] to [" + value + "]", causeFor(e)); } } } public Class getValueType(Object context) { try { // OGNL has no native way to get this information return new BeanWrapperImpl(context).getPropertyType(expressionString); } catch (InvalidPropertyException e) { throw new PropertyNotFoundException(context.getClass(), getExpressionString(), e); } catch (BeansException e) { throw new EvaluationException(context.getClass(), getExpressionString(), "An BeansException occurred getting the value type for expression '" + getExpressionString() + "' on context [" + context.getClass() + "]", e); } } public String getExpressionString() { return expressionString; } // internal helpers private Throwable causeFor(OgnlException e) { if (e.getReason() != null) { if (e.getCause() == null) { try { e.initCause(e.getReason()); } catch (IllegalStateException ex) { // we tried } } return e; } else { return e; } } private TypeConverter createTypeConverter() { return new TypeConverter() { public Object convertValue(Map context, Object target, Member member, String propertyName, Object value, Class toType) throws ValueCoercionException { try { return conversionService.executeConversion(value, toType); } catch (ConversionException e) { throw new ValueCoercionException(context.getClass(), expressionString, value, toType, e); } } }; } private Map getVariables(Object context) { if (variableExpressions == null) { return Collections.EMPTY_MAP; } Map variables = new HashMap(variableExpressions.size(), 1); for (Iterator it = variableExpressions.entrySet().iterator(); it.hasNext();) { Map.Entry var = (Map.Entry) it.next(); Expression valueExpression = (Expression) var.getValue(); variables.put(var.getKey(), valueExpression.getValue(context)); } return variables; } public String toString() { return expressionString; } }././@LongLink0000000000000000000000000000021500000000000011563 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-binding/src/main/java/org/springframework/binding/expression/ognl/package.htmllibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-binding/src/main/java/org/springframew0000644000000000000000000000017011360615640027713 0ustar

Support for the OGNL Expression Language implemented by the OgnlExpressionParser.

././@LongLink0000000000000000000000000000022300000000000011562 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-binding/src/main/java/org/springframework/binding/expression/ExpressionVariable.javalibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-binding/src/main/java/org/springframew0000644000000000000000000000551011360615632027717 0ustar /* * Copyright 2004-2008 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.springframework.binding.expression; import org.springframework.util.Assert; /** * An expression variable. * @author Keith Donald */ public class ExpressionVariable { private String name; private String valueExpression; private ParserContext parserContext; /** * Creates a new expression variable. * @param name the name of the variable, acting as an convenient alias (required) * @param valueExpression the value expression (required) */ public ExpressionVariable(String name, String valueExpression) { init(name, valueExpression, null); } /** * Creates a new expression variable with a populated parser context. * @param name the name of the variable, acting as an convenient alias (required) * @param valueExpression the value expression (required) * @param parserContext the parser context to use to parse the value expression (optional) */ public ExpressionVariable(String name, String valueExpression, ParserContext parserContext) { init(name, valueExpression, parserContext); } /** * Returns the variable name. * @return the variable name */ public String getName() { return name; } /** * Returns the expression that will be evaluated when the variable is referenced by its name in another expression. * @return the expression value. */ public String getValueExpression() { return valueExpression; } /** * Returns the parser context to use to parse the variable's value expression. * @return the value expression parser context */ public ParserContext getParserContext() { return parserContext; } public boolean equals(Object o) { if (!(o instanceof ExpressionVariable)) { return false; } ExpressionVariable var = (ExpressionVariable) o; return name.equals(var.name); } public int hashCode() { return name.hashCode(); } public String toString() { return "[Expression Variable '" + name + "']"; } private void init(String name, String valueExpression, ParserContext parserContext) { Assert.hasText(name, "The expression variable must be named"); Assert.hasText(valueExpression, "The expression variable's value expression is required"); this.name = name; this.valueExpression = valueExpression; this.parserContext = parserContext; } } ././@LongLink0000000000000000000000000000022400000000000011563 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-binding/src/main/java/org/springframework/binding/expression/EvaluationException.javalibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-binding/src/main/java/org/springframew0000644000000000000000000000414111360615634027720 0ustar /* * Copyright 2004-2008 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.springframework.binding.expression; /** * Indicates an expression evaluation failed. * * @author Keith Donald */ public class EvaluationException extends RuntimeException { private Class contextClass; private String expressionString; /** * Creates a new evaluation exception. * @param contextClass the class of object upon which evaluation was attempted * @param expressionString the string form of the expression that failed to evaluate * @param message the exception message */ public EvaluationException(Class contextClass, String expressionString, String message) { this(contextClass, expressionString, message, null); } /** * Creates a new evaluation exception. * @param contextClass the class of object upon which evaluation was attempted * @param expressionString the string form of the expression that failed to evaluate * @param message the exception message * @param cause the underlying cause of this evaluation exception */ public EvaluationException(Class contextClass, String expressionString, String message, Throwable cause) { super(message, cause); } /** * The class of object upon which evaluation was attempted and failed. * @return the context class */ public Class getContextClass() { return contextClass; } /** * The string form of the expression that failed to evaluate against an instance of the the context class. * @return the expression string */ public String getExpressionString() { return expressionString; } }././@LongLink0000000000000000000000000000021600000000000011564 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-binding/src/main/java/org/springframework/binding/expression/ParserContext.javalibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-binding/src/main/java/org/springframew0000644000000000000000000000403311360615636027722 0ustar /* * Copyright 2004-2008 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.springframework.binding.expression; /** * Input provided to an expression parser that can influence an expression parsing/compilation routine. * @author Keith Donald */ public interface ParserContext { /** * Returns the type of context object the parsed expression will evaluate in. An expression parser may use this * value to install custom variable resolves for that particular type of context. * @return the evaluation context type */ public Class getEvaluationContextType(); /** * Returns the expected type of object returned from evaluating the parsed expression. An expression parser may use * this value to coerce an raw evaluation result before it is returned. * @return the expected evaluation result type */ public Class getExpectedEvaluationResultType(); /** * Returns additional expression variables or aliases that can be referenced during expression evaluation. An * expression parser will register these variables for reference during evaluation. */ public ExpressionVariable[] getExpressionVariables(); /** * Whether or not the expression being parsed is a template. A template expression consists of literal text that can * be mixed with evaluatable blocks. Some examples: * *
	 * 	   Some literal text
	 *     Hello #{name.firstName}!
	 *     #{3 + 4}
	 * 
* * @return true if the expression is a template, false otherwise */ public boolean isTemplate(); }././@LongLink0000000000000000000000000000022000000000000011557 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-binding/src/main/java/org/springframework/binding/expression/ParserException.javalibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-binding/src/main/java/org/springframew0000644000000000000000000000342311360615646027725 0ustar /* * Copyright 2004-2008 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.springframework.binding.expression; /** * Base class for exceptions thrown during expression parsing. * * @author Keith Donald */ public class ParserException extends RuntimeException { /** * The expression string that could not be parsed. */ private String expressionString; /** * Creates a new expression parsing exception. * @param expressionString the expression string that could not be parsed * @param cause the underlying cause of this exception */ public ParserException(String expressionString, Throwable cause) { this(expressionString, "Unable to parse expression string '" + expressionString + "'", cause); } /** * Creates a new expression parsing exception. * @param expressionString the expression string that could not be parsed * @param message a descriptive message * @param cause the underlying cause of this exception */ public ParserException(String expressionString, String message, Throwable cause) { super(message, cause); this.expressionString = expressionString; } /** * Returns the expression string that could not be parsed. */ public Object getExpressionString() { return expressionString; } }././@LongLink0000000000000000000000000000021300000000000011561 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-binding/src/main/java/org/springframework/binding/expression/Expression.javalibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-binding/src/main/java/org/springframew0000644000000000000000000000445311360615634027726 0ustar /* * Copyright 2004-2008 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.springframework.binding.expression; /** * An expression capable of evaluating itself against context objects. Encapsulates the details of a previously parsed * expression string. Provides a common abstraction for expression evaluation independent of any language like OGNL or * the Unified EL. * * @author Keith Donald */ public interface Expression { /** * Evaluate this expression in the provided context and return the result of evaluation. * @param context the context to evaluate this expression in * @return the evaluation result * @throws EvaluationException an exception occurred during expression evaluation */ public Object getValue(Object context) throws EvaluationException; /** * Set this expression in the provided context to the value provided. * @param context the context on which the new value should be set * @param value the new value to set * @throws EvaluationException an exception occurred during expression evaluation */ public void setValue(Object context, Object value) throws EvaluationException; /** * Returns the most general type that can be passed to the {@link #setValue(Object, Object)} method for the given * context. * @param context the context to evaluate * @return the most general type of value that can be set on this context, or null if the type * information cannot be determined * @throws EvaluationException an exception occurred during expression evaluation */ public Class getValueType(Object context) throws EvaluationException; /** * Returns the original string used to create this expression, unmodified. * @return the original expression string */ public String getExpressionString(); }././@LongLink0000000000000000000000000000023200000000000011562 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-binding/src/main/java/org/springframework/binding/expression/PropertyNotFoundException.javalibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-binding/src/main/java/org/springframew0000644000000000000000000000244511360615640027722 0ustar /* * Copyright 2004-2008 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.springframework.binding.expression; /** * An evaluation exception indicating a expression that references a property failed to evaluate because the property * could not be found. * @author Keith Donald */ public class PropertyNotFoundException extends EvaluationException { /** * Creates a new property not found exception * @param contextClass the class of object upon which property evaluation was attempted * @param property the property that could not be found * @param cause root cause of the failure */ public PropertyNotFoundException(Class contextClass, String property, Throwable cause) { super(contextClass, property, "Property not found", cause); } } ././@LongLink0000000000000000000000000000022700000000000011566 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-binding/src/main/java/org/springframework/binding/expression/ValueCoercionException.javalibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-binding/src/main/java/org/springframew0000644000000000000000000000461511360615640027723 0ustar /* * Copyright 2004-2008 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.springframework.binding.expression; /** * An evaluation exception indicating an expression failed to evaluate because the source value could not be coerced to * the target class * @author Scott Andrews */ public class ValueCoercionException extends EvaluationException { private transient Object value; private Class targetClass; /** * Creates a new property not found exception * @param contextClass the class of object upon which coercion was attempted * @param property the property that could not be coerced * @param value the value that could not be coerced * @param targetClass the class the value could not be coerced to */ public ValueCoercionException(Class contextClass, String property, Object value, Class targetClass) { this(contextClass, property, value, targetClass, null); this.value = value; this.targetClass = targetClass; } /** * Creates a new property not found exception * @param contextClass the class of object upon which coercion was attempted * @param property the property that could not be coerced * @param value the value that could not be coerced * @param targetClass the class the value could not be coerced to * @param cause root cause of the failure */ public ValueCoercionException(Class contextClass, String property, Object value, Class targetClass, Throwable cause) { super(contextClass, property, "Value could not be converted to target class; is a suitable type converter registered?", cause); this.value = value; this.targetClass = targetClass; } /** * @return the value that could not be coerced; this value is a transient field */ public Object getValue() { return value; } /** * @return the class the value could not be coerced to */ public Class getTargetClass() { return targetClass; } } ././@LongLink0000000000000000000000000000022100000000000011560 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-binding/src/main/java/org/springframework/binding/expression/ExpressionParser.javalibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-binding/src/main/java/org/springframew0000644000000000000000000000266711360615632027731 0ustar /* * Copyright 2004-2008 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.springframework.binding.expression; /** * Parses expression strings into compiled expressions that can be evaluated. Supports parsing templates as well as * standard expression strings. * * @author Keith Donald */ public interface ExpressionParser { /** * Parse the expression string and return a compiled Expression object you can use for evaluation. Some examples: * *
	 *     3 + 4
	 *     name.firstName
	 * 
* * @param expressionString the raw expression string to parse * @param context a context for influencing this expression parsing routine (optional) * @return an evaluator for the parsed expression * @throws ParserException an exception occurred during parsing */ public Expression parseExpression(String expressionString, ParserContext context) throws ParserException; }././@LongLink0000000000000000000000000000017700000000000011572 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-binding/src/main/java/org/springframework/binding/expression/el/libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-binding/src/main/java/org/springframew0000755000000000000000000000000011360615644027717 5ustar ././@LongLink0000000000000000000000000000022600000000000011565 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-binding/src/main/java/org/springframework/binding/expression/el/ELExpressionParser.javalibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-binding/src/main/java/org/springframew0000644000000000000000000001732211360615644027726 0ustar /* * Copyright 2004-2008 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.springframework.binding.expression.el; import java.util.HashMap; import java.util.Map; import javax.el.ELContext; import javax.el.ELException; import javax.el.ELResolver; import javax.el.ExpressionFactory; import javax.el.FunctionMapper; import javax.el.ValueExpression; import javax.el.VariableMapper; import org.springframework.binding.convert.ConversionService; import org.springframework.binding.convert.service.DefaultConversionService; import org.springframework.binding.expression.Expression; import org.springframework.binding.expression.ExpressionParser; import org.springframework.binding.expression.ExpressionVariable; import org.springframework.binding.expression.ParserContext; import org.springframework.binding.expression.ParserException; import org.springframework.binding.expression.support.NullParserContext; import org.springframework.util.Assert; /** * The expression parser that parses EL expressions. * * @author Keith Donald * @author Jeremy Grelle */ public class ELExpressionParser implements ExpressionParser { private ExpressionFactory expressionFactory; private Map contextFactories = new HashMap(); private ConversionService conversionService = new DefaultConversionService(); /** * Creates a new EL expression parser for standalone usage. */ public ELExpressionParser(ExpressionFactory expressionFactory) { init(expressionFactory); } /** * The conversion service to use to perform type conversions as needed by the Unified EL system. If not specified, * the default is an instance of {@link DefaultConversionService}. */ public ConversionService getConversionService() { return conversionService; } /** * Sets the conversion service to use to perform type conversions as needed by the Unified EL system. * @param conversionService the conversion service to use */ public void setConversionService(ConversionService conversionService) { Assert.notNull(conversionService, "The conversion service is required"); this.conversionService = conversionService; } /** * Register the ELContextFactory for expressions that evaluate the given class of context object. * @param contextType the expression context class * @param contextFactory the context factory to use for expressions that evaluate those types of contexts */ public void putContextFactory(Class contextType, ELContextFactory contextFactory) { Assert.notNull(contextFactory, "The EL context factory cannot be null"); contextFactories.put(contextType, contextFactory); } public Expression parseExpression(String expressionString, ParserContext context) throws ParserException { Assert.notNull(expressionString, "The expression string to parse is required"); if (context == null) { context = NullParserContext.INSTANCE; } if (context.isTemplate()) { return parseExpressionInternal(expressionString, context, true); } else { assertNotDelimited(expressionString); assertHasText(expressionString); return parseExpressionInternal("#{" + expressionString + "}", context, false); } } private Expression parseExpressionInternal(String expressionString, ParserContext context, boolean template) throws ParserException { Assert.notNull(expressionString, "The expression string to parse is required"); try { ValueExpression expression = parseValueExpression(expressionString, context); ELContextFactory contextFactory = getContextFactory(context.getEvaluationContextType(), expressionString); return new ELExpression(contextFactory, expression); } catch (ELException e) { throw new ParserException(expressionString, e); } } private ValueExpression parseValueExpression(String expressionString, ParserContext context) throws ELException { ParserELContext elContext = new ParserELContext(); elContext.mapVariables(context.getExpressionVariables(), expressionFactory); ValueExpression expression = expressionFactory.createValueExpression(elContext, expressionString, Object.class); return new BindingValueExpression(expression, getExpectedType(context), conversionService, context.isTemplate()); } private Class getExpectedType(ParserContext context) { Class expectedType = context.getExpectedEvaluationResultType(); return expectedType != null ? expectedType : Object.class; } private ELContextFactory getContextFactory(Class expressionTargetType, String expressionString) { if (contextFactories.containsKey(expressionTargetType)) { return (ELContextFactory) contextFactories.get(expressionTargetType); } else { return (ELContextFactory) contextFactories.get(Object.class); } } private void init(ExpressionFactory expressionFactory) { this.expressionFactory = expressionFactory; DefaultElContextFactory contextFactory = new DefaultElContextFactory(); putContextFactory(null, contextFactory); putContextFactory(Object.class, contextFactory); } private void assertNotDelimited(String expressionString) { if ((expressionString.startsWith("#{") && expressionString.endsWith("}")) || (expressionString.startsWith("${") && expressionString.endsWith("}"))) { throw new ParserException(expressionString, "This expression '" + expressionString + "' being parsed is expected be an 'eval' EL expression string. " + "Do not attempt to enclose such expression strings in #{} or ${} delimiters. " + "If you need to parse a template that mixes literal text with evaluatable blocks, " + "set the 'template' parser context attribute to true.", null); } } private void assertHasText(String expressionString) { if (expressionString.length() == 0) { throw new ParserException(expressionString, "The EL eval expression to parse must have text", null); } } private class ParserELContext extends ELContext { private VariableMapper variableMapper; public ELResolver getELResolver() { return null; } public FunctionMapper getFunctionMapper() { return null; } public VariableMapper getVariableMapper() { return variableMapper; } public void mapVariables(ExpressionVariable[] variables, ExpressionFactory expressionFactory) { if (variables != null && variables.length > 0) { variableMapper = new VariableMapperImpl(); for (int i = 0; i < variables.length; i++) { ExpressionVariable var = variables[i]; ParserContext context = var.getParserContext() != null ? var.getParserContext() : NullParserContext.INSTANCE; ValueExpression expr; if (context.isTemplate()) { expr = parseValueExpression(var.getValueExpression(), context); } else { assertNotDelimited(var.getValueExpression()); assertHasText(var.getValueExpression()); expr = parseValueExpression("#{" + var.getValueExpression() + "}", context); } variableMapper.setVariable(var.getName(), expr); } } } } private static class VariableMapperImpl extends VariableMapper { private Map variables = new HashMap(); public ValueExpression resolveVariable(String name) { return (ValueExpression) variables.get(name); } public ValueExpression setVariable(String name, ValueExpression value) { return (ValueExpression) variables.put(name, value); } public String toString() { return variables.toString(); } } } ././@LongLink0000000000000000000000000000023200000000000011562 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-binding/src/main/java/org/springframework/binding/expression/el/MapAdaptableELResolver.javalibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-binding/src/main/java/org/springframew0000644000000000000000000000613111360615640027716 0ustar /* * Copyright 2004-2008 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.springframework.binding.expression.el; import java.util.Iterator; import java.util.Map; import javax.el.ELContext; import javax.el.ELException; import javax.el.ELResolver; import javax.el.PropertyNotFoundException; import javax.el.PropertyNotWritableException; import org.springframework.binding.collection.MapAdaptable; /** * An {@link ELResolver} for properly resolving variables in an instance of {@link MapAdaptable} * @author Jeremy Grelle */ public class MapAdaptableELResolver extends ELResolver { public Class getCommonPropertyType(ELContext context, Object base) { if (base instanceof MapAdaptable) { return Object.class; } return null; } public Iterator getFeatureDescriptors(ELContext context, Object base) { return null; } public Class getType(ELContext context, Object base, Object property) throws NullPointerException, PropertyNotFoundException, ELException { if (context == null) { throw new NullPointerException("The ELContext is null."); } if (base instanceof MapAdaptable) { context.setPropertyResolved(true); Object obj = adapt(base).get(property); return (obj != null) ? obj.getClass() : null; } return null; } public Object getValue(ELContext context, Object base, Object property) throws NullPointerException, PropertyNotFoundException, ELException { if (context == null) { throw new NullPointerException("The ELContext is null."); } if (base instanceof MapAdaptable) { context.setPropertyResolved(true); return adapt(base).get(property); } return null; } public boolean isReadOnly(ELContext context, Object base, Object property) throws NullPointerException, PropertyNotFoundException, ELException { if (context == null) { throw new NullPointerException("The ELContext is null."); } if (base instanceof MapAdaptable) { context.setPropertyResolved(true); } return false; } public void setValue(ELContext context, Object base, Object property, Object value) throws NullPointerException, PropertyNotFoundException, PropertyNotWritableException, ELException { if (context == null) { throw new NullPointerException("The ELContext is null."); } if (base instanceof MapAdaptable) { context.setPropertyResolved(true); try { adapt(base).put(property, value); } catch (UnsupportedOperationException e) { throw new PropertyNotWritableException(e); } } } private Map adapt(Object base) { MapAdaptable adaptable = (MapAdaptable) base; return adaptable.asMap(); } } ././@LongLink0000000000000000000000000000023200000000000011562 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-binding/src/main/java/org/springframework/binding/expression/el/BindingValueExpression.javalibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-binding/src/main/java/org/springframew0000644000000000000000000000716511360615632027727 0ustar package org.springframework.binding.expression.el; import javax.el.ELContext; import javax.el.ELException; import javax.el.ExpressionFactory; import javax.el.PropertyNotFoundException; import javax.el.PropertyNotWritableException; import javax.el.ValueExpression; import org.springframework.binding.convert.ConversionException; import org.springframework.binding.convert.ConversionService; import org.springframework.binding.expression.ValueCoercionException; import org.springframework.util.Assert; /** * A ValueExpression decorator that decorates a target ValueExpression returned by a EL Implementation's * {@link ExpressionFactory} to allow use of Spring's type conversion system for coersing expression values. * * The Unified EL specification currently provides no standard way of plugging in custom type converters. This decorator * allows Spring type converters to be utilized with any EL implementation. * * @author Keith Donald */ class BindingValueExpression extends ValueExpression { private ValueExpression targetExpression; private Class expectedType; private ConversionService conversionService; private boolean template; public BindingValueExpression(ValueExpression targetExpression, Class expectedType, ConversionService conversionService, boolean template) { Assert.notNull(expectedType, "The expectedType Class is required"); Assert.notNull(conversionService, "The ConversionService to perform type coersions is required"); this.targetExpression = targetExpression; this.expectedType = expectedType; this.conversionService = conversionService; this.template = template; } public Class getExpectedType() { return targetExpression.getExpectedType(); } public Class getType(ELContext context) throws NullPointerException, PropertyNotFoundException, ELException { return targetExpression.getType(context); } public Object getValue(ELContext context) throws NullPointerException, PropertyNotFoundException, ELException, ValueCoercionException { Object value = targetExpression.getValue(context); return convertValueIfNecessary(value, expectedType, context); } public boolean isReadOnly(ELContext context) throws NullPointerException, PropertyNotFoundException, ELException { return targetExpression.isReadOnly(context); } public void setValue(ELContext context, Object value) throws NullPointerException, PropertyNotFoundException, PropertyNotWritableException, ELException, ValueCoercionException { value = convertValueIfNecessary(value, targetExpression.getType(context), context); targetExpression.setValue(context, value); } public String getExpressionString() { if (template) { return targetExpression.getExpressionString(); } else { String rawExpressionString = targetExpression.getExpressionString(); return rawExpressionString.substring("#{".length(), rawExpressionString.length() - 1); } } public boolean isLiteralText() { return targetExpression.isLiteralText(); } public boolean equals(Object obj) { if (!(obj instanceof BindingValueExpression)) { return false; } BindingValueExpression exp = (BindingValueExpression) obj; return targetExpression.equals(exp.targetExpression); } public int hashCode() { return targetExpression.hashCode(); } private Object convertValueIfNecessary(Object value, Class expectedType, Object context) throws ValueCoercionException { if (expectedType == null) { return value; } else { try { return conversionService.executeConversion(value, expectedType); } catch (ConversionException e) { throw new ValueCoercionException(context.getClass(), getExpressionString(), value, expectedType, e); } } } }././@LongLink0000000000000000000000000000022500000000000011564 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-binding/src/main/java/org/springframework/binding/expression/el/DefaultELResolver.javalibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-binding/src/main/java/org/springframew0000644000000000000000000000654111360615632027724 0ustar /* * Copyright 2004-2008 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.springframework.binding.expression.el; import java.util.Iterator; import java.util.List; import javax.el.ArrayELResolver; import javax.el.BeanELResolver; import javax.el.CompositeELResolver; import javax.el.ELContext; import javax.el.ELResolver; import javax.el.ListELResolver; import javax.el.MapELResolver; import javax.el.ResourceBundleELResolver; /** * A generic ELResolver to be used as a default when no other ELResolvers have been configured by the client * application. * * This implementation will resolve the first part of the expression to the pre-configured base object, and will then * delegate through the chain of standard resolvers for the rest of the expression. * * Note - Requires Java 5 or higher due to the use of generics in the API's basic resolvers. * * @author Jeremy Grelle */ public class DefaultELResolver extends CompositeELResolver { private Object target; /** * Creates a new default EL resolver for resolving properties of the root object. Assumes a null target and expect * that the base object has already been resolved by the time this resolver runs. * @param customResolvers the custom resolvers to apply before this resolver */ public DefaultELResolver(List customResolvers) { this(null, customResolvers); } /** * Creates a new default EL resolver for resolving properties of the root object. * @param target the target, or "root", object of the expression * @param customResolvers the custom resolvers to apply before this resolver */ public DefaultELResolver(Object target, List customResolvers) { this.target = target; configureResolvers(customResolvers); } public Object getTarget() { return target; } public Class getType(ELContext context, Object base, Object property) { if (base == null) { return super.getType(context, target, property); } else { return super.getType(context, base, property); } } public Object getValue(ELContext context, Object base, Object property) { if (base == null) { return super.getValue(context, target, property); } else { return super.getValue(context, base, property); } } public void setValue(ELContext context, Object base, Object property, Object val) { if (base == null) { super.setValue(context, target, property, val); } else { super.setValue(context, base, property, val); } } private void configureResolvers(List customResolvers) { if (customResolvers != null) { Iterator i = customResolvers.iterator(); while (i.hasNext()) { ELResolver resolver = (ELResolver) i.next(); add(resolver); } } add(new MapAdaptableELResolver()); add(new ArrayELResolver()); add(new ListELResolver()); add(new MapELResolver()); add(new ResourceBundleELResolver()); add(new BeanELResolver()); } }././@LongLink0000000000000000000000000000023300000000000011563 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-binding/src/main/java/org/springframework/binding/expression/el/DefaultElContextFactory.javalibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-binding/src/main/java/org/springframew0000644000000000000000000000171611360615644027726 0ustar /* * Copyright 2004-2008 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.springframework.binding.expression.el; import javax.el.ELContext; /** * A factory for a DefaultELContext. * * @author Keith Donald */ public class DefaultElContextFactory implements ELContextFactory { public ELContext getELContext(Object target) { return new DefaultELContext(new DefaultELResolver(target, null), null, null); } } ././@LongLink0000000000000000000000000000021300000000000011561 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-binding/src/main/java/org/springframework/binding/expression/el/package.htmllibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-binding/src/main/java/org/springframew0000644000000000000000000000017611360615632027722 0ustar

Support for the Unified Expression Language (EL) implemented by the ELExpressionParser.

././@LongLink0000000000000000000000000000024100000000000011562 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-binding/src/main/java/org/springframework/binding/expression/el/DefaultExpressionFactoryUtils.javalibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-binding/src/main/java/org/springframew0000644000000000000000000000562411360615634027727 0ustar /* * Copyright 2004-2008 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.springframework.binding.expression.el; import javax.el.ExpressionFactory; import org.springframework.util.ClassUtils; /** * A helper for creating a new expression factory instance using the default expression factory class configured for the * VM. * * @author Keith Donald */ public class DefaultExpressionFactoryUtils { // TODO - change default to Spring EL when it becomes available private static final String DEFAULT_EXPRESSION_FACTORY = "org.jboss.el.ExpressionFactoryImpl"; /** * Returns the type of ExpressionFactory configured for this VM. */ public static String getDefaultExpressionFactoryClassName() { return DEFAULT_EXPRESSION_FACTORY; } /** * Creates a new instance of the expression factory configured for this VM. * @throws IllegalStateException if the ExpressionFactory class cannot be instantiated */ public static ExpressionFactory createExpressionFactory() throws IllegalStateException { Class expressionFactoryClass; try { expressionFactoryClass = ClassUtils.forName(getDefaultExpressionFactoryClassName(), DefaultExpressionFactoryUtils.class.getClassLoader()); } catch (ClassNotFoundException e) { IllegalStateException ise = new IllegalStateException( "The default ExpressionFactory class '" + getDefaultExpressionFactoryClassName() + "' could not be found in the classpath. " + "Please add this to your classpath or set the default ExpressionFactory class name to something that is in the classpath."); ise.initCause(e); throw ise; } catch (NoClassDefFoundError e) { IllegalStateException ise = new IllegalStateException( "The default ExpressionFactory class '" + getDefaultExpressionFactoryClassName() + "' could not be found in the classpath. " + "Please add this to your classpath or set the default ExpressionFactory class name to something that is in the classpath."); ise.initCause(e); throw ise; } try { return (ExpressionFactory) expressionFactoryClass.newInstance(); } catch (Exception e) { IllegalStateException ise = new IllegalStateException("An instance of the default ExpressionFactory '" + getDefaultExpressionFactoryClassName() + "' could not be instantiated. Check your EL implementation configuration."); ise.initCause(e); throw ise; } } }././@LongLink0000000000000000000000000000022400000000000011563 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-binding/src/main/java/org/springframework/binding/expression/el/ELContextFactory.javalibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-binding/src/main/java/org/springframew0000644000000000000000000000325711360615644027730 0ustar /* * Copyright 2004-2008 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.springframework.binding.expression.el; import javax.el.ELContext; import javax.el.ELResolver; /** * A factory for creating a EL context object that will be used to evaluate a target object of an EL expression. * * Note this ELContextFactory is not used at parse time, only evaluation time. Therefore, factories should not be * concerned with setting up parse-time context attributes such as the variable mapper and function mapper that play no * part during expression evaluation. * * @author Keith Donald * @author Jeremy Grelle */ public interface ELContextFactory { /** * Configures and returns an {@link ELContext} to be used in evaluating EL expressions on the given base target * object. In certain environments the target will be null and the base object of the expression is expected to be * resolved via the ELContext's {@link ELResolver} chain. * @param target The base object for the expression evaluation * @return ELContext The configured ELContext instance for evaluating expressions. */ public ELContext getELContext(Object target); }././@LongLink0000000000000000000000000000022400000000000011563 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-binding/src/main/java/org/springframework/binding/expression/el/DefaultELContext.javalibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-binding/src/main/java/org/springframew0000644000000000000000000000316011360615642027717 0ustar /* * Copyright 2004-2008 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.springframework.binding.expression.el; import javax.el.ELContext; import javax.el.ELResolver; import javax.el.FunctionMapper; import javax.el.VariableMapper; /** * A generic ELContext implementation. * * @author Keith Donald */ public class DefaultELContext extends ELContext { private VariableMapper variableMapper; private ELResolver resolver; private FunctionMapper functionMapper; /** * Creates a new default el context. * @param resolver the el resolver to use * @param variableMapper the variable mappter * @param functionMapper the function mapper */ public DefaultELContext(ELResolver resolver, VariableMapper variableMapper, FunctionMapper functionMapper) { this.resolver = resolver; this.variableMapper = variableMapper; this.functionMapper = functionMapper; } public ELResolver getELResolver() { return resolver; } public VariableMapper getVariableMapper() { return variableMapper; } public FunctionMapper getFunctionMapper() { return functionMapper; } } ././@LongLink0000000000000000000000000000022000000000000011557 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-binding/src/main/java/org/springframework/binding/expression/el/ELExpression.javalibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-binding/src/main/java/org/springframew0000644000000000000000000001150011360615636027717 0ustar /* * Copyright 2004-2008 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.springframework.binding.expression.el; import javax.el.ELContext; import javax.el.ELException; import javax.el.ValueExpression; import org.springframework.binding.expression.EvaluationException; import org.springframework.binding.expression.Expression; import org.springframework.binding.expression.PropertyNotFoundException; import org.springframework.util.Assert; /** * Evaluates a parsed EL expression. * * @author Jeremy Grelle * @author Scott Andrews */ public class ELExpression implements Expression { private ELContextFactory elContextFactory; private ValueExpression valueExpression; /** * Creates a new el expression * @param factory the el context factory for creating the EL context that will be used during expression evaluation * @param valueExpression the value expression to evaluate */ public ELExpression(ELContextFactory factory, ValueExpression valueExpression) { Assert.notNull(factory, "The ELContextFactory is required to evaluate EL expressions"); Assert.notNull(valueExpression, "The EL ValueExpression is required for evaluation"); this.elContextFactory = factory; this.valueExpression = valueExpression; } public Object getValue(Object context) throws EvaluationException { ELContext ctx = elContextFactory.getELContext(context); try { Object result = valueExpression.getValue(ctx); if (result == null && !ctx.isPropertyResolved()) { if (getExpressionString().equals("null")) { // special case for handling reserved null keyword return null; } else { throw new EvaluationException(context.getClass(), getExpressionString(), "The expression '" + getExpressionString() + "' did not resolve... is the base variable '" + getBaseVariable() + "' spelled correctly?"); } } return result; } catch (javax.el.PropertyNotFoundException e) { throw new PropertyNotFoundException(context.getClass(), getExpressionString(), e); } catch (ELException e) { throw new EvaluationException(context.getClass(), getExpressionString(), "An ELException occurred getting the value for expression '" + getExpressionString() + "' on context [" + context.getClass() + "]", e); } } public void setValue(Object context, Object value) throws EvaluationException { ELContext ctx = elContextFactory.getELContext(context); try { valueExpression.setValue(ctx, value); if (!ctx.isPropertyResolved()) { throw new EvaluationException(context.getClass(), getExpressionString(), "The expression '" + getExpressionString() + "' did not resolve... is the base variable ''" + getBaseVariable() + "' spelled correctly?"); } } catch (javax.el.PropertyNotFoundException e) { throw new PropertyNotFoundException(context.getClass(), getExpressionString(), e); } catch (ELException e) { throw new EvaluationException(context.getClass(), getExpressionString(), "An ELException occurred setting the value of expression '" + getExpressionString() + "' on context [" + context.getClass() + "] to [" + value + "]", e); } } public Class getValueType(Object context) { ELContext ctx = elContextFactory.getELContext(context); try { return valueExpression.getType(ctx); } catch (javax.el.PropertyNotFoundException e) { throw new PropertyNotFoundException(context.getClass(), getExpressionString(), e); } catch (ELException e) { throw new EvaluationException(context.getClass(), getExpressionString(), "An ELException occurred getting the value type for expression '" + getExpressionString() + "' on context [" + context.getClass() + "]", e); } } public String getExpressionString() { return valueExpression.getExpressionString(); } private String getBaseVariable() { String expressionString = getExpressionString(); int firstDot = expressionString.indexOf('.'); if (firstDot == -1) { return expressionString; } else { return expressionString.substring(0, firstDot); } } public int hashCode() { return valueExpression.hashCode(); } public boolean equals(Object o) { if (!(o instanceof ELExpression)) { return false; } ELExpression other = (ELExpression) o; return valueExpression.equals(other.valueExpression); } public String toString() { return getExpressionString(); } }././@LongLink0000000000000000000000000000021000000000000011556 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-binding/src/main/java/org/springframework/binding/expression/package.htmllibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-binding/src/main/java/org/springframew0000644000000000000000000000016311360615634027720 0ustar

Core expression language abstraction for parsing and evaluating expressions.

././@LongLink0000000000000000000000000000020400000000000011561 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-binding/src/main/java/org/springframework/binding/expression/support/libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-binding/src/main/java/org/springframew0000755000000000000000000000000011360615644027717 5ustar ././@LongLink0000000000000000000000000000023200000000000011562 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-binding/src/main/java/org/springframework/binding/expression/support/LiteralExpression.javalibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-binding/src/main/java/org/springframew0000644000000000000000000000373511360615640027725 0ustar /* * Copyright 2004-2008 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.springframework.binding.expression.support; import org.springframework.binding.expression.EvaluationException; import org.springframework.binding.expression.Expression; import org.springframework.util.Assert; public class LiteralExpression implements Expression { /** * The string literal. */ private String literal; /** * Create a literal expression for the given literal. * @param literal the literal */ public LiteralExpression(String literal) { Assert.notNull(literal, "The literal is required"); this.literal = literal; } public int hashCode() { return literal.hashCode(); } public boolean equals(Object o) { if (!(o instanceof LiteralExpression)) { return false; } LiteralExpression other = (LiteralExpression) o; return literal.equals(other.literal); } public Object getValue(Object context) throws EvaluationException { return literal; } public void setValue(Object context, Object value) throws EvaluationException { throw new UnsupportedOperationException( "Cannot set a literal expression value. Are you attempting to set a property expression? " + "If so, should the expression string be enclosed in eval delimiters?"); } public Class getValueType(Object context) { return String.class; } public String getExpressionString() { return null; } public String toString() { return literal; } } ././@LongLink0000000000000000000000000000024300000000000011564 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-binding/src/main/java/org/springframework/binding/expression/support/CollectionAddingExpression.javalibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-binding/src/main/java/org/springframew0000644000000000000000000000504111360615644027721 0ustar /* * Copyright 2004-2008 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.springframework.binding.expression.support; import java.util.Collection; import org.springframework.binding.expression.EvaluationException; import org.springframework.binding.expression.Expression; import org.springframework.core.style.ToStringCreator; import org.springframework.util.Assert; /** * A settable expression that adds non-null values to a collection. * * @author Keith Donald */ public class CollectionAddingExpression implements Expression { /** * The expression that resolves a mutable collection reference. */ private Expression collectionExpression; /** * Creates a collection adding property expression. * @param collectionExpression the collection expression */ public CollectionAddingExpression(Expression collectionExpression) { this.collectionExpression = collectionExpression; } public Object getValue(Object context) throws EvaluationException { return collectionExpression.getValue(context); } public void setValue(Object context, Object value) throws EvaluationException { Object result = getValue(context); if (result == null) { throw new EvaluationException(context.getClass(), collectionExpression.getExpressionString(), "Unable to access collection value for expression '" + collectionExpression.getExpressionString() + "'", new IllegalStateException( "The collection expression evaluated to a [null] reference")); } Assert.isInstanceOf(Collection.class, result, "Not a collection: "); if (value != null) { // add the value to the collection ((Collection) result).add(value); } } public Class getValueType(Object context) { return Object.class; } public String getExpressionString() { return collectionExpression.getExpressionString(); } public String toString() { return new ToStringCreator(this).append("collectionExpression", collectionExpression).toString(); } }././@LongLink0000000000000000000000000000024300000000000011564 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-binding/src/main/java/org/springframework/binding/expression/support/AbstractGetValueExpression.javalibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-binding/src/main/java/org/springframew0000644000000000000000000000301211360615632027712 0ustar /* * Copyright 2004-2008 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.springframework.binding.expression.support; import org.springframework.binding.expression.EvaluationException; import org.springframework.binding.expression.Expression; /** * Trivial helper for concrete expression types that do not support setting their values. Simply throws an unsupported * operation exception if {@link #setValue(Object, Object)} is called. * * Subclasses must implement {@link #getValue(Object)}. * * @author Keith Donald */ public abstract class AbstractGetValueExpression implements Expression { public abstract Object getValue(Object context) throws EvaluationException; public void setValue(Object context, Object value) throws EvaluationException { throw new UnsupportedOperationException("Setting this expression's value is not supported"); } public Class getValueType(Object context) { return null; } public String getExpressionString() { return null; } } ././@LongLink0000000000000000000000000000024200000000000011563 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-binding/src/main/java/org/springframework/binding/expression/support/CompositeStringExpression.javalibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-binding/src/main/java/org/springframew0000644000000000000000000000404511360615644027724 0ustar /* * Copyright 2004-2008 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.springframework.binding.expression.support; import org.springframework.binding.expression.EvaluationException; import org.springframework.binding.expression.Expression; import org.springframework.core.style.ToStringCreator; /** * Evaluates an array of expressions to build a concatenated string. * * @author Keith Donald */ public class CompositeStringExpression implements Expression { /** * The expression array. */ private Expression[] expressions; /** * Creates a new composite string expression. * @param expressions the ordered set of expressions that when evaluated will have their results stringed together * to build the composite string */ public CompositeStringExpression(Expression[] expressions) { this.expressions = expressions; } public Object getValue(Object context) throws EvaluationException { StringBuffer buffer = new StringBuffer(128); for (int i = 0; i < expressions.length; i++) { buffer.append(expressions[i].getValue(context)); } return buffer.toString(); } public void setValue(Object context, Object value) throws EvaluationException { throw new UnsupportedOperationException("Cannot set a composite string expression value"); } public Class getValueType(Object context) { return String.class; } public String getExpressionString() { return null; } public String toString() { return new ToStringCreator(this).append("expressions", expressions).toString(); } }././@LongLink0000000000000000000000000000023400000000000011564 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-binding/src/main/java/org/springframework/binding/expression/support/FluentParserContext.javalibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-binding/src/main/java/org/springframew0000644000000000000000000000653011360615636027726 0ustar /* * Copyright 2004-2008 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.springframework.binding.expression.support; import java.util.ArrayList; import java.util.Arrays; import java.util.List; import org.springframework.binding.expression.ExpressionVariable; import org.springframework.binding.expression.ParserContext; /** * Default implementation of the ParserContext interface that has a fluent API for building parser context attributes. * @author Keith Donald */ public class FluentParserContext implements ParserContext { private Class evaluationContextType; private Class evaluationResultType; private List expressionVariables; private boolean template; /** * Create a new parser context, initially with all context attributes as null. Post construction, call one or more * of the fluent builder methods to configure this context. * @see #evaluate(Class) * @see #expectResult(Class) * @see #variable(ExpressionVariable) * @see #template() */ public FluentParserContext() { init(); } public Class getEvaluationContextType() { return evaluationContextType; } public Class getExpectedEvaluationResultType() { return evaluationResultType; } public ExpressionVariable[] getExpressionVariables() { return (ExpressionVariable[]) expressionVariables.toArray(new ExpressionVariable[expressionVariables.size()]); } public boolean isTemplate() { return template; } /** * Configure the evaluationContextType attribute with the value provided. * @param contextType the type of context object the parsed expression will evaluate in * @return this */ public FluentParserContext evaluate(Class contextType) { evaluationContextType = contextType; return this; } /** * Configure the expectedEvaluationResult attribute with the value provided. * @param resultType the type of result object the parsed expression should return when evaluated * @return this */ public FluentParserContext expectResult(Class resultType) { evaluationResultType = resultType; return this; } /** * Add an expression variable that can be referenced by the expression. * @param variable the expression variable * @return this */ public FluentParserContext variable(ExpressionVariable variable) { expressionVariables.add(variable); return this; } /** * Add an array of expression variables that can be referenced by the expression. * @param variables the expression variables * @return this */ public FluentParserContext variables(ExpressionVariable[] variables) { expressionVariables.addAll(Arrays.asList(variables)); return this; } /** * Sets a flag indicating the expression to parse is a template. * @return this */ public FluentParserContext template() { template = true; return this; } private void init() { expressionVariables = new ArrayList(); } } ././@LongLink0000000000000000000000000000024100000000000011562 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-binding/src/main/java/org/springframework/binding/expression/support/AbstractExpressionParser.javalibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-binding/src/main/java/org/springframew0000644000000000000000000002140211360615642027716 0ustar /* * Copyright 2004-2008 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.springframework.binding.expression.support; import java.util.HashMap; import java.util.LinkedList; import java.util.List; import java.util.Map; import org.springframework.binding.expression.Expression; import org.springframework.binding.expression.ExpressionParser; import org.springframework.binding.expression.ExpressionVariable; import org.springframework.binding.expression.ParserContext; import org.springframework.binding.expression.ParserException; import org.springframework.util.Assert; /** * An expression parser that parses Ognl expressions. * * @author Keith Donald */ public abstract class AbstractExpressionParser implements ExpressionParser { /** * The expression prefix. */ private static final String DEFAULT_EXPRESSION_PREFIX = "${"; /** * The expression suffix. */ private static final String DEFAULT_EXPRESSION_SUFFIX = "}"; /** * The marked expression delimiter prefix. */ private String expressionPrefix = DEFAULT_EXPRESSION_PREFIX; /** * The marked expression delimiter suffix. */ private String expressionSuffix = DEFAULT_EXPRESSION_SUFFIX; /** * Should we allow delimited eval expressions like "${foo.bar}"? If not, evalutable expressions must not be enclosed * in delimiters like ${foo.bar} else an exception is thrown. Only here for compatability reasons, as Web Flow 1.0 * allows delimited eval expressions while 2.x does not. */ private boolean allowDelimitedEvalExpressions; /** * Returns the configured expression delimiter prefix. Defaults to "${". */ public String getExpressionPrefix() { return expressionPrefix; } /** * Sets the expression delimiter prefix. */ public void setExpressionPrefix(String expressionPrefix) { this.expressionPrefix = expressionPrefix; } /** * Returns the expression delimiter suffix. Defaults to "}". */ public String getExpressionSuffix() { return expressionSuffix; } /** * Sets the expression delimiter suffix. */ public void setExpressionSuffix(String expressionSuffix) { this.expressionSuffix = expressionSuffix; } /** * Returns if this parser allows delimited eval expressions like ${foo.bar}. */ public boolean getAllowDelimitedEvalExpressions() { return allowDelimitedEvalExpressions; } /** * Sets if this parser allows eval expressions like ${foo.bar}. */ public void setAllowDelimitedEvalExpressions(boolean allowDelmitedEvalExpressions) { this.allowDelimitedEvalExpressions = allowDelmitedEvalExpressions; } // expression parser public Expression parseExpression(String expressionString, ParserContext context) throws ParserException { Assert.notNull(expressionString, "The expression string to parse is required"); if (context == null) { context = NullParserContext.INSTANCE; } if (context.isTemplate()) { return parseTemplate(expressionString, context); } else { if (expressionString.startsWith(getExpressionPrefix()) && expressionString.endsWith(getExpressionSuffix())) { if (!allowDelimitedEvalExpressions) { throw new ParserException( expressionString, "The expression '" + expressionString + "' being parsed is expected be a standard OGNL expression. Do not attempt to enclose such expression strings in ${} delimiters--this is redundant. If you need to parse a template that mixes literal text with evaluatable blocks, set the 'template' parser context attribute to true.", null); } else { int lastIndex = expressionString.length() - getExpressionSuffix().length(); String ognlExpression = expressionString.substring(getExpressionPrefix().length(), lastIndex); return doParseExpression(ognlExpression, context); } } else { return doParseExpression(expressionString, context); } } } private Expression parseTemplate(String expressionString, ParserContext context) throws ParserException { Assert.notNull(expressionString, "The expression string to parse is required"); if (expressionString.length() == 0) { return parseEmptyExpressionString(context); } Expression[] expressions = parseExpressions(expressionString, context); if (expressions.length == 1) { return expressions[0]; } else { return new CompositeStringExpression(expressions); } } // helper methods /** * Helper that handles a empty expression string. */ private Expression parseEmptyExpressionString(ParserContext context) { if (allowDelimitedEvalExpressions) { // let the parser handle it return doParseExpression("", context); } else { // return a literal expression containing the empty string return new LiteralExpression(""); } } /** * Helper that parses given expression string using the configured parser. The expression string can contain any * number of expressions all contained in "${...}" markers. For instance: "foo${expr0}bar${expr1}". The static * pieces of text will also be returned as Expressions that just return that static piece of text. As a result, * evaluating all returned expressions and concatenating the results produces the complete evaluated string. * @param expressionString the expression string * @return the parsed expressions * @throws ParserException when the expressions cannot be parsed */ private Expression[] parseExpressions(String expressionString, ParserContext context) throws ParserException { List expressions = new LinkedList(); int startIdx = 0; while (startIdx < expressionString.length()) { int prefixIndex = expressionString.indexOf(getExpressionPrefix(), startIdx); if (prefixIndex >= startIdx) { // a inner expression was found - this is a composite if (prefixIndex > startIdx) { expressions.add(new LiteralExpression(expressionString.substring(startIdx, prefixIndex))); startIdx = prefixIndex; } int nextPrefixIndex = expressionString.indexOf(getExpressionPrefix(), prefixIndex + getExpressionPrefix().length()); int suffixIndex; if (nextPrefixIndex == -1) { // this is the last expression in the expression string suffixIndex = expressionString.lastIndexOf(getExpressionSuffix()); } else { // another expression exists after this one in the expression string suffixIndex = expressionString.lastIndexOf(getExpressionSuffix(), nextPrefixIndex); } if (suffixIndex < (prefixIndex + getExpressionPrefix().length())) { throw new ParserException(expressionString, "No ending suffix '" + getExpressionSuffix() + "' for expression starting at character " + prefixIndex + ": " + expressionString.substring(prefixIndex), null); } else if (suffixIndex == prefixIndex + getExpressionPrefix().length()) { throw new ParserException(expressionString, "No expression defined within delimiter '" + getExpressionPrefix() + getExpressionSuffix() + "' at character " + prefixIndex, null); } else { String expr = expressionString.substring(prefixIndex + getExpressionPrefix().length(), suffixIndex); expressions.add(doParseExpression(expr, context)); startIdx = suffixIndex + 1; } } else { if (startIdx == 0) { // treat the entire string as one expression if (allowDelimitedEvalExpressions) { expressions.add(doParseExpression(expressionString, context)); } else { // treat entire string as a literal expressions.add(new LiteralExpression(expressionString)); } } else { // no more ${expressions} found in string, add rest as static text expressions.add(new LiteralExpression(expressionString.substring(startIdx))); } startIdx = expressionString.length(); } } return (Expression[]) expressions.toArray(new Expression[expressions.size()]); } protected Map parseVariableExpressions(ExpressionVariable[] variables) throws ParserException { if (variables == null || variables.length == 0) { return null; } Map variableExpressions = new HashMap(variables.length, 1); for (int i = 0; i < variables.length; i++) { ExpressionVariable var = variables[i]; variableExpressions.put(var.getName(), parseExpression(var.getValueExpression(), var.getParserContext())); } return variableExpressions; } protected abstract Expression doParseExpression(String expressionString, ParserContext context) throws ParserException; }././@LongLink0000000000000000000000000000023100000000000011561 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-binding/src/main/java/org/springframework/binding/expression/support/StaticExpression.javalibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-binding/src/main/java/org/springframew0000644000000000000000000000421111360615640027713 0ustar /* * Copyright 2004-2008 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.springframework.binding.expression.support; import org.springframework.binding.expression.EvaluationException; import org.springframework.binding.expression.Expression; import org.springframework.util.ObjectUtils; /** * A simple expression evaluator that just returns a fixed result on each evaluation. * * @author Keith Donald */ public final class StaticExpression implements Expression { private Object value; private String expressionString; /** * Create a static evaluator for the given value. * @param value the value */ public StaticExpression(Object value) { this.value = value; } public int hashCode() { if (value == null) { return 0; } else { return value.hashCode(); } } public boolean equals(Object o) { if (!(o instanceof StaticExpression)) { return false; } StaticExpression other = (StaticExpression) o; return ObjectUtils.nullSafeEquals(value, other.value); } public Object getValue(Object context) throws EvaluationException { return value; } public void setValue(Object context, Object value) throws EvaluationException { this.value = value; } public Class getValueType(Object context) { return value.getClass(); } public String getExpressionString() { return expressionString; } /** * Sets the static expression string. * @param expressionString the static expression string */ public void setExpressionString(String expressionString) { this.expressionString = expressionString; } public String toString() { return String.valueOf(value); } }././@LongLink0000000000000000000000000000022000000000000011557 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-binding/src/main/java/org/springframework/binding/expression/support/package.htmllibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-binding/src/main/java/org/springframew0000644000000000000000000000015111360615632027713 0ustar

Support classes commonly used by ExpressionParser implementations.

././@LongLink0000000000000000000000000000023200000000000011562 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-binding/src/main/java/org/springframework/binding/expression/support/NullParserContext.javalibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-binding/src/main/java/org/springframew0000644000000000000000000000274611360615632027727 0ustar /* * Copyright 2004-2008 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.springframework.binding.expression.support; import org.springframework.binding.expression.ExpressionVariable; import org.springframework.binding.expression.ParserContext; /** * A null object implementation of ParserContext. Mainly used internally by expression parser implementations when * null is passed in as a parser context value. * @author Keith Donad */ public final class NullParserContext implements ParserContext { /** * The null parser context object instance; a singleton. */ public static final ParserContext INSTANCE = new NullParserContext(); private NullParserContext() { } public Class getEvaluationContextType() { return null; } public Class getExpectedEvaluationResultType() { return null; } public ExpressionVariable[] getExpressionVariables() { return null; } public boolean isTemplate() { return false; } }././@LongLink0000000000000000000000000000021000000000000011556 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-binding/src/main/java/org/springframework/binding/expression/beanwrapper/libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-binding/src/main/java/org/springframew0000755000000000000000000000000011360615640027713 5ustar ././@LongLink0000000000000000000000000000022400000000000011563 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-binding/src/main/java/org/springframework/binding/expression/beanwrapper/package.htmllibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-binding/src/main/java/org/springframew0000644000000000000000000000016711360615632027722 0ustar

Support for Spring's BeanWrapper implemented by the BeanWrapperExpressionParser.

././@LongLink0000000000000000000000000000025000000000000011562 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-binding/src/main/java/org/springframework/binding/expression/beanwrapper/BeanWrapperExpressionParser.javalibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-binding/src/main/java/org/springframew0000644000000000000000000000601311360615640027715 0ustar /* * Copyright 2004-2008 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.springframework.binding.expression.beanwrapper; import org.springframework.beans.BeanWrapperImpl; import org.springframework.beans.propertyeditors.PropertiesEditor; import org.springframework.binding.convert.ConversionExecutor; import org.springframework.binding.convert.ConversionService; import org.springframework.binding.convert.service.DefaultConversionService; import org.springframework.binding.expression.Expression; import org.springframework.binding.expression.ParserContext; import org.springframework.binding.expression.ParserException; import org.springframework.binding.expression.support.AbstractExpressionParser; /** * An expression parser that parses BeanWrapper property expressions. * * @author Keith Donald */ public class BeanWrapperExpressionParser extends AbstractExpressionParser { private ConversionService conversionService; /** * Creates a new expression parser that uses a {@link DefaultConversionService} to perform type conversion. */ public BeanWrapperExpressionParser() { this.conversionService = new DefaultConversionService(); } /** * Creates a new expression parser that uses the specified conversion service for type conversion. * @param conversionService the conversion service to use */ public BeanWrapperExpressionParser(ConversionService conversionService) { this.conversionService = conversionService; } /** * The conversion service to use to obtain {@link ConversionExecutor conversion executors} that will be adapted to * {@link PropertiesEditor property editors} for use during a * {@link BeanWrapperImpl#setPropertyValue(String, Object) set value} call. The default if not specified is an * instance of {@link DefaultConversionService}. */ public ConversionService getConversionService() { return conversionService; } /** * Sets the conversion service to use to obtain {@link ConversionExecutor conversion executors} that will be adapted * to {@link PropertiesEditor property editors} for use during a * {@link BeanWrapperImpl#setPropertyValue(String, Object) set value} call. * @param conversionService the conversion service */ public void setConversionService(ConversionService conversionService) { this.conversionService = conversionService; } protected Expression doParseExpression(String expressionString, ParserContext context) throws ParserException { return new BeanWrapperExpression(expressionString, conversionService); } }././@LongLink0000000000000000000000000000024200000000000011563 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-binding/src/main/java/org/springframework/binding/expression/beanwrapper/BeanWrapperExpression.javalibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-binding/src/main/java/org/springframew0000644000000000000000000001476311360615632027731 0ustar /* * Copyright 2004-2008 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.springframework.binding.expression.beanwrapper; import java.beans.PropertyEditorSupport; import java.util.Iterator; import java.util.Set; import org.springframework.beans.BeanWrapperImpl; import org.springframework.beans.BeansException; import org.springframework.beans.NotReadablePropertyException; import org.springframework.beans.NotWritablePropertyException; import org.springframework.beans.PropertyEditorRegistry; import org.springframework.beans.TypeMismatchException; import org.springframework.binding.convert.ConversionException; import org.springframework.binding.convert.ConversionExecutor; import org.springframework.binding.convert.ConversionService; import org.springframework.binding.expression.EvaluationException; import org.springframework.binding.expression.Expression; import org.springframework.binding.expression.PropertyNotFoundException; import org.springframework.binding.expression.ValueCoercionException; /** * An expression that delegates to a {@link BeanWrapperImpl bean wrapper} to evaluate or set a property of a context. * * Also supports the configuration of a {@link ConversionService} to allow StringToObject type conversion to occur as * part of setting a property. The StringToObject ConversionExecutors are automatically adapted and registered as * PropertyEditors. * * Mainly exists to take advantage of BeanWrapper's unique property access features as an Expression implementation, * notably the ability to infer types of generic collections and maps and perform type coersion on collection elements * when setting values. * * Note that Spring's BeanWrapper is not a full-blown EL implementation: it only supports property access, and does not * support method invocation, arithmetic operations, or logic operations. * * @author Keith Donald * @author Scott Andrews */ public class BeanWrapperExpression implements Expression { private String expression; private ConversionService conversionService; /** * Creates a new bean wrapper expression. * @param expression the property expression string * @param conversionService the conversion service containing converters to use as PropertyEditors for type * conversion */ public BeanWrapperExpression(String expression, ConversionService conversionService) { this.expression = expression; this.conversionService = conversionService; } public boolean equals(Object o) { if (!(o instanceof BeanWrapperExpression)) { return false; } BeanWrapperExpression other = (BeanWrapperExpression) o; return expression.equals(other.expression); } public int hashCode() { return expression.hashCode(); } public Object getValue(Object context) throws EvaluationException { try { BeanWrapperImpl beanWrapper = new BeanWrapperImpl(context); return beanWrapper.getPropertyValue(expression); } catch (NotReadablePropertyException e) { throw new PropertyNotFoundException(context.getClass(), expression, e); } catch (BeansException e) { throw new EvaluationException(context.getClass(), getExpressionString(), "A BeansException occurred getting the value for expression '" + getExpressionString() + "' on context [" + context.getClass() + "]", e); } } public void setValue(Object context, Object value) { try { BeanWrapperImpl beanWrapper = new BeanWrapperImpl(context); registerConvertersAsPropertyEditors(beanWrapper); beanWrapper.setPropertyValue(expression, value); } catch (NotWritablePropertyException e) { throw new PropertyNotFoundException(context.getClass(), expression, e); } catch (TypeMismatchException e) { throw new ValueCoercionException(context.getClass(), expression, value, e.getRequiredType(), e); } catch (BeansException e) { throw new EvaluationException(context.getClass(), getExpressionString(), "A BeansException occurred setting the value of expression '" + getExpressionString() + "' on context [" + context.getClass() + "] to [" + value + "]", e); } } public Class getValueType(Object context) { try { BeanWrapperImpl beanWrapper = new BeanWrapperImpl(context); return beanWrapper.getPropertyType(expression); } catch (NotReadablePropertyException e) { throw new PropertyNotFoundException(context.getClass(), expression, e); } catch (BeansException e) { throw new EvaluationException(context.getClass(), getExpressionString(), "An BeansException occurred getting the value type for expression '" + getExpressionString() + "' on context [" + context.getClass() + "]", e); } } public String getExpressionString() { return expression; } public String toString() { return expression; } /** * Adapts the String->Object converters to PropertyEditors for use during a setValue attempt. Excludes any * String->Enum converter, since BeanWrapper has built in support for Enum conversion. * @param registry the registry to register converter-to-editor adapters with */ protected void registerConvertersAsPropertyEditors(PropertyEditorRegistry registry) { Set converters = conversionService.getConversionExecutors(String.class); for (Iterator it = converters.iterator(); it.hasNext();) { ConversionExecutor converter = (ConversionExecutor) it.next(); if (!converter.getTargetClass().getName().equals("java.lang.Enum")) { registry.registerCustomEditor(converter.getTargetClass(), new PropertyEditorConverter(converter)); } } } private static class PropertyEditorConverter extends PropertyEditorSupport { private ConversionExecutor converter; public PropertyEditorConverter(ConversionExecutor converter) { this.converter = converter; } public void setAsText(String text) throws IllegalArgumentException { try { Object convertedValue = converter.execute(text); setValue(convertedValue); } catch (ConversionException e) { IllegalArgumentException iae = new IllegalArgumentException("Unable to convert text '" + text + "'"); iae.initCause(e); throw iae; } } } } ././@LongLink0000000000000000000000000000017100000000000011564 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-binding/src/main/java/org/springframework/binding/message/libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-binding/src/main/java/org/springframew0000755000000000000000000000000011360615644027717 5ustar ././@LongLink0000000000000000000000000000021400000000000011562 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-binding/src/main/java/org/springframework/binding/message/MessageContext.javalibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-binding/src/main/java/org/springframew0000644000000000000000000000336411360615632027724 0ustar /* * Copyright 2004-2008 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.springframework.binding.message; /** * A context for recording and retrieving messages for display. */ public interface MessageContext { /** * Get all messages in this context. The messages returned should be suitable for display as-is. * @return the messages */ public Message[] getAllMessages(); /** * Get all messages in this context for the source provided. * @param source the source associated with messages, or null for global messages * @return the source's messages */ public Message[] getMessagesBySource(Object source); /** * Get all messages that meet the given result criteria. * @param criteria the message criteria */ public Message[] getMessagesByCriteria(MessageCriteria criteria); /** * Returns true if there are error messages in this context. * @return error messages */ public boolean hasErrorMessages(); /** * Add a new message to this context. * @param messageResolver the resolver that will resolve the message to be added */ public void addMessage(MessageResolver messageResolver); /** * Clear all messages added to this context. */ public void clearMessages(); } ././@LongLink0000000000000000000000000000021500000000000011563 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-binding/src/main/java/org/springframework/binding/message/MessageCriteria.javalibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-binding/src/main/java/org/springframew0000644000000000000000000000205211360615632027715 0ustar /* * Copyright 2004-2008 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.springframework.binding.message; /** * A predicate used to select mapping result objects in a call to * {@link MessageContext#getMessagesByCriteria(MessageCriteria)}. * @author Keith Donald */ public interface MessageCriteria { /** * Tests if the message meets this criteria. * @param message the message * @return true if this criteria is met for the message, false if not */ public boolean test(Message message); } ././@LongLink0000000000000000000000000000020600000000000011563 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-binding/src/main/java/org/springframework/binding/message/Severity.javalibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-binding/src/main/java/org/springframew0000644000000000000000000000326211360615642027722 0ustar /* * Copyright 2004-2008 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.springframework.binding.message; import org.springframework.core.enums.StaticLabeledEnum; /** * Enum exposing supported message severities. * * @author Keith Donald * @author Jeremy Grelle * @see Message */ public class Severity extends StaticLabeledEnum { /** * The "Informational" severity. Used to indicate a successful operation or result. */ public static final Severity INFO = new Severity(0, "Info"); /** * The "Warning" severity. Used to indicate there is a minor problem, or to inform the message receiver of possible * misuse, or to indicate a problem may arise in the future. */ public static final Severity WARNING = new Severity(1, "Warning"); /** * The "Error" severity. Used to indicate a significant problem like a business rule violation. */ public static final Severity ERROR = new Severity(2, "Error"); /** * The "Fatal" severity. Used to indicate a fatal problem like a system error. */ public static final Severity FATAL = new Severity(3, "Fatal"); private Severity(int code, String label) { super(code, label); } } ././@LongLink0000000000000000000000000000021500000000000011563 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-binding/src/main/java/org/springframework/binding/message/MessageResolver.javalibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-binding/src/main/java/org/springframew0000644000000000000000000000246111360615634027723 0ustar /* * Copyright 2004-2008 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.springframework.binding.message; import java.util.Locale; import org.springframework.context.MessageSource; /** * A factory for a Message. Allows a Message to be internationalized and to be resolved from a * {@link MessageSource message resource bundle}. * * @author Keith Donald * @see Message * @see MessageSource */ public interface MessageResolver { /** * Resolve the message from the message source using the current locale. * @param messageSource the message source, an abstraction for a resource bundle * @param locale the current locale of this request * @return the resolved message */ public Message resolveMessage(MessageSource messageSource, Locale locale); } ././@LongLink0000000000000000000000000000022200000000000011561 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-binding/src/main/java/org/springframework/binding/message/MessageContextErrors.javalibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-binding/src/main/java/org/springframew0000644000000000000000000001527211360615632027725 0ustar /* * Copyright 2004-2008 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.springframework.binding.message; import java.util.ArrayList; import java.util.Collections; import java.util.Iterator; import java.util.List; import org.springframework.binding.expression.Expression; import org.springframework.binding.expression.ExpressionParser; import org.springframework.binding.expression.support.FluentParserContext; import org.springframework.binding.mapping.MappingResult; import org.springframework.binding.mapping.MappingResults; import org.springframework.binding.mapping.MappingResultsCriteria; import org.springframework.validation.AbstractErrors; import org.springframework.validation.Errors; import org.springframework.validation.FieldError; import org.springframework.validation.MessageCodesResolver; import org.springframework.validation.ObjectError; /** * Adapts a MessageContext object to the Spring Errors interface. Allows Spring Validators to record errors that are * managed by a backing MessageContext. * * @author Keith Donald */ public class MessageContextErrors extends AbstractErrors { private MessageContext messageContext; private String objectName; private Object boundObject; private ExpressionParser expressionParser; private MappingResults mappingResults; private MessageCodesResolver bindingErrorMessageCodesResolver; /** * Creates a new message context errors adapter. * @param messageContext the backing message context * @param objectName the object name * @param boundObject the model object * @param expressionParser the expression parser * @param bindingErrorMessageCodesResolver the message codes resolver * @param mappingResults object mapping results */ public MessageContextErrors(MessageContext messageContext, String objectName, Object boundObject, ExpressionParser expressionParser, MessageCodesResolver bindingErrorMessageCodesResolver, MappingResults mappingResults) { this.messageContext = messageContext; this.objectName = objectName; this.boundObject = boundObject; this.expressionParser = expressionParser; this.bindingErrorMessageCodesResolver = bindingErrorMessageCodesResolver; this.mappingResults = mappingResults; } public void reject(String errorCode, Object[] errorArgs, String defaultMessage) { String[] messageCodes = bindingErrorMessageCodesResolver.resolveMessageCodes(errorCode, defaultMessage); messageContext.addMessage(new MessageBuilder().error().codes(messageCodes).args(errorArgs).defaultText( defaultMessage).build()); } public void rejectValue(String field, String errorCode, Object[] errorArgs, String defaultMessage) { field = fixedField(field); Class fieldType; if (expressionParser != null) { FluentParserContext parserContext = new FluentParserContext().evaluate(boundObject.getClass()); fieldType = expressionParser.parseExpression(field, parserContext).getValueType(boundObject); } else { fieldType = null; } String[] messageCodes = bindingErrorMessageCodesResolver.resolveMessageCodes(errorCode, defaultMessage, field, fieldType); messageContext.addMessage(new MessageBuilder().error().source(field).codes(messageCodes).args(errorArgs) .defaultText(defaultMessage).build()); } public void addAllErrors(Errors errors) { Iterator it = errors.getAllErrors().iterator(); while (it.hasNext()) { ObjectError error = (ObjectError) it.next(); MessageBuilder builder = new MessageBuilder().error().codes(error.getCodes()).args(error.getArguments()) .defaultText(error.getDefaultMessage()); if (error instanceof FieldError) { FieldError fieldError = (FieldError) error; builder.source(fieldError.getField()); } messageContext.addMessage(builder.build()); } } public String getObjectName() { return objectName; } public List getGlobalErrors() { Message[] messages = messageContext.getMessagesByCriteria(GLOBAL_ERROR); if (messages.length == 0) { return Collections.EMPTY_LIST; } List errors = new ArrayList(messages.length); for (int i = 0; i < messages.length; i++) { Message message = messages[i]; errors.add(new ObjectError(objectName, message.getText())); } return Collections.unmodifiableList(errors); } public List getFieldErrors() { Message[] messages = messageContext.getMessagesByCriteria(FIELD_ERROR); if (messages.length == 0) { return Collections.EMPTY_LIST; } List errors = new ArrayList(messages.length); for (int i = 0; i < messages.length; i++) { Message message = messages[i]; errors.add(new FieldError(objectName, (String) message.getSource(), message.getText())); } return Collections.unmodifiableList(errors); } public Object getFieldValue(String field) { field = fixedField(field); // requires boundObject and expressionParser to be set to work if (mappingResults != null) { List results = mappingResults.getResults(new PropertyErrorMappingResult(field)); if (!results.isEmpty()) { MappingResult fieldError = (MappingResult) results.get(0); return fieldError.getOriginalValue(); } } return parseFieldExpression(field).getValue(boundObject); } // internal helpers private Expression parseFieldExpression(String field) { return expressionParser.parseExpression(field, new FluentParserContext().evaluate(boundObject.getClass())); } private static MessageCriteria GLOBAL_ERROR = new MessageCriteria() { public boolean test(Message message) { if (message.getSeverity() == Severity.ERROR && message.getSource() == null) { return true; } else { return false; } } }; private static MessageCriteria FIELD_ERROR = new MessageCriteria() { public boolean test(Message message) { if (message.getSeverity() == Severity.ERROR && message.getSource() instanceof String) { return true; } else { return false; } } }; private static class PropertyErrorMappingResult implements MappingResultsCriteria { private String property; public PropertyErrorMappingResult(String property) { this.property = property; } public boolean test(MappingResult result) { if (result.isError() && property.equals(result.getMapping().getTargetExpression().getExpressionString())) { return true; } else { return false; } } } }././@LongLink0000000000000000000000000000020500000000000011562 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-binding/src/main/java/org/springframework/binding/message/Message.javalibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-binding/src/main/java/org/springframew0000644000000000000000000000451311360615642027722 0ustar /* * Copyright 2004-2008 the original author oimport java.io.Serializable; import org.springframework.core.style.ToStringCreator; ou may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.springframework.binding.message; import java.io.Serializable; import org.springframework.core.style.ToStringCreator; /** * An object of communication that provides text information. For example, a validation message may inform a web * application user a business rule was violated. A message can be associated with a particular source element or * component, has text providing the basis for communication, and has severity indicating the priority or intensity of * the message for its receiver. * * @author Keith Donald */ public class Message implements Serializable { private Object source; private String text; private Severity severity; /** * Creates a new message. * @param source the source of the message * @param text the message text * @param severity the message severity */ public Message(Object source, String text, Severity severity) { this.source = source; this.text = text; this.severity = severity; } /** * A reference to the source element this message is associated with. This could be a field on a form in UI, or null * if the message is not associated with a any particular element. * @return the source */ public Object getSource() { return source; } /** * The message text. The text is the message's communication payload. * @return the message text */ public String getText() { return text; } /** * The severity of this message. The severity indicates the intensity or priority of the communication. * @return the message severity */ public Severity getSeverity() { return severity; } public String toString() { return new ToStringCreator(this).append("source", source).append("severity", severity).append("text", text) .toString(); } } ././@LongLink0000000000000000000000000000020500000000000011562 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-binding/src/main/java/org/springframework/binding/message/package.htmllibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-binding/src/main/java/org/springframew0000644000000000000000000000017511360615632027721 0ustar

A system for recording and tracking locale-specific messages to display in a UI.

././@LongLink0000000000000000000000000000022300000000000011562 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-binding/src/main/java/org/springframework/binding/message/DefaultMessageContext.javalibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-binding/src/main/java/org/springframew0000644000000000000000000001205611360615632027722 0ustar /* * Copyright 2004-2008 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.springframework.binding.message; import java.io.Serializable; import java.text.MessageFormat; import java.util.ArrayList; import java.util.Iterator; import java.util.LinkedHashMap; import java.util.List; import java.util.Locale; import java.util.Map; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.springframework.context.MessageSource; import org.springframework.context.i18n.LocaleContextHolder; import org.springframework.context.support.AbstractMessageSource; import org.springframework.core.style.ToStringCreator; import org.springframework.util.CachingMapDecorator; /** * The default message context implementation. Uses a {@link MessageSource} to resolve messages that are added by * callers. * * @author Keith Donald */ public class DefaultMessageContext implements StateManageableMessageContext { private static final Log logger = LogFactory.getLog(DefaultMessageContext.class); private MessageSource messageSource; private Map sourceMessages = new CachingMapDecorator(new LinkedHashMap()) { protected Object create(Object source) { return new ArrayList(); } }; /** * Creates a new default message context. Defaults to a message source that simply resolves default text and cannot * resolve localized message codes. */ public DefaultMessageContext() { init(null); } /** * Creates a new default message context. * @param messageSource the message source to resolve messages added to this context */ public DefaultMessageContext(MessageSource messageSource) { init(messageSource); } public MessageSource getMessageSource() { return messageSource; } // implementing message context public Message[] getAllMessages() { List messages = new ArrayList(); for (Iterator it = sourceMessages.values().iterator(); it.hasNext();) { messages.addAll((List) it.next()); } return (Message[]) messages.toArray(new Message[messages.size()]); } public Message[] getMessagesBySource(Object source) { List messages = (List) sourceMessages.get(source); return (Message[]) messages.toArray(new Message[messages.size()]); } public Message[] getMessagesByCriteria(MessageCriteria criteria) { List messages = new ArrayList(); Iterator it = sourceMessages.values().iterator(); while (it.hasNext()) { List sourceMessages = (List) it.next(); for (Iterator it2 = sourceMessages.iterator(); it2.hasNext();) { Message message = (Message) it2.next(); if (criteria.test(message)) { messages.add(message); } } } return (Message[]) messages.toArray(new Message[messages.size()]); } public boolean hasErrorMessages() { Iterator it = sourceMessages.values().iterator(); while (it.hasNext()) { List sourceMessages = (List) it.next(); for (Iterator it2 = sourceMessages.iterator(); it2.hasNext();) { Message message = (Message) it2.next(); if (message.getSeverity() == Severity.ERROR) { return true; } } } return false; } public void addMessage(MessageResolver messageResolver) { Locale currentLocale = LocaleContextHolder.getLocale(); if (logger.isDebugEnabled()) { logger.debug("Resolving message using " + messageResolver); } Message message = messageResolver.resolveMessage(messageSource, currentLocale); List messages = (List) sourceMessages.get(message.getSource()); if (logger.isDebugEnabled()) { logger.debug("Adding resolved message " + message); } messages.add(message); } public void clearMessages() { sourceMessages.clear(); } // implementing state manageable message context public Serializable createMessagesMemento() { return new LinkedHashMap(sourceMessages); } public void restoreMessages(Serializable messagesMemento) { sourceMessages.putAll((Map) messagesMemento); } public void setMessageSource(MessageSource messageSource) { if (messageSource == null) { messageSource = new DefaultTextFallbackMessageSource(); } this.messageSource = messageSource; } // internal helpers private void init(MessageSource messageSource) { setMessageSource(messageSource); // create the 'null' source message list eagerly to ensure global messages are indexed first this.sourceMessages.get(null); } public String toString() { return new ToStringCreator(this).append("sourceMessages", sourceMessages).toString(); } private static class DefaultTextFallbackMessageSource extends AbstractMessageSource { protected MessageFormat resolveCode(String code, Locale locale) { return null; } } }././@LongLink0000000000000000000000000000021400000000000011562 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-binding/src/main/java/org/springframework/binding/message/MessageBuilder.javalibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-binding/src/main/java/org/springframew0000644000000000000000000001604611360615632027725 0ustar /* * Copyright 2004-2008 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.springframework.binding.message; import java.util.ArrayList; import java.util.Arrays; import java.util.LinkedHashSet; import java.util.List; import java.util.Set; import org.springframework.context.MessageSource; import org.springframework.context.MessageSourceResolvable; import org.springframework.core.style.ToStringCreator; /** * A convenient builder for building {@link MessageResolver} objects programmatically. Often used by model code such as * validation logic to conveniently record validation messages. Supports the production of message resolvers that * hard-code their message text, as well as message resolvers that retrieve their text from a {@link MessageSource * message resource bundle}. * * Usage example: *

* * new MessageBuilder().error().source("field").code("mycode").arg(arg1).arg(arg2).defaultText("text").build(); * *

* @author Keith Donald * @author Jeremy Grelle */ public class MessageBuilder { private Object source; private Set codes = new LinkedHashSet(); private Severity severity; private List args = new ArrayList(); private String defaultText; /** * Records that the message being built is an informational message. * @return this, for fluent API usage */ public MessageBuilder info() { severity = Severity.INFO; return this; } /** * Records that the message being built is a warning message. * @return this, for fluent API usage */ public MessageBuilder warning() { severity = Severity.WARNING; return this; } /** * Records that the message being built is an error message. * @return this, for fluent API usage */ public MessageBuilder error() { severity = Severity.ERROR; return this; } /** * Records that the message being built is a fatal message. * @return this, for fluent API usage */ public MessageBuilder fatal() { severity = Severity.FATAL; return this; } /** * Records that the message being built is against the provided source. * @param source the source to associate the message with * @return this, for fluent API usage */ public MessageBuilder source(Object source) { this.source = source; return this; } /** * Records that the message being built should try and resolve its text using the code provided. Adds the code to * the codes list. Successive calls to this method add additional codes. Codes are applied in the order they are * added. * @param code the message code * @return this, for fluent API usage */ public MessageBuilder code(String code) { codes.add(code); return this; } /** * Records that the message being built should try and resolve its text using the codes provided. Adds the codes to * the codes list. Successive calls to this method add additional codes. Codes are applied in the order they are * added. * @param codes the message codes; if null, no changes will be made * @return this, for fluent API usage */ public MessageBuilder codes(String[] codes) { if (codes == null) { return this; } this.codes.addAll(Arrays.asList(codes)); return this; } /** * Records that the message being built has a variable argument. Adds the arg to the args list. Successive calls to * this method add additional args. Args are applied in the order they are added. * @param arg the message argument value * @return this, for fluent API usage */ public MessageBuilder arg(Object arg) { args.add(arg); return this; } /** * Records that the message being built has variable arguments. Adds the args to the args list. Successive calls to * this method add additional args. Args are applied in the order they are added. * @param args the message argument values, if null no changes will be made * @return this, for fluent API usage */ public MessageBuilder args(Object[] args) { if (args == null) { return this; } this.args.addAll(Arrays.asList(args)); return this; } /** * Records that the message being built has a variable argument, whose display value is also * {@link MessageSourceResolvable}. Adds the arg to the args list. Successive calls to this method add additional * resolvable args. Args are applied in the order they are added. * @param arg the resolvable message argument * @return this, for fluent API usage */ public MessageBuilder resolvableArg(Object arg) { args.add(new ResolvableArgument(arg)); return this; } /** * Records that the message being built has variable arguments, whose display values are also * {@link MessageSourceResolvable} instances. Adds the args to the args list. Successive calls to this method add * additional resolvable args. Args are applied in the order they are added. * @param args the resolvable message arguments * @return this, for fluent API usage */ public MessageBuilder resolvableArgs(Object[] args) { if (args == null) { return this; } for (int i = 0; i < args.length; i++) { this.args.add(new ResolvableArgument(args[i])); } return this; } /** * Records the fallback text of the message being built. If the message has no codes, this will always be used as * the text. If the message has codes but none can be resolved, this will always be used as the text. * @param text the default text * @return this, for fluent API usage */ public MessageBuilder defaultText(String text) { defaultText = text; return this; } /** * Builds the message that will be resolved. Called after the end of recording builder instructions. * @return the built message resolver */ public MessageResolver build() { if (severity == null) { severity = Severity.INFO; } if (codes == null && defaultText == null) { throw new IllegalArgumentException( "A message code or the message text is required to build this message resolver"); } String[] codesArray = (String[]) codes.toArray(new String[codes.size()]); Object[] argsArray = args.toArray(new Object[args.size()]); return new DefaultMessageResolver(source, codesArray, severity, argsArray, defaultText); } private static class ResolvableArgument implements MessageSourceResolvable { private Object arg; public ResolvableArgument(Object arg) { this.arg = arg; } public Object[] getArguments() { return null; } public String[] getCodes() { return new String[] { arg.toString() }; } public String getDefaultMessage() { return arg.toString(); } public String toString() { return new ToStringCreator(this).append("arg", arg).toString(); } } } ././@LongLink0000000000000000000000000000022400000000000011563 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-binding/src/main/java/org/springframework/binding/message/DefaultMessageResolver.javalibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-binding/src/main/java/org/springframew0000644000000000000000000000433511360615640027722 0ustar /* * Copyright 2004-2008 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.springframework.binding.message; import java.util.Locale; import org.springframework.context.MessageSource; import org.springframework.context.MessageSourceResolvable; import org.springframework.core.style.ToStringCreator; public class DefaultMessageResolver implements MessageResolver, MessageSourceResolvable { private Object source; private String[] codes; private Severity severity; private Object[] args; private String defaultText; public DefaultMessageResolver(Object source, String[] codes, Severity severity, Object[] args, String defaultText) { this.source = source; this.codes = codes; this.severity = severity; this.args = args; this.defaultText = defaultText; } public Message resolveMessage(MessageSource messageSource, Locale locale) { return new Message(source, postProcessMessageText(messageSource.getMessage(this, locale)), severity); } /** * Subclasses may override to perform special post-processing of the returned message text; for example, running it * through an Expression evaluator. * @param text the resolved message text * @return the post processeed message text */ protected String postProcessMessageText(String text) { return text; } // implementing MessageSourceResolver public String[] getCodes() { return codes; } public Object[] getArguments() { return args; } public String getDefaultMessage() { return defaultText; } public String toString() { return new ToStringCreator(this).append("source", source).append("severity", severity).append("codes", codes) .append("args", args).append("defaultText", defaultText).toString(); } }././@LongLink0000000000000000000000000000023300000000000011563 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-binding/src/main/java/org/springframework/binding/message/StateManageableMessageContext.javalibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-binding/src/main/java/org/springframew0000644000000000000000000000377311360615644027733 0ustar /* * Copyright 2004-2008 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.springframework.binding.message; import java.io.Serializable; import org.springframework.context.MessageSource; /** * A message context whose internal state can be managed by an external care-taker. State management employs the GOF * Memento pattern. This context can produce a serializable memento representing its internal state at any time. A * care-taker can then use that memento at a later time to restore any context instance to a previous state. * * @author Keith Donald */ public interface StateManageableMessageContext extends MessageContext { /** * Create a serializable memento, or token representing a snapshot of the internal state of this message context. * @return the messages memento */ public Serializable createMessagesMemento(); /** * Set the state of this context from the memento provided. After this call, the messages in this context will match * what is encapsulated inside the memento. Any previous state will be overridden. * @param messagesMemento the messages memento */ public void restoreMessages(Serializable messagesMemento); /** * Configure the message source used to resolve messages added to this context. May be set at any time to change how * coded messages are resolved. * @param messageSource the message source * @see MessageContext#addMessage(MessageResolver) */ public void setMessageSource(MessageSource messageSource); } ././@LongLink0000000000000000000000000000017100000000000011564 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-binding/src/main/java/org/springframework/binding/mapping/libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-binding/src/main/java/org/springframew0000755000000000000000000000000011360615644027717 5ustar ././@LongLink0000000000000000000000000000020400000000000011561 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-binding/src/main/java/org/springframework/binding/mapping/Mapper.javalibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-binding/src/main/java/org/springframew0000644000000000000000000000174511360615632027725 0ustar /* * Copyright 2004-2008 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.springframework.binding.mapping; /** * Maps state between two objects. * * @author Keith Donald */ public interface Mapper { /** * Map state from a source object to a target object. * @param source the source * @param target the target * @return results of the mapping transaction */ public MappingResults map(Object source, Object target); }././@LongLink0000000000000000000000000000021300000000000011561 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-binding/src/main/java/org/springframework/binding/mapping/MappingResult.javalibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-binding/src/main/java/org/springframew0000644000000000000000000000213311360615636027721 0ustar package org.springframework.binding.mapping; /** * A single data mapping result. Each result has a unique {@link #getCode() code}, and provides context about the result * of a single data mapping operation. * * @author Keith Donald */ public interface MappingResult { /** * The mapping that executed for which this result pertains to. */ public Mapping getMapping(); /** * The mapping result code; for example, "success" , "typeMismatch", "propertyNotFound", or "evaluationException". */ public String getCode(); /** * Indicates if this result is an error result. */ public boolean isError(); /** * Get the cause of the error result * @return the underyling cause, or null if this is not an error or there was no root cause. */ public Throwable getErrorCause(); /** * The original value of the source object that was to be mapped. May be null if this result is an error on the * source object. */ public Object getOriginalValue(); /** * The actual value that was mapped to the target object. Null if this result is an error. */ public Object getMappedValue(); }././@LongLink0000000000000000000000000000022400000000000011563 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-binding/src/main/java/org/springframework/binding/mapping/MappingResultsCriteria.javalibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-binding/src/main/java/org/springframew0000644000000000000000000000202511360615644027720 0ustar /* * Copyright 2004-2008 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.springframework.binding.mapping; /** * A predicate used to select mapping result objects in a call to * {@link MappingResults#getResults(MappingResultsCriteria)}. * @author Keith Donald */ public interface MappingResultsCriteria { /** * Tests if the mapping result meets this criteria. * @param result the result * @return true if so, false if not */ public boolean test(MappingResult result); } ././@LongLink0000000000000000000000000000017600000000000011571 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-binding/src/main/java/org/springframework/binding/mapping/impl/libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-binding/src/main/java/org/springframew0000755000000000000000000000000011360615642027715 5ustar ././@LongLink0000000000000000000000000000022000000000000011557 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-binding/src/main/java/org/springframework/binding/mapping/impl/DefaultMapper.javalibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-binding/src/main/java/org/springframew0000644000000000000000000000533011360615640027716 0ustar /* * Copyright 2004-2008 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.springframework.binding.mapping.impl; import java.util.ArrayList; import java.util.Iterator; import java.util.List; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.springframework.binding.mapping.Mapper; import org.springframework.binding.mapping.Mapping; import org.springframework.binding.mapping.MappingResults; import org.springframework.core.style.ToStringCreator; /** * Generic mapper implementation that allows mappings to be configured programatically. * * @see #addMapping(DefaultMapping) * @author Keith Donald */ public class DefaultMapper implements Mapper { private static final Log logger = LogFactory.getLog(DefaultMapper.class); private List mappings = new ArrayList(); /** * Add a mapping to this mapper. * @param mapping the mapping to add (required) * @return this, to support convenient call chaining */ public DefaultMapper addMapping(DefaultMapping mapping) { mappings.add(mapping); return this; } /** * Returns this mapper's list of mappings. * @return the list of mappings */ public Mapping[] getMappings() { return (Mapping[]) mappings.toArray(new Mapping[mappings.size()]); } public MappingResults map(Object source, Object target) { if (logger.isDebugEnabled()) { logger.debug("Beginning mapping between source [" + source.getClass().getName() + "] and target [" + target.getClass().getName() + "]"); } DefaultMappingContext context = new DefaultMappingContext(source, target); Iterator it = mappings.iterator(); while (it.hasNext()) { DefaultMapping mapping = (DefaultMapping) it.next(); mapping.map(context); } MappingResults results = context.getMappingResults(); if (logger.isDebugEnabled()) { logger.debug("Completing mapping between source [" + source.getClass().getName() + "] and target [" + target.getClass().getName() + "]; total mappings = " + results.getAllResults().size() + "; total errors = " + results.getErrorResults().size()); } return results; } public String toString() { return new ToStringCreator(this).append("mappings", mappings).toString(); } }././@LongLink0000000000000000000000000000021200000000000011560 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-binding/src/main/java/org/springframework/binding/mapping/impl/package.htmllibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-binding/src/main/java/org/springframew0000644000000000000000000000012411360615640027712 0ustar

The default data Mapper implementation.

././@LongLink0000000000000000000000000000023000000000000011560 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-binding/src/main/java/org/springframework/binding/mapping/impl/DefaultMappingContext.javalibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-binding/src/main/java/org/springframew0000644000000000000000000001151311360615642027720 0ustar /* * Copyright 2004-2008 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.springframework.binding.mapping.impl; import java.util.ArrayList; import java.util.List; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.springframework.binding.expression.EvaluationException; import org.springframework.binding.mapping.Mapping; import org.springframework.binding.mapping.MappingResult; import org.springframework.binding.mapping.MappingResults; import org.springframework.binding.mapping.results.RequiredError; import org.springframework.binding.mapping.results.SourceAccessError; import org.springframework.binding.mapping.results.Success; import org.springframework.binding.mapping.results.TargetAccessError; import org.springframework.binding.mapping.results.TypeConversionError; /** * Default mapping context implementation. * @author Keith Donald * @author Scott Andrews */ public class DefaultMappingContext { private static final Log logger = LogFactory.getLog(DefaultMapping.class); private Object source; private Object target; private Mapping currentMapping; private List mappingResults; public DefaultMappingContext(Object source, Object target) { this.source = source; this.target = target; this.mappingResults = new ArrayList(); } /** * The object being mapped from. */ public Object getSource() { return source; } /** * The object being mapped to. */ public Object getTarget() { return target; } /** * Returns the current mapping. * @return the current mapping */ public Mapping getCurrentMapping() { return currentMapping; } /** * Sets the current mapping. Called when a single mapping operation is about to begin. This updates progress of the * overall mapping transaction. * @param mapping the mapping to make the current mapping */ public void setCurrentMapping(Mapping mapping) { if (currentMapping != null) { throw new IllegalStateException("The current mapping has not finished yet"); } currentMapping = mapping; } /** * Indicates the current mapping completed successfully. * @param originalValue the original value from the source of the mapping * @param mappedValue the successfully mapped value, which may be different from the original if a type conversion * was performed */ public void setSuccessResult(Object originalValue, Object mappedValue) { add(new Success(currentMapping, mappedValue, originalValue)); } /** * Indicates the current mapping ended with a 'required' error. This means the value obtained from the source was * empty, and the mapping could not be completed as a result. * @param originalValue the original source value that is empty (null or an empty string, typically) */ public void setRequiredErrorResult(Object originalValue) { add(new RequiredError(currentMapping, originalValue)); } /** * Indicates the current mapping ended with a 'type conversion' error. This means the value obtained from the source * could not be converted to a type that could be assigned to the target expression. * @param originalValue the original source value that is empty (null or an empty string, typically) * @param cause the actual type conversion exception that occurred */ public void setTypeConversionErrorResult(Object originalValue, Exception cause) { add(new TypeConversionError(currentMapping, originalValue, cause)); } /** * Indicates a error occurred accessing the source mapping expression. * @param error the error that occurred */ public void setSourceAccessError(EvaluationException error) { add(new SourceAccessError(currentMapping, error)); } /** * Indicates a error occurred accessing the target mapping expression. * @param error the error that occurred */ public void setTargetAccessError(Object originalValue, EvaluationException error) { add(new TargetAccessError(currentMapping, originalValue, error)); } /** * Returns the mapping results recorded in this context. * @return the mapping results */ public MappingResults getMappingResults() { return new DefaultMappingResults(source, target, mappingResults); } // internal helpers private void add(MappingResult result) { if (logger.isDebugEnabled()) { logger.debug("Adding mapping result " + result); } mappingResults.add(result); currentMapping = null; } } ././@LongLink0000000000000000000000000000022100000000000011560 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-binding/src/main/java/org/springframework/binding/mapping/impl/DefaultMapping.javalibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-binding/src/main/java/org/springframew0000644000000000000000000001136411360615634027725 0ustar /* * Copyright 2004-2008 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.springframework.binding.mapping.impl; import org.springframework.binding.convert.ConversionExecutionException; import org.springframework.binding.convert.ConversionExecutor; import org.springframework.binding.expression.EvaluationException; import org.springframework.binding.expression.Expression; import org.springframework.binding.mapping.Mapping; import org.springframework.util.Assert; /** * A single mapping definition, encapsulating the information necessary to map the result of evaluating an expression on * a source object to a property on a target object, optionally applying a type conversion during the mapping process. * * @author Keith Donald * @author Scott Andrews */ public class DefaultMapping implements Mapping { /** * The source expression to evaluate against a source object to map from. */ private final Expression sourceExpression; /** * The target expression to set on a target object to map to. */ private final Expression targetExpression; /** * Whether or not this is a required mapping; if true, the source expression must return a non-null value. */ private boolean required; /** * A specific type conversion routine to apply during the mapping process. */ private ConversionExecutor typeConverter; /** * Creates a new mapping. * @param sourceExpression the source expression * @param targetExpression the target expression */ public DefaultMapping(Expression sourceExpression, Expression targetExpression) { Assert.notNull(sourceExpression, "The source expression is required"); Assert.notNull(targetExpression, "The target expression is required"); this.sourceExpression = sourceExpression; this.targetExpression = targetExpression; } // implementing mapping public Expression getSourceExpression() { return sourceExpression; } public Expression getTargetExpression() { return targetExpression; } public boolean isRequired() { return required; } // optional impl getters/setters /** * Returns the type conversion executor to use during mapping execution. May be null. */ public ConversionExecutor getTypeConverter() { return typeConverter; } /** * Sets a specific type conversion executor to use during mapping execution. * @param typeConverter the type converter */ public void setTypeConverter(ConversionExecutor typeConverter) { this.typeConverter = typeConverter; } /** * Indicates if this mapping is a required mapping. Default is false. * @param required required status */ public void setRequired(boolean required) { this.required = required; } /** * Execute this mapping. * @param context the mapping context */ public void map(DefaultMappingContext context) { context.setCurrentMapping(this); Object sourceValue; try { sourceValue = sourceExpression.getValue(context.getSource()); } catch (EvaluationException e) { context.setSourceAccessError(e); return; } if (required && (sourceValue == null || isEmptyString(sourceValue))) { context.setRequiredErrorResult(sourceValue); return; } Object targetValue = sourceValue; if (sourceValue != null) { if (typeConverter != null) { try { targetValue = typeConverter.execute(sourceValue); } catch (ConversionExecutionException e) { context.setTypeConversionErrorResult(sourceValue, e); return; } } } try { targetExpression.setValue(context.getTarget(), targetValue); context.setSuccessResult(sourceValue, targetValue); } catch (EvaluationException e) { context.setTargetAccessError(sourceValue, e); } } private boolean isEmptyString(Object sourceValue) { if (sourceValue instanceof CharSequence) { return ((CharSequence) sourceValue).length() == 0; } else { return false; } } public boolean equals(Object o) { if (!(o instanceof DefaultMapping)) { return false; } DefaultMapping other = (DefaultMapping) o; return sourceExpression.equals(other.sourceExpression) && targetExpression.equals(other.targetExpression); } public int hashCode() { return sourceExpression.hashCode() + targetExpression.hashCode(); } public String toString() { return sourceExpression + " -> " + targetExpression; } }././@LongLink0000000000000000000000000000023000000000000011560 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-binding/src/main/java/org/springframework/binding/mapping/impl/DefaultMappingResults.javalibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-binding/src/main/java/org/springframew0000644000000000000000000000522611360615642027724 0ustar /* * Copyright 2004-2008 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.springframework.binding.mapping.impl; import java.util.ArrayList; import java.util.Collections; import java.util.Iterator; import java.util.List; import org.springframework.binding.mapping.MappingResult; import org.springframework.binding.mapping.MappingResults; import org.springframework.binding.mapping.MappingResultsCriteria; /** * Default mapping results implementation. * @author Keith Donald */ public class DefaultMappingResults implements MappingResults { private Object source; private Object target; private List mappingResults; /** * Creates a new mapping results object. * @param source the source * @param target the target * @param mappingResults the actual results produced by {@link DefaultMapper} */ public DefaultMappingResults(Object source, Object target, List mappingResults) { this.source = source; this.target = target; this.mappingResults = mappingResults; } public Object getSource() { return source; } public Object getTarget() { return target; } public List getAllResults() { return Collections.unmodifiableList(mappingResults); } public boolean hasErrorResults() { Iterator it = mappingResults.iterator(); while (it.hasNext()) { MappingResult result = (MappingResult) it.next(); if (result.isError()) { return true; } } return false; } public List getErrorResults() { List errorResults = new ArrayList(); Iterator it = mappingResults.iterator(); while (it.hasNext()) { MappingResult result = (MappingResult) it.next(); if (result.isError()) { errorResults.add(result); } } return Collections.unmodifiableList(errorResults); } public List getResults(MappingResultsCriteria criteria) { List results = new ArrayList(); Iterator it = mappingResults.iterator(); while (it.hasNext()) { MappingResult result = (MappingResult) it.next(); if (criteria.test(result)) { results.add(result); } } return Collections.unmodifiableList(results); } public String toString() { return "Mapping Results = " + mappingResults.toString(); } } ././@LongLink0000000000000000000000000000020500000000000011562 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-binding/src/main/java/org/springframework/binding/mapping/Mapping.javalibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-binding/src/main/java/org/springframew0000644000000000000000000000207111360615634027720 0ustar /* * Copyright 2004-2008 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.springframework.binding.mapping; import org.springframework.binding.expression.Expression; /** * Information about a single mapping. * * @author Keith Donald */ public interface Mapping { /** * The source of the mapping. */ public Expression getSourceExpression(); /** * The target of the mapping. */ public Expression getTargetExpression(); /** * Whether this is a required mapping. */ public boolean isRequired(); }././@LongLink0000000000000000000000000000020100000000000011556 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-binding/src/main/java/org/springframework/binding/mapping/results/libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-binding/src/main/java/org/springframew0000755000000000000000000000000011360615646027721 5ustar ././@LongLink0000000000000000000000000000023100000000000011561 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-binding/src/main/java/org/springframework/binding/mapping/results/TypeConversionError.javalibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-binding/src/main/java/org/springframew0000644000000000000000000000300111360615636027714 0ustar /* * Copyright 2004-2008 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.springframework.binding.mapping.results; import org.springframework.binding.mapping.Mapping; /** * Indicates a type conversion occurred during a mapping operation. * * @author Keith Donald * @author Scott Andrews */ public class TypeConversionError extends AbstractMappingResult { private Object originalValue; private Exception cause; /** * Creates a new type conversion error. * @param cause the underlying type conversion exception */ public TypeConversionError(Mapping mapping, Object originalValue, Exception cause) { super(mapping); this.originalValue = originalValue; this.cause = cause; } public String getCode() { return "typeMismatch"; } public boolean isError() { return true; } public Throwable getErrorCause() { return cause; } public Object getOriginalValue() { return originalValue; } public Object getMappedValue() { return null; } } ././@LongLink0000000000000000000000000000022300000000000011562 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-binding/src/main/java/org/springframework/binding/mapping/results/RequiredError.javalibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-binding/src/main/java/org/springframew0000644000000000000000000000271711360615646027732 0ustar /* * Copyright 2004-2008 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.springframework.binding.mapping.results; import org.springframework.binding.mapping.Mapping; /** * The "required" error result--indicates a required mapping could not be performed because the source value to map was * empty. * @author Keith Donald */ public class RequiredError extends AbstractMappingResult { private Object originalValue; /** * Creates a new required error result * @param originalValue the original source value (empty) */ public RequiredError(Mapping mapping, Object originalValue) { super(mapping); this.originalValue = originalValue; } public String getCode() { return "required"; } public boolean isError() { return true; } public Throwable getErrorCause() { return null; } public Object getOriginalValue() { return originalValue; } public Object getMappedValue() { return null; } } ././@LongLink0000000000000000000000000000021500000000000011563 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-binding/src/main/java/org/springframework/binding/mapping/results/Success.javalibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-binding/src/main/java/org/springframew0000644000000000000000000000275111360615636027727 0ustar /* * Copyright 2004-2008 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.springframework.binding.mapping.results; import org.springframework.binding.mapping.Mapping; /** * Indicates a successful mapping operation. * @author Keith Donald */ public class Success extends AbstractMappingResult { private Object mappedValue; private Object originalValue; /** * Creates a new success result. * @param mappedValue the successfully mapped value * @param originalValue the original value */ public Success(Mapping mapping, Object mappedValue, Object originalValue) { super(mapping); this.mappedValue = mappedValue; this.originalValue = originalValue; } public String getCode() { return "success"; } public boolean isError() { return false; } public Throwable getErrorCause() { return null; } public Object getOriginalValue() { return originalValue; } public Object getMappedValue() { return mappedValue; } } ././@LongLink0000000000000000000000000000021500000000000011563 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-binding/src/main/java/org/springframework/binding/mapping/results/package.htmllibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-binding/src/main/java/org/springframew0000644000000000000000000000010611360615646027720 0ustar

Possible Mapping results.

././@LongLink0000000000000000000000000000023300000000000011563 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-binding/src/main/java/org/springframework/binding/mapping/results/AbstractMappingResult.javalibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-binding/src/main/java/org/springframew0000644000000000000000000000350211360615642027717 0ustar /* * Copyright 2004-2008 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.springframework.binding.mapping.results; import org.springframework.binding.mapping.Mapping; import org.springframework.binding.mapping.MappingResult; import org.springframework.core.style.ToStringCreator; /** * Convenient base class for {@link MappingResult} implementations. * * @author Keith Donald */ public abstract class AbstractMappingResult implements MappingResult { private Mapping mapping; /** * Creates a new mapping result. * @param mapping the mapping this result is for. */ public AbstractMappingResult(Mapping mapping) { this.mapping = mapping; } public Mapping getMapping() { return mapping; } public abstract String getCode(); public abstract boolean isError(); public abstract Throwable getErrorCause(); public abstract Object getOriginalValue(); public abstract Object getMappedValue(); public String toString() { ToStringCreator creator = new ToStringCreator(this).append("mapping", mapping).append("code", getCode()) .append("error", isError()); if (isError()) { creator.append("errorCause", getErrorCause()); } creator.append("originalValue", getOriginalValue()); creator.append("mappedValue", getMappedValue()); return creator.toString(); } }././@LongLink0000000000000000000000000000022700000000000011566 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-binding/src/main/java/org/springframework/binding/mapping/results/TargetAccessError.javalibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-binding/src/main/java/org/springframew0000644000000000000000000000411011360615636027716 0ustar /* * Copyright 2004-2008 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.springframework.binding.mapping.results; import org.springframework.binding.expression.EvaluationException; import org.springframework.binding.expression.PropertyNotFoundException; import org.springframework.binding.expression.ValueCoercionException; import org.springframework.binding.mapping.Mapping; /** * Indicates an exception occurred accessing the target object to be mapped to. Used to report source * {@link PropertyNotFoundException} errors and general {@link EvaluationException} errors. * @author Keith Donald */ public class TargetAccessError extends AbstractMappingResult { private Object originalValue; private EvaluationException cause; /** * Creates a new target access error. * @param originalValue the value that was attempted to be mapped * @param cause the underlying evaluation exception that occurred */ public TargetAccessError(Mapping mapping, Object originalValue, EvaluationException cause) { super(mapping); this.originalValue = originalValue; this.cause = cause; } public String getCode() { if (cause instanceof PropertyNotFoundException) { return "propertyNotFound"; } else if (cause instanceof ValueCoercionException) { return "typeMismatch"; } else { return "evaluationException"; } } public boolean isError() { return true; } public Throwable getErrorCause() { return cause; } public Object getOriginalValue() { return originalValue; } public Object getMappedValue() { return null; } }././@LongLink0000000000000000000000000000022700000000000011566 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-binding/src/main/java/org/springframework/binding/mapping/results/SourceAccessError.javalibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-binding/src/main/java/org/springframew0000644000000000000000000000340611360615632027721 0ustar /* * Copyright 2004-2008 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.springframework.binding.mapping.results; import org.springframework.binding.expression.EvaluationException; import org.springframework.binding.expression.PropertyNotFoundException; import org.springframework.binding.mapping.Mapping; /** * Indicates an exception occurred accessing the source object to be mapped. Used to report source * {@link PropertyNotFoundException} errors and general {@link EvaluationException} errors. * @author Keith Donald */ public class SourceAccessError extends AbstractMappingResult { private EvaluationException cause; /** * Creates a new source access error. * @param error the underlying evaluation exception that occurred */ public SourceAccessError(Mapping mapping, EvaluationException error) { super(mapping); this.cause = error; } public String getCode() { if (cause instanceof PropertyNotFoundException) { return "propertyNotFound"; } else { return "evaluationException"; } } public boolean isError() { return true; } public Throwable getErrorCause() { return cause; } public Object getOriginalValue() { return null; } public Object getMappedValue() { return null; } } ././@LongLink0000000000000000000000000000020500000000000011562 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-binding/src/main/java/org/springframework/binding/mapping/package.htmllibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-binding/src/main/java/org/springframew0000644000000000000000000000012611360615640027714 0ustar

Support for mapping data between objects.

././@LongLink0000000000000000000000000000021400000000000011562 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-binding/src/main/java/org/springframework/binding/mapping/MappingResults.javalibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-binding/src/main/java/org/springframew0000644000000000000000000000272511360615642027725 0ustar /* * Copyright 2004-2008 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.springframework.binding.mapping; import java.util.List; /** * Exposes information about the results of a mapping transaction. * * @author Keith Donald */ public interface MappingResults { /** * The source object that was mapped from. */ public Object getSource(); /** * The target object that was mapped to. */ public Object getTarget(); /** * A list of all the mapping results between the source and target. */ public List getAllResults(); /** * Whether some results were errors. Returns true if mapping errors occurred. */ public boolean hasErrorResults(); /** * A list of all error results that occurred. */ public List getErrorResults(); /** * Get all results that meet the given result criteria. * @param criteria the mapping result criteria */ public List getResults(MappingResultsCriteria criteria); }././@LongLink0000000000000000000000000000017000000000000011563 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-binding/src/main/java/org/springframework/binding/method/libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-binding/src/main/java/org/springframew0000755000000000000000000000000011360615644027717 5ustar ././@LongLink0000000000000000000000000000022600000000000011565 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-binding/src/main/java/org/springframework/binding/method/InvalidMethodKeyException.javalibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-binding/src/main/java/org/springframew0000644000000000000000000000257111360615632027723 0ustar /* * Copyright 2004-2008 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.springframework.binding.method; /** * Thrown when a method key could not be resolved to an invokable java Method on a Class. * * @author Keith Donald */ public class InvalidMethodKeyException extends RuntimeException { /** * The method key that could not be resolved. */ private MethodKey methodKey; /** * Creates an exception signaling an invalid method signature. * @param methodKey the class method key * @param cause the cause */ public InvalidMethodKeyException(MethodKey methodKey, Exception cause) { super("Could not resolve method with key " + methodKey, cause); this.methodKey = methodKey; } /** * Returns the invalid method key. * @return the method key. */ public MethodKey getMethodKey() { return methodKey; } }././@LongLink0000000000000000000000000000021400000000000011562 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-binding/src/main/java/org/springframework/binding/method/MethodSignature.javalibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-binding/src/main/java/org/springframew0000644000000000000000000000545111360615634027725 0ustar /* * Copyright 2004-2008 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.springframework.binding.method; import org.springframework.core.style.ToStringCreator; import org.springframework.util.Assert; /** * A specification for a method consisting of the methodName and an optional set of named arguments. This class provides * the ability to resolve a method with parameters and evaluate its argument values as part of a * {@link MethodInvoker method invoker attempt}. * * @author Keith Donald * @author Jeremy Grelle */ public class MethodSignature { /** * The name of the method, e.g "execute". */ private String methodName; /** * The parameter types of the method, e.g "int param1". */ private Parameters parameters; /** * Creates a method signature with no parameters. * @param methodName the name of the method */ public MethodSignature(String methodName) { this(methodName, Parameters.NONE); } /** * Creates a method signature with a single parameter. * @param methodName the name of the method * @param parameter the method parameter */ public MethodSignature(String methodName, Parameter parameter) { this(methodName, new Parameters(parameter)); } /** * Creates a method signature with a list of parameters. * @param methodName the name of the method * @param parameters the method parameters */ public MethodSignature(String methodName, Parameters parameters) { Assert.notNull(methodName, "The method name is required"); Assert.notNull(parameters, "The parameters are required"); this.methodName = methodName; this.parameters = parameters; } /** * Returns the method name. */ public String getMethodName() { return methodName; } /** * Returns the method parameters. */ public Parameters getParameters() { return parameters; } public boolean equals(Object obj) { if (!(obj instanceof MethodSignature)) { return false; } MethodSignature other = (MethodSignature) obj; return methodName.equals(other.methodName) && parameters.equals(other.parameters); } public int hashCode() { return methodName.hashCode() + parameters.hashCode(); } public String toString() { return new ToStringCreator(this).append("methodName", methodName).append("parameters", parameters).toString(); } }././@LongLink0000000000000000000000000000020600000000000011563 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-binding/src/main/java/org/springframework/binding/method/MethodKey.javalibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-binding/src/main/java/org/springframew0000644000000000000000000001636311360615642027730 0ustar /* * Copyright 2004-2008 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.springframework.binding.method; import java.io.Serializable; import java.lang.reflect.Method; import java.util.HashMap; import java.util.Map; import org.springframework.util.Assert; import org.springframework.util.ClassUtils; import org.springframework.util.ObjectUtils; /** * A helper for resolving and caching a Java method by reflection. * * @author Keith Donald */ public class MethodKey implements Serializable { /** * The class the method is a member of. */ private Class declaredType; /** * The method name. */ private String methodName; /** * The method's actual parameter types. Could contain null values if the user did not specify a parameter type for * the corresponding parameter */ private Class[] parameterTypes; /** * A cached handle to the resolved method (may be null). */ private transient Method method; /** * Create a new method key. * @param declaredType the class the method is a member of * @param methodName the method name * @param parameterTypes the method's parameter types, or null if the method has no parameters */ public MethodKey(Class declaredType, String methodName, Class[] parameterTypes) { Assert.notNull(declaredType, "The method's declared type is required"); Assert.notNull(methodName, "The method name is required"); this.declaredType = declaredType; this.methodName = methodName; this.parameterTypes = parameterTypes; } /** * Return the class the method is a member of. */ public Class getDeclaredType() { return declaredType; } /** * Returns the method name. */ public String getMethodName() { return methodName; } /** * Returns the method parameter types. Could contain null values if no type was specified for the corresponding * parameter. */ public Class[] getParameterTypes() { return parameterTypes; } /** * Returns the keyed method, resolving it if necessary via reflection. */ public Method getMethod() throws InvalidMethodKeyException { if (method == null) { method = resolveMethod(); } return method; } // internal helpers /** * Resolve the keyed method. */ protected Method resolveMethod() throws InvalidMethodKeyException { try { return declaredType.getMethod(methodName, parameterTypes); } catch (NoSuchMethodException e) { Method method = findMethodConsiderAssignableParameterTypes(); if (method != null) { return method; } else { throw new InvalidMethodKeyException(this, e); } } } /** * Find the keyed method using 'relaxed' typing. */ protected Method findMethodConsiderAssignableParameterTypes() { Method[] candidateMethods = getDeclaredType().getMethods(); for (int i = 0; i < candidateMethods.length; i++) { if (candidateMethods[i].getName().equals(methodName)) { // Check if the method has the correct number of parameters. Class[] candidateParameterTypes = candidateMethods[i].getParameterTypes(); if (candidateParameterTypes.length == parameterTypes.length) { int numberOfCorrectArguments = 0; for (int j = 0; j < candidateParameterTypes.length; j++) { // Check if the candidate type is assignable to the sig // parameter type. Class candidateType = candidateParameterTypes[j]; Class parameterType = parameterTypes[j]; if (parameterType != null) { if (isAssignable(candidateType, parameterType)) { numberOfCorrectArguments++; } } else { // just match on a null param type (effectively 'any') numberOfCorrectArguments++; } } if (numberOfCorrectArguments == parameterTypes.length) { return candidateMethods[i]; } } } } return null; } public boolean equals(Object obj) { if (!(obj instanceof MethodKey)) { return false; } MethodKey other = (MethodKey) obj; return declaredType.equals(other.declaredType) && methodName.equals(other.methodName) && parameterTypesEqual(other.parameterTypes); } private boolean parameterTypesEqual(Class[] other) { if (parameterTypes == other) { return true; } if (parameterTypes.length != other.length) { return false; } for (int i = 0; i < this.parameterTypes.length; i++) { if (!ObjectUtils.nullSafeEquals(parameterTypes[i], other[i])) { return false; } } return true; } public int hashCode() { return declaredType.hashCode() + methodName.hashCode() + parameterTypesHash(); } private int parameterTypesHash() { if (parameterTypes == null) { return 0; } int hash = 0; for (int i = 0; i < parameterTypes.length; i++) { Class parameterType = parameterTypes[i]; if (parameterType != null) { hash += parameterTypes[i].hashCode(); } } return hash; } public String toString() { return methodName + "(" + parameterTypesString() + ")"; } /** * Convenience method that returns the parameter types describing the signature of the method as a string. */ private String parameterTypesString() { StringBuffer parameterTypesString = new StringBuffer(); for (int i = 0; i < parameterTypes.length; i++) { if (parameterTypes[i] == null) { parameterTypesString.append(""); } else { parameterTypesString.append(ClassUtils.getShortName(parameterTypes[i])); } if (i < parameterTypes.length - 1) { parameterTypesString.append(','); } } return parameterTypesString.toString(); } // internal helpers /** * Determine if the given target type is assignable from the given value type, assuming setting by reflection. * Considers primitive wrapper classes as assignable to the corresponding primitive types. *

* NOTE: Pulled from ClassUtils in Spring 2.0 for 1.2.8 compatability. * @param targetType the target type * @param valueType the value type that should be assigned to the target type * @return if the target type is assignable from the value type */ private static boolean isAssignable(Class targetType, Class valueType) { return (targetType.isAssignableFrom(valueType) || targetType.equals(primitiveWrapperTypeMap.get(valueType))); } /** * Map with primitive wrapper type as key and corresponding primitive type as value, for example: Integer.class -> * int.class. */ private static final Map primitiveWrapperTypeMap = new HashMap(8); static { primitiveWrapperTypeMap.put(Boolean.class, boolean.class); primitiveWrapperTypeMap.put(Byte.class, byte.class); primitiveWrapperTypeMap.put(Character.class, char.class); primitiveWrapperTypeMap.put(Double.class, double.class); primitiveWrapperTypeMap.put(Float.class, float.class); primitiveWrapperTypeMap.put(Integer.class, int.class); primitiveWrapperTypeMap.put(Long.class, long.class); primitiveWrapperTypeMap.put(Short.class, short.class); } }././@LongLink0000000000000000000000000000021200000000000011560 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-binding/src/main/java/org/springframework/binding/method/MethodInvoker.javalibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-binding/src/main/java/org/springframew0000644000000000000000000001056511360615642027726 0ustar /* * Copyright 2004-2008 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.springframework.binding.method; import java.lang.reflect.InvocationTargetException; import java.lang.reflect.Method; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.springframework.binding.convert.ConversionService; import org.springframework.binding.convert.service.DefaultConversionService; import org.springframework.core.style.StylerUtils; import org.springframework.util.CachingMapDecorator; /** * A helper for invoking typed methods on arbitrary objects, with support for argument value type conversion from values * retrieved from an argument attribute source, and conversion of the result to a desired type. * * @author Keith Donald * @author Jeremy Grelle */ public class MethodInvoker { private static final Log logger = LogFactory.getLog(MethodInvoker.class); /** * Conversion service for converting arguments to the necessary type if required. */ private ConversionService conversionService = new DefaultConversionService(); /** * A cache of invoked bean methods, keyed weakly. */ private CachingMapDecorator methodCache = new CachingMapDecorator(true) { public Object create(Object key) { return ((MethodKey) key).getMethod(); } }; /** * Sets the conversion service to convert argument values as needed. */ public void setConversionService(ConversionService conversionService) { this.conversionService = conversionService; } /** * Invoke the method on the bean provided. Argument values are pulled from the provided argument source. * @param signature the definition of the method to invoke, including the method name and the method argument types * @param bean the bean to invoke * @param argumentSource the source for method arguments * @return the invoked method's return value * @throws MethodInvocationException the method could not be invoked */ public Object invoke(MethodSignature signature, Object bean, Object argumentSource) throws MethodInvocationException { Parameters parameters = signature.getParameters(); Object[] arguments = new Object[parameters.size()]; for (int i = 0; i < parameters.size(); i++) { Parameter parameter = parameters.getParameter(i); Object argument = parameter.evaluateArgument(argumentSource); arguments[i] = applyTypeConversion(argument, parameter.getType()); } Class[] parameterTypes = parameters.getTypesArray(); for (int i = 0; i < parameterTypes.length; i++) { if (parameterTypes[i] == null) { Object argument = arguments[i]; if (argument != null) { parameterTypes[i] = argument.getClass(); } } } MethodKey key = new MethodKey(bean.getClass(), signature.getMethodName(), parameterTypes); try { Method method = (Method) methodCache.get(key); if (logger.isDebugEnabled()) { logger.debug("Invoking method with signature [" + key + "] with arguments " + StylerUtils.style(arguments) + " on bean [" + bean + "]"); } Object returnValue = method.invoke(bean, arguments); if (logger.isDebugEnabled()) { logger.debug("Invoked method with signature [" + key + "] returned value [" + returnValue + "]"); } return returnValue; } catch (InvocationTargetException e) { throw new MethodInvocationException(signature, arguments, e.getTargetException()); } catch (Exception e) { throw new MethodInvocationException(signature, arguments, e); } } /** * Apply type conversion on the supplied value * * @param value the raw value to be converted * @param targetType the target type for the conversion * @return the converted result */ protected Object applyTypeConversion(Object value, Class targetType) { if (value == null || targetType == null) { return value; } return conversionService.getConversionExecutor(value.getClass(), targetType).execute(value); } }././@LongLink0000000000000000000000000000020600000000000011563 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-binding/src/main/java/org/springframework/binding/method/Parameter.javalibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-binding/src/main/java/org/springframew0000644000000000000000000000514111360615644027722 0ustar /* * Copyright 2004-2008 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.springframework.binding.method; import org.springframework.binding.expression.Expression; import org.springframework.core.style.ToStringCreator; import org.springframework.util.Assert; import org.springframework.util.ObjectUtils; /** * A named method parameter. Each parameter has an identifying name and is of a specified type (class). * * @author Keith Donald */ public class Parameter { /** * The class of the parameter, e.g "springbank.AccountNumber". */ private Class type; /** * The name of the parameter as an evaluatable expression, e.g "accountNumber". */ private Expression name; /** * Create a new named parameter definition. Named parameters are capable of resolving parameter values (arguments) * from argument sources. * @param type the parameter type, may be null * @param name the name the method argument expression (required) */ public Parameter(Class type, Expression name) { Assert.notNull(name, "The parameter name expression is required"); this.type = type; this.name = name; } /** * Returns the parameter type. Could be null if no parameter type was specified. */ public Class getType() { return type; } /** * Returns the parameter name. */ public Expression getName() { return name; } /** * Evaluate this method parameter against the provided argument source, returning a single method argument value. * @param argumentSource the method argument source * @return the method argument value */ public Object evaluateArgument(Object argumentSource) { return name.getValue(argumentSource); } public boolean equals(Object obj) { if (!(obj instanceof Parameter)) { return false; } Parameter other = (Parameter) obj; return ObjectUtils.nullSafeEquals(type, other.type) && name.equals(other.name); } public int hashCode() { return (type != null ? type.hashCode() : 0) + name.hashCode(); } public String toString() { return new ToStringCreator(this).append("type", type).append("name", name).toString(); } }././@LongLink0000000000000000000000000000020400000000000011561 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-binding/src/main/java/org/springframework/binding/method/package.htmllibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-binding/src/main/java/org/springframew0000644000000000000000000000033211360615632027714 0ustar

Custom method binding support for invoking methods on objects. As EL usage becomes more common and powerful, it is expected this package will be deprecated and eventually removed.

././@LongLink0000000000000000000000000000020700000000000011564 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-binding/src/main/java/org/springframework/binding/method/Parameters.javalibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-binding/src/main/java/org/springframew0000644000000000000000000000664111360615640027724 0ustar /* * Copyright 2004-2008 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.springframework.binding.method; import java.util.ArrayList; import java.util.Arrays; import java.util.Iterator; import java.util.List; /** * An ordered list of method parameters. * * @author Keith */ public class Parameters { /** * Canonical instance for an empty parameters list. */ public static final Parameters NONE = new Parameters(0); /** * The list. */ private List parameters; /** * Create a parameter list of the default size (3 elements). */ public Parameters() { this(3); } /** * Create a parameter list with the specified size. * @param size the size */ public Parameters(int size) { this.parameters = new ArrayList(size); } /** * Create a parameter list with one parameter. * @param parameter the single parameter */ public Parameters(Parameter parameter) { this.parameters = new ArrayList(1); add(parameter); } /** * Create a parameter list from the parameter array. * @param parameters the parameters */ public Parameters(Parameter[] parameters) { this.parameters = new ArrayList(parameters.length); addAll(parameters); } /** * Add a new parameter to this list. * @param parameter the parameter */ public boolean add(Parameter parameter) { return this.parameters.add(parameter); } /** * Add new parameters to this list. * @param parameters the parameters */ public boolean addAll(Parameter[] parameters) { return this.parameters.addAll(Arrays.asList(parameters)); } /** * Return a parameter iterator. * @return the iterator */ public Iterator iterator() { return parameters.iterator(); } /** * Get an array containing each parameter type. The resulting array could contain null values if the corresponding * parameters did not specify a parameter type. * @return the types */ public Class[] getTypesArray() { int i = 0; Class[] types = new Class[parameters.size()]; for (Iterator it = parameters.iterator(); it.hasNext();) { Parameter param = (Parameter) it.next(); types[i] = param.getType(); i++; } return types; } /** * Returns the number of parameters in this list. * @return the size */ public int size() { return parameters.size(); } /** * Return the parameter at the provided index. * @param index the parameter index * @return the parameter at that index * @throws IndexOutOfBoundsException if the provided index is out of bounds */ public Parameter getParameter(int index) throws IndexOutOfBoundsException { return (Parameter) parameters.get(index); } public boolean equals(Object obj) { if (!(obj instanceof Parameters)) { return false; } Parameters other = (Parameters) obj; return parameters.equals(other.parameters); } public int hashCode() { return parameters.hashCode(); } public String toString() { return parameters.toString(); } }././@LongLink0000000000000000000000000000022600000000000011565 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-binding/src/main/java/org/springframework/binding/method/MethodInvocationException.javalibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-binding/src/main/java/org/springframew0000644000000000000000000000457111360615632027725 0ustar /* * Copyright 2004-2008 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.springframework.binding.method; import java.lang.reflect.InvocationTargetException; import org.springframework.core.style.StylerUtils; /** * Base class for exceptions that report a method invocation failure. * * @author Keith Donald */ public class MethodInvocationException extends RuntimeException { /** * The method signature. Transient because a MethodSignature is not Serializable. */ private transient MethodSignature methodSignature; /** * The method invocation argument values. Transient because we cannot guarantee that the arguments are Serializable. */ private transient Object[] arguments; /** * Signals that the method with the specified signature could not be invoked with the provided arguments. * @param methodSignature the method signature * @param arguments the arguments * @param cause the root cause */ public MethodInvocationException(MethodSignature methodSignature, Object[] arguments, Throwable cause) { super("Unable to invoke method " + methodSignature + " with arguments " + StylerUtils.style(arguments), cause); this.methodSignature = methodSignature; this.arguments = arguments; } /** * Returns the invoked method's signature. */ public MethodSignature getMethodSignature() { return methodSignature; } /** * Returns the method invocation arguments. */ public Object[] getArguments() { return arguments; } /** * Returns the target root cause exception of the method invocation failure. * @return the target throwable */ public Throwable getTargetException() { Throwable targetException = getCause(); while (targetException instanceof InvocationTargetException) { targetException = ((InvocationTargetException) targetException).getTargetException(); } return targetException; } }././@LongLink0000000000000000000000000000017000000000000011563 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-binding/src/main/java/org/springframework/binding/format/libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-binding/src/main/java/org/springframew0000755000000000000000000000000011360615642027715 5ustar ././@LongLink0000000000000000000000000000023000000000000011560 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-binding/src/main/java/org/springframework/binding/format/CurrencyNumberFormatFactory.javalibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-binding/src/main/java/org/springframew0000644000000000000000000000201311360615642027713 0ustar /* * Copyright 2004-2008 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.springframework.binding.format; import java.text.NumberFormat; import java.util.Locale; /** * Produces NumberFormat instances that format currency values. * * @see NumberFormat * @author Keith Donald */ public class CurrencyNumberFormatFactory extends AbstractNumberFormatFactory { protected NumberFormat getNumberFormat(Locale locale) { return NumberFormat.getCurrencyInstance(locale); } }././@LongLink0000000000000000000000000000022700000000000011566 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-binding/src/main/java/org/springframework/binding/format/PercentNumberFormatFactory.javalibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-binding/src/main/java/org/springframew0000644000000000000000000000201011360615634027711 0ustar /* * Copyright 2004-2008 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.springframework.binding.format; import java.text.NumberFormat; import java.util.Locale; /** * Produces NumberFormat instances that format percent values. * * @see NumberFormat * @author Keith Donald */ public class PercentNumberFormatFactory extends AbstractNumberFormatFactory { protected NumberFormat getNumberFormat(Locale locale) { return NumberFormat.getPercentInstance(locale); } }././@LongLink0000000000000000000000000000020400000000000011561 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-binding/src/main/java/org/springframework/binding/format/package.htmllibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-binding/src/main/java/org/springframew0000644000000000000000000000016311360615632027716 0ustar

Core services for formatting objects into a string form for display in a UI.

././@LongLink0000000000000000000000000000022700000000000011566 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-binding/src/main/java/org/springframework/binding/format/DefaultNumberFormatFactory.javalibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-binding/src/main/java/org/springframew0000644000000000000000000000421511360615642027721 0ustar /* * Copyright 2004-2008 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.springframework.binding.format; import java.text.DecimalFormat; import java.text.NumberFormat; import java.util.Locale; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; /** * Works with a general purpose {@link DecimalFormat} instance returned by calling * {@link NumberFormat#getInstance(Locale)} by default. This instance supports parsing any number type generally and * will not perform special type-specific logic such as rounding or truncation. * * @see NumberFormat * @see DecimalFormat * * @author Keith Donald */ public class DefaultNumberFormatFactory extends AbstractNumberFormatFactory { private static Log logger = LogFactory.getLog(DefaultNumberFormatFactory.class); private String pattern; /** * The pattern to use to format number values. If not specified, the default DecimalFormat pattern is used. * @return the date formatting pattern */ public String getPattern() { return pattern; } /** * Sets the pattern for formatting numbers. * @param pattern the format pattern * @see DecimalFormat */ public void setPattern(String pattern) { this.pattern = pattern; } protected NumberFormat getNumberFormat(Locale locale) { NumberFormat format = NumberFormat.getInstance(locale); if (pattern != null) { if (format instanceof DecimalFormat) { ((DecimalFormat) format).applyPattern(pattern); } else { logger.warn("Unable to apply format pattern '" + pattern + "'; Returned NumberFormat is not a DecimalFormat"); } } return format; } }././@LongLink0000000000000000000000000000022700000000000011566 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-binding/src/main/java/org/springframework/binding/format/IntegerNumberFormatFactory.javalibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-binding/src/main/java/org/springframew0000644000000000000000000000201011360615632027707 0ustar /* * Copyright 2004-2008 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.springframework.binding.format; import java.text.NumberFormat; import java.util.Locale; /** * Produces NumberFormat instances that format integer values. * * @see NumberFormat * @author Keith Donald */ public class IntegerNumberFormatFactory extends AbstractNumberFormatFactory { protected NumberFormat getNumberFormat(Locale locale) { return NumberFormat.getIntegerInstance(locale); } }././@LongLink0000000000000000000000000000022000000000000011557 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-binding/src/main/java/org/springframework/binding/format/NumberFormatFactory.javalibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-binding/src/main/java/org/springframew0000644000000000000000000000100511360615640027711 0ustar package org.springframework.binding.format; import java.text.NumberFormat; /** * A factory for {@link NumberFormat} objects. Conceals the complexity associated with configuring, constructing, and/or * caching number format instances. * * @author Keith Donald */ public interface NumberFormatFactory { /** * Factory method that returns a fully-configured {@link NumberFormat} instance to use to format an object for * display. * @return the number format */ public NumberFormat getNumberFormat(); }././@LongLink0000000000000000000000000000023000000000000011560 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-binding/src/main/java/org/springframework/binding/format/AbstractNumberFormatFactory.javalibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-binding/src/main/java/org/springframew0000644000000000000000000000357211360615632027725 0ustar /* * Copyright 2004-2008 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.springframework.binding.format; import java.text.NumberFormat; import java.util.Locale; import org.springframework.context.i18n.LocaleContextHolder; /** * Base class suitable for subclassing by most {@link NumberFormatFactory} implementations. * * @author Keith Donald */ public abstract class AbstractNumberFormatFactory implements NumberFormatFactory { private Locale locale; /** * The locale to use in formatting number values. If null, the locale associated with the current thread is used. * @see LocaleContextHolder#getLocale() * @return the locale */ public Locale getLocale() { return locale; } /** * Sets the locale to use in formatting number values. * @param locale the locale */ public void setLocale(Locale locale) { this.locale = locale; } public final NumberFormat getNumberFormat() { Locale locale = determineLocale(this.locale); return getNumberFormat(locale); } /** * Subclasses should override to create the new NumberFormat instance. * @param locale the locale to use * @return the number format */ protected abstract NumberFormat getNumberFormat(Locale locale); // internal helpers private Locale determineLocale(Locale locale) { return locale != null ? locale : LocaleContextHolder.getLocale(); } }././@LongLink0000000000000000000000000000017100000000000011564 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-binding/src/main/java/org/springframework/binding/convert/libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-binding/src/main/java/org/springframew0000755000000000000000000000000011360615644027717 5ustar ././@LongLink0000000000000000000000000000023200000000000011562 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-binding/src/main/java/org/springframework/binding/convert/ConversionExecutionException.javalibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-binding/src/main/java/org/springframew0000644000000000000000000000560111360615632027720 0ustar /* * Copyright 2004-2008 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.springframework.binding.convert; import org.springframework.core.style.StylerUtils; /** * Thrown when an attempt to execute a type conversion fails. * * @author Keith Donald */ public class ConversionExecutionException extends ConversionException { /** * The value we tried to convert. Transient because we cannot guarantee that the value is Serializable. */ private transient Object value; /** * The source type we tried to convert the value from. */ private Class sourceClass; /** * The target type we tried to convert the value to. */ private Class targetClass; /** * Creates a new conversion exception. * @param value the value we tried to convert * @param sourceClass the value's original type * @param targetClass the value's target type * @param cause the cause of the conversion failure */ public ConversionExecutionException(Object value, Class sourceClass, Class targetClass, Throwable cause) { super(defaultMessage(value, sourceClass, targetClass, cause), cause); this.value = value; this.sourceClass = sourceClass; this.targetClass = targetClass; } /** * Creates a new conversion exception. * @param value the value we tried to convert * @param sourceClass the value's original type * @param targetClass the value's target type * @param message a descriptive message of what went wrong. */ public ConversionExecutionException(Object value, Class sourceClass, Class targetClass, String message) { super(message); this.value = value; this.sourceClass = sourceClass; this.targetClass = targetClass; } /** * Returns the actual value we tried to convert, an instance of {@link #getSourceClass()}. */ public Object getValue() { return value; } /** * Returns the source type we tried to convert the value from. */ public Class getSourceClass() { return sourceClass; } /** * Returns the target type we tried to convert the value to. */ public Class getTargetClass() { return targetClass; } private static String defaultMessage(Object value, Class sourceClass, Class targetClass, Throwable cause) { return "Unable to convert value " + StylerUtils.style(value) + " from type '" + sourceClass.getName() + "' to type '" + targetClass.getName() + "'; reason = '" + cause.getMessage() + "'"; } }././@LongLink0000000000000000000000000000022100000000000011560 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-binding/src/main/java/org/springframework/binding/convert/ConversionException.javalibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-binding/src/main/java/org/springframew0000644000000000000000000000226511360615632027723 0ustar /* * Copyright 2004-2008 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.springframework.binding.convert; /** * Base class for exceptions thrown by the convert system. * * @author Keith Donald */ public abstract class ConversionException extends RuntimeException { /** * Creates a new conversion exception. * @param message the exception message * @param cause the cause */ public ConversionException(String message, Throwable cause) { super(message, cause); } /** * Creates a new conversion exception. * @param message the exception message */ public ConversionException(String message) { super(message); } } ././@LongLink0000000000000000000000000000021700000000000011565 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-binding/src/main/java/org/springframework/binding/convert/ConversionService.javalibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-binding/src/main/java/org/springframew0000644000000000000000000001047511360615644027730 0ustar /* * Copyright 2004-2008 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.springframework.binding.convert; import java.util.Set; /** * A service interface for retrieving type conversion executors. The returned command objects are thread-safe and may be * safely cached for use by client code. * * Type converters convert from one type to another. * * @author Keith Donald */ public interface ConversionService { /** * Execute a conversion of the source object provided to the specified targetClass * @param source the source to convert from (may be null) * @param targetClass the target class to convert to * @return the converted object, an instance of the targetClass * @throws ConversionException if an exception occurred during the conversion process */ public Object executeConversion(Object source, Class targetClass) throws ConversionException; /** * Execute a conversion using the custom converter with the provided id. * @param converterId the id of the custom converter, which must be registered with this conversion service and * capable of converting to the target class * @param source the source to convert from (may be null) * @param targetClass the target class to convert to * @return the converted object, an instance of the targetClass * @throws ConversionException if an exception occurred during the conversion process */ public Object executeConversion(String converterId, Object source, Class targetClass); /** * Return the default conversion executor capable of converting source objects of the specified * sourceClass to instances of the targetClass. *

* The returned ConversionExecutor is thread-safe and may safely be cached for use in client code. * @param sourceClass the source class to convert from (required) * @param targetClass the target class to convert to (required) * @return the executor that can execute instance type conversion, never null * @throws ConversionExecutorNotFoundException when no suitable conversion executor could be found */ public ConversionExecutor getConversionExecutor(Class sourceClass, Class targetClass) throws ConversionExecutorNotFoundException; /** * Return the custom conversion executor capable of converting source objects of the specified * sourceClass to instances of the targetClass. *

* The returned ConversionExecutor is thread-safe and may safely be cached for use in client code. * @param id the id of the custom conversion executor (required) * @param sourceClass the source class to convert from (required) * @param targetClass the target class to convert to (required) * @return the executor that can execute instance type conversion, never null * @throws ConversionExecutorNotFoundException when no suitable conversion executor could be found */ public ConversionExecutor getConversionExecutor(String id, Class sourceClass, Class targetClass) throws ConversionExecutorNotFoundException; /** * Return all conversion executors capable of converting from the provided sourceClass. For * example, getConversionExecutor(String.class) would return all converters that convert from String to * some other Object. Mainly useful for adapting a set of converters to some other environment. * @param sourceClass the source class converting from * @return the conversion executors that can convert from that source class */ public Set getConversionExecutors(Class sourceClass); /** * Lookup a class by its well-known alias. For example, long for java.lang.Long * @param alias the class alias * @return the class, or null if no alias exists */ public Class getClassForAlias(String alias); }././@LongLink0000000000000000000000000000024100000000000011562 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-binding/src/main/java/org/springframework/binding/convert/ConversionExecutorNotFoundException.javalibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-binding/src/main/java/org/springframew0000644000000000000000000000317611360615644027730 0ustar /* * Copyright 2004-2008 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.springframework.binding.convert; /** * Thrown when a conversion executor could not be found in a conversion service. * * @see ConversionService#getConversionExecutor(Class, Class) * @author Keith Donald */ public class ConversionExecutorNotFoundException extends ConversionException { private Class sourceClass; private Class targetClass; /** * Creates a new conversion executor not found exception. * @param sourceClass the source type requested to convert from * @param targetClass the target type requested to convert to * @param message a descriptive message */ public ConversionExecutorNotFoundException(Class sourceClass, Class targetClass, String message) { super(message); this.sourceClass = sourceClass; this.targetClass = targetClass; } /** * Returns the source type requested to convert from. */ public Class getSourceClass() { return sourceClass; } /** * Returns the target type requested to convert to. */ public Class getTargetClass() { return targetClass; } } ././@LongLink0000000000000000000000000000020400000000000011561 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-binding/src/main/java/org/springframework/binding/convert/converters/libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-binding/src/main/java/org/springframew0000755000000000000000000000000011360615646027721 5ustar ././@LongLink0000000000000000000000000000022700000000000011566 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-binding/src/main/java/org/springframework/binding/convert/converters/StringToLocale.javalibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-binding/src/main/java/org/springframew0000644000000000000000000000232611360615644027724 0ustar /* * Copyright 2004-2008 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.springframework.binding.convert.converters; import java.util.Locale; import org.springframework.util.StringUtils; /** * Converts a String to a Locale using {@link StringUtils#parseLocaleString(String)}. * * @author Keith Donald */ public class StringToLocale extends StringToObject { public StringToLocale() { super(Locale.class); } public Object toObject(String string, Class objectClass) throws Exception { return StringUtils.parseLocaleString(string); } public String toString(Object object) throws Exception { Locale locale = (Locale) object; return locale.toString(); } }././@LongLink0000000000000000000000000000023300000000000011563 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-binding/src/main/java/org/springframework/binding/convert/converters/StringToBigDecimal.javalibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-binding/src/main/java/org/springframew0000644000000000000000000000220111360615632027711 0ustar /* * Copyright 2004-2008 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.springframework.binding.convert.converters; import java.math.BigDecimal; /** * Converts a String to a BigDecimal. * * @author Keith Donald */ public class StringToBigDecimal extends StringToObject { public StringToBigDecimal() { super(BigDecimal.class); } public Object toObject(String string, Class objectClass) throws Exception { return new BigDecimal(string); } public String toString(Object object) throws Exception { BigDecimal number = (BigDecimal) object; return number.toString(); } }././@LongLink0000000000000000000000000000022200000000000011561 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-binding/src/main/java/org/springframework/binding/convert/converters/Converter.javalibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-binding/src/main/java/org/springframew0000644000000000000000000000414211360615632027717 0ustar /* * Copyright 2004-2008 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.springframework.binding.convert.converters; /** * A converter is capable of converting a source object of type {@link #getSourceClass()} to a target type of type * {@link #getTargetClass()}. If the converter is a {@link TwoWayConverter}, it can also convert from the target back * to the source. *

* Implementations of this interface are thread-safe and can be shared. *

* @author Keith Donald */ public interface Converter { /** * The source class this converter can convert from. May be an interface or abstract type to allow this converter to * convert specific subclasses as well. * @return the source type */ public Class getSourceClass(); /** * The target class this converter can convert to. May be an interface or abstract type to allow this converter to * convert specific subclasses as well. * @return the target type */ public Class getTargetClass(); /** * Convert the provided source object argument to an instance of the specified target class. * @param source the source object to convert, which must be an instance of {@link #getSourceClass()} * @param targetClass the target class to convert the source to, which must be equal to or a specialization of * {@link #getTargetClass()} * @return the converted object, which must be an instance of the targetClass * @throws Exception an exception occurred performing the conversion */ public Object convertSourceToTargetClass(Object source, Class targetClass) throws Exception; }././@LongLink0000000000000000000000000000022500000000000011564 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-binding/src/main/java/org/springframework/binding/convert/converters/StringToEnum.javalibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-binding/src/main/java/org/springframew0000644000000000000000000000216411360615632027721 0ustar /* * Copyright 2004-2008 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.springframework.binding.convert.converters; /** * Converts from a textual representation to a {@link Enum}. The text should be the enum's label. * * @author Scott Andrews */ public class StringToEnum extends StringToObject { public StringToEnum() { super(Enum.class); } protected Object toObject(String string, Class targetClass) throws Exception { return Enum.valueOf(targetClass, string); } protected String toString(Object object) throws Exception { return object.toString(); } }././@LongLink0000000000000000000000000000022500000000000011564 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-binding/src/main/java/org/springframework/binding/convert/converters/ArrayToArray.javalibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-binding/src/main/java/org/springframew0000644000000000000000000000557011360615644027730 0ustar /* * Copyright 2004-2008 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.springframework.binding.convert.converters; import java.lang.reflect.Array; import org.springframework.binding.convert.ConversionExecutor; import org.springframework.binding.convert.ConversionService; /** * Special one-way converter that converts from a source array to a target array. Supports type conversion of the * individual array elements; for example, the ability to convert a String[] to an Integer[]. Mainly used internally by * {@link ConversionService} implementations. * * @author Keith Donald */ public class ArrayToArray implements Converter { private ConversionService conversionService; private ConversionExecutor elementConverter; /** * Creates a new array-to-array converter. * @param conversionService the service to use to lookup conversion executors for individual array elements * dynamically */ public ArrayToArray(ConversionService conversionService) { this.conversionService = conversionService; } /** * Creates a new array-to-array converter. * @param elementConverter a specific conversion executor to use to convert elements in the source array to elements * in the target array. */ public ArrayToArray(ConversionExecutor elementConverter) { this.elementConverter = elementConverter; } public Class getSourceClass() { return Object[].class; } public Class getTargetClass() { return Object[].class; } public Object convertSourceToTargetClass(Object source, Class targetClass) throws Exception { if (source == null) { return null; } Class sourceComponentType = source.getClass().getComponentType(); Class targetComponentType = targetClass.getComponentType(); int length = Array.getLength(source); Object targetArray = Array.newInstance(targetComponentType, length); ConversionExecutor converter = getElementConverter(sourceComponentType, targetComponentType); for (int i = 0; i < length; i++) { Object value = Array.get(source, i); Array.set(targetArray, i, converter.execute(value)); } return targetArray; } private ConversionExecutor getElementConverter(Class sourceComponentType, Class targetComponentType) { if (elementConverter != null) { return elementConverter; } else { return conversionService.getConversionExecutor(sourceComponentType, targetComponentType); } } } ././@LongLink0000000000000000000000000000023000000000000011560 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-binding/src/main/java/org/springframework/binding/convert/converters/TwoWayConverter.javalibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-binding/src/main/java/org/springframew0000644000000000000000000000265311360615632027724 0ustar /* * Copyright 2004-2008 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.springframework.binding.convert.converters; /** * A converter that can also convert from the target back to the source. * * @author Keith Donald */ public interface TwoWayConverter extends Converter { /** * Convert the provided target object argument to an instance of the specified source class. * @param target the target object to convert, which must be an instance of {@link #getTargetClass()} * @param sourceClass the source class to convert the target to, which must be equal to or a specialization of * {@link #getSourceClass()} * @return the converted object, which must be an instance of the sourceClass * @throws Exception an exception occurred performing the conversion */ public Object convertTargetToSourceClass(Object target, Class sourceClass) throws Exception; }././@LongLink0000000000000000000000000000022700000000000011566 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-binding/src/main/java/org/springframework/binding/convert/converters/NumberToNumber.javalibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-binding/src/main/java/org/springframew0000644000000000000000000000204011360615644027715 0ustar package org.springframework.binding.convert.converters; import org.springframework.util.NumberUtils; /** * A one-way converter that can convert from any JDK-standard Number implementation to any other JDK-standard Number * implementation. * * Support Number classes include byte, short, integer, float, double, long, big integer, big decimal. This class * delegates to {@link NumberUtils#convertNumberToTargetClass(Number, Class)} to perform the conversion. * * @see java.lang.Byte * @see java.lang.Short * @see java.lang.Integer * @see java.lang.Long * @see java.math.BigInteger * @see java.lang.Float * @see java.lang.Double * @see java.math.BigDecimal * * @author Keith Donald */ public class NumberToNumber implements Converter { public Class getSourceClass() { return Number.class; } public Class getTargetClass() { return Number.class; } public Object convertSourceToTargetClass(Object source, Class targetClass) throws Exception { return NumberUtils.convertNumberToTargetClass((Number) source, targetClass); } }././@LongLink0000000000000000000000000000023700000000000011567 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-binding/src/main/java/org/springframework/binding/convert/converters/CollectionToCollection.javalibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-binding/src/main/java/org/springframew0000644000000000000000000000630011360615636027721 0ustar package org.springframework.binding.convert.converters; import java.util.ArrayList; import java.util.Collection; import java.util.Iterator; import java.util.LinkedHashSet; import java.util.List; import java.util.Set; import java.util.SortedSet; import java.util.TreeSet; import org.springframework.binding.convert.ConversionExecutor; import org.springframework.binding.convert.ConversionService; import org.springframework.core.GenericCollectionTypeResolver; import org.springframework.core.JdkVersion; /** * A converter that can convert from one collection type to another. * * @author Keith Donald */ public class CollectionToCollection implements Converter { private ConversionService conversionService; private ConversionExecutor elementConverter; /** * Creates a new collection-to-collection converter * @param conversionService the conversion service to use to convert collection elements to add to the target * collection */ public CollectionToCollection(ConversionService conversionService) { this.conversionService = conversionService; } /** * Creates a new collection-to-collection converter * @param elementConverter a specific converter to use to convert collection elements added to the target collection */ public CollectionToCollection(ConversionExecutor elementConverter) { this.elementConverter = elementConverter; } public Class getSourceClass() { return Collection.class; } public Class getTargetClass() { return Collection.class; } public Object convertSourceToTargetClass(Object source, Class targetClass) throws Exception { if (source == null) { return null; } Class targetCollectionImpl = getCollectionImplClass(targetClass); Collection targetCollection = (Collection) targetCollectionImpl.getConstructor(null).newInstance(null); ConversionExecutor elementConverter = getElementConverter(source, targetClass); Collection sourceCollection = (Collection) source; Iterator it = sourceCollection.iterator(); while (it.hasNext()) { Object value = it.next(); if (elementConverter != null) { value = elementConverter.execute(value); } targetCollection.add(value); } return targetCollection; } // this code is duplicated in ArrayToCollection.java and ObjectToCollection too private Class getCollectionImplClass(Class targetClass) { if (targetClass.isInterface()) { if (List.class.equals(targetClass)) { return ArrayList.class; } else if (Set.class.equals(targetClass)) { return LinkedHashSet.class; } else if (SortedSet.class.equals(targetClass)) { return TreeSet.class; } else { throw new IllegalArgumentException("Unsupported collection interface [" + targetClass.getName() + "]"); } } else { return targetClass; } } private ConversionExecutor getElementConverter(Object source, Class targetClass) { if (elementConverter != null) { return elementConverter; } else { if (JdkVersion.isAtLeastJava15()) { Class elementType = GenericCollectionTypeResolver.getCollectionType(targetClass); if (elementType != null) { Class componentType = source.getClass().getComponentType(); return conversionService.getConversionExecutor(componentType, elementType); } } return null; } } }././@LongLink0000000000000000000000000000023200000000000011562 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-binding/src/main/java/org/springframework/binding/convert/converters/StringToCharacter.javalibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-binding/src/main/java/org/springframew0000644000000000000000000000205211360615640027714 0ustar /* * Copyright 2004-2008 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.springframework.binding.convert.converters; public class StringToCharacter extends StringToObject { public StringToCharacter() { super(Character.class); } protected Object toObject(String string, Class targetClass) throws Exception { return new Character(string.charAt(0)); } protected String toString(Object object) throws Exception { Character character = (Character) object; return character.toString(); } } ././@LongLink0000000000000000000000000000022600000000000011565 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-binding/src/main/java/org/springframework/binding/convert/converters/StringToShort.javalibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-binding/src/main/java/org/springframew0000644000000000000000000000215111360615646027722 0ustar /* * Copyright 2004-2008 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.springframework.binding.convert.converters; /** * Converts a String to an Short using {@link Short#valueOf(String)}. * * @author Keith Donald */ public class StringToShort extends StringToObject { public StringToShort() { super(Short.class); } public Object toObject(String string, Class objectClass) throws Exception { return Short.valueOf(string); } public String toString(Object object) throws Exception { Short number = (Short) object; return number.toString(); } }././@LongLink0000000000000000000000000000023200000000000011562 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-binding/src/main/java/org/springframework/binding/convert/converters/ArrayToCollection.javalibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-binding/src/main/java/org/springframew0000644000000000000000000001210611360615640027715 0ustar /* * Copyright 2004-2008 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.springframework.binding.convert.converters; import java.lang.reflect.Array; import java.lang.reflect.Constructor; import java.util.ArrayList; import java.util.Collection; import java.util.Iterator; import java.util.LinkedHashSet; import java.util.List; import java.util.Set; import java.util.SortedSet; import java.util.TreeSet; import org.springframework.binding.convert.ConversionExecutor; import org.springframework.binding.convert.ConversionService; import org.springframework.core.GenericCollectionTypeResolver; import org.springframework.core.JdkVersion; /** * Special converter that converts from a source array to a target collection. Supports the selection of an * "approximate" collection implementation when a target collection interface such as List.class is * specified. Supports type conversion of array elements when a concrete parameterized collection class is provided, * such as IntegerList.class. * * Note that type erasure prevents arbitrary access to generic collection element type information at runtime, * preventing the ability to convert elements for collections declared as properties. * * Mainly used internally by {@link ConversionService} implementations. * * @author Keith Donald */ public class ArrayToCollection implements TwoWayConverter { private ConversionService conversionService; private ConversionExecutor elementConverter; /** * Creates a new array to collection converter. * @param conversionService the conversion service to use to lookup the converter to apply to array elements added * to the target collection */ public ArrayToCollection(ConversionService conversionService) { this.conversionService = conversionService; } /** * Creates a new array to collection converter. * @param elementConverter A specific converter to use on array elements when adding them to the target collection */ public ArrayToCollection(ConversionExecutor elementConverter) { this.elementConverter = elementConverter; } public Class getSourceClass() { return Object[].class; } public Class getTargetClass() { return Collection.class; } public Object convertSourceToTargetClass(Object source, Class targetClass) throws Exception { if (source == null) { return null; } Class collectionImplClass = getCollectionImplClass(targetClass); Constructor constructor = collectionImplClass.getConstructor(null); Collection collection = (Collection) constructor.newInstance(null); ConversionExecutor converter = getArrayElementConverter(source, targetClass); int length = Array.getLength(source); for (int i = 0; i < length; i++) { Object value = Array.get(source, i); if (converter != null) { value = converter.execute(value); } collection.add(value); } return collection; } public Object convertTargetToSourceClass(Object target, Class sourceClass) throws Exception { if (target == null) { return null; } Collection collection = (Collection) target; Object array = Array.newInstance(sourceClass.getComponentType(), collection.size()); int i = 0; for (Iterator it = collection.iterator(); it.hasNext(); i++) { Object value = it.next(); if (value != null) { ConversionExecutor converter; if (elementConverter != null) { converter = elementConverter; } else { converter = conversionService.getConversionExecutor(value.getClass(), sourceClass .getComponentType()); } value = converter.execute(value); } Array.set(array, i, value); } return array; } private Class getCollectionImplClass(Class targetClass) { if (targetClass.isInterface()) { if (List.class.equals(targetClass)) { return ArrayList.class; } else if (Set.class.equals(targetClass)) { return LinkedHashSet.class; } else if (SortedSet.class.equals(targetClass)) { return TreeSet.class; } else { throw new IllegalArgumentException("Unsupported collection interface [" + targetClass.getName() + "]"); } } else { return targetClass; } } private ConversionExecutor getArrayElementConverter(Object source, Class targetClass) { if (elementConverter != null) { return elementConverter; } else { if (JdkVersion.isAtLeastJava15()) { Class elementType = GenericCollectionTypeResolver.getCollectionType(targetClass); if (elementType != null) { Class componentType = source.getClass().getComponentType(); return conversionService.getConversionExecutor(componentType, elementType); } } return null; } } }././@LongLink0000000000000000000000000000023000000000000011560 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-binding/src/main/java/org/springframework/binding/convert/converters/StringToInteger.javalibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-binding/src/main/java/org/springframew0000644000000000000000000000217011360615632027716 0ustar /* * Copyright 2004-2008 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.springframework.binding.convert.converters; /** * Converts a String to an Integer using {@link Integer#valueOf(String)}. * * @author Keith Donald */ public class StringToInteger extends StringToObject { public StringToInteger() { super(Integer.class); } public Object toObject(String string, Class objectClass) throws Exception { return Integer.valueOf(string); } public String toString(Object object) throws Exception { Integer number = (Integer) object; return number.toString(); } }././@LongLink0000000000000000000000000000023100000000000011561 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-binding/src/main/java/org/springframework/binding/convert/converters/ReverseConverter.javalibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-binding/src/main/java/org/springframew0000644000000000000000000000270211360615632027717 0ustar /* * Copyright 2004-2008 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.springframework.binding.convert.converters; /** * A converter that calls the {@link TwoWayConverter#convertTargetToSourceClass(Object, Class)} on a target * {@link TwoWayConverter} instance. Useful for invoking the "reverse" (target-to-source) conversion algorithm using the * standard Converter contract. * * @author Keith Donald */ public class ReverseConverter implements Converter { private TwoWayConverter converter; public ReverseConverter(TwoWayConverter converter) { this.converter = converter; } public Class getSourceClass() { return converter.getTargetClass(); } public Class getTargetClass() { return converter.getSourceClass(); } public Object convertSourceToTargetClass(Object source, Class targetClass) throws Exception { return converter.convertTargetToSourceClass(source, targetClass); } } ././@LongLink0000000000000000000000000000023000000000000011560 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-binding/src/main/java/org/springframework/binding/convert/converters/StringToBoolean.javalibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-binding/src/main/java/org/springframew0000644000000000000000000000477111360615634027731 0ustar /* * Copyright 2004-2008 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.springframework.binding.convert.converters; /** * Converts a textual representation of a boolean object to a Boolean instance. * * @author Keith Donald */ public class StringToBoolean extends StringToObject { private static final String VALUE_TRUE = "true"; private static final String VALUE_FALSE = "false"; private String trueString; private String falseString; /** * Create a text boolean converter that parses standard true and false strings. */ public StringToBoolean() { super(Boolean.class); } /** * Create a text to boolean converter that takes specific string representations of true and false into account. * @param trueString special true string to use * @param falseString special false string to use */ public StringToBoolean(String trueString, String falseString) { super(Boolean.class); this.trueString = trueString; this.falseString = falseString; } protected Object toObject(String string, Class targetClass) throws Exception { if (trueString != null && string.equals(trueString)) { return Boolean.TRUE; } else if (falseString != null && string.equals(falseString)) { return Boolean.FALSE; } else if (trueString == null && string.equals(VALUE_TRUE)) { return Boolean.TRUE; } else if (falseString == null && string.equals(VALUE_FALSE)) { return Boolean.FALSE; } else { throw new IllegalArgumentException("Invalid boolean value [" + string + "]"); } } protected String toString(Object object) throws Exception { Boolean value = (Boolean) object; if (Boolean.TRUE.equals(value)) { if (trueString != null) { return trueString; } else { return VALUE_TRUE; } } else if (Boolean.FALSE.equals(value)) { if (falseString != null) { return falseString; } else { return VALUE_FALSE; } } else { throw new IllegalArgumentException("Invalid boolean value [" + value + "]"); } } }././@LongLink0000000000000000000000000000023300000000000011563 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-binding/src/main/java/org/springframework/binding/convert/converters/StringToBigInteger.javalibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-binding/src/main/java/org/springframew0000644000000000000000000000220011360615642027711 0ustar /* * Copyright 2004-2008 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.springframework.binding.convert.converters; import java.math.BigInteger; /** * Converts a String to a BigInteger. * * @author Keith Donald */ public class StringToBigInteger extends StringToObject { public StringToBigInteger() { super(BigInteger.class); } public Object toObject(String string, Class objectClass) throws Exception { return new BigInteger(string); } public String toString(Object object) throws Exception { BigInteger number = (BigInteger) object; return number.toString(); } }././@LongLink0000000000000000000000000000023700000000000011567 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-binding/src/main/java/org/springframework/binding/convert/converters/InvalidFormatException.javalibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-binding/src/main/java/org/springframew0000644000000000000000000000442311360615644027724 0ustar /* * Copyright 2004-2008 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.springframework.binding.convert.converters; /** * Thrown when a formatted value is of the wrong form. * * @author Keith Donald */ public class InvalidFormatException extends RuntimeException { private String invalidValue; private String expectedFormat; /** * Create a new invalid format exception. * @param invalidValue the invalid value * @param expectedFormat the expected format */ public InvalidFormatException(String invalidValue, String expectedFormat) { this(invalidValue, expectedFormat, null); } /** * Create a new invalid format exception. * @param invalidValue the invalid value * @param expectedFormat the expected format * @param cause the underlying cause of this exception */ public InvalidFormatException(String invalidValue, String expectedFormat, Throwable cause) { super("Invalid format for value '" + invalidValue + "'; the expected format was '" + expectedFormat + "'", cause); this.invalidValue = invalidValue; this.expectedFormat = expectedFormat; } /** * Create a new invalid format exception. * @param invalidValue the invalid value * @param expectedFormat the expected format * @param message a descriptive message * @param cause the underlying cause of this exception */ public InvalidFormatException(String invalidValue, String expectedFormat, String message, Throwable cause) { super(message, cause); this.invalidValue = invalidValue; this.expectedFormat = expectedFormat; } /** * Returns the invalid value. */ public String getInvalidValue() { return invalidValue; } /** * Returns the expected format. */ public String getExpectedFormat() { return expectedFormat; } }././@LongLink0000000000000000000000000000024000000000000011561 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-binding/src/main/java/org/springframework/binding/convert/converters/FormattedStringToNumber.javalibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-binding/src/main/java/org/springframew0000644000000000000000000001077511360615634027732 0ustar /* * Copyright 2004-2008 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.springframework.binding.convert.converters; import java.text.DecimalFormat; import java.text.NumberFormat; import java.text.ParsePosition; import java.util.Locale; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.springframework.binding.format.DefaultNumberFormatFactory; import org.springframework.binding.format.NumberFormatFactory; import org.springframework.util.NumberUtils; /** * A converter for common number types such as integers and big decimals. Allows the configuration of an explicit number * pattern and locale. * * Works with a general purpose {@link DecimalFormat} instance returned by calling * {@link NumberFormat#getInstance(Locale)} by default. This instance supports parsing any number type generally and * will not perform special type-specific logic such as rounding or truncation. Subclasses may override. * * Will coerse parsed Numbers to the desired numberClass as necessary. If type-coersion results in an overflow * condition; for example, what can occur with a Long being coersed to a Short, an exception will be thrown. * * @see NumberFormat * @see DecimalFormat * * @author Keith Donald */ public class FormattedStringToNumber extends StringToObject { private static Log logger = LogFactory.getLog(FormattedStringToNumber.class); private NumberFormatFactory numberFormatFactory = new DefaultNumberFormatFactory(); private boolean lenient; public FormattedStringToNumber() { super(Number.class); } public FormattedStringToNumber(Class numberClass) { super(numberClass); } /** * Sets the factory that returns the {@link NumberFormat} instance that will format numbers handled by this * converter. * @param numberFormatFactory the number format factory */ public void setNumberFormatFactory(NumberFormatFactory numberFormatFactory) { this.numberFormatFactory = numberFormatFactory; } /** * If this Converter is "lenient" in parsing number strings. A lenient converter does not require that all * characters in the String be parsed successfully. Default is false. * @return the lenient flag */ public boolean getLenient() { return lenient; } /** * Sets if this Converter should parse leniently. * @param lenient the lenient flag */ public void setLenient(boolean lenient) { this.lenient = lenient; } protected Object toObject(String string, Class targetClass) throws Exception { ParsePosition parsePosition = new ParsePosition(0); NumberFormat format = numberFormatFactory.getNumberFormat(); Number number = format.parse(string, parsePosition); if (number == null) { // no object could be parsed throw new InvalidFormatException(string, getPattern(format)); } if (!lenient) { if (string.length() != parsePosition.getIndex()) { // indicates a part of the string that was not parsed; e.g. ".5" in 1234.5 when parsing an Integer throw new InvalidFormatException(string, getPattern(format)); } } return convertToNumberClass(number, targetClass); } protected String toString(Object object) throws Exception { Number number = (Number) object; return numberFormatFactory.getNumberFormat().format(number); } /** * Coerces the Number object returned by NumberFormat to the desired numberClass. Subclasses may override. * @param number the parsed number * @return the coersed number * @throws IllegalArgumentException when an overflow condition occurs during coersion */ protected Number convertToNumberClass(Number number, Class numberClass) throws IllegalArgumentException { return NumberUtils.convertNumberToTargetClass(number, numberClass); } // internal helpers private String getPattern(NumberFormat format) { if (format instanceof DecimalFormat) { return ((DecimalFormat) format).toPattern(); } else { logger.warn("Pattern string cannot be determined because NumberFormat is not a DecimalFormat"); return "defaultNumberFormatInstance"; } } }././@LongLink0000000000000000000000000000023400000000000011564 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-binding/src/main/java/org/springframework/binding/convert/converters/StringToLabeledEnum.javalibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-binding/src/main/java/org/springframew0000644000000000000000000000275511360615632027727 0ustar /* * Copyright 2004-2008 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.springframework.binding.convert.converters; import org.springframework.core.enums.LabeledEnum; import org.springframework.core.enums.LabeledEnumResolver; import org.springframework.core.enums.StaticLabeledEnumResolver; /** * Converts from a textual representation to a {@link LabeledEnum}. The text should be the enum's label. * * @author Keith Donald */ public class StringToLabeledEnum extends StringToObject { private LabeledEnumResolver labeledEnumResolver = StaticLabeledEnumResolver.instance(); public StringToLabeledEnum() { super(LabeledEnum.class); } protected Object toObject(String string, Class targetClass) throws Exception { return labeledEnumResolver.getLabeledEnumByLabel(targetClass, string); } protected String toString(Object object) throws Exception { LabeledEnum labeledEnum = (LabeledEnum) object; return labeledEnum.getLabel(); } }././@LongLink0000000000000000000000000000022700000000000011566 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-binding/src/main/java/org/springframework/binding/convert/converters/StringToDouble.javalibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-binding/src/main/java/org/springframew0000644000000000000000000000215711360615632027723 0ustar /* * Copyright 2004-2008 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.springframework.binding.convert.converters; /** * Converts a String to an Short using {@link Short#valueOf(String)}. * * @author Keith Donald */ public class StringToDouble extends StringToObject { public StringToDouble() { super(Double.class); } public Object toObject(String string, Class objectClass) throws Exception { return Double.valueOf(string); } public String toString(Object object) throws Exception { Double number = (Double) object; return number.toString(); } }././@LongLink0000000000000000000000000000022600000000000011565 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-binding/src/main/java/org/springframework/binding/convert/converters/StringToClass.javalibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-binding/src/main/java/org/springframew0000644000000000000000000000242311360615644027722 0ustar /* * Copyright 2004-2008 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.springframework.binding.convert.converters; import org.springframework.util.ClassUtils; /** * Converts a textual representation of a class object to a Class instance. * * @author Keith Donald */ public class StringToClass extends StringToObject { private ClassLoader classLoader; public StringToClass(ClassLoader classLoader) { super(Class.class); this.classLoader = classLoader; } public Object toObject(String string, Class objectClass) throws Exception { return ClassUtils.forName(string, classLoader); } public String toString(Object object) throws Exception { Class clazz = (Class) object; return clazz.getName(); } }././@LongLink0000000000000000000000000000024000000000000011561 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-binding/src/main/java/org/springframework/binding/convert/converters/PropertyEditorConverter.javalibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-binding/src/main/java/org/springframew0000644000000000000000000000321211360615632027714 0ustar /* * Copyright 2004-2008 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.springframework.binding.convert.converters; import java.beans.PropertyEditor; /** * Adapts a PropertyEditor to the {@link TwoWayConverter} interface. * @author Keith Donald */ public class PropertyEditorConverter extends StringToObject { private PropertyEditor propertyEditor; /** * Creates a new property editor converter. * @param propertyEditor the property editor to adapt * @param targetClass the {@link PropertyEditor#getValue() value class} this property editor converts to from string */ public PropertyEditorConverter(PropertyEditor propertyEditor, Class targetClass) { super(targetClass); this.propertyEditor = propertyEditor; } protected Object toObject(String string, Class targetClass) throws Exception { synchronized (propertyEditor) { propertyEditor.setAsText(string); return propertyEditor.getValue(); } } protected String toString(Object object) throws Exception { synchronized (propertyEditor) { propertyEditor.setValue(object); return propertyEditor.getAsText(); } } } ././@LongLink0000000000000000000000000000022000000000000011557 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-binding/src/main/java/org/springframework/binding/convert/converters/package.htmllibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-binding/src/main/java/org/springframew0000644000000000000000000000011011360615642027707 0ustar

Common Converter implementations.

././@LongLink0000000000000000000000000000022600000000000011565 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-binding/src/main/java/org/springframework/binding/convert/converters/StringToFloat.javalibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-binding/src/main/java/org/springframew0000644000000000000000000000215111360615640027714 0ustar /* * Copyright 2004-2008 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.springframework.binding.convert.converters; /** * Converts a String to an Short using {@link Short#valueOf(String)}. * * @author Keith Donald */ public class StringToFloat extends StringToObject { public StringToFloat() { super(Float.class); } public Object toObject(String string, Class objectClass) throws Exception { return Float.valueOf(string); } public String toString(Object object) throws Exception { Float number = (Float) object; return number.toString(); } }././@LongLink0000000000000000000000000000022500000000000011564 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-binding/src/main/java/org/springframework/binding/convert/converters/StringToByte.javalibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-binding/src/main/java/org/springframew0000644000000000000000000000210311360615636027716 0ustar /* * Copyright 2004-2008 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.springframework.binding.convert.converters; /** * Converts a String to a BigInteger. * * @author Keith Donald */ public class StringToByte extends StringToObject { public StringToByte() { super(Byte.class); } public Object toObject(String string, Class objectClass) throws Exception { return Byte.valueOf(string); } public String toString(Object object) throws Exception { Byte number = (Byte) object; return number.toString(); } }././@LongLink0000000000000000000000000000023300000000000011563 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-binding/src/main/java/org/springframework/binding/convert/converters/ObjectToCollection.javalibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-binding/src/main/java/org/springframew0000644000000000000000000000745711360615642027734 0ustar /* * Copyright 2004-2008 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.springframework.binding.convert.converters; import java.lang.reflect.Constructor; import java.util.ArrayList; import java.util.Collection; import java.util.LinkedHashSet; import java.util.List; import java.util.Set; import java.util.SortedSet; import java.util.TreeSet; import org.springframework.binding.convert.ConversionExecutor; import org.springframework.binding.convert.ConversionService; import org.springframework.core.GenericCollectionTypeResolver; import org.springframework.core.JdkVersion; /** * Special two-way converter that converts an object to an single-element collection. Supports type conversion of the * individual element with parameterized collection implementations. * * @author Keith Donald */ public class ObjectToCollection implements Converter { private ConversionService conversionService; private ConversionExecutor elementConverter; /** * Creates a new object to collection converter * @param conversionService the conversion service to lookup the converter to use to convert an object when adding * it to a target collection */ public ObjectToCollection(ConversionService conversionService) { this.conversionService = conversionService; } /** * Creates a new object to collection converter * @param elementConverter a specific converter to execute on an object when adding it to a target collection */ public ObjectToCollection(ConversionExecutor elementConverter) { this.elementConverter = elementConverter; } public Class getSourceClass() { return Object.class; } public Class getTargetClass() { return Collection.class; } public Object convertSourceToTargetClass(Object source, Class targetClass) throws Exception { if (source == null) { return null; } Class collectionImplClass = getCollectionImplClass(targetClass); Constructor constructor = collectionImplClass.getConstructor(null); Collection collection = (Collection) constructor.newInstance(null); ConversionExecutor converter = getElementConverter(source, targetClass); Object value; if (converter != null) { value = converter.execute(source); } else { value = source; } collection.add(value); return collection; } // this code is duplicated in ArrayToCollection and CollectionToCollection private Class getCollectionImplClass(Class targetClass) { if (targetClass.isInterface()) { if (List.class.equals(targetClass)) { return ArrayList.class; } else if (Set.class.equals(targetClass)) { return LinkedHashSet.class; } else if (SortedSet.class.equals(targetClass)) { return TreeSet.class; } else { throw new IllegalArgumentException("Unsupported collection interface [" + targetClass.getName() + "]"); } } else { return targetClass; } } private ConversionExecutor getElementConverter(Object source, Class targetClass) { if (elementConverter != null) { return elementConverter; } else { if (JdkVersion.isAtLeastJava15()) { Class elementType = GenericCollectionTypeResolver.getCollectionType(targetClass); if (elementType != null) { Class componentType = source.getClass().getComponentType(); return conversionService.getConversionExecutor(componentType, elementType); } } return null; } } }././@LongLink0000000000000000000000000000022700000000000011566 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-binding/src/main/java/org/springframework/binding/convert/converters/StringToObject.javalibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-binding/src/main/java/org/springframew0000644000000000000000000000307311360615642027722 0ustar /* * Copyright 2004-2008 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.springframework.binding.convert.converters; public abstract class StringToObject implements TwoWayConverter { private Class objectClass; public StringToObject(Class objectClass) { this.objectClass = objectClass; } public final Class getSourceClass() { return String.class; } public final Class getTargetClass() { return objectClass; } public final Object convertSourceToTargetClass(Object source, Class targetClass) throws Exception { String string = (String) source; if (string != null && string.length() > 0) { return toObject(string, targetClass); } else { return null; } } public final Object convertTargetToSourceClass(Object target, Class sourceClass) throws Exception { if (target != null) { return toString(target); } else { return ""; } } protected abstract Object toObject(String string, Class targetClass) throws Exception; protected abstract String toString(Object object) throws Exception; }././@LongLink0000000000000000000000000000022600000000000011565 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-binding/src/main/java/org/springframework/binding/convert/converters/ObjectToArray.javalibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-binding/src/main/java/org/springframew0000644000000000000000000000452711360615640027725 0ustar /* * Copyright 2004-2008 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.springframework.binding.convert.converters; import java.lang.reflect.Array; import org.springframework.binding.convert.ConversionExecutor; import org.springframework.binding.convert.ConversionService; /** * Special two-way converter that converts an object to an single-element array. Mainly used internally by * {@link ConversionService} implementations. * * @author Keith Donald */ public class ObjectToArray implements Converter { private ConversionService conversionService; private ConversionExecutor elementConverter; /** * Creates a new object to array converter. * @param conversionService the conversion service to resolve the converter to use to convert the object added to * the target array. */ public ObjectToArray(ConversionService conversionService) { this.conversionService = conversionService; } /** * Creates a new object to array converter. * @param elementConverter a specific converter to use to convert the object added to the target array. */ public ObjectToArray(ConversionExecutor elementConverter) { this.elementConverter = elementConverter; } public Class getSourceClass() { return Object.class; } public Class getTargetClass() { return Object[].class; } public Object convertSourceToTargetClass(Object source, Class targetClass) throws Exception { if (source == null) { return null; } Class componentType = targetClass.getComponentType(); Object array = Array.newInstance(componentType, 1); ConversionExecutor converter; if (elementConverter != null) { converter = elementConverter; } else { converter = conversionService.getConversionExecutor(source.getClass(), componentType); } Array.set(array, 0, converter.execute(source)); return array; } }././@LongLink0000000000000000000000000000022500000000000011564 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-binding/src/main/java/org/springframework/binding/convert/converters/StringToLong.javalibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-binding/src/main/java/org/springframew0000644000000000000000000000214111360615636027720 0ustar /* * Copyright 2004-2008 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.springframework.binding.convert.converters; /** * Converts a String to an Long using {@link Long#valueOf(String)}. * * @author Keith Donald */ public class StringToLong extends StringToObject { public StringToLong() { super(Long.class); } public Object toObject(String string, Class objectClass) throws Exception { return Long.valueOf(string); } public String toString(Object object) throws Exception { Long number = (Long) object; return number.toString(); } }././@LongLink0000000000000000000000000000022500000000000011564 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-binding/src/main/java/org/springframework/binding/convert/converters/StringToDate.javalibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-binding/src/main/java/org/springframew0000644000000000000000000000743011360615640027721 0ustar /* * Copyright 2004-2008 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.springframework.binding.convert.converters; import java.text.DateFormat; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Date; import java.util.Locale; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.springframework.context.i18n.LocaleContextHolder; import org.springframework.util.StringUtils; /** * A formatter for {@link Date} types. Allows the configuration of an explicit date pattern and locale. * @see SimpleDateFormat * @author Keith Donald */ public class StringToDate extends StringToObject { private static Log logger = LogFactory.getLog(StringToDate.class); /** * The default date pattern. */ private static final String DEFAULT_PATTERN = "yyyy-MM-dd"; private String pattern; private Locale locale; public StringToDate() { super(Date.class); } /** * The pattern to use to format date values. If not specified, the default pattern 'yyyy-MM-dd' is used. * @return the date formatting pattern */ public String getPattern() { return pattern; } /** * Sets the pattern to use to format date values. * @param pattern the date formatting pattern */ public void setPattern(String pattern) { this.pattern = pattern; } /** * The locale to use in formatting date values. If not specified, the locale of the current thread is used. * @see LocaleContextHolder#getLocale() * @return the locale */ public Locale getLocale() { return locale; } /** * Sets the locale to use in formatting date values. * @param locale the locale */ public void setLocale(Locale locale) { this.locale = locale; } public Object toObject(String string, Class targetClass) throws Exception { if (!StringUtils.hasText(string)) { return null; } DateFormat dateFormat = getDateFormat(); try { return dateFormat.parse(string); } catch (ParseException e) { throw new InvalidFormatException(string, getPattern(dateFormat), e); } } public String toString(Object target) throws Exception { Date date = (Date) target; if (date == null) { return ""; } return getDateFormat().format(date); } // subclassing hookings protected DateFormat getDateFormat() { Locale locale = determineLocale(this.locale); DateFormat format = DateFormat.getDateInstance(DateFormat.SHORT, locale); format.setLenient(false); if (format instanceof SimpleDateFormat) { String pattern = determinePattern(this.pattern); ((SimpleDateFormat) format).applyPattern(pattern); } else { logger.warn("Unable to apply format pattern '" + pattern + "'; Returned DateFormat is not a SimpleDateFormat"); } return format; } // internal helpers private String determinePattern(String pattern) { return pattern != null ? pattern : DEFAULT_PATTERN; } private Locale determineLocale(Locale locale) { return locale != null ? locale : LocaleContextHolder.getLocale(); } private String getPattern(DateFormat format) { if (format instanceof SimpleDateFormat) { return ((SimpleDateFormat) format).toPattern(); } else { logger.warn("Pattern string cannot be determined because DateFormat is not a SimpleDateFormat"); return "defaultDateFormatInstance"; } } }././@LongLink0000000000000000000000000000020500000000000011562 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-binding/src/main/java/org/springframework/binding/convert/package.htmllibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-binding/src/main/java/org/springframew0000644000000000000000000000014511360615634027720 0ustar

Core services for converting objects from one type to another.

././@LongLink0000000000000000000000000000020100000000000011556 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-binding/src/main/java/org/springframework/binding/convert/service/libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-binding/src/main/java/org/springframew0000755000000000000000000000000011360615644027717 5ustar ././@LongLink0000000000000000000000000000023600000000000011566 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-binding/src/main/java/org/springframework/binding/convert/service/StaticConversionExecutor.javalibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-binding/src/main/java/org/springframew0000644000000000000000000000744311360615644027731 0ustar /* * Copyright 2004-2008 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.springframework.binding.convert.service; import org.springframework.binding.convert.ConversionExecutionException; import org.springframework.binding.convert.ConversionExecutor; import org.springframework.binding.convert.converters.Converter; import org.springframework.core.style.ToStringCreator; import org.springframework.util.Assert; /** * A command object that is parameterized with the information necessary to perform a conversion of a source input to a * target output. *

* Specifically, encapsulates knowledge about how to convert source objects to a specific target type using a specific * converter. * * @author Keith Donald */ public class StaticConversionExecutor implements ConversionExecutor { /** * The source value type this executor will attempt to convert from. */ private final Class sourceClass; /** * The target value type this executor will attempt to convert to. */ private final Class targetClass; /** * The converter that will perform the conversion. */ private final Converter converter; /** * Creates a conversion executor. * @param sourceClass the source type that the converter will convert from * @param targetClass the target type that the converter will convert to * @param converter the converter that will perform the conversion */ public StaticConversionExecutor(Class sourceClass, Class targetClass, Converter converter) { Assert.notNull(sourceClass, "The source class is required"); Assert.notNull(targetClass, "The target class is required"); Assert.notNull(converter, "The converter is required"); this.sourceClass = sourceClass; this.targetClass = targetClass; this.converter = converter; } /** * Returns the source class of conversions performed by this executor. * @return the source class */ public Class getSourceClass() { return sourceClass; } /** * Returns the target class of conversions performed by this executor. * @return the target class */ public Class getTargetClass() { return targetClass; } /** * Returns the converter that will perform the conversion. * @return the converter */ public Converter getConverter() { return converter; } public Object execute(Object source) throws ConversionExecutionException { if (source != null && !sourceClass.isInstance(source)) { throw new ConversionExecutionException(source, getSourceClass(), getTargetClass(), "Source object " + source + " to convert is expected to be an instance of [" + getSourceClass().getName() + "]"); } try { return converter.convertSourceToTargetClass(source, targetClass); } catch (Exception e) { throw new ConversionExecutionException(source, getSourceClass(), getTargetClass(), e); } } public boolean equals(Object o) { if (!(o instanceof StaticConversionExecutor)) { return false; } StaticConversionExecutor other = (StaticConversionExecutor) o; return sourceClass.equals(other.sourceClass) && targetClass.equals(other.targetClass); } public int hashCode() { return sourceClass.hashCode() + targetClass.hashCode(); } public String toString() { return new ToStringCreator(this).append("sourceClass", sourceClass).append("targetClass", targetClass) .toString(); } }././@LongLink0000000000000000000000000000023600000000000011566 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-binding/src/main/java/org/springframework/binding/convert/service/GenericConversionService.javalibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-binding/src/main/java/org/springframew0000644000000000000000000005461511360615636027735 0ustar /* * Copyright 2004-2008 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.springframework.binding.convert.service; import java.lang.reflect.Modifier; import java.util.Collection; import java.util.Collections; import java.util.HashMap; import java.util.HashSet; import java.util.Iterator; import java.util.LinkedList; import java.util.Map; import java.util.Set; import org.springframework.binding.convert.ConversionException; import org.springframework.binding.convert.ConversionExecutor; import org.springframework.binding.convert.ConversionExecutorNotFoundException; import org.springframework.binding.convert.ConversionService; import org.springframework.binding.convert.converters.ArrayToArray; import org.springframework.binding.convert.converters.ArrayToCollection; import org.springframework.binding.convert.converters.CollectionToCollection; import org.springframework.binding.convert.converters.Converter; import org.springframework.binding.convert.converters.ObjectToArray; import org.springframework.binding.convert.converters.ObjectToCollection; import org.springframework.binding.convert.converters.ReverseConverter; import org.springframework.binding.convert.converters.TwoWayConverter; import org.springframework.util.Assert; /** * Base implementation of a conversion service. Initially empty, e.g. no converters are registered by default. * * @author Keith Donald */ public class GenericConversionService implements ConversionService { /** * An indexed map of converters. Each entry key is a source class that can be converted from, and each entry value * is a map of target classes that can be converted to, ultimately mapping to a specific converter that can perform * the source->target conversion. */ private final Map sourceClassConverters = new HashMap(); /** * A map of custom converters. Custom converters are assigned a unique identifier that can be used to lookup the * converter. This allows multiple converters for the same source->target class to be registered. */ private final Map customConverters = new HashMap(); /** * Indexes classes by well-known aliases. */ private final Map aliasMap = new HashMap(); /** * An optional parent conversion service. */ private ConversionService parent; /** * Returns the parent of this conversion service. Could be null. */ public ConversionService getParent() { return parent; } /** * Set the parent of this conversion service. This is optional. */ public void setParent(ConversionService parent) { this.parent = parent; } /** * Add given converter to this conversion service. * @param converter the converter */ public void addConverter(Converter converter) { Class sourceClass = converter.getSourceClass(); Class targetClass = converter.getTargetClass(); Map sourceMap = getSourceMap(sourceClass); sourceMap.put(targetClass, converter); if (converter instanceof TwoWayConverter) { sourceMap = getSourceMap(targetClass); sourceMap.put(sourceClass, new ReverseConverter((TwoWayConverter) converter)); } } /** * Add given custom converter to this conversion service. * @param id the id of the custom converter instance * @param converter the converter */ public void addConverter(String id, Converter converter) { customConverters.put(id, converter); } /** * Add an alias for given target type. */ public void addAlias(String alias, Class targetType) { aliasMap.put(alias, targetType); } private Map getSourceMap(Class sourceClass) { Map sourceMap = (Map) sourceClassConverters.get(sourceClass); if (sourceMap == null) { sourceMap = new HashMap(); sourceClassConverters.put(sourceClass, sourceMap); } return sourceMap; } public ConversionExecutor getConversionExecutor(Class sourceClass, Class targetClass) throws ConversionExecutorNotFoundException { Assert.notNull(sourceClass, "The source class to convert from is required"); Assert.notNull(targetClass, "The target class to convert to is required"); sourceClass = convertToWrapperClassIfNecessary(sourceClass); targetClass = convertToWrapperClassIfNecessary(targetClass); if (targetClass.isAssignableFrom(sourceClass)) { return new StaticConversionExecutor(sourceClass, targetClass, new NoOpConverter(sourceClass, targetClass)); } // special handling for arrays since they are not indexable classes if (sourceClass.isArray()) { if (targetClass.isArray()) { return new StaticConversionExecutor(sourceClass, targetClass, new ArrayToArray(this)); } else if (Collection.class.isAssignableFrom(targetClass)) { if (!targetClass.isInterface() && Modifier.isAbstract(targetClass.getModifiers())) { throw new IllegalArgumentException("Conversion target class [" + targetClass.getName() + "] is invalid; cannot convert to abstract collection types--" + "request an interface or concrete implementation instead"); } return new StaticConversionExecutor(sourceClass, targetClass, new ArrayToCollection(this)); } } if (targetClass.isArray()) { if (Collection.class.isAssignableFrom(sourceClass)) { Converter collectionToArray = new ReverseConverter(new ArrayToCollection(this)); return new StaticConversionExecutor(sourceClass, targetClass, collectionToArray); } else { return new StaticConversionExecutor(sourceClass, targetClass, new ObjectToArray(this)); } } Converter converter = findRegisteredConverter(sourceClass, targetClass); if (converter != null) { // we found a converter return new StaticConversionExecutor(sourceClass, targetClass, converter); } else { if (parent != null) { // try the parent return parent.getConversionExecutor(sourceClass, targetClass); } else { throw new ConversionExecutorNotFoundException(sourceClass, targetClass, "No ConversionExecutor found for converting from sourceClass [" + sourceClass.getName() + "] to target class [" + targetClass.getName() + "]"); } } } public ConversionExecutor getConversionExecutor(String id, Class sourceClass, Class targetClass) throws ConversionExecutorNotFoundException { Assert.hasText(id, "The id of the custom converter is required"); Assert.notNull(sourceClass, "The source class to convert from is required"); Assert.notNull(targetClass, "The target class to convert to is required"); Converter converter = (Converter) customConverters.get(id); if (converter == null) { if (parent != null) { return parent.getConversionExecutor(id, sourceClass, targetClass); } else { throw new ConversionExecutorNotFoundException(sourceClass, targetClass, "No custom ConversionExecutor found with id '" + id + "' for converting from sourceClass [" + sourceClass.getName() + "] to targetClass [" + targetClass.getName() + "]"); } } sourceClass = convertToWrapperClassIfNecessary(sourceClass); targetClass = convertToWrapperClassIfNecessary(targetClass); if (sourceClass.isArray()) { Class sourceComponentType = sourceClass.getComponentType(); if (targetClass.isArray()) { Class targetComponentType = targetClass.getComponentType(); if (converter.getSourceClass().isAssignableFrom(sourceComponentType)) { if (!converter.getTargetClass().isAssignableFrom(targetComponentType)) { throw new ConversionExecutorNotFoundException(sourceClass, targetClass, "Custom ConversionExecutor with id '" + id + "' cannot convert from an array storing elements of type [" + sourceComponentType.getName() + "] to an array of storing elements of type [" + targetComponentType.getName() + "]"); } ConversionExecutor elementConverter = new StaticConversionExecutor(sourceComponentType, targetComponentType, converter); return new StaticConversionExecutor(sourceClass, targetClass, new ArrayToArray(elementConverter)); } else if (converter.getTargetClass().isAssignableFrom(sourceComponentType) && converter instanceof TwoWayConverter) { TwoWayConverter twoWay = (TwoWayConverter) converter; ConversionExecutor elementConverter = new StaticConversionExecutor(sourceComponentType, targetComponentType, new ReverseConverter(twoWay)); return new StaticConversionExecutor(sourceClass, targetClass, new ArrayToArray(elementConverter)); } else { throw new ConversionExecutorNotFoundException(sourceClass, targetClass, "Custom ConversionExecutor with id '" + id + "' cannot convert from an array storing elements of type [" + sourceComponentType.getName() + "] to an array storing elements of type [" + targetComponentType.getName() + "]"); } } else if (Collection.class.isAssignableFrom(targetClass)) { if (!targetClass.isInterface() && Modifier.isAbstract(targetClass.getModifiers())) { throw new IllegalArgumentException("Conversion target class [" + targetClass.getName() + "] is invalid; cannot convert to abstract collection types--" + "request an interface or concrete implementation instead"); } if (converter.getSourceClass().isAssignableFrom(sourceComponentType)) { // type erasure has prevented us from getting the concrete type, this is best we can do for now ConversionExecutor elementConverter = new StaticConversionExecutor(sourceComponentType, converter .getTargetClass(), converter); return new StaticConversionExecutor(sourceClass, targetClass, new ArrayToCollection( elementConverter)); } else if (converter.getTargetClass().isAssignableFrom(sourceComponentType) && converter instanceof TwoWayConverter) { TwoWayConverter twoWay = (TwoWayConverter) converter; ConversionExecutor elementConverter = new StaticConversionExecutor(sourceComponentType, converter .getSourceClass(), new ReverseConverter(twoWay)); return new StaticConversionExecutor(sourceClass, targetClass, new ArrayToCollection( elementConverter)); } else { throw new ConversionExecutorNotFoundException(sourceClass, targetClass, "Custom ConversionExecutor with id '" + id + "' cannot convert from array an storing elements type [" + sourceComponentType.getName() + "] to a collection of type [" + targetClass.getName() + "]"); } } } if (targetClass.isArray()) { Class targetComponentType = targetClass.getComponentType(); if (Collection.class.isAssignableFrom(sourceClass)) { // type erasure limits us here as well if (converter.getTargetClass().isAssignableFrom(targetComponentType)) { ConversionExecutor elementConverter = new StaticConversionExecutor(converter.getSourceClass(), targetComponentType, converter); Converter collectionToArray = new ReverseConverter(new ArrayToCollection(elementConverter)); return new StaticConversionExecutor(sourceClass, targetClass, collectionToArray); } else if (converter.getSourceClass().isAssignableFrom(targetComponentType) && converter instanceof TwoWayConverter) { TwoWayConverter twoWay = (TwoWayConverter) converter; ConversionExecutor elementConverter = new StaticConversionExecutor(converter.getTargetClass(), targetComponentType, new ReverseConverter(twoWay)); Converter collectionToArray = new ReverseConverter(new ArrayToCollection(elementConverter)); return new StaticConversionExecutor(sourceClass, targetClass, collectionToArray); } else { throw new ConversionExecutorNotFoundException(sourceClass, targetClass, "Custom ConversionExecutor with id '" + id + "' cannot convert from collection of type [" + sourceClass.getName() + "] to an array storing elements of type [" + targetComponentType.getName() + "]"); } } else { if (converter.getSourceClass().isAssignableFrom(sourceClass)) { if (!converter.getTargetClass().isAssignableFrom(targetComponentType)) { throw new ConversionExecutorNotFoundException(sourceClass, targetClass, "Custom ConversionExecutor with id '" + id + "' cannot convert from sourceClass [" + sourceClass.getName() + "] to array holding elements of type [" + targetComponentType.getName() + "]"); } ConversionExecutor elementConverter = new StaticConversionExecutor(sourceClass, targetComponentType, converter); return new StaticConversionExecutor(sourceClass, targetClass, new ObjectToArray(elementConverter)); } else if (converter.getTargetClass().isAssignableFrom(sourceClass) && converter instanceof TwoWayConverter) { if (!converter.getSourceClass().isAssignableFrom(targetComponentType)) { throw new ConversionExecutorNotFoundException(sourceClass, targetClass, "Custom ConversionExecutor with id '" + id + "' cannot convert from sourceClass [" + sourceClass.getName() + "] to array holding elements of type [" + targetComponentType.getName() + "]"); } TwoWayConverter twoWay = (TwoWayConverter) converter; ConversionExecutor elementConverter = new StaticConversionExecutor(sourceClass, targetComponentType, new ReverseConverter(twoWay)); return new StaticConversionExecutor(sourceClass, targetClass, new ObjectToArray(elementConverter)); } } } if (Collection.class.isAssignableFrom(targetClass)) { if (Collection.class.isAssignableFrom(sourceClass)) { ConversionExecutor elementConverter; // type erasure forces us to do runtime checks of list elements if (converter instanceof TwoWayConverter) { elementConverter = new TwoWayCapableConversionExecutor(converter.getSourceClass(), converter .getTargetClass(), (TwoWayConverter) converter); } else { elementConverter = new StaticConversionExecutor(converter.getSourceClass(), converter .getTargetClass(), converter); } return new StaticConversionExecutor(sourceClass, targetClass, new CollectionToCollection( elementConverter)); } else { ConversionExecutor elementConverter; // type erasure forces us to do runtime checks of list elements if (converter instanceof TwoWayConverter) { elementConverter = new TwoWayCapableConversionExecutor(sourceClass, converter.getTargetClass(), (TwoWayConverter) converter); } else { elementConverter = new StaticConversionExecutor(sourceClass, converter.getTargetClass(), converter); } if (!Collection.class.isAssignableFrom(converter.getTargetClass())) { elementConverter = new StaticConversionExecutor(sourceClass, targetClass, new ObjectToCollection( elementConverter)); } return elementConverter; } } if (converter.getSourceClass().isAssignableFrom(sourceClass)) { if (!converter.getTargetClass().isAssignableFrom(targetClass)) { throw new ConversionExecutorNotFoundException(sourceClass, targetClass, "Custom ConversionExecutor with id '" + id + "' cannot convert from sourceClass [" + sourceClass.getName() + "] to targetClass [" + targetClass.getName() + "]"); } return new StaticConversionExecutor(sourceClass, targetClass, converter); } else if (converter.getTargetClass().isAssignableFrom(sourceClass) && converter instanceof TwoWayConverter) { if (!converter.getSourceClass().isAssignableFrom(targetClass)) { throw new ConversionExecutorNotFoundException(sourceClass, targetClass, "Custom ConversionExecutor with id '" + id + "' cannot convert from sourceClass [" + sourceClass.getName() + "] to targetClass [" + targetClass.getName() + "]"); } TwoWayConverter twoWay = (TwoWayConverter) converter; return new StaticConversionExecutor(sourceClass, targetClass, new ReverseConverter(twoWay)); } else { throw new ConversionExecutorNotFoundException(sourceClass, targetClass, "Custom ConversionExecutor with id '" + id + "' cannot convert from sourceClass [" + sourceClass.getName() + "] to targetClass [" + targetClass.getName() + "]"); } } private Converter findRegisteredConverter(Class sourceClass, Class targetClass) { if (sourceClass.isInterface()) { LinkedList classQueue = new LinkedList(); classQueue.addFirst(sourceClass); while (!classQueue.isEmpty()) { Class currentClass = (Class) classQueue.removeLast(); Map sourceTargetConverters = findConvertersForSource(currentClass); Converter converter = findTargetConverter(sourceTargetConverters, targetClass); if (converter != null) { return converter; } Class[] interfaces = currentClass.getInterfaces(); for (int i = 0; i < interfaces.length; i++) { classQueue.addFirst(interfaces[i]); } } Map objectConverters = findConvertersForSource(Object.class); return findTargetConverter(objectConverters, targetClass); } else { LinkedList classQueue = new LinkedList(); classQueue.addFirst(sourceClass); while (!classQueue.isEmpty()) { Class currentClass = (Class) classQueue.removeLast(); Map sourceTargetConverters = findConvertersForSource(currentClass); Converter converter = findTargetConverter(sourceTargetConverters, targetClass); if (converter != null) { return converter; } if (currentClass.getSuperclass() != null) { classQueue.addFirst(currentClass.getSuperclass()); } Class[] interfaces = currentClass.getInterfaces(); for (int i = 0; i < interfaces.length; i++) { classQueue.addFirst(interfaces[i]); } } return null; } } public Object executeConversion(Object source, Class targetClass) throws ConversionException { if (source != null) { ConversionExecutor conversionExecutor = getConversionExecutor(source.getClass(), targetClass); return conversionExecutor.execute(source); } else { return null; } } public Object executeConversion(String converterId, Object source, Class targetClass) throws ConversionException { if (source != null) { ConversionExecutor conversionExecutor = getConversionExecutor(converterId, source.getClass(), targetClass); return conversionExecutor.execute(source); } else { return null; } } public Class getClassForAlias(String name) throws IllegalArgumentException { Class clazz = (Class) aliasMap.get(name); if (clazz != null) { return clazz; } else { if (parent != null) { return parent.getClassForAlias(name); } else { return null; } } } // subclassing support public Set getConversionExecutors(Class sourceClass) { Set parentExecutors; if (parent != null) { parentExecutors = parent.getConversionExecutors(sourceClass); } else { parentExecutors = Collections.EMPTY_SET; } Map sourceMap = getSourceMap(sourceClass); if (parentExecutors.isEmpty() && sourceMap.isEmpty()) { return Collections.EMPTY_SET; } Set entries = sourceMap.entrySet(); Set conversionExecutors = new HashSet(entries.size() + parentExecutors.size()); for (Iterator it = entries.iterator(); it.hasNext();) { Map.Entry entry = (Map.Entry) it.next(); Class targetClass = (Class) entry.getKey(); Converter converter = (Converter) entry.getValue(); conversionExecutors.add(new StaticConversionExecutor(sourceClass, targetClass, converter)); } conversionExecutors.addAll(parentExecutors); return conversionExecutors; } /** * Returns an indexed map of converters. Each entry key is a source class that can be converted from, and each entry * value is a map of target classes that can be convertered to, ultimately mapping to a specific converter that can * perform the source->target conversion. */ protected Map getSourceClassConverters() { return sourceClassConverters; } /** * Returns a registered converter object * @param sourceClass the source class * @param targetClass the target class */ protected Converter getConverter(Class sourceClass, Class targetClass) { Map sourceTargetConverters = findConvertersForSource(sourceClass); return findTargetConverter(sourceTargetConverters, targetClass); } // internal helpers private Map findConvertersForSource(Class sourceClass) { Map sourceConverters = (Map) sourceClassConverters.get(sourceClass); return sourceConverters != null ? sourceConverters : Collections.EMPTY_MAP; } private Converter findTargetConverter(Map sourceTargetConverters, Class targetClass) { if (sourceTargetConverters.isEmpty()) { return null; } if (targetClass.isInterface()) { LinkedList classQueue = new LinkedList(); classQueue.addFirst(targetClass); while (!classQueue.isEmpty()) { Class currentClass = (Class) classQueue.removeLast(); Converter converter = (Converter) sourceTargetConverters.get(currentClass); if (converter != null) { return converter; } Class[] interfaces = currentClass.getInterfaces(); for (int i = 0; i < interfaces.length; i++) { classQueue.addFirst(interfaces[i]); } } return (Converter) sourceTargetConverters.get(Object.class); } else { LinkedList classQueue = new LinkedList(); classQueue.addFirst(targetClass); while (!classQueue.isEmpty()) { Class currentClass = (Class) classQueue.removeLast(); Converter converter = (Converter) sourceTargetConverters.get(currentClass); if (converter != null) { return converter; } if (currentClass.getSuperclass() != null) { classQueue.addFirst(currentClass.getSuperclass()); } Class[] interfaces = currentClass.getInterfaces(); for (int i = 0; i < interfaces.length; i++) { classQueue.addFirst(interfaces[i]); } } return null; } } private Class convertToWrapperClassIfNecessary(Class targetType) { if (targetType.isPrimitive()) { if (targetType.equals(int.class)) { return Integer.class; } else if (targetType.equals(short.class)) { return Short.class; } else if (targetType.equals(long.class)) { return Long.class; } else if (targetType.equals(float.class)) { return Float.class; } else if (targetType.equals(double.class)) { return Double.class; } else if (targetType.equals(byte.class)) { return Byte.class; } else if (targetType.equals(boolean.class)) { return Boolean.class; } else if (targetType.equals(char.class)) { return Character.class; } else { throw new IllegalStateException("Should never happen - primitive type is not a primitive?"); } } else { return targetType; } } }././@LongLink0000000000000000000000000000024500000000000011566 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-binding/src/main/java/org/springframework/binding/convert/service/TwoWayCapableConversionExecutor.javalibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-binding/src/main/java/org/springframew0000644000000000000000000000545311360615636027731 0ustar /* * Copyright 2004-2007 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.springframework.binding.convert.service; import org.springframework.binding.convert.ConversionExecutionException; import org.springframework.binding.convert.ConversionExecutor; import org.springframework.binding.convert.converters.TwoWayConverter; /** * A special conversion executor used by {@link DefaultConversionService} that can dynamically resolve whether to do a * forward or "reverse" conversion using a {@link TwoWayConverter} based on the type of the object passed in. * * Used in conjunction with custom converters to support dynamic conversion of collection elements. */ class TwoWayCapableConversionExecutor implements ConversionExecutor { private Class sourceClass; private Class targetClass; private TwoWayConverter converter; /** * Creates a new two way conversion executor. * @param sourceClass the source class to convert to (or from) * @param targetClass the target class to convert from (or to) * @param converter the two way converter */ public TwoWayCapableConversionExecutor(Class sourceClass, Class targetClass, TwoWayConverter converter) { this.sourceClass = sourceClass; this.targetClass = targetClass; this.converter = converter; } public Class getSourceClass() { return sourceClass; } public Class getTargetClass() { return targetClass; } public Object execute(Object source) throws ConversionExecutionException { if (source == null || converter.getSourceClass().isInstance(source)) { try { return converter.convertSourceToTargetClass(source, targetClass); } catch (Exception e) { throw new ConversionExecutionException(source, getSourceClass(), getTargetClass(), e); } } else if (converter.getTargetClass().isInstance(source)) { try { return converter.convertTargetToSourceClass(source, sourceClass); } catch (Exception e) { throw new ConversionExecutionException(source, converter.getTargetClass(), getSourceClass(), e); } } else { throw new ConversionExecutionException(source, getSourceClass(), getTargetClass(), "Source object " + source + " to convert is expected to be an instance of [" + converter.getSourceClass().getName() + "] or [" + converter.getTargetClass().getName() + "]"); } } }././@LongLink0000000000000000000000000000023600000000000011566 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-binding/src/main/java/org/springframework/binding/convert/service/DefaultConversionService.javalibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-binding/src/main/java/org/springframew0000644000000000000000000000766111360615632027730 0ustar /* * Copyright 2004-2008 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.springframework.binding.convert.service; import java.math.BigDecimal; import java.math.BigInteger; import java.util.Date; import java.util.Locale; import org.springframework.binding.convert.converters.CollectionToCollection; import org.springframework.binding.convert.converters.NumberToNumber; import org.springframework.binding.convert.converters.ObjectToCollection; import org.springframework.binding.convert.converters.StringToBigDecimal; import org.springframework.binding.convert.converters.StringToBigInteger; import org.springframework.binding.convert.converters.StringToBoolean; import org.springframework.binding.convert.converters.StringToByte; import org.springframework.binding.convert.converters.StringToCharacter; import org.springframework.binding.convert.converters.StringToDate; import org.springframework.binding.convert.converters.StringToDouble; import org.springframework.binding.convert.converters.StringToEnum; import org.springframework.binding.convert.converters.StringToFloat; import org.springframework.binding.convert.converters.StringToInteger; import org.springframework.binding.convert.converters.StringToLabeledEnum; import org.springframework.binding.convert.converters.StringToLocale; import org.springframework.binding.convert.converters.StringToLong; import org.springframework.binding.convert.converters.StringToShort; import org.springframework.core.enums.LabeledEnum; import org.springframework.util.ClassUtils; /** * Default, local implementation of a conversion service. Will automatically register from string converters for * a number of standard Java types like Class, Number, Boolean and so on. * * @author Keith Donald */ public class DefaultConversionService extends GenericConversionService { /** * Creates a new default conversion service, installing the default converters. */ public DefaultConversionService() { addDefaultConverters(); addDefaultAliases(); } /** * Add all default converters to the conversion service. */ protected void addDefaultConverters() { addConverter(new StringToByte()); addConverter(new StringToBoolean()); addConverter(new StringToCharacter()); addConverter(new StringToShort()); addConverter(new StringToInteger()); addConverter(new StringToLong()); addConverter(new StringToFloat()); addConverter(new StringToDouble()); addConverter(new StringToBigInteger()); addConverter(new StringToBigDecimal()); addConverter(new StringToLocale()); addConverter(new StringToDate()); addConverter(new StringToLabeledEnum()); addConverter(new NumberToNumber()); addConverter(new ObjectToCollection(this)); addConverter(new CollectionToCollection(this)); if (ClassUtils.isPresent("java.lang.Enum", this.getClass().getClassLoader())) { addConverter(new StringToEnum()); } } protected void addDefaultAliases() { addAlias("string", String.class); addAlias("byte", Byte.class); addAlias("boolean", Boolean.class); addAlias("character", Character.class); addAlias("short", Short.class); addAlias("integer", Integer.class); addAlias("long", Long.class); addAlias("float", Float.class); addAlias("double", Double.class); addAlias("bigInteger", BigInteger.class); addAlias("bigDecimal", BigDecimal.class); addAlias("locale", Locale.class); addAlias("date", Date.class); addAlias("labeledEnum", LabeledEnum.class); } }././@LongLink0000000000000000000000000000021500000000000011563 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-binding/src/main/java/org/springframework/binding/convert/service/package.htmllibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-binding/src/main/java/org/springframew0000644000000000000000000000014111360615640027711 0ustar

Contains the implementation of the type ConversionService.

././@LongLink0000000000000000000000000000022300000000000011562 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-binding/src/main/java/org/springframework/binding/convert/service/NoOpConverter.javalibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-binding/src/main/java/org/springframew0000644000000000000000000000314411360615634027722 0ustar /* * Copyright 2004-2008 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.springframework.binding.convert.service; import org.springframework.binding.convert.converters.Converter; /** * Package private converter that is a "no op". * * @author Keith Donald */ class NoOpConverter implements Converter { private Class sourceClass; private Class targetClass; /** * Create a "no op" converter from given source to given target class. */ public NoOpConverter(Class sourceClass, Class targetClass) { this.sourceClass = sourceClass; this.targetClass = targetClass; } public Class getSourceClass() { return sourceClass; } public Class getTargetClass() { return targetClass; } public Object convertSourceToTargetClass(Object source, Class targetClass) throws Exception { return source; } public boolean isTwoWay() { return true; } public Object convertTargetToSourceClass(Object target, Class sourceClass) throws Exception, UnsupportedOperationException { return target; } }././@LongLink0000000000000000000000000000024600000000000011567 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-binding/src/main/java/org/springframework/binding/convert/service/RuntimeBindingConversionExecutor.javalibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-binding/src/main/java/org/springframew0000644000000000000000000000463211360615634027725 0ustar /* * Copyright 2004-2008 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.springframework.binding.convert.service; import org.springframework.binding.convert.ConversionExecutionException; import org.springframework.binding.convert.ConversionExecutor; import org.springframework.binding.convert.ConversionService; import org.springframework.util.Assert; /** * A conversion executor that doesn't resolve its converter until its time to perform a conversion. * @author Keith Donald */ public class RuntimeBindingConversionExecutor implements ConversionExecutor { private Class targetClass; private ConversionService conversionService; /** * Creates a new runtime binding conversion executor. * @param targetClass the target type to convert to * @param conversionService the conversion service to get converters from */ public RuntimeBindingConversionExecutor(Class targetClass, ConversionService conversionService) { Assert.notNull(targetClass, "The target class of the conversion is required"); Assert.notNull(conversionService, "The conversion service is required"); this.targetClass = targetClass; this.conversionService = conversionService; } public Class getSourceClass() { return null; } public Class getTargetClass() { return targetClass; } public boolean equals(Object obj) { if (!(obj instanceof RuntimeBindingConversionExecutor)) { return false; } RuntimeBindingConversionExecutor o = (RuntimeBindingConversionExecutor) obj; return targetClass.equals(o.targetClass); } public int hashCode() { return targetClass.hashCode(); } public Object execute(Object source) throws ConversionExecutionException { return execute(source, null); } public Object execute(Object source, Object context) throws ConversionExecutionException { return conversionService.getConversionExecutor(source.getClass(), targetClass).execute(source); } }././@LongLink0000000000000000000000000000022000000000000011557 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-binding/src/main/java/org/springframework/binding/convert/ConversionExecutor.javalibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-binding/src/main/java/org/springframew0000644000000000000000000000271011360615634027720 0ustar /* * Copyright 2004-2008 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.springframework.binding.convert; /** * A command object that is parameterized with the information necessary to perform a conversion of a source input to a * target output. Encapsulates knowledge about how to convert source objects to a specific target type using a specific * converter. * * @author Keith Donald */ public interface ConversionExecutor { /** * Returns the source class of conversions performed by this executor. * @return the source class */ public Class getSourceClass(); /** * Returns the target class of conversions performed by this executor. * @return the target class */ public Class getTargetClass(); /** * Execute the conversion for the provided source object. * @param source the source object to convert */ public Object execute(Object source) throws ConversionExecutionException; }././@LongLink0000000000000000000000000000017400000000000011567 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-binding/src/main/java/org/springframework/binding/collection/libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-binding/src/main/java/org/springframew0000755000000000000000000000000011360615644027717 5ustar ././@LongLink0000000000000000000000000000021500000000000011563 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-binding/src/main/java/org/springframework/binding/collection/MapAdaptable.javalibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-binding/src/main/java/org/springframew0000644000000000000000000000230311360615632027714 0ustar /* * Copyright 2004-2008 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.springframework.binding.collection; import java.util.Map; /** * An object whose contents are capable of being exposed as an unmodifiable map. * * @author Keith Donald */ public interface MapAdaptable { /** * Returns this object's contents as a {@link Map}. The returned map may or may not be modifiable depending on this * implementation. *

* Warning: this operation may be called frequently; if so care should be taken so that the map contents (if * calculated) be cached as appropriate. * @return the object's contents as a map */ public Map asMap(); }././@LongLink0000000000000000000000000000022300000000000011562 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-binding/src/main/java/org/springframework/binding/collection/SharedMapDecorator.javalibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-binding/src/main/java/org/springframew0000644000000000000000000000455211360615642027725 0ustar /* * Copyright 2004-2008 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); you may not * use this file except in compliance with the License. You may obtain a copy of * the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the * License for the specific language governing permissions and limitations under * the License. */ package org.springframework.binding.collection; import java.io.Serializable; import java.util.Collection; import java.util.Map; import java.util.Set; import org.springframework.core.style.ToStringCreator; /** * A map decorator that implements SharedMap. By default, simply returns the map itself as the mutex. * Subclasses may override to return a different mutex object. * * @author Keith Donald */ public class SharedMapDecorator implements SharedMap, Serializable { /** * The wrapped, target map. */ private Map map; /** * Creates a new shared map decorator. * @param map the map that is shared by multiple threads, to be synced */ public SharedMapDecorator(Map map) { this.map = map; } // implementing Map public void clear() { map.clear(); } public boolean containsKey(Object key) { return map.containsKey(key); } public boolean containsValue(Object value) { return map.containsValue(value); } public Set entrySet() { return map.entrySet(); } public Object get(Object key) { return map.get(key); } public boolean isEmpty() { return map.isEmpty(); } public Set keySet() { return map.keySet(); } public Object put(Object key, Object value) { return map.put(key, value); } public void putAll(Map map) { this.map.putAll(map); } public Object remove(Object key) { return map.remove(key); } public int size() { return map.size(); } public Collection values() { return map.values(); } // implementing SharedMap public Object getMutex() { return map; } public String toString() { return new ToStringCreator(this).append("map", map).append("mutex", getMutex()).toString(); } }././@LongLink0000000000000000000000000000021200000000000011560 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-binding/src/main/java/org/springframework/binding/collection/SharedMap.javalibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-binding/src/main/java/org/springframew0000644000000000000000000000262311360615640027720 0ustar /* * Copyright 2004-2008 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.springframework.binding.collection; import java.util.Map; /** * A simple subinterface of {@link Map} that exposes a mutex that application code can synchronize on. *

* Expected to be implemented by Maps that are backed by shared objects that require synchronization between multiple * threads. An example would be the HTTP session map. * * @author Keith Donald */ public interface SharedMap extends Map { /** * Returns the shared mutex that may be synchronized on using a synchronized block. The returned mutex is guaranteed * to be non-null. * * Example usage: * *

	 * synchronized (sharedMap.getMutex()) {
	 * 	// do synchronized work
	 * }
	 * 
* * @return the mutex */ public Object getMutex(); }././@LongLink0000000000000000000000000000022600000000000011565 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-binding/src/main/java/org/springframework/binding/collection/StringKeyedMapAdapter.javalibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-binding/src/main/java/org/springframew0000644000000000000000000001605611360615644027731 0ustar /* * Copyright 2004-2008 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.springframework.binding.collection; import java.util.Collection; import java.util.Iterator; import java.util.Map; import java.util.NoSuchElementException; import java.util.Set; /** * Base class for map adapters whose keys are String values. Concrete classes need only implement the abstract hook * methods defined by this class. * * @author Keith Donald */ public abstract class StringKeyedMapAdapter implements Map { private Set keySet; private Collection values; private Set entrySet; // implementing Map public void clear() { for (Iterator it = getAttributeNames(); it.hasNext();) { removeAttribute((String) it.next()); } } public boolean containsKey(Object key) { return getAttribute(key.toString()) != null; } public boolean containsValue(Object value) { if (value == null) { return false; } for (Iterator it = getAttributeNames(); it.hasNext();) { Object aValue = getAttribute((String) it.next()); if (value.equals(aValue)) { return true; } } return false; } public Set entrySet() { return (entrySet != null) ? entrySet : (entrySet = new EntrySet()); } public Object get(Object key) { return getAttribute(key.toString()); } public boolean isEmpty() { return !getAttributeNames().hasNext(); } public Set keySet() { return (keySet != null) ? keySet : (keySet = new KeySet()); } public Object put(Object key, Object value) { String stringKey = String.valueOf(key); Object previousValue = getAttribute(stringKey); setAttribute(stringKey, value); return previousValue; } public void putAll(Map map) { for (Iterator it = map.entrySet().iterator(); it.hasNext();) { Entry entry = (Entry) it.next(); setAttribute(entry.getKey().toString(), entry.getValue()); } } public Object remove(Object key) { String stringKey = key.toString(); Object retval = getAttribute(stringKey); removeAttribute(stringKey); return retval; } public int size() { int size = 0; for (Iterator it = getAttributeNames(); it.hasNext();) { size++; it.next(); } return size; } public Collection values() { return (values != null) ? values : (values = new Values()); } // hook methods /** * Hook method that needs to be implemented by concrete subclasses. Gets a value associated with a key. * @param key the key to lookup * @return the associated value, or null if none */ protected abstract Object getAttribute(String key); /** * Hook method that needs to be implemented by concrete subclasses. Puts a key-value pair in the map, overwriting * any possible earlier value associated with the same key. * @param key the key to associate the value with * @param value the value to associate with the key */ protected abstract void setAttribute(String key, Object value); /** * Hook method that needs to be implemented by concrete subclasses. Removes a key and its associated value from the * map. * @param key the key to remove */ protected abstract void removeAttribute(String key); /** * Hook method that needs to be implemented by concrete subclasses. Returns an enumeration listing all keys known to * the map. * @return the key enumeration */ protected abstract Iterator getAttributeNames(); // internal helper classes private abstract class AbstractSet extends java.util.AbstractSet { public boolean isEmpty() { return StringKeyedMapAdapter.this.isEmpty(); } public int size() { return StringKeyedMapAdapter.this.size(); } public void clear() { StringKeyedMapAdapter.this.clear(); } } private class KeySet extends AbstractSet { public Iterator iterator() { return new KeyIterator(); } public boolean contains(Object o) { return StringKeyedMapAdapter.this.containsKey(o); } public boolean remove(Object o) { return StringKeyedMapAdapter.this.remove(o) != null; } } private class KeyIterator implements Iterator { protected final Iterator it = getAttributeNames(); protected Object currentKey; public void remove() { if (currentKey == null) { throw new NoSuchElementException("You must call next() at least once"); } StringKeyedMapAdapter.this.remove(currentKey); } public boolean hasNext() { return it.hasNext(); } public Object next() { return currentKey = it.next(); } } private class Values extends AbstractSet { public Iterator iterator() { return new ValuesIterator(); } public boolean contains(Object o) { return StringKeyedMapAdapter.this.containsValue(o); } public boolean remove(Object o) { if (o == null) { return false; } for (Iterator it = iterator(); it.hasNext();) { if (o.equals(it.next())) { it.remove(); return true; } } return false; } } private class ValuesIterator extends KeyIterator { public Object next() { super.next(); return StringKeyedMapAdapter.this.get(currentKey); } } private class EntrySet extends AbstractSet { public Iterator iterator() { return new EntryIterator(); } public boolean contains(Object o) { if (!(o instanceof Entry)) { return false; } Entry entry = (Entry) o; Object key = entry.getKey(); Object value = entry.getValue(); if (key == null || value == null) { return false; } return value.equals(StringKeyedMapAdapter.this.get(key)); } public boolean remove(Object o) { if (!(o instanceof Entry)) { return false; } Entry entry = (Entry) o; Object key = entry.getKey(); Object value = entry.getValue(); if (key == null || value == null || !value.equals(StringKeyedMapAdapter.this.get(key))) { return false; } return StringKeyedMapAdapter.this.remove(((Entry) o).getKey()) != null; } } private class EntryIterator extends KeyIterator { public Object next() { super.next(); return new EntrySetEntry(currentKey); } } private class EntrySetEntry implements Entry { private final Object currentKey; public EntrySetEntry(Object currentKey) { this.currentKey = currentKey; } public Object getKey() { return currentKey; } public Object getValue() { return StringKeyedMapAdapter.this.get(currentKey); } public Object setValue(Object value) { return StringKeyedMapAdapter.this.put(currentKey, value); } } }././@LongLink0000000000000000000000000000021000000000000011556 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-binding/src/main/java/org/springframework/binding/collection/package.htmllibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-binding/src/main/java/org/springframew0000644000000000000000000000015511360615640027716 0ustar

Collection related classes usable by other packages and systems.

././@LongLink0000000000000000000000000000022200000000000011561 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-binding/src/main/java/org/springframework/binding/collection/CompositeIterator.javalibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-binding/src/main/java/org/springframew0000644000000000000000000000442311360615634027723 0ustar /* * Copyright 2004-2008 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.springframework.binding.collection; import java.util.Iterator; import java.util.LinkedList; import java.util.List; import java.util.NoSuchElementException; import org.springframework.util.Assert; /** * Iterator that combines multiple other iterators. This is a simple implementation that just maintains a list of * iterators which are invoked in sequence untill all iterators are exhausted. * * @author Erwin Vervaet */ public class CompositeIterator implements Iterator { private List iterators = new LinkedList(); private boolean inUse = false; /** * Create a new composite iterator. Add iterators using the {@link #add(Iterator)} method. */ public CompositeIterator() { } /** * Add given iterator to this composite. */ public void add(Iterator iterator) { Assert.state(!inUse, "You can no longer add iterator to a composite iterator that's already in use"); if (iterators.contains(iterator)) { throw new IllegalArgumentException("You cannot add the same iterator twice"); } iterators.add(iterator); } public boolean hasNext() { inUse = true; for (Iterator it = iterators.iterator(); it.hasNext();) { if (((Iterator) it.next()).hasNext()) { return true; } } return false; } public Object next() { inUse = true; for (Iterator it = iterators.iterator(); it.hasNext();) { Iterator iterator = (Iterator) it.next(); if (iterator.hasNext()) { return iterator.next(); } } throw new NoSuchElementException("Exhaused all iterators"); } public void remove() { throw new UnsupportedOperationException("Remove is not supported"); } }././@LongLink0000000000000000000000000000021400000000000011562 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-binding/src/main/java/org/springframework/binding/collection/MapAccessor.javalibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-binding/src/main/java/org/springframew0000644000000000000000000003572511360615634027734 0ustar /* * Copyright 2004-2008 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.springframework.binding.collection; import java.util.Collection; import java.util.Map; import org.springframework.util.Assert; /** * A simple, generic decorator for getting attributes out of a map. May be instantiated directly or used as a base class * as a convenience. * * @author Keith Donald */ public class MapAccessor implements MapAdaptable { /** * The target map. */ private Map map; /** * Creates a new attribute map accessor. * @param map the map */ public MapAccessor(Map map) { Assert.notNull(map, "The map to decorate is required"); this.map = map; } // implementing MapAdaptable public Map asMap() { return map; } /** * Returns a value in the map, returning null if the attribute is not present. * @param key the key * @return the value */ public Object get(Object key) { return map.get(key); } /** * Returns a value in the map, returning the defaultValue if no value was found. * @param key the key * @param defaultValue the default * @return the attribute value */ public Object get(Object key, Object defaultValue) { if (!map.containsKey(key)) { return defaultValue; } return map.get(key); } /** * Returns a value in the map, asserting it is of the required type if present and returning null if * not found. * @param key the key * @param requiredType the required type * @return the value * @throws IllegalArgumentException if the key is present but the value is not of the required type */ public Object get(Object key, Class requiredType) throws IllegalArgumentException { return get(key, requiredType, null); } /** * Returns a value in the map of the specified type, returning the defaultValue if no value is found. * @param key the key * @param requiredType the required type * @param defaultValue the default * @return the attribute value * @throws IllegalArgumentException if the key is present but the value is not of the required type */ public Object get(Object key, Class requiredType, Object defaultValue) { if (!map.containsKey(key)) { return defaultValue; } return assertKeyValueOfType(key, requiredType); } /** * Returns a value in the map, throwing an exception if the attribute is not present and of the correct type. * @param key the key * @return the value */ public Object getRequired(Object key) throws IllegalArgumentException { assertContainsKey(key); return map.get(key); } /** * Returns an value in the map, asserting it is present and of the required type. * @param key the key * @param requiredType the required type * @return the value */ public Object getRequired(Object key, Class requiredType) throws IllegalArgumentException { assertContainsKey(key); return assertKeyValueOfType(key, requiredType); } /** * Returns a string value in the map, returning null if no value was found. * @param key the key * @return the string value * @throws IllegalArgumentException if the key is present but the value is not a string */ public String getString(Object key) throws IllegalArgumentException { return getString(key, null); } /** * Returns a string value in the map, returning the defaultValue if no value was found. * @param key the key * @param defaultValue the default * @return the string value * @throws IllegalArgumentException if the key is present but the value is not a string */ public String getString(Object key, String defaultValue) throws IllegalArgumentException { if (!map.containsKey(key)) { return defaultValue; } return (String) assertKeyValueOfType(key, String.class); } /** * Returns a string value in the map, throwing an exception if the attribute is not present and of the correct type. * @param key the key * @return the string value * @throws IllegalArgumentException if the key is not present or present but the value is not a string */ public String getRequiredString(Object key) throws IllegalArgumentException { assertContainsKey(key); return (String) assertKeyValueOfType(key, String.class); } /** * Returns a collection value in the map, returning null if no value was found. * @param key the key * @return the collection value * @throws IllegalArgumentException if the key is present but the value is not a collection */ public Collection getCollection(Object key) throws IllegalArgumentException { if (!map.containsKey(key)) { return null; } return (Collection) assertKeyValueOfType(key, Collection.class); } /** * Returns a collection value in the map, asserting it is of the required type if present and returning * null if not found. * @param key the key * @return the collection value * @throws IllegalArgumentException if the key is present but the value is not a collection */ public Collection getCollection(Object key, Class requiredType) throws IllegalArgumentException { if (!map.containsKey(key)) { return null; } assertAssignableTo(Collection.class, requiredType); return (Collection) assertKeyValueOfType(key, requiredType); } /** * Returns a collection value in the map, throwing an exception if not found. * @param key the key * @return the collection value * @throws IllegalArgumentException if the key is not present or present but the value is not a collection */ public Collection getRequiredCollection(Object key) throws IllegalArgumentException { assertContainsKey(key); return (Collection) assertKeyValueOfType(key, Collection.class); } /** * Returns a collection value in the map, asserting it is of the required type if present and throwing an exception * if not found. * @param key the key * @return the collection value * @throws IllegalArgumentException if the key is not present or present but the value is not a collection of the * required type */ public Collection getRequiredCollection(Object key, Class requiredType) throws IllegalArgumentException { assertContainsKey(key); assertAssignableTo(Collection.class, requiredType); return (Collection) assertKeyValueOfType(key, requiredType); } /** * Returns a array value in the map, asserting it is of the required type if present and returning null * if not found. * @param key the key * @return the array value * @throws IllegalArgumentException if the key is present but the value is not an array of the required type */ public Object[] getArray(Object key, Class requiredType) throws IllegalArgumentException { assertAssignableTo(Object[].class, requiredType); if (!map.containsKey(key)) { return null; } return (Object[]) assertKeyValueOfType(key, requiredType); } /** * Returns an array value in the map, asserting it is of the required type if present and throwing an exception if * not found. * @param key the key * @return the array value * @throws IllegalArgumentException if the key is not present or present but the value is not a array of the * required type */ public Object[] getRequiredArray(Object key, Class requiredType) throws IllegalArgumentException { assertContainsKey(key); assertAssignableTo(Object[].class, requiredType); return (Object[]) assertKeyValueOfType(key, requiredType); } /** * Returns a number value in the map that is of the specified type, returning null if no value was * found. * @param key the key * @param requiredType the required number type * @return the numbervalue * @throws IllegalArgumentException if the key is present but the value is not a number of the required type */ public Number getNumber(Object key, Class requiredType) throws IllegalArgumentException { return getNumber(key, requiredType, null); } /** * Returns a number attribute value in the map of the specified type, returning the defaultValue if no value was * found. * @param key the attribute name * @return the number value * @param defaultValue the default * @throws IllegalArgumentException if the key is present but the value is not a number of the required type */ public Number getNumber(Object key, Class requiredType, Number defaultValue) throws IllegalArgumentException { if (!map.containsKey(key)) { return defaultValue; } assertAssignableTo(Number.class, requiredType); return (Number) assertKeyValueOfType(key, requiredType); } /** * Returns a number value in the map, throwing an exception if the attribute is not present and of the correct type. * @param key the key * @return the number value * @throws IllegalArgumentException if the key is not present or present but the value is not a number of the * required type */ public Number getRequiredNumber(Object key, Class requiredType) throws IllegalArgumentException { assertContainsKey(key); return (Number) assertKeyValueOfType(key, requiredType); } /** * Returns an integer value in the map, returning null if no value was found. * @param key the key * @return the integer value * @throws IllegalArgumentException if the key is present but the value is not an integer */ public Integer getInteger(Object key) throws IllegalArgumentException { return getInteger(key, null); } /** * Returns an integer value in the map, returning the defaultValue if no value was found. * @param key the key * @param defaultValue the default * @return the integer value * @throws IllegalArgumentException if the key is present but the value is not an integer */ public Integer getInteger(Object key, Integer defaultValue) throws IllegalArgumentException { return (Integer) getNumber(key, Integer.class, defaultValue); } /** * Returns an integer value in the map, throwing an exception if the value is not present and of the correct type. * @param key the attribute name * @return the integer attribute value * @throws IllegalArgumentException if the key is not present or present but the value is not an integer */ public Integer getRequiredInteger(Object key) throws IllegalArgumentException { return (Integer) getRequiredNumber(key, Integer.class); } /** * Returns a long value in the map, returning null if no value was found. * @param key the key * @return the long value * @throws IllegalArgumentException if the key is present but not a long */ public Long getLong(Object key) throws IllegalArgumentException { return getLong(key, null); } /** * Returns a long value in the map, returning the defaultValue if no value was found. * @param key the key * @param defaultValue the default * @return the long attribute value * @throws IllegalArgumentException if the key is present but the value is not a long */ public Long getLong(Object key, Long defaultValue) throws IllegalArgumentException { return (Long) getNumber(key, Long.class, defaultValue); } /** * Returns a long value in the map, throwing an exception if the value is not present and of the correct type. * @param key the key * @return the long attribute value * @throws IllegalArgumentException if the key is not present or present but the value is not a long */ public Long getRequiredLong(Object key) throws IllegalArgumentException { return (Long) getRequiredNumber(key, Long.class); } /** * Returns a boolean value in the map, returning null if no value was found. * @param key the key * @return the boolean value * @throws IllegalArgumentException if the key is present but the value is not a boolean */ public Boolean getBoolean(Object key) throws IllegalArgumentException { return getBoolean(key, null); } /** * Returns a boolean value in the map, returning the defaultValue if no value was found. * @param key the key * @param defaultValue the default * @return the boolean value * @throws IllegalArgumentException if the key is present but the value is not a boolean */ public Boolean getBoolean(Object key, Boolean defaultValue) throws IllegalArgumentException { if (!map.containsKey(key)) { return defaultValue; } return (Boolean) assertKeyValueOfType(key, Boolean.class); } /** * Returns a boolean value in the map, throwing an exception if the value is not present and of the correct type. * @param key the attribute * @return the boolean value * @throws IllegalArgumentException if the key is not present or present but the value is not a boolean */ public Boolean getRequiredBoolean(Object key) throws IllegalArgumentException { assertContainsKey(key); return (Boolean) assertKeyValueOfType(key, Boolean.class); } /** * Asserts that the attribute is present in the attribute map. * @param key the key * @throws IllegalArgumentException if the key is not present */ public void assertContainsKey(Object key) throws IllegalArgumentException { if (!map.containsKey(key)) { throw new IllegalArgumentException("Required attribute '" + key + "' is not present in map; attributes present are [" + asMap() + "]"); } } /** * Indicates if the attribute is present in the attribute map and of the required type. * @param key the attribute name * @return true if present and of the required type, false if not present. */ public boolean containsKey(Object key, Class requiredType) throws IllegalArgumentException { if (map.containsKey(key)) { assertKeyValueOfType(key, requiredType); return true; } else { return false; } } /** * Assert that value of the map key, if non-null, is of the required type. * @param key the attribute name * @param requiredType the required attribute value type * @return the attribute value */ public Object assertKeyValueOfType(Object key, Class requiredType) { return assertKeyValueInstanceOf(key, map.get(key), requiredType); } /** * Assert that the key value, if non null, is an instance of the required type. * @param key the key * @param value the value * @param requiredType the required type * @return the value */ public Object assertKeyValueInstanceOf(Object key, Object value, Class requiredType) { Assert.notNull(requiredType, "The required type to assert is required"); if (value != null && !requiredType.isInstance(value)) { throw new IllegalArgumentException("Map key '" + key + "' has value [" + value + "] that is not of expected type [" + requiredType + "], instead it is of type [" + value.getClass().getName() + "]"); } return value; } private void assertAssignableTo(Class clazz, Class requiredType) { Assert.isTrue(clazz.isAssignableFrom(requiredType), "The provided required type must be assignable to [" + clazz + "]"); } }libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-binding/src/main/java/overview.html0000644000000000000000000000017411360615634027240 0ustar

The Spring Data Binding framework, an internal library used by Spring Web Flow.

libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-binding/src/test/0000755000000000000000000000000011360615632023612 5ustar libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-binding/src/test/resources/0000755000000000000000000000000011360615632025624 5ustar libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-binding/src/test/resources/log4j.xml0000644000000000000000000000131611360615632027366 0ustar libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-binding/src/test/java/0000755000000000000000000000000011360615632024533 5ustar libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-binding/src/test/java/org/0000755000000000000000000000000011360615632025322 5ustar ././@LongLink0000000000000000000000000000015100000000000011562 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-binding/src/test/java/org/springframework/libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-binding/src/test/java/org/springframew0000755000000000000000000000000011360615632027747 5ustar ././@LongLink0000000000000000000000000000016100000000000011563 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-binding/src/test/java/org/springframework/binding/libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-binding/src/test/java/org/springframew0000755000000000000000000000000011360615646027754 5ustar ././@LongLink0000000000000000000000000000017400000000000011567 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-binding/src/test/java/org/springframework/binding/expression/libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-binding/src/test/java/org/springframew0000755000000000000000000000000011360615644027752 5ustar ././@LongLink0000000000000000000000000000020100000000000011556 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-binding/src/test/java/org/springframework/binding/expression/ognl/libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-binding/src/test/java/org/springframew0000755000000000000000000000000011360615644027752 5ustar ././@LongLink0000000000000000000000000000021600000000000011564 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-binding/src/test/java/org/springframework/binding/expression/ognl/TestBean.javalibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-binding/src/test/java/org/springframew0000644000000000000000000000272311360615644027760 0ustar /* * Copyright 2004-2008 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.springframework.binding.expression.ognl; import java.util.ArrayList; import java.util.Date; import java.util.List; public class TestBean { private boolean flag; private int number; private Date date; private List list = new ArrayList(); public boolean isFlag() { return flag; } public void setFlag(boolean flag) { this.flag = flag; } public int getNumber() { return number; } public void setNumber(int number) { this.number = number; } public List getList() { return list; } public void setList(List list) { this.list = list; } public Date getDate() { return date; } public void setDate(Date date) { this.date = date; } public Exception getException() { throw new IllegalStateException("Test"); } public void setExceptionProperty(String whatever) { throw new IllegalStateException("Test"); } } ././@LongLink0000000000000000000000000000023700000000000011567 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-binding/src/test/java/org/springframework/binding/expression/ognl/OgnlExpressionParserTests.javalibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-binding/src/test/java/org/springframew0000644000000000000000000001746411360615644027770 0ustar /* * Copyright 2004-2008 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.springframework.binding.expression.ognl; import junit.framework.TestCase; import org.springframework.binding.expression.EvaluationException; import org.springframework.binding.expression.Expression; import org.springframework.binding.expression.ExpressionVariable; import org.springframework.binding.expression.ParserException; import org.springframework.binding.expression.ValueCoercionException; import org.springframework.binding.expression.support.FluentParserContext; public class OgnlExpressionParserTests extends TestCase { private OgnlExpressionParser parser = new OgnlExpressionParser(); private TestBean bean = new TestBean(); public void testParseSimple() { String exp = "flag"; Expression e = parser.parseExpression(exp, null); assertNotNull(e); Boolean b = (Boolean) e.getValue(bean); assertFalse(b.booleanValue()); } public void testParseSimpleAllowDelimited() { parser.setAllowDelimitedEvalExpressions(true); String exp = "${flag}"; Expression e = parser.parseExpression(exp, null); assertNotNull(e); Boolean b = (Boolean) e.getValue(bean); assertFalse(b.booleanValue()); } public void testParseSimpleDelimitedNotAllowed() { String exp = "${flag}"; try { parser.parseExpression(exp, null); fail("should have failed"); } catch (ParserException e) { } } public void testParseTemplateSimpleLiteral() { String exp = "flag"; Expression e = parser.parseExpression(exp, new FluentParserContext().template()); assertNotNull(e); assertEquals("flag", e.getValue(bean)); } public void testParseTemplateEmpty() { Expression e = parser.parseExpression("", new FluentParserContext().template()); assertNotNull(e); assertEquals("", e.getValue(bean)); } public void testParseTemplateComposite() { String exp = "hello ${flag} ${flag} ${flag}"; Expression e = parser.parseExpression(exp, new FluentParserContext().template()); assertNotNull(e); String str = (String) e.getValue(bean); assertEquals("hello false false false", str); } public void testTemplateEnclosedCompositeNotSupported() { String exp = "${hello ${flag} ${flag} ${flag}}"; try { parser.parseExpression(exp, new FluentParserContext().template()); fail("Should've failed - not intended use"); } catch (ParserException e) { } } public void testSyntaxError1() { try { parser.parseExpression("${", new FluentParserContext().template()); fail(); } catch (ParserException e) { } try { String exp = "hello ${flag} ${abcd defg"; parser.parseExpression(exp, null); fail("Should've failed - not intended use"); } catch (ParserException e) { } } public void testSyntaxError2() { try { parser.parseExpression("${}", new FluentParserContext().template()); fail("Should've failed - not intended use"); } catch (ParserException e) { } try { String exp = "hello ${flag} ${}"; parser.parseExpression(exp, null); fail("Should've failed - not intended use"); } catch (ParserException e) { } } public void testCollectionConstructionSyntax() { // lists parser.parseExpression("name in {null, \"Untitled\"}", null); parser.parseExpression("${name in {null, \"Untitled\"}}", new FluentParserContext().template()); // native arrays parser.parseExpression("new int[] {1, 2, 3}", null); parser.parseExpression("${new int[] {1, 2, 3}}", new FluentParserContext().template()); // maps parser.parseExpression("#{ 'foo' : 'foo value', 'bar' : 'bar value' }", null); parser .parseExpression("${#{ 'foo' : 'foo value', 'bar' : 'bar value' }}", new FluentParserContext() .template()); parser.parseExpression("#@java.util.LinkedHashMap@{ 'foo' : 'foo value', 'bar' : 'bar value' }", null); parser.parseExpression("${#@java.util.LinkedHashMap@{ 'foo' : 'foo value', 'bar' : 'bar value' }}", new FluentParserContext().template()); // complex examples parser.parseExpression("b,#{1:2}", null); parser.parseExpression("${b,#{1:2}}", new FluentParserContext().template()); parser.parseExpression("a${b,#{1:2},e}f${g,#{3:4},j}k", new FluentParserContext().template()); } public void testVariables() { Expression exp = parser.parseExpression("#var", new FluentParserContext().variable(new ExpressionVariable( "var", "flag"))); assertEquals(false, ((Boolean) exp.getValue(bean)).booleanValue()); } public void testVariablesWithCoersion() { Expression exp = parser.parseExpression("#var", new FluentParserContext().variable(new ExpressionVariable( "var", "number", new FluentParserContext().expectResult(Long.class)))); assertEquals(new Long(0), exp.getValue(bean)); } public void testNestedVariablesWithTemplates() { Expression exp = parser.parseExpression("#var", new FluentParserContext().variable(new ExpressionVariable( "var", "${flag}${#var}", new FluentParserContext().template().variable( new ExpressionVariable("var", "number"))))); assertEquals("false0", exp.getValue(bean)); } public void testGetExpressionString() { String expressionString = "maximum"; Expression exp = parser.parseExpression(expressionString, null); assertEquals("maximum", exp.getExpressionString()); } public void testGetValueType() { String exp = "flag"; Expression e = parser.parseExpression(exp, null); assertEquals(boolean.class, e.getValueType(bean)); } public void testGetValueTypeNullCollectionValue() { String exp = "list[0]"; Expression e = parser.parseExpression(exp, null); assertEquals(null, e.getValueType(bean)); } public void testGetValueWithCoersion() { String expressionString = "number"; Expression exp = parser.parseExpression(expressionString, new FluentParserContext().expectResult(String.class)); TestBean context = new TestBean(); assertEquals("0", exp.getValue(context)); } public void testGetValueCoersionError() { String expressionString = "number"; Expression exp = parser.parseExpression(expressionString, new FluentParserContext() .expectResult(TestBean.class)); TestBean context = new TestBean(); try { exp.getValue(context); fail("Should have failed with coersion"); } catch (ValueCoercionException e) { } } public void testSetValue() { String expressionString = "number"; Expression exp = parser.parseExpression(expressionString, null); TestBean context = new TestBean(); exp.setValue(context, new Integer(5)); assertEquals(5, context.getNumber()); } public void testSetValueWithCoersion() { Expression e = parser.parseExpression("date", null); e.setValue(bean, "2008-9-15"); } public void testSetBogusValueWithCoersion() { Expression e = parser.parseExpression("date", null); try { e.setValue(bean, "bogus"); fail("Should have failed tme"); } catch (ValueCoercionException ex) { } } public void testReasonCauseLinkingGetValue() { String exp = "getException()"; Expression e = parser.parseExpression(exp, null); try { e.getValue(bean); } catch (EvaluationException ex) { assertTrue(ex.getCause().getCause() instanceof IllegalStateException); } } public void testReasonCauseLinkingSetValue() { String exp = "exceptionProperty"; Expression e = parser.parseExpression(exp, null); try { e.setValue(bean, "does not matter"); } catch (EvaluationException ex) { assertTrue(ex.getCause().getCause() instanceof IllegalStateException); } } }././@LongLink0000000000000000000000000000017700000000000011572 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-binding/src/test/java/org/springframework/binding/expression/el/libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-binding/src/test/java/org/springframew0000755000000000000000000000000011360615644027752 5ustar ././@LongLink0000000000000000000000000000023700000000000011567 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-binding/src/test/java/org/springframework/binding/expression/el/MapAdaptableELResolverTests.javalibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-binding/src/test/java/org/springframew0000644000000000000000000000363011360615644027756 0ustar package org.springframework.binding.expression.el; import java.util.HashMap; import java.util.Map; import javax.el.ELContext; import junit.framework.TestCase; import org.springframework.binding.collection.MapAdaptable; public class MapAdaptableELResolverTests extends TestCase { private ELContext context; public void setUp() { context = new DefaultELContext(new MapAdaptableELResolver(), null, null); } public void testGetType() { Class type = context.getELResolver().getType(context, new TestMapAdaptable(), "bar"); assertTrue(context.isPropertyResolved()); assertEquals(String.class, type); } public void testGetType_UnknownProperty() { Class type = context.getELResolver().getType(context, new TestMapAdaptable(), "foo"); assertTrue(context.isPropertyResolved()); assertEquals(null, type); } public void testGetValue() { Object value = context.getELResolver().getValue(context, new TestMapAdaptable(), "bar"); assertTrue(context.isPropertyResolved()); assertEquals("bar", value); } public void testGetValue_UnknownProperty() { Object value = context.getELResolver().getValue(context, new TestMapAdaptable(), "foo"); assertTrue(context.isPropertyResolved()); assertEquals(null, value); } public void testSetValue() { MapAdaptable testMap = new TestMapAdaptable(); context.getELResolver().setValue(context, testMap, "foo", "foo"); assertTrue(context.isPropertyResolved()); assertEquals("foo", testMap.asMap().get("foo")); } public void testSetValue_OverWrite() { MapAdaptable testMap = new TestMapAdaptable(); context.getELResolver().setValue(context, testMap, "bar", "foo"); assertTrue(context.isPropertyResolved()); assertEquals("foo", testMap.asMap().get("bar")); } private class TestMapAdaptable implements MapAdaptable { private Map map = new HashMap(); public TestMapAdaptable() { map.put("bar", "bar"); } public Map asMap() { return map; } } } ././@LongLink0000000000000000000000000000023300000000000011563 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-binding/src/test/java/org/springframework/binding/expression/el/ELExpressionParserTests.javalibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-binding/src/test/java/org/springframew0000644000000000000000000002162311360615642027756 0ustar package org.springframework.binding.expression.el; import java.util.ArrayList; import java.util.Iterator; import java.util.List; import javax.el.ELContext; import javax.el.ELResolver; import javax.el.FunctionMapper; import javax.el.VariableMapper; import junit.framework.TestCase; import org.jboss.el.ExpressionFactoryImpl; import org.springframework.binding.expression.EvaluationException; import org.springframework.binding.expression.Expression; import org.springframework.binding.expression.ExpressionVariable; import org.springframework.binding.expression.ParserException; import org.springframework.binding.expression.ValueCoercionException; import org.springframework.binding.expression.support.FluentParserContext; public class ELExpressionParserTests extends TestCase { private ELExpressionParser parser = new ELExpressionParser(new ExpressionFactoryImpl()); public void setUp() { parser.putContextFactory(TestBean.class, new TestELContextFactory()); } public void testParseSimpleEvalExpressionNoParserContext() { String expressionString = "3 + 4"; Expression exp = parser.parseExpression(expressionString, null); assertEquals(new Long(7), exp.getValue(null)); } public void testParseNullExpressionString() { String expressionString = null; try { parser.parseExpression(expressionString, null); fail("should have thrown iae"); } catch (IllegalArgumentException e) { } } public void testParseNull() { Expression exp = parser.parseExpression("null", null); assertEquals(null, exp.getValue(null)); } public void testParseEmptyExpressionString() { String expressionString = ""; try { parser.parseExpression(expressionString, null); fail("Should have failed"); } catch (ParserException e) { } } public void testParseSimpleEvalExpressionNoEvalContextWithTypeCoersion() { String expressionString = "3 + 4"; Expression exp = parser .parseExpression(expressionString, new FluentParserContext().expectResult(Integer.class)); assertEquals(new Integer(7), exp.getValue(null)); } public void testParseBeanEvalExpressionNoParserContext() { String expressionString = "value"; Expression exp = parser.parseExpression(expressionString, null); assertEquals("foo", exp.getValue(new TestBean())); } public void testParseEvalExpressionWithContextTypeCoersion() { String expressionString = "maximum"; Expression exp = parser.parseExpression(expressionString, new FluentParserContext().expectResult(Long.class)); assertEquals(new Long(2), exp.getValue(new TestBean())); } public void testParseEvalExpressionWithContextCustomELVariableResolver() { String expressionString = "specialProperty"; Expression exp = parser.parseExpression(expressionString, new FluentParserContext().evaluate(TestBean.class)); assertEquals("Custom resolver resolved this special property!", exp.getValue(new TestBean())); } public void testParseBeanEvalExpressionInvalidELVariable() { try { String expressionString = "bogus"; Expression exp = parser.parseExpression(expressionString, new FluentParserContext() .evaluate(TestBean.class)); exp.getValue(new TestBean()); fail("Should have failed"); } catch (EvaluationException e) { } } public void testParseLiteralExpression() { String expressionString = "'value'"; Expression exp = parser.parseExpression(expressionString, null); assertEquals("value", exp.getValue(null)); } public void testParseTemplateExpression() { String expressionString = "text text text #{value} text text text#{value}"; Expression exp = parser.parseExpression(expressionString, new FluentParserContext().template()); TestBean target = new TestBean(); assertEquals("text text text foo text text textfoo", exp.getValue(target)); } public void testParseTemplateExpressionWithVariables() { String expressionString = "#{value}#{max}"; Expression exp = parser.parseExpression(expressionString, new FluentParserContext().template().variable( new ExpressionVariable("max", "maximum"))); TestBean target = new TestBean(); assertEquals("foo2", exp.getValue(target)); } public void testVariablesWithCoersion() { Expression exp = parser.parseExpression("max", new FluentParserContext().variable(new ExpressionVariable("max", "maximum", new FluentParserContext().expectResult(Long.class)))); TestBean target = new TestBean(); assertEquals(new Long(2), exp.getValue(target)); } public void testTemplateNestedVariables() { String expressionString = "#{value}#{max}"; Expression exp = parser.parseExpression(expressionString, new FluentParserContext().template().variable( new ExpressionVariable("max", "#{maximum}#{var}", new FluentParserContext().template().variable( new ExpressionVariable("var", "'bar'"))))); TestBean target = new TestBean(); assertEquals("foo2bar", exp.getValue(target)); } // public void testGetValueTypeNullCollectionValue() { // String exp = "list[3]"; // Expression e = parser.parseExpression(exp, null); // TestBean target = new TestBean(); // assertEquals(null, e.getValueType(target)); // } public void testGetExpressionString() { String expressionString = "maximum"; Expression exp = parser.parseExpression(expressionString, null); assertEquals("maximum", exp.getExpressionString()); } public void testGetExpressionType() { String expressionString = "maximum"; Expression exp = parser.parseExpression(expressionString, null); TestBean context = new TestBean(); assertEquals(int.class, exp.getValueType(context)); } public void testGetValueWithCoersion() { String expressionString = "maximum"; Expression exp = parser.parseExpression(expressionString, new FluentParserContext().expectResult(String.class)); TestBean context = new TestBean(); assertEquals("2", exp.getValue(context)); } public void testGetValueCoersionError() { String expressionString = "maximum"; Expression exp = parser.parseExpression(expressionString, new FluentParserContext() .expectResult(TestBean.class)); TestBean context = new TestBean(); try { exp.getValue(context); fail("Should have failed with coersion"); } catch (ValueCoercionException e) { } } public void testSetValue() { String expressionString = "maximum"; Expression exp = parser.parseExpression(expressionString, null); TestBean context = new TestBean(); exp.setValue(context, new Integer(5)); assertEquals(5, context.getMaximum()); } public void testSetValueWithTypeCoersion() { String expressionString = "maximum"; Expression exp = parser.parseExpression(expressionString, null); TestBean context = new TestBean(); exp.setValue(context, "5"); assertEquals(5, context.getMaximum()); } public void testSetValueCoersionError() { String expressionString = "maximum"; Expression exp = parser.parseExpression(expressionString, null); TestBean context = new TestBean(); try { exp.setValue(context, "bogus"); fail("Should have failed with coersion"); } catch (ValueCoercionException e) { } } public static class TestBean { private String value = "foo"; private int maximum = 2; private TestBean bean; private List list = new ArrayList(); public TestBean() { initList(); } public TestBean(TestBean bean) { this.bean = bean; initList(); } private void initList() { list.add("1"); list.add("2"); list.add("3"); list.add(null); } public TestBean getBean() { return bean; } public String getValue() { return value; } public void setValue(String value) { this.value = value; } public String encode(String data) { return "!" + data; } public int getMaximum() { return maximum; } public void setMaximum(int maximum) { this.maximum = maximum; } public List getList() { return list; } } private static class TestELContextFactory implements ELContextFactory { public ELContext getELContext(final Object target) { return new ELContext() { public ELResolver getELResolver() { return new ELResolver() { public Class getCommonPropertyType(ELContext arg0, Object arg1) { return Object.class; } public Iterator getFeatureDescriptors(ELContext arg0, Object arg1) { return null; } public Class getType(ELContext arg0, Object arg1, Object arg2) { return String.class; } public Object getValue(ELContext arg0, Object arg1, Object arg2) { if (arg1 == null && arg2.equals("specialProperty")) { arg0.setPropertyResolved(true); return "Custom resolver resolved this special property!"; } else { return null; } } public boolean isReadOnly(ELContext arg0, Object arg1, Object arg2) { return true; } public void setValue(ELContext arg0, Object arg1, Object arg2, Object arg3) { throw new UnsupportedOperationException("Not supported"); } }; } public FunctionMapper getFunctionMapper() { return null; } public VariableMapper getVariableMapper() { return null; } }; } } } ././@LongLink0000000000000000000000000000021000000000000011556 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-binding/src/test/java/org/springframework/binding/expression/beanwrapper/libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-binding/src/test/java/org/springframew0000755000000000000000000000000011360615632027747 5ustar ././@LongLink0000000000000000000000000000025500000000000011567 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-binding/src/test/java/org/springframework/binding/expression/beanwrapper/BeanWrapperExpressionParserTests.javalibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-binding/src/test/java/org/springframew0000644000000000000000000000716711360615632027764 0ustar /* * Copyright 2004-2008 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.springframework.binding.expression.beanwrapper; import junit.framework.TestCase; import org.springframework.beans.TypeMismatchException; import org.springframework.binding.expression.Expression; import org.springframework.binding.expression.ParserException; import org.springframework.binding.expression.ValueCoercionException; import org.springframework.binding.expression.ognl.TestBean; import org.springframework.binding.expression.support.FluentParserContext; public class BeanWrapperExpressionParserTests extends TestCase { private BeanWrapperExpressionParser parser = new BeanWrapperExpressionParser(); private TestBean bean = new TestBean(); public void testParseSimple() { String exp = "flag"; Expression e = parser.parseExpression(exp, null); assertNotNull(e); Boolean b = (Boolean) e.getValue(bean); assertFalse(b.booleanValue()); } public void testParseSimpleAllowDelimited() { parser.setAllowDelimitedEvalExpressions(true); String exp = "${flag}"; Expression e = parser.parseExpression(exp, null); assertNotNull(e); Boolean b = (Boolean) e.getValue(bean); assertFalse(b.booleanValue()); } public void testParseSimpleDelimitedNotAllowed() { String exp = "${flag}"; try { parser.parseExpression(exp, null); fail("should have failed"); } catch (ParserException e) { } } public void testParseTemplateSimpleLiteral() { String exp = "flag"; Expression e = parser.parseExpression(exp, new FluentParserContext().template()); assertNotNull(e); assertEquals("flag", e.getValue(bean)); } public void testParseTemplateEmpty() { Expression e = parser.parseExpression("", new FluentParserContext().template()); assertNotNull(e); assertEquals("", e.getValue(bean)); } public void testParseTemplateComposite() { String exp = "hello ${flag} ${flag} ${flag}"; Expression e = parser.parseExpression(exp, new FluentParserContext().template()); assertNotNull(e); String str = (String) e.getValue(bean); assertEquals("hello false false false", str); } public void testTemplateEnclosedCompositeNotSupported() { String exp = "${hello ${flag} ${flag} ${flag}}"; try { parser.parseExpression(exp, new FluentParserContext().template()); fail("Should've failed - not intended use"); } catch (ParserException e) { } } public void testGetValueType() { String exp = "flag"; Expression e = parser.parseExpression(exp, null); assertEquals(boolean.class, e.getValueType(bean)); } public void testGetValueTypeNullCollectionValue() { String exp = "list[0]"; Expression e = parser.parseExpression(exp, null); assertEquals(null, e.getValueType(bean)); } public void testSetValueWithCoersion() { Expression e = parser.parseExpression("date", null); e.setValue(bean, "2008-9-15"); } public void testSetBogusValueWithCoersion() { Expression e = parser.parseExpression("date", null); try { e.setValue(bean, "bogus"); fail("Should have failed tme"); } catch (ValueCoercionException ex) { assertTrue(ex.getCause() instanceof TypeMismatchException); } } }././@LongLink0000000000000000000000000000017100000000000011564 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-binding/src/test/java/org/springframework/binding/message/libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-binding/src/test/java/org/springframew0000755000000000000000000000000011360615640027746 5ustar ././@LongLink0000000000000000000000000000022100000000000011560 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-binding/src/test/java/org/springframework/binding/message/MessageBuilderTests.javalibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-binding/src/test/java/org/springframew0000644000000000000000000001243411360615632027755 0ustar package org.springframework.binding.message; import java.util.Locale; import junit.framework.TestCase; import org.springframework.context.NoSuchMessageException; import org.springframework.context.support.StaticMessageSource; public class MessageBuilderTests extends TestCase { private StaticMessageSource messageSource = new StaticMessageSource(); private Locale locale = Locale.getDefault(); private MessageBuilder builder = new MessageBuilder(); public void setUp() { messageSource.addMessage("foo", locale, "bar"); messageSource.addMessage("bar", locale, "{0}"); messageSource.addMessage("baz", locale, "boop"); } public void testBuildDefaultText() { MessageResolver resolver = builder.defaultText("foo").build(); Message message = resolver.resolveMessage(messageSource, locale); assertEquals("foo", message.getText()); assertEquals(Severity.INFO, message.getSeverity()); assertNull(message.getSource()); } public void testBuildFatal() { MessageResolver resolver = builder.fatal().defaultText("foo").build(); Message message = resolver.resolveMessage(messageSource, locale); assertEquals("foo", message.getText()); assertEquals(Severity.FATAL, message.getSeverity()); assertNull(message.getSource()); } public void testBuildError() { MessageResolver resolver = builder.error().defaultText("foo").build(); Message message = resolver.resolveMessage(messageSource, locale); assertEquals("foo", message.getText()); assertEquals(Severity.ERROR, message.getSeverity()); assertNull(message.getSource()); } public void testBuildWarning() { MessageResolver resolver = builder.warning().defaultText("foo").build(); Message message = resolver.resolveMessage(messageSource, locale); assertEquals("foo", message.getText()); assertEquals(Severity.WARNING, message.getSeverity()); assertNull(message.getSource()); } public void testBuildNothing() { MessageResolver resolver = builder.build(); try { resolver.resolveMessage(messageSource, locale); fail("Should have failed"); } catch (NoSuchMessageException e) { } } public void testBuildCode() { MessageResolver resolver = builder.error().code("foo").build(); Message message = resolver.resolveMessage(messageSource, locale); assertEquals("bar", message.getText()); assertEquals(Severity.ERROR, message.getSeverity()); assertNull(message.getSource()); } public void testBuildCodes() { MessageResolver resolver = builder.error().codes(new String[] { "foo" }).build(); Message message = resolver.resolveMessage(messageSource, locale); assertEquals("bar", message.getText()); assertEquals(Severity.ERROR, message.getSeverity()); assertNull(message.getSource()); } public void testBuildArg() { MessageResolver resolver = builder.error().code("bar").arg("baz").build(); Message message = resolver.resolveMessage(messageSource, locale); assertEquals("baz", message.getText()); assertEquals(Severity.ERROR, message.getSeverity()); assertNull(message.getSource()); } public void testBuildArgs() { MessageResolver resolver = builder.error().codes(new String[] { "bar" }).args(new Object[] { "baz" }).build(); Message message = resolver.resolveMessage(messageSource, locale); assertEquals("baz", message.getText()); assertEquals(Severity.ERROR, message.getSeverity()); assertNull(message.getSource()); } public void testBuildCodesNull() { MessageResolver resolver = builder.codes(null).build(); try { resolver.resolveMessage(messageSource, locale); fail("Should have failed"); } catch (NoSuchMessageException e) { } } public void testBuildArgsNull() { MessageResolver resolver = builder.args(null).build(); try { resolver.resolveMessage(messageSource, locale); fail("Should have failed"); } catch (NoSuchMessageException e) { } } public void testBuildArgsWithNullCodes() { MessageResolver resolver = builder.error().args(new Object[] { "baz" }).build(); try { resolver.resolveMessage(messageSource, locale); fail("Should have failed"); } catch (NoSuchMessageException e) { } } public void testBuildArgsWithNullCodesDefaultText() { MessageResolver resolver = builder.error().args(new Object[] { "baz" }).defaultText("foo").build(); Message message = resolver.resolveMessage(messageSource, locale); assertEquals("foo", message.getText()); } public void testBuildWithSource() { MessageResolver resolver = builder.source("foo").defaultText("foo").build(); Message message = resolver.resolveMessage(messageSource, locale); assertEquals("foo", message.getSource()); assertEquals("foo", message.getText()); assertEquals(Severity.INFO, message.getSeverity()); } public void testBuildResolvableArg() { MessageResolver resolver = builder.error().code("bar").resolvableArg("baz").build(); Message message = resolver.resolveMessage(messageSource, locale); assertEquals("boop", message.getText()); assertEquals(Severity.ERROR, message.getSeverity()); assertNull(message.getSource()); } public void testBuildResolvableArgs() { MessageResolver resolver = builder.error().codes(new String[] { "bar" }).resolvableArgs(new Object[] { "baz" }) .build(); Message message = resolver.resolveMessage(messageSource, locale); assertEquals("boop", message.getText()); assertEquals(Severity.ERROR, message.getSeverity()); assertNull(message.getSource()); } } ././@LongLink0000000000000000000000000000022700000000000011566 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-binding/src/test/java/org/springframework/binding/message/MessageContextErrorsTests.javalibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-binding/src/test/java/org/springframew0000644000000000000000000000730511360615640027755 0ustar package org.springframework.binding.message; import java.util.HashMap; import java.util.Locale; import junit.framework.TestCase; import org.springframework.context.support.StaticMessageSource; import org.springframework.validation.DefaultMessageCodesResolver; import org.springframework.validation.MapBindingResult; public class MessageContextErrorsTests extends TestCase { public void testReject() { StaticMessageSource messageSource = new StaticMessageSource(); messageSource.addMessage("foo", Locale.getDefault(), "bar"); messageSource.addMessage("bar", Locale.getDefault(), "{0}"); DefaultMessageContext context = new DefaultMessageContext(messageSource); Object object = new Object(); MessageContextErrors errors = new MessageContextErrors(context, "object", object, null, new DefaultMessageCodesResolver(), null); errors.reject("foo"); errors.reject("bogus", "baz"); errors.reject("bar", new Object[] { "boop" }, null); Message msg = context.getAllMessages()[0]; assertEquals(null, msg.getSource()); assertEquals("bar", msg.getText()); assertEquals(Severity.ERROR, msg.getSeverity()); msg = context.getAllMessages()[1]; assertEquals(null, msg.getSource()); assertEquals("baz", msg.getText()); assertEquals(Severity.ERROR, msg.getSeverity()); msg = context.getAllMessages()[2]; assertEquals(null, msg.getSource()); assertEquals("boop", msg.getText()); assertEquals(Severity.ERROR, msg.getSeverity()); } public void testRejectValue() { StaticMessageSource messageSource = new StaticMessageSource(); messageSource.addMessage("foo", Locale.getDefault(), "bar"); messageSource.addMessage("bar", Locale.getDefault(), "{0}"); DefaultMessageContext context = new DefaultMessageContext(messageSource); Object object = new Object(); MessageContextErrors errors = new MessageContextErrors(context, "object", object, null, new DefaultMessageCodesResolver(), null); errors.rejectValue("field", "foo"); errors.rejectValue("field", "bogus", "baz"); errors.rejectValue("field", "bar", new Object[] { "boop" }, null); Message msg = context.getAllMessages()[0]; assertEquals("field", msg.getSource()); assertEquals("bar", msg.getText()); assertEquals(Severity.ERROR, msg.getSeverity()); msg = context.getAllMessages()[1]; assertEquals("field", msg.getSource()); assertEquals("baz", msg.getText()); assertEquals(Severity.ERROR, msg.getSeverity()); msg = context.getAllMessages()[2]; assertEquals("field", msg.getSource()); assertEquals("boop", msg.getText()); assertEquals(Severity.ERROR, msg.getSeverity()); } public void testAddAllErrors() { StaticMessageSource messageSource = new StaticMessageSource(); messageSource.addMessage("foo", Locale.getDefault(), "bar"); messageSource.addMessage("bar", Locale.getDefault(), "{0}"); DefaultMessageContext context = new DefaultMessageContext(messageSource); Object object = new Object(); MessageContextErrors errors = new MessageContextErrors(context, "object", object, null, new DefaultMessageCodesResolver(), null); MapBindingResult result = new MapBindingResult(new HashMap(), "object"); result.reject("bar", new Object[] { "boop" }, null); result.rejectValue("field", "bar", new Object[] { "boop" }, null); errors.addAllErrors(result); Message msg = context.getAllMessages()[0]; assertEquals(null, msg.getSource()); assertEquals("boop", msg.getText()); assertEquals(Severity.ERROR, msg.getSeverity()); msg = context.getAllMessages()[1]; assertEquals("field", msg.getSource()); assertEquals("boop", msg.getText()); assertEquals(Severity.ERROR, msg.getSeverity()); } public void testGetGlobalErrors() { } public void testGetFieldErrors() { } public void testGetFieldValue() { } }././@LongLink0000000000000000000000000000023000000000000011560 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-binding/src/test/java/org/springframework/binding/message/DefaultMessageContextTests.javalibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-binding/src/test/java/org/springframew0000644000000000000000000000773011360615640027757 0ustar package org.springframework.binding.message; import java.io.Serializable; import java.util.Locale; import junit.framework.TestCase; import org.springframework.context.support.StaticMessageSource; public class DefaultMessageContextTests extends TestCase { private DefaultMessageContext context; protected void setUp() { StaticMessageSource messageSource = new StaticMessageSource(); messageSource.addMessage("message", Locale.getDefault(), "Hello world resolved!"); messageSource.addMessage("argmessage", Locale.getDefault(), "Hello world {0}!"); context = new DefaultMessageContext(messageSource); } public void testCreateMessageContext() { context.addMessage(new MessageBuilder().defaultText("Hello world!").build()); Message[] messages = context.getAllMessages(); assertEquals(1, messages.length); assertEquals("Hello world!", messages[0].getText()); assertEquals(Severity.INFO, messages[0].getSeverity()); assertEquals(null, messages[0].getSource()); } public void testResolveMessage() { context.addMessage(new MessageBuilder().warning().source(this).code("message").build()); Message[] messages = context.getMessagesBySource(this); assertEquals(1, messages.length); assertEquals("Hello world resolved!", messages[0].getText()); assertEquals(Severity.WARNING, messages[0].getSeverity()); assertEquals(this, messages[0].getSource()); } public void testResolveMessageDefaultText() { context.addMessage(new MessageBuilder().error().code("bogus").defaultText("Hello world fallback!").build()); Message[] messages = context.getAllMessages(); assertEquals(1, messages.length); assertEquals("Hello world fallback!", messages[0].getText()); assertEquals(Severity.ERROR, messages[0].getSeverity()); assertEquals(null, messages[0].getSource()); } public void testResolveMessageWithArgs() { context.addMessage(new MessageBuilder().error().source(this).code("argmessage").arg("Keith").defaultText( "Hello world fallback!").build()); Message[] messages = context.getAllMessages(); assertEquals(1, messages.length); assertEquals("Hello world Keith!", messages[0].getText()); assertEquals(Severity.ERROR, messages[0].getSeverity()); assertEquals(this, messages[0].getSource()); } public void testResolveMessageWithMultipleCodes() { context.addMessage(new MessageBuilder().error().source(this).code("bogus").code("argmessage").arg("Keith") .defaultText("Hello world fallback!").build()); Message[] messages = context.getMessagesBySource(this); assertEquals(1, messages.length); assertEquals("Hello world Keith!", messages[0].getText()); assertEquals(Severity.ERROR, messages[0].getSeverity()); assertEquals(this, messages[0].getSource()); } public void testSaveRestoreMessages() { context.addMessage(new MessageBuilder().defaultText("Info").build()); context.addMessage(new MessageBuilder().error().defaultText("Error").build()); context.addMessage(new MessageBuilder().warning().source(this).code("message").build()); assertEquals(2, context.getMessagesBySource(null).length); assertEquals(1, context.getMessagesBySource(this).length); StateManageableMessageContext manageable = context; Serializable messages = manageable.createMessagesMemento(); context = new DefaultMessageContext(context.getMessageSource()); assertEquals(0, context.getAllMessages().length); manageable = context; manageable.restoreMessages(messages); assertEquals(2, context.getMessagesBySource(null).length); assertEquals(1, context.getMessagesBySource(this).length); } public void testMessageSequencing() { context.addMessage(new MessageBuilder().defaultText("Info").build()); context.addMessage(new MessageBuilder().warning().source(this).code("message").build()); context.addMessage(new MessageBuilder().error().defaultText("Error").build()); Message[] messages = context.getAllMessages(); assertEquals("Info", messages[0].getText()); assertEquals("Error", messages[1].getText()); assertEquals("Hello world resolved!", messages[2].getText()); } } ././@LongLink0000000000000000000000000000017100000000000011564 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-binding/src/test/java/org/springframework/binding/mapping/libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-binding/src/test/java/org/springframew0000755000000000000000000000000011360615636027753 5ustar ././@LongLink0000000000000000000000000000022000000000000011557 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-binding/src/test/java/org/springframework/binding/mapping/DefaultMapperTests.javalibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-binding/src/test/java/org/springframew0000644000000000000000000000651411360615636027763 0ustar package org.springframework.binding.mapping; import java.util.HashMap; import java.util.Locale; import java.util.Map; import junit.framework.TestCase; import org.springframework.binding.expression.ExpressionParser; import org.springframework.binding.expression.el.DefaultExpressionFactoryUtils; import org.springframework.binding.expression.el.ELExpressionParser; import org.springframework.binding.mapping.impl.DefaultMapper; import org.springframework.binding.mapping.impl.DefaultMapping; public class DefaultMapperTests extends TestCase { private DefaultMapper mapper = new DefaultMapper(); private ExpressionParser parser = new ELExpressionParser(DefaultExpressionFactoryUtils.createExpressionFactory()); public void testMapping() { DefaultMapping mapping1 = new DefaultMapping(parser.parseExpression("foo", null), parser.parseExpression("bar", null)); DefaultMapping mapping2 = new DefaultMapping(parser.parseExpression("foo", null), parser.parseExpression("baz", null)); mapper.addMapping(mapping1); mapper.addMapping(mapping2); assertEquals(2, mapper.getMappings().length); TestBean bean1 = new TestBean(); bean1.foo = "a"; TestBean2 bean2 = new TestBean2(); MappingResults results = mapper.map(bean1, bean2); assertSame(bean1, results.getSource()); assertSame(bean2, results.getTarget()); assertEquals(2, results.getAllResults().size()); assertEquals(0, results.getErrorResults().size()); assertEquals("a", bean2.bar); assertEquals("a", bean2.baz); assertEquals(1, results.getResults(new MappingResultsCriteria() { public boolean test(MappingResult result) { if (result.getMapping().getTargetExpression().getExpressionString().equals("baz")) { return true; } else { return false; } } }).size()); } public void testMappingConversion() { DefaultMapping mapping1 = new DefaultMapping(parser.parseExpression("beep", null), parser.parseExpression( "beep", null)); mapper.addMapping(mapping1); Map bean1 = new HashMap(); bean1.put("beep", "en"); TestBean2 bean2 = new TestBean2(); MappingResults results = mapper.map(bean1, bean2); assertFalse(results.hasErrorResults()); assertEquals(Locale.ENGLISH, bean2.beep); } public void testMappingConversionError() { DefaultMapping mapping1 = new DefaultMapping(parser.parseExpression("boop", null), parser.parseExpression( "boop", null)); mapper.addMapping(mapping1); Map bean1 = new HashMap(); bean1.put("boop", "bogus"); TestBean2 bean2 = new TestBean2(); MappingResults results = mapper.map(bean1, bean2); assertEquals("typeMismatch", ((MappingResult) results.getErrorResults().get(0)).getCode()); } public static class TestBean { private String foo; public String getFoo() { return foo; } public void setFoo(String foo) { this.foo = foo; } } public static class TestBean2 { private String bar; private String baz; private Integer boop; private Locale beep; public String getBar() { return bar; } public String getBaz() { return baz; } public void setBaz(String baz) { this.baz = baz; } public void setBar(String bar) { this.bar = bar; } public Integer getBoop() { return boop; } public void setBoop(Integer boop) { this.boop = boop; } public Locale getBeep() { return beep; } public void setBeep(Locale beep) { this.beep = beep; } } }././@LongLink0000000000000000000000000000017000000000000011563 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-binding/src/test/java/org/springframework/binding/method/libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-binding/src/test/java/org/springframew0000755000000000000000000000000011360615644027752 5ustar ././@LongLink0000000000000000000000000000021300000000000011561 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-binding/src/test/java/org/springframework/binding/method/MethodKeyTests.javalibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-binding/src/test/java/org/springframew0000644000000000000000000000460011360615632027751 0ustar /* * Copyright 2004-2008 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.springframework.binding.method; import java.io.File; import java.io.FilenameFilter; import java.lang.reflect.Method; import junit.framework.TestCase; /** * @author Rob Harrop * @since 1.0 */ public class MethodKeyTests extends TestCase { private static final Method LIST_NO_ARGS = safeGetMethod(File.class, "list", null); private static final Method LIST_FILENAME_FILTER = safeGetMethod(File.class, "list", new Class[] { FilenameFilter.class }); public void testGetMethodWithNoArgs() throws Exception { MethodKey key = new MethodKey(File.class, "list", new Class[0]); Method m = key.getMethod(); assertEquals(LIST_NO_ARGS, m); } public void testGetMoreGenericMethod() throws Exception { MethodKey key = new MethodKey(Object.class, "equals", new Class[] { Long.class }); assertEquals(safeGetMethod(Object.class, "equals", new Class[] { Object.class }), key.getMethod()); } public void testGetMethodWithSingleArg() throws Exception { MethodKey key = new MethodKey(File.class, "list", new Class[] { FilenameFilter.class }); Method m = key.getMethod(); assertEquals(LIST_FILENAME_FILTER, m); } public void testGetMethodWithSingleNullArgAndValidMatch() throws Exception { MethodKey key = new MethodKey(File.class, "list", new Class[] { null }); Method m = key.getMethod(); assertEquals(LIST_FILENAME_FILTER, m); } public void testGetMethodWithSingleNullAndUnclearMatch() throws Exception { new MethodKey(File.class, "listFiles", new Class[] { null }); } private static final Method safeGetMethod(Class type, String name, Class[] argTypes) { try { return type.getMethod(name, argTypes); } catch (NoSuchMethodException e) { throw new IllegalStateException("Unable to safely access a known method via reflection. " + e.getMessage()); } } } ././@LongLink0000000000000000000000000000021700000000000011565 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-binding/src/test/java/org/springframework/binding/method/MethodInvokerTests.javalibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-binding/src/test/java/org/springframew0000644000000000000000000000527511360615644027765 0ustar /* * Copyright 2004-2008 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.springframework.binding.method; import junit.framework.TestCase; import org.springframework.binding.expression.support.StaticExpression; /** * Unit tests for {@link org.springframework.binding.method.MethodInvoker}. * * @author Erwin Vervaet * @author Jeremy Grelle */ public class MethodInvokerTests extends TestCase { private MethodInvoker methodInvoker; protected void setUp() throws Exception { this.methodInvoker = new MethodInvoker(); } public void testInvocationTargetException() { try { methodInvoker.invoke(new MethodSignature("test"), new TestObject(), null); fail(); } catch (MethodInvocationException e) { assertTrue(e.getTargetException() instanceof IllegalArgumentException); assertEquals("just testing", e.getTargetException().getMessage()); } } public void testInvalidMethod() { try { methodInvoker.invoke(new MethodSignature("bogus"), new TestObject(), null); fail(); } catch (MethodInvocationException e) { assertTrue(e.getTargetException() instanceof InvalidMethodKeyException); } } public void testBeanArg() { Parameters parameters = new Parameters(); Bean bean = new Bean(); parameters.add(new Parameter(Bean.class, new StaticExpression(bean))); MethodSignature method = new MethodSignature("testBeanArg", parameters); assertSame(bean, methodInvoker.invoke(method, new TestObject(), null)); } public void testPrimitiveArg() { Parameters parameters = new Parameters(); parameters.add(new Parameter(Boolean.class, new StaticExpression(Boolean.TRUE))); MethodSignature method = new MethodSignature("testPrimitiveArg", parameters); assertEquals(Boolean.TRUE, methodInvoker.invoke(method, new TestObject(), null)); } private static class TestObject { public void test() { throw new IllegalArgumentException("just testing"); } public Object testBeanArg(Bean bean) { return bean; } public boolean testPrimitiveArg(boolean primitive) { return primitive; } } private static class Bean { String value; } } ././@LongLink0000000000000000000000000000023300000000000011563 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-binding/src/test/java/org/springframework/binding/method/MethodInvocationExceptionTests.javalibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-binding/src/test/java/org/springframew0000644000000000000000000000350111360615640027747 0ustar /* * Copyright 2004-2008 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.springframework.binding.method; import java.io.IOException; import java.lang.reflect.InvocationTargetException; import junit.framework.TestCase; /** * Test case for {@link MethodInvocationException}. * * @author Erwin Vervaet */ public class MethodInvocationExceptionTests extends TestCase { public void testGetTargetException() { // runtime exception IllegalArgumentException iae = new IllegalArgumentException("test"); MethodInvocationException ex = testException(iae); assertSame(iae, ex.getTargetException()); // exception IOException ioe = new IOException("test"); ex = testException(ioe); assertSame(ioe, ex.getTargetException()); // nested InvocationTargetException ite = new InvocationTargetException(ioe); ex = testException(ite); assertSame(ioe, ex.getTargetException()); // deep nesting ite = new InvocationTargetException(new InvocationTargetException(ioe)); ex = testException(ite); assertSame(ioe, ex.getTargetException()); } // internal helpers private MethodInvocationException testException(Throwable cause) { return new MethodInvocationException(new MethodSignature("test"), null, cause); } } ././@LongLink0000000000000000000000000000017000000000000011563 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-binding/src/test/java/org/springframework/binding/format/libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-binding/src/test/java/org/springframew0000755000000000000000000000000011360615646027754 5ustar ././@LongLink0000000000000000000000000000017100000000000011564 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-binding/src/test/java/org/springframework/binding/convert/libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-binding/src/test/java/org/springframew0000755000000000000000000000000011360615636027753 5ustar ././@LongLink0000000000000000000000000000020100000000000011556 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-binding/src/test/java/org/springframework/binding/convert/service/libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-binding/src/test/java/org/springframew0000755000000000000000000000000011360615642027750 5ustar ././@LongLink0000000000000000000000000000024700000000000011570 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-binding/src/test/java/org/springframework/binding/convert/service/StaticConversionExecutorImplTests.javalibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-binding/src/test/java/org/springframew0000644000000000000000000000353211360615642027755 0ustar /* * Copyright 2004-2008 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.springframework.binding.convert.service; import java.util.Date; import junit.framework.TestCase; import org.springframework.binding.convert.ConversionExecutionException; import org.springframework.binding.convert.converters.StringToDate; public class StaticConversionExecutorImplTests extends TestCase { private StaticConversionExecutor conversionExecutor; protected void setUp() throws Exception { StringToDate stringToDate = new StringToDate(); conversionExecutor = new StaticConversionExecutor(String.class, Date.class, stringToDate); } public void testTypeConversion() { assertTrue(conversionExecutor.execute("2008-10-10").getClass().equals(Date.class)); } public void testAssignmentCompatibleTypeConversion() { java.sql.Date date = new java.sql.Date(123L); try { assertSame(date, conversionExecutor.execute(date)); fail("Should have failed"); } catch (ConversionExecutionException e) { } } public void testConvertNull() { assertNull(conversionExecutor.execute(null)); } public void testIllegalType() { try { conversionExecutor.execute(new StringBuffer()); fail(); } catch (ConversionExecutionException e) { // expected } } } ././@LongLink0000000000000000000000000000024300000000000011564 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-binding/src/test/java/org/springframework/binding/convert/service/DefaultConversionServiceTests.javalibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-binding/src/test/java/org/springframew0000644000000000000000000005614311360615636027766 0ustar /* * Copyright 2004-2008 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.springframework.binding.convert.service; import java.math.BigDecimal; import java.security.Principal; import java.util.AbstractList; import java.util.ArrayList; import java.util.Collection; import java.util.HashMap; import java.util.Iterator; import java.util.LinkedHashSet; import java.util.LinkedList; import java.util.List; import java.util.Locale; import java.util.Set; import java.util.StringTokenizer; import junit.framework.TestCase; import org.springframework.binding.convert.ConversionException; import org.springframework.binding.convert.ConversionExecutionException; import org.springframework.binding.convert.ConversionExecutor; import org.springframework.binding.convert.ConversionExecutorNotFoundException; import org.springframework.binding.convert.converters.Converter; import org.springframework.binding.convert.converters.FormattedStringToNumber; import org.springframework.binding.convert.converters.StringToBoolean; import org.springframework.binding.convert.converters.StringToObject; import org.springframework.binding.convert.converters.TwoWayConverter; import org.springframework.binding.format.DefaultNumberFormatFactory; /** * Test case for the default conversion service. * * @author Keith Donald */ public class DefaultConversionServiceTests extends TestCase { public void testConvertCompatibleTypes() { DefaultConversionService service = new DefaultConversionService(); List lst = new ArrayList(); assertSame(lst, service.getConversionExecutor(ArrayList.class, List.class).execute(lst)); } public void testOverrideConverter() { Converter customConverter = new StringToBoolean("ja", "nee"); DefaultConversionService service = new DefaultConversionService(); StaticConversionExecutor executor = (StaticConversionExecutor) service.getConversionExecutor(String.class, Boolean.class); assertNotSame(customConverter, executor.getConverter()); try { executor.execute("ja"); fail(); } catch (ConversionExecutionException e) { // expected } service.addConverter(customConverter); executor = (StaticConversionExecutor) service.getConversionExecutor(String.class, Boolean.class); assertSame(customConverter, executor.getConverter()); assertTrue(((Boolean) executor.execute("ja")).booleanValue()); } public void testTargetClassNotSupported() { DefaultConversionService service = new DefaultConversionService(); try { service.getConversionExecutor(String.class, HashMap.class); fail("Should have thrown an exception"); } catch (ConversionExecutorNotFoundException e) { } } public void testValidConversion() { DefaultConversionService service = new DefaultConversionService(); ConversionExecutor executor = service.getConversionExecutor(String.class, Integer.class); Integer three = (Integer) executor.execute("3"); assertEquals(3, three.intValue()); ConversionExecutor executor2 = service.getConversionExecutor(Integer.class, String.class); String threeString = (String) executor2.execute(new Integer(3)); assertEquals("3", threeString); } public void testRegisterConverter() { GenericConversionService service = new GenericConversionService(); FormattedStringToNumber converter = new FormattedStringToNumber(); DefaultNumberFormatFactory numberFormatFactory = new DefaultNumberFormatFactory(); numberFormatFactory.setLocale(Locale.US); converter.setNumberFormatFactory(numberFormatFactory); service.addConverter(converter); ConversionExecutor executor = service.getConversionExecutor(String.class, Integer.class); Integer three = (Integer) executor.execute("3,000"); assertEquals(3000, three.intValue()); ConversionExecutor executor2 = service.getConversionExecutor(Integer.class, String.class); String string = (String) executor2.execute(new Integer(3000)); assertEquals("3,000", string); } public void testRegisterCustomConverter() { DefaultConversionService service = new DefaultConversionService(); FormattedStringToNumber converter = new FormattedStringToNumber(); DefaultNumberFormatFactory numberFormatFactory = new DefaultNumberFormatFactory(); numberFormatFactory.setLocale(Locale.US); converter.setNumberFormatFactory(numberFormatFactory); service.addConverter("usaNumber", converter); ConversionExecutor executor = service.getConversionExecutor("usaNumber", String.class, Integer.class); Integer three = (Integer) executor.execute("3,000"); assertEquals(3000, three.intValue()); ConversionExecutor executor2 = service.getConversionExecutor("usaNumber", Integer.class, String.class); String string = (String) executor2.execute(new Integer(3000)); assertEquals("3,000", string); } public void testRegisterCustomConverterForSameType() { DefaultConversionService service = new DefaultConversionService(); service.addConverter("trimmer", new Trimmer()); ConversionExecutor executor = service.getConversionExecutor("trimmer", String.class, String.class); assertEquals("a string", executor.execute("a string ")); } public void testRegisterCustomConverterForSameTypeNotCompatibleSource() { DefaultConversionService service = new DefaultConversionService(); service.addConverter("trimmer", new Trimmer()); try { service.getConversionExecutor("trimmer", Object.class, String.class); } catch (ConversionException e) { } } public void testRegisterCustomConverterForSameTypeNotCompatibleTarget() { DefaultConversionService service = new DefaultConversionService(); service.addConverter("trimmer", new Trimmer()); try { service.getConversionExecutor("trimmer", String.class, Object.class); } catch (ConversionException e) { } } public void testRegisterCustomConverterReverseComparsion() { DefaultConversionService service = new DefaultConversionService(); service.addConverter("princy", new CustomTwoWayConverter()); ConversionExecutor executor = service.getConversionExecutor("princy", Principal.class, String.class); assertEquals("name", executor.execute(new Principal() { public String getName() { return "name"; } })); } public void testRegisterCustomConverterReverseNotCompatibleSource() { DefaultConversionService service = new DefaultConversionService(); service.addConverter("princy", new CustomTwoWayConverter()); try { service.getConversionExecutor("trimmer", Principal.class, Object.class); } catch (ConversionException e) { } } public void testRegisterCustomConverterArrayToArray() { DefaultConversionService service = new DefaultConversionService(); service.addConverter("princy", new CustomTwoWayConverter()); ConversionExecutor executor = service.getConversionExecutor("princy", String[].class, Principal[].class); Principal[] p = (Principal[]) executor.execute(new String[] { "princy1", "princy2" }); assertEquals("princy1", p[0].getName()); assertEquals("princy2", p[1].getName()); } public void testRegisterCustomConverterArrayToArrayReverse() { DefaultConversionService service = new DefaultConversionService(); service.addConverter("princy", new CustomTwoWayConverter()); ConversionExecutor executor = service.getConversionExecutor("princy", Principal[].class, String[].class); final Principal princy1 = new Principal() { public String getName() { return "princy1"; } }; final Principal princy2 = new Principal() { public String getName() { return "princy2"; } }; String[] p = (String[]) executor.execute(new Principal[] { princy1, princy2 }); assertEquals("princy1", p[0]); assertEquals("princy2", p[1]); } public void testRegisterCustomConverterArrayToArrayBogus() { DefaultConversionService service = new DefaultConversionService(); service.addConverter("princy", new CustomTwoWayConverter()); try { service.getConversionExecutor("princy", Integer[].class, Principal[].class); fail("Should have failed"); } catch (ConversionExecutorNotFoundException e) { } } public void testRegisterCustomConverterArrayToList() { DefaultConversionService service = new DefaultConversionService(); service.addConverter("princy", new CustomTwoWayConverter()); ConversionExecutor executor = service.getConversionExecutor("princy", String[].class, List.class); List list = (List) executor.execute(new String[] { "princy1", "princy2" }); assertEquals("princy1", ((Principal) list.get(0)).getName()); assertEquals("princy2", ((Principal) list.get(1)).getName()); } public void testRegisterCustomConverterArrayToListReverse() { DefaultConversionService service = new DefaultConversionService(); service.addConverter("princy", new CustomTwoWayConverter()); ConversionExecutor executor = service.getConversionExecutor("princy", Principal[].class, List.class); final Principal princy1 = new Principal() { public String getName() { return "princy1"; } }; final Principal princy2 = new Principal() { public String getName() { return "princy2"; } }; List p = (List) executor.execute(new Principal[] { princy1, princy2 }); assertEquals("princy1", p.get(0)); assertEquals("princy2", p.get(1)); } public void testRegisterCustomConverterArrayToListBogus() { DefaultConversionService service = new DefaultConversionService(); service.addConverter("princy", new CustomTwoWayConverter()); try { service.getConversionExecutor("princy", Integer[].class, List.class); fail("Should have failed"); } catch (ConversionExecutorNotFoundException e) { } } public void testRegisterCustomConverterListToArray() { DefaultConversionService service = new DefaultConversionService(); service.addConverter("princy", new CustomTwoWayConverter()); ConversionExecutor executor = service.getConversionExecutor("princy", List.class, Principal[].class); List princyList = new ArrayList(); princyList.add("princy1"); princyList.add("princy2"); Principal[] p = (Principal[]) executor.execute(princyList); assertEquals("princy1", p[0].getName()); assertEquals("princy2", p[1].getName()); } public void testRegisterCustomConverterListToArrayReverse() { DefaultConversionService service = new DefaultConversionService(); service.addConverter("princy", new CustomTwoWayConverter()); ConversionExecutor executor = service.getConversionExecutor("princy", List.class, String[].class); final Principal princy1 = new Principal() { public String getName() { return "princy1"; } }; final Principal princy2 = new Principal() { public String getName() { return "princy2"; } }; List princyList = new ArrayList(); princyList.add(princy1); princyList.add(princy2); String[] p = (String[]) executor.execute(princyList); assertEquals("princy1", p[0]); assertEquals("princy2", p[1]); } public void testRegisterCustomConverterListToArrayBogus() { DefaultConversionService service = new DefaultConversionService(); service.addConverter("princy", new CustomTwoWayConverter()); try { service.getConversionExecutor("princy", List.class, Integer[].class); fail("Should have failed"); } catch (ConversionExecutorNotFoundException e) { } } public void testRegisterCustomConverterObjectToArray() { DefaultConversionService service = new DefaultConversionService(); service.addConverter("princy", new CustomTwoWayConverter()); ConversionExecutor executor = service.getConversionExecutor("princy", String.class, Principal[].class); Principal[] p = (Principal[]) executor.execute("princy1"); assertEquals("princy1", p[0].getName()); } public void testRegisterCustomConverterObjectToArrayReverse() { DefaultConversionService service = new DefaultConversionService(); service.addConverter("princy", new CustomTwoWayConverter()); ConversionExecutor executor = service.getConversionExecutor("princy", Principal.class, String[].class); final Principal princy1 = new Principal() { public String getName() { return "princy1"; } }; String[] p = (String[]) executor.execute(princy1); assertEquals("princy1", p[0]); } public void testRegisterCustomConverterObjectToArrayBogus() { DefaultConversionService service = new DefaultConversionService(); service.addConverter("princy", new CustomTwoWayConverter()); try { service.getConversionExecutor("princy", Integer.class, Principal[].class); fail("Should have failed"); } catch (ConversionExecutorNotFoundException e) { } } public void testRegisterCustomConverterObjectToList() { DefaultConversionService service = new DefaultConversionService(); service.addConverter("princy", new CustomTwoWayConverter()); ConversionExecutor executor = service.getConversionExecutor("princy", String.class, List.class); List list = (List) executor.execute("princy1"); assertEquals("princy1", ((Principal) list.get(0)).getName()); } public void testRegisterCustomConverterCsvStringToList() { DefaultConversionService service = new DefaultConversionService(); service.addConverter("princy", new PrincipalCsvStringToListConverter()); ConversionExecutor executor = service.getConversionExecutor("princy", String.class, List.class); List list = (List) executor.execute("princy1,princy2"); assertEquals("princy1", ((Principal) list.get(0)).getName()); assertEquals("princy2", ((Principal) list.get(1)).getName()); } public void testRegisterCustomConverterObjectToListBogus() { DefaultConversionService service = new DefaultConversionService(); service.addConverter("princy", new CustomTwoWayConverter()); ConversionExecutor executor = service.getConversionExecutor("princy", Integer.class, List.class); try { executor.execute(new Integer(1)); fail("Should have failed"); } catch (ConversionExecutionException e) { } } public void testRegisterCustomConverterObjectToListReverse() { DefaultConversionService service = new DefaultConversionService(); service.addConverter("princy", new CustomTwoWayConverter()); ConversionExecutor executor = service.getConversionExecutor("princy", Principal.class, List.class); final Principal princy1 = new Principal() { public String getName() { return "princy1"; } }; List list = (List) executor.execute(princy1); assertEquals("princy1", list.get(0)); } public void testRegisterCustomConverterListToList() { DefaultConversionService service = new DefaultConversionService(); service.addConverter("princy", new CustomTwoWayConverter()); ConversionExecutor executor = service.getConversionExecutor("princy", List.class, List.class); List princyList = new ArrayList(); princyList.add("princy1"); princyList.add("princy2"); List list = (List) executor.execute(princyList); assertEquals("princy1", ((Principal) list.get(0)).getName()); assertEquals("princy2", ((Principal) list.get(1)).getName()); } public void testRegisterCustomConverterListToListReverse() { DefaultConversionService service = new DefaultConversionService(); service.addConverter("princy", new CustomTwoWayConverter()); ConversionExecutor executor = service.getConversionExecutor("princy", List.class, List.class); final Principal princy1 = new Principal() { public String getName() { return "princy1"; } }; final Principal princy2 = new Principal() { public String getName() { return "princy2"; } }; List princyList = new ArrayList(); princyList.add(princy1); princyList.add(princy2); List list = (List) executor.execute(princyList); assertEquals("princy1", list.get(0)); assertEquals("princy2", list.get(1)); } public void testRegisterCustomConverterListToListBogus() { DefaultConversionService service = new DefaultConversionService(); service.addConverter("princy", new CustomTwoWayConverter()); ConversionExecutor executor = service.getConversionExecutor("princy", List.class, List.class); List princyList = new ArrayList(); princyList.add(new Integer(1)); try { executor.execute(princyList); fail("Should have failed"); } catch (ConversionExecutionException e) { } } public void testConversionPrimitive() { DefaultConversionService service = new DefaultConversionService(); ConversionExecutor executor = service.getConversionExecutor(String.class, int.class); Integer three = (Integer) executor.execute("3"); assertEquals(3, three.intValue()); } public void testArrayToArrayConversion() { DefaultConversionService service = new DefaultConversionService(); ConversionExecutor executor = service.getConversionExecutor(String[].class, Integer[].class); Integer[] result = (Integer[]) executor.execute(new String[] { "1", "2", "3" }); assertEquals(new Integer(1), result[0]); assertEquals(new Integer(2), result[1]); assertEquals(new Integer(3), result[2]); } public void testArrayToArrayPrimitiveConversion() { DefaultConversionService service = new DefaultConversionService(); ConversionExecutor executor = service.getConversionExecutor(String[].class, int[].class); int[] result = (int[]) executor.execute(new String[] { "1", "2", "3" }); assertEquals(1, result[0]); assertEquals(2, result[1]); assertEquals(3, result[2]); } public void testArrayToListConversion() { DefaultConversionService service = new DefaultConversionService(); ConversionExecutor executor = service.getConversionExecutor(String[].class, List.class); List result = (List) executor.execute(new String[] { "1", "2", "3" }); assertEquals("1", result.get(0)); assertEquals("2", result.get(1)); assertEquals("3", result.get(2)); } public void testListToArrayConversion() { DefaultConversionService service = new DefaultConversionService(); ConversionExecutor executor = service.getConversionExecutor(Collection.class, String[].class); List list = new ArrayList(); list.add("1"); list.add("2"); list.add("3"); String[] result = (String[]) executor.execute(list); assertEquals("1", result[0]); assertEquals("2", result[1]); assertEquals("3", result[2]); } public void testSetToListConversion() { DefaultConversionService service = new DefaultConversionService(); ConversionExecutor executor = service.getConversionExecutor(Set.class, List.class); Set set = new LinkedHashSet(); set.add("1"); set.add("2"); set.add("3"); List result = (List) executor.execute(set); assertEquals("1", result.get(0)); assertEquals("2", result.get(1)); assertEquals("3", result.get(2)); } public void testListToArrayConversionWithComponentConversion() { DefaultConversionService service = new DefaultConversionService(); ConversionExecutor executor = service.getConversionExecutor(Collection.class, Integer[].class); List list = new ArrayList(); list.add("1"); list.add("2"); list.add("3"); Integer[] result = (Integer[]) executor.execute(list); assertEquals(new Integer(1), result[0]); assertEquals(new Integer(2), result[1]); assertEquals(new Integer(3), result[2]); } public void testArrayToLinkedListConversion() { DefaultConversionService service = new DefaultConversionService(); ConversionExecutor executor = service.getConversionExecutor(String[].class, LinkedList.class); LinkedList result = (LinkedList) executor.execute(new String[] { "1", "2", "3" }); assertEquals("1", result.get(0)); assertEquals("2", result.get(1)); assertEquals("3", result.get(2)); } public void testArrayAbstractListConversion() { DefaultConversionService service = new DefaultConversionService(); try { service.getConversionExecutor(String[].class, AbstractList.class); } catch (IllegalArgumentException e) { } } public void testStringToArrayConversion() { DefaultConversionService service = new DefaultConversionService(); ConversionExecutor executor = service.getConversionExecutor(String.class, String[].class); String[] result = (String[]) executor.execute("1,2,3"); assertEquals(1, result.length); assertEquals("1,2,3", result[0]); } public void testStringToListConversion() { DefaultConversionService service = new DefaultConversionService(); ConversionExecutor executor = service.getConversionExecutor(String.class, List.class); List result = (List) executor.execute("1,2,3"); assertEquals(1, result.size()); assertEquals("1,2,3", result.get(0)); } public void testStringToArrayConversionWithElementConversion() { DefaultConversionService service = new DefaultConversionService(); ConversionExecutor executor = service.getConversionExecutor(String.class, Integer[].class); Integer[] result = (Integer[]) executor.execute("123"); assertEquals(1, result.length); assertEquals(new Integer(123), result[0]); } public void testGetConversionExecutorsForSource() { DefaultConversionService service1 = new DefaultConversionService(); service1.addConverter(new CustomConverter()); GenericConversionService service2 = new GenericConversionService(); FormattedStringToNumber formatterConverter = new FormattedStringToNumber(BigDecimal.class); service2.addConverter(formatterConverter); service2.setParent(service1); Set converters = service2.getConversionExecutors(String.class); Iterator it = converters.iterator(); while (it.hasNext()) { ConversionExecutor executor = (ConversionExecutor) it.next(); if (executor.getTargetClass().equals(BigDecimal.class)) { StaticConversionExecutor se = (StaticConversionExecutor) executor; assertSame(formatterConverter, se.getConverter()); } } assertEquals(15, converters.size()); } private static class CustomConverter implements Converter { public Object convertSourceToTargetClass(final Object source, Class targetClass) throws Exception { return new Principal() { public String getName() { return (String) source; } }; } public Class getSourceClass() { return String.class; } public Class getTargetClass() { return Principal.class; } } private static class CustomTwoWayConverter extends CustomConverter implements TwoWayConverter { public Object convertTargetToSourceClass(Object target, Class sourceClass) throws Exception { return ((Principal) target).getName(); } } private static class Trimmer implements Converter { public Object convertSourceToTargetClass(Object source, Class targetClass) throws Exception { return ((String) source).trim(); } public Class getSourceClass() { return String.class; } public Class getTargetClass() { return String.class; } } private static class PrincipalCsvStringToListConverter extends StringToObject { public PrincipalCsvStringToListConverter() { super(List.class); } protected Object toObject(String string, Class targetClass) throws Exception { List principals = new ArrayList(); StringTokenizer tokenizer = new StringTokenizer(string, ","); while (tokenizer.hasMoreTokens()) { final String name = tokenizer.nextToken(); principals.add(new Principal() { public String getName() { return name; } }); } return principals; } protected String toString(Object object) throws Exception { throw new UnsupportedOperationException("No implemented"); } } }././@LongLink0000000000000000000000000000017400000000000011567 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-binding/src/test/java/org/springframework/binding/collection/libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-binding/src/test/java/org/springframew0000755000000000000000000000000011360615646027754 5ustar ././@LongLink0000000000000000000000000000023300000000000011563 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-binding/src/test/java/org/springframework/binding/collection/StringKeyedMapAdapterTests.javalibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-binding/src/test/java/org/springframew0000644000000000000000000000474311360615640027760 0ustar /* * Copyright 2004-2008 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.springframework.binding.collection; import java.util.Collection; import java.util.HashMap; import java.util.Iterator; import java.util.Map; import java.util.Set; import junit.framework.TestCase; /** * Unit tests for {@link org.springframework.binding.collection.StringKeyedMapAdapter}. */ public class StringKeyedMapAdapterTests extends TestCase { private Map contents = new HashMap(); private StringKeyedMapAdapter map = new StringKeyedMapAdapter() { protected Object getAttribute(String key) { return contents.get(key); } protected Iterator getAttributeNames() { return contents.keySet().iterator(); } protected void removeAttribute(String key) { contents.remove(key); } protected void setAttribute(String key, Object value) { contents.put(key, value); } }; public void testGetPutRemove() { assertTrue(map.size() == 0); assertTrue(map.isEmpty()); assertNull(map.get("foo")); assertFalse(map.containsKey("foo")); map.put("foo", "bar"); assertTrue(map.size() == 1); assertFalse(map.isEmpty()); assertNotNull(map.get("foo")); assertTrue(map.containsKey("foo")); assertTrue(map.containsValue("bar")); assertEquals("bar", map.get("foo")); map.remove("foo"); assertTrue(map.size() == 0); assertNull(map.get("foo")); } public void testPutAll() { Map all = new HashMap(); all.put("foo", "bar"); all.put("bar", "baz"); map.putAll(all); assertTrue(map.size() == 2); } public void testEntrySet() { map.put("foo", "bar"); map.put("bar", "baz"); Set entrySet = map.entrySet(); assertTrue(entrySet.size() == 2); } public void testKeySet() { map.put("foo", "bar"); map.put("bar", "baz"); Set keySet = map.keySet(); assertTrue(keySet.size() == 2); } public void testValues() { map.put("foo", "bar"); map.put("bar", "baz"); Collection values = map.values(); assertTrue(values.size() == 2); } } ././@LongLink0000000000000000000000000000023000000000000011560 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-binding/src/test/java/org/springframework/binding/collection/SharedMapDecoratorTests.javalibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-binding/src/test/java/org/springframew0000644000000000000000000000411311360615646027755 0ustar /* * Copyright 2004-2008 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.springframework.binding.collection; import java.util.Collection; import java.util.HashMap; import java.util.Map; import java.util.Set; import junit.framework.TestCase; /** * Unit tests for {@link org.springframework.binding.collection.SharedMapDecorator}. */ public class SharedMapDecoratorTests extends TestCase { private SharedMapDecorator map = new SharedMapDecorator(new HashMap()); public void testGetPutRemove() { assertTrue(map.size() == 0); assertTrue(map.isEmpty()); assertNull(map.get("foo")); assertFalse(map.containsKey("foo")); map.put("foo", "bar"); assertTrue(map.size() == 1); assertFalse(map.isEmpty()); assertNotNull(map.get("foo")); assertTrue(map.containsKey("foo")); assertTrue(map.containsValue("bar")); assertEquals("bar", map.get("foo")); map.remove("foo"); assertTrue(map.size() == 0); assertNull(map.get("foo")); } public void testPutAll() { Map all = new HashMap(); all.put("foo", "bar"); all.put("bar", "baz"); map.putAll(all); assertTrue(map.size() == 2); } public void testEntrySet() { map.put("foo", "bar"); map.put("bar", "baz"); Set entrySet = map.entrySet(); assertTrue(entrySet.size() == 2); } public void testKeySet() { map.put("foo", "bar"); map.put("bar", "baz"); Set keySet = map.keySet(); assertTrue(keySet.size() == 2); } public void testValues() { map.put("foo", "bar"); map.put("bar", "baz"); Collection values = map.values(); assertTrue(values.size() == 2); } } ././@LongLink0000000000000000000000000000022100000000000011560 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-binding/src/test/java/org/springframework/binding/collection/MapAccessorTests.javalibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-binding/src/test/java/org/springframew0000644000000000000000000000261211360615636027756 0ustar package org.springframework.binding.collection; import java.util.HashMap; import java.util.Map; import junit.framework.TestCase; public class MapAccessorTests extends TestCase { private MapAccessor accessor; protected void setUp() throws Exception { Map map = new HashMap(); map.put("string", "hello"); map.put("integer", new Integer(9)); map.put("null", null); this.accessor = new MapAccessor(map); } public void testAccessNullAttribute() { assertEquals(null, accessor.get("null")); assertEquals(null, accessor.get("null", "something else")); assertEquals(null, accessor.getRequired("null")); assertEquals(null, accessor.getString("null")); assertEquals(null, accessor.getRequiredString("null")); assertEquals(null, accessor.getInteger("null")); assertEquals(null, accessor.getRequiredInteger("null")); assertEquals(null, accessor.getCollection("null")); assertEquals(null, accessor.getRequiredCollection("null")); } public void testGetString() { assertEquals("hello", accessor.getString("string")); assertEquals("hello", accessor.getRequiredString("string")); } public void testGetInteger() { assertEquals(new Integer(9), accessor.getInteger("integer")); assertEquals(new Integer(9), accessor.getRequiredInteger("integer")); } public void testGetRequiredMissingKey() { try { accessor.getRequired("bogus"); } catch (IllegalArgumentException e) { } } } ././@LongLink0000000000000000000000000000022700000000000011566 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-binding/src/test/java/org/springframework/binding/collection/CompositeIteratorTests.javalibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-binding/src/test/java/org/springframew0000644000000000000000000000563211360615634027761 0ustar /* * Copyright 2004-2008 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.springframework.binding.collection; import java.util.Arrays; import java.util.Iterator; import java.util.List; import java.util.NoSuchElementException; import junit.framework.TestCase; /** * Test case for {@link CompositeIterator}. * * @author Erwin Vervaet */ public class CompositeIteratorTests extends TestCase { public void testNoIterators() { CompositeIterator it = new CompositeIterator(); assertFalse(it.hasNext()); try { it.next(); fail(); } catch (NoSuchElementException e) { // expected } } public void testSingleIterator() { CompositeIterator it = new CompositeIterator(); it.add(Arrays.asList(new String[] { "0", "1" }).iterator()); for (int i = 0; i < 2; i++) { assertTrue(it.hasNext()); assertEquals(String.valueOf(i), it.next()); } assertFalse(it.hasNext()); try { it.next(); fail(); } catch (NoSuchElementException e) { // expected } } public void testMultipleIterators() { CompositeIterator it = new CompositeIterator(); it.add(Arrays.asList(new String[] { "0", "1" }).iterator()); it.add(Arrays.asList(new String[] { "2" }).iterator()); it.add(Arrays.asList(new String[] { "3", "4" }).iterator()); for (int i = 0; i < 5; i++) { assertTrue(it.hasNext()); assertEquals(String.valueOf(i), it.next()); } assertFalse(it.hasNext()); try { it.next(); fail(); } catch (NoSuchElementException e) { // expected } } public void testInUse() { List list = Arrays.asList(new String[] { "0", "1" }); CompositeIterator it = new CompositeIterator(); it.add(list.iterator()); it.hasNext(); try { it.add(list.iterator()); fail(); } catch (IllegalStateException e) { // expected } it = new CompositeIterator(); it.add(list.iterator()); it.next(); try { it.add(list.iterator()); fail(); } catch (IllegalStateException e) { // expected } } public void testDuplicateIterators() { List list = Arrays.asList(new String[] { "0", "1" }); Iterator iterator = list.iterator(); CompositeIterator it = new CompositeIterator(); it.add(iterator); it.add(list.iterator()); try { it.add(iterator); fail(); } catch (IllegalArgumentException e) { // expected } } } libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-binding/pom.xml0000644000000000000000000000315411360615644023367 0ustar 4.0.0 org.springframework.webflow spring-binding jar Spring Binding 2.0.9.RELEASE commons-logging commons-logging 1.1.1 org.springframework spring-beans ${spring.version} org.springframework spring-context ${spring.version} org.springframework spring-core ${spring.version} ognl ognl 2.6.9 true javax.el el-api 1.0 provided maven2.java.net http://download.java.net/maven/2 2.5.6.SEC01 libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-binding/.settings/0000755000000000000000000000000011360615644023765 5ustar ././@LongLink0000000000000000000000000000015100000000000011562 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-binding/.settings/org.eclipse.jdt.ui.prefslibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-binding/.settings/org.eclipse.jdt.ui.p0000644000000000000000000002033711360615634027560 0ustar #Wed Jun 25 10:24:03 EDT 2008 eclipse.preferences.version=1 editor_save_participant_org.eclipse.jdt.ui.postsavelistener.cleanup=true formatter_profile=_Spring Java Conventions formatter_settings_version=11 org.eclipse.jdt.ui.exception.name=e org.eclipse.jdt.ui.gettersetter.use.is=false org.eclipse.jdt.ui.javadoc=false org.eclipse.jdt.ui.keywordthis=false org.eclipse.jdt.ui.overrideannotation=true org.eclipse.jdt.ui.text.custom_code_templates= sp_cleanup.add_default_serial_version_id=true sp_cleanup.add_generated_serial_version_id=false sp_cleanup.add_missing_annotations=true sp_cleanup.add_missing_deprecated_annotations=true sp_cleanup.add_missing_nls_tags=false sp_cleanup.add_missing_override_annotations=true sp_cleanup.add_serial_version_id=false sp_cleanup.always_use_blocks=true sp_cleanup.always_use_parentheses_in_expressions=false sp_cleanup.always_use_this_for_non_static_field_access=false sp_cleanup.always_use_this_for_non_static_method_access=false sp_cleanup.convert_to_enhanced_for_loop=false sp_cleanup.format_source_code=true sp_cleanup.make_local_variable_final=false sp_cleanup.make_parameters_final=false sp_cleanup.make_private_fields_final=true sp_cleanup.make_variable_declarations_final=true sp_cleanup.never_use_blocks=false sp_cleanup.never_use_parentheses_in_expressions=true sp_cleanup.on_save_use_additional_actions=false sp_cleanup.organize_imports=true sp_cleanup.qualify_static_field_accesses_with_declaring_class=false sp_cleanup.qualify_static_member_accesses_through_instances_with_declaring_class=true sp_cleanup.qualify_static_member_accesses_through_subtypes_with_declaring_class=true sp_cleanup.qualify_static_member_accesses_with_declaring_class=false sp_cleanup.qualify_static_method_accesses_with_declaring_class=false sp_cleanup.remove_private_constructors=true sp_cleanup.remove_trailing_whitespaces=false sp_cleanup.remove_trailing_whitespaces_all=true sp_cleanup.remove_trailing_whitespaces_ignore_empty=false sp_cleanup.remove_unnecessary_casts=true sp_cleanup.remove_unnecessary_nls_tags=false sp_cleanup.remove_unused_imports=false sp_cleanup.remove_unused_local_variables=false sp_cleanup.remove_unused_private_fields=true sp_cleanup.remove_unused_private_members=false sp_cleanup.remove_unused_private_methods=true sp_cleanup.remove_unused_private_types=true sp_cleanup.sort_members=false sp_cleanup.sort_members_all=false sp_cleanup.use_blocks=false sp_cleanup.use_blocks_only_for_return_and_throw=false sp_cleanup.use_parentheses_in_expressions=false sp_cleanup.use_this_for_non_static_field_access=false sp_cleanup.use_this_for_non_static_field_access_only_if_necessary=true sp_cleanup.use_this_for_non_static_method_access=false sp_cleanup.use_this_for_non_static_method_access_only_if_necessary=true ././@LongLink0000000000000000000000000000015300000000000011564 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-binding/.settings/org.eclipse.jdt.core.prefslibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-binding/.settings/org.eclipse.jdt.core0000644000000000000000000006441311360615644027641 0ustar #Fri Feb 13 15:52:19 EST 2009 eclipse.preferences.version=1 org.eclipse.jdt.core.codeComplete.argumentPrefixes= org.eclipse.jdt.core.codeComplete.argumentSuffixes= org.eclipse.jdt.core.codeComplete.fieldPrefixes= org.eclipse.jdt.core.codeComplete.fieldSuffixes= org.eclipse.jdt.core.codeComplete.localPrefixes= org.eclipse.jdt.core.codeComplete.localSuffixes= org.eclipse.jdt.core.codeComplete.staticFieldPrefixes= org.eclipse.jdt.core.codeComplete.staticFieldSuffixes= org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.2 org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve org.eclipse.jdt.core.compiler.compliance=1.4 org.eclipse.jdt.core.compiler.debug.lineNumber=generate org.eclipse.jdt.core.compiler.debug.localVariable=generate org.eclipse.jdt.core.compiler.debug.sourceFile=generate org.eclipse.jdt.core.compiler.doc.comment.support=enabled org.eclipse.jdt.core.compiler.problem.annotationSuperInterface=warning org.eclipse.jdt.core.compiler.problem.assertIdentifier=warning org.eclipse.jdt.core.compiler.problem.autoboxing=ignore org.eclipse.jdt.core.compiler.problem.deprecation=warning org.eclipse.jdt.core.compiler.problem.deprecationInDeprecatedCode=disabled org.eclipse.jdt.core.compiler.problem.deprecationWhenOverridingDeprecatedMethod=disabled org.eclipse.jdt.core.compiler.problem.discouragedReference=warning org.eclipse.jdt.core.compiler.problem.emptyStatement=ignore org.eclipse.jdt.core.compiler.problem.enumIdentifier=warning org.eclipse.jdt.core.compiler.problem.fallthroughCase=ignore org.eclipse.jdt.core.compiler.problem.fieldHiding=ignore org.eclipse.jdt.core.compiler.problem.finalParameterBound=warning org.eclipse.jdt.core.compiler.problem.finallyBlockNotCompletingNormally=warning org.eclipse.jdt.core.compiler.problem.forbiddenReference=error org.eclipse.jdt.core.compiler.problem.hiddenCatchBlock=warning org.eclipse.jdt.core.compiler.problem.incompatibleNonInheritedInterfaceMethod=warning org.eclipse.jdt.core.compiler.problem.incompleteEnumSwitch=ignore org.eclipse.jdt.core.compiler.problem.indirectStaticAccess=ignore org.eclipse.jdt.core.compiler.problem.invalidJavadoc=warning org.eclipse.jdt.core.compiler.problem.invalidJavadocTags=enabled org.eclipse.jdt.core.compiler.problem.invalidJavadocTagsDeprecatedRef=disabled org.eclipse.jdt.core.compiler.problem.invalidJavadocTagsNotVisibleRef=enabled org.eclipse.jdt.core.compiler.problem.invalidJavadocTagsVisibility=protected org.eclipse.jdt.core.compiler.problem.localVariableHiding=ignore org.eclipse.jdt.core.compiler.problem.methodWithConstructorName=warning org.eclipse.jdt.core.compiler.problem.missingDeprecatedAnnotation=ignore org.eclipse.jdt.core.compiler.problem.missingJavadocComments=ignore org.eclipse.jdt.core.compiler.problem.missingJavadocCommentsOverriding=disabled org.eclipse.jdt.core.compiler.problem.missingJavadocCommentsVisibility=public org.eclipse.jdt.core.compiler.problem.missingJavadocTags=ignore org.eclipse.jdt.core.compiler.problem.missingJavadocTagsOverriding=disabled org.eclipse.jdt.core.compiler.problem.missingJavadocTagsVisibility=public org.eclipse.jdt.core.compiler.problem.missingOverrideAnnotation=ignore org.eclipse.jdt.core.compiler.problem.missingSerialVersion=ignore org.eclipse.jdt.core.compiler.problem.noEffectAssignment=warning org.eclipse.jdt.core.compiler.problem.noImplicitStringConversion=warning org.eclipse.jdt.core.compiler.problem.nonExternalizedStringLiteral=ignore org.eclipse.jdt.core.compiler.problem.nullReference=ignore org.eclipse.jdt.core.compiler.problem.overridingPackageDefaultMethod=warning org.eclipse.jdt.core.compiler.problem.parameterAssignment=ignore org.eclipse.jdt.core.compiler.problem.possibleAccidentalBooleanAssignment=ignore org.eclipse.jdt.core.compiler.problem.rawTypeReference=ignore org.eclipse.jdt.core.compiler.problem.specialParameterHidingField=disabled org.eclipse.jdt.core.compiler.problem.staticAccessReceiver=warning org.eclipse.jdt.core.compiler.problem.suppressWarnings=enabled org.eclipse.jdt.core.compiler.problem.syntheticAccessEmulation=ignore org.eclipse.jdt.core.compiler.problem.typeParameterHiding=warning org.eclipse.jdt.core.compiler.problem.uncheckedTypeOperation=warning org.eclipse.jdt.core.compiler.problem.undocumentedEmptyBlock=ignore org.eclipse.jdt.core.compiler.problem.unhandledWarningToken=warning org.eclipse.jdt.core.compiler.problem.unnecessaryElse=ignore org.eclipse.jdt.core.compiler.problem.unnecessaryTypeCheck=warning org.eclipse.jdt.core.compiler.problem.unqualifiedFieldAccess=ignore org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownException=ignore org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionWhenOverriding=disabled org.eclipse.jdt.core.compiler.problem.unusedImport=warning org.eclipse.jdt.core.compiler.problem.unusedLabel=warning org.eclipse.jdt.core.compiler.problem.unusedLocal=warning org.eclipse.jdt.core.compiler.problem.unusedParameter=ignore org.eclipse.jdt.core.compiler.problem.unusedParameterWhenImplementingAbstract=disabled org.eclipse.jdt.core.compiler.problem.unusedParameterWhenOverridingConcrete=disabled org.eclipse.jdt.core.compiler.problem.unusedPrivateMember=warning org.eclipse.jdt.core.compiler.problem.varargsArgumentNeedCast=warning org.eclipse.jdt.core.compiler.source=1.3 org.eclipse.jdt.core.formatter.align_type_members_on_columns=false org.eclipse.jdt.core.formatter.alignment_for_arguments_in_allocation_expression=16 org.eclipse.jdt.core.formatter.alignment_for_arguments_in_enum_constant=16 org.eclipse.jdt.core.formatter.alignment_for_arguments_in_explicit_constructor_call=16 org.eclipse.jdt.core.formatter.alignment_for_arguments_in_method_invocation=16 org.eclipse.jdt.core.formatter.alignment_for_arguments_in_qualified_allocation_expression=16 org.eclipse.jdt.core.formatter.alignment_for_assignment=0 org.eclipse.jdt.core.formatter.alignment_for_binary_expression=16 org.eclipse.jdt.core.formatter.alignment_for_compact_if=16 org.eclipse.jdt.core.formatter.alignment_for_conditional_expression=80 org.eclipse.jdt.core.formatter.alignment_for_enum_constants=0 org.eclipse.jdt.core.formatter.alignment_for_expressions_in_array_initializer=16 org.eclipse.jdt.core.formatter.alignment_for_multiple_fields=16 org.eclipse.jdt.core.formatter.alignment_for_parameters_in_constructor_declaration=16 org.eclipse.jdt.core.formatter.alignment_for_parameters_in_method_declaration=16 org.eclipse.jdt.core.formatter.alignment_for_selector_in_method_invocation=16 org.eclipse.jdt.core.formatter.alignment_for_superclass_in_type_declaration=16 org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_enum_declaration=16 org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_type_declaration=16 org.eclipse.jdt.core.formatter.alignment_for_throws_clause_in_constructor_declaration=16 org.eclipse.jdt.core.formatter.alignment_for_throws_clause_in_method_declaration=16 org.eclipse.jdt.core.formatter.blank_lines_after_imports=1 org.eclipse.jdt.core.formatter.blank_lines_after_package=1 org.eclipse.jdt.core.formatter.blank_lines_before_field=0 org.eclipse.jdt.core.formatter.blank_lines_before_first_class_body_declaration=0 org.eclipse.jdt.core.formatter.blank_lines_before_imports=1 org.eclipse.jdt.core.formatter.blank_lines_before_member_type=1 org.eclipse.jdt.core.formatter.blank_lines_before_method=1 org.eclipse.jdt.core.formatter.blank_lines_before_new_chunk=1 org.eclipse.jdt.core.formatter.blank_lines_before_package=0 org.eclipse.jdt.core.formatter.blank_lines_between_import_groups=1 org.eclipse.jdt.core.formatter.blank_lines_between_type_declarations=1 org.eclipse.jdt.core.formatter.brace_position_for_annotation_type_declaration=end_of_line org.eclipse.jdt.core.formatter.brace_position_for_anonymous_type_declaration=end_of_line org.eclipse.jdt.core.formatter.brace_position_for_array_initializer=end_of_line org.eclipse.jdt.core.formatter.brace_position_for_block=end_of_line org.eclipse.jdt.core.formatter.brace_position_for_block_in_case=end_of_line org.eclipse.jdt.core.formatter.brace_position_for_constructor_declaration=end_of_line org.eclipse.jdt.core.formatter.brace_position_for_enum_constant=end_of_line org.eclipse.jdt.core.formatter.brace_position_for_enum_declaration=end_of_line org.eclipse.jdt.core.formatter.brace_position_for_method_declaration=end_of_line org.eclipse.jdt.core.formatter.brace_position_for_switch=end_of_line org.eclipse.jdt.core.formatter.brace_position_for_type_declaration=end_of_line org.eclipse.jdt.core.formatter.comment.clear_blank_lines_in_block_comment=false org.eclipse.jdt.core.formatter.comment.clear_blank_lines_in_javadoc_comment=false org.eclipse.jdt.core.formatter.comment.format_block_comments=true org.eclipse.jdt.core.formatter.comment.format_header=false org.eclipse.jdt.core.formatter.comment.format_html=true org.eclipse.jdt.core.formatter.comment.format_javadoc_comments=true org.eclipse.jdt.core.formatter.comment.format_line_comments=true org.eclipse.jdt.core.formatter.comment.format_source_code=true org.eclipse.jdt.core.formatter.comment.indent_parameter_description=true org.eclipse.jdt.core.formatter.comment.indent_root_tags=false org.eclipse.jdt.core.formatter.comment.insert_new_line_before_root_tags=do not insert org.eclipse.jdt.core.formatter.comment.insert_new_line_for_parameter=do not insert org.eclipse.jdt.core.formatter.comment.line_length=120 org.eclipse.jdt.core.formatter.compact_else_if=true org.eclipse.jdt.core.formatter.continuation_indentation=2 org.eclipse.jdt.core.formatter.continuation_indentation_for_array_initializer=2 org.eclipse.jdt.core.formatter.format_guardian_clause_on_one_line=false org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_annotation_declaration_header=true org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_enum_constant_header=true org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_enum_declaration_header=true org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_type_header=true org.eclipse.jdt.core.formatter.indent_breaks_compare_to_cases=true org.eclipse.jdt.core.formatter.indent_empty_lines=false org.eclipse.jdt.core.formatter.indent_statements_compare_to_block=true org.eclipse.jdt.core.formatter.indent_statements_compare_to_body=true org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_cases=true org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_switch=false org.eclipse.jdt.core.formatter.indentation.size=8 org.eclipse.jdt.core.formatter.insert_new_line_after_annotation=insert org.eclipse.jdt.core.formatter.insert_new_line_after_opening_brace_in_array_initializer=do not insert org.eclipse.jdt.core.formatter.insert_new_line_at_end_of_file_if_missing=do not insert org.eclipse.jdt.core.formatter.insert_new_line_before_catch_in_try_statement=do not insert org.eclipse.jdt.core.formatter.insert_new_line_before_closing_brace_in_array_initializer=do not insert org.eclipse.jdt.core.formatter.insert_new_line_before_else_in_if_statement=do not insert org.eclipse.jdt.core.formatter.insert_new_line_before_finally_in_try_statement=do not insert org.eclipse.jdt.core.formatter.insert_new_line_before_while_in_do_statement=do not insert org.eclipse.jdt.core.formatter.insert_new_line_in_empty_annotation_declaration=insert org.eclipse.jdt.core.formatter.insert_new_line_in_empty_anonymous_type_declaration=insert org.eclipse.jdt.core.formatter.insert_new_line_in_empty_block=insert org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_constant=insert org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_declaration=insert org.eclipse.jdt.core.formatter.insert_new_line_in_empty_method_body=insert org.eclipse.jdt.core.formatter.insert_new_line_in_empty_type_declaration=insert org.eclipse.jdt.core.formatter.insert_space_after_and_in_type_parameter=insert org.eclipse.jdt.core.formatter.insert_space_after_assignment_operator=insert org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation=do not insert org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation_type_declaration=do not insert org.eclipse.jdt.core.formatter.insert_space_after_binary_operator=insert org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_arguments=insert org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_parameters=insert org.eclipse.jdt.core.formatter.insert_space_after_closing_brace_in_block=insert org.eclipse.jdt.core.formatter.insert_space_after_closing_paren_in_cast=insert org.eclipse.jdt.core.formatter.insert_space_after_colon_in_assert=insert org.eclipse.jdt.core.formatter.insert_space_after_colon_in_case=insert org.eclipse.jdt.core.formatter.insert_space_after_colon_in_conditional=insert org.eclipse.jdt.core.formatter.insert_space_after_colon_in_for=insert org.eclipse.jdt.core.formatter.insert_space_after_colon_in_labeled_statement=insert org.eclipse.jdt.core.formatter.insert_space_after_comma_in_allocation_expression=insert org.eclipse.jdt.core.formatter.insert_space_after_comma_in_annotation=insert org.eclipse.jdt.core.formatter.insert_space_after_comma_in_array_initializer=insert org.eclipse.jdt.core.formatter.insert_space_after_comma_in_constructor_declaration_parameters=insert org.eclipse.jdt.core.formatter.insert_space_after_comma_in_constructor_declaration_throws=insert org.eclipse.jdt.core.formatter.insert_space_after_comma_in_enum_constant_arguments=insert org.eclipse.jdt.core.formatter.insert_space_after_comma_in_enum_declarations=insert org.eclipse.jdt.core.formatter.insert_space_after_comma_in_explicitconstructorcall_arguments=insert org.eclipse.jdt.core.formatter.insert_space_after_comma_in_for_increments=insert org.eclipse.jdt.core.formatter.insert_space_after_comma_in_for_inits=insert org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_declaration_parameters=insert org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_declaration_throws=insert org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_invocation_arguments=insert org.eclipse.jdt.core.formatter.insert_space_after_comma_in_multiple_field_declarations=insert org.eclipse.jdt.core.formatter.insert_space_after_comma_in_multiple_local_declarations=insert org.eclipse.jdt.core.formatter.insert_space_after_comma_in_parameterized_type_reference=insert org.eclipse.jdt.core.formatter.insert_space_after_comma_in_superinterfaces=insert org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_arguments=insert org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_parameters=insert org.eclipse.jdt.core.formatter.insert_space_after_ellipsis=insert org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_parameterized_type_reference=do not insert org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_arguments=do not insert org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_parameters=do not insert org.eclipse.jdt.core.formatter.insert_space_after_opening_brace_in_array_initializer=insert org.eclipse.jdt.core.formatter.insert_space_after_opening_bracket_in_array_allocation_expression=do not insert org.eclipse.jdt.core.formatter.insert_space_after_opening_bracket_in_array_reference=do not insert org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_annotation=do not insert org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_cast=do not insert org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_catch=do not insert org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_constructor_declaration=do not insert org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_enum_constant=do not insert org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_for=do not insert org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_if=do not insert org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_method_declaration=do not insert org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_method_invocation=do not insert org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_parenthesized_expression=do not insert org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_switch=do not insert org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_synchronized=do not insert org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_while=do not insert org.eclipse.jdt.core.formatter.insert_space_after_postfix_operator=do not insert org.eclipse.jdt.core.formatter.insert_space_after_prefix_operator=do not insert org.eclipse.jdt.core.formatter.insert_space_after_question_in_conditional=insert org.eclipse.jdt.core.formatter.insert_space_after_question_in_wildcard=do not insert org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_for=insert org.eclipse.jdt.core.formatter.insert_space_after_unary_operator=do not insert org.eclipse.jdt.core.formatter.insert_space_before_and_in_type_parameter=insert org.eclipse.jdt.core.formatter.insert_space_before_assignment_operator=insert org.eclipse.jdt.core.formatter.insert_space_before_at_in_annotation_type_declaration=insert org.eclipse.jdt.core.formatter.insert_space_before_binary_operator=insert org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_parameterized_type_reference=do not insert org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_arguments=do not insert org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_parameters=do not insert org.eclipse.jdt.core.formatter.insert_space_before_closing_brace_in_array_initializer=insert org.eclipse.jdt.core.formatter.insert_space_before_closing_bracket_in_array_allocation_expression=do not insert org.eclipse.jdt.core.formatter.insert_space_before_closing_bracket_in_array_reference=do not insert org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_annotation=do not insert org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_cast=do not insert org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_catch=do not insert org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_constructor_declaration=do not insert org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_enum_constant=do not insert org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_for=do not insert org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_if=do not insert org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_method_declaration=do not insert org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_method_invocation=do not insert org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_parenthesized_expression=do not insert org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_switch=do not insert org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_synchronized=do not insert org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_while=do not insert org.eclipse.jdt.core.formatter.insert_space_before_colon_in_assert=insert org.eclipse.jdt.core.formatter.insert_space_before_colon_in_case=do not insert org.eclipse.jdt.core.formatter.insert_space_before_colon_in_conditional=insert org.eclipse.jdt.core.formatter.insert_space_before_colon_in_default=do not insert org.eclipse.jdt.core.formatter.insert_space_before_colon_in_for=insert org.eclipse.jdt.core.formatter.insert_space_before_colon_in_labeled_statement=do not insert org.eclipse.jdt.core.formatter.insert_space_before_comma_in_allocation_expression=do not insert org.eclipse.jdt.core.formatter.insert_space_before_comma_in_annotation=do not insert org.eclipse.jdt.core.formatter.insert_space_before_comma_in_array_initializer=do not insert org.eclipse.jdt.core.formatter.insert_space_before_comma_in_constructor_declaration_parameters=do not insert org.eclipse.jdt.core.formatter.insert_space_before_comma_in_constructor_declaration_throws=do not insert org.eclipse.jdt.core.formatter.insert_space_before_comma_in_enum_constant_arguments=do not insert org.eclipse.jdt.core.formatter.insert_space_before_comma_in_enum_declarations=do not insert org.eclipse.jdt.core.formatter.insert_space_before_comma_in_explicitconstructorcall_arguments=do not insert org.eclipse.jdt.core.formatter.insert_space_before_comma_in_for_increments=do not insert org.eclipse.jdt.core.formatter.insert_space_before_comma_in_for_inits=do not insert org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_declaration_parameters=do not insert org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_declaration_throws=do not insert org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_invocation_arguments=do not insert org.eclipse.jdt.core.formatter.insert_space_before_comma_in_multiple_field_declarations=do not insert org.eclipse.jdt.core.formatter.insert_space_before_comma_in_multiple_local_declarations=do not insert org.eclipse.jdt.core.formatter.insert_space_before_comma_in_parameterized_type_reference=do not insert org.eclipse.jdt.core.formatter.insert_space_before_comma_in_superinterfaces=do not insert org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_arguments=do not insert org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_parameters=do not insert org.eclipse.jdt.core.formatter.insert_space_before_ellipsis=do not insert org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_parameterized_type_reference=do not insert org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_arguments=do not insert org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_parameters=do not insert org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_annotation_type_declaration=insert org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_anonymous_type_declaration=insert org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_array_initializer=insert org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_block=insert org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_constructor_declaration=insert org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_enum_constant=insert org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_enum_declaration=insert org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_method_declaration=insert org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_switch=insert org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_type_declaration=insert org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_allocation_expression=do not insert org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_reference=do not insert org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_type_reference=do not insert org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_annotation=do not insert org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_annotation_type_member_declaration=do not insert org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_catch=insert org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_constructor_declaration=do not insert org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_enum_constant=do not insert org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_for=insert org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_if=insert org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_method_declaration=do not insert org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_method_invocation=do not insert org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_parenthesized_expression=do not insert org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_switch=insert org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_synchronized=insert org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_while=insert org.eclipse.jdt.core.formatter.insert_space_before_parenthesized_expression_in_return=insert org.eclipse.jdt.core.formatter.insert_space_before_parenthesized_expression_in_throw=insert org.eclipse.jdt.core.formatter.insert_space_before_postfix_operator=do not insert org.eclipse.jdt.core.formatter.insert_space_before_prefix_operator=do not insert org.eclipse.jdt.core.formatter.insert_space_before_question_in_conditional=insert org.eclipse.jdt.core.formatter.insert_space_before_question_in_wildcard=do not insert org.eclipse.jdt.core.formatter.insert_space_before_semicolon=do not insert org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_for=do not insert org.eclipse.jdt.core.formatter.insert_space_before_unary_operator=do not insert org.eclipse.jdt.core.formatter.insert_space_between_brackets_in_array_type_reference=do not insert org.eclipse.jdt.core.formatter.insert_space_between_empty_braces_in_array_initializer=do not insert org.eclipse.jdt.core.formatter.insert_space_between_empty_brackets_in_array_allocation_expression=do not insert org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_annotation_type_member_declaration=do not insert org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_constructor_declaration=do not insert org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_enum_constant=do not insert org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_method_declaration=do not insert org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_method_invocation=do not insert org.eclipse.jdt.core.formatter.keep_else_statement_on_same_line=false org.eclipse.jdt.core.formatter.keep_empty_array_initializer_on_one_line=false org.eclipse.jdt.core.formatter.keep_imple_if_on_one_line=false org.eclipse.jdt.core.formatter.keep_then_statement_on_same_line=false org.eclipse.jdt.core.formatter.lineSplit=120 org.eclipse.jdt.core.formatter.never_indent_block_comments_on_first_column=false org.eclipse.jdt.core.formatter.never_indent_line_comments_on_first_column=false org.eclipse.jdt.core.formatter.number_of_blank_lines_at_beginning_of_method_body=0 org.eclipse.jdt.core.formatter.number_of_empty_lines_to_preserve=1 org.eclipse.jdt.core.formatter.put_empty_statement_on_new_line=true org.eclipse.jdt.core.formatter.tabulation.char=tab org.eclipse.jdt.core.formatter.tabulation.size=4 org.eclipse.jdt.core.formatter.use_tabs_only_for_leading_indentations=false org.eclipse.jdt.core.formatter.wrap_before_binary_operator=true ././@LongLink0000000000000000000000000000016100000000000011563 Lustar rootrootlibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-binding/.settings/org.eclipse.wst.validation.prefslibspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-binding/.settings/org.eclipse.wst.vali0000644000000000000000000000317711360615632027675 0ustar #Fri May 05 18:13:37 EDT 2006 DELEGATES_PREFERENCE=delegateValidatorListorg.eclipse.wst.wsdl.validation.internal.eclipse.WSDLDelegatingValidator\=org.eclipse.wst.wsdl.validation.internal.eclipse.Validator;org.eclipse.wst.xsd.core.internal.validation.eclipse.XSDDelegatingValidator\=org.eclipse.wst.xsd.core.internal.validation.eclipse.Validator; USER_BUILD_PREFERENCE=enabledBuildValidatorListorg.eclipse.wst.xsd.core.internal.validation.eclipse.XSDDelegatingValidator;org.eclipse.wst.xml.core.internal.validation.eclipse.Validator;org.eclipse.jst.jsp.core.internal.validation.JSPELValidator;org.eclipse.wst.wsdl.validation.internal.eclipse.WSDLDelegatingValidator;org.eclipse.wst.html.internal.validation.HTMLValidator;org.eclipse.wst.wsi.ui.internal.WSIMessageValidator;org.eclipse.jst.jsp.core.internal.validation.JSPJavaValidator;org.eclipse.wst.dtd.core.internal.validation.eclipse.Validator;org.eclipse.jst.jsp.core.internal.validation.JSPDirectiveValidator; USER_MANUAL_PREFERENCE=enabledManualValidatorListorg.eclipse.wst.xsd.core.internal.validation.eclipse.XSDDelegatingValidator;org.eclipse.wst.xml.core.internal.validation.eclipse.Validator;org.eclipse.jst.jsp.core.internal.validation.JSPELValidator;org.eclipse.wst.wsdl.validation.internal.eclipse.WSDLDelegatingValidator;org.eclipse.wst.html.internal.validation.HTMLValidator;org.eclipse.wst.wsi.ui.internal.WSIMessageValidator;org.eclipse.jst.jsp.core.internal.validation.JSPJavaValidator;org.eclipse.wst.dtd.core.internal.validation.eclipse.Validator;org.eclipse.jst.jsp.core.internal.validation.JSPDirectiveValidator; USER_PREFERENCE=overrideGlobalPreferencesfalse eclipse.preferences.version=1 libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-binding/build.xml0000644000000000000000000000043611360615632023670 0ustar libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-binding/.classpath0000644000000000000000000000637511360615636024046 0ustar libspring-webflow-2.0-java-2.0.9.RELEASE.orig/projects/spring-binding/ivy.xml0000644000000000000000000000363211360615644023404 0ustar libspring-webflow-2.0-java-2.0.9.RELEASE.orig/license.txt0000644000000000000000000002613511360615630017471 0ustar Apache License Version 2.0, January 2004 http://www.apache.org/licenses/ TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION 1. Definitions. "License" shall mean the terms and conditions for use, reproduction, and distribution as defined by Sections 1 through 9 of this document. "Licensor" shall mean the copyright owner or entity authorized by the copyright owner that is granting the License. "Legal Entity" shall mean the union of the acting entity and all other entities that control, are controlled by, or are under common control with that entity. For the purposes of this definition, "control" means (i) the power, direct or indirect, to cause the direction or management of such entity, whether by contract or otherwise, or (ii) ownership of fifty percent (50%) or more of the outstanding shares, or (iii) beneficial ownership of such entity. "You" (or "Your") shall mean an individual or Legal Entity exercising permissions granted by this License. "Source" form shall mean the preferred form for making modifications, including but not limited to software source code, documentation source, and configuration files. "Object" form shall mean any form resulting from mechanical transformation or translation of a Source form, including but not limited to compiled object code, generated documentation, and conversions to other media types. "Work" shall mean the work of authorship, whether in Source or Object form, made available under the License, as indicated by a copyright notice that is included in or attached to the work (an example is provided in the Appendix below). "Derivative Works" shall mean any work, whether in Source or Object form, that is based on (or derived from) the Work and for which the editorial revisions, annotations, elaborations, or other modifications represent, as a whole, an original work of authorship. For the purposes of this License, Derivative Works shall not include works that remain separable from, or merely link (or bind by name) to the interfaces of, the Work and Derivative Works thereof. "Contribution" shall mean any work of authorship, including the original version of the Work and any modifications or additions to that Work or Derivative Works thereof, that is intentionally submitted to Licensor for inclusion in the Work by the copyright owner or by an individual or Legal Entity authorized to submit on behalf of the copyright owner. For the purposes of this definition, "submitted" means any form of electronic, verbal, or written communication sent to the Licensor or its representatives, including but not limited to communication on electronic mailing lists, source code control systems, and issue tracking systems that are managed by, or on behalf of, the Licensor for the purpose of discussing and improving the Work, but excluding communication that is conspicuously marked or otherwise designated in writing by the copyright owner as "Not a Contribution." "Contributor" shall mean Licensor and any individual or Legal Entity on behalf of whom a Contribution has been received by Licensor and subsequently incorporated within the Work. 2. Grant of Copyright License. Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable copyright license to reproduce, prepare Derivative Works of, publicly display, publicly perform, sublicense, and distribute the Work and such Derivative Works in Source or Object form. 3. Grant of Patent License. Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable (except as stated in this section) patent license to make, have made, use, offer to sell, sell, import, and otherwise transfer the Work, where such license applies only to those patent claims licensable by such Contributor that are necessarily infringed by their Contribution(s) alone or by combination of their Contribution(s) with the Work to which such Contribution(s) was submitted. If You institute patent litigation against any entity (including a cross-claim or counterclaim in a lawsuit) alleging that the Work or a Contribution incorporated within the Work constitutes direct or contributory patent infringement, then any patent licenses granted to You under this License for that Work shall terminate as of the date such litigation is filed. 4. Redistribution. You may reproduce and distribute copies of the Work or Derivative Works thereof in any medium, with or without modifications, and in Source or Object form, provided that You meet the following conditions: (a) You must give any other recipients of the Work or Derivative Works a copy of this License; and (b) You must cause any modified files to carry prominent notices stating that You changed the files; and (c) You must retain, in the Source form of any Derivative Works that You distribute, all copyright, patent, trademark, and attribution notices from the Source form of the Work, excluding those notices that do not pertain to any part of the Derivative Works; and (d) If the Work includes a "NOTICE" text file as part of its distribution, then any Derivative Works that You distribute must include a readable copy of the attribution notices contained within such NOTICE file, excluding those notices that do not pertain to any part of the Derivative Works, in at least one of the following places: within a NOTICE text file distributed as part of the Derivative Works; within the Source form or documentation, if provided along with the Derivative Works; or, within a display generated by the Derivative Works, if and wherever such third-party notices normally appear. The contents of the NOTICE file are for informational purposes only and do not modify the License. You may add Your own attribution notices within Derivative Works that You distribute, alongside or as an addendum to the NOTICE text from the Work, provided that such additional attribution notices cannot be construed as modifying the License. You may add Your own copyright statement to Your modifications and may provide additional or different license terms and conditions for use, reproduction, or distribution of Your modifications, or for any such Derivative Works as a whole, provided Your use, reproduction, and distribution of the Work otherwise complies with the conditions stated in this License. 5. Submission of Contributions. Unless You explicitly state otherwise, any Contribution intentionally submitted for inclusion in the Work by You to the Licensor shall be under the terms and conditions of this License, without any additional terms or conditions. Notwithstanding the above, nothing herein shall supersede or modify the terms of any separate license agreement you may have executed with Licensor regarding such Contributions. 6. Trademarks. This License does not grant permission to use the trade names, trademarks, service marks, or product names of the Licensor, except as required for reasonable and customary use in describing the origin of the Work and reproducing the content of the NOTICE file. 7. Disclaimer of Warranty. Unless required by applicable law or agreed to in writing, Licensor provides the Work (and each Contributor provides its Contributions) on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied, including, without limitation, any warranties or conditions of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A PARTICULAR PURPOSE. You are solely responsible for determining the appropriateness of using or redistributing the Work and assume any risks associated with Your exercise of permissions under this License. 8. Limitation of Liability. In no event and under no legal theory, whether in tort (including negligence), contract, or otherwise, unless required by applicable law (such as deliberate and grossly negligent acts) or agreed to in writing, shall any Contributor be liable to You for damages, including any direct, indirect, special, incidental, or consequential damages of any character arising as a result of this License or out of the use or inability to use the Work (including but not limited to damages for loss of goodwill, work stoppage, computer failure or malfunction, or any and all other commercial damages or losses), even if such Contributor has been advised of the possibility of such damages. 9. Accepting Warranty or Additional Liability. While redistributing the Work or Derivative Works thereof, You may choose to offer, and charge a fee for, acceptance of support, warranty, indemnity, or other liability obligations and/or rights consistent with this License. However, in accepting such obligations, You may act only on Your own behalf and on Your sole responsibility, not on behalf of any other Contributor, and only if You agree to indemnify, defend, and hold each Contributor harmless for any liability incurred by, or claims asserted against, such Contributor by reason of your accepting any such warranty or additional liability. END OF TERMS AND CONDITIONS APPENDIX: How to apply the Apache License to your work. To apply the Apache License to your work, attach the following boilerplate notice, with the fields enclosed by brackets "[]" replaced with your own identifying information. (Don't include the brackets!) The text should be enclosed in the appropriate comment syntax for the file format. We also recommend that a file or class name and description of purpose be included on the same "printed page" as the copyright notice for easier identification within third-party archives. Copyright [yyyy] [name of copyright owner] Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. libspring-webflow-2.0-java-2.0.9.RELEASE.orig/notice.txt0000644000000000000000000000206111360615630017320 0ustar ====================================================================== == NOTICE file corresponding to section 4 d of the Apache License, == == Version 2.0, for the Spring Web Flow distribution. == ====================================================================== This product includes software developed by the Apache Software Foundation (http://www.apache.org). The end-user documentation included with a redistribution, if any, must include the following acknowledgement: "This product includes software developed by the Spring Framework Project (http://www.springframework.org)." Alternately, this acknowledgement may appear in the software itself, if and wherever such third-party acknowledgements normally appear. The names "Spring", "Spring Framework", and "Spring Web Flow" must not be used to endorse or promote products derived from this software without prior written permission. For written permission, please contact rod.johnson@interface21.com or juergen.hoeller@interface21.com. libspring-webflow-2.0-java-2.0.9.RELEASE.orig/src/0000755000000000000000000000000011360615502016064 5ustar libspring-webflow-2.0-java-2.0.9.RELEASE.orig/readme.txt0000644000000000000000000002041211360615630017274 0ustar SPRING WEB FLOW 2.0.9 () ---------------------------------- http://www.springframework.org/webflow 1. INTRODUCTION --------------- Spring Web Flow (SWF) is the module of Spring that allows you to implement the "flows" of your web application. A flow is an application module that encapsulates a sequences of steps that can execute in different contexts. Flows typically guide a single user through the execution of some business task. They often execute across HTTP requests, have state, exhibit transactional characteristics, are reused, and may be dynamic and long-running in nature. Good examples of flows include a trip booking process, a loan application process, and an insurance quoter. Spring Web Flow exists at a higher level of abstraction, providing you a declarative flow definition language for authoring flows. Web Flow also integrates as a self-contained flow engine within base web frameworks such as Spring MVC. It allows different UI technologies to be integrated, including UI component technologies such as JavaServerFaces. Spring Web Flow lets you capture reusable application UI flow in a declarative, portable, and manageable fashion. It is a powerful controller engine that addresses the "C" in MVC. 2. RELEASE NOTES ---------------- Spring Web Flow 2 requires Java SE 1.4 and Spring Framework 2.5.4 or above to run. Java SE 5.0 with Ant 1.7 is required to build. Release distribution contents: "." contains the Web Flow distribution readme, license, changelog, and copyright "dist" contains the Web Flow distribution jar files "src" contains the Web Flow distribution source jar files "docs" contains the Spring Web Flow reference manual and API Javadocs "projects" contains all buildable projects, including sample applications "projects/build-spring-webflow" is the directory to access to build the Web Flow distribution "projects/spring-build" is the master build system used by all Spring projects, including Spring Web Flow "projects/spring-binding" contains buildable Spring Data Binding project sources, a utility library used by SWF "projects/spring-faces" contains buildable Spring Faces project sources, a library containing SWF's JSF integration "projects/spring-js" contains buildable Spring JavaScript project sources, a library containing client-side Ajax and Dojo integration "projects/spring-webflow" contains buildable Spring Web Flow project sources "projects/spring-webflow-samples" contains buildable Spring Web Flow sample application sources See the readme.txt within the above directories for additional information. Spring Web Flow is released under the terms of the Apache Software License (see license.txt). 3. DISTRIBUTION JAR FILES ------------------------- The following jar files are included in the distribution. The contents of each jar and its dependencies are noted. Dependencies in [brackets] are optional, and are just necessary for certain functionality. * org.springframework.webflow-2.0.9.RELEASE.jar - Contents: The Spring Web Flow system - Dependencies: Commons Logging, spring-core, spring-beans, spring-context, spring-binding, spring-web, spring-webmvc-servlet, spring-js [Log4J, Xerces, XML APIs, OGNL, EL API, JPA API, Hibernate, Spring Security, Servlet API, Portlet API, JUnit] * org.springframework.binding-2.0.9.RELEASE.jar - Contents: The Spring Data Binding framework, a utility library used by Web Flow - Dependencies: Commons Logging, spring-beans, spring-core, spring-context [Log4J, OGNL, EL API] * org.springframework.js-2.0.9.RELEASE.jar - Contents: The Spring JavaScript module, containing Spring's Dojo integration and additional JavaScript functionality. - Dependencies: Dojo Toolkit * org.springframework.faces-2.0.9.RELEASE.jar - Contents: The Spring Faces module, containing Spring's integration with Java Server Faces (JSF) and additional JSF functionality. - Dependencies: spring-webflow, spring-js, JSF API For an exact list of project dependencies, see each project's ivy file at "projects/${project_name}/ivy.xml". 4. GETTING STARTED ------------------ This distribution contains documentation and sample applications demonstrating the features of the Spring Web Flow projects. A great way to get started is to review and run the sample applications, supplementing with reference manual material as you go. To build deployable .war files for all samples, simply access the projects/build-spring-webflow directory and run ant. All projects are directly importable into Eclipse as "Dynamic Web Projects". See http://www.springframework.org/webflow-samples for more information. 5. OBTAINING RELEASE JARS FROM THE SPRINGSOURCE BUNDLE REPOSITORY ----------------------------------------------------------------- Each jar in the Web Flow distribution is available in the SpringSource release repository. These jars may be accessed using Maven or Ivy dependency managers. Browse the contents of the repository by accessing http://www.springsource.com/repository. To access jars using Maven, add the following repositories to your Maven pom: com.springsource.repository.bundles.release SpringSource Enterprise Bundle Repository - SpringSource Releases http://repository.springsource.com/maven/bundles/release com.springsource.repository.bundles.external SpringSource Enterprise Bundle Repository - External Releases http://repository.springsource.com/maven/bundles/external Then declare the following dependencies: org.springframework.webflow org.springframework.binding 2.0.9.RELEASE org.springframework.webflow org.springframework.js 2.0.9.RELEASE org.springframework.webflow org.springframework.webflow 2.0.9.RELEASE If using JavaServerFaces: org.springframework.webflow org.springframework.faces 2.0.9.RELEASE To access jars using Ivy, add the following repositories to your Ivy config: Then declare the following dependencies in your ivy.xml: If using JavaServerFaces: Refer to the reference documentation for more coverage on obtaining Web Flow jars using Maven or Ivy. 6. ADDITIONAL RESOURCES ----------------------- The Spring Web Flow homepage is located at: http://www.springframework.org/webflow There you will find resources such as a 'Quick Start' guide and a 'Frequently Asked Questions' section. The Spring Web Flow community forums are located at: http://forum.springframework.org There you will find an active community of users collaborating about the project. The Spring Community portal is located at: http://www.springframework.org There you will find links to many resources on Spring Portfolio projects, including on-line access to Spring documentation.libspring-webflow-2.0-java-2.0.9.RELEASE.orig/dist/0000755000000000000000000000000011360615502016240 5ustar libspring-webflow-2.0-java-2.0.9.RELEASE.orig/changelog.txt0000644000000000000000000015453311360615630020002 0ustar SPRING WEB FLOW CHANGELOG ========================= http://www.springframework.org/webflow Changes in version 2.0.9 (2010.04.12) ------------------------------------- * ViewState now ignores case where 'model' expression fails to evaluate (SWF-1176) * Added calls to lock/unlock the coversation when a flow execution is launched (SWF-1213) * Added serialization methods to FlowFacesMessageAdapter as workaround for issue in MyFaces (SWF-1187) * Prevented the wrapping of a converter with ObjectToCollection in cases where the targetClass of the converter is already a collection (SWF-1229) * Upgraded to Dojo 1.2.4 containing security fixes. Changes in version 2.0.8 (2009.08.06) ------------------------------------- Bug Fixes * Corrected the order of "expected" and "actual" arguments in AbstractFlowExecutionTests.assertFlowExecutionOutcomeEquals (SWF-1021) * Corrected the handling of flow definition redirects when using FilenameFlowUrlHandler (SWF-1027) * Fixed incompatibility with JSF 1.1 in JsfView by calling ViewStateManager.saveSerializedView instead of ViewStateManager.saveView (SWF-1112) * Fixed bug where serialization errors could occur during session replication due to ViewActionStateHolder and ViewRootHolder not being Serializable (SWF-1114) * Fixed incompatibility between Spring Faces AjaxViewRoot and RichFaces (SWF-1115) * Fixed bug with binding to Maps when using Spring Bean Binding mode (SWF-1132) * Updated JsfView to use a more reliable method of detecting a post-back when using JSF 1.2+ (SWF-1133) * Fixed bug causing NPE in FlowHandlerAdapter.sendFlowDefinitionRedirect when flowRedirect did not have parameters appended to it (SWF-1144) * Fixed bug in the convention-based validator invocation routine to correctly handle using sub-types as method arguments (SWF-1146) * Corrected some minor issues in the documentation (SWF-1121, SWF-1125) Improvements * Added an example to the documentation of how to handle a file upload with Web Flow (SWF-1113) * Added some info on custom AjaxHandler implementations to the documentation (SWF-1160) * Removed an unnecessary extra invocation of the JSF state saving routine when redirects are disabled (SWF-1162) Changes in version 2.0.7 (2009.04.17) ------------------------------------- Bug Fixes * Fixed several issues with WebFlowMessageCodesResolver algorithm, including a JDK 1.4 compatibility issue (SWF-1064) * Fixed bug in Spring Faces custom ListDataModel implementations related to row selection tracking (SWF-1066) * Fixed bug where subclasses of FacesMessage we do not control could introduce dependencies on JSF-specific services outside of Web Flow's control (SWF-1073) This specifically caused problems with Rich Faces 3.3.0's messages component, which adds a LabeledFacesMessage that requires a FacesContext to be serialized. * Fixed bug where a FlowExecution's flashScope and MessageContext were not cleared when a user had already completed a render response (SWF-1089). * Fixed bug where FlowHandlerMapping was not querying parent flow registries when determining if a flow should handle the current request (SWF-1095). * Fixed bug where flow was not redirecting after ViewState bind/validation error when not an Ajax request and redirectOnPause was set to true (SWF-1096). * Fixed bug where parent Model list could be shared by child in flow definition inheritance algorithm (SWF-1094). * Fixed bug where AjaxTilesView was not checking the AttributeType to determine potentially renderable Tiles Attributes (SWF-1092). * Made FlowExecutionSnapshotGroup public for serialization reasons * Fixed bug where a flow execution snapshot id was not always incremented, which could lead to collisions between multiple windows sharing the same execution (SWF-1098). * Fixed bug where updating ViewState history could result in exceptions if no flow execution key was assigned or no snapshot had been taken (SWF-1099). * Fixed bug where ExternalContext.getFlowExecutionUrl method was not encoding execution URL for rendering by views * Fixed bugs where FlowHandlerAdapter was not encoding flow definition URLs in its default flow outcome and exception handler routines Improvements * Added userEventQueued and getUserEventState methods to View SPI, which simplified ViewState and View object interaction. Custom View implementations will need to be updated to implement these new operations. See View's API JavaDocs and ViewState's doEnter and resume implementations. * Added saveState method to View SPI, allowing stateful views to save out their component state to support going back after exiting a ViewState with history preserved. Required by Spring Faces for stateful JSF views. * Added org.springframework.webflow dm Server library definition for use in a dm Server deployment environment (SWF-1067) * Strengthened contract for response-related methods in ExternalContext. Specifically, calling any of the requestRedirect methods also now completes the response. If you attempt to complete a response more than once against an ExternalContext, an IllegalStateException is thrown. * Documented how to obtain Web Flow development branch snapshots using Maven, for both Maven Central compatible usage and SpringSource Enterprise Bundle Repository usage. * Updated OSGi Manifest imports to allow Web Flow 2.0.7 to work with Spring Framework 3.0.x in a OSGi environment Changes in version 2.0.6 (2009.03.12) ------------------------------------- General * Changed Maven artifact ids for the org.springframework.webflow projects to be consistent with other Spring artifacts published to Maven Central (SWF-993). This change was made to prevent conflicts when resolving artifacts from both Maven Central and the OSGi-ready SpringSource Bundle Repository. NOTE: this change will require an artifact-id update as well as a version update to your poms that obtain Spring Web Flow artifacts from Maven Central. See the reference documentation for updated instructions on obtaining web flow artifacts from Maven Central. Bug Fixes * Fixed bug where ViewState and EndState still sent a response even if another artifact, such as an Action, handled the response by marking ExternalContext.setResponseComplete() (SWF-1061) * Fixed bug where FlowHandlerMapping could not handle null flow id scenarios (SWF-968) * Fixed bug where flow ids were not properly generated when loading flow resources using classpath*: notation (SWF-988, SWF-992) * Fixed bug where file extension was left off URLs generated by Web Flow when servlet mapping was extension-based e.g. *.htm (SWF-988) * Fixed bug where Web Flow upgrader tool did not properly output end-state 'output' elements (SWF-969) * Fixed bug where String to Enum conversions failed to work in conjunction with BeanWrapperExpressionParser, enabled when setting "useSpringBinding" flag on a MvcViewFactoryCreator to true (SWF-1005). * Fixed bug where Collection and Array property bindings did not work with custom converters (SWF-984) * Fixed bug where form:checkbox and form:checkboxes tags did not apply type conversion properly in views rendered by Web Flows (SWF-986) * Fixed bug where Errors nestedPath attribute was not respected in views rendered by Web Flow (SWF-973) * Fixed bug where Errors nestedPath attribute was not respected when using Errors API programatically within a Validator called by Web Flow (SWF-973) * Made MessageCodesResolver pluggable on MvcViewFactoryCreator; configure a DefaultMessageCodesResolver to resolve error message codes consistent with default Spring MVC behavior (SWF-977) * Made FlowHandlerAdapter#sendRedirect method protected, allowing overriding of web flow system redirect behavior; for example, to redirect to a SSL channel. * Made DefaultFlowUrlHandler consistent with Spring MVC RedirectView behavior for URL encoding of flow URL parameters; URL encoding scheme is also now pluggable. * Introduced createDefaultFlowHandler hook in FlowHandlerMapping, allowing for customizing the Default FlowHandler implementation application wide (SWF-994) * Fixed bug where Hibernate and JPA flow execution listeners performed their commits against the flow-managed PersistenceContext after the flow had ended (SWF-1010). This prevented exceptions such as optimistic locking failures from being handled by the flow. Commit processing is now performed in the sessionEnding listener callback now, which is called before the flow actually terminates. * Fixed bug where root flow FlowExecutionExceptionHandlers were queried even when a FlowExecution was not active (SWF-1004). This could occur during FlowExecution startup before the root session had been activated. Specifically, this caused problems when handling AccessDeniedExceptions thrown by the SecurityFlowExecutionListener, which uses the sessionCreated FlowExecutionListener callback to perform a flow startup security check. Before root session activation, a FlowExecution is NOT active, and any exceptions thrown at this time should propagate; root flow execution handlers should not be allowed to handle these exceptions. Improvements * Improved FlowExecution test documentation * Improved FlowExecutionExceptionHandler API documentation * Added documentation on streaming actions Changes in version 2.0.5 (14.11.2008) ------------------------------------- Bug Fixes * Fixed compatibility issue introduced in Web Flow 2.0.4 with previous 2.0.x versions related to request -> flow id mapping. The existing FlowController now applies the previous behavior of "filename-based" request-> flow mapping (see FilenameFlowUrlHandler); for example /hotels/booking URL -> "booking" flow. The new FlowHandlerAdapter used in conjunction with FlowHandlerMapping now applies the new "path-based" request -> flow mapping (see DefaultFlowUrlHandler) ; for example /hotels/booking URL -> "hotels/booking" flow. Use of FlowHandlerAdapter with FlowHandlerMapping and the default path-based mapping (DefaultFlowUrlHandler) is recommended (SWF-939). * Fixed bug introduced in 2.0.4 that broke rendering of multiple view fragments with Tiles (SWF-941). * Render 'fragments' request parameter values are now trimmed consistent with the Web Flow render fragments parameter (SWF-947). * Fixed bug in which model validation never ran if there were data binding errors in Spring MVC-based views. This was inconsistent with previous behavior in Spring MVC's SimpleFormController and in Spring Web Flow 1.0.x, and caused usability concerns. Validation always runs after binding now unless suppressed by a transition (validate=false) or the 'validateOnBindingErrors' flow execution attribute (SWF-949). * Fixed bug where model data binding results were lost after ActionRequest processing in a Portlet environment. This prevented invalid user input values from being rendered correctly when a form re-rendered in the next RenderRequest. Data binding results are now preserved correctly across the Action->Render cycle so all original user input values are preserved (SWF-953). * Fixed bug that prevented a new flow execution snapshot from being taken when entering the same view-state again in the current request. This lead to undesirable back-button behavior, particularly when a flow was called recursively as a subflow. Now a new snapshot is always taken when entering a ViewState, consistent with Web Flow 1.0.x behavior. When no new snapshot is desired, for example, in the case of processing an Ajax event that does not transition the view, do not leave the current state; rather, simply execute actions to handle the event and use 'render' to request re-rendering of parts of the page. * Fixed bug where POJO action methods returning an empty string resulted in an IllegalArgumentException being thrown (SWF-739). * Fixed bug where base-path required a trailing slash in conjunction with flow-location entries (SWF-948). Improvements * Added additional console logging to help debug Spring JavaScript decoration behaviors (SWF-937). * Improved documentation in the area of flow exception handling and security (SWF-922, SWF-944). * Improved logging in the area of view processing, including view rendering, model binding, and model validation. * The model validation invoker will now invoke a default validate(ValidationContext) or validate(Errors) method if present (SWF-666). * It is now possible to use a Errors object anywhere you can use a ValidationContext, for compatibility with existing Spring MVC code (SWF-957). Changes in version 2.0.4 (04.11.2008) ------------------------------------- New Features * Added FlowHandlerMapping for use with FlowHandlerAdapter, simplifying the process of mapping web requests to registered flow definitions. This HandlerMapping strategy maps the path of a request to a registered flow id; for example, a path of '/hotels/booking' would match the flow with id 'hotels/booking'. If no mapping is found, null is returned and the next HandlerMapping in the DispatcherServlet mapping chain will be queried. We recommend use of FlowHandlerMapping and FlowHandlerAdapter over FlowController going forward. See the Spring Travel booking-mvc or booking-faces samples for an example. * A flow-registry configuration may now define a base resource path for flow definitions, for example, /WEB-INF. All flow locations are then defined relative to that path, for example /hotels/booking/booking.xml Often used in conjunction with a flow-location-pattern, such as /**/*-flow.xml. When a base path is defined, a flow id is calculated by extracting the directory path to the flow definition; for example, a flow located at /WEB-INF/hotels/booking/booking.xml would be assigned id "hotels/booking" by default. (SWF-909) * Added a 'development' flag to the flow-builder-services element allowing switching on a "development mode". In development mode, flow definition and message bundle changes are refreshed automatically. (SWF-846) Development mode is off (false) by default. * Added a ValidationContext to pass to validation methods, as an alternative to MessageContext. This new ValidationContext provides access to the MessageContext as well as additional user information. Allows for conditional validation by user event / user principal. (SWF-735) * Added a "with-dependencies" distribution, allowing Web Flow and its sample applications to be built off-line. This is particularly useful for building Web Flow in corporate environments behind a firewall, where access to the SpringSource Enterprise Bundle Repository may be restricted. * Added Maven POMs to the sample applications, allowing the samples to also be built using Maven. Improvements * Upgraded to Spring Framework 2.5.6 * Upgraded to Dojo 1.2 (SWF-883) * The ResourceServlet is now more configurable (SWF-566, SWF-921) * The default ConversionService now supports string-to-Java 5 enum conversion (SWF-827, SWF-834, SWF-911) * Validate all decorations for Ajax forms are now simpler to define (SWF-853) * A Dojo date text box now uses a locale specific date format when gracefully degrading (SWF-844) * Added numerous improvements to the reference guide documentation Bug Fixes * Fixed bug where a registered ConversionService was not auto-wired with the default ExpressionParser implementation. This prevented user-installed type converters from being applied without explicit configuration. * Fixed bugs limiting compatibility with IE 6 for Spring Faces and Spring JS (SWF-786, SWF-770) * Global transitions can now be merged for flow inheritance (SWF-733) * Transitions on-exception will now match exceptions thrown from an OGNL expression. (SWF-780) * Child flow definitions are now able to inherit from a flow in the parent flow registry (SWF-815) * Fixed issue with EL binding to map properties in Resin (SWF-832) * Ajax enabled forms will now be submit using the HTTP method defined on the form tag (SWF-851) * If a specific converter is defined for a property, it will always be used even if the source and target types do not match the converter (SWF-896) * Ajax request can now render nested Tiles definitions as a fragment (SWF-916) * Global transitions now fire the transitionExecuting event for global transitions (SWF-923) * Removed unsafe Java 5 API calls to maintain 1.4 compatibility (SWF-926) * Type conversion errors in the binding subsystem now resolve properly to the typeMismatch message for the property (SWF-928) * Flow application contexts are now explicitly closed when the flow registry is destroyed (SWF-929) Changes in version 2.0.3 (31.07.2008) ------------------------------------- New Features * Introduced view-state sub-element, allowing the model bindings to be configured explicitly per view (SWF-568). This allows you to restrict the allowed field->model bindings. It also allows you to register a custom type Converter per field by referring to it by its identifier; e.g. "shortDate". In addition, you can set basic binding value constraints such as required=true. See the 'Views' section of the reference documentation for more information and the Spring Travel booking-mvc sample for an example. * You can now use Spring's own DataBinder for form data binding; as an alternative to OGNL or Unified EL. This allows you to take advantage of the unique features of the DataBinder such as the ability to apply type conversion to elements of a generic collection. To do this, set the "useSpringBeanBinding" property to true on a custom MvcViewFactoryCreator instance. See the Config section of the reference documentation for how to install a custom ViewFactoryCreator. * Added the ability to disable model validation per transition by setting validate="false". This allows enabling binding but disabling validation; useful when going back between pages. See the 'Views' section of the reference documentation for more information. * Introduced new flavor of the Spring Travel referenced application built to run as a set of OSGi bundles on the SpringSource Application Platform in a PAR deployment unit. Access spring-webflow-samples/platform-spring-travel to review and build the sample. * Now ensure that Spring Faces now outputs Javascript blocks that are valid for both HTML and XHTML content types (SWF-785). Improvements * Unified the "Formatter" and "Conversion" systems into a single "Conversion" type conversion system. This unified type conversion system is now used consistently throughout Web Flow, including for view data binding. Simplified the Converter API to make it easier to implement custom converters, including TwoWayConverters. See the example converters in org.springframework.binding.convert.converters package for example Converter implementations. To plug in your own custom converters, register a custom ConversionService. Custom converters will be usable immediately throughout the system, and can be aliased e.g. "shortDate". See the Config section of the reference documentation for how to install a custom ConversionService, and the booking-mvc sample for an example. * Made several improvements to the documentation. Added coverage of action-states and decision-states (SWF-721). Also added converage of the new view-state binder element. * Added support for rendering .jspx views selected by a flow in a Spring MVC environment (SWF-793). * Error responses returned as the result of handling an Ajax request are now displayed in an error popup dialog by default (SWF-783). * Made the eventId request parameter configurable in a Spring MVC environment (SWF-731). Bug Fixes * Fixed a bug preventing binding of String[] array request parameters to collection properties in a Spring MVC environment (SWF-720). This bug effected use of and tags. * Fixed a bug where classpath: resource loading prefix was not respected within a Flow ApplicationContext (SWF-743). This prevented loading of classpath-based resources defined in flow beans files imported using the tag. * Fixed a bug where the Severity.FATAL severity was lost in the mapping of a JSF FacesMessage to a Spring Message (SWF-752). Added Severity.FATAL as a supported message severity. * Fixed a bug where the "detail" part of a FacesMessage was lost in the mapping of a JSF FacesMessages to a Spring Message (SWF-751). * Fixed a bug where transitioning back to the originating view-state within one request always triggered a redirect (SWF-808). Redirect+after+post is appropriate for non-Ajax requests, but was not appropriate for Ajax requests. * Fixed a bug where attempting to render a view from an end-state resulted in an exception (SWF-711). * Fixed a bug where flows where not accessible inside unexpanded WAR archives (SWF-784). * Fixed several browser compatibility bugs affecting IE 6 with Spring Javascript (SWF-764). Changes in version 2.0.2 (06.06.2008) ------------------------------------- New Features * Allow flow-execution-repository max-execution-snapshots to be set to 0 to disable snapshotting (SWF-709). Use this to disable serialization-based execution state snapshotting. Note that browser back button use is not supported when this option is enabled. Improvements * Added syntax highlighting to the reference manual. * Documented the Default ExpressionParser configuration for Spring Faces (SWF-707). * Documented transition actions and how to restrict transition execution by returning action error results (SWF-715). * Documented how to link in parent flows in a test environment when using inheritance (SWF-694) * Documented how to access Web Flow Nightly Builds from the SpringSource Bundle Repository (SWF-710). * Simplified Spring Security Config across the booking samples (SWF-724). * Now set Locale of UIViewRoot to the Spring MVC Request Locale for JSF-based Spring MVC Views (SWF-659). Bug Fixes * Fixed a bug preventing use of Faces commandLinks or commandButtons inside facet definitions (SWF-692). * Fixed a bug where Spring.ElementDecoration did not properly copy styles from the decorated node (SWF-703). * Fixed a bug where ajaxEnabled="false" did not work properly with the Faces commandLink (SWF-700). * Fixed a bug the Spring Web MVC AjaxView was not properly sending Ajax redirect requests to Spring.js (SWF-682). * Fixed a bug in Spring.js related to regexp matching of